PageSourceSearch

https://investigate.ai/js/tocbot.js

js investigate.ai collected 2026-10-03 21:37:20 UTC 78,980 bytes, 133 lines download raw bytes

vendor: 4,525 bytes, lines 1-75
1/******/ (function(modules) { // webpackBootstrap
2/******/ 	// The module cache
3/******/ 	var installedModules = {};
4/******/
5/******/ 	// The require function
6/******/ 	function __webpack_require__(moduleId) {
7/******/
8/******/ 		// Check if module is in cache
9/******/ 		if(installedModules[moduleId]) {
10/******/ 			return installedModules[moduleId].exports;
11/******/ 		}
12/******/ 		// Create a new module (and put it into the cache)
13/******/ 		var module = installedModules[moduleId] = {
14/******/ 			i: moduleId,
15/******/ 			l: false,
16/******/ 			exports: {}
17/******/ 		};
18/******/
19/******/ 		// Execute the module function
20/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21/******/
22/******/ 		// Flag the module as loaded
23/******/ 		module.l = true;
24/******/
25/******/ 		// Return the exports of the module
26/******/ 		return module.exports;
27/******/ 	}
28/******/
29/******/
30/******/ 	// expose the modules object (__webpack_modules__)
31/******/ 	__webpack_require__.m = modules;
32/******/
33/******/ 	// expose the module cache
34/******/ 	__webpack_require__.c = installedModules;
35/******/
36/******/ 	// define getter function for harmony exports
37/******/ 	__webpack_require__.d = function(exports, name, getter) {
38/******/ 		if(!__webpack_require__.o(exports, name)) {
39/******/ 			Object.defineProperty(exports, name, {
40/******/ 				configurable: false,
41/******/ 				enumerable: true,
42/******/ 				get: getter
43/******/ 			});
44/******/ 		}
45/******/ 	};
46/******/
47/******/ 	// getDefaultExport function for compatibility with non-harmony modules
48/******/ 	__webpack_require__.n = function(module) {
49/******/ 		var getter = module && module.__esModule ?
50/******/ 			function getDefault() { return module['default']; } :
51/******/ 			function getModuleExports() { return module; };
52/******/ 		__webpack_require__.d(getter, 'a', getter);
53/******/ 		return getter;
54/******/ 	};
55/******/
56/******/ 	// Object.prototype.hasOwnProperty.call
57/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
58/******/
59/******/ 	// __webpack_public_path__
60/******/ 	__webpack_require__.p = "";
61/******/
62/******/ 	// Load entry module and return exports
63/******/ 	return __webpack_require__(__webpack_require__.s = 0);
64/******/ })
65/************************************************************************/
66/******/ ([
67/* 0 */
68/*!*************************!*\
69  !*** ./src/js/index.js ***!
70  \*************************/
71/*! dynamic exports provided */
72/*! all exports used */
73/***/ (function(module, exports, __webpack_require__) {
74
75  eval("/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Tocbot\n * Tocbot creates a toble of contents based on HTML headings on a page,\n * this allows users to easily jump to different sections of the document.\n * Tocbot was inspired by tocify (http://gregfranko.com/jquery.tocify.js/).\n * The main differences are that it works natively without any need for jquery or jquery UI).\n *\n * @author Tim Scanlin\n */\n\n/* globals define */\n\n(function (root, factory) {\n  if (true) {\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory(root)),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))\n  } else if (typeof exports === 'object') {\n    module.exports = factory(root)\n  } else {\n    root.tocbot = factory(root)\n  }\n})(typeof global !== 'undefined' ? global : this.window || this.global, function (root) {\n  'use strict'\n\n  // Default options.\n  var defaultOptions = __webpack_require__(/*! ./default-options.js */ 2)\n  // Object to store current options.\n  var options = {}\n  // Object for public APIs.\n  var tocbot = {}\n\n  var BuildHtml = __webpack_require__(/*! ./build-html.js */ 3)\n  var ParseContent = __webpack_require__(/*! ./parse-content.js */ 4)\n  // Keep these variables at top scope once options are passed in.\n  var buildHtml\n  var parseContent\n\n  // Just return if its not a browser.\n  var supports = !!root && !!root.document && !!root.document.querySelector && !!root.addEventListener // Feature test\n  if (typeof window === 'undefined' && !supports
75) {\n    return\n  }\n  var headingsArray\n\n  // From: https://github.com/Raynos/xtend\n  var hasOwnProperty = Object.prototype.hasOwnProperty\n  function extend () {\n    var target = {}\n    for (var i = 0; i < arguments.length; i++) {\n      var source = arguments[i]\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          target[key] = source[key]\n        }\n      }\n    }\n    return target\n  }\n\n  // From: https://remysharp.com/2010/07/21/throttling-function-calls\n  function throttle (fn, threshhold, scope) {\n    threshhold || (threshhold = 250)\n    var last\n    var deferTimer\n    return function () {\n      var context = scope || this\n      var now = +new Date()\n      var args = arguments\n      if (last && now < last + threshhold) {\n        // hold on to it\n        clearTimeout(deferTimer)\n        deferTimer = setTimeout(function () {\n          last = now\n          fn.apply(context, args)\n        }, threshhold)\n      } else {\n        last = now\n        fn.apply(context, args)\n      }\n    }\n  }\n\n  /**\n   * Destroy tocbot.\n   */\n  tocbot.destroy = function () {\n    if (!options.skipRendering) {\n      // Clear HTML.\n      try {\n        document.querySelector(options.tocSelector).innerHTML = ''\n      } catch (e) {\n        console.warn('Element not found: ' + options.tocSelector); // eslint-disable-line\n      }\n    }\n\n    // Remove event listeners.\n    if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n      document.querySelector(options.scrollContainer).removeEventListener('scroll', this._scrollListener, false)\n      document.querySelector(options.scrollContainer).removeEventListener('resize', this._scrollListener, false)\n      if (buildHtml) {\n        document.querySelector(options.scrollContainer).removeEventListener('click', this._clickListener, false)\n      }\n    } else {\n      document.removeEventListener('scroll', this._scrollListener, false)\n      document.removeEventListener('resize', this._scrollListener, false)\n      if (buildHtml) {\n        document.removeEventListener('click', this._clickListener, false)\n      }\n    }\n  }\n\n  /**\n   * Initialize tocbot.\n   * @param {object} customOptions\n   */\n  tocbot.init = function (customOptions) {\n    // feature test\n    if (!supports) {\n      return\n    }\n\n    // Merge defaults with user options.\n    // Set to options variable at the top.\n    options = extend(defaultOptions, customOptions || {})\n    this.options = options\n    this.state = {}\n\n    // Init smooth scroll if enabled (default).\n    if (options.scrollSmooth) {\n      options.duration = options.scrollSmoothDuration\n      options.offset = options.scrollSmoothOffset\n      tocbot.scrollSmooth = __webpack_require__(/*! ./scroll-smooth */ 5).initSmoothScrolling(options)\n    }\n\n    // Pass options to these modules.\n    buildHtml = BuildHtml(options)\n    parseContent = ParseContent(options)\n\n    // For testing purposes.\n    this._buildHtml = buildHtml\n    this._parseContent = parseContent\n\n    // Destroy it if it exists first.\n    tocbot.destroy()\n\n    // Get headings array.\n    headingsArray = parseContent.selectHeadings(options.contentSelector, options.headingSelector)\n    // Return if no headings are found.\n    if (headingsArray === null) {\n      return\n    }\n\n    // Build nested headings array.\n    var nestedHeadingsObj = parseContent.nestHeadingsArray(headingsArray)\n    var nestedHeadings = nestedHeadingsObj.nest\n\n    // Render.\n    if (!options.skipRendering) {\n      buildHtml.render(options.tocSelector, nestedHeadings)\n    }\n\n    // Update Sidebar and bind listeners.\n    this._scrollListener = throttle(function (e) {\n      buildHtml.updateToc(headingsArray)\n      var isTop = e && e.target && e.target.scrollingElement && e.target.scrollingElement.scrollTop === 0\n      if ((e && (e.eventPhase === 0 || e.currentTarget === null)) || isTop) {\n        buildHtml.updateToc(headingsArray)\n        if (options.scrollEndCallback) {\n          options.scrollEndCallback(e)\n        }\n      }\n    }, options.throttleTimeout)\n    this._scrollListener()\n    if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n      document.querySelector(options.scrollContainer).addEventListener('scroll', this._scrollListener, false)\n      document.querySelector(options.scrollContainer).addEventListener('resize', this._scrollListener, false)\n    } else {\n      document.addEventListener('scroll', this._scrollListener, false)\n      document.addEventListener('resize', this._scrollListener, false)\n    }\n\n    // Bind click listeners to disable animation.\n    var timeout = null\n    this._clickListener = throttle(function (event) {\n      if (options.scrollSmooth) {\n        buildHtml.disableTocAnimation(event)\n      }\n      buildHtml.updateToc(headingsArray)\n      // Timeout to re-enable the animation.\n      timeout && clearTimeout(timeout)\n      timeout = setTimeout(function () {\n        buildHtml.enableTocAnimation()\n      }, options.scrollSmoothDuration)\n    }, options.throttleTimeout)\n\n    if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n      document.querySelector(options.scrollContainer).addEventListener('click', this._clickListener, false)\n    } else {\n      document.addEventListener('click', this._clickListener, false)\n    }\n\n    return this\n  }\n\n  /**\n   * Refresh tocbot.\n   */\n  tocbot.refresh = function (customOptions) {\n    tocbot.destroy()\n    tocbot.init(customOptions || this.options)\n  }\n\n  // Make tocbot available globally.\n  root.tocbot = tocbot\n\n  return tocbot\n}
75)\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../../node_modules/webpack/buildin/global.js */ 1)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9pbmRleC5qcz9iYzY2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVG9jYm90XG4gKiBUb2Nib3QgY3JlYXRlcyBhIHRvYmxlIG9mIGNvbnRlbnRzIGJhc2VkIG9uIEhUTUwgaGVhZGluZ3Mgb24gYSBwYWdlLFxuICogdGhpcyBhbGxvd3MgdXNlcnMgdG8gZWFzaWx5IGp1bXAgdG8gZGlmZmVyZW50IHNlY3Rpb25zIG9mIHRoZSBkb2N1bWVudC5cbiAqIFRvY2JvdCB3YXMgaW5zcGlyZWQgYnkgdG9jaWZ5IChodHRwOi8vZ3JlZ2ZyYW5rby5jb20vanF1ZXJ5LnRvY2lmeS5qcy8pLlxuICogVGhlIG1haW4gZGlmZmVyZW5jZXMgYXJlIHRoYXQgaXQgd29ya3MgbmF0aXZlbHkgd2l0aG91dCBhbnkgbmVlZCBmb3IganF1ZXJ5IG9yIGpxdWVyeSBVSSkuXG4gKlxuICogQGF1dGhvciBUaW0gU2NhbmxpblxuICovXG5cbi8qIGdsb2JhbHMgZGVmaW5lICovXG5cbihmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgZGVmaW5lKFtdLCBmYWN0b3J5KHJvb3QpKVxuICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyb290KVxuICB9IGVsc2Uge1xuICAgIHJvb3QudG9jYm90ID0gZmFjdG9yeShyb290KVxuICB9XG59KSh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6IHRoaXMud2luZG93IHx8IHRoaXMuZ2xvYmFsLCBmdW5jdGlvbiAocm9vdCkge1xuICAndXNlIHN0cmljdCdcblxuICAvLyBEZWZhdWx0IG9wdGlvbnMuXG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IHJlcXVpcmUoJy4vZGVmYXVsdC1vcHRpb25zLmpzJylcbiAgLy8gT2JqZWN0IHRvIHN0b3JlIGN1cnJlbnQgb3B0aW9ucy5cbiAgdmFyIG9wdGlvbnMgPSB7fVxuICAvLyBPYmplY3QgZm9yIHB1YmxpYyBBUElzLlxuICB2YXIgdG9jYm90ID0ge31cblxuICB2YXIgQnVpbGRIdG1sID0gcmVxdWlyZSgnLi9idWlsZC1odG1sLmpzJylcbiAgdmFyIFBhcnNlQ29udGVudCA9IHJlcXVpcmUoJy4vcGFyc2UtY29udGVudC5qcycpXG4gIC8vIEtlZXAgdGhlc2UgdmFyaWFibGVzIGF0IHRvcCBzY29wZSBvbmNlIG9wdGlvbnMgYXJlIHBhc3NlZCBpbi5cbiAgdmFyIGJ1aWxkSHRtbFxuICB2YXIgcGFyc2VDb250ZW50XG5cbiAgLy8gSnVzdCByZXR1cm4gaWYgaXRzIG5vdCBhIGJyb3dzZXIuXG4gIHZhciBzdXBwb3J0cyA9ICEhcm9vdCAmJiAhIXJvb3QuZG9jdW1lbnQgJiYgISFyb290LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IgJiYgISFyb290LmFkZEV2ZW50TGlzdGVuZXIgLy8gRmVhdHVyZSB0ZXN0XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyAmJiAhc3VwcG9ydHMpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgaGVhZGluZ3NBcnJheVxuXG4gIC8vIEZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9SYXlub3MveHRlbmRcbiAgdmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eVxuICBmdW5jdGlvbiBleHRlbmQgKCkge1xuICAgIHZhciB0YXJnZXQgPSB7fVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
75XIgc291cmNlID0gYXJndW1lbnRzW2ldXG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0XG4gIH1cblxuICAvLyBGcm9tOiBodHRwczovL3JlbXlzaGFycC5jb20vMjAxMC8wNy8yMS90aHJvdHRsaW5nLWZ1bmN0aW9uLWNhbGxzXG4gIGZ1bmN0aW9uIHRocm90dGxlIChmbiwgdGhyZXNoaG9sZCwgc2NvcGUpIHtcbiAgICB0aHJlc2hob2xkIHx8ICh0aHJlc2hob2xkID0gMjUwKVxuICAgIHZhciBsYXN0XG4gICAgdmFyIGRlZmVyVGltZXJcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGNvbnRleHQgPSBzY29wZSB8fCB0aGlzXG4gICAgICB2YXIgbm93ID0gK25ldyBEYXRlKClcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzXG4gICAgICBpZiAobGFzdCAmJiBub3cgPCBsYXN0ICsgdGhyZXNoaG9sZCkge1xuICAgICAgICAvLyBob2xkIG9uIHRvIGl0XG4gICAgICAgIGNsZWFyVGltZW91dChkZWZlclRpbWVyKVxuICAgICAgICBkZWZlclRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGFzdCA9IG5vd1xuICAgICAgICAgIGZuLmFwcGx5KGNvbnRleHQsIGFyZ3MpXG4gICAgICAgIH0sIHRocmVzaGhvbGQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYXN0ID0gbm93XG4gICAgICAgIGZuLmFwcGx5KGNvbnRleHQsIGFyZ3MpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3kgdG9jYm90LlxuICAgKi9cbiAgdG9jYm90LmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFvcHRpb25zLnNraXBSZW5kZXJpbmcpIHtcbiAgICAgIC8vIENsZWFyIEhUTUwuXG4gICAgICB0cnkge1xuICAgICAgICBkb2
75N1bWVudC5xdWVyeVNlbGVjdG9yKG9wdGlvbnMudG9jU2VsZWN0b3IpLmlubmVySFRNTCA9ICcnXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRWxlbWVudCBub3QgZm91bmQ6ICcgKyBvcHRpb25zLnRvY1NlbGVjdG9yKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSBldmVudCBsaXN0ZW5lcnMuXG4gICAgaWYgKG9wdGlvbnMuc2Nyb2xsQ29udGFpbmVyICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iob3B0aW9ucy5zY3JvbGxDb250YWluZXIpKSB7XG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG9wdGlvbnMuc2Nyb2xsQ29udGFpbmVyKS5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLl9zY3JvbGxMaXN0ZW5lciwgZmFsc2UpXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG9wdGlvbnMuc2Nyb2xsQ29udGFpbmVyKS5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl9zY3JvbGxMaXN0ZW5lciwgZmFsc2UpXG4gICAgICBpZiAoYnVpbGRIdG1sKSB7XG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iob3B0aW9ucy5zY3JvbGxDb250YWluZXIpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fY2xpY2tMaXN0ZW5lciwgZmFsc2UpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbExpc3RlbmVyLCBmYWxzZSlcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3Njcm9sbExpc3RlbmVyLCBmYWxzZSlcbiAgICAgIGlmIChidWlsZEh0bWwpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9jbGlja0xpc3RlbmVyLCBmYWxzZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0b2Nib3QuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjdXN0b21PcHRpb25zXG4gICAqL1xuICB0b2Nib3QuaW5pdCA9IGZ1bmN0aW9uIChjdXN0b21PcHRpb25zKSB7XG4gICAgLy8gZmVhdHVyZSB0ZXN0XG4gICAgaWYgKCFzdXBwb3J0cykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gTWVyZ2UgZGVmYXVsdHMgd2l0aCB1c2VyIG9wdGlvbnMuXG4gICAgLy8gU2V0IHRvIG9wdGlvbnMgdmFyaWFibGUgYXQgdGhlIHRvcC5cbiAgICBvcHRpb25zID0gZXh0ZW5kKGRlZmF1bHRPcHRpb25zLCBjdXN0b21PcHRpb25zIHx8IHt9KVxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgICB0aGlzLnN0YXRlID0ge31cblxuICAgIC8vIEluaXQgc21vb3RoIHNjcm9sbCBpZiBlbmFibGVkIChkZWZhdWx0KS5cbiAgICBpZiAob3B0aW9ucy5zY3JvbGxTbW9vdGgpIHtcbiAgICAgIG9wdGlvbnMuZHVyYXRpb24gPSBvcHRpb25zLnNjcm9sbFNtb290aER1cmF0aW9uXG4gICAgICBvcHRpb25zLm9mZnNldCA9IG9wdGlvbnMuc2Nyb2xsU21vb3RoT2Zmc2V0XG4gICAgICB0b2Nib3Quc2Nyb2xsU21vb3RoID0gcmVxdWlyZSgnLi9zY3JvbGwtc21vb3RoJykuaW5pdFNtb290aFNjcm9sbGluZyhvcHRpb25zKVxuICAgIH1cblxuICAgIC8vIFBhc3Mgb3B0aW9ucyB0byB0aGVzZSBtb2R1bGVzLlxuICAgIGJ1aWxkSHRtbCA9IEJ1aWxkSHRtbChvcHRpb25zKVxuICAgIHBhcnNlQ29udGVudCA9IFBhcnNlQ29udGVudChvcHRpb25zKVxuXG4gICAgLy8gRm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gICAgdGhpcy5fYnVpbGRIdG1sID0gYnVpbGRIdG1sXG4gICAgdGhpcy5fcGFyc2VDb250ZW50ID0gcGFyc2VDb250ZW50XG5cbiAgICAvLyBEZXN0cm95IGl0IGlmIGl0IGV4aXN0cyBmaXJzdC5cbiAgICB0b2Nib3QuZGVzdHJveSgpXG5cbiAgICAvLyBHZXQgaGVhZGluZ3MgYXJyYXkuXG4gICAgaGVhZGluZ3NBcnJheSA9IHBhcnNlQ29udGVudC5zZWxlY3RIZWFkaW5ncyhvcHRpb25zLmNvbnRlbnRTZWxlY3Rvciwgb3B0aW9ucy5oZWFkaW5nU2VsZWN0b3IpXG4gICAgLy8gUmV0dXJuIGlmIG5vIGhlYWRpbmdzIGFyZSBmb3VuZC5cbiAgICBpZiAoaGVhZGluZ3NBcnJheSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQnVpbGQgbmVzdGVkIGhlYWRpbmdzIGFycmF5LlxuICAgIHZhciBuZXN0ZWRIZWFkaW5nc09iaiA9IHBhcnNlQ29udGVudC5uZXN0SGVhZGluZ3NBcnJheShoZWFkaW5nc0FycmF5KVxuICAgIHZhciBuZXN0ZWRIZWFkaW5ncyA9IG5lc3RlZEhlYWRpbmdzT2JqLm5lc3RcblxuICAgIC8vIFJlbmRlci5cbiAgICBpZiAoIW9wdGlvbnMuc2tpcFJlbmRlcmluZykge1xuICAgICAgYnVpbGRIdG1sLnJlbmRlcihvcHRpb25zLnRvY1NlbGVjdG9yLCBuZXN0ZWRIZWFkaW5ncylcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgU2lkZWJhciBhbmQgYmluZCBsaXN0ZW5lcnMuXG4gICAgdGhpcy5fc2Nyb2xsTGlzdGVuZXIgPSB0aHJvdHRsZShmdW5jdGlvbiAoZSkge1xuICAgICAgYnVpbGRIdG1sLnVwZGF0ZVRvYyhoZWFkaW5nc0FycmF5KVxuICAgICAgdmFyIGlzVG9wID0gZSAmJiBlLnRhcmdldCAmJiBlLnRhcmdldC5zY3JvbGxpbmdFbGVtZW50ICYmIGUudGFyZ2V0LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wID09PSAwXG4gICAgICBpZiAoKGUgJiYgKGUuZXZlbnRQaGFzZSA9PT0gMCB8fCBlLmN1cnJlbnRUYXJnZXQgPT09IG51bGwpKSB8fCBpc1RvcCkge1xuICAgICAgICBidWlsZEh0bWwudXBkYXRlVG9jKGhlYWRpbmdzQXJyYXkpXG4gICAgICAgIGlmIChvcHRpb25zLnNjcm9sbEVuZENhbGxiYWNrKSB7XG4gICAgICAgICAgb3B0aW9ucy5zY3JvbGxFbmRDYWxsYmFjayhlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgb3B0aW9ucy50aHJvdHRsZVRpbWVvdXQpXG4gICAgdGhpcy5fc2Nyb2xsTGlzdGVuZXIoKVxuICAgIGlmIChvcHRpb25zLnNjcm9sbENvbnRhaW5lciAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG9wdGlvbnMuc2Nyb2xsQ29udGFpbmVyKSkge1xuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLnNjcm9sbENvbnRhaW5lcikuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fc2Nyb2xsTGlzdGVuZXIsIGZhbHNlKVxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLnNjcm9sbENvbnRhaW5lcikuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fc2Nyb2xsTGlzdGVuZXIsIGZhbHNlKVxuICAgIH0gZWxzZSB7XG4gICAgICBkb2
75N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLl9zY3JvbGxMaXN0ZW5lciwgZmFsc2UpXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl9zY3JvbGxMaXN0ZW5lciwgZmFsc2UpXG4gICAgfVxuXG4gICAgLy8gQmluZCBjbGljayBsaXN0ZW5lcnMgdG8gZGlzYWJsZSBhbmltYXRpb24uXG4gICAgdmFyIHRpbWVvdXQgPSBudWxsXG4gICAgdGhpcy5fY2xpY2tMaXN0ZW5lciA9IHRocm90dGxlKGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKG9wdGlvbnMuc2Nyb2xsU21vb3RoKSB7XG4gICAgICAgIGJ1aWxkSHRtbC5kaXNhYmxlVG9jQW5pbWF0aW9uKGV2ZW50KVxuICAgICAgfVxuICAgICAgYnVpbGRIdG1sLnVwZGF0ZVRvYyhoZWFkaW5nc0FycmF5KVxuICAgICAgLy8gVGltZW91dCB0byByZS1lbmFibGUgdGhlIGFuaW1hdGlvbi5cbiAgICAgIHRpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KHRpbWVvdXQpXG4gICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGJ1aWxkSHRtbC5lbmFibGVUb2NBbmltYXRpb24oKVxuICAgICAgfSwgb3B0aW9ucy5zY3JvbGxTbW9vdGhEdXJhdGlvbilcbiAgICB9LCBvcHRpb25zLnRocm90dGxlVGltZW91dClcblxuICAgIGlmIChvcHRpb25zLnNjcm9sbENvbnRhaW5lciAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG9wdGlvbnMuc2Nyb2xsQ29udGFpbmVyKSkge1xuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLnNjcm9sbENvbnRhaW5lcikuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9jbGlja0xpc3RlbmVyLCBmYWxzZSlcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9jbGlja0xpc3RlbmVyLCBmYWxzZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdG9jYm90LlxuICAgKi9cbiAgdG9jYm90LnJlZnJlc2ggPSBmdW5jdGlvbiAoY3VzdG9tT3B0aW9ucykge1xuICAgIHRvY2JvdC5kZXN0cm95KClcbiAgICB0b2Nib3QuaW5pdChjdXN0b21PcHRpb25zIHx8IHRoaXMub3B0aW9ucylcbiAgfVxuXG4gIC8vIE1ha2UgdG9jYm90IGF2YWlsYWJsZSBnbG9iYWxseS5cbiAgcm9vdC50b2Nib3QgPSB0b2Nib3RcblxuICByZXR1cm4gdG9jYm90XG59KVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvanMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0\n");
76
77  /***/ }),
78  /* 1 */
79  /*!***********************************!*\
80    !*** (webpack)/buildin/global.js ***!
81    \***********************************/
82  /*! dynamic exports provided */
83  /*! all exports used */
84  /***/ (function(module, exports) {
85  
86  eval("var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanM/MzY5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxldmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIilcclxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBnO1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAod2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n");
87  
88  /***/ }),
89  /* 2 */
90  /*!***********************************!*\
91    !*** ./src/js/default-options.js ***!
92    \***********************************/
93  /*! dynamic exports provided */
94  /*! all exports used */
95  /***/ (function(module, exports) {
96  
97  eval("module.exports = {\n  // Where to render the table of contents.\n  tocSelector: '.js-toc',\n  // Where to grab the headings to build the table of contents.\n  contentSelector: '.js-toc-content',\n  // Which headings to grab inside of the contentSelector element.\n  headingSelector: 'h1, h2, h3',\n  // Headings that match the ignoreSelector will be skipped.\n  ignoreSelector: '.js-toc-ignore',\n  // For headings inside relative or absolute positioned containers within content\n  hasInnerContainers: false,\n  // Main class to add to links.\n  linkClass: 'toc-link',\n  // Extra classes to add to links.\n  extraLinkClasses: '',\n  // Class to add to active links,\n  // the link corresponding to the top most heading on the page.\n  activeLinkClass: 'is-active-link',\n  // Main class to add to lists.\n  listClass: 'toc-list',\n  // Extra classes to add to lists.\n  extraListClasses: '',\n  // Class that gets added when a list should be collapsed.\n  isCollapsedClass: 'is-collapsed',\n  // Class that gets added when a list should be able\n  // to be collapsed but isn't necessarily collapsed.\n  collapsibleClass: 'is-collapsible',\n  // Class to add to list items.\n  listItemClass: 'toc-list-item',\n  // Class to add to active list items.\n  activeListItemClass: 'is-active-li',\n  // How many heading levels should not be collapsed.\n  // For example, number 6 will show everything since\n  // there are only 6 heading levels and number 0 will collapse them all.\n  // The sections that are hidden will open\n  // and close as you scroll to headings within them.\n  collapseDepth: 0,\n  // Smooth scrolling enabled.\n  scrollSmooth: true,\n  // Smooth scroll duration.\n  scrollSmoothDuration: 420,\n  // Smooth scroll offset.\n  scrollSmoothOffset: 0,\n  // Callback for scroll end.\n  scrollEndCallback: function (e) {},\n  // Headings offset between the headings and the top of the document (this is meant for minor adjustments).\n  headingsOffset: 1,\n  // Timeout between events firing to make sure it's\n  // not too rapid (for performance reasons).\n  throttleTimeout: 50,\n  // Element to add the positionFixedClass to.\n  positionFixedSelector: null,\n  // Fixed position class to add to make sidebar fixed after scrolling\n  // down past the fixedSidebarOffset.\n  positionFixedClass: 'is-position-fixed',\n  // fixedSidebarOffset can be any number but by default is set\n  // to auto which sets the fixedSidebarOffset to the sidebar\n  // element's offsetTop from the top of the document on init.\n  fixedSidebarOffset: 'auto',\n  // includeHtml can be set to true to include the HTML markup from the\n  // heading node instead of just including the textContent.\n  includeHtml: false,\n  // onclick function to apply to all links in toc. will be called with\n  // the event as the first parameter, and this can be used to stop,\n  // propagation, prevent default or perform action\n  onClick: false,\n  // orderedList can be set to false to generate unordered lists (ul)\n  // instead of ordered lists (ol)\n  orderedList: true,\n  // If there is a fixed article scroll container, set to calculate titles' offset\n  scrollContainer: null,\n  // prevent ToC DOM rendering if it's already rendered by an external system\n  skipRendering: false,\n  // Optional callback to change heading labels. \n  // For example it can be used to cut down and put ellipses on multiline headings you deem too long.\n  // Called each time a heading is parsed. Expects a string in return, the modified label to display.\n  // function (string) => string\n  headingLabelCallback: false,\n  // ignore headings that are hidden in DOM\n  ignoreHiddenElements: false,\n  // Optional callback to modify properties of parsed headings.\n  // The heading element is passed in node parameter and information parsed by default parser is provided in obj parameter.\n  // Function has to return the same or modified obj. \n  // The heading will be excluded from TOC if nothing is returned.\n  // function (object, HTMLElement) => object | void\n  headingObjectCallback: null\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9kZWZhdWx0LW9wdGlvbnMuanM/MTg1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gV2hlcmUgdG8gcmVuZGVyIHRoZSB0YWJsZSBvZiBjb250ZW50cy5cbiAgdG9jU2VsZWN0b3I6ICcuanMtdG9jJyxcbiAgLy8gV2hlcmUgdG8gZ3JhYiB0aGUgaGVhZGluZ3MgdG8gYnVpbGQgdGhlIHRhYmxlIG9mIGNvbnRlbn
97RzLlxuICBjb250ZW50U2VsZWN0b3I6ICcuanMtdG9jLWNvbnRlbnQnLFxuICAvLyBXaGljaCBoZWFkaW5ncyB0byBncmFiIGluc2lkZSBvZiB0aGUgY29udGVudFNlbGVjdG9yIGVsZW1lbnQuXG4gIGhlYWRpbmdTZWxlY3RvcjogJ2gxLCBoMiwgaDMnLFxuICAvLyBIZWFkaW5ncyB0aGF0IG1hdGNoIHRoZSBpZ25vcmVTZWxlY3RvciB3aWxsIGJlIHNraXBwZWQuXG4gIGlnbm9yZVNlbGVjdG9yOiAnLmpzLXRvYy1pZ25vcmUnLFxuICAvLyBGb3IgaGVhZGluZ3MgaW5zaWRlIHJlbGF0aXZlIG9yIGFic29sdXRlIHBvc2l0aW9uZWQgY29udGFpbmVycyB3aXRoaW4gY29udGVudFxuICBoYXNJbm5lckNvbnRhaW5lcnM6IGZhbHNlLFxuICAvLyBNYWluIGNsYXNzIHRvIGFkZCB0byBsaW5rcy5cbiAgbGlua0NsYXNzOiAndG9jLWxpbmsnLFxuICAvLyBFeHRyYSBjbGFzc2VzIHRvIGFkZCB0byBsaW5rcy5cbiAgZXh0cmFMaW5rQ2xhc3NlczogJycsXG4gIC8vIENsYXNzIHRvIGFkZCB0byBhY3RpdmUgbGlua3MsXG4gIC8vIHRoZSBsaW5rIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRvcCBtb3N0IGhlYWRpbmcgb24gdGhlIHBhZ2UuXG4gIGFjdGl2ZUxpbmtDbGFzczogJ2lzLWFjdGl2ZS1saW5rJyxcbiAgLy8gTWFpbiBjbGFzcyB0byBhZGQgdG8gbGlzdHMuXG4gIGxpc3RDbGFzczogJ3RvYy1saXN0JyxcbiAgLy8gRXh0cmEgY2xhc3NlcyB0byBhZGQgdG8gbGlzdHMuXG4gIGV4dHJhTGlzdENsYXNzZXM6ICcnLFxuICAvLyBDbGFzcyB0aGF0IGdldHMgYWRkZWQgd2hlbiBhIGxpc3Qgc2hvdWxkIGJlIGNvbGxhcHNlZC5cbiAgaXNDb2xsYXBzZWRDbGFzczogJ2lzLWNvbGxhcHNlZCcsXG4gIC8vIENsYXNzIHRoYXQgZ2V0cyBhZGRlZCB3aGVuIGEgbGlzdCBzaG91bGQgYmUgYWJsZVxuICAvLyB0byBiZSBjb2xsYXBzZWQgYnV0IGlzbid0IG5lY2Vzc2FyaWx5IGNvbGxhcHNlZC5cbiAgY29sbGFwc2libGVDbGFzczogJ2lzLWNvbGxhcHNpYmxlJyxcbiAgLy8gQ2xhc3MgdG8gYWRkIHRvIGxpc3QgaXRlbXMuXG4gIGxpc3RJdGVtQ2xhc3M6ICd0b2MtbGlzdC1pdGVtJyxcbiAgLy8gQ2xhc3MgdG8gYWRkIHRvIGFjdGl2ZSBsaXN0IGl0ZW1zLlxuICBhY3RpdmVMaXN0SXRlbUNsYXNzOiAnaXMtYWN0aXZlLWxpJyxcbiAgLy8gSG93IG1hbnkgaGVhZGluZyBsZXZlbHMgc2hvdWxkIG5vdCBiZSBjb2xsYXBzZWQuXG4gIC8vIEZvciBleGFtcGxlLCBudW1iZXIgNiB3aWxsIHNob3cgZXZlcnl0aGluZyBzaW5jZVxuICAvLyB0aGVyZSBhcmUgb25seSA2IGhlYWRpbmcgbGV2ZWxzIGFuZCBudW1iZXIgMCB3aWxsIGNvbGxhcHNlIHRoZW0gYWxsLlxuICAvLyBUaGUgc2VjdGlvbnMgdGhhdCBhcmUgaGlkZGVuIHdpbGwgb3BlblxuICAvLyBhbmQgY2xvc2UgYXMgeW91IHNjcm9sbCB0byBoZWFkaW5ncyB3aXRoaW4gdGhlbS5cbiAgY29sbGFwc2VEZXB0aDogMCxcbiAgLy8gU21vb3RoIHNjcm9sbGluZyBlbmFibGVkLlxuICBzY3JvbGxTbW9vdGg6IHRydWUsXG4gIC8vIFNtb290aCBzY3JvbGwgZHVyYXRpb24uXG4gIHNjcm9sbFNtb290aER1cmF0aW9uOiA0MjAsXG4gIC8vIFNtb290aCBzY3JvbGwgb2Zmc2V0LlxuICBzY3JvbGxTbW9vdGhPZmZzZXQ6IDAsXG4gIC8vIENhbGxiYWNrIGZvciBzY3JvbGwgZW5kLlxuICBzY3JvbGxFbmRDYWxsYmFjazogZnVuY3Rpb24gKGUpIHt9LFxuICAvLyBIZWFkaW5ncyBvZmZzZXQgYmV0d2VlbiB0aGUgaGVhZGluZ3MgYW5kIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50ICh0aGlzIGlzIG1lYW50IGZvciBtaW5vciBhZGp1c3RtZW50cykuXG4gIGhlYWRpbmdzT2Zmc2V0OiAxLFxuICAvLyBUaW1lb3V0IGJldHdlZW4gZXZlbnRzIGZpcmluZyB0byBtYWtlIHN1cmUgaXQnc1xuICAvLyBub3QgdG9vIHJhcGlkIChmb3IgcGVyZm9ybWFuY2UgcmVhc29ucykuXG4gIHRocm90dGxlVGltZW91dDogNTAsXG4gIC8vIEVsZW1lbnQgdG8gYWRkIHRoZSBwb3NpdGlvbkZpeGVkQ2xhc3MgdG8uXG4gIHBvc2l0aW9uRml4ZWRTZWxlY3RvcjogbnVsbCxcbiAgLy8gRml4ZWQgcG9zaXRpb24gY2xhc3MgdG8gYWRkIHRvIG1ha2Ugc2lkZWJhciBmaXhlZCBhZnRlciBzY3JvbGxpbmdcbiAgLy8gZG93biBwYXN0IHRoZSBmaXhlZFNpZGViYXJPZmZzZXQuXG4gIHBvc2l0aW9uRml4ZWRDbGFzczogJ2lzLXBvc2l0aW9uLWZpeGVkJyxcbiAgLy8gZml4ZWRTaWRlYmFyT2Zmc2V0IGNhbiBiZSBhbnkgbnVtYmVyIGJ1dCBieSBkZWZh
97dWx0IGlzIHNldFxuICAvLyB0byBhdXRvIHdoaWNoIHNldHMgdGhlIGZpeGVkU2lkZWJhck9mZnNldCB0byB0aGUgc2lkZWJhclxuICAvLyBlbGVtZW50J3Mgb2Zmc2V0VG9wIGZyb20gdGhlIHRvcCBvZiB0aGUgZG9jdW1lbnQgb24gaW5pdC5cbiAgZml4ZWRTaWRlYmFyT2Zmc2V0OiAnYXV0bycsXG4gIC8vIGluY2x1ZGVIdG1sIGNhbiBiZSBzZXQgdG8gdHJ1ZSB0byBpbmNsdWRlIHRoZSBIVE1MIG1hcmt1cCBmcm9tIHRoZVxuICAvLyBoZWFkaW5nIG5vZGUgaW5zdGVhZCBvZiBqdXN0IGluY2x1ZGluZyB0aGUgdGV4dENvbnRlbnQuXG4gIGluY2x1ZGVIdG1sOiBmYWxzZSxcbiAgLy8gb25jbGljayBmdW5jdGlvbiB0byBhcHBseSB0byBhbGwgbGlua3MgaW4gdG9jLiB3aWxsIGJlIGNhbGxlZCB3aXRoXG4gIC8vIHRoZSBldmVudCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyLCBhbmQgdGhpcyBjYW4gYmUgdXNlZCB0byBzdG9wLFxuICAvLyBwcm9wYWdhdGlvbiwgcHJldmVudCBkZWZhdWx0IG9yIHBlcmZvcm0gYWN0aW9uXG4gIG9uQ2xpY2s6IGZhbHNlLFxuICAvLyBvcmRlcmVkTGlzdCBjYW4gYmUgc2V0IHRvIGZhbHNlIHRvIGdlbmVyYXRlIHVub3JkZXJlZCBsaXN0cyAodWwpXG4gIC8vIGluc3RlYWQgb2Ygb3JkZXJlZCBsaXN0cyAob2wpXG4gIG9yZGVyZWRMaXN0OiB0cnVlLFxuICAvLyBJZiB0aGVyZSBpcyBhIGZpeGVkIGFydGljbGUgc2Nyb2xsIGNvbnRhaW5lciwgc2V0IHRvIGNhbGN1bGF0ZSB0aXRsZXMnIG9mZnNldFxuICBzY3JvbGxDb250YWluZXI6IG51bGwsXG4gIC8vIHByZXZlbnQgVG9DIERPTSByZW5kZXJpbmcgaWYgaXQncyBhbHJlYWR5IHJlbmRlcmVkIGJ5IGFuIGV4dGVybmFsIHN5c3RlbVxuICBza2lwUmVuZGVyaW5nOiBmYWxzZSxcbiAgLy8gT3B0aW9uYWwgY2FsbGJhY2sgdG8gY2hhbmdlIGhlYWRpbmcgbGFiZWxzLiBcbiAgLy8gRm9yIGV4YW1wbGUgaXQgY2FuIGJlIHVzZWQgdG8gY3V0IGRvd24gYW5kIHB1dCBlbGxpcHNlcyBvbiBtdWx0aWxpbmUgaGVhZGluZ3MgeW91IGRlZW0gdG9vIGxvbmcuXG4gIC8vIENhbGxlZCBlYWNoIHRpbWUgYSBoZWFkaW5nIGlzIHBhcnNlZC4gRXhwZWN0cyBhIHN0cmluZyBpbiByZXR1cm4sIHRoZSBtb2RpZmllZCBsYWJlbCB0byBkaXNwbGF5LlxuICAvLyBmdW5jdGlvbiAoc3RyaW5nKSA9PiBzdHJpbmdcbiAgaGVhZGluZ0xhYmVsQ2FsbGJhY2s6IGZhbHNlLFxuICAvLyBpZ25vcmUgaGVhZGluZ3MgdGhhdCBhcmUgaGlkZGVuIGluIERPTVxuICBpZ25vcmVIaWRkZW5FbGVtZW50czogZmFsc2UsXG4gIC8vIE9wdGlvbmFsIGNhbGxiYWNrIHRvIG1vZGlmeSBwcm9wZXJ0aWVzIG9mIHBhcnNlZCBoZWFkaW5ncy5cbiAgLy8gVGhlIGhlYWRpbmcgZWxlbWVudCBpcyBwYXNzZWQgaW4gbm9kZSBwYXJhbWV0ZXIgYW5kIGluZm9ybWF0aW9uIHBhcnNlZCBieSBkZWZhdWx0IHBhcnNlciBpcyBwcm92aWRlZCBpbiBvYmogcGFyYW1ldGVyLlxuICAvLyBGdW5jdGlvbiBoYXMgdG8gcmV0dXJuIHRoZSBzYW1lIG9yIG1vZGlmaWVkIG9iai4gXG4gIC8vIFRoZSBoZWFkaW5nIHdpbGwgYmUgZXhjbHVkZWQgZnJvbSBUT0MgaWYgbm90aGluZyBpcyByZXR1cm5lZC5cbiAgLy8gZnVuY3Rpb24gKG9iamVjdCwgSFRNTEVsZW1lbnQpID0+IG9iamVjdCB8IHZvaWRcbiAgaGVhZGluZ09iamVjdENhbGxiYWNrOiBudWxsXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9qcy9kZWZhdWx0LW9wdGlvbnMuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2\n");
98  
99  /***/ }),
100  /* 3 */
101  /*!******************************!*\
102    !*** ./src/js/build-html.js ***!
103    \******************************/
104  /*! dynamic exports provided */
105  /*! all exports used */
106  /***/ (function(module, exports) {
107  
108  eval("/**\n * This file is responsible for building the DOM and updating DOM state.\n *\n * @author Tim Scanlin\n */\n\nmodule.exports = function (options) {\n  var forEach = [].forEach\n  var some = [].some\n  var body = document.body\n  var currentlyHighlighting = true\n  var SPACE_CHAR = ' '\n\n  /**\n   * Create link and list elements.\n   * @param {Object} d\n   * @param {HTMLElement} container\n   * @return {HTMLElement}\n   */\n  function createEl (d, container) {\n    var link = container.appendChild(createLink(d))\n    if (d.children.length) {\n      var list = createList(d.isCollapsed)\n      d.children.forEach(function (child) {\n        createEl(child, list)\n      })\n      link.appendChild(list)\n    }\n  }\n\n  /**\n   * Render nested heading array data into a given selector.\n   * @param {String} selector\n   * @param {Array} data\n   * @return {HTMLElement}\n   */\n  function render (selector, data) {\n    var collapsed = false\n    var container = createList(collapsed)\n\n    data.forEach(function (d) {\n      createEl(d, container)\n    })\n\n    var parent = document.querySelector(selector)\n\n    // Return if no parent is found.\n    if (parent === null) {\n      return\n    }\n\n    // Remove existing child if it exists.\n    if (parent.firstChild) {\n      parent.removeChild(parent.firstChild)\n    }\n\n    // Just return the parent and don't append the list if no links are found.\n    if (data.length === 0) {\n      return parent\n    }\n\n    // Append the Elements that have been created\n    return parent.appendChild(container)\n  }\n\n  /**\n   * Create link element.\n   * @param {Object} data\n   * @return {HTMLElement}
108\n   */\n  function createLink (data) {\n    var item = document.createElement('li')\n    var a = document.createElement('a')\n    if (options.listItemClass) {\n      item.setAttribute('class', options.listItemClass)\n    }\n\n    if (options.onClick) {\n      a.onclick = options.onClick\n    }\n\n    if (options.includeHtml && data.childNodes.length) {\n      forEach.call(data.childNodes, function (node) {\n        a.appendChild(node.cloneNode(true))\n      })\n    } else {\n      // Default behavior.\n      a.textContent = data.textContent\n    }\n    a.setAttribute('href', '#' + data.id)\n    a.setAttribute('class', options.linkClass +\n      SPACE_CHAR + 'node-name--' + data.nodeName +\n      SPACE_CHAR + options.extraLinkClasses)\n    item.appendChild(a)\n    return item\n  }\n\n  /**\n   * Create list element.\n   * @param {Boolean} isCollapsed\n   * @return {HTMLElement}\n   */\n  function createList (isCollapsed) {\n    var listElement = (options.orderedList) ? 'ol' : 'ul'\n    var list = document.createElement(listElement)\n    var classes = options.listClass +\n      SPACE_CHAR + options.extraListClasses\n    if (isCollapsed) {\n      classes += SPACE_CHAR + options.collapsibleClass\n      classes += SPACE_CHAR + options.isCollapsedClass\n    }\n    list.setAttribute('class', classes)\n    return list\n  }\n\n  /**\n   * Update fixed sidebar class.\n   * @return {HTMLElement}\n   */\n  function updateFixedSidebarClass () {\n    if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n      var top = document.querySelector(options.scrollContainer).scrollTop\n    } else {\n      var top = document.documentElement.scrollTop || body.scrollTop\n    }\n    var posFixedEl = document.querySelector(options.positionFixedSelector)\n\n    if (options.fixedSidebarOffset === 'auto') {\n      options.fixedSidebarOffset = document.querySelector(options.tocSelector).offsetTop\n    }\n\n    if (top > options.fixedSidebarOffset) {\n      if (posFixedEl.className.indexOf(options.positionFixedClass) === -1) {\n        posFixedEl.className += SPACE_CHAR + options.positionFixedClass\n      }\n    } else {\n      posFixedEl.className = posFixedEl.className.split(SPACE_CHAR + options.positionFixedClass).join('')\n    }\n  }\n\n  /**\n   * Get top position of heading\n   * @param {HTMLElement}\n   * @return {integer} position\n   */\n  function getHeadingTopPos (obj) {\n    var position = 0\n    if (obj != document.querySelector(options.contentSelector && obj != null)) {\n      position = obj.offsetTop\n      if (options.hasInnerContainers) { position += getHeadingTopPos(obj.offsetParent) }\n    }\n    return position\n  }\n\n  /**\n   * Update TOC highlighting and collpased groupings.\n   */\n  function updateToc (headingsArray) {\n    // If a fixed content container was set\n    if (options.scrollContainer && document.querySelector(options.scrollContainer)) {\n      var top = document.querySelector(options.scrollContainer).scrollTop\n    } else {\n      var top = document.documentElement.scrollTop || body.scrollTop\n    }\n\n    // Add fixed class at offset\n    if (options.positionFixedSelector) {\n      updateFixedSidebarClass()\n    }\n\n    // Get the top most heading currently visible on the page so we know what to highlight.\n    var headings = headingsArray\n    var topHeader\n    // Using some instead of each so that we can escape early.\n    if (currentlyHighlighting &&\n      document.querySelector(options.tocSelector) !== null &&\n      headings.length > 0) {\n      some.call(headings, function (heading, i) {\n        if (getHeadingTopPos(heading) > top + options.headingsOffset + 10) {\n          // Don't allow negative index value.\n          var index = (i === 0) ? i : i - 1\n          topHeader = headings[index]\n          return true\n        } else if (i === headings.length - 1) {\n          // This allows scrolling for the last heading on the page.\n          topHeader = headings[headings.length - 1]\n          return true\n        }\n      })\n\n      // Remove the active class from the other tocLinks.\n      var tocLinks = document.querySelector(options.tocSelector)\n        .querySelectorAll('.' + options.linkClass)\n      forEac
108h.call(tocLinks, function (tocLink) {\n        tocLink.className = tocLink.className.split(SPACE_CHAR + options.activeLinkClass).join('')\n      })\n      var tocLis = document.querySelector(options.tocSelector)\n        .querySelectorAll('.' + options.listItemClass)\n      forEach.call(tocLis, function (tocLi) {\n        tocLi.className = tocLi.className.split(SPACE_CHAR + options.activeListItemClass).join('')\n      })\n\n      // Add the active class to the active tocLink.\n      var activeTocLink = document.querySelector(options.tocSelector)\n        .querySelector('.' + options.linkClass +\n          '.node-name--' + topHeader.nodeName +\n          '[href=\"#' + topHeader.id + '\"]')\n      if (activeTocLink.className.indexOf(options.activeLinkClass) === -1) {\n        activeTocLink.className += SPACE_CHAR + options.activeLinkClass\n      }\n      var li = activeTocLink.parentNode\n      if (li && li.className.indexOf(options.activeListItemClass) === -1) {\n        li.className += SPACE_CHAR + options.activeListItemClass\n      }\n\n      var tocLists = document.querySelector(options.tocSelector)\n        .querySelectorAll('.' + options.listClass + '.' + options.collapsibleClass)\n\n      // Collapse the other collapsible lists.\n      forEach.call(tocLists, function (list) {\n        if (list.className.indexOf(options.isCollapsedClass) === -1) {\n          list.className += SPACE_CHAR + options.isCollapsedClass\n        }\n      })\n\n      // Expand the active link's collapsible list and its sibling if applicable.\n      if (activeTocLink.nextSibling && activeTocLink.nextSibling.className.indexOf(options.isCollapsedClass) !== -1) {\n        activeTocLink.nextSibling.className = activeTocLink.nextSibling.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n      }\n      removeCollapsedFromParents(activeTocLink.parentNode.parentNode)\n    }\n  }\n\n  /**\n   * Remove collpased class from parent elements.\n   * @param {HTMLElement} element\n   * @return {HTMLElement}\n   */\n  function removeCollapsedFromParents (element) {\n    if (element.className.indexOf(options.collapsibleClass) !== -1 && element.className.indexOf(options.isCollapsedClass) !== -1) {\n      element.className = element.className.split(SPACE_CHAR + options.isCollapsedClass).join('')\n      return removeCollapsedFromParents(element.parentNode.parentNode)\n    }\n    return element\n  }\n\n  /**\n   * Disable TOC Animation when a link is clicked.\n   * @param {Event} event\n   */\n  function disableTocAnimation (event) {\n    var target = event.target || event.srcElement\n    if (typeof target.className !== 'string' || target.className.indexOf(options.linkClass) === -1) {\n      return\n    }\n    // Bind to tocLink clicks to temporarily disable highlighting\n    // while smoothScroll is animating.\n    currentlyHighlighting = false\n  }\n\n  /**\n   * Enable TOC Animation.\n   */\n  function enableTocAnimation () {\n    currentlyHighlighting = true\n  }\n\n  return {\n    enableTocAnimation: enableTocAnimation,\n    disableTocAnimation: disableTocAnimation,\n    render: render,\n    updateToc: updateToc\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9idWlsZC1odG1sLmpzPzdkMDEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcmVzcG9uc2libGUgZm9yIGJ1aWxkaW5nIHRoZSBET00gYW5kIHVwZGF0aW5nIERPTSBzdGF0ZS5cbiAqXG4gKiBAYXV0aG9yIFRpbSBTY2FubGluXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgZm9yRWFjaCA9IFtdLmZvckVhY2hcbiAgdmFyIHNvbWUgPSBbXS5zb21lXG4gIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keVxuICB2YXIgY3VycmVudGx5SGlnaGxpZ2h0aW5nID0gdHJ1ZVxuICB2YXIgU1BBQ0VfQ0hBUiA9ICcgJ1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgbGluayBhbmQgbGlzdCBlbGVtZW50cy5cbiAgICogQHBhcmFtIHtPYmplY3R9IGRcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY29udGFpbmVyXG4gICAqIEByZXR1cm4ge0hUTUxFbGVtZW50fVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlRWwgKGQsIGNvbnRhaW5lcikge1xuICAgIHZhciBsaW5rID0gY29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUxpbmsoZCkpXG4gICAgaWYgKGQuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB2Y
108XIgbGlzdCA9IGNyZWF0ZUxpc3QoZC5pc0NvbGxhcHNlZClcbiAgICAgIGQuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgY3JlYXRlRWwoY2hpbGQsIGxpc3QpXG4gICAgICB9KVxuICAgICAgbGluay5hcHBlbmRDaGlsZChsaXN0KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgbmVzdGVkIGhlYWRpbmcgYXJyYXkgZGF0YSBpbnRvIGEgZ2l2ZW4gc2VsZWN0b3IuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3RvclxuICAgKiBAcGFyYW0ge0FycmF5fSBkYXRhXG4gICAqIEByZXR1cm4ge0hUTUxFbGVtZW50fVxuICAgKi9cbiAgZnVuY3Rpb24gcmVuZGVyIChzZWxlY3RvciwgZGF0YSkge1xuICAgIHZhciBjb2xsYXBzZWQgPSBmYWxzZVxuICAgIHZhciBjb250YWluZXIgPSBjcmVhdGVMaXN0KGNvbGxhcHNlZClcblxuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xuICAgICAgY3JlYXRlRWwoZCwgY29udGFpbmVyKVxuICAgIH0pXG5cbiAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcilcblxuICAgIC8vIFJldHVybiBpZiBubyBwYXJlbnQgaXMgZm91bmQuXG4gICAgaWYgKHBhcmVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGNoaWxkIGlmIGl0IGV4aXN0cy5cbiAgICBpZiAocGFyZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChwYXJlbnQuZmlyc3RDaGlsZClcbiAgICB9XG5cbiAgICAvLyBKdXN0IHJldHVybiB0aGUgcGFyZW50IGFuZCBkb24ndCBhcHBlbmQgdGhlIGxpc3QgaWYgbm8gbGlua3MgYXJlIGZvdW5kLlxuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHBhcmVudFxuICAgIH1cblxuICAgIC8vIEFwcGVuZCB0aGUgRWxlbWVudHMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZFxuICAgIHJldHVybiBwYXJlbnQuYXBwZW5kQ2hpbGQoY29udGFpbmVyKVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBsaW5rIGVsZW1lbnQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhXG4gICAqIEByZXR1cm4ge0hUTUxFbGVtZW50fVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlTGluayAo
108ZGF0YSkge1xuICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgaWYgKG9wdGlvbnMubGlzdEl0ZW1DbGFzcykge1xuICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgb3B0aW9ucy5saXN0SXRlbUNsYXNzKVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm9uQ2xpY2spIHtcbiAgICAgIGEub25jbGljayA9IG9wdGlvbnMub25DbGlja1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmluY2x1ZGVIdG1sICYmIGRhdGEuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIGZvckVhY2guY2FsbChkYXRhLmNoaWxkTm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGEuYXBwZW5kQ2hpbGQobm9kZS5jbG9uZU5vZGUodHJ1ZSkpXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IGJlaGF2aW9yLlxuICAgICAgYS50ZXh0Q29udGVudCA9IGRhdGEudGV4dENvbnRlbnRcbiAgICB9XG4gICAgYS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnIycgKyBkYXRhLmlkKVxuICAgIGEuc2V0QXR0cmlidXRlKCdjbGFzcycsIG9wdGlvbnMubGlua0NsYXNzICtcbiAgICAgIFNQQUNFX0NIQVIgKyAnbm9kZS1uYW1lLS0nICsgZGF0YS5ub2RlTmFtZSArXG4gICAgICBTUEFDRV9DSEFSICsgb3B0aW9ucy5leHRyYUxpbmtDbGFzc2VzKVxuICAgIGl0ZW0uYXBwZW5kQ2hpbGQoYSlcbiAgICByZXR1cm4gaXRlbVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBsaXN0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gaXNDb2xsYXBzZWRcbiAgICogQHJldHVybiB7SFRNTEVsZW1lbnR9XG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGVMaXN0IChpc0NvbGxhcHNlZCkge1xuICAgIHZhciBsaXN0RWxlbWVudCA9IChvcHRpb25zLm9yZGVyZWRMaXN0KSA/ICdvbCcgOiAndWwnXG4gICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGxpc3RFbGVtZW50KVxuICAgIHZhciBjbGFzc2VzID0gb3B0aW9ucy5saXN0Q2xhc3MgK1xuICAgICAgU1BBQ0VfQ0hBUiArIG9wdGlvbnMuZXh0cmFMaXN0Q2xhc3Nlc1xuICAgIGlmIChpc0NvbGxhcHNlZCkge1xuICAgICAgY2xhc3NlcyArPSBTUEFDRV9DSEFSICsgb3B0aW9ucy5jb2xsYXBzaWJsZUNsYXNzXG4gICAgICBjbGFzc2VzICs9IFNQQUNFX0NIQVIgKyBvcHRpb25zLmlzQ29sbGFwc2VkQ2xhc3NcbiAgICB9XG4gICAgbGlzdC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY2xhc3NlcylcbiAgICByZXR1cm4gbGlzdFxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBmaXhlZCBzaWRlYmFyIGNsYXNzLlxuICAgKiBAcmV0dXJuIHtIVE1MRWxlbWVudH1cbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZUZpeGVkU2lkZWJhckNsYXNzICgpIHtcbiAgICBpZiAob3B0aW9ucy5zY3JvbGxDb250YWluZXIgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLnNjcm9sbENvbnRhaW5lcikpIHtcbiAgICAgIHZhciB0b3AgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG9wdGlvbnMuc2Nyb2xsQ29udGFpbmVyKS5zY3JvbGxUb3BcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRvcCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgYm9keS5zY3JvbGxUb3BcbiAgICB9XG4gICAgdmFyIHBvc0ZpeGVkRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG9wdGlvbnMucG9zaXRpb25GaXhlZFNlbGVjdG9yKVxuXG4gICAgaWYgKG9wdGlvbnMuZml4ZWRTaWRlYmFyT2Zmc2V0ID09PSAnYXV0bycpIHtcbiAgICAgIG9wdGlvbnMuZml4ZWRTaWRlYmFyT2Zmc2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLnRvY1NlbGVjdG9yKS5vZmZzZXRUb3BcbiAgICB9XG5cbiAgICBpZiAodG9wID4gb3B0aW9ucy5maXhlZFNpZGViYXJPZmZzZXQpIHtcbiAgICAgIGlmIChwb3NGaXhlZEVsLmNsYXNzTmFtZS5pbmRleE9mKG9wdGlvbnMucG9zaXRpb25GaXhlZENsYXNzKSA9PT0gLTEpIHtcbiAgICAgICAgcG9zRml4ZWRFbC5jbGFzc05hbWUgKz0gU1BBQ0VfQ0hBUiArIG9wdGlvbnMucG9zaXRpb25GaXhlZENsYXNzXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvc0ZpeGVkRWwuY2xhc3NOYW1lID0gcG9zRml4ZWRFbC5jbGFzc05hbWUuc3BsaXQoU1BBQ0VfQ0hBUiArIG9wdGlvbnMucG9zaXRpb25GaXhlZENsYXNzKS5qb2luKCcnKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdG9wIHBvc2l0aW9uIG9mIGhlYWRpbmdcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH1cbiAgICogQHJldHVybiB7aW50ZWdlcn0gcG9zaXRpb25cbiAgICovXG4gIGZ1bmN0aW9uIGdldEhlYWRpbmdUb3BQb3MgKG9iaikge1xuICAgIHZhciBwb3NpdGlvbiA9IDBcbiAgICBpZiAob2JqICE9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iob3B0aW9ucy5jb250ZW50U2VsZWN0b3IgJiYgb2JqICE9IG51bGwpKSB7XG4gICAgICBwb3NpdGlvbiA9IG9iai5vZmZzZXRUb3BcbiAgICAgIGlmIChvcHRpb25zLmhhc0lubmVyQ29udGFpbmVycykgeyBwb3NpdGlvbiArPSBnZXRIZWFkaW5nVG9wUG9zKG9iai5vZmZzZXRQYXJlbnQpIH1cbiAgICB9XG4gICAgcmV0dXJuIHBvc2l0aW9uXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIFRPQyBoaWdobGlnaHRpbmcgYW5kIGNvbGxwYXNlZCBncm91cGluZ3MuXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVUb2MgKGhlYWRpbmdzQXJyYXkpIHtcbiAgICAvLyBJZiBhIGZpeGVkIGNvbnRlbnQgY29udGFpbmVyIHdhcyBzZXRcbiAgICBpZiAob3B0aW9ucy5zY3JvbGxDb250YWluZXIgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLnNjcm9sbENvbnRhaW5lcikpIHtcbiAgICAgIHZhciB0b3AgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG9wdGlvbnMuc2Nyb2xsQ29udGFpbmVyKS5zY3JvbGxUb3BcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRvcCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgYm9keS5zY3JvbGxUb3BcbiAgICB9XG5cbiAgICAvLyBBZGQgZml4ZWQgY2xhc3MgYXQgb2Zmc2V0XG4gICAgaWYgKG9wdGlvbnMucG9zaXRpb25GaXhlZFNlbGVjdG9yKSB7XG4gICAgICB1cGRhdGVGaXhlZFNpZGViYXJDbGFzcygpXG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSB0b3AgbW9zdCBoZWFkaW5nIGN1cnJlbnRseSB2aXNpYmxlIG9uIHRoZSBwYWdlIHNvIHdlIGtub3cgd2hhdCB0byBoaWdobGlnaHQuXG4gICAgdmFyIGhlYWRpbmdzID0gaGVhZGluZ3NBcnJheVxuICAgIHZhciB0b3BIZWFkZXJcbiAgICAvLyBVc2luZyBzb21lIGluc3RlYWQgb2YgZWFjaCBzbyB0aGF0IHdlIGNhbiBlc2NhcGUgZWFybHkuXG4gICAgaWYgKGN1cnJlbnRseUhpZ2hsaWdodGluZyAmJlxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLnRvY1NlbGVjdG9yKSAhPT0gbnVsbCAmJlxuICAgICAgaGVhZGluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgc29tZS5jYWxsKGhlYWRpbmdzLCBmdW5jdGlvbiAoaGVhZGluZywgaSkge1xuICAgICAgICBpZiAoZ2V0SGVhZGluZ1RvcFBvcyhoZWFkaW5nKSA+IHRvcCArIG9wdGlvbnMuaGVhZGluZ3NPZmZzZXQgKyAxMCkge1xuICAgICAgICAgIC8vIERvbid0IGFsbG93IG5lZ2F0aXZlIGluZGV4IHZhbHVlLlxuICAgICAgICAgI
108HZhciBpbmRleCA9IChpID09PSAwKSA/IGkgOiBpIC0gMVxuICAgICAgICAgIHRvcEhlYWRlciA9IGhlYWRpbmdzW2luZGV4XVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gaGVhZGluZ3MubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIC8vIFRoaXMgYWxsb3dzIHNjcm9sbGluZyBmb3IgdGhlIGxhc3QgaGVhZGluZyBvbiB0aGUgcGFnZS5cbiAgICAgICAgICB0b3BIZWFkZXIgPSBoZWFkaW5nc1toZWFkaW5ncy5sZW5ndGggLSAxXVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgYWN0aXZlIGNsYXNzIGZyb20gdGhlIG90aGVyIHRvY0xpbmtzLlxuICAgICAgdmFyIHRvY0xpbmtzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLnRvY1NlbGVjdG9yKVxuICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLicgKyBvcHRpb25zLmxpbmtDbGFzcylcbiAgICAgIGZvckVhY2guY2FsbCh0b2NMaW5rcywgZnVuY3Rpb24gKHRvY0xpbmspIHtcbiAgICAgICAgdG9jTGluay5jbGFzc05hbWUgPSB0b2NMaW5rLmNsYXNzTmFtZS5zcGxpdChTUEFDRV9DSEFSICsgb3B0aW9ucy5hY3RpdmVMaW5rQ2xhc3MpLmpvaW4oJycpXG4gICAgICB9KVxuICAgICAgdmFyIHRvY0xpcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iob3B0aW9ucy50b2NTZWxlY3RvcilcbiAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgb3B0aW9ucy5saXN0SXRlbUNsYXNzKVxuICAgICAgZm9yRWFjaC5jYWxsKHRvY0xpcywgZnVuY3Rpb24gKHRvY0xpKSB7XG4gICAgICAgIHRvY0xpLmNsYXNzTmFtZSA9IHRvY0xpLmNsYXNzTmFtZS5zcGxpdChTUEFDRV9DSEFSICsgb3B0aW9ucy5hY3RpdmVMaXN0SXRlbUNsYXNzKS5qb2luKCcnKVxuICAgICAgfSlcblxuICAgICAgLy8gQWRkIHRoZSBhY3RpdmUgY2xhc3MgdG8gdGhlIGFjdGl2ZSB0b2NMaW5rLlxuICAgICAgdmFyIGFjdGl2ZVRvY0xpbmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG9wdGlvbnMudG9jU2VsZWN0b3IpXG4gICAgICAgIC5xdWVyeVNlbGVjdG9yKCcuJyArIG9wdGlvbnMubGlua0NsYXNzICtcbiAgICAgICAgICAnLm5vZGUtbmFtZS0tJyArIHRvcEhlYWRlci5ub2RlTmFtZSArXG4gICAgICAgICAgJ1tocmVmPVwiIycgKyB0b3BIZWFkZXIuaWQgKyAnXCJdJylcbiAgICAgIGlmIChhY3RpdmVUb2NMaW5rLmNsYXNzTmFtZS5pbmRleE9mKG9wdGlvbnMuYWN0aXZlTGlua0NsYXNzKSA9PT0gLTEpIHtcbiAgICAgICAgYWN0aXZlVG9jTGluay5jbGFzc05hbWUgKz0gU1BBQ0VfQ0hBUiArIG9wdGlvbnMuYWN0aXZlTGlua0NsYXNzXG4gICAgICB9XG4gICAgICB2Y
108XIgbGkgPSBhY3RpdmVUb2NMaW5rLnBhcmVudE5vZGVcbiAgICAgIGlmIChsaSAmJiBsaS5jbGFzc05hbWUuaW5kZXhPZihvcHRpb25zLmFjdGl2ZUxpc3RJdGVtQ2xhc3MpID09PSAtMSkge1xuICAgICAgICBsaS5jbGFzc05hbWUgKz0gU1BBQ0VfQ0hBUiArIG9wdGlvbnMuYWN0aXZlTGlzdEl0ZW1DbGFzc1xuICAgICAgfVxuXG4gICAgICB2YXIgdG9jTGlzdHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG9wdGlvbnMudG9jU2VsZWN0b3IpXG4gICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIG9wdGlvbnMubGlzdENsYXNzICsgJy4nICsgb3B0aW9ucy5jb2xsYXBzaWJsZUNsYXNzKVxuXG4gICAgICAvLyBDb2xsYXBzZSB0aGUgb3RoZXIgY29sbGFwc2libGUgbGlzdHMuXG4gICAgICBmb3JFYWNoLmNhbGwodG9jTGlzdHMsIGZ1bmN0aW9uIChsaXN0KSB7XG4gICAgICAgIGlmIChsaXN0LmNsYXNzTmFtZS5pbmRleE9mKG9wdGlvbnMuaXNDb2xsYXBzZWRDbGFzcykgPT09IC0xKSB7XG4gICAgICAgICAgbGlzdC5jbGFzc05hbWUgKz0gU1BBQ0VfQ0hBUiArIG9wdGlvbnMuaXNDb2xsYXBzZWRDbGFzc1xuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICAvLyBFeHBhbmQgdGhlIGFjdGl2ZSBsaW5rJ3MgY29sbGFwc2libGUgbGlzdCBhbmQgaXRzIHNpYmxpbmcgaWYgYXBwbGljYWJsZS5cbiAgICAgIGlmIChhY3RpdmVUb2NMaW5rLm5leHRTaWJsaW5nICYmIGFjdGl2ZVRvY0xpbmsubmV4dFNpYmxpbmcuY2xhc3NOYW1lLmluZGV4T2Yob3B0aW9ucy5pc0NvbGxhcHNlZENsYXNzKSAhPT0gLTEpIHtcbiAgICAgICAgYWN0aXZlVG9jTGluay5uZXh0U2libGluZy5jbGFzc05hbWUgPSBhY3RpdmVUb2NMaW5rLm5leHRTaWJsaW5nLmNsYXNzTmFtZS5zcGxpdChTUEFDRV9DSEFSICsgb3B0aW9ucy5pc0NvbGxhcHNlZENsYXNzKS5qb2luKCcnKVxuICAgICAgfVxuICAgICAgcmVtb3ZlQ29sbGFwc2VkRnJvbVBhcmVudHMoYWN0aXZlVG9jTGluay5wYXJlbnROb2RlLnBhcmVudE5vZGUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBjb2xscGFzZWQgY2xhc3MgZnJvbSBwYXJlbnQgZWxlbWVudHMuXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAgICogQHJldHVybiB7SFRNTEVsZW1lbnR9XG4gICAqL1xuICBmdW5jdGlvbiByZW1vdmVDb2xsYXBzZWRGcm9tUGFyZW50cyAoZWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50LmNsYXNzTmFtZS5pbmRleE9mKG9wdGlvbnMuY29sbGFwc2libGVDbGFzcykgIT09IC0xICYmIGVsZW1lbnQuY2xhc3NOYW1lLmluZGV4T2Yob3B0aW9ucy5pc0NvbGxhcHNlZENsYXNzKSAhPT0gLTEpIHtcbiAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gZWxlbWVudC5jbGFzc05hbWUuc3BsaXQoU1BBQ0VfQ0hBUiArIG9wdGlvbnMuaXNDb2xsYXBzZWRDbGFzcykuam9pbignJylcbiAgICAgIHJldHVybiByZW1vdmVDb2xsYXBzZWRGcm9tUGFyZW50cyhlbGVtZW50LnBhcmVudE5vZGUucGFyZW50Tm9kZSlcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIFRPQyBBbmltYXRpb24gd2hlbiBhIGxpbmsgaXMgY2xpY2tlZC5cbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICovXG4gIGZ1bmN0aW9uIGRpc2FibGVUb2NBbmltYXRpb24gKGV2ZW50KSB7XG4gICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQuY2xhc3NOYW1lICE9PSAnc3RyaW5nJyB8fCB0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2Yob3B0aW9ucy5saW5rQ2xhc3MpID09PSAtMSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIC8vIEJpbmQgdG8gdG9jTGluayBjbGlja3MgdG8gdGVtcG9yYXJpbHkgZGlzYWJsZSBoaWdobGlnaHRpbmdcbiAgICAvLyB3aGlsZSBzbW9vdGhTY3JvbGwgaXMgYW5pbWF0aW5nLlxuICAgIGN1cnJlbnRseUhpZ2hsaWdodGluZyA9IGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIFRPQyBBbmltYXRpb24uXG4gICAqL1xuICBmdW5jdGlvbiBlbmFibGVUb2NBbmltYXRpb24gKCkge1xuICAgIGN1cnJlbnRseUhpZ2hsaWdodGluZyA9IHRydWVcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW5hYmxlVG9jQW5pbWF0aW9uOiBlbmFibGVUb2NBbmltYXRpb24sXG4gICAgZGlzYWJsZVRvY0FuaW1hdGlvbjogZGlzYWJsZVRvY0FuaW1hdGlvbixcbiAgICByZW5kZXI6IHJlbmRlcixcbiAgICB1cGRhdGVUb2M6IHVwZGF0ZVRvY1xuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy9qcy9idWlsZC1odG1sLmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3\n");
109  
110  /***/ }),
111  /* 4 */
112  /*!*********************************!*\
113    !*** ./src/js/parse-content.js ***!
114    \*********************************/
115  /*! dynamic exports provided */
116  /*! all exports used */
117  /***/ (function(module, exports) {
118  
119  eval("/**\n * This file is responsible for parsing the content from the DOM and making\n * sure data is nested properly.\n *\n * @author Tim Scanlin\n */\n\nmodule.exports = function parseContent (options) {\n  var reduce = [].reduce\n\n  /**\n   * Get the last item in an array and return a reference to it.\n   * @param {Array} array\n   * @return {Object}\n   */\n  function getLastItem (array) {\n    return array[array.length - 1]\n  }\n\n  /**\n   * Get heading level for a heading dom node.\n   * @param {HTMLElement} heading\n   * @return {Number}\n   */\n  function getHeadingLevel (heading) {\n    return +heading.nodeName.split('H').join('')\n  }\n\n  /**\n   * Get important properties from a heading element and store in a plain object.\n   * @param {HTMLElement} heading\n   * @return {Object}\n   */\n  function getHeadingObject (heading) {\n    // each node is processed twice by this method because nestHeadingsArray() and addNode() calls it\n    // first time heading is real DOM node element, second time it is obj\n    // that is causing problem so I am processing only original DOM node\n    if (!(heading instanceof HTMLElement)) return heading\n\n    if (options.ignoreHiddenElements && (!heading.offsetHeight || !heading.offsetParent)) {\n      return null\n    }\n\n    var obj = {\n      id: heading.id,\n      children: [],\n      nodeName: heading.nodeName,\n      headingLevel: getHeadingLevel(heading),\n      textContent: options.headingLabelCallback ? String(options.headingLabelCallback(heading.textContent)) : heading.textContent.trim()\n    }\n\n    if (options.includeHtml) {\n      obj.childNodes = heading.childNodes\n    }\n\n    if (options.headingObjectCallback) {\n      return options.headingObjectCallback(obj, heading)\n    }\n\n    return obj\n  }\n\n  /**\n   * Add a node to the nested array.\n   * @param {Object} node\n   * @param {Array} nest\n   * @return {Array}\n   */\n  function addNode (node, nest) {\n    var obj = getHeadingObject(node)\n    var level = obj.headingLevel\n    var array = nest\n    var lastItem = getLastItem(array)\n    var lastItemLevel = lastItem\n      ? lastItem.headingLevel\n      : 0\n    var counter = level - lastItemLevel\n\n    while (counter > 0) {\n      lastItem = getLastItem(array)\n      if (lastItem && lastItem.children !== undefined) {\n        array = lastItem.children\n      }\n      counter--\n    }\n\n    if (level >= options.collapseDepth) {\n      obj.isCollapsed = true\n    }\n\n    array.push(obj)\n    return array\n  }\n\n  /**\n   * Select headings in content area, exclude any selector in options.ignoreSelector\n   * @param {String} contentSelector\n   * @param {Array} headingSelector\n   * @return {Array}\n   */\n  function selectHeadings (contentSelector, headingSelector) {\n    var selectors = headingSelector\n    if (options.ignoreSelector) {\n      selectors = headingSelector.split(',')\n        .map(function mapSelectors (selector) {\n          return selector.trim() + ':not(' + options.ignoreSelector + ')'\n        })\n    }\n    try {\n      return document.querySelector(contentSelector)\n        .querySelectorAll(selectors)\n    } catch (e) {\n      console.warn('Element not found: ' + contentSelector); // eslint-disable-line\n      return null\n    }\n  }\n\n  /**\n   * Nest headings array into nested arrays with 'children' property.\n   * @param {Array} headingsArray\n   * @return {Object}\n   */\n  function nestHeadingsArray (headingsArray) {\n    return reduce.call(headingsArray, function reducer (prev, curr) {\n      var currentHeading = getHeadingObject(curr)\n      if (currentHeading) {\n        addNode(currentHeading, prev.nest)\n      }\n      return prev\n    }, {\n      nest: []\n    })\n  }\n\n  return {\n    nestHeadingsArray: nestHeadingsArray,\n    selectHeadings: selectHeadings\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9wYXJzZS1jb250ZW50LmpzPzg3ZjAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgdGhlIGNvbnRlbnQgZnJvbSB0aGUgRE9NIGFuZCBtYWtpbmdcbiAqIHN1cmUgZGF0YSBpcyBuZXN0ZWQgcHJvcGVybHkuXG4gKlxuICogQGF1dGhvciBUaW0gU2NhbmxpblxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGFyc2VDb250ZW50IChvcHRpb25zKSB7XG4gIHZhciByZWR1Y2UgPSBbXS5yZWR1Y2VcblxuICAvKipcbiAgICogR2V0IHRoZSBsYXN0IGl0ZW0gaW4gYW4gYXJyYXkgYW5kIHJldHVybi
119BhIHJlZmVyZW5jZSB0byBpdC5cbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXlcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0TGFzdEl0ZW0gKGFycmF5KSB7XG4gICAgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDFdXG4gIH1cblxuICAvKipcbiAgICogR2V0IGhlYWRpbmcgbGV2ZWwgZm9yIGEgaGVhZGluZyBkb20gbm9kZS5cbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gaGVhZGluZ1xuICAgKiBAcmV0dXJuIHtOdW1iZXJ9XG4gICAqL1xuICBmdW5jdGlvbiBnZXRIZWFkaW5nTGV2ZWwgKGhlYWRpbmcpIHtcbiAgICByZXR1cm4gK2hlYWRpbmcubm9kZU5hbWUuc3BsaXQoJ0gnKS5qb2luKCcnKVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBpbXBvcnRhbnQgcHJvcGVydGllcyBmcm9tIGEgaGVhZGluZyBlbGVtZW50IGFuZCBzdG9yZSBpbiBhIHBsYWluIG9iamVjdC5cbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gaGVhZGluZ1xuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBmdW5jdGlvbiBnZXRIZWFkaW5nT2JqZWN0IChoZWFkaW5nKSB7XG4gICAgLy8gZWFjaCBub2RlIGlzIHByb2Nlc3NlZCB0d2ljZSBieSB0aGlzIG1ldGhvZCBiZWNhdXNlIG5lc3RIZWFkaW5nc0FycmF5KCkgYW5kIGFkZE5vZGUoKSBjYWxscyBpdFxuICAgIC8vIGZpcnN0IHRpbWUgaGVhZGluZyBpcyByZWFsIERPTSBub2RlIGVsZW1lbnQsIHNlY29uZCB0aW1lIGl0IGlzIG9ialxuICAgIC8vIHRoYXQgaXMgY2F1c2luZyBwcm9ibGVtIHNvIEkgYW0gcHJvY2Vzc2luZyBvbmx5IG9yaWdpbmFsIERPTSBub2RlXG4gICAgaWYgKCEoaGVhZGluZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkgcmV0dXJuIGhlYWRpbmdcblxuICAgIGlmIChvcHRpb25zLmlnbm9yZUhpZGRlbkVsZW1lbnRzICYmICghaGVhZGluZy5vZmZzZXRIZWlnaHQgfHwgIWhlYWRpbmcub2Zmc2V0UGFyZW50KSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICB2YXIgb2JqID0ge1xuICAgICAgaWQ6IGhlYWRpbmcuaWQsXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgICBub2RlTmFtZTogaGVhZGluZy5ub2RlTmFtZSxcbiAgICAgIGhlYWRpbmdMZXZlbDogZ2V0SGVhZGluZ0xldmVsKGhlYWRpbmcpLFxuICAgICAgdGV4dENvbnRlbnQ6IG9wdGlvbnMuaGVhZGluZ0xhYmVsQ2FsbGJhY2sgPyBTdHJpbmcob3B0aW9ucy5oZWFkaW5nTGFiZWxDYWxsYmFjayhoZWFkaW5nLnRleHRDb250ZW50KSkgOiBoZWFkaW5nLnRleHRDb250ZW50LnRyaW0oKVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmluY2x1ZGVIdG1sKSB7XG4gICAgICBvYmouY2hpbGROb2RlcyA9IGhlYWRpbmcuY2hpbGROb2Rlc1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmhlYWRpbmdPYmplY3RDYWxsYmFjaykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaGVhZGluZ09iamVjdENhbGxiYWNrKG9iaiwgaGVhZGluZylcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqXG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbm9kZSB0byB0aGUgbmVzdGVkIGFycmF5LlxuICAgKiBAcGFyYW0ge09iamVjdH0gbm9kZVxuICAgKiBAcGFyYW0ge0FycmF5fSBuZXN0XG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgZnVuY3Rpb24gYWRkTm9kZSAobm9kZSwgbmVzdCkge1xuICAgIHZhciBvYmogPSBnZXRIZWFkaW5nT2JqZWN0KG5vZGUpXG4gICAgdmFyIGxldmVsID0gb2JqLmhlYWRpbmdMZXZlbFxuICAgIHZhciBhcnJheSA9IG5lc3RcbiAgICB2YXIgbGFzdEl0ZW0gPSBnZXRMYXN0SXRlbShhcnJheSlcbiAgICB2YXIgbGFzdEl0ZW1MZXZlbCA9IGxhc3RJdGVtXG4gICAgICA/IGxhc3RJdGVtLmhlYWRpbmdMZXZlbFxuICAgICAgOiAwXG4gICAgdmFyIGNvdW50ZXIgPSBsZXZlbCAtIGxhc3RJdGVtTGV2ZWxcblxuICAgIHdoaWxlIChjb3VudGVyID4gMCkge1xuICAgICAgbGFzdEl0ZW0gPSBnZXRMYXN0SXRlbShhcnJheSlcbiAgICAgIGlmIChsYXN0SXRlbSAmJiBsYXN0SXRlbS5jaGlsZHJlbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFycmF5ID0gbGFzdEl0ZW0uY2hpbGRyZW5cbiAgICAgIH1cbiAgICAgIGNvdW50ZXItLVxuICAgIH1cblxuICAgIGlmIChsZXZlbCA+PSBvcHRpb25zLmNvbGxhcHNlRGVwdGgpIHtcbiAgICAgIG9iai5pc0NvbGxhcHNlZCA9IHRydWVcbiAgICB9XG5cbiAgICBhcnJheS5wdXNoKG9iailcbiAgICByZXR1cm4gYXJyYXlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgaGVhZGluZ3MgaW4gY29udGVudCBhcmVhLCBleGNsdWRlIGFueSBzZWxlY3RvciBpbiBvcHRpb25zLmlnbm9yZVNlbGVjdG9yXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjb250ZW50U2VsZWN0b3JcbiAgICogQHBhcmFtIHtBcnJheX0gaGVhZGluZ1NlbGVjdG9yXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgZnVuY3Rpb24gc2VsZWN0SGVhZGluZ3MgKGNvbnRlbnRTZWxlY3RvciwgaGVhZGluZ1NlbGVjdG9yKSB7XG4gICAgdmFyIHNlbGVjdG9ycyA9IGhlYWRpbmdTZWxlY3RvclxuICAgIGlmIChvcHRpb25zLmlnbm9yZVNlbGVjdG9yKSB7XG4gICAgICBzZWxlY3RvcnMgPSBoZWFkaW5nU2VsZWN0b3Iuc3BsaXQoJywnKVxuICAgICAgICAubWFwKGZ1bmN0aW9uIG1hcFNlbGVjdG9ycyAoc2VsZWN0b3IpIHtcbiAgICAgICAgICByZXR1cm4gc2VsZWN0b3IudHJpbSgpICsgJzpub3QoJyArIG9wdGlvbnMuaWdub3JlU2VsZWN0b3IgKyAnKSdcbiAgICAgICAgfSlcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbnRlbnRTZWxlY3RvcilcbiAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignRWxlbWVudCBub3QgZm91bmQ6ICcgKyBjb250ZW50U2VsZWN0b3IpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOZXN0IGhlYWRpbmdzIGFycmF5IGludG8gbmVzdGVkIGFycmF5cyB3aXRoICdjaGlsZHJlbicgcHJvcGVydHkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGhlYWRpbmdzQXJyYXlcbiAgICogQHJldHVybi
119B7T2JqZWN0fVxuICAgKi9cbiAgZnVuY3Rpb24gbmVzdEhlYWRpbmdzQXJyYXkgKGhlYWRpbmdzQXJyYXkpIHtcbiAgICByZXR1cm4gcmVkdWNlLmNhbGwoaGVhZGluZ3NBcnJheSwgZnVuY3Rpb24gcmVkdWNlciAocHJldiwgY3Vycikge1xuICAgICAgdmFyIGN1cnJlbnRIZWFkaW5nID0gZ2V0SGVhZGluZ09iamVjdChjdXJyKVxuICAgICAgaWYgKGN1cnJlbnRIZWFkaW5nKSB7XG4gICAgICAgIGFkZE5vZGUoY3VycmVudEhlYWRpbmcsIHByZXYubmVzdClcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2XG4gICAgfSwge1xuICAgICAgbmVzdDogW11cbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuZXN0SGVhZGluZ3NBcnJheTogbmVzdEhlYWRpbmdzQXJyYXksXG4gICAgc2VsZWN0SGVhZGluZ3M6IHNlbGVjdEhlYWRpbmdzXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL2pzL3BhcnNlLWNvbnRlbnQuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///4\n");
120  
121  /***/ }),
122  /* 5 */
123  /*!***************************************!*\
124    !*** ./src/js/scroll-smooth/index.js ***!
125    \***************************************/
126  /*! dynamic exports provided */
127  /*! all exports used */
128  /***/ (function(module, exports) {
129  
130  eval("/* globals location, requestAnimationFrame */\n\nexports.initSmoothScrolling = initSmoothScrolling\n\nfunction initSmoothScrolling (options) {\n  if (isCssSmoothSCrollSupported()) { }\n\n  var duration = options.duration\n  var offset = options.offset\n\n  var pageUrl = location.hash\n    ? stripHash(location.href)\n    : location.href\n\n  delegatedLinkHijacking()\n\n  function delegatedLinkHijacking () {\n    document.body.addEventListener('click', onClick, false)\n\n    function onClick (e) {\n      if (\n        !isInPageLink(e.target) ||\n        e.target.className.indexOf('no-smooth-scroll') > -1 ||\n        (e.target.href.charAt(e.target.href.length - 2) === '#' &&\n        e.target.href.charAt(e.target.href.length - 1) === '!') ||\n        e.target.className.indexOf(options.linkClass) === -1) {\n        return\n      }\n\n      // Don't prevent default or hash doesn't change.\n      // e.preventDefault()\n\n      jump(e.target.hash, {\n        duration: duration,\n        offset: offset,\n        callback: function () {\n          setFocus(e.target.hash)\n        }\n      })\n    }\n  }\n\n  function isInPageLink (n) {\n    return n.tagName.toLowerCase() === 'a' &&\n      (n.hash.length > 0 || n.href.charAt(n.href.length - 1) === '#') &&\n      (stripHash(n.href) === pageUrl || stripHash(n.href) + '#' === pageUrl)\n  }\n\n  function stripHash (url) {\n    return url.slice(0, url.lastIndexOf('#'))\n  }\n\n  function isCssSmoothSCrollSupported () {\n    return 'scrollBehavior' in document.documentElement.style\n  }\n\n  // Adapted from:\n  // https://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/\n  function setFocus (hash) {\n    var element = document.getElementById(hash.substring(1))\n\n    if (element) {\n      if (!/^(?:a|select|input|button|textarea)$/i.test(element.tagName)) {\n        element.tabIndex = -1\n      }\n\n      element.focus()\n    }\n  }\n}\n\nfunction jump (target, options) {\n  var start = window.pageYOffset\n  var opt = {\n    duration: options.duration,\n    offset: options.offset || 0,\n    callback: options.callback,\n    easing: options.easing || easeInOutQuad\n  }\n  // This makes ids that start with a number work: ('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n  // Decode
130URI for nonASCII hashes, they was encoded, but id was not encoded, it lead to not finding the tgt element by id.\n  // And this is for IE: document.body.scrollTop\n  var tgt = document.querySelector('[id=\"' + decodeURI(target).split('#').join('') + '\"]')\n  var distance = typeof target === 'string'\n    ? opt.offset + (\n      target\n      ? (tgt && tgt.getBoundingClientRect().top) || 0 // handle non-existent links better.\n      : -(document.documentElement.scrollTop || document.body.scrollTop))\n    : target\n  var duration = typeof opt.duration === 'function'\n    ? opt.duration(distance)\n    : opt.duration\n  var timeStart\n  var timeElapsed\n\n  requestAnimationFrame(function (time) { timeStart = time; loop(time) })\n  function loop (time) {\n    timeElapsed = time - timeStart\n\n    window.scrollTo(0, opt.easing(timeElapsed, start, distance, duration))\n\n    if (timeElapsed < duration) { requestAnimationFrame(loop) } else { end() }\n  }\n\n  function end () {\n    window.scrollTo(0, start + distance)\n\n    if (typeof opt.callback === 'function') { opt.callback() }\n  }\n\n  // Robert Penner's easeInOutQuad - http://robertpenner.com/easing/\n  function easeInOutQuad (t, b, c, d) {\n    t /= d / 2\n    if (t < 1) return c / 2 * t * t + b\n    t--\n    return -c / 2 * (t * (t - 2) - 1) + b\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9qcy9zY3JvbGwtc21vb3RoL2luZGV4LmpzP2EzMGUiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFscyBsb2NhdGlvbiwgcmVxdWVzdEFuaW1hdGlvbkZyYW1lICovXG5cbmV4cG9ydHMuaW5pdFNtb290aFNjcm9sbGluZyA9IGluaXRTbW9vdGhTY3JvbGxpbmdcblxuZnVuY3Rpb24gaW5pdFNtb290aFNjcm9sbGluZyAob3B0aW9ucykge1xuICBpZiAoaXNDc3NTbW9vdGhTQ3JvbGxTdXBwb3J0ZWQoKSkgeyB9XG5cbiAgdmFyIGR1cmF0aW9uID0gb3B0aW9ucy5kdXJhdGlvblxuICB2Y
130XIgb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXRcblxuICB2YXIgcGFnZVVybCA9IGxvY2F0aW9uLmhhc2hcbiAgICA/IHN0cmlwSGFzaChsb2NhdGlvbi5ocmVmKVxuICAgIDogbG9jYXRpb24uaHJlZlxuXG4gIGRlbGVnYXRlZExpbmtIaWphY2tpbmcoKVxuXG4gIGZ1bmN0aW9uIGRlbGVnYXRlZExpbmtIaWphY2tpbmcgKCkge1xuICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbkNsaWNrLCBmYWxzZSlcblxuICAgIGZ1bmN0aW9uIG9uQ2xpY2sgKGUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWlzSW5QYWdlTGluayhlLnRhcmdldCkgfHxcbiAgICAgICAgZS50YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ25vLXNtb290aC1zY3JvbGwnKSA+IC0xIHx8XG4gICAgICAgIChlLnRhcmdldC5ocmVmLmNoYXJBdChlLnRhcmdldC5ocmVmLmxlbmd0aCAtIDIpID09PSAnIycgJiZcbiAgICAgICAgZS50YXJnZXQuaHJlZi5jaGFyQXQoZS50YXJnZXQuaHJlZi5sZW5ndGggLSAxKSA9PT0gJyEnKSB8fFxuICAgICAgICBlLnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZihvcHRpb25zLmxpbmtDbGFzcykgPT09IC0xKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBEb24ndCBwcmV2ZW50IGRlZmF1bHQgb3IgaGFzaCBkb2Vzbid0IGNoYW5nZS5cbiAgICAgIC8vIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgICBqdW1wKGUudGFyZ2V0Lmhhc2gsIHtcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzZXRGb2N1cyhlLnRhcmdldC5oYXNoKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzSW5QYWdlTGluayAobikge1xuICAgIHJldHVybiBuLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2EnICYmXG4gICAgICAobi5oYXNoLmxlbmd0aCA+IDAgfHwgbi5ocmVmLmNoYXJBdChuLmhyZWYubGVuZ3RoIC0gMSkgPT09ICcjJykgJiZcbiAgICAgIChzdHJpcEhhc2gobi5ocmVmKSA9PT0gcGFnZVVybCB8fCBzdHJpcEhhc2gobi5ocmVmKSArICcjJyA9PT0gcGFnZVVybClcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0cmlwSGFzaCAodXJsKSB7XG4gICAgcmV0dXJuIHVybC5zbGljZSgwLCB1cmwubGFzdEluZGV4T2YoJyMnKSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzQ3NzU21vb3RoU0Nyb2xsU3VwcG9ydGVkICgpIHtcbiAgICByZXR1cm4gJ3Njcm9sbEJlaGF2aW9yJyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGVcbiAgfVxuXG4gIC8vIEFkYXB0ZWQgZnJvbTpcbiAgLy8gaHR0cHM6Ly93d3cubmN6b25saW5lLm5ldC9ibG9nLzIwMTMvMDEvMTUvZml4aW5nLXNraXAtdG8tY29udGVudC1saW5rcy9cbiAgZnVuY3Rpb24gc2V0Rm9jdXMgKGhhc2gpIHtcbiAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGhhc2guc3Vic3RyaW5nKDEpKVxuXG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIGlmICghL14oPzphfHNlbGVjdHxpbnB1dHxidXR0b258dGV4dGFyZWEpJC9pLnRlc3QoZWxlbWVudC50YWdOYW1lKSkge1xuICAgICAgICBlbGVtZW50LnRhYkluZGV4ID0gLTFcbiAgICAgIH1cblxuICAgICAgZWxlbWVudC5mb2N1cygpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGp1bXAgKHRhcmdldCwgb3B0aW9ucykge1xuICB2YXIgc3RhcnQgPSB3aW5kb3cucGFnZVlPZmZzZXRcbiAgdmFyIG9wdCA9IHtcbiAgICBkdXJhdGlvbjogb3B0aW9ucy5kdXJhdGlvbixcbiAgICBvZmZzZXQ6IG9wdGlvbnMub2Zmc2V0IHx8IDAsXG4gICAgY2FsbGJhY2s6IG9wdGlvbnMuY2FsbGJhY2ssXG4gICAgZWFzaW5nOiBvcHRpb25zLmVhc2luZyB8fCBlYXNlSW5PdXRRdWFkXG4gIH1cbiAgLy8gVGhpcyBtYWtlcyBpZHMgdGhhdCBzdGFydCB3aXRoIGEgbnVtYmVyIHdvcms6ICgnW2lkPVwiJyArIGRlY29kZVVSSSh0YXJnZXQpLnNwbGl0KCcjJykuam9pbignJykgKyAnXCJdJylcbiAgLy8gRGVjb2RlVVJJIGZvciBub25BU0NJSSBoYXNoZXMsIHRoZXkgd2FzIGVuY29kZWQsIGJ1dCBpZCB3YXMgbm90IGVuY29kZWQsIGl0IGxlYWQgdG8gbm90IGZpbmRpbmcgdGhlIHRndCBlbGVtZW50IGJ5IGlkLlxuICAvLyBBbmQgdGhpcyBpcyBmb3IgSUU6IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wXG4gIHZhciB0Z3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWQ9XCInICsgZGVjb2RlVVJJKHRhcmdldCkuc3BsaXQoJyMnKS5qb2luKCcnKSArICdcIl0nKVxuICB2YXIgZGlzdGFuY2UgPSB0eXBlb2YgdGFyZ2V0ID09PSAnc3RyaW5nJ1xuICAgID8gb3B0Lm9mZnNldCArIChcbiAgICAgIHRhcmdldFxuICAgICAgPyAodGd0ICYmIHRndC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ApIHx8IDAgLy8gaGFuZGxlIG5vbi1leGlzdGVudCBsaW5rcyBiZXR0ZXIuXG4gICAgICA6IC0oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCkpXG4gICAgOiB0YXJnZXRcbiAgdmFyIGR1cmF0aW9uID0gdHlwZW9mIG9wdC5kdXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gb3B0LmR1cmF0aW9uKGRpc3RhbmNlKVxuICAgIDogb3B0LmR1cmF0aW9uXG4gIHZhciB0aW1lU3RhcnRcbiAgdmFyIHRpbWVFbGFwc2VkXG5cbiAgcmVx
130dWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICh0aW1lKSB7IHRpbWVTdGFydCA9IHRpbWU7IGxvb3AodGltZSkgfSlcbiAgZnVuY3Rpb24gbG9vcCAodGltZSkge1xuICAgIHRpbWVFbGFwc2VkID0gdGltZSAtIHRpbWVTdGFydFxuXG4gICAgd2luZG93LnNjcm9sbFRvKDAsIG9wdC5lYXNpbmcodGltZUVsYXBzZWQsIHN0YXJ0LCBkaXN0YW5jZSwgZHVyYXRpb24pKVxuXG4gICAgaWYgKHRpbWVFbGFwc2VkIDwgZHVyYXRpb24pIHsgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApIH0gZWxzZSB7IGVuZCgpIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZCAoKSB7XG4gICAgd2luZG93LnNjcm9sbFRvKDAsIHN0YXJ0ICsgZGlzdGFuY2UpXG5cbiAgICBpZiAodHlwZW9mIG9wdC5jYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyBvcHQuY2FsbGJhY2soKSB9XG4gIH1cblxuICAvLyBSb2JlcnQgUGVubmVyJ3MgZWFzZUluT3V0UXVhZCAtIGh0dHA6Ly9yb2JlcnRwZW5uZXIuY29tL2Vhc2luZy9cbiAgZnVuY3Rpb24gZWFzZUluT3V0UXVhZCAodCwgYiwgYywgZCkge1xuICAgIHQgLz0gZCAvIDJcbiAgICBpZiAodCA8IDEpIHJldHVybiBjIC8gMiAqIHQgKiB0ICsgYlxuICAgIHQtLVxuICAgIHJldHVybiAtYyAvIDIgKiAodCAqICh0IC0gMikgLSAxKSArIGJcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvanMvc2Nyb2xsLXNtb290aC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///5\n");
131  
132  /***/ })
133  /******/ ]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.