CoolFace
Apppublic

gouki510/MechInterp_ja

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
distill.bundle.js.map1 linesDownload Raw Back to root
1{"version":3,"file":"distill.bundle.js","mappings":"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","sources":["webpack://blogpost/./src/distill.js","webpack://blogpost/webpack/bootstrap","webpack://blogpost/webpack/runtime/global","webpack://blogpost/webpack/before-startup","webpack://blogpost/webpack/startup","webpack://blogpost/webpack/after-startup"],"sourcesContent":["(function (factory) {\n  typeof define === 'function' && define.amd ? define(factory) :\n  factory();\n}((function () { 'use strict';\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n  const months = ['Jan.', 'Feb.', 'March', 'April', 'May', 'June', 'July', 'Aug.', 'Sept.', 'Oct.', 'Nov.', 'Dec.'];\n  const zeroPad = n => n < 10 ? '0' + n : n;\n\n  const RFC = function(date) {\n    const day = days[date.getDay()].substring(0, 3);\n    const paddedDate = zeroPad(date.getDate());\n    const month = months[date.getMonth()].substring(0,3);\n    const year = date.getFullYear().toString();\n    const hours = date.getUTCHours().toString();\n    const minutes = date.getUTCMinutes().toString();\n    const seconds = date.getUTCSeconds().toString();\n    return `${day}, ${paddedDate} ${month} ${year} ${hours}:${minutes}:${seconds} Z`;\n  };\n\n  const objectFromMap = function(map) {\n    const object = Array.from(map).reduce((object, [key, value]) => (\n      Object.assign(object, { [key]: value }) // Be careful! Maps can have non-String keys; object literals can't.\n    ), {});\n    return object;\n  };\n\n  const mapFromObject = function(object) {\n    const map = new Map();\n    for (var property in object) {\n      if (object.hasOwnProperty(property)) {\n        map.set(property, object[property]);\n      }\n    }\n    return map;\n  };\n\n  class Author {\n\n    // constructor(name='', personalURL='', affiliation='', affiliationURL='') {\n    //   this.name = name; // 'Chris Olah'\n    //   this.personalURL = personalURL; // 'https://colah.github.io'\n    //   this.affiliation = affiliation; // 'Google Brain'\n    //   this.affiliationURL = affiliationURL; // 'https://g.co/brain'\n    // }\n\n    constructor(object) {\n      this.name = object.author; // 'Chris Olah'\n      this.personalURL = object.authorURL; // 'https://colah.github.io'\n      this.affiliation = object.affiliation; // 'Google Brain'\n      this.affiliationURL = object.affiliationURL; // 'https://g.co/brain'\n      this.affiliations = object.affiliations || []; // new-style affiliations\n    }\n\n    // 'Chris'\n    get firstName() {\n      const names = this.name.split(' ');\n      return names.slice(0, names.length - 1).join(' ');\n    }\n\n    // 'Olah'\n    get lastName() {\n      const names = this.name.split(' ');\n      return names[names.length -1];\n    }\n  }\n\n  function mergeFromYMLFrontmatter(target, source) {\n    target.title = source.title;\n    if (source.published) {\n      if (source.published instanceof Date) {\n        target.publishedDate = source.published;\n      } else if (source.published.constructor === String) {\n        target.publishedDate = new Date(source.published);\n      }\n    }\n    if (source.publishedDate) {\n      if (source.publishedDate instanceof Date) {\n        target.publishedDate = source.publishedDate;\n      } else if (source.publishedDate.constructor === String) {\n        target.publishedDate = new Date(source.publishedDate);\n      } else {\n        console.error('Don\\'t know what to do with published date: ' + source.publishedDate);\n      }\n    }\n    target.description = source.description;\n    target.authors = source.authors.map( (authorObject) => new Author(authorObject));\n    target.katex = source.katex;\n    target.password = source.password;\n    if (source.doi) {\n      target.doi = source.doi;\n    }\n  }\n\n  class FrontMatter {\n    constructor() {\n      this.title = 'unnamed article'; // 'Attention and Augmented Recurrent Neural Networks'\n      this.description = ''; // 'A visual overview of neural attention...'\n      this.authors = []; // Array of Author(s)\n\n      this.bibliography = new Map();\n      this.bibliographyParsed = false;\n      //  {\n      //    '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': 'arXiv preprint arXiv:1502.04623',\n      //      'year': '2015',\n      //      'url': 'https://arxiv.org/pdf/1502.04623.pdf',\n      //      'type': 'article'\n      //    },\n      //  }\n\n      // Citation keys should be listed in the order that they are appear in the document.\n      // Each key refers to a key in the bibliography dictionary.\n      this.citations = []; // [ 'gregor2015draw', 'mercier2011humans' ]\n      this.citationsCollected = false;\n\n      //\n      // Assigned from posts.csv\n      //\n\n      //  publishedDate: 2016-09-08T07:00:00.000Z,\n      //  tags: [ 'rnn' ],\n      //  distillPath: '2016/augmented-rnns',\n      //  githubPath: 'distillpub/post--augmented-rnns',\n      //  doiSuffix: 1,\n\n      //\n      // Assigned from journal\n      //\n      this.journal = {};\n      //  journal: {\n      //    'title': 'Distill',\n      //    'full_title': 'Distill',\n      //    'abbrev_title': 'Distill',\n      //    'url': 'http://distill.pub',\n      //    'doi': '10.23915/distill',\n      //    'publisherName': 'Distill Working Group',\n      //    'publisherEmail': 'admin@distill.pub',\n      //    'issn': '2476-0757',\n      //    'editors': [...],\n      //    'committee': [...]\n      //  }\n      //  volume: 1,\n      //  issue: 9,\n\n      this.katex = {};\n\n      //\n      // Assigned from publishing process\n      //\n\n      //  githubCompareUpdatesUrl: 'https://github.com/distillpub/post--augmented-rnns/compare/1596e094d8943d2dc0ea445d92071129c6419c59...3bd9209e0c24d020f87cf6152dcecc6017cbc193',\n      //  updatedDate: 2017-03-21T07:13:16.000Z,\n      //  doi: '10.23915/distill.00001',\n      this.doi = undefined;\n      this.publishedDate = undefined;\n    }\n\n    // Example:\n    // title: Demo Title Attention and Augmented Recurrent Neural Networks\n    // published: Jan 10, 2017\n    // authors:\n    // - Chris Olah:\n    // - Shan Carter: http://shancarter.com\n    // affiliations:\n    // - Google Brain:\n    // - Google Brain: http://g.co/brain\n\n    //\n    // Computed Properties\n    //\n\n    // 'http://distill.pub/2016/augmented-rnns',\n    set url(value) {\n      this._url = value;\n    }\n    get url() {\n      if (this._url) {\n        return this._url;\n      } else if (this.distillPath && this.journal.url) {\n        return this.journal.url + '/' + this.distillPath;\n      } else if (this.journal.url) {\n        return this.journal.url;\n      }\n    }\n\n    // 'https://github.com/distillpub/post--augmented-rnns',\n    get githubUrl() {\n      if (this.githubPath) {\n        return 'https://github.com/' + this.githubPath;\n      } else {\n        return undefined;\n      }\n    }\n\n    // TODO resolve differences in naming of URL/Url/url.\n    // 'http://distill.pub/2016/augmented-rnns/thumbnail.jpg',\n    set previewURL(value) {\n      this._previewURL = value;\n    }\n    get previewURL() {\n      return this._previewURL ? this._previewURL : this.url + '/thumbnail.jpg';\n    }\n\n    // 'Thu, 08 Sep 2016 00:00:00 -0700',\n    get publishedDateRFC() {\n      return RFC(this.publishedDate);\n    }\n\n    // 'Thu, 08 Sep 2016 00:00:00 -0700',\n    get updatedDateRFC() {\n      return RFC(this.updatedDate);\n    }\n\n    // 2016,\n    get publishedYear() {\n      return this.publishedDate.getFullYear();\n    }\n\n    // 'Sept',\n    get publishedMonth() {\n      return months[this.publishedDate.getMonth()];\n    }\n\n    // 8,\n    get publishedDay() {\n      return this.publishedDate.getDate();\n    }\n\n    // '09',\n    get publishedMonthPadded() {\n      return zeroPad(this.publishedDate.getMonth() + 1);\n    }\n\n    // '08',\n    get publishedDayPadded() {\n      return zeroPad(this.publishedDate.getDate());\n    }\n\n    get publishedISODateOnly() {\n      return this.publishedDate.toISOString().split('T')[0];\n    }\n\n    get volume() {\n      const volume = this.publishedYear - 2015;\n      if (volume < 1) {\n        throw new Error('Invalid publish date detected during computing volume');\n      }\n      return volume;\n    }\n\n    get issue() {\n      return this.publishedDate.getMonth() + 1;\n    }\n\n    // 'Olah & Carter',\n    get concatenatedAuthors() {\n      if (this.authors.length > 2) {\n        return this.authors[0].lastName + ', et al.';\n      } else if (this.authors.length === 2) {\n        return this.authors[0].lastName + ' & ' + this.authors[1].lastName;\n      } else if (this.authors.length === 1) {\n        return this.authors[0].lastName;\n      }\n    }\n\n    // 'Olah, Chris and Carter, Shan',\n    get bibtexAuthors() {\n      return this.authors.map(author => {\n        return author.lastName + ', ' + author.firstName;\n      }).join(' and ');\n    }\n\n    // 'olah2016attention'\n    get slug() {\n      let slug = '';\n      if (this.authors.length) {\n        slug += this.authors[0].lastName.toLowerCase();\n        slug += this.publishedYear;\n        slug += this.title.split(' ')[0].toLowerCase();\n      }\n      return slug || 'Untitled';\n    }\n\n    get bibliographyEntries() {\n      return new Map(this.citations.map( citationKey => {\n        const entry = this.bibliography.get(citationKey);\n        return [citationKey, entry];\n      }));\n    }\n\n    set bibliography(bibliography) {\n      if (bibliography instanceof Map) {\n        this._bibliography = bibliography;\n      } else if (typeof bibliography === 'object') {\n        this._bibliography = mapFromObject(bibliography);\n      }\n    }\n\n    get bibliography() {\n      return this._bibliography;\n    }\n\n    static fromObject(source) {\n      const frontMatter = new FrontMatter();\n      Object.assign(frontMatter, source);\n      return frontMatter;\n    }\n\n    assignToObject(target) {\n      Object.assign(target, this);\n      target.bibliography = objectFromMap(this.bibliographyEntries);\n      target.url = this.url;\n      target.doi = this.doi;\n      target.githubUrl = this.githubUrl;\n      target.previewURL = this.previewURL;\n      if (this.publishedDate) {\n        target.volume = this.volume;\n        target.issue = this.issue;\n        target.publishedDateRFC = this.publishedDateRFC;\n        target.publishedYear = this.publishedYear;\n        target.publishedMonth = this.publishedMonth;\n        target.publishedDay = this.publishedDay;\n        target.publishedMonthPadded = this.publishedMonthPadded;\n        target.publishedDayPadded = this.publishedDayPadded;\n      }\n      if (this.updatedDate) {\n        target.updatedDateRFC = this.updatedDateRFC;\n      }\n      target.concatenatedAuthors = this.concatenatedAuthors;\n      target.bibtexAuthors = this.bibtexAuthors;\n      target.slug = this.slug;\n    }\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  const Mutating = (superclass) => {\n    return class extends superclass {\n\n      constructor() {\n        super();\n\n        // set up mutation observer\n        const options = {childList: true, characterData: true, subtree: true};\n        const observer = new MutationObserver( () => {\n          observer.disconnect();\n          this.renderIfPossible();\n          observer.observe(this, options);\n        });\n\n        // ...and listen for changes\n        observer.observe(this, options);\n      }\n\n      connectedCallback() {\n        super.connectedCallback();\n\n        this.renderIfPossible();\n      }\n\n      // potential TODO: check if this is enough for all our usecases\n      // maybe provide a custom function to tell if we have enough information to render\n      renderIfPossible() {\n        if (this.textContent && this.root) {\n          this.renderContent();\n        }\n      }\n\n      renderContent() {\n        console.error(`Your class ${this.constructor.name} must provide a custom renderContent() method!` );\n      }\n\n    }; // end class\n  }; // end mixin function\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  /*global ShadyCSS*/\n\n  const Template = (name, templateString, useShadow = true) => {\n\n    return (superclass) => {\n\n      const template = document.createElement('template');\n      template.innerHTML = templateString;\n\n      if (useShadow && 'ShadyCSS' in window) {\n        ShadyCSS.prepareTemplate(template, name);\n      }\n\n      return class extends superclass {\n\n        static get is() { return name; }\n\n        constructor() {\n          super();\n\n          this.clone = document.importNode(template.content, true);\n          if (useShadow) {\n            this.attachShadow({mode: 'open'});\n            this.shadowRoot.appendChild(this.clone);\n          }\n        }\n\n        connectedCallback() {\n          if (this.hasAttribute('distill-prerendered')) {\n            return;\n          }\n          if (useShadow) {\n            if ('ShadyCSS' in window) {\n              ShadyCSS.styleElement(this);\n            }\n          } else {\n            this.insertBefore(this.clone, this.firstChild);\n          }\n        }\n\n        get root() {\n          if (useShadow) {\n            return this.shadowRoot;\n          } else {\n            return this;\n          }\n        }\n\n        /* TODO: Are we using these? Should we even? */\n        $(query) {\n          return this.root.querySelector(query);\n        }\n\n        $$(query) {\n          return this.root.querySelectorAll(query);\n        }\n      };\n    };\n  };\n\n  var math = \"/*\\n * Copyright 2018 The Distill Template Authors\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *      http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\nspan.katex-display {\\n  text-align: left;\\n  padding: 8px 0 8px 0;\\n  margin: 0.5em 0 0.5em 1em;\\n}\\n\\nspan.katex {\\n  -webkit-font-smoothing: antialiased;\\n  color: rgba(0, 0, 0, 0.8);\\n  font-size: 1.18em;\\n}\\n\";\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  // This is a straight concatenation of code from KaTeX's contrib folder,\n  // but we aren't using some of their helpers that don't work well outside a browser environment.\n\n  /*global katex */\n\n  const findEndOfMath = function(delimiter, text, startIndex) {\n    // Adapted from\n    // https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx\n    let index = startIndex;\n    let braceLevel = 0;\n\n    const delimLength = delimiter.length;\n\n    while (index < text.length) {\n      const character = text[index];\n\n      if (\n        braceLevel <= 0 &&\n        text.slice(index, index + delimLength) === delimiter\n      ) {\n        return index;\n      } else if (character === \"\\\\\") {\n        index++;\n      } else if (character === \"{\") {\n        braceLevel++;\n      } else if (character === \"}\") {\n        braceLevel--;\n      }\n\n      index++;\n    }\n\n    return -1;\n  };\n\n  const splitAtDelimiters = function(startData, leftDelim, rightDelim, display) {\n    const finalData = [];\n\n    for (let i = 0; i < startData.length; i++) {\n      if (startData[i].type === \"text\") {\n        const text = startData[i].data;\n\n        let lookingForLeft = true;\n        let currIndex = 0;\n        let nextIndex;\n\n        nextIndex = text.indexOf(leftDelim);\n        if (nextIndex !== -1) {\n          currIndex = nextIndex;\n          finalData.push({\n            type: \"text\",\n            data: text.slice(0, currIndex)\n          });\n          lookingForLeft = false;\n        }\n\n        while (true) {\n          // eslint-disable-line no-constant-condition\n          if (lookingForLeft) {\n            nextIndex = text.indexOf(leftDelim, currIndex);\n            if (nextIndex === -1) {\n              break;\n            }\n\n            finalData.push({\n              type: \"text\",\n              data: text.slice(currIndex, nextIndex)\n            });\n\n            currIndex = nextIndex;\n          } else {\n            nextIndex = findEndOfMath(\n              rightDelim,\n              text,\n              currIndex + leftDelim.length\n            );\n            if (nextIndex === -1) {\n              break;\n            }\n\n            finalData.push({\n              type: \"math\",\n              data: text.slice(currIndex + leftDelim.length, nextIndex),\n              rawData: text.slice(currIndex, nextIndex + rightDelim.length),\n              display: display\n            });\n\n            currIndex = nextIndex + rightDelim.length;\n          }\n\n          lookingForLeft = !lookingForLeft;\n        }\n\n        finalData.push({\n          type: \"text\",\n          data: text.slice(currIndex)\n        });\n      } else {\n        finalData.push(startData[i]);\n      }\n    }\n\n    return finalData;\n  };\n\n  const splitWithDelimiters = function(text, delimiters) {\n    let data = [{ type: \"text\", data: text }];\n    for (let i = 0; i < delimiters.length; i++) {\n      const delimiter = delimiters[i];\n      data = splitAtDelimiters(\n        data,\n        delimiter.left,\n        delimiter.right,\n        delimiter.display || false\n      );\n    }\n    return data;\n  };\n\n  /* Note: optionsCopy is mutated by this method. If it is ever exposed in the\n   * API, we should copy it before mutating.\n   */\n  const renderMathInText = function(text, optionsCopy) {\n    const data = splitWithDelimiters(text, optionsCopy.delimiters);\n    const fragment = document.createDocumentFragment();\n\n    for (let i = 0; i < data.length; i++) {\n      if (data[i].type === \"text\") {\n        fragment.appendChild(document.createTextNode(data[i].data));\n      } else {\n        const tag = document.createElement(\"d-math\");\n        const math = data[i].data;\n        // Override any display mode defined in the settings with that\n        // defined by the text itself\n        optionsCopy.displayMode = data[i].display;\n        try {\n          tag.textContent = math;\n          if (optionsCopy.displayMode) {\n            tag.setAttribute(\"block\", \"\");\n          }\n        } catch (e) {\n          if (!(e instanceof katex.ParseError)) {\n            throw e;\n          }\n          optionsCopy.errorCallback(\n            \"KaTeX auto-render: Failed to parse `\" + data[i].data + \"` with \",\n            e\n          );\n          fragment.appendChild(document.createTextNode(data[i].rawData));\n          continue;\n        }\n        fragment.appendChild(tag);\n      }\n    }\n\n    return fragment;\n  };\n\n  const renderElem = function(elem, optionsCopy) {\n    for (let i = 0; i < elem.childNodes.length; i++) {\n      const childNode = elem.childNodes[i];\n      if (childNode.nodeType === 3) {\n        // Text node\n        const text = childNode.textContent;\n        if (optionsCopy.mightHaveMath(text)) {\n          const frag = renderMathInText(text, optionsCopy);\n          i += frag.childNodes.length - 1;\n          elem.replaceChild(frag, childNode);\n        }\n      } else if (childNode.nodeType === 1) {\n        // Element node\n        const shouldRender =\n          optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) ===\n          -1;\n\n        if (shouldRender) {\n          renderElem(childNode, optionsCopy);\n        }\n      }\n      // Otherwise, it's something else, and ignore it.\n    }\n  };\n\n  const defaultAutoRenderOptions = {\n    delimiters: [\n      { left: \"$$\", right: \"$$\", display: true },\n      { left: \"\\\\[\", right: \"\\\\]\", display: true },\n      { left: \"\\\\(\", right: \"\\\\)\", display: false }\n      // LaTeX uses this, but it ruins the display of normal `$` in text:\n      // {left: '$', right: '$', display: false},\n    ],\n\n    ignoredTags: [\n      \"script\",\n      \"noscript\",\n      \"style\",\n      \"textarea\",\n      \"pre\",\n      \"code\",\n      \"svg\"\n    ],\n\n    errorCallback: function(msg, err) {\n      console.error(msg, err);\n    }\n  };\n\n  const renderMathInElement = function(elem, options) {\n    if (!elem) {\n      throw new Error(\"No element provided to render\");\n    }\n\n    const optionsCopy = Object.assign({}, defaultAutoRenderOptions, options);\n    const delimiterStrings = optionsCopy.delimiters.flatMap(d => [\n      d.left,\n      d.right\n    ]);\n    const mightHaveMath = text =>\n      delimiterStrings.some(d => text.indexOf(d) !== -1);\n    optionsCopy.mightHaveMath = mightHaveMath;\n    renderElem(elem, optionsCopy);\n  };\n\n  // Copyright 2018 The Distill Template Authors\n\n  const katexJSURL = 'https://distill.pub/third-party/katex/katex.min.js';\n  const katexCSSTag = '<link rel=\"stylesheet\" href=\"https://distill.pub/third-party/katex/katex.min.css\" crossorigin=\"anonymous\">';\n\n  const T = Template('d-math', `\n${katexCSSTag}\n<style>\n\n:host {\n  display: inline-block;\n  contain: style;\n}\n\n:host([block]) {\n  display: block;\n}\n\n${math}\n</style>\n<span id='katex-container'></span>\n`);\n\n  // DMath, not Math, because that would conflict with the JS built-in\n  class DMath extends Mutating(T(HTMLElement)) {\n\n    static set katexOptions(options) {\n      DMath._katexOptions = options;\n      if (DMath.katexOptions.delimiters) {\n        if (!DMath.katexAdded) {\n          DMath.addKatex();\n        } else {\n          DMath.katexLoadedCallback();\n        }\n      }\n    }\n\n    static get katexOptions() {\n      if (!DMath._katexOptions) {\n        DMath._katexOptions = {\n          delimiters: [ { 'left':'$$', 'right':'$$', 'display': false } ]\n        };\n      }\n      return DMath._katexOptions;\n    }\n\n    static katexLoadedCallback() {\n      // render all d-math tags\n      const mathTags = document.querySelectorAll('d-math');\n      for (const mathTag of mathTags) {\n        mathTag.renderContent();\n      }\n      // transform inline delimited math to d-math tags\n      if (DMath.katexOptions.delimiters) {\n        renderMathInElement(document.body, DMath.katexOptions);\n      }\n    }\n\n    static addKatex() {\n      // css tag can use this convenience function\n      document.head.insertAdjacentHTML('beforeend', katexCSSTag);\n      // script tag has to be created to work properly\n      const scriptTag = document.createElement('script');\n      scriptTag.src = katexJSURL;\n      scriptTag.async = true;\n      scriptTag.onload = DMath.katexLoadedCallback;\n      scriptTag.crossorigin = 'anonymous';\n      document.head.appendChild(scriptTag);\n\n      DMath.katexAdded = true;\n    }\n\n    get options() {\n      const localOptions = { displayMode: this.hasAttribute('block') };\n      return Object.assign(localOptions, DMath.katexOptions);\n    }\n\n    connectedCallback() {\n      super.connectedCallback();\n      if (!DMath.katexAdded) {\n        DMath.addKatex();\n      }\n    }\n\n    renderContent() {\n      if (typeof katex !== 'undefined') {\n        const container = this.root.querySelector('#katex-container');\n        katex.render(this.textContent, container, this.options);\n      }\n    }\n\n  }\n\n  DMath.katexAdded = false;\n  DMath.inlineMathRendered = false;\n  window.DMath = DMath; // TODO: check if this can be removed, or if we should expose a distill global\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  function collect_citations(dom = document) {\n    const citations = new Set();\n    const citeTags = dom.querySelectorAll(\"d-cite\");\n    for (const tag of citeTags) {\n      const keyString = tag.getAttribute(\"key\") || tag.getAttribute(\"bibtex-key\");\n      const keys = keyString.split(\",\").map(k => k.trim());\n      for (const key of keys) {\n        citations.add(key);\n      }\n    }\n    return [...citations];\n  }\n\n  function author_string(ent, template, sep, finalSep) {\n    if (ent.author == null) {\n      return \"\";\n    }\n    var names = ent.author.split(\" and \");\n    let name_strings = names.map(name => {\n      name = name.trim();\n      if (name.indexOf(\",\") != -1) {\n        var last = name.split(\",\")[0].trim();\n        var firsts = name.split(\",\")[1];\n      } else if (name.indexOf(\" \") != -1) {\n        var last = name\n          .split(\" \")\n          .slice(-1)[0]\n          .trim();\n        var firsts = name\n          .split(\" \")\n          .slice(0, -1)\n          .join(\" \");\n      } else {\n        var last = name.trim();\n      }\n      var initials = \"\";\n      if (firsts != undefined) {\n        initials = firsts\n          .trim()\n          .split(\" \")\n          .map(s => s.trim()[0]);\n        initials = initials.join(\".\") + \".\";\n      }\n      return template\n        .replace(\"${F}\", firsts)\n        .replace(\"${L}\", last)\n        .replace(\"${I}\", initials)\n        .trim(); // in case one of first or last was empty\n    });\n    if (names.length > 1) {\n      var str = name_strings.slice(0, names.length - 1).join(sep);\n      str += (finalSep || sep) + name_strings[names.length - 1];\n      return str;\n    } else {\n      return name_strings[0];\n    }\n  }\n\n  function venue_string(ent) {\n    var 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    if (cite != \"\") cite += \". \";\n    if (\"publisher\" in ent) {\n      cite += ent.publisher;\n      if (cite[cite.length - 1] != \".\") cite += \".\";\n    }\n    return cite;\n  }\n\n  function link_string(ent) {\n    if (\"url\" in ent) {\n      var url = ent.url;\n      var arxiv_match = /arxiv\\.org\\/abs\\/([0-9\\.]*)/.exec(url);\n      if (arxiv_match != null) {\n        url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n      }\n\n      if (url.slice(-4) == \".pdf\") {\n        var label = \"PDF\";\n      } else if (url.slice(-5) == \".html\") {\n        var label = \"HTML\";\n      }\n      return ` &ensp;<a href=\"${url}\">[${label || \"link\"}]</a>`;\n    } /* else if (\"doi\" in ent){\n      return ` &ensp;<a href=\"https://doi.org/${ent.doi}\" >[DOI]</a>`;\n    }*/ else {\n      return \"\";\n    }\n  }\n  function doi_string(ent, new_line) {\n    if (\"doi\" in ent) {\n      return `${new_line ? \"<br>\" : \"\"} <a href=\"https://doi.org/${\n      ent.doi\n    }\" style=\"text-decoration:inherit;\">DOI: ${ent.doi}</a>`;\n    } else {\n      return \"\";\n    }\n  }\n\n  function title_string(ent) {\n    return '<span class=\"title\">' + ent.title + \"</span> \";\n  }\n\n  function bibliography_cite(ent, fancy) {\n    if (ent) {\n      var cite = title_string(ent);\n      cite += link_string(ent) + \"<br>\";\n      if (ent.author) {\n        cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n        if (ent.year || ent.date) {\n          cite += \", \";\n        }\n      }\n      if (ent.year || ent.date) {\n        cite += (ent.year || ent.date) + \". \";\n      } else {\n        cite += \". \";\n      }\n      cite += venue_string(ent);\n      cite += doi_string(ent);\n      return cite;\n      /*var cite =  author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n      if (ent.year || ent.date){\n        cite += \", \" + (ent.year || ent.date) + \". \"\n      } else {\n        cite += \". \"\n      }\n      cite += \"<b>\" + ent.title + \"</b>. \";\n      cite += venue_string(ent);\n      cite += doi_string(ent);\n      cite += link_string(ent);\n      return cite*/\n    } else {\n      return \"?\";\n    }\n  }\n\n  function hover_cite(ent) {\n    if (ent) {\n      var cite = \"\";\n      cite += \"<strong>\" + ent.title + \"</strong>\";\n      cite += link_string(ent);\n      cite += \"<br>\";\n\n      var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n      var v_str =\n        venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n      if ((a_str + v_str).length < Math.min(40, ent.title.length)) {\n        cite += a_str + \" \" + v_str;\n      } else {\n        cite += a_str + \"<br>\" + v_str;\n      }\n      return cite;\n    } else {\n      return \"?\";\n    }\n  }\n\n  function domContentLoaded() {\n    return ['interactive', 'complete'].indexOf(document.readyState) !== -1;\n  }\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  function _moveLegacyAffiliationFormatIntoArray(frontMatter) {\n    // authors used to have propoerties \"affiliation\" and \"affiliationURL\".\n    // We now encourage using an array for affiliations containing objects with\n    // properties \"name\" and \"url\".\n    for (let author of frontMatter.authors) {\n      const hasOldStyle = Boolean(author.affiliation);\n      const hasNewStyle = Boolean(author.affiliations);\n      if (!hasOldStyle) continue;\n      if (hasNewStyle) {\n        console.warn(`Author ${author.author} has both old-style (\"affiliation\" & \"affiliationURL\") and new style (\"affiliations\") affiliation information!`);\n      } else {\n        let newAffiliation = {\n          \"name\": author.affiliation\n        };\n        if (author.affiliationURL) newAffiliation.url = author.affiliationURL;\n        author.affiliations = [newAffiliation];\n      }\n    }\n    return frontMatter\n  }\n\n  function parseFrontmatter(element) {\n    const scriptTag = element.firstElementChild;\n    if (scriptTag) {\n      const type = scriptTag.getAttribute('type');\n      if (type.split('/')[1] == 'json') {\n        const content = scriptTag.textContent;\n        const parsed = JSON.parse(content);\n        return _moveLegacyAffiliationFormatIntoArray(parsed);\n      } else {\n        console.error('Distill only supports JSON frontmatter tags anymore; no more YAML.');\n      }\n    } else {\n      console.error('You added a frontmatter tag but did not provide a script tag with front matter data in it. Please take a look at our templates.');\n    }\n    return {};\n  }\n\n  class FrontMatter$1 extends HTMLElement {\n\n    static get is() { return 'd-front-matter'; }\n\n    constructor() {\n      super();\n\n      const options = {childList: true, characterData: true, subtree: true};\n      const observer = new MutationObserver( (entries) => {\n        for (const entry of entries) {\n          if (entry.target.nodeName === 'SCRIPT' || entry.type === 'characterData') {\n            const data = parseFrontmatter(this);\n            this.notify(data);\n          }\n        }\n      });\n      observer.observe(this, options);\n    }\n\n    notify(data) {\n      const options = { detail: data, bubbles: true };\n      const event = new CustomEvent('onFrontMatterChanged', options);\n      document.dispatchEvent(event);\n    }\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  // no appendix -> add appendix\n  // title in front, no h1 -> add it\n  // no title in front, h1 -> read and put into frontMatter\n  // footnote -> footnote list\n  // break up bib\n  // if citation, no bib-list -> add citation-list\n\n  // if authors, no byline -> add byline\n\n  function optionalComponents(dom, data) {\n    const body = dom.body;\n    const article = body.querySelector('d-article');\n\n    // If we don't have an article tag, something weird is going on—giving up.\n    if (!article) {\n      console.warn('No d-article tag found; skipping adding optional components!');\n      return;\n    }\n\n    let byline = dom.querySelector('d-byline');\n    if (!byline) {\n      if (data.authors) {\n        byline = dom.createElement('d-byline');\n        body.insertBefore(byline, article);\n      } else {\n        console.warn('No authors found in front matter; please add them before submission!');\n      }\n    }\n\n    let title = dom.querySelector('d-title');\n    if (!title) {\n      title = dom.createElement('d-title');\n      body.insertBefore(title, byline);\n    }\n\n    let h1 = title.querySelector('h1');\n    if (!h1) {\n      h1 = dom.createElement('h1');\n      h1.textContent = data.title;\n      title.insertBefore(h1, title.firstChild);\n    }\n\n    const hasPassword = typeof data.password !== 'undefined';\n    let interstitial = body.querySelector('d-interstitial');\n    if (hasPassword && !interstitial) {\n      const inBrowser = typeof window !== 'undefined';\n      const onLocalhost = inBrowser && window.location.hostname.includes('localhost');\n      if (!inBrowser || !onLocalhost) {\n        interstitial = dom.createElement('d-interstitial');\n        interstitial.password = data.password;\n        body.insertBefore(interstitial, body.firstChild);\n      }\n    } else if (!hasPassword && interstitial) {\n      interstitial.parentElement.removeChild(this);\n    }\n\n    let appendix = dom.querySelector('d-appendix');\n    if (!appendix) {\n      appendix = dom.createElement('d-appendix');\n      dom.body.appendChild(appendix);\n    }\n\n    let footnoteList = dom.querySelector('d-footnote-list');\n    if (!footnoteList) {\n      footnoteList = dom.createElement('d-footnote-list');\n      appendix.appendChild(footnoteList);\n    }\n\n    let citationList = dom.querySelector('d-citation-list');\n    if (!citationList) {\n      citationList = dom.createElement('d-citation-list');\n      appendix.appendChild(citationList);\n    }\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  const frontMatter = new FrontMatter();\n\n  const Controller = {\n    frontMatter: frontMatter,\n    waitingOn: {\n      bibliography: [],\n      citations: []\n    },\n    listeners: {\n      onCiteKeyCreated(event) {\n        const [citeTag, keys] = event.detail;\n\n        // ensure we have citations\n        if (!frontMatter.citationsCollected) {\n          // console.debug('onCiteKeyCreated, but unresolved dependency (\"citations\"). Enqueing.');\n          Controller.waitingOn.citations.push(() =>\n            Controller.listeners.onCiteKeyCreated(event)\n          );\n          return;\n        }\n\n        // ensure we have a loaded bibliography\n        if (!frontMatter.bibliographyParsed) {\n          // console.debug('onCiteKeyCreated, but unresolved dependency (\"bibliography\"). Enqueing.');\n          Controller.waitingOn.bibliography.push(() =>\n            Controller.listeners.onCiteKeyCreated(event)\n          );\n          return;\n        }\n\n        const numbers = keys.map(key => frontMatter.citations.indexOf(key));\n        citeTag.numbers = numbers;\n        const entries = keys.map(key => frontMatter.bibliography.get(key));\n        citeTag.entries = entries;\n      },\n\n      onCiteKeyChanged() {\n        // const [citeTag, keys] = event.detail;\n\n        // update citations\n        frontMatter.citations = collect_citations();\n        frontMatter.citationsCollected = true;\n        for (const waitingCallback of Controller.waitingOn.citations.slice()) {\n          waitingCallback();\n        }\n\n        // update bibliography\n        const citationListTag = document.querySelector(\"d-citation-list\");\n        const bibliographyEntries = new Map(\n          frontMatter.citations.map(citationKey => {\n            return [citationKey, frontMatter.bibliography.get(citationKey)];\n          })\n        );\n        citationListTag.citations = bibliographyEntries;\n\n        const citeTags = document.querySelectorAll(\"d-cite\");\n        for (const citeTag of citeTags) {\n          console.log(citeTag);\n          const keys = citeTag.keys;\n          const numbers = keys.map(key => frontMatter.citations.indexOf(key));\n          citeTag.numbers = numbers;\n          const entries = keys.map(key => frontMatter.bibliography.get(key));\n          citeTag.entries = entries;\n        }\n      },\n\n      onCiteKeyRemoved(event) {\n        Controller.listeners.onCiteKeyChanged(event);\n      },\n\n      onBibliographyChanged(event) {\n        const citationListTag = document.querySelector(\"d-citation-list\");\n\n        const bibliography = event.detail;\n\n        frontMatter.bibliography = bibliography;\n        frontMatter.bibliographyParsed = true;\n        for (const waitingCallback of Controller.waitingOn.bibliography.slice()) {\n          waitingCallback();\n        }\n\n        // ensure we have citations\n        if (!frontMatter.citationsCollected) {\n          Controller.waitingOn.citations.push(function() {\n            Controller.listeners.onBibliographyChanged({\n              target: event.target,\n              detail: event.detail\n            });\n          });\n          return;\n        }\n\n        if (citationListTag.hasAttribute(\"distill-prerendered\")) {\n          console.debug(\"Citation list was prerendered; not updating it.\");\n        } else {\n          const entries = new Map(\n            frontMatter.citations.map(citationKey => {\n              return [citationKey, frontMatter.bibliography.get(citationKey)];\n            })\n          );\n          citationListTag.citations = entries;\n        }\n      },\n\n      onFootnoteChanged() {\n        // const footnote = event.detail;\n        //TODO: optimize to only update current footnote\n        const footnotesList = document.querySelector(\"d-footnote-list\");\n        if (footnotesList) {\n          const footnotes = document.querySelectorAll(\"d-footnote\");\n          footnotesList.footnotes = footnotes;\n        }\n      },\n\n      onFrontMatterChanged(event) {\n        const data = event.detail;\n        mergeFromYMLFrontmatter(frontMatter, data);\n\n        const interstitial = document.querySelector(\"d-interstitial\");\n        if (interstitial) {\n          if (typeof frontMatter.password !== \"undefined\") {\n            interstitial.password = frontMatter.password;\n          } else {\n            interstitial.parentElement.removeChild(interstitial);\n          }\n        }\n\n        const prerendered = document.body.hasAttribute(\"distill-prerendered\");\n        if (!prerendered && domContentLoaded()) {\n          optionalComponents(document, frontMatter);\n\n          const appendix = document.querySelector(\"distill-appendix\");\n          if (appendix) {\n            appendix.frontMatter = frontMatter;\n          }\n\n          const byline = document.querySelector(\"d-byline\");\n          if (byline) {\n            byline.frontMatter = frontMatter;\n          }\n\n          if (data.katex) {\n            DMath.katexOptions = data.katex;\n          }\n        }\n      },\n\n      DOMContentLoaded() {\n        if (Controller.loaded) {\n          console.warn(\n            \"Controller received DOMContentLoaded but was already loaded!\"\n          );\n          return;\n        } else if (!domContentLoaded()) {\n          console.warn(\n            \"Controller received DOMContentLoaded at document.readyState: \" +\n              document.readyState +\n              \"!\"\n          );\n          return;\n        } else {\n          Controller.loaded = true;\n          console.debug(\"Runlevel 4: Controller running DOMContentLoaded\");\n        }\n\n        const frontMatterTag = document.querySelector(\"d-front-matter\");\n        if (frontMatterTag) {\n          const data = parseFrontmatter(frontMatterTag);\n          Controller.listeners.onFrontMatterChanged({ detail: data });\n        }\n\n        // Resolving \"citations\" dependency due to initial DOM load\n        frontMatter.citations = collect_citations();\n        frontMatter.citationsCollected = true;\n        for (const waitingCallback of Controller.waitingOn.citations.slice()) {\n          waitingCallback();\n        }\n\n        if (frontMatter.bibliographyParsed) {\n          for (const waitingCallback of Controller.waitingOn.bibliography.slice()) {\n            waitingCallback();\n          }\n        }\n\n        const footnotesList = document.querySelector(\"d-footnote-list\");\n        if (footnotesList) {\n          const footnotes = document.querySelectorAll(\"d-footnote\");\n          footnotesList.footnotes = footnotes;\n        }\n      }\n    } // listeners\n  }; // Controller\n\n  var base = \"/*\\n * Copyright 2018 The Distill Template Authors\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *      http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\nhtml {\\n  font-size: 14px;\\n\\tline-height: 1.6em;\\n  /* font-family: \\\"Libre Franklin\\\", \\\"Helvetica Neue\\\", sans-serif; */\\n  font-family: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\"Fira Sans\\\", \\\"Droid Sans\\\", \\\"Helvetica Neue\\\", Arial, sans-serif;\\n  /*, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\";*/\\n  text-size-adjust: 100%;\\n  -ms-text-size-adjust: 100%;\\n  -webkit-text-size-adjust: 100%;\\n}\\n\\n@media(min-width: 768px) {\\n  html {\\n    font-size: 16px;\\n  }\\n}\\n\\nbody {\\n  margin: 0;\\n}\\n\\na {\\n  color: #004276;\\n}\\n\\nfigure {\\n  margin: 0;\\n}\\n\\ntable {\\n\\tborder-collapse: collapse;\\n\\tborder-spacing: 0;\\n}\\n\\ntable th {\\n\\ttext-align: left;\\n}\\n\\ntable thead {\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05);\\n}\\n\\ntable thead th {\\n  padding-bottom: 0.5em;\\n}\\n\\ntable tbody :first-child td {\\n  padding-top: 0.5em;\\n}\\n\\npre {\\n  overflow: auto;\\n  max-width: 100%;\\n}\\n\\np {\\n  margin-top: 0;\\n  margin-bottom: 1em;\\n}\\n\\nsup, sub {\\n  vertical-align: baseline;\\n  position: relative;\\n  top: -0.4em;\\n  line-height: 1em;\\n}\\n\\nsub {\\n  top: 0.4em;\\n}\\n\\n.kicker,\\n.marker {\\n  font-size: 15px;\\n  font-weight: 600;\\n  color: rgba(0, 0, 0, 0.5);\\n}\\n\\n\\n/* Headline */\\n\\n@media(min-width: 1024px) {\\n  d-title h1 span {\\n    display: block;\\n  }\\n}\\n\\n/* Figure */\\n\\nfigure {\\n  position: relative;\\n  margin-bottom: 2.5em;\\n  margin-top: 1.5em;\\n}\\n\\nfigcaption+figure {\\n\\n}\\n\\nfigure img {\\n  width: 100%;\\n}\\n\\nfigure svg text,\\nfigure svg tspan {\\n}\\n\\nfigcaption,\\n.figcaption {\\n  color: rgba(0, 0, 0, 0.6);\\n  font-size: 12px;\\n  line-height: 1.5em;\\n}\\n\\n@media(min-width: 1024px) {\\nfigcaption,\\n.figcaption {\\n    font-size: 13px;\\n  }\\n}\\n\\nfigure.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\\nfigcaption a {\\n  color: rgba(0, 0, 0, 0.6);\\n}\\n\\nfigcaption b,\\nfigcaption strong, {\\n  font-weight: 600;\\n  color: rgba(0, 0, 0, 1.0);\\n}\\n\";\n\n  var layout = \"/*\\n * Copyright 2018 The Distill Template Authors\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *      http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\n@supports not (display: grid) {\\n  .base-grid,\\n  distill-header,\\n  d-title,\\n  d-abstract,\\n  d-article,\\n  d-appendix,\\n  distill-appendix,\\n  d-byline,\\n  d-footnote-list,\\n  d-citation-list,\\n  distill-footer {\\n    display: block;\\n    padding: 8px;\\n  }\\n}\\n\\n.base-grid,\\ndistill-header,\\nd-title,\\nd-abstract,\\nd-article,\\nd-appendix,\\ndistill-appendix,\\nd-byline,\\nd-footnote-list,\\nd-citation-list,\\ndistill-footer {\\n  display: grid;\\n  justify-items: stretch;\\n  grid-template-columns: [screen-start] 8px [page-start kicker-start text-start gutter-start middle-start] 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr [text-end page-end gutter-end kicker-end middle-end] 8px [screen-end];\\n  grid-column-gap: 8px;\\n}\\n\\n.grid {\\n  display: grid;\\n  grid-column-gap: 8px;\\n}\\n\\n@media(min-width: 768px) {\\n  .base-grid,\\n  distill-header,\\n  d-title,\\n  d-abstract,\\n  d-article,\\n  d-appendix,\\n  distill-appendix,\\n  d-byline,\\n  d-footnote-list,\\n  d-citation-list,\\n  distill-footer {\\n    grid-template-columns: [screen-start] 1fr [page-start kicker-start middle-start text-start] 45px 45px 45px 45px 45px 45px 45px 45px [ kicker-end text-end gutter-start] 45px [middle-end] 45px [page-end gutter-end] 1fr [screen-end];\\n    grid-column-gap: 16px;\\n  }\\n\\n  .grid {\\n    grid-column-gap: 16px;\\n  }\\n}\\n\\n@media(min-width: 1000px) {\\n  .base-grid,\\n  distill-header,\\n  d-title,\\n  d-abstract,\\n  d-article,\\n  d-appendix,\\n  distill-appendix,\\n  d-byline,\\n  d-footnote-list,\\n  d-citation-list,\\n  distill-footer {\\n    grid-template-columns: [screen-start] 1fr [page-start kicker-start] 50px [middle-start] 50px [text-start kicker-end] 50px 50px 50px 50px 50px 50px 50px 50px [text-end gutter-start] 50px [middle-end] 50px [page-end gutter-end] 1fr [screen-end];\\n    grid-column-gap: 16px;\\n  }\\n\\n  .grid {\\n    grid-column-gap: 16px;\\n  }\\n}\\n\\n@media(min-width: 1180px) {\\n  .base-grid,\\n  distill-header,\\n  d-title,\\n  d-abstract,\\n  d-article,\\n  d-appendix,\\n  distill-appendix,\\n  d-byline,\\n  d-footnote-list,\\n  d-citation-list,\\n  distill-footer {\\n    grid-template-columns: [screen-start] 1fr [page-start kicker-start] 60px [middle-start] 60px [text-start kicker-end] 60px 60px 60px 60px 60px 60px 60px 60px [text-end gutter-start] 60px [middle-end] 60px [page-end gutter-end] 1fr [screen-end];\\n    grid-column-gap: 32px;\\n  }\\n\\n  .grid {\\n    grid-column-gap: 32px;\\n  }\\n}\\n\\n\\n\\n\\n.base-grid {\\n  grid-column: screen;\\n}\\n\\n/* .l-body,\\nd-article > *  {\\n  grid-column: text;\\n}\\n\\n.l-page,\\nd-title > *,\\nd-figure {\\n  grid-column: page;\\n} */\\n\\n.l-gutter {\\n  grid-column: gutter;\\n}\\n\\n.l-text,\\n.l-body {\\n  grid-column: text;\\n}\\n\\n.l-page {\\n  grid-column: page;\\n}\\n\\n.l-body-outset {\\n  grid-column: middle;\\n}\\n\\n.l-page-outset {\\n  grid-column: page;\\n}\\n\\n.l-screen {\\n  grid-column: screen;\\n}\\n\\n.l-screen-inset {\\n  grid-column: screen;\\n  padding-left: 16px;\\n  padding-left: 16px;\\n}\\n\\n\\n/* Aside */\\n\\nd-article aside {\\n  grid-column: gutter;\\n  font-size: 12px;\\n  line-height: 1.6em;\\n  color: rgba(0, 0, 0, 0.6)\\n}\\n\\n@media(min-width: 768px) {\\n  aside {\\n    grid-column: gutter;\\n  }\\n\\n  .side {\\n    grid-column: gutter;\\n  }\\n}\\n\";\n\n  var print = \"/*\\n * Copyright 2018 The Distill Template Authors\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *      http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\n@media print {\\n\\n  @page {\\n    size: 8in 11in;\\n    @bottom-right {\\n      content: counter(page) \\\" of \\\" counter(pages);\\n    }\\n  }\\n\\n  html {\\n    /* no general margins -- CSS Grid takes care of those */\\n  }\\n\\n  p, code {\\n    page-break-inside: avoid;\\n  }\\n\\n  h2, h3 {\\n    page-break-after: avoid;\\n  }\\n\\n  d-header {\\n    visibility: hidden;\\n  }\\n\\n  d-footer {\\n    display: none!important;\\n  }\\n\\n}\\n\";\n\n  var byline = \"/*\\n * Copyright 2018 The Distill Template Authors\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *      http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\nd-byline {\\n  contain: style;\\n  overflow: hidden;\\n  border-top: 1px solid rgba(0, 0, 0, 0.1);\\n  font-size: 0.8rem;\\n  line-height: 1.8em;\\n  padding: 1.5rem 0;\\n  min-height: 1.8em;\\n}\\n\\n\\nd-byline .byline {\\n  grid-template-columns: 1fr 1fr;\\n  grid-column: text;\\n}\\n\\n@media(min-width: 768px) {\\n  d-byline .byline {\\n    grid-template-columns: 1fr 1fr 1fr 1fr;\\n  }\\n}\\n\\nd-byline .authors-affiliations {\\n  grid-column-end: span 2;\\n  grid-template-columns: 1fr 1fr;\\n  margin-bottom: 1em;\\n}\\n\\n@media(min-width: 768px) {\\n  d-byline .authors-affiliations {\\n    margin-bottom: 0;\\n  }\\n}\\n\\nd-byline h3 {\\n  font-size: 0.6rem;\\n  font-weight: 400;\\n  color: rgba(0, 0, 0, 0.5);\\n  margin: 0;\\n  text-transform: uppercase;\\n}\\n\\nd-byline p {\\n  margin: 0;\\n}\\n\\nd-byline a,\\nd-article d-byline a {\\n  color: rgba(0, 0, 0, 0.8);\\n  text-decoration: none;\\n  border-bottom: none;\\n}\\n\\nd-article d-byline a:hover {\\n  text-decoration: underline;\\n  border-bottom: none;\\n}\\n\\nd-byline p.author {\\n  font-weight: 500;\\n}\\n\\nd-byline .affiliations {\\n\\n}\\n\";\n\n  var article = \"/*\\n * Copyright 2018 The Distill Template Authors\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *      http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\nd-article {\\n  contain: layout style;\\n  overflow-x: hidden;\\n  border-top: 1px solid rgba(0, 0, 0, 0.1);\\n  padding-top: 2rem;\\n  color: rgba(0, 0, 0, 0.8);\\n}\\n\\nd-article > * {\\n  grid-column: text;\\n}\\n\\n@media(min-width: 768px) {\\n  d-article {\\n    font-size: 16px;\\n  }\\n}\\n\\n@media(min-width: 1024px) {\\n  d-article {\\n    font-size: 1.06rem;\\n    line-height: 1.7em;\\n  }\\n}\\n\\n\\n/* H2 */\\n\\n\\nd-article .marker {\\n  text-decoration: none;\\n  border: none;\\n  counter-reset: section;\\n  grid-column: kicker;\\n  line-height: 1.7em;\\n}\\n\\nd-article .marker:hover {\\n  border: none;\\n}\\n\\nd-article .marker span {\\n  padding: 0 3px 4px;\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\\n  position: relative;\\n  top: 4px;\\n}\\n\\nd-article .marker:hover span {\\n  color: rgba(0, 0, 0, 0.7);\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.7);\\n}\\n\\nd-article h2 {\\n  font-weight: 600;\\n  font-size: 24px;\\n  line-height: 1.25em;\\n  margin: 2rem 0 1.5rem 0;\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.1);\\n  padding-bottom: 1rem;\\n}\\n\\n@media(min-width: 1024px) {\\n  d-article h2 {\\n    font-size: 36px;\\n  }\\n}\\n\\n/* H3 */\\n\\nd-article h3 {\\n  font-weight: 700;\\n  font-size: 18px;\\n  line-height: 1.4em;\\n  margin-bottom: 1em;\\n  margin-top: 2em;\\n}\\n\\n@media(min-width: 1024px) {\\n  d-article h3 {\\n    font-size: 20px;\\n  }\\n}\\n\\n/* H4 */\\n\\nd-article h4 {\\n  font-weight: 600;\\n  text-transform: uppercase;\\n  font-size: 14px;\\n  line-height: 1.4em;\\n}\\n\\nd-article a {\\n  color: inherit;\\n}\\n\\nd-article p,\\nd-article ul,\\nd-article ol,\\nd-article blockquote {\\n  margin-top: 0;\\n  margin-bottom: 1em;\\n  margin-left: 0;\\n  margin-right: 0;\\n}\\n\\nd-article blockquote {\\n  border-left: 2px solid rgba(0, 0, 0, 0.2);\\n  padding-left: 2em;\\n  font-style: italic;\\n  color: rgba(0, 0, 0, 0.6);\\n}\\n\\nd-article a {\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.4);\\n  text-decoration: none;\\n}\\n\\nd-article a:hover {\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.8);\\n}\\n\\nd-article .link {\\n  text-decoration: underline;\\n  cursor: pointer;\\n}\\n\\nd-article ul,\\nd-article ol {\\n  padding-left: 24px;\\n}\\n\\nd-article li {\\n  margin-bottom: 0.2em;\\n  margin-left: 0;\\n  padding-left: 0;\\n}\\n\\nd-article li:last-child {\\n  margin-bottom: 0;\\n}\\n\\nd-article pre {\\n  font-size: 14px;\\n  margin-bottom: 20px;\\n}\\n\\nd-article hr {\\n  grid-column: screen;\\n  width: 100%;\\n  border: none;\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.1);\\n  margin-top: 60px;\\n  margin-bottom: 60px;\\n}\\n\\nd-article section {\\n  margin-top: 60px;\\n  margin-bottom: 60px;\\n}\\n\\nd-article span.equation-mimic {\\n  font-family: georgia;\\n  font-size: 115%;\\n  font-style: italic;\\n}\\n\\nd-article > d-code,\\nd-article section > d-code  {\\n  display: block;\\n}\\n\\nd-article > d-math[block],\\nd-article section > d-math[block]  {\\n  display: block;\\n}\\n\\n@media (max-width: 768px) {\\n  d-article > d-code,\\n  d-article section > d-code,\\n  d-article > d-math[block],\\n  d-article section > d-math[block] {\\n      overflow-x: scroll;\\n      -ms-overflow-style: none;  // IE 10+\\n      overflow: -moz-scrollbars-none;  // Firefox\\n  }\\n\\n  d-article > d-code::-webkit-scrollbar,\\n  d-article section > d-code::-webkit-scrollbar,\\n  d-article > d-math[block]::-webkit-scrollbar,\\n  d-article section > d-math[block]::-webkit-scrollbar {\\n    display: none;  // Safari and Chrome\\n  }\\n}\\n\\nd-article .citation {\\n  color: #668;\\n  cursor: pointer;\\n}\\n\\nd-include {\\n  width: auto;\\n  display: block;\\n}\\n\\nd-figure {\\n  contain: layout style;\\n}\\n\\n/* KaTeX */\\n\\n.katex, .katex-prerendered {\\n  contain: style;\\n  display: inline-block;\\n}\\n\\n/* Tables */\\n\\nd-article table {\\n  border-collapse: collapse;\\n  margin-bottom: 1.5rem;\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\\n}\\n\\nd-article table th {\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\\n}\\n\\nd-article table td {\\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05);\\n}\\n\\nd-article table tr:last-of-type td {\\n  border-bottom: none;\\n}\\n\\nd-article table th,\\nd-article table td {\\n  font-size: 15px;\\n  padding: 2px 8px;\\n}\\n\\nd-article table tbody :first-child td {\\n  padding-top: 2px;\\n}\\n\";\n\n  var title = \"/*\\n * Copyright 2018 The Distill Template Authors\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *      http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\nd-title {\\n  padding: 2rem 0 1.5rem;\\n  contain: layout style;\\n  overflow-x: hidden;\\n}\\n\\n@media(min-width: 768px) {\\n  d-title {\\n    padding: 4rem 0 1.5rem;\\n  }\\n}\\n\\nd-title h1 {\\n  grid-column: text;\\n  font-size: 40px;\\n  font-weight: 700;\\n  line-height: 1.1em;\\n  margin: 0 0 0.5rem;\\n}\\n\\n@media(min-width: 768px) {\\n  d-title h1 {\\n    font-size: 50px;\\n  }\\n}\\n\\nd-title p {\\n  font-weight: 300;\\n  font-size: 1.2rem;\\n  line-height: 1.55em;\\n  grid-column: text;\\n}\\n\\nd-title .status {\\n  margin-top: 0px;\\n  font-size: 12px;\\n  color: #009688;\\n  opacity: 0.8;\\n  grid-column: kicker;\\n}\\n\\nd-title .status span {\\n  line-height: 1;\\n  display: inline-block;\\n  padding: 6px 0;\\n  border-bottom: 1px solid #80cbc4;\\n  font-size: 11px;\\n  text-transform: uppercase;\\n}\\n\";\n\n  // Copyright 2018 The Distill Template Authors\n\n  const styles = base + layout + title + byline + article + math + print;\n\n  function makeStyleTag(dom) {\n\n    const styleTagId = 'distill-prerendered-styles';\n    const prerenderedTag = dom.getElementById(styleTagId);\n    if (!prerenderedTag) {\n      const styleTag = dom.createElement('style');\n      styleTag.id = styleTagId;\n      styleTag.type = 'text/css';\n      const cssTextTag = dom.createTextNode(styles);\n      styleTag.appendChild(cssTextTag);\n      const firstScriptTag = dom.head.querySelector('script');\n      dom.head.insertBefore(styleTag, firstScriptTag);\n    }\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  function addPolyfill(polyfill, polyfillLoadedCallback) {\n    console.debug('Runlevel 0: Polyfill required: ' + polyfill.name);\n    const script = document.createElement('script');\n    script.src = polyfill.url;\n    script.async = false;\n    if (polyfillLoadedCallback) {\n      script.onload = function() { polyfillLoadedCallback(polyfill); };\n    }\n    script.onerror = function() {\n      new Error('Runlevel 0: Polyfills failed to load script ' + polyfill.name);\n    };\n    document.head.appendChild(script);\n  }\n\n  const polyfills = [\n    {\n      name: 'WebComponents',\n      support: function() {\n        return 'customElements' in window &&\n               'attachShadow' in Element.prototype &&\n               'getRootNode' in Element.prototype &&\n               'content' in document.createElement('template') &&\n               'Promise' in window &&\n               'from' in Array;\n      },\n      url: 'https://distill.pub/third-party/polyfills/webcomponents-lite.js'\n    }, {\n      name: 'IntersectionObserver',\n      support: function() {\n        return 'IntersectionObserver' in window &&\n               'IntersectionObserverEntry' in window;\n      },\n      url: 'https://distill.pub/third-party/polyfills/intersection-observer.js'\n    },\n  ];\n\n  class Polyfills {\n\n    static browserSupportsAllFeatures() {\n      return polyfills.every((poly) => poly.support());\n    }\n\n    static load(callback) {\n      // Define an intermediate callback that checks if all is loaded.\n      const polyfillLoaded = function(polyfill) {\n        polyfill.loaded = true;\n        console.debug('Runlevel 0: Polyfill has finished loading: ' + polyfill.name);\n        // console.debug(window[polyfill.name]);\n        if (Polyfills.neededPolyfills.every((poly) => poly.loaded)) {\n          console.debug('Runlevel 0: All required polyfills have finished loading.');\n          console.debug('Runlevel 0->1.');\n          window.distillRunlevel = 1;\n          callback();\n        }\n      };\n      // Add polyfill script tags\n      for (const polyfill of Polyfills.neededPolyfills) {\n        addPolyfill(polyfill, polyfillLoaded);\n      }\n    }\n\n    static get neededPolyfills() {\n      if (!Polyfills._neededPolyfills) {\n        Polyfills._neededPolyfills = polyfills.filter((poly) => !poly.support());\n      }\n      return Polyfills._neededPolyfills;\n    }\n  }\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  // const marginSmall = 16;\n  // const marginLarge = 3 * marginSmall;\n  // const margin = marginSmall + marginLarge;\n  // const gutter = marginSmall;\n  // const outsetAmount = margin / 2;\n  // const numCols = 4;\n  // const numGutters = numCols - 1;\n  // const columnWidth = (768 - 2 * marginLarge - numGutters * gutter) / numCols;\n  //\n  // const screenwidth = 768;\n  // const pageWidth = screenwidth - 2 * marginLarge;\n  // const bodyWidth = pageWidth - columnWidth - gutter;\n\n  function body(selector) {\n    return `${selector} {\n      grid-column: left / text;\n    }\n  `;\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  const T$1 = Template('d-abstract', `\n<style>\n  :host {\n    font-size: 1.25rem;\n    line-height: 1.6em;\n    color: rgba(0, 0, 0, 0.7);\n    -webkit-font-smoothing: antialiased;\n  }\n\n  ::slotted(p) {\n    margin-top: 0;\n    margin-bottom: 1em;\n    grid-column: text-start / middle-end;\n  }\n  ${body('d-abstract')}\n</style>\n\n<slot></slot>\n`);\n\n  class Abstract extends T$1(HTMLElement) {\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  const T$2 = Template('d-appendix', `\n<style>\n\nd-appendix {\n  contain: layout style;\n  font-size: 0.8em;\n  line-height: 1.7em;\n  margin-top: 60px;\n  margin-bottom: 0;\n  border-top: 1px solid rgba(0, 0, 0, 0.1);\n  color: rgba(0,0,0,0.5);\n  padding-top: 60px;\n  padding-bottom: 48px;\n}\n\nd-appendix h3 {\n  grid-column: page-start / text-start;\n  font-size: 15px;\n  font-weight: 500;\n  margin-top: 1em;\n  margin-bottom: 0;\n  color: rgba(0,0,0,0.65);\n}\n\nd-appendix h3 + * {\n  margin-top: 1em;\n}\n\nd-appendix ol {\n  padding: 0 0 0 15px;\n}\n\n@media (min-width: 768px) {\n  d-appendix ol {\n    padding: 0 0 0 30px;\n    margin-left: -30px;\n  }\n}\n\nd-appendix li {\n  margin-bottom: 1em;\n}\n\nd-appendix a {\n  color: rgba(0, 0, 0, 0.6);\n}\n\nd-appendix > * {\n  grid-column: text;\n}\n\nd-appendix > d-footnote-list,\nd-appendix > d-citation-list,\nd-appendix > distill-appendix {\n  grid-column: screen;\n}\n\n</style>\n\n`, false);\n\n  class Appendix extends T$2(HTMLElement) {\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  // import { Template } from '../mixins/template';\n  // import { Controller } from '../controller';\n\n  const isOnlyWhitespace = /^\\s*$/;\n\n  class Article extends HTMLElement {\n    static get is() { return 'd-article'; }\n\n    constructor() {\n      super();\n\n      new MutationObserver( (mutations) => {\n        for (const mutation of mutations) {\n          for (const addedNode of mutation.addedNodes) {\n            switch (addedNode.nodeName) {\n            case '#text': { // usually text nodes are only linebreaks.\n              const text = addedNode.nodeValue;\n              if (!isOnlyWhitespace.test(text)) {\n                console.warn('Use of unwrapped text in distill articles is discouraged as it breaks layout! Please wrap any text in a <span> or <p> tag. We found the following text: ' + text);\n                const wrapper = document.createElement('span');\n                wrapper.innerHTML = addedNode.nodeValue;\n                addedNode.parentNode.insertBefore(wrapper, addedNode);\n                addedNode.parentNode.removeChild(addedNode);\n              }\n            } break;\n            }\n          }\n        }\n      }).observe(this, {childList: true});\n    }\n\n  }\n\n  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n  function createCommonjsModule(fn, module) {\n  \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n  }\n\n  var bibtexParse = createCommonjsModule(function (module, exports) {\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              }            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\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              if (this.input[this.pos] == '@') {\n                  return true;\n              }            return false;\n          };\n\n          this.skipWhitespace = function(canCommentOut) {\n              while (this.isWhitespace(this.input[this.pos])) {\n                  this.pos++;\n              }            if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n                  while (this.input[this.pos] != \"\\n\") {\n                      this.pos++;\n                  }                this.skipWhitespace(canCommentOut);\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                          }                    } else if (this.input[this.pos] == '{') {\n                          bracecount++;\n                      } else if (this.pos >= this.input.length - 1) {\n                          throw \"Unterminated value\";\n                      }                }                if (this.input[this.pos] == '\\\\' && escaped == false)\n                      escaped = true;\n                  else\n                      escaped = false;\n                  this.pos++;\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                  }                this.pos++;\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                  if (this.input[this.pos] == '\\\\' && escaped == false)\n                      escaped = true;\n                  else\n                      escaped = false;\n                  this.pos++;\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          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              }            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                  }                                // а-яА-Я 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          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          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                  kv = this.key_equals_value();\n                  this.currentEntry['entryTags'][kv[0]] = kv[1];\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      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  })( exports);\n\n  /* end bibtexParse */\n  });\n\n  // Copyright 2018 The Distill Template Authors\n\n  function normalizeTag(string) {\n    return string\n      .replace(/[\\t\\n ]+/g, ' ')\n      .replace(/{\\\\[\"^`.'acu~Hvs]( )?([a-zA-Z])}/g, (full, x, char) => char)\n      .replace(/{\\\\([a-zA-Z])}/g, (full, char) => char);\n  }\n\n  function parseBibtex(bibtex) {\n    const bibliography = new Map();\n    const parsedEntries = bibtexParse.toJSON(bibtex);\n    for (const entry of parsedEntries) {\n      // normalize tags; note entryTags is an object, not Map\n      for (const [key, value] of Object.entries(entry.entryTags)) {\n        entry.entryTags[key.toLowerCase()] = normalizeTag(value);\n      }\n      entry.entryTags.type = entry.entryType;\n      // add to bibliography\n      bibliography.set(entry.citationKey, entry.entryTags);\n    }\n    return bibliography;\n  }\n\n  function serializeFrontmatterToBibtex(frontMatter) {\n    return `@article{${frontMatter.slug},\n  author = {${frontMatter.bibtexAuthors}},\n  title = {${frontMatter.title}},\n  journal = {${frontMatter.journal.title}},\n  year = {${frontMatter.publishedYear}},\n  note = {${frontMatter.url}},\n  doi = {${frontMatter.doi}}\n}`;\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  class Bibliography extends HTMLElement {\n\n    static get is() { return 'd-bibliography'; }\n\n    constructor() {\n      super();\n\n      // set up mutation observer\n      const options = {childList: true, characterData: true, subtree: true};\n      const observer = new MutationObserver( (entries) => {\n        for (const entry of entries) {\n          if (entry.target.nodeName === 'SCRIPT' || entry.type === 'characterData') {\n            this.parseIfPossible();\n          }\n        }\n      });\n      observer.observe(this, options);\n    }\n\n    connectedCallback() {\n      requestAnimationFrame(() => {\n        this.parseIfPossible();\n      });\n    }\n\n    parseIfPossible() {\n      const scriptTag = this.querySelector('script');\n      if (!scriptTag) return;\n      if (scriptTag.type == 'text/bibtex') {\n        const newBibtex = scriptTag.textContent;\n        if (this.bibtex !== newBibtex) {\n          this.bibtex = newBibtex;\n          const bibliography = parseBibtex(this.bibtex);\n          this.notify(bibliography);\n        }\n      } else if (scriptTag.type == 'text/json') {\n        const bibliography = new Map(JSON.parse(scriptTag.textContent));\n        this.notify(bibliography);\n      } else {\n        console.warn('Unsupported bibliography script tag type: ' + scriptTag.type);\n      }\n    }\n\n    notify(bibliography) {\n      const options = { detail: bibliography, bubbles: true };\n      const event = new CustomEvent('onBibliographyChanged', options);\n      this.dispatchEvent(event);\n    }\n\n    /* observe 'src' attribute */\n\n    static get observedAttributes() {\n      return ['src'];\n    }\n\n    receivedBibtex(event) {\n      const bibliography = parseBibtex(event.target.response);\n      this.notify(bibliography);\n    }\n\n    attributeChangedCallback(name, oldValue, newValue) {\n      var oReq = new XMLHttpRequest();\n      oReq.onload = (e) => this.receivedBibtex(e);\n      oReq.onerror = () => console.warn(`Could not load Bibtex! (tried ${newValue})`);\n      oReq.responseType = 'text';\n      oReq.open('GET', newValue, true);\n      oReq.send();\n    }\n\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  // import style from '../styles/d-byline.css';\n\n  function bylineTemplate(frontMatter) {\n    return `\n    <div class=\"byline grid\">\n      <div>\n          <h3>Authors</h3>\n          <div>\n              ${frontMatter.authors.map((author, i) => `\n              <span class=\"author\">\n        ${author.personalURL ? `\n          <a class=\"name\" href=\"${author.personalURL}\">${author.name}` + (i + 1 < frontMatter.authors.length ? `,` : ``) + `</a>` : `\n          <span class=\"name\">${author.name}` + (i + 1 < frontMatter.authors.length ? `,` : ``) + `</span>`}\n      </span>\n              `).join('')}\n          </div>\n      </div>\n      <div >\n          <h3>Affiliation</h3>\n          <div><a href=\"hf.co\">Your Affiliation</a>\n          </div>\n      </div>\n      <div >\n          <h3>Published</h3>\n          <div>Feb 19, 2025</div>\n      </div>\n    </div>\n    <div class=\"side pdf-download\">\n      <h3>Download</h3>\n      <a href=\"hf.co\">\n      <img style=\"width: 32px;\" src=\"../assets/images/256px-PDF.png\" alt=\"PDF\"></a>\n    </div>\n`;\n  }\n\n  class Byline extends HTMLElement {\n\n    static get is() { return 'd-byline'; }\n\n    set frontMatter(frontMatter) {\n      this.innerHTML = bylineTemplate(frontMatter);\n    }\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  const T$3 = Template(\n    \"d-cite\",\n    `\n<style>\n\n:host {\n  display: inline-block;\n}\n\n.citation {\n  color: hsla(206, 90%, 20%, 0.7);\n}\n\n.citation-number {\n  cursor: default;\n  white-space: nowrap;\n  font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n  font-size: 75%;\n  color: hsla(206, 90%, 20%, 0.7);\n  display: inline-block;\n  line-height: 1.1em;\n  text-align: center;\n  position: relative;\n  top: -2px;\n  margin: 0 2px;\n}\n\nfigcaption .citation-number {\n  font-size: 11px;\n  font-weight: normal;\n  top: -2px;\n  line-height: 1em;\n}\n\nul {\n  margin: 0;\n  padding: 0;\n  list-style-type: none;\n}\n\nul li {\n  padding: 15px 10px 15px 10px;\n  border-bottom: 1px solid rgba(0,0,0,0.1)\n}\n\nul li:last-of-type {\n  border-bottom: none;\n}\n\n</style>\n\n<d-hover-box id=\"hover-box\"></d-hover-box>\n\n<div id=\"citation-\" class=\"citation\">\n  <span class=\"citation-number\"></span>\n</div>\n`\n  );\n\n  class Cite extends T$3(HTMLElement) {\n    /* Lifecycle */\n    constructor() {\n      super();\n      this._numbers = [];\n      this._entries = [];\n    }\n\n    connectedCallback() {\n      this.outerSpan = this.root.querySelector(\"#citation-\");\n      this.innerSpan = this.root.querySelector(\".citation-number\");\n      this.hoverBox = this.root.querySelector(\"d-hover-box\");\n      window.customElements.whenDefined(\"d-hover-box\").then(() => {\n        this.hoverBox.listen(this);\n      });\n      // in case this component got connected after values were set\n      if (this.numbers) {\n        this.displayNumbers(this.numbers);\n      }\n      if (this.entries) {\n        this.displayEntries(this.entries);\n      }\n    }\n\n    //TODO This causes an infinite loop on firefox with polyfills.\n    // This is only needed for interactive editing so no priority.\n    // disconnectedCallback() {\n    // const options = { detail: [this, this.keys], bubbles: true };\n    // const event = new CustomEvent('onCiteKeyRemoved', options);\n    // document.dispatchEvent(event);\n    // }\n\n    /* observe 'key' attribute */\n\n    static get observedAttributes() {\n      return [\"key\", \"bibtex-key\"];\n    }\n\n    attributeChangedCallback(name, oldValue, newValue) {\n      const eventName = oldValue ? \"onCiteKeyChanged\" : \"onCiteKeyCreated\";\n      const keys = newValue.split(\",\").map(k => k.trim());\n      const options = { detail: [this, keys], bubbles: true };\n      const event = new CustomEvent(eventName, options);\n      document.dispatchEvent(event);\n    }\n\n    set key(value) {\n      this.setAttribute(\"key\", value);\n    }\n\n    get key() {\n      return this.getAttribute(\"key\") || this.getAttribute(\"bibtex-key\");\n    }\n\n    get keys() {\n      const result = this.key.split(\",\");\n      console.log(result);\n      return result;\n    }\n\n    /* Setters & Rendering */\n\n    set numbers(numbers) {\n      this._numbers = numbers;\n      this.displayNumbers(numbers);\n    }\n\n    get numbers() {\n      return this._numbers;\n    }\n\n    displayNumbers(numbers) {\n      if (!this.innerSpan) return;\n      const numberStrings = numbers.map(index => {\n        return index == -1 ? \"?\" : index + 1 + \"\";\n      });\n      const textContent = \"[\" + numberStrings.join(\", \") + \"]\";\n      this.innerSpan.textContent = textContent;\n    }\n\n    set entries(entries) {\n      this._entries = entries;\n      this.displayEntries(entries);\n    }\n\n    get entries() {\n      return this._entries;\n    }\n\n    displayEntries(entries) {\n      if (!this.hoverBox) return;\n      this.hoverBox.innerHTML = `<ul>\n      ${entries\n        .map(hover_cite)\n        .map(html => `<li>${html}</li>`)\n        .join(\"\\n\")}\n    </ul>`;\n    }\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  const styles$1 = `\nd-citation-list {\n  contain: style;\n}\n\nd-citation-list .references {\n  grid-column: text;\n}\n\nd-citation-list .references .title {\n  font-weight: 500;\n}\n`;\n\n  function renderCitationList(element, entries, dom=document) {\n    if (entries.size > 0) {\n      element.style.display = '';\n      let list = element.querySelector('.references');\n      if (list) {\n        list.innerHTML = '';\n      } else {\n        const stylesTag = dom.createElement('style');\n        stylesTag.innerHTML = styles$1;\n        element.appendChild(stylesTag);\n\n        const heading = dom.createElement('h3');\n        heading.id = 'references';\n        heading.textContent = 'References';\n        element.appendChild(heading);\n\n        list = dom.createElement('ol');\n        list.id = 'references-list';\n        list.className = 'references';\n        element.appendChild(list);\n      }\n\n      for (const [key, entry] of entries) {\n        const listItem = dom.createElement('li');\n        listItem.id = key;\n        listItem.innerHTML = bibliography_cite(entry);\n        list.appendChild(listItem);\n      }\n    } else {\n      element.style.display = 'none';\n    }\n  }\n\n  class CitationList extends HTMLElement {\n\n    static get is() { return 'd-citation-list'; }\n\n    connectedCallback() {\n      if (!this.hasAttribute('distill-prerendered')) {\n        this.style.display = 'none';\n      }\n    }\n\n    set citations(citations) {\n      renderCitationList(this, citations);\n    }\n\n  }\n\n  var prism = createCommonjsModule(function (module) {\n  /* **********************************************\n       Begin prism-core.js\n  ********************************************** */\n\n  var _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\n  var Prism = (function (_self){\n\n  // Private helper vars\n  var lang = /\\blang(?:uage)?-([\\w-]+)\\b/i;\n  var uniqueId = 0;\n\n\n  var _ = {\n  \tmanual: _self.Prism && _self.Prism.manual,\n  \tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n  \tutil: {\n  \t\tencode: function encode(tokens) {\n  \t\t\tif (tokens instanceof Token) {\n  \t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n  \t\t\t} else if (Array.isArray(tokens)) {\n  \t\t\t\treturn tokens.map(encode);\n  \t\t\t} else {\n  \t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n  \t\t\t}\n  \t\t},\n\n  \t\ttype: function (o) {\n  \t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n  \t\t},\n\n  \t\tobjId: function (obj) {\n  \t\t\tif (!obj['__id']) {\n  \t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n  \t\t\t}\n  \t\t\treturn obj['__id'];\n  \t\t},\n\n  \t\t// Deep clone a language definition (e.g. to extend it)\n  \t\tclone: function deepClone(o, visited) {\n  \t\t\tvar clone, id, type = _.util.type(o);\n  \t\t\tvisited = visited || {};\n\n  \t\t\tswitch (type) {\n  \t\t\t\tcase 'Object':\n  \t\t\t\t\tid = _.util.objId(o);\n  \t\t\t\t\tif (visited[id]) {\n  \t\t\t\t\t\treturn visited[id];\n  \t\t\t\t\t}\n  \t\t\t\t\tclone = {};\n  \t\t\t\t\tvisited[id] = clone;\n\n  \t\t\t\t\tfor (var key in o) {\n  \t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n  \t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n  \t\t\t\t\t\t}\n  \t\t\t\t\t}\n\n  \t\t\t\t\treturn clone;\n\n  \t\t\t\tcase 'Array':\n  \t\t\t\t\tid = _.util.objId(o);\n  \t\t\t\t\tif (visited[id]) {\n  \t\t\t\t\t\treturn visited[id];\n  \t\t\t\t\t}\n  \t\t\t\t\tclone = [];\n  \t\t\t\t\tvisited[id] = clone;\n\n  \t\t\t\t\to.forEach(function (v, i) {\n  \t\t\t\t\t\tclone[i] = deepClone(v, visited);\n  \t\t\t\t\t});\n\n  \t\t\t\t\treturn clone;\n\n  \t\t\t\tdefault:\n  \t\t\t\t\treturn o;\n  \t\t\t}\n  \t\t},\n\n  \t\t/**\n  \t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n  \t\t *\n  \t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n  \t\t *\n  \t\t * @param {Element} element\n  \t\t * @returns {string}\n  \t\t */\n  \t\tgetLanguage: function (element) {\n  \t\t\twhile (element && !lang.test(element.className)) {\n  \t\t\t\telement = element.parentElement;\n  \t\t\t}\n  \t\t\tif (element) {\n  \t\t\t\treturn (element.className.match(lang) || [, 'none'])[1].toLowerCase();\n  \t\t\t}\n  \t\t\treturn 'none';\n  \t\t},\n\n  \t\t/**\n  \t\t * Returns the script element that is currently executing.\n  \t\t *\n  \t\t * This does __not__ work for line script element.\n  \t\t *\n  \t\t * @returns {HTMLScriptElement | null}\n  \t\t */\n  \t\tcurrentScript: function () {\n  \t\t\tif (typeof document === 'undefined') {\n  \t\t\t\treturn null;\n  \t\t\t}\n  \t\t\tif ('currentScript' in document) {\n  \t\t\t\treturn document.currentScript;\n  \t\t\t}\n\n  \t\t\t// IE11 workaround\n  \t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n  \t\t\t// this will not work for inline scripts\n\n  \t\t\ttry {\n  \t\t\t\tthrow new Error();\n  \t\t\t} catch (err) {\n  \t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n  \t\t\t\t// A stack will look like this:\n  \t\t\t\t//\n  \t\t\t\t// Error\n  \t\t\t\t//    at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n  \t\t\t\t//    at Global code (http://localhost/components/prism-core.js:606:1)\n\n  \t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):.+:.+\\)$/i.exec(err.stack) || [])[1];\n  \t\t\t\tif (src) {\n  \t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n  \t\t\t\t\tfor (var i in scripts) {\n  \t\t\t\t\t\tif (scripts[i].src == src) {\n  \t\t\t\t\t\t\treturn scripts[i];\n  \t\t\t\t\t\t}\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t\treturn null;\n  \t\t\t}\n  \t\t}\n  \t},\n\n  \tlanguages: {\n  \t\textend: function (id, redef) {\n  \t\t\tvar lang = _.util.clone(_.languages[id]);\n\n  \t\t\tfor (var key in redef) {\n  \t\t\t\tlang[key] = redef[key];\n  \t\t\t}\n\n  \t\t\treturn lang;\n  \t\t},\n\n  \t\t/**\n  \t\t * Insert a token before another token in a language literal\n  \t\t * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n  \t\t * we cannot just provide an object, we need an object and a key.\n  \t\t * @param inside The key (or language id) of the parent\n  \t\t * @param before The key to insert before.\n  \t\t * @param insert Object with the key/value pairs to insert\n  \t\t * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n  \t\t */\n  \t\tinsertBefore: function (inside, before, insert, root) {\n  \t\t\troot = root || _.languages;\n  \t\t\tvar grammar = root[inside];\n  \t\t\tvar ret = {};\n\n  \t\t\tfor (var token in grammar) {\n  \t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n  \t\t\t\t\tif (token == before) {\n  \t\t\t\t\t\tfor (var newToken in insert) {\n  \t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n  \t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n  \t\t\t\t\t\t\t}\n  \t\t\t\t\t\t}\n  \t\t\t\t\t}\n\n  \t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n  \t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n  \t\t\t\t\t\tret[token] = grammar[token];\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t}\n\n  \t\t\tvar old = root[inside];\n  \t\t\troot[inside] = ret;\n\n  \t\t\t// Update references in other language definitions\n  \t\t\t_.languages.DFS(_.languages, function(key, value) {\n  \t\t\t\tif (value === old && key != inside) {\n  \t\t\t\t\tthis[key] = ret;\n  \t\t\t\t}\n  \t\t\t});\n\n  \t\t\treturn ret;\n  \t\t},\n\n  \t\t// Traverse a language definition with Depth First Search\n  \t\tDFS: function DFS(o, callback, type, visited) {\n  \t\t\tvisited = visited || {};\n\n  \t\t\tvar objId = _.util.objId;\n\n  \t\t\tfor (var i in o) {\n  \t\t\t\tif (o.hasOwnProperty(i)) {\n  \t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n  \t\t\t\t\tvar property = o[i],\n  \t\t\t\t\t    propertyType = _.util.type(property);\n\n  \t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n  \t\t\t\t\t\tvisited[objId(property)] = true;\n  \t\t\t\t\t\tDFS(property, callback, null, visited);\n  \t\t\t\t\t}\n  \t\t\t\t\telse if (propertyType === 'Array' && !visited[objId(property)]) {\n  \t\t\t\t\t\tvisited[objId(property)] = true;\n  \t\t\t\t\t\tDFS(property, callback, i, visited);\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n  \t},\n  \tplugins: {},\n\n  \thighlightAll: function(async, callback) {\n  \t\t_.highlightAllUnder(document, async, callback);\n  \t},\n\n  \thighlightAllUnder: function(container, async, callback) {\n  \t\tvar env = {\n  \t\t\tcallback: callback,\n  \t\t\tcontainer: container,\n  \t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n  \t\t};\n\n  \t\t_.hooks.run('before-highlightall', env);\n\n  \t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n  \t\t_.hooks.run('before-all-elements-highlight', env);\n\n  \t\tfor (var i = 0, element; element = env.elements[i++];) {\n  \t\t\t_.highlightElement(element, async === true, env.callback);\n  \t\t}\n  \t},\n\n  \thighlightElement: function(element, async, callback) {\n  \t\t// Find language\n  \t\tvar language = _.util.getLanguage(element);\n  \t\tvar grammar = _.languages[language];\n\n  \t\t// Set language on the element, if not present\n  \t\telement.className = element.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\n  \t\t// Set language on the parent, for styling\n  \t\tvar parent = element.parentNode;\n  \t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n  \t\t\tparent.className = parent.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n  \t\t}\n\n  \t\tvar code = element.textContent;\n\n  \t\tvar env = {\n  \t\t\telement: element,\n  \t\t\tlanguage: language,\n  \t\t\tgrammar: grammar,\n  \t\t\tcode: code\n  \t\t};\n\n  \t\tfunction insertHighlightedCode(highlightedCode) {\n  \t\t\tenv.highlightedCode = highlightedCode;\n\n  \t\t\t_.hooks.run('before-insert', env);\n\n  \t\t\tenv.element.innerHTML = env.highlightedCode;\n\n  \t\t\t_.hooks.run('after-highlight', env);\n  \t\t\t_.hooks.run('complete', env);\n  \t\t\tcallback && callback.call(env.element);\n  \t\t}\n\n  \t\t_.hooks.run('before-sanity-check', env);\n\n  \t\tif (!env.code) {\n  \t\t\t_.hooks.run('complete', env);\n  \t\t\tcallback && callback.call(env.element);\n  \t\t\treturn;\n  \t\t}\n\n  \t\t_.hooks.run('before-highlight', env);\n\n  \t\tif (!env.grammar) {\n  \t\t\tinsertHighlightedCode(_.util.encode(env.code));\n  \t\t\treturn;\n  \t\t}\n\n  \t\tif (async && _self.Worker) {\n  \t\t\tvar worker = new Worker(_.filename);\n\n  \t\t\tworker.onmessage = function(evt) {\n  \t\t\t\tinsertHighlightedCode(evt.data);\n  \t\t\t};\n\n  \t\t\tworker.postMessage(JSON.stringify({\n  \t\t\t\tlanguage: env.language,\n  \t\t\t\tcode: env.code,\n  \t\t\t\timmediateClose: true\n  \t\t\t}));\n  \t\t}\n  \t\telse {\n  \t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n  \t\t}\n  \t},\n\n  \thighlight: function (text, grammar, language) {\n  \t\tvar env = {\n  \t\t\tcode: text,\n  \t\t\tgrammar: grammar,\n  \t\t\tlanguage: language\n  \t\t};\n  \t\t_.hooks.run('before-tokenize', env);\n  \t\tenv.tokens = _.tokenize(env.code, env.grammar);\n  \t\t_.hooks.run('after-tokenize', env);\n  \t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n  \t},\n\n  \ttokenize: function(text, grammar) {\n  \t\tvar rest = grammar.rest;\n  \t\tif (rest) {\n  \t\t\tfor (var token in rest) {\n  \t\t\t\tgrammar[token] = rest[token];\n  \t\t\t}\n\n  \t\t\tdelete grammar.rest;\n  \t\t}\n\n  \t\tvar tokenList = new LinkedList();\n  \t\taddAfter(tokenList, tokenList.head, text);\n\n  \t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n  \t\treturn toArray(tokenList);\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  \tToken: Token\n  };\n\n  _self.Prism = _;\n\n  function Token(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\n  Token.stringify = function stringify(o, language) {\n  \tif (typeof o == 'string') {\n  \t\treturn o;\n  \t}\n  \tif (Array.isArray(o)) {\n  \t\tvar s = '';\n  \t\to.forEach(function (e) {\n  \t\t\ts += stringify(e, language);\n  \t\t});\n  \t\treturn s;\n  \t}\n\n  \tvar env = {\n  \t\ttype: o.type,\n  \t\tcontent: stringify(o.content, language),\n  \t\ttag: 'span',\n  \t\tclasses: ['token', o.type],\n  \t\tattributes: {},\n  \t\tlanguage: language\n  \t};\n\n  \tvar aliases = o.alias;\n  \tif (aliases) {\n  \t\tif (Array.isArray(aliases)) {\n  \t\t\tArray.prototype.push.apply(env.classes, aliases);\n  \t\t} else {\n  \t\t\tenv.classes.push(aliases);\n  \t\t}\n  \t}\n\n  \t_.hooks.run('wrap', env);\n\n  \tvar attributes = '';\n  \tfor (var name in env.attributes) {\n  \t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n  \t}\n\n  \treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n  };\n\n  /**\n   * @param {string} text\n   * @param {LinkedList<string | Token>} tokenList\n   * @param {any} grammar\n   * @param {LinkedListNode<string | Token>} startNode\n   * @param {number} startPos\n   * @param {boolean} [oneshot=false]\n   * @param {string} [target]\n   */\n  function matchGrammar(text, tokenList, grammar, startNode, startPos, oneshot, target) {\n  \tfor (var token in grammar) {\n  \t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n  \t\t\tcontinue;\n  \t\t}\n\n  \t\tvar patterns = grammar[token];\n  \t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n  \t\tfor (var j = 0; j < patterns.length; ++j) {\n  \t\t\tif (target && target == token + ',' + j) {\n  \t\t\t\treturn;\n  \t\t\t}\n\n  \t\t\tvar pattern = patterns[j],\n  \t\t\t\tinside = pattern.inside,\n  \t\t\t\tlookbehind = !!pattern.lookbehind,\n  \t\t\t\tgreedy = !!pattern.greedy,\n  \t\t\t\tlookbehindLength = 0,\n  \t\t\t\talias = pattern.alias;\n\n  \t\t\tif (greedy && !pattern.pattern.global) {\n  \t\t\t\t// Without the global flag, lastIndex won't work\n  \t\t\t\tvar flags = pattern.pattern.toString().match(/[imsuy]*$/)[0];\n  \t\t\t\tpattern.pattern = RegExp(pattern.pattern.source, flags + 'g');\n  \t\t\t}\n\n  \t\t\tpattern = pattern.pattern || pattern;\n\n  \t\t\tfor ( // iterate the token list and keep track of the current token/string position\n  \t\t\t\tvar currentNode = startNode.next, pos = startPos;\n  \t\t\t\tcurrentNode !== tokenList.tail;\n  \t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n  \t\t\t) {\n\n  \t\t\t\tvar str = currentNode.value;\n\n  \t\t\t\tif (tokenList.length > text.length) {\n  \t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n  \t\t\t\t\treturn;\n  \t\t\t\t}\n\n  \t\t\t\tif (str instanceof Token) {\n  \t\t\t\t\tcontinue;\n  \t\t\t\t}\n\n  \t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\n  \t\t\t\tif (greedy && currentNode != tokenList.tail.prev) {\n  \t\t\t\t\tpattern.lastIndex = pos;\n  \t\t\t\t\tvar match = pattern.exec(text);\n  \t\t\t\t\tif (!match) {\n  \t\t\t\t\t\tbreak;\n  \t\t\t\t\t}\n\n  \t\t\t\t\tvar from = match.index + (lookbehind && match[1] ? match[1].length : 0);\n  \t\t\t\t\tvar to = match.index + match[0].length;\n  \t\t\t\t\tvar p = pos;\n\n  \t\t\t\t\t// find the node that contains the match\n  \t\t\t\t\tp += currentNode.value.length;\n  \t\t\t\t\twhile (from >= p) {\n  \t\t\t\t\t\tcurrentNode = currentNode.next;\n  \t\t\t\t\t\tp += currentNode.value.length;\n  \t\t\t\t\t}\n  \t\t\t\t\t// adjust pos (and p)\n  \t\t\t\t\tp -= currentNode.value.length;\n  \t\t\t\t\tpos = p;\n\n  \t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n  \t\t\t\t\tif (currentNode.value instanceof Token) {\n  \t\t\t\t\t\tcontinue;\n  \t\t\t\t\t}\n\n  \t\t\t\t\t// find the last node which is affected by this match\n  \t\t\t\t\tfor (\n  \t\t\t\t\t\tvar k = currentNode;\n  \t\t\t\t\t\tk !== tokenList.tail && (p < to || (typeof k.value === 'string' && !k.prev.value.greedy));\n  \t\t\t\t\t\tk = k.next\n  \t\t\t\t\t) {\n  \t\t\t\t\t\tremoveCount++;\n  \t\t\t\t\t\tp += k.value.length;\n  \t\t\t\t\t}\n  \t\t\t\t\tremoveCount--;\n\n  \t\t\t\t\t// replace with the new match\n  \t\t\t\t\tstr = text.slice(pos, p);\n  \t\t\t\t\tmatch.index -= pos;\n  \t\t\t\t} else {\n  \t\t\t\t\tpattern.lastIndex = 0;\n\n  \t\t\t\t\tvar match = pattern.exec(str);\n  \t\t\t\t}\n\n  \t\t\t\tif (!match) {\n  \t\t\t\t\tif (oneshot) {\n  \t\t\t\t\t\tbreak;\n  \t\t\t\t\t}\n\n  \t\t\t\t\tcontinue;\n  \t\t\t\t}\n\n  \t\t\t\tif (lookbehind) {\n  \t\t\t\t\tlookbehindLength = match[1] ? match[1].length : 0;\n  \t\t\t\t}\n\n  \t\t\t\tvar from = match.index + lookbehindLength,\n  \t\t\t\t\tmatch = match[0].slice(lookbehindLength),\n  \t\t\t\t\tto = from + match.length,\n  \t\t\t\t\tbefore = str.slice(0, from),\n  \t\t\t\t\tafter = str.slice(to);\n\n  \t\t\t\tvar removeFrom = currentNode.prev;\n\n  \t\t\t\tif (before) {\n  \t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n  \t\t\t\t\tpos += before.length;\n  \t\t\t\t}\n\n  \t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n  \t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(match, inside) : match, alias, match, greedy);\n  \t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n  \t\t\t\tif (after) {\n  \t\t\t\t\taddAfter(tokenList, currentNode, after);\n  \t\t\t\t}\n\n\n  \t\t\t\tif (removeCount > 1)\n  \t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, true, token + ',' + j);\n\n  \t\t\t\tif (oneshot)\n  \t\t\t\t\tbreak;\n  \t\t\t}\n  \t\t}\n  \t}\n  }\n\n  /**\n   * @typedef LinkedListNode\n   * @property {T} value\n   * @property {LinkedListNode<T> | null} prev The previous node.\n   * @property {LinkedListNode<T> | null} next The next node.\n   * @template T\n   */\n\n  /**\n   * @template T\n   */\n  function LinkedList() {\n  \t/** @type {LinkedListNode<T>} */\n  \tvar head = { value: null, prev: null, next: null };\n  \t/** @type {LinkedListNode<T>} */\n  \tvar tail = { value: null, prev: head, next: null };\n  \thead.next = tail;\n\n  \t/** @type {LinkedListNode<T>} */\n  \tthis.head = head;\n  \t/** @type {LinkedListNode<T>} */\n  \tthis.tail = tail;\n  \tthis.length = 0;\n  }\n\n  /**\n   * Adds a new node with the given value to the list.\n   * @param {LinkedList<T>} list\n   * @param {LinkedListNode<T>} node\n   * @param {T} value\n   * @returns {LinkedListNode<T>} The added node.\n   * @template T\n   */\n  function addAfter(list, node, value) {\n  \t// assumes that node != list.tail && values.length >= 0\n  \tvar next = node.next;\n\n  \tvar newNode = { value: value, prev: node, next: next };\n  \tnode.next = newNode;\n  \tnext.prev = newNode;\n  \tlist.length++;\n\n  \treturn newNode;\n  }\n  /**\n   * Removes `count` nodes after the given node. The given node will not be removed.\n   * @param {LinkedList<T>} list\n   * @param {LinkedListNode<T>} node\n   * @param {number} count\n   * @template T\n   */\n  function removeRange(list, node, count) {\n  \tvar next = node.next;\n  \tfor (var i = 0; i < count && next !== list.tail; i++) {\n  \t\tnext = next.next;\n  \t}\n  \tnode.next = next;\n  \tnext.prev = node;\n  \tlist.length -= i;\n  }\n  /**\n   * @param {LinkedList<T>} list\n   * @returns {T[]}\n   * @template T\n   */\n  function toArray(list) {\n  \tvar array = [];\n  \tvar node = list.head.next;\n  \twhile (node !== list.tail) {\n  \t\tarray.push(node.value);\n  \t\tnode = node.next;\n  \t}\n  \treturn array;\n  }\n\n\n  if (!_self.document) {\n  \tif (!_self.addEventListener) {\n  \t\t// in Node.js\n  \t\treturn _;\n  \t}\n\n  \tif (!_.disableWorkerMessageHandler) {\n  \t\t// In worker\n  \t\t_self.addEventListener('message', function (evt) {\n  \t\t\tvar message = JSON.parse(evt.data),\n  \t\t\t\tlang = message.language,\n  \t\t\t\tcode = message.code,\n  \t\t\t\timmediateClose = message.immediateClose;\n\n  \t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n  \t\t\tif (immediateClose) {\n  \t\t\t\t_self.close();\n  \t\t\t}\n  \t\t}, false);\n  \t}\n\n  \treturn _;\n  }\n\n  //Get current script and highlight\n  var script = _.util.currentScript();\n\n  if (script) {\n  \t_.filename = script.src;\n\n  \tif (script.hasAttribute('data-manual')) {\n  \t\t_.manual = true;\n  \t}\n  }\n\n  function highlightAutomaticallyCallback() {\n  \tif (!_.manual) {\n  \t\t_.highlightAll();\n  \t}\n  }\n\n  if (!_.manual) {\n  \t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n  \t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n  \t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n  \t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n  \t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n  \t// See https://github.com/PrismJS/prism/issues/2102\n  \tvar readyState = document.readyState;\n  \tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n  \t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n  \t} else {\n  \t\tif (window.requestAnimationFrame) {\n  \t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n  \t\t} else {\n  \t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n  \t\t}\n  \t}\n  }\n\n  return _;\n\n  })(_self);\n\n  if ( module.exports) {\n  \tmodule.exports = Prism;\n  }\n\n  // hack for components to work correctly in node.js\n  if (typeof commonjsGlobal !== 'undefined') {\n  \tcommonjsGlobal.Prism = Prism;\n  }\n\n\n  /* **********************************************\n       Begin prism-markup.js\n  ********************************************** */\n\n  Prism.languages.markup = {\n  \t'comment': /<!--[\\s\\S]*?-->/,\n  \t'prolog': /<\\?[\\s\\S]+?\\?>/,\n  \t'doctype': {\n  \t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:(?!<!--)[^\"'\\]]|\"[^\"]*\"|'[^']*'|<!--[\\s\\S]*?-->)*\\]\\s*)?>/i,\n  \t\tgreedy: true\n  \t},\n  \t'cdata': /<!\\[CDATA\\[[\\s\\S]*?]]>/i,\n  \t'tag': {\n  \t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/i,\n  \t\tgreedy: true,\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: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/i,\n  \t\t\t\tinside: {\n  \t\t\t\t\t'punctuation': [\n  \t\t\t\t\t\t/^=/,\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n  \t\t\t\t\t\t\tlookbehind: true\n  \t\t\t\t\t\t}\n  \t\t\t\t\t]\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  Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n  \tPrism.languages.markup['entity'];\n\n  // Plugin to make entity title show the real entity, idea by Roman Komarov\n  Prism.hooks.add('wrap', function(env) {\n\n  \tif (env.type === 'entity') {\n  \t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n  \t}\n  });\n\n  Object.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n  \t/**\n  \t * Adds an inlined language to markup.\n  \t *\n  \t * An example of an inlined language is CSS with `<style>` tags.\n  \t *\n  \t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n  \t * case insensitive.\n  \t * @param {string} lang The language key.\n  \t * @example\n  \t * addInlined('style', 'css');\n  \t */\n  \tvalue: function addInlined(tagName, lang) {\n  \t\tvar includedCdataInside = {};\n  \t\tincludedCdataInside['language-' + lang] = {\n  \t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n  \t\t\tlookbehind: true,\n  \t\t\tinside: Prism.languages[lang]\n  \t\t};\n  \t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n  \t\tvar inside = {\n  \t\t\t'included-cdata': {\n  \t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n  \t\t\t\tinside: includedCdataInside\n  \t\t\t}\n  \t\t};\n  \t\tinside['language-' + lang] = {\n  \t\t\tpattern: /[\\s\\S]+/,\n  \t\t\tinside: Prism.languages[lang]\n  \t\t};\n\n  \t\tvar def = {};\n  \t\tdef[tagName] = {\n  \t\t\tpattern: RegExp(/(<__[\\s\\S]*?>)(?:<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\s*|[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n  \t\t\tlookbehind: true,\n  \t\t\tgreedy: true,\n  \t\t\tinside: inside\n  \t\t};\n\n  \t\tPrism.languages.insertBefore('markup', 'cdata', def);\n  \t}\n  });\n\n  Prism.languages.xml = Prism.languages.extend('markup', {});\n  Prism.languages.html = Prism.languages.markup;\n  Prism.languages.mathml = Prism.languages.markup;\n  Prism.languages.svg = Prism.languages.markup;\n\n\n  /* **********************************************\n       Begin prism-css.js\n  ********************************************** */\n\n  (function (Prism) {\n\n  \tvar string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/;\n\n  \tPrism.languages.css = {\n  \t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n  \t\t'atrule': {\n  \t\t\tpattern: /@[\\w-]+[\\s\\S]*?(?:;|(?=\\s*\\{))/,\n  \t\t\tinside: {\n  \t\t\t\t'rule': /^@[\\w-]+/,\n  \t\t\t\t'selector-function-argument': {\n  \t\t\t\t\tpattern: /(\\bselector\\s*\\((?!\\s*\\))\\s*)(?:[^()]|\\((?:[^()]|\\([^()]*\\))*\\))+?(?=\\s*\\))/,\n  \t\t\t\t\tlookbehind: true,\n  \t\t\t\t\talias: 'selector'\n  \t\t\t\t}\n  \t\t\t\t// See rest below\n  \t\t\t}\n  \t\t},\n  \t\t'url': {\n  \t\t\tpattern: RegExp('url\\\\((?:' + string.source + '|[^\\n\\r()]*)\\\\)', 'i'),\n  \t\t\tgreedy: true,\n  \t\t\tinside: {\n  \t\t\t\t'function': /^url/i,\n  \t\t\t\t'punctuation': /^\\(|\\)$/\n  \t\t\t}\n  \t\t},\n  \t\t'selector': RegExp('[^{}\\\\s](?:[^{};\"\\']|' + string.source + ')*?(?=\\\\s*\\\\{)'),\n  \t\t'string': {\n  \t\t\tpattern: string,\n  \t\t\tgreedy: true\n  \t\t},\n  \t\t'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n  \t\t'important': /!important\\b/i,\n  \t\t'function': /[-a-z0-9]+(?=\\()/i,\n  \t\t'punctuation': /[(){};:,]/\n  \t};\n\n  \tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n  \tvar markup = Prism.languages.markup;\n  \tif (markup) {\n  \t\tmarkup.tag.addInlined('style', 'css');\n\n  \t\tPrism.languages.insertBefore('inside', 'attr-value', {\n  \t\t\t'style-attr': {\n  \t\t\t\tpattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n  \t\t\t\tinside: {\n  \t\t\t\t\t'attr-name': {\n  \t\t\t\t\t\tpattern: /^\\s*style/i,\n  \t\t\t\t\t\tinside: markup.tag.inside\n  \t\t\t\t\t},\n  \t\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n  \t\t\t\t\t'attr-value': {\n  \t\t\t\t\t\tpattern: /.+/i,\n  \t\t\t\t\t\tinside: Prism.languages.css\n  \t\t\t\t\t}\n  \t\t\t\t},\n  \t\t\t\talias: 'language-css'\n  \t\t\t}\n  \t\t}, markup.tag);\n  \t}\n\n  }(Prism));\n\n\n  /* **********************************************\n       Begin prism-clike.js\n  ********************************************** */\n\n  Prism.languages.clike = {\n  \t'comment': [\n  \t\t{\n  \t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n  \t\t\tlookbehind: true\n  \t\t},\n  \t\t{\n  \t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n  \t\t\tlookbehind: true,\n  \t\t\tgreedy: 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+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n  \t\tlookbehind: true,\n  \t\tinside: {\n  \t\t\t'punctuation': /[.\\\\]/\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': /\\w+(?=\\()/,\n  \t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n  \t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n  \t'punctuation': /[{}[\\];(),.:]/\n  };\n\n\n  /* **********************************************\n       Begin prism-javascript.js\n  ********************************************** */\n\n  Prism.languages.javascript = Prism.languages.extend('clike', {\n  \t'class-name': [\n  \t\tPrism.languages.clike['class-name'],\n  \t\t{\n  \t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])[_$A-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\.(?:prototype|constructor))/,\n  \t\t\tlookbehind: true\n  \t\t}\n  \t],\n  \t'keyword': [\n  \t\t{\n  \t\t\tpattern: /((?:^|})\\s*)(?:catch|finally)\\b/,\n  \t\t\tlookbehind: true\n  \t\t},\n  \t\t{\n  \t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|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|undefined|var|void|while|with|yield)\\b/,\n  \t\t\tlookbehind: true\n  \t\t},\n  \t],\n  \t'number': /\\b(?:(?:0[xX](?:[\\dA-Fa-f](?:_[\\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\\d(?:_\\d)?)+n|NaN|Infinity)\\b|(?:\\b(?:\\d(?:_\\d)?)+\\.?(?:\\d(?:_\\d)?)*|\\B\\.(?:\\d(?:_\\d)?)+)(?:[Ee][+-]?(?:\\d(?:_\\d)?)+)?/,\n  \t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n  \t'function': /#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n  \t'operator': /--|\\+\\+|\\*\\*=?|=>|&&|\\|\\||[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?[.?]?|[~:]/\n  });\n\n  Prism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/;\n\n  Prism.languages.insertBefore('javascript', 'keyword', {\n  \t'regex': {\n  \t\tpattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s])\\s*)\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyus]{0,6}(?=(?:\\s|\\/\\*[\\s\\S]*?\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/,\n  \t\tlookbehind: true,\n  \t\tgreedy: true\n  \t},\n  \t// This must be declared before keyword because we use \"function\" inside the look-forward\n  \t'function-variable': {\n  \t\tpattern: /#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/,\n  \t\talias: 'function'\n  \t},\n  \t'parameter': [\n  \t\t{\n  \t\t\tpattern: /(function(?:\\s+[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)?\\s*\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\))/,\n  \t\t\tlookbehind: true,\n  \t\t\tinside: Prism.languages.javascript\n  \t\t},\n  \t\t{\n  \t\t\tpattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=>)/i,\n  \t\t\tinside: Prism.languages.javascript\n  \t\t},\n  \t\t{\n  \t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*=>)/,\n  \t\t\tlookbehind: true,\n  \t\t\tinside: Prism.languages.javascript\n  \t\t},\n  \t\t{\n  \t\t\tpattern: /((?:\\b|\\s|^)(?!(?: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|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\s*)\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*\\{)/,\n  \t\t\tlookbehind: true,\n  \t\t\tinside: Prism.languages.javascript\n  \t\t}\n  \t],\n  \t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n  });\n\n  Prism.languages.insertBefore('javascript', 'string', {\n  \t'template-string': {\n  \t\tpattern: /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\\${)[^\\\\`])*`/,\n  \t\tgreedy: true,\n  \t\tinside: {\n  \t\t\t'template-punctuation': {\n  \t\t\t\tpattern: /^`|`$/,\n  \t\t\t\talias: 'string'\n  \t\t\t},\n  \t\t\t'interpolation': {\n  \t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,\n  \t\t\t\tlookbehind: true,\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\n  if (Prism.languages.markup) {\n  \tPrism.languages.markup.tag.addInlined('script', 'javascript');\n  }\n\n  Prism.languages.js = Prism.languages.javascript;\n\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  \t/**\n  \t * @param {Element} [container=document]\n  \t */\n  \tself.Prism.fileHighlight = function(container) {\n  \t\tcontainer = container || document;\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\tArray.prototype.slice.call(container.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n  \t\t\t// ignore if already loaded\n  \t\t\tif (pre.hasAttribute('data-src-loaded')) {\n  \t\t\t\treturn;\n  \t\t\t}\n\n  \t\t\t// load current\n  \t\t\tvar src = pre.getAttribute('data-src');\n\n  \t\t\tvar language, parent = pre;\n  \t\t\tvar lang = /\\blang(?:uage)?-([\\w-]+)\\b/i;\n  \t\t\twhile (parent && !lang.test(parent.className)) {\n  \t\t\t\tparent = parent.parentNode;\n  \t\t\t}\n\n  \t\t\tif (parent) {\n  \t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n  \t\t\t}\n\n  \t\t\tif (!language) {\n  \t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n  \t\t\t\tlanguage = Extensions[extension] || extension;\n  \t\t\t}\n\n  \t\t\tvar code = document.createElement('code');\n  \t\t\tcode.className = 'language-' + language;\n\n  \t\t\tpre.textContent = '';\n\n  \t\t\tcode.textContent = 'Loading…';\n\n  \t\t\tpre.appendChild(code);\n\n  \t\t\tvar xhr = new XMLHttpRequest();\n\n  \t\t\txhr.open('GET', src, true);\n\n  \t\t\txhr.onreadystatechange = function () {\n  \t\t\t\tif (xhr.readyState == 4) {\n\n  \t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n  \t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n  \t\t\t\t\t\tPrism.highlightElement(code);\n  \t\t\t\t\t\t// mark as loaded\n  \t\t\t\t\t\tpre.setAttribute('data-src-loaded', '');\n  \t\t\t\t\t}\n  \t\t\t\t\telse if (xhr.status >= 400) {\n  \t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n  \t\t\t\t\t}\n  \t\t\t\t\telse {\n  \t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t};\n\n  \t\t\txhr.send(null);\n  \t\t});\n  \t};\n\n  \tdocument.addEventListener('DOMContentLoaded', function () {\n  \t\t// execute inside handler, for dropping Event as argument\n  \t\tself.Prism.fileHighlight();\n  \t});\n\n  })();\n  });\n\n  Prism.languages.python = {\n  \t'comment': {\n  \t\tpattern: /(^|[^\\\\])#.*/,\n  \t\tlookbehind: true\n  \t},\n  \t'string-interpolation': {\n  \t\tpattern: /(?:f|rf|fr)(?:(\"\"\"|''')[\\s\\S]+?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n  \t\tgreedy: true,\n  \t\tinside: {\n  \t\t\t'interpolation': {\n  \t\t\t\t// \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n  \t\t\t\tpattern: /((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,\n  \t\t\t\tlookbehind: true,\n  \t\t\t\tinside: {\n  \t\t\t\t\t'format-spec': {\n  \t\t\t\t\t\tpattern: /(:)[^:(){}]+(?=}$)/,\n  \t\t\t\t\t\tlookbehind: true\n  \t\t\t\t\t},\n  \t\t\t\t\t'conversion-option': {\n  \t\t\t\t\t\tpattern: /![sra](?=[:}]$)/,\n  \t\t\t\t\t\talias: 'punctuation'\n  \t\t\t\t\t},\n  \t\t\t\t\trest: null\n  \t\t\t\t}\n  \t\t\t},\n  \t\t\t'string': /[\\s\\S]+/\n  \t\t}\n  \t},\n  \t'triple-quoted-string': {\n  \t\tpattern: /(?:[rub]|rb|br)?(\"\"\"|''')[\\s\\S]+?\\1/i,\n  \t\tgreedy: true,\n  \t\talias: 'string'\n  \t},\n  \t'string': {\n  \t\tpattern: /(?:[rub]|rb|br)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n  \t\tgreedy: true\n  \t},\n  \t'function': {\n  \t\tpattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n  \t\tlookbehind: true\n  \t},\n  \t'class-name': {\n  \t\tpattern: /(\\bclass\\s+)\\w+/i,\n  \t\tlookbehind: true\n  \t},\n  \t'decorator': {\n  \t\tpattern: /(^\\s*)@\\w+(?:\\.\\w+)*/im,\n  \t\tlookbehind: true,\n  \t\talias: ['annotation', 'punctuation'],\n  \t\tinside: {\n  \t\t\t'punctuation': /\\./\n  \t\t}\n  \t},\n  \t'keyword': /\\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n  \t'builtin': /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n  \t'boolean': /\\b(?:True|False|None)\\b/,\n  \t'number': /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n  \t'operator': /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n  \t'punctuation': /[{}[\\];(),.:]/\n  };\n\n  Prism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = Prism.languages.python;\n\n  Prism.languages.py = Prism.languages.python;\n\n  Prism.languages.clike = {\n  \t'comment': [\n  \t\t{\n  \t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n  \t\t\tlookbehind: true\n  \t\t},\n  \t\t{\n  \t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n  \t\t\tlookbehind: true,\n  \t\t\tgreedy: 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+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n  \t\tlookbehind: true,\n  \t\tinside: {\n  \t\t\t'punctuation': /[.\\\\]/\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': /\\w+(?=\\()/,\n  \t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n  \t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n  \t'punctuation': /[{}[\\];(),.:]/\n  };\n\n  Prism.languages.lua = {\n  \t'comment': /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n  \t// \\z may be used to skip the following space\n  \t'string': {\n  \t\tpattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[\\s\\S]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n  \t\tgreedy: true\n  \t},\n  \t'number': /\\b0x[a-f\\d]+\\.?[a-f\\d]*(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|\\.?\\d*(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n  \t'keyword': /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n  \t'function': /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n  \t'operator': [\n  \t\t/[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n  \t\t{\n  \t\t\t// Match \"..\" but don't break \"...\"\n  \t\t\tpattern: /(^|[^.])\\.\\.(?!\\.)/,\n  \t\t\tlookbehind: true\n  \t\t}\n  \t],\n  \t'punctuation': /[\\[\\](){},;]|\\.+|:+/\n  };\n\n  (function(Prism) {\n  \t// $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n  \t// + LC_ALL, RANDOM, REPLY, SECONDS.\n  \t// + make sure PS1..4 are here as they are not always set,\n  \t// - some useless things.\n  \tvar envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n  \tvar insideString = {\n  \t\t'environment': {\n  \t\t\tpattern: RegExp(\"\\\\$\" + envVars),\n  \t\t\talias: 'constant'\n  \t\t},\n  \t\t'variable': [\n  \t\t\t// [0]: Arithmetic Environment\n  \t\t\t{\n  \t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n  \t\t\t\tgreedy: true,\n  \t\t\t\tinside: {\n  \t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n  \t\t\t\t\t'variable': [\n  \t\t\t\t\t\t{\n  \t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n  \t\t\t\t\t\t\tlookbehind: true\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t/^\\$\\(\\(/\n  \t\t\t\t\t],\n  \t\t\t\t\t'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n  \t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n  \t\t\t\t\t'operator': /--?|-=|\\+\\+?|\\+=|!=?|~|\\*\\*?|\\*=|\\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\\^=?|\\|\\|?|\\|=|\\?|:/,\n  \t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n  \t\t\t\t\t'punctuation': /\\(\\(?|\\)\\)?|,|;/\n  \t\t\t\t}\n  \t\t\t},\n  \t\t\t// [1]: Command Substitution\n  \t\t\t{\n  \t\t\t\tpattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n  \t\t\t\tgreedy: true,\n  \t\t\t\tinside: {\n  \t\t\t\t\t'variable': /^\\$\\(|^`|\\)$|`$/\n  \t\t\t\t}\n  \t\t\t},\n  \t\t\t// [2]: Brace expansion\n  \t\t\t{\n  \t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n  \t\t\t\tgreedy: true,\n  \t\t\t\tinside: {\n  \t\t\t\t\t'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n  \t\t\t\t\t'punctuation': /[\\[\\]]/,\n  \t\t\t\t\t'environment': {\n  \t\t\t\t\t\tpattern: RegExp(\"(\\\\{)\" + envVars),\n  \t\t\t\t\t\tlookbehind: true,\n  \t\t\t\t\t\talias: 'constant'\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t},\n  \t\t\t/\\$(?:\\w+|[#?*!@$])/\n  \t\t],\n  \t\t// Escape sequences from echo and printf's manuals, and escaped quotes.\n  \t\t'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/\n  \t};\n\n  \tPrism.languages.bash = {\n  \t\t'shebang': {\n  \t\t\tpattern: /^#!\\s*\\/.*/,\n  \t\t\talias: 'important'\n  \t\t},\n  \t\t'comment': {\n  \t\t\tpattern: /(^|[^\"{\\\\$])#.*/,\n  \t\t\tlookbehind: true\n  \t\t},\n  \t\t'function-name': [\n  \t\t\t// a) function foo {\n  \t\t\t// b) foo() {\n  \t\t\t// c) function foo() {\n  \t\t\t// but not “foo {”\n  \t\t\t{\n  \t\t\t\t// a) and c)\n  \t\t\t\tpattern: /(\\bfunction\\s+)\\w+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n  \t\t\t\tlookbehind: true,\n  \t\t\t\talias: 'function'\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\t// b)\n  \t\t\t\tpattern: /\\b\\w+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n  \t\t\t\talias: 'function'\n  \t\t\t}\n  \t\t],\n  \t\t// Highlight variable names as variables in for and select beginnings.\n  \t\t'for-or-select': {\n  \t\t\tpattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n  \t\t\talias: 'variable',\n  \t\t\tlookbehind: true\n  \t\t},\n  \t\t// Highlight variable names as variables in the left-hand part\n  \t\t// of assignments (“=” and “+=”).\n  \t\t'assign-left': {\n  \t\t\tpattern: /(^|[\\s;|&]|[<>]\\()\\w+(?=\\+?=)/,\n  \t\t\tinside: {\n  \t\t\t\t'environment': {\n  \t\t\t\t\tpattern: RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\" + envVars),\n  \t\t\t\t\tlookbehind: true,\n  \t\t\t\t\talias: 'constant'\n  \t\t\t\t}\n  \t\t\t},\n  \t\t\talias: 'variable',\n  \t\t\tlookbehind: true\n  \t\t},\n  \t\t'string': [\n  \t\t\t// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n  \t\t\t{\n  \t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)(\\w+?)\\s*(?:\\r?\\n|\\r)[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n  \t\t\t\tlookbehind: true,\n  \t\t\t\tgreedy: true,\n  \t\t\t\tinside: insideString\n  \t\t\t},\n  \t\t\t// Here-document with quotes around the tag\n  \t\t\t// → No expansion (so no “inside”).\n  \t\t\t{\n  \t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s*(?:\\r?\\n|\\r)[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n  \t\t\t\tlookbehind: true,\n  \t\t\t\tgreedy: true\n  \t\t\t},\n  \t\t\t// “Normal” string\n  \t\t\t{\n  \t\t\t\tpattern: /(^|[^\\\\](?:\\\\\\\\)*)([\"'])(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|`[^`]+`|(?!\\2)[^\\\\])*\\2/,\n  \t\t\t\tlookbehind: true,\n  \t\t\t\tgreedy: true,\n  \t\t\t\tinside: insideString\n  \t\t\t}\n  \t\t],\n  \t\t'environment': {\n  \t\t\tpattern: RegExp(\"\\\\$?\" + envVars),\n  \t\t\talias: 'constant'\n  \t\t},\n  \t\t'variable': insideString.variable,\n  \t\t'function': {\n  \t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n  \t\t\tlookbehind: true\n  \t\t},\n  \t\t'keyword': {\n  \t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\\s;|&])/,\n  \t\t\tlookbehind: true\n  \t\t},\n  \t\t// https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n  \t\t'builtin': {\n  \t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\\s;|&])/,\n  \t\t\tlookbehind: true,\n  \t\t\t// Alias added to make those easier to distinguish from strings.\n  \t\t\talias: 'class-name'\n  \t\t},\n  \t\t'boolean': {\n  \t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:true|false)(?=$|[)\\s;|&])/,\n  \t\t\tlookbehind: true\n  \t\t},\n  \t\t'file-descriptor': {\n  \t\t\tpattern: /\\B&\\d\\b/,\n  \t\t\talias: 'important'\n  \t\t},\n  \t\t'operator': {\n  \t\t\t// Lots of redirections here, but not just that.\n  \t\t\tpattern: /\\d?<>|>\\||\\+=|==?|!=?|=~|<<[<-]?|[&\\d]?>>|\\d?[<>]&?|&[>&]?|\\|[&|]?|<=?|>=?/,\n  \t\t\tinside: {\n  \t\t\t\t'file-descriptor': {\n  \t\t\t\t\tpattern: /^\\d/,\n  \t\t\t\t\talias: 'important'\n  \t\t\t\t}\n  \t\t\t}\n  \t\t},\n  \t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n  \t\t'number': {\n  \t\t\tpattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n  \t\t\tlookbehind: true\n  \t\t}\n  \t};\n\n  \t/* Patterns in command substitution. */\n  \tvar toBeCopied = [\n  \t\t'comment',\n  \t\t'function-name',\n  \t\t'for-or-select',\n  \t\t'assign-left',\n  \t\t'string',\n  \t\t'environment',\n  \t\t'function',\n  \t\t'keyword',\n  \t\t'builtin',\n  \t\t'boolean',\n  \t\t'file-descriptor',\n  \t\t'operator',\n  \t\t'punctuation',\n  \t\t'number'\n  \t];\n  \tvar inside = insideString.variable[1].inside;\n  \tfor(var i = 0; i < toBeCopied.length; i++) {\n  \t\tinside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n  \t}\n\n  \tPrism.languages.shell = Prism.languages.bash;\n  })(Prism);\n\n  Prism.languages.go = Prism.languages.extend('clike', {\n  \t'keyword': /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n  \t'builtin': /\\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\\b/,\n  \t'boolean': /\\b(?:_|iota|nil|true|false)\\b/,\n  \t'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n  \t'number': /(?:\\b0x[a-f\\d]+|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[-+]?\\d+)?)i?/i,\n  \t'string': {\n  \t\tpattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n  \t\tgreedy: true\n  \t}\n  });\n  delete Prism.languages.go['class-name'];\n\n  (function (Prism) {\n\n  \t// Allow only one line break\n  \tvar inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?!\\n|\\r\\n?))/.source;\n\n  \t/**\n  \t * This function is intended for the creation of the bold or italic pattern.\n  \t *\n  \t * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped.\n  \t *\n  \t * _Note:_ Keep in mind that this adds a capturing group.\n  \t *\n  \t * @param {string} pattern\n  \t * @param {boolean} starAlternative Whether to also add an alternative where all `_`s are replaced with `*`s.\n  \t * @returns {RegExp}\n  \t */\n  \tfunction createInline(pattern, starAlternative) {\n  \t\tpattern = pattern.replace(/<inner>/g, function () { return inner; });\n  \t\tif (starAlternative) {\n  \t\t\tpattern = pattern + '|' + pattern.replace(/_/g, '\\\\*');\n  \t\t}\n  \t\treturn RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + '(?:' + pattern + ')');\n  \t}\n\n\n  \tvar tableCell = /(?:\\\\.|``.+?``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/.source;\n  \tvar tableRow = /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|$)/.source.replace(/__/g, function () { return tableCell; });\n  \tvar tableLine = /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/.source;\n\n\n  \tPrism.languages.markdown = Prism.languages.extend('markup', {});\n  \tPrism.languages.insertBefore('markdown', 'prolog', {\n  \t\t'blockquote': {\n  \t\t\t// > ...\n  \t\t\tpattern: /^>(?:[\\t ]*>)*/m,\n  \t\t\talias: 'punctuation'\n  \t\t},\n  \t\t'table': {\n  \t\t\tpattern: RegExp('^' + tableRow + tableLine + '(?:' + tableRow + ')*', 'm'),\n  \t\t\tinside: {\n  \t\t\t\t'table-data-rows': {\n  \t\t\t\t\tpattern: RegExp('^(' + tableRow + tableLine + ')(?:' + tableRow + ')*$'),\n  \t\t\t\t\tlookbehind: true,\n  \t\t\t\t\tinside: {\n  \t\t\t\t\t\t'table-data': {\n  \t\t\t\t\t\t\tpattern: RegExp(tableCell),\n  \t\t\t\t\t\t\tinside: Prism.languages.markdown\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t'punctuation': /\\|/\n  \t\t\t\t\t}\n  \t\t\t\t},\n  \t\t\t\t'table-line': {\n  \t\t\t\t\tpattern: RegExp('^(' + tableRow + ')' + tableLine + '$'),\n  \t\t\t\t\tlookbehind: true,\n  \t\t\t\t\tinside: {\n  \t\t\t\t\t\t'punctuation': /\\||:?-{3,}:?/\n  \t\t\t\t\t}\n  \t\t\t\t},\n  \t\t\t\t'table-header-row': {\n  \t\t\t\t\tpattern: RegExp('^' + tableRow + '$'),\n  \t\t\t\t\tinside: {\n  \t\t\t\t\t\t'table-header': {\n  \t\t\t\t\t\t\tpattern: RegExp(tableCell),\n  \t\t\t\t\t\t\talias: 'important',\n  \t\t\t\t\t\t\tinside: Prism.languages.markdown\n  \t\t\t\t\t\t},\n  \t\t\t\t\t\t'punctuation': /\\|/\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t}\n  \t\t},\n  \t\t'code': [\n  \t\t\t{\n  \t\t\t\t// Prefixed by 4 spaces or 1 tab and preceded by an empty line\n  \t\t\t\tpattern: /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,\n  \t\t\t\tlookbehind: true,\n  \t\t\t\talias: 'keyword'\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\t// `code`\n  \t\t\t\t// ``code``\n  \t\t\t\tpattern: /``.+?``|`[^`\\r\\n]+`/,\n  \t\t\t\talias: 'keyword'\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\t// ```optional language\n  \t\t\t\t// code block\n  \t\t\t\t// ```\n  \t\t\t\tpattern: /^```[\\s\\S]*?^```$/m,\n  \t\t\t\tgreedy: true,\n  \t\t\t\tinside: {\n  \t\t\t\t\t'code-block': {\n  \t\t\t\t\t\tpattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,\n  \t\t\t\t\t\tlookbehind: true\n  \t\t\t\t\t},\n  \t\t\t\t\t'code-language': {\n  \t\t\t\t\t\tpattern: /^(```).+/,\n  \t\t\t\t\t\tlookbehind: true\n  \t\t\t\t\t},\n  \t\t\t\t\t'punctuation': /```/\n  \t\t\t\t}\n  \t\t\t}\n  \t\t],\n  \t\t'title': [\n  \t\t\t{\n  \t\t\t\t// title 1\n  \t\t\t\t// =======\n\n  \t\t\t\t// title 2\n  \t\t\t\t// -------\n  \t\t\t\tpattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,\n  \t\t\t\talias: 'important',\n  \t\t\t\tinside: {\n  \t\t\t\t\tpunctuation: /==+$|--+$/\n  \t\t\t\t}\n  \t\t\t},\n  \t\t\t{\n  \t\t\t\t// # title 1\n  \t\t\t\t// ###### title 6\n  \t\t\t\tpattern: /(^\\s*)#+.+/m,\n  \t\t\t\tlookbehind: true,\n  \t\t\t\talias: 'important',\n  \t\t\t\tinside: {\n  \t\t\t\t\tpunctuation: /^#+|#+$/\n  \t\t\t\t}\n  \t\t\t}\n  \t\t],\n  \t\t'hr': {\n  \t\t\t// ***\n  \t\t\t// ---\n  \t\t\t// * * *\n  \t\t\t// -----------\n  \t\t\tpattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n  \t\t\tlookbehind: true,\n  \t\t\talias: 'punctuation'\n  \t\t},\n  \t\t'list': {\n  \t\t\t// * item\n  \t\t\t// + item\n  \t\t\t// - item\n  \t\t\t// 1. item\n  \t\t\tpattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n  \t\t\tlookbehind: true,\n  \t\t\talias: 'punctuation'\n  \t\t},\n  \t\t'url-reference': {\n  \t\t\t// [id]: http://example.com \"Optional title\"\n  \t\t\t// [id]: http://example.com 'Optional title'\n  \t\t\t// [id]: http://example.com (Optional title)\n  \t\t\t// [id]: <http://example.com> \"Optional title\"\n  \t\t\tpattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n  \t\t\tinside: {\n  \t\t\t\t'variable': {\n  \t\t\t\t\tpattern: /^(!?\\[)[^\\]]+/,\n  \t\t\t\t\tlookbehind: true\n  \t\t\t\t},\n  \t\t\t\t'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n  \t\t\t\t'punctuation': /^[\\[\\]!:]|[<>]/\n  \t\t\t},\n  \t\t\talias: 'url'\n  \t\t},\n  \t\t'bold': {\n  \t\t\t// **strong**\n  \t\t\t// __strong__\n\n  \t\t\t// allow one nested instance of italic text using the same delimiter\n  \t\t\tpattern: createInline(/__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__/.source, true),\n  \t\t\tlookbehind: true,\n  \t\t\tgreedy: true,\n  \t\t\tinside: {\n  \t\t\t\t'content': {\n  \t\t\t\t\tpattern: /(^..)[\\s\\S]+(?=..$)/,\n  \t\t\t\t\tlookbehind: true,\n  \t\t\t\t\tinside: {} // see below\n  \t\t\t\t},\n  \t\t\t\t'punctuation': /\\*\\*|__/\n  \t\t\t}\n  \t\t},\n  \t\t'italic': {\n  \t\t\t// *em*\n  \t\t\t// _em_\n\n  \t\t\t// allow one nested instance of bold text using the same delimiter\n  \t\t\tpattern: createInline(/_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_/.source, true),\n  \t\t\tlookbehind: true,\n  \t\t\tgreedy: true,\n  \t\t\tinside: {\n  \t\t\t\t'content': {\n  \t\t\t\t\tpattern: /(^.)[\\s\\S]+(?=.$)/,\n  \t\t\t\t\tlookbehind: true,\n  \t\t\t\t\tinside: {} // see below\n  \t\t\t\t},\n  \t\t\t\t'punctuation': /[*_]/\n  \t\t\t}\n  \t\t},\n  \t\t'strike': {\n  \t\t\t// ~~strike through~~\n  \t\t\t// ~strike~\n  \t\t\tpattern: createInline(/(~~?)(?:(?!~)<inner>)+?\\2/.source, false),\n  \t\t\tlookbehind: true,\n  \t\t\tgreedy: true,\n  \t\t\tinside: {\n  \t\t\t\t'content': {\n  \t\t\t\t\tpattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n  \t\t\t\t\tlookbehind: true,\n  \t\t\t\t\tinside: {} // see below\n  \t\t\t\t},\n  \t\t\t\t'punctuation': /~~?/\n  \t\t\t}\n  \t\t},\n  \t\t'url': {\n  \t\t\t// [example](http://example.com \"Optional title\")\n  \t\t\t// [example][id]\n  \t\t\t// [example] [id]\n  \t\t\tpattern: createInline(/!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)| ?\\[(?:(?!\\])<inner>)+\\])/.source, false),\n  \t\t\tlookbehind: true,\n  \t\t\tgreedy: true,\n  \t\t\tinside: {\n  \t\t\t\t'variable': {\n  \t\t\t\t\tpattern: /(\\[)[^\\]]+(?=\\]$)/,\n  \t\t\t\t\tlookbehind: true\n  \t\t\t\t},\n  \t\t\t\t'content': {\n  \t\t\t\t\tpattern: /(^!?\\[)[^\\]]+(?=\\])/,\n  \t\t\t\t\tlookbehind: true,\n  \t\t\t\t\tinside: {} // see below\n  \t\t\t\t},\n  \t\t\t\t'string': {\n  \t\t\t\t\tpattern: /\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n  \t});\n\n  \t['url', 'bold', 'italic', 'strike'].forEach(function (token) {\n  \t\t['url', 'bold', 'italic', 'strike'].forEach(function (inside) {\n  \t\t\tif (token !== inside) {\n  \t\t\t\tPrism.languages.markdown[token].inside.content.inside[inside] = Prism.languages.markdown[inside];\n  \t\t\t}\n  \t\t});\n  \t});\n\n  \tPrism.hooks.add('after-tokenize', function (env) {\n  \t\tif (env.language !== 'markdown' && env.language !== 'md') {\n  \t\t\treturn;\n  \t\t}\n\n  \t\tfunction walkTokens(tokens) {\n  \t\t\tif (!tokens || typeof tokens === 'string') {\n  \t\t\t\treturn;\n  \t\t\t}\n\n  \t\t\tfor (var i = 0, l = tokens.length; i < l; i++) {\n  \t\t\t\tvar token = tokens[i];\n\n  \t\t\t\tif (token.type !== 'code') {\n  \t\t\t\t\twalkTokens(token.content);\n  \t\t\t\t\tcontinue;\n  \t\t\t\t}\n\n  \t\t\t\t/*\n  \t\t\t\t * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token\n  \t\t\t\t * is optional. But the grammar is defined so that there is only one case we have to handle:\n  \t\t\t\t *\n  \t\t\t\t * token.content = [\n  \t\t\t\t *     <span class=\"punctuation\">```</span>,\n  \t\t\t\t *     <span class=\"code-language\">xxxx</span>,\n  \t\t\t\t *     '\\n', // exactly one new lines (\\r or \\n or \\r\\n)\n  \t\t\t\t *     <span class=\"code-block\">...</span>,\n  \t\t\t\t *     '\\n', // exactly one new lines again\n  \t\t\t\t *     <span class=\"punctuation\">```</span>\n  \t\t\t\t * ];\n  \t\t\t\t */\n\n  \t\t\t\tvar codeLang = token.content[1];\n  \t\t\t\tvar codeBlock = token.content[3];\n\n  \t\t\t\tif (codeLang && codeBlock &&\n  \t\t\t\t\tcodeLang.type === 'code-language' && codeBlock.type === 'code-block' &&\n  \t\t\t\t\ttypeof codeLang.content === 'string') {\n\n  \t\t\t\t\t// this might be a language that Prism does not support\n\n  \t\t\t\t\t// do some replacements to support C++, C#, and F#\n  \t\t\t\t\tvar lang = codeLang.content.replace(/\\b#/g, 'sharp').replace(/\\b\\+\\+/g, 'pp');\n  \t\t\t\t\t// only use the first word\n  \t\t\t\t\tlang = (/[a-z][\\w-]*/i.exec(lang) || [''])[0].toLowerCase();\n  \t\t\t\t\tvar alias = 'language-' + lang;\n\n  \t\t\t\t\t// add alias\n  \t\t\t\t\tif (!codeBlock.alias) {\n  \t\t\t\t\t\tcodeBlock.alias = [alias];\n  \t\t\t\t\t} else if (typeof codeBlock.alias === 'string') {\n  \t\t\t\t\t\tcodeBlock.alias = [codeBlock.alias, alias];\n  \t\t\t\t\t} else {\n  \t\t\t\t\t\tcodeBlock.alias.push(alias);\n  \t\t\t\t\t}\n  \t\t\t\t}\n  \t\t\t}\n  \t\t}\n\n  \t\twalkTokens(env.tokens);\n  \t});\n\n  \tPrism.hooks.add('wrap', function (env) {\n  \t\tif (env.type !== 'code-block') {\n  \t\t\treturn;\n  \t\t}\n\n  \t\tvar codeLang = '';\n  \t\tfor (var i = 0, l = env.classes.length; i < l; i++) {\n  \t\t\tvar cls = env.classes[i];\n  \t\t\tvar match = /language-(.+)/.exec(cls);\n  \t\t\tif (match) {\n  \t\t\t\tcodeLang = match[1];\n  \t\t\t\tbreak;\n  \t\t\t}\n  \t\t}\n\n  \t\tvar grammar = Prism.languages[codeLang];\n\n  \t\tif (!grammar) {\n  \t\t\tif (codeLang && codeLang !== 'none' && Prism.plugins.autoloader) {\n  \t\t\t\tvar id = 'md-' + new Date().valueOf() + '-' + Math.floor(Math.random() * 1e16);\n  \t\t\t\tenv.attributes['id'] = id;\n\n  \t\t\t\tPrism.plugins.autoloader.loadLanguages(codeLang, function () {\n  \t\t\t\t\tvar ele = document.getElementById(id);\n  \t\t\t\t\tif (ele) {\n  \t\t\t\t\t\tele.innerHTML = Prism.highlight(ele.textContent, Prism.languages[codeLang], codeLang);\n  \t\t\t\t\t}\n  \t\t\t\t});\n  \t\t\t}\n  \t\t} else {\n  \t\t\t// reverse Prism.util.encode\n  \t\t\tvar code = env.content.replace(/&lt;/g, '<').replace(/&amp;/g, '&');\n\n  \t\t\tenv.content = Prism.highlight(code, grammar, codeLang);\n  \t\t}\n  \t});\n\n  \tPrism.languages.md = Prism.languages.markdown;\n\n  }(Prism));\n\n  Prism.languages.julia= {\n  \t'comment': {\n  \t\tpattern: /(^|[^\\\\])#.*/,\n  \t\tlookbehind: true\n  \t},\n  \t'string': /(\"\"\"|''')[\\s\\S]+?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2/,\n  \t'keyword' : /\\b(?:abstract|baremodule|begin|bitstype|break|catch|ccall|const|continue|do|else|elseif|end|export|finally|for|function|global|if|immutable|import|importall|in|let|local|macro|module|print|println|quote|return|struct|try|type|typealias|using|while)\\b/,\n  \t'boolean' : /\\b(?:true|false)\\b/,\n  \t'number' : /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[box])?(?:[\\da-f]+\\.?\\d*|\\.\\d+)(?:[efp][+-]?\\d+)?j?/i,\n  \t'operator': /[-+*^%÷&$\\\\]=?|\\/[\\/=]?|!=?=?|\\|[=>]?|<(?:<=?|[=:])?|>(?:=|>>?=?)?|==?=?|[~≠≤≥]/,\n  \t'punctuation' : /[{}[\\];(),.:]/,\n  \t'constant': /\\b(?:(?:NaN|Inf)(?:16|32|64)?)\\b/\n  };\n\n  var css = \"/**\\n * prism.js default theme for JavaScript, CSS and HTML\\n * Based on dabblet (http://dabblet.com)\\n * @author Lea Verou\\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\\tfont-size: 1em;\\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\\tpadding: 1em;\\n\\tmargin: .5em 0;\\n\\toverflow: auto;\\n}\\n\\n:not(pre) > code[class*=\\\"language-\\\"],\\npre[class*=\\\"language-\\\"] {\\n\\tbackground: #f5f2f0;\\n}\\n\\n/* Inline code */\\n:not(pre) > code[class*=\\\"language-\\\"] {\\n\\tpadding: .1em;\\n\\tborder-radius: .3em;\\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.token.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: #9a6e3a;\\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.token.class-name {\\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\n  // Copyright 2018 The Distill Template Authors\n\n  const T$4 = Template('d-code', `\n<style>\n\ncode {\n  white-space: nowrap;\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\npre code {\n  display: block;\n  border-left: 2px solid rgba(0, 0, 0, .1);\n  padding: 0 0 0 36px;\n}\n\n${css}\n</style>\n\n<code id=\"code-container\"></code>\n\n`);\n\n  class Code extends Mutating(T$4(HTMLElement)) {\n\n    renderContent() {\n\n      // check if language can be highlighted\n      this.languageName = this.getAttribute('language');\n      if (!this.languageName) {\n        console.warn('You need to provide a language attribute to your <d-code> block to let us know how to highlight your code; e.g.:\\n <d-code language=\"python\">zeros = np.zeros(shape)</d-code>.');\n        return;\n      }\n      const language = prism.languages[this.languageName];\n      if (language == undefined) {\n        console.warn(`Distill does not yet support highlighting your code block in \"${this.languageName}'.`);\n        return;\n      }\n\n      let content = this.textContent;\n      const codeTag = this.shadowRoot.querySelector('#code-container');\n\n      if (this.hasAttribute('block')) {\n        // normalize the tab indents\n        content = content.replace(/\\n/, '');\n        const tabs = content.match(/\\s*/);\n        content = content.replace(new RegExp('\\n' + tabs, 'g'), '\\n');\n        content = content.trim();\n        // wrap code block in pre tag if needed\n        if (codeTag.parentNode instanceof ShadowRoot) {\n          const preTag = document.createElement('pre');\n          this.shadowRoot.removeChild(codeTag);\n          preTag.appendChild(codeTag);\n          this.shadowRoot.appendChild(preTag);\n        }\n\n      }\n\n      codeTag.className = `language-${this.languageName}`;\n      codeTag.innerHTML = prism.highlight(content, language);\n    }\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  const T$5 = Template('d-footnote', `\n<style>\n\nd-math[block] {\n  display: block;\n}\n\n:host {\n\n}\n\nsup {\n  line-height: 1em;\n  font-size: 0.75em;\n  position: relative;\n  top: -.5em;\n  vertical-align: baseline;\n}\n\nspan {\n  color: hsla(206, 90%, 20%, 0.7);\n  cursor: default;\n}\n\n.footnote-container {\n  padding: 10px;\n}\n\n</style>\n\n<d-hover-box>\n  <div class=\"footnote-container\">\n    <slot id=\"slot\"></slot>\n  </div>\n</d-hover-box>\n\n<sup>\n  <span id=\"fn-\" data-hover-ref=\"\"></span>\n</sup>\n\n`);\n\n  class Footnote extends T$5(HTMLElement) {\n\n    constructor() {\n      super();\n\n      const options = {childList: true, characterData: true, subtree: true};\n      const observer = new MutationObserver(this.notify);\n      observer.observe(this, options);\n    }\n\n    notify() {\n      const options = { detail: this, bubbles: true };\n      const event = new CustomEvent('onFootnoteChanged', options);\n      document.dispatchEvent(event);\n    }\n\n    connectedCallback() {\n      // listen and notify about changes to slotted content\n      // const slot = this.shadowRoot.querySelector('#slot');\n      // console.warn(slot.textContent);\n      // slot.addEventListener('slotchange', this.notify);\n      this.hoverBox = this.root.querySelector('d-hover-box');\n      window.customElements.whenDefined('d-hover-box').then(() => {\n        this.hoverBox.listen(this);\n      });\n      // create numeric ID\n      Footnote.currentFootnoteId += 1;\n      const IdString = Footnote.currentFootnoteId.toString();\n      this.root.host.id = 'd-footnote-' + IdString;\n\n      // set up hidden hover box\n      const id = 'dt-fn-hover-box-' + IdString;\n      this.hoverBox.id = id;\n\n      // set up visible footnote marker\n      const span = this.root.querySelector('#fn-');\n      span.setAttribute('id', 'fn-' + IdString);\n      span.setAttribute('data-hover-ref', id);\n      span.textContent = IdString;\n    }\n\n  }\n\n  Footnote.currentFootnoteId = 0;\n\n  // Copyright 2018 The Distill Template Authors\n\n  const T$6 = Template('d-footnote-list', `\n<style>\n\nd-footnote-list {\n  contain: layout style;\n}\n\nd-footnote-list > * {\n  grid-column: text;\n}\n\nd-footnote-list a.footnote-backlink {\n  color: rgba(0,0,0,0.3);\n  padding-left: 0.5em;\n}\n\n</style>\n\n<h3>Footnotes</h3>\n<ol></ol>\n`, false);\n\n  class FootnoteList extends T$6(HTMLElement) {\n\n    connectedCallback() {\n      super.connectedCallback();\n\n      this.list = this.root.querySelector('ol');\n      // footnotes list is initially hidden\n      this.root.style.display = 'none';\n      // look through document and register existing footnotes\n      // Store.subscribeTo('footnotes', (footnote) => {\n      //   this.renderFootnote(footnote);\n      // });\n    }\n\n    // TODO: could optimize this to accept individual footnotes?\n    set footnotes(footnotes) {\n      this.list.innerHTML = '';\n      if (footnotes.length) {\n        // ensure footnote list is visible\n        this.root.style.display = '';\n\n        for (const footnote of footnotes) {\n          // construct and append list item to show footnote\n          const listItem = document.createElement('li');\n          listItem.id = footnote.id + '-listing';\n          listItem.innerHTML = footnote.innerHTML;\n\n          const backlink = document.createElement('a');\n          backlink.setAttribute('class', 'footnote-backlink');\n          backlink.setAttribute('target', '_self');\n          backlink.textContent = '[↩]';\n          backlink.href = '#' + footnote.id;\n\n          listItem.appendChild(backlink);\n          this.list.appendChild(listItem);\n        }\n      } else {\n        // ensure footnote list is invisible\n        this.root.style.display = 'none';\n      }\n    }\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  const T$7 = Template('d-hover-box', `\n<style>\n\n:host {\n  position: absolute;\n  width: 100%;\n  left: 0px;\n  z-index: 10000;\n  display: none;\n  white-space: normal\n}\n\n.container {\n  position: relative;\n  width: 704px;\n  max-width: 100vw;\n  margin: 0 auto;\n}\n\n.panel {\n  position: absolute;\n  font-size: 1rem;\n  line-height: 1.5em;\n  top: 0;\n  left: 0;\n  width: 100%;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  background-color: rgba(250, 250, 250, 0.95);\n  box-shadow: 0 0 7px rgba(0, 0, 0, 0.1);\n  border-radius: 4px;\n  box-sizing: border-box;\n\n  backdrop-filter: blur(2px);\n  -webkit-backdrop-filter: blur(2px);\n}\n\n</style>\n\n<div class=\"container\">\n  <div class=\"panel\">\n    <slot></slot>\n  </div>\n</div>\n`);\n\n  class HoverBox extends T$7(HTMLElement) {\n\n    constructor() {\n      super();\n    }\n\n    connectedCallback() {\n\n    }\n\n    listen(element) {\n      // console.log(element)\n      this.bindDivEvents(this);\n      this.bindTriggerEvents(element);\n      // this.style.display = \"block\";\n    }\n\n    bindDivEvents(element) {\n      // For mice, same behavior as hovering on links\n      element.addEventListener('mouseover', () => {\n        if (!this.visible) this.showAtNode(element);\n        this.stopTimeout();\n      });\n      element.addEventListener('mouseout', () => {\n        this.extendTimeout(500);\n      });\n      // Don't trigger body touchstart event when touching within box\n      element.addEventListener('touchstart', (event) => {\n        event.stopPropagation();\n      }, {passive: true});\n      // Close box when touching outside box\n      document.body.addEventListener('touchstart', () => {\n        this.hide();\n      }, {passive: true});\n    }\n\n    bindTriggerEvents(node) {\n      node.addEventListener('mouseover', () => {\n        if (!this.visible) {\n          this.showAtNode(node);\n        }\n        this.stopTimeout();\n      });\n\n      node.addEventListener('mouseout', () => {\n        this.extendTimeout(300);\n      });\n\n      node.addEventListener('touchstart', (event) => {\n        if (this.visible) {\n          this.hide();\n        } else {\n          this.showAtNode(node);\n        }\n        // Don't trigger body touchstart event when touching link\n        event.stopPropagation();\n      }, {passive: true});\n    }\n\n    show(position) {\n      this.visible = true;\n      this.style.display = 'block';\n      // 10px extra offset from element\n      this.style.top = Math.round(position[1] + 10) + 'px';\n    }\n\n    showAtNode(node) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop\n      const bbox = node.getBoundingClientRect();\n      this.show([node.offsetLeft + bbox.width, node.offsetTop + bbox.height]);\n    }\n\n    hide() {\n      this.visible = false;\n      this.style.display = 'none';\n      this.stopTimeout();\n    }\n\n    stopTimeout() {\n      if (this.timeout) {\n        clearTimeout(this.timeout);\n      }\n    }\n\n    extendTimeout(time) {\n      this.stopTimeout();\n      this.timeout = setTimeout(() => {\n        this.hide();\n      }, time);\n    }\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  class Title extends HTMLElement {\n    static get is() { return 'd-title'; }\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  const T$8 = Template('d-references', `\n<style>\nd-references {\n  display: block;\n}\n</style>\n`, false);\n\n  class References extends T$8(HTMLElement) {\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  class TOC extends HTMLElement {\n\n    static get is() { return 'd-toc'; }\n\n    connectedCallback() {\n      if (!this.getAttribute('prerendered')) {\n        window.onload = () => {\n          const article = document.querySelector('d-article');\n          const headings = article.querySelectorAll('h2, h3');\n          renderTOC(this, headings);\n        };\n      }\n    }\n\n  }\n\n  function renderTOC(element, headings) {\n\n    let ToC =`\n  <style>\n\n  d-toc {\n    contain: layout style;\n    display: block;\n  }\n\n  d-toc ul {\n    padding-left: 0;\n  }\n\n  d-toc ul > ul {\n    padding-left: 24px;\n  }\n\n  d-toc a {\n    border-bottom: none;\n    text-decoration: none;\n  }\n\n  </style>\n  <nav role=\"navigation\" class=\"table-of-contents\"></nav>\n  <h2>Table of contents</h2>\n  <ul>`;\n\n    for (const el of headings) {\n      // should element be included in TOC?\n      const isInTitle = el.parentElement.tagName == 'D-TITLE';\n      const isException = el.getAttribute('no-toc');\n      if (isInTitle || isException) continue;\n      // create TOC entry\n      const title = el.textContent;\n      const link = '#' + el.getAttribute('id');\n\n      let newLine = '<li>' + '<a href=\"' + link + '\">' + title + '</a>' + '</li>';\n      if (el.tagName == 'H3') {\n        newLine = '<ul>' + newLine + '</ul>';\n      } else {\n        newLine += '<br>';\n      }\n      ToC += newLine;\n\n    }\n\n    ToC += '</ul></nav>';\n    element.innerHTML = ToC;\n  }\n\n  // Copyright 2018 The Distill Template Authors\n  //\n  // Licensed under the Apache License, Version 2.0 (the \"License\");\n  // you may not use this file except in compliance with the License.\n  // You may obtain a copy of the License at\n  //\n  //      http://www.apache.org/licenses/LICENSE-2.0\n  //\n  // Unless required by applicable law or agreed to in writing, software\n  // distributed under the License is distributed on an \"AS IS\" BASIS,\n  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  // See the License for the specific language governing permissions and\n  // limitations under the License.\n\n  // Figure\n  //\n  // d-figure provides a state-machine of visibility events:\n  //\n  //                         scroll out of view\n  //                         +----------------+\n  //   *do work here*        |                |\n  // +----------------+    +-+---------+    +-v---------+\n  // | ready          +----> onscreen  |    | offscreen |\n  // +----------------+    +---------^-+    +---------+-+\n  //                                 |                |\n  //                                 +----------------+\n  //                                  scroll into view\n  //\n\n  class Figure extends HTMLElement {\n\n    static get is() { return 'd-figure'; }\n\n    static get readyQueue() {\n      if (!Figure._readyQueue) {\n        Figure._readyQueue = [];\n      }\n      return Figure._readyQueue;\n    }\n\n    static addToReadyQueue(figure) {\n      if (Figure.readyQueue.indexOf(figure) === -1) {\n        Figure.readyQueue.push(figure);\n        Figure.runReadyQueue();\n      }\n    }\n\n    static runReadyQueue() {\n      // console.log(\"Checking to run readyQueue, length: \" + Figure.readyQueue.length + \", scrolling: \" + Figure.isScrolling);\n      // if (Figure.isScrolling) return;\n      // console.log(\"Running ready Queue\");\n      const figure = Figure.readyQueue\n        .sort((a,b) => a._seenOnScreen - b._seenOnScreen )\n        .filter((figure) => !figure._ready)\n        .pop();\n      if (figure) {\n        figure.ready();\n        requestAnimationFrame(Figure.runReadyQueue);\n      }\n\n    }\n\n    constructor() {\n      super();\n      // debugger\n      this._ready = false;\n      this._onscreen = false;\n      this._offscreen = true;\n    }\n\n    connectedCallback() {\n      this.loadsWhileScrolling = this.hasAttribute('loadsWhileScrolling');\n      Figure.marginObserver.observe(this);\n      Figure.directObserver.observe(this);\n    }\n\n    disconnectedCallback() {\n      Figure.marginObserver.unobserve(this);\n      Figure.directObserver.unobserve(this);\n    }\n\n    // We use two separate observers:\n    // One with an extra 1000px margin to warn if the viewpoint gets close,\n    // And one for the actual on/off screen events\n\n    static get marginObserver() {\n      if (!Figure._marginObserver) {\n        // if (!('IntersectionObserver' in window)) {\n        //   throw new Error('no interscetionobbserver!');\n        // }\n        const viewportHeight = window.innerHeight;\n        const margin = Math.floor(2 * viewportHeight);\n        const options = {rootMargin: margin + 'px 0px ' + margin + 'px 0px', threshold: 0.01};\n        const callback = Figure.didObserveMarginIntersection;\n        const observer = new IntersectionObserver(callback, options);\n        Figure._marginObserver = observer;\n      }\n      return Figure._marginObserver;\n    }\n\n    static didObserveMarginIntersection(entries) {\n      for (const entry of entries) {\n        const figure = entry.target;\n        if (entry.isIntersecting && !figure._ready) {\n          Figure.addToReadyQueue(figure);\n        }\n      }\n    }\n\n    static get directObserver() {\n      if (!Figure._directObserver) {\n        Figure._directObserver = new IntersectionObserver(\n          Figure.didObserveDirectIntersection, {\n            rootMargin: '0px', threshold: [0, 1.0],\n          }\n        );\n      }\n      return Figure._directObserver;\n    }\n\n    static didObserveDirectIntersection(entries) {\n      for (const entry of entries) {\n        const figure = entry.target;\n        if (entry.isIntersecting) {\n          figure._seenOnScreen = new Date();\n          // if (!figure._ready) { figure.ready(); }\n          if (figure._offscreen) { figure.onscreen(); }\n        } else {\n          if (figure._onscreen) { figure.offscreen(); }\n        }\n      }\n    }\n\n    // Notify listeners that registered late, too:\n\n    addEventListener(eventName, callback) {\n      super.addEventListener(eventName, callback);\n      // if we had already dispatched something while presumingly no one was listening, we do so again\n      // debugger\n      if (eventName === 'ready') {\n        if (Figure.readyQueue.indexOf(this) !== -1) {\n          this._ready = false;\n          Figure.runReadyQueue();\n        }\n      }\n      if (eventName === 'onscreen') {\n        this.onscreen();\n      }\n    }\n\n    // Custom Events\n\n    ready() {\n      // debugger\n      this._ready = true;\n      Figure.marginObserver.unobserve(this);\n      const event = new CustomEvent('ready');\n      this.dispatchEvent(event);\n    }\n\n    onscreen() {\n      this._onscreen = true;\n      this._offscreen = false;\n      const event = new CustomEvent('onscreen');\n      this.dispatchEvent(event);\n    }\n\n    offscreen() {\n      this._onscreen = false;\n      this._offscreen = true;\n      const event = new CustomEvent('offscreen');\n      this.dispatchEvent(event);\n    }\n\n  }\n\n  if (typeof window !== 'undefined') {\n\n    Figure.isScrolling = false;\n    let timeout;\n    const resetTimer = () => {\n      Figure.isScrolling = true;\n      clearTimeout(timeout);\n      timeout = setTimeout(() => {\n        Figure.isScrolling = false;\n        Figure.runReadyQueue();\n      }, 500);\n    };\n    window.addEventListener('scroll', resetTimer, true);\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  // This overlay is not secure.\n  // It is only meant as a social deterrent.\n\n  const productionHostname = 'distill.pub';\n  const T$9 = Template('d-interstitial', `\n<style>\n\n.overlay {\n  position: fixed;\n  width: 100%;\n  height: 100%;\n  top: 0;\n  left: 0;\n  background: white;\n\n  opacity: 1;\n  visibility: visible;\n\n  display: flex;\n  flex-flow: column;\n  justify-content: center;\n  z-index: 2147483647 /* MaxInt32 */\n\n}\n\n.container {\n  position: relative;\n  margin-left: auto;\n  margin-right: auto;\n  max-width: 420px;\n  padding: 2em;\n}\n\nh1 {\n  text-decoration: underline;\n  text-decoration-color: hsl(0,100%,40%);\n  -webkit-text-decoration-color: hsl(0,100%,40%);\n  margin-bottom: 1em;\n  line-height: 1.5em;\n}\n\ninput[type=\"password\"] {\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n  -webkit-border-radius: none;\n  -moz-border-radius: none;\n  -ms-border-radius: none;\n  -o-border-radius: none;\n  border-radius: none;\n  outline: none;\n\n  font-size: 18px;\n  background: none;\n  width: 25%;\n  padding: 10px;\n  border: none;\n  border-bottom: solid 2px #999;\n  transition: border .3s;\n}\n\ninput[type=\"password\"]:focus {\n  border-bottom: solid 2px #333;\n}\n\ninput[type=\"password\"].wrong {\n  border-bottom: solid 2px hsl(0,100%,40%);\n}\n\np small {\n  color: #888;\n}\n\n.logo {\n  position: relative;\n  font-size: 1.5em;\n  margin-bottom: 3em;\n}\n\n.logo svg {\n  width: 36px;\n  position: relative;\n  top: 6px;\n  margin-right: 2px;\n}\n\n.logo svg path {\n  fill: none;\n  stroke: black;\n  stroke-width: 2px;\n}\n\n</style>\n\n<div class=\"overlay\">\n  <div class=\"container\">\n    <h1>This article is in review.</h1>\n    <p>Do not share this URL or the contents of this article. Thank you!</p>\n    <input id=\"interstitial-password-input\" type=\"password\" name=\"password\" autofocus/>\n    <p><small>Enter the password we shared with you as part of the review process to view the article.</small></p>\n  </div>\n</div>\n`);\n\n  class Interstitial extends T$9(HTMLElement) {\n\n    connectedCallback() {\n      if (this.shouldRemoveSelf()) {\n        this.parentElement.removeChild(this);\n      } else {\n        const passwordInput = this.root.querySelector('#interstitial-password-input');\n        passwordInput.oninput = (event) => this.passwordChanged(event);\n      }\n    }\n\n    passwordChanged(event) {\n      const entered = event.target.value;\n      if (entered === this.password) {\n        console.log('Correct password entered.');\n        this.parentElement.removeChild(this);\n        if (typeof(Storage) !== 'undefined') {\n          console.log('Saved that correct password was entered.');\n          localStorage.setItem(this.localStorageIdentifier(), 'true');\n        }\n      }\n    }\n\n    shouldRemoveSelf() {\n      // should never be visible in production\n      if (window && window.location.hostname === productionHostname) {\n        console.warn('Interstitial found on production, hiding it.');\n        return true\n      }\n      // should only have to enter password once\n      if (typeof(Storage) !== 'undefined') {\n        if (localStorage.getItem(this.localStorageIdentifier()) === 'true') {\n          console.log('Loaded that correct password was entered before; skipping interstitial.');\n          return true;\n        }\n      }\n      // otherwise, leave visible\n      return false;\n    }\n\n    localStorageIdentifier() {\n      const prefix = 'distill-drafts';\n      const suffix = 'interstitial-password-correct';\n      return prefix + (window ? window.location.pathname : '-') + suffix\n    }\n\n  }\n\n  function ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n\n  function bisector(compare) {\n    if (compare.length === 1) compare = ascendingComparator(compare);\n    return {\n      left: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1;\n          else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid;\n          else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n\n  function ascendingComparator(f) {\n    return function(d, x) {\n      return ascending(f(d), x);\n    };\n  }\n\n  var ascendingBisect = bisector(ascending);\n  var bisectRight = ascendingBisect.right;\n\n  function range(start, stop, step) {\n    start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n    var i = -1,\n        n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n        range = new Array(n);\n\n    while (++i < n) {\n      range[i] = start + i * step;\n    }\n\n    return range;\n  }\n\n  var e10 = Math.sqrt(50),\n      e5 = Math.sqrt(10),\n      e2 = Math.sqrt(2);\n\n  function ticks(start, stop, count) {\n    var reverse,\n        i = -1,\n        n,\n        ticks,\n        step;\n\n    stop = +stop, start = +start, count = +count;\n    if (start === stop && count > 0) return [start];\n    if (reverse = stop < start) n = start, start = stop, stop = n;\n    if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n    if (step > 0) {\n      start = Math.ceil(start / step);\n      stop = Math.floor(stop / step);\n      ticks = new Array(n = Math.ceil(stop - start + 1));\n      while (++i < n) ticks[i] = (start + i) * step;\n    } else {\n      start = Math.floor(start * step);\n      stop = Math.ceil(stop * step);\n      ticks = new Array(n = Math.ceil(start - stop + 1));\n      while (++i < n) ticks[i] = (start - i) / step;\n    }\n\n    if (reverse) ticks.reverse();\n\n    return ticks;\n  }\n\n  function tickIncrement(start, stop, count) {\n    var step = (stop - start) / Math.max(0, count),\n        power = Math.floor(Math.log(step) / Math.LN10),\n        error = step / Math.pow(10, power);\n    return power >= 0\n        ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n        : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n  }\n\n  function tickStep(start, stop, count) {\n    var step0 = Math.abs(stop - start) / Math.max(0, count),\n        step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n        error = step0 / step1;\n    if (error >= e10) step1 *= 10;\n    else if (error >= e5) step1 *= 5;\n    else if (error >= e2) step1 *= 2;\n    return stop < start ? -step1 : step1;\n  }\n\n  function initRange(domain, range) {\n    switch (arguments.length) {\n      case 0: break;\n      case 1: this.range(domain); break;\n      default: this.range(range).domain(domain); break;\n    }\n    return this;\n  }\n\n  function define(constructor, factory, prototype) {\n    constructor.prototype = factory.prototype = prototype;\n    prototype.constructor = constructor;\n  }\n\n  function extend(parent, definition) {\n    var prototype = Object.create(parent.prototype);\n    for (var key in definition) prototype[key] = definition[key];\n    return prototype;\n  }\n\n  function Color() {}\n\n  var darker = 0.7;\n  var brighter = 1 / darker;\n\n  var reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n      reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n      reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n      reHex = /^#([0-9a-f]{3,8})$/,\n      reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n      reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n      reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n      reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n      reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n      reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\n  var named = {\n    aliceblue: 0xf0f8ff,\n    antiquewhite: 0xfaebd7,\n    aqua: 0x00ffff,\n    aquamarine: 0x7fffd4,\n    azure: 0xf0ffff,\n    beige: 0xf5f5dc,\n    bisque: 0xffe4c4,\n    black: 0x000000,\n    blanchedalmond: 0xffebcd,\n    blue: 0x0000ff,\n    blueviolet: 0x8a2be2,\n    brown: 0xa52a2a,\n    burlywood: 0xdeb887,\n    cadetblue: 0x5f9ea0,\n    chartreuse: 0x7fff00,\n    chocolate: 0xd2691e,\n    coral: 0xff7f50,\n    cornflowerblue: 0x6495ed,\n    cornsilk: 0xfff8dc,\n    crimson: 0xdc143c,\n    cyan: 0x00ffff,\n    darkblue: 0x00008b,\n    darkcyan: 0x008b8b,\n    darkgoldenrod: 0xb8860b,\n    darkgray: 0xa9a9a9,\n    darkgreen: 0x006400,\n    darkgrey: 0xa9a9a9,\n    darkkhaki: 0xbdb76b,\n    darkmagenta: 0x8b008b,\n    darkolivegreen: 0x556b2f,\n    darkorange: 0xff8c00,\n    darkorchid: 0x9932cc,\n    darkred: 0x8b0000,\n    darksalmon: 0xe9967a,\n    darkseagreen: 0x8fbc8f,\n    darkslateblue: 0x483d8b,\n    darkslategray: 0x2f4f4f,\n    darkslategrey: 0x2f4f4f,\n    darkturquoise: 0x00ced1,\n    darkviolet: 0x9400d3,\n    deeppink: 0xff1493,\n    deepskyblue: 0x00bfff,\n    dimgray: 0x696969,\n    dimgrey: 0x696969,\n    dodgerblue: 0x1e90ff,\n    firebrick: 0xb22222,\n    floralwhite: 0xfffaf0,\n    forestgreen: 0x228b22,\n    fuchsia: 0xff00ff,\n    gainsboro: 0xdcdcdc,\n    ghostwhite: 0xf8f8ff,\n    gold: 0xffd700,\n    goldenrod: 0xdaa520,\n    gray: 0x808080,\n    green: 0x008000,\n    greenyellow: 0xadff2f,\n    grey: 0x808080,\n    honeydew: 0xf0fff0,\n    hotpink: 0xff69b4,\n    indianred: 0xcd5c5c,\n    indigo: 0x4b0082,\n    ivory: 0xfffff0,\n    khaki: 0xf0e68c,\n    lavender: 0xe6e6fa,\n    lavenderblush: 0xfff0f5,\n    lawngreen: 0x7cfc00,\n    lemonchiffon: 0xfffacd,\n    lightblue: 0xadd8e6,\n    lightcoral: 0xf08080,\n    lightcyan: 0xe0ffff,\n    lightgoldenrodyellow: 0xfafad2,\n    lightgray: 0xd3d3d3,\n    lightgreen: 0x90ee90,\n    lightgrey: 0xd3d3d3,\n    lightpink: 0xffb6c1,\n    lightsalmon: 0xffa07a,\n    lightseagreen: 0x20b2aa,\n    lightskyblue: 0x87cefa,\n    lightslategray: 0x778899,\n    lightslategrey: 0x778899,\n    lightsteelblue: 0xb0c4de,\n    lightyellow: 0xffffe0,\n    lime: 0x00ff00,\n    limegreen: 0x32cd32,\n    linen: 0xfaf0e6,\n    magenta: 0xff00ff,\n    maroon: 0x800000,\n    mediumaquamarine: 0x66cdaa,\n    mediumblue: 0x0000cd,\n    mediumorchid: 0xba55d3,\n    mediumpurple: 0x9370db,\n    mediumseagreen: 0x3cb371,\n    mediumslateblue: 0x7b68ee,\n    mediumspringgreen: 0x00fa9a,\n    mediumturquoise: 0x48d1cc,\n    mediumvioletred: 0xc71585,\n    midnightblue: 0x191970,\n    mintcream: 0xf5fffa,\n    mistyrose: 0xffe4e1,\n    moccasin: 0xffe4b5,\n    navajowhite: 0xffdead,\n    navy: 0x000080,\n    oldlace: 0xfdf5e6,\n    olive: 0x808000,\n    olivedrab: 0x6b8e23,\n    orange: 0xffa500,\n    orangered: 0xff4500,\n    orchid: 0xda70d6,\n    palegoldenrod: 0xeee8aa,\n    palegreen: 0x98fb98,\n    paleturquoise: 0xafeeee,\n    palevioletred: 0xdb7093,\n    papayawhip: 0xffefd5,\n    peachpuff: 0xffdab9,\n    peru: 0xcd853f,\n    pink: 0xffc0cb,\n    plum: 0xdda0dd,\n    powderblue: 0xb0e0e6,\n    purple: 0x800080,\n    rebeccapurple: 0x663399,\n    red: 0xff0000,\n    rosybrown: 0xbc8f8f,\n    royalblue: 0x4169e1,\n    saddlebrown: 0x8b4513,\n    salmon: 0xfa8072,\n    sandybrown: 0xf4a460,\n    seagreen: 0x2e8b57,\n    seashell: 0xfff5ee,\n    sienna: 0xa0522d,\n    silver: 0xc0c0c0,\n    skyblue: 0x87ceeb,\n    slateblue: 0x6a5acd,\n    slategray: 0x708090,\n    slategrey: 0x708090,\n    snow: 0xfffafa,\n    springgreen: 0x00ff7f,\n    steelblue: 0x4682b4,\n    tan: 0xd2b48c,\n    teal: 0x008080,\n    thistle: 0xd8bfd8,\n    tomato: 0xff6347,\n    turquoise: 0x40e0d0,\n    violet: 0xee82ee,\n    wheat: 0xf5deb3,\n    white: 0xffffff,\n    whitesmoke: 0xf5f5f5,\n    yellow: 0xffff00,\n    yellowgreen: 0x9acd32\n  };\n\n  define(Color, color, {\n    copy: function(channels) {\n      return Object.assign(new this.constructor, this, channels);\n    },\n    displayable: function() {\n      return this.rgb().displayable();\n    },\n    hex: color_formatHex, // Deprecated! Use color.formatHex.\n    formatHex: color_formatHex,\n    formatHsl: color_formatHsl,\n    formatRgb: color_formatRgb,\n    toString: color_formatRgb\n  });\n\n  function color_formatHex() {\n    return this.rgb().formatHex();\n  }\n\n  function color_formatHsl() {\n    return hslConvert(this).formatHsl();\n  }\n\n  function color_formatRgb() {\n    return this.rgb().formatRgb();\n  }\n\n  function color(format) {\n    var m, l;\n    format = (format + \"\").trim().toLowerCase();\n    return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n        : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n        : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n        : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n        : null) // invalid hex\n        : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n        : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n        : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n        : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n        : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n        : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n        : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n        : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n        : null;\n  }\n\n  function rgbn(n) {\n    return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n  }\n\n  function rgba(r, g, b, a) {\n    if (a <= 0) r = g = b = NaN;\n    return new Rgb(r, g, b, a);\n  }\n\n  function rgbConvert(o) {\n    if (!(o instanceof Color)) o = color(o);\n    if (!o) return new Rgb;\n    o = o.rgb();\n    return new Rgb(o.r, o.g, o.b, o.opacity);\n  }\n\n  function rgb(r, g, b, opacity) {\n    return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n  }\n\n  function Rgb(r, g, b, opacity) {\n    this.r = +r;\n    this.g = +g;\n    this.b = +b;\n    this.opacity = +opacity;\n  }\n\n  define(Rgb, rgb, extend(Color, {\n    brighter: function(k) {\n      k = k == null ? brighter : Math.pow(brighter, k);\n      return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n    },\n    darker: function(k) {\n      k = k == null ? darker : Math.pow(darker, k);\n      return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n    },\n    rgb: function() {\n      return this;\n    },\n    displayable: function() {\n      return (-0.5 <= this.r && this.r < 255.5)\n          && (-0.5 <= this.g && this.g < 255.5)\n          && (-0.5 <= this.b && this.b < 255.5)\n          && (0 <= this.opacity && this.opacity <= 1);\n    },\n    hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n    formatHex: rgb_formatHex,\n    formatRgb: rgb_formatRgb,\n    toString: rgb_formatRgb\n  }));\n\n  function rgb_formatHex() {\n    return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n  }\n\n  function rgb_formatRgb() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"rgb(\" : \"rgba(\")\n        + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n        + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n        + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n\n  function hex(value) {\n    value = Math.max(0, Math.min(255, Math.round(value) || 0));\n    return (value < 16 ? \"0\" : \"\") + value.toString(16);\n  }\n\n  function hsla(h, s, l, a) {\n    if (a <= 0) h = s = l = NaN;\n    else if (l <= 0 || l >= 1) h = s = NaN;\n    else if (s <= 0) h = NaN;\n    return new Hsl(h, s, l, a);\n  }\n\n  function hslConvert(o) {\n    if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n    if (!(o instanceof Color)) o = color(o);\n    if (!o) return new Hsl;\n    if (o instanceof Hsl) return o;\n    o = o.rgb();\n    var r = o.r / 255,\n        g = o.g / 255,\n        b = o.b / 255,\n        min = Math.min(r, g, b),\n        max = Math.max(r, g, b),\n        h = NaN,\n        s = max - min,\n        l = (max + min) / 2;\n    if (s) {\n      if (r === max) h = (g - b) / s + (g < b) * 6;\n      else if (g === max) h = (b - r) / s + 2;\n      else h = (r - g) / s + 4;\n      s /= l < 0.5 ? max + min : 2 - max - min;\n      h *= 60;\n    } else {\n      s = l > 0 && l < 1 ? 0 : h;\n    }\n    return new Hsl(h, s, l, o.opacity);\n  }\n\n  function hsl(h, s, l, opacity) {\n    return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n  }\n\n  function Hsl(h, s, l, opacity) {\n    this.h = +h;\n    this.s = +s;\n    this.l = +l;\n    this.opacity = +opacity;\n  }\n\n  define(Hsl, hsl, extend(Color, {\n    brighter: function(k) {\n      k = k == null ? brighter : Math.pow(brighter, k);\n      return new Hsl(this.h, this.s, this.l * k, this.opacity);\n    },\n    darker: function(k) {\n      k = k == null ? darker : Math.pow(darker, k);\n      return new Hsl(this.h, this.s, this.l * k, this.opacity);\n    },\n    rgb: function() {\n      var h = this.h % 360 + (this.h < 0) * 360,\n          s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n          l = this.l,\n          m2 = l + (l < 0.5 ? l : 1 - l) * s,\n          m1 = 2 * l - m2;\n      return new Rgb(\n        hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n        hsl2rgb(h, m1, m2),\n        hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n        this.opacity\n      );\n    },\n    displayable: function() {\n      return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n          && (0 <= this.l && this.l <= 1)\n          && (0 <= this.opacity && this.opacity <= 1);\n    },\n    formatHsl: function() {\n      var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n      return (a === 1 ? \"hsl(\" : \"hsla(\")\n          + (this.h || 0) + \", \"\n          + (this.s || 0) * 100 + \"%, \"\n          + (this.l || 0) * 100 + \"%\"\n          + (a === 1 ? \")\" : \", \" + a + \")\");\n    }\n  }));\n\n  /* From FvD 13.37, CSS Color Module Level 3 */\n  function hsl2rgb(h, m1, m2) {\n    return (h < 60 ? m1 + (m2 - m1) * h / 60\n        : h < 180 ? m2\n        : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n        : m1) * 255;\n  }\n\n  var deg2rad = Math.PI / 180;\n  var rad2deg = 180 / Math.PI;\n\n  // https://observablehq.com/@mbostock/lab-and-rgb\n  var K = 18,\n      Xn = 0.96422,\n      Yn = 1,\n      Zn = 0.82521,\n      t0 = 4 / 29,\n      t1 = 6 / 29,\n      t2 = 3 * t1 * t1,\n      t3 = t1 * t1 * t1;\n\n  function labConvert(o) {\n    if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n    if (o instanceof Hcl) return hcl2lab(o);\n    if (!(o instanceof Rgb)) o = rgbConvert(o);\n    var r = rgb2lrgb(o.r),\n        g = rgb2lrgb(o.g),\n        b = rgb2lrgb(o.b),\n        y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n    if (r === g && g === b) x = z = y; else {\n      x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n      z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n    }\n    return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n  }\n\n  function lab(l, a, b, opacity) {\n    return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n  }\n\n  function Lab(l, a, b, opacity) {\n    this.l = +l;\n    this.a = +a;\n    this.b = +b;\n    this.opacity = +opacity;\n  }\n\n  define(Lab, lab, extend(Color, {\n    brighter: function(k) {\n      return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n    },\n    darker: function(k) {\n      return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n    },\n    rgb: function() {\n      var y = (this.l + 16) / 116,\n          x = isNaN(this.a) ? y : y + this.a / 500,\n          z = isNaN(this.b) ? y : y - this.b / 200;\n      x = Xn * lab2xyz(x);\n      y = Yn * lab2xyz(y);\n      z = Zn * lab2xyz(z);\n      return new Rgb(\n        lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n        lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n        lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n        this.opacity\n      );\n    }\n  }));\n\n  function xyz2lab(t) {\n    return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n  }\n\n  function lab2xyz(t) {\n    return t > t1 ? t * t * t : t2 * (t - t0);\n  }\n\n  function lrgb2rgb(x) {\n    return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n  }\n\n  function rgb2lrgb(x) {\n    return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n  }\n\n  function hclConvert(o) {\n    if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n    if (!(o instanceof Lab)) o = labConvert(o);\n    if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n    var h = Math.atan2(o.b, o.a) * rad2deg;\n    return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n  }\n\n  function hcl(h, c, l, opacity) {\n    return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n  }\n\n  function Hcl(h, c, l, opacity) {\n    this.h = +h;\n    this.c = +c;\n    this.l = +l;\n    this.opacity = +opacity;\n  }\n\n  function hcl2lab(o) {\n    if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n    var h = o.h * deg2rad;\n    return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n  }\n\n  define(Hcl, hcl, extend(Color, {\n    brighter: function(k) {\n      return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n    },\n    darker: function(k) {\n      return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n    },\n    rgb: function() {\n      return hcl2lab(this).rgb();\n    }\n  }));\n\n  var A = -0.14861,\n      B = +1.78277,\n      C = -0.29227,\n      D = -0.90649,\n      E = +1.97294,\n      ED = E * D,\n      EB = E * B,\n      BC_DA = B * C - D * A;\n\n  function cubehelixConvert(o) {\n    if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n    if (!(o instanceof Rgb)) o = rgbConvert(o);\n    var r = o.r / 255,\n        g = o.g / 255,\n        b = o.b / 255,\n        l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n        bl = b - l,\n        k = (E * (g - l) - C * bl) / D,\n        s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n        h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n    return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n  }\n\n  function cubehelix(h, s, l, opacity) {\n    return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n  }\n\n  function Cubehelix(h, s, l, opacity) {\n    this.h = +h;\n    this.s = +s;\n    this.l = +l;\n    this.opacity = +opacity;\n  }\n\n  define(Cubehelix, cubehelix, extend(Color, {\n    brighter: function(k) {\n      k = k == null ? brighter : Math.pow(brighter, k);\n      return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n    },\n    darker: function(k) {\n      k = k == null ? darker : Math.pow(darker, k);\n      return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n    },\n    rgb: function() {\n      var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n          l = +this.l,\n          a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n          cosh = Math.cos(h),\n          sinh = Math.sin(h);\n      return new Rgb(\n        255 * (l + a * (A * cosh + B * sinh)),\n        255 * (l + a * (C * cosh + D * sinh)),\n        255 * (l + a * (E * cosh)),\n        this.opacity\n      );\n    }\n  }));\n\n  function constant(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function linear(a, d) {\n    return function(t) {\n      return a + t * d;\n    };\n  }\n\n  function exponential(a, b, y) {\n    return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n      return Math.pow(a + t * b, y);\n    };\n  }\n\n  function gamma(y) {\n    return (y = +y) === 1 ? nogamma : function(a, b) {\n      return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n    };\n  }\n\n  function nogamma(a, b) {\n    var d = b - a;\n    return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n  }\n\n  var rgb$1 = (function rgbGamma(y) {\n    var color = gamma(y);\n\n    function rgb$1(start, end) {\n      var r = color((start = rgb(start)).r, (end = rgb(end)).r),\n          g = color(start.g, end.g),\n          b = color(start.b, end.b),\n          opacity = nogamma(start.opacity, end.opacity);\n      return function(t) {\n        start.r = r(t);\n        start.g = g(t);\n        start.b = b(t);\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    rgb$1.gamma = rgbGamma;\n\n    return rgb$1;\n  })(1);\n\n  function numberArray(a, b) {\n    if (!b) b = [];\n    var n = a ? Math.min(b.length, a.length) : 0,\n        c = b.slice(),\n        i;\n    return function(t) {\n      for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n      return c;\n    };\n  }\n\n  function isNumberArray(x) {\n    return ArrayBuffer.isView(x) && !(x instanceof DataView);\n  }\n\n  function genericArray(a, b) {\n    var nb = b ? b.length : 0,\n        na = a ? Math.min(nb, a.length) : 0,\n        x = new Array(na),\n        c = new Array(nb),\n        i;\n\n    for (i = 0; i < na; ++i) x[i] = interpolate(a[i], b[i]);\n    for (; i < nb; ++i) c[i] = b[i];\n\n    return function(t) {\n      for (i = 0; i < na; ++i) c[i] = x[i](t);\n      return c;\n    };\n  }\n\n  function date(a, b) {\n    var d = new Date;\n    return a = +a, b = +b, function(t) {\n      return d.setTime(a * (1 - t) + b * t), d;\n    };\n  }\n\n  function interpolateNumber(a, b) {\n    return a = +a, b = +b, function(t) {\n      return a * (1 - t) + b * t;\n    };\n  }\n\n  function object(a, b) {\n    var i = {},\n        c = {},\n        k;\n\n    if (a === null || typeof a !== \"object\") a = {};\n    if (b === null || typeof b !== \"object\") b = {};\n\n    for (k in b) {\n      if (k in a) {\n        i[k] = interpolate(a[k], b[k]);\n      } else {\n        c[k] = b[k];\n      }\n    }\n\n    return function(t) {\n      for (k in i) c[k] = i[k](t);\n      return c;\n    };\n  }\n\n  var reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n      reB = new RegExp(reA.source, \"g\");\n\n  function zero(b) {\n    return function() {\n      return b;\n    };\n  }\n\n  function one(b) {\n    return function(t) {\n      return b(t) + \"\";\n    };\n  }\n\n  function string(a, b) {\n    var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n        am, // current match in a\n        bm, // current match in b\n        bs, // string preceding current number in b, if any\n        i = -1, // index in s\n        s = [], // string constants and placeholders\n        q = []; // number interpolators\n\n    // Coerce inputs to strings.\n    a = a + \"\", b = b + \"\";\n\n    // Interpolate pairs of numbers in a & b.\n    while ((am = reA.exec(a))\n        && (bm = reB.exec(b))) {\n      if ((bs = bm.index) > bi) { // a string precedes the next number in b\n        bs = b.slice(bi, bs);\n        if (s[i]) s[i] += bs; // coalesce with previous string\n        else s[++i] = bs;\n      }\n      if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n        if (s[i]) s[i] += bm; // coalesce with previous string\n        else s[++i] = bm;\n      } else { // interpolate non-matching numbers\n        s[++i] = null;\n        q.push({i: i, x: interpolateNumber(am, bm)});\n      }\n      bi = reB.lastIndex;\n    }\n\n    // Add remains of b.\n    if (bi < b.length) {\n      bs = b.slice(bi);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n\n    // Special optimization for only a single match.\n    // Otherwise, interpolate each of the numbers and rejoin the string.\n    return s.length < 2 ? (q[0]\n        ? one(q[0].x)\n        : zero(b))\n        : (b = q.length, function(t) {\n            for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n            return s.join(\"\");\n          });\n  }\n\n  function interpolate(a, b) {\n    var t = typeof b, c;\n    return b == null || t === \"boolean\" ? constant(b)\n        : (t === \"number\" ? interpolateNumber\n        : t === \"string\" ? ((c = color(b)) ? (b = c, rgb$1) : string)\n        : b instanceof color ? rgb$1\n        : b instanceof Date ? date\n        : isNumberArray(b) ? numberArray\n        : Array.isArray(b) ? genericArray\n        : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n        : interpolateNumber)(a, b);\n  }\n\n  function interpolateRound(a, b) {\n    return a = +a, b = +b, function(t) {\n      return Math.round(a * (1 - t) + b * t);\n    };\n  }\n\n  function constant$1(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function number(x) {\n    return +x;\n  }\n\n  var unit = [0, 1];\n\n  function identity(x) {\n    return x;\n  }\n\n  function normalize(a, b) {\n    return (b -= (a = +a))\n        ? function(x) { return (x - a) / b; }\n        : constant$1(isNaN(b) ? NaN : 0.5);\n  }\n\n  function clamper(a, b) {\n    var t;\n    if (a > b) t = a, a = b, b = t;\n    return function(x) { return Math.max(a, Math.min(b, x)); };\n  }\n\n  // normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n  // interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\n  function bimap(domain, range, interpolate) {\n    var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n    if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n    else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n    return function(x) { return r0(d0(x)); };\n  }\n\n  function polymap(domain, range, interpolate) {\n    var j = Math.min(domain.length, range.length) - 1,\n        d = new Array(j),\n        r = new Array(j),\n        i = -1;\n\n    // Reverse descending domains.\n    if (domain[j] < domain[0]) {\n      domain = domain.slice().reverse();\n      range = range.slice().reverse();\n    }\n\n    while (++i < j) {\n      d[i] = normalize(domain[i], domain[i + 1]);\n      r[i] = interpolate(range[i], range[i + 1]);\n    }\n\n    return function(x) {\n      var i = bisectRight(domain, x, 1, j) - 1;\n      return r[i](d[i](x));\n    };\n  }\n\n  function copy(source, target) {\n    return target\n        .domain(source.domain())\n        .range(source.range())\n        .interpolate(source.interpolate())\n        .clamp(source.clamp())\n        .unknown(source.unknown());\n  }\n\n  function transformer() {\n    var domain = unit,\n        range = unit,\n        interpolate$1 = interpolate,\n        transform,\n        untransform,\n        unknown,\n        clamp = identity,\n        piecewise,\n        output,\n        input;\n\n    function rescale() {\n      var n = Math.min(domain.length, range.length);\n      if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n      piecewise = n > 2 ? polymap : bimap;\n      output = input = null;\n      return scale;\n    }\n\n    function scale(x) {\n      return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate$1)))(transform(clamp(x)));\n    }\n\n    scale.invert = function(y) {\n      return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n    };\n\n    scale.domain = function(_) {\n      return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n    };\n\n    scale.range = function(_) {\n      return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n    };\n\n    scale.rangeRound = function(_) {\n      return range = Array.from(_), interpolate$1 = interpolateRound, rescale();\n    };\n\n    scale.clamp = function(_) {\n      return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n    };\n\n    scale.interpolate = function(_) {\n      return arguments.length ? (interpolate$1 = _, rescale()) : interpolate$1;\n    };\n\n    scale.unknown = function(_) {\n      return arguments.length ? (unknown = _, scale) : unknown;\n    };\n\n    return function(t, u) {\n      transform = t, untransform = u;\n      return rescale();\n    };\n  }\n\n  function continuous() {\n    return transformer()(identity, identity);\n  }\n\n  // Computes the decimal coefficient and exponent of the specified number x with\n  // significant digits p, where x is positive and p is in [1, 21] or undefined.\n  // For example, formatDecimal(1.23) returns [\"123\", 0].\n  function formatDecimal(x, p) {\n    if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n    var i, coefficient = x.slice(0, i);\n\n    // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n    // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n    return [\n      coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n      +x.slice(i + 1)\n    ];\n  }\n\n  function exponent(x) {\n    return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n  }\n\n  function formatGroup(grouping, thousands) {\n    return function(value, width) {\n      var i = value.length,\n          t = [],\n          j = 0,\n          g = grouping[0],\n          length = 0;\n\n      while (i > 0 && g > 0) {\n        if (length + g + 1 > width) g = Math.max(1, width - length);\n        t.push(value.substring(i -= g, i + g));\n        if ((length += g + 1) > width) break;\n        g = grouping[j = (j + 1) % grouping.length];\n      }\n\n      return t.reverse().join(thousands);\n    };\n  }\n\n  function formatNumerals(numerals) {\n    return function(value) {\n      return value.replace(/[0-9]/g, function(i) {\n        return numerals[+i];\n      });\n    };\n  }\n\n  // [[fill]align][sign][symbol][0][width][,][.precision][~][type]\n  var re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\n  function formatSpecifier(specifier) {\n    if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n    var match;\n    return new FormatSpecifier({\n      fill: match[1],\n      align: match[2],\n      sign: match[3],\n      symbol: match[4],\n      zero: match[5],\n      width: match[6],\n      comma: match[7],\n      precision: match[8] && match[8].slice(1),\n      trim: match[9],\n      type: match[10]\n    });\n  }\n\n  formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\n  function FormatSpecifier(specifier) {\n    this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n    this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n    this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n    this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n    this.zero = !!specifier.zero;\n    this.width = specifier.width === undefined ? undefined : +specifier.width;\n    this.comma = !!specifier.comma;\n    this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n    this.trim = !!specifier.trim;\n    this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n  }\n\n  FormatSpecifier.prototype.toString = function() {\n    return this.fill\n        + this.align\n        + this.sign\n        + this.symbol\n        + (this.zero ? \"0\" : \"\")\n        + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n        + (this.comma ? \",\" : \"\")\n        + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n        + (this.trim ? \"~\" : \"\")\n        + this.type;\n  };\n\n  // Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\n  function formatTrim(s) {\n    out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n      switch (s[i]) {\n        case \".\": i0 = i1 = i; break;\n        case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n        default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n      }\n    }\n    return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n  }\n\n  var prefixExponent;\n\n  function formatPrefixAuto(x, p) {\n    var d = formatDecimal(x, p);\n    if (!d) return x + \"\";\n    var coefficient = d[0],\n        exponent = d[1],\n        i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n        n = coefficient.length;\n    return i === n ? coefficient\n        : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n        : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n        : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n  }\n\n  function formatRounded(x, p) {\n    var d = formatDecimal(x, p);\n    if (!d) return x + \"\";\n    var coefficient = d[0],\n        exponent = d[1];\n    return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n        : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n        : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n  }\n\n  var formatTypes = {\n    \"%\": function(x, p) { return (x * 100).toFixed(p); },\n    \"b\": function(x) { return Math.round(x).toString(2); },\n    \"c\": function(x) { return x + \"\"; },\n    \"d\": function(x) { return Math.round(x).toString(10); },\n    \"e\": function(x, p) { return x.toExponential(p); },\n    \"f\": function(x, p) { return x.toFixed(p); },\n    \"g\": function(x, p) { return x.toPrecision(p); },\n    \"o\": function(x) { return Math.round(x).toString(8); },\n    \"p\": function(x, p) { return formatRounded(x * 100, p); },\n    \"r\": formatRounded,\n    \"s\": formatPrefixAuto,\n    \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n    \"x\": function(x) { return Math.round(x).toString(16); }\n  };\n\n  function identity$1(x) {\n    return x;\n  }\n\n  var map = Array.prototype.map,\n      prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n  function formatLocale(locale) {\n    var group = locale.grouping === undefined || locale.thousands === undefined ? identity$1 : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n        currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n        currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n        decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n        numerals = locale.numerals === undefined ? identity$1 : formatNumerals(map.call(locale.numerals, String)),\n        percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n        minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n        nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n    function newFormat(specifier) {\n      specifier = formatSpecifier(specifier);\n\n      var fill = specifier.fill,\n          align = specifier.align,\n          sign = specifier.sign,\n          symbol = specifier.symbol,\n          zero = specifier.zero,\n          width = specifier.width,\n          comma = specifier.comma,\n          precision = specifier.precision,\n          trim = specifier.trim,\n          type = specifier.type;\n\n      // The \"n\" type is an alias for \",g\".\n      if (type === \"n\") comma = true, type = \"g\";\n\n      // The \"\" type, and any invalid type, is an alias for \".12~g\".\n      else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n      // If zero fill is specified, padding goes after sign and before digits.\n      if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n      // Compute the prefix and suffix.\n      // For SI-prefix, the suffix is lazily computed.\n      var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n          suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n      // What format function should we use?\n      // Is this an integer type?\n      // Can this type generate exponential notation?\n      var formatType = formatTypes[type],\n          maybeSuffix = /[defgprs%]/.test(type);\n\n      // Set the default precision if not specified,\n      // or clamp the specified precision to the supported range.\n      // For significant precision, it must be in [1, 21].\n      // For fixed precision, it must be in [0, 20].\n      precision = precision === undefined ? 6\n          : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n          : Math.max(0, Math.min(20, precision));\n\n      function format(value) {\n        var valuePrefix = prefix,\n            valueSuffix = suffix,\n            i, n, c;\n\n        if (type === \"c\") {\n          valueSuffix = formatType(value) + valueSuffix;\n          value = \"\";\n        } else {\n          value = +value;\n\n          // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n          var valueNegative = value < 0 || 1 / value < 0;\n\n          // Perform the initial formatting.\n          value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n          // Trim insignificant zeros.\n          if (trim) value = formatTrim(value);\n\n          // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n          if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n          // Compute the prefix and suffix.\n          valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n          valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n          // Break the formatted value into the integer “value” part that can be\n          // grouped, and fractional or exponential “suffix” part that is not.\n          if (maybeSuffix) {\n            i = -1, n = value.length;\n            while (++i < n) {\n              if (c = value.charCodeAt(i), 48 > c || c > 57) {\n                valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n                value = value.slice(0, i);\n                break;\n              }\n            }\n          }\n        }\n\n        // If the fill character is not \"0\", grouping is applied before padding.\n        if (comma && !zero) value = group(value, Infinity);\n\n        // Compute the padding.\n        var length = valuePrefix.length + value.length + valueSuffix.length,\n            padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n        // If the fill character is \"0\", grouping is applied after padding.\n        if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n        // Reconstruct the final output based on the desired alignment.\n        switch (align) {\n          case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n          case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n          case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n          default: value = padding + valuePrefix + value + valueSuffix; break;\n        }\n\n        return numerals(value);\n      }\n\n      format.toString = function() {\n        return specifier + \"\";\n      };\n\n      return format;\n    }\n\n    function formatPrefix(specifier, value) {\n      var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n          e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n          k = Math.pow(10, -e),\n          prefix = prefixes[8 + e / 3];\n      return function(value) {\n        return f(k * value) + prefix;\n      };\n    }\n\n    return {\n      format: newFormat,\n      formatPrefix: formatPrefix\n    };\n  }\n\n  var locale;\n  var format;\n  var formatPrefix;\n\n  defaultLocale({\n    decimal: \".\",\n    thousands: \",\",\n    grouping: [3],\n    currency: [\"$\", \"\"],\n    minus: \"-\"\n  });\n\n  function defaultLocale(definition) {\n    locale = formatLocale(definition);\n    format = locale.format;\n    formatPrefix = locale.formatPrefix;\n    return locale;\n  }\n\n  function precisionFixed(step) {\n    return Math.max(0, -exponent(Math.abs(step)));\n  }\n\n  function precisionPrefix(step, value) {\n    return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n  }\n\n  function precisionRound(step, max) {\n    step = Math.abs(step), max = Math.abs(max) - step;\n    return Math.max(0, exponent(max) - exponent(step)) + 1;\n  }\n\n  function tickFormat(start, stop, count, specifier) {\n    var step = tickStep(start, stop, count),\n        precision;\n    specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n    switch (specifier.type) {\n      case \"s\": {\n        var value = Math.max(Math.abs(start), Math.abs(stop));\n        if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n        return formatPrefix(specifier, value);\n      }\n      case \"\":\n      case \"e\":\n      case \"g\":\n      case \"p\":\n      case \"r\": {\n        if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n        break;\n      }\n      case \"f\":\n      case \"%\": {\n        if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n        break;\n      }\n    }\n    return format(specifier);\n  }\n\n  function linearish(scale) {\n    var domain = scale.domain;\n\n    scale.ticks = function(count) {\n      var d = domain();\n      return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n    };\n\n    scale.tickFormat = function(count, specifier) {\n      var d = domain();\n      return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n    };\n\n    scale.nice = function(count) {\n      if (count == null) count = 10;\n\n      var d = domain(),\n          i0 = 0,\n          i1 = d.length - 1,\n          start = d[i0],\n          stop = d[i1],\n          step;\n\n      if (stop < start) {\n        step = start, start = stop, stop = step;\n        step = i0, i0 = i1, i1 = step;\n      }\n\n      step = tickIncrement(start, stop, count);\n\n      if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n        step = tickIncrement(start, stop, count);\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n        step = tickIncrement(start, stop, count);\n      }\n\n      if (step > 0) {\n        d[i0] = Math.floor(start / step) * step;\n        d[i1] = Math.ceil(stop / step) * step;\n        domain(d);\n      } else if (step < 0) {\n        d[i0] = Math.ceil(start * step) / step;\n        d[i1] = Math.floor(stop * step) / step;\n        domain(d);\n      }\n\n      return scale;\n    };\n\n    return scale;\n  }\n\n  function linear$1() {\n    var scale = continuous();\n\n    scale.copy = function() {\n      return copy(scale, linear$1());\n    };\n\n    initRange.apply(scale, arguments);\n\n    return linearish(scale);\n  }\n\n  var t0$1 = new Date,\n      t1$1 = new Date;\n\n  function newInterval(floori, offseti, count, field) {\n\n    function interval(date) {\n      return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n    }\n\n    interval.floor = function(date) {\n      return floori(date = new Date(+date)), date;\n    };\n\n    interval.ceil = function(date) {\n      return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n    };\n\n    interval.round = function(date) {\n      var d0 = interval(date),\n          d1 = interval.ceil(date);\n      return date - d0 < d1 - date ? d0 : d1;\n    };\n\n    interval.offset = function(date, step) {\n      return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n    };\n\n    interval.range = function(start, stop, step) {\n      var range = [], previous;\n      start = interval.ceil(start);\n      step = step == null ? 1 : Math.floor(step);\n      if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n      do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n      while (previous < start && start < stop);\n      return range;\n    };\n\n    interval.filter = function(test) {\n      return newInterval(function(date) {\n        if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n      }, function(date, step) {\n        if (date >= date) {\n          if (step < 0) while (++step <= 0) {\n            while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n          } else while (--step >= 0) {\n            while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n          }\n        }\n      });\n    };\n\n    if (count) {\n      interval.count = function(start, end) {\n        t0$1.setTime(+start), t1$1.setTime(+end);\n        floori(t0$1), floori(t1$1);\n        return Math.floor(count(t0$1, t1$1));\n      };\n\n      interval.every = function(step) {\n        step = Math.floor(step);\n        return !isFinite(step) || !(step > 0) ? null\n            : !(step > 1) ? interval\n            : interval.filter(field\n                ? function(d) { return field(d) % step === 0; }\n                : function(d) { return interval.count(0, d) % step === 0; });\n      };\n    }\n\n    return interval;\n  }\n\n  var millisecond = newInterval(function() {\n    // noop\n  }, function(date, step) {\n    date.setTime(+date + step);\n  }, function(start, end) {\n    return end - start;\n  });\n\n  // An optimized implementation for this simple case.\n  millisecond.every = function(k) {\n    k = Math.floor(k);\n    if (!isFinite(k) || !(k > 0)) return null;\n    if (!(k > 1)) return millisecond;\n    return newInterval(function(date) {\n      date.setTime(Math.floor(date / k) * k);\n    }, function(date, step) {\n      date.setTime(+date + step * k);\n    }, function(start, end) {\n      return (end - start) / k;\n    });\n  };\n\n  var durationSecond = 1e3;\n  var durationMinute = 6e4;\n  var durationHour = 36e5;\n  var durationDay = 864e5;\n  var durationWeek = 6048e5;\n\n  var second = newInterval(function(date) {\n    date.setTime(date - date.getMilliseconds());\n  }, function(date, step) {\n    date.setTime(+date + step * durationSecond);\n  }, function(start, end) {\n    return (end - start) / durationSecond;\n  }, function(date) {\n    return date.getUTCSeconds();\n  });\n\n  var minute = newInterval(function(date) {\n    date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n  }, function(date, step) {\n    date.setTime(+date + step * durationMinute);\n  }, function(start, end) {\n    return (end - start) / durationMinute;\n  }, function(date) {\n    return date.getMinutes();\n  });\n\n  var hour = newInterval(function(date) {\n    date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n  }, function(date, step) {\n    date.setTime(+date + step * durationHour);\n  }, function(start, end) {\n    return (end - start) / durationHour;\n  }, function(date) {\n    return date.getHours();\n  });\n\n  var day = newInterval(function(date) {\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n  }, function(date) {\n    return date.getDate() - 1;\n  });\n\n  function weekday(i) {\n    return newInterval(function(date) {\n      date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n      date.setHours(0, 0, 0, 0);\n    }, function(date, step) {\n      date.setDate(date.getDate() + step * 7);\n    }, function(start, end) {\n      return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n    });\n  }\n\n  var sunday = weekday(0);\n  var monday = weekday(1);\n  var tuesday = weekday(2);\n  var wednesday = weekday(3);\n  var thursday = weekday(4);\n  var friday = weekday(5);\n  var saturday = weekday(6);\n\n  var month = newInterval(function(date) {\n    date.setDate(1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setMonth(date.getMonth() + step);\n  }, function(start, end) {\n    return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n  }, function(date) {\n    return date.getMonth();\n  });\n\n  var year = newInterval(function(date) {\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step);\n  }, function(start, end) {\n    return end.getFullYear() - start.getFullYear();\n  }, function(date) {\n    return date.getFullYear();\n  });\n\n  // An optimized implementation for this simple case.\n  year.every = function(k) {\n    return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n      date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n      date.setMonth(0, 1);\n      date.setHours(0, 0, 0, 0);\n    }, function(date, step) {\n      date.setFullYear(date.getFullYear() + step * k);\n    });\n  };\n\n  var utcMinute = newInterval(function(date) {\n    date.setUTCSeconds(0, 0);\n  }, function(date, step) {\n    date.setTime(+date + step * durationMinute);\n  }, function(start, end) {\n    return (end - start) / durationMinute;\n  }, function(date) {\n    return date.getUTCMinutes();\n  });\n\n  var utcHour = newInterval(function(date) {\n    date.setUTCMinutes(0, 0, 0);\n  }, function(date, step) {\n    date.setTime(+date + step * durationHour);\n  }, function(start, end) {\n    return (end - start) / durationHour;\n  }, function(date) {\n    return date.getUTCHours();\n  });\n\n  var utcDay = newInterval(function(date) {\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step);\n  }, function(start, end) {\n    return (end - start) / durationDay;\n  }, function(date) {\n    return date.getUTCDate() - 1;\n  });\n\n  function utcWeekday(i) {\n    return newInterval(function(date) {\n      date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n      date.setUTCHours(0, 0, 0, 0);\n    }, function(date, step) {\n      date.setUTCDate(date.getUTCDate() + step * 7);\n    }, function(start, end) {\n      return (end - start) / durationWeek;\n    });\n  }\n\n  var utcSunday = utcWeekday(0);\n  var utcMonday = utcWeekday(1);\n  var utcTuesday = utcWeekday(2);\n  var utcWednesday = utcWeekday(3);\n  var utcThursday = utcWeekday(4);\n  var utcFriday = utcWeekday(5);\n  var utcSaturday = utcWeekday(6);\n\n  var utcMonth = newInterval(function(date) {\n    date.setUTCDate(1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCMonth(date.getUTCMonth() + step);\n  }, function(start, end) {\n    return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n  }, function(date) {\n    return date.getUTCMonth();\n  });\n\n  var utcYear = newInterval(function(date) {\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step);\n  }, function(start, end) {\n    return end.getUTCFullYear() - start.getUTCFullYear();\n  }, function(date) {\n    return date.getUTCFullYear();\n  });\n\n  // An optimized implementation for this simple case.\n  utcYear.every = function(k) {\n    return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n      date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n      date.setUTCMonth(0, 1);\n      date.setUTCHours(0, 0, 0, 0);\n    }, function(date, step) {\n      date.setUTCFullYear(date.getUTCFullYear() + step * k);\n    });\n  };\n\n  function localDate(d) {\n    if (0 <= d.y && d.y < 100) {\n      var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n      date.setFullYear(d.y);\n      return date;\n    }\n    return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n  }\n\n  function utcDate(d) {\n    if (0 <= d.y && d.y < 100) {\n      var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n      date.setUTCFullYear(d.y);\n      return date;\n    }\n    return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n  }\n\n  function newDate(y, m, d) {\n    return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n  }\n\n  function formatLocale$1(locale) {\n    var locale_dateTime = locale.dateTime,\n        locale_date = locale.date,\n        locale_time = locale.time,\n        locale_periods = locale.periods,\n        locale_weekdays = locale.days,\n        locale_shortWeekdays = locale.shortDays,\n        locale_months = locale.months,\n        locale_shortMonths = locale.shortMonths;\n\n    var periodRe = formatRe(locale_periods),\n        periodLookup = formatLookup(locale_periods),\n        weekdayRe = formatRe(locale_weekdays),\n        weekdayLookup = formatLookup(locale_weekdays),\n        shortWeekdayRe = formatRe(locale_shortWeekdays),\n        shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n        monthRe = formatRe(locale_months),\n        monthLookup = formatLookup(locale_months),\n        shortMonthRe = formatRe(locale_shortMonths),\n        shortMonthLookup = formatLookup(locale_shortMonths);\n\n    var formats = {\n      \"a\": formatShortWeekday,\n      \"A\": formatWeekday,\n      \"b\": formatShortMonth,\n      \"B\": formatMonth,\n      \"c\": null,\n      \"d\": formatDayOfMonth,\n      \"e\": formatDayOfMonth,\n      \"f\": formatMicroseconds,\n      \"H\": formatHour24,\n      \"I\": formatHour12,\n      \"j\": formatDayOfYear,\n      \"L\": formatMilliseconds,\n      \"m\": formatMonthNumber,\n      \"M\": formatMinutes,\n      \"p\": formatPeriod,\n      \"q\": formatQuarter,\n      \"Q\": formatUnixTimestamp,\n      \"s\": formatUnixTimestampSeconds,\n      \"S\": formatSeconds,\n      \"u\": formatWeekdayNumberMonday,\n      \"U\": formatWeekNumberSunday,\n      \"V\": formatWeekNumberISO,\n      \"w\": formatWeekdayNumberSunday,\n      \"W\": formatWeekNumberMonday,\n      \"x\": null,\n      \"X\": null,\n      \"y\": formatYear,\n      \"Y\": formatFullYear,\n      \"Z\": formatZone,\n      \"%\": formatLiteralPercent\n    };\n\n    var utcFormats = {\n      \"a\": formatUTCShortWeekday,\n      \"A\": formatUTCWeekday,\n      \"b\": formatUTCShortMonth,\n      \"B\": formatUTCMonth,\n      \"c\": null,\n      \"d\": formatUTCDayOfMonth,\n      \"e\": formatUTCDayOfMonth,\n      \"f\": formatUTCMicroseconds,\n      \"H\": formatUTCHour24,\n      \"I\": formatUTCHour12,\n      \"j\": formatUTCDayOfYear,\n      \"L\": formatUTCMilliseconds,\n      \"m\": formatUTCMonthNumber,\n      \"M\": formatUTCMinutes,\n      \"p\": formatUTCPeriod,\n      \"q\": formatUTCQuarter,\n      \"Q\": formatUnixTimestamp,\n      \"s\": formatUnixTimestampSeconds,\n      \"S\": formatUTCSeconds,\n      \"u\": formatUTCWeekdayNumberMonday,\n      \"U\": formatUTCWeekNumberSunday,\n      \"V\": formatUTCWeekNumberISO,\n      \"w\": formatUTCWeekdayNumberSunday,\n      \"W\": formatUTCWeekNumberMonday,\n      \"x\": null,\n      \"X\": null,\n      \"y\": formatUTCYear,\n      \"Y\": formatUTCFullYear,\n      \"Z\": formatUTCZone,\n      \"%\": formatLiteralPercent\n    };\n\n    var parses = {\n      \"a\": parseShortWeekday,\n      \"A\": parseWeekday,\n      \"b\": parseShortMonth,\n      \"B\": parseMonth,\n      \"c\": parseLocaleDateTime,\n      \"d\": parseDayOfMonth,\n      \"e\": parseDayOfMonth,\n      \"f\": parseMicroseconds,\n      \"H\": parseHour24,\n      \"I\": parseHour24,\n      \"j\": parseDayOfYear,\n      \"L\": parseMilliseconds,\n      \"m\": parseMonthNumber,\n      \"M\": parseMinutes,\n      \"p\": parsePeriod,\n      \"q\": parseQuarter,\n      \"Q\": parseUnixTimestamp,\n      \"s\": parseUnixTimestampSeconds,\n      \"S\": parseSeconds,\n      \"u\": parseWeekdayNumberMonday,\n      \"U\": parseWeekNumberSunday,\n      \"V\": parseWeekNumberISO,\n      \"w\": parseWeekdayNumberSunday,\n      \"W\": parseWeekNumberMonday,\n      \"x\": parseLocaleDate,\n      \"X\": parseLocaleTime,\n      \"y\": parseYear,\n      \"Y\": parseFullYear,\n      \"Z\": parseZone,\n      \"%\": parseLiteralPercent\n    };\n\n    // These recursive directive definitions must be deferred.\n    formats.x = newFormat(locale_date, formats);\n    formats.X = newFormat(locale_time, formats);\n    formats.c = newFormat(locale_dateTime, formats);\n    utcFormats.x = newFormat(locale_date, utcFormats);\n    utcFormats.X = newFormat(locale_time, utcFormats);\n    utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n    function newFormat(specifier, formats) {\n      return function(date) {\n        var string = [],\n            i = -1,\n            j = 0,\n            n = specifier.length,\n            c,\n            pad,\n            format;\n\n        if (!(date instanceof Date)) date = new Date(+date);\n\n        while (++i < n) {\n          if (specifier.charCodeAt(i) === 37) {\n            string.push(specifier.slice(j, i));\n            if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n            else pad = c === \"e\" ? \" \" : \"0\";\n            if (format = formats[c]) c = format(date, pad);\n            string.push(c);\n            j = i + 1;\n          }\n        }\n\n        string.push(specifier.slice(j, i));\n        return string.join(\"\");\n      };\n    }\n\n    function newParse(specifier, Z) {\n      return function(string) {\n        var d = newDate(1900, undefined, 1),\n            i = parseSpecifier(d, specifier, string += \"\", 0),\n            week, day$1;\n        if (i != string.length) return null;\n\n        // If a UNIX timestamp is specified, return it.\n        if (\"Q\" in d) return new Date(d.Q);\n        if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n        // If this is utcParse, never use the local timezone.\n        if (Z && !(\"Z\" in d)) d.Z = 0;\n\n        // The am-pm flag is 0 for AM, and 1 for PM.\n        if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n        // If the month was not specified, inherit from the quarter.\n        if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n        // Convert day-of-week and week-of-year to day-of-year.\n        if (\"V\" in d) {\n          if (d.V < 1 || d.V > 53) return null;\n          if (!(\"w\" in d)) d.w = 1;\n          if (\"Z\" in d) {\n            week = utcDate(newDate(d.y, 0, 1)), day$1 = week.getUTCDay();\n            week = day$1 > 4 || day$1 === 0 ? utcMonday.ceil(week) : utcMonday(week);\n            week = utcDay.offset(week, (d.V - 1) * 7);\n            d.y = week.getUTCFullYear();\n            d.m = week.getUTCMonth();\n            d.d = week.getUTCDate() + (d.w + 6) % 7;\n          } else {\n            week = localDate(newDate(d.y, 0, 1)), day$1 = week.getDay();\n            week = day$1 > 4 || day$1 === 0 ? monday.ceil(week) : monday(week);\n            week = day.offset(week, (d.V - 1) * 7);\n            d.y = week.getFullYear();\n            d.m = week.getMonth();\n            d.d = week.getDate() + (d.w + 6) % 7;\n          }\n        } else if (\"W\" in d || \"U\" in d) {\n          if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n          day$1 = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n          d.m = 0;\n          d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day$1 + 5) % 7 : d.w + d.U * 7 - (day$1 + 6) % 7;\n        }\n\n        // If a time zone is specified, all fields are interpreted as UTC and then\n        // offset according to the specified time zone.\n        if (\"Z\" in d) {\n          d.H += d.Z / 100 | 0;\n          d.M += d.Z % 100;\n          return utcDate(d);\n        }\n\n        // Otherwise, all fields are in local time.\n        return localDate(d);\n      };\n    }\n\n    function parseSpecifier(d, specifier, string, j) {\n      var i = 0,\n          n = specifier.length,\n          m = string.length,\n          c,\n          parse;\n\n      while (i < n) {\n        if (j >= m) return -1;\n        c = specifier.charCodeAt(i++);\n        if (c === 37) {\n          c = specifier.charAt(i++);\n          parse = parses[c in pads ? specifier.charAt(i++) : c];\n          if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n        } else if (c != string.charCodeAt(j++)) {\n          return -1;\n        }\n      }\n\n      return j;\n    }\n\n    function parsePeriod(d, string, i) {\n      var n = periodRe.exec(string.slice(i));\n      return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n    }\n\n    function parseShortWeekday(d, string, i) {\n      var n = shortWeekdayRe.exec(string.slice(i));\n      return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n    }\n\n    function parseWeekday(d, string, i) {\n      var n = weekdayRe.exec(string.slice(i));\n      return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n    }\n\n    function parseShortMonth(d, string, i) {\n      var n = shortMonthRe.exec(string.slice(i));\n      return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n    }\n\n    function parseMonth(d, string, i) {\n      var n = monthRe.exec(string.slice(i));\n      return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n    }\n\n    function parseLocaleDateTime(d, string, i) {\n      return parseSpecifier(d, locale_dateTime, string, i);\n    }\n\n    function parseLocaleDate(d, string, i) {\n      return parseSpecifier(d, locale_date, string, i);\n    }\n\n    function parseLocaleTime(d, string, i) {\n      return parseSpecifier(d, locale_time, string, i);\n    }\n\n    function formatShortWeekday(d) {\n      return locale_shortWeekdays[d.getDay()];\n    }\n\n    function formatWeekday(d) {\n      return locale_weekdays[d.getDay()];\n    }\n\n    function formatShortMonth(d) {\n      return locale_shortMonths[d.getMonth()];\n    }\n\n    function formatMonth(d) {\n      return locale_months[d.getMonth()];\n    }\n\n    function formatPeriod(d) {\n      return locale_periods[+(d.getHours() >= 12)];\n    }\n\n    function formatQuarter(d) {\n      return 1 + ~~(d.getMonth() / 3);\n    }\n\n    function formatUTCShortWeekday(d) {\n      return locale_shortWeekdays[d.getUTCDay()];\n    }\n\n    function formatUTCWeekday(d) {\n      return locale_weekdays[d.getUTCDay()];\n    }\n\n    function formatUTCShortMonth(d) {\n      return locale_shortMonths[d.getUTCMonth()];\n    }\n\n    function formatUTCMonth(d) {\n      return locale_months[d.getUTCMonth()];\n    }\n\n    function formatUTCPeriod(d) {\n      return locale_periods[+(d.getUTCHours() >= 12)];\n    }\n\n    function formatUTCQuarter(d) {\n      return 1 + ~~(d.getUTCMonth() / 3);\n    }\n\n    return {\n      format: function(specifier) {\n        var f = newFormat(specifier += \"\", formats);\n        f.toString = function() { return specifier; };\n        return f;\n      },\n      parse: function(specifier) {\n        var p = newParse(specifier += \"\", false);\n        p.toString = function() { return specifier; };\n        return p;\n      },\n      utcFormat: function(specifier) {\n        var f = newFormat(specifier += \"\", utcFormats);\n        f.toString = function() { return specifier; };\n        return f;\n      },\n      utcParse: function(specifier) {\n        var p = newParse(specifier += \"\", true);\n        p.toString = function() { return specifier; };\n        return p;\n      }\n    };\n  }\n\n  var pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n      numberRe = /^\\s*\\d+/, // note: ignores next directive\n      percentRe = /^%/,\n      requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\n  function pad(value, fill, width) {\n    var sign = value < 0 ? \"-\" : \"\",\n        string = (sign ? -value : value) + \"\",\n        length = string.length;\n    return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n  }\n\n  function requote(s) {\n    return s.replace(requoteRe, \"\\\\$&\");\n  }\n\n  function formatRe(names) {\n    return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n  }\n\n  function formatLookup(names) {\n    var map = {}, i = -1, n = names.length;\n    while (++i < n) map[names[i].toLowerCase()] = i;\n    return map;\n  }\n\n  function parseWeekdayNumberSunday(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 1));\n    return n ? (d.w = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseWeekdayNumberMonday(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 1));\n    return n ? (d.u = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseWeekNumberSunday(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 2));\n    return n ? (d.U = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseWeekNumberISO(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 2));\n    return n ? (d.V = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseWeekNumberMonday(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 2));\n    return n ? (d.W = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseFullYear(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 4));\n    return n ? (d.y = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseYear(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 2));\n    return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n  }\n\n  function parseZone(d, string, i) {\n    var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n    return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n  }\n\n  function parseQuarter(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 1));\n    return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n  }\n\n  function parseMonthNumber(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 2));\n    return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n  }\n\n  function parseDayOfMonth(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 2));\n    return n ? (d.d = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseDayOfYear(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 3));\n    return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseHour24(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 2));\n    return n ? (d.H = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseMinutes(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 2));\n    return n ? (d.M = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseSeconds(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 2));\n    return n ? (d.S = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseMilliseconds(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 3));\n    return n ? (d.L = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseMicroseconds(d, string, i) {\n    var n = numberRe.exec(string.slice(i, i + 6));\n    return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n  }\n\n  function parseLiteralPercent(d, string, i) {\n    var n = percentRe.exec(string.slice(i, i + 1));\n    return n ? i + n[0].length : -1;\n  }\n\n  function parseUnixTimestamp(d, string, i) {\n    var n = numberRe.exec(string.slice(i));\n    return n ? (d.Q = +n[0], i + n[0].length) : -1;\n  }\n\n  function parseUnixTimestampSeconds(d, string, i) {\n    var n = numberRe.exec(string.slice(i));\n    return n ? (d.s = +n[0], i + n[0].length) : -1;\n  }\n\n  function formatDayOfMonth(d, p) {\n    return pad(d.getDate(), p, 2);\n  }\n\n  function formatHour24(d, p) {\n    return pad(d.getHours(), p, 2);\n  }\n\n  function formatHour12(d, p) {\n    return pad(d.getHours() % 12 || 12, p, 2);\n  }\n\n  function formatDayOfYear(d, p) {\n    return pad(1 + day.count(year(d), d), p, 3);\n  }\n\n  function formatMilliseconds(d, p) {\n    return pad(d.getMilliseconds(), p, 3);\n  }\n\n  function formatMicroseconds(d, p) {\n    return formatMilliseconds(d, p) + \"000\";\n  }\n\n  function formatMonthNumber(d, p) {\n    return pad(d.getMonth() + 1, p, 2);\n  }\n\n  function formatMinutes(d, p) {\n    return pad(d.getMinutes(), p, 2);\n  }\n\n  function formatSeconds(d, p) {\n    return pad(d.getSeconds(), p, 2);\n  }\n\n  function formatWeekdayNumberMonday(d) {\n    var day = d.getDay();\n    return day === 0 ? 7 : day;\n  }\n\n  function formatWeekNumberSunday(d, p) {\n    return pad(sunday.count(year(d) - 1, d), p, 2);\n  }\n\n  function formatWeekNumberISO(d, p) {\n    var day = d.getDay();\n    d = (day >= 4 || day === 0) ? thursday(d) : thursday.ceil(d);\n    return pad(thursday.count(year(d), d) + (year(d).getDay() === 4), p, 2);\n  }\n\n  function formatWeekdayNumberSunday(d) {\n    return d.getDay();\n  }\n\n  function formatWeekNumberMonday(d, p) {\n    return pad(monday.count(year(d) - 1, d), p, 2);\n  }\n\n  function formatYear(d, p) {\n    return pad(d.getFullYear() % 100, p, 2);\n  }\n\n  function formatFullYear(d, p) {\n    return pad(d.getFullYear() % 10000, p, 4);\n  }\n\n  function formatZone(d) {\n    var z = d.getTimezoneOffset();\n    return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n        + pad(z / 60 | 0, \"0\", 2)\n        + pad(z % 60, \"0\", 2);\n  }\n\n  function formatUTCDayOfMonth(d, p) {\n    return pad(d.getUTCDate(), p, 2);\n  }\n\n  function formatUTCHour24(d, p) {\n    return pad(d.getUTCHours(), p, 2);\n  }\n\n  function formatUTCHour12(d, p) {\n    return pad(d.getUTCHours() % 12 || 12, p, 2);\n  }\n\n  function formatUTCDayOfYear(d, p) {\n    return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n  }\n\n  function formatUTCMilliseconds(d, p) {\n    return pad(d.getUTCMilliseconds(), p, 3);\n  }\n\n  function formatUTCMicroseconds(d, p) {\n    return formatUTCMilliseconds(d, p) + \"000\";\n  }\n\n  function formatUTCMonthNumber(d, p) {\n    return pad(d.getUTCMonth() + 1, p, 2);\n  }\n\n  function formatUTCMinutes(d, p) {\n    return pad(d.getUTCMinutes(), p, 2);\n  }\n\n  function formatUTCSeconds(d, p) {\n    return pad(d.getUTCSeconds(), p, 2);\n  }\n\n  function formatUTCWeekdayNumberMonday(d) {\n    var dow = d.getUTCDay();\n    return dow === 0 ? 7 : dow;\n  }\n\n  function formatUTCWeekNumberSunday(d, p) {\n    return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n  }\n\n  function formatUTCWeekNumberISO(d, p) {\n    var day = d.getUTCDay();\n    d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n    return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n  }\n\n  function formatUTCWeekdayNumberSunday(d) {\n    return d.getUTCDay();\n  }\n\n  function formatUTCWeekNumberMonday(d, p) {\n    return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n  }\n\n  function formatUTCYear(d, p) {\n    return pad(d.getUTCFullYear() % 100, p, 2);\n  }\n\n  function formatUTCFullYear(d, p) {\n    return pad(d.getUTCFullYear() % 10000, p, 4);\n  }\n\n  function formatUTCZone() {\n    return \"+0000\";\n  }\n\n  function formatLiteralPercent() {\n    return \"%\";\n  }\n\n  function formatUnixTimestamp(d) {\n    return +d;\n  }\n\n  function formatUnixTimestampSeconds(d) {\n    return Math.floor(+d / 1000);\n  }\n\n  var locale$1;\n  var timeFormat;\n  var timeParse;\n  var utcFormat;\n  var utcParse;\n\n  defaultLocale$1({\n    dateTime: \"%x, %X\",\n    date: \"%-m/%-d/%Y\",\n    time: \"%-I:%M:%S %p\",\n    periods: [\"AM\", \"PM\"],\n    days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n    shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n    months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n    shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n  });\n\n  function defaultLocale$1(definition) {\n    locale$1 = formatLocale$1(definition);\n    timeFormat = locale$1.format;\n    timeParse = locale$1.parse;\n    utcFormat = locale$1.utcFormat;\n    utcParse = locale$1.utcParse;\n    return locale$1;\n  }\n\n  var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\n  function formatIsoNative(date) {\n    return date.toISOString();\n  }\n\n  var formatIso = Date.prototype.toISOString\n      ? formatIsoNative\n      : utcFormat(isoSpecifier);\n\n  function parseIsoNative(string) {\n    var date = new Date(string);\n    return isNaN(date) ? null : date;\n  }\n\n  var parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n      ? parseIsoNative\n      : utcParse(isoSpecifier);\n\n  var noop = {value: function() {}};\n\n  function dispatch() {\n    for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n      if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n      _[t] = [];\n    }\n    return new Dispatch(_);\n  }\n\n  function Dispatch(_) {\n    this._ = _;\n  }\n\n  function parseTypenames(typenames, types) {\n    return typenames.trim().split(/^|\\s+/).map(function(t) {\n      var name = \"\", i = t.indexOf(\".\");\n      if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n      if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n      return {type: t, name: name};\n    });\n  }\n\n  Dispatch.prototype = dispatch.prototype = {\n    constructor: Dispatch,\n    on: function(typename, callback) {\n      var _ = this._,\n          T = parseTypenames(typename + \"\", _),\n          t,\n          i = -1,\n          n = T.length;\n\n      // If no callback was specified, return the callback of the given type and name.\n      if (arguments.length < 2) {\n        while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n        return;\n      }\n\n      // If a type was specified, set the callback for the given type and name.\n      // Otherwise, if a null callback was specified, remove callbacks of the given name.\n      if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n      while (++i < n) {\n        if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n        else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n      }\n\n      return this;\n    },\n    copy: function() {\n      var copy = {}, _ = this._;\n      for (var t in _) copy[t] = _[t].slice();\n      return new Dispatch(copy);\n    },\n    call: function(type, that) {\n      if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n      if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n      for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n    },\n    apply: function(type, that, args) {\n      if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n      for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n    }\n  };\n\n  function get(type, name) {\n    for (var i = 0, n = type.length, c; i < n; ++i) {\n      if ((c = type[i]).name === name) {\n        return c.value;\n      }\n    }\n  }\n\n  function set(type, name, callback) {\n    for (var i = 0, n = type.length; i < n; ++i) {\n      if (type[i].name === name) {\n        type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n        break;\n      }\n    }\n    if (callback != null) type.push({name: name, value: callback});\n    return type;\n  }\n\n  var xhtml = \"http://www.w3.org/1999/xhtml\";\n\n  var namespaces = {\n    svg: \"http://www.w3.org/2000/svg\",\n    xhtml: xhtml,\n    xlink: \"http://www.w3.org/1999/xlink\",\n    xml: \"http://www.w3.org/XML/1998/namespace\",\n    xmlns: \"http://www.w3.org/2000/xmlns/\"\n  };\n\n  function namespace(name) {\n    var prefix = name += \"\", i = prefix.indexOf(\":\");\n    if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n    return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n  }\n\n  function creatorInherit(name) {\n    return function() {\n      var document = this.ownerDocument,\n          uri = this.namespaceURI;\n      return uri === xhtml && document.documentElement.namespaceURI === xhtml\n          ? document.createElement(name)\n          : document.createElementNS(uri, name);\n    };\n  }\n\n  function creatorFixed(fullname) {\n    return function() {\n      return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n    };\n  }\n\n  function creator(name) {\n    var fullname = namespace(name);\n    return (fullname.local\n        ? creatorFixed\n        : creatorInherit)(fullname);\n  }\n\n  function none() {}\n\n  function selector(selector) {\n    return selector == null ? none : function() {\n      return this.querySelector(selector);\n    };\n  }\n\n  function selection_select(select) {\n    if (typeof select !== \"function\") select = selector(select);\n\n    for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n      for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n        if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n          if (\"__data__\" in node) subnode.__data__ = node.__data__;\n          subgroup[i] = subnode;\n        }\n      }\n    }\n\n    return new Selection(subgroups, this._parents);\n  }\n\n  function empty() {\n    return [];\n  }\n\n  function selectorAll(selector) {\n    return selector == null ? empty : function() {\n      return this.querySelectorAll(selector);\n    };\n  }\n\n  function selection_selectAll(select) {\n    if (typeof select !== \"function\") select = selectorAll(select);\n\n    for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n      for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n        if (node = group[i]) {\n          subgroups.push(select.call(node, node.__data__, i, group));\n          parents.push(node);\n        }\n      }\n    }\n\n    return new Selection(subgroups, parents);\n  }\n\n  function matcher(selector) {\n    return function() {\n      return this.matches(selector);\n    };\n  }\n\n  function selection_filter(match) {\n    if (typeof match !== \"function\") match = matcher(match);\n\n    for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n      for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n        if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n          subgroup.push(node);\n        }\n      }\n    }\n\n    return new Selection(subgroups, this._parents);\n  }\n\n  function sparse(update) {\n    return new Array(update.length);\n  }\n\n  function selection_enter() {\n    return new Selection(this._enter || this._groups.map(sparse), this._parents);\n  }\n\n  function EnterNode(parent, datum) {\n    this.ownerDocument = parent.ownerDocument;\n    this.namespaceURI = parent.namespaceURI;\n    this._next = null;\n    this._parent = parent;\n    this.__data__ = datum;\n  }\n\n  EnterNode.prototype = {\n    constructor: EnterNode,\n    appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n    insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n    querySelector: function(selector) { return this._parent.querySelector(selector); },\n    querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n  };\n\n  function constant$2(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  var keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\n  function bindIndex(parent, group, enter, update, exit, data) {\n    var i = 0,\n        node,\n        groupLength = group.length,\n        dataLength = data.length;\n\n    // Put any non-null nodes that fit into update.\n    // Put any null nodes into enter.\n    // Put any remaining data into enter.\n    for (; i < dataLength; ++i) {\n      if (node = group[i]) {\n        node.__data__ = data[i];\n        update[i] = node;\n      } else {\n        enter[i] = new EnterNode(parent, data[i]);\n      }\n    }\n\n    // Put any non-null nodes that don’t fit into exit.\n    for (; i < groupLength; ++i) {\n      if (node = group[i]) {\n        exit[i] = node;\n      }\n    }\n  }\n\n  function bindKey(parent, group, enter, update, exit, data, key) {\n    var i,\n        node,\n        nodeByKeyValue = {},\n        groupLength = group.length,\n        dataLength = data.length,\n        keyValues = new Array(groupLength),\n        keyValue;\n\n    // Compute the key for each node.\n    // If multiple nodes have the same key, the duplicates are added to exit.\n    for (i = 0; i < groupLength; ++i) {\n      if (node = group[i]) {\n        keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n        if (keyValue in nodeByKeyValue) {\n          exit[i] = node;\n        } else {\n          nodeByKeyValue[keyValue] = node;\n        }\n      }\n    }\n\n    // Compute the key for each datum.\n    // If there a node associated with this key, join and add it to update.\n    // If there is not (or the key is a duplicate), add it to enter.\n    for (i = 0; i < dataLength; ++i) {\n      keyValue = keyPrefix + key.call(parent, data[i], i, data);\n      if (node = nodeByKeyValue[keyValue]) {\n        update[i] = node;\n        node.__data__ = data[i];\n        nodeByKeyValue[keyValue] = null;\n      } else {\n        enter[i] = new EnterNode(parent, data[i]);\n      }\n    }\n\n    // Add any remaining nodes that were not bound to data to exit.\n    for (i = 0; i < groupLength; ++i) {\n      if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n        exit[i] = node;\n      }\n    }\n  }\n\n  function selection_data(value, key) {\n    if (!value) {\n      data = new Array(this.size()), j = -1;\n      this.each(function(d) { data[++j] = d; });\n      return data;\n    }\n\n    var bind = key ? bindKey : bindIndex,\n        parents = this._parents,\n        groups = this._groups;\n\n    if (typeof value !== \"function\") value = constant$2(value);\n\n    for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n      var parent = parents[j],\n          group = groups[j],\n          groupLength = group.length,\n          data = value.call(parent, parent && parent.__data__, j, parents),\n          dataLength = data.length,\n          enterGroup = enter[j] = new Array(dataLength),\n          updateGroup = update[j] = new Array(dataLength),\n          exitGroup = exit[j] = new Array(groupLength);\n\n      bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n      // Now connect the enter nodes to their following update node, such that\n      // appendChild can insert the materialized enter node before this node,\n      // rather than at the end of the parent node.\n      for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n        if (previous = enterGroup[i0]) {\n          if (i0 >= i1) i1 = i0 + 1;\n          while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n          previous._next = next || null;\n        }\n      }\n    }\n\n    update = new Selection(update, parents);\n    update._enter = enter;\n    update._exit = exit;\n    return update;\n  }\n\n  function selection_exit() {\n    return new Selection(this._exit || this._groups.map(sparse), this._parents);\n  }\n\n  function selection_join(onenter, onupdate, onexit) {\n    var enter = this.enter(), update = this, exit = this.exit();\n    enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n    if (onupdate != null) update = onupdate(update);\n    if (onexit == null) exit.remove(); else onexit(exit);\n    return enter && update ? enter.merge(update).order() : update;\n  }\n\n  function selection_merge(selection) {\n\n    for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n      for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n        if (node = group0[i] || group1[i]) {\n          merge[i] = node;\n        }\n      }\n    }\n\n    for (; j < m0; ++j) {\n      merges[j] = groups0[j];\n    }\n\n    return new Selection(merges, this._parents);\n  }\n\n  function selection_order() {\n\n    for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n      for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n        if (node = group[i]) {\n          if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n          next = node;\n        }\n      }\n    }\n\n    return this;\n  }\n\n  function selection_sort(compare) {\n    if (!compare) compare = ascending$1;\n\n    function compareNode(a, b) {\n      return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n    }\n\n    for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n      for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n        if (node = group[i]) {\n          sortgroup[i] = node;\n        }\n      }\n      sortgroup.sort(compareNode);\n    }\n\n    return new Selection(sortgroups, this._parents).order();\n  }\n\n  function ascending$1(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n\n  function selection_call() {\n    var callback = arguments[0];\n    arguments[0] = this;\n    callback.apply(null, arguments);\n    return this;\n  }\n\n  function selection_nodes() {\n    var nodes = new Array(this.size()), i = -1;\n    this.each(function() { nodes[++i] = this; });\n    return nodes;\n  }\n\n  function selection_node() {\n\n    for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n      for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n        var node = group[i];\n        if (node) return node;\n      }\n    }\n\n    return null;\n  }\n\n  function selection_size() {\n    var size = 0;\n    this.each(function() { ++size; });\n    return size;\n  }\n\n  function selection_empty() {\n    return !this.node();\n  }\n\n  function selection_each(callback) {\n\n    for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n      for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n        if (node = group[i]) callback.call(node, node.__data__, i, group);\n      }\n    }\n\n    return this;\n  }\n\n  function attrRemove(name) {\n    return function() {\n      this.removeAttribute(name);\n    };\n  }\n\n  function attrRemoveNS(fullname) {\n    return function() {\n      this.removeAttributeNS(fullname.space, fullname.local);\n    };\n  }\n\n  function attrConstant(name, value) {\n    return function() {\n      this.setAttribute(name, value);\n    };\n  }\n\n  function attrConstantNS(fullname, value) {\n    return function() {\n      this.setAttributeNS(fullname.space, fullname.local, value);\n    };\n  }\n\n  function attrFunction(name, value) {\n    return function() {\n      var v = value.apply(this, arguments);\n      if (v == null) this.removeAttribute(name);\n      else this.setAttribute(name, v);\n    };\n  }\n\n  function attrFunctionNS(fullname, value) {\n    return function() {\n      var v = value.apply(this, arguments);\n      if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n      else this.setAttributeNS(fullname.space, fullname.local, v);\n    };\n  }\n\n  function selection_attr(name, value) {\n    var fullname = namespace(name);\n\n    if (arguments.length < 2) {\n      var node = this.node();\n      return fullname.local\n          ? node.getAttributeNS(fullname.space, fullname.local)\n          : node.getAttribute(fullname);\n    }\n\n    return this.each((value == null\n        ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n        ? (fullname.local ? attrFunctionNS : attrFunction)\n        : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n  }\n\n  function defaultView(node) {\n    return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n        || (node.document && node) // node is a Window\n        || node.defaultView; // node is a Document\n  }\n\n  function styleRemove(name) {\n    return function() {\n      this.style.removeProperty(name);\n    };\n  }\n\n  function styleConstant(name, value, priority) {\n    return function() {\n      this.style.setProperty(name, value, priority);\n    };\n  }\n\n  function styleFunction(name, value, priority) {\n    return function() {\n      var v = value.apply(this, arguments);\n      if (v == null) this.style.removeProperty(name);\n      else this.style.setProperty(name, v, priority);\n    };\n  }\n\n  function selection_style(name, value, priority) {\n    return arguments.length > 1\n        ? this.each((value == null\n              ? styleRemove : typeof value === \"function\"\n              ? styleFunction\n              : styleConstant)(name, value, priority == null ? \"\" : priority))\n        : styleValue(this.node(), name);\n  }\n\n  function styleValue(node, name) {\n    return node.style.getPropertyValue(name)\n        || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n  }\n\n  function propertyRemove(name) {\n    return function() {\n      delete this[name];\n    };\n  }\n\n  function propertyConstant(name, value) {\n    return function() {\n      this[name] = value;\n    };\n  }\n\n  function propertyFunction(name, value) {\n    return function() {\n      var v = value.apply(this, arguments);\n      if (v == null) delete this[name];\n      else this[name] = v;\n    };\n  }\n\n  function selection_property(name, value) {\n    return arguments.length > 1\n        ? this.each((value == null\n            ? propertyRemove : typeof value === \"function\"\n            ? propertyFunction\n            : propertyConstant)(name, value))\n        : this.node()[name];\n  }\n\n  function classArray(string) {\n    return string.trim().split(/^|\\s+/);\n  }\n\n  function classList(node) {\n    return node.classList || new ClassList(node);\n  }\n\n  function ClassList(node) {\n    this._node = node;\n    this._names = classArray(node.getAttribute(\"class\") || \"\");\n  }\n\n  ClassList.prototype = {\n    add: function(name) {\n      var i = this._names.indexOf(name);\n      if (i < 0) {\n        this._names.push(name);\n        this._node.setAttribute(\"class\", this._names.join(\" \"));\n      }\n    },\n    remove: function(name) {\n      var i = this._names.indexOf(name);\n      if (i >= 0) {\n        this._names.splice(i, 1);\n        this._node.setAttribute(\"class\", this._names.join(\" \"));\n      }\n    },\n    contains: function(name) {\n      return this._names.indexOf(name) >= 0;\n    }\n  };\n\n  function classedAdd(node, names) {\n    var list = classList(node), i = -1, n = names.length;\n    while (++i < n) list.add(names[i]);\n  }\n\n  function classedRemove(node, names) {\n    var list = classList(node), i = -1, n = names.length;\n    while (++i < n) list.remove(names[i]);\n  }\n\n  function classedTrue(names) {\n    return function() {\n      classedAdd(this, names);\n    };\n  }\n\n  function classedFalse(names) {\n    return function() {\n      classedRemove(this, names);\n    };\n  }\n\n  function classedFunction(names, value) {\n    return function() {\n      (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n    };\n  }\n\n  function selection_classed(name, value) {\n    var names = classArray(name + \"\");\n\n    if (arguments.length < 2) {\n      var list = classList(this.node()), i = -1, n = names.length;\n      while (++i < n) if (!list.contains(names[i])) return false;\n      return true;\n    }\n\n    return this.each((typeof value === \"function\"\n        ? classedFunction : value\n        ? classedTrue\n        : classedFalse)(names, value));\n  }\n\n  function textRemove() {\n    this.textContent = \"\";\n  }\n\n  function textConstant(value) {\n    return function() {\n      this.textContent = value;\n    };\n  }\n\n  function textFunction(value) {\n    return function() {\n      var v = value.apply(this, arguments);\n      this.textContent = v == null ? \"\" : v;\n    };\n  }\n\n  function selection_text(value) {\n    return arguments.length\n        ? this.each(value == null\n            ? textRemove : (typeof value === \"function\"\n            ? textFunction\n            : textConstant)(value))\n        : this.node().textContent;\n  }\n\n  function htmlRemove() {\n    this.innerHTML = \"\";\n  }\n\n  function htmlConstant(value) {\n    return function() {\n      this.innerHTML = value;\n    };\n  }\n\n  function htmlFunction(value) {\n    return function() {\n      var v = value.apply(this, arguments);\n      this.innerHTML = v == null ? \"\" : v;\n    };\n  }\n\n  function selection_html(value) {\n    return arguments.length\n        ? this.each(value == null\n            ? htmlRemove : (typeof value === \"function\"\n            ? htmlFunction\n            : htmlConstant)(value))\n        : this.node().innerHTML;\n  }\n\n  function raise() {\n    if (this.nextSibling) this.parentNode.appendChild(this);\n  }\n\n  function selection_raise() {\n    return this.each(raise);\n  }\n\n  function lower() {\n    if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n  }\n\n  function selection_lower() {\n    return this.each(lower);\n  }\n\n  function selection_append(name) {\n    var create = typeof name === \"function\" ? name : creator(name);\n    return this.select(function() {\n      return this.appendChild(create.apply(this, arguments));\n    });\n  }\n\n  function constantNull() {\n    return null;\n  }\n\n  function selection_insert(name, before) {\n    var create = typeof name === \"function\" ? name : creator(name),\n        select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n    return this.select(function() {\n      return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n    });\n  }\n\n  function remove() {\n    var parent = this.parentNode;\n    if (parent) parent.removeChild(this);\n  }\n\n  function selection_remove() {\n    return this.each(remove);\n  }\n\n  function selection_cloneShallow() {\n    var clone = this.cloneNode(false), parent = this.parentNode;\n    return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n  }\n\n  function selection_cloneDeep() {\n    var clone = this.cloneNode(true), parent = this.parentNode;\n    return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n  }\n\n  function selection_clone(deep) {\n    return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n  }\n\n  function selection_datum(value) {\n    return arguments.length\n        ? this.property(\"__data__\", value)\n        : this.node().__data__;\n  }\n\n  var filterEvents = {};\n\n  var event = null;\n\n  if (typeof document !== \"undefined\") {\n    var element = document.documentElement;\n    if (!(\"onmouseenter\" in element)) {\n      filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n    }\n  }\n\n  function filterContextListener(listener, index, group) {\n    listener = contextListener(listener, index, group);\n    return function(event) {\n      var related = event.relatedTarget;\n      if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n        listener.call(this, event);\n      }\n    };\n  }\n\n  function contextListener(listener, index, group) {\n    return function(event1) {\n      var event0 = event; // Events can be reentrant (e.g., focus).\n      event = event1;\n      try {\n        listener.call(this, this.__data__, index, group);\n      } finally {\n        event = event0;\n      }\n    };\n  }\n\n  function parseTypenames$1(typenames) {\n    return typenames.trim().split(/^|\\s+/).map(function(t) {\n      var name = \"\", i = t.indexOf(\".\");\n      if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n      return {type: t, name: name};\n    });\n  }\n\n  function onRemove(typename) {\n    return function() {\n      var on = this.__on;\n      if (!on) return;\n      for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n        if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n          this.removeEventListener(o.type, o.listener, o.capture);\n        } else {\n          on[++i] = o;\n        }\n      }\n      if (++i) on.length = i;\n      else delete this.__on;\n    };\n  }\n\n  function onAdd(typename, value, capture) {\n    var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n    return function(d, i, group) {\n      var on = this.__on, o, listener = wrap(value, i, group);\n      if (on) for (var j = 0, m = on.length; j < m; ++j) {\n        if ((o = on[j]).type === typename.type && o.name === typename.name) {\n          this.removeEventListener(o.type, o.listener, o.capture);\n          this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n          o.value = value;\n          return;\n        }\n      }\n      this.addEventListener(typename.type, listener, capture);\n      o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n      if (!on) this.__on = [o];\n      else on.push(o);\n    };\n  }\n\n  function selection_on(typename, value, capture) {\n    var typenames = parseTypenames$1(typename + \"\"), i, n = typenames.length, t;\n\n    if (arguments.length < 2) {\n      var on = this.node().__on;\n      if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n        for (i = 0, o = on[j]; i < n; ++i) {\n          if ((t = typenames[i]).type === o.type && t.name === o.name) {\n            return o.value;\n          }\n        }\n      }\n      return;\n    }\n\n    on = value ? onAdd : onRemove;\n    if (capture == null) capture = false;\n    for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n    return this;\n  }\n\n  function customEvent(event1, listener, that, args) {\n    var event0 = event;\n    event1.sourceEvent = event;\n    event = event1;\n    try {\n      return listener.apply(that, args);\n    } finally {\n      event = event0;\n    }\n  }\n\n  function dispatchEvent(node, type, params) {\n    var window = defaultView(node),\n        event = window.CustomEvent;\n\n    if (typeof event === \"function\") {\n      event = new event(type, params);\n    } else {\n      event = window.document.createEvent(\"Event\");\n      if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n      else event.initEvent(type, false, false);\n    }\n\n    node.dispatchEvent(event);\n  }\n\n  function dispatchConstant(type, params) {\n    return function() {\n      return dispatchEvent(this, type, params);\n    };\n  }\n\n  function dispatchFunction(type, params) {\n    return function() {\n      return dispatchEvent(this, type, params.apply(this, arguments));\n    };\n  }\n\n  function selection_dispatch(type, params) {\n    return this.each((typeof params === \"function\"\n        ? dispatchFunction\n        : dispatchConstant)(type, params));\n  }\n\n  var root = [null];\n\n  function Selection(groups, parents) {\n    this._groups = groups;\n    this._parents = parents;\n  }\n\n  function selection() {\n    return new Selection([[document.documentElement]], root);\n  }\n\n  Selection.prototype = selection.prototype = {\n    constructor: Selection,\n    select: selection_select,\n    selectAll: selection_selectAll,\n    filter: selection_filter,\n    data: selection_data,\n    enter: selection_enter,\n    exit: selection_exit,\n    join: selection_join,\n    merge: selection_merge,\n    order: selection_order,\n    sort: selection_sort,\n    call: selection_call,\n    nodes: selection_nodes,\n    node: selection_node,\n    size: selection_size,\n    empty: selection_empty,\n    each: selection_each,\n    attr: selection_attr,\n    style: selection_style,\n    property: selection_property,\n    classed: selection_classed,\n    text: selection_text,\n    html: selection_html,\n    raise: selection_raise,\n    lower: selection_lower,\n    append: selection_append,\n    insert: selection_insert,\n    remove: selection_remove,\n    clone: selection_clone,\n    datum: selection_datum,\n    on: selection_on,\n    dispatch: selection_dispatch\n  };\n\n  function select(selector) {\n    return typeof selector === \"string\"\n        ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n        : new Selection([[selector]], root);\n  }\n\n  function sourceEvent() {\n    var current = event, source;\n    while (source = current.sourceEvent) current = source;\n    return current;\n  }\n\n  function point(node, event) {\n    var svg = node.ownerSVGElement || node;\n\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      point.x = event.clientX, point.y = event.clientY;\n      point = point.matrixTransform(node.getScreenCTM().inverse());\n      return [point.x, point.y];\n    }\n\n    var rect = node.getBoundingClientRect();\n    return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n  }\n\n  function mouse(node) {\n    var event = sourceEvent();\n    if (event.changedTouches) event = event.changedTouches[0];\n    return point(node, event);\n  }\n\n  function touch(node, touches, identifier) {\n    if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n    for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n      if ((touch = touches[i]).identifier === identifier) {\n        return point(node, touch);\n      }\n    }\n\n    return null;\n  }\n\n  function nopropagation() {\n    event.stopImmediatePropagation();\n  }\n\n  function noevent() {\n    event.preventDefault();\n    event.stopImmediatePropagation();\n  }\n\n  function nodrag(view) {\n    var root = view.document.documentElement,\n        selection = select(view).on(\"dragstart.drag\", noevent, true);\n    if (\"onselectstart\" in root) {\n      selection.on(\"selectstart.drag\", noevent, true);\n    } else {\n      root.__noselect = root.style.MozUserSelect;\n      root.style.MozUserSelect = \"none\";\n    }\n  }\n\n  function yesdrag(view, noclick) {\n    var root = view.document.documentElement,\n        selection = select(view).on(\"dragstart.drag\", null);\n    if (noclick) {\n      selection.on(\"click.drag\", noevent, true);\n      setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n    }\n    if (\"onselectstart\" in root) {\n      selection.on(\"selectstart.drag\", null);\n    } else {\n      root.style.MozUserSelect = root.__noselect;\n      delete root.__noselect;\n    }\n  }\n\n  function constant$3(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n    this.target = target;\n    this.type = type;\n    this.subject = subject;\n    this.identifier = id;\n    this.active = active;\n    this.x = x;\n    this.y = y;\n    this.dx = dx;\n    this.dy = dy;\n    this._ = dispatch;\n  }\n\n  DragEvent.prototype.on = function() {\n    var value = this._.on.apply(this._, arguments);\n    return value === this._ ? this : value;\n  };\n\n  // Ignore right-click, since that should open the context menu.\n  function defaultFilter() {\n    return !event.ctrlKey && !event.button;\n  }\n\n  function defaultContainer() {\n    return this.parentNode;\n  }\n\n  function defaultSubject(d) {\n    return d == null ? {x: event.x, y: event.y} : d;\n  }\n\n  function defaultTouchable() {\n    return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n  }\n\n  function drag() {\n    var filter = defaultFilter,\n        container = defaultContainer,\n        subject = defaultSubject,\n        touchable = defaultTouchable,\n        gestures = {},\n        listeners = dispatch(\"start\", \"drag\", \"end\"),\n        active = 0,\n        mousedownx,\n        mousedowny,\n        mousemoving,\n        touchending,\n        clickDistance2 = 0;\n\n    function drag(selection) {\n      selection\n          .on(\"mousedown.drag\", mousedowned)\n        .filter(touchable)\n          .on(\"touchstart.drag\", touchstarted)\n          .on(\"touchmove.drag\", touchmoved)\n          .on(\"touchend.drag touchcancel.drag\", touchended)\n          .style(\"touch-action\", \"none\")\n          .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n    }\n\n    function mousedowned() {\n      if (touchending || !filter.apply(this, arguments)) return;\n      var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n      if (!gesture) return;\n      select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n      nodrag(event.view);\n      nopropagation();\n      mousemoving = false;\n      mousedownx = event.clientX;\n      mousedowny = event.clientY;\n      gesture(\"start\");\n    }\n\n    function mousemoved() {\n      noevent();\n      if (!mousemoving) {\n        var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n        mousemoving = dx * dx + dy * dy > clickDistance2;\n      }\n      gestures.mouse(\"drag\");\n    }\n\n    function mouseupped() {\n      select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n      yesdrag(event.view, mousemoving);\n      noevent();\n      gestures.mouse(\"end\");\n    }\n\n    function touchstarted() {\n      if (!filter.apply(this, arguments)) return;\n      var touches = event.changedTouches,\n          c = container.apply(this, arguments),\n          n = touches.length, i, gesture;\n\n      for (i = 0; i < n; ++i) {\n        if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n          nopropagation();\n          gesture(\"start\");\n        }\n      }\n    }\n\n    function touchmoved() {\n      var touches = event.changedTouches,\n          n = touches.length, i, gesture;\n\n      for (i = 0; i < n; ++i) {\n        if (gesture = gestures[touches[i].identifier]) {\n          noevent();\n          gesture(\"drag\");\n        }\n      }\n    }\n\n    function touchended() {\n      var touches = event.changedTouches,\n          n = touches.length, i, gesture;\n\n      if (touchending) clearTimeout(touchending);\n      touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      for (i = 0; i < n; ++i) {\n        if (gesture = gestures[touches[i].identifier]) {\n          nopropagation();\n          gesture(\"end\");\n        }\n      }\n    }\n\n    function beforestart(id, container, point, that, args) {\n      var p = point(container, id), s, dx, dy,\n          sublisteners = listeners.copy();\n\n      if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n        if ((event.subject = s = subject.apply(that, args)) == null) return false;\n        dx = s.x - p[0] || 0;\n        dy = s.y - p[1] || 0;\n        return true;\n      })) return;\n\n      return function gesture(type) {\n        var p0 = p, n;\n        switch (type) {\n          case \"start\": gestures[id] = gesture, n = active++; break;\n          case \"end\": delete gestures[id], --active; // nobreak\n          case \"drag\": p = point(container, id), n = active; break;\n        }\n        customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n      };\n    }\n\n    drag.filter = function(_) {\n      return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant$3(!!_), drag) : filter;\n    };\n\n    drag.container = function(_) {\n      return arguments.length ? (container = typeof _ === \"function\" ? _ : constant$3(_), drag) : container;\n    };\n\n    drag.subject = function(_) {\n      return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant$3(_), drag) : subject;\n    };\n\n    drag.touchable = function(_) {\n      return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant$3(!!_), drag) : touchable;\n    };\n\n    drag.on = function() {\n      var value = listeners.on.apply(listeners, arguments);\n      return value === listeners ? drag : value;\n    };\n\n    drag.clickDistance = function(_) {\n      return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n    };\n\n    return drag;\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  const T$a = Template('d-slider', `\n<style>\n  :host {\n    position: relative;\n    display: inline-block;\n  }\n\n  :host(:focus) {\n    outline: none;\n  }\n\n  .background {\n    padding: 9px 0;\n    color: white;\n    position: relative;\n  }\n\n  .track {\n    height: 3px;\n    width: 100%;\n    border-radius: 2px;\n    background-color: hsla(0, 0%, 0%, 0.2);\n  }\n\n  .track-fill {\n    position: absolute;\n    top: 9px;\n    height: 3px;\n    border-radius: 4px;\n    background-color: hsl(24, 100%, 50%);\n  }\n\n  .knob-container {\n    position: absolute;\n    top: 10px;\n  }\n\n  .knob {\n    position: absolute;\n    top: -6px;\n    left: -6px;\n    width: 13px;\n    height: 13px;\n    background-color: hsl(24, 100%, 50%);\n    border-radius: 50%;\n    transition-property: transform;\n    transition-duration: 0.18s;\n    transition-timing-function: ease;\n  }\n  .mousedown .knob {\n    transform: scale(1.5);\n  }\n\n  .knob-highlight {\n    position: absolute;\n    top: -6px;\n    left: -6px;\n    width: 13px;\n    height: 13px;\n    background-color: hsla(0, 0%, 0%, 0.1);\n    border-radius: 50%;\n    transition-property: transform;\n    transition-duration: 0.18s;\n    transition-timing-function: ease;\n  }\n\n  .focus .knob-highlight {\n    transform: scale(2);\n  }\n\n  .ticks {\n    position: absolute;\n    top: 16px;\n    height: 4px;\n    width: 100%;\n    z-index: -1;\n  }\n\n  .ticks .tick {\n    position: absolute;\n    height: 100%;\n    border-left: 1px solid hsla(0, 0%, 0%, 0.2);\n  }\n\n</style>\n\n  <div class='background'>\n    <div class='track'></div>\n    <div class='track-fill'></div>\n    <div class='knob-container'>\n      <div class='knob-highlight'></div>\n      <div class='knob'></div>\n    </div>\n    <div class='ticks'></div>\n  </div>\n`);\n\n  // ARIA\n  // If the slider has a visible label, it is referenced by aria-labelledby on the slider element. Otherwise, the slider element has a label provided by aria-label.\n  // If the slider is vertically oriented, it has aria-orientation set to vertical. The default value of aria-orientation for a slider is horizontal.\n\n  const keyCodes = {\n    left: 37,\n    up: 38,\n    right: 39,\n    down: 40,\n    pageUp: 33,\n    pageDown: 34,\n    end: 35,\n    home: 36\n  };\n\n  class Slider extends T$a(HTMLElement) {\n\n\n    connectedCallback() {\n      this.connected = true;\n      this.setAttribute('role', 'slider');\n      // Makes the element tab-able.\n      if (!this.hasAttribute('tabindex')) { this.setAttribute('tabindex', 0); }\n\n      // Keeps track of keyboard vs. mouse interactions for focus rings\n      this.mouseEvent = false;\n\n      // Handles to shadow DOM elements\n      this.knob = this.root.querySelector('.knob-container');\n      this.background = this.root.querySelector('.background');\n      this.trackFill = this.root.querySelector('.track-fill');\n      this.track = this.root.querySelector('.track');\n\n      // Default values for attributes\n      this.min = this.min ? this.min : 0;\n      this.max = this.max ? this.max : 100;\n      this.scale = linear$1().domain([this.min, this.max]).range([0, 1]).clamp(true);\n\n      this.origin = this.origin !== undefined ? this.origin : this.min;\n      this.step = this.step ? this.step : 1;\n      this.update(this.value ? this.value : 0);\n\n      this.ticks = this.ticks ? this.ticks : false;\n      this.renderTicks();\n\n      this.drag = drag()\n        .container(this.background)\n        .on('start', () => {\n          this.mouseEvent = true;\n          this.background.classList.add('mousedown');\n          this.changeValue = this.value;\n          this.dragUpdate();\n        })\n        .on('drag', () => {\n          this.dragUpdate();\n        })\n        .on('end', () => {\n          this.mouseEvent = false;\n          this.background.classList.remove('mousedown');\n          this.dragUpdate();\n          if (this.changeValue !== this.value) this.dispatchChange();\n          this.changeValue = this.value;\n        });\n      this.drag(select(this.background));\n\n      this.addEventListener('focusin', () => {\n        if(!this.mouseEvent) {\n          this.background.classList.add('focus');\n        }\n      });\n      this.addEventListener('focusout', () => {\n        this.background.classList.remove('focus');\n      });\n      this.addEventListener('keydown', this.onKeyDown);\n\n    }\n\n    static get observedAttributes() {return ['min', 'max', 'value', 'step', 'ticks', 'origin', 'tickValues', 'tickLabels']; }\n\n    attributeChangedCallback(attr, oldValue, newValue) {\n      if (isNaN(newValue) || newValue === undefined || newValue === null) return;\n      if (attr == 'min') {\n        this.min = +newValue;\n        this.setAttribute('aria-valuemin', this.min);\n      }\n      if (attr == 'max') {\n        this.max = +newValue;\n        this.setAttribute('aria-valuemax', this.max);\n      }\n      if (attr == 'value') {\n        this.update(+newValue);\n      }\n      if (attr == 'origin') {\n        this.origin = +newValue;\n        // this.update(this.value);\n      }\n      if (attr == 'step') {\n        if (newValue > 0) {\n          this.step = +newValue;\n        }\n      }\n      if (attr == 'ticks') {\n        this.ticks = (newValue === '' ? true : newValue);\n      }\n    }\n\n    onKeyDown(event) {\n      this.changeValue = this.value;\n      let stopPropagation = false;\n      switch (event.keyCode) {\n      case keyCodes.left:\n      case keyCodes.down:\n        this.update(this.value - this.step);\n        stopPropagation = true;\n        break;\n      case keyCodes.right:\n      case keyCodes.up:\n        this.update(this.value + this.step);\n        stopPropagation = true;\n        break;\n      case keyCodes.pageUp:\n        this.update(this.value + this.step * 10);\n        stopPropagation = true;\n        break;\n\n      case keyCodes.pageDown:\n        this.update(this.value + this.step * 10);\n        stopPropagation = true;\n        break;\n      case keyCodes.home:\n        this.update(this.min);\n        stopPropagation = true;\n        break;\n      case keyCodes.end:\n        this.update(this.max);\n        stopPropagation = true;\n        break;\n      }\n      if (stopPropagation) {\n        this.background.classList.add('focus');\n        event.preventDefault();\n        event.stopPropagation();\n        if (this.changeValue !== this.value) this.dispatchChange();\n      }\n    }\n\n    validateValueRange(min, max, value) {\n      return Math.max(Math.min(max, value), min);\n    }\n\n    quantizeValue(value, step) {\n      return Math.round(value / step) * step;\n    }\n\n    dragUpdate() {\n      const bbox = this.background.getBoundingClientRect();\n      const x = event.x;\n      const width = bbox.width;\n      this.update(this.scale.invert(x / width));\n    }\n\n    update(value) {\n      let v = value;\n      if (this.step !== 'any') {\n        v = this.quantizeValue(value, this.step);\n      }\n      v = this.validateValueRange(this.min, this.max, v);\n      if (this.connected) {\n        this.knob.style.left = this.scale(v) * 100 + '%';\n        this.trackFill.style.width = this.scale(this.min + Math.abs(v - this.origin)) * 100 + '%';\n        this.trackFill.style.left = this.scale(Math.min(v, this.origin)) * 100 + '%';\n      }\n      if (this.value !== v) {\n        this.value = v;\n        this.setAttribute('aria-valuenow', this.value);\n        this.dispatchInput();\n      }\n    }\n\n    // Dispatches only on a committed change (basically only on mouseup).\n    dispatchChange() {\n      const e = new Event('change');\n      this.dispatchEvent(e, {});\n    }\n\n    // Dispatches on each value change.\n    dispatchInput() {\n      const e = new Event('input');\n      this.dispatchEvent(e, {});\n    }\n\n    renderTicks() {\n      const ticksContainer = this.root.querySelector('.ticks');\n      if (this.ticks !== false) {\n        let tickData = [];\n        if (this.ticks > 0) {\n          tickData = this.scale.ticks(this.ticks);\n        } else if (this.step === 'any') {\n          tickData = this.scale.ticks();\n        } else {\n          tickData = range(this.min, this.max + 1e-6, this.step);\n        }\n        tickData.forEach(d => {\n          const tick = document.createElement('div');\n          tick.classList.add('tick');\n          tick.style.left = this.scale(d) * 100 + '%';\n          ticksContainer.appendChild(tick);\n        });\n      } else {\n        ticksContainer.style.display = 'none';\n      }\n    }\n  }\n\n  var logo = \"<svg viewBox=\\\"-607 419 64 64\\\">\\n  <path d=\\\"M-573.4,478.9c-8,0-14.6-6.4-14.6-14.5s14.6-25.9,14.6-40.8c0,14.9,14.6,32.8,14.6,40.8S-565.4,478.9-573.4,478.9z\\\"/>\\n</svg>\\n\";\n\n  const headerTemplate = `\n<style>\ndistill-header {\n  position: relative;\n  height: 60px;\n  background-color: hsl(200, 60%, 15%);\n  width: 100%;\n  box-sizing: border-box;\n  z-index: 2;\n  color: rgba(0, 0, 0, 0.8);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.05);\n}\ndistill-header .content {\n  height: 70px;\n  grid-column: page;\n}\ndistill-header a {\n  font-size: 16px;\n  height: 60px;\n  line-height: 60px;\n  text-decoration: none;\n  color: rgba(255, 255, 255, 0.8);\n  padding: 22px 0;\n}\ndistill-header a:hover {\n  color: rgba(255, 255, 255, 1);\n}\ndistill-header svg {\n  width: 24px;\n  position: relative;\n  top: 4px;\n  margin-right: 2px;\n}\n@media(min-width: 1080px) {\n  distill-header {\n    height: 70px;\n  }\n  distill-header a {\n    height: 70px;\n    line-height: 70px;\n    padding: 28px 0;\n  }\n  distill-header .logo {\n  }\n}\ndistill-header svg path {\n  fill: none;\n  stroke: rgba(255, 255, 255, 0.8);\n  stroke-width: 3px;\n}\ndistill-header .logo {\n  font-size: 17px;\n  font-weight: 200;\n}\ndistill-header .nav {\n  float: right;\n  font-weight: 300;\n}\ndistill-header .nav a {\n  font-size: 12px;\n  margin-left: 24px;\n  text-transform: uppercase;\n}\n</style>\n<div class=\"content\">\n  <a href=\"/\" class=\"logo\">\n    ${logo}\n    Distill\n  </a>\n  <nav class=\"nav\">\n    <a href=\"/about/\">About</a>\n    <a href=\"/prize/\">Prize</a>\n    <a href=\"/journal/\">Submit</a>\n  </nav>\n</div>\n`;\n\n  // Copyright 2018 The Distill Template Authors\n\n  const T$b = Template('distill-header', headerTemplate, false);\n\n  class DistillHeader extends T$b(HTMLElement) {\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  const styles$2 = `\n<style>\n  distill-appendix {\n    contain: layout style;\n  }\n\n  distill-appendix .citation {\n    font-size: 11px;\n    line-height: 15px;\n    border-left: 1px solid rgba(0, 0, 0, 0.1);\n    padding-left: 18px;\n    border: 1px solid rgba(0,0,0,0.1);\n    background: rgba(0, 0, 0, 0.02);\n    padding: 10px 18px;\n    border-radius: 3px;\n    color: rgba(150, 150, 150, 1);\n    overflow: hidden;\n    margin-top: -12px;\n    white-space: pre-wrap;\n    word-wrap: break-word;\n  }\n\n  distill-appendix > * {\n    grid-column: text;\n  }\n</style>\n`;\n\n  function appendixTemplate(frontMatter) {\n    let html = styles$2;\n\n    if (typeof frontMatter.githubUrl !== 'undefined') {\n      html += `\n    <h3 id=\"updates-and-corrections\">Updates and Corrections</h3>\n    <p>`;\n      if (frontMatter.githubCompareUpdatesUrl) {\n        html += `<a href=\"${frontMatter.githubCompareUpdatesUrl}\">View all changes</a> to this article since it was first published.`;\n      }\n      html += `\n    If you see mistakes or want to suggest changes, please <a href=\"${frontMatter.githubUrl + '/issues/new'}\">create an issue on GitHub</a>. </p>\n    `;\n    }\n\n    const journal = frontMatter.journal;\n    if (typeof journal !== 'undefined' && journal.title === 'Distill') {\n      html += `\n    <h3 id=\"reuse\">Reuse</h3>\n    <p>Diagrams and text are licensed under Creative Commons Attribution <a href=\"https://creativecommons.org/licenses/by/4.0/\">CC-BY 4.0</a> with the <a class=\"github\" href=\"${frontMatter.githubUrl}\">source available on GitHub</a>, unless noted otherwise. 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 …”.</p>\n    `;\n    }\n\n    if (typeof frontMatter.publishedDate !== 'undefined') {\n      html += `\n    <h3 id=\"citation\">Citation</h3>\n    <p>For attribution in academic contexts, please cite this work as</p>\n    <pre class=\"citation short\">${frontMatter.concatenatedAuthors}, \"${frontMatter.title}\", Distill, ${frontMatter.publishedYear}.</pre>\n    <p>BibTeX citation</p>\n    <pre class=\"citation long\">${serializeFrontmatterToBibtex(frontMatter)}</pre>\n    `;\n    }\n\n    return html;\n  }\n\n  class DistillAppendix extends HTMLElement {\n\n    static get is() { return 'distill-appendix'; }\n\n    set frontMatter(frontMatter) {\n      this.innerHTML = appendixTemplate(frontMatter);\n    }\n\n  }\n\n  const footerTemplate = `\n<style>\n\n:host {\n  color: rgba(255, 255, 255, 0.5);\n  font-weight: 300;\n  padding: 2rem 0;\n  border-top: 1px solid rgba(0, 0, 0, 0.1);\n  background-color: hsl(180, 5%, 15%); /*hsl(200, 60%, 15%);*/\n  text-align: left;\n  contain: content;\n}\n\n.footer-container .logo svg {\n  width: 24px;\n  position: relative;\n  top: 4px;\n  margin-right: 2px;\n}\n\n.footer-container .logo svg path {\n  fill: none;\n  stroke: rgba(255, 255, 255, 0.8);\n  stroke-width: 3px;\n}\n\n.footer-container .logo {\n  font-size: 17px;\n  font-weight: 200;\n  color: rgba(255, 255, 255, 0.8);\n  text-decoration: none;\n  margin-right: 6px;\n}\n\n.footer-container {\n  grid-column: text;\n}\n\n.footer-container .nav {\n  font-size: 0.9em;\n  margin-top: 1.5em;\n}\n\n.footer-container .nav a {\n  color: rgba(255, 255, 255, 0.8);\n  margin-right: 6px;\n  text-decoration: none;\n}\n\n</style>\n\n<div class='footer-container'>\n\n  <a href=\"/\" class=\"logo\">\n    ${logo}\n    Distill\n  </a> is dedicated to clear explanations of machine learning\n\n  <div class=\"nav\">\n    <a href=\"https://distill.pub/about/\">About</a>\n    <a href=\"https://distill.pub/journal/\">Submit</a>\n    <a href=\"https://distill.pub/prize/\">Prize</a>\n    <a href=\"https://distill.pub/archive/\">Archive</a>\n    <a href=\"https://distill.pub/rss.xml\">RSS</a>\n    <a href=\"https://github.com/distillpub\">GitHub</a>\n    <a href=\"https://twitter.com/distillpub\">Twitter</a>\n    &nbsp;&nbsp;&nbsp;&nbsp; ISSN 2476-0757\n  </div>\n\n</div>\n\n`;\n\n  // Copyright 2018 The Distill Template Authors\n\n  const T$c = Template('distill-footer', footerTemplate);\n\n  class DistillFooter extends T$c(HTMLElement) {\n\n  }\n\n  // Copyright 2018 The Distill Template Authors\n\n  let templateIsLoading = false;\n  let runlevel = 0;\n  const initialize = function() {\n    if (window.distill.runlevel < 1) {\n      throw new Error(\"Insufficient Runlevel for Distill Template!\");\n    }\n\n    /* 1. Flag that we're being loaded */\n    if (\"distill\" in window && window.distill.templateIsLoading) {\n      throw new Error(\n        \"Runlevel 1: Distill Template is getting loaded more than once, aborting!\"\n      );\n    } else {\n      window.distill.templateIsLoading = true;\n      console.debug(\"Runlevel 1: Distill Template has started loading.\");\n    }\n\n    /* 2. Add styles if they weren't added during prerendering */\n    makeStyleTag(document);\n    console.debug(\"Runlevel 1: Static Distill styles have been added.\");\n    console.debug(\"Runlevel 1->2.\");\n    window.distill.runlevel += 1;\n\n    /* 3. Register Controller listener functions */\n    /* Needs to happen before components to their connected callbacks have a controller to talk to. */\n    for (const [functionName, callback] of Object.entries(Controller.listeners)) {\n      if (typeof callback === \"function\") {\n        document.addEventListener(functionName, callback);\n      } else {\n        console.error(\"Runlevel 2: Controller listeners need to be functions!\");\n      }\n    }\n    console.debug(\"Runlevel 2: We can now listen to controller events.\");\n    console.debug(\"Runlevel 2->3.\");\n    window.distill.runlevel += 1;\n\n    /* 4. Register components */\n    const components = [\n      Abstract, Appendix, Article, Bibliography, Byline, Cite, CitationList, Code,\n      Footnote, FootnoteList, FrontMatter$1, HoverBox, Title, DMath, References, TOC, Figure,\n      Slider, Interstitial\n    ];\n\n    const distillComponents = [DistillHeader, DistillAppendix, DistillFooter];\n\n    if (window.distill.runlevel < 2) {\n      throw new Error(\"Insufficient Runlevel for adding custom elements!\");\n    }\n    const allComponents = components.concat(distillComponents);\n    for (const component of allComponents) {\n      console.debug(\"Runlevel 2: Registering custom element: \" + component.is);\n      customElements.define(component.is, component);\n    }\n\n    console.debug(\n      \"Runlevel 3: Distill Template finished registering custom elements.\"\n    );\n    console.debug(\"Runlevel 3->4.\");\n    window.distill.runlevel += 1;\n\n    // If template was added after DOMContentLoaded we may have missed that event.\n    // Controller will check for that case, so trigger the event explicitly:\n    if (domContentLoaded()) {\n      Controller.listeners.DOMContentLoaded();\n    }\n\n    console.debug(\"Runlevel 4: Distill Template initialisation complete.\");\n    window.distill.templateIsLoading = false;\n    window.distill.templateHasLoaded = true;\n  };\n\n  window.distill = { runlevel, initialize, templateIsLoading };\n\n  /* 0. Check browser feature support; synchronously polyfill if needed */\n  if (Polyfills.browserSupportsAllFeatures()) {\n    console.debug(\"Runlevel 0: No need for polyfills.\");\n    console.debug(\"Runlevel 0->1.\");\n    window.distill.runlevel += 1;\n    window.distill.initialize();\n  } else {\n    console.debug(\"Runlevel 0: Distill Template is loading polyfills.\");\n    Polyfills.load(window.distill.initialize);\n  }\n\n})));\n//# sourceMappingURL=template.v2.js.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(792);\n",""],"names":["factory","define","amd","days","months","zeroPad","n","RFC","date","day","getDay","substring","paddedDate","getDate","month","getMonth","year","getFullYear","toString","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","concat","objectFromMap","map","object","Array","from","reduce","_ref","_ref2","_slicedToArray","key","value","Object","assign","_defineProperty","mapFromObject","Map","property","hasOwnProperty","set","Author","_classCallCheck","name","author","personalURL","authorURL","affiliation","affiliationURL","affiliations","_createClass","get","names","split","slice","length","join","mergeFromYMLFrontmatter","target","source","title","published","Date","publishedDate","constructor","String","console","error","description","authors","authorObject","katex","password","doi","FrontMatter","bibliography","bibliographyParsed","citations","citationsCollected","journal","undefined","_url","distillPath","url","githubPath","_previewURL","updatedDate","toISOString","volume","publishedYear","Error","lastName","firstName","slug","toLowerCase","_this","citationKey","entry","_bibliography","_typeof","assignToObject","bibliographyEntries","githubUrl","previewURL","issue","publishedDateRFC","publishedMonth","publishedDay","publishedMonthPadded","publishedDayPadded","updatedDateRFC","concatenatedAuthors","bibtexAuthors","fromObject","frontMatter","Mutating","superclass","_superclass","_class","_this2","_callSuper","options","childList","characterData","subtree","observer","MutationObserver","disconnect","renderIfPossible","observe","_inherits","connectedCallback","_superPropGet","textContent","root","renderContent","Template","templateString","useShadow","arguments","template","document","createElement","innerHTML","window","ShadyCSS","prepareTemplate","_superclass2","_class2","_this3","clone","importNode","content","attachShadow","mode","shadowRoot","appendChild","hasAttribute","styleElement","insertBefore","firstChild","$","query","querySelector","$$","querySelectorAll","math","findEndOfMath","delimiter","text","startIndex","index","braceLevel","delimLength","character","splitAtDelimiters","startData","leftDelim","rightDelim","display","finalData","i","type","data","lookingForLeft","currIndex","nextIndex","indexOf","push","rawData","splitWithDelimiters","delimiters","left","right","renderMathInText","optionsCopy","fragment","createDocumentFragment","createTextNode","tag","displayMode","setAttribute","e","ParseError","errorCallback","renderElem","elem","childNodes","childNode","nodeType","mightHaveMath","frag","replaceChild","shouldRender","ignoredTags","nodeName","defaultAutoRenderOptions","msg","err","renderMathInElement","delimiterStrings","flatMap","d","some","katexJSURL","katexCSSTag","T","DMath","_Mutating","localOptions","katexOptions","katexAdded","addKatex","container","render","_katexOptions","katexLoadedCallback","mathTags","_iterator","_createForOfIteratorHelper","_step","s","done","mathTag","f","body","head","insertAdjacentHTML","scriptTag","src","async","onload","crossorigin","HTMLElement","inlineMathRendered","collect_citations","dom","Set","citeTags","_iterator2","_step2","keyString","getAttribute","keys","k","trim","_iterator3","_step3","add","_toConsumableArray","author_string","ent","sep","finalSep","name_strings","last","firsts","initials","replace","str","venue_string","cite","booktitle","number","pages","publisher","link_string","arxiv_match","exec","label","doi_string","new_line","title_string","bibliography_cite","fancy","hover_cite","a_str","v_str","Math","min","domContentLoaded","readyState","_moveLegacyAffiliationFormatIntoArray","_iterator4","_step4","hasOldStyle","Boolean","hasNewStyle","warn","newAffiliation","parseFrontmatter","element","firstElementChild","parsed","JSON","parse","FrontMatter$1","_HTMLElement","_this4","entries","_iterator5","_step5","notify","detail","bubbles","event","CustomEvent","dispatchEvent","_wrapNativeSuper","optionalComponents","article","byline","h1","hasPassword","interstitial","inBrowser","onLocalhost","location","hostname","includes","parentElement","removeChild","appendix","footnoteList","citationList","Controller","waitingOn","listeners","onCiteKeyCreated","_event$detail","citeTag","numbers","onCiteKeyChanged","_iterator6","_step6","waitingCallback","citationListTag","_iterator7","_step7","log","onCiteKeyRemoved","onBibliographyChanged","_iterator8","_step8","debug","onFootnoteChanged","footnotesList","footnotes","onFrontMatterChanged","prerendered","DOMContentLoaded","loaded","frontMatterTag","_iterator9","_step9","_iterator10","_step10","base","layout","print","styles","makeStyleTag","styleTagId","prerenderedTag","getElementById","styleTag","id","cssTextTag","firstScriptTag","addPolyfill","polyfill","polyfillLoadedCallback","script","onerror","polyfills","support","Element","prototype","Polyfills","browserSupportsAllFeatures","every","poly","load","callback","polyfillLoaded","neededPolyfills","distillRunlevel","_iterator11","_step11","_neededPolyfills","filter","selector","T$1","Abstract","_T$","T$2","Appendix","_T$2","isOnlyWhitespace","Article","_HTMLElement2","_this5","mutations","_iterator12","_step12","mutation","_iterator13","addedNodes","_step13","addedNode","nodeValue","test","wrapper","parentNode","commonjsGlobal","globalThis","global","self","createCommonjsModule","fn","module","exports","bibtexParse","BibtexParser","notKey","pos","input","currentEntry","setInput","t","getEntries","isWhitespace","match","canCommentOut","skipWhitespace","tryMatch","matchAt","value_braces","bracecount","start","escaped","end","value_comment","brcktCnt","value_quotes","single_value","values","key_equals_value","val","key_value_list","kv","entry_body","directive","preamble","comment","bibtex","string","toJSON","b","toBibtex","json","out","entryType","entryTags","tags","jdx","normalizeTag","full","x","char","parseBibtex","parsedEntries","_iterator14","_step14","_i","_Object$entries","_Object$entries$_i","serializeFrontmatterToBibtex","Bibliography","_HTMLElement3","_this6","_iterator15","_step15","parseIfPossible","_this7","requestAnimationFrame","newBibtex","receivedBibtex","response","attributeChangedCallback","oldValue","newValue","_this8","oReq","XMLHttpRequest","responseType","open","send","bylineTemplate","Byline","_HTMLElement4","T$3","Cite","_T$3","_this9","_numbers","_entries","_this10","outerSpan","innerSpan","hoverBox","customElements","whenDefined","then","listen","displayNumbers","displayEntries","eventName","result","numberStrings","html","styles$1","renderCitationList","size","style","list","stylesTag","heading","className","_iterator16","_step16","_step16$value","listItem","CitationList","_HTMLElement5","prism","_self","WorkerGlobalScope","Prism","lang","uniqueId","_","manual","disableWorkerMessageHandler","util","encode","tokens","Token","alias","isArray","o","call","objId","obj","defineProperty","deepClone","visited","forEach","v","getLanguage","currentScript","stack","scripts","getElementsByTagName","languages","extend","redef","inside","before","insert","grammar","ret","token","newToken","old","DFS","propertyType","plugins","highlightAll","highlightAllUnder","env","hooks","run","elements","apply","highlightElement","language","parent","code","insertHighlightedCode","highlightedCode","Worker","worker","filename","onmessage","evt","postMessage","stringify","immediateClose","highlight","tokenize","rest","tokenList","LinkedList","addAfter","matchGrammar","toArray","all","callbacks","matchedStr","greedy","classes","attributes","aliases","startNode","startPos","oneshot","patterns","j","pattern","lookbehind","lookbehindLength","flags","RegExp","currentNode","next","tail","removeCount","prev","lastIndex","to","p","after","removeFrom","removeRange","wrapped","node","newNode","count","array","addEventListener","message","close","highlightAutomaticallyCallback","defer","setTimeout","markup","addInlined","tagName","includedCdataInside","def","xml","mathml","svg","css","clike","javascript","js","fileHighlight","Extensions","pre","extension","xhr","onreadystatechange","status","responseText","statusText","python","py","lua","envVars","insideString","bash","variable","toBeCopied","shell","go","inner","createInline","starAlternative","tableCell","tableRow","tableLine","markdown","punctuation","walkTokens","l","codeLang","codeBlock","cls","autoloader","valueOf","floor","random","loadLanguages","ele","md","julia","T$4","Code","_Mutating2","languageName","codeTag","tabs","ShadowRoot","preTag","T$5","Footnote","_T$4","_this11","_this12","currentFootnoteId","IdString","host","span","T$6","FootnoteList","_T$5","_iterator17","_step17","footnote","backlink","href","T$7","HoverBox","_T$6","bindDivEvents","bindTriggerEvents","_this13","visible","showAtNode","stopTimeout","extendTimeout","stopPropagation","passive","hide","_this14","show","position","top","round","bbox","getBoundingClientRect","offsetLeft","width","offsetTop","height","timeout","clearTimeout","time","_this15","Title","_HTMLElement6","T$8","References","_T$7","TOC","_HTMLElement7","_this16","headings","renderTOC","ToC","_iterator18","_step18","el","isInTitle","isException","link","newLine","Figure","_HTMLElement8","_this17","_ready","_onscreen","_offscreen","loadsWhileScrolling","marginObserver","directObserver","disconnectedCallback","unobserve","readyQueue","runReadyQueue","onscreen","ready","offscreen","_readyQueue","addToReadyQueue","figure","sort","a","_seenOnScreen","pop","_marginObserver","viewportHeight","innerHeight","margin","rootMargin","threshold","didObserveMarginIntersection","IntersectionObserver","_iterator19","_step19","isIntersecting","_directObserver","didObserveDirectIntersection","_iterator20","_step20","isScrolling","resetTimer","productionHostname","T$9","Interstitial","_T$8","_this18","shouldRemoveSelf","passwordInput","oninput","passwordChanged","entered","Storage","localStorage","setItem","localStorageIdentifier","getItem","prefix","suffix","pathname","ascending","NaN","bisector","compare","ascendingComparator","lo","hi","mid","ascendingBisect","bisectRight","range","stop","step","max","ceil","e10","sqrt","e5","e2","ticks","reverse","tickIncrement","isFinite","power","LN10","pow","tickStep","step0","abs","step1","initRange","domain","definition","create","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color","copy","channels","displayable","rgb","hex","color_formatHex","formatHex","formatHsl","color_formatHsl","formatRgb","color_formatRgb","hslConvert","format","m","parseInt","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","opacity","rgb_formatHex","rgb_formatRgb","isNaN","h","Hsl","hsl","m2","m1","hsl2rgb","deg2rad","PI","rad2deg","K","Xn","Yn","Zn","t0","t1","t2","t3","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","y","xyz2lab","z","lab","lab2xyz","lrgb2rgb","hclConvert","c","atan2","hcl","cos","sin","A","B","C","D","E","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cubehelix","cosh","sinh","constant","linear","exponential","gamma","nogamma","rgb$1","rgbGamma","numberArray","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","interpolate","setTime","interpolateNumber","reA","reB","zero","one","bi","am","bm","bs","q","interpolateRound","constant$1","unit","identity","normalize","clamper","bimap","d0","d1","r0","r1","polymap","clamp","unknown","transformer","interpolate$1","transform","untransform","piecewise","output","rescale","scale","invert","rangeRound","u","continuous","formatDecimal","toExponential","coefficient","exponent","formatGroup","grouping","thousands","formatNumerals","numerals","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","comma","precision","formatTrim","i0","i1","prefixExponent","formatPrefixAuto","formatRounded","formatTypes","toFixed","toPrecision","X","toUpperCase","identity$1","prefixes","formatLocale","locale","group","Number","currencyPrefix","currency","currencySuffix","decimal","percent","minus","nan","newFormat","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","charCodeAt","Infinity","padding","formatPrefix","defaultLocale","precisionFixed","precisionPrefix","precisionRound","tickFormat","linearish","nice","linear$1","t0$1","t1$1","newInterval","floori","offseti","field","interval","offset","previous","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","second","getMilliseconds","minute","getSeconds","getMinutes","hour","getHours","setHours","setDate","getTimezoneOffset","weekday","sunday","monday","tuesday","wednesday","thursday","friday","saturday","setMonth","setFullYear","utcMinute","setUTCSeconds","utcHour","setUTCMinutes","utcDay","setUTCHours","setUTCDate","getUTCDate","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcYear","setUTCFullYear","localDate","H","M","S","L","utcDate","UTC","newDate","formatLocale$1","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseYear","parseFullYear","parseZone","parseLiteralPercent","pad","pads","charAt","newParse","Z","parseSpecifier","week","day$1","Q","V","w","W","U","utcFormat","utcParse","numberRe","percentRe","requoteRe","requote","getUTCMilliseconds","dow","locale$1","timeFormat","timeParse","defaultLocale$1","isoSpecifier","formatIsoNative","formatIso","parseIsoNative","parseIso","noop","dispatch","Dispatch","parseTypenames","typenames","types","on","typename","that","args","xhtml","namespaces","xlink","xmlns","namespace","space","local","creatorInherit","ownerDocument","uri","namespaceURI","documentElement","createElementNS","creatorFixed","fullname","creator","none","selection_select","select","groups","_groups","subgroups","subgroup","subnode","__data__","Selection","_parents","empty","selectorAll","selection_selectAll","parents","matcher","matches","selection_filter","sparse","update","selection_enter","_enter","EnterNode","datum","_next","_parent","child","constant$2","keyPrefix","bindIndex","enter","exit","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyValue","selection_data","each","bind","enterGroup","updateGroup","exitGroup","_exit","selection_exit","selection_join","onenter","onupdate","onexit","append","remove","merge","order","selection_merge","selection","groups0","groups1","m0","merges","group0","group1","selection_order","compareDocumentPosition","selection_sort","ascending$1","compareNode","sortgroups","sortgroup","selection_call","selection_nodes","nodes","selection_node","selection_size","selection_empty","selection_each","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","selection_attr","getAttributeNS","defaultView","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","selection_style","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","classList","ClassList","_node","_names","splice","contains","classedAdd","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant","textFunction","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","nextSibling","selection_raise","lower","previousSibling","selection_lower","selection_append","constantNull","selection_insert","selection_remove","selection_cloneShallow","cloneNode","selection_cloneDeep","selection_clone","deep","selection_datum","filterEvents","mouseenter","mouseleave","filterContextListener","listener","contextListener","related","relatedTarget","event1","event0","parseTypenames$1","onRemove","__on","removeEventListener","capture","onAdd","wrap","selection_on","customEvent","sourceEvent","params","createEvent","initEvent","cancelable","dispatchConstant","dispatchFunction","selection_dispatch","selectAll","attr","classed","current","point","ownerSVGElement","createSVGPoint","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","clientLeft","clientTop","mouse","changedTouches","touch","touches","identifier","nopropagation","stopImmediatePropagation","noevent","preventDefault","nodrag","view","__noselect","MozUserSelect","yesdrag","noclick","constant$3","DragEvent","subject","active","dx","dy","defaultFilter","ctrlKey","button","defaultContainer","defaultSubject","defaultTouchable","navigator","maxTouchPoints","drag","touchable","gestures","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","sublisteners","p0","clickDistance","T$a","keyCodes","up","down","pageUp","pageDown","home","Slider","_T$a","_this19","connected","mouseEvent","knob","background","trackFill","track","origin","renderTicks","changeValue","dragUpdate","dispatchChange","onKeyDown","keyCode","validateValueRange","quantizeValue","dispatchInput","Event","_this20","ticksContainer","tickData","tick","logo","headerTemplate","T$b","DistillHeader","_T$b","styles$2","appendixTemplate","githubCompareUpdatesUrl","DistillAppendix","_HTMLElement9","footerTemplate","T$c","DistillFooter","_T$c","templateIsLoading","runlevel","initialize","distill","_i2","_Object$entries2","_Object$entries2$_i","functionName","components","distillComponents","allComponents","_iterator21","_step21","component","is","templateHasLoaded"],"sourceRoot":""}