From 902696214fe28052cbe3b4d99623593b26753eb7 Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Wed, 4 Jan 2017 15:25:57 -0800 Subject: [PATCH] Real CSS, inline SVG --- components/distill-logo.svg | 3 ++ components/footer.js | 10 +++--- components/header.js | 6 ++-- components/native-shim.js | 32 ------------------- .../{styles-article.js => styles-article.css} | 3 -- .../{styles-base.js => styles-base.css} | 3 -- .../{styles-code.js => styles-code.css} | 2 -- .../{styles-layout.js => styles-layout.css} | 2 -- components/styles.js | 8 ++--- dist/template.min.js | 4 +-- dist/template.min.js.map | 2 +- examples/tutorial.html | 6 ++-- package.json | 1 + rollup.config.js | 6 +++- yarn.lock | 6 ++++ 15 files changed, 33 insertions(+), 61 deletions(-) create mode 100644 components/distill-logo.svg delete mode 100644 components/native-shim.js rename components/{styles-article.js => styles-article.css} (99%) rename components/{styles-base.js => styles-base.css} (98%) rename components/{styles-code.js => styles-code.css} (99%) rename components/{styles-layout.js => styles-layout.css} (99%) diff --git a/components/distill-logo.svg b/components/distill-logo.svg new file mode 100644 index 0000000..16a3dbd --- /dev/null +++ b/components/distill-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/components/footer.js b/components/footer.js index 1b7daa0..e8ccf24 100644 --- a/components/footer.js +++ b/components/footer.js @@ -1,3 +1,5 @@ +import logo from "./distill-logo.svg"; + const html = ` \n\n
\n \n \n
\n',u=function(e,t){e.querySelector("dt-header").innerHTML=c},h='\n\n\n
\n

References

\n \n

Errors, Reuse, and Citation

\n

If you see mistakes or want to suggest changes, please submit a pull request on github.

\n

Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don\'t fall under this license and can be recognized by a note in their caption: “Figure from …”.

\n

For attribution in academic contexts, please cite this work as

\n
\n  

BibTeX citation

\n
\n
\n',g=function(e,t){e.querySelector("dt-appendix").innerHTML=h},d='\n\n\n
\n is dedicated to clear explanations of machine learning\n
\n',f=function(e,t){e.querySelector("dt-footer").innerHTML=d},m=function(e,t){function n(e){if(!(e in t.citations))return"?";var n=t.citations[e],r=n.author.split(" and ");r=r.map(function(e){return e.split(",")[0].trim()});var i=n.year;return 1==r.length?r[0]+", "+i:2==r.length?r[0]+" & "+r[1]+", "+i:r.length>2?r[0]+", et al., "+i:void 0}function r(e){if(e){var t=e.author.split(" and "),n="",r=t.map(function(e){var t=e.split(",")[0].trim(),n=e.split(",")[1];if(void 0!=n){var r=n.trim().split(" ").map(function(e){return e.trim()[0]});return t+", "+r.join(".")+"."}return t});if(t.length>1?(n+=r.slice(0,t.length-1).join(", "),n+=" and "+r[t.length-1]):n+=r[0],n+=", "+e.year+". ",n+=e.title+". ",n+=e.journal||e.booktitle||"","volume"in e){var i=e.issue||e.number;i=void 0!=i?"("+i+")":"",n+=", Vol "+e.volume+i}return"pages"in e&&(n+=", pp. "+e.pages),n+=". "}return"?"}var i=Object.keys(t.citations).map(function(e){return t.citations[e]});i.sort(function(e,t){return e.author.localeCompare(t.author)});var a=[].slice.apply(e.querySelectorAll("dt-cite"));a.forEach(function(e){var t=e.textContent.split(","),r=t.map(n).join(", ");e.innerHTML=r});var o=e.querySelector("dt-bibliography"),s=e.createElement("ol");i.forEach(function(t){var n=e.createElement("li");n.textContent=r(t),s.appendChild(n)}),o.appendChild(s)},b=e(function(e,t){(function(){function t(e){this.tokens=[],this.tokens.links={},this.options=e||c.defaults,this.rules=u.normal,this.options.gfm&&(this.options.tables?this.rules=u.tables:this.rules=u.gfm)}function n(e,t){if(this.options=t||c.defaults,this.links=e,this.rules=h.normal,this.renderer=this.options.renderer||new r,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=h.breaks:this.rules=h.gfm:this.options.pedantic&&(this.rules=h.pedantic)}function r(e){this.options=e||{}}function i(e){this.tokens=[],this.token=null,this.options=e||c.defaults,this.options.renderer=this.options.renderer||new r,this.renderer=this.options.renderer,this.renderer.options=this.options}function a(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function o(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/g,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function s(e,t){return e=e.source,t=t||"",function n(r,i){return r?(i=i.source||i,i=i.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(r,i),n):new RegExp(e,t)}}function l(){}function p(e){for(var t,n,r=arguments,i=1;iAn error occured:

"+a(e.message+"",!0)+"
";throw e}}var u={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:l,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:l,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:l,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};u.bullet=/(?:[*+-]|\d+\.)/,u.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,u.item=s(u.item,"gm")(/bull/g,u.bullet)(),u.list=s(u.list)(/bull/g,u.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+u.def.source+")")(),u.blockquote=s(u.blockquote)("def",u.def)(),u._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",u.html=s(u.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,u._tag)(),u.paragraph=s(u.paragraph)("hr",u.hr)("heading",u.heading)("lheading",u.lheading)("blockquote",u.blockquote)("tag","<"+u._tag)("def",u.def)(),u.normal=p({},u),u.gfm=p({},u.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),u.gfm.paragraph=s(u.paragraph)("(?!","(?!"+u.gfm.fences.source.replace("\\1","\\2")+"|"+u.list.source.replace("\\1","\\3")+"|")(),u.tables=p({},u.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),t.rules=u,t.lex=function(e,n){var r=new t(n);return r.lex(e)},t.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},t.prototype.token=function(e,t,n){for(var r,i,a,o,s,l,p,c,h,g=this,e=e.replace(/^ +$/gm,"");e;)if((a=g.rules.newline.exec(e))&&(e=e.substring(a[0].length),a[0].length>1&&g.tokens.push({type:"space"})),a=g.rules.code.exec(e))e=e.substring(a[0].length),a=a[0].replace(/^ {4}/gm,""),g.tokens.push({type:"code",text:g.options.pedantic?a:a.replace(/\n+$/,"")});else if(a=g.rules.fences.exec(e))e=e.substring(a[0].length),g.tokens.push({type:"code",lang:a[2],text:a[3]||""});else if(a=g.rules.heading.exec(e))e=e.substring(a[0].length),g.tokens.push({type:"heading",depth:a[1].length,text:a[2]});else if(t&&(a=g.rules.nptable.exec(e))){for(e=e.substring(a[0].length),l={type:"table",header:a[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:a[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:a[3].replace(/\n$/,"").split("\n")},c=0;c ?/gm,""),g.token(a,t,!0),g.tokens.push({type:"blockquote_end"});else if(a=g.rules.list.exec(e)){for(e=e.substring(a[0].length),o=a[2],g.tokens.push({type:"list_start",ordered:o.length>1}),a=a[0].match(g.rules.item),r=!1,h=a.length,c=0;c1&&s.length>1||(e=a.slice(c+1).join("\n")+e,c=h-1)),i=r||/\n\n(?!\s*$)/.test(l),c!==h-1&&(r="\n"===l.charAt(l.length-1),i||(i=r)),g.tokens.push({type:i?"loose_item_start":"list_item_start"}),g.token(l,!1,n),g.tokens.push({type:"list_item_end"});g.tokens.push({type:"list_end"})}else if(a=g.rules.html.exec(e))e=e.substring(a[0].length),g.tokens.push({type:g.options.sanitize?"paragraph":"html",pre:!g.options.sanitizer&&("pre"===a[1]||"script"===a[1]||"style"===a[1]),text:a[0]});else if(!n&&t&&(a=g.rules.def.exec(e)))e=e.substring(a[0].length),g.tokens.links[a[1].toLowerCase()]={href:a[2],title:a[3]};else if(t&&(a=g.rules.table.exec(e))){for(e=e.substring(a[0].length),l={type:"table",header:a[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:a[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:a[3].replace(/(?: *\| *)?\n$/,"").split("\n")},c=0;c])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:l,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:l,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,h.link=s(h.link)("inside",h._inside)("href",h._href)(),h.reflink=s(h.reflink)("inside",h._inside)(),h.normal=p({},h),h.pedantic=p({},h.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),h.gfm=p({},h.normal,{escape:s(h.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:s(h.text)("]|","~]|")("|","|https?://|")()}),h.breaks=p({},h.gfm,{br:s(h.br)("{2,}","*")(),text:s(h.gfm.text)("{2,}","*")()}),n.rules=h,n.output=function(e,t,r){var i=new n(t,r);return i.output(e)},n.prototype.output=function(e){for(var t,n,r,i,o=this,s="";e;)if(i=o.rules.escape.exec(e))e=e.substring(i[0].length),s+=i[1];else if(i=o.rules.autolink.exec(e))e=e.substring(i[0].length),"@"===i[2]?(n=":"===i[1].charAt(6)?o.mangle(i[1].substring(7)):o.mangle(i[1]),r=o.mangle("mailto:")+n):(n=a(i[1]),r=n),s+=o.renderer.link(r,null,n);else if(o.inLink||!(i=o.rules.url.exec(e))){if(i=o.rules.tag.exec(e))!o.inLink&&/^/i.test(i[0])&&(o.inLink=!1),e=e.substring(i[0].length),s+=o.options.sanitize?o.options.sanitizer?o.options.sanitizer(i[0]):a(i[0]):i[0];else if(i=o.rules.link.exec(e))e=e.substring(i[0].length),o.inLink=!0,s+=o.outputLink(i,{href:i[2],title:i[3]}),o.inLink=!1;else if((i=o.rules.reflink.exec(e))||(i=o.rules.nolink.exec(e))){if(e=e.substring(i[0].length),t=(i[2]||i[1]).replace(/\s+/g," "),t=o.links[t.toLowerCase()],!t||!t.href){s+=i[0].charAt(0),e=i[0].substring(1)+e;continue}o.inLink=!0,s+=o.outputLink(i,t),o.inLink=!1}else if(i=o.rules.strong.exec(e))e=e.substring(i[0].length),s+=o.renderer.strong(o.output(i[2]||i[1]));else if(i=o.rules.em.exec(e))e=e.substring(i[0].length),s+=o.renderer.em(o.output(i[2]||i[1]));else if(i=o.rules.code.exec(e))e=e.substring(i[0].length),s+=o.renderer.codespan(a(i[2],!0));else if(i=o.rules.br.exec(e))e=e.substring(i[0].length),s+=o.renderer.br();else if(i=o.rules.del.exec(e))e=e.substring(i[0].length),s+=o.renderer.del(o.output(i[1]));else if(i=o.rules.text.exec(e))e=e.substring(i[0].length),s+=o.renderer.text(a(o.smartypants(i[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(i[0].length),n=a(i[1]),r=n,s+=o.renderer.link(r,null,n);return s},n.prototype.outputLink=function(e,t){var n=a(t.href),r=t.title?a(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,a(e[1]))},n.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},n.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;i.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},r.prototype.code=function(e,t,n){if(this.options.highlight){var r=this.options.highlight(e,t);null!=r&&r!==e&&(n=!0,e=r)}return t?'
'+(n?e:a(e,!0))+"\n
\n":"
"+(n?e:a(e,!0))+"\n
"},r.prototype.blockquote=function(e){return"
\n"+e+"
\n"},r.prototype.html=function(e){return e},r.prototype.heading=function(e,t,n){return"'+e+"\n"},r.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},r.prototype.list=function(e,t){var n=t?"ol":"ul"; -return"<"+n+">\n"+e+"\n"},r.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},r.prototype.paragraph=function(e){return"

    "+e+"

    \n"},r.prototype.table=function(e,t){return"\n\n"+e+"\n\n"+t+"\n
    \n"},r.prototype.tablerow=function(e){return"\n"+e+"\n"},r.prototype.tablecell=function(e,t){var n=t.header?"th":"td",r=t.align?"<"+n+' style="text-align:'+t.align+'">':"<"+n+">";return r+e+"\n"},r.prototype.strong=function(e){return""+e+""},r.prototype.em=function(e){return""+e+""},r.prototype.codespan=function(e){return""+e+""},r.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},r.prototype.del=function(e){return""+e+""},r.prototype.link=function(e,t,n){if(this.options.sanitize){try{var r=decodeURIComponent(o(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:"))return""}var i='
    "},r.prototype.image=function(e,t,n){var r=''+n+'":">"},r.prototype.text=function(e){return e},i.parse=function(e,t,n){var r=new i(t,n);return r.parse(e)},i.prototype.parse=function(e){var t=this;this.inline=new n(e.links,this.options,this.renderer),this.tokens=e.reverse();for(var r="";this.next();)r+=t.tok();return r},i.prototype.next=function(){return this.token=this.tokens.pop()},i.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},i.prototype.parseText=function(){for(var e=this,t=this.token.text;"text"===this.peek().type;)t+="\n"+e.next().text;return this.inline.output(t)},i.prototype.tok=function(){var e=this;switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var t,n,r,i,a,o="",s="";for(r="",t=0;te.length)break e;if(!(x instanceof i)){c.lastIndex=0;var k=c.exec(x),v=1;if(!k&&g&&b!=a.length-1){if(c.lastIndex=y,k=c.exec(e),!k)break;for(var w=k.index+(h?k[1].length:0),_=k.index+k[0].length,S=b,z=y,E=a.length;S=z&&(++b,y=z);if(a[b]instanceof i||a[S-1].greedy)continue;v=S-b,x=e.slice(y,z),k.index-=y}if(k){h&&(d=k[1].length);var w=k.index+d,k=k[0].slice(d),_=w+k.length,A=x.slice(0,w),C=x.slice(_),q=[b,v];A&&q.push(A);var L=new i(s,u?r.tokenize(k,u):k,f,k,g);q.push(L),C&&q.push(C),Array.prototype.splice.apply(a,q)}}}}}return a},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var i,a=0;i=n[a++];)i(t)}}},i=r.Token=function(e,t,n,r,i){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!i};if(i.stringify=function(e,t,n){if("string"==typeof e)return e;if("Array"===r.util.type(e))return e.map(function(n){return i.stringify(n,t,e)}).join("");var a={type:e.type,content:i.stringify(e.content,t,n),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:n};if("comment"==a.type&&(a.attributes.spellcheck="true"),e.alias){var o="Array"===r.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(a.classes,o)}r.hooks.run("wrap",a);var s=Object.keys(a.attributes).map(function(e){return e+'="'+(a.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+(s?" "+s:"")+">"+a.content+""},!t.document)return t.addEventListener?(t.addEventListener("message",function(e){var n=JSON.parse(e.data),i=n.language,a=n.code,o=n.immediateClose;t.postMessage(r.highlight(a,r.languages[i],i)),o&&t.close()},!1),t.Prism):t.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(r.filename=a.src,document.addEventListener&&!a.hasAttribute("data-manual")&&("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(r.highlightAll):window.setTimeout(r.highlightAll,16):document.addEventListener("DOMContentLoaded",r.highlightAll))),t.Prism}();e.exports&&(e.exports=r),"undefined"!=typeof n&&(n.Prism=r),r.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},r.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),r.languages.xml=r.languages.markup,r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},r.languages.css.atrule.inside.rest=r.util.clone(r.languages.css),r.languages.markup&&(r.languages.insertBefore("markup","tag",{style:{pattern:/()[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:r.languages.css,alias:"language-css"}}),r.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:r.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:r.languages.css}},alias:"language-css"}},r.languages.markup.tag)),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},r.languages.javascript=r.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/}),r.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),r.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:r.languages.javascript}},string:/[\s\S]+/}}}),r.languages.markup&&r.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:r.languages.javascript,alias:"language-javascript"}}),r.languages.js=r.languages.javascript,function(){"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.forEach&&Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(t){for(var n,i=t.getAttribute("data-src"),a=t,o=/\blang(?:uage)?-(?!\*)(\w+)\b/i;a&&!o.test(a.className);)a=a.parentNode;if(a&&(n=(t.className.match(o)||[,""])[1]),!n){var s=(i.match(/\.(\w+)$/)||[,""])[1];n=e[s]||s}var l=document.createElement("code");l.className="language-"+n,t.textContent="",l.textContent="Loading…",t.appendChild(l);var p=new XMLHttpRequest;p.open("GET",i,!0),p.onreadystatechange=function(){4==p.readyState&&(p.status<400&&p.responseText?(l.textContent=p.responseText,r.highlightElement(l)):p.status>=400?l.textContent="✖ Error "+p.status+" while fetching file: "+p.statusText:l.textContent="✖ Error: File does not exist or is empty")},p.send(null)})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight))}()}),k=function(e,t){var n=[].slice.call(e.querySelectorAll("code"));n.forEach(function(e){x.highlightElement(e)})};return window.document&&t(window.document,[]),t}(); +document.write('');var dl=function(){"use strict";function t(t,e){return e={exports:{}},t(e,e.exports),e.exports}function e(t,e){t.innerHTML+=e}function n(t){var e="citation_title="+t.title+";";return t.author.split(" and ").forEach(function(t){e+="citation_author="+t.trim()+";"}),"journal"in t&&(e+="citation_journal_title="+t.journal+";"),"volume"in t&&(e+="citation_volume="+t.volume+";"),("issue"in t||"number"in t)&&(e+="citation_number="+(t.issue||t.number)+";"),e}function i(t,e){h(t,e),document.addEventListener("DOMContentLoaded",function(n){o(t,e),s(t,e),f(t,e),b(t,e),x(t,e),w(t,e),S(t,e),k(t,e),console.log("final data:");for(var i in e)console.log(" ",i,": ",e[i])})}var r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},a=t(function(t,e){!function(t){function e(){this.months=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],this.notKey=[",","{","}"," ","="],this.pos=0,this.input="",this.entries=new Array,this.currentEntry="",this.setInput=function(t){this.input=t},this.getEntries=function(){return this.entries},this.isWhitespace=function(t){return" "==t||"\r"==t||"\t"==t||"\n"==t},this.match=function(t,e){if(void 0!=e&&null!=e||(e=!0),this.skipWhitespace(e),this.input.substring(this.pos,this.pos+t.length)!=t)throw"Token mismatch, expected "+t+", found "+this.input.substring(this.pos);this.pos+=t.length,this.skipWhitespace(e)},this.tryMatch=function(t,e){return void 0!=e&&null!=e||(e=!0),this.skipWhitespace(e),this.input.substring(this.pos,this.pos+t.length)==t},this.matchAt=function(){for(var t=this;this.input.length>this.pos&&"@"!=this.input[this.pos];)t.pos++;return"@"==this.input[this.pos]},this.skipWhitespace=function(t){for(var e=this;this.isWhitespace(this.input[this.pos]);)e.pos++;if("%"==this.input[this.pos]&&1==t){for(;"\n"!=this.input[this.pos];)e.pos++;this.skipWhitespace(t)}},this.value_braces=function(){var t=this,e=0;this.match("{",!1);for(var n=this.pos,i=!1;;){if(!i)if("}"==t.input[t.pos]){if(!(e>0)){var r=t.pos;return t.match("}",!1),t.input.substring(n,r)}e--}else if("{"==t.input[t.pos])e++;else if(t.pos>=t.input.length-1)throw"Unterminated value";i="\\"==t.input[t.pos]&&0==i,t.pos++}},this.value_comment=function(){for(var t=this,e="",n=0;!this.tryMatch("}",!1)||0!=n;){if(e+=t.input[t.pos],"{"==t.input[t.pos]&&n++,"}"==t.input[t.pos]&&n--,t.pos>=t.input.length-1)throw"Unterminated value:"+t.input.substring(start);t.pos++}return e},this.value_quotes=function(){var t=this;this.match('"',!1);for(var e=this.pos,n=!1;;){if(!n){if('"'==t.input[t.pos]){var i=t.pos;return t.match('"',!1),t.input.substring(e,i)}if(t.pos>=t.input.length-1)throw"Unterminated value:"+t.input.substring(e)}n="\\"==t.input[t.pos]&&0==n,t.pos++}},this.single_value=function(){var t=this.pos;if(this.tryMatch("{"))return this.value_braces();if(this.tryMatch('"'))return this.value_quotes();var e=this.key();if(e.match("^[0-9]+$"))return e;if(this.months.indexOf(e.toLowerCase())>=0)return e.toLowerCase();throw"Value expected:"+this.input.substring(t)+" for key: "+e},this.value=function(){var t=this,e=[];for(e.push(this.single_value());this.tryMatch("#");)t.match("#"),e.push(t.single_value());return e.join("")},this.key=function(){for(var t=this,e=this.pos;;){if(t.pos>=t.input.length)throw"Runaway key";if(t.notKey.indexOf(t.input[t.pos])>=0)return t.input.substring(e,t.pos);t.pos++}},this.key_equals_value=function(){var t=this.key();if(this.tryMatch("=")){this.match("=");var e=this.value();return[t,e]}throw"... = value expected, equals sign missing:"+this.input.substring(this.pos)},this.key_value_list=function(){var t=this,e=this.key_equals_value();for(this.currentEntry.entryTags={},this.currentEntry.entryTags[e[0]]=e[1];this.tryMatch(",")&&(t.match(","),!t.tryMatch("}"));)e=t.key_equals_value(),t.currentEntry.entryTags[e[0]]=e[1]},this.entry_body=function(t){this.currentEntry={},this.currentEntry.citationKey=this.key(),this.currentEntry.entryType=t.substring(1),this.match(","),this.key_value_list(),this.entries.push(this.currentEntry)},this.directive=function(){return this.match("@"),"@"+this.key()},this.preamble=function(){this.currentEntry={},this.currentEntry.entryType="PREAMBLE",this.currentEntry.entry=this.value_comment(),this.entries.push(this.currentEntry)},this.comment=function(){this.currentEntry={},this.currentEntry.entryType="COMMENT",this.currentEntry.entry=this.value_comment(),this.entries.push(this.currentEntry)},this.entry=function(t){this.entry_body(t)},this.bibtex=function(){for(var t=this;this.matchAt();){var e=t.directive();t.match("{"),"@STRING"==e?t.string():"@PREAMBLE"==e?t.preamble():"@COMMENT"==e?t.comment():t.entry(e),t.match("}")}}}t.toJSON=function(t){var n=new e;return n.setInput(t),n.bibtex(),n.entries},t.toBibtex=function(t){var e="";for(var n in t){if(e+="@"+t[n].entryType,e+="{",t[n].citationKey&&(e+=t[n].citationKey+", "),t[n].entry&&(e+=t[n].entry),t[n].entryTags){var i="";for(var r in t[n].entryTags)0!=i.length&&(i+=", "),i+=r+"= {"+t[n].entryTags[r]+"}";e+=i}e+="}\n\n"}return e}}(e)}),o=function(t,e){var n="\n @article{gregor2015draw,\n title={DRAW: A recurrent neural network for image generation},\n author={Gregor, Karol and Danihelka, Ivo and Graves, Alex and Rezende, Danilo Jimenez and Wierstra, Daan},\n journal={arXivreprint arXiv:1502.04623},\n year={2015}\n }\n @article{mercier2011humans,\n title={Why do humans reason? Arguments for an argumentative theory},\n author={Mercier, Hugo and Sperber, Dan},\n journal={Behavioral and brain sciences},\n volume={34},\n number={02},\n pages={57--74},\n year={2011},\n publisher={Cambridge Univ Press}\n }",i={};a.toJSON(n).forEach(function(t){i[t.citationKey]=t.entryTags,i[t.citationKey].type=t.entryType});var r={},o=[].slice.apply(t.querySelectorAll("dt-cite"));o.forEach(function(t){var e=t.textContent.split(",");e.forEach(function(t){i[t]?r[t]=i[t]:console.warn("No bibliography entry found for: "+t)})}),e.citations=r},s=function(t,i){t.querySelector("html").setAttribute("lang","en");var r=t.querySelector("head");t.querySelector("meta[charset]")||e(r,''),t.querySelector("meta[name=viewport]")||e(r,''),e(r,'\n \n \n \n \n '+i.title+"\n "),e(r,'\n \n \n \n '),i.authors.forEach(function(t){e(r,'\n ')}),e(r,'\n \n \n \n \n \n \n \n \n '),e(r,'\n \n \n \n \n \n \n \n \n '),e(r,'\n \n \n \n \n \n \n \n \n \n \n \n \n '),i.authors.forEach(function(t){e(r,'\n \n \n ')}),Object.keys(i.citations).forEach(function(t){console.log(t),e(r,'\n \n ')})},l="html {\n font: 400 15px/1.55em -apple-system, BlinkMacSystemFont, \"Roboto\", sans-serif;\n}\n\nhtml {\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\n\n/*\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, menu, nav, section {\n\tdisplay: block;\n}\nbody {\n\tline-height: 1;\n}\nol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after,\nq:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}*/\n",c=".l-body,\n.l-page,\ndt-article > * {\n margin-left: 24px;\n margin-right: 24px;\n box-sizing: border-box;\n}\n\n@media(min-width: 768px) {\n .l-body,\n .l-page,\n dt-article > * {\n margin-left: 72px;\n margin-right: 72px;\n }\n}\n\n@media(min-width: 1080px) {\n .l-body,\n dt-article > * {\n margin-left: calc(50% - 984px / 2);\n width: 648px;\n }\n .l-body-outset,\n dt-article .l-body-outset {\n margin-left: calc(50% - 984px / 2 - 24px);\n width: calc(648px + 48px);\n }\n .l-middle,\n dt-article .l-middle {\n width: 816px;\n margin-left: calc(50% - 984px / 2);\n }\n .l-page,\n dt-article .l-page {\n width: 984px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-page-outset,\n dt-article .l-page-outset {\n width: 1080px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-screen,\n dt-article .l-screen {\n margin-left: auto;\n margin-right: auto;\n width: auto;\n }\n .l-screen-inset,\n dt-article .l-screen-inset {\n margin-left: 24px;\n margin-right: 24px;\n width: auto;\n }\n .l-gutter,\n dt-article .l-gutter {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 24px;\n margin-right: calc((100vw - 960px) / 2);\n width: calc((984px - 648px) / 2 - 24px);\n }\n /* Side */\n .side.l-body,\n dt-article .side.l-body {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px) / 2);\n width: calc(648px / 2 - 24px);\n }\n .side.l-body-outset,\n dt-article .side.l-body-outset {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px - 48px) / 2);\n width: calc(648px / 2 - 48px + 24px);\n }\n .side.l-page,\n dt-article .side.l-page {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2);\n width: calc(960px / 2 - 48px);\n }\n}\n",p='dt-article {\n color: rgba(0, 0, 0, 0.8);\n font: 15px/1.55em -apple-system, BlinkMacSystemFont, "Roboto", sans-serif;\n}\n\n@media(min-width: 1024px) {\n dt-article {\n font-size: 20px;\n }\n}\n\ndt-article h1 {\n font-weight: 700;\n font-size: 32px;\n line-height: 1.1em;\n /*-webkit-font-smoothing: antialiased;*/\n}\n\n@media(min-width: 1024px) {\n dt-article h1 {\n font-size: 50px;\n margin-bottom: 12px;\n letter-spacing: -0.025em;\n }\n}\n\n@media(min-width: 1024px) {\n dt-article > h1:first-of-type {\n margin-top: 100px;\n }\n}\n\ndt-article h2 {\n font-weight: 400;\n font-size: 28px;\n line-height: 1.25em;\n margin-top: 12px;\n margin-bottom: 24px;\n}\n\ndt-article h1 + h2 {\n padding-bottom: 48px;\n margin-bottom: 48px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n}\n\ndt-article h3 {\n font-weight: 700;\n font-size: 20px;\n line-height: 1.4em;\n margin-top: 24px;\n margin-bottom: 24px;\n}\n\ndt-article h4 {\n font-weight: 600;\n text-transform: uppercase;\n font-size: 14px;\n line-height: 1.4em;\n}\n\ndt-article a {\n color: inherit;\n}\n\ndt-article p {\n margin-bottom: 24px;\n -webkit-font-smoothing: antialiased;\n /*font-family: Georgia, serif;*/\n}\n\ndt-article p a {\n /*text-decoration: none;*/\n /*background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.25) 50%, rgba(0, 0, 0, 0) 50%);*/\n /*background-repeat: repeat-x;*/\n /*background-size: 2px 1em;*/\n /*background-position: 0 1.25em;*/\n}\n\ndt-article p .link {\n text-decoration: underline;\n cursor: pointer;\n}\n\n\n\ndt-article ul {\n padding-left: 20px;\n}\n\ndt-article li {\n /*margin-bottom: 24px;*/\n}\n\ndt-article pre {\n font-size: 14px;\n margin-bottom: 20px;\n}\n\n\ndt-article hr {\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\ndt-article section {\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\n\n/* Figure */\n\ndt-article figure {\n position: relative;\n margin-top: 30px;\n margin-bottom: 30px;\n}\n\n@media(min-width: 1024px) {\n dt-article figure {\n margin-top: 48px;\n margin-bottom: 48px;\n }\n}\n\ndt-article figure img {\n width: 100%;\n}\n\ndt-article figure svg text,\ndt-article figure svg tspan {\n}\n\ndt-article figure figcaption {\n color: rgba(0, 0, 0, 0.6);\n font-size: 12px;\n line-height: 1.5em;\n}\n@media(min-width: 1024px) {\n dt-article figure figcaption {\n font-size: 13px;\n }\n}\n\ndt-article figure.external img {\n background: white;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);\n padding: 18px;\n box-sizing: border-box;\n}\n\ndt-article figure figcaption a {\n color: rgba(0, 0, 0, 0.6);\n}\n\n/*dt-article figure figcaption::before {\n position: relative;\n display: block;\n top: -20px;\n content: "";\n width: 25px;\n border-top: 1px solid rgba(0, 0, 0, 0.3);\n}*/\n\ndt-article span.equation-mimic {\n font-family: georgia;\n font-size: 115%;\n font-style: italic;\n}\n\ndt-article figure figcaption b {\n font-weight: 600;\n color: rgba(0, 0, 0, 1.0);\n}\n',u='/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\n\n code {\n white-space:pre-wrap;\n background: rgba(0, 0, 0, 0.04);\n border-radius: 2px;\n padding: 4px 7px;\n font-size: 15px;\n color: rgba(0, 0, 0, 0.6);\n }\n\n pre code {\n display: block;\n background: white;\n border: 1px solid rgba(0, 0, 0, 0.08);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);\n }\n\n\ncode[class*="language-"],\npre[class*="language-"] {\n\tcolor: black;\n\tbackground: none;\n\ttext-shadow: 0 1px white;\n\tfont-family: Consolas, Monaco, \'Andale Mono\', \'Ubuntu Mono\', monospace;\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-break: normal;\n\tword-wrap: normal;\n\tline-height: 1.5;\n\n\t-moz-tab-size: 4;\n\t-o-tab-size: 4;\n\ttab-size: 4;\n\n\t-webkit-hyphens: none;\n\t-moz-hyphens: none;\n\t-ms-hyphens: none;\n\thyphens: none;\n}\n\npre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,\ncode[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\npre[class*="language-"]::selection, pre[class*="language-"] ::selection,\ncode[class*="language-"]::selection, code[class*="language-"] ::selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\n@media print {\n\tcode[class*="language-"],\n\tpre[class*="language-"] {\n\t\ttext-shadow: none;\n\t}\n}\n\n/* Code blocks */\npre[class*="language-"] {\n\toverflow: auto;\n}\n\n:not(pre) > code[class*="language-"],\npre[class*="language-"] {\n}\n\n/* Inline code */\n:not(pre) > code[class*="language-"] {\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: slategray;\n}\n\n.token.punctuation {\n\tcolor: #999;\n}\n\n.namespace {\n\topacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n\tcolor: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n\tcolor: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n\tcolor: #a67f59;\n\tbackground: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n\tcolor: #07a;\n}\n\n.token.function {\n\tcolor: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n\tcolor: #e90;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n',h=function(t,e){var n=t.createElement("style");n.textContent=l+c+p+u,t.querySelector("head").appendChild(n)},g='\n \n\n',d='\n\n\n\n',f=function(t,e){t.querySelector("dt-header").innerHTML=d},m='\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please submit a pull request on github.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don\'t fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n',b=function(t,e){t.querySelector("dt-appendix").innerHTML=m},y='\n\n\n
    \n is dedicated to clear explanations of machine learning\n
    \n",x=function(t,e){t.querySelector("dt-footer").innerHTML=y},k=function(t,e){function n(t){if(!(t in e.citations))return"?";var n=e.citations[t],i=n.author.split(" and ");i=i.map(function(t){return t.split(",")[0].trim()});var r=n.year;return 1==i.length?i[0]+", "+r:2==i.length?i[0]+" & "+i[1]+", "+r:i.length>2?i[0]+", et al., "+r:void 0}function i(t){if(t){var e=t.author.split(" and "),n="",i=e.map(function(t){var e=t.split(",")[0].trim(),n=t.split(",")[1];if(void 0!=n){var i=n.trim().split(" ").map(function(t){return t.trim()[0]});return e+", "+i.join(".")+"."}return e});if(e.length>1?(n+=i.slice(0,e.length-1).join(", "),n+=" and "+i[e.length-1]):n+=i[0],n+=", "+t.year+". ",n+=t.title+". ",n+=t.journal||t.booktitle||"","volume"in t){var r=t.issue||t.number;r=void 0!=r?"("+r+")":"",n+=", Vol "+t.volume+r}return"pages"in t&&(n+=", pp. "+t.pages),n+=". "}return"?"}var r=Object.keys(e.citations).map(function(t){return e.citations[t]});r.sort(function(t,e){return t.author.localeCompare(e.author)});var a=[].slice.apply(t.querySelectorAll("dt-cite"));a.forEach(function(t){var e=t.textContent.split(","),i=e.map(n).join(", ");t.innerHTML=i});var o=t.querySelector("dt-bibliography"),s=t.createElement("ol");r.forEach(function(e){var n=t.createElement("li");n.textContent=i(e),s.appendChild(n)}),o.appendChild(s)},v=t(function(t,e){(function(){function e(t){this.tokens=[],this.tokens.links={},this.options=t||p.defaults,this.rules=u.normal,this.options.gfm&&(this.options.tables?this.rules=u.tables:this.rules=u.gfm)}function n(t,e){if(this.options=e||p.defaults,this.links=t,this.rules=h.normal,this.renderer=this.options.renderer||new i,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=h.breaks:this.rules=h.gfm:this.options.pedantic&&(this.rules=h.pedantic)}function i(t){this.options=t||{}}function r(t){this.tokens=[],this.token=null,this.options=t||p.defaults,this.options.renderer=this.options.renderer||new i,this.renderer=this.options.renderer,this.renderer.options=this.options}function a(t,e){return t.replace(e?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function o(t){return t.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/g,function(t,e){return e=e.toLowerCase(),"colon"===e?":":"#"===e.charAt(0)?"x"===e.charAt(1)?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):""})}function s(t,e){return t=t.source,e=e||"",function n(i,r){return i?(r=r.source||r,r=r.replace(/(^|[^\[])\^/g,"$1"),t=t.replace(i,r),n):new RegExp(t,e)}}function l(){}function c(t){for(var e,n,i=arguments,r=1;rAn error occured:

    "+a(t.message+"",!0)+"
    ";throw t}}var u={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:l,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:l,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:l,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};u.bullet=/(?:[*+-]|\d+\.)/,u.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,u.item=s(u.item,"gm")(/bull/g,u.bullet)(),u.list=s(u.list)(/bull/g,u.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+u.def.source+")")(),u.blockquote=s(u.blockquote)("def",u.def)(),u._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",u.html=s(u.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,u._tag)(),u.paragraph=s(u.paragraph)("hr",u.hr)("heading",u.heading)("lheading",u.lheading)("blockquote",u.blockquote)("tag","<"+u._tag)("def",u.def)(),u.normal=c({},u),u.gfm=c({},u.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),u.gfm.paragraph=s(u.paragraph)("(?!","(?!"+u.gfm.fences.source.replace("\\1","\\2")+"|"+u.list.source.replace("\\1","\\3")+"|")(),u.tables=c({},u.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),e.rules=u,e.lex=function(t,n){var i=new e(n);return i.lex(t)},e.prototype.lex=function(t){return t=t.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(t,!0)},e.prototype.token=function(t,e,n){for(var i,r,a,o,s,l,c,p,h,g=this,t=t.replace(/^ +$/gm,"");t;)if((a=g.rules.newline.exec(t))&&(t=t.substring(a[0].length),a[0].length>1&&g.tokens.push({type:"space"})),a=g.rules.code.exec(t))t=t.substring(a[0].length),a=a[0].replace(/^ {4}/gm,""),g.tokens.push({type:"code",text:g.options.pedantic?a:a.replace(/\n+$/,"")});else if(a=g.rules.fences.exec(t))t=t.substring(a[0].length),g.tokens.push({type:"code",lang:a[2],text:a[3]||""});else if(a=g.rules.heading.exec(t))t=t.substring(a[0].length),g.tokens.push({type:"heading",depth:a[1].length,text:a[2]});else if(e&&(a=g.rules.nptable.exec(t))){for(t=t.substring(a[0].length),l={type:"table",header:a[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:a[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:a[3].replace(/\n$/,"").split("\n")},p=0;p ?/gm,""),g.token(a,e,!0),g.tokens.push({type:"blockquote_end"});else if(a=g.rules.list.exec(t)){for(t=t.substring(a[0].length),o=a[2],g.tokens.push({type:"list_start",ordered:o.length>1}),a=a[0].match(g.rules.item),i=!1,h=a.length,p=0;p1&&s.length>1||(t=a.slice(p+1).join("\n")+t,p=h-1)),r=i||/\n\n(?!\s*$)/.test(l),p!==h-1&&(i="\n"===l.charAt(l.length-1),r||(r=i)),g.tokens.push({type:r?"loose_item_start":"list_item_start"}),g.token(l,!1,n),g.tokens.push({type:"list_item_end"});g.tokens.push({type:"list_end"})}else if(a=g.rules.html.exec(t))t=t.substring(a[0].length),g.tokens.push({type:g.options.sanitize?"paragraph":"html",pre:!g.options.sanitizer&&("pre"===a[1]||"script"===a[1]||"style"===a[1]),text:a[0]});else if(!n&&e&&(a=g.rules.def.exec(t)))t=t.substring(a[0].length),g.tokens.links[a[1].toLowerCase()]={href:a[2],title:a[3]};else if(e&&(a=g.rules.table.exec(t))){for(t=t.substring(a[0].length),l={type:"table",header:a[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:a[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:a[3].replace(/(?: *\| *)?\n$/,"").split("\n")},p=0;p])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:l,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:l,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,h.link=s(h.link)("inside",h._inside)("href",h._href)(),h.reflink=s(h.reflink)("inside",h._inside)(),h.normal=c({},h),h.pedantic=c({},h.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/, +em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),h.gfm=c({},h.normal,{escape:s(h.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:s(h.text)("]|","~]|")("|","|https?://|")()}),h.breaks=c({},h.gfm,{br:s(h.br)("{2,}","*")(),text:s(h.gfm.text)("{2,}","*")()}),n.rules=h,n.output=function(t,e,i){var r=new n(e,i);return r.output(t)},n.prototype.output=function(t){for(var e,n,i,r,o=this,s="";t;)if(r=o.rules.escape.exec(t))t=t.substring(r[0].length),s+=r[1];else if(r=o.rules.autolink.exec(t))t=t.substring(r[0].length),"@"===r[2]?(n=":"===r[1].charAt(6)?o.mangle(r[1].substring(7)):o.mangle(r[1]),i=o.mangle("mailto:")+n):(n=a(r[1]),i=n),s+=o.renderer.link(i,null,n);else if(o.inLink||!(r=o.rules.url.exec(t))){if(r=o.rules.tag.exec(t))!o.inLink&&/^/i.test(r[0])&&(o.inLink=!1),t=t.substring(r[0].length),s+=o.options.sanitize?o.options.sanitizer?o.options.sanitizer(r[0]):a(r[0]):r[0];else if(r=o.rules.link.exec(t))t=t.substring(r[0].length),o.inLink=!0,s+=o.outputLink(r,{href:r[2],title:r[3]}),o.inLink=!1;else if((r=o.rules.reflink.exec(t))||(r=o.rules.nolink.exec(t))){if(t=t.substring(r[0].length),e=(r[2]||r[1]).replace(/\s+/g," "),e=o.links[e.toLowerCase()],!e||!e.href){s+=r[0].charAt(0),t=r[0].substring(1)+t;continue}o.inLink=!0,s+=o.outputLink(r,e),o.inLink=!1}else if(r=o.rules.strong.exec(t))t=t.substring(r[0].length),s+=o.renderer.strong(o.output(r[2]||r[1]));else if(r=o.rules.em.exec(t))t=t.substring(r[0].length),s+=o.renderer.em(o.output(r[2]||r[1]));else if(r=o.rules.code.exec(t))t=t.substring(r[0].length),s+=o.renderer.codespan(a(r[2],!0));else if(r=o.rules.br.exec(t))t=t.substring(r[0].length),s+=o.renderer.br();else if(r=o.rules.del.exec(t))t=t.substring(r[0].length),s+=o.renderer.del(o.output(r[1]));else if(r=o.rules.text.exec(t))t=t.substring(r[0].length),s+=o.renderer.text(a(o.smartypants(r[0])));else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else t=t.substring(r[0].length),n=a(r[1]),i=n,s+=o.renderer.link(i,null,n);return s},n.prototype.outputLink=function(t,e){var n=a(e.href),i=e.title?a(e.title):null;return"!"!==t[0].charAt(0)?this.renderer.link(n,i,this.output(t[1])):this.renderer.image(n,i,a(t[1]))},n.prototype.smartypants=function(t){return this.options.smartypants?t.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):t},n.prototype.mangle=function(t){if(!this.options.mangle)return t;for(var e,n="",i=t.length,r=0;r.5&&(e="x"+e.toString(16)),n+="&#"+e+";";return n},i.prototype.code=function(t,e,n){if(this.options.highlight){var i=this.options.highlight(t,e);null!=i&&i!==t&&(n=!0,t=i)}return e?'
    '+(n?t:a(t,!0))+"\n
    \n":"
    "+(n?t:a(t,!0))+"\n
    "},i.prototype.blockquote=function(t){return"
    \n"+t+"
    \n"},i.prototype.html=function(t){return t},i.prototype.heading=function(t,e,n){return"'+t+"\n"},i.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},i.prototype.list=function(t,e){var n=e?"ol":"ul";return"<"+n+">\n"+t+"\n"},i.prototype.listitem=function(t){return"
  • "+t+"
  • \n"},i.prototype.paragraph=function(t){return"

    "+t+"

    \n"},i.prototype.table=function(t,e){return"\n\n"+t+"\n\n"+e+"\n
    \n"},i.prototype.tablerow=function(t){return"\n"+t+"\n"},i.prototype.tablecell=function(t,e){var n=e.header?"th":"td",i=e.align?"<"+n+' style="text-align:'+e.align+'">':"<"+n+">";return i+t+"\n"},i.prototype.strong=function(t){return""+t+""},i.prototype.em=function(t){return""+t+""},i.prototype.codespan=function(t){return""+t+""},i.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},i.prototype.del=function(t){return""+t+""},i.prototype.link=function(t,e,n){if(this.options.sanitize){try{var i=decodeURIComponent(o(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0===i.indexOf("javascript:")||0===i.indexOf("vbscript:"))return""}var r='
    "},i.prototype.image=function(t,e,n){var i=''+n+'":">"},i.prototype.text=function(t){return t},r.parse=function(t,e,n){var i=new r(e,n);return i.parse(t)},r.prototype.parse=function(t){var e=this;this.inline=new n(t.links,this.options,this.renderer),this.tokens=t.reverse();for(var i="";this.next();)i+=e.tok();return i},r.prototype.next=function(){return this.token=this.tokens.pop()},r.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},r.prototype.parseText=function(){for(var t=this,e=this.token.text;"text"===this.peek().type;)e+="\n"+t.next().text;return this.inline.output(e)},r.prototype.tok=function(){var t=this;switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,n,i,r,a,o="",s="";for(i="",e=0;et.length)break t;if(!(x instanceof r)){p.lastIndex=0;var k=p.exec(x),v=1;if(!k&&g&&b!=a.length-1){if(p.lastIndex=y,k=p.exec(t),!k)break;for(var w=k.index+(h?k[1].length:0),_=k.index+k[0].length,S=b,E=y,A=a.length;S=E&&(++b,y=E);if(a[b]instanceof r||a[S-1].greedy)continue;v=S-b,x=t.slice(y,E),k.index-=y}if(k){h&&(d=k[1].length);var w=k.index+d,k=k[0].slice(d),_=w+k.length,j=x.slice(0,w),z=x.slice(_),C=[b,v];j&&C.push(j);var L=new r(s,u?i.tokenize(k,u):k,f,k,g);C.push(L),z&&C.push(z),Array.prototype.splice.apply(a,C)}}}}}return a},hooks:{all:{},add:function(t,e){var n=i.hooks.all;n[t]=n[t]||[],n[t].push(e)},run:function(t,e){var n=i.hooks.all[t];if(n&&n.length)for(var r,a=0;r=n[a++];)r(e)}}},r=i.Token=function(t,e,n,i,r){this.type=t,this.content=e,this.alias=n,this.length=0|(i||"").length,this.greedy=!!r};if(r.stringify=function(t,e,n){if("string"==typeof t)return t;if("Array"===i.util.type(t))return t.map(function(n){return r.stringify(n,e,t)}).join("");var a={type:t.type,content:r.stringify(t.content,e,n),tag:"span",classes:["token",t.type],attributes:{},language:e,parent:n};if("comment"==a.type&&(a.attributes.spellcheck="true"),t.alias){var o="Array"===i.util.type(t.alias)?t.alias:[t.alias];Array.prototype.push.apply(a.classes,o)}i.hooks.run("wrap",a);var s=Object.keys(a.attributes).map(function(t){return t+'="'+(a.attributes[t]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+(s?" "+s:"")+">"+a.content+""},!e.document)return e.addEventListener?(e.addEventListener("message",function(t){var n=JSON.parse(t.data),r=n.language,a=n.code,o=n.immediateClose;e.postMessage(i.highlight(a,i.languages[r],r)),o&&e.close()},!1),e.Prism):e.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(i.filename=a.src,document.addEventListener&&!a.hasAttribute("data-manual")&&("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(i.highlightAll):window.setTimeout(i.highlightAll,16):document.addEventListener("DOMContentLoaded",i.highlightAll))),e.Prism}();t.exports&&(t.exports=n),"undefined"!=typeof r&&(r.Prism=n),n.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},n.hooks.add("wrap",function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&/,"&"))}),n.languages.xml=n.languages.markup,n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},n.languages.css.atrule.inside.rest=n.util.clone(n.languages.css),n.languages.markup&&(n.languages.insertBefore("markup","tag",{style:{pattern:/()[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:n.languages.css,alias:"language-css"}}),n.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:n.languages.css}},alias:"language-css"}},n.languages.markup.tag)),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/}),n.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),n.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}}}),n.languages.markup&&n.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:n.languages.javascript,alias:"language-javascript"}}),n.languages.js=n.languages.javascript,function(){"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var t={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.forEach&&Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(e){for(var i,r=e.getAttribute("data-src"),a=e,o=/\blang(?:uage)?-(?!\*)(\w+)\b/i;a&&!o.test(a.className);)a=a.parentNode;if(a&&(i=(e.className.match(o)||[,""])[1]),!i){var s=(r.match(/\.(\w+)$/)||[,""])[1];i=t[s]||s}var l=document.createElement("code");l.className="language-"+i,e.textContent="",l.textContent="Loading…",e.appendChild(l);var c=new XMLHttpRequest;c.open("GET",r,!0),c.onreadystatechange=function(){4==c.readyState&&(c.status<400&&c.responseText?(l.textContent=c.responseText,n.highlightElement(l)):c.status>=400?l.textContent="✖ Error "+c.status+" while fetching file: "+c.statusText:l.textContent="✖ Error: File does not exist or is empty")},c.send(null)})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight))}()}),S=function(t,e){var n=[].slice.call(t.querySelectorAll("code"));n.forEach(function(t){_.highlightElement(t)})},E={title:"Experiments in Handwriting with a Neural Network",description:"Several interactive visualizations of a generative model of handwriting. Some are fun, some are serious.",url:"http://distill.pub/2016/handwriting/",github:"https://github.com/distillpub/post--handwriting",firstPublished:"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)",lastPublished:"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)",authors:[{firstName:"Shan",lastName:"Carter",personalURL:"http://shancarter.com",affiliation:"Google Brain",affiliationURL:"http://g.co/brain"},{firstName:"David",lastName:"Ha",personalURL:"https://github.com/hardmaru",affiliation:"Google Brain",affiliationURL:"http://g.co/brain"},{firstName:"Ian",lastName:"Johnson",personalURL:"https://github.com/enjalot",affiliation:"Google Cloud",affiliationURL:""},{firstName:"Chris",lastName:"Olah",personalURL:"http://colah.github.io/",affiliation:"Google Brain",affiliationURL:"http://g.co/brain"}],journal:{title:"Distill",full_title:"Distill",abbrev_title:"Distill",url:"http://distill.pub",doi:"00.0000/dstl",issn:"0000-0000"}};return window.document&&i(window.document,E),i}(); //# sourceMappingURL=template.min.js.map diff --git a/dist/template.min.js.map b/dist/template.min.js.map index 55e20f1..41a046e 100644 --- a/dist/template.min.js.map +++ b/dist/template.min.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../index.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/cite-data.js","../components/styles-base.js","../components/styles-layout.js","../components/styles-article.js","../components/styles-code.js","../components/styles.js","../components/header.js","../components/appendix.js","../components/footer.js","../components/citation.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js"],"sourcesContent":["import citeData from \"./components/cite-data\";\nimport styles from \"./components/styles\";\nimport header from \"./components/header\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\n\n\n\nfunction render(dom, data) {\n styles(dom, data);\n document.addEventListener(\"DOMContentLoaded\", function(event) {\n citeData(dom, data)\n header(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n });\n}\n\nif(window.document) {\n render(window.document, []);\n}\n\nexport default render;\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n\n //TODO populate bibliography\n\n let rawBib = `\n @article{gregor2015draw,\n title={DRAW: A recurrent neural network for image generation},\n author={Gregor, Karol and Danihelka, Ivo and Graves, Alex and Rezende, Danilo Jimenez and Wierstra, Daan},\n journal={arXivreprint arXiv:1502.04623},\n year={2015}\n }\n @article{mercier2011humans,\n title={Why do humans reason? Arguments for an argumentative theory},\n author={Mercier, Hugo and Sperber, Dan},\n journal={Behavioral and brain sciences},\n volume={34},\n number={02},\n pages={57--74},\n year={2011},\n publisher={Cambridge Univ Press}\n }`;\n\n var bibliography = {};\n bibtexParse.toJSON(rawBib).forEach(e => {\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n\n let citations = {};\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let citationKeys = el.textContent.split(\",\");\n citationKeys.forEach(key => {\n if (bibliography[key]) {\n citations[key] = bibliography[key];\n } else {\n console.warn(\"No bibliography entry found for: \" + key);\n }\n });\n });\n data.citations = citations;\n}\n","export default `\nhtml {\n font: 400 15px/1.55em -apple-system, BlinkMacSystemFont, \"Roboto\", sans-serif;\n}\n\nhtml {\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\n\n/*\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, menu, nav, section {\n\tdisplay: block;\n}\nbody {\n\tline-height: 1;\n}\nol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after,\nq:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}*/\n\n`;\n","export default `\n.l-body,\n.l-page,\ndt-article > * {\n margin-left: 24px;\n margin-right: 24px;\n box-sizing: border-box;\n}\n\n@media(min-width: 768px) {\n .l-body,\n .l-page,\n dt-article > * {\n margin-left: 72px;\n margin-right: 72px;\n }\n}\n\n@media(min-width: 1080px) {\n .l-body,\n dt-article > * {\n margin-left: calc(50% - 984px / 2);\n width: 648px;\n }\n .l-body-outset,\n dt-article .l-body-outset {\n margin-left: calc(50% - 984px / 2 - 24px);\n width: calc(648px + 48px);\n }\n .l-middle,\n dt-article .l-middle {\n width: 816px;\n margin-left: calc(50% - 984px / 2);\n }\n .l-page,\n dt-article .l-page {\n width: 984px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-page-outset,\n dt-article .l-page-outset {\n width: 1080px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-screen,\n dt-article .l-screen {\n margin-left: auto;\n margin-right: auto;\n width: auto;\n }\n .l-screen-inset,\n dt-article .l-screen-inset {\n margin-left: 24px;\n margin-right: 24px;\n width: auto;\n }\n .l-gutter,\n dt-article .l-gutter {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 24px;\n margin-right: calc((100vw - 960px) / 2);\n width: calc((984px - 648px) / 2 - 24px);\n }\n /* Side */\n .side.l-body,\n dt-article .side.l-body {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px) / 2);\n width: calc(648px / 2 - 24px);\n }\n .side.l-body-outset,\n dt-article .side.l-body-outset {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px - 48px) / 2);\n width: calc(648px / 2 - 48px + 24px);\n }\n .side.l-page,\n dt-article .side.l-page {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2);\n width: calc(960px / 2 - 48px);\n }\n}\n`\n","export default `\ndt-article {\n color: rgba(0, 0, 0, 0.8);\n font: 15px/1.55em -apple-system, BlinkMacSystemFont, \"Roboto\", sans-serif;\n}\n\n@media(min-width: 1024px) {\n dt-article {\n font-size: 20px;\n }\n}\n\ndt-article h1 {\n font-weight: 700;\n font-size: 32px;\n line-height: 1.1em;\n /*-webkit-font-smoothing: antialiased;*/\n}\n\n@media(min-width: 1024px) {\n dt-article h1 {\n font-size: 50px;\n margin-bottom: 12px;\n letter-spacing: -0.025em;\n }\n}\n\n@media(min-width: 1024px) {\n dt-article > h1:first-of-type {\n margin-top: 100px;\n }\n}\n\ndt-article h2 {\n font-weight: 400;\n font-size: 28px;\n line-height: 1.25em;\n margin-top: 12px;\n margin-bottom: 24px;\n}\n\ndt-article h1 + h2 {\n padding-bottom: 48px;\n margin-bottom: 48px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n}\n\ndt-article h3 {\n font-weight: 700;\n font-size: 20px;\n line-height: 1.4em;\n margin-top: 24px;\n margin-bottom: 24px;\n}\n\ndt-article h4 {\n font-weight: 600;\n text-transform: uppercase;\n font-size: 14px;\n line-height: 1.4em;\n}\n\ndt-article a {\n color: inherit;\n}\n\ndt-article p {\n margin-bottom: 24px;\n -webkit-font-smoothing: antialiased;\n /*font-family: Georgia, serif;*/\n}\n\ndt-article p a {\n /*text-decoration: none;*/\n /*background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.25) 50%, rgba(0, 0, 0, 0) 50%);*/\n /*background-repeat: repeat-x;*/\n /*background-size: 2px 1em;*/\n /*background-position: 0 1.25em;*/\n}\n\ndt-article p .link {\n text-decoration: underline;\n cursor: pointer;\n}\n\n\n\ndt-article ul {\n padding-left: 20px;\n}\n\ndt-article li {\n /*margin-bottom: 24px;*/\n}\n\ndt-article pre {\n font-size: 14px;\n margin-bottom: 20px;\n}\n\n\ndt-article hr {\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\ndt-article section {\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\n\n/* Figure */\n\ndt-article figure {\n position: relative;\n margin-top: 30px;\n margin-bottom: 30px;\n}\n\n@media(min-width: 1024px) {\n dt-article figure {\n margin-top: 48px;\n margin-bottom: 48px;\n }\n}\n\ndt-article figure img {\n width: 100%;\n}\n\ndt-article figure svg text,\ndt-article figure svg tspan {\n}\n\ndt-article figure figcaption {\n color: rgba(0, 0, 0, 0.6);\n font-size: 12px;\n line-height: 1.5em;\n}\n@media(min-width: 1024px) {\n dt-article figure figcaption {\n font-size: 13px;\n }\n}\n\ndt-article figure.external img {\n background: white;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);\n padding: 18px;\n box-sizing: border-box;\n}\n\ndt-article figure figcaption a {\n color: rgba(0, 0, 0, 0.6);\n}\n\n/*dt-article figure figcaption::before {\n position: relative;\n display: block;\n top: -20px;\n content: \"\";\n width: 25px;\n border-top: 1px solid rgba(0, 0, 0, 0.3);\n}*/\n\ndt-article span.equation-mimic {\n font-family: georgia;\n font-size: 115%;\n font-style: italic;\n}\n\ndt-article figure figcaption b {\n font-weight: 600;\n color: rgba(0, 0, 0, 1.0);\n}\n\n`\n","export default `\n/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\n\n code {\n white-space:pre-wrap;\n background: rgba(0, 0, 0, 0.04);\n border-radius: 2px;\n padding: 4px 7px;\n font-size: 15px;\n color: rgba(0, 0, 0, 0.6);\n }\n\n pre code {\n display: block;\n background: white;\n border: 1px solid rgba(0, 0, 0, 0.08);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);\n }\n\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tcolor: black;\n\tbackground: none;\n\ttext-shadow: 0 1px white;\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-break: normal;\n\tword-wrap: normal;\n\tline-height: 1.5;\n\n\t-moz-tab-size: 4;\n\t-o-tab-size: 4;\n\ttab-size: 4;\n\n\t-webkit-hyphens: none;\n\t-moz-hyphens: none;\n\t-ms-hyphens: none;\n\thyphens: none;\n}\n\npre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\npre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\n@media print {\n\tcode[class*=\"language-\"],\n\tpre[class*=\"language-\"] {\n\t\ttext-shadow: none;\n\t}\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n\toverflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: slategray;\n}\n\n.token.punctuation {\n\tcolor: #999;\n}\n\n.namespace {\n\topacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n\tcolor: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n\tcolor: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n\tcolor: #a67f59;\n\tbackground: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n\tcolor: #07a;\n}\n\n.token.function {\n\tcolor: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n\tcolor: #e90;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n`;\n","import base from './styles-base';\nimport layout from './styles-layout';\nimport article from './styles-article';\nimport code from './styles-code';\n\nexport default function(dom, data) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code;\n dom.querySelector(\"head\").appendChild(s);\n}\n","const html = `\n\n\n\n`\n\nexport default function(dom, data) {\n dom.querySelector('dt-header').innerHTML = html;\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please submit a pull request on github.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\n// distill.data().then(function(data) {\n// var as = el.querySelectorAll(\"a.github\");\n// [].forEach.call(as, function(a) {\n// a.setAttribute(\"href\", data.github);\n// });\n// el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.firstPublishedYear + \".\";\n// var bibtex = \"@article{\" + data.slug + \",\\n\";\n// bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n// bibtex += \" title = {\" + data.title + \"},\\n\";\n// bibtex += \" journal = {Distill},\\n\";\n// bibtex += \" year = {\" + data.firstPublishedYear + \"},\\n\";\n// bibtex += \" note = {\" + data.url + \"}\\n\";\n// bibtex += \"}\";\n// el.querySelector(\".citation.long\").textContent = bibtex;\n// })\n\nexport default function(dom, data) {\n dom.querySelector('dt-appendix').innerHTML = html;\n}\n","const html = `\n\n\n
    \n \n \n \n \n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n dom.querySelector('dt-footer').innerHTML = html;\n}\n","export default function(dom, data) {\n\n let citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n var keys = el.textContent.split(\",\");\n var cite_string = keys.map(inline_cite).join(\", \");\n el.innerHTML = cite_string;\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n let ol = dom.createElement(\"ol\");\n citations.forEach(citation => {\n let el = dom.createElement(\"li\");\n el.textContent = bibliography_cite(citation);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n\n function inline_cite(key){\n if (key in data.citations){\n var ent = data.citations[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n\n function bibliography_cite(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n var cite = \"\";\n let name_strings = names.map(name => {\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n if (firsts != undefined) {\n var initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n return last + \", \" + initials.join(\".\")+\".\";\n }\n return last;\n });\n if (names.length > 1) {\n cite += name_strings.slice(0, names.length-1).join(\", \");\n cite += \" and \" + name_strings[names.length-1];\n } else {\n cite += name_strings[0]\n }\n cite += \", \" + ent.year + \". \"\n cite += ent.title + \". \"\n cite += (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n cite += \". \"\n return cite\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[dt-markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n let indent = \" \";\n // Set default indents to the first or second line\n\n // content.replace(\"\\n \", \"\\n\" + indent);\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"code\"));\n codeElements.forEach(el => {\n // let content = el.innerHTML;\n // el.innerHTML = \"\";\n // let p = dom.createElement(\"pre\");\n // let c = dom.createElement(\"code\");\n // console.log(content)\n let highlighted = Prism.highlightElement(el);\n // c.innerHTML = highlighted;\n // p.appendChild(c);\n // el.appendChild(p);\n\n });\n}\n"],"names":["render","dom","data","styles","document","addEventListener","event","citeData","header","appendix","footer","markdown","code","citation","exports","BibtexParser","this","months","notKey","pos","input","entries","Array","currentEntry","setInput","t","getEntries","isWhitespace","s","match","canCommentOut","undefined","skipWhitespace","substring","length","tryMatch","matchAt","value_braces","bracecount","start","escaped","end","value_comment","str","brcktCnt","value_quotes","single_value","k","key","indexOf","toLowerCase","value","values","push","join","key_equals_value","val","key_value_list","kv","entry_body","d","directive","preamble","comment","entry","bibtex","string","toJSON","b","toBibtex","json","out","i","entryType","citationKey","entryTags","tags","jdx","let","rawBib","bibliography","bibtexParse","forEach","e","type","citations","citeTags","slice","apply","querySelectorAll","el","citationKeys","textContent","split","console","warn","createElement","base","layout","article","querySelector","appendChild","html","innerHTML","inline_cite","ent","names","author","map","name","trim","year","bibliography_cite","cite","name_strings","last","firsts","initials","title","journal","booktitle","issue","number","volume","pages","Object","keys","c","sort","a","localeCompare","cite_string","bibEl","ol","Lexer","options","tokens","links","marked","defaults","rules","block","normal","gfm","tables","InlineLexer","inline","renderer","Renderer","Error","breaks","pedantic","Parser","token","escape","encode","replace","unescape","_","n","charAt","String","fromCharCode","parseInt","regex","opt","source","self","RegExp","noop","merge","obj","target","arguments","prototype","hasOwnProperty","call","src","callback","pending","highlight","lex","done","err","parse","text","lang","message","silent","newline","fences","hr","heading","nptable","lheading","blockquote","list","def","table","paragraph","bullet","item","_tag","lexer","top","bq","next","loose","cap","bull","space","l","exec","depth","align","cells","test","ordered","smartLists","sanitize","pre","sanitizer","href","charCodeAt","autolink","url","tag","link","reflink","nolink","strong","em","br","del","_inside","_href","output","mangle","inLink","outputLink","codespan","smartypants","image","ch","Math","random","toString","langPrefix","quote","level","raw","headerPrefix","xhtml","body","listitem","tablerow","content","tablecell","flags","prot","decodeURIComponent","parser","reverse","tok","pop","peek","parseText","row","cell","j","setOptions","inlineLexer","module","window","global","markdownElements","_self","WorkerGlobalScope","Prism","uniqueId","util","Token","alias","o","objId","defineProperty","clone","v","languages","extend","id","redef","insertBefore","inside","before","insert","root","grammar","newToken","ret","DFS","visited","plugins","highlightAll","async","env","selector","hooks","run","element","elements","highlightElement","language","parent","className","parentNode","nodeName","Worker","worker","filename","onmessage","evt","highlightedCode","postMessage","JSON","stringify","immediateClose","tokenize","strarr","rest","tokenloop","patterns","pattern","lookbehind","greedy","lookbehindLength","lastIndex","delNum","from","index","to","p","len","after","args","wrapped","splice","all","add","callbacks","matchedStr","classes","attributes","aliases","close","script","currentScript","getElementsByTagName","hasAttribute","readyState","requestAnimationFrame","setTimeout","markup","prolog","doctype","cdata","punctuation","namespace","attr-value","attr-name","entity","xml","mathml","svg","css","atrule","rule","property","important","function","style","style-attr","clike","class-name","keyword","boolean","operator","javascript","template-string","interpolation","interpolation-punctuation","js","fileHighlight","Extensions","py","rb","ps1","psm1","sh","bat","h","tex","getAttribute","extension","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","statusText","send","codeElements"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/meta.js","../index.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/cite-data.js","../components/styles.js","../components/header.js","../components/appendix.js","../components/footer.js","../components/citation.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../test-data.js"],"sourcesContent":["export default function(dom, data) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n appendHtml(head, ``);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n appendHtml(head, ``);\n }\n\n appendHtml(head, `\n \n \n \n \n ${data.title}\n `);\n\n appendHtml(head, `\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n `);\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n `);\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n \n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n \n \n `)\n });\n\n Object.keys(data.citations).forEach(key => {\n console.log(key);\n appendHtml(head, `\n \n `);\n });\n}\n\n\n\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n var content = `citation_title=${ref.title};`;\n ref.author.split(\" and \").forEach(author => {\n content += `citation_author=${author.trim()};`;\n });\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","import citeData from \"./components/cite-data\";\nimport meta from \"./components/meta\";\nimport styles from \"./components/styles\";\nimport header from \"./components/header\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport testData from \"./test-data\";\n\n\nfunction render(dom, data) {\n styles(dom, data);\n document.addEventListener(\"DOMContentLoaded\", function(event) {\n citeData(dom, data);\n meta(dom, data);\n header(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n console.log(\"final data:\")\n for (var k in data) {console.log(\" \", k, \": \", data[k])}\n });\n}\n\n\nif(window.document) {\n render(window.document, testData);\n}\n\nexport default render;\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n\n //TODO populate bibliography\n\n let rawBib = `\n @article{gregor2015draw,\n title={DRAW: A recurrent neural network for image generation},\n author={Gregor, Karol and Danihelka, Ivo and Graves, Alex and Rezende, Danilo Jimenez and Wierstra, Daan},\n journal={arXivreprint arXiv:1502.04623},\n year={2015}\n }\n @article{mercier2011humans,\n title={Why do humans reason? Arguments for an argumentative theory},\n author={Mercier, Hugo and Sperber, Dan},\n journal={Behavioral and brain sciences},\n volume={34},\n number={02},\n pages={57--74},\n year={2011},\n publisher={Cambridge Univ Press}\n }`;\n\n var bibliography = {};\n bibtexParse.toJSON(rawBib).forEach(e => {\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n\n let citations = {};\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let citationKeys = el.textContent.split(\",\");\n citationKeys.forEach(key => {\n if (bibliography[key]) {\n citations[key] = bibliography[key];\n } else {\n console.warn(\"No bibliography entry found for: \" + key);\n }\n });\n });\n data.citations = citations;\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\n\nexport default function(dom, data) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code;\n dom.querySelector(\"head\").appendChild(s);\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n dom.querySelector('dt-header').innerHTML = html;\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please submit a pull request on github.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\n// distill.data().then(function(data) {\n// var as = el.querySelectorAll(\"a.github\");\n// [].forEach.call(as, function(a) {\n// a.setAttribute(\"href\", data.github);\n// });\n// el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.firstPublishedYear + \".\";\n// var bibtex = \"@article{\" + data.slug + \",\\n\";\n// bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n// bibtex += \" title = {\" + data.title + \"},\\n\";\n// bibtex += \" journal = {Distill},\\n\";\n// bibtex += \" year = {\" + data.firstPublishedYear + \"},\\n\";\n// bibtex += \" note = {\" + data.url + \"}\\n\";\n// bibtex += \"}\";\n// el.querySelector(\".citation.long\").textContent = bibtex;\n// })\n\nexport default function(dom, data) {\n dom.querySelector('dt-appendix').innerHTML = html;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n dom.querySelector('dt-footer').innerHTML = html;\n}\n","export default function(dom, data) {\n\n let citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n var keys = el.textContent.split(\",\");\n var cite_string = keys.map(inline_cite).join(\", \");\n el.innerHTML = cite_string;\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n let ol = dom.createElement(\"ol\");\n citations.forEach(citation => {\n let el = dom.createElement(\"li\");\n el.textContent = bibliography_cite(citation);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n\n function inline_cite(key){\n if (key in data.citations){\n var ent = data.citations[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n\n function bibliography_cite(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n var cite = \"\";\n let name_strings = names.map(name => {\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n if (firsts != undefined) {\n var initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n return last + \", \" + initials.join(\".\")+\".\";\n }\n return last;\n });\n if (names.length > 1) {\n cite += name_strings.slice(0, names.length-1).join(\", \");\n cite += \" and \" + name_strings[names.length-1];\n } else {\n cite += name_strings[0]\n }\n cite += \", \" + ent.year + \". \"\n cite += ent.title + \". \"\n cite += (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n cite += \". \"\n return cite\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[dt-markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n let indent = \" \";\n // Set default indents to the first or second line\n\n // content.replace(\"\\n \", \"\\n\" + indent);\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"code\"));\n codeElements.forEach(el => {\n // let content = el.innerHTML;\n // el.innerHTML = \"\";\n // let p = dom.createElement(\"pre\");\n // let c = dom.createElement(\"code\");\n // console.log(content)\n let highlighted = Prism.highlightElement(el);\n // c.innerHTML = highlighted;\n // p.appendChild(c);\n // el.appendChild(p);\n\n });\n}\n","export default {\n \"title\": \"Experiments in Handwriting with a Neural Network\",\n \"description\": \"Several interactive visualizations of a generative model of handwriting. Some are fun, some are serious.\",\n \"url\": \"http://distill.pub/2016/handwriting/\",\n \"github\": \"https://github.com/distillpub/post--handwriting\",\n \"firstPublished\": \"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)\",\n \"lastPublished\": \"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)\",\n \"authors\": [\n {\n \"firstName\": \"Shan\",\n \"lastName\": \"Carter\",\n \"personalURL\": \"http://shancarter.com\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n },\n {\n \"firstName\": \"David\",\n \"lastName\": \"Ha\",\n \"personalURL\": \"https://github.com/hardmaru\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n },\n {\n \"firstName\": \"Ian\",\n \"lastName\": \"Johnson\",\n \"personalURL\": \"https://github.com/enjalot\",\n \"affiliation\": \"Google Cloud\",\n \"affiliationURL\": \"\"\n },\n {\n \"firstName\": \"Chris\",\n \"lastName\": \"Olah\",\n \"personalURL\": \"http://colah.github.io/\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n }\n ],\n journal: {\n \"title\": \"Distill\",\n \"full_title\": \"Distill\",\n \"abbrev_title\": \"Distill\",\n \"url\": \"http://distill.pub\",\n \"doi\": \"00.0000/dstl\",\n \"issn\": \"0000-0000\"\n }\n };\n"],"names":["appendHtml","el","html","innerHTML","citation_meta_content","ref","content","author","split","forEach","trim","issue","number","render","dom","data","styles","document","addEventListener","event","citeData","meta","header","appendix","footer","markdown","code","citation","console","log","k","exports","BibtexParser","this","months","notKey","pos","input","entries","Array","currentEntry","setInput","t","getEntries","isWhitespace","s","match","canCommentOut","undefined","skipWhitespace","substring","length","tryMatch","matchAt","value_braces","bracecount","start","escaped","end","value_comment","str","brcktCnt","value_quotes","single_value","key","indexOf","toLowerCase","value","values","push","join","key_equals_value","val","key_value_list","kv","entry_body","d","directive","preamble","comment","entry","bibtex","string","toJSON","b","toBibtex","json","out","i","entryType","citationKey","entryTags","tags","jdx","let","rawBib","bibliography","bibtexParse","e","type","citations","citeTags","slice","apply","querySelectorAll","citationKeys","textContent","warn","querySelector","setAttribute","head","authors","a","journal","Object","keys","createElement","base","layout","article","appendChild","logo","inline_cite","ent","names","map","name","year","bibliography_cite","cite","name_strings","last","firsts","initials","title","booktitle","volume","pages","c","sort","localeCompare","cite_string","bibEl","ol","Lexer","options","tokens","links","marked","defaults","rules","block","normal","gfm","tables","InlineLexer","inline","renderer","Renderer","Error","breaks","pedantic","Parser","token","escape","encode","replace","unescape","_","n","charAt","String","fromCharCode","parseInt","regex","opt","source","self","RegExp","noop","merge","obj","target","arguments","prototype","hasOwnProperty","call","src","callback","pending","highlight","lex","done","err","parse","text","lang","message","silent","newline","fences","hr","heading","nptable","lheading","blockquote","list","def","table","paragraph","bullet","item","_tag","lexer","top","bq","next","loose","cap","bull","space","l","exec","depth","align","cells","test","ordered","smartLists","sanitize","pre","sanitizer","href","charCodeAt","autolink","url","tag","link","reflink","nolink","strong","em","br","del","_inside","_href","output","mangle","inLink","outputLink","codespan","smartypants","image","ch","Math","random","toString","langPrefix","quote","level","raw","headerPrefix","xhtml","body","listitem","tablerow","tablecell","flags","prot","decodeURIComponent","parser","reverse","tok","pop","peek","parseText","row","cell","j","setOptions","inlineLexer","module","window","global","markdownElements","_self","WorkerGlobalScope","Prism","uniqueId","util","Token","alias","o","objId","defineProperty","clone","v","languages","extend","id","redef","insertBefore","inside","before","insert","root","grammar","newToken","ret","DFS","visited","plugins","highlightAll","async","env","selector","hooks","run","element","elements","highlightElement","language","parent","className","parentNode","nodeName","Worker","worker","filename","onmessage","evt","highlightedCode","postMessage","JSON","stringify","immediateClose","tokenize","strarr","rest","tokenloop","patterns","pattern","lookbehind","greedy","lookbehindLength","lastIndex","delNum","from","index","to","p","len","after","args","wrapped","splice","all","add","callbacks","matchedStr","classes","attributes","aliases","close","script","currentScript","getElementsByTagName","hasAttribute","readyState","requestAnimationFrame","setTimeout","markup","prolog","doctype","cdata","punctuation","namespace","attr-value","attr-name","entity","xml","mathml","svg","css","atrule","rule","property","important","function","style","style-attr","clike","class-name","keyword","boolean","operator","javascript","template-string","interpolation","interpolation-punctuation","js","fileHighlight","Extensions","py","rb","ps1","psm1","sh","bat","h","tex","getAttribute","extension","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","statusText","send","codeElements","description","github","firstPublished","lastPublished","firstName","lastName","personalURL","affiliation","affiliationURL","full_title","abbrev_title","doi","issn","testData"],"mappings":"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"} \ No newline at end of file diff --git a/examples/tutorial.html b/examples/tutorial.html index 401374a..34e721d 100644 --- a/examples/tutorial.html +++ b/examples/tutorial.html @@ -18,8 +18,8 @@ -

    How to Create a Distill Article

    -

    A collection of examples and best practices for creating interactive explanatory articles using the Distill web framework

    +

    How to Create a Distill Article

    +

    A collection of examples and best practices for creating interactive explanatory articles using the Distill web framework

    Distill ships with a CSS framework and a collection of custom web components that make building interactive academic articles easier than raw HTML, CSS and JavaScript. This reference article details several examples and best practices for how to use both frameworks. Both are also available on Github with a permissive license, so feel free to use them independent of http://distill.pub as well.


    @@ -52,7 +52,7 @@

    Code Blocks

    -

    Syntax highlighting is provided within <code> tags. Just wrap the source with this: <code class="language-html">let x = 10;</code>. For larger blocks of code, add a <pre> tag:

    +

    Syntax highlighting is provided within <code> tags. Just wrap the source with this: <code class="language-html">let x = 10;</code>. For larger blocks of code, add a <pre> tag:

    
         <pre><code class="language-javascript">
           var x = 25;
    diff --git a/package.json b/package.json
    index fdedee1..472e347 100644
    --- a/package.json
    +++ b/package.json
    @@ -17,6 +17,7 @@
         "rollup-plugin-livereload": "^0.3.1",
         "rollup-plugin-node-resolve": "^2.0.0",
         "rollup-plugin-serve": "^0.1.0",
    +    "rollup-plugin-string": "^2.0.2",
         "rollup-plugin-uglify": "^1.0.1",
         "rollup-watch": "^2.5.0"
       }
    diff --git a/rollup.config.js b/rollup.config.js
    index 27e34e5..9dccdc8 100644
    --- a/rollup.config.js
    +++ b/rollup.config.js
    @@ -4,6 +4,7 @@ import commonjs from 'rollup-plugin-commonjs';
     import liveReload from 'rollup-plugin-livereload';
     import serve from 'rollup-plugin-serve';
     import uglify from 'rollup-plugin-uglify';
    +import string from 'rollup-plugin-string';
     
     const PORT = 8080;
     console.log(`open http://localhost:${PORT}/`);
    @@ -23,11 +24,14 @@ export default {
           jsnext: true,
           browser: true,
         }),
    +    string({
    +      include: ["**/*.svg", "**/*.html", "**/*.css"]
    +    }),
         buble({
           exclude: 'node_modules',
           target: { chrome: 52, safari: 8, edge: 13, firefox: 48, }
         }),
    -    commonjs({}),
    +    commonjs(),
         uglify(),
         liveReload(),
         serve({port: PORT}),
    diff --git a/yarn.lock b/yarn.lock
    index 5903771..0638030 100644
    --- a/yarn.lock
    +++ b/yarn.lock
    @@ -1019,6 +1019,12 @@ rollup-plugin-serve@^0.1.0:
         mime "^1.3.4"
         opener "^1.4.2"
     
    +rollup-plugin-string@^2.0.2:
    +  version "2.0.2"
    +  resolved "https://registry.yarnpkg.com/rollup-plugin-string/-/rollup-plugin-string-2.0.2.tgz#f5323a22cfd738b450cbea62ab6593705eac744b"
    +  dependencies:
    +    rollup-pluginutils "^1.5.0"
    +
     rollup-plugin-uglify@^1.0.1:
       version "1.0.1"
       resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-1.0.1.tgz#11d0b0c8bcd2d07e6908f74fd16b0152390b922a"