jiskattema/spot

View on GitHub
dist/js/index.chunk.a0b0125d2cc0e82e332c.js

Summary

Maintainability
A
0 mins
Test Coverage
(window.webpackJsonp=window.webpackJsonp||[]).push([["index"],{0:function(t,n,l){l("a26e"),t.exports=l("9218")},"035a":function(module,exports,__webpack_require__){eval("var app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar Spot = __webpack_require__(/*! spot-framework */ \"3b07\");\n\nvar BaseWidget = __webpack_require__(/*! ./base-widget */ \"26ef\"); // var Vis = require('vis');\n\n\nvar Vis = __webpack_require__(/*! visGraph3d */ \"5bf9\");\n\nvar colors = __webpack_require__(/*! ../../colors */ \"eb63\");\n\nvar misval = Spot.util.misval;\n\nvar util = __webpack_require__(/*! ./util */ \"2b41\");\n\nfunction _deinitChart(view) {\n  if (view._graph3d) {\n    delete view._graph3d;\n  }\n\n  view.isInitialized = false;\n}\n\nfunction _initChart(view) {\n  // Configure plot\n  view._config = view.model.scatterConfig();\n  var filter = view.model.filter;\n  var primary = filter.partitions.get(1, 'rank');\n  var secondary = filter.partitions.get(2, 'rank');\n  var tertiary = filter.partitions.get(3, 'rank'); // axes labels\n\n  if (primary.showLabel) {\n    view._config.xLabel = primary.label;\n  } else {\n    view._config.xLabel = '';\n  }\n\n  if (secondary.showLabel) {\n    view._config.yLabel = secondary.label;\n  } else {\n    view._config.yLabel = '';\n  }\n\n  if (tertiary.showLabel) {\n    view._config.zLabel = tertiary.label;\n  } else {\n    view._config.zLabel = '';\n  } // set ranges\n\n\n  view._config.xMin = primary.minval;\n  view._config.xMax = primary.maxval;\n  view._config.yMin = secondary.minval;\n  view._config.yMax = secondary.maxval;\n  view._config.zMin = tertiary.minval;\n  view._config.zMax = tertiary.maxval; // force a square full size plot\n\n  var width = view.el.offsetWidth;\n  var height = view.el.offsetHeight;\n  view._config.width = width + 'px';\n  view._config.height = height + 'px'; // click callback\n\n  view._config.onclick = function (point) {\n    var groupx = primary.groups.models[point.i];\n    primary.updateSelection(groupx);\n    var groupy = secondary.groups.models[point.j];\n    secondary.updateSelection(groupy);\n    var groupz = tertiary.groups.models[point.k];\n    tertiary.updateSelection(groupz);\n    view.model.filter.updateDataFilter();\n    app.me.dataview.getData();\n  }; // add dummy data point\n\n\n  var visData = new Vis.DataSet();\n  visData.add({\n    x: 0,\n    y: 0,\n    z: 0,\n    style: colors.unselectedColor.hex()\n  }); // add plot to the DOM\n\n  view._graph3d = new Vis.Graph3d(view.el, visData, view._config); // monkeypatch the float -> color function to use our own scale\n  // This probably breaks Visjs but not the parts we use\n\n  view._graph3d._hsv2rgb = function (h, s, v) {\n    // is called for hue in [0, 240]\n    return colors.getColorFloat(h / 240.0).hex();\n  };\n\n  view.isInitialized = true;\n}\n\nfunction _update(view) {\n  if (!view.isInitialized) {\n    return;\n  }\n\n  var filter = view.model.filter;\n  var primary = filter.partitions.get(1, 'rank');\n  var secondary = filter.partitions.get(2, 'rank');\n  var tertiary = filter.partitions.get(3, 'rank');\n\n  var valueFn = function valueFn(group) {\n    if (group.count !== misval) {\n      return parseFloat(group.count) || null;\n    }\n\n    return null;\n  };\n\n  var colorFn;\n  var dataMin = 0;\n  var dataMax = 1;\n  var aggregate = filter.aggregates.get(1, 'rank');\n\n  if (aggregate) {\n    dataMin = filter.data.reduce(function (prev, curr) {\n      if (prev.aa === misval || curr.aa === misval) {\n        return curr;\n      }\n\n      return prev.aa < curr.aa ? prev : curr;\n    }).aa;\n    dataMax = filter.data.reduce(function (prev, curr) {\n      if (prev.aa === misval || curr.aa === misval) {\n        return curr;\n      }\n\n      return prev.aa < curr.aa ? curr : prev;\n    }).aa;\n\n    colorFn = function colorFn(aa) {\n      if (aa !== misval) {\n        var c = parseFloat(aa) || 0;\n        c = (c - dataMin) / (dataMax - dataMin);\n        return colors.getColorFloat(c).hex();\n      }\n\n      return 0;\n    }; // update Vis.Graph3d config\n    // BUG: the legend leads to inifite loop in step.next() (or so) when manully forcing the colors in data.style\n\n\n    view._graph3d.defaultValueMin = dataMin;\n    view._graph3d.defaultValueMax = dataMax; // update Vis.Graph3d config\n    // TODO: view._graph3d.showLegend = true;\n  } else {\n    colorFn = function colorFn(group) {\n      return colors.getColor(0).hex();\n    }; // update Vis.Graph3d config\n\n\n    view._graph3d.showLegend = false;\n  } // update the data\n\n\n  var visData = new Vis.DataSet();\n  var Fx = primary.filterFunction();\n  var Fy = secondary.filterFunction();\n  var Fz = tertiary.filterFunction();\n\n  var dotColor = function dotColor(group) {\n    if (Fx(group.a) && Fy(group.b) && Fz(group.c)) {\n      return colorFn(group.aa);\n    } else {\n      return colors.unselectedColor.hex();\n    }\n  };\n\n  filter.data.forEach(function (group) {\n    if (valueFn(group)) {\n      var i = util.partitionValueToIndex(primary, group.a);\n      var j = util.partitionValueToIndex(secondary, group.b);\n      var k = util.partitionValueToIndex(tertiary, group.c);\n\n      if (i >= 0 && j >= 0 && k >= 0) {\n        visData.add({\n          x: primary.groups.models[i].value,\n          y: secondary.groups.models[j].value,\n          z: tertiary.groups.models[k].value,\n          style: dotColor(group),\n          i: i,\n          j: j,\n          k: k\n        });\n      }\n    }\n  });\n\n  view._graph3d.setData(visData);\n\n  view._graph3d.valueRange.min = dataMin;\n  view._graph3d.valueRange.max = dataMax;\n\n  view._graph3d.redraw();\n}\n\nmodule.exports = BaseWidget.extend({\n  template: '<div class=\"widgetInner mdl-card__media\"></div>',\n  update: function update() {\n    _update(this);\n  },\n  initChart: function initChart() {\n    _initChart(this);\n  },\n  deinitChart: function deinitChart() {\n    _deinitChart(this);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDM1YS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL3ZpZXdzL3NjYXR0ZXIuanM/MTBhZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXBwID0gcmVxdWlyZSgnYW1wZXJzYW5kLWFwcCcpO1xudmFyIFNwb3QgPSByZXF1aXJlKCdzcG90LWZyYW1ld29yaycpO1xudmFyIEJhc2VXaWRnZXQgPSByZXF1aXJlKCcuL2Jhc2Utd2lkZ2V0Jyk7XG4vLyB2YXIgVmlzID0gcmVxdWlyZSgndmlzJyk7XG52YXIgVmlzID0gcmVxdWlyZSgndmlzR3JhcGgzZCcpO1xudmFyIGNvbG9ycyA9IHJlcXVpcmUoJy4uLy4uL2NvbG9ycycpO1xudmFyIG1pc3ZhbCA9IFNwb3QudXRpbC5taXN2YWw7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5mdW5jdGlvbiBkZWluaXRDaGFydCAodmlldykge1xuICBpZiAodmlldy5fZ3JhcGgzZCkge1xuICAgIGRlbGV0ZSB2aWV3Ll9ncmFwaDNkO1xuICB9XG4gIHZpZXcuaXNJbml0aWFsaXplZCA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpbml0Q2hhcnQgKHZpZXcpIHtcbiAgLy8gQ29uZmlndXJlIHBsb3RcbiAgdmlldy5fY29uZmlnID0gdmlldy5tb2RlbC5zY2F0dGVyQ29uZmlnKCk7XG5cbiAgdmFyIGZpbHRlciA9IHZpZXcubW9kZWwuZmlsdGVyO1xuICB2YXIgcHJpbWFyeSA9IGZpbHRlci5wYXJ0aXRpb25zLmdldCgxLCAncmFuaycpO1xuICB2YXIgc2Vjb25kYXJ5ID0gZmlsdGVyLnBhcnRpdGlvbnMuZ2V0KDIsICdyYW5rJyk7XG4gIHZhciB0ZXJ0aWFyeSA9IGZpbHRlci5wYXJ0aXRpb25zLmdldCgzLCAncmFuaycpO1xuXG4gIC8vIGF4ZXMgbGFiZWxzXG4gIGlmIChwcmltYXJ5LnNob3dMYWJlbCkge1xuICAgIHZpZXcuX2NvbmZpZy54TGFiZWwgPSBwcmltYXJ5LmxhYmVsO1xuICB9IGVsc2Uge1xuICAgIHZpZXcuX2NvbmZpZy54TGFiZWwgPSAnJztcbiAgfVxuICBpZiAoc2Vjb25kYXJ5LnNob3dMYWJlbCkge1xuICAgIHZpZXcuX2NvbmZpZy55TGFiZWwgPSBzZWNvbmRhcnkubGFiZWw7XG4gIH0gZWxzZSB7XG4gICAgdmlldy5fY29uZmlnLnlMYWJlbCA9ICcnO1xuICB9XG4gIGlmICh0ZXJ0aWFyeS5zaG93TGFiZWwpIHtcbiAgICB2aWV3Ll9jb25maWcuekxhYmVsID0gdGVydGlhcnkubGFiZWw7XG4gIH0gZWxzZSB7XG4gICAgdmlldy5fY29uZmlnLnpMYWJlbCA9ICcnO1xuICB9XG5cbiAgLy8gc2V0IHJhbmdlc1xuICB2aWV3Ll9jb25maWcueE1pbiA9IHByaW1hcnkubWludmFsO1xuICB2aWV3Ll9jb25maWcueE1heCA9IHByaW1hcnkubWF4dmFsO1xuICB2aWV3Ll9jb25maWcueU1pbiA9IHNlY29uZGFyeS5taW52YWw7XG4gIHZpZXcuX2NvbmZpZy55TWF4ID0gc2Vjb25kYXJ5Lm1heHZhbDtcbiAgdmlldy5fY29uZmlnLnpNaW4gPSB0ZXJ0aWFyeS5taW52YWw7XG4gIHZpZXcuX2NvbmZpZy56TWF4ID0gdGVydGlhcnkubWF4dmFsO1xuXG4gIC8vIGZvcmNlIGEgc3F1YXJlIGZ1bGwgc2l6ZSBwbG90XG4gIHZhciB3aWR0aCA9IHZpZXcuZWwub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSB2aWV3LmVsLm9mZnNldEhlaWdodDtcblxuICB2aWV3Ll9jb25maWcud2lkdGggPSB3aWR0aCArICdweCc7XG4gIHZpZXcuX2NvbmZpZy5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xuXG4gIC8vIGNsaWNrIGNhbGxiYWNrXG4gIHZpZXcuX2NvbmZpZy5vbmNsaWNrID0gZnVuY3Rpb24gKHBvaW50KSB7XG4gICAgdmFyIGdyb3VweCA9IHByaW1hcnkuZ3JvdXBzLm1vZGVsc1twb2ludC5pXTtcbiAgICBwcmltYXJ5LnVwZGF0ZVNlbGVjdGlvbihncm91cHgpO1xuXG4gICAgdmFyIGdyb3VweSA9IHNlY29uZGFyeS5ncm91cHMubW9kZWxzW3BvaW50LmpdO1xuICAgIHNlY29uZGFyeS51cGRhdGVTZWxlY3Rpb24oZ3JvdXB5KTtcblxuICAgIHZhciBncm91cHogPSB0ZXJ0aWFyeS5ncm91cHMubW9kZWxzW3BvaW50LmtdO1xuICAgIHRlcnRpYXJ5LnVwZGF0ZVNlbGVjdGlvbihncm91cHopO1xuXG4gICAgdmlldy5tb2RlbC5maWx0ZXIudXBkYXRlRGF0YUZpbHRlcigpO1xuICAgIGFwcC5tZS5kYXRhdmlldy5nZXREYXRhKCk7XG4gIH07XG5cbiAgLy8gYWRkIGR1bW15IGRhdGEgcG9pbnRcbiAgdmFyIHZpc0RhdGEgPSBuZXcgVmlzLkRhdGFTZXQoKTtcbiAgdmlzRGF0YS5hZGQoe3g6IDAsIHk6IDAsIHo6IDAsIHN0eWxlOiBjb2xvcnMudW5zZWxlY3RlZENvbG9yLmhleCgpfSk7XG5cbiAgLy8gYWRkIHBsb3QgdG8gdGhlIERPTVxuICB2aWV3Ll9ncmFwaDNkID0gbmV3IFZpcy5HcmFwaDNkKHZpZXcuZWwsIHZpc0RhdGEsIHZpZXcuX2NvbmZpZyk7XG5cbiAgLy8gbW9ua2V5cGF0Y2ggdGhlIGZsb2F0IC0+IGNvbG9yIGZ1bmN0aW9uIHRvIHVzZSBvdXIgb3duIHNjYWxlXG4gIC8vIFRoaXMgcHJvYmFibHkgYnJlYWtzIFZpc2pzIGJ1dCBub3QgdGhlIHBhcnRzIHdlIHVzZVxuICB2aWV3Ll9ncmFwaDNkLl9oc3YycmdiID0gZnVuY3Rpb24gKGgsIHMsIHYpIHtcbiAgICAvLyBpcyBjYWxsZWQgZm9yIGh1ZSBpbiBbMCwgMjQwXVxuICAgIHJldHVybiBjb2xvcnMuZ2V0Q29sb3JGbG9hdChoIC8gMjQwLjApLmhleCgpO1xuICB9O1xuXG4gIHZpZXcuaXNJbml0aWFsaXplZCA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZSAodmlldykge1xuICBpZiAoIXZpZXcuaXNJbml0aWFsaXplZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBmaWx0ZXIgPSB2aWV3Lm1vZGVsLmZpbHRlcjtcblxuICB2YXIgcHJpbWFyeSA9IGZpbHRlci5wYXJ0aXRpb25zLmdldCgxLCAncmFuaycpO1xuICB2YXIgc2Vjb25kYXJ5ID0gZmlsdGVyLnBhcnRpdGlvbnMuZ2V0KDIsICdyYW5rJyk7XG4gIHZhciB0ZXJ0aWFyeSA9IGZpbHRlci5wYXJ0aXRpb25zLmdldCgzLCAncmFuaycpO1xuXG4gIHZhciB2YWx1ZUZuID0gZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgaWYgKGdyb3VwLmNvdW50ICE9PSBtaXN2YWwpIHtcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KGdyb3VwLmNvdW50KSB8fCBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICB2YXIgY29sb3JGbjtcbiAgdmFyIGRhdGFNaW4gPSAwO1xuICB2YXIgZGF0YU1heCA9IDE7XG4gIHZhciBhZ2dyZWdhdGUgPSBmaWx0ZXIuYWdncmVnYXRlcy5nZXQoMSwgJ3JhbmsnKTtcbiAgaWYgKGFnZ3JlZ2F0ZSkge1xuICAgIGRhdGFNaW4gPSBmaWx0ZXIuZGF0YS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cnIpIHtcbiAgICAgIGlmIChwcmV2LmFhID09PSBtaXN2YWwgfHwgY3Vyci5hYSA9PT0gbWlzdmFsKSB7XG4gICAgICAgIHJldHVybiBjdXJyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXYuYWEgPCBjdXJyLmFhID8gcHJldiA6IGN1cnI7XG4gICAgfSkuYWE7XG5cbiAgICBkYXRhTWF4ID0gZmlsdGVyLmRhdGEucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXJyKSB7XG4gICAgICBpZiAocHJldi5hYSA9PT0gbWlzdmFsIHx8IGN1cnIuYWEgPT09IG1pc3ZhbCkge1xuICAgICAgICByZXR1cm4gY3VycjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2LmFhIDwgY3Vyci5hYSA/IGN1cnIgOiBwcmV2O1xuICAgIH0pLmFhO1xuXG4gICAgY29sb3JGbiA9IGZ1bmN0aW9uIChhYSkge1xuICAgICAgaWYgKGFhICE9PSBtaXN2YWwpIHtcbiAgICAgICAgdmFyIGMgPSBwYXJzZUZsb2F0KGFhKSB8fCAwO1xuICAgICAgICBjID0gKGMgLSBkYXRhTWluKSAvIChkYXRhTWF4IC0gZGF0YU1pbik7XG4gICAgICAgIHJldHVybiBjb2xvcnMuZ2V0Q29sb3JGbG9hdChjKS5oZXgoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH07XG5cbiAgICAvLyB1cGRhdGUgVmlzLkdyYXBoM2QgY29uZmlnXG4gICAgLy8gQlVHOiB0aGUgbGVnZW5kIGxlYWRzIHRvIGluaWZpdGUgbG9vcCBpbiBzdGVwLm5leHQoKSAob3Igc28pIHdoZW4gbWFudWxseSBmb3JjaW5nIHRoZSBjb2xvcnMgaW4gZGF0YS5zdHlsZVxuICAgIHZpZXcuX2dyYXBoM2QuZGVmYXVsdFZhbHVlTWluID0gZGF0YU1pbjtcbiAgICB2aWV3Ll9ncmFwaDNkLmRlZmF1bHRWYWx1ZU1heCA9IGRhdGFNYXg7XG5cbiAgICAvLyB1cGRhdGUgVmlzLkdyYXBoM2QgY29uZmlnXG4gICAgLy8gVE9ETzogdmlldy5fZ3JhcGgzZC5zaG93TGVnZW5kID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb2xvckZuID0gZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgICByZXR1cm4gY29sb3JzLmdldENvbG9yKDApLmhleCgpO1xuICAgIH07XG5cbiAgICAvLyB1cGRhdGUgVmlzLkdyYXBoM2QgY29uZmlnXG4gICAgdmlldy5fZ3JhcGgzZC5zaG93TGVnZW5kID0gZmFsc2U7XG4gIH1cblxuICAvLyB1cGRhdGUgdGhlIGRhdGFcbiAgdmFyIHZpc0RhdGEgPSBuZXcgVmlzLkRhdGFTZXQoKTtcblxuICB2YXIgRnggPSBwcmltYXJ5LmZpbHRlckZ1bmN0aW9uKCk7XG4gIHZhciBGeSA9IHNlY29uZGFyeS5maWx0ZXJGdW5jdGlvbigpO1xuICB2YXIgRnogPSB0ZXJ0aWFyeS5maWx0ZXJGdW5jdGlvbigpO1xuXG4gIHZhciBkb3RDb2xvciA9IGZ1bmN0aW9uIChncm91cCkge1xuICAgIGlmIChGeChncm91cC5hKSAmJiBGeShncm91cC5iKSAmJiBGeihncm91cC5jKSkge1xuICAgICAgcmV0dXJuIGNvbG9yRm4oZ3JvdXAuYWEpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29sb3JzLnVuc2VsZWN0ZWRDb2xvci5oZXgoKTtcbiAgICB9XG4gIH07XG5cbiAgZmlsdGVyLmRhdGEuZm9yRWFjaChmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICBpZiAodmFsdWVGbihncm91cCkpIHtcbiAgICAgIHZhciBpID0gdXRpbC5wYXJ0aXRpb25WYWx1ZVRvSW5kZXgocHJpbWFyeSwgZ3JvdXAuYSk7XG4gICAgICB2YXIgaiA9IHV0aWwucGFydGl0aW9uVmFsdWVUb0luZGV4KHNlY29uZGFyeSwgZ3JvdXAuYik7XG4gICAgICB2YXIgayA9IHV0aWwucGFydGl0aW9uVmFsdWVUb0luZGV4KHRlcnRpYXJ5LCBncm91cC5jKTtcblxuICAgICAgaWYgKGkgPj0gMCAmJiBqID49IDAgJiYgayA+PSAwKSB7XG4gICAgICAgIHZpc0RhdGEuYWRkKHtcbiAgICAgICAgICB4OiBwcmltYXJ5Lmdyb3Vwcy5tb2RlbHNbaV0udmFsdWUsXG4gICAgICAgICAgeTogc2Vjb25kYXJ5Lmdyb3Vwcy5tb2RlbHNbal0udmFsdWUsXG4gICAgICAgICAgejogdGVydGlhcnkuZ3JvdXBzLm1vZGVsc1trXS52YWx1ZSxcbiAgICAgICAgICBzdHlsZTogZG90Q29sb3IoZ3JvdXApLFxuICAgICAgICAgIGk6IGksXG4gICAgICAgICAgajogaixcbiAgICAgICAgICBrOiBrXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHZpZXcuX2dyYXBoM2Quc2V0RGF0YSh2aXNEYXRhKTtcbiAgdmlldy5fZ3JhcGgzZC52YWx1ZVJhbmdlLm1pbiA9IGRhdGFNaW47XG4gIHZpZXcuX2dyYXBoM2QudmFsdWVSYW5nZS5tYXggPSBkYXRhTWF4O1xuICB2aWV3Ll9ncmFwaDNkLnJlZHJhdygpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEJhc2VXaWRnZXQuZXh0ZW5kKHtcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwid2lkZ2V0SW5uZXIgbWRsLWNhcmRfX21lZGlhXCI+PC9kaXY+JyxcblxuICB1cGRhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICB1cGRhdGUodGhpcyk7XG4gIH0sXG5cbiAgaW5pdENoYXJ0OiBmdW5jdGlvbiAoKSB7XG4gICAgaW5pdENoYXJ0KHRoaXMpO1xuICB9LFxuXG4gIGRlaW5pdENoYXJ0OiBmdW5jdGlvbiAoKSB7XG4gICAgZGVpbml0Q2hhcnQodGhpcyk7XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBYkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///035a\n")},"0b9a":function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nmodule.exports = View.extend({\n  template: templates.configurePartition.group,\n  bindings: {\n    'model.label': {\n      type: 'text',\n      hook: 'group-label'\n    },\n    'model.count': {\n      type: 'text',\n      hook: 'group-count'\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMGI5YS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtcGFydGl0aW9uL2dyb3VwLmpzP2JjOTMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uLy4uL3RlbXBsYXRlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXcuZXh0ZW5kKHtcbiAgdGVtcGxhdGU6IHRlbXBsYXRlcy5jb25maWd1cmVQYXJ0aXRpb24uZ3JvdXAsXG4gIGJpbmRpbmdzOiB7XG4gICAgJ21vZGVsLmxhYmVsJzoge1xuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgaG9vazogJ2dyb3VwLWxhYmVsJ1xuICAgIH0sXG4gICAgJ21vZGVsLmNvdW50Jzoge1xuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgaG9vazogJ2dyb3VwLWNvdW50J1xuICAgIH1cbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUxBO0FBRkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0b9a\n")},"0b9d":function(module,exports,__webpack_require__){eval("/**\n * @classdesc Radar Chart class\n * @class RadarChart\n * @augments BaseChart\n */\nvar BaseChart = __webpack_require__(/*! ./base-chart */ \"6339\");\n\nmodule.exports = BaseChart.extend({\n  initialize: function initialize() {\n    this.slots.reset([{\n      description: 'Group by',\n      type: 'partition',\n      rank: 1,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }]);\n  },\n  chartjsConfig: function chartjsConfig() {\n    return {\n      type: 'radar',\n      data: {\n        datasets: [],\n        labels: []\n      },\n      options: {\n        title: {\n          display: true,\n          position: 'top'\n        },\n        tooltips: {}\n      }\n    };\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMGI5ZC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL21vZGVscy9yYWRhcmNoYXJ0LmpzP2ZjNTQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY2xhc3NkZXNjIFJhZGFyIENoYXJ0IGNsYXNzXG4gKiBAY2xhc3MgUmFkYXJDaGFydFxuICogQGF1Z21lbnRzIEJhc2VDaGFydFxuICovXG5cbnZhciBCYXNlQ2hhcnQgPSByZXF1aXJlKCcuL2Jhc2UtY2hhcnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBCYXNlQ2hhcnQuZXh0ZW5kKHtcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2xvdHMucmVzZXQoW1xuICAgICAge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0dyb3VwIGJ5JyxcbiAgICAgICAgdHlwZTogJ3BhcnRpdGlvbicsXG4gICAgICAgIHJhbms6IDEsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBzdXBwb3J0ZWRGYWNldHM6IFsnY2F0ZWdvcmlhbCcsICdkYXRldGltZScsICdkdXJhdGlvbicsICdjb250aW51b3VzJywgJ3RleHQnXVxuICAgICAgfVxuICAgIF0pO1xuICB9LFxuICBjaGFydGpzQ29uZmlnOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdyYWRhcicsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGRhdGFzZXRzOiBbXSxcbiAgICAgICAgbGFiZWxzOiBbXVxuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxuICAgICAgICAgIHBvc2l0aW9uOiAndG9wJ1xuICAgICAgICB9LFxuICAgICAgICB0b29sdGlwczoge1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBTEE7QUFOQTtBQWVBO0FBNUJBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0b9d\n")},"0d07":function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar moment = __webpack_require__(/*! moment-timezone */ \"6c9d\");\n\nvar TimeZonesSelect = __webpack_require__(/*! ../configure-facet/time-zones-select */ \"f3d5\");\n\nmodule.exports = View.extend({\n  template: templates.configurePartition.partitionDatetime,\n  derived: {\n    minvalAsText: {\n      deps: ['model.minval', 'model.isDatetime'],\n      fn: function fn() {\n        if (this.model.isDatetime) {\n          return this.model.minval.toISOString();\n        } else {\n          return 'not a date';\n        }\n      }\n    },\n    maxvalAsText: {\n      deps: ['model.maxval', 'model.isDatetime'],\n      fn: function fn() {\n        if (this.model.isDatetime) {\n          return this.model.maxval.toISOString();\n        } else {\n          return 'not a date';\n        }\n      }\n    }\n  },\n  bindings: {\n    'model.isDatetime': {\n      type: 'toggle',\n      hook: 'group-datetime-panel'\n    },\n    'minvalAsText': {\n      type: 'value',\n      hook: 'group-startdate-input'\n    },\n    'maxvalAsText': {\n      type: 'value',\n      hook: 'group-enddate-input'\n    }\n  },\n  events: {\n    'change [data-hook=time-units]': function changeDataHookTimeUnits() {\n      var value = this.queryByHook('time-units').value;\n      this.model.groupingDatetime = value;\n    },\n    'click [data-hook~=group-datetimerange-button]': function clickDataHookGroupDatetimerangeButton() {\n      var partition = this.model;\n      partition.reset();\n      this.queryByHook('group-startdate-input').dispatchEvent(new window.Event('input'));\n      this.queryByHook('group-enddate-input').dispatchEvent(new window.Event('input'));\n      this.parent.resetFilter = true;\n    },\n    'change [data-hook~=group-startdate-input]': function changeDataHookGroupStartdateInput() {\n      var d = moment(this.queryByHook('group-startdate-input').value);\n\n      if (d.isValid()) {\n        this.model.minval = d;\n      }\n\n      this.parent.resetFilter = true;\n    },\n    'change [data-hook~=group-enddate-input]': function changeDataHookGroupEnddateInput() {\n      var d = moment(this.queryByHook('group-enddate-input').value);\n\n      if (d.isValid()) {\n        this.model.maxval = d;\n      }\n\n      this.parent.resetFilter = true;\n    }\n  },\n  subviews: {\n    timeZones: {\n      hook: 'time-zones',\n      prepareView: function prepareView(el) {\n        return new TimeZonesSelect({\n          el: el,\n          field: 'zone',\n          model: this.model\n        });\n      }\n    }\n  },\n  render: function render() {\n    this.renderWithTemplate(this);\n    this.queryByHook('time-units').value = this.model.groupingDatetime;\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMGQwNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtcGFydGl0aW9uL3BhcnRpdGlvbi1kYXRldGltZS5qcz82ZDk2Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBWaWV3ID0gcmVxdWlyZSgnYW1wZXJzYW5kLXZpZXcnKTtcbnZhciB0ZW1wbGF0ZXMgPSByZXF1aXJlKCcuLi8uLi90ZW1wbGF0ZXMnKTtcbnZhciBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQtdGltZXpvbmUnKTtcbnZhciBUaW1lWm9uZXNTZWxlY3QgPSByZXF1aXJlKCcuLi9jb25maWd1cmUtZmFjZXQvdGltZS16b25lcy1zZWxlY3QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMuY29uZmlndXJlUGFydGl0aW9uLnBhcnRpdGlvbkRhdGV0aW1lLFxuICBkZXJpdmVkOiB7XG4gICAgbWludmFsQXNUZXh0OiB7XG4gICAgICBkZXBzOiBbJ21vZGVsLm1pbnZhbCcsICdtb2RlbC5pc0RhdGV0aW1lJ10sXG4gICAgICBmbjogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5tb2RlbC5pc0RhdGV0aW1lKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwubWludmFsLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICdub3QgYSBkYXRlJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbWF4dmFsQXNUZXh0OiB7XG4gICAgICBkZXBzOiBbJ21vZGVsLm1heHZhbCcsICdtb2RlbC5pc0RhdGV0aW1lJ10sXG4gICAgICBmbjogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5tb2RlbC5pc0RhdGV0aW1lKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwubWF4dmFsLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICdub3QgYSBkYXRlJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgYmluZGluZ3M6IHtcbiAgICAnbW9kZWwuaXNEYXRldGltZSc6IHtcbiAgICAgIHR5cGU6ICd0b2dnbGUnLFxuICAgICAgaG9vazogJ2dyb3VwLWRhdGV0aW1lLXBhbmVsJ1xuICAgIH0sXG5cbiAgICAnbWludmFsQXNUZXh0Jzoge1xuICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgIGhvb2s6ICdncm91cC1zdGFydGRhdGUtaW5wdXQnXG4gICAgfSxcbiAgICAnbWF4dmFsQXNUZXh0Jzoge1xuICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgIGhvb2s6ICdncm91cC1lbmRkYXRlLWlucHV0J1xuICAgIH1cblxuICB9LFxuICBldmVudHM6IHtcbiAgICAnY2hhbmdlIFtkYXRhLWhvb2s9dGltZS11bml0c10nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLnF1ZXJ5QnlIb29rKCd0aW1lLXVuaXRzJykudmFsdWU7XG4gICAgICB0aGlzLm1vZGVsLmdyb3VwaW5nRGF0ZXRpbWUgPSB2YWx1ZTtcbiAgICB9LFxuICAgICdjbGljayBbZGF0YS1ob29rfj1ncm91cC1kYXRldGltZXJhbmdlLWJ1dHRvbl0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcGFydGl0aW9uID0gdGhpcy5tb2RlbDtcbiAgICAgIHBhcnRpdGlvbi5yZXNldCgpO1xuXG4gICAgICB0aGlzLnF1ZXJ5QnlIb29rKCdncm91cC1zdGFydGRhdGUtaW5wdXQnKS5kaXNwYXRjaEV2ZW50KG5ldyB3aW5kb3cuRXZlbnQoJ2lucHV0JykpO1xuICAgICAgdGhpcy5xdWVyeUJ5SG9vaygnZ3JvdXAtZW5kZGF0ZS1pbnB1dCcpLmRpc3BhdGNoRXZlbnQobmV3IHdpbmRvdy5FdmVudCgnaW5wdXQnKSk7XG4gICAgICB0aGlzLnBhcmVudC5yZXNldEZpbHRlciA9IHRydWU7XG4gICAgfSxcbiAgICAnY2hhbmdlIFtkYXRhLWhvb2t+PWdyb3VwLXN0YXJ0ZGF0ZS1pbnB1dF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZCA9IG1vbWVudCh0aGlzLnF1ZXJ5QnlIb29rKCdncm91cC1zdGFydGRhdGUtaW5wdXQnKS52YWx1ZSk7XG4gICAgICBpZiAoZC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgdGhpcy5tb2RlbC5taW52YWwgPSBkO1xuICAgICAgfVxuICAgICAgdGhpcy5wYXJlbnQucmVzZXRGaWx0ZXIgPSB0cnVlO1xuICAgIH0sXG4gICAgJ2NoYW5nZSBbZGF0YS1ob29rfj1ncm91cC1lbmRkYXRlLWlucHV0XSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBkID0gbW9tZW50KHRoaXMucXVlcnlCeUhvb2soJ2dyb3VwLWVuZGRhdGUtaW5wdXQnKS52YWx1ZSk7XG4gICAgICBpZiAoZC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgdGhpcy5tb2RlbC5tYXh2YWwgPSBkO1xuICAgICAgfVxuICAgICAgdGhpcy5wYXJlbnQucmVzZXRGaWx0ZXIgPSB0cnVlO1xuICAgIH1cbiAgfSxcbiAgc3Vidmlld3M6IHtcbiAgICB0aW1lWm9uZXM6IHtcbiAgICAgIGhvb2s6ICd0aW1lLXpvbmVzJyxcbiAgICAgIHByZXBhcmVWaWV3OiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUaW1lWm9uZXNTZWxlY3Qoe1xuICAgICAgICAgIGVsOiBlbCxcbiAgICAgICAgICBmaWVsZDogJ3pvbmUnLFxuICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZW5kZXJXaXRoVGVtcGxhdGUodGhpcyk7XG5cbiAgICB0aGlzLnF1ZXJ5QnlIb29rKCd0aW1lLXVuaXRzJykudmFsdWUgPSB0aGlzLm1vZGVsLmdyb3VwaW5nRGF0ZXRpbWU7XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVhBO0FBc0JBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBVkE7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBMUJBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBUkE7QUFEQTtBQVlBO0FBQ0E7QUFFQTtBQUNBO0FBcEZBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///0d07\n")},1:function(module,exports){eval("/* (ignored) *///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy93cyAoaWdub3JlZCk/MDU3NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiAoaWdub3JlZCkgKi8iXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n")},1002:function(module,exports,__webpack_require__){eval('var View = __webpack_require__(/*! ampersand-view */ "2883");\n\nvar templates = __webpack_require__(/*! ../../templates */ "4324");\n\nvar app = __webpack_require__(/*! ampersand-app */ "fcbc");\n\nvar DatasetView = __webpack_require__(/*! ./dataset */ "5eb6");\n\nmodule.exports = View.extend({\n  template: templates.datasets.datasetCollection,\n  render: function render() {\n    this.renderWithTemplate(this);\n    this.renderCollection(app.me.datasets, DatasetView, this.queryByHook(\'items\'));\n    return this;\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAwMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9kYXRhc2V0cy9kYXRhc2V0LWNvbGxlY3Rpb24uanM/OTQ4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgVmlldyA9IHJlcXVpcmUoJ2FtcGVyc2FuZC12aWV3Jyk7XG52YXIgdGVtcGxhdGVzID0gcmVxdWlyZSgnLi4vLi4vdGVtcGxhdGVzJyk7XG52YXIgYXBwID0gcmVxdWlyZSgnYW1wZXJzYW5kLWFwcCcpO1xuXG52YXIgRGF0YXNldFZpZXcgPSByZXF1aXJlKCcuL2RhdGFzZXQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMuZGF0YXNldHMuZGF0YXNldENvbGxlY3Rpb24sXG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVuZGVyV2l0aFRlbXBsYXRlKHRoaXMpO1xuICAgIHRoaXMucmVuZGVyQ29sbGVjdGlvbihhcHAubWUuZGF0YXNldHMsIERhdGFzZXRWaWV3LCB0aGlzLnF1ZXJ5QnlIb29rKCdpdGVtcycpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1002\n')},"1c81":function(module,exports,__webpack_require__){eval("/**\n * @classdesc Extends the Chart base class, and adds configuration.\n * @class HorizontalBarChart\n * @augments BaseChart\n */\nvar BaseChart = __webpack_require__(/*! ./base-chart */ \"6339\");\n\nvar moment = __webpack_require__(/*! moment-timezone */ \"6c9d\");\n\nmodule.exports = BaseChart.extend({\n  initialize: function initialize() {\n    this.slots.reset([{\n      description: 'Group by',\n      type: 'partition',\n      rank: 1,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Subdivide by',\n      type: 'partition',\n      rank: 2,\n      required: false,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Bar height',\n      type: 'aggregate',\n      rank: 1,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }, {\n      description: 'Error bar',\n      type: 'aggregate',\n      rank: 2,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }]);\n  },\n  chartjsConfig: function chartjsConfig() {\n    return {\n      type: 'horizontalBarError',\n      data: {\n        datasets: [],\n        labels: []\n      },\n      options: {\n        title: {\n          display: true,\n          position: 'top'\n        },\n        scales: {\n          xAxes: [{\n            ticks: {\n              beginAtZero: true\n            },\n            stacked: true,\n            display: false,\n            scaleLabel: {\n              display: true\n            },\n            time: {\n              parser: function parser(label) {\n                return moment(label, moment.ISO_8601);\n              }\n            }\n          }],\n          yAxes: [{\n            ticks: {\n              mirror: true\n            },\n            gridLines: {\n              display: false\n            },\n            scaleLabel: {\n              display: true\n            },\n            stacked: true,\n            time: {\n              parser: function parser(label) {\n                return moment(label, moment.ISO_8601);\n              }\n            }\n          }]\n        },\n        tooltips: {}\n      }\n    };\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMWM4MS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL21vZGVscy9ob3Jpem9udGFsYmFyY2hhcnQuanM/YmFkYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBjbGFzc2Rlc2MgRXh0ZW5kcyB0aGUgQ2hhcnQgYmFzZSBjbGFzcywgYW5kIGFkZHMgY29uZmlndXJhdGlvbi5cbiAqIEBjbGFzcyBIb3Jpem9udGFsQmFyQ2hhcnRcbiAqIEBhdWdtZW50cyBCYXNlQ2hhcnRcbiAqL1xuXG52YXIgQmFzZUNoYXJ0ID0gcmVxdWlyZSgnLi9iYXNlLWNoYXJ0Jyk7XG52YXIgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50LXRpbWV6b25lJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gQmFzZUNoYXJ0LmV4dGVuZCh7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNsb3RzLnJlc2V0KFtcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdHcm91cCBieScsXG4gICAgICAgIHR5cGU6ICdwYXJ0aXRpb24nLFxuICAgICAgICByYW5rOiAxLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NhdGVnb3JpYWwnLCAnZGF0ZXRpbWUnLCAnZHVyYXRpb24nLCAnY29udGludW91cycsICd0ZXh0J11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU3ViZGl2aWRlIGJ5JyxcbiAgICAgICAgdHlwZTogJ3BhcnRpdGlvbicsXG4gICAgICAgIHJhbms6IDIsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NhdGVnb3JpYWwnLCAnZGF0ZXRpbWUnLCAnZHVyYXRpb24nLCAnY29udGludW91cycsICd0ZXh0J11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQmFyIGhlaWdodCcsXG4gICAgICAgIHR5cGU6ICdhZ2dyZWdhdGUnLFxuICAgICAgICByYW5rOiAxLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHN1cHBvcnRlZEZhY2V0czogWydjb250aW51b3VzJywgJ2R1cmF0aW9uJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRXJyb3IgYmFyJyxcbiAgICAgICAgdHlwZTogJ2FnZ3JlZ2F0ZScsXG4gICAgICAgIHJhbms6IDIsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NvbnRpbnVvdXMnLCAnZHVyYXRpb24nXVxuICAgICAgfVxuICAgIF0pO1xuICB9LFxuICBjaGFydGpzQ29uZmlnOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdob3Jpem9udGFsQmFyRXJyb3InLFxuICAgICAgZGF0YToge1xuICAgICAgICBkYXRhc2V0czogW10sXG4gICAgICAgIGxhYmVsczogW11cbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgZGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICBwb3NpdGlvbjogJ3RvcCdcbiAgICAgICAgfSxcbiAgICAgICAgc2NhbGVzOiB7XG4gICAgICAgICAgeEF4ZXM6IFt7XG4gICAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YWNrZWQ6IHRydWUsXG4gICAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcbiAgICAgICAgICAgIHNjYWxlTGFiZWw6IHtcbiAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRpbWU6IHtcbiAgICAgICAgICAgICAgcGFyc2VyOiBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9tZW50KGxhYmVsLCBtb21lbnQuSVNPXzg2MDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfV0sXG4gICAgICAgICAgeUF4ZXM6IFt7XG4gICAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgICBtaXJyb3I6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBncmlkTGluZXM6IHtcbiAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY2FsZUxhYmVsOiB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGFja2VkOiB0cnVlLFxuICAgICAgICAgICAgdGltZToge1xuICAgICAgICAgICAgICBwYXJzZXI6IGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb21lbnQobGFiZWwsIG1vbWVudC5JU09fODYwMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XVxuICAgICAgICB9LFxuICAgICAgICB0b29sdGlwczoge1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQU1BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFUQTtBQWVBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBWEE7QUFoQkE7QUFrQ0E7QUF2Q0E7QUFOQTtBQWlEQTtBQW5GQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1c81\n")},2:function(module,exports){eval("/* (ignored) *///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy91dGlsIChpZ25vcmVkKT9hNTE1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIChpZ25vcmVkKSAqLyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2\n")},"22e9":function(module,exports,__webpack_require__){eval("var app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar $ = __webpack_require__(/*! jquery */ \"802c\");\n\nvar PageView = __webpack_require__(/*! ./base */ \"b966\");\n\nvar templates = __webpack_require__(/*! ../templates */ \"4324\");\n\nvar WidgetFrameView = __webpack_require__(/*! ./analyze/widget-frame */ \"5122\");\n\nvar FacetbarItemView = __webpack_require__(/*! ./analyze/facetbar-item */ \"6b2d\");\n\nvar sortablejs = __webpack_require__(/*! sortablejs */ \"4776\");\n\nvar AnalyzeHelp = __webpack_require__(/*! ./help/analyze */ \"b43e\"); // NOTE: gridster does not work properly with require()\n// workaround via browserify-shim (configured in package.json)\n\n\n__webpack_require__(/*! gridster */ \"cc37\");\n\nfunction _initializeCharts(view) {\n  var gridster = view._widgetsGridster; // BUGFIX: can sometimes get called before gridster is fully initialized\n\n  if (!gridster) {\n    return;\n  }\n\n  var i;\n\n  for (i = 0; i < gridster.$widgets.length; i++) {\n    var chartView = $(gridster.$widgets[i]).data('spotWidgetFrameView')._subviews[0];\n\n    chartView.model.updateConfiguration();\n\n    if (chartView.model.isConfigured) {\n      if (!chartView.model.filter.isInitialized) {\n        if (chartView.isInitialized) {\n          chartView.deinitChart(); // deininit charts that had a filter released\n        }\n\n        chartView.model.filter.initDataFilter();\n      }\n\n      if (chartView.isInitialized) {// noop\n      } else {\n        chartView.initChart();\n      }\n    } else {\n      if (chartView.isInitialized) {\n        chartView.deinitChart();\n      }\n\n      if (chartView.model.filter.isInitialized) {\n        chartView.model.filter.releaseDataFilter();\n      }\n    }\n  }\n}\n\nfunction _deinitializeCharts(view) {\n  var gridster = view._widgetsGridster;\n  var i;\n\n  for (i = 0; i < gridster.$widgets.length; i++) {\n    var chartView = $(gridster.$widgets[i]).data('spotWidgetFrameView')._subviews[0];\n\n    if (chartView.isInitialized) {\n      chartView.deinitChart();\n    }\n\n    if (chartView.model.isConfigured) {\n      chartView.model.filter.releaseDataFilter();\n    }\n  }\n}\n\nfunction _updateCharts(view) {\n  var gridster = view._widgetsGridster;\n  var i;\n\n  for (i = 0; i < gridster.$widgets.length; i++) {\n    var chartView = $(gridster.$widgets[i]).data('spotWidgetFrameView')._subviews[0];\n\n    if (chartView.isInitialized) {\n      chartView.update();\n    }\n  }\n}\n/**\n * Add a widget to the analyze page for the given filter\n *\n * view {View}             Ampersand View instance of the analyze page\n * filter {Filter}         Spot filter instance to create the widget for\n * editModeHint {boolean}  Try to start plot in editMode (ie. accepts dnd of facets) [true] or in interaction mode (false)\n */\n\n\nfunction addWidgetForFilter(view, filter, editModeHint) {\n  var gridster = view._widgetsGridster;\n  var row = filter.row || 1;\n  var col = filter.col || 1;\n  var sizeX = filter.size_x || 3;\n  var sizeY = filter.size_y || 3;\n  var el = gridster.add_widget('<div class=\"widgetOuterFrame\"></div>', sizeX, sizeY, col, row);\n  var frameView = new WidgetFrameView({\n    model: filter\n  }); // render, and render content of widget frame\n\n  view.renderSubview(frameView, el[0]);\n  frameView.renderContent(); // link element and view so we can:\n  // a) on remove, get to the HTMLElement from the WidgetFrameView\n  // b) on resize, get to the WidgetFrameView from the HTMLElement\n\n  frameView.gridsterHook = el[0];\n  $(el[0]).data('spotWidgetFrameView', frameView); // try to initialize and render possibly present data\n  // only follow editModeHint when the widget is configured, default to true\n\n  var chartView = frameView.widget;\n  chartView.model.updateConfiguration();\n\n  if (chartView.model.isConfigured) {\n    if (!filter.isInitialized) {\n      filter.initDataFilter();\n    }\n\n    if (!chartView.isInitialized) {\n      chartView.initChart();\n    }\n\n    chartView.update();\n    frameView.editMode = editModeHint;\n  } else {\n    // widget is not configured, ignore editModeHint\n    // and always go to edit mode\n    frameView.editMode = true;\n  }\n\n  filter.on('newData', function () {\n    chartView.update();\n  });\n}\n\nmodule.exports = PageView.extend({\n  template: templates.analyze.page,\n  session: {\n    fullscreenMode: ['boolean', true, true]\n  },\n  initialize: function initialize() {\n    this.pageName = 'analyze';\n    this.fullscreenMode = app.fullscreenMode; // this.helpTemplate = templates.help.analyze;\n\n    this.helpSteps = AnalyzeHelp.steps;\n    this.helpHints = AnalyzeHelp.hints; // // show existing dataset list\n    // app.me.datasets.forEach(function (dataset, i) {\n    //   if (dataset.isActive) {\n    //     console.log('dataset: ', dataset);\n    //     dataset.facets.forEach(function (facet, j) {\n    //       console.log('facet: ', facet);\n    //     });\n    //   }\n    // });\n\n    app.on('refresh', function () {\n      _initializeCharts(this);\n\n      app.me.dataview.getData();\n    }, this);\n    this.once('remove', function () {\n      // remove callbacks for 'app#refresh'\n      app.off('refresh'); // remove callbacks for 'filter#newData'\n\n      app.me.dataview.filters.forEach(function (filter) {\n        filter.off('newData');\n      });\n    });\n\n    if (app.me.dataview.datasetIds.length === 0) {\n      app.message({\n        text: 'No data to analyze, please upload and/or select some datasets',\n        type: 'ok'\n      });\n    }\n  },\n  derived: {\n    dataString: {\n      deps: ['model.dataTotal', 'model.dataSelected'],\n      fn: function fn() {\n        var percentage;\n\n        if (this.model.dataTotal > 0) {\n          percentage = 100.0 * this.model.dataSelected / this.model.dataTotal;\n        } else {\n          percentage = 0;\n        }\n\n        return this.model.dataTotal + ' total, ' + this.model.dataSelected + ' selected (' + percentage.toPrecision(3) + '%)';\n      }\n    }\n  },\n  bindings: {\n    'fullscreenMode': [{\n      type: 'toggle',\n      hook: 'chart-bar',\n      invert: true\n    }, {\n      type: 'toggle',\n      hook: 'facet-bar',\n      invert: true\n    }],\n    'dataString': {\n      type: 'text',\n      hook: 'data-string'\n    }\n  },\n  events: {\n    'click #viewAll': 'viewAll',\n    'click #fullscreenButton': 'toggleFullscreen',\n    'click #resetFiltersButton': 'resetFilters',\n    'click #saveSessionButton': 'saveSession',\n    'click .widgetIcon': 'addChart'\n  },\n  saveSession: function saveSession() {\n    app.saveCurrentSession();\n  },\n  addChart: function addChart(ev) {\n    // what icon was clicked?\n    var target = ev.target || ev.srcElement;\n    var id = target.id;\n    var filter = this.model.filters.add({\n      chartType: id\n    });\n    addWidgetForFilter(this, filter, true);\n  },\n  toggleFullscreen: function toggleFullscreen() {\n    app.fullscreenMode = !app.fullscreenMode;\n    this.fullscreenMode = app.fullscreenMode;\n  },\n  resetFilters: function resetFilters() {\n    app.me.dataview.pause();\n    app.me.dataview.filters.forEach(function (filter) {\n      // undo drill downs\n      while (filter.zoomHistory.length > 0) {\n        filter.zoomOut();\n      } // and clear possible selection\n\n\n      filter.zoomOut();\n    });\n    app.me.dataview.play();\n    app.me.dataview.getData();\n    app.message({\n      text: 'Reselected all data',\n      type: 'ok'\n    });\n  },\n  viewAll: function viewAll() {\n    this._subviews.forEach(function (v) {\n      if (v._values && v._values.hasOwnProperty('editMode')) {\n        v.editMode = false;\n      }\n    });\n  },\n  render: function render(opts) {\n    this.renderWithTemplate(this);\n    this.renderCollection(this.model.facets, FacetbarItemView, this.queryByHook('facet-bar-items'), {\n      filter: function filter(m) {\n        return m.isActive;\n      }\n    });\n    return this;\n  },\n  renderContent: function renderContent() {\n    var widgetNeedsData = false;\n    var el = document.getElementById('facetBar');\n    this._facetsSortable = sortablejs.create(el, {\n      draggable: '.mdl-chip',\n      dataIdAttr: 'data-id',\n      sort: false,\n      group: {\n        name: 'facets',\n        pull: 'clone',\n        put: false\n      },\n      onStart: function onStart(evt) {\n        var item = evt.item;\n        var facetId = item.getAttribute('data-id');\n        var facet = app.me.dataview.facets.get(facetId);\n        app.trigger('dragStart', facet.type);\n      },\n      onEnd: function onEnd(evt) {\n        app.trigger('dragEnd');\n      },\n      onAdd: function onAdd(evt) {\n        var item = evt.item;\n        item.remove();\n      }\n    });\n    this._widgetsGridster = $('[id~=widgets]').gridster({\n      widget_base_dimensions: [100, 100],\n      min_cols: 1,\n      max_cols: 20,\n      avoid_overlapped_widgets: false,\n      widget_selector: 'div',\n      draggable: {\n        enabled: true,\n        handle: '.widgetDragBar',\n        stop: function stop() {\n          var widgets = this.$widgets;\n          var i = 0;\n\n          for (i = 0; i < widgets.length; i++) {\n            // $.each\n            var widget = widgets[i];\n            var data = $(widget).data();\n            var filter = data['spotWidgetFrameView'].model.filter;\n            var grid = data['coords'].grid;\n            filter.row = grid.row;\n            filter.col = grid.col;\n            filter.size_x = grid.size_x;\n            filter.size_y = grid.size_y;\n          }\n        }\n      },\n      resize: {\n        enabled: true,\n        start: function start(e, ui, widget) {\n          var view = widget.data('spotWidgetFrameView')._subviews[0];\n\n          view.deinitChart();\n        },\n        stop: function stop(e, ui, widget) {\n          var view = widget.data('spotWidgetFrameView')._subviews[0];\n\n          var filter = view.model.filter;\n\n          if (view.isInitialized) {\n            view.update();\n          } // keep track of the position of the chart\n\n\n          var info = widget.data('coords').grid;\n          filter.row = info.row;\n          filter.col = info.col;\n          filter.size_x = info.size_x;\n          filter.size_y = info.size_y;\n\n          if (view.model.isConfigured) {\n            view.initChart();\n          }\n\n          if (view.isInitialized) {\n            view.update();\n          }\n        }\n      }\n    }).data('gridster');\n    this.on('remove', function () {\n      this._facetsSortable.destroy();\n\n      this._widgetsGridster.destroy();\n    }); // pause dataset to prevent needless data updates\n\n    this.model.pause(); // add widgets for each filter to the page\n\n    this.model.filters.forEach(function (filter) {\n      addWidgetForFilter(this, filter, false);\n\n      if (!filter.data || filter.data.length === 0) {\n        widgetNeedsData = true;\n      }\n    }, this); // done, unpause the dataset\n\n    this.model.play();\n\n    if (widgetNeedsData) {\n      app.me.dataview.getData();\n    } // do a last pass to render data\n\n\n    _updateCharts(this);\n  },\n  initializeCharts: function initializeCharts() {\n    _initializeCharts(this);\n  },\n  deinitializeCharts: function deinitializeCharts() {\n    _deinitializeCharts(this);\n  },\n  updateCharts: function updateCharts() {\n    _updateCharts(this);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjJlOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9hbmFseXplLmpzPzI1YTMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFwcCA9IHJlcXVpcmUoJ2FtcGVyc2FuZC1hcHAnKTtcbnZhciAkID0gcmVxdWlyZSgnanF1ZXJ5Jyk7XG52YXIgUGFnZVZpZXcgPSByZXF1aXJlKCcuL2Jhc2UnKTtcbnZhciB0ZW1wbGF0ZXMgPSByZXF1aXJlKCcuLi90ZW1wbGF0ZXMnKTtcbnZhciBXaWRnZXRGcmFtZVZpZXcgPSByZXF1aXJlKCcuL2FuYWx5emUvd2lkZ2V0LWZyYW1lJyk7XG52YXIgRmFjZXRiYXJJdGVtVmlldyA9IHJlcXVpcmUoJy4vYW5hbHl6ZS9mYWNldGJhci1pdGVtJyk7XG52YXIgc29ydGFibGVqcyA9IHJlcXVpcmUoJ3NvcnRhYmxlanMnKTtcblxudmFyIEFuYWx5emVIZWxwID0gcmVxdWlyZSgnLi9oZWxwL2FuYWx5emUnKTtcblxuLy8gTk9URTogZ3JpZHN0ZXIgZG9lcyBub3Qgd29yayBwcm9wZXJseSB3aXRoIHJlcXVpcmUoKVxuLy8gd29ya2Fyb3VuZCB2aWEgYnJvd3NlcmlmeS1zaGltIChjb25maWd1cmVkIGluIHBhY2thZ2UuanNvbilcbnJlcXVpcmUoJ2dyaWRzdGVyJyk7XG5cbmZ1bmN0aW9uIGluaXRpYWxpemVDaGFydHMgKHZpZXcpIHtcbiAgdmFyIGdyaWRzdGVyID0gdmlldy5fd2lkZ2V0c0dyaWRzdGVyO1xuXG4gIC8vIEJVR0ZJWDogY2FuIHNvbWV0aW1lcyBnZXQgY2FsbGVkIGJlZm9yZSBncmlkc3RlciBpcyBmdWxseSBpbml0aWFsaXplZFxuICBpZiAoIWdyaWRzdGVyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBncmlkc3Rlci4kd2lkZ2V0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjaGFydFZpZXcgPSAkKGdyaWRzdGVyLiR3aWRnZXRzW2ldKS5kYXRhKCdzcG90V2lkZ2V0RnJhbWVWaWV3JykuX3N1YnZpZXdzWzBdO1xuICAgIGNoYXJ0Vmlldy5tb2RlbC51cGRhdGVDb25maWd1cmF0aW9uKCk7XG5cbiAgICBpZiAoY2hhcnRWaWV3Lm1vZGVsLmlzQ29uZmlndXJlZCkge1xuICAgICAgaWYgKCFjaGFydFZpZXcubW9kZWwuZmlsdGVyLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgaWYgKGNoYXJ0Vmlldy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgY2hhcnRWaWV3LmRlaW5pdENoYXJ0KCk7IC8vIGRlaW5pbml0IGNoYXJ0cyB0aGF0IGhhZCBhIGZpbHRlciByZWxlYXNlZFxuICAgICAgICB9XG4gICAgICAgIGNoYXJ0Vmlldy5tb2RlbC5maWx0ZXIuaW5pdERhdGFGaWx0ZXIoKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFydFZpZXcuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAvLyBub29wXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGFydFZpZXcuaW5pdENoYXJ0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaGFydFZpZXcuaXNJbml0aWFsaXplZCkge1xuICAgICAgICBjaGFydFZpZXcuZGVpbml0Q2hhcnQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFydFZpZXcubW9kZWwuZmlsdGVyLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgY2hhcnRWaWV3Lm1vZGVsLmZpbHRlci5yZWxlYXNlRGF0YUZpbHRlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkZWluaXRpYWxpemVDaGFydHMgKHZpZXcpIHtcbiAgdmFyIGdyaWRzdGVyID0gdmlldy5fd2lkZ2V0c0dyaWRzdGVyO1xuXG4gIHZhciBpO1xuICBmb3IgKGkgPSAwOyBpIDwgZ3JpZHN0ZXIuJHdpZGdldHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2hhcnRWaWV3ID0gJChncmlkc3Rlci4kd2lkZ2V0c1tpXSkuZGF0YSgnc3BvdFdpZGdldEZyYW1lVmlldycpLl9zdWJ2aWV3c1swXTtcbiAgICBpZiAoY2hhcnRWaWV3LmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGNoYXJ0Vmlldy5kZWluaXRDaGFydCgpO1xuICAgIH1cbiAgICBpZiAoY2hhcnRWaWV3Lm1vZGVsLmlzQ29uZmlndXJlZCkge1xuICAgICAgY2hhcnRWaWV3Lm1vZGVsLmZpbHRlci5yZWxlYXNlRGF0YUZpbHRlcigpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDaGFydHMgKHZpZXcpIHtcbiAgdmFyIGdyaWRzdGVyID0gdmlldy5fd2lkZ2V0c0dyaWRzdGVyO1xuXG4gIHZhciBpO1xuICBmb3IgKGkgPSAwOyBpIDwgZ3JpZHN0ZXIuJHdpZGdldHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2hhcnRWaWV3ID0gJChncmlkc3Rlci4kd2lkZ2V0c1tpXSkuZGF0YSgnc3BvdFdpZGdldEZyYW1lVmlldycpLl9zdWJ2aWV3c1swXTtcbiAgICBpZiAoY2hhcnRWaWV3LmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGNoYXJ0Vmlldy51cGRhdGUoKTtcbiAgICB9XG4gIH1cbn1cbi8qKlxuICogQWRkIGEgd2lkZ2V0IHRvIHRoZSBhbmFseXplIHBhZ2UgZm9yIHRoZSBnaXZlbiBmaWx0ZXJcbiAqXG4gKiB2aWV3IHtWaWV3fSAgICAgICAgICAgICBBbXBlcnNhbmQgVmlldyBpbnN0YW5jZSBvZiB0aGUgYW5hbHl6ZSBwYWdlXG4gKiBmaWx0ZXIge0ZpbHRlcn0gICAgICAgICBTcG90IGZpbHRlciBpbnN0YW5jZSB0byBjcmVhdGUgdGhlIHdpZGdldCBmb3JcbiAqIGVkaXRNb2RlSGludCB7Ym9vbGVhbn0gIFRyeSB0byBzdGFydCBwbG90IGluIGVkaXRNb2RlIChpZS4gYWNjZXB0cyBkbmQgb2YgZmFjZXRzKSBbdHJ1ZV0gb3IgaW4gaW50ZXJhY3Rpb24gbW9kZSAoZmFsc2UpXG4gKi9cbmZ1bmN0aW9uIGFkZFdpZGdldEZvckZpbHRlciAodmlldywgZmlsdGVyLCBlZGl0TW9kZUhpbnQpIHtcbiAgdmFyIGdyaWRzdGVyID0gdmlldy5fd2lkZ2V0c0dyaWRzdGVyO1xuICB2YXIgcm93ID0gZmlsdGVyLnJvdyB8fCAxO1xuICB2YXIgY29sID0gZmlsdGVyLmNvbCB8fCAxO1xuICB2YXIgc2l6ZVggPSBmaWx0ZXIuc2l6ZV94IHx8IDM7XG4gIHZhciBzaXplWSA9IGZpbHRlci5zaXplX3kgfHwgMztcblxuICB2YXIgZWwgPSBncmlkc3Rlci5hZGRfd2lkZ2V0KCc8ZGl2IGNsYXNzPVwid2lkZ2V0T3V0ZXJGcmFtZVwiPjwvZGl2PicsIHNpemVYLCBzaXplWSwgY29sLCByb3cpO1xuICB2YXIgZnJhbWVWaWV3ID0gbmV3IFdpZGdldEZyYW1lVmlldyh7XG4gICAgbW9kZWw6IGZpbHRlclxuICB9KTtcblxuICAvLyByZW5kZXIsIGFuZCByZW5kZXIgY29udGVudCBvZiB3aWRnZXQgZnJhbWVcbiAgdmlldy5yZW5kZXJTdWJ2aWV3KGZyYW1lVmlldywgZWxbMF0pO1xuICBmcmFtZVZpZXcucmVuZGVyQ29udGVudCgpO1xuXG4gIC8vIGxpbmsgZWxlbWVudCBhbmQgdmlldyBzbyB3ZSBjYW46XG4gIC8vIGEpIG9uIHJlbW92ZSwgZ2V0IHRvIHRoZSBIVE1MRWxlbWVudCBmcm9tIHRoZSBXaWRnZXRGcmFtZVZpZXdcbiAgLy8gYikgb24gcmVzaXplLCBnZXQgdG8gdGhlIFdpZGdldEZyYW1lVmlldyBmcm9tIHRoZSBIVE1MRWxlbWVudFxuICBmcmFtZVZpZXcuZ3JpZHN0ZXJIb29rID0gZWxbMF07XG4gICQoZWxbMF0pLmRhdGEoJ3Nwb3RXaWRnZXRGcmFtZVZpZXcnLCBmcmFtZVZpZXcpO1xuXG4gIC8vIHRyeSB0byBpbml0aWFsaXplIGFuZCByZW5kZXIgcG9zc2libHkgcHJlc2VudCBkYXRhXG4gIC8vIG9ubHkgZm9sbG93IGVkaXRNb2RlSGludCB3aGVuIHRoZSB3aWRnZXQgaXMgY29uZmlndXJlZCwgZGVmYXVsdCB0byB0cnVlXG4gIHZhciBjaGFydFZpZXcgPSBmcmFtZVZpZXcud2lkZ2V0O1xuICBjaGFydFZpZXcubW9kZWwudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuICBpZiAoY2hhcnRWaWV3Lm1vZGVsLmlzQ29uZmlndXJlZCkge1xuICAgIGlmICghZmlsdGVyLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGZpbHRlci5pbml0RGF0YUZpbHRlcigpO1xuICAgIH1cbiAgICBpZiAoIWNoYXJ0Vmlldy5pc0luaXRpYWxpemVkKSB7XG4gICAgICBjaGFydFZpZXcuaW5pdENoYXJ0KCk7XG4gICAgfVxuICAgIGNoYXJ0Vmlldy51cGRhdGUoKTtcblxuICAgIGZyYW1lVmlldy5lZGl0TW9kZSA9IGVkaXRNb2RlSGludDtcbiAgfSBlbHNlIHtcbiAgICAvLyB3aWRnZXQgaXMgbm90IGNvbmZpZ3VyZWQsIGlnbm9yZSBlZGl0TW9kZUhpbnRcbiAgICAvLyBhbmQgYWx3YXlzIGdvIHRvIGVkaXQgbW9kZVxuICAgIGZyYW1lVmlldy5lZGl0TW9kZSA9IHRydWU7XG4gIH1cblxuICBmaWx0ZXIub24oJ25ld0RhdGEnLCBmdW5jdGlvbiAoKSB7XG4gICAgY2hhcnRWaWV3LnVwZGF0ZSgpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQYWdlVmlldy5leHRlbmQoe1xuICB0ZW1wbGF0ZTogdGVtcGxhdGVzLmFuYWx5emUucGFnZSxcbiAgc2Vzc2lvbjoge1xuICAgIGZ1bGxzY3JlZW5Nb2RlOiBbJ2Jvb2xlYW4nLCB0cnVlLCB0cnVlXVxuICB9LFxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5wYWdlTmFtZSA9ICdhbmFseXplJztcbiAgICB0aGlzLmZ1bGxzY3JlZW5Nb2RlID0gYXBwLmZ1bGxzY3JlZW5Nb2RlO1xuICAgIC8vIHRoaXMuaGVscFRlbXBsYXRlID0gdGVtcGxhdGVzLmhlbHAuYW5hbHl6ZTtcbiAgICB0aGlzLmhlbHBTdGVwcyA9IEFuYWx5emVIZWxwLnN0ZXBzO1xuICAgIHRoaXMuaGVscEhpbnRzID0gQW5hbHl6ZUhlbHAuaGludHM7XG5cblxuXG5cbiAgICAvLyAvLyBzaG93IGV4aXN0aW5nIGRhdGFzZXQgbGlzdFxuICAgIC8vIGFwcC5tZS5kYXRhc2V0cy5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhc2V0LCBpKSB7XG4gICAgLy8gICBpZiAoZGF0YXNldC5pc0FjdGl2ZSkge1xuICAgIC8vICAgICBjb25zb2xlLmxvZygnZGF0YXNldDogJywgZGF0YXNldCk7XG4gICAgLy8gICAgIGRhdGFzZXQuZmFjZXRzLmZvckVhY2goZnVuY3Rpb24gKGZhY2V0LCBqKSB7XG4gICAgLy8gICAgICAgY29uc29sZS5sb2coJ2ZhY2V0OiAnLCBmYWNldCk7XG4gICAgLy8gICAgIH0pO1xuICAgIC8vICAgfVxuICAgIC8vIH0pO1xuXG5cblxuXG4gICAgYXBwLm9uKCdyZWZyZXNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgaW5pdGlhbGl6ZUNoYXJ0cyh0aGlzKTtcbiAgICAgIGFwcC5tZS5kYXRhdmlldy5nZXREYXRhKCk7XG4gICAgfSwgdGhpcyk7XG5cbiAgICB0aGlzLm9uY2UoJ3JlbW92ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHJlbW92ZSBjYWxsYmFja3MgZm9yICdhcHAjcmVmcmVzaCdcbiAgICAgIGFwcC5vZmYoJ3JlZnJlc2gnKTtcblxuICAgICAgLy8gcmVtb3ZlIGNhbGxiYWNrcyBmb3IgJ2ZpbHRlciNuZXdEYXRhJ1xuICAgICAgYXBwLm1lLmRhdGF2aWV3LmZpbHRlcnMuZm9yRWFjaChmdW5jdGlvbiAoZmlsdGVyKSB7XG4gICAgICAgIGZpbHRlci5vZmYoJ25ld0RhdGEnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKGFwcC5tZS5kYXRhdmlldy5kYXRhc2V0SWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYXBwLm1lc3NhZ2Uoe1xuICAgICAgICB0ZXh0OiAnTm8gZGF0YSB0byBhbmFseXplLCBwbGVhc2UgdXBsb2FkIGFuZC9vciBzZWxlY3Qgc29tZSBkYXRhc2V0cycsXG4gICAgICAgIHR5cGU6ICdvaydcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgZGVyaXZlZDoge1xuICAgIGRhdGFTdHJpbmc6IHtcbiAgICAgIGRlcHM6IFsnbW9kZWwuZGF0YVRvdGFsJywgJ21vZGVsLmRhdGFTZWxlY3RlZCddLFxuICAgICAgZm46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBlcmNlbnRhZ2U7XG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmRhdGFUb3RhbCA+IDApIHtcbiAgICAgICAgICBwZXJjZW50YWdlID0gMTAwLjAgKiB0aGlzLm1vZGVsLmRhdGFTZWxlY3RlZCAvIHRoaXMubW9kZWwuZGF0YVRvdGFsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlcmNlbnRhZ2UgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLmRhdGFUb3RhbCArXG4gICAgICAgICAgJyB0b3RhbCwgJyArXG4gICAgICAgICAgdGhpcy5tb2RlbC5kYXRhU2VsZWN0ZWQgK1xuICAgICAgICAgICcgc2VsZWN0ZWQgKCcgK1xuICAgICAgICAgIHBlcmNlbnRhZ2UudG9QcmVjaXNpb24oMykgK1xuICAgICAgICAgICclKSc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBiaW5kaW5nczoge1xuICAgICdmdWxsc2NyZWVuTW9kZSc6IFtcbiAgICAgIHsgdHlwZTogJ3RvZ2dsZScsIGhvb2s6ICdjaGFydC1iYXInLCBpbnZlcnQ6IHRydWUgfSxcbiAgICAgIHsgdHlwZTogJ3RvZ2dsZScsIGhvb2s6ICdmYWNldC1iYXInLCBpbnZlcnQ6IHRydWUgfVxuICAgIF0sXG4gICAgJ2RhdGFTdHJpbmcnOiB7XG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICBob29rOiAnZGF0YS1zdHJpbmcnXG4gICAgfVxuICB9LFxuICBldmVudHM6IHtcbiAgICAnY2xpY2sgI3ZpZXdBbGwnOiAndmlld0FsbCcsXG4gICAgJ2NsaWNrICNmdWxsc2NyZWVuQnV0dG9uJzogJ3RvZ2dsZUZ1bGxzY3JlZW4nLFxuICAgICdjbGljayAjcmVzZXRGaWx0ZXJzQnV0dG9uJzogJ3Jlc2V0RmlsdGVycycsXG4gICAgJ2NsaWNrICNzYXZlU2Vzc2lvbkJ1dHRvbic6ICdzYXZlU2Vzc2lvbicsXG4gICAgJ2NsaWNrIC53aWRnZXRJY29uJzogJ2FkZENoYXJ0J1xuICB9LFxuICBzYXZlU2Vzc2lvbjogZnVuY3Rpb24gKCkge1xuICAgIGFwcC5zYXZlQ3VycmVudFNlc3Npb24oKTtcbiAgfSxcbiAgYWRkQ2hhcnQ6IGZ1bmN0aW9uIChldikge1xuICAgIC8vIHdoYXQgaWNvbiB3YXMgY2xpY2tlZD9cbiAgICB2YXIgdGFyZ2V0ID0gZXYudGFyZ2V0IHx8IGV2LnNyY0VsZW1lbnQ7XG4gICAgdmFyIGlkID0gdGFyZ2V0LmlkO1xuXG4gICAgdmFyIGZpbHRlciA9IHRoaXMubW9kZWwuZmlsdGVycy5hZGQoeyBjaGFydFR5cGU6IGlkIH0pO1xuICAgIGFkZFdpZGdldEZvckZpbHRlcih0aGlzLCBmaWx0ZXIsIHRydWUpO1xuICB9LFxuICB0b2dnbGVGdWxsc2NyZWVuOiBmdW5jdGlvbiAoKSB7XG4gICAgYXBwLmZ1bGxzY3JlZW5Nb2RlID0gIWFwcC5mdWxsc2NyZWVuTW9kZTtcbiAgICB0aGlzLmZ1bGxzY3JlZW5Nb2RlID0gYXBwLmZ1bGxzY3JlZW5Nb2RlO1xuICB9LFxuICByZXNldEZpbHRlcnM6IGZ1bmN0aW9uICgpIHtcbiAgICBhcHAubWUuZGF0YXZpZXcucGF1c2UoKTtcbiAgICBhcHAubWUuZGF0YXZpZXcuZmlsdGVycy5mb3JFYWNoKGZ1bmN0aW9uIChmaWx0ZXIpIHtcbiAgICAgIC8vIHVuZG8gZHJpbGwgZG93bnNcbiAgICAgIHdoaWxlIChmaWx0ZXIuem9vbUhpc3RvcnkubGVuZ3RoID4gMCkge1xuICAgICAgICBmaWx0ZXIuem9vbU91dCgpO1xuICAgICAgfVxuICAgICAgLy8gYW5kIGNsZWFyIHBvc3NpYmxlIHNlbGVjdGlvblxuICAgICAgZmlsdGVyLnpvb21PdXQoKTtcbiAgICB9KTtcbiAgICBhcHAubWUuZGF0YXZpZXcucGxheSgpO1xuICAgIGFwcC5tZS5kYXRhdmlldy5nZXREYXRhKCk7XG4gICAgYXBwLm1lc3NhZ2Uoe1xuICAgICAgdGV4dDogJ1Jlc2VsZWN0ZWQgYWxsIGRhdGEnLFxuICAgICAgdHlwZTogJ29rJ1xuICAgIH0pO1xuICB9LFxuICB2aWV3QWxsOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5fc3Vidmlld3MuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgICAgaWYgKHYuX3ZhbHVlcyAmJiB2Ll92YWx1ZXMuaGFzT3duUHJvcGVydHkoJ2VkaXRNb2RlJykpIHtcbiAgICAgICAgdi5lZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIChvcHRzKSB7XG4gICAgdGhpcy5yZW5kZXJXaXRoVGVtcGxhdGUodGhpcyk7XG5cbiAgICB0aGlzLnJlbmRlckNvbGxlY3Rpb24odGhpcy5tb2RlbC5mYWNldHMsIEZhY2V0YmFySXRlbVZpZXcsIHRoaXMucXVlcnlCeUhvb2soJ2ZhY2V0LWJhci1pdGVtcycpLCB7XG4gICAgICBmaWx0ZXI6IGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHJldHVybiBtLmlzQWN0aXZlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIHJlbmRlckNvbnRlbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgd2lkZ2V0TmVlZHNEYXRhID0gZmFsc2U7XG5cbiAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmFjZXRCYXInKTtcbiAgICB0aGlzLl9mYWNldHNTb3J0YWJsZSA9IHNvcnRhYmxlanMuY3JlYXRlKGVsLCB7XG4gICAgICBkcmFnZ2FibGU6ICcubWRsLWNoaXAnLFxuICAgICAgZGF0YUlkQXR0cjogJ2RhdGEtaWQnLFxuICAgICAgc29ydDogZmFsc2UsXG4gICAgICBncm91cDoge1xuICAgICAgICBuYW1lOiAnZmFjZXRzJyxcbiAgICAgICAgcHVsbDogJ2Nsb25lJyxcbiAgICAgICAgcHV0OiBmYWxzZVxuICAgICAgfSxcbiAgICAgIG9uU3RhcnQ6IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICAgICAgdmFyIGZhY2V0SWQgPSBpdGVtLmdldEF0dHJpYnV0ZSgnZGF0YS1pZCcpO1xuICAgICAgICB2YXIgZmFjZXQgPSBhcHAubWUuZGF0YXZpZXcuZmFjZXRzLmdldChmYWNldElkKTtcbiAgICAgICAgYXBwLnRyaWdnZXIoJ2RyYWdTdGFydCcsIGZhY2V0LnR5cGUpO1xuICAgICAgfSxcbiAgICAgIG9uRW5kOiBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIGFwcC50cmlnZ2VyKCdkcmFnRW5kJyk7XG4gICAgICB9LFxuICAgICAgb25BZGQ6IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICAgICAgaXRlbS5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLl93aWRnZXRzR3JpZHN0ZXIgPSAkKCdbaWR+PXdpZGdldHNdJykuZ3JpZHN0ZXIoe1xuICAgICAgd2lkZ2V0X2Jhc2VfZGltZW5zaW9uczogWzEwMCwgMTAwXSxcbiAgICAgIG1pbl9jb2xzOiAxLFxuICAgICAgbWF4X2NvbHM6IDIwLFxuICAgICAgYXZvaWRfb3ZlcmxhcHBlZF93aWRnZXRzOiBmYWxzZSxcbiAgICAgIHdpZGdldF9zZWxlY3RvcjogJ2RpdicsXG4gICAgICBkcmFnZ2FibGU6IHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgaGFuZGxlOiAnLndpZGdldERyYWdCYXInLFxuICAgICAgICBzdG9wOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIHdpZGdldHMgPSB0aGlzLiR3aWRnZXRzO1xuICAgICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd2lkZ2V0cy5sZW5ndGg7IGkrKykgeyAvLyAkLmVhY2hcbiAgICAgICAgICAgIHZhciB3aWRnZXQgPSB3aWRnZXRzW2ldO1xuICAgICAgICAgICAgdmFyIGRhdGEgPSAkKHdpZGdldCkuZGF0YSgpO1xuICAgICAgICAgICAgdmFyIGZpbHRlciA9IGRhdGFbJ3Nwb3RXaWRnZXRGcmFtZVZpZXcnXS5tb2RlbC5maWx0ZXI7XG4gICAgICAgICAgICB2YXIgZ3JpZCA9IGRhdGFbJ2Nvb3JkcyddLmdyaWQ7XG5cbiAgICAgICAgICAgIGZpbHRlci5yb3cgPSBncmlkLnJvdztcbiAgICAgICAgICAgIGZpbHRlci5jb2wgPSBncmlkLmNvbDtcbiAgICAgICAgICAgIGZpbHRlci5zaXplX3ggPSBncmlkLnNpemVfeDtcbiAgICAgICAgICAgIGZpbHRlci5zaXplX3kgPSBncmlkLnNpemVfeTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXNpemU6IHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIChlLCB1aSwgd2lkZ2V0KSB7XG4gICAgICAgICAgdmFyIHZpZXcgPSB3aWRnZXQuZGF0YSgnc3BvdFdpZGdldEZyYW1lVmlldycpLl9zdWJ2aWV3c1swXTtcbiAgICAgICAgICB2aWV3LmRlaW5pdENoYXJ0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIHN0b3A6IGZ1bmN0aW9uIChlLCB1aSwgd2lkZ2V0KSB7XG4gICAgICAgICAgdmFyIHZpZXcgPSB3aWRnZXQuZGF0YSgnc3BvdFdpZGdldEZyYW1lVmlldycpLl9zdWJ2aWV3c1swXTtcbiAgICAgICAgICB2YXIgZmlsdGVyID0gdmlldy5tb2RlbC5maWx0ZXI7XG4gICAgICAgICAgaWYgKHZpZXcuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdmlldy51cGRhdGUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBrZWVwIHRyYWNrIG9mIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2hhcnRcbiAgICAgICAgICB2YXIgaW5mbyA9IHdpZGdldC5kYXRhKCdjb29yZHMnKS5ncmlkO1xuICAgICAgICAgIGZpbHRlci5yb3cgPSBpbmZvLnJvdztcbiAgICAgICAgICBmaWx0ZXIuY29sID0gaW5mby5jb2w7XG4gICAgICAgICAgZmlsdGVyLnNpemVfeCA9IGluZm8uc2l6ZV94O1xuICAgICAgICAgIGZpbHRlci5zaXplX3kgPSBpbmZvLnNpemVfeTtcbiAgICAgICAgICBpZiAodmlldy5tb2RlbC5pc0NvbmZpZ3VyZWQpIHtcbiAgICAgICAgICAgIHZpZXcuaW5pdENoYXJ0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2aWV3LmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHZpZXcudXBkYXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkuZGF0YSgnZ3JpZHN0ZXInKTtcblxuICAgIHRoaXMub24oJ3JlbW92ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuX2ZhY2V0c1NvcnRhYmxlLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuX3dpZGdldHNHcmlkc3Rlci5kZXN0cm95KCk7XG4gICAgfSk7XG5cbiAgICAvLyBwYXVzZSBkYXRhc2V0IHRvIHByZXZlbnQgbmVlZGxlc3MgZGF0YSB1cGRhdGVzXG4gICAgdGhpcy5tb2RlbC5wYXVzZSgpO1xuXG4gICAgLy8gYWRkIHdpZGdldHMgZm9yIGVhY2ggZmlsdGVyIHRvIHRoZSBwYWdlXG4gICAgdGhpcy5tb2RlbC5maWx0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGZpbHRlcikge1xuICAgICAgYWRkV2lkZ2V0Rm9yRmlsdGVyKHRoaXMsIGZpbHRlciwgZmFsc2UpO1xuXG4gICAgICBpZiAoIWZpbHRlci5kYXRhIHx8IGZpbHRlci5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB3aWRnZXROZWVkc0RhdGEgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sIHRoaXMpO1xuXG4gICAgLy8gZG9uZSwgdW5wYXVzZSB0aGUgZGF0YXNldFxuICAgIHRoaXMubW9kZWwucGxheSgpO1xuXG4gICAgaWYgKHdpZGdldE5lZWRzRGF0YSkge1xuICAgICAgYXBwLm1lLmRhdGF2aWV3LmdldERhdGEoKTtcbiAgICB9XG5cbiAgICAvLyBkbyBhIGxhc3QgcGFzcyB0byByZW5kZXIgZGF0YVxuICAgIHVwZGF0ZUNoYXJ0cyh0aGlzKTtcbiAgfSxcbiAgaW5pdGlhbGl6ZUNoYXJ0czogZnVuY3Rpb24gKCkge1xuICAgIGluaXRpYWxpemVDaGFydHModGhpcyk7XG4gIH0sXG4gIGRlaW5pdGlhbGl6ZUNoYXJ0czogZnVuY3Rpb24gKCkge1xuICAgIGRlaW5pdGlhbGl6ZUNoYXJ0cyh0aGlzKTtcbiAgfSxcbiAgdXBkYXRlQ2hhcnRzOiBmdW5jdGlvbiAoKSB7XG4gICAgdXBkYXRlQ2hhcnRzKHRoaXMpO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUlBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBTUE7QUFmQTtBQURBO0FBbUJBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFMQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBckJBO0FBdUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBakJBO0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBekJBO0FBekJBO0FBc0RBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNVBBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///22e9\n")},2413:function(module,exports,__webpack_require__){eval("/**\n * @classdesc pie chart class\n * @class PieChart\n * @augments BaseChart\n */\nvar BaseChart = __webpack_require__(/*! ./base-chart */ \"6339\");\n\nmodule.exports = BaseChart.extend({\n  initialize: function initialize() {\n    this.slots.reset([{\n      description: 'Group by',\n      type: 'partition',\n      rank: 1,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Pie size',\n      type: 'aggregate',\n      rank: 1,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }]);\n  },\n  chartjsConfig: function chartjsConfig() {\n    return {\n      type: 'pie',\n      data: {\n        datasets: [],\n        labels: []\n      },\n      options: {\n        title: {\n          display: true,\n          position: 'top'\n        },\n        tooltips: {}\n      }\n    };\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQxMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL21vZGVscy9waWVjaGFydC5qcz9mMzE5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGNsYXNzZGVzYyBwaWUgY2hhcnQgY2xhc3NcbiAqIEBjbGFzcyBQaWVDaGFydFxuICogQGF1Z21lbnRzIEJhc2VDaGFydFxuICovXG5cbnZhciBCYXNlQ2hhcnQgPSByZXF1aXJlKCcuL2Jhc2UtY2hhcnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBCYXNlQ2hhcnQuZXh0ZW5kKHtcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2xvdHMucmVzZXQoW1xuICAgICAge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0dyb3VwIGJ5JyxcbiAgICAgICAgdHlwZTogJ3BhcnRpdGlvbicsXG4gICAgICAgIHJhbms6IDEsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBzdXBwb3J0ZWRGYWNldHM6IFsnY2F0ZWdvcmlhbCcsICdkYXRldGltZScsICdkdXJhdGlvbicsICdjb250aW51b3VzJywgJ3RleHQnXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdQaWUgc2l6ZScsXG4gICAgICAgIHR5cGU6ICdhZ2dyZWdhdGUnLFxuICAgICAgICByYW5rOiAxLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHN1cHBvcnRlZEZhY2V0czogWydjb250aW51b3VzJywgJ2R1cmF0aW9uJ11cbiAgICAgIH1cbiAgICBdKTtcbiAgfSxcbiAgY2hhcnRqc0NvbmZpZzogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAncGllJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZGF0YXNldHM6IFtdLFxuICAgICAgICBsYWJlbHM6IFtdXG4gICAgICB9LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgcG9zaXRpb246ICd0b3AnXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFMQTtBQU5BO0FBZUE7QUFuQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2413\n")},"26ef":function(module,exports,__webpack_require__){eval("/**\n * Base Widget\n *\n * Base class to hold widget interaction. Extend and override properties for each chart.\n * @class BaseWidget\n */\nvar AmpersandView = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nmodule.exports = AmpersandView.extend({\n  props: {\n    /**\n     * Boolean indicating if a chart has been added to the DOM\n     */\n    isInitialized: {\n      type: 'boolean',\n      required: true,\n      default: false\n    }\n  },\n\n  /**\n   * Initialize the chart and add it to the DOM\n   * Override for your specific widget.\n   */\n  initChart: function initChart() {\n    console.error('Can not call virtual method');\n  },\n\n  /**\n   * Update the widget\n   * Override for your specific widget.\n   */\n  update: function update() {\n    console.error('Can not call virtual method');\n  },\n\n  /**\n   * Remove the widget from the DOM and free any associated data\n   * Override for your specific widget.\n   */\n  deinitChart: function deinitChart() {\n    console.error('Can not call virtual method');\n  },\n  renderContent: function renderContent() {}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjZlZi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL3ZpZXdzL2Jhc2Utd2lkZ2V0LmpzPzc2OGQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYXNlIFdpZGdldFxuICpcbiAqIEJhc2UgY2xhc3MgdG8gaG9sZCB3aWRnZXQgaW50ZXJhY3Rpb24uIEV4dGVuZCBhbmQgb3ZlcnJpZGUgcHJvcGVydGllcyBmb3IgZWFjaCBjaGFydC5cbiAqIEBjbGFzcyBCYXNlV2lkZ2V0XG4gKi9cbnZhciBBbXBlcnNhbmRWaWV3ID0gcmVxdWlyZSgnYW1wZXJzYW5kLXZpZXcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBBbXBlcnNhbmRWaWV3LmV4dGVuZCh7XG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICogQm9vbGVhbiBpbmRpY2F0aW5nIGlmIGEgY2hhcnQgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIERPTVxuICAgICAqL1xuICAgIGlzSW5pdGlhbGl6ZWQ6IHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGNoYXJ0IGFuZCBhZGQgaXQgdG8gdGhlIERPTVxuICAgKiBPdmVycmlkZSBmb3IgeW91ciBzcGVjaWZpYyB3aWRnZXQuXG4gICAqL1xuICBpbml0Q2hhcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zb2xlLmVycm9yKCdDYW4gbm90IGNhbGwgdmlydHVhbCBtZXRob2QnKTtcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB3aWRnZXRcbiAgICogT3ZlcnJpZGUgZm9yIHlvdXIgc3BlY2lmaWMgd2lkZ2V0LlxuICAgKi9cbiAgdXBkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS5lcnJvcignQ2FuIG5vdCBjYWxsIHZpcnR1YWwgbWV0aG9kJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgd2lkZ2V0IGZyb20gdGhlIERPTSBhbmQgZnJlZSBhbnkgYXNzb2NpYXRlZCBkYXRhXG4gICAqIE92ZXJyaWRlIGZvciB5b3VyIHNwZWNpZmljIHdpZGdldC5cbiAgICovXG4gIGRlaW5pdENoYXJ0OiBmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS5lcnJvcignQ2FuIG5vdCBjYWxsIHZpcnR1YWwgbWV0aG9kJyk7XG4gIH0sXG5cbiAgcmVuZGVyQ29udGVudDogZnVuY3Rpb24gKCkge1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFKQTtBQUNBO0FBVUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBcENBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///26ef\n")},2960:function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar TimeZonesSelect = __webpack_require__(/*! ./time-zones-select */ \"f3d5\");\n\nvar DurationUnitsSelect = __webpack_require__(/*! ./duration-units-select */ \"4916\");\n\nmodule.exports = View.extend({\n  template: templates.configureFacet.facetTransformDuration,\n  bindings: {\n    'model.transformedReference': {\n      type: 'value',\n      hook: 'transform-duration-transformedreference-input'\n    }\n  },\n  events: {\n    'change [data-hook~=transform-duration-transformedreference-input]': function changeDataHookTransformDurationTransformedreferenceInput() {\n      this.model.transformedReference = this.queryByHook('transform-duration-transformedreference-input').value;\n    }\n  },\n  subviews: {\n    durationUnits: {\n      hook: 'duration-units',\n      prepareView: function prepareView(el) {\n        return new DurationUnitsSelect({\n          el: el,\n          field: 'units',\n          model: this.model\n        });\n      }\n    },\n    transformedDurationUnits: {\n      hook: 'transformed-duration-units',\n      prepareView: function prepareView(el) {\n        return new DurationUnitsSelect({\n          el: el,\n          field: 'transformedUnits',\n          model: this.model\n        });\n      }\n    },\n    timeZones: {\n      hook: 'transformed-duration-zone',\n      prepareView: function prepareView(el) {\n        return new TimeZonesSelect({\n          el: el,\n          field: 'transformedZone',\n          model: this.model\n        });\n      }\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk2MC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZmFjZXQvZmFjZXQtdHJhbnNmb3JtLWR1cmF0aW9uLmpzPzQyMGYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uLy4uL3RlbXBsYXRlcycpO1xudmFyIFRpbWVab25lc1NlbGVjdCA9IHJlcXVpcmUoJy4vdGltZS16b25lcy1zZWxlY3QnKTtcbnZhciBEdXJhdGlvblVuaXRzU2VsZWN0ID0gcmVxdWlyZSgnLi9kdXJhdGlvbi11bml0cy1zZWxlY3QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMuY29uZmlndXJlRmFjZXQuZmFjZXRUcmFuc2Zvcm1EdXJhdGlvbixcbiAgYmluZGluZ3M6IHtcbiAgICAnbW9kZWwudHJhbnNmb3JtZWRSZWZlcmVuY2UnOiB7XG4gICAgICB0eXBlOiAndmFsdWUnLFxuICAgICAgaG9vazogJ3RyYW5zZm9ybS1kdXJhdGlvbi10cmFuc2Zvcm1lZHJlZmVyZW5jZS1pbnB1dCdcbiAgICB9XG4gIH0sXG4gIGV2ZW50czoge1xuICAgICdjaGFuZ2UgW2RhdGEtaG9va349dHJhbnNmb3JtLWR1cmF0aW9uLXRyYW5zZm9ybWVkcmVmZXJlbmNlLWlucHV0XSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwudHJhbnNmb3JtZWRSZWZlcmVuY2UgPSB0aGlzLnF1ZXJ5QnlIb29rKCd0cmFuc2Zvcm0tZHVyYXRpb24tdHJhbnNmb3JtZWRyZWZlcmVuY2UtaW5wdXQnKS52YWx1ZTtcbiAgICB9XG4gIH0sXG4gIHN1YnZpZXdzOiB7XG4gICAgZHVyYXRpb25Vbml0czoge1xuICAgICAgaG9vazogJ2R1cmF0aW9uLXVuaXRzJyxcbiAgICAgIHByZXBhcmVWaWV3OiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEdXJhdGlvblVuaXRzU2VsZWN0KHtcbiAgICAgICAgICBlbDogZWwsXG4gICAgICAgICAgZmllbGQ6ICd1bml0cycsXG4gICAgICAgICAgbW9kZWw6IHRoaXMubW9kZWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0cmFuc2Zvcm1lZER1cmF0aW9uVW5pdHM6IHtcbiAgICAgIGhvb2s6ICd0cmFuc2Zvcm1lZC1kdXJhdGlvbi11bml0cycsXG4gICAgICBwcmVwYXJlVmlldzogZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHJldHVybiBuZXcgRHVyYXRpb25Vbml0c1NlbGVjdCh7XG4gICAgICAgICAgZWw6IGVsLFxuICAgICAgICAgIGZpZWxkOiAndHJhbnNmb3JtZWRVbml0cycsXG4gICAgICAgICAgbW9kZWw6IHRoaXMubW9kZWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0aW1lWm9uZXM6IHtcbiAgICAgIGhvb2s6ICd0cmFuc2Zvcm1lZC1kdXJhdGlvbi16b25lJyxcbiAgICAgIHByZXBhcmVWaWV3OiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUaW1lWm9uZXNTZWxlY3Qoe1xuICAgICAgICAgIGVsOiBlbCxcbiAgICAgICAgICBmaWVsZDogJ3RyYW5zZm9ybWVkWm9uZScsXG4gICAgICAgICAgbW9kZWw6IHRoaXMubW9kZWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBREE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQVJBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBUkE7QUFyQkE7QUFiQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2960\n")},"2b41":function(module,exports,__webpack_require__){eval("var colors = __webpack_require__(/*! ../../colors */ \"eb63\");\n/**\n * Get the index in chartjs datastructures from the group value\n * with proper fallbacks\n * @params {Partition} partition (optional)\n * @params {Object} value value\n * @returns {number|null} index\n */\n\n\nfunction partitionValueToIndex(partition, value) {\n  var group;\n\n  if (!partition) {\n    // no(sub)partitioning return first element\n    return 0;\n  } // with (sub)partitioning\n\n\n  group = partition.groups.get(value, 'value');\n\n  if (group) {\n    // string in partition\n    return group.groupIndex;\n  } else {\n    // string not in partition\n    return -1;\n  }\n}\n/**\n * prepare data structure, reuse as much of the previous data arrays as possible\n * to prevent massive animations on every update\n * @params{ChartJSData} chartData ChartJS data structure\n * @params{Partition} partitionA X-axis\n * @params{Partition} partitionB Y-axis\n * @params{Object} options Options: perItem, multiDimensional, doubleDatasets\n */\n\n\nfunction resizeChartjsData(chartData, partitionA, partitionB, options) {\n  var x = partitionA ? partitionA.groups.length : 1;\n  var y = partitionB ? partitionB.groups.length : 1;\n  options = options || {};\n  var perItem = options.perItem || false;\n  var multiDimensional = options.multiDimensional || false;\n  var doubleDatasets = options.doubleDatasets || false;\n  var totalDatasets = doubleDatasets ? 2 * y : y;\n  var i;\n  var j;\n  var cut; // match the number of labels needed\n\n  cut = chartData.labels.length - x;\n\n  if (cut > 0) {\n    chartData.labels.splice(0, cut);\n  } // labels on the primary axis\n\n\n  for (i = 0; i < x; i++) {\n    chartData.labels[i] = partitionA.groups.models[i].label;\n  } // match the number of datasets needed\n\n\n  cut = chartData.datasets.length - totalDatasets;\n\n  if (cut > 0) {\n    // BUGFIX: weird behavious for linechart selections and plots\n    // when we remove datasets from the front, everything shifts one place to the 'left',\n    // which will cause issues for linecharts where we use an extra dataset at the back for selections.\n    //\n    // Solution: remove from the back\n    chartData.datasets.splice(chartData.datasets.length, cut);\n  }\n\n  for (j = 0; j < totalDatasets; j++) {\n    // update or assign data structure:\n    chartData.datasets[j] = chartData.datasets[j] || {\n      data: [],\n      error: []\n    }; // match the existing number of groups to the updated number of groups\n\n    cut = chartData.datasets[j].data.length - x;\n\n    if (cut > 0) {\n      chartData.datasets[j].data.splice(0, cut);\n    }\n\n    cut = chartData.datasets[j].error.length - x;\n\n    if (cut > 0) {\n      chartData.datasets[j].error.splice(0, cut);\n    } // clear out old data / pre-allocate new data\n\n\n    for (i = 0; i < x; i++) {\n      if (multiDimensional) {\n        chartData.datasets[j].data[i] = {};\n        chartData.datasets[j].error[i] = {};\n      } else {\n        chartData.datasets[j].data[i] = 0;\n        chartData.datasets[j].error[i] = 0;\n      }\n    }\n  } // set metadata for main datasets\n\n\n  for (j = 0; j < y; j++) {\n    // set dataset color\n    if (perItem) {\n      chartData.datasets[j].backgroundColor = [];\n      chartData.datasets[j].borderColor = [];\n\n      for (i = 0; i < x; i++) {\n        chartData.datasets[j].backgroundColor[i] = colors.getColor(0).css(); // chartData.datasets[j].borderColor[i] = colors.getColor(0).css();\n      }\n    } else {\n      chartData.datasets[j].backgroundColor = colors.getColor(j).css();\n      chartData.datasets[j].borderColor = colors.getColor(j).css();\n      chartData.datasets[j].fill = false;\n    } // add a legend entry\n\n\n    if (partitionB) {\n      chartData.datasets[j].label = partitionB.groups.models[j].label;\n    }\n  }\n\n  if (!doubleDatasets) {\n    return;\n  } // set metadata for doubled datasets\n\n\n  for (j = y; j < 2 * y; j++) {\n    chartData.datasets[j].borderDash = [15, 5]; // striped lines\n\n    chartData.datasets[j].borderWidth = 1; // thin lines\n\n    chartData.datasets[j].pointRadius = 0; // no points\n\n    chartData.datasets[j].fill = false; // set dataset color\n\n    if (perItem) {\n      chartData.datasets[j].backgroundColor = [];\n      chartData.datasets[j].borderColor = [];\n\n      for (i = 0; i < x; i++) {\n        chartData.datasets[j].backgroundColor[i] = colors.getColor(0).css(); // chartData.datasets[j].borderColor[i] = colors.getColor(0).css();\n      }\n    } else {\n      chartData.datasets[j].backgroundColor = colors.getColor(j - y).css();\n      chartData.datasets[j].borderColor = colors.getColor(j - y).css();\n    } // add a legend entry\n\n\n    if (partitionB) {\n      chartData.datasets[j].label = partitionB.groups.models[j - y].label;\n    }\n  }\n}\n\nmodule.exports = {\n  partitionValueToIndex: partitionValueToIndex,\n  resizeChartjsData: resizeChartjsData\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmI0MS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL3ZpZXdzL3V0aWwuanM/YmRjOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29sb3JzID0gcmVxdWlyZSgnLi4vLi4vY29sb3JzJyk7XG5cbi8qKlxuICogR2V0IHRoZSBpbmRleCBpbiBjaGFydGpzIGRhdGFzdHJ1Y3R1cmVzIGZyb20gdGhlIGdyb3VwIHZhbHVlXG4gKiB3aXRoIHByb3BlciBmYWxsYmFja3NcbiAqIEBwYXJhbXMge1BhcnRpdGlvbn0gcGFydGl0aW9uIChvcHRpb25hbClcbiAqIEBwYXJhbXMge09iamVjdH0gdmFsdWUgdmFsdWVcbiAqIEByZXR1cm5zIHtudW1iZXJ8bnVsbH0gaW5kZXhcbiAqL1xuZnVuY3Rpb24gcGFydGl0aW9uVmFsdWVUb0luZGV4IChwYXJ0aXRpb24sIHZhbHVlKSB7XG4gIHZhciBncm91cDtcblxuICBpZiAoIXBhcnRpdGlvbikge1xuICAgIC8vIG5vKHN1YilwYXJ0aXRpb25pbmcgcmV0dXJuIGZpcnN0IGVsZW1lbnRcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8vIHdpdGggKHN1YilwYXJ0aXRpb25pbmdcbiAgZ3JvdXAgPSBwYXJ0aXRpb24uZ3JvdXBzLmdldCh2YWx1ZSwgJ3ZhbHVlJyk7XG5cbiAgaWYgKGdyb3VwKSB7XG4gICAgLy8gc3RyaW5nIGluIHBhcnRpdGlvblxuICAgIHJldHVybiBncm91cC5ncm91cEluZGV4O1xuICB9IGVsc2Uge1xuICAgIC8vIHN0cmluZyBub3QgaW4gcGFydGl0aW9uXG4gICAgcmV0dXJuIC0xO1xuICB9XG59XG5cbi8qKlxuICogcHJlcGFyZSBkYXRhIHN0cnVjdHVyZSwgcmV1c2UgYXMgbXVjaCBvZiB0aGUgcHJldmlvdXMgZGF0YSBhcnJheXMgYXMgcG9zc2libGVcbiAqIHRvIHByZXZlbnQgbWFzc2l2ZSBhbmltYXRpb25zIG9uIGV2ZXJ5IHVwZGF0ZVxuICogQHBhcmFtc3tDaGFydEpTRGF0YX0gY2hhcnREYXRhIENoYXJ0SlMgZGF0YSBzdHJ1Y3R1cmVcbiAqIEBwYXJhbXN7UGFydGl0aW9ufSBwYXJ0aXRpb25BIFgtYXhpc1xuICogQHBhcmFtc3tQYXJ0aXRpb259IHBhcnRpdGlvbkIgWS1heGlzXG4gKiBAcGFyYW1ze09iamVjdH0gb3B0aW9ucyBPcHRpb25zOiBwZXJJdGVtLCBtdWx0aURpbWVuc2lvbmFsLCBkb3VibGVEYXRhc2V0c1xuICovXG5mdW5jdGlvbiByZXNpemVDaGFydGpzRGF0YSAoY2hhcnREYXRhLCBwYXJ0aXRpb25BLCBwYXJ0aXRpb25CLCBvcHRpb25zKSB7XG4gIHZhciB4ID0gcGFydGl0aW9uQSA/IHBhcnRpdGlvbkEuZ3JvdXBzLmxlbmd0aCA6IDE7XG4gIHZhciB5ID0gcGFydGl0aW9uQiA/IHBhcnRpdGlvbkIuZ3JvdXBzLmxlbmd0aCA6IDE7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHZhciBwZXJJdGVtID0gb3B0aW9ucy5wZXJJdGVtIHx8IGZhbHNlO1xuICB2YXIgbXVsdGlEaW1lbnNpb25hbCA9IG9wdGlvbnMubXVsdGlEaW1lbnNpb25hbCB8fCBmYWxzZTtcbiAgdmFyIGRvdWJsZURhdGFzZXRzID0gb3B0aW9ucy5kb3VibGVEYXRhc2V0cyB8fCBmYWxzZTtcblxuICB2YXIgdG90YWxEYXRhc2V0cyA9IGRvdWJsZURhdGFzZXRzID8gMiAqIHkgOiB5O1xuXG4gIHZhciBpO1xuICB2YXIgajtcbiAgdmFyIGN1dDtcblxuICAvLyBtYXRjaCB0aGUgbnVtYmVyIG9mIGxhYmVscyBuZWVkZWRcbiAgY3V0ID0gY2hhcnREYXRhLmxhYmVscy5sZW5ndGggLSB4O1xuICBpZiAoY3V0ID4gMCkge1xuICAgIGNoYXJ0RGF0YS5sYWJlbHMuc3BsaWNlKDAsIGN1dCk7XG4gIH1cblxuICAvLyBsYWJlbHMgb24gdGhlIHByaW1hcnkgYXhpc1xuICBmb3IgKGkgPSAwOyBpIDwgeDsgaSsrKSB7XG4gICAgY2hhcnREYXRhLmxhYmVsc1tpXSA9IHBhcnRpdGlvbkEuZ3JvdXBzLm1vZGVsc1tpXS5sYWJlbDtcbiAgfVxuXG4gIC8vIG1hdGNoIHRoZSBudW1iZXIgb2YgZGF0YXNldHMgbmVlZGVkXG4gIGN1dCA9IGNoYXJ0RGF0YS5kYXRhc2V0cy5sZW5ndGggLSB0b3RhbERhdGFzZXRzO1xuICBpZiAoY3V0ID4gMCkge1xuICAgIC8vIEJVR0ZJWDogd2VpcmQgYmVoYXZpb3VzIGZvciBsaW5lY2hhcnQgc2VsZWN0aW9ucyBhbmQgcGxvdHNcbiAgICAvLyB3aGVuIHdlIHJlbW92ZSBkYXRhc2V0cyBmcm9tIHRoZSBmcm9udCwgZXZlcnl0aGluZyBzaGlmdHMgb25lIHBsYWNlIHRvIHRoZSAnbGVmdCcsXG4gICAgLy8gd2hpY2ggd2lsbCBjYXVzZSBpc3N1ZXMgZm9yIGxpbmVjaGFydHMgd2hlcmUgd2UgdXNlIGFuIGV4dHJhIGRhdGFzZXQgYXQgdGhlIGJhY2sgZm9yIHNlbGVjdGlvbnMuXG4gICAgLy9cbiAgICAvLyBTb2x1dGlvbjogcmVtb3ZlIGZyb20gdGhlIGJhY2tcbiAgICBjaGFydERhdGEuZGF0YXNldHMuc3BsaWNlKGNoYXJ0RGF0YS5kYXRhc2V0cy5sZW5ndGgsIGN1dCk7XG4gIH1cblxuICBmb3IgKGogPSAwOyBqIDwgdG90YWxEYXRhc2V0czsgaisrKSB7XG4gICAgLy8gdXBkYXRlIG9yIGFzc2lnbiBkYXRhIHN0cnVjdHVyZTpcbiAgICBjaGFydERhdGEuZGF0YXNldHNbal0gPSBjaGFydERhdGEuZGF0YXNldHNbal0gfHwge2RhdGE6IFtdLCBlcnJvcjogW119O1xuXG4gICAgLy8gbWF0Y2ggdGhlIGV4aXN0aW5nIG51bWJlciBvZiBncm91cHMgdG8gdGhlIHVwZGF0ZWQgbnVtYmVyIG9mIGdyb3Vwc1xuICAgIGN1dCA9IGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5kYXRhLmxlbmd0aCAtIHg7XG4gICAgaWYgKGN1dCA+IDApIHtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5kYXRhLnNwbGljZSgwLCBjdXQpO1xuICAgIH1cbiAgICBjdXQgPSBjaGFydERhdGEuZGF0YXNldHNbal0uZXJyb3IubGVuZ3RoIC0geDtcbiAgICBpZiAoY3V0ID4gMCkge1xuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzW2pdLmVycm9yLnNwbGljZSgwLCBjdXQpO1xuICAgIH1cblxuICAgIC8vIGNsZWFyIG91dCBvbGQgZGF0YSAvIHByZS1hbGxvY2F0ZSBuZXcgZGF0YVxuICAgIGZvciAoaSA9IDA7IGkgPCB4OyBpKyspIHtcbiAgICAgIGlmIChtdWx0aURpbWVuc2lvbmFsKSB7XG4gICAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5kYXRhW2ldID0ge307XG4gICAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5lcnJvcltpXSA9IHt9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhcnREYXRhLmRhdGFzZXRzW2pdLmRhdGFbaV0gPSAwO1xuICAgICAgICBjaGFydERhdGEuZGF0YXNldHNbal0uZXJyb3JbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHNldCBtZXRhZGF0YSBmb3IgbWFpbiBkYXRhc2V0c1xuICBmb3IgKGogPSAwOyBqIDwgeTsgaisrKSB7XG4gICAgLy8gc2V0IGRhdGFzZXQgY29sb3JcbiAgICBpZiAocGVySXRlbSkge1xuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzW2pdLmJhY2tncm91bmRDb2xvciA9IFtdO1xuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzW2pdLmJvcmRlckNvbG9yID0gW107XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgeDsgaSsrKSB7XG4gICAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5iYWNrZ3JvdW5kQ29sb3JbaV0gPSBjb2xvcnMuZ2V0Q29sb3IoMCkuY3NzKCk7XG4gICAgICAgIC8vIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5ib3JkZXJDb2xvcltpXSA9IGNvbG9ycy5nZXRDb2xvcigwKS5jc3MoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzW2pdLmJhY2tncm91bmRDb2xvciA9IGNvbG9ycy5nZXRDb2xvcihqKS5jc3MoKTtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5ib3JkZXJDb2xvciA9IGNvbG9ycy5nZXRDb2xvcihqKS5jc3MoKTtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5maWxsID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gYWRkIGEgbGVnZW5kIGVudHJ5XG4gICAgaWYgKHBhcnRpdGlvbkIpIHtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5sYWJlbCA9IHBhcnRpdGlvbkIuZ3JvdXBzLm1vZGVsc1tqXS5sYWJlbDtcbiAgICB9XG4gIH1cblxuICBpZiAoIWRvdWJsZURhdGFzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gc2V0IG1ldGFkYXRhIGZvciBkb3VibGVkIGRhdGFzZXRzXG4gIGZvciAoaiA9IHk7IGogPCAyICogeTsgaisrKSB7XG4gICAgY2hhcnREYXRhLmRhdGFzZXRzW2pdLmJvcmRlckRhc2ggPSBbMTUsIDVdOyAvLyBzdHJpcGVkIGxpbmVzXG4gICAgY2hhcnREYXRhLmRhdGFzZXRzW2pdLmJvcmRlcldpZHRoID0gMTsgLy8gdGhpbiBsaW5lc1xuICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5wb2ludFJhZGl1cyA9IDA7IC8vIG5vIHBvaW50c1xuICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5maWxsID0gZmFsc2U7XG5cbiAgICAvLyBzZXQgZGF0YXNldCBjb2xvclxuICAgIGlmIChwZXJJdGVtKSB7XG4gICAgICBjaGFydERhdGEuZGF0YXNldHNbal0uYmFja2dyb3VuZENvbG9yID0gW107XG4gICAgICBjaGFydERhdGEuZGF0YXNldHNbal0uYm9yZGVyQ29sb3IgPSBbXTtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB4OyBpKyspIHtcbiAgICAgICAgY2hhcnREYXRhLmRhdGFzZXRzW2pdLmJhY2tncm91bmRDb2xvcltpXSA9IGNvbG9ycy5nZXRDb2xvcigwKS5jc3MoKTtcbiAgICAgICAgLy8gY2hhcnREYXRhLmRhdGFzZXRzW2pdLmJvcmRlckNvbG9yW2ldID0gY29sb3JzLmdldENvbG9yKDApLmNzcygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjaGFydERhdGEuZGF0YXNldHNbal0uYmFja2dyb3VuZENvbG9yID0gY29sb3JzLmdldENvbG9yKGogLSB5KS5jc3MoKTtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5ib3JkZXJDb2xvciA9IGNvbG9ycy5nZXRDb2xvcihqIC0geSkuY3NzKCk7XG4gICAgfVxuXG4gICAgLy8gYWRkIGEgbGVnZW5kIGVudHJ5XG4gICAgaWYgKHBhcnRpdGlvbkIpIHtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5sYWJlbCA9IHBhcnRpdGlvbkIuZ3JvdXBzLm1vZGVsc1tqIC0geV0ubGFiZWw7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwYXJ0aXRpb25WYWx1ZVRvSW5kZXg6IHBhcnRpdGlvblZhbHVlVG9JbmRleCxcbiAgcmVzaXplQ2hhcnRqc0RhdGE6IHJlc2l6ZUNoYXJ0anNEYXRhXG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUVBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2b41\n")},3:function(module,exports){eval("/* (ignored) *///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy91dGlsIChpZ25vcmVkKT9iYmZmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIChpZ25vcmVkKSAqLyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n")},"37f6":function(module,exports,__webpack_require__){eval("/**\n * @classdesc Scatter Chart class\n * @class ScatterChart\n * @augments BaseChart\n */\nvar BaseChart = __webpack_require__(/*! ./base-chart */ \"6339\");\n\nmodule.exports = BaseChart.extend({\n  initialize: function initialize() {\n    this.slots.reset([{\n      description: 'X axis',\n      type: 'partition',\n      rank: 1,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Y axis',\n      type: 'partition',\n      rank: 2,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Z axis',\n      type: 'partition',\n      rank: 3,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Color by',\n      type: 'aggregate',\n      rank: 1,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }]);\n  },\n  scatterConfig: function scatterConfig() {\n    return {\n      width: '600px',\n      height: '600px',\n      style: 'dot-color',\n      tooltip: true,\n      tooltipStyle: {\n        dot: {\n          border: 'none',\n          borderRadius: '0px'\n        }\n      },\n      showPerspective: true,\n      showGrid: true,\n      showShadow: false,\n      showLegend: false,\n      keepAspectRatio: false,\n      verticalRatio: 1\n    };\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzdmNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL21vZGVscy9zY2F0dGVyLmpzPzc5NjQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY2xhc3NkZXNjIFNjYXR0ZXIgQ2hhcnQgY2xhc3NcbiAqIEBjbGFzcyBTY2F0dGVyQ2hhcnRcbiAqIEBhdWdtZW50cyBCYXNlQ2hhcnRcbiAqL1xuXG52YXIgQmFzZUNoYXJ0ID0gcmVxdWlyZSgnLi9iYXNlLWNoYXJ0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gQmFzZUNoYXJ0LmV4dGVuZCh7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNsb3RzLnJlc2V0KFtcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdYIGF4aXMnLFxuICAgICAgICB0eXBlOiAncGFydGl0aW9uJyxcbiAgICAgICAgcmFuazogMSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIHN1cHBvcnRlZEZhY2V0czogWydjYXRlZ29yaWFsJywgJ2RhdGV0aW1lJywgJ2R1cmF0aW9uJywgJ2NvbnRpbnVvdXMnLCAndGV4dCddXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1kgYXhpcycsXG4gICAgICAgIHR5cGU6ICdwYXJ0aXRpb24nLFxuICAgICAgICByYW5rOiAyLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NhdGVnb3JpYWwnLCAnZGF0ZXRpbWUnLCAnZHVyYXRpb24nLCAnY29udGludW91cycsICd0ZXh0J11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnWiBheGlzJyxcbiAgICAgICAgdHlwZTogJ3BhcnRpdGlvbicsXG4gICAgICAgIHJhbms6IDMsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBzdXBwb3J0ZWRGYWNldHM6IFsnY2F0ZWdvcmlhbCcsICdkYXRldGltZScsICdkdXJhdGlvbicsICdjb250aW51b3VzJywgJ3RleHQnXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdDb2xvciBieScsXG4gICAgICAgIHR5cGU6ICdhZ2dyZWdhdGUnLFxuICAgICAgICByYW5rOiAxLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHN1cHBvcnRlZEZhY2V0czogWydjb250aW51b3VzJywgJ2R1cmF0aW9uJ11cbiAgICAgIH1cbiAgICBdKTtcbiAgfSxcbiAgc2NhdHRlckNvbmZpZzogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogJzYwMHB4JyxcbiAgICAgIGhlaWdodDogJzYwMHB4JyxcbiAgICAgIHN0eWxlOiAnZG90LWNvbG9yJyxcbiAgICAgIHRvb2x0aXA6IHRydWUsXG4gICAgICB0b29sdGlwU3R5bGU6IHtcbiAgICAgICAgZG90OiB7XG4gICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMHB4J1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2hvd1BlcnNwZWN0aXZlOiB0cnVlLFxuICAgICAgc2hvd0dyaWQ6IHRydWUsXG4gICAgICBzaG93U2hhZG93OiBmYWxzZSxcbiAgICAgIHNob3dMZWdlbmQ6IGZhbHNlLFxuICAgICAga2VlcEFzcGVjdFJhdGlvOiBmYWxzZSxcbiAgICAgIHZlcnRpY2FsUmF0aW86IDFcbiAgICB9O1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQURBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaEJBO0FBa0JBO0FBcERBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///37f6\n")},"3f86":function(module,exports,__webpack_require__){eval("// This app view is responsible for rendering all content that goes into\n// <html>. It's initted right away and renders itself on DOM ready.\nvar app = __webpack_require__(/*! ampersand-app */ \"fcbc\"); // var setFavicon = require('favicon-setter');\n\n\nvar View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar ViewSwitcher = __webpack_require__(/*! ampersand-view-switcher */ \"253d\");\n\nvar localLinks = __webpack_require__(/*! local-links */ \"a238\");\n\nvar domify = __webpack_require__(/*! domify */ \"2d1c\");\n\nvar templates = __webpack_require__(/*! ../templates */ \"4324\");\n\nfunction checkConnection(model) {\n  if (model.sessionType === 'server' && !model.isConnected) {\n    app.message({\n      text: 'Trying to connect to database ' + window.location.hostname,\n      type: 'error'\n    });\n  } // retry\n\n\n  window.setTimeout(function () {\n    checkConnection(model);\n  }, 4000);\n}\n/**\n * [exports description]\n * @module pages/main\n */\n\n\nmodule.exports = View.extend({\n  /**\n   * [template description]\n   * @type {any}\n   */\n  template: templates.main,\n  autoRender: true,\n  initialize: function initialize() {\n    this.pageName = 'main'; // this marks the correct nav item selected\n\n    this.listenTo(app, 'page', this.handleNewPage); // periodically check database connection\n\n    checkConnection(this.model);\n    this.model.on('change:isConnected', function () {\n      if (this.model.isConnected) {\n        app.message({\n          text: 'Connected to  ' + window.location.hostname,\n          type: 'ok'\n        });\n      }\n    }, this);\n  },\n  events: {\n    'click a[href]': 'handleLinkClick',\n    'click [data-hook~=help-button]': 'startHelp',\n    'click [data-hook~=menu-button]': 'handleMenu',\n    'click .mdl-menu__item': 'menuAction'\n  },\n  menuAction: function menuAction(item) {\n    var id = item.target.id;\n    console.log('pressed', id, 'button');\n    app.navigate(id); // switch(id) {\n    //   case 'home':\n    //     console.log('pressed home button');\n    //     app.navigate(id);\n    //     break;\n    //   case 'share':\n    //     console.log('pressed share button');\n    //     app.navigate(id);\n    //     break;\n    //   default:\n    //     // code block\n    // }\n  },\n  startHelp: function startHelp() {\n    app.startHelp();\n  },\n  render: function render() {\n    // some additional stuff we want to add to the document head\n    document.head.appendChild(domify(templates.head()));\n    document.title = 'Spot'; // main renderer\n\n    this.renderWithTemplate(this); // init and configure our page switcher\n\n    this.pageSwitcher = new ViewSwitcher(this.queryByHook('page-container'), {\n      show: function show(newView, oldView) {\n        document.scrollTop = 0; // store an additional reference, just because\n\n        app.currentPage = newView;\n      }\n    }); // setting a favicon for fun (note, it's dynamic)\n    // setFavicon('/favicon.ico');\n\n    return this;\n  },\n  handleNewPage: function handleNewPage(view) {\n    // tell the view switcher to render the new page\n    this.pageSwitcher.set(view); // update responsive layout (Material Design)\n\n    window.componentHandler.upgradeDom(); // second rendering pass; absolute sizes in pixels is now available for\n    // widgets that need them (ie. the SVG elements)\n\n    if (view.renderContent) {\n      view.renderContent();\n    }\n  },\n  // Handles all `<a>` clicks in the app not handled\n  // by another view. This lets us determine if this is\n  // a click that should be handled internally by the app.\n  handleLinkClick: function handleLinkClick(e) {\n    // This module determines whether a click event is\n    // a local click (making sure the for modifier keys, etc)\n    // and dealing with browser quirks to determine if this\n    // event was from clicking an internal link. That we should\n    // treat like local navigation.\n    var localPath = localLinks.pathname(e); // fixes navigation problem on Windows platform\n\n    if (navigator.platform === 'Win32') {\n      localPath = localPath.replace('/C:', '');\n    }\n\n    if (localPath) {\n      e.preventDefault();\n      app.navigate(localPath);\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiM2Y4Ni5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9tYWluLmpzP2VhNjciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBhcHAgdmlldyBpcyByZXNwb25zaWJsZSBmb3IgcmVuZGVyaW5nIGFsbCBjb250ZW50IHRoYXQgZ29lcyBpbnRvXG4vLyA8aHRtbD4uIEl0J3MgaW5pdHRlZCByaWdodCBhd2F5IGFuZCByZW5kZXJzIGl0c2VsZiBvbiBET00gcmVhZHkuXG52YXIgYXBwID0gcmVxdWlyZSgnYW1wZXJzYW5kLWFwcCcpO1xuLy8gdmFyIHNldEZhdmljb24gPSByZXF1aXJlKCdmYXZpY29uLXNldHRlcicpO1xudmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIFZpZXdTd2l0Y2hlciA9IHJlcXVpcmUoJ2FtcGVyc2FuZC12aWV3LXN3aXRjaGVyJyk7XG52YXIgbG9jYWxMaW5rcyA9IHJlcXVpcmUoJ2xvY2FsLWxpbmtzJyk7XG52YXIgZG9taWZ5ID0gcmVxdWlyZSgnZG9taWZ5Jyk7XG52YXIgdGVtcGxhdGVzID0gcmVxdWlyZSgnLi4vdGVtcGxhdGVzJyk7XG5cbmZ1bmN0aW9uIGNoZWNrQ29ubmVjdGlvbiAobW9kZWwpIHtcbiAgaWYgKG1vZGVsLnNlc3Npb25UeXBlID09PSAnc2VydmVyJyAmJiAhbW9kZWwuaXNDb25uZWN0ZWQpIHtcbiAgICBhcHAubWVzc2FnZSh7XG4gICAgICB0ZXh0OiAnVHJ5aW5nIHRvIGNvbm5lY3QgdG8gZGF0YWJhc2UgJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxcbiAgICAgIHR5cGU6ICdlcnJvcidcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHJldHJ5XG4gIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBjaGVja0Nvbm5lY3Rpb24obW9kZWwpO1xuICB9LCA0MDAwKTtcbn1cblxuLyoqXG4gKiBbZXhwb3J0cyBkZXNjcmlwdGlvbl1cbiAqIEBtb2R1bGUgcGFnZXMvbWFpblxuICovXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXcuZXh0ZW5kKHtcbiAgLyoqXG4gICAqIFt0ZW1wbGF0ZSBkZXNjcmlwdGlvbl1cbiAgICogQHR5cGUge2FueX1cbiAgICovXG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMubWFpbixcbiAgYXV0b1JlbmRlcjogdHJ1ZSxcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucGFnZU5hbWUgPSAnbWFpbic7XG4gICAgLy8gdGhpcyBtYXJrcyB0aGUgY29ycmVjdCBuYXYgaXRlbSBzZWxlY3RlZFxuICAgIHRoaXMubGlzdGVuVG8oYXBwLCAncGFnZScsIHRoaXMuaGFuZGxlTmV3UGFnZSk7XG5cbiAgICAvLyBwZXJpb2RpY2FsbHkgY2hlY2sgZGF0YWJhc2UgY29ubmVjdGlvblxuICAgIGNoZWNrQ29ubmVjdGlvbih0aGlzLm1vZGVsKTtcblxuICAgIHRoaXMubW9kZWwub24oJ2NoYW5nZTppc0Nvbm5lY3RlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICh0aGlzLm1vZGVsLmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGFwcC5tZXNzYWdlKHtcbiAgICAgICAgICB0ZXh0OiAnQ29ubmVjdGVkIHRvICAnICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLFxuICAgICAgICAgIHR5cGU6ICdvaydcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSwgdGhpcyk7XG4gIH0sXG4gIGV2ZW50czoge1xuICAgICdjbGljayBhW2hyZWZdJzogJ2hhbmRsZUxpbmtDbGljaycsXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWhlbHAtYnV0dG9uXSc6ICdzdGFydEhlbHAnLFxuICAgICdjbGljayBbZGF0YS1ob29rfj1tZW51LWJ1dHRvbl0nOiAnaGFuZGxlTWVudScsXG4gICAgJ2NsaWNrIC5tZGwtbWVudV9faXRlbSc6ICdtZW51QWN0aW9uJ1xuICB9LFxuICBtZW51QWN0aW9uOiBmdW5jdGlvbihpdGVtKXtcbiAgICB2YXIgaWQgPSBpdGVtLnRhcmdldC5pZDtcbiAgICBjb25zb2xlLmxvZygncHJlc3NlZCcsIGlkLCAnYnV0dG9uJyk7XG4gICAgYXBwLm5hdmlnYXRlKGlkKTtcbiAgICAvLyBzd2l0Y2goaWQpIHtcbiAgICAvLyAgIGNhc2UgJ2hvbWUnOlxuICAgIC8vICAgICBjb25zb2xlLmxvZygncHJlc3NlZCBob21lIGJ1dHRvbicpO1xuICAgIC8vICAgICBhcHAubmF2aWdhdGUoaWQpO1xuICAgIC8vICAgICBicmVhaztcbiAgICAvLyAgIGNhc2UgJ3NoYXJlJzpcbiAgICAvLyAgICAgY29uc29sZS5sb2coJ3ByZXNzZWQgc2hhcmUgYnV0dG9uJyk7XG4gICAgLy8gICAgIGFwcC5uYXZpZ2F0ZShpZCk7XG4gICAgLy8gICAgIGJyZWFrO1xuICAgIC8vICAgZGVmYXVsdDpcbiAgICAvLyAgICAgLy8gY29kZSBibG9ja1xuICAgIC8vIH1cbiAgfSwgIFxuICBzdGFydEhlbHA6IGZ1bmN0aW9uICgpIHtcbiAgICBhcHAuc3RhcnRIZWxwKCk7XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIC8vIHNvbWUgYWRkaXRpb25hbCBzdHVmZiB3ZSB3YW50IHRvIGFkZCB0byB0aGUgZG9jdW1lbnQgaGVhZFxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZG9taWZ5KHRlbXBsYXRlcy5oZWFkKCkpKTtcbiAgICBkb2N1bWVudC50aXRsZSA9ICdTcG90JztcblxuICAgIC8vIG1haW4gcmVuZGVyZXJcbiAgICB0aGlzLnJlbmRlcldpdGhUZW1wbGF0ZSh0aGlzKTtcblxuICAgIC8vIGluaXQgYW5kIGNvbmZpZ3VyZSBvdXIgcGFnZSBzd2l0Y2hlclxuICAgIHRoaXMucGFnZVN3aXRjaGVyID0gbmV3IFZpZXdTd2l0Y2hlcih0aGlzLnF1ZXJ5QnlIb29rKCdwYWdlLWNvbnRhaW5lcicpLCB7XG4gICAgICBzaG93OiBmdW5jdGlvbiAobmV3Vmlldywgb2xkVmlldykge1xuICAgICAgICBkb2N1bWVudC5zY3JvbGxUb3AgPSAwO1xuXG4gICAgICAgIC8vIHN0b3JlIGFuIGFkZGl0aW9uYWwgcmVmZXJlbmNlLCBqdXN0IGJlY2F1c2VcbiAgICAgICAgYXBwLmN1cnJlbnRQYWdlID0gbmV3VmlldztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHNldHRpbmcgYSBmYXZpY29uIGZvciBmdW4gKG5vdGUsIGl0J3MgZHluYW1pYylcbiAgICAvLyBzZXRGYXZpY29uKCcvZmF2aWNvbi5pY28nKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBoYW5kbGVOZXdQYWdlOiBmdW5jdGlvbiAodmlldykge1xuICAgIC8vIHRlbGwgdGhlIHZpZXcgc3dpdGNoZXIgdG8gcmVuZGVyIHRoZSBuZXcgcGFnZVxuICAgIHRoaXMucGFnZVN3aXRjaGVyLnNldCh2aWV3KTtcblxuICAgIC8vIHVwZGF0ZSByZXNwb25zaXZlIGxheW91dCAoTWF0ZXJpYWwgRGVzaWduKVxuICAgIHdpbmRvdy5jb21wb25lbnRIYW5kbGVyLnVwZ3JhZGVEb20oKTtcblxuICAgIC8vIHNlY29uZCByZW5kZXJpbmcgcGFzczsgYWJzb2x1dGUgc2l6ZXMgaW4gcGl4ZWxzIGlzIG5vdyBhdmFpbGFibGUgZm9yXG4gICAgLy8gd2lkZ2V0cyB0aGF0IG5lZWQgdGhlbSAoaWUuIHRoZSBTVkcgZWxlbWVudHMpXG4gICAgaWYgKHZpZXcucmVuZGVyQ29udGVudCkge1xuICAgICAgdmlldy5yZW5kZXJDb250ZW50KCk7XG4gICAgfVxuICB9LFxuICAvLyBIYW5kbGVzIGFsbCBgPGE+YCBjbGlja3MgaW4gdGhlIGFwcCBub3QgaGFuZGxlZFxuICAvLyBieSBhbm90aGVyIHZpZXcuIFRoaXMgbGV0cyB1cyBkZXRlcm1pbmUgaWYgdGhpcyBpc1xuICAvLyBhIGNsaWNrIHRoYXQgc2hvdWxkIGJlIGhhbmRsZWQgaW50ZXJuYWxseSBieSB0aGUgYXBwLlxuICBoYW5kbGVMaW5rQ2xpY2s6IGZ1bmN0aW9uIChlKSB7XG4gICAgLy8gVGhpcyBtb2R1bGUgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgY2xpY2sgZXZlbnQgaXNcbiAgICAvLyBhIGxvY2FsIGNsaWNrIChtYWtpbmcgc3VyZSB0aGUgZm9yIG1vZGlmaWVyIGtleXMsIGV0YylcbiAgICAvLyBhbmQgZGVhbGluZyB3aXRoIGJyb3dzZXIgcXVpcmtzIHRvIGRldGVybWluZSBpZiB0aGlzXG4gICAgLy8gZXZlbnQgd2FzIGZyb20gY2xpY2tpbmcgYW4gaW50ZXJuYWwgbGluay4gVGhhdCB3ZSBzaG91bGRcbiAgICAvLyB0cmVhdCBsaWtlIGxvY2FsIG5hdmlnYXRpb24uXG4gICAgdmFyIGxvY2FsUGF0aCA9IGxvY2FsTGlua3MucGF0aG5hbWUoZSk7XG5cbiAgICAvLyBmaXhlcyBuYXZpZ2F0aW9uIHByb2JsZW0gb24gV2luZG93cyBwbGF0Zm9ybVxuICAgIGlmIChuYXZpZ2F0b3IucGxhdGZvcm0gPT09ICdXaW4zMicpIHtcbiAgICAgIGxvY2FsUGF0aCA9IGxvY2FsUGF0aC5yZXBsYWNlKCcvQzonLCAnJyk7XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsUGF0aCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgYXBwLm5hdmlnYXRlKGxvY2FsUGF0aCk7XG4gICAgfVxuICB9XG5cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7QUFJQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFOQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3f86\n")},4324:function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\n;\n\n(function (root, factory) {\n  if (true) {\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\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 {}\n})(this, function () {\n  function pug_classes_object(val) {\n    var classString = \'\',\n        padding = \'\';\n\n    for (var key in val) {\n      if (key && val[key] && pug_has_own_property.call(val, key)) {\n        var classString = classString + padding + key;\n        var padding = \' \';\n      }\n    }\n\n    return classString;\n  }\n\n  function pug_classes_array(val, escaping) {\n    var classString = \'\',\n        className,\n        padding = \'\',\n        escapeEnabled = Array.isArray(escaping);\n\n    for (var i = 0; i < val.length; i++) {\n      var className = pug_classes(val[i]);\n      if (!className) continue;\n      escapeEnabled && escaping[i] && (className = pug_escape(className));\n      var classString = classString + padding + className;\n      var padding = \' \';\n    }\n\n    return classString;\n  }\n\n  function pug_merge(e, r) {\n    if (1 === arguments.length) {\n      for (var t = e[0], g = 1; g < e.length; g++) {\n        t = pug_merge(t, e[g]);\n      }\n\n      return t;\n    }\n\n    for (var n in r) {\n      if ("class" === n) {\n        var a = e[n] || [];\n        e[n] = (Array.isArray(a) ? a : [a]).concat(r[n] || []);\n      } else if ("style" === n) {\n        var a = pug_style(e[n]);\n        a = a && ";" !== a[a.length - 1] ? a + ";" : a;\n        var l = pug_style(r[n]);\n        l = l && ";" !== l[l.length - 1] ? l + ";" : l, e[n] = a + l;\n      } else e[n] = r[n];\n    }\n\n    return e;\n  }\n\n  function pug_classes(s, r) {\n    return Array.isArray(s) ? pug_classes_array(s, r) : s && "object" == _typeof(s) ? pug_classes_object(s) : s || "";\n  }\n\n  function pug_style(r) {\n    if (!r) return "";\n\n    if ("object" == _typeof(r)) {\n      var t = "";\n\n      for (var e in r) {\n        pug_has_own_property.call(r, e) && (t = t + e + ":" + r[e] + ";");\n      }\n\n      return t;\n    }\n\n    return r + "";\n  }\n\n  function pug_attr(t, e, n, f) {\n    return e !== !1 && null != e && (e || "class" !== t && "style" !== t) ? e === !0 ? " " + (f ? t : t + \'="\' + t + \'"\') : ("function" == typeof e.toJSON && (e = e.toJSON()), "string" == typeof e || (e = JSON.stringify(e), n || -1 === e.indexOf(\'"\')) ? (n && (e = pug_escape(e)), " " + t + \'="\' + e + \'"\') : " " + t + "=\'" + e.replace(/\'/g, "&#39;") + "\'") : "";\n  }\n\n  function pug_attrs(t, r) {\n    var a = "";\n\n    for (var s in t) {\n      if (pug_has_own_property.call(t, s)) {\n        var u = t[s];\n\n        if ("class" === s) {\n          u = pug_classes(u), a = pug_attr(s, u, !1, r) + a;\n          continue;\n        }\n\n        "style" === s && (u = pug_style(u)), a += pug_attr(s, u, !1, r);\n      }\n    }\n\n    return a;\n  }\n\n  function pug_escape(e) {\n    var a = "" + e,\n        t = /["&<>]/.exec(a);\n    if (!t) return e;\n    var r,\n        c,\n        n,\n        s = "";\n\n    for (r = t.index, c = 0; r < a.length; r++) {\n      switch (a.charCodeAt(r)) {\n        case 34:\n          n = "&quot;";\n          break;\n\n        case 38:\n          n = "&amp;";\n          break;\n\n        case 60:\n          n = "&lt;";\n          break;\n\n        case 62:\n          n = "&gt;";\n          break;\n\n        default:\n          continue;\n      }\n\n      c !== r && (s += a.substring(c, r)), c = r + 1, s += n;\n    }\n\n    return c !== r ? s + a.substring(c, r) : s;\n  }\n\n  function pug_rethrow(n, e, r, t) {\n    if (!(n instanceof Error)) throw n;\n    if (!("undefined" == typeof window && e || t)) throw n.message += " on line " + r, n;\n\n    try {\n      t = t || __webpack_require__(/*! fs */ "9412").readFileSync(e, "utf8");\n    } catch (i) {\n      pug_rethrow(n, null, r);\n    }\n\n    var a = 3,\n        o = t.split("\\n"),\n        h = Math.max(r - a, 0),\n        s = Math.min(o.length, r + a),\n        a = o.slice(h, s).map(function (n, e) {\n      var t = e + h + 1;\n      return (t == r ? "  > " : "    ") + t + "| " + n;\n    }).join("\\n");\n    throw n.path = e, n.message = (e || "Pug") + ":" + r + "\\n" + a + "\\n\\n" + n.message, n;\n  }\n\n  var pug = {\n    merge: function pug_merge(e, r) {\n      if (1 === arguments.length) {\n        for (var t = e[0], g = 1; g < e.length; g++) {\n          t = pug_merge(t, e[g]);\n        }\n\n        return t;\n      }\n\n      for (var n in r) {\n        if ("class" === n) {\n          var a = e[n] || [];\n          e[n] = (Array.isArray(a) ? a : [a]).concat(r[n] || []);\n        } else if ("style" === n) {\n          var a = pug_style(e[n]);\n          a = a && ";" !== a[a.length - 1] ? a + ";" : a;\n          var l = pug_style(r[n]);\n          l = l && ";" !== l[l.length - 1] ? l + ";" : l, e[n] = a + l;\n        } else e[n] = r[n];\n      }\n\n      return e;\n    },\n    classes: function pug_classes(s, r) {\n      return Array.isArray(s) ? pug_classes_array(s, r) : s && "object" == _typeof(s) ? pug_classes_object(s) : s || "";\n    },\n    style: function pug_style(r) {\n      if (!r) return "";\n\n      if ("object" == _typeof(r)) {\n        var t = "";\n\n        for (var e in r) {\n          pug_has_own_property.call(r, e) && (t = t + e + ":" + r[e] + ";");\n        }\n\n        return t;\n      }\n\n      return r + "";\n    },\n    attr: function pug_attr(t, e, n, f) {\n      return e !== !1 && null != e && (e || "class" !== t && "style" !== t) ? e === !0 ? " " + (f ? t : t + \'="\' + t + \'"\') : ("function" == typeof e.toJSON && (e = e.toJSON()), "string" == typeof e || (e = JSON.stringify(e), n || -1 === e.indexOf(\'"\')) ? (n && (e = pug_escape(e)), " " + t + \'="\' + e + \'"\') : " " + t + "=\'" + e.replace(/\'/g, "&#39;") + "\'") : "";\n    },\n    attrs: function pug_attrs(t, r) {\n      var a = "";\n\n      for (var s in t) {\n        if (pug_has_own_property.call(t, s)) {\n          var u = t[s];\n\n          if ("class" === s) {\n            u = pug_classes(u), a = pug_attr(s, u, !1, r) + a;\n            continue;\n          }\n\n          "style" === s && (u = pug_style(u)), a += pug_attr(s, u, !1, r);\n        }\n      }\n\n      return a;\n    },\n    escape: function pug_escape(e) {\n      var a = "" + e,\n          t = /["&<>]/.exec(a);\n      if (!t) return e;\n      var r,\n          c,\n          n,\n          s = "";\n\n      for (r = t.index, c = 0; r < a.length; r++) {\n        switch (a.charCodeAt(r)) {\n          case 34:\n            n = "&quot;";\n            break;\n\n          case 38:\n            n = "&amp;";\n            break;\n\n          case 60:\n            n = "&lt;";\n            break;\n\n          case 62:\n            n = "&gt;";\n            break;\n\n          default:\n            continue;\n        }\n\n        c !== r && (s += a.substring(c, r)), c = r + 1, s += n;\n      }\n\n      return c !== r ? s + a.substring(c, r) : s;\n    },\n    rethrow: function pug_rethrow(n, e, r, t) {\n      if (!(n instanceof Error)) throw n;\n      if (!("undefined" == typeof window && e || t)) throw n.message += " on line " + r, n;\n\n      try {\n        t = t || __webpack_require__(/*! fs */ "9412").readFileSync(e, "utf8");\n      } catch (i) {\n        pug_rethrow(n, null, r);\n      }\n\n      var a = 3,\n          o = t.split("\\n"),\n          h = Math.max(r - a, 0),\n          s = Math.min(o.length, r + a),\n          a = o.slice(h, s).map(function (n, e) {\n        var t = e + h + 1;\n        return (t == r ? "  > " : "    ") + t + "| " + n;\n      }).join("\\n");\n      throw n.path = e, n.message = (e || "Pug") + ":" + r + "\\n" + a + "\\n\\n" + n.message, n;\n    }\n  };\n  var puglatizer = {};\n  puglatizer["analyze"] = {};\n\n  puglatizer["analyze"]["facetbarItem"] = function template(a) {\n    var t,\n        e,\n        c = "";\n\n    try {\n      e = 1, c += \'<span class="mdl-chip variableChip" data-hook="facet-bar-item" id="">\', e = 2, c += \'<span class="mdl-chip__text" data-hook="facet-bar-item-button"></span></span>\';\n    } catch (p) {\n      pug.rethrow(p, t, e);\n    }\n\n    return c;\n  };\n\n  puglatizer["analyze"]["page"] = function template(t) {\n    var a,\n        o,\n        l = "";\n\n    try {\n      o = 1, l += \'<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">\', o = 2, l += \'<main class="mdl-layout__content" style="background-color: white;">\', o = 3, l += \'<header class="demo-header mdl-layout__header spot-color-top-bar mdl-color-text--grey-600">\', o = 5, l += \'<div class="mdl-layout__header-row">\', o = 6, l += \'<span class="mdl-layout-title unselectable">\', o = 6, l += "Analyze</span>", o = 8, l += \'<div class="mdl-layout-spacer"></div>\', o = 10, l += \'<span class="unselectable" data-hook="data-string"></span>\', o = 12, l += \'<div class="mdl-layout-spacer"></div>\', o = 14, l += \'<span data-position="bottom" data-step="0" data-hint=""></span>\', o = 16, l += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" id="saveSessionButton" data-hintPosition="bottom" data-position="bottom" data-hint="This buttons saves the current session.">\', o = 17, l += \'<i class="material-icons">\', o = 17, l += "save</i></button>", o = 18, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="saveSessionButton">\', o = 19, l += "Save the session</div>", o = 21, l += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" id="resetFiltersButton" data-position="bottom" data-step="1" data-hint="This button clears all existing filters.">\', o = 22, l += \'<i class="material-icons">\', o = 22, l += "clear_all</i></button>", o = 23, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="resetFiltersButton">\', o = 24, l += "Clear all filters of all plots</div>", o = 26, l += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" id="viewAll" data-position="bottom" data-step="2" data-hint="This button closes all configuration windows">\', o = 27, l += \'<i class="material-icons">\', o = 27, l += "crop_original</i></button>", o = 28, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="viewAll">\', o = 29, l += "Close all configuration windows</div>", o = 31, l += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" id="fullscreenButton" data-position="bottom" data-step="3" data-hint="This button hides facet and chart bars.">\', o = 32, l += \'<i class="material-icons">\', o = 32, l += "fullscreen</i></button>", o = 33, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="fullscreenButton">\', o = 34, l += "Show or hide chart and facet bars</div></div>", o = 36, l += \'<div class="chartBar spot-color-top-bar mdl-color-text--grey-600" data-hook="chart-bar" data-position="bottom" data-step="4" data-hint="These are the available chart types. If you want to add a chart, just &lt;b&gt;click&lt;/b&gt; on its icon and it will be created! Simple, right? ">\', o = 37, l += \'<span class="chartBarText">\', o = 37, l += "Click on a chart icon to start a new plot</span>", o = 39, l += \'<div class="mdl-cell mdl-cell--12-col horizontalbarchartIcon widgetIcon" data-hook="horizontalbarchart" id="horizontalbarchart" data-position="bottom" data-step="5" data-hint="This adds a horizontal bar chart(histogram). This is good for categorical facets."></div>\', o = 40, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="horizontalbarchart">\', o = 41, l += "Click to add a horizontal bar chart</div>", o = 43, l += \'<div class="mdl-cell mdl-cell--12-col barchartIcon widgetIcon" data-hook="barchart" id="barchart" data-position="bottom" data-step="6" data-hint="This adds a vertical bar chart."></div>\', o = 44, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="barchart">\', o = 45, l += "Click to add a bar chart</div>", o = 47, l += \'<div class="mdl-cell mdl-cell--12-col linechartIcon widgetIcon" data-hook="linechart" id="linechart" data-position="bottom" data-step="7" data-hint="This adds a line chart."></div>\', o = 48, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="linechart">\', o = 49, l += "Click to add a line chart</div>", o = 51, l += \'<div class="mdl-cell mdl-cell--12-col piechartIcon widgetIcon" data-hook="piechart" id="piechart" data-position="bottom" data-step="8" data-hint="This adds a pie chart."></div>\', o = 52, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="piechart">\', o = 53, l += "Click to add a pie chart</div>", o = 55, l += \'<div class="mdl-cell mdl-cell--12-col bubbleplotIcon widgetIcon" data-hook="bubbleplot" id="bubbleplot" data-position="bottom" data-step="9" data-hint="This adds a buble chart."></div>\', o = 56, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="bubbleplot">\', o = 57, l += "Click to add a bubbleplot chart</div>", o = 59, l += \'<div class="mdl-cell mdl-cell--12-col scatterchartIcon widgetIcon" data-hook="scatterchart" id="scatterchart" data-position="bottom" data-step="10" data-hint="This adds a 3D scatter chart."></div>\', o = 60, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="scatterchart">\', o = 61, l += "Click to add a 3d scatter chart</div>", o = 63, l += \'<div class="mdl-cell mdl-cell--12-col radarchartIcon widgetIcon" data-hook="radarchart" id="radarchart" data-position="bottom" data-step="11" data-hint="This adds a radar chart."></div>\', o = 64, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="radarchart">\', o = 65, l += "Click to add a radar chart</div>", o = 67, l += \'<div class="mdl-cell mdl-cell--12-col networkchartIcon widgetIcon" data-hook="networkchart" id="networkchart" data-position="bottom" data-step="12" data-hint="This adds a network chart."></div>\', o = 68, l += \'<div class="mdl-tooltip mdl-tooltip--large" for="networkchart">\', o = 69, l += "Click to add a network chart</div></div>", o = 71, l += \'<div class="facetBar spot-color-top-bar" data-hook="facet-bar" id="facet-bar" data-position="bottom" data-step="13" data-hint="This is where you will have your variables(facets). Just &lt;b&gt;drag and drop&lt;/b&gt; these facets to field of the charts to visualize.">\', o = 72, l += \'<span class="facetBarText">\', o = 72, l += "Drop variable on a chart, or click to edit</span>", o = 73, l += \'<div class="facetBarItems" data-hook="facet-bar-items" id="facetBar"></div></div>\', o = 74, l += \'<div class="mdl-tooltip mdl-tooltip--large" id="facet-bar-tooltip" for="facet-bar">\', o = 75, l += "Drop variable on a chart, or click to edit</div></header>", o = 77, l += \'<div class="widgetDropZone" id="widgets" data-hook="widgets"></div></main></div>\';\n    } catch (i) {\n      pug.rethrow(i, a, o);\n    }\n\n    return l;\n  };\n\n  puglatizer["analyze"]["slot"] = function template(t) {\n    var o,\n        a,\n        d = "";\n\n    try {\n      a = 1, d += \'<div class="slot mdl-shadow--2dp" data-hook="slot">\', a = 2, d += \'<div class="slotText clickTarget">\', a = 3, d += \'<b data-hook="description"></b>\', a = 4, d += "<br/>", a = 5, d += \'<i data-hook="required"></i></div>\', a = 6, d += \'<div class="slotChip clickTarget" data-hook="drop-zone">\', a = 7, d += \'<span data-hook="chip-text"></span></div>\', a = 8, d += \'<div class="slotButton" data-hook="button-div">\', a = 9, d += \'<button class="mdl-button mdl-js-button mdl-button--icon" data-hook="delete">\', a = 10, d += \'<i class="material-icons">\', a = 10, d += "delete</i></button></div></div>";\n    } catch (i) {\n      pug.rethrow(i, o, a);\n    }\n\n    return d;\n  };\n\n  puglatizer["analyze"]["widgetFrame"] = function template(t) {\n    var o,\n        l,\n        i = "";\n\n    try {\n      l = 1, i += \'<div class="widgetFrame mdl-color--white mdl-shadow--2dp">\', l = 3, i += \'<div class="configView" data-hook="config-view">\', l = 4, i += \'<div class="widgetDragBar">\', l = 5, i += \'<button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect" data-hook="close" id="chartDeleteButton2">\', l = 6, i += \'<i class="material-icons">\', l = 6, i += "delete</i></button>", l = 7, i += \'<div class="mdl-tooltip mdl-tooltip--large" for="chartDeleteButton2">\', l = 8, i += "Delete this chart</div>", l = 9, i += \'<span class="widgetHeader" data-hook="widgetHeader"></span>\', l = 10, i += \'<div class="mdl-layout-spacer"></div>\', l = 11, i += \'<button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect" data-hook="edit" style="float: right" id="chartDoneButton">\', l = 12, i += \'<i class="material-icons">\', l = 12, i += "done</i></button>", l = 13, i += \'<div class="mdl-tooltip mdl-tooltip--large" for="chartDoneButton">\', l = 14, i += "Close configuration view</div></div>", l = 16, i += \'<div class="slots" data-hook="slots"></div></div>\', l = 18, i += \'<div class="widgetView" data-hook="widget"></div>\', l = 20, i += \'<div class="plotMenu" data-hook="plot-menu" style="width: 100%;">\', l = 21, i += \'<div class="widgetDragBar">\', l = 22, i += \'<button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect" data-hook="close" id="chartDeleteButton1">\', l = 23, i += \'<i class="material-icons">\', l = 23, i += "delete</i></button>", l = 24, i += \'<div class="mdl-tooltip mdl-tooltip--large" for="chartDeleteButton1">\', l = 25, i += "Delete this chart</div>", l = 26, i += \'<button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect" data-hook="zoom-out" id="chartUndoButton">\', l = 27, i += \'<i class="material-icons">\', l = 27, i += "undo</i></button>", l = 28, i += \'<div class="mdl-tooltip mdl-tooltip--large" for="chartUndoButton">\', l = 29, i += "Undo selection</div>", l = 30, i += \'<button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect" data-hook="zoom-in" id="chartZoomButton">\', l = 31, i += \'<i class="material-icons">\', l = 31, i += "zoom_in</i></button>", l = 32, i += \'<div class="mdl-tooltip mdl-tooltip--large" for="chartZoomButton">\', l = 33, i += "Zoom into selected region</div>", l = 34, i += \'<button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect" data-hook="save" id="chartSave">\', l = 35, i += \'<i class="material-icons">\', l = 35, i += "save</i></button>", l = 36, i += \'<div class="mdl-tooltip mdl-tooltip--large" for="chartSave">\', l = 37, i += "Save this chart</div>", l = 38, i += \'<div class="mdl-layout-spacer"></div>\', l = 39, i += \'<button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect" data-hook="edit" style="float: right;" id="chartConfButton">\', l = 40, i += \'<i class="material-icons">\', l = 40, i += "create</i></button>", l = 41, i += \'<div class="mdl-tooltip mdl-tooltip--large" for="chartConfButton">\', l = 42, i += "Open configuration view</div></div></div></div>";\n    } catch (a) {\n      pug.rethrow(a, o, l);\n    }\n\n    return i;\n  };\n\n  puglatizer["configureDataset"] = {};\n\n  puglatizer["configureDataset"]["facet"] = function template(t) {\n    var l,\n        a,\n        d = "";\n\n    try {\n      a = 1, d += \'<div class="mdl-card mdl-shadow--2dp" data-hook="fullitem" style="min-height: inherit">\', a = 2, d += \'<div class="mdl-card__title">\', a = 3, d += \'<h2 class="mdl-card__title-text" data-hook="name"></h2></div>\', a = 5, d += \'<div class="mdl-card__supporting-text" data-hook="description"></div>\', a = 7, d += \'<div class="mdl-card__actions mdl-card--border" data-hook="actions">\', a = 8, d += \'<button class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect unselectable" data-hook="removeFacet">\', a = 9, d += "Delete</button>", a = 10, d += \'<button class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect unselectable" data-hook="duplicateFacet">\', a = 11, d += "Copy </button>", a = 12, d += \'<button class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect unselectable" data-hook="configureFacet" style="float: right">\', a = 13, d += \'<i class="material-icons">\', a = 13, d += "settings</i></button></div>", a = 15, d += \'<div class="mdl-card__menu">\', a = 16, d += "<span>", a = 17, d += \'<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" data-hook="cblabel" for="">\', a = 18, d += \'<input class="mdl-switch__input" data-hook="cb" type="checkbox" id=""/></label>\', a = 19, d += \'<span class="mdl-switch__label"></span></span></div></div>\';\n    } catch (e) {\n      pug.rethrow(e, l, a);\n    }\n\n    return d;\n  };\n\n  puglatizer["configureDataset"]["page"] = function template(t) {\n    var l,\n        a,\n        d = "";\n\n    try {\n      a = 1, d += \'<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">\', a = 2, d += \'<main class="mdl-layout__content" style="background-color: white;">\', a = 3, d += \'<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">\', a = 4, d += \'<header class="demo-header mdl-layout__header mdl-color--grey-100 mdl-color-text--grey-600">\', a = 5, d += \'<div class="mdl-layout__header-row">\', a = 6, d += \'<span class="mdl-layout-title">\', a = 6, d += "Configure dataset</span>", a = 8, d += \'<div class="mdl-layout-spacer"></div>\', a = 10, d += \'<span class="unselectable" data-hook="data-string">\', a = 11, d += "Select and configure facets</span>", a = 13, d += \'<div class="mdl-layout-spacer"></div>\', a = 15, d += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" data-hook="enable-all-button" id="eab">\', a = 16, d += \'<i class="material-icons">\', a = 16, d += "check_box</i></button>", a = 17, d += \'<div class="mdl-tooltip mdl-tooltip--large" for="eab">\', a = 18, d += "Enable all facets</div>", a = 20, d += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" data-hook="disable-all-button" id="dab">\', a = 21, d += \'<i class="material-icons">\', a = 21, d += "check_box_outline_blank</i></button>", a = 22, d += \'<div class="mdl-tooltip mdl-tooltip--large" for="dab">\', a = 23, d += "Disable all facets</div>", a = 25, d += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" data-hook="add-button" id="tt2">\', a = 26, d += \'<i class="material-icons">\', a = 26, d += "add</i></button>", a = 27, d += \'<div class="mdl-tooltip mdl-tooltip--large" for="tt2">\', a = 28, d += "Add a new facet</div>", a = 30, d += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" data-hook="rescan-button" id="tt1">\', a = 31, d += \'<i class="material-icons">\', a = 31, d += "autorenew</i></button>", a = 32, d += \'<div class="mdl-tooltip mdl-tooltip--large" for="tt1">\', a = 33, d += "Analyze data and autoconfigure facets</div>", a = 35, d += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" data-hook="search-button" id="tt3">\', a = 36, d += \'<i class="material-icons">\', a = 36, d += "search</i></button>", a = 37, d += \'<div class="mdl-tooltip mdl-tooltip--large" for="tt3">\', a = 38, d += "Show or hide search bar</div></div>", a = 40, d += \'<div class="mdl-layout__header-row" data-hook="search-bar">\', a = 41, d += \'<div class="mdl-layout-spacer"></div>\', a = 42, d += \'<span class="mdl-color--white mdl-color-text--primary searchBar">\', a = 44, d += \'<span class="mdl-textfield searchBar">\', a = 45, d += \'<input class="mdl-textfield__input searchBar" data-hook="facet-selector" type="text" id="tt5"/>\', a = 46, d += \'<div class="mdl-tooltip mdl-tooltip--large" for="tt5">\', a = 47, d += "Search facet name and description</div></span>", a = 49, d += "<span>", a = 50, d += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" data-hook="clear-button" id="tt4">\', a = 51, d += \'<i class="material-icons">\', a = 51, d += "close</i></button>", a = 52, d += \'<div class="mdl-tooltip mdl-tooltip--large" for="tt4">\', a = 53, d += "Clear search</div></span></span>", a = 54, d += \'<div class="mdl-layout-spacer"></div></div></header>\', a = 56, d += \'<div data-hook="widgets">\', a = 58, d += \'<div class="mdl-grid">\', a = 59, d += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--4-col">\', a = 60, d += \'<input class="mdl-textfield__input" type="text" id="name"/>\', a = 61, d += \'<label class="mdl-textfield__label" for="name">\', a = 62, d += "Dataset name</label></div>", a = 64, d += \'<div class="mdl-textfield mdl-js-textfield mdl-cell mdl-cell mdl-cell--7-col">\', a = 65, d += \'<textarea class="mdl-textfield__input" type="text" rows="3" id="description"></textarea>\', a = 66, d += \'<label class="mdl-textfield__label" for="description">\', a = 67, d += "Dataset description</label></div></div>", a = 69, d += \'<div class="mdl-grid" data-hook="facet-list"></div></div></div></main></div>\';\n    } catch (e) {\n      pug.rethrow(e, l, a);\n    }\n\n    return d;\n  };\n\n  puglatizer["configureFacet"] = {};\n\n  puglatizer["configureFacet"]["categorialRule"] = function template(t) {\n    var e,\n        o,\n        a = "";\n\n    try {\n      o = 1, a += "<tr>", o = 2, a += "<td>", o = 3, a += \'<input class="mdl-textfield__input" data-hook="category-expression-input" type="text"/></td>\', o = 4, a += "<td>", o = 5, a += \'<input class="mdl-textfield__input" data-hook="category-group-input" type="text"/></td>\', o = 6, a += \'<td data-hook="category-value-count"></td>\', o = 7, a += "<td>", o = 8, a += \'<button class="mdl-button mdl-js-button mdl-js-ripple-effect" data-hook="category-remove">\', o = 9, a += \'<i class="material-icons">\', o = 9, a += "remove</i></button></td></tr>";\n    } catch (d) {\n      pug.rethrow(d, e, o);\n    }\n\n    return a;\n  };\n\n  puglatizer["configureFacet"]["categorialtransform"] = function template(t) {\n    var r,\n        e,\n        a = "";\n\n    try {} catch (c) {\n      pug.rethrow(c, r, e);\n    }\n\n    return a;\n  };\n\n  puglatizer["configureFacet"]["continuousRule"] = function template(t) {\n    var o,\n        e,\n        n = "";\n\n    try {\n      e = 1, n += "<tr>", e = 2, n += "<td>", e = 3, n += \'<input class="mdl-textfield__input" data-hook="continuous-x-input" type="text"/></td>\', e = 4, n += "<td>", e = 5, n += \'<input class="mdl-textfield__input" data-hook="continuous-fx-input" type="text"/></td>\', e = 6, n += "<td>", e = 7, n += \'<button class="mdl-button mdl-js-button mdl-js-ripple-effect" data-hook="continuous-remove">\', e = 8, n += \'<i class="material-icons">\', e = 8, n += "remove</i></button></td></tr>";\n    } catch (u) {\n      pug.rethrow(u, o, e);\n    }\n\n    return n;\n  };\n\n  puglatizer["configureFacet"]["facetDefine"] = function template(l) {\n    var e,\n        d,\n        i = "";\n\n    try {\n      d = 1, i += \'<div class="mdl-grid">\', d = 2, i += \'<div class="mdl-cell mdl-cell--12-col mdl-grid">\', d = 3, i += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetInfoIcon"></div>\', d = 4, i += \'<div class="mdl-cell mdl-cell--1-col"></div>\', d = 5, i += \'<div class="mdl-cell mdl-cell--8-col">\', d = 6, i += \'<div class="mdl-grid">\', d = 8, i += \'<div class="mdl-cell mdl-cell--12-col" id="define-name-div">\', d = 9, i += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label fullwidth">\', d = 10, i += \'<input class="mdl-textfield__input" id="define-name" data-hook="define-name-input" type="text"/>\', d = 14, i += \'<label class="mdl-textfield__label" for="define-name">\', d = 14, i += "Name</label></div></div>", d = 15, i += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="define-name-div">\', d = 16, i += "Set a descriptive name for this facet. The name is used to identify this facet on plots and in menus. </div>", d = 18, i += \'<div class="mdl-cell mdl-cell--12-col" id="define-units-div">\', d = 19, i += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label fullwidth">\', d = 20, i += \'<input class="mdl-textfield__input" id="define-units" data-hook="define-units-input" type="text"/>\', d = 24, i += \'<label class="mdl-textfield__label" for="define-units">\', d = 24, i += "Units</label></div></div>", d = 25, i += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="define-units-div">\', d = 26, i += "Set units for this facet. Units are printed on plots where applicable.</div>", d = 28, i += \'<div class="mdl-cell mdl-cell--12-col" id="define-description-div">\', d = 29, i += \'<div class="mdl-textfield mdl-js-textfield mdl textfield--floating-label fullwidth">\', d = 30, i += \'<textarea class="mdl-textfield__input" id="define-description" data-hook="define-description-input" type="text" rows="5">\', d = 34, i += " </textarea>", d = 35, i += \'<label class="mdl-textfield__label" for="define-description">\', d = 35, i += "Description</label></div></div>", d = 36, i += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="define-description-div">\', d = 37, i += "Give a description of the facet. What do its values mean? How are they calculated?</div></div></div>", d = 39, i += \'<div class="mdl-cell mdl-cell--2-col"></div></div>\', d = 41, i += \'<div class="mdl-cell mdl-cell--12-col mdl-grid">\', d = 42, i += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetTypeIcon"></div>\', d = 43, i += \'<div class="mdl-cell mdl-cell--1-col"></div>\', d = 44, i += \'<div class="mdl-cell mdl-cell--8-col">\', d = 46, i += \'<div class="mdl-grid mdl-cell mdl-cell--12-col">\', d = 48, i += \'<div class="mdl-grid mdl-cell mdl-cell--12-col" id="define-type-div">\', d = 49, i += \'<div class="mdl-cell mdl-cell--3-col">\', d = 50, i += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="define-type-categorial">\', d = 51, i += \'<input class="mdl-radio__button" id="define-type-categorial" data-hook="define-type-categorial" type="radio" name="type" value="categorial"/>\', d = 57, i += \'<span class="mdl-radio__label">\', d = 57, i += "Categorial</span></label></div>", d = 59, i += \'<div class="mdl-cell mdl-cell--3-col">\', d = 60, i += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="define-type-continuous">\', d = 61, i += \'<input class="mdl-radio__button" id="define-type-continuous" data-hook="define-type-continuous" type="radio" name="type" value="continuous"/>\', d = 67, i += \'<span class="mdl-radio__label">\', d = 67, i += "Continuous</span></label></div>", d = 69, i += \'<div class="mdl-cell mdl-cell--3-col">\', d = 70, i += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="define-type-datetime">\', d = 71, i += \'<input class="mdl-radio__button" id="define-type-datetime" data-hook="define-type-datetime" type="radio" name="type" value="datetime"/>\', d = 77, i += \'<span class="mdl-radio__label">\', d = 77, i += "Datetime</span></label></div>", d = 79, i += \'<div class="mdl-cell mdl-cell--3-col">\', d = 80, i += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="define-type-duration">\', d = 81, i += \'<input class="mdl-radio__button" id="define-type-duration" data-hook="define-type-duration" type="radio" name="type" value="duration"/>\', d = 87, i += \'<span class="mdl-radio__label">\', d = 87, i += "Duration</span></label></div>", d = 89, i += \'<div class="mdl-cell mdl-cell--3-col">\', d = 90, i += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="define-type-text">\', d = 91, i += \'<input class="mdl-radio__button" id="define-type-text" data-hook="define-type-text" type="radio" name="type" value="text"/>\', d = 97, i += \'<span class="mdl-radio__label">\', d = 97, i += "Text</span></label></div></div>", d = 99, i += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="define-type-div">\', d = 100, i += "What values does this facet take? Is it a continuous value (length, weight, amount)? Or a label, category (\'important\', \'urgent\', or a day of the week, ...). Or is it a date, time or duration? Or arbitrary text?</div></div></div>", d = 102, i += \'<div class="mdl-cell mdl-cell--2-col"></div></div>\', d = 104, i += \'<div class="mdl-cell mdl-cell--12-col mdl-grid">\', d = 105, i += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetBaseValueIcon"></div>\', d = 106, i += \'<div class="mdl-cell mdl-cell--1-col"></div>\', d = 107, i += \'<div class="mdl-cell mdl-cell--8-col">\', d = 109, i += \'<div class="mdl-grid mdl-cell mdl-cell--12-col">\', d = 111, i += \'<div class="mdl-cell mdl-cell--12-col" id="define-missing-div">\', d = 112, i += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label fullwidth">\', d = 113, i += \'<input class="mdl-textfield__input" id="define-missing-input" data-hook="define-missing-input" type="text"/>\', d = 117, i += \'<label class="mdl-textfield__label" for="define-missing-input">\', d = 117, i += "Missing data indicator</label></div></div>", d = 118, i += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="define-missing-div">\', d = 119, i += "Invalid, undefined, or missing data are dealt with automatically, but sometimes a special value is used to indicate the data is missing. Enter those values here. Example: 999, \'x\', \'missing\'</div>", d = 122, i += \'<div class="mdl-cell mdl-cell--12-col" id="define-accessor-div">\', d = 123, i += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label fullwidth">\', d = 124, i += \'<input class="mdl-textfield__input" id="define-accessor-input" data-hook="define-accessor-input" type="text"/>\', d = 128, i += \'<label class="mdl-textfield__label" for="define-accessor-input">\', d = 128, i += "Property name or index</label></div></div>", d = 129, i += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="define-accessor-div">\', d = 130, i += "How we derive the facet value from a data object? Enter a property name (for JSON or SQL columns), or index (for arrays). Use \'.\' notation to access nested properties.</div>", d = 133, i += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="define-rescan-div">\', d = 134, i += \'<button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" data-hook="define-rescan-button">\', d = 134, i += "Scan dataset</button></div>", d = 137, i += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="define-minimum-div" data-hook="define-minimum-div">\', d = 138, i += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--10-col" id="define-minimum-div">\', d = 139, i += \'<input class="mdl-textfield__input" id="define-minimum" data-hook="define-minimum-input" type="text"/>\', d = 143, i += \'<label class="mdl-textfield__label" for="sample4">\', d = 143, i += "Minimum value</label></div>", d = 145, i += \'<div class="mdl-cell mdl-cell--1-col">\', d = 146, i += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-button--colored" data-hook="button-minval-missing">\', d = 147, i += \'<i class="material-icons">\', d = 147, i += "cancel</i></button></div>", d = 149, i += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="define-minimum-div">\', d = 150, i += "Set minimum value.</div></div>", d = 153, i += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="define-maximum-div" data-hook="define-maximum-div">\', d = 154, i += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--10-col" id="define-maximum-div">\', d = 155, i += \'<input class="mdl-textfield__input" id="define-maximum" data-hook="define-maximum-input" type="text"/>\', d = 159, i += \'<label class="mdl-textfield__label" for="sample4">\', d = 159, i += "Maximum value</label></div>", d = 161, i += \'<div class="mdl-cell mdl-cell--1-col">\', d = 162, i += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-button--colored" data-hook="button-maxval-missing">\', d = 163, i += \'<i class="material-icons">\', d = 163, i += "cancel</i></button></div>", d = 165, i += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="define-maximum-div">\', d = 166, i += "Set maximum value.</div></div></div></div>", d = 168, i += \'<div class="mdl-cell mdl-cell--2-col"></div></div></div>\';\n    } catch (t) {\n      pug.rethrow(t, e, d);\n    }\n\n    return i;\n  };\n\n  puglatizer["configureFacet"]["facetTransformCategorial"] = function template(l) {\n    var t,\n        d,\n        o = "";\n\n    try {\n      d = 1, o += \'<div class="mdl-grid" data-hook="transform-categorial-panel">\', d = 3, o += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetCategorialIcon"></div>\', d = 5, o += \'<div class="mdl-cell mdl-cell--1-col"></div>\', d = 7, o += \'<div class="mdl-cell mdl-cell--8-col">\', d = 8, o += \'<div class="mdl-grid" id="transform-categorial-div">\', d = 10, o += \'<div class="mdl-cell mdl-cell--4-col" data-hook="categorial-addone-button">\', d = 11, o += \'<button class="mdl-button mdl-js-button mdl-js-ripple-effect">\', d = 11, o += "Add a rule</button></div>", d = 13, o += \'<div class="mdl-cell mdl-cell--4-col" data-hook="categorial-removeall-button">\', d = 14, o += \'<button class="mdl-button mdl-js-button mdl-js-ripple-effect">\', d = 14, o += "Remove all rules</button></div>", d = 16, o += \'<div class="mdl-cell mdl-cell--12-col">\', d = 17, o += "<table>", d = 18, o += "<thead>", d = 19, o += "<tr>", d = 20, o += "<th>", d = 20, o += "Text</th>", d = 21, o += "<th>", d = 21, o += "Group</th>", d = 22, o += "<th>", d = 22, o += "Count</th>", d = 23, o += "<th>", d = 23, o += "Remove</th></tr></thead>", d = 24, o += \'<tbody data-hook="categorial-rules-table"></tbody></table></div></div>\', d = 26, o += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="transform-categorial-div">\', d = 26, o += " ", d = 27, o += "Assign facet values to grous.</div></div>", d = 29, o += \'<div class="mdl-cell mdl-cell--2-col"></div></div>\';\n    } catch (a) {\n      pug.rethrow(a, t, d);\n    }\n\n    return o;\n  };\n\n  puglatizer["configureFacet"]["facetTransformContinuous"] = function template(l) {\n    var e,\n        d,\n        a = "";\n\n    try {\n      d = 1, a += \'<div class="mdl-grid" data-hook="transform-continuous-panel">\', d = 3, a += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetContinuousIcon"></div>\', d = 5, a += \'<div class="mdl-cell mdl-cell--1-col"></div>\', d = 7, a += \'<div class="mdl-cell mdl-cell--8-col mdl-grid">\', d = 9, a += \'<div class="mdl-cell mdl-cell--4-col">\', d = 10, a += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="define-transform-none">\', d = 11, a += \'<input class="mdl-radio__button" id="define-transform-none" data-hook="define-transform-none" type="radio" name="transformtype" value="none"/>\', d = 17, a += \'<span class="mdl-radio__label">\', d = 17, a += "No transform</span></label></div>", d = 19, a += \'<div class="mdl-cell mdl-cell--4-col">\', d = 20, a += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="define-transform-percentiles">\', d = 21, a += \'<input class="mdl-radio__button" id="define-transform-percentiles" data-hook="define-transform-percentiles" type="radio" name="transformtype" value="percentiles"/>\', d = 27, a += \'<span class="mdl-radio__label">\', d = 27, a += "Percentiles</span></label></div></div>", d = 29, a += \'<div class="mdl-cell mdl-cell--2-col"></div></div>\';\n    } catch (s) {\n      pug.rethrow(s, e, d);\n    }\n\n    return a;\n  };\n\n  puglatizer["configureFacet"]["facetTransformDatetime"] = function template(l) {\n    var e,\n        d,\n        t = "";\n\n    try {\n      d = 1, t += \'<div class="mdl-grid" data-hook="transform-time-panel">\', d = 3, t += \'<div class="mdl-grid mdl-cell mdl-cell--12-col">\', d = 4, t += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetTimeIcon"></div>\', d = 5, t += \'<div class="mdl-cell mdl-cell--1-col"></div>\', d = 7, t += \'<div class="mdl-cell mdl-cell--8-col mdl-grid">\', d = 9, t += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="transform-time-format-div">\', d = 10, t += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--6-col">\', d = 11, t += \'<input class="mdl-textfield__input" id="transform-time-format" data-hook="transform-time-format-input" type="text"/>\', d = 15, t += \'<label class="mdl-textfield__label" for="transform-time-format">\', d = 15, t += "Input time format</label></div>", d = 17, t += \'<div class="mdl-cell mdl-cell--6-col" data-hook="time-zones"></div></div>\', d = 19, t += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="transform-time-transformedformat-div">\', d = 20, t += \'<div class="mdl-cell mdl-cell--6-col">\', d = 21, t += "Select datetime part</div>", d = 22, t += \'<div class="mdl-cell mdl-cell--6-col" data-hook="time-parts"></div></div>\', d = 24, t += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="transform-time-transformedreference-div">\', d = 25, t += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--6-col">\', d = 26, t += \'<input class="mdl-textfield__input" id="transform-time-transformedreference" data-hook="transform-time-transformedreference-input" type="text"/>\', d = 30, t += \'<label class="mdl-textfield__label" for="transform-time-transformedreference">\', d = 30, t += "Add/subtract reference time</label></div>", d = 32, t += \'<div class="mdl-cell mdl-cell--6-col" data-hook="transformed-time-zones"></div></div></div>\', d = 34, t += \'<div class="mdl-cell mdl-cell--2-col"></div></div></div>\';\n    } catch (m) {\n      pug.rethrow(m, e, d);\n    }\n\n    return t;\n  };\n\n  puglatizer["configureFacet"]["facetTransformDuration"] = function template(l) {\n    var d,\n        e,\n        c = "";\n\n    try {\n      e = 1, c += \'<div class="mdl-grid" data-hook="transform-duration-panel">\', e = 3, c += \'<div class="mdl-grid mdl-cell mdl-cell--12-col">\', e = 4, c += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetTimeIcon"></div>\', e = 5, c += \'<div class="mdl-cell mdl-cell--1-col"></div>\', e = 7, c += \'<div class="mdl-cell mdl-cell--8-col mdl-grid">\', e = 9, c += \'<div class="mdl-cell mdl-cell--12-col mdl-grid">\', e = 10, c += \'<div class="mdl-cell mdl-cell--6-col">\', e = 11, c += "Input units </div>", e = 12, c += \'<div class="mdl-cell mdl-cell--6-col" data-hook="duration-units"></div></div>\', e = 14, c += \'<div class="mdl-cell mdl-cell--12-col mdl-grid">\', e = 15, c += \'<div class="mdl-cell mdl-cell--6-col">\', e = 16, c += "Output units</div>", e = 17, c += \'<div class="mdl-cell mdl-cell--6-col" data-hook="transformed-duration-units"></div></div>\', e = 19, c += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="transform-duration-transformedreference-div">\', e = 20, c += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--6-col">\', e = 21, c += \'<input class="mdl-textfield__input" id="transform-duration-transformedreference" data-hook="transform-duration-transformedreference-input" type="text"/>\', e = 25, c += \'<label class="mdl-textfield__label" for="transform-duration-transformedreference">\', e = 25, c += "Add/subtract reference time</label></div>", e = 27, c += \'<div class="mdl-cell mdl-cell--6-col" data-hook="transformed-duration-zone"></div></div></div>\', e = 29, c += \'<div class="mdl-cell mdl-cell--2-col"></div></div></div>\';\n    } catch (i) {\n      pug.rethrow(i, d, e);\n    }\n\n    return c;\n  };\n\n  puglatizer["configureFacet"]["page"] = function template(a) {\n    var d,\n        t,\n        o = "";\n\n    try {\n      t = 1, o += \'<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">\', t = 2, o += \'<main class="mdl-layout__content" style="background-color: white;">\', t = 3, o += \'<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">\', t = 4, o += \'<header class="demo-header mdl-layout__header mdl-color--grey-100 mdl-color-text--grey-600">\', t = 5, o += \'<div class="mdl-layout__header-row">\', t = 6, o += \'<span class="mdl-layout-title">\', t = 6, o += "Configure facet</span></div></header>", t = 8, o += "<main>", t = 9, o += \'<div data-hook="facet-define"></div>\', t = 11, o += \'<div data-hook="transform-categorial-panel">\', t = 12, o += \'<div data-hook="facet-transform-categorial"></div></div>\', t = 13, o += \'<div data-hook="transform-continuous-panel">\', t = 14, o += \'<div data-hook="facet-transform-continuous"></div></div>\', t = 15, o += \'<div data-hook="transform-datetime-panel">\', t = 16, o += \'<div data-hook="facet-transform-datetime"></div></div>\', t = 17, o += \'<div data-hook="transform-duration-panel">\', t = 18, o += \'<div data-hook="facet-transform-duration"></div></div></main></div></main></div>\';\n    } catch (e) {\n      pug.rethrow(e, d, t);\n    }\n\n    return o;\n  };\n\n  puglatizer["configurePartition"] = {};\n\n  puglatizer["configurePartition"]["group"] = function template(t) {\n    var r,\n        o,\n        a = "";\n\n    try {\n      o = 1, a += "<tr>", o = 2, a += \'<td data-hook="group-label"></td>\', o = 3, a += \'<td data-hook="group-count"></td></tr>\';\n    } catch (d) {\n      pug.rethrow(d, r, o);\n    }\n\n    return a;\n  };\n\n  puglatizer["configurePartition"]["page"] = function template(l) {\n    var d,\n        t,\n        i = "";\n\n    try {\n      t = 1, i += \'<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">\', t = 2, i += \'<main class="mdl-layout__content" style="background-color: white;">\', t = 4, i += \'<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">\', t = 5, i += \'<header class="demo-header mdl-layout__header mdl-color--grey-100 mdl-color-text--grey-600">\', t = 6, i += \'<div class="mdl-layout__header-row">\', t = 7, i += \'<span class="mdl-layout-title">\', t = 7, i += "Configure partition</span></div></header>", t = 9, i += "<main>", t = 10, i += \'<div class="mdl-grid" data-hook="partition-general">\', t = 11, i += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetInfoIcon"></div>\', t = 12, i += \'<div class="mdl-cell mdl-cell--1-col"></div>\', t = 13, i += \'<div class="mdl-cell mdl-cell--8-col">\', t = 14, i += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="partition-label-div">\', t = 15, i += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--12-col">\', t = 16, i += \'<input class="mdl-textfield__input" id="partition-title" data-hook="partition-title-input" type="text"/>\', t = 20, i += \'<label class="mdl-textfield__label" for="">\', t = 20, i += "Label</label></div></div>", t = 22, i += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="partition-label-div">\', t = 23, i += "The label along this axis</div>", t = 25, i += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="partition-options-div">\', t = 26, i += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--3-col">\', t = 27, i += \'<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="partition-cb1">\', t = 28, i += \'<input class="mdl-checkbox__input" type="checkbox" id="partition-cb1" data-hook="show-label"/>\', t = 29, i += \'<span class="mdl-checkbox__label">\', t = 29, i += "Show label</span></label></div>", t = 31, i += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--3-col">\', t = 32, i += \'<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="partition-cb2">\', t = 33, i += \'<input class="mdl-checkbox__input" type="checkbox" id="partition-cb2" data-hook="show-legend"/>\', t = 34, i += \'<span class="mdl-checkbox__label">\', t = 34, i += "Show legend</span></label></div>", t = 36, i += "\x3c!-- div.mdl-textfield.mdl-js-textfield.mdl-textfield--floating-label.mdl-cell.mdl-cell--3-col--\x3e", t = 37, i += \'\x3c!--   label(for="partition-cb3").mdl-checkbox.mdl-js-checkbox.mdl-js-ripple-effect--\x3e\', t = 38, i += \'\x3c!--     input(type="checkbox" id="partition-cb3" data-hook="accumulative").mdl-checkbox__input--\x3e\', t = 39, i += "\x3c!--     span.mdl-checkbox__label Accumulative--\x3e", t = 41, i += "\x3c!-- div.mdl-textfield.mdl-js-textfield.mdl-textfield--floating-label.mdl-cell.mdl-cell--3-col--\x3e", t = 42, i += \'\x3c!--   label(for="partition-cb4").mdl-checkbox.mdl-js-checkbox.mdl-js-ripple-effect--\x3e\', t = 43, i += \'\x3c!--     input(type="checkbox" id="partition-cb4" data-hook="relative").mdl-checkbox__input--\x3e\', t = 44, i += "\x3c!--     span.mdl-checkbox__label Relative--\x3e</div>", t = 46, i += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="partition-options-div">\', t = 47, i += "Set various options for this partition</div></div>", t = 49, i += \'<div class="mdl-cell mdl-cell--2-col"></div></div>\', t = 51, i += \'<div class="mdl-grid" data-hook="partition-continuous"></div>\', t = 52, i += \'<div class="mdl-grid" data-hook="partition-categorial"></div>\', t = 53, i += \'<div class="mdl-grid" data-hook="partition-datetime"></div>\', t = 54, i += \'<div class="mdl-grid" data-hook="partition-duration"></div>\', t = 55, i += \'<div class="mdl-grid" data-hook="partition-text"></div></main></div></main></div>\';\n    } catch (e) {\n      pug.rethrow(e, d, t);\n    }\n\n    return i;\n  };\n\n  puglatizer["configurePartition"]["partitionCategorial"] = function template(l) {\n    var t,\n        d,\n        o = "";\n\n    try {\n      d = 1, o += \'<div class="mdl-grid" data-hook="group-categorial-panel">\', d = 2, o += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetCategorialIcon"></div>\', d = 3, o += \'<div class="mdl-cell mdl-cell--1-col"></div>\', d = 4, o += \'<div class="mdl-cell mdl-cell--8-col">\', d = 5, o += \'<div class="mdl-cell mdl-cell--12-col">\', d = 6, o += \'<table style="width: 100%">\', d = 7, o += "<thead>", d = 8, o += "<tr>", d = 9, o += "<th>", d = 10, o += \'<button class="mdl-button mdl-js-button" data-hook="group-order-abc">\', d = 10, o += "label</button></th>", d = 11, o += "<th>", d = 12, o += \'<button class="mdl-button mdl-js-button" data-hook="group-order-count">\', d = 12, o += "count</button></th></tr></thead>", d = 13, o += \'<tbody data-hook="groups-table"></tbody></table></div></div>\', d = 14, o += \'<div class="mdl-cell mdl-cell--2-col"></div></div>\';\n    } catch (c) {\n      pug.rethrow(c, t, d);\n    }\n\n    return o;\n  };\n\n  puglatizer["configurePartition"]["partitionContinuous"] = function template(l) {\n    var d,\n        i,\n        e = "";\n\n    try {\n      i = 1, e += \'<div class="mdl-grid" data-hook="group-continuous-panel">\', i = 2, e += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetContinuousIcon"></div>\', i = 3, e += \'<div class="mdl-cell mdl-cell--1-col"></div>\', i = 4, e += \'<div class="mdl-cell mdl-cell--8-col">\', i = 5, e += \'<div class="mdl-grid mdl-cell mdl-cell--12-col">\', i = 7, e += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="group-range-div">\', i = 8, e += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--4-col">\', i = 9, e += \'<input class="mdl-textfield__input" id="group-minimum" data-hook="group-minimum-input" type="text" pattern="-?[0-9]*(.[0-9]+)?(e[+-][0-9]+)?"/>\', i = 14, e += \'<label class="mdl-textfield__label" for="group-minimum">\', i = 14, e += "Minimum value</label>", i = 15, e += \'<span class="mdl-textfield__error">\', i = 15, e += "Input is not a number!</span></div>", i = 17, e += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--4-col">\', i = 18, e += \'<input class="mdl-textfield__input" id="group-maximum" data-hook="group-maximum-input" type="text" pattern="-?[0-9]*(.[0-9]+)?(e[+-][0-9]+)?"/>\', i = 23, e += \'<label class="mdl-textfield__label" for="group-maximum">\', i = 23, e += "Maximum value</label>", i = 24, e += \'<span class="mdl-textfield__error">\', i = 24, e += "Input is not a number!</span></div>", i = 26, e += \'<div class="mdl-cell mdl-cell--4-col" data-hook="group-range-button">\', i = 27, e += \'<button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent">\', i = 27, e += "Reset ranges</button></div></div>", i = 29, e += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="group-range-div">\', i = 30, e += "Reset mininum and maximum values.</div>", i = 33, e += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="group-param-div">\', i = 34, e += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--12-col">\', i = 35, e += \'<input class="mdl-textfield__input" id="group-param" data-hook="group-param-input" type="text" pattern="-?[0-9]*(.[0-9]+)?"/>\', i = 40, e += \'<label class="mdl-textfield__label" for="sample4">\', i = 40, e += "Number of bins or binsize</label>", i = 41, e += \'<span class="mdl-textfield__error">\', i = 41, e += "Input is not a number!</span></div></div>", i = 43, e += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="group-param-div">\', i = 44, e += "Set the number of bins, or the bin size</div>", i = 47, e += \'<div class="mdl-grid mdl-cell mdl-cell--12-col" id="group-distribution-div">\', i = 49, e += \'<div class="mdl-cell mdl-cell--3-col">\', i = 50, e += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="group-fixedn">\', i = 51, e += \'<input class="mdl-radio__button" id="group-fixedn" data-hook="group-fixedn-input" type="radio" name="group-distribution" value="fixedn"/>\', i = 57, e += \'<span class="mdl-radio__label">\', i = 57, e += "Fixed number of bins</span></label></div>", i = 59, e += \'<div class="mdl-cell mdl-cell--3-col">\', i = 60, e += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="group-fixedsc">\', i = 61, e += \'<input class="mdl-radio__button" id="group-fixedsc" data-hook="group-fixedsc-input" type="radio" name="group-distribution" value="fixedsc"/>\', i = 67, e += \'<span class="mdl-radio__label">\', i = 67, e += "Fixed bin size (centered)</span></label></div>", i = 69, e += \'<div class="mdl-cell mdl-cell--3-col">\', i = 70, e += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="group-fixeds">\', i = 71, e += \'<input class="mdl-radio__button" id="group-fixeds" data-hook="group-fixeds-input" type="radio" name="group-distribution" value="fixeds"/>\', i = 77, e += \'<span class="mdl-radio__label">\', i = 77, e += "Fixed bin size</span></label></div>", i = 79, e += \'<div class="mdl-cell mdl-cell--3-col">\', i = 80, e += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="group-log">\', i = 81, e += \'<input class="mdl-radio__button" id="group-log" data-hook="group-log-input" type="radio" name="group-distribution" value="log"/>\', i = 87, e += \'<span class="mdl-radio__label">\', i = 87, e += "Logarithmic</span></label></div></div></div></div>", i = 89, e += \'<div class="mdl-cell mdl-cell--2-col"></div></div>\';\n    } catch (a) {\n      pug.rethrow(a, d, i);\n    }\n\n    return e;\n  };\n\n  puglatizer["configurePartition"]["partitionDatetime"] = function template(l) {\n    var t,\n        e,\n        d = "";\n\n    try {\n      e = 1, d += \'<div class="mdl-grid" data-hook="group-datetime-panel">\', e = 2, d += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetTimeIcon"></div>\', e = 3, d += \'<div class="mdl-cell mdl-cell--1-col"></div>\', e = 4, d += \'<div class="mdl-cell mdl-cell--8-col mdl-grid">\', e = 5, d += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="group-datetimerange-div">\', e = 6, d += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--3-col">\', e = 7, d += \'<input class="mdl-textfield__input" id="group-startdate" data-hook="group-startdate-input" type="text"/>\', e = 11, d += \'<label class="mdl-textfield__label" for="group-startdate">\', e = 11, d += "Start date</label></div>", e = 13, d += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--3-col">\', e = 14, d += \'<input class="mdl-textfield__input" id="group-enddate" data-hook="group-enddate-input" type="text"/>\', e = 18, d += \'<label class="mdl-textfield__label" for="group-enddate">\', e = 18, d += "End date</label></div>", e = 20, d += \'<div class="mdl-cell mdl-cell--3-col">\', e = 21, d += \'<div data-hook="time-zones"></div></div>\', e = 23, d += \'<div class="mdl-cell mdl-cell--3-col">\', e = 24, d += \'<select data-hook="time-units">\', e = 25, d += \'<option value="auto">\', e = 25, d += "auto</option>", e = 26, d += \'<option value="milliseconds">\', e = 26, d += "milliseconds</option>", e = 27, d += \'<option value="seconds">\', e = 27, d += "seconds</option>", e = 28, d += \'<option value="minutes">\', e = 28, d += "minutes</option>", e = 29, d += \'<option value="hours">\', e = 29, d += "hours</option>", e = 30, d += \'<option value="days">\', e = 30, d += "days</option>", e = 31, d += \'<option value="weeks">\', e = 31, d += "weeks</option>", e = 32, d += \'<option value="months">\', e = 32, d += "months</option>", e = 33, d += \'<option value="years">\', e = 33, d += "years</option></select></div></div>", e = 35, d += \'<div class="mdl-cell mdl-cell--12-col" data-hook="group-datetimerange-button">\', e = 36, d += \'<button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent">\', e = 36, d += "Reset ranges</button></div></div>", e = 38, d += \'<div class="mdl-cell mdl-cell--2-col"></div></div>\';\n    } catch (o) {\n      pug.rethrow(o, t, e);\n    }\n\n    return d;\n  };\n\n  puglatizer["configurePartition"]["partitionDuration"] = function template(l) {\n    var d,\n        t,\n        e = "";\n\n    try {\n      t = 1, e += \'<div class="mdl-grid" data-hook="group-duration-panel">\', t = 2, e += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetTimeIcon"></div>\', t = 3, e += \'<div class="mdl-cell mdl-cell--1-col"></div>\', t = 4, e += \'<div class="mdl-cell mdl-cell--8-col">\', t = 5, e += \'<div class="mdl-grid mdl-cell mdl-cell--12-col">\', t = 7, e += \'<div class="mdl-cell mdl-cell--12-col mdl-grid" id="group-durationrange-div">\', t = 8, e += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--4-col">\', t = 9, e += \'<input class="mdl-textfield__input" id="group-startduration" data-hook="group-startduration-input" type="text"/>\', t = 13, e += \'<label class="mdl-textfield__label" for="group-startduration">\', t = 13, e += "Start interval</label></div>", t = 15, e += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--4-col">\', t = 16, e += \'<input class="mdl-textfield__input" id="group-endduration" data-hook="group-endduration-input" type="text"/>\', t = 20, e += \'<label class="mdl-textfield__label" for="group-endduration">\', t = 20, e += "End interval</label></div>", t = 22, e += \'<div class="mdl-cell mdl-cell--4-col" data-hook="group-durationrange-button">\', t = 23, e += \'<button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent">\', t = 23, e += "Reset ranges</button></div></div>", t = 25, e += \'<div class="mdl-tooltip mdl-tooltip--large mdl-tooltip--right" for="group-durationrange-div">\', t = 26, e += "Reset start and end interval</div></div></div>", t = 28, e += \'<div class="mdl-cell mdl-cell--2-col"></div></div>\';\n    } catch (i) {\n      pug.rethrow(i, d, t);\n    }\n\n    return e;\n  };\n\n  puglatizer["configurePartition"]["partitionText"] = function template(l) {\n    var d,\n        c,\n        t = "";\n\n    try {\n      c = 1, t += \'<div class="mdl-grid" data-hook="group-text-panel">\', c = 2, t += \'<div class="mdl-cell mdl-cell--1-col facetIcon facetTextIcon"></div>\', c = 3, t += \'<div class="mdl-cell mdl-cell--1-col"></div>\', c = 4, t += \'<div class="mdl-cell mdl-cell--8-col">\', c = 5, t += \'<div class="mdl-grid mdl-cell mdl-cell--12-col">\', c = 7, t += \'<div class="mdl-cell mdl-cell--3-col" data-hook="group-order-abc">\', c = 8, t += \'<button class="mdl-button mdl-js-button mdl-js-ripple-effect">\', c = 8, t += "Order alfabetically</button></div>", c = 10, t += \'<div class="mdl-cell mdl-cell--3-col" data-hook="group-order-count">\', c = 11, t += \'<button class="mdl-button mdl-js-button mdl-js-ripple-effect">\', c = 11, t += "Order by count</button></div></div></div></div>";\n    } catch (e) {\n      pug.rethrow(e, d, c);\n    }\n\n    return t;\n  };\n\n  puglatizer["datasets"] = {};\n\n  puglatizer["datasets"]["dataset"] = function template(t) {\n    var a,\n        d,\n        l = "";\n\n    try {\n      d = 1, l += \'<div class="mdl-card mdl-shadow--2dp" data-hook="dataset" style="min-height: inherit">\', d = 2, l += \'<div class="mdl-card__title">\', d = 3, l += \'<h2 class="mdl-card__title-text" data-hook="name"></h2></div>\', d = 5, l += \'<div class="mdl-card__supporting-text" data-hook="description"></div>\', d = 7, l += \'<div class="mdl-card__actions mdl-card--border">\', d = 8, l += \'<a class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect" data-hook="delete">\', d = 9, l += "Delete</a>", d = 10, l += \'<button class="mdl-button mdl-js button mdl-button--icon mdl-button--colored" data-hook="settings" style="float: right">\', d = 11, l += \'<i class="material-icons">\', d = 11, l += "settings</i></button></div>", d = 13, l += \'<div class="mdl-card__menu">\', d = 14, l += \'<span class="mdl-spinner mdl-js-spinner is-active" data-hook="cbspinner"></span>\', d = 15, l += \'<span data-hook="cbtoggle">\', d = 16, l += \'<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" data-hook="cblabel" for="">\', d = 17, l += \'<input class="mdl-switch__input" data-hook="cb" type="checkbox" id=""/></label>\', d = 18, l += \'<span class="mdl-switch__label"></span></span></div></div>\';\n    } catch (s) {\n      pug.rethrow(s, a, d);\n    }\n\n    return l;\n  };\n\n  puglatizer["datasets"]["datasetCollection"] = function template(t) {\n    var a,\n        e,\n        r = "";\n\n    try {\n      e = 1, r += \'<div data-hook="items" style="display: flex; flex-wrap: wrap;"></div>\';\n    } catch (i) {\n      pug.rethrow(i, a, e);\n    }\n\n    return r;\n  };\n\n  puglatizer["datasets"]["page"] = function template(t) {\n    var a,\n        l,\n        d = "";\n\n    try {\n      l = 1, d += \'<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">\', l = 2, d += \'<main class="mdl-layout__content" style="background-color: white;">\', l = 3, d += "<div>", l = 5, d += \'<div class="mdl-grid">\', l = 6, d += \'<dialog class="mdl-dialog" data-hook="CSV-settings">\', l = 7, d += \'<div class="mdl-dialog__content">\', l = 8, d += \'<section class="mdl-grid" id="csv-settings-table" name="csv-settings-table">\', l = 9, d += "<div>", l = 10, d += \'<table class="mdl-data-table mdl-js-data-table">\', l = 11, d += "<tbody>", l = 12, d += "<tr>", l = 13, d += "<td>", l = 13, d += "Headers</td>", l = 14, d += "<td>", l = 15, d += "<span>", l = 16, d += \'<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="CSV-header-columns">\', l = 17, d += "Enable", l = 18, d += \'<input class="mdl-checkbox__input" type="checkbox" id="CSV-header-columns"/></label></span></td></tr>\', l = 19, d += "<tr>", l = 20, d += "<td>", l = 20, d += "Delimiter</td>", l = 21, d += "<td>", l = 22, d += "<span>", l = 23, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-separator-comma">\', l = 24, d += \'<input class="mdl-radio__button" type="radio" id="CSV-separator-comma" name="CSV-separator-options" value="comma"/></label></span>\', l = 25, d += \'<span class="mdl-typography--title-color-contrast">\', l = 26, d += ",</span></td>", l = 27, d += "<td>", l = 28, d += "<span>", l = 29, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-separator-colon">\', l = 30, d += \'<input class="mdl-radio__button" type="radio" id="CSV-separator-colon" name="CSV-separator-options" value="colon"/></label></span>\', l = 31, d += \'<span class="mdl-typography--title-color-contrast">\', l = 32, d += ":</span></td>", l = 33, d += "<td>", l = 34, d += "<span>", l = 35, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-separator-semicolon">\', l = 36, d += \'<input class="mdl-radio__button" type="radio" id="CSV-separator-semicolon" name="CSV-separator-options" value="semicolon"/></label></span>\', l = 37, d += \'<span class="mdl-typography--title-color-contrast">\', l = 38, d += ";</span></td>", l = 39, d += "<td>", l = 40, d += "<span>", l = 41, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-separator-pipe">\', l = 42, d += \'<input class="mdl-radio__button" type="radio" id="CSV-separator-pipe" name="CSV-separator-options" value="pipe"/></label></span>\', l = 43, d += \'<span class="mdl-typography--title-color-contrast">\', l = 44, d += "|</span></td>", l = 45, d += "<td>", l = 46, d += "<span>", l = 47, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-separator-tab">\', l = 48, d += \'<input class="mdl-radio__button" type="radio" id="CSV-separator-tab" name="CSV-separator-options" value="tab"/></label></span>\', l = 49, d += "<span>", l = 50, d += "Tab</span></td>", l = 51, d += "<td>", l = 52, d += "<span>", l = 53, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-separator-other">\', l = 54, d += \'<input class="mdl-radio__button" type="radio" data-hook="CSV-separator-other" id="CSV-separator-other" name="CSV-separator-options" value="other"/></label></span>\', l = 55, d += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label" style="width: fit-content;">\', l = 56, d += \'<input class="mdl-textfield__input" data-hook="CSV-separator-other-input" type="text" id="CSV-separator-other-input" name="CSV-separator-other-input"/>\', l = 57, d += \'<label class="mdl-textfield__label" for="CSV-separator-other-input">\', l = 58, d += "Other</label></div></td></tr>", l = 59, d += "<tr>", l = 60, d += "<td>", l = 60, d += "Quoting</td>", l = 61, d += "<td>", l = 62, d += "<span>", l = 63, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-quote-none">\', l = 64, d += \'<input class="mdl-radio__button" type="radio" id="CSV-quote-none" name="CSV-quote" value="none"/></label></span>\', l = 65, d += "<span>", l = 66, d += "None</span></td>", l = 67, d += "<td>", l = 68, d += "<span>", l = 69, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-quote-single">\', l = 70, d += \'<input class="mdl-radio__button" type="radio" id="CSV-quote-single" name="CSV-quote" value="single"/></label></span>\', l = 71, d += \'<span class="mdl-typography--title-color-contrast">\', l = 72, d += "\'</span></td>", l = 73, d += "<td>", l = 74, d += "<span>", l = 75, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-quote-double">\', l = 76, d += \'<input class="mdl-radio__button" type="radio" id="CSV-quote-double" name="CSV-quote" value="double"/></label></span>\', l = 77, d += \'<span class="mdl-typography--title-color-contrast">\', l = 78, d += \'"</span></td></tr>\', l = 79, d += "<tr>", l = 80, d += "<td>", l = 80, d += "Comments</td>", l = 81, d += "<td>", l = 82, d += "<span>", l = 83, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-comment-pound">\', l = 84, d += \'<input class="mdl-radio__button" type="radio" id="CSV-comment-pound" name="CSV-comment" value="pound"/></label></span>\', l = 85, d += \'<span class="mdl-typography--title-color-contrast">\', l = 86, d += "#</span></td>", l = 87, d += "<td>", l = 88, d += "<span>", l = 89, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-comment-exclamation">\', l = 90, d += \'<input class="mdl-radio__button" type="radio" id="CSV-comment-exclamation" name="CSV-comment" value="exclamation"/></label></span>\', l = 91, d += \'<span class="mdl-typography--title-color-contrast">\', l = 92, d += "!</span></td>", l = 93, d += "<td>", l = 94, d += "<span>", l = 95, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-comment-slash">\', l = 96, d += \'<input class="mdl-radio__button" type="radio" id="CSV-comment-slash" name="CSV-comment" value="slash"/></label></span>\', l = 97, d += \'<span class="mdl-typography--title-color-contrast">\', l = 98, d += "/</span></td>", l = 99, d += "<td>", l = 100, d += "<span>", l = 101, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-comment-dash">\', l = 102, d += \'<input class="mdl-radio__button" type="radio" id="CSV-comment-dash" name="CSV-comment" value="dash"/></label></span>\', l = 103, d += \'<span class="mdl-typography--title-color-contrast">\', l = 104, d += "-</span></td>", l = 105, d += "<td>", l = 106, d += "<span>", l = 107, d += \'<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="CSV-comment-percent">\', l = 108, d += \'<input class="mdl-radio__button" type="radio" id="CSV-comment-percent" name="CSV-comment" value="percent"/></label></span>\', l = 109, d += \'<span class="mdl-typography--title-color-contrast">\', l = 110, d += "%</span></td></tr></tbody></table></div></section>", l = 112, d += \'<div class="mdl-dialog__actions mdl-dialog__actions">\', l = 114, d += \'<button class="mdl-button close" data-hook="CSV-settings-close" type="button">\', l = 114, d += "Close</button></div></div></dialog></div>", l = 116, d += \'<dialog class="mdl-dialog" data-hook="session-download-cloud">\', l = 117, d += \'<div class="mdl-dialog__content">\', l = 118, d += "<p></p>", l = 119, d += "Enter the url of the session. <br/>Make sure that you saved your current session!", l = 120, d += \'<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-cell mdl-cell--12-col">\', l = 121, d += \'<input class="mdl-textfield__input" id="session-import-remote-link" data-hook="session-import-remote-link" type="text"/></div></div>\', l = 122, d += \'<div class="mdl-dialog__actions mdl-dialog__actions">\', l = 123, d += \'<button class="mdl-button" data-hook="session-download-cloud-get" type="button">\', l = 123, d += "Import</button>", l = 124, d += \'<button class="mdl-button close" data-hook="session-download-cloud-close-button" type="button">\', l = 124, d += "Cancel</button></div></dialog>", l = 127, d += \'<header class="mdl-layout__header mdl-color--grey-100 mdl-color-text--grey-600">\', l = 128, d += \'<div class="mdl-layout__header-row">\', l = 129, d += \'<span class="mdl-layout-title" style="padding: 0; text-align: center;">\', l = 129, d += "Datasets</span>", l = 131, d += \'<div class="mdl-layout-spacer"></div>\', l = 133, d += \'<button class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" data-hook="search-button" id="tt3" data-position="bottom" data-step="1" data-intro="You can search available datasets here.">\', l = 134, d += \'<i class="material-icons">\', l = 134, d += "search</i></button>", l = 136, d += \'<div class="mdl-tooltip mdl-tooltip--large" for="tt3">\', l = 137, d += "Show or hide search bar</div></div>", l = 139, d += \'<div class="mdl-layout__header-row" data-hook="search-bar">\', l = 140, d += \'<div class="mdl-layout-spacer"></div>\', l = 141, d += \'<span class="mdl-color--white mdl-color-text--primary searchBar">\', l = 143, d += \'<span class="mdl-textfield searchBar">\', l = 144, d += \'<input class="mdl-textfield__input searchBar" data-hook="dataset-selector" type="text" id="tt5"/>\', l = 145, d += \'<div class="mdl-tooltip mdl-tooltip--large" for="tt5">\', l = 146, d += "Search facet name and description</div></span></span></div>", l = 148, d += \'<div data-hook="add-datasets-div" id="add-datasets-div">\', l = 149, d += \'<div style="display: flex; align-items: center; justify-content: center;">\', l = 150, d += \'<div class="data-page-card-button mdl-card mdl-shadow--2dp">\', l = 151, d += \'<div class="mdl-card__title">\', l = 152, d += \'<button class="mdl-button mdl-js-button mdl-button--raised mdl-color--blue-grey-900 mdl-color-text--white mdl-js-ripple-effect serverconnect-btn" data-hook="server-connect" id="serverButton">\', l = 153, d += "Connect</button></div>", l = 154, d += \'<div class="mdl-card__supporting-text">\', l = 155, d += "Connect to a PostgreSQL server.</div></div>", l = 157, d += \'<div class="data-page-card-button mdl-card mdl-shadow--2dp">\', l = 158, d += \'<div class="mdl-card__title">\', l = 159, d += \'<label class="mdl-button mdl-js-button mdl-button--raised mdl-color--blue-grey-900 mdl-color-text--white mdl-js-ripple-effect jsonupload-btn" for="jsonuploadBtn" id="jsonUploadLabel">\', l = 160, d += "Import JSON</label>", l = 161, d += \'<input class="fileBtn" type="file" accept=".json" data-hook="json-upload-input" id="jsonuploadBtn"/></div>\', l = 162, d += \'<div class="mdl-card__supporting-text">\', l = 163, d += "Import a JSON file from your computer.</div></div>", l = 165, d += \'<div class="data-page-card-button mdl-card mdl-shadow--2dp">\', l = 166, d += \'<div class="mdl-card__title">\', l = 167, d += \'<label class="mdl-button mdl-js-button mdl-button--raised mdl-color--blue-grey-900 mdl-color-text--white mdl-js-ripple-effect csvupload-btn" for="csvuploadBtn">\', l = 168, d += "Import CSV</label>", l = 169, d += \'<input class="fileBtn" type="file" accept=".csv,.txt,.tsv" data-hook="csv-upload-input" id="csvuploadBtn"/></div>\', l = 170, d += \'<div class="mdl-card__supporting-text">\', l = 171, d += "Import a CSV file from your computer.</div>", l = 172, d += \'<div class="mdl-card__menu">\', l = 173, d += \'<button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect" data-hook="CSV-settings-button" id="csv-settings-button">\', l = 174, d += \'<i class="material-icons">\', l = 174, d += "settings</i></button></div></div>", l = 176, d += \'<div class="data-page-card-button mdl-card mdl-shadow--2dp">\', l = 177, d += \'<div class="mdl-card__title">\', l = 178, d += \'<label class="mdl-button mdl-js-button mdl-button--raised mdl-color--blue-grey-900 mdl-color-text--white mdl-js-ripple-effect datadownload-btn" for="dataDownloadBtn">\', l = 179, d += "Download data</label>", l = 180, d += \'<a class="fileBtn" data-hook="data-download" id="dataDownloadBtn" download="download"></a></div>\', l = 181, d += \'<div class="mdl-card__supporting-text">\', l = 182, d += "Download the current data to your computer.</div></div></div></div>", l = 184, d += \'<div data-hook="dataset-items" style="width: 100%"></div></header>\', l = 187, d += \'<header class="mdl-layout__header mdl-color--grey-100 mdl-color-text--grey-600">\', l = 188, d += \'<div class="mdl-layout__header-row">\', l = 189, d += \'<span class="mdl-layout-title" style="padding: 0; text-align: center;">\', l = 189, d += "Sessions</span></div>", l = 191, d += \'<div data-hook="add-sessions-div" style="display: flex; align-items: center; justify-content: center;">\', l = 192, d += \'<div class="data-page-card-button mdl-card mdl-shadow--2dp">\', l = 193, d += \'<div class="mdl-card__title">\', l = 194, d += \'<a class="mdl-button mdl-js-button mdl-button--raised mdl-color--blue-grey-900 mdl-color-text--white mdl-js-ripple-effect sessiondownload-btn" data-hook="session-download" download="download">\', l = 195, d += "Export session</a></div>", l = 196, d += \'<div class="mdl-card__supporting-text">\', l = 197, d += "Save the current dashboard to your computer.</div></div>", l = 199, d += \'<div class="data-page-card-button mdl-card mdl-shadow--2dp">\', l = 200, d += \'<div class="mdl-card__title">\', l = 201, d += \'<label class="mdl-button mdl-js-button mdl-button--raised mdl-color--blue-grey-900 mdl-color-text--white mdl-js-ripple-effect sessionupload-btn" for="sessionuploadBtn" data-hook="session-upload">\', l = 202, d += "Import session</label>", l = 203, d += \'<input class="fileBtn" type="file" accept=".json" data-hook="session-upload-input" id="sessionuploadBtn"/></div>\', l = 204, d += \'<div class="mdl-card__supporting-text">\', l = 205, d += "Import a saved dashboard from your computer.</div></div>", l = 207, d += \'<div class="data-page-card-button mdl-card mdl-shadow--2dp">\', l = 208, d += \'<div class="mdl-card__title">\', l = 209, d += \'<a class="mdl-button mdl-js-button mdl-button--raised mdl-color--blue-grey-900 mdl-color-text--white mdl-js-ripple-effect sessionclouddown-btn" data-hook="session-cloud-download" cloud-download="cloud-download">\', l = 210, d += "Session by URL</a></div>", l = 211, d += \'<div class="mdl-card__supporting-text">\', l = 212, d += "Import a dashboard using URL.</div></div></div>", l = 214, d += \'<div data-hook="session-items" style="width: 100%"></div></header></div></main></div>\';\n    } catch (o) {\n      pug.rethrow(o, a, l);\n    }\n\n    return d;\n  };\n\n  puglatizer["datasets"]["session"] = function template(a) {\n    var d,\n        s,\n        t = "";\n\n    try {\n      s = 1, t += \'<div class="mdl-card mdl-shadow--2dp" data-hook="session" style="min-height: inherit">\', s = 2, t += \'<div class="mdl-card__title">\', s = 3, t += \'<h2 class="mdl-card__title-text" data-hook="date"></h2></div>\', s = 5, t += \'<div class="mdl-card__supporting-text" data-hook="description"></div>\', s = 7, t += \'<div class="mdl-card__actions mdl-card--border">\', s = 8, t += \'<a class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect" data-hook="delete">\', s = 9, t += "Delete</a></div>", s = 11, t += \'<div class="mdl-card__menu">\', s = 12, t += \'<span class="mdl-spinner mdl-js-spinner is-active" data-hook="cbspinner"></span>\', s = 13, t += \'<span data-hook="cbtoggle">\', s = 14, t += \'<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" data-hook="cblabel" for="">\', s = 15, t += \'<input class="mdl-switch__input" data-hook="cb" type="checkbox" id=""/></label>\', s = 16, t += \'<span class="mdl-switch__label"></span></span></div></div>\';\n    } catch (l) {\n      pug.rethrow(l, d, s);\n    }\n\n    return t;\n  };\n\n  puglatizer["datasets"]["sessionCollection"] = function template(t) {\n    var e,\n        a,\n        r = "";\n\n    try {\n      a = 1, r += \'<div data-hook="session-collection-items" style="display: flex; flex-wrap: wrap;"></div>\';\n    } catch (i) {\n      pug.rethrow(i, e, a);\n    }\n\n    return r;\n  };\n\n  puglatizer["head"] = function template(e) {\n    var t,\n        a,\n        n = "";\n\n    try {\n      a = 1, n += "<head>", a = 2, n += \'<meta charset="utf-8"/>\', a = 3, n += \'<meta http-equiv="X-UA-Compatible" content="IE=edge"/>\', a = 4, n += \'<meta name="description" content="Spot - extensible facet browser"/>\', a = 5, n += \'<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0"/>\', a = 6, n += "<title>", a = 7, n += "Spot</title>", a = 9, n += "\x3c!-- Add to homescreen for Chrome on Android --\x3e", a = 10, n += \'<meta name="mobile-web-app-capable" content="yes"/>\', a = 13, n += "\x3c!-- Add to homescreen for Safari on iOS --\x3e", a = 14, n += \'<meta name="apple-mobile-web-app-capable" content="yes"/>\', a = 15, n += \'<meta name="apple-mobile-web-app-status-bar-style" content="black"/>\', a = 16, n += \'<meta name="apple-mobile-web-app-title" content="Spot"/>\', a = 19, n += "\x3c!-- Tile icon for Win8 (144x144 + tile color) --\x3e", a = 21, n += \'<meta name="msapplication-TileColor" content="#3372DF"/></head>\';\n    } catch (o) {\n      pug.rethrow(o, t, a);\n    }\n\n    return n;\n  };\n\n  puglatizer["help"] = {};\n\n  puglatizer["help"]["analyze"] = function template(a) {\n    var e,\n        t,\n        p = "";\n\n    try {\n      t = 1, p += \'<div data-hook="analyze-help" id="analyze-help" data-position="bottom" data-step="1">\', t = 2, p += "<h4>", t = 2, p += "Analyze page Help</h4>", t = 3, p += "<p></p>", t = 4, p += "Text here<br />", t = 5, p += "\\n", t = 5, p += "<br /></div>";\n    } catch (r) {\n      pug.rethrow(r, e, t);\n    }\n\n    return p;\n  };\n\n  puglatizer["help"]["menuButtons"] = function template(e) {\n    var t,\n        a,\n        o = "";\n\n    try {\n      a = 1, o += \'<div data-hook="welcome-info" id="welcome-info" data-position="bottom" data-step="1">\', a = 2, o += "<p></p>", a = 3, o += "<h6>", a = 3, o += "You will find the following buttons on the left menu:</h6>", a = 4, o += "<lu>", a = 5, o += "<li>", a = 6, o += \'<i class="material-icons" role="presentation">\', a = 6, o += "menu</i>", a = 7, o += "button controls the menu drawer.</li>", a = 8, o += "<li>", a = 9, o += \'<i class="material-icons" role="presentation">\', a = 9, o += "home</i>", a = 10, o += "button opens the homepage. This is where you are at now.</li>", a = 11, o += "<li>", a = 12, o += \'<i class="material-icons" role="presentation">\', a = 12, o += "storage</i>", a = 13, o += "button takes you to Datasets page. In Datasets page, you can upload your dataset or use existing datasets. You can also configure your datasets.</li>", a = 14, o += "<li>", a = 15, o += \'<i class="material-icons" role="presentation">\', a = 15, o += "insert_chart</i>", a = 16, o += "button takes you to Analyze page. In Analyze page, you can create your dashboard in a few clicks by creating new charts.</li>", a = 17, o += "<li>", a = 18, o += \'<i class="material-icons" role="presentation">\', a = 18, o += "share</i>", a = 19, o += "button takes you to Share page. In share page, you can share your current session or load the session which is shared with you.</li>", a = 20, o += "<li>", a = 21, o += \'<i class="material-icons" role="presentation">\', a = 21, o += "help</i>", a = 22, o += "button guides you about the user interface.</li></lu></div>";\n    } catch (i) {\n      pug.rethrow(i, t, a);\n    }\n\n    return o;\n  };\n\n  puglatizer["help"]["welcome"] = function template(e) {\n    var t,\n        a,\n        o = "";\n\n    try {\n      a = 1, o += \'<div data-hook="welcome-info" id="welcome-info" data-position="bottom" data-step="1">\', a = 2, o += "<h4>", a = 2, o += "Welcome to SPOT!</h4>", a = 3, o += "<p></p>", a = 4, o += \'This software is being developed by the  <a href="https://www.esciencecenter.nl" target="_blank">Netherlands eScience Center</a>.<br />\', a = 5, o += "\\n", a = 5, o += "<br />", a = 6, o += "\\n", a = 6, o += \'SPOT is a free and an open source software. The license of the SPOT is  <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache 2.0</a>.<br />\', a = 7, o += "\\n", a = 7, o += "<br />", a = 8, o += "\\n", a = 8, o += \'For the online tutorial of SPOT, please check <a href="https://nlesc.github.io/spot-tutorial/tutorial" target="_blank">this link</a>.<br />\', a = 9, o += "\\n", a = 9, o += "<br />", a = 10, o += "\\n", a = 10, o += "<br />", a = 11, o += "\\n", a = 11, o += \'The desktop version of SPOT can be downloaded from <a href="https://github.com/NLeSC/spot-desktop-app/releases" target="_blank">this link</a>.<br />\', a = 12, o += "\\n", a = 12, o += "<br>", a = 13, o += "\\n", a = 13, o += "You can click the button below to start a demo session. The demo session has <b>Kaggle Titanic Survival</b> dataset.", a = 15, o += "\\n", a = 15, o += "<br><br> Happy SPOTTING!<br></div>";\n    } catch (n) {\n      pug.rethrow(n, t, a);\n    }\n\n    return o;\n  };\n\n  puglatizer["home"] = function template(s) {\n    var a,\n        l,\n        e = "";\n\n    try {\n      l = 1, e += \'<main class="mdl-layout__content home-content bgspotImage">\', l = 2, e += \'<div class="content-grid mdl-grid mdl-cell--middle">\', l = 4, e += \'<div class="mdl-cell mdl-cell--12-col mdl-cell--0-offset mdl-shadow--2dp spot-cell spot-trans spot-color4">\', l = 6, e += \'<span class="cardTitleText material-icons menuIcon">\', l = 6, e += "explore</span>", l = 7, e += \'<span class="cardTitleText">\', l = 7, e += " SPOT: interactive, fast facet browser</span>", l = 8, e += "<ul>", l = 9, e += "<li>", l = 10, e += \'<p class="cardText">\', l = 10, e += "SPOT is an interactive, fast data visualization tool. It was primarily designed as data exploration and analysis tool for complex multi-dimensional datasets. Users can visualize the data only with a few clicks. SPOT can be used to compare different datasets. It is also possible to connect to a Postresql server to analyze big datasets.</p></li></ul></div>", l = 12, e += \'<div class="mdl-cell mdl-cell--4-col spot-cell spot-trans spot-color4">\', l = 13, e += \'<span class="cardTitleText material-icons menuIcon">\', l = 13, e += "merge_type</span>", l = 14, e += \'<span class="cardTitleText">\', l = 14, e += "Highlights</span>", l = 15, e += "<ul>", l = 16, e += "<li>", l = 17, e += \'<div class="cardText">\', l = 17, e += "Specifically designed for scientific data visualization</div></li>", l = 18, e += "<li>", l = 19, e += \'<div class="cardText">\', l = 19, e += "Fully animated and interactive charts</div></li>", l = 20, e += "<li>", l = 21, e += \'<div class="cardText">\', l = 21, e += "Exploration sessions can be saved</div></li>", l = 22, e += "<li>", l = 23, e += \'<div class="cardText">\', l = 23, e += "Database connection (Postgresql)</div></li></ul></div>", l = 25, e += \'<div class="mdl-cell mdl-cell--4-col spot-cell spot-trans spot-color4">\', l = 26, e += \'<span class="cardTitleText material-icons menuIcon">\', l = 26, e += "extension</span>", l = 27, e += \'<span class="cardTitleText">\', l = 27, e += "  Modern tools</span>", l = 28, e += "<ul>", l = 29, e += "<li>", l = 30, e += \'<div class="cardText">\', l = 30, e += "Viewer is fully standalone (no server required)</div></li>", l = 31, e += "<li>", l = 32, e += \'<div class="cardText">\', l = 32, e += "Responsive interface: material design lite</div></li>", l = 33, e += "<li>", l = 34, e += \'<div class="cardText">\', l = 34, e += "Fast filtering (~1M data points in ~30ms)</div></li>", l = 35, e += "<li>", l = 36, e += \'<div class="cardText">\', l = 36, e += "Cross platform (desktop, mobile and tablet)</div></li></ul></div>", l = 38, e += \'<div class="mdl-cell mdl-cell--4-col mdl-shadow--2dp spot-cell spot-trans spot-color4">\', l = 39, e += \'<span class="cardTitleText material-icons menuIcon">\', l = 39, e += "lock_open</span>", l = 40, e += \'<span class="cardTitleText">\', l = 40, e += "  Open Source</span>", l = 41, e += "<ul>", l = 42, e += "<li>", l = 43, e += \'<div class="cardText">\', l = 43, e += "Permissive Open source Licence (Apache 2.0)</div></li>", l = 44, e += "<li>", l = 45, e += \'<div class="cardText">\', l = 45, e += "Continuous Integration</div></li>", l = 46, e += "<li>", l = 47, e += \'<div class="cardText">\', l = 47, e += "Documented (jsdoc) and tested (jasmine)</div></li>", l = 48, e += "<li>", l = 49, e += \'<div class="cardText">\', l = 49, e += "Generic tool to be useful in any scientific project</div></li></ul></div></div>", l = 51, e += \'<div class="mdl-layout-spacer"></div>\', l = 53, e += \'<footer class="mdl-mega-footer spot-cell spot-trans spot-color4">\', l = 54, e += \'<div class="spot-footer">\', l = 58, e += \'<div class="spot-footer-item">\', l = 59, e += \'<a class="spotlink" data-hook="demo-session" href="">\', l = 60, e += \'<span class="footerImg material-icons menuIcon">\', l = 60, e += "ondemand_video</span>", l = 61, e += \'<span class="footerItem">\', l = 61, e += "Demo</span></a></div>", l = 62, e += \'<div class="spot-footer-item">\', l = 63, e += \'<a class="spotlink" data-hook="tutorialpage" href="https://nlesc.github.io/spot-tutorial/tutorial" target="_blank">\', l = 64, e += \'<span class="footerImg material-icons menuIcon">\', l = 64, e += "link</span>", l = 65, e += \'<span class="footerItem">\', l = 65, e += "Tutorial</span></a></div>", l = 66, e += \'<div class="spot-footer-item">\', l = 67, e += \'<a class="spotlink" data-hook="githubpage" href="https://github.com/NLeSC/spot" target="_blank">\', l = 68, e += \'<span class="footerImg material-icons menuIcon">\', l = 68, e += "link</span>", l = 69, e += \'<span class="footerItem">\', l = 69, e += "Project</span></a></div></div>", l = 70, e += \'<div class="spot-footer">\', l = 71, e += \'<span class="versionText">\', l = 71, e += "Version 0.2.0</span></div></footer></main>";\n    } catch (t) {\n      pug.rethrow(t, a, l);\n    }\n\n    return e;\n  };\n\n  puglatizer["main"] = function template(a) {\n    var l,\n        s,\n        t = "";\n\n    try {\n      s = 1, t += "<body>", s = 2, t += \'<div class="mdl-layout mdl-js-layout" data-hook="test">\', s = 4, t += \'<div class="mdl-layout__header-row mdl-color--blue-grey-900">\', s = 5, t += "\x3c!-- Title--\x3e", s = 6, t += \'<span class="mdl-layout-title mdl-layout--large-screen-only">\', s = 7, t += \'<a data-hook="nlescpage" href="https://www.esciencecenter.nl" target="_blank">\', s = 8, t += \'<div class="demo-avatar"></div></a></span>\', s = 9, t += "\x3c!-- Add spacer, to align navigation to the right--\x3e", s = 10, t += \'<div class="mdl-layout-spacer"></div>\', s = 11, t += "\x3c!-- Navigation. We hide it in small screens.--\x3e", s = 12, t += \'<nav class="mdl-navigation mdl-layout--large-screen-only">\', s = 13, t += \'<a class="mdl-navigation__link" href="/home">\', s = 13, t += "Home</a>", s = 14, t += \'<a class="mdl-navigation__link" href="/datasets">\', s = 14, t += "Data</a>", s = 15, t += \'<a class="mdl-navigation__link" href="/analyze">\', s = 15, t += "Analysis</a>", s = 16, t += \'<a class="mdl-navigation__link" href="#" data-hook="help-button" id="help-button">\', s = 17, t += \'<i class="material-icons">\', s = 17, t += "help</i></a></nav></div>", s = 24, t += \'<div class="mdl-drawer mdl-layout__drawer mdl-color--blue-grey-900 mdl-layout--small-screen-only">\', s = 25, t += \'<span class="mdl-layout-title">\', s = 27, t += \'<a data-hook="nlescpage" href="https://www.esciencecenter.nl" target="_blank">\', s = 28, t += \'<div class="demo-avatar" style="margin-top: 20px; margin-bottom: 50px;"></div></a></span>\', s = 29, t += \'<nav class="mdl-navigation">\', s = 30, t += \'<a class="mdl-navigation__link" href="/home">\', s = 30, t += "Home</a>", s = 31, t += \'<a class="mdl-navigation__link" href="/datasets">\', s = 31, t += "Data</a>", s = 32, t += \'<a class="mdl-navigation__link" href="/analyze">\', s = 32, t += "Dashboard</a>", s = 33, t += \'<a class="mdl-navigation__link" href="#" data-hook="help-button" id="help-button">\', s = 34, t += \'<i class="material-icons">\', s = 34, t += "help</i>", s = 35, t += "<span>", s = 35, t += "Help</span></a></nav>", s = 37, t += \'<div class="mdl-drawer-separator"></div>\', s = 38, t += \'<div class="mdl-layout-spacer" style="margin-top: 20px;"></div>\', s = 40, t += \'<nav class="mdl-navigation">\', s = 41, t += \'<a class="mdl-navigation__link" href="https://nlesc.github.io/spot-tutorial/tutorial">\', s = 41, t += "Tutorial</a>", s = 42, t += \'<a class="mdl-navigation__link" href="https://github.com/NLeSC/spot">\', s = 42, t += "Github</a></nav>", s = 44, t += \'<div class="mdl-drawer-separator"></div>\', s = 45, t += \'<div class="mdl-layout-spacer" style="margin-bottom: 20px;"></div>\', s = 46, t += \'<span class="versionText">\', s = 46, t += "Version 0.2.0</span></div>", s = 49, t += \'<div class="mdl-grid">\', s = 50, t += \'<dialog class="mdl-dialog" data-hook="main-dialog" id="main-dialog" style="border: none; width: min-content; background: transparent;">\', s = 51, t += \'<div class="mdl-dialog__content">\', s = 53, t += \'<p2 class="mdl-progress mdl-js-progress mdl-progress__indeterminate"></p2></div></dialog></div>\', s = 58, t += \'<main class="mdl-layout__content" data-hook="page-container"></main>\', s = 60, t += \'<div class="mdl-progress mdl-js-progress" id="progress-bar" style="width: 100%; height: 5%; display: none"></div>\', s = 62, t += \'<div class="mdl-js-snackbar mdl-snackbar" id="snack-bar" aria-live="assertive" aria-atomic="true" aria-relevant="text">\', s = 63, t += \'<div class="mdl-snackbar__text"></div>\', s = 64, t += \'<button class="mdl-snackbar__action" type="button"></button></div></div></body>\';\n    } catch (i) {\n      pug.rethrow(i, l, s);\n    }\n\n    return t;\n  };\n\n  return puglatizer;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDMyNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy90ZW1wbGF0ZXMuanM/ODI2MiJdLCJzb3VyY2VzQ29udGVudCI6WyI7KGZ1bmN0aW9uKHJvb3QsZmFjdG9yeSl7XHJcbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XHJcbiAgICAgICAgZGVmaW5lKFtdLCBmYWN0b3J5KTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygcm9vdCA9PT0gJ3VuZGVmaW5lZCcgfHwgcm9vdCAhPT0gT2JqZWN0KHJvb3QpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncHVnbGF0aXplcjogd2luZG93IGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhbiBvYmplY3QnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcm9vdC5wdWdsYXRpemVyID0gZmFjdG9yeSgpO1xyXG4gICAgfVxyXG59KHRoaXMsIGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIHB1Z19jbGFzc2VzX29iamVjdCh2YWwpIHsgdmFyIGNsYXNzU3RyaW5nID0gJycsIHBhZGRpbmcgPSAnJzsgZm9yICh2YXIga2V5IGluIHZhbCkgeyBpZiAoa2V5ICYmIHZhbFtrZXldICYmIHB1Z19oYXNfb3duX3Byb3BlcnR5LmNhbGwodmFsLCBrZXkpKSB7IHZhciBjbGFzc1N0cmluZyA9IGNsYXNzU3RyaW5nICsgcGFkZGluZyArIGtleTsgdmFyIHBhZGRpbmcgPSAnICc7IH0gfSByZXR1cm4gY2xhc3NTdHJpbmc7IH0gICAgZnVuY3Rpb24gcHVnX2NsYXNzZXNfYXJyYXkodmFsLCBlc2NhcGluZykgeyB2YXIgY2xhc3NTdHJpbmcgPSAnJywgY2xhc3NOYW1lLCBwYWRkaW5nID0gJycsIGVzY2FwZUVuYWJsZWQgPSBBcnJheS5pc0FycmF5KGVzY2FwaW5nKTsgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOyBpKyspIHsgdmFyIGNsYXNzTmFtZSA9IHB1Z19jbGFzc2VzKHZhbFtpXSk7IGlmICghY2xhc3NOYW1lKSBjb250aW51ZTsgZXNjYXBlRW5hYmxlZCAmJiBlc2NhcGluZ1tpXSAmJiAoY2xhc3NOYW1lID0gcHVnX2VzY2FwZShjbGFzc05hbWUpKTsgdmFyIGNsYXNzU3RyaW5nID0gY2xhc3NTdHJpbmcgKyBwYWRkaW5nICsgY2xhc3NOYW1lOyB2YXIgcGFkZGluZyA9ICcgJzsgfSByZXR1cm4gY2xhc3NTdHJpbmc7IH0gICAgZnVuY3Rpb24gcHVnX21lcmdlKGUscil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgdD1lWzBdLGc9MTtnPGUubGVuZ3RoO2crKyl0PXB1Z19tZXJnZSh0LGVbZ10pO3JldHVybiB0fWZvcih2YXIgbiBpbiByKWlmKFwiY2xhc3NcIj09PW4pe3ZhciBhPWVbbl18fFtdO2Vbbl09KEFycmF5LmlzQXJyYXkoYSk/YTpbYV0pLmNvbmNhdChyW25dfHxbXSl9ZWxzZSBpZihcInN0eWxlXCI9PT1uKXt2YXIgYT1wdWdfc3R5bGUoZVtuXSk7YT1hJiZcIjtcIiE9PWFbYS5sZW5ndGgtMV0/YStcIjtcIjphO3ZhciBsPXB1Z19zdHlsZShyW25dKTtsPWwmJlwiO1wiIT09bFtsLmxlbmd0aC0xXT9sK1wiO1wiOmwsZVtuXT1hK2x9ZWxzZSBlW25dPXJbbl07cmV0dXJuIGV9XHJcbiAgICBmdW5jdGlvbiBwdWdfY2xhc3NlcyhzLHIpe3JldHVybiBBcnJheS5pc0FycmF5KHMpP3B1Z19jbGFzc2VzX2FycmF5KHMscik6cyYmXCJvYmplY3RcIj09dHlwZW9mIHM/cHVnX2NsYXNzZXNfb2JqZWN0KHMpOnN8fFwiXCJ9XHJcbiAgICBmdW5jdGlvbiBwdWdfc3R5bGUocil7aWYoIXIpcmV0dXJuXCJcIjtpZihcIm9iamVjdFwiPT10eXBlb2Ygcil7dmFyIHQ9XCJcIjtmb3IodmFyIGUgaW4gcilwdWdfaGFzX293bl9wcm9wZXJ0eS5jYWxsKHIsZSkmJih0PXQrZStcIjpcIityW2VdK1wiO1wiKTtyZXR1cm4gdH1yZXR1cm4gcitcIlwifVxyXG4gICAgZnVuY3Rpb24gcHVnX2F0dHIodCxlLG4sZil7cmV0dXJuIGUhPT0hMSYmbnVsbCE9ZSYmKGV8fFwiY2xhc3NcIiE9PXQmJlwic3R5bGVcIiE9PXQpP2U9PT0hMD9cIiBcIisoZj90OnQrJz1cIicrdCsnXCInKTooXCJmdW5jdGlvblwiPT10eXBlb2YgZS50b0pTT04mJihlPWUudG9KU09OKCkpLFwic3RyaW5nXCI9PXR5cGVvZiBlfHwoZT1KU09OLnN0cmluZ2lmeShlKSxufHwtMT09PWUuaW5kZXhPZignXCInKSk/KG4mJihlPXB1Z19lc2NhcGUoZSkpLFwiIFwiK3QrJz1cIicrZSsnXCInKTpcIiBcIit0K1wiPSdcIitlLnJlcGxhY2UoLycvZyxcIiYjMzk7XCIpK1wiJ1wiKTpcIlwifVxyXG4gICAgZnVuY3Rpb24gcHVnX2F0dHJzKHQscil7dmFyIGE9XCJcIjtmb3IodmFyIHMgaW4gdClpZihwdWdfaGFzX293bl9wcm9wZXJ0eS5jYWxsKHQscykpe3ZhciB1PXRbc107aWYoXCJjbGFzc1wiPT09cyl7dT1wdWdfY2xhc3Nlcyh1KSxhPXB1Z19hdHRyKHMsdSwhMSxyKSthO2NvbnRpbnVlfVwic3R5bGVcIj09PXMmJih1PXB1Z19zdHlsZSh1KSksYSs9cHVnX2F0dHIocyx1LCExLHIpfXJldHVybiBhfVxyXG4gICAgZnVuY3Rpb24gcHVnX2VzY2FwZShlKXt2YXIgYT1cIlwiK2UsdD0oL1tcIiY8Pl0vKS5leGVjKGEpO2lmKCF0KXJldHVybiBlO3ZhciByLGMsbixzPVwiXCI7Zm9yKHI9dC5pbmRleCxjPTA7cjxhLmxlbmd0aDtyKyspe3N3aXRjaChhLmNoYXJDb2RlQXQocikpe2Nhc2UgMzQ6bj1cIiZxdW90O1wiO2JyZWFrO2Nhc2UgMzg6bj1cIiZhbXA7XCI7YnJlYWs7Y2FzZSA2MDpuPVwiJmx0O1wiO2JyZWFrO2Nhc2UgNjI6bj1cIiZndDtcIjticmVhaztkZWZhdWx0OmNvbnRpbnVlfWMhPT1yJiYocys9YS5zdWJzdHJpbmcoYyxyKSksYz1yKzEscys9bn1yZXR1cm4gYyE9PXI/cythLnN1YnN0cmluZyhjLHIpOnN9XHJcbiAgICBmdW5jdGlvbiBwdWdfcmV0aHJvdyhuLGUscix0KXtpZighKG4gaW5zdGFuY2VvZiBFcnJvcikpdGhyb3cgbjtpZighKFwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3cmJmV8fHQpKXRocm93IG4ubWVzc2FnZSs9XCIgb24gbGluZSBcIityLG47dHJ5e3Q9dHx8cmVxdWlyZShcImZzXCIpLnJlYWRGaWxlU3luYyhlLFwidXRmOFwiKX1jYXRjaChpKXtwdWdfcmV0aHJvdyhuLG51bGwscil9dmFyIGE9MyxvPXQuc3BsaXQoXCJcXG5cIiksaD1NYXRoLm1heChyLWEsMCkscz1NYXRoLm1pbihvLmxlbmd0aCxyK2EpLGE9by5zbGljZShoLHMpLm1hcChmdW5jdGlvbihuLGUpe3ZhciB0PWUraCsxO3JldHVybih0PT1yP1wiICA+IFwiOlwiICAgIFwiKSt0K1wifCBcIitufSkuam9pbihcIlxcblwiKTt0aHJvdyBuLnBhdGg9ZSxuLm1lc3NhZ2U9KGV8fFwiUHVnXCIpK1wiOlwiK3IrXCJcXG5cIithK1wiXFxuXFxuXCIrbi5tZXNzYWdlLG59XHJcbiAgICB2YXIgcHVnID0ge1xyXG4gICAgXHRtZXJnZTpmdW5jdGlvbiBwdWdfbWVyZ2UoZSxyKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKHZhciB0PWVbMF0sZz0xO2c8ZS5sZW5ndGg7ZysrKXQ9cHVnX21lcmdlKHQsZVtnXSk7cmV0dXJuIHR9Zm9yKHZhciBuIGluIHIpaWYoXCJjbGFzc1wiPT09bil7dmFyIGE9ZVtuXXx8W107ZVtuXT0oQXJyYXkuaXNBcnJheShhKT9hOlthXSkuY29uY2F0KHJbbl18fFtdKX1lbHNlIGlmKFwic3R5bGVcIj09PW4pe3ZhciBhPXB1Z19zdHlsZShlW25dKTthPWEmJlwiO1wiIT09YVthLmxlbmd0aC0xXT9hK1wiO1wiOmE7dmFyIGw9cHVnX3N0eWxlKHJbbl0pO2w9bCYmXCI7XCIhPT1sW2wubGVuZ3RoLTFdP2wrXCI7XCI6bCxlW25dPWErbH1lbHNlIGVbbl09cltuXTtyZXR1cm4gZX0sXHJcbiAgICBcdGNsYXNzZXM6ZnVuY3Rpb24gcHVnX2NsYXNzZXMocyxyKXtyZXR1cm4gQXJyYXkuaXNBcnJheShzKT9wdWdfY2xhc3Nlc19hcnJheShzLHIpOnMmJlwib2JqZWN0XCI9PXR5cGVvZiBzP3B1Z19jbGFzc2VzX29iamVjdChzKTpzfHxcIlwifSxcclxuICAgIFx0c3R5bGU6ZnVuY3Rpb24gcHVnX3N0eWxlKHIpe2lmKCFyKXJldHVyblwiXCI7aWYoXCJvYmplY3RcIj09dHlwZW9mIHIpe3ZhciB0PVwiXCI7Zm9yKHZhciBlIGluIHIpcHVnX2hhc19vd25fcHJvcGVydHkuY2FsbChyLGUpJiYodD10K2UrXCI6XCIrcltlXStcIjtcIik7cmV0dXJuIHR9cmV0dXJuIHIrXCJcIn0sXHJcbiAgICBcdGF0dHI6ZnVuY3Rpb24gcHVnX2F0dHIodCxlLG4sZil7cmV0dXJuIGUhPT0hMSYmbnVsbCE9ZSYmKGV8fFwiY2xhc3NcIiE9PXQmJlwic3R5bGVcIiE9PXQpP2U9PT0hMD9cIiBcIisoZj90OnQrJz1cIicrdCsnXCInKTooXCJmdW5jdGlvblwiPT10eXBlb2YgZS50b0pTT04mJihlPWUudG9KU09OKCkpLFwic3RyaW5nXCI9PXR5cGVvZiBlfHwoZT1KU09OLnN0cmluZ2lmeShlKSxufHwtMT09PWUuaW5kZXhPZignXCInKSk/KG4mJihlPXB1Z19lc2NhcGUoZSkpLFwiIFwiK3QrJz1cIicrZSsnXCInKTpcIiBcIit0K1wiPSdcIitlLnJlcGxhY2UoLycvZyxcIiYjMzk7XCIpK1wiJ1wiKTpcIlwifSxcclxuICAgIFx0YXR0cnM6ZnVuY3Rpb24gcHVnX2F0dHJzKHQscil7dmFyIGE9XCJcIjtmb3IodmFyIHMgaW4gdClpZihwdWdfaGFzX293bl9wcm9wZXJ0eS5jYWxsKHQscykpe3ZhciB1PXRbc107aWYoXCJjbGFzc1wiPT09cyl7dT1wdWdfY2xhc3Nlcyh1KSxhPXB1Z19hdHRyKHMsdSwhMSxyKSthO2NvbnRpbnVlfVwic3R5bGVcIj09PXMmJih1PXB1Z19zdHlsZSh1KSksYSs9cHVnX2F0dHIocyx1LCExLHIpfXJldHVybiBhfSxcclxuICAgIFx0ZXNjYXBlOmZ1bmN0aW9uIHB1Z19lc2NhcGUoZSl7dmFyIGE9XCJcIitlLHQ9KC9bXCImPD5dLykuZXhlYyhhKTtpZighdClyZXR1cm4gZTt2YXIgcixjLG4scz1cIlwiO2ZvcihyPXQuaW5kZXgsYz0wO3I8YS5sZW5ndGg7cisrKXtzd2l0Y2goYS5jaGFyQ29kZUF0KHIpKXtjYXNlIDM0Om49XCImcXVvdDtcIjticmVhaztjYXNlIDM4Om49XCImYW1wO1wiO2JyZWFrO2Nhc2UgNjA6bj1cIiZsdDtcIjticmVhaztjYXNlIDYyOm49XCImZ3Q7XCI7YnJlYWs7ZGVmYXVsdDpjb250aW51ZX1jIT09ciYmKHMrPWEuc3Vic3RyaW5nKGMscikpLGM9cisxLHMrPW59cmV0dXJuIGMhPT1yP3MrYS5zdWJzdHJpbmcoYyxyKTpzfSxcclxuICAgIFx0cmV0aHJvdzpmdW5jdGlvbiBwdWdfcmV0aHJvdyhuLGUscix0KXtpZighKG4gaW5zdGFuY2VvZiBFcnJvcikpdGhyb3cgbjtpZighKFwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3cmJmV8fHQpKXRocm93IG4ubWVzc2FnZSs9XCIgb24gbGluZSBcIityLG47dHJ5e3Q9dHx8cmVxdWlyZShcImZzXCIpLnJlYWRGaWxlU3luYyhlLFwidXRmOFwiKX1jYXRjaChpKXtwdWdfcmV0aHJvdyhuLG51bGwscil9dmFyIGE9MyxvPXQuc3BsaXQoXCJcXG5cIiksaD1NYXRoLm1heChyLWEsMCkscz1NYXRoLm1pbihvLmxlbmd0aCxyK2EpLGE9by5zbGljZShoLHMpLm1hcChmdW5jdGlvbihuLGUpe3ZhciB0PWUraCsxO3JldHVybih0PT1yP1wiICA+IFwiOlwiICAgIFwiKSt0K1wifCBcIitufSkuam9pbihcIlxcblwiKTt0aHJvdyBuLnBhdGg9ZSxuLm1lc3NhZ2U9KGV8fFwiUHVnXCIpK1wiOlwiK3IrXCJcXG5cIithK1wiXFxuXFxuXCIrbi5tZXNzYWdlLG59XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHB1Z2xhdGl6ZXIgPSB7fVxyXG4gICAgcHVnbGF0aXplcltcImFuYWx5emVcIl0gPSB7fVxyXG4gICAgcHVnbGF0aXplcltcImFuYWx5emVcIl1bXCJmYWNldGJhckl0ZW1cIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZShhKXt2YXIgdCxlLGM9XCJcIjt0cnl7ZT0xLGMrPSc8c3BhbiBjbGFzcz1cIm1kbC1jaGlwIHZhcmlhYmxlQ2hpcFwiIGRhdGEtaG9vaz1cImZhY2V0LWJhci1pdGVtXCIgaWQ9XCJcIj4nLGU9MixjKz0nPHNwYW4gY2xhc3M9XCJtZGwtY2hpcF9fdGV4dFwiIGRhdGEtaG9vaz1cImZhY2V0LWJhci1pdGVtLWJ1dHRvblwiPjwvc3Bhbj48L3NwYW4+J31jYXRjaChwKXtwdWcucmV0aHJvdyhwLHQsZSl9cmV0dXJuIGN9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJhbmFseXplXCJdW1wicGFnZVwiXSA9IGZ1bmN0aW9uIHRlbXBsYXRlKHQpe3ZhciBhLG8sbD1cIlwiO3RyeXtvPTEsbCs9JzxkaXYgY2xhc3M9XCJtZGwtbGF5b3V0IG1kbC1qcy1sYXlvdXQgbWRsLWxheW91dC0tZml4ZWQtaGVhZGVyXCI+JyxvPTIsbCs9JzxtYWluIGNsYXNzPVwibWRsLWxheW91dF9fY29udGVudFwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XCI+JyxvPTMsbCs9JzxoZWFkZXIgY2xhc3M9XCJkZW1vLWhlYWRlciBtZGwtbGF5b3V0X19oZWFkZXIgc3BvdC1jb2xvci10b3AtYmFyIG1kbC1jb2xvci10ZXh0LS1ncmV5LTYwMFwiPicsbz01LGwrPSc8ZGl2IGNsYXNzPVwibWRsLWxheW91dF9faGVhZGVyLXJvd1wiPicsbz02LGwrPSc8c3BhbiBjbGFzcz1cIm1kbC1sYXlvdXQtdGl0bGUgdW5zZWxlY3RhYmxlXCI+JyxvPTYsbCs9XCJBbmFseXplPC9zcGFuPlwiLG89OCxsKz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQtc3BhY2VyXCI+PC9kaXY+JyxvPTEwLGwrPSc8c3BhbiBjbGFzcz1cInVuc2VsZWN0YWJsZVwiIGRhdGEtaG9vaz1cImRhdGEtc3RyaW5nXCI+PC9zcGFuPicsbz0xMixsKz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQtc3BhY2VyXCI+PC9kaXY+JyxvPTE0LGwrPSc8c3BhbiBkYXRhLXBvc2l0aW9uPVwiYm90dG9tXCIgZGF0YS1zdGVwPVwiMFwiIGRhdGEtaGludD1cIlwiPjwvc3Bhbj4nLG89MTYsbCs9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0taWNvbiBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGlkPVwic2F2ZVNlc3Npb25CdXR0b25cIiBkYXRhLWhpbnRQb3NpdGlvbj1cImJvdHRvbVwiIGRhdGEtcG9zaXRpb249XCJib3R0b21cIiBkYXRhLWhpbnQ9XCJUaGlzIGJ1dHRvbnMgc2F2ZXMgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cIj4nLG89MTcsbCs9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj4nLG89MTcsbCs9XCJzYXZlPC9pPjwvYnV0dG9uPlwiLG89MTgsbCs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJzYXZlU2Vzc2lvbkJ1dHRvblwiPicsbz0xOSxsKz1cIlNhdmUgdGhlIHNlc3Npb248L2Rpdj5cIixvPTIxLGwrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLWljb24gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBpZD1cInJlc2V0RmlsdGVyc0J1dHRvblwiIGRhdGEtcG9zaXRpb249XCJib3R0b21cIiBkYXRhLXN0ZXA9XCIxXCIgZGF0YS1oaW50PVwiVGhpcyBidXR0b24gY2xlYXJzIGFsbCBleGlzdGluZyBmaWx0ZXJzLlwiPicsbz0yMixsKz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPicsbz0yMixsKz1cImNsZWFyX2FsbDwvaT48L2J1dHRvbj5cIixvPTIzLGwrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlXCIgZm9yPVwicmVzZXRGaWx0ZXJzQnV0dG9uXCI+JyxvPTI0LGwrPVwiQ2xlYXIgYWxsIGZpbHRlcnMgb2YgYWxsIHBsb3RzPC9kaXY+XCIsbz0yNixsKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1pY29uIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgaWQ9XCJ2aWV3QWxsXCIgZGF0YS1wb3NpdGlvbj1cImJvdHRvbVwiIGRhdGEtc3RlcD1cIjJcIiBkYXRhLWhpbnQ9XCJUaGlzIGJ1dHRvbiBjbG9zZXMgYWxsIGNvbmZpZ3VyYXRpb24gd2luZG93c1wiPicsbz0yNyxsKz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPicsbz0yNyxsKz1cImNyb3Bfb3JpZ2luYWw8L2k+PC9idXR0b24+XCIsbz0yOCxsKz0nPGRpdiBjbGFzcz1cIm1kbC10b29sdGlwIG1kbC10b29sdGlwLS1sYXJnZVwiIGZvcj1cInZpZXdBbGxcIj4nLG89MjksbCs9XCJDbG9zZSBhbGwgY29uZmlndXJhdGlvbiB3aW5kb3dzPC9kaXY+XCIsbz0zMSxsKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1pY29uIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgaWQ9XCJmdWxsc2NyZWVuQnV0dG9uXCIgZGF0YS1wb3NpdGlvbj1cImJvdHRvbVwiIGRhdGEtc3RlcD1cIjNcIiBkYXRhLWhpbnQ9XCJUaGlzIGJ1dHRvbiBoaWRlcyBmYWNldCBhbmQgY2hhcnQgYmFycy5cIj4nLG89MzIsbCs9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj4nLG89MzIsbCs9XCJmdWxsc2NyZWVuPC9pPjwvYnV0dG9uPlwiLG89MzMsbCs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJmdWxsc2NyZWVuQnV0dG9uXCI+JyxvPTM0LGwrPVwiU2hvdyBvciBoaWRlIGNoYXJ0IGFuZCBmYWNldCBiYXJzPC9kaXY+PC9kaXY+XCIsbz0zNixsKz0nPGRpdiBjbGFzcz1cImNoYXJ0QmFyIHNwb3QtY29sb3ItdG9wLWJhciBtZGwtY29sb3ItdGV4dC0tZ3JleS02MDBcIiBkYXRhLWhvb2s9XCJjaGFydC1iYXJcIiBkYXRhLXBvc2l0aW9uPVwiYm90dG9tXCIgZGF0YS1zdGVwPVwiNFwiIGRhdGEtaGludD1cIlRoZXNlIGFyZSB0aGUgYXZhaWxhYmxlIGNoYXJ0IHR5cGVzLiBJZiB5b3Ugd2FudCB0byBhZGQgYSBjaGFydCwganVzdCAmbHQ7YiZndDtjbGljayZsdDsvYiZndDsgb24gaXRzIGljb24gYW5kIGl0IHdpbGwgYmUgY3JlYXRlZCEgU2ltcGxlLCByaWdodD8gXCI+JyxvPTM3LGwrPSc8c3BhbiBjbGFzcz1cImNoYXJ0QmFyVGV4dFwiPicsbz0zNyxsKz1cIkNsaWNrIG9uIGEgY2hhcnQgaWNvbiB0byBzdGFydCBhIG5ldyBwbG90PC9zcGFuPlwiLG89MzksbCs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIGhvcml6b250YWxiYXJjaGFydEljb24gd2lkZ2V0SWNvblwiIGRhdGEtaG9vaz1cImhvcml6b250YWxiYXJjaGFydFwiIGlkPVwiaG9yaXpvbnRhbGJhcmNoYXJ0XCIgZGF0YS1wb3NpdGlvbj1cImJvdHRvbVwiIGRhdGEtc3RlcD1cIjVcIiBkYXRhLWhpbnQ9XCJUaGlzIGFkZHMgYSBob3Jpem9udGFsIGJhciBjaGFydChoaXN0b2dyYW0pLiBUaGlzIGlzIGdvb2QgZm9yIGNhdGVnb3JpY2FsIGZhY2V0cy5cIj48L2Rpdj4nLG89NDAsbCs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJob3Jpem9udGFsYmFyY2hhcnRcIj4nLG89NDEsbCs9XCJDbGljayB0byBhZGQgYSBob3Jpem9udGFsIGJhciBjaGFydDwvZGl2PlwiLG89NDMsbCs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIGJhcmNoYXJ0SWNvbiB3aWRnZXRJY29uXCIgZGF0YS1ob29rPVwiYmFyY2hhcnRcIiBpZD1cImJhcmNoYXJ0XCIgZGF0YS1wb3NpdGlvbj1cImJvdHRvbVwiIGRhdGEtc3RlcD1cIjZcIiBkYXRhLWhpbnQ9XCJUaGlzIGFkZHMgYSB2ZXJ0aWNhbCBiYXIgY2hhcnQuXCI+PC9kaXY+JyxvPTQ0LGwrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlXCIgZm9yPVwiYmFyY2hhcnRcIj4nLG89NDUsbCs9XCJDbGljayB0byBhZGQgYSBiYXIgY2hhcnQ8L2Rpdj5cIixvPTQ3LGwrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBsaW5lY2hhcnRJY29uIHdpZGdldEljb25cIiBkYXRhLWhvb2s9XCJsaW5lY2hhcnRcIiBpZD1cImxpbmVjaGFydFwiIGRhdGEtcG9zaXRpb249XCJib3R0b21cIiBkYXRhLXN0ZXA9XCI3XCIgZGF0YS1oaW50PVwiVGhpcyBhZGRzIGEgbGluZSBjaGFydC5cIj48L2Rpdj4nLG89NDgsbCs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJsaW5lY2hhcnRcIj4nLG89NDksbCs9XCJDbGljayB0byBhZGQgYSBsaW5lIGNoYXJ0PC9kaXY+XCIsbz01MSxsKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgcGllY2hhcnRJY29uIHdpZGdldEljb25cIiBkYXRhLWhvb2s9XCJwaWVjaGFydFwiIGlkPVwicGllY2hhcnRcIiBkYXRhLXBvc2l0aW9uPVwiYm90dG9tXCIgZGF0YS1zdGVwPVwiOFwiIGRhdGEtaGludD1cIlRoaXMgYWRkcyBhIHBpZSBjaGFydC5cIj48L2Rpdj4nLG89NTIsbCs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJwaWVjaGFydFwiPicsbz01MyxsKz1cIkNsaWNrIHRvIGFkZCBhIHBpZSBjaGFydDwvZGl2PlwiLG89NTUsbCs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIGJ1YmJsZXBsb3RJY29uIHdpZGdldEljb25cIiBkYXRhLWhvb2s9XCJidWJibGVwbG90XCIgaWQ9XCJidWJibGVwbG90XCIgZGF0YS1wb3NpdGlvbj1cImJvdHRvbVwiIGRhdGEtc3RlcD1cIjlcIiBkYXRhLWhpbnQ9XCJUaGlzIGFkZHMgYSBidWJsZSBjaGFydC5cIj48L2Rpdj4nLG89NTYsbCs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJidWJibGVwbG90XCI+JyxvPTU3LGwrPVwiQ2xpY2sgdG8gYWRkIGEgYnViYmxlcGxvdCBjaGFydDwvZGl2PlwiLG89NTksbCs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIHNjYXR0ZXJjaGFydEljb24gd2lkZ2V0SWNvblwiIGRhdGEtaG9vaz1cInNjYXR0ZXJjaGFydFwiIGlkPVwic2NhdHRlcmNoYXJ0XCIgZGF0YS1wb3NpdGlvbj1cImJvdHRvbVwiIGRhdGEtc3RlcD1cIjEwXCIgZGF0YS1oaW50PVwiVGhpcyBhZGRzIGEgM0Qgc2NhdHRlciBjaGFydC5cIj48L2Rpdj4nLG89NjAsbCs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJzY2F0dGVyY2hhcnRcIj4nLG89NjEsbCs9XCJDbGljayB0byBhZGQgYSAzZCBzY2F0dGVyIGNoYXJ0PC9kaXY+XCIsbz02MyxsKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgcmFkYXJjaGFydEljb24gd2lkZ2V0SWNvblwiIGRhdGEtaG9vaz1cInJhZGFyY2hhcnRcIiBpZD1cInJhZGFyY2hhcnRcIiBkYXRhLXBvc2l0aW9uPVwiYm90dG9tXCIgZGF0YS1zdGVwPVwiMTFcIiBkYXRhLWhpbnQ9XCJUaGlzIGFkZHMgYSByYWRhciBjaGFydC5cIj48L2Rpdj4nLG89NjQsbCs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJyYWRhcmNoYXJ0XCI+JyxvPTY1LGwrPVwiQ2xpY2sgdG8gYWRkIGEgcmFkYXIgY2hhcnQ8L2Rpdj5cIixvPTY3LGwrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBuZXR3b3JrY2hhcnRJY29uIHdpZGdldEljb25cIiBkYXRhLWhvb2s9XCJuZXR3b3JrY2hhcnRcIiBpZD1cIm5ldHdvcmtjaGFydFwiIGRhdGEtcG9zaXRpb249XCJib3R0b21cIiBkYXRhLXN0ZXA9XCIxMlwiIGRhdGEtaGludD1cIlRoaXMgYWRkcyBhIG5ldHdvcmsgY2hhcnQuXCI+PC9kaXY+JyxvPTY4LGwrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlXCIgZm9yPVwibmV0d29ya2NoYXJ0XCI+JyxvPTY5LGwrPVwiQ2xpY2sgdG8gYWRkIGEgbmV0d29yayBjaGFydDwvZGl2PjwvZGl2PlwiLG89NzEsbCs9JzxkaXYgY2xhc3M9XCJmYWNldEJhciBzcG90LWNvbG9yLXRvcC1iYXJcIiBkYXRhLWhvb2s9XCJmYWNldC1iYXJcIiBpZD1cImZhY2V0LWJhclwiIGRhdGEtcG9zaXRpb249XCJib3R0b21cIiBkYXRhLXN0ZXA9XCIxM1wiIGRhdGEtaGludD1cIlRoaXMgaXMgd2hlcmUgeW91IHdpbGwgaGF2ZSB5b3VyIHZhcmlhYmxlcyhmYWNldHMpLiBKdXN0ICZsdDtiJmd0O2RyYWcgYW5kIGRyb3AmbHQ7L2ImZ3Q7IHRoZXNlIGZhY2V0cyB0byBmaWVsZCBvZiB0aGUgY2hhcnRzIHRvIHZpc3VhbGl6ZS5cIj4nLG89NzIsbCs9JzxzcGFuIGNsYXNzPVwiZmFjZXRCYXJUZXh0XCI+JyxvPTcyLGwrPVwiRHJvcCB2YXJpYWJsZSBvbiBhIGNoYXJ0LCBvciBjbGljayB0byBlZGl0PC9zcGFuPlwiLG89NzMsbCs9JzxkaXYgY2xhc3M9XCJmYWNldEJhckl0ZW1zXCIgZGF0YS1ob29rPVwiZmFjZXQtYmFyLWl0ZW1zXCIgaWQ9XCJmYWNldEJhclwiPjwvZGl2PjwvZGl2Picsbz03NCxsKz0nPGRpdiBjbGFzcz1cIm1kbC10b29sdGlwIG1kbC10b29sdGlwLS1sYXJnZVwiIGlkPVwiZmFjZXQtYmFyLXRvb2x0aXBcIiBmb3I9XCJmYWNldC1iYXJcIj4nLG89NzUsbCs9XCJEcm9wIHZhcmlhYmxlIG9uIGEgY2hhcnQsIG9yIGNsaWNrIHRvIGVkaXQ8L2Rpdj48L2hlYWRlcj5cIixvPTc3LGwrPSc8ZGl2IGNsYXNzPVwid2lkZ2V0RHJvcFpvbmVcIiBpZD1cIndpZGdldHNcIiBkYXRhLWhvb2s9XCJ3aWRnZXRzXCI+PC9kaXY+PC9tYWluPjwvZGl2Pid9Y2F0Y2goaSl7cHVnLnJldGhyb3coaSxhLG8pfXJldHVybiBsfTtcclxuXHJcbiAgICBwdWdsYXRpemVyW1wiYW5hbHl6ZVwiXVtcInNsb3RcIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZSh0KXt2YXIgbyxhLGQ9XCJcIjt0cnl7YT0xLGQrPSc8ZGl2IGNsYXNzPVwic2xvdCBtZGwtc2hhZG93LS0yZHBcIiBkYXRhLWhvb2s9XCJzbG90XCI+JyxhPTIsZCs9JzxkaXYgY2xhc3M9XCJzbG90VGV4dCBjbGlja1RhcmdldFwiPicsYT0zLGQrPSc8YiBkYXRhLWhvb2s9XCJkZXNjcmlwdGlvblwiPjwvYj4nLGE9NCxkKz1cIjxici8+XCIsYT01LGQrPSc8aSBkYXRhLWhvb2s9XCJyZXF1aXJlZFwiPjwvaT48L2Rpdj4nLGE9NixkKz0nPGRpdiBjbGFzcz1cInNsb3RDaGlwIGNsaWNrVGFyZ2V0XCIgZGF0YS1ob29rPVwiZHJvcC16b25lXCI+JyxhPTcsZCs9JzxzcGFuIGRhdGEtaG9vaz1cImNoaXAtdGV4dFwiPjwvc3Bhbj48L2Rpdj4nLGE9OCxkKz0nPGRpdiBjbGFzcz1cInNsb3RCdXR0b25cIiBkYXRhLWhvb2s9XCJidXR0b24tZGl2XCI+JyxhPTksZCs9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0taWNvblwiIGRhdGEtaG9vaz1cImRlbGV0ZVwiPicsYT0xMCxkKz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPicsYT0xMCxkKz1cImRlbGV0ZTwvaT48L2J1dHRvbj48L2Rpdj48L2Rpdj5cIn1jYXRjaChpKXtwdWcucmV0aHJvdyhpLG8sYSl9cmV0dXJuIGR9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJhbmFseXplXCJdW1wid2lkZ2V0RnJhbWVcIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZSh0KXt2YXIgbyxsLGk9XCJcIjt0cnl7bD0xLGkrPSc8ZGl2IGNsYXNzPVwid2lkZ2V0RnJhbWUgbWRsLWNvbG9yLS13aGl0ZSBtZGwtc2hhZG93LS0yZHBcIj4nLGw9MyxpKz0nPGRpdiBjbGFzcz1cImNvbmZpZ1ZpZXdcIiBkYXRhLWhvb2s9XCJjb25maWctdmlld1wiPicsbD00LGkrPSc8ZGl2IGNsYXNzPVwid2lkZ2V0RHJhZ0JhclwiPicsbD01LGkrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtYnV0dG9uLS1pY29uIG1kbC1qcy1idXR0b24gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBkYXRhLWhvb2s9XCJjbG9zZVwiIGlkPVwiY2hhcnREZWxldGVCdXR0b24yXCI+JyxsPTYsaSs9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj4nLGw9NixpKz1cImRlbGV0ZTwvaT48L2J1dHRvbj5cIixsPTcsaSs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJjaGFydERlbGV0ZUJ1dHRvbjJcIj4nLGw9OCxpKz1cIkRlbGV0ZSB0aGlzIGNoYXJ0PC9kaXY+XCIsbD05LGkrPSc8c3BhbiBjbGFzcz1cIndpZGdldEhlYWRlclwiIGRhdGEtaG9vaz1cIndpZGdldEhlYWRlclwiPjwvc3Bhbj4nLGw9MTAsaSs9JzxkaXYgY2xhc3M9XCJtZGwtbGF5b3V0LXNwYWNlclwiPjwvZGl2PicsbD0xMSxpKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWJ1dHRvbi0taWNvbiBtZGwtanMtYnV0dG9uIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZGF0YS1ob29rPVwiZWRpdFwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0XCIgaWQ9XCJjaGFydERvbmVCdXR0b25cIj4nLGw9MTIsaSs9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj4nLGw9MTIsaSs9XCJkb25lPC9pPjwvYnV0dG9uPlwiLGw9MTMsaSs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJjaGFydERvbmVCdXR0b25cIj4nLGw9MTQsaSs9XCJDbG9zZSBjb25maWd1cmF0aW9uIHZpZXc8L2Rpdj48L2Rpdj5cIixsPTE2LGkrPSc8ZGl2IGNsYXNzPVwic2xvdHNcIiBkYXRhLWhvb2s9XCJzbG90c1wiPjwvZGl2PjwvZGl2PicsbD0xOCxpKz0nPGRpdiBjbGFzcz1cIndpZGdldFZpZXdcIiBkYXRhLWhvb2s9XCJ3aWRnZXRcIj48L2Rpdj4nLGw9MjAsaSs9JzxkaXYgY2xhc3M9XCJwbG90TWVudVwiIGRhdGEtaG9vaz1cInBsb3QtbWVudVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+JyxsPTIxLGkrPSc8ZGl2IGNsYXNzPVwid2lkZ2V0RHJhZ0JhclwiPicsbD0yMixpKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWJ1dHRvbi0taWNvbiBtZGwtanMtYnV0dG9uIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZGF0YS1ob29rPVwiY2xvc2VcIiBpZD1cImNoYXJ0RGVsZXRlQnV0dG9uMVwiPicsbD0yMyxpKz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPicsbD0yMyxpKz1cImRlbGV0ZTwvaT48L2J1dHRvbj5cIixsPTI0LGkrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlXCIgZm9yPVwiY2hhcnREZWxldGVCdXR0b24xXCI+JyxsPTI1LGkrPVwiRGVsZXRlIHRoaXMgY2hhcnQ8L2Rpdj5cIixsPTI2LGkrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtYnV0dG9uLS1pY29uIG1kbC1qcy1idXR0b24gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBkYXRhLWhvb2s9XCJ6b29tLW91dFwiIGlkPVwiY2hhcnRVbmRvQnV0dG9uXCI+JyxsPTI3LGkrPSc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+JyxsPTI3LGkrPVwidW5kbzwvaT48L2J1dHRvbj5cIixsPTI4LGkrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlXCIgZm9yPVwiY2hhcnRVbmRvQnV0dG9uXCI+JyxsPTI5LGkrPVwiVW5kbyBzZWxlY3Rpb248L2Rpdj5cIixsPTMwLGkrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtYnV0dG9uLS1pY29uIG1kbC1qcy1idXR0b24gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBkYXRhLWhvb2s9XCJ6b29tLWluXCIgaWQ9XCJjaGFydFpvb21CdXR0b25cIj4nLGw9MzEsaSs9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj4nLGw9MzEsaSs9XCJ6b29tX2luPC9pPjwvYnV0dG9uPlwiLGw9MzIsaSs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJjaGFydFpvb21CdXR0b25cIj4nLGw9MzMsaSs9XCJab29tIGludG8gc2VsZWN0ZWQgcmVnaW9uPC9kaXY+XCIsbD0zNCxpKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWJ1dHRvbi0taWNvbiBtZGwtanMtYnV0dG9uIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZGF0YS1ob29rPVwic2F2ZVwiIGlkPVwiY2hhcnRTYXZlXCI+JyxsPTM1LGkrPSc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+JyxsPTM1LGkrPVwic2F2ZTwvaT48L2J1dHRvbj5cIixsPTM2LGkrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlXCIgZm9yPVwiY2hhcnRTYXZlXCI+JyxsPTM3LGkrPVwiU2F2ZSB0aGlzIGNoYXJ0PC9kaXY+XCIsbD0zOCxpKz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQtc3BhY2VyXCI+PC9kaXY+JyxsPTM5LGkrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtYnV0dG9uLS1pY29uIG1kbC1qcy1idXR0b24gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBkYXRhLWhvb2s9XCJlZGl0XCIgc3R5bGU9XCJmbG9hdDogcmlnaHQ7XCIgaWQ9XCJjaGFydENvbmZCdXR0b25cIj4nLGw9NDAsaSs9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj4nLGw9NDAsaSs9XCJjcmVhdGU8L2k+PC9idXR0b24+XCIsbD00MSxpKz0nPGRpdiBjbGFzcz1cIm1kbC10b29sdGlwIG1kbC10b29sdGlwLS1sYXJnZVwiIGZvcj1cImNoYXJ0Q29uZkJ1dHRvblwiPicsbD00MixpKz1cIk9wZW4gY29uZmlndXJhdGlvbiB2aWV3PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+XCJ9Y2F0Y2goYSl7cHVnLnJldGhyb3coYSxvLGwpfXJldHVybiBpfTtcclxuXHJcbiAgICBwdWdsYXRpemVyW1wiY29uZmlndXJlRGF0YXNldFwiXSA9IHt9XHJcbiAgICBwdWdsYXRpemVyW1wiY29uZmlndXJlRGF0YXNldFwiXVtcImZhY2V0XCJdID0gZnVuY3Rpb24gdGVtcGxhdGUodCl7dmFyIGwsYSxkPVwiXCI7dHJ5e2E9MSxkKz0nPGRpdiBjbGFzcz1cIm1kbC1jYXJkIG1kbC1zaGFkb3ctLTJkcFwiIGRhdGEtaG9vaz1cImZ1bGxpdGVtXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiBpbmhlcml0XCI+JyxhPTIsZCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fdGl0bGVcIj4nLGE9MyxkKz0nPGgyIGNsYXNzPVwibWRsLWNhcmRfX3RpdGxlLXRleHRcIiBkYXRhLWhvb2s9XCJuYW1lXCI+PC9oMj48L2Rpdj4nLGE9NSxkKz0nPGRpdiBjbGFzcz1cIm1kbC1jYXJkX19zdXBwb3J0aW5nLXRleHRcIiBkYXRhLWhvb2s9XCJkZXNjcmlwdGlvblwiPjwvZGl2PicsYT03LGQrPSc8ZGl2IGNsYXNzPVwibWRsLWNhcmRfX2FjdGlvbnMgbWRsLWNhcmQtLWJvcmRlclwiIGRhdGEtaG9vaz1cImFjdGlvbnNcIj4nLGE9OCxkKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWJ1dHRvbi0tY29sb3JlZCBtZGwtanMtYnV0dG9uIG1kbC1qcy1yaXBwbGUtZWZmZWN0IHVuc2VsZWN0YWJsZVwiIGRhdGEtaG9vaz1cInJlbW92ZUZhY2V0XCI+JyxhPTksZCs9XCJEZWxldGU8L2J1dHRvbj5cIixhPTEwLGQrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtYnV0dG9uLS1jb2xvcmVkIG1kbC1qcy1idXR0b24gbWRsLWpzLXJpcHBsZS1lZmZlY3QgdW5zZWxlY3RhYmxlXCIgZGF0YS1ob29rPVwiZHVwbGljYXRlRmFjZXRcIj4nLGE9MTEsZCs9XCJDb3B5IDwvYnV0dG9uPlwiLGE9MTIsZCs9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1idXR0b24tLWNvbG9yZWQgbWRsLWpzLWJ1dHRvbiBtZGwtanMtcmlwcGxlLWVmZmVjdCB1bnNlbGVjdGFibGVcIiBkYXRhLWhvb2s9XCJjb25maWd1cmVGYWNldFwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0XCI+JyxhPTEzLGQrPSc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+JyxhPTEzLGQrPVwic2V0dGluZ3M8L2k+PC9idXR0b24+PC9kaXY+XCIsYT0xNSxkKz0nPGRpdiBjbGFzcz1cIm1kbC1jYXJkX19tZW51XCI+JyxhPTE2LGQrPVwiPHNwYW4+XCIsYT0xNyxkKz0nPGxhYmVsIGNsYXNzPVwibWRsLXN3aXRjaCBtZGwtanMtc3dpdGNoIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZGF0YS1ob29rPVwiY2JsYWJlbFwiIGZvcj1cIlwiPicsYT0xOCxkKz0nPGlucHV0IGNsYXNzPVwibWRsLXN3aXRjaF9faW5wdXRcIiBkYXRhLWhvb2s9XCJjYlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiXCIvPjwvbGFiZWw+JyxhPTE5LGQrPSc8c3BhbiBjbGFzcz1cIm1kbC1zd2l0Y2hfX2xhYmVsXCI+PC9zcGFuPjwvc3Bhbj48L2Rpdj48L2Rpdj4nfWNhdGNoKGUpe3B1Zy5yZXRocm93KGUsbCxhKX1yZXR1cm4gZH07XHJcblxyXG4gICAgcHVnbGF0aXplcltcImNvbmZpZ3VyZURhdGFzZXRcIl1bXCJwYWdlXCJdID0gZnVuY3Rpb24gdGVtcGxhdGUodCl7dmFyIGwsYSxkPVwiXCI7dHJ5e2E9MSxkKz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQgbWRsLWpzLWxheW91dCBtZGwtbGF5b3V0LS1maXhlZC1oZWFkZXJcIj4nLGE9MixkKz0nPG1haW4gY2xhc3M9XCJtZGwtbGF5b3V0X19jb250ZW50XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIj4nLGE9MyxkKz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQgbWRsLWpzLWxheW91dCBtZGwtbGF5b3V0LS1maXhlZC1oZWFkZXJcIj4nLGE9NCxkKz0nPGhlYWRlciBjbGFzcz1cImRlbW8taGVhZGVyIG1kbC1sYXlvdXRfX2hlYWRlciBtZGwtY29sb3ItLWdyZXktMTAwIG1kbC1jb2xvci10ZXh0LS1ncmV5LTYwMFwiPicsYT01LGQrPSc8ZGl2IGNsYXNzPVwibWRsLWxheW91dF9faGVhZGVyLXJvd1wiPicsYT02LGQrPSc8c3BhbiBjbGFzcz1cIm1kbC1sYXlvdXQtdGl0bGVcIj4nLGE9NixkKz1cIkNvbmZpZ3VyZSBkYXRhc2V0PC9zcGFuPlwiLGE9OCxkKz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQtc3BhY2VyXCI+PC9kaXY+JyxhPTEwLGQrPSc8c3BhbiBjbGFzcz1cInVuc2VsZWN0YWJsZVwiIGRhdGEtaG9vaz1cImRhdGEtc3RyaW5nXCI+JyxhPTExLGQrPVwiU2VsZWN0IGFuZCBjb25maWd1cmUgZmFjZXRzPC9zcGFuPlwiLGE9MTMsZCs9JzxkaXYgY2xhc3M9XCJtZGwtbGF5b3V0LXNwYWNlclwiPjwvZGl2PicsYT0xNSxkKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1pY29uIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZGF0YS1ob29rPVwiZW5hYmxlLWFsbC1idXR0b25cIiBpZD1cImVhYlwiPicsYT0xNixkKz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPicsYT0xNixkKz1cImNoZWNrX2JveDwvaT48L2J1dHRvbj5cIixhPTE3LGQrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlXCIgZm9yPVwiZWFiXCI+JyxhPTE4LGQrPVwiRW5hYmxlIGFsbCBmYWNldHM8L2Rpdj5cIixhPTIwLGQrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLWljb24gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBkYXRhLWhvb2s9XCJkaXNhYmxlLWFsbC1idXR0b25cIiBpZD1cImRhYlwiPicsYT0yMSxkKz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPicsYT0yMSxkKz1cImNoZWNrX2JveF9vdXRsaW5lX2JsYW5rPC9pPjwvYnV0dG9uPlwiLGE9MjIsZCs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJkYWJcIj4nLGE9MjMsZCs9XCJEaXNhYmxlIGFsbCBmYWNldHM8L2Rpdj5cIixhPTI1LGQrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLWljb24gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBkYXRhLWhvb2s9XCJhZGQtYnV0dG9uXCIgaWQ9XCJ0dDJcIj4nLGE9MjYsZCs9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj4nLGE9MjYsZCs9XCJhZGQ8L2k+PC9idXR0b24+XCIsYT0yNyxkKz0nPGRpdiBjbGFzcz1cIm1kbC10b29sdGlwIG1kbC10b29sdGlwLS1sYXJnZVwiIGZvcj1cInR0MlwiPicsYT0yOCxkKz1cIkFkZCBhIG5ldyBmYWNldDwvZGl2PlwiLGE9MzAsZCs9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0taWNvbiBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGRhdGEtaG9vaz1cInJlc2Nhbi1idXR0b25cIiBpZD1cInR0MVwiPicsYT0zMSxkKz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPicsYT0zMSxkKz1cImF1dG9yZW5ldzwvaT48L2J1dHRvbj5cIixhPTMyLGQrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlXCIgZm9yPVwidHQxXCI+JyxhPTMzLGQrPVwiQW5hbHl6ZSBkYXRhIGFuZCBhdXRvY29uZmlndXJlIGZhY2V0czwvZGl2PlwiLGE9MzUsZCs9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0taWNvbiBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGRhdGEtaG9vaz1cInNlYXJjaC1idXR0b25cIiBpZD1cInR0M1wiPicsYT0zNixkKz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPicsYT0zNixkKz1cInNlYXJjaDwvaT48L2J1dHRvbj5cIixhPTM3LGQrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlXCIgZm9yPVwidHQzXCI+JyxhPTM4LGQrPVwiU2hvdyBvciBoaWRlIHNlYXJjaCBiYXI8L2Rpdj48L2Rpdj5cIixhPTQwLGQrPSc8ZGl2IGNsYXNzPVwibWRsLWxheW91dF9faGVhZGVyLXJvd1wiIGRhdGEtaG9vaz1cInNlYXJjaC1iYXJcIj4nLGE9NDEsZCs9JzxkaXYgY2xhc3M9XCJtZGwtbGF5b3V0LXNwYWNlclwiPjwvZGl2PicsYT00MixkKz0nPHNwYW4gY2xhc3M9XCJtZGwtY29sb3ItLXdoaXRlIG1kbC1jb2xvci10ZXh0LS1wcmltYXJ5IHNlYXJjaEJhclwiPicsYT00NCxkKz0nPHNwYW4gY2xhc3M9XCJtZGwtdGV4dGZpZWxkIHNlYXJjaEJhclwiPicsYT00NSxkKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXQgc2VhcmNoQmFyXCIgZGF0YS1ob29rPVwiZmFjZXQtc2VsZWN0b3JcIiB0eXBlPVwidGV4dFwiIGlkPVwidHQ1XCIvPicsYT00NixkKz0nPGRpdiBjbGFzcz1cIm1kbC10b29sdGlwIG1kbC10b29sdGlwLS1sYXJnZVwiIGZvcj1cInR0NVwiPicsYT00NyxkKz1cIlNlYXJjaCBmYWNldCBuYW1lIGFuZCBkZXNjcmlwdGlvbjwvZGl2Pjwvc3Bhbj5cIixhPTQ5LGQrPVwiPHNwYW4+XCIsYT01MCxkKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1pY29uIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZGF0YS1ob29rPVwiY2xlYXItYnV0dG9uXCIgaWQ9XCJ0dDRcIj4nLGE9NTEsZCs9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj4nLGE9NTEsZCs9XCJjbG9zZTwvaT48L2J1dHRvbj5cIixhPTUyLGQrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlXCIgZm9yPVwidHQ0XCI+JyxhPTUzLGQrPVwiQ2xlYXIgc2VhcmNoPC9kaXY+PC9zcGFuPjwvc3Bhbj5cIixhPTU0LGQrPSc8ZGl2IGNsYXNzPVwibWRsLWxheW91dC1zcGFjZXJcIj48L2Rpdj48L2Rpdj48L2hlYWRlcj4nLGE9NTYsZCs9JzxkaXYgZGF0YS1ob29rPVwid2lkZ2V0c1wiPicsYT01OCxkKz0nPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCI+JyxhPTU5LGQrPSc8ZGl2IGNsYXNzPVwibWRsLXRleHRmaWVsZCBtZGwtanMtdGV4dGZpZWxkIG1kbC10ZXh0ZmllbGQtLWZsb2F0aW5nLWxhYmVsIG1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbFwiPicsYT02MCxkKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiB0eXBlPVwidGV4dFwiIGlkPVwibmFtZVwiLz4nLGE9NjEsZCs9JzxsYWJlbCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2xhYmVsXCIgZm9yPVwibmFtZVwiPicsYT02MixkKz1cIkRhdGFzZXQgbmFtZTwvbGFiZWw+PC9kaXY+XCIsYT02NCxkKz0nPGRpdiBjbGFzcz1cIm1kbC10ZXh0ZmllbGQgbWRsLWpzLXRleHRmaWVsZCBtZGwtY2VsbCBtZGwtY2VsbCBtZGwtY2VsbC0tNy1jb2xcIj4nLGE9NjUsZCs9Jzx0ZXh0YXJlYSBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0XCIgdHlwZT1cInRleHRcIiByb3dzPVwiM1wiIGlkPVwiZGVzY3JpcHRpb25cIj48L3RleHRhcmVhPicsYT02NixkKz0nPGxhYmVsIGNsYXNzPVwibWRsLXRleHRmaWVsZF9fbGFiZWxcIiBmb3I9XCJkZXNjcmlwdGlvblwiPicsYT02NyxkKz1cIkRhdGFzZXQgZGVzY3JpcHRpb248L2xhYmVsPjwvZGl2PjwvZGl2PlwiLGE9NjksZCs9JzxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIGRhdGEtaG9vaz1cImZhY2V0LWxpc3RcIj48L2Rpdj48L2Rpdj48L2Rpdj48L21haW4+PC9kaXY+J31jYXRjaChlKXtwdWcucmV0aHJvdyhlLGwsYSl9cmV0dXJuIGR9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJjb25maWd1cmVGYWNldFwiXSA9IHt9XHJcbiAgICBwdWdsYXRpemVyW1wiY29uZmlndXJlRmFjZXRcIl1bXCJjYXRlZ29yaWFsUnVsZVwiXSA9IGZ1bmN0aW9uIHRlbXBsYXRlKHQpe3ZhciBlLG8sYT1cIlwiO3RyeXtvPTEsYSs9XCI8dHI+XCIsbz0yLGErPVwiPHRkPlwiLG89MyxhKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiBkYXRhLWhvb2s9XCJjYXRlZ29yeS1leHByZXNzaW9uLWlucHV0XCIgdHlwZT1cInRleHRcIi8+PC90ZD4nLG89NCxhKz1cIjx0ZD5cIixvPTUsYSs9JzxpbnB1dCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0XCIgZGF0YS1ob29rPVwiY2F0ZWdvcnktZ3JvdXAtaW5wdXRcIiB0eXBlPVwidGV4dFwiLz48L3RkPicsbz02LGErPSc8dGQgZGF0YS1ob29rPVwiY2F0ZWdvcnktdmFsdWUtY291bnRcIj48L3RkPicsbz03LGErPVwiPHRkPlwiLG89OCxhKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGRhdGEtaG9vaz1cImNhdGVnb3J5LXJlbW92ZVwiPicsbz05LGErPSc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+JyxvPTksYSs9XCJyZW1vdmU8L2k+PC9idXR0b24+PC90ZD48L3RyPlwifWNhdGNoKGQpe3B1Zy5yZXRocm93KGQsZSxvKX1yZXR1cm4gYX07XHJcblxyXG4gICAgcHVnbGF0aXplcltcImNvbmZpZ3VyZUZhY2V0XCJdW1wiY2F0ZWdvcmlhbHRyYW5zZm9ybVwiXSA9IGZ1bmN0aW9uIHRlbXBsYXRlKHQpe3ZhciByLGUsYT1cIlwiO3RyeXt9Y2F0Y2goYyl7cHVnLnJldGhyb3coYyxyLGUpfXJldHVybiBhfTtcclxuXHJcbiAgICBwdWdsYXRpemVyW1wiY29uZmlndXJlRmFjZXRcIl1bXCJjb250aW51b3VzUnVsZVwiXSA9IGZ1bmN0aW9uIHRlbXBsYXRlKHQpe3ZhciBvLGUsbj1cIlwiO3RyeXtlPTEsbis9XCI8dHI+XCIsZT0yLG4rPVwiPHRkPlwiLGU9MyxuKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiBkYXRhLWhvb2s9XCJjb250aW51b3VzLXgtaW5wdXRcIiB0eXBlPVwidGV4dFwiLz48L3RkPicsZT00LG4rPVwiPHRkPlwiLGU9NSxuKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiBkYXRhLWhvb2s9XCJjb250aW51b3VzLWZ4LWlucHV0XCIgdHlwZT1cInRleHRcIi8+PC90ZD4nLGU9NixuKz1cIjx0ZD5cIixlPTcsbis9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBkYXRhLWhvb2s9XCJjb250aW51b3VzLXJlbW92ZVwiPicsZT04LG4rPSc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+JyxlPTgsbis9XCJyZW1vdmU8L2k+PC9idXR0b24+PC90ZD48L3RyPlwifWNhdGNoKHUpe3B1Zy5yZXRocm93KHUsbyxlKX1yZXR1cm4gbn07XHJcblxyXG4gICAgcHVnbGF0aXplcltcImNvbmZpZ3VyZUZhY2V0XCJdW1wiZmFjZXREZWZpbmVcIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZShsKXt2YXIgZSxkLGk9XCJcIjt0cnl7ZD0xLGkrPSc8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIj4nLGQ9MixpKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWdyaWRcIj4nLGQ9MyxpKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xLWNvbCBmYWNldEljb24gZmFjZXRJbmZvSWNvblwiPjwvZGl2PicsZD00LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEtY29sXCI+PC9kaXY+JyxkPTUsaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tOC1jb2xcIj4nLGQ9NixpKz0nPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCI+JyxkPTgsaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCIgaWQ9XCJkZWZpbmUtbmFtZS1kaXZcIj4nLGQ9OSxpKz0nPGRpdiBjbGFzcz1cIm1kbC10ZXh0ZmllbGQgbWRsLWpzLXRleHRmaWVsZCBtZGwtdGV4dGZpZWxkLS1mbG9hdGluZy1sYWJlbCBmdWxsd2lkdGhcIj4nLGQ9MTAsaSs9JzxpbnB1dCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0XCIgaWQ9XCJkZWZpbmUtbmFtZVwiIGRhdGEtaG9vaz1cImRlZmluZS1uYW1lLWlucHV0XCIgdHlwZT1cInRleHRcIi8+JyxkPTE0LGkrPSc8bGFiZWwgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19sYWJlbFwiIGZvcj1cImRlZmluZS1uYW1lXCI+JyxkPTE0LGkrPVwiTmFtZTwvbGFiZWw+PC9kaXY+PC9kaXY+XCIsZD0xNSxpKz0nPGRpdiBjbGFzcz1cIm1kbC10b29sdGlwIG1kbC10b29sdGlwLS1sYXJnZSBtZGwtdG9vbHRpcC0tcmlnaHRcIiBmb3I9XCJkZWZpbmUtbmFtZS1kaXZcIj4nLGQ9MTYsaSs9XCJTZXQgYSBkZXNjcmlwdGl2ZSBuYW1lIGZvciB0aGlzIGZhY2V0LiBUaGUgbmFtZSBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoaXMgZmFjZXQgb24gcGxvdHMgYW5kIGluIG1lbnVzLiA8L2Rpdj5cIixkPTE4LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiIGlkPVwiZGVmaW5lLXVuaXRzLWRpdlwiPicsZD0xOSxpKz0nPGRpdiBjbGFzcz1cIm1kbC10ZXh0ZmllbGQgbWRsLWpzLXRleHRmaWVsZCBtZGwtdGV4dGZpZWxkLS1mbG9hdGluZy1sYWJlbCBmdWxsd2lkdGhcIj4nLGQ9MjAsaSs9JzxpbnB1dCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0XCIgaWQ9XCJkZWZpbmUtdW5pdHNcIiBkYXRhLWhvb2s9XCJkZWZpbmUtdW5pdHMtaW5wdXRcIiB0eXBlPVwidGV4dFwiLz4nLGQ9MjQsaSs9JzxsYWJlbCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2xhYmVsXCIgZm9yPVwiZGVmaW5lLXVuaXRzXCI+JyxkPTI0LGkrPVwiVW5pdHM8L2xhYmVsPjwvZGl2PjwvZGl2PlwiLGQ9MjUsaSs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2UgbWRsLXRvb2x0aXAtLXJpZ2h0XCIgZm9yPVwiZGVmaW5lLXVuaXRzLWRpdlwiPicsZD0yNixpKz1cIlNldCB1bml0cyBmb3IgdGhpcyBmYWNldC4gVW5pdHMgYXJlIHByaW50ZWQgb24gcGxvdHMgd2hlcmUgYXBwbGljYWJsZS48L2Rpdj5cIixkPTI4LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiIGlkPVwiZGVmaW5lLWRlc2NyaXB0aW9uLWRpdlwiPicsZD0yOSxpKz0nPGRpdiBjbGFzcz1cIm1kbC10ZXh0ZmllbGQgbWRsLWpzLXRleHRmaWVsZCBtZGwgdGV4dGZpZWxkLS1mbG9hdGluZy1sYWJlbCBmdWxsd2lkdGhcIj4nLGQ9MzAsaSs9Jzx0ZXh0YXJlYSBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0XCIgaWQ9XCJkZWZpbmUtZGVzY3JpcHRpb25cIiBkYXRhLWhvb2s9XCJkZWZpbmUtZGVzY3JpcHRpb24taW5wdXRcIiB0eXBlPVwidGV4dFwiIHJvd3M9XCI1XCI+JyxkPTM0LGkrPVwiIDwvdGV4dGFyZWE+XCIsZD0zNSxpKz0nPGxhYmVsIGNsYXNzPVwibWRsLXRleHRmaWVsZF9fbGFiZWxcIiBmb3I9XCJkZWZpbmUtZGVzY3JpcHRpb25cIj4nLGQ9MzUsaSs9XCJEZXNjcmlwdGlvbjwvbGFiZWw+PC9kaXY+PC9kaXY+XCIsZD0zNixpKz0nPGRpdiBjbGFzcz1cIm1kbC10b29sdGlwIG1kbC10b29sdGlwLS1sYXJnZSBtZGwtdG9vbHRpcC0tcmlnaHRcIiBmb3I9XCJkZWZpbmUtZGVzY3JpcHRpb24tZGl2XCI+JyxkPTM3LGkrPVwiR2l2ZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmYWNldC4gV2hhdCBkbyBpdHMgdmFsdWVzIG1lYW4/IEhvdyBhcmUgdGhleSBjYWxjdWxhdGVkPzwvZGl2PjwvZGl2PjwvZGl2PlwiLGQ9MzksaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2xcIj48L2Rpdj48L2Rpdj4nLGQ9NDEsaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1ncmlkXCI+JyxkPTQyLGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEtY29sIGZhY2V0SWNvbiBmYWNldFR5cGVJY29uXCI+PC9kaXY+JyxkPTQzLGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEtY29sXCI+PC9kaXY+JyxkPTQ0LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTgtY29sXCI+JyxkPTQ2LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiPicsZD00OCxpKz0nPGRpdiBjbGFzcz1cIm1kbC1ncmlkIG1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIiBpZD1cImRlZmluZS10eXBlLWRpdlwiPicsZD00OSxpKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbFwiPicsZD01MCxpKz0nPGxhYmVsIGNsYXNzPVwibWRsLXJhZGlvIG1kbC1qcy1yYWRpbyBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGZvcj1cImRlZmluZS10eXBlLWNhdGVnb3JpYWxcIj4nLGQ9NTEsaSs9JzxpbnB1dCBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uXCIgaWQ9XCJkZWZpbmUtdHlwZS1jYXRlZ29yaWFsXCIgZGF0YS1ob29rPVwiZGVmaW5lLXR5cGUtY2F0ZWdvcmlhbFwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJ0eXBlXCIgdmFsdWU9XCJjYXRlZ29yaWFsXCIvPicsZD01NyxpKz0nPHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsXCI+JyxkPTU3LGkrPVwiQ2F0ZWdvcmlhbDwvc3Bhbj48L2xhYmVsPjwvZGl2PlwiLGQ9NTksaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2xcIj4nLGQ9NjAsaSs9JzxsYWJlbCBjbGFzcz1cIm1kbC1yYWRpbyBtZGwtanMtcmFkaW8gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBmb3I9XCJkZWZpbmUtdHlwZS1jb250aW51b3VzXCI+JyxkPTYxLGkrPSc8aW5wdXQgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvblwiIGlkPVwiZGVmaW5lLXR5cGUtY29udGludW91c1wiIGRhdGEtaG9vaz1cImRlZmluZS10eXBlLWNvbnRpbnVvdXNcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwidHlwZVwiIHZhbHVlPVwiY29udGludW91c1wiLz4nLGQ9NjcsaSs9JzxzcGFuIGNsYXNzPVwibWRsLXJhZGlvX19sYWJlbFwiPicsZD02NyxpKz1cIkNvbnRpbnVvdXM8L3NwYW4+PC9sYWJlbD48L2Rpdj5cIixkPTY5LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCI+JyxkPTcwLGkrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiZGVmaW5lLXR5cGUtZGF0ZXRpbWVcIj4nLGQ9NzEsaSs9JzxpbnB1dCBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uXCIgaWQ9XCJkZWZpbmUtdHlwZS1kYXRldGltZVwiIGRhdGEtaG9vaz1cImRlZmluZS10eXBlLWRhdGV0aW1lXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cInR5cGVcIiB2YWx1ZT1cImRhdGV0aW1lXCIvPicsZD03NyxpKz0nPHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsXCI+JyxkPTc3LGkrPVwiRGF0ZXRpbWU8L3NwYW4+PC9sYWJlbD48L2Rpdj5cIixkPTc5LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCI+JyxkPTgwLGkrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiZGVmaW5lLXR5cGUtZHVyYXRpb25cIj4nLGQ9ODEsaSs9JzxpbnB1dCBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uXCIgaWQ9XCJkZWZpbmUtdHlwZS1kdXJhdGlvblwiIGRhdGEtaG9vaz1cImRlZmluZS10eXBlLWR1cmF0aW9uXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cInR5cGVcIiB2YWx1ZT1cImR1cmF0aW9uXCIvPicsZD04NyxpKz0nPHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsXCI+JyxkPTg3LGkrPVwiRHVyYXRpb248L3NwYW4+PC9sYWJlbD48L2Rpdj5cIixkPTg5LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCI+JyxkPTkwLGkrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiZGVmaW5lLXR5cGUtdGV4dFwiPicsZD05MSxpKz0nPGlucHV0IGNsYXNzPVwibWRsLXJhZGlvX19idXR0b25cIiBpZD1cImRlZmluZS10eXBlLXRleHRcIiBkYXRhLWhvb2s9XCJkZWZpbmUtdHlwZS10ZXh0XCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cInR5cGVcIiB2YWx1ZT1cInRleHRcIi8+JyxkPTk3LGkrPSc8c3BhbiBjbGFzcz1cIm1kbC1yYWRpb19fbGFiZWxcIj4nLGQ9OTcsaSs9XCJUZXh0PC9zcGFuPjwvbGFiZWw+PC9kaXY+PC9kaXY+XCIsZD05OSxpKz0nPGRpdiBjbGFzcz1cIm1kbC10b29sdGlwIG1kbC10b29sdGlwLS1sYXJnZSBtZGwtdG9vbHRpcC0tcmlnaHRcIiBmb3I9XCJkZWZpbmUtdHlwZS1kaXZcIj4nLGQ9MTAwLGkrPVwiV2hhdCB2YWx1ZXMgZG9lcyB0aGlzIGZhY2V0IHRha2U/IElzIGl0IGEgY29udGludW91cyB2YWx1ZSAobGVuZ3RoLCB3ZWlnaHQsIGFtb3VudCk/IE9yIGEgbGFiZWwsIGNhdGVnb3J5ICgnaW1wb3J0YW50JywgJ3VyZ2VudCcsIG9yIGEgZGF5IG9mIHRoZSB3ZWVrLCAuLi4pLiBPciBpcyBpdCBhIGRhdGUsIHRpbWUgb3IgZHVyYXRpb24/IE9yIGFyYml0cmFyeSB0ZXh0PzwvZGl2PjwvZGl2PjwvZGl2PlwiLGQ9MTAyLGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTItY29sXCI+PC9kaXY+PC9kaXY+JyxkPTEwNCxpKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWdyaWRcIj4nLGQ9MTA1LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEtY29sIGZhY2V0SWNvbiBmYWNldEJhc2VWYWx1ZUljb25cIj48L2Rpdj4nLGQ9MTA2LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEtY29sXCI+PC9kaXY+JyxkPTEwNyxpKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS04LWNvbFwiPicsZD0xMDksaSs9JzxkaXYgY2xhc3M9XCJtZGwtZ3JpZCBtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCI+JyxkPTExMSxpKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIiBpZD1cImRlZmluZS1taXNzaW5nLWRpdlwiPicsZD0xMTIsaSs9JzxkaXYgY2xhc3M9XCJtZGwtdGV4dGZpZWxkIG1kbC1qcy10ZXh0ZmllbGQgbWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwgZnVsbHdpZHRoXCI+JyxkPTExMyxpKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiBpZD1cImRlZmluZS1taXNzaW5nLWlucHV0XCIgZGF0YS1ob29rPVwiZGVmaW5lLW1pc3NpbmctaW5wdXRcIiB0eXBlPVwidGV4dFwiLz4nLGQ9MTE3LGkrPSc8bGFiZWwgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19sYWJlbFwiIGZvcj1cImRlZmluZS1taXNzaW5nLWlucHV0XCI+JyxkPTExNyxpKz1cIk1pc3NpbmcgZGF0YSBpbmRpY2F0b3I8L2xhYmVsPjwvZGl2PjwvZGl2PlwiLGQ9MTE4LGkrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlIG1kbC10b29sdGlwLS1yaWdodFwiIGZvcj1cImRlZmluZS1taXNzaW5nLWRpdlwiPicsZD0xMTksaSs9XCJJbnZhbGlkLCB1bmRlZmluZWQsIG9yIG1pc3NpbmcgZGF0YSBhcmUgZGVhbHQgd2l0aCBhdXRvbWF0aWNhbGx5LCBidXQgc29tZXRpbWVzIGEgc3BlY2lhbCB2YWx1ZSBpcyB1c2VkIHRvIGluZGljYXRlIHRoZSBkYXRhIGlzIG1pc3NpbmcuIEVudGVyIHRob3NlIHZhbHVlcyBoZXJlLiBFeGFtcGxlOiA5OTksICd4JywgJ21pc3NpbmcnPC9kaXY+XCIsZD0xMjIsaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCIgaWQ9XCJkZWZpbmUtYWNjZXNzb3ItZGl2XCI+JyxkPTEyMyxpKz0nPGRpdiBjbGFzcz1cIm1kbC10ZXh0ZmllbGQgbWRsLWpzLXRleHRmaWVsZCBtZGwtdGV4dGZpZWxkLS1mbG9hdGluZy1sYWJlbCBmdWxsd2lkdGhcIj4nLGQ9MTI0LGkrPSc8aW5wdXQgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dFwiIGlkPVwiZGVmaW5lLWFjY2Vzc29yLWlucHV0XCIgZGF0YS1ob29rPVwiZGVmaW5lLWFjY2Vzc29yLWlucHV0XCIgdHlwZT1cInRleHRcIi8+JyxkPTEyOCxpKz0nPGxhYmVsIGNsYXNzPVwibWRsLXRleHRmaWVsZF9fbGFiZWxcIiBmb3I9XCJkZWZpbmUtYWNjZXNzb3ItaW5wdXRcIj4nLGQ9MTI4LGkrPVwiUHJvcGVydHkgbmFtZSBvciBpbmRleDwvbGFiZWw+PC9kaXY+PC9kaXY+XCIsZD0xMjksaSs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2UgbWRsLXRvb2x0aXAtLXJpZ2h0XCIgZm9yPVwiZGVmaW5lLWFjY2Vzc29yLWRpdlwiPicsZD0xMzAsaSs9XCJIb3cgd2UgZGVyaXZlIHRoZSBmYWNldCB2YWx1ZSBmcm9tIGEgZGF0YSBvYmplY3Q/IEVudGVyIGEgcHJvcGVydHkgbmFtZSAoZm9yIEpTT04gb3IgU1FMIGNvbHVtbnMpLCBvciBpbmRleCAoZm9yIGFycmF5cykuIFVzZSAnLicgbm90YXRpb24gdG8gYWNjZXNzIG5lc3RlZCBwcm9wZXJ0aWVzLjwvZGl2PlwiLGQ9MTMzLGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtZ3JpZFwiIGlkPVwiZGVmaW5lLXJlc2Nhbi1kaXZcIj4nLGQ9MTM0LGkrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtanMtcmlwcGxlLWVmZmVjdCBtZGwtYnV0dG9uLS1hY2NlbnRcIiBkYXRhLWhvb2s9XCJkZWZpbmUtcmVzY2FuLWJ1dHRvblwiPicsZD0xMzQsaSs9XCJTY2FuIGRhdGFzZXQ8L2J1dHRvbj48L2Rpdj5cIixkPTEzNyxpKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWdyaWRcIiBpZD1cImRlZmluZS1taW5pbXVtLWRpdlwiIGRhdGEtaG9vaz1cImRlZmluZS1taW5pbXVtLWRpdlwiPicsZD0xMzgsaSs9JzxkaXYgY2xhc3M9XCJtZGwtdGV4dGZpZWxkIG1kbC1qcy10ZXh0ZmllbGQgbWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwgbWRsLWNlbGwgbWRsLWNlbGwtLTEwLWNvbFwiIGlkPVwiZGVmaW5lLW1pbmltdW0tZGl2XCI+JyxkPTEzOSxpKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiBpZD1cImRlZmluZS1taW5pbXVtXCIgZGF0YS1ob29rPVwiZGVmaW5lLW1pbmltdW0taW5wdXRcIiB0eXBlPVwidGV4dFwiLz4nLGQ9MTQzLGkrPSc8bGFiZWwgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19sYWJlbFwiIGZvcj1cInNhbXBsZTRcIj4nLGQ9MTQzLGkrPVwiTWluaW11bSB2YWx1ZTwvbGFiZWw+PC9kaXY+XCIsZD0xNDUsaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2xcIj4nLGQ9MTQ2LGkrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLWljb24gbWRsLWJ1dHRvbi0tY29sb3JlZFwiIGRhdGEtaG9vaz1cImJ1dHRvbi1taW52YWwtbWlzc2luZ1wiPicsZD0xNDcsaSs9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj4nLGQ9MTQ3LGkrPVwiY2FuY2VsPC9pPjwvYnV0dG9uPjwvZGl2PlwiLGQ9MTQ5LGkrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlIG1kbC10b29sdGlwLS1yaWdodFwiIGZvcj1cImRlZmluZS1taW5pbXVtLWRpdlwiPicsZD0xNTAsaSs9XCJTZXQgbWluaW11bSB2YWx1ZS48L2Rpdj48L2Rpdj5cIixkPTE1MyxpKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWdyaWRcIiBpZD1cImRlZmluZS1tYXhpbXVtLWRpdlwiIGRhdGEtaG9vaz1cImRlZmluZS1tYXhpbXVtLWRpdlwiPicsZD0xNTQsaSs9JzxkaXYgY2xhc3M9XCJtZGwtdGV4dGZpZWxkIG1kbC1qcy10ZXh0ZmllbGQgbWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwgbWRsLWNlbGwgbWRsLWNlbGwtLTEwLWNvbFwiIGlkPVwiZGVmaW5lLW1heGltdW0tZGl2XCI+JyxkPTE1NSxpKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiBpZD1cImRlZmluZS1tYXhpbXVtXCIgZGF0YS1ob29rPVwiZGVmaW5lLW1heGltdW0taW5wdXRcIiB0eXBlPVwidGV4dFwiLz4nLGQ9MTU5LGkrPSc8bGFiZWwgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19sYWJlbFwiIGZvcj1cInNhbXBsZTRcIj4nLGQ9MTU5LGkrPVwiTWF4aW11bSB2YWx1ZTwvbGFiZWw+PC9kaXY+XCIsZD0xNjEsaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2xcIj4nLGQ9MTYyLGkrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLWljb24gbWRsLWJ1dHRvbi0tY29sb3JlZFwiIGRhdGEtaG9vaz1cImJ1dHRvbi1tYXh2YWwtbWlzc2luZ1wiPicsZD0xNjMsaSs9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj4nLGQ9MTYzLGkrPVwiY2FuY2VsPC9pPjwvYnV0dG9uPjwvZGl2PlwiLGQ9MTY1LGkrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlIG1kbC10b29sdGlwLS1yaWdodFwiIGZvcj1cImRlZmluZS1tYXhpbXVtLWRpdlwiPicsZD0xNjYsaSs9XCJTZXQgbWF4aW11bSB2YWx1ZS48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj5cIixkPTE2OCxpKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0yLWNvbFwiPjwvZGl2PjwvZGl2PjwvZGl2Pid9Y2F0Y2godCl7cHVnLnJldGhyb3codCxlLGQpfXJldHVybiBpfTtcclxuXHJcbiAgICBwdWdsYXRpemVyW1wiY29uZmlndXJlRmFjZXRcIl1bXCJmYWNldFRyYW5zZm9ybUNhdGVnb3JpYWxcIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZShsKXt2YXIgdCxkLG89XCJcIjt0cnl7ZD0xLG8rPSc8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBkYXRhLWhvb2s9XCJ0cmFuc2Zvcm0tY2F0ZWdvcmlhbC1wYW5lbFwiPicsZD0zLG8rPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEtY29sIGZhY2V0SWNvbiBmYWNldENhdGVnb3JpYWxJY29uXCI+PC9kaXY+JyxkPTUsbys9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2xcIj48L2Rpdj4nLGQ9NyxvKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS04LWNvbFwiPicsZD04LG8rPSc8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBpZD1cInRyYW5zZm9ybS1jYXRlZ29yaWFsLWRpdlwiPicsZD0xMCxvKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbFwiIGRhdGEtaG9vaz1cImNhdGVnb3JpYWwtYWRkb25lLWJ1dHRvblwiPicsZD0xMSxvKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtanMtcmlwcGxlLWVmZmVjdFwiPicsZD0xMSxvKz1cIkFkZCBhIHJ1bGU8L2J1dHRvbj48L2Rpdj5cIixkPTEzLG8rPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTQtY29sXCIgZGF0YS1ob29rPVwiY2F0ZWdvcmlhbC1yZW1vdmVhbGwtYnV0dG9uXCI+JyxkPTE0LG8rPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCI+JyxkPTE0LG8rPVwiUmVtb3ZlIGFsbCBydWxlczwvYnV0dG9uPjwvZGl2PlwiLGQ9MTYsbys9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCI+JyxkPTE3LG8rPVwiPHRhYmxlPlwiLGQ9MTgsbys9XCI8dGhlYWQ+XCIsZD0xOSxvKz1cIjx0cj5cIixkPTIwLG8rPVwiPHRoPlwiLGQ9MjAsbys9XCJUZXh0PC90aD5cIixkPTIxLG8rPVwiPHRoPlwiLGQ9MjEsbys9XCJHcm91cDwvdGg+XCIsZD0yMixvKz1cIjx0aD5cIixkPTIyLG8rPVwiQ291bnQ8L3RoPlwiLGQ9MjMsbys9XCI8dGg+XCIsZD0yMyxvKz1cIlJlbW92ZTwvdGg+PC90cj48L3RoZWFkPlwiLGQ9MjQsbys9Jzx0Ym9keSBkYXRhLWhvb2s9XCJjYXRlZ29yaWFsLXJ1bGVzLXRhYmxlXCI+PC90Ym9keT48L3RhYmxlPjwvZGl2PjwvZGl2PicsZD0yNixvKz0nPGRpdiBjbGFzcz1cIm1kbC10b29sdGlwIG1kbC10b29sdGlwLS1sYXJnZSBtZGwtdG9vbHRpcC0tcmlnaHRcIiBmb3I9XCJ0cmFuc2Zvcm0tY2F0ZWdvcmlhbC1kaXZcIj4nLGQ9MjYsbys9XCIgXCIsZD0yNyxvKz1cIkFzc2lnbiBmYWNldCB2YWx1ZXMgdG8gZ3JvdXMuPC9kaXY+PC9kaXY+XCIsZD0yOSxvKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0yLWNvbFwiPjwvZGl2PjwvZGl2Pid9Y2F0Y2goYSl7cHVnLnJldGhyb3coYSx0LGQpfXJldHVybiBvfTtcclxuXHJcbiAgICBwdWdsYXRpemVyW1wiY29uZmlndXJlRmFjZXRcIl1bXCJmYWNldFRyYW5zZm9ybUNvbnRpbnVvdXNcIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZShsKXt2YXIgZSxkLGE9XCJcIjt0cnl7ZD0xLGErPSc8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBkYXRhLWhvb2s9XCJ0cmFuc2Zvcm0tY29udGludW91cy1wYW5lbFwiPicsZD0zLGErPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEtY29sIGZhY2V0SWNvbiBmYWNldENvbnRpbnVvdXNJY29uXCI+PC9kaXY+JyxkPTUsYSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2xcIj48L2Rpdj4nLGQ9NyxhKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS04LWNvbCBtZGwtZ3JpZFwiPicsZD05LGErPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTQtY29sXCI+JyxkPTEwLGErPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiZGVmaW5lLXRyYW5zZm9ybS1ub25lXCI+JyxkPTExLGErPSc8aW5wdXQgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvblwiIGlkPVwiZGVmaW5lLXRyYW5zZm9ybS1ub25lXCIgZGF0YS1ob29rPVwiZGVmaW5lLXRyYW5zZm9ybS1ub25lXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cInRyYW5zZm9ybXR5cGVcIiB2YWx1ZT1cIm5vbmVcIi8+JyxkPTE3LGErPSc8c3BhbiBjbGFzcz1cIm1kbC1yYWRpb19fbGFiZWxcIj4nLGQ9MTcsYSs9XCJObyB0cmFuc2Zvcm08L3NwYW4+PC9sYWJlbD48L2Rpdj5cIixkPTE5LGErPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTQtY29sXCI+JyxkPTIwLGErPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiZGVmaW5lLXRyYW5zZm9ybS1wZXJjZW50aWxlc1wiPicsZD0yMSxhKz0nPGlucHV0IGNsYXNzPVwibWRsLXJhZGlvX19idXR0b25cIiBpZD1cImRlZmluZS10cmFuc2Zvcm0tcGVyY2VudGlsZXNcIiBkYXRhLWhvb2s9XCJkZWZpbmUtdHJhbnNmb3JtLXBlcmNlbnRpbGVzXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cInRyYW5zZm9ybXR5cGVcIiB2YWx1ZT1cInBlcmNlbnRpbGVzXCIvPicsZD0yNyxhKz0nPHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsXCI+JyxkPTI3LGErPVwiUGVyY2VudGlsZXM8L3NwYW4+PC9sYWJlbD48L2Rpdj48L2Rpdj5cIixkPTI5LGErPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTItY29sXCI+PC9kaXY+PC9kaXY+J31jYXRjaChzKXtwdWcucmV0aHJvdyhzLGUsZCl9cmV0dXJuIGF9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJjb25maWd1cmVGYWNldFwiXVtcImZhY2V0VHJhbnNmb3JtRGF0ZXRpbWVcIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZShsKXt2YXIgZSxkLHQ9XCJcIjt0cnl7ZD0xLHQrPSc8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBkYXRhLWhvb2s9XCJ0cmFuc2Zvcm0tdGltZS1wYW5lbFwiPicsZD0zLHQrPSc8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiPicsZD00LHQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEtY29sIGZhY2V0SWNvbiBmYWNldFRpbWVJY29uXCI+PC9kaXY+JyxkPTUsdCs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2xcIj48L2Rpdj4nLGQ9Nyx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS04LWNvbCBtZGwtZ3JpZFwiPicsZD05LHQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtZ3JpZFwiIGlkPVwidHJhbnNmb3JtLXRpbWUtZm9ybWF0LWRpdlwiPicsZD0xMCx0Kz0nPGRpdiBjbGFzcz1cIm1kbC10ZXh0ZmllbGQgbWRsLWpzLXRleHRmaWVsZCBtZGwtdGV4dGZpZWxkLS1mbG9hdGluZy1sYWJlbCBtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2xcIj4nLGQ9MTEsdCs9JzxpbnB1dCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0XCIgaWQ9XCJ0cmFuc2Zvcm0tdGltZS1mb3JtYXRcIiBkYXRhLWhvb2s9XCJ0cmFuc2Zvcm0tdGltZS1mb3JtYXQtaW5wdXRcIiB0eXBlPVwidGV4dFwiLz4nLGQ9MTUsdCs9JzxsYWJlbCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2xhYmVsXCIgZm9yPVwidHJhbnNmb3JtLXRpbWUtZm9ybWF0XCI+JyxkPTE1LHQrPVwiSW5wdXQgdGltZSBmb3JtYXQ8L2xhYmVsPjwvZGl2PlwiLGQ9MTcsdCs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2xcIiBkYXRhLWhvb2s9XCJ0aW1lLXpvbmVzXCI+PC9kaXY+PC9kaXY+JyxkPTE5LHQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtZ3JpZFwiIGlkPVwidHJhbnNmb3JtLXRpbWUtdHJhbnNmb3JtZWRmb3JtYXQtZGl2XCI+JyxkPTIwLHQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sXCI+JyxkPTIxLHQrPVwiU2VsZWN0IGRhdGV0aW1lIHBhcnQ8L2Rpdj5cIixkPTIyLHQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sXCIgZGF0YS1ob29rPVwidGltZS1wYXJ0c1wiPjwvZGl2PjwvZGl2PicsZD0yNCx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWdyaWRcIiBpZD1cInRyYW5zZm9ybS10aW1lLXRyYW5zZm9ybWVkcmVmZXJlbmNlLWRpdlwiPicsZD0yNSx0Kz0nPGRpdiBjbGFzcz1cIm1kbC10ZXh0ZmllbGQgbWRsLWpzLXRleHRmaWVsZCBtZGwtdGV4dGZpZWxkLS1mbG9hdGluZy1sYWJlbCBtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2xcIj4nLGQ9MjYsdCs9JzxpbnB1dCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0XCIgaWQ9XCJ0cmFuc2Zvcm0tdGltZS10cmFuc2Zvcm1lZHJlZmVyZW5jZVwiIGRhdGEtaG9vaz1cInRyYW5zZm9ybS10aW1lLXRyYW5zZm9ybWVkcmVmZXJlbmNlLWlucHV0XCIgdHlwZT1cInRleHRcIi8+JyxkPTMwLHQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19sYWJlbFwiIGZvcj1cInRyYW5zZm9ybS10aW1lLXRyYW5zZm9ybWVkcmVmZXJlbmNlXCI+JyxkPTMwLHQrPVwiQWRkL3N1YnRyYWN0IHJlZmVyZW5jZSB0aW1lPC9sYWJlbD48L2Rpdj5cIixkPTMyLHQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sXCIgZGF0YS1ob29rPVwidHJhbnNmb3JtZWQtdGltZS16b25lc1wiPjwvZGl2PjwvZGl2PjwvZGl2PicsZD0zNCx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0yLWNvbFwiPjwvZGl2PjwvZGl2PjwvZGl2Pid9Y2F0Y2gobSl7cHVnLnJldGhyb3cobSxlLGQpfXJldHVybiB0fTtcclxuXHJcbiAgICBwdWdsYXRpemVyW1wiY29uZmlndXJlRmFjZXRcIl1bXCJmYWNldFRyYW5zZm9ybUR1cmF0aW9uXCJdID0gZnVuY3Rpb24gdGVtcGxhdGUobCl7dmFyIGQsZSxjPVwiXCI7dHJ5e2U9MSxjKz0nPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgZGF0YS1ob29rPVwidHJhbnNmb3JtLWR1cmF0aW9uLXBhbmVsXCI+JyxlPTMsYys9JzxkaXYgY2xhc3M9XCJtZGwtZ3JpZCBtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCI+JyxlPTQsYys9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2wgZmFjZXRJY29uIGZhY2V0VGltZUljb25cIj48L2Rpdj4nLGU9NSxjKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xLWNvbFwiPjwvZGl2PicsZT03LGMrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTgtY29sIG1kbC1ncmlkXCI+JyxlPTksYys9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1ncmlkXCI+JyxlPTEwLGMrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sXCI+JyxlPTExLGMrPVwiSW5wdXQgdW5pdHMgPC9kaXY+XCIsZT0xMixjKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbFwiIGRhdGEtaG9vaz1cImR1cmF0aW9uLXVuaXRzXCI+PC9kaXY+PC9kaXY+JyxlPTE0LGMrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtZ3JpZFwiPicsZT0xNSxjKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbFwiPicsZT0xNixjKz1cIk91dHB1dCB1bml0czwvZGl2PlwiLGU9MTcsYys9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNi1jb2xcIiBkYXRhLWhvb2s9XCJ0cmFuc2Zvcm1lZC1kdXJhdGlvbi11bml0c1wiPjwvZGl2PjwvZGl2PicsZT0xOSxjKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2wgbWRsLWdyaWRcIiBpZD1cInRyYW5zZm9ybS1kdXJhdGlvbi10cmFuc2Zvcm1lZHJlZmVyZW5jZS1kaXZcIj4nLGU9MjAsYys9JzxkaXYgY2xhc3M9XCJtZGwtdGV4dGZpZWxkIG1kbC1qcy10ZXh0ZmllbGQgbWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwgbWRsLWNlbGwgbWRsLWNlbGwtLTYtY29sXCI+JyxlPTIxLGMrPSc8aW5wdXQgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dFwiIGlkPVwidHJhbnNmb3JtLWR1cmF0aW9uLXRyYW5zZm9ybWVkcmVmZXJlbmNlXCIgZGF0YS1ob29rPVwidHJhbnNmb3JtLWR1cmF0aW9uLXRyYW5zZm9ybWVkcmVmZXJlbmNlLWlucHV0XCIgdHlwZT1cInRleHRcIi8+JyxlPTI1LGMrPSc8bGFiZWwgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19sYWJlbFwiIGZvcj1cInRyYW5zZm9ybS1kdXJhdGlvbi10cmFuc2Zvcm1lZHJlZmVyZW5jZVwiPicsZT0yNSxjKz1cIkFkZC9zdWJ0cmFjdCByZWZlcmVuY2UgdGltZTwvbGFiZWw+PC9kaXY+XCIsZT0yNyxjKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS02LWNvbFwiIGRhdGEtaG9vaz1cInRyYW5zZm9ybWVkLWR1cmF0aW9uLXpvbmVcIj48L2Rpdj48L2Rpdj48L2Rpdj4nLGU9MjksYys9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2xcIj48L2Rpdj48L2Rpdj48L2Rpdj4nfWNhdGNoKGkpe3B1Zy5yZXRocm93KGksZCxlKX1yZXR1cm4gY307XHJcblxyXG4gICAgcHVnbGF0aXplcltcImNvbmZpZ3VyZUZhY2V0XCJdW1wicGFnZVwiXSA9IGZ1bmN0aW9uIHRlbXBsYXRlKGEpe3ZhciBkLHQsbz1cIlwiO3RyeXt0PTEsbys9JzxkaXYgY2xhc3M9XCJtZGwtbGF5b3V0IG1kbC1qcy1sYXlvdXQgbWRsLWxheW91dC0tZml4ZWQtaGVhZGVyXCI+Jyx0PTIsbys9JzxtYWluIGNsYXNzPVwibWRsLWxheW91dF9fY29udGVudFwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XCI+Jyx0PTMsbys9JzxkaXYgY2xhc3M9XCJtZGwtbGF5b3V0IG1kbC1qcy1sYXlvdXQgbWRsLWxheW91dC0tZml4ZWQtaGVhZGVyXCI+Jyx0PTQsbys9JzxoZWFkZXIgY2xhc3M9XCJkZW1vLWhlYWRlciBtZGwtbGF5b3V0X19oZWFkZXIgbWRsLWNvbG9yLS1ncmV5LTEwMCBtZGwtY29sb3ItdGV4dC0tZ3JleS02MDBcIj4nLHQ9NSxvKz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXRfX2hlYWRlci1yb3dcIj4nLHQ9NixvKz0nPHNwYW4gY2xhc3M9XCJtZGwtbGF5b3V0LXRpdGxlXCI+Jyx0PTYsbys9XCJDb25maWd1cmUgZmFjZXQ8L3NwYW4+PC9kaXY+PC9oZWFkZXI+XCIsdD04LG8rPVwiPG1haW4+XCIsdD05LG8rPSc8ZGl2IGRhdGEtaG9vaz1cImZhY2V0LWRlZmluZVwiPjwvZGl2PicsdD0xMSxvKz0nPGRpdiBkYXRhLWhvb2s9XCJ0cmFuc2Zvcm0tY2F0ZWdvcmlhbC1wYW5lbFwiPicsdD0xMixvKz0nPGRpdiBkYXRhLWhvb2s9XCJmYWNldC10cmFuc2Zvcm0tY2F0ZWdvcmlhbFwiPjwvZGl2PjwvZGl2PicsdD0xMyxvKz0nPGRpdiBkYXRhLWhvb2s9XCJ0cmFuc2Zvcm0tY29udGludW91cy1wYW5lbFwiPicsdD0xNCxvKz0nPGRpdiBkYXRhLWhvb2s9XCJmYWNldC10cmFuc2Zvcm0tY29udGludW91c1wiPjwvZGl2PjwvZGl2PicsdD0xNSxvKz0nPGRpdiBkYXRhLWhvb2s9XCJ0cmFuc2Zvcm0tZGF0ZXRpbWUtcGFuZWxcIj4nLHQ9MTYsbys9JzxkaXYgZGF0YS1ob29rPVwiZmFjZXQtdHJhbnNmb3JtLWRhdGV0aW1lXCI+PC9kaXY+PC9kaXY+Jyx0PTE3LG8rPSc8ZGl2IGRhdGEtaG9vaz1cInRyYW5zZm9ybS1kdXJhdGlvbi1wYW5lbFwiPicsdD0xOCxvKz0nPGRpdiBkYXRhLWhvb2s9XCJmYWNldC10cmFuc2Zvcm0tZHVyYXRpb25cIj48L2Rpdj48L2Rpdj48L21haW4+PC9kaXY+PC9tYWluPjwvZGl2Pid9Y2F0Y2goZSl7cHVnLnJldGhyb3coZSxkLHQpfXJldHVybiBvfTtcclxuXHJcbiAgICBwdWdsYXRpemVyW1wiY29uZmlndXJlUGFydGl0aW9uXCJdID0ge31cclxuICAgIHB1Z2xhdGl6ZXJbXCJjb25maWd1cmVQYXJ0aXRpb25cIl1bXCJncm91cFwiXSA9IGZ1bmN0aW9uIHRlbXBsYXRlKHQpe3ZhciByLG8sYT1cIlwiO3RyeXtvPTEsYSs9XCI8dHI+XCIsbz0yLGErPSc8dGQgZGF0YS1ob29rPVwiZ3JvdXAtbGFiZWxcIj48L3RkPicsbz0zLGErPSc8dGQgZGF0YS1ob29rPVwiZ3JvdXAtY291bnRcIj48L3RkPjwvdHI+J31jYXRjaChkKXtwdWcucmV0aHJvdyhkLHIsbyl9cmV0dXJuIGF9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJjb25maWd1cmVQYXJ0aXRpb25cIl1bXCJwYWdlXCJdID0gZnVuY3Rpb24gdGVtcGxhdGUobCl7dmFyIGQsdCxpPVwiXCI7dHJ5e3Q9MSxpKz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQgbWRsLWpzLWxheW91dCBtZGwtbGF5b3V0LS1maXhlZC1oZWFkZXJcIj4nLHQ9MixpKz0nPG1haW4gY2xhc3M9XCJtZGwtbGF5b3V0X19jb250ZW50XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIj4nLHQ9NCxpKz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQgbWRsLWpzLWxheW91dCBtZGwtbGF5b3V0LS1maXhlZC1oZWFkZXJcIj4nLHQ9NSxpKz0nPGhlYWRlciBjbGFzcz1cImRlbW8taGVhZGVyIG1kbC1sYXlvdXRfX2hlYWRlciBtZGwtY29sb3ItLWdyZXktMTAwIG1kbC1jb2xvci10ZXh0LS1ncmV5LTYwMFwiPicsdD02LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWxheW91dF9faGVhZGVyLXJvd1wiPicsdD03LGkrPSc8c3BhbiBjbGFzcz1cIm1kbC1sYXlvdXQtdGl0bGVcIj4nLHQ9NyxpKz1cIkNvbmZpZ3VyZSBwYXJ0aXRpb248L3NwYW4+PC9kaXY+PC9oZWFkZXI+XCIsdD05LGkrPVwiPG1haW4+XCIsdD0xMCxpKz0nPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgZGF0YS1ob29rPVwicGFydGl0aW9uLWdlbmVyYWxcIj4nLHQ9MTEsaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2wgZmFjZXRJY29uIGZhY2V0SW5mb0ljb25cIj48L2Rpdj4nLHQ9MTIsaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2xcIj48L2Rpdj4nLHQ9MTMsaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tOC1jb2xcIj4nLHQ9MTQsaSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1ncmlkXCIgaWQ9XCJwYXJ0aXRpb24tbGFiZWwtZGl2XCI+Jyx0PTE1LGkrPSc8ZGl2IGNsYXNzPVwibWRsLXRleHRmaWVsZCBtZGwtanMtdGV4dGZpZWxkIG1kbC10ZXh0ZmllbGQtLWZsb2F0aW5nLWxhYmVsIG1kbC1jZWxsIG1kbC1jZWxsLS0xMi1jb2xcIj4nLHQ9MTYsaSs9JzxpbnB1dCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0XCIgaWQ9XCJwYXJ0aXRpb24tdGl0bGVcIiBkYXRhLWhvb2s9XCJwYXJ0aXRpb24tdGl0bGUtaW5wdXRcIiB0eXBlPVwidGV4dFwiLz4nLHQ9MjAsaSs9JzxsYWJlbCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2xhYmVsXCIgZm9yPVwiXCI+Jyx0PTIwLGkrPVwiTGFiZWw8L2xhYmVsPjwvZGl2PjwvZGl2PlwiLHQ9MjIsaSs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2UgbWRsLXRvb2x0aXAtLXJpZ2h0XCIgZm9yPVwicGFydGl0aW9uLWxhYmVsLWRpdlwiPicsdD0yMyxpKz1cIlRoZSBsYWJlbCBhbG9uZyB0aGlzIGF4aXM8L2Rpdj5cIix0PTI1LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtZ3JpZFwiIGlkPVwicGFydGl0aW9uLW9wdGlvbnMtZGl2XCI+Jyx0PTI2LGkrPSc8ZGl2IGNsYXNzPVwibWRsLXRleHRmaWVsZCBtZGwtanMtdGV4dGZpZWxkIG1kbC10ZXh0ZmllbGQtLWZsb2F0aW5nLWxhYmVsIG1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbFwiPicsdD0yNyxpKz0nPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGZvcj1cInBhcnRpdGlvbi1jYjFcIj4nLHQ9MjgsaSs9JzxpbnB1dCBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInBhcnRpdGlvbi1jYjFcIiBkYXRhLWhvb2s9XCJzaG93LWxhYmVsXCIvPicsdD0yOSxpKz0nPHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCI+Jyx0PTI5LGkrPVwiU2hvdyBsYWJlbDwvc3Bhbj48L2xhYmVsPjwvZGl2PlwiLHQ9MzEsaSs9JzxkaXYgY2xhc3M9XCJtZGwtdGV4dGZpZWxkIG1kbC1qcy10ZXh0ZmllbGQgbWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwgbWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCI+Jyx0PTMyLGkrPSc8bGFiZWwgY2xhc3M9XCJtZGwtY2hlY2tib3ggbWRsLWpzLWNoZWNrYm94IG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwicGFydGl0aW9uLWNiMlwiPicsdD0zMyxpKz0nPGlucHV0IGNsYXNzPVwibWRsLWNoZWNrYm94X19pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwicGFydGl0aW9uLWNiMlwiIGRhdGEtaG9vaz1cInNob3ctbGVnZW5kXCIvPicsdD0zNCxpKz0nPHNwYW4gY2xhc3M9XCJtZGwtY2hlY2tib3hfX2xhYmVsXCI+Jyx0PTM0LGkrPVwiU2hvdyBsZWdlbmQ8L3NwYW4+PC9sYWJlbD48L2Rpdj5cIix0PTM2LGkrPVwiPCEtLSBkaXYubWRsLXRleHRmaWVsZC5tZGwtanMtdGV4dGZpZWxkLm1kbC10ZXh0ZmllbGQtLWZsb2F0aW5nLWxhYmVsLm1kbC1jZWxsLm1kbC1jZWxsLS0zLWNvbC0tPlwiLHQ9MzcsaSs9JzwhLS0gICBsYWJlbChmb3I9XCJwYXJ0aXRpb24tY2IzXCIpLm1kbC1jaGVja2JveC5tZGwtanMtY2hlY2tib3gubWRsLWpzLXJpcHBsZS1lZmZlY3QtLT4nLHQ9MzgsaSs9JzwhLS0gICAgIGlucHV0KHR5cGU9XCJjaGVja2JveFwiIGlkPVwicGFydGl0aW9uLWNiM1wiIGRhdGEtaG9vaz1cImFjY3VtdWxhdGl2ZVwiKS5tZGwtY2hlY2tib3hfX2lucHV0LS0+Jyx0PTM5LGkrPVwiPCEtLSAgICAgc3Bhbi5tZGwtY2hlY2tib3hfX2xhYmVsIEFjY3VtdWxhdGl2ZS0tPlwiLHQ9NDEsaSs9XCI8IS0tIGRpdi5tZGwtdGV4dGZpZWxkLm1kbC1qcy10ZXh0ZmllbGQubWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwubWRsLWNlbGwubWRsLWNlbGwtLTMtY29sLS0+XCIsdD00MixpKz0nPCEtLSAgIGxhYmVsKGZvcj1cInBhcnRpdGlvbi1jYjRcIikubWRsLWNoZWNrYm94Lm1kbC1qcy1jaGVja2JveC5tZGwtanMtcmlwcGxlLWVmZmVjdC0tPicsdD00MyxpKz0nPCEtLSAgICAgaW5wdXQodHlwZT1cImNoZWNrYm94XCIgaWQ9XCJwYXJ0aXRpb24tY2I0XCIgZGF0YS1ob29rPVwicmVsYXRpdmVcIikubWRsLWNoZWNrYm94X19pbnB1dC0tPicsdD00NCxpKz1cIjwhLS0gICAgIHNwYW4ubWRsLWNoZWNrYm94X19sYWJlbCBSZWxhdGl2ZS0tPjwvZGl2PlwiLHQ9NDYsaSs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2UgbWRsLXRvb2x0aXAtLXJpZ2h0XCIgZm9yPVwicGFydGl0aW9uLW9wdGlvbnMtZGl2XCI+Jyx0PTQ3LGkrPVwiU2V0IHZhcmlvdXMgb3B0aW9ucyBmb3IgdGhpcyBwYXJ0aXRpb248L2Rpdj48L2Rpdj5cIix0PTQ5LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTItY29sXCI+PC9kaXY+PC9kaXY+Jyx0PTUxLGkrPSc8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBkYXRhLWhvb2s9XCJwYXJ0aXRpb24tY29udGludW91c1wiPjwvZGl2PicsdD01MixpKz0nPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgZGF0YS1ob29rPVwicGFydGl0aW9uLWNhdGVnb3JpYWxcIj48L2Rpdj4nLHQ9NTMsaSs9JzxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIGRhdGEtaG9vaz1cInBhcnRpdGlvbi1kYXRldGltZVwiPjwvZGl2PicsdD01NCxpKz0nPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgZGF0YS1ob29rPVwicGFydGl0aW9uLWR1cmF0aW9uXCI+PC9kaXY+Jyx0PTU1LGkrPSc8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBkYXRhLWhvb2s9XCJwYXJ0aXRpb24tdGV4dFwiPjwvZGl2PjwvbWFpbj48L2Rpdj48L21haW4+PC9kaXY+J31jYXRjaChlKXtwdWcucmV0aHJvdyhlLGQsdCl9cmV0dXJuIGl9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJjb25maWd1cmVQYXJ0aXRpb25cIl1bXCJwYXJ0aXRpb25DYXRlZ29yaWFsXCJdID0gZnVuY3Rpb24gdGVtcGxhdGUobCl7dmFyIHQsZCxvPVwiXCI7dHJ5e2Q9MSxvKz0nPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgZGF0YS1ob29rPVwiZ3JvdXAtY2F0ZWdvcmlhbC1wYW5lbFwiPicsZD0yLG8rPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEtY29sIGZhY2V0SWNvbiBmYWNldENhdGVnb3JpYWxJY29uXCI+PC9kaXY+JyxkPTMsbys9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2xcIj48L2Rpdj4nLGQ9NCxvKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS04LWNvbFwiPicsZD01LG8rPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiPicsZD02LG8rPSc8dGFibGUgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPicsZD03LG8rPVwiPHRoZWFkPlwiLGQ9OCxvKz1cIjx0cj5cIixkPTksbys9XCI8dGg+XCIsZD0xMCxvKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvblwiIGRhdGEtaG9vaz1cImdyb3VwLW9yZGVyLWFiY1wiPicsZD0xMCxvKz1cImxhYmVsPC9idXR0b24+PC90aD5cIixkPTExLG8rPVwiPHRoPlwiLGQ9MTIsbys9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b25cIiBkYXRhLWhvb2s9XCJncm91cC1vcmRlci1jb3VudFwiPicsZD0xMixvKz1cImNvdW50PC9idXR0b24+PC90aD48L3RyPjwvdGhlYWQ+XCIsZD0xMyxvKz0nPHRib2R5IGRhdGEtaG9vaz1cImdyb3Vwcy10YWJsZVwiPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L2Rpdj4nLGQ9MTQsbys9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMi1jb2xcIj48L2Rpdj48L2Rpdj4nfWNhdGNoKGMpe3B1Zy5yZXRocm93KGMsdCxkKX1yZXR1cm4gb307XHJcblxyXG4gICAgcHVnbGF0aXplcltcImNvbmZpZ3VyZVBhcnRpdGlvblwiXVtcInBhcnRpdGlvbkNvbnRpbnVvdXNcIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZShsKXt2YXIgZCxpLGU9XCJcIjt0cnl7aT0xLGUrPSc8ZGl2IGNsYXNzPVwibWRsLWdyaWRcIiBkYXRhLWhvb2s9XCJncm91cC1jb250aW51b3VzLXBhbmVsXCI+JyxpPTIsZSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2wgZmFjZXRJY29uIGZhY2V0Q29udGludW91c0ljb25cIj48L2Rpdj4nLGk9MyxlKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xLWNvbFwiPjwvZGl2PicsaT00LGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTgtY29sXCI+JyxpPTUsZSs9JzxkaXYgY2xhc3M9XCJtZGwtZ3JpZCBtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCI+JyxpPTcsZSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1ncmlkXCIgaWQ9XCJncm91cC1yYW5nZS1kaXZcIj4nLGk9OCxlKz0nPGRpdiBjbGFzcz1cIm1kbC10ZXh0ZmllbGQgbWRsLWpzLXRleHRmaWVsZCBtZGwtdGV4dGZpZWxkLS1mbG9hdGluZy1sYWJlbCBtZGwtY2VsbCBtZGwtY2VsbC0tNC1jb2xcIj4nLGk9OSxlKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiBpZD1cImdyb3VwLW1pbmltdW1cIiBkYXRhLWhvb2s9XCJncm91cC1taW5pbXVtLWlucHV0XCIgdHlwZT1cInRleHRcIiBwYXR0ZXJuPVwiLT9bMC05XSooLlswLTldKyk/KGVbKy1dWzAtOV0rKT9cIi8+JyxpPTE0LGUrPSc8bGFiZWwgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19sYWJlbFwiIGZvcj1cImdyb3VwLW1pbmltdW1cIj4nLGk9MTQsZSs9XCJNaW5pbXVtIHZhbHVlPC9sYWJlbD5cIixpPTE1LGUrPSc8c3BhbiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2Vycm9yXCI+JyxpPTE1LGUrPVwiSW5wdXQgaXMgbm90IGEgbnVtYmVyITwvc3Bhbj48L2Rpdj5cIixpPTE3LGUrPSc8ZGl2IGNsYXNzPVwibWRsLXRleHRmaWVsZCBtZGwtanMtdGV4dGZpZWxkIG1kbC10ZXh0ZmllbGQtLWZsb2F0aW5nLWxhYmVsIG1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbFwiPicsaT0xOCxlKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiBpZD1cImdyb3VwLW1heGltdW1cIiBkYXRhLWhvb2s9XCJncm91cC1tYXhpbXVtLWlucHV0XCIgdHlwZT1cInRleHRcIiBwYXR0ZXJuPVwiLT9bMC05XSooLlswLTldKyk/KGVbKy1dWzAtOV0rKT9cIi8+JyxpPTIzLGUrPSc8bGFiZWwgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19sYWJlbFwiIGZvcj1cImdyb3VwLW1heGltdW1cIj4nLGk9MjMsZSs9XCJNYXhpbXVtIHZhbHVlPC9sYWJlbD5cIixpPTI0LGUrPSc8c3BhbiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2Vycm9yXCI+JyxpPTI0LGUrPVwiSW5wdXQgaXMgbm90IGEgbnVtYmVyITwvc3Bhbj48L2Rpdj5cIixpPTI2LGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTQtY29sXCIgZGF0YS1ob29rPVwiZ3JvdXAtcmFuZ2UtYnV0dG9uXCI+JyxpPTI3LGUrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtanMtcmlwcGxlLWVmZmVjdCBtZGwtYnV0dG9uLS1hY2NlbnRcIj4nLGk9MjcsZSs9XCJSZXNldCByYW5nZXM8L2J1dHRvbj48L2Rpdj48L2Rpdj5cIixpPTI5LGUrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlIG1kbC10b29sdGlwLS1yaWdodFwiIGZvcj1cImdyb3VwLXJhbmdlLWRpdlwiPicsaT0zMCxlKz1cIlJlc2V0IG1pbmludW0gYW5kIG1heGltdW0gdmFsdWVzLjwvZGl2PlwiLGk9MzMsZSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1ncmlkXCIgaWQ9XCJncm91cC1wYXJhbS1kaXZcIj4nLGk9MzQsZSs9JzxkaXYgY2xhc3M9XCJtZGwtdGV4dGZpZWxkIG1kbC1qcy10ZXh0ZmllbGQgbWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwgbWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiPicsaT0zNSxlKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiBpZD1cImdyb3VwLXBhcmFtXCIgZGF0YS1ob29rPVwiZ3JvdXAtcGFyYW0taW5wdXRcIiB0eXBlPVwidGV4dFwiIHBhdHRlcm49XCItP1swLTldKiguWzAtOV0rKT9cIi8+JyxpPTQwLGUrPSc8bGFiZWwgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19sYWJlbFwiIGZvcj1cInNhbXBsZTRcIj4nLGk9NDAsZSs9XCJOdW1iZXIgb2YgYmlucyBvciBiaW5zaXplPC9sYWJlbD5cIixpPTQxLGUrPSc8c3BhbiBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2Vycm9yXCI+JyxpPTQxLGUrPVwiSW5wdXQgaXMgbm90IGEgbnVtYmVyITwvc3Bhbj48L2Rpdj48L2Rpdj5cIixpPTQzLGUrPSc8ZGl2IGNsYXNzPVwibWRsLXRvb2x0aXAgbWRsLXRvb2x0aXAtLWxhcmdlIG1kbC10b29sdGlwLS1yaWdodFwiIGZvcj1cImdyb3VwLXBhcmFtLWRpdlwiPicsaT00NCxlKz1cIlNldCB0aGUgbnVtYmVyIG9mIGJpbnMsIG9yIHRoZSBiaW4gc2l6ZTwvZGl2PlwiLGk9NDcsZSs9JzxkaXYgY2xhc3M9XCJtZGwtZ3JpZCBtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCIgaWQ9XCJncm91cC1kaXN0cmlidXRpb24tZGl2XCI+JyxpPTQ5LGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCI+JyxpPTUwLGUrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiZ3JvdXAtZml4ZWRuXCI+JyxpPTUxLGUrPSc8aW5wdXQgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvblwiIGlkPVwiZ3JvdXAtZml4ZWRuXCIgZGF0YS1ob29rPVwiZ3JvdXAtZml4ZWRuLWlucHV0XCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImdyb3VwLWRpc3RyaWJ1dGlvblwiIHZhbHVlPVwiZml4ZWRuXCIvPicsaT01NyxlKz0nPHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsXCI+JyxpPTU3LGUrPVwiRml4ZWQgbnVtYmVyIG9mIGJpbnM8L3NwYW4+PC9sYWJlbD48L2Rpdj5cIixpPTU5LGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCI+JyxpPTYwLGUrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiZ3JvdXAtZml4ZWRzY1wiPicsaT02MSxlKz0nPGlucHV0IGNsYXNzPVwibWRsLXJhZGlvX19idXR0b25cIiBpZD1cImdyb3VwLWZpeGVkc2NcIiBkYXRhLWhvb2s9XCJncm91cC1maXhlZHNjLWlucHV0XCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImdyb3VwLWRpc3RyaWJ1dGlvblwiIHZhbHVlPVwiZml4ZWRzY1wiLz4nLGk9NjcsZSs9JzxzcGFuIGNsYXNzPVwibWRsLXJhZGlvX19sYWJlbFwiPicsaT02NyxlKz1cIkZpeGVkIGJpbiBzaXplIChjZW50ZXJlZCk8L3NwYW4+PC9sYWJlbD48L2Rpdj5cIixpPTY5LGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCI+JyxpPTcwLGUrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiZ3JvdXAtZml4ZWRzXCI+JyxpPTcxLGUrPSc8aW5wdXQgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvblwiIGlkPVwiZ3JvdXAtZml4ZWRzXCIgZGF0YS1ob29rPVwiZ3JvdXAtZml4ZWRzLWlucHV0XCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImdyb3VwLWRpc3RyaWJ1dGlvblwiIHZhbHVlPVwiZml4ZWRzXCIvPicsaT03NyxlKz0nPHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsXCI+JyxpPTc3LGUrPVwiRml4ZWQgYmluIHNpemU8L3NwYW4+PC9sYWJlbD48L2Rpdj5cIixpPTc5LGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCI+JyxpPTgwLGUrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiZ3JvdXAtbG9nXCI+JyxpPTgxLGUrPSc8aW5wdXQgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvblwiIGlkPVwiZ3JvdXAtbG9nXCIgZGF0YS1ob29rPVwiZ3JvdXAtbG9nLWlucHV0XCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImdyb3VwLWRpc3RyaWJ1dGlvblwiIHZhbHVlPVwibG9nXCIvPicsaT04NyxlKz0nPHNwYW4gY2xhc3M9XCJtZGwtcmFkaW9fX2xhYmVsXCI+JyxpPTg3LGUrPVwiTG9nYXJpdGhtaWM8L3NwYW4+PC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj5cIixpPTg5LGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTItY29sXCI+PC9kaXY+PC9kaXY+J31jYXRjaChhKXtwdWcucmV0aHJvdyhhLGQsaSl9cmV0dXJuIGV9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJjb25maWd1cmVQYXJ0aXRpb25cIl1bXCJwYXJ0aXRpb25EYXRldGltZVwiXSA9IGZ1bmN0aW9uIHRlbXBsYXRlKGwpe3ZhciB0LGUsZD1cIlwiO3RyeXtlPTEsZCs9JzxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIGRhdGEtaG9vaz1cImdyb3VwLWRhdGV0aW1lLXBhbmVsXCI+JyxlPTIsZCs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2wgZmFjZXRJY29uIGZhY2V0VGltZUljb25cIj48L2Rpdj4nLGU9MyxkKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xLWNvbFwiPjwvZGl2PicsZT00LGQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTgtY29sIG1kbC1ncmlkXCI+JyxlPTUsZCs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1ncmlkXCIgaWQ9XCJncm91cC1kYXRldGltZXJhbmdlLWRpdlwiPicsZT02LGQrPSc8ZGl2IGNsYXNzPVwibWRsLXRleHRmaWVsZCBtZGwtanMtdGV4dGZpZWxkIG1kbC10ZXh0ZmllbGQtLWZsb2F0aW5nLWxhYmVsIG1kbC1jZWxsIG1kbC1jZWxsLS0zLWNvbFwiPicsZT03LGQrPSc8aW5wdXQgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dFwiIGlkPVwiZ3JvdXAtc3RhcnRkYXRlXCIgZGF0YS1ob29rPVwiZ3JvdXAtc3RhcnRkYXRlLWlucHV0XCIgdHlwZT1cInRleHRcIi8+JyxlPTExLGQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19sYWJlbFwiIGZvcj1cImdyb3VwLXN0YXJ0ZGF0ZVwiPicsZT0xMSxkKz1cIlN0YXJ0IGRhdGU8L2xhYmVsPjwvZGl2PlwiLGU9MTMsZCs9JzxkaXYgY2xhc3M9XCJtZGwtdGV4dGZpZWxkIG1kbC1qcy10ZXh0ZmllbGQgbWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwgbWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCI+JyxlPTE0LGQrPSc8aW5wdXQgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dFwiIGlkPVwiZ3JvdXAtZW5kZGF0ZVwiIGRhdGEtaG9vaz1cImdyb3VwLWVuZGRhdGUtaW5wdXRcIiB0eXBlPVwidGV4dFwiLz4nLGU9MTgsZCs9JzxsYWJlbCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2xhYmVsXCIgZm9yPVwiZ3JvdXAtZW5kZGF0ZVwiPicsZT0xOCxkKz1cIkVuZCBkYXRlPC9sYWJlbD48L2Rpdj5cIixlPTIwLGQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCI+JyxlPTIxLGQrPSc8ZGl2IGRhdGEtaG9vaz1cInRpbWUtem9uZXNcIj48L2Rpdj48L2Rpdj4nLGU9MjMsZCs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMy1jb2xcIj4nLGU9MjQsZCs9JzxzZWxlY3QgZGF0YS1ob29rPVwidGltZS11bml0c1wiPicsZT0yNSxkKz0nPG9wdGlvbiB2YWx1ZT1cImF1dG9cIj4nLGU9MjUsZCs9XCJhdXRvPC9vcHRpb24+XCIsZT0yNixkKz0nPG9wdGlvbiB2YWx1ZT1cIm1pbGxpc2Vjb25kc1wiPicsZT0yNixkKz1cIm1pbGxpc2Vjb25kczwvb3B0aW9uPlwiLGU9MjcsZCs9JzxvcHRpb24gdmFsdWU9XCJzZWNvbmRzXCI+JyxlPTI3LGQrPVwic2Vjb25kczwvb3B0aW9uPlwiLGU9MjgsZCs9JzxvcHRpb24gdmFsdWU9XCJtaW51dGVzXCI+JyxlPTI4LGQrPVwibWludXRlczwvb3B0aW9uPlwiLGU9MjksZCs9JzxvcHRpb24gdmFsdWU9XCJob3Vyc1wiPicsZT0yOSxkKz1cImhvdXJzPC9vcHRpb24+XCIsZT0zMCxkKz0nPG9wdGlvbiB2YWx1ZT1cImRheXNcIj4nLGU9MzAsZCs9XCJkYXlzPC9vcHRpb24+XCIsZT0zMSxkKz0nPG9wdGlvbiB2YWx1ZT1cIndlZWtzXCI+JyxlPTMxLGQrPVwid2Vla3M8L29wdGlvbj5cIixlPTMyLGQrPSc8b3B0aW9uIHZhbHVlPVwibW9udGhzXCI+JyxlPTMyLGQrPVwibW9udGhzPC9vcHRpb24+XCIsZT0zMyxkKz0nPG9wdGlvbiB2YWx1ZT1cInllYXJzXCI+JyxlPTMzLGQrPVwieWVhcnM8L29wdGlvbj48L3NlbGVjdD48L2Rpdj48L2Rpdj5cIixlPTM1LGQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiIGRhdGEtaG9vaz1cImdyb3VwLWRhdGV0aW1lcmFuZ2UtYnV0dG9uXCI+JyxlPTM2LGQrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtanMtcmlwcGxlLWVmZmVjdCBtZGwtYnV0dG9uLS1hY2NlbnRcIj4nLGU9MzYsZCs9XCJSZXNldCByYW5nZXM8L2J1dHRvbj48L2Rpdj48L2Rpdj5cIixlPTM4LGQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTItY29sXCI+PC9kaXY+PC9kaXY+J31jYXRjaChvKXtwdWcucmV0aHJvdyhvLHQsZSl9cmV0dXJuIGR9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJjb25maWd1cmVQYXJ0aXRpb25cIl1bXCJwYXJ0aXRpb25EdXJhdGlvblwiXSA9IGZ1bmN0aW9uIHRlbXBsYXRlKGwpe3ZhciBkLHQsZT1cIlwiO3RyeXt0PTEsZSs9JzxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiIGRhdGEtaG9vaz1cImdyb3VwLWR1cmF0aW9uLXBhbmVsXCI+Jyx0PTIsZSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2wgZmFjZXRJY29uIGZhY2V0VGltZUljb25cIj48L2Rpdj4nLHQ9MyxlKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS0xLWNvbFwiPjwvZGl2PicsdD00LGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTgtY29sXCI+Jyx0PTUsZSs9JzxkaXYgY2xhc3M9XCJtZGwtZ3JpZCBtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sXCI+Jyx0PTcsZSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMTItY29sIG1kbC1ncmlkXCIgaWQ9XCJncm91cC1kdXJhdGlvbnJhbmdlLWRpdlwiPicsdD04LGUrPSc8ZGl2IGNsYXNzPVwibWRsLXRleHRmaWVsZCBtZGwtanMtdGV4dGZpZWxkIG1kbC10ZXh0ZmllbGQtLWZsb2F0aW5nLWxhYmVsIG1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbFwiPicsdD05LGUrPSc8aW5wdXQgY2xhc3M9XCJtZGwtdGV4dGZpZWxkX19pbnB1dFwiIGlkPVwiZ3JvdXAtc3RhcnRkdXJhdGlvblwiIGRhdGEtaG9vaz1cImdyb3VwLXN0YXJ0ZHVyYXRpb24taW5wdXRcIiB0eXBlPVwidGV4dFwiLz4nLHQ9MTMsZSs9JzxsYWJlbCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2xhYmVsXCIgZm9yPVwiZ3JvdXAtc3RhcnRkdXJhdGlvblwiPicsdD0xMyxlKz1cIlN0YXJ0IGludGVydmFsPC9sYWJlbD48L2Rpdj5cIix0PTE1LGUrPSc8ZGl2IGNsYXNzPVwibWRsLXRleHRmaWVsZCBtZGwtanMtdGV4dGZpZWxkIG1kbC10ZXh0ZmllbGQtLWZsb2F0aW5nLWxhYmVsIG1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbFwiPicsdD0xNixlKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiBpZD1cImdyb3VwLWVuZGR1cmF0aW9uXCIgZGF0YS1ob29rPVwiZ3JvdXAtZW5kZHVyYXRpb24taW5wdXRcIiB0eXBlPVwidGV4dFwiLz4nLHQ9MjAsZSs9JzxsYWJlbCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2xhYmVsXCIgZm9yPVwiZ3JvdXAtZW5kZHVyYXRpb25cIj4nLHQ9MjAsZSs9XCJFbmQgaW50ZXJ2YWw8L2xhYmVsPjwvZGl2PlwiLHQ9MjIsZSs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tNC1jb2xcIiBkYXRhLWhvb2s9XCJncm91cC1kdXJhdGlvbnJhbmdlLWJ1dHRvblwiPicsdD0yMyxlKz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWpzLXJpcHBsZS1lZmZlY3QgbWRsLWJ1dHRvbi0tYWNjZW50XCI+Jyx0PTIzLGUrPVwiUmVzZXQgcmFuZ2VzPC9idXR0b24+PC9kaXY+PC9kaXY+XCIsdD0yNSxlKz0nPGRpdiBjbGFzcz1cIm1kbC10b29sdGlwIG1kbC10b29sdGlwLS1sYXJnZSBtZGwtdG9vbHRpcC0tcmlnaHRcIiBmb3I9XCJncm91cC1kdXJhdGlvbnJhbmdlLWRpdlwiPicsdD0yNixlKz1cIlJlc2V0IHN0YXJ0IGFuZCBlbmQgaW50ZXJ2YWw8L2Rpdj48L2Rpdj48L2Rpdj5cIix0PTI4LGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTItY29sXCI+PC9kaXY+PC9kaXY+J31jYXRjaChpKXtwdWcucmV0aHJvdyhpLGQsdCl9cmV0dXJuIGV9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJjb25maWd1cmVQYXJ0aXRpb25cIl1bXCJwYXJ0aXRpb25UZXh0XCJdID0gZnVuY3Rpb24gdGVtcGxhdGUobCl7dmFyIGQsYyx0PVwiXCI7dHJ5e2M9MSx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCIgZGF0YS1ob29rPVwiZ3JvdXAtdGV4dC1wYW5lbFwiPicsYz0yLHQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEtY29sIGZhY2V0SWNvbiBmYWNldFRleHRJY29uXCI+PC9kaXY+JyxjPTMsdCs9JzxkaXYgY2xhc3M9XCJtZGwtY2VsbCBtZGwtY2VsbC0tMS1jb2xcIj48L2Rpdj4nLGM9NCx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS04LWNvbFwiPicsYz01LHQrPSc8ZGl2IGNsYXNzPVwibWRsLWdyaWQgbWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiPicsYz03LHQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCIgZGF0YS1ob29rPVwiZ3JvdXAtb3JkZXItYWJjXCI+JyxjPTgsdCs9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj4nLGM9OCx0Kz1cIk9yZGVyIGFsZmFiZXRpY2FsbHk8L2J1dHRvbj48L2Rpdj5cIixjPTEwLHQrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTMtY29sXCIgZGF0YS1ob29rPVwiZ3JvdXAtb3JkZXItY291bnRcIj4nLGM9MTEsdCs9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIj4nLGM9MTEsdCs9XCJPcmRlciBieSBjb3VudDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PlwifWNhdGNoKGUpe3B1Zy5yZXRocm93KGUsZCxjKX1yZXR1cm4gdH07XHJcblxyXG4gICAgcHVnbGF0aXplcltcImRhdGFzZXRzXCJdID0ge31cclxuICAgIHB1Z2xhdGl6ZXJbXCJkYXRhc2V0c1wiXVtcImRhdGFzZXRcIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZSh0KXt2YXIgYSxkLGw9XCJcIjt0cnl7ZD0xLGwrPSc8ZGl2IGNsYXNzPVwibWRsLWNhcmQgbWRsLXNoYWRvdy0tMmRwXCIgZGF0YS1ob29rPVwiZGF0YXNldFwiIHN0eWxlPVwibWluLWhlaWdodDogaW5oZXJpdFwiPicsZD0yLGwrPSc8ZGl2IGNsYXNzPVwibWRsLWNhcmRfX3RpdGxlXCI+JyxkPTMsbCs9JzxoMiBjbGFzcz1cIm1kbC1jYXJkX190aXRsZS10ZXh0XCIgZGF0YS1ob29rPVwibmFtZVwiPjwvaDI+PC9kaXY+JyxkPTUsbCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fc3VwcG9ydGluZy10ZXh0XCIgZGF0YS1ob29rPVwiZGVzY3JpcHRpb25cIj48L2Rpdj4nLGQ9NyxsKz0nPGRpdiBjbGFzcz1cIm1kbC1jYXJkX19hY3Rpb25zIG1kbC1jYXJkLS1ib3JkZXJcIj4nLGQ9OCxsKz0nPGEgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1idXR0b24tLWNvbG9yZWQgbWRsLWpzLWJ1dHRvbiBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGRhdGEtaG9vaz1cImRlbGV0ZVwiPicsZD05LGwrPVwiRGVsZXRlPC9hPlwiLGQ9MTAsbCs9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcyBidXR0b24gbWRsLWJ1dHRvbi0taWNvbiBtZGwtYnV0dG9uLS1jb2xvcmVkXCIgZGF0YS1ob29rPVwic2V0dGluZ3NcIiBzdHlsZT1cImZsb2F0OiByaWdodFwiPicsZD0xMSxsKz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPicsZD0xMSxsKz1cInNldHRpbmdzPC9pPjwvYnV0dG9uPjwvZGl2PlwiLGQ9MTMsbCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fbWVudVwiPicsZD0xNCxsKz0nPHNwYW4gY2xhc3M9XCJtZGwtc3Bpbm5lciBtZGwtanMtc3Bpbm5lciBpcy1hY3RpdmVcIiBkYXRhLWhvb2s9XCJjYnNwaW5uZXJcIj48L3NwYW4+JyxkPTE1LGwrPSc8c3BhbiBkYXRhLWhvb2s9XCJjYnRvZ2dsZVwiPicsZD0xNixsKz0nPGxhYmVsIGNsYXNzPVwibWRsLXN3aXRjaCBtZGwtanMtc3dpdGNoIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZGF0YS1ob29rPVwiY2JsYWJlbFwiIGZvcj1cIlwiPicsZD0xNyxsKz0nPGlucHV0IGNsYXNzPVwibWRsLXN3aXRjaF9faW5wdXRcIiBkYXRhLWhvb2s9XCJjYlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiXCIvPjwvbGFiZWw+JyxkPTE4LGwrPSc8c3BhbiBjbGFzcz1cIm1kbC1zd2l0Y2hfX2xhYmVsXCI+PC9zcGFuPjwvc3Bhbj48L2Rpdj48L2Rpdj4nfWNhdGNoKHMpe3B1Zy5yZXRocm93KHMsYSxkKX1yZXR1cm4gbH07XHJcblxyXG4gICAgcHVnbGF0aXplcltcImRhdGFzZXRzXCJdW1wiZGF0YXNldENvbGxlY3Rpb25cIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZSh0KXt2YXIgYSxlLHI9XCJcIjt0cnl7ZT0xLHIrPSc8ZGl2IGRhdGEtaG9vaz1cIml0ZW1zXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7XCI+PC9kaXY+J31jYXRjaChpKXtwdWcucmV0aHJvdyhpLGEsZSl9cmV0dXJuIHJ9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJkYXRhc2V0c1wiXVtcInBhZ2VcIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZSh0KXt2YXIgYSxsLGQ9XCJcIjt0cnl7bD0xLGQrPSc8ZGl2IGNsYXNzPVwibWRsLWxheW91dCBtZGwtanMtbGF5b3V0IG1kbC1sYXlvdXQtLWZpeGVkLWhlYWRlclwiPicsbD0yLGQrPSc8bWFpbiBjbGFzcz1cIm1kbC1sYXlvdXRfX2NvbnRlbnRcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlO1wiPicsbD0zLGQrPVwiPGRpdj5cIixsPTUsZCs9JzxkaXYgY2xhc3M9XCJtZGwtZ3JpZFwiPicsbD02LGQrPSc8ZGlhbG9nIGNsYXNzPVwibWRsLWRpYWxvZ1wiIGRhdGEtaG9vaz1cIkNTVi1zZXR0aW5nc1wiPicsbD03LGQrPSc8ZGl2IGNsYXNzPVwibWRsLWRpYWxvZ19fY29udGVudFwiPicsbD04LGQrPSc8c2VjdGlvbiBjbGFzcz1cIm1kbC1ncmlkXCIgaWQ9XCJjc3Ytc2V0dGluZ3MtdGFibGVcIiBuYW1lPVwiY3N2LXNldHRpbmdzLXRhYmxlXCI+JyxsPTksZCs9XCI8ZGl2PlwiLGw9MTAsZCs9Jzx0YWJsZSBjbGFzcz1cIm1kbC1kYXRhLXRhYmxlIG1kbC1qcy1kYXRhLXRhYmxlXCI+JyxsPTExLGQrPVwiPHRib2R5PlwiLGw9MTIsZCs9XCI8dHI+XCIsbD0xMyxkKz1cIjx0ZD5cIixsPTEzLGQrPVwiSGVhZGVyczwvdGQ+XCIsbD0xNCxkKz1cIjx0ZD5cIixsPTE1LGQrPVwiPHNwYW4+XCIsbD0xNixkKz0nPGxhYmVsIGNsYXNzPVwibWRsLWNoZWNrYm94IG1kbC1qcy1jaGVja2JveCBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGZvcj1cIkNTVi1oZWFkZXItY29sdW1uc1wiPicsbD0xNyxkKz1cIkVuYWJsZVwiLGw9MTgsZCs9JzxpbnB1dCBjbGFzcz1cIm1kbC1jaGVja2JveF9faW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cIkNTVi1oZWFkZXItY29sdW1uc1wiLz48L2xhYmVsPjwvc3Bhbj48L3RkPjwvdHI+JyxsPTE5LGQrPVwiPHRyPlwiLGw9MjAsZCs9XCI8dGQ+XCIsbD0yMCxkKz1cIkRlbGltaXRlcjwvdGQ+XCIsbD0yMSxkKz1cIjx0ZD5cIixsPTIyLGQrPVwiPHNwYW4+XCIsbD0yMyxkKz0nPGxhYmVsIGNsYXNzPVwibWRsLXJhZGlvIG1kbC1qcy1yYWRpbyBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGZvcj1cIkNTVi1zZXBhcmF0b3ItY29tbWFcIj4nLGw9MjQsZCs9JzxpbnB1dCBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uXCIgdHlwZT1cInJhZGlvXCIgaWQ9XCJDU1Ytc2VwYXJhdG9yLWNvbW1hXCIgbmFtZT1cIkNTVi1zZXBhcmF0b3Itb3B0aW9uc1wiIHZhbHVlPVwiY29tbWFcIi8+PC9sYWJlbD48L3NwYW4+JyxsPTI1LGQrPSc8c3BhbiBjbGFzcz1cIm1kbC10eXBvZ3JhcGh5LS10aXRsZS1jb2xvci1jb250cmFzdFwiPicsbD0yNixkKz1cIiw8L3NwYW4+PC90ZD5cIixsPTI3LGQrPVwiPHRkPlwiLGw9MjgsZCs9XCI8c3Bhbj5cIixsPTI5LGQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiQ1NWLXNlcGFyYXRvci1jb2xvblwiPicsbD0zMCxkKz0nPGlucHV0IGNsYXNzPVwibWRsLXJhZGlvX19idXR0b25cIiB0eXBlPVwicmFkaW9cIiBpZD1cIkNTVi1zZXBhcmF0b3ItY29sb25cIiBuYW1lPVwiQ1NWLXNlcGFyYXRvci1vcHRpb25zXCIgdmFsdWU9XCJjb2xvblwiLz48L2xhYmVsPjwvc3Bhbj4nLGw9MzEsZCs9JzxzcGFuIGNsYXNzPVwibWRsLXR5cG9ncmFwaHktLXRpdGxlLWNvbG9yLWNvbnRyYXN0XCI+JyxsPTMyLGQrPVwiOjwvc3Bhbj48L3RkPlwiLGw9MzMsZCs9XCI8dGQ+XCIsbD0zNCxkKz1cIjxzcGFuPlwiLGw9MzUsZCs9JzxsYWJlbCBjbGFzcz1cIm1kbC1yYWRpbyBtZGwtanMtcmFkaW8gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBmb3I9XCJDU1Ytc2VwYXJhdG9yLXNlbWljb2xvblwiPicsbD0zNixkKz0nPGlucHV0IGNsYXNzPVwibWRsLXJhZGlvX19idXR0b25cIiB0eXBlPVwicmFkaW9cIiBpZD1cIkNTVi1zZXBhcmF0b3Itc2VtaWNvbG9uXCIgbmFtZT1cIkNTVi1zZXBhcmF0b3Itb3B0aW9uc1wiIHZhbHVlPVwic2VtaWNvbG9uXCIvPjwvbGFiZWw+PC9zcGFuPicsbD0zNyxkKz0nPHNwYW4gY2xhc3M9XCJtZGwtdHlwb2dyYXBoeS0tdGl0bGUtY29sb3ItY29udHJhc3RcIj4nLGw9MzgsZCs9XCI7PC9zcGFuPjwvdGQ+XCIsbD0zOSxkKz1cIjx0ZD5cIixsPTQwLGQrPVwiPHNwYW4+XCIsbD00MSxkKz0nPGxhYmVsIGNsYXNzPVwibWRsLXJhZGlvIG1kbC1qcy1yYWRpbyBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGZvcj1cIkNTVi1zZXBhcmF0b3ItcGlwZVwiPicsbD00MixkKz0nPGlucHV0IGNsYXNzPVwibWRsLXJhZGlvX19idXR0b25cIiB0eXBlPVwicmFkaW9cIiBpZD1cIkNTVi1zZXBhcmF0b3ItcGlwZVwiIG5hbWU9XCJDU1Ytc2VwYXJhdG9yLW9wdGlvbnNcIiB2YWx1ZT1cInBpcGVcIi8+PC9sYWJlbD48L3NwYW4+JyxsPTQzLGQrPSc8c3BhbiBjbGFzcz1cIm1kbC10eXBvZ3JhcGh5LS10aXRsZS1jb2xvci1jb250cmFzdFwiPicsbD00NCxkKz1cInw8L3NwYW4+PC90ZD5cIixsPTQ1LGQrPVwiPHRkPlwiLGw9NDYsZCs9XCI8c3Bhbj5cIixsPTQ3LGQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiQ1NWLXNlcGFyYXRvci10YWJcIj4nLGw9NDgsZCs9JzxpbnB1dCBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uXCIgdHlwZT1cInJhZGlvXCIgaWQ9XCJDU1Ytc2VwYXJhdG9yLXRhYlwiIG5hbWU9XCJDU1Ytc2VwYXJhdG9yLW9wdGlvbnNcIiB2YWx1ZT1cInRhYlwiLz48L2xhYmVsPjwvc3Bhbj4nLGw9NDksZCs9XCI8c3Bhbj5cIixsPTUwLGQrPVwiVGFiPC9zcGFuPjwvdGQ+XCIsbD01MSxkKz1cIjx0ZD5cIixsPTUyLGQrPVwiPHNwYW4+XCIsbD01MyxkKz0nPGxhYmVsIGNsYXNzPVwibWRsLXJhZGlvIG1kbC1qcy1yYWRpbyBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGZvcj1cIkNTVi1zZXBhcmF0b3Itb3RoZXJcIj4nLGw9NTQsZCs9JzxpbnB1dCBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uXCIgdHlwZT1cInJhZGlvXCIgZGF0YS1ob29rPVwiQ1NWLXNlcGFyYXRvci1vdGhlclwiIGlkPVwiQ1NWLXNlcGFyYXRvci1vdGhlclwiIG5hbWU9XCJDU1Ytc2VwYXJhdG9yLW9wdGlvbnNcIiB2YWx1ZT1cIm90aGVyXCIvPjwvbGFiZWw+PC9zcGFuPicsbD01NSxkKz0nPGRpdiBjbGFzcz1cIm1kbC10ZXh0ZmllbGQgbWRsLWpzLXRleHRmaWVsZCBtZGwtdGV4dGZpZWxkLS1mbG9hdGluZy1sYWJlbFwiIHN0eWxlPVwid2lkdGg6IGZpdC1jb250ZW50O1wiPicsbD01NixkKz0nPGlucHV0IGNsYXNzPVwibWRsLXRleHRmaWVsZF9faW5wdXRcIiBkYXRhLWhvb2s9XCJDU1Ytc2VwYXJhdG9yLW90aGVyLWlucHV0XCIgdHlwZT1cInRleHRcIiBpZD1cIkNTVi1zZXBhcmF0b3Itb3RoZXItaW5wdXRcIiBuYW1lPVwiQ1NWLXNlcGFyYXRvci1vdGhlci1pbnB1dFwiLz4nLGw9NTcsZCs9JzxsYWJlbCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2xhYmVsXCIgZm9yPVwiQ1NWLXNlcGFyYXRvci1vdGhlci1pbnB1dFwiPicsbD01OCxkKz1cIk90aGVyPC9sYWJlbD48L2Rpdj48L3RkPjwvdHI+XCIsbD01OSxkKz1cIjx0cj5cIixsPTYwLGQrPVwiPHRkPlwiLGw9NjAsZCs9XCJRdW90aW5nPC90ZD5cIixsPTYxLGQrPVwiPHRkPlwiLGw9NjIsZCs9XCI8c3Bhbj5cIixsPTYzLGQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiQ1NWLXF1b3RlLW5vbmVcIj4nLGw9NjQsZCs9JzxpbnB1dCBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uXCIgdHlwZT1cInJhZGlvXCIgaWQ9XCJDU1YtcXVvdGUtbm9uZVwiIG5hbWU9XCJDU1YtcXVvdGVcIiB2YWx1ZT1cIm5vbmVcIi8+PC9sYWJlbD48L3NwYW4+JyxsPTY1LGQrPVwiPHNwYW4+XCIsbD02NixkKz1cIk5vbmU8L3NwYW4+PC90ZD5cIixsPTY3LGQrPVwiPHRkPlwiLGw9NjgsZCs9XCI8c3Bhbj5cIixsPTY5LGQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiQ1NWLXF1b3RlLXNpbmdsZVwiPicsbD03MCxkKz0nPGlucHV0IGNsYXNzPVwibWRsLXJhZGlvX19idXR0b25cIiB0eXBlPVwicmFkaW9cIiBpZD1cIkNTVi1xdW90ZS1zaW5nbGVcIiBuYW1lPVwiQ1NWLXF1b3RlXCIgdmFsdWU9XCJzaW5nbGVcIi8+PC9sYWJlbD48L3NwYW4+JyxsPTcxLGQrPSc8c3BhbiBjbGFzcz1cIm1kbC10eXBvZ3JhcGh5LS10aXRsZS1jb2xvci1jb250cmFzdFwiPicsbD03MixkKz1cIic8L3NwYW4+PC90ZD5cIixsPTczLGQrPVwiPHRkPlwiLGw9NzQsZCs9XCI8c3Bhbj5cIixsPTc1LGQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiQ1NWLXF1b3RlLWRvdWJsZVwiPicsbD03NixkKz0nPGlucHV0IGNsYXNzPVwibWRsLXJhZGlvX19idXR0b25cIiB0eXBlPVwicmFkaW9cIiBpZD1cIkNTVi1xdW90ZS1kb3VibGVcIiBuYW1lPVwiQ1NWLXF1b3RlXCIgdmFsdWU9XCJkb3VibGVcIi8+PC9sYWJlbD48L3NwYW4+JyxsPTc3LGQrPSc8c3BhbiBjbGFzcz1cIm1kbC10eXBvZ3JhcGh5LS10aXRsZS1jb2xvci1jb250cmFzdFwiPicsbD03OCxkKz0nXCI8L3NwYW4+PC90ZD48L3RyPicsbD03OSxkKz1cIjx0cj5cIixsPTgwLGQrPVwiPHRkPlwiLGw9ODAsZCs9XCJDb21tZW50czwvdGQ+XCIsbD04MSxkKz1cIjx0ZD5cIixsPTgyLGQrPVwiPHNwYW4+XCIsbD04MyxkKz0nPGxhYmVsIGNsYXNzPVwibWRsLXJhZGlvIG1kbC1qcy1yYWRpbyBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGZvcj1cIkNTVi1jb21tZW50LXBvdW5kXCI+JyxsPTg0LGQrPSc8aW5wdXQgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvblwiIHR5cGU9XCJyYWRpb1wiIGlkPVwiQ1NWLWNvbW1lbnQtcG91bmRcIiBuYW1lPVwiQ1NWLWNvbW1lbnRcIiB2YWx1ZT1cInBvdW5kXCIvPjwvbGFiZWw+PC9zcGFuPicsbD04NSxkKz0nPHNwYW4gY2xhc3M9XCJtZGwtdHlwb2dyYXBoeS0tdGl0bGUtY29sb3ItY29udHJhc3RcIj4nLGw9ODYsZCs9XCIjPC9zcGFuPjwvdGQ+XCIsbD04NyxkKz1cIjx0ZD5cIixsPTg4LGQrPVwiPHNwYW4+XCIsbD04OSxkKz0nPGxhYmVsIGNsYXNzPVwibWRsLXJhZGlvIG1kbC1qcy1yYWRpbyBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGZvcj1cIkNTVi1jb21tZW50LWV4Y2xhbWF0aW9uXCI+JyxsPTkwLGQrPSc8aW5wdXQgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvblwiIHR5cGU9XCJyYWRpb1wiIGlkPVwiQ1NWLWNvbW1lbnQtZXhjbGFtYXRpb25cIiBuYW1lPVwiQ1NWLWNvbW1lbnRcIiB2YWx1ZT1cImV4Y2xhbWF0aW9uXCIvPjwvbGFiZWw+PC9zcGFuPicsbD05MSxkKz0nPHNwYW4gY2xhc3M9XCJtZGwtdHlwb2dyYXBoeS0tdGl0bGUtY29sb3ItY29udHJhc3RcIj4nLGw9OTIsZCs9XCIhPC9zcGFuPjwvdGQ+XCIsbD05MyxkKz1cIjx0ZD5cIixsPTk0LGQrPVwiPHNwYW4+XCIsbD05NSxkKz0nPGxhYmVsIGNsYXNzPVwibWRsLXJhZGlvIG1kbC1qcy1yYWRpbyBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGZvcj1cIkNTVi1jb21tZW50LXNsYXNoXCI+JyxsPTk2LGQrPSc8aW5wdXQgY2xhc3M9XCJtZGwtcmFkaW9fX2J1dHRvblwiIHR5cGU9XCJyYWRpb1wiIGlkPVwiQ1NWLWNvbW1lbnQtc2xhc2hcIiBuYW1lPVwiQ1NWLWNvbW1lbnRcIiB2YWx1ZT1cInNsYXNoXCIvPjwvbGFiZWw+PC9zcGFuPicsbD05NyxkKz0nPHNwYW4gY2xhc3M9XCJtZGwtdHlwb2dyYXBoeS0tdGl0bGUtY29sb3ItY29udHJhc3RcIj4nLGw9OTgsZCs9XCIvPC9zcGFuPjwvdGQ+XCIsbD05OSxkKz1cIjx0ZD5cIixsPTEwMCxkKz1cIjxzcGFuPlwiLGw9MTAxLGQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiQ1NWLWNvbW1lbnQtZGFzaFwiPicsbD0xMDIsZCs9JzxpbnB1dCBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uXCIgdHlwZT1cInJhZGlvXCIgaWQ9XCJDU1YtY29tbWVudC1kYXNoXCIgbmFtZT1cIkNTVi1jb21tZW50XCIgdmFsdWU9XCJkYXNoXCIvPjwvbGFiZWw+PC9zcGFuPicsbD0xMDMsZCs9JzxzcGFuIGNsYXNzPVwibWRsLXR5cG9ncmFwaHktLXRpdGxlLWNvbG9yLWNvbnRyYXN0XCI+JyxsPTEwNCxkKz1cIi08L3NwYW4+PC90ZD5cIixsPTEwNSxkKz1cIjx0ZD5cIixsPTEwNixkKz1cIjxzcGFuPlwiLGw9MTA3LGQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtcmFkaW8gbWRsLWpzLXJhZGlvIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZm9yPVwiQ1NWLWNvbW1lbnQtcGVyY2VudFwiPicsbD0xMDgsZCs9JzxpbnB1dCBjbGFzcz1cIm1kbC1yYWRpb19fYnV0dG9uXCIgdHlwZT1cInJhZGlvXCIgaWQ9XCJDU1YtY29tbWVudC1wZXJjZW50XCIgbmFtZT1cIkNTVi1jb21tZW50XCIgdmFsdWU9XCJwZXJjZW50XCIvPjwvbGFiZWw+PC9zcGFuPicsbD0xMDksZCs9JzxzcGFuIGNsYXNzPVwibWRsLXR5cG9ncmFwaHktLXRpdGxlLWNvbG9yLWNvbnRyYXN0XCI+JyxsPTExMCxkKz1cIiU8L3NwYW4+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48L3NlY3Rpb24+XCIsbD0xMTIsZCs9JzxkaXYgY2xhc3M9XCJtZGwtZGlhbG9nX19hY3Rpb25zIG1kbC1kaWFsb2dfX2FjdGlvbnNcIj4nLGw9MTE0LGQrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBjbG9zZVwiIGRhdGEtaG9vaz1cIkNTVi1zZXR0aW5ncy1jbG9zZVwiIHR5cGU9XCJidXR0b25cIj4nLGw9MTE0LGQrPVwiQ2xvc2U8L2J1dHRvbj48L2Rpdj48L2Rpdj48L2RpYWxvZz48L2Rpdj5cIixsPTExNixkKz0nPGRpYWxvZyBjbGFzcz1cIm1kbC1kaWFsb2dcIiBkYXRhLWhvb2s9XCJzZXNzaW9uLWRvd25sb2FkLWNsb3VkXCI+JyxsPTExNyxkKz0nPGRpdiBjbGFzcz1cIm1kbC1kaWFsb2dfX2NvbnRlbnRcIj4nLGw9MTE4LGQrPVwiPHA+PC9wPlwiLGw9MTE5LGQrPVwiRW50ZXIgdGhlIHVybCBvZiB0aGUgc2Vzc2lvbi4gPGJyLz5NYWtlIHN1cmUgdGhhdCB5b3Ugc2F2ZWQgeW91ciBjdXJyZW50IHNlc3Npb24hXCIsbD0xMjAsZCs9JzxkaXYgY2xhc3M9XCJtZGwtdGV4dGZpZWxkIG1kbC1qcy10ZXh0ZmllbGQgbWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwgbWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbFwiPicsbD0xMjEsZCs9JzxpbnB1dCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0XCIgaWQ9XCJzZXNzaW9uLWltcG9ydC1yZW1vdGUtbGlua1wiIGRhdGEtaG9vaz1cInNlc3Npb24taW1wb3J0LXJlbW90ZS1saW5rXCIgdHlwZT1cInRleHRcIi8+PC9kaXY+PC9kaXY+JyxsPTEyMixkKz0nPGRpdiBjbGFzcz1cIm1kbC1kaWFsb2dfX2FjdGlvbnMgbWRsLWRpYWxvZ19fYWN0aW9uc1wiPicsbD0xMjMsZCs9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uXCIgZGF0YS1ob29rPVwic2Vzc2lvbi1kb3dubG9hZC1jbG91ZC1nZXRcIiB0eXBlPVwiYnV0dG9uXCI+JyxsPTEyMyxkKz1cIkltcG9ydDwvYnV0dG9uPlwiLGw9MTI0LGQrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBjbG9zZVwiIGRhdGEtaG9vaz1cInNlc3Npb24tZG93bmxvYWQtY2xvdWQtY2xvc2UtYnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiPicsbD0xMjQsZCs9XCJDYW5jZWw8L2J1dHRvbj48L2Rpdj48L2RpYWxvZz5cIixsPTEyNyxkKz0nPGhlYWRlciBjbGFzcz1cIm1kbC1sYXlvdXRfX2hlYWRlciBtZGwtY29sb3ItLWdyZXktMTAwIG1kbC1jb2xvci10ZXh0LS1ncmV5LTYwMFwiPicsbD0xMjgsZCs9JzxkaXYgY2xhc3M9XCJtZGwtbGF5b3V0X19oZWFkZXItcm93XCI+JyxsPTEyOSxkKz0nPHNwYW4gY2xhc3M9XCJtZGwtbGF5b3V0LXRpdGxlXCIgc3R5bGU9XCJwYWRkaW5nOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+JyxsPTEyOSxkKz1cIkRhdGFzZXRzPC9zcGFuPlwiLGw9MTMxLGQrPSc8ZGl2IGNsYXNzPVwibWRsLWxheW91dC1zcGFjZXJcIj48L2Rpdj4nLGw9MTMzLGQrPSc8YnV0dG9uIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLWljb24gbWRsLWpzLXJpcHBsZS1lZmZlY3RcIiBkYXRhLWhvb2s9XCJzZWFyY2gtYnV0dG9uXCIgaWQ9XCJ0dDNcIiBkYXRhLXBvc2l0aW9uPVwiYm90dG9tXCIgZGF0YS1zdGVwPVwiMVwiIGRhdGEtaW50cm89XCJZb3UgY2FuIHNlYXJjaCBhdmFpbGFibGUgZGF0YXNldHMgaGVyZS5cIj4nLGw9MTM0LGQrPSc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+JyxsPTEzNCxkKz1cInNlYXJjaDwvaT48L2J1dHRvbj5cIixsPTEzNixkKz0nPGRpdiBjbGFzcz1cIm1kbC10b29sdGlwIG1kbC10b29sdGlwLS1sYXJnZVwiIGZvcj1cInR0M1wiPicsbD0xMzcsZCs9XCJTaG93IG9yIGhpZGUgc2VhcmNoIGJhcjwvZGl2PjwvZGl2PlwiLGw9MTM5LGQrPSc8ZGl2IGNsYXNzPVwibWRsLWxheW91dF9faGVhZGVyLXJvd1wiIGRhdGEtaG9vaz1cInNlYXJjaC1iYXJcIj4nLGw9MTQwLGQrPSc8ZGl2IGNsYXNzPVwibWRsLWxheW91dC1zcGFjZXJcIj48L2Rpdj4nLGw9MTQxLGQrPSc8c3BhbiBjbGFzcz1cIm1kbC1jb2xvci0td2hpdGUgbWRsLWNvbG9yLXRleHQtLXByaW1hcnkgc2VhcmNoQmFyXCI+JyxsPTE0MyxkKz0nPHNwYW4gY2xhc3M9XCJtZGwtdGV4dGZpZWxkIHNlYXJjaEJhclwiPicsbD0xNDQsZCs9JzxpbnB1dCBjbGFzcz1cIm1kbC10ZXh0ZmllbGRfX2lucHV0IHNlYXJjaEJhclwiIGRhdGEtaG9vaz1cImRhdGFzZXQtc2VsZWN0b3JcIiB0eXBlPVwidGV4dFwiIGlkPVwidHQ1XCIvPicsbD0xNDUsZCs9JzxkaXYgY2xhc3M9XCJtZGwtdG9vbHRpcCBtZGwtdG9vbHRpcC0tbGFyZ2VcIiBmb3I9XCJ0dDVcIj4nLGw9MTQ2LGQrPVwiU2VhcmNoIGZhY2V0IG5hbWUgYW5kIGRlc2NyaXB0aW9uPC9kaXY+PC9zcGFuPjwvc3Bhbj48L2Rpdj5cIixsPTE0OCxkKz0nPGRpdiBkYXRhLWhvb2s9XCJhZGQtZGF0YXNldHMtZGl2XCIgaWQ9XCJhZGQtZGF0YXNldHMtZGl2XCI+JyxsPTE0OSxkKz0nPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyO1wiPicsbD0xNTAsZCs9JzxkaXYgY2xhc3M9XCJkYXRhLXBhZ2UtY2FyZC1idXR0b24gbWRsLWNhcmQgbWRsLXNoYWRvdy0tMmRwXCI+JyxsPTE1MSxkKz0nPGRpdiBjbGFzcz1cIm1kbC1jYXJkX190aXRsZVwiPicsbD0xNTIsZCs9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1jb2xvci0tYmx1ZS1ncmV5LTkwMCBtZGwtY29sb3ItdGV4dC0td2hpdGUgbWRsLWpzLXJpcHBsZS1lZmZlY3Qgc2VydmVyY29ubmVjdC1idG5cIiBkYXRhLWhvb2s9XCJzZXJ2ZXItY29ubmVjdFwiIGlkPVwic2VydmVyQnV0dG9uXCI+JyxsPTE1MyxkKz1cIkNvbm5lY3Q8L2J1dHRvbj48L2Rpdj5cIixsPTE1NCxkKz0nPGRpdiBjbGFzcz1cIm1kbC1jYXJkX19zdXBwb3J0aW5nLXRleHRcIj4nLGw9MTU1LGQrPVwiQ29ubmVjdCB0byBhIFBvc3RncmVTUUwgc2VydmVyLjwvZGl2PjwvZGl2PlwiLGw9MTU3LGQrPSc8ZGl2IGNsYXNzPVwiZGF0YS1wYWdlLWNhcmQtYnV0dG9uIG1kbC1jYXJkIG1kbC1zaGFkb3ctLTJkcFwiPicsbD0xNTgsZCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fdGl0bGVcIj4nLGw9MTU5LGQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1jb2xvci0tYmx1ZS1ncmV5LTkwMCBtZGwtY29sb3ItdGV4dC0td2hpdGUgbWRsLWpzLXJpcHBsZS1lZmZlY3QganNvbnVwbG9hZC1idG5cIiBmb3I9XCJqc29udXBsb2FkQnRuXCIgaWQ9XCJqc29uVXBsb2FkTGFiZWxcIj4nLGw9MTYwLGQrPVwiSW1wb3J0IEpTT048L2xhYmVsPlwiLGw9MTYxLGQrPSc8aW5wdXQgY2xhc3M9XCJmaWxlQnRuXCIgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIuanNvblwiIGRhdGEtaG9vaz1cImpzb24tdXBsb2FkLWlucHV0XCIgaWQ9XCJqc29udXBsb2FkQnRuXCIvPjwvZGl2PicsbD0xNjIsZCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fc3VwcG9ydGluZy10ZXh0XCI+JyxsPTE2MyxkKz1cIkltcG9ydCBhIEpTT04gZmlsZSBmcm9tIHlvdXIgY29tcHV0ZXIuPC9kaXY+PC9kaXY+XCIsbD0xNjUsZCs9JzxkaXYgY2xhc3M9XCJkYXRhLXBhZ2UtY2FyZC1idXR0b24gbWRsLWNhcmQgbWRsLXNoYWRvdy0tMmRwXCI+JyxsPTE2NixkKz0nPGRpdiBjbGFzcz1cIm1kbC1jYXJkX190aXRsZVwiPicsbD0xNjcsZCs9JzxsYWJlbCBjbGFzcz1cIm1kbC1idXR0b24gbWRsLWpzLWJ1dHRvbiBtZGwtYnV0dG9uLS1yYWlzZWQgbWRsLWNvbG9yLS1ibHVlLWdyZXktOTAwIG1kbC1jb2xvci10ZXh0LS13aGl0ZSBtZGwtanMtcmlwcGxlLWVmZmVjdCBjc3Z1cGxvYWQtYnRuXCIgZm9yPVwiY3N2dXBsb2FkQnRuXCI+JyxsPTE2OCxkKz1cIkltcG9ydCBDU1Y8L2xhYmVsPlwiLGw9MTY5LGQrPSc8aW5wdXQgY2xhc3M9XCJmaWxlQnRuXCIgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIuY3N2LC50eHQsLnRzdlwiIGRhdGEtaG9vaz1cImNzdi11cGxvYWQtaW5wdXRcIiBpZD1cImNzdnVwbG9hZEJ0blwiLz48L2Rpdj4nLGw9MTcwLGQrPSc8ZGl2IGNsYXNzPVwibWRsLWNhcmRfX3N1cHBvcnRpbmctdGV4dFwiPicsbD0xNzEsZCs9XCJJbXBvcnQgYSBDU1YgZmlsZSBmcm9tIHlvdXIgY29tcHV0ZXIuPC9kaXY+XCIsbD0xNzIsZCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fbWVudVwiPicsbD0xNzMsZCs9JzxidXR0b24gY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1idXR0b24tLWljb24gbWRsLWpzLWJ1dHRvbiBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGRhdGEtaG9vaz1cIkNTVi1zZXR0aW5ncy1idXR0b25cIiBpZD1cImNzdi1zZXR0aW5ncy1idXR0b25cIj4nLGw9MTc0LGQrPSc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+JyxsPTE3NCxkKz1cInNldHRpbmdzPC9pPjwvYnV0dG9uPjwvZGl2PjwvZGl2PlwiLGw9MTc2LGQrPSc8ZGl2IGNsYXNzPVwiZGF0YS1wYWdlLWNhcmQtYnV0dG9uIG1kbC1jYXJkIG1kbC1zaGFkb3ctLTJkcFwiPicsbD0xNzcsZCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fdGl0bGVcIj4nLGw9MTc4LGQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1jb2xvci0tYmx1ZS1ncmV5LTkwMCBtZGwtY29sb3ItdGV4dC0td2hpdGUgbWRsLWpzLXJpcHBsZS1lZmZlY3QgZGF0YWRvd25sb2FkLWJ0blwiIGZvcj1cImRhdGFEb3dubG9hZEJ0blwiPicsbD0xNzksZCs9XCJEb3dubG9hZCBkYXRhPC9sYWJlbD5cIixsPTE4MCxkKz0nPGEgY2xhc3M9XCJmaWxlQnRuXCIgZGF0YS1ob29rPVwiZGF0YS1kb3dubG9hZFwiIGlkPVwiZGF0YURvd25sb2FkQnRuXCIgZG93bmxvYWQ9XCJkb3dubG9hZFwiPjwvYT48L2Rpdj4nLGw9MTgxLGQrPSc8ZGl2IGNsYXNzPVwibWRsLWNhcmRfX3N1cHBvcnRpbmctdGV4dFwiPicsbD0xODIsZCs9XCJEb3dubG9hZCB0aGUgY3VycmVudCBkYXRhIHRvIHlvdXIgY29tcHV0ZXIuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+XCIsbD0xODQsZCs9JzxkaXYgZGF0YS1ob29rPVwiZGF0YXNldC1pdGVtc1wiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj48L2Rpdj48L2hlYWRlcj4nLGw9MTg3LGQrPSc8aGVhZGVyIGNsYXNzPVwibWRsLWxheW91dF9faGVhZGVyIG1kbC1jb2xvci0tZ3JleS0xMDAgbWRsLWNvbG9yLXRleHQtLWdyZXktNjAwXCI+JyxsPTE4OCxkKz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXRfX2hlYWRlci1yb3dcIj4nLGw9MTg5LGQrPSc8c3BhbiBjbGFzcz1cIm1kbC1sYXlvdXQtdGl0bGVcIiBzdHlsZT1cInBhZGRpbmc6IDA7IHRleHQtYWxpZ246IGNlbnRlcjtcIj4nLGw9MTg5LGQrPVwiU2Vzc2lvbnM8L3NwYW4+PC9kaXY+XCIsbD0xOTEsZCs9JzxkaXYgZGF0YS1ob29rPVwiYWRkLXNlc3Npb25zLWRpdlwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCI+JyxsPTE5MixkKz0nPGRpdiBjbGFzcz1cImRhdGEtcGFnZS1jYXJkLWJ1dHRvbiBtZGwtY2FyZCBtZGwtc2hhZG93LS0yZHBcIj4nLGw9MTkzLGQrPSc8ZGl2IGNsYXNzPVwibWRsLWNhcmRfX3RpdGxlXCI+JyxsPTE5NCxkKz0nPGEgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1jb2xvci0tYmx1ZS1ncmV5LTkwMCBtZGwtY29sb3ItdGV4dC0td2hpdGUgbWRsLWpzLXJpcHBsZS1lZmZlY3Qgc2Vzc2lvbmRvd25sb2FkLWJ0blwiIGRhdGEtaG9vaz1cInNlc3Npb24tZG93bmxvYWRcIiBkb3dubG9hZD1cImRvd25sb2FkXCI+JyxsPTE5NSxkKz1cIkV4cG9ydCBzZXNzaW9uPC9hPjwvZGl2PlwiLGw9MTk2LGQrPSc8ZGl2IGNsYXNzPVwibWRsLWNhcmRfX3N1cHBvcnRpbmctdGV4dFwiPicsbD0xOTcsZCs9XCJTYXZlIHRoZSBjdXJyZW50IGRhc2hib2FyZCB0byB5b3VyIGNvbXB1dGVyLjwvZGl2PjwvZGl2PlwiLGw9MTk5LGQrPSc8ZGl2IGNsYXNzPVwiZGF0YS1wYWdlLWNhcmQtYnV0dG9uIG1kbC1jYXJkIG1kbC1zaGFkb3ctLTJkcFwiPicsbD0yMDAsZCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fdGl0bGVcIj4nLGw9MjAxLGQrPSc8bGFiZWwgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1qcy1idXR0b24gbWRsLWJ1dHRvbi0tcmFpc2VkIG1kbC1jb2xvci0tYmx1ZS1ncmV5LTkwMCBtZGwtY29sb3ItdGV4dC0td2hpdGUgbWRsLWpzLXJpcHBsZS1lZmZlY3Qgc2Vzc2lvbnVwbG9hZC1idG5cIiBmb3I9XCJzZXNzaW9udXBsb2FkQnRuXCIgZGF0YS1ob29rPVwic2Vzc2lvbi11cGxvYWRcIj4nLGw9MjAyLGQrPVwiSW1wb3J0IHNlc3Npb248L2xhYmVsPlwiLGw9MjAzLGQrPSc8aW5wdXQgY2xhc3M9XCJmaWxlQnRuXCIgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIuanNvblwiIGRhdGEtaG9vaz1cInNlc3Npb24tdXBsb2FkLWlucHV0XCIgaWQ9XCJzZXNzaW9udXBsb2FkQnRuXCIvPjwvZGl2PicsbD0yMDQsZCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fc3VwcG9ydGluZy10ZXh0XCI+JyxsPTIwNSxkKz1cIkltcG9ydCBhIHNhdmVkIGRhc2hib2FyZCBmcm9tIHlvdXIgY29tcHV0ZXIuPC9kaXY+PC9kaXY+XCIsbD0yMDcsZCs9JzxkaXYgY2xhc3M9XCJkYXRhLXBhZ2UtY2FyZC1idXR0b24gbWRsLWNhcmQgbWRsLXNoYWRvdy0tMmRwXCI+JyxsPTIwOCxkKz0nPGRpdiBjbGFzcz1cIm1kbC1jYXJkX190aXRsZVwiPicsbD0yMDksZCs9JzxhIGNsYXNzPVwibWRsLWJ1dHRvbiBtZGwtanMtYnV0dG9uIG1kbC1idXR0b24tLXJhaXNlZCBtZGwtY29sb3ItLWJsdWUtZ3JleS05MDAgbWRsLWNvbG9yLXRleHQtLXdoaXRlIG1kbC1qcy1yaXBwbGUtZWZmZWN0IHNlc3Npb25jbG91ZGRvd24tYnRuXCIgZGF0YS1ob29rPVwic2Vzc2lvbi1jbG91ZC1kb3dubG9hZFwiIGNsb3VkLWRvd25sb2FkPVwiY2xvdWQtZG93bmxvYWRcIj4nLGw9MjEwLGQrPVwiU2Vzc2lvbiBieSBVUkw8L2E+PC9kaXY+XCIsbD0yMTEsZCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fc3VwcG9ydGluZy10ZXh0XCI+JyxsPTIxMixkKz1cIkltcG9ydCBhIGRhc2hib2FyZCB1c2luZyBVUkwuPC9kaXY+PC9kaXY+PC9kaXY+XCIsbD0yMTQsZCs9JzxkaXYgZGF0YS1ob29rPVwic2Vzc2lvbi1pdGVtc1wiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj48L2Rpdj48L2hlYWRlcj48L2Rpdj48L21haW4+PC9kaXY+J31jYXRjaChvKXtwdWcucmV0aHJvdyhvLGEsbCl9cmV0dXJuIGR9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJkYXRhc2V0c1wiXVtcInNlc3Npb25cIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZShhKXt2YXIgZCxzLHQ9XCJcIjt0cnl7cz0xLHQrPSc8ZGl2IGNsYXNzPVwibWRsLWNhcmQgbWRsLXNoYWRvdy0tMmRwXCIgZGF0YS1ob29rPVwic2Vzc2lvblwiIHN0eWxlPVwibWluLWhlaWdodDogaW5oZXJpdFwiPicscz0yLHQrPSc8ZGl2IGNsYXNzPVwibWRsLWNhcmRfX3RpdGxlXCI+JyxzPTMsdCs9JzxoMiBjbGFzcz1cIm1kbC1jYXJkX190aXRsZS10ZXh0XCIgZGF0YS1ob29rPVwiZGF0ZVwiPjwvaDI+PC9kaXY+JyxzPTUsdCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fc3VwcG9ydGluZy10ZXh0XCIgZGF0YS1ob29rPVwiZGVzY3JpcHRpb25cIj48L2Rpdj4nLHM9Nyx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1jYXJkX19hY3Rpb25zIG1kbC1jYXJkLS1ib3JkZXJcIj4nLHM9OCx0Kz0nPGEgY2xhc3M9XCJtZGwtYnV0dG9uIG1kbC1idXR0b24tLWNvbG9yZWQgbWRsLWpzLWJ1dHRvbiBtZGwtanMtcmlwcGxlLWVmZmVjdFwiIGRhdGEtaG9vaz1cImRlbGV0ZVwiPicscz05LHQrPVwiRGVsZXRlPC9hPjwvZGl2PlwiLHM9MTEsdCs9JzxkaXYgY2xhc3M9XCJtZGwtY2FyZF9fbWVudVwiPicscz0xMix0Kz0nPHNwYW4gY2xhc3M9XCJtZGwtc3Bpbm5lciBtZGwtanMtc3Bpbm5lciBpcy1hY3RpdmVcIiBkYXRhLWhvb2s9XCJjYnNwaW5uZXJcIj48L3NwYW4+JyxzPTEzLHQrPSc8c3BhbiBkYXRhLWhvb2s9XCJjYnRvZ2dsZVwiPicscz0xNCx0Kz0nPGxhYmVsIGNsYXNzPVwibWRsLXN3aXRjaCBtZGwtanMtc3dpdGNoIG1kbC1qcy1yaXBwbGUtZWZmZWN0XCIgZGF0YS1ob29rPVwiY2JsYWJlbFwiIGZvcj1cIlwiPicscz0xNSx0Kz0nPGlucHV0IGNsYXNzPVwibWRsLXN3aXRjaF9faW5wdXRcIiBkYXRhLWhvb2s9XCJjYlwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiXCIvPjwvbGFiZWw+JyxzPTE2LHQrPSc8c3BhbiBjbGFzcz1cIm1kbC1zd2l0Y2hfX2xhYmVsXCI+PC9zcGFuPjwvc3Bhbj48L2Rpdj48L2Rpdj4nfWNhdGNoKGwpe3B1Zy5yZXRocm93KGwsZCxzKX1yZXR1cm4gdH07XHJcblxyXG4gICAgcHVnbGF0aXplcltcImRhdGFzZXRzXCJdW1wic2Vzc2lvbkNvbGxlY3Rpb25cIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZSh0KXt2YXIgZSxhLHI9XCJcIjt0cnl7YT0xLHIrPSc8ZGl2IGRhdGEtaG9vaz1cInNlc3Npb24tY29sbGVjdGlvbi1pdGVtc1wiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwO1wiPjwvZGl2Pid9Y2F0Y2goaSl7cHVnLnJldGhyb3coaSxlLGEpfXJldHVybiByfTtcclxuXHJcbiAgICBwdWdsYXRpemVyW1wiaGVhZFwiXSA9IGZ1bmN0aW9uIHRlbXBsYXRlKGUpe3ZhciB0LGEsbj1cIlwiO3RyeXthPTEsbis9XCI8aGVhZD5cIixhPTIsbis9JzxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiLz4nLGE9MyxuKz0nPG1ldGEgaHR0cC1lcXVpdj1cIlgtVUEtQ29tcGF0aWJsZVwiIGNvbnRlbnQ9XCJJRT1lZGdlXCIvPicsYT00LG4rPSc8bWV0YSBuYW1lPVwiZGVzY3JpcHRpb25cIiBjb250ZW50PVwiU3BvdCAtIGV4dGVuc2libGUgZmFjZXQgYnJvd3NlclwiLz4nLGE9NSxuKz0nPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIG1pbmltdW0tc2NhbGU9MS4wXCIvPicsYT02LG4rPVwiPHRpdGxlPlwiLGE9NyxuKz1cIlNwb3Q8L3RpdGxlPlwiLGE9OSxuKz1cIjwhLS0gQWRkIHRvIGhvbWVzY3JlZW4gZm9yIENocm9tZSBvbiBBbmRyb2lkIC0tPlwiLGE9MTAsbis9JzxtZXRhIG5hbWU9XCJtb2JpbGUtd2ViLWFwcC1jYXBhYmxlXCIgY29udGVudD1cInllc1wiLz4nLGE9MTMsbis9XCI8IS0tIEFkZCB0byBob21lc2NyZWVuIGZvciBTYWZhcmkgb24gaU9TIC0tPlwiLGE9MTQsbis9JzxtZXRhIG5hbWU9XCJhcHBsZS1tb2JpbGUtd2ViLWFwcC1jYXBhYmxlXCIgY29udGVudD1cInllc1wiLz4nLGE9MTUsbis9JzxtZXRhIG5hbWU9XCJhcHBsZS1tb2JpbGUtd2ViLWFwcC1zdGF0dXMtYmFyLXN0eWxlXCIgY29udGVudD1cImJsYWNrXCIvPicsYT0xNixuKz0nPG1ldGEgbmFtZT1cImFwcGxlLW1vYmlsZS13ZWItYXBwLXRpdGxlXCIgY29udGVudD1cIlNwb3RcIi8+JyxhPTE5LG4rPVwiPCEtLSBUaWxlIGljb24gZm9yIFdpbjggKDE0NHgxNDQgKyB0aWxlIGNvbG9yKSAtLT5cIixhPTIxLG4rPSc8bWV0YSBuYW1lPVwibXNhcHBsaWNhdGlvbi1UaWxlQ29sb3JcIiBjb250ZW50PVwiIzMzNzJERlwiLz48L2hlYWQ+J31jYXRjaChvKXtwdWcucmV0aHJvdyhvLHQsYSl9cmV0dXJuIG59O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJoZWxwXCJdID0ge31cclxuICAgIHB1Z2xhdGl6ZXJbXCJoZWxwXCJdW1wiYW5hbHl6ZVwiXSA9IGZ1bmN0aW9uIHRlbXBsYXRlKGEpe3ZhciBlLHQscD1cIlwiO3RyeXt0PTEscCs9JzxkaXYgZGF0YS1ob29rPVwiYW5hbHl6ZS1oZWxwXCIgaWQ9XCJhbmFseXplLWhlbHBcIiBkYXRhLXBvc2l0aW9uPVwiYm90dG9tXCIgZGF0YS1zdGVwPVwiMVwiPicsdD0yLHArPVwiPGg0PlwiLHQ9MixwKz1cIkFuYWx5emUgcGFnZSBIZWxwPC9oND5cIix0PTMscCs9XCI8cD48L3A+XCIsdD00LHArPVwiVGV4dCBoZXJlPGJyIC8+XCIsdD01LHArPVwiXFxuXCIsdD01LHArPVwiPGJyIC8+PC9kaXY+XCJ9Y2F0Y2gocil7cHVnLnJldGhyb3cocixlLHQpfXJldHVybiBwfTtcclxuXHJcbiAgICBwdWdsYXRpemVyW1wiaGVscFwiXVtcIm1lbnVCdXR0b25zXCJdID0gZnVuY3Rpb24gdGVtcGxhdGUoZSl7dmFyIHQsYSxvPVwiXCI7dHJ5e2E9MSxvKz0nPGRpdiBkYXRhLWhvb2s9XCJ3ZWxjb21lLWluZm9cIiBpZD1cIndlbGNvbWUtaW5mb1wiIGRhdGEtcG9zaXRpb249XCJib3R0b21cIiBkYXRhLXN0ZXA9XCIxXCI+JyxhPTIsbys9XCI8cD48L3A+XCIsYT0zLG8rPVwiPGg2PlwiLGE9MyxvKz1cIllvdSB3aWxsIGZpbmQgdGhlIGZvbGxvd2luZyBidXR0b25zIG9uIHRoZSBsZWZ0IG1lbnU6PC9oNj5cIixhPTQsbys9XCI8bHU+XCIsYT01LG8rPVwiPGxpPlwiLGE9NixvKz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj4nLGE9NixvKz1cIm1lbnU8L2k+XCIsYT03LG8rPVwiYnV0dG9uIGNvbnRyb2xzIHRoZSBtZW51IGRyYXdlci48L2xpPlwiLGE9OCxvKz1cIjxsaT5cIixhPTksbys9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+JyxhPTksbys9XCJob21lPC9pPlwiLGE9MTAsbys9XCJidXR0b24gb3BlbnMgdGhlIGhvbWVwYWdlLiBUaGlzIGlzIHdoZXJlIHlvdSBhcmUgYXQgbm93LjwvbGk+XCIsYT0xMSxvKz1cIjxsaT5cIixhPTEyLG8rPSc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPicsYT0xMixvKz1cInN0b3JhZ2U8L2k+XCIsYT0xMyxvKz1cImJ1dHRvbiB0YWtlcyB5b3UgdG8gRGF0YXNldHMgcGFnZS4gSW4gRGF0YXNldHMgcGFnZSwgeW91IGNhbiB1cGxvYWQgeW91ciBkYXRhc2V0IG9yIHVzZSBleGlzdGluZyBkYXRhc2V0cy4gWW91IGNhbiBhbHNvIGNvbmZpZ3VyZSB5b3VyIGRhdGFzZXRzLjwvbGk+XCIsYT0xNCxvKz1cIjxsaT5cIixhPTE1LG8rPSc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPicsYT0xNSxvKz1cImluc2VydF9jaGFydDwvaT5cIixhPTE2LG8rPVwiYnV0dG9uIHRha2VzIHlvdSB0byBBbmFseXplIHBhZ2UuIEluIEFuYWx5emUgcGFnZSwgeW91IGNhbiBjcmVhdGUgeW91ciBkYXNoYm9hcmQgaW4gYSBmZXcgY2xpY2tzIGJ5IGNyZWF0aW5nIG5ldyBjaGFydHMuPC9saT5cIixhPTE3LG8rPVwiPGxpPlwiLGE9MTgsbys9JzxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+JyxhPTE4LG8rPVwic2hhcmU8L2k+XCIsYT0xOSxvKz1cImJ1dHRvbiB0YWtlcyB5b3UgdG8gU2hhcmUgcGFnZS4gSW4gc2hhcmUgcGFnZSwgeW91IGNhbiBzaGFyZSB5b3VyIGN1cnJlbnQgc2Vzc2lvbiBvciBsb2FkIHRoZSBzZXNzaW9uIHdoaWNoIGlzIHNoYXJlZCB3aXRoIHlvdS48L2xpPlwiLGE9MjAsbys9XCI8bGk+XCIsYT0yMSxvKz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj4nLGE9MjEsbys9XCJoZWxwPC9pPlwiLGE9MjIsbys9XCJidXR0b24gZ3VpZGVzIHlvdSBhYm91dCB0aGUgdXNlciBpbnRlcmZhY2UuPC9saT48L2x1PjwvZGl2PlwifWNhdGNoKGkpe3B1Zy5yZXRocm93KGksdCxhKX1yZXR1cm4gb307XHJcblxyXG4gICAgcHVnbGF0aXplcltcImhlbHBcIl1bXCJ3ZWxjb21lXCJdID0gZnVuY3Rpb24gdGVtcGxhdGUoZSl7dmFyIHQsYSxvPVwiXCI7dHJ5e2E9MSxvKz0nPGRpdiBkYXRhLWhvb2s9XCJ3ZWxjb21lLWluZm9cIiBpZD1cIndlbGNvbWUtaW5mb1wiIGRhdGEtcG9zaXRpb249XCJib3R0b21cIiBkYXRhLXN0ZXA9XCIxXCI+JyxhPTIsbys9XCI8aDQ+XCIsYT0yLG8rPVwiV2VsY29tZSB0byBTUE9UITwvaDQ+XCIsYT0zLG8rPVwiPHA+PC9wPlwiLGE9NCxvKz0nVGhpcyBzb2Z0d2FyZSBpcyBiZWluZyBkZXZlbG9wZWQgYnkgdGhlICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuZXNjaWVuY2VjZW50ZXIubmxcIiB0YXJnZXQ9XCJfYmxhbmtcIj5OZXRoZXJsYW5kcyBlU2NpZW5jZSBDZW50ZXI8L2E+LjxiciAvPicsYT01LG8rPVwiXFxuXCIsYT01LG8rPVwiPGJyIC8+XCIsYT02LG8rPVwiXFxuXCIsYT02LG8rPSdTUE9UIGlzIGEgZnJlZSBhbmQgYW4gb3BlbiBzb3VyY2Ugc29mdHdhcmUuIFRoZSBsaWNlbnNlIG9mIHRoZSBTUE9UIGlzICA8YSBocmVmPVwiaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXCIgdGFyZ2V0PVwiX2JsYW5rXCI+QXBhY2hlIDIuMDwvYT4uPGJyIC8+JyxhPTcsbys9XCJcXG5cIixhPTcsbys9XCI8YnIgLz5cIixhPTgsbys9XCJcXG5cIixhPTgsbys9J0ZvciB0aGUgb25saW5lIHR1dG9yaWFsIG9mIFNQT1QsIHBsZWFzZSBjaGVjayA8YSBocmVmPVwiaHR0cHM6Ly9ubGVzYy5naXRodWIuaW8vc3BvdC10dXRvcmlhbC90dXRvcmlhbFwiIHRhcmdldD1cIl9ibGFua1wiPnRoaXMgbGluazwvYT4uPGJyIC8+JyxhPTksbys9XCJcXG5cIixhPTksbys9XCI8YnIgLz5cIixhPTEwLG8rPVwiXFxuXCIsYT0xMCxvKz1cIjxiciAvPlwiLGE9MTEsbys9XCJcXG5cIixhPTExLG8rPSdUaGUgZGVza3RvcCB2ZXJzaW9uIG9mIFNQT1QgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSA8YSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL05MZVNDL3Nwb3QtZGVza3RvcC1hcHAvcmVsZWFzZXNcIiB0YXJnZXQ9XCJfYmxhbmtcIj50aGlzIGxpbms8L2E+LjxiciAvPicsYT0xMixvKz1cIlxcblwiLGE9MTIsbys9XCI8YnI+XCIsYT0xMyxvKz1cIlxcblwiLGE9MTMsbys9XCJZb3UgY2FuIGNsaWNrIHRoZSBidXR0b24gYmVsb3cgdG8gc3RhcnQgYSBkZW1vIHNlc3Npb24uIFRoZSBkZW1vIHNlc3Npb24gaGFzIDxiPkthZ2dsZSBUaXRhbmljIFN1cnZpdmFsPC9iPiBkYXRhc2V0LlwiLGE9MTUsbys9XCJcXG5cIixhPTE1LG8rPVwiPGJyPjxicj4gSGFwcHkgU1BPVFRJTkchPGJyPjwvZGl2PlwifWNhdGNoKG4pe3B1Zy5yZXRocm93KG4sdCxhKX1yZXR1cm4gb307XHJcblxyXG4gICAgcHVnbGF0aXplcltcImhvbWVcIl0gPSBmdW5jdGlvbiB0ZW1wbGF0ZShzKXt2YXIgYSxsLGU9XCJcIjt0cnl7bD0xLGUrPSc8bWFpbiBjbGFzcz1cIm1kbC1sYXlvdXRfX2NvbnRlbnQgaG9tZS1jb250ZW50IGJnc3BvdEltYWdlXCI+JyxsPTIsZSs9JzxkaXYgY2xhc3M9XCJjb250ZW50LWdyaWQgbWRsLWdyaWQgbWRsLWNlbGwtLW1pZGRsZVwiPicsbD00LGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTEyLWNvbCBtZGwtY2VsbC0tMC1vZmZzZXQgbWRsLXNoYWRvdy0tMmRwIHNwb3QtY2VsbCBzcG90LXRyYW5zIHNwb3QtY29sb3I0XCI+JyxsPTYsZSs9JzxzcGFuIGNsYXNzPVwiY2FyZFRpdGxlVGV4dCBtYXRlcmlhbC1pY29ucyBtZW51SWNvblwiPicsbD02LGUrPVwiZXhwbG9yZTwvc3Bhbj5cIixsPTcsZSs9JzxzcGFuIGNsYXNzPVwiY2FyZFRpdGxlVGV4dFwiPicsbD03LGUrPVwiIFNQT1Q6IGludGVyYWN0aXZlLCBmYXN0IGZhY2V0IGJyb3dzZXI8L3NwYW4+XCIsbD04LGUrPVwiPHVsPlwiLGw9OSxlKz1cIjxsaT5cIixsPTEwLGUrPSc8cCBjbGFzcz1cImNhcmRUZXh0XCI+JyxsPTEwLGUrPVwiU1BPVCBpcyBhbiBpbnRlcmFjdGl2ZSwgZmFzdCBkYXRhIHZpc3VhbGl6YXRpb24gdG9vbC4gSXQgd2FzIHByaW1hcmlseSBkZXNpZ25lZCBhcyBkYXRhIGV4cGxvcmF0aW9uIGFuZCBhbmFseXNpcyB0b29sIGZvciBjb21wbGV4IG11bHRpLWRpbWVuc2lvbmFsIGRhdGFzZXRzLiBVc2VycyBjYW4gdmlzdWFsaXplIHRoZSBkYXRhIG9ubHkgd2l0aCBhIGZldyBjbGlja3MuIFNQT1QgY2FuIGJlIHVzZWQgdG8gY29tcGFyZSBkaWZmZXJlbnQgZGF0YXNldHMuIEl0IGlzIGFsc28gcG9zc2libGUgdG8gY29ubmVjdCB0byBhIFBvc3RyZXNxbCBzZXJ2ZXIgdG8gYW5hbHl6ZSBiaWcgZGF0YXNldHMuPC9wPjwvbGk+PC91bD48L2Rpdj5cIixsPTEyLGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTQtY29sIHNwb3QtY2VsbCBzcG90LXRyYW5zIHNwb3QtY29sb3I0XCI+JyxsPTEzLGUrPSc8c3BhbiBjbGFzcz1cImNhcmRUaXRsZVRleHQgbWF0ZXJpYWwtaWNvbnMgbWVudUljb25cIj4nLGw9MTMsZSs9XCJtZXJnZV90eXBlPC9zcGFuPlwiLGw9MTQsZSs9JzxzcGFuIGNsYXNzPVwiY2FyZFRpdGxlVGV4dFwiPicsbD0xNCxlKz1cIkhpZ2hsaWdodHM8L3NwYW4+XCIsbD0xNSxlKz1cIjx1bD5cIixsPTE2LGUrPVwiPGxpPlwiLGw9MTcsZSs9JzxkaXYgY2xhc3M9XCJjYXJkVGV4dFwiPicsbD0xNyxlKz1cIlNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3Igc2NpZW50aWZpYyBkYXRhIHZpc3VhbGl6YXRpb248L2Rpdj48L2xpPlwiLGw9MTgsZSs9XCI8bGk+XCIsbD0xOSxlKz0nPGRpdiBjbGFzcz1cImNhcmRUZXh0XCI+JyxsPTE5LGUrPVwiRnVsbHkgYW5pbWF0ZWQgYW5kIGludGVyYWN0aXZlIGNoYXJ0czwvZGl2PjwvbGk+XCIsbD0yMCxlKz1cIjxsaT5cIixsPTIxLGUrPSc8ZGl2IGNsYXNzPVwiY2FyZFRleHRcIj4nLGw9MjEsZSs9XCJFeHBsb3JhdGlvbiBzZXNzaW9ucyBjYW4gYmUgc2F2ZWQ8L2Rpdj48L2xpPlwiLGw9MjIsZSs9XCI8bGk+XCIsbD0yMyxlKz0nPGRpdiBjbGFzcz1cImNhcmRUZXh0XCI+JyxsPTIzLGUrPVwiRGF0YWJhc2UgY29ubmVjdGlvbiAoUG9zdGdyZXNxbCk8L2Rpdj48L2xpPjwvdWw+PC9kaXY+XCIsbD0yNSxlKz0nPGRpdiBjbGFzcz1cIm1kbC1jZWxsIG1kbC1jZWxsLS00LWNvbCBzcG90LWNlbGwgc3BvdC10cmFucyBzcG90LWNvbG9yNFwiPicsbD0yNixlKz0nPHNwYW4gY2xhc3M9XCJjYXJkVGl0bGVUZXh0IG1hdGVyaWFsLWljb25zIG1lbnVJY29uXCI+JyxsPTI2LGUrPVwiZXh0ZW5zaW9uPC9zcGFuPlwiLGw9MjcsZSs9JzxzcGFuIGNsYXNzPVwiY2FyZFRpdGxlVGV4dFwiPicsbD0yNyxlKz1cIiAgTW9kZXJuIHRvb2xzPC9zcGFuPlwiLGw9MjgsZSs9XCI8dWw+XCIsbD0yOSxlKz1cIjxsaT5cIixsPTMwLGUrPSc8ZGl2IGNsYXNzPVwiY2FyZFRleHRcIj4nLGw9MzAsZSs9XCJWaWV3ZXIgaXMgZnVsbHkgc3RhbmRhbG9uZSAobm8gc2VydmVyIHJlcXVpcmVkKTwvZGl2PjwvbGk+XCIsbD0zMSxlKz1cIjxsaT5cIixsPTMyLGUrPSc8ZGl2IGNsYXNzPVwiY2FyZFRleHRcIj4nLGw9MzIsZSs9XCJSZXNwb25zaXZlIGludGVyZmFjZTogbWF0ZXJpYWwgZGVzaWduIGxpdGU8L2Rpdj48L2xpPlwiLGw9MzMsZSs9XCI8bGk+XCIsbD0zNCxlKz0nPGRpdiBjbGFzcz1cImNhcmRUZXh0XCI+JyxsPTM0LGUrPVwiRmFzdCBmaWx0ZXJpbmcgKH4xTSBkYXRhIHBvaW50cyBpbiB+MzBtcyk8L2Rpdj48L2xpPlwiLGw9MzUsZSs9XCI8bGk+XCIsbD0zNixlKz0nPGRpdiBjbGFzcz1cImNhcmRUZXh0XCI+JyxsPTM2LGUrPVwiQ3Jvc3MgcGxhdGZvcm0gKGRlc2t0b3AsIG1vYmlsZSBhbmQgdGFibGV0KTwvZGl2PjwvbGk+PC91bD48L2Rpdj5cIixsPTM4LGUrPSc8ZGl2IGNsYXNzPVwibWRsLWNlbGwgbWRsLWNlbGwtLTQtY29sIG1kbC1zaGFkb3ctLTJkcCBzcG90LWNlbGwgc3BvdC10cmFucyBzcG90LWNvbG9yNFwiPicsbD0zOSxlKz0nPHNwYW4gY2xhc3M9XCJjYXJkVGl0bGVUZXh0IG1hdGVyaWFsLWljb25zIG1lbnVJY29uXCI+JyxsPTM5LGUrPVwibG9ja19vcGVuPC9zcGFuPlwiLGw9NDAsZSs9JzxzcGFuIGNsYXNzPVwiY2FyZFRpdGxlVGV4dFwiPicsbD00MCxlKz1cIiAgT3BlbiBTb3VyY2U8L3NwYW4+XCIsbD00MSxlKz1cIjx1bD5cIixsPTQyLGUrPVwiPGxpPlwiLGw9NDMsZSs9JzxkaXYgY2xhc3M9XCJjYXJkVGV4dFwiPicsbD00MyxlKz1cIlBlcm1pc3NpdmUgT3BlbiBzb3VyY2UgTGljZW5jZSAoQXBhY2hlIDIuMCk8L2Rpdj48L2xpPlwiLGw9NDQsZSs9XCI8bGk+XCIsbD00NSxlKz0nPGRpdiBjbGFzcz1cImNhcmRUZXh0XCI+JyxsPTQ1LGUrPVwiQ29udGludW91cyBJbnRlZ3JhdGlvbjwvZGl2PjwvbGk+XCIsbD00NixlKz1cIjxsaT5cIixsPTQ3LGUrPSc8ZGl2IGNsYXNzPVwiY2FyZFRleHRcIj4nLGw9NDcsZSs9XCJEb2N1bWVudGVkIChqc2RvYykgYW5kIHRlc3RlZCAoamFzbWluZSk8L2Rpdj48L2xpPlwiLGw9NDgsZSs9XCI8bGk+XCIsbD00OSxlKz0nPGRpdiBjbGFzcz1cImNhcmRUZXh0XCI+JyxsPTQ5LGUrPVwiR2VuZXJpYyB0b29sIHRvIGJlIHVzZWZ1bCBpbiBhbnkgc2NpZW50aWZpYyBwcm9qZWN0PC9kaXY+PC9saT48L3VsPjwvZGl2PjwvZGl2PlwiLGw9NTEsZSs9JzxkaXYgY2xhc3M9XCJtZGwtbGF5b3V0LXNwYWNlclwiPjwvZGl2PicsbD01MyxlKz0nPGZvb3RlciBjbGFzcz1cIm1kbC1tZWdhLWZvb3RlciBzcG90LWNlbGwgc3BvdC10cmFucyBzcG90LWNvbG9yNFwiPicsbD01NCxlKz0nPGRpdiBjbGFzcz1cInNwb3QtZm9vdGVyXCI+JyxsPTU4LGUrPSc8ZGl2IGNsYXNzPVwic3BvdC1mb290ZXItaXRlbVwiPicsbD01OSxlKz0nPGEgY2xhc3M9XCJzcG90bGlua1wiIGRhdGEtaG9vaz1cImRlbW8tc2Vzc2lvblwiIGhyZWY9XCJcIj4nLGw9NjAsZSs9JzxzcGFuIGNsYXNzPVwiZm9vdGVySW1nIG1hdGVyaWFsLWljb25zIG1lbnVJY29uXCI+JyxsPTYwLGUrPVwib25kZW1hbmRfdmlkZW88L3NwYW4+XCIsbD02MSxlKz0nPHNwYW4gY2xhc3M9XCJmb290ZXJJdGVtXCI+JyxsPTYxLGUrPVwiRGVtbzwvc3Bhbj48L2E+PC9kaXY+XCIsbD02MixlKz0nPGRpdiBjbGFzcz1cInNwb3QtZm9vdGVyLWl0ZW1cIj4nLGw9NjMsZSs9JzxhIGNsYXNzPVwic3BvdGxpbmtcIiBkYXRhLWhvb2s9XCJ0dXRvcmlhbHBhZ2VcIiBocmVmPVwiaHR0cHM6Ly9ubGVzYy5naXRodWIuaW8vc3BvdC10dXRvcmlhbC90dXRvcmlhbFwiIHRhcmdldD1cIl9ibGFua1wiPicsbD02NCxlKz0nPHNwYW4gY2xhc3M9XCJmb290ZXJJbWcgbWF0ZXJpYWwtaWNvbnMgbWVudUljb25cIj4nLGw9NjQsZSs9XCJsaW5rPC9zcGFuPlwiLGw9NjUsZSs9JzxzcGFuIGNsYXNzPVwiZm9vdGVySXRlbVwiPicsbD02NSxlKz1cIlR1dG9yaWFsPC9zcGFuPjwvYT48L2Rpdj5cIixsPTY2LGUrPSc8ZGl2IGNsYXNzPVwic3BvdC1mb290ZXItaXRlbVwiPicsbD02NyxlKz0nPGEgY2xhc3M9XCJzcG90bGlua1wiIGRhdGEtaG9vaz1cImdpdGh1YnBhZ2VcIiBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL05MZVNDL3Nwb3RcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nLGw9NjgsZSs9JzxzcGFuIGNsYXNzPVwiZm9vdGVySW1nIG1hdGVyaWFsLWljb25zIG1lbnVJY29uXCI+JyxsPTY4LGUrPVwibGluazwvc3Bhbj5cIixsPTY5LGUrPSc8c3BhbiBjbGFzcz1cImZvb3Rlckl0ZW1cIj4nLGw9NjksZSs9XCJQcm9qZWN0PC9zcGFuPjwvYT48L2Rpdj48L2Rpdj5cIixsPTcwLGUrPSc8ZGl2IGNsYXNzPVwic3BvdC1mb290ZXJcIj4nLGw9NzEsZSs9JzxzcGFuIGNsYXNzPVwidmVyc2lvblRleHRcIj4nLGw9NzEsZSs9XCJWZXJzaW9uIDAuMi4wPC9zcGFuPjwvZGl2PjwvZm9vdGVyPjwvbWFpbj5cIn1jYXRjaCh0KXtwdWcucmV0aHJvdyh0LGEsbCl9cmV0dXJuIGV9O1xyXG5cclxuICAgIHB1Z2xhdGl6ZXJbXCJtYWluXCJdID0gZnVuY3Rpb24gdGVtcGxhdGUoYSl7dmFyIGwscyx0PVwiXCI7dHJ5e3M9MSx0Kz1cIjxib2R5PlwiLHM9Mix0Kz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQgbWRsLWpzLWxheW91dFwiIGRhdGEtaG9vaz1cInRlc3RcIj4nLHM9NCx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXRfX2hlYWRlci1yb3cgbWRsLWNvbG9yLS1ibHVlLWdyZXktOTAwXCI+JyxzPTUsdCs9XCI8IS0tIFRpdGxlLS0+XCIscz02LHQrPSc8c3BhbiBjbGFzcz1cIm1kbC1sYXlvdXQtdGl0bGUgbWRsLWxheW91dC0tbGFyZ2Utc2NyZWVuLW9ubHlcIj4nLHM9Nyx0Kz0nPGEgZGF0YS1ob29rPVwibmxlc2NwYWdlXCIgaHJlZj1cImh0dHBzOi8vd3d3LmVzY2llbmNlY2VudGVyLm5sXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyxzPTgsdCs9JzxkaXYgY2xhc3M9XCJkZW1vLWF2YXRhclwiPjwvZGl2PjwvYT48L3NwYW4+JyxzPTksdCs9XCI8IS0tIEFkZCBzcGFjZXIsIHRvIGFsaWduIG5hdmlnYXRpb24gdG8gdGhlIHJpZ2h0LS0+XCIscz0xMCx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQtc3BhY2VyXCI+PC9kaXY+JyxzPTExLHQrPVwiPCEtLSBOYXZpZ2F0aW9uLiBXZSBoaWRlIGl0IGluIHNtYWxsIHNjcmVlbnMuLS0+XCIscz0xMix0Kz0nPG5hdiBjbGFzcz1cIm1kbC1uYXZpZ2F0aW9uIG1kbC1sYXlvdXQtLWxhcmdlLXNjcmVlbi1vbmx5XCI+JyxzPTEzLHQrPSc8YSBjbGFzcz1cIm1kbC1uYXZpZ2F0aW9uX19saW5rXCIgaHJlZj1cIi9ob21lXCI+JyxzPTEzLHQrPVwiSG9tZTwvYT5cIixzPTE0LHQrPSc8YSBjbGFzcz1cIm1kbC1uYXZpZ2F0aW9uX19saW5rXCIgaHJlZj1cIi9kYXRhc2V0c1wiPicscz0xNCx0Kz1cIkRhdGE8L2E+XCIscz0xNSx0Kz0nPGEgY2xhc3M9XCJtZGwtbmF2aWdhdGlvbl9fbGlua1wiIGhyZWY9XCIvYW5hbHl6ZVwiPicscz0xNSx0Kz1cIkFuYWx5c2lzPC9hPlwiLHM9MTYsdCs9JzxhIGNsYXNzPVwibWRsLW5hdmlnYXRpb25fX2xpbmtcIiBocmVmPVwiI1wiIGRhdGEtaG9vaz1cImhlbHAtYnV0dG9uXCIgaWQ9XCJoZWxwLWJ1dHRvblwiPicscz0xNyx0Kz0nPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPicscz0xNyx0Kz1cImhlbHA8L2k+PC9hPjwvbmF2PjwvZGl2PlwiLHM9MjQsdCs9JzxkaXYgY2xhc3M9XCJtZGwtZHJhd2VyIG1kbC1sYXlvdXRfX2RyYXdlciBtZGwtY29sb3ItLWJsdWUtZ3JleS05MDAgbWRsLWxheW91dC0tc21hbGwtc2NyZWVuLW9ubHlcIj4nLHM9MjUsdCs9JzxzcGFuIGNsYXNzPVwibWRsLWxheW91dC10aXRsZVwiPicscz0yNyx0Kz0nPGEgZGF0YS1ob29rPVwibmxlc2NwYWdlXCIgaHJlZj1cImh0dHBzOi8vd3d3LmVzY2llbmNlY2VudGVyLm5sXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyxzPTI4LHQrPSc8ZGl2IGNsYXNzPVwiZGVtby1hdmF0YXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDIwcHg7IG1hcmdpbi1ib3R0b206IDUwcHg7XCI+PC9kaXY+PC9hPjwvc3Bhbj4nLHM9MjksdCs9JzxuYXYgY2xhc3M9XCJtZGwtbmF2aWdhdGlvblwiPicscz0zMCx0Kz0nPGEgY2xhc3M9XCJtZGwtbmF2aWdhdGlvbl9fbGlua1wiIGhyZWY9XCIvaG9tZVwiPicscz0zMCx0Kz1cIkhvbWU8L2E+XCIscz0zMSx0Kz0nPGEgY2xhc3M9XCJtZGwtbmF2aWdhdGlvbl9fbGlua1wiIGhyZWY9XCIvZGF0YXNldHNcIj4nLHM9MzEsdCs9XCJEYXRhPC9hPlwiLHM9MzIsdCs9JzxhIGNsYXNzPVwibWRsLW5hdmlnYXRpb25fX2xpbmtcIiBocmVmPVwiL2FuYWx5emVcIj4nLHM9MzIsdCs9XCJEYXNoYm9hcmQ8L2E+XCIscz0zMyx0Kz0nPGEgY2xhc3M9XCJtZGwtbmF2aWdhdGlvbl9fbGlua1wiIGhyZWY9XCIjXCIgZGF0YS1ob29rPVwiaGVscC1idXR0b25cIiBpZD1cImhlbHAtYnV0dG9uXCI+JyxzPTM0LHQrPSc8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+JyxzPTM0LHQrPVwiaGVscDwvaT5cIixzPTM1LHQrPVwiPHNwYW4+XCIscz0zNSx0Kz1cIkhlbHA8L3NwYW4+PC9hPjwvbmF2PlwiLHM9MzcsdCs9JzxkaXYgY2xhc3M9XCJtZGwtZHJhd2VyLXNlcGFyYXRvclwiPjwvZGl2Picscz0zOCx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQtc3BhY2VyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAyMHB4O1wiPjwvZGl2Picscz00MCx0Kz0nPG5hdiBjbGFzcz1cIm1kbC1uYXZpZ2F0aW9uXCI+JyxzPTQxLHQrPSc8YSBjbGFzcz1cIm1kbC1uYXZpZ2F0aW9uX19saW5rXCIgaHJlZj1cImh0dHBzOi8vbmxlc2MuZ2l0aHViLmlvL3Nwb3QtdHV0b3JpYWwvdHV0b3JpYWxcIj4nLHM9NDEsdCs9XCJUdXRvcmlhbDwvYT5cIixzPTQyLHQrPSc8YSBjbGFzcz1cIm1kbC1uYXZpZ2F0aW9uX19saW5rXCIgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9OTGVTQy9zcG90XCI+JyxzPTQyLHQrPVwiR2l0aHViPC9hPjwvbmF2PlwiLHM9NDQsdCs9JzxkaXYgY2xhc3M9XCJtZGwtZHJhd2VyLXNlcGFyYXRvclwiPjwvZGl2Picscz00NSx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1sYXlvdXQtc3BhY2VyXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAyMHB4O1wiPjwvZGl2Picscz00Nix0Kz0nPHNwYW4gY2xhc3M9XCJ2ZXJzaW9uVGV4dFwiPicscz00Nix0Kz1cIlZlcnNpb24gMC4yLjA8L3NwYW4+PC9kaXY+XCIscz00OSx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1ncmlkXCI+JyxzPTUwLHQrPSc8ZGlhbG9nIGNsYXNzPVwibWRsLWRpYWxvZ1wiIGRhdGEtaG9vaz1cIm1haW4tZGlhbG9nXCIgaWQ9XCJtYWluLWRpYWxvZ1wiIHN0eWxlPVwiYm9yZGVyOiBub25lOyB3aWR0aDogbWluLWNvbnRlbnQ7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1wiPicscz01MSx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1kaWFsb2dfX2NvbnRlbnRcIj4nLHM9NTMsdCs9JzxwMiBjbGFzcz1cIm1kbC1wcm9ncmVzcyBtZGwtanMtcHJvZ3Jlc3MgbWRsLXByb2dyZXNzX19pbmRldGVybWluYXRlXCI+PC9wMj48L2Rpdj48L2RpYWxvZz48L2Rpdj4nLHM9NTgsdCs9JzxtYWluIGNsYXNzPVwibWRsLWxheW91dF9fY29udGVudFwiIGRhdGEtaG9vaz1cInBhZ2UtY29udGFpbmVyXCI+PC9tYWluPicscz02MCx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1wcm9ncmVzcyBtZGwtanMtcHJvZ3Jlc3NcIiBpZD1cInByb2dyZXNzLWJhclwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNSU7IGRpc3BsYXk6IG5vbmVcIj48L2Rpdj4nLHM9NjIsdCs9JzxkaXYgY2xhc3M9XCJtZGwtanMtc25hY2tiYXIgbWRsLXNuYWNrYmFyXCIgaWQ9XCJzbmFjay1iYXJcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBhcmlhLWF0b21pYz1cInRydWVcIiBhcmlhLXJlbGV2YW50PVwidGV4dFwiPicscz02Myx0Kz0nPGRpdiBjbGFzcz1cIm1kbC1zbmFja2Jhcl9fdGV4dFwiPjwvZGl2Picscz02NCx0Kz0nPGJ1dHRvbiBjbGFzcz1cIm1kbC1zbmFja2Jhcl9fYWN0aW9uXCIgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvYm9keT4nfWNhdGNoKGkpe3B1Zy5yZXRocm93KGksbCxzKX1yZXR1cm4gdH07XHJcblxyXG5cclxuICAgIHJldHVybiBwdWdsYXRpemVyO1xyXG59KSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0EsV0FPQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVBBO0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUVBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///4324\n')},48248:function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nmodule.exports = View.extend({\n  template: templates.datasets.session,\n  derived: {// facetsURL: {\n    //   deps: ['model.id'],\n    //   fn: function () {\n    //     return this.model.id;\n    //   }\n    // }\n  },\n  props: {\n    bussy: ['boolean', true, false]\n  },\n  bindings: {\n    'bussy': [{\n      hook: 'cbtoggle',\n      type: 'toggle',\n      invert: true\n    }, {\n      hook: 'cbspinner',\n      type: 'toggle',\n      invert: false\n    }],\n    // 'model.show': {\n    //   hook: 'session',\n    //   type: 'toggle'\n    // },\n    'model.date': {\n      hook: 'date',\n      type: 'text'\n    },\n    'model.name': {\n      hook: 'name',\n      type: 'text'\n    },\n    // material design hooks\n    'model.isActive': [{\n      hook: 'cb',\n      type: 'booleanAttribute',\n      name: 'checked'\n    }, {\n      type: 'toggle',\n      hook: 'settings',\n      invert: true\n    }],\n    'model.id': [{\n      hook: 'cb',\n      type: 'attribute',\n      name: 'id'\n    }, {\n      hook: 'cblabel',\n      type: 'attribute',\n      name: 'for'\n    }]\n  },\n  events: {\n    'change': 'toggleActive',\n    // 'click [data-hook~=settings]': function () { app.navigate('/dataset/' + this.model.id); },\n    'click [data-hook~=delete]': 'deleteSession'\n  },\n  toggleActive: function toggleActive() {\n    var that = this;\n    that.bussy = !that.busy;\n    that.model.isActive = !that.model.isActive; //   // if (that.model.facets.length === 0) {\n    //   //   // Automatically scan the dataset if there are no facets\n    //   //   that.model.scan();\n    //   //   that.model.once('syncFacets', function () {\n    //   //     app.me.toggleDataset(that.model);\n    //   //     that.bussy = !that.bussy;\n    //   //   });\n    //   // } else {\n    //   //   // BUGFIX: we cant show/hide the spinner from within the event loop; so\n    //   //   //  * activate the spinner,\n    //   //   //  * exit the event loop (ie. redraw the page),\n    //   //   //  * and toggle the dataset via the timeout\n    //   //   window.setTimeout(function () {\n    //   //     app.me.toggleDataset(that.model);\n    //   //     that.bussy = !that.bussy;\n    //   //   }, 500);\n    //   // }\n\n    that.bussy = !that.bussy;\n  },\n  deleteSession: function deleteSession() {\n    console.log('Deleting the session'); //   // if (this.model.isActive) {\n    //   //   this.bussy = true;\n    //   //   app.me.toggleDataset(this.model);\n    //   //   this.bussy = false;\n    //   // }\n\n    console.log(this.model);\n    app.removeSessionFromLocalStorage(this.model.id);\n  },\n  render: function render() {\n    this.renderWithTemplate(this);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDgyNDguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvZGF0YXNldHMvc2Vzc2lvbi12aWV3LmpzPzYzOTMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uLy4uL3RlbXBsYXRlcycpO1xudmFyIGFwcCA9IHJlcXVpcmUoJ2FtcGVyc2FuZC1hcHAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMuZGF0YXNldHMuc2Vzc2lvbixcbiAgZGVyaXZlZDoge1xuICAgIC8vIGZhY2V0c1VSTDoge1xuICAgIC8vICAgZGVwczogWydtb2RlbC5pZCddLFxuICAgIC8vICAgZm46IGZ1bmN0aW9uICgpIHtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMubW9kZWwuaWQ7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICB9LFxuICBwcm9wczoge1xuICAgIGJ1c3N5OiBbJ2Jvb2xlYW4nLCB0cnVlLCBmYWxzZV1cbiAgfSxcbiAgYmluZGluZ3M6IHtcbiAgICAnYnVzc3knOiBbXG4gICAgICB7XG4gICAgICAgIGhvb2s6ICdjYnRvZ2dsZScsXG4gICAgICAgIHR5cGU6ICd0b2dnbGUnLFxuICAgICAgICBpbnZlcnQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGhvb2s6ICdjYnNwaW5uZXInLFxuICAgICAgICB0eXBlOiAndG9nZ2xlJyxcbiAgICAgICAgaW52ZXJ0OiBmYWxzZVxuICAgICAgfVxuICAgIF0sXG4gICAgLy8gJ21vZGVsLnNob3cnOiB7XG4gICAgLy8gICBob29rOiAnc2Vzc2lvbicsXG4gICAgLy8gICB0eXBlOiAndG9nZ2xlJ1xuICAgIC8vIH0sXG4gICAgJ21vZGVsLmRhdGUnOiB7XG4gICAgICBob29rOiAnZGF0ZScsXG4gICAgICB0eXBlOiAndGV4dCdcbiAgICB9LCAgICBcbiAgICAnbW9kZWwubmFtZSc6IHtcbiAgICAgIGhvb2s6ICduYW1lJyxcbiAgICAgIHR5cGU6ICd0ZXh0J1xuICAgIH0sXG4gICAgLy8gbWF0ZXJpYWwgZGVzaWduIGhvb2tzXG4gICAgJ21vZGVsLmlzQWN0aXZlJzogW1xuICAgICAge1xuICAgICAgICBob29rOiAnY2InLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbkF0dHJpYnV0ZScsXG4gICAgICAgIG5hbWU6ICdjaGVja2VkJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3RvZ2dsZScsXG4gICAgICAgIGhvb2s6ICdzZXR0aW5ncycsXG4gICAgICAgIGludmVydDogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAgJ21vZGVsLmlkJzogW1xuICAgICAgeyBob29rOiAnY2InLCB0eXBlOiAnYXR0cmlidXRlJywgbmFtZTogJ2lkJyB9LFxuICAgICAgeyBob29rOiAnY2JsYWJlbCcsIHR5cGU6ICdhdHRyaWJ1dGUnLCBuYW1lOiAnZm9yJyB9XG4gICAgXVxuICB9LFxuICBldmVudHM6IHtcbiAgICAnY2hhbmdlJzogJ3RvZ2dsZUFjdGl2ZScsXG4gICAgLy8gJ2NsaWNrIFtkYXRhLWhvb2t+PXNldHRpbmdzXSc6IGZ1bmN0aW9uICgpIHsgYXBwLm5hdmlnYXRlKCcvZGF0YXNldC8nICsgdGhpcy5tb2RlbC5pZCk7IH0sXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWRlbGV0ZV0nOiAnZGVsZXRlU2Vzc2lvbidcbiAgfSxcbiAgdG9nZ2xlQWN0aXZlOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzO1xuXG4gICAgdGhhdC5idXNzeSA9ICF0aGF0LmJ1c3k7XG4gICAgdGhhdC5tb2RlbC5pc0FjdGl2ZSA9ICF0aGF0Lm1vZGVsLmlzQWN0aXZlO1xuXG4gIC8vICAgLy8gaWYgKHRoYXQubW9kZWwuZmFjZXRzLmxlbmd0aCA9PT0gMCkge1xuICAvLyAgIC8vICAgLy8gQXV0b21hdGljYWxseSBzY2FuIHRoZSBkYXRhc2V0IGlmIHRoZXJlIGFyZSBubyBmYWNldHNcbiAgLy8gICAvLyAgIHRoYXQubW9kZWwuc2NhbigpO1xuICAvLyAgIC8vICAgdGhhdC5tb2RlbC5vbmNlKCdzeW5jRmFjZXRzJywgZnVuY3Rpb24gKCkge1xuICAvLyAgIC8vICAgICBhcHAubWUudG9nZ2xlRGF0YXNldCh0aGF0Lm1vZGVsKTtcbiAgLy8gICAvLyAgICAgdGhhdC5idXNzeSA9ICF0aGF0LmJ1c3N5O1xuICAvLyAgIC8vICAgfSk7XG4gIC8vICAgLy8gfSBlbHNlIHtcbiAgLy8gICAvLyAgIC8vIEJVR0ZJWDogd2UgY2FudCBzaG93L2hpZGUgdGhlIHNwaW5uZXIgZnJvbSB3aXRoaW4gdGhlIGV2ZW50IGxvb3A7IHNvXG4gIC8vICAgLy8gICAvLyAgKiBhY3RpdmF0ZSB0aGUgc3Bpbm5lcixcbiAgLy8gICAvLyAgIC8vICAqIGV4aXQgdGhlIGV2ZW50IGxvb3AgKGllLiByZWRyYXcgdGhlIHBhZ2UpLFxuICAvLyAgIC8vICAgLy8gICogYW5kIHRvZ2dsZSB0aGUgZGF0YXNldCB2aWEgdGhlIHRpbWVvdXRcbiAgLy8gICAvLyAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgLy8gICAvLyAgICAgYXBwLm1lLnRvZ2dsZURhdGFzZXQodGhhdC5tb2RlbCk7XG4gIC8vICAgLy8gICAgIHRoYXQuYnVzc3kgPSAhdGhhdC5idXNzeTtcbiAgLy8gICAvLyAgIH0sIDUwMCk7XG4gIC8vICAgLy8gfVxuXG4gICAgdGhhdC5idXNzeSA9ICF0aGF0LmJ1c3N5O1xuICB9LFxuICBkZWxldGVTZXNzaW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS5sb2coJ0RlbGV0aW5nIHRoZSBzZXNzaW9uJylcbiAgLy8gICAvLyBpZiAodGhpcy5tb2RlbC5pc0FjdGl2ZSkge1xuICAvLyAgIC8vICAgdGhpcy5idXNzeSA9IHRydWU7XG4gIC8vICAgLy8gICBhcHAubWUudG9nZ2xlRGF0YXNldCh0aGlzLm1vZGVsKTtcbiAgLy8gICAvLyAgIHRoaXMuYnVzc3kgPSBmYWxzZTtcbiAgLy8gICAvLyB9XG4gICAgY29uc29sZS5sb2codGhpcy5tb2RlbCk7XG4gICAgYXBwLnJlbW92ZVNlc3Npb25Gcm9tTG9jYWxTdG9yYWdlKHRoaXMubW9kZWwuaWQpO1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlbmRlcldpdGhUZW1wbGF0ZSh0aGlzKTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUF4Q0E7QUEyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQW5HQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///48248\n")},4916:function(module,exports,__webpack_require__){eval("var Spot = __webpack_require__(/*! spot-framework */ \"3b07\");\n\nvar View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar timeUtil = Spot.util.time; // this.model should be a DurationTransform\n\nvar DurationUnitsView = View.extend({\n  template: '<option data-hook=\"option\"> </option>',\n  render: function render() {\n    this.renderWithTemplate(this);\n  },\n  bindings: {\n    'model.description': [{\n      hook: 'option',\n      type: 'text'\n    }, {\n      hook: 'option',\n      type: 'attribute',\n      name: 'value'\n    }]\n  }\n});\nmodule.exports = View.extend({\n  template: '<select data-hook=\"options\"> </select>',\n  initialize: function initialize(options) {\n    this.field = options.field;\n  },\n  render: function render() {\n    this.renderWithTemplate(this);\n    this.renderCollection(timeUtil.durationUnits, DurationUnitsView, this.queryByHook('options'));\n    var value = this.model[this.field];\n    this.queryByHook('options').value = value;\n  },\n  events: {\n    'change [data-hook=\"options\"]': 'changeDurationUnits'\n  },\n  changeDurationUnits: function changeDurationUnits() {\n    var value = this.queryByHook('options').value;\n    this.model[this.field] = value;\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkxNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZmFjZXQvZHVyYXRpb24tdW5pdHMtc2VsZWN0LmpzP2JlODEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFNwb3QgPSByZXF1aXJlKCdzcG90LWZyYW1ld29yaycpO1xudmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRpbWVVdGlsID0gU3BvdC51dGlsLnRpbWU7XG5cbi8vIHRoaXMubW9kZWwgc2hvdWxkIGJlIGEgRHVyYXRpb25UcmFuc2Zvcm1cblxudmFyIER1cmF0aW9uVW5pdHNWaWV3ID0gVmlldy5leHRlbmQoe1xuICB0ZW1wbGF0ZTogJzxvcHRpb24gZGF0YS1ob29rPVwib3B0aW9uXCI+IDwvb3B0aW9uPicsXG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVuZGVyV2l0aFRlbXBsYXRlKHRoaXMpO1xuICB9LFxuICBiaW5kaW5nczoge1xuICAgICdtb2RlbC5kZXNjcmlwdGlvbic6IFtcbiAgICAgIHtcbiAgICAgICAgaG9vazogJ29wdGlvbicsXG4gICAgICAgIHR5cGU6ICd0ZXh0J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaG9vazogJ29wdGlvbicsXG4gICAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBuYW1lOiAndmFsdWUnXG4gICAgICB9XG4gICAgXVxuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiAnPHNlbGVjdCBkYXRhLWhvb2s9XCJvcHRpb25zXCI+IDwvc2VsZWN0PicsXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdGhpcy5maWVsZCA9IG9wdGlvbnMuZmllbGQ7XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVuZGVyV2l0aFRlbXBsYXRlKHRoaXMpO1xuICAgIHRoaXMucmVuZGVyQ29sbGVjdGlvbih0aW1lVXRpbC5kdXJhdGlvblVuaXRzLCBEdXJhdGlvblVuaXRzVmlldywgdGhpcy5xdWVyeUJ5SG9vaygnb3B0aW9ucycpKTtcblxuICAgIHZhciB2YWx1ZSA9IHRoaXMubW9kZWxbdGhpcy5maWVsZF07XG4gICAgdGhpcy5xdWVyeUJ5SG9vaygnb3B0aW9ucycpLnZhbHVlID0gdmFsdWU7XG4gIH0sXG4gIGV2ZW50czoge1xuICAgICdjaGFuZ2UgW2RhdGEtaG9vaz1cIm9wdGlvbnNcIl0nOiAnY2hhbmdlRHVyYXRpb25Vbml0cydcbiAgfSxcbiAgY2hhbmdlRHVyYXRpb25Vbml0czogZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHRoaXMucXVlcnlCeUhvb2soJ29wdGlvbnMnKS52YWx1ZTtcbiAgICB0aGlzLm1vZGVsW3RoaXMuZmllbGRdID0gdmFsdWU7XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUhBO0FBTkE7QUFMQTtBQW9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFsQkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///4916\n")},"4b1e":function(module,exports,__webpack_require__){eval("var PageView = __webpack_require__(/*! ./base */ \"b966\");\n\nvar templates = __webpack_require__(/*! ../templates */ \"4324\");\n\nvar FacetCollectionView = __webpack_require__(/*! ./configure-dataset/facet-collection */ \"701f\");\n\nvar app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar $ = __webpack_require__(/*! jquery */ \"802c\"); // Assumption:\n// this.model instanceof Dataset\n// this.collection instanceof facet-collection\n\n\nmodule.exports = PageView.extend({\n  template: templates.configureDataset.page,\n  render: function render() {\n    this.renderWithTemplate();\n\n    if (this.collection) {\n      this.collection.sort();\n      this.renderCollection(this.collection, FacetCollectionView, this.queryByHook('facet-list'));\n    }\n\n    this.query('#description').value = this.model.description; // material design lite does not like this via bindings...\n    // Automatically scan the dataset if necessary\n\n    if (this.model.facets.length === 0) {\n      this.model.scan();\n    }\n  },\n  initialize: function initialize() {\n    this.isLockedDown = app.me.isLockedDown;\n    this.needle = this.collection.needle;\n    this.showSearch = this.collection.showSearch;\n    this.on('remove', function () {\n      this.collection.needle = this.needle;\n      this.collection.showSearch = this.showSearch;\n      this.model.facets.off('add');\n    });\n    this.model.facets.on('add', function () {\n      setTimeout(function () {\n        window.componentHandler.upgradeDom();\n      }, 20);\n    });\n    this.update();\n  },\n  session: {\n    needle: 'string',\n    showSearch: 'boolean',\n    isLockedDown: 'boolean'\n  },\n  bindings: {\n    'isLockedDown': [{\n      type: 'toggle',\n      hook: 'add-button',\n      invert: 'yes'\n    }, {\n      type: 'toggle',\n      hook: 'rescan-button',\n      invert: 'yes'\n    }],\n    'showSearch': {\n      type: 'toggle',\n      hook: 'search-bar'\n    },\n    'needle': {\n      type: 'value',\n      hook: 'facet-selector'\n    },\n    'model.name': {\n      type: 'attribute',\n      selector: '#name',\n      name: 'value'\n    }\n  },\n  events: {\n    'input [data-hook~=facet-selector]': 'input',\n    'input #name': 'setName',\n    'input #description': 'setDescription',\n    'click #eab': 'enableAllFacets',\n    'click #dab': 'disableAllFacets',\n    'click [data-hook~=add-button]': 'add',\n    'click [data-hook~=rescan-button]': 'rescan',\n    'click [data-hook~=search-button]': 'search',\n    'click [data-hook~=clear-button]': 'clear'\n  },\n  enableAllFacets: function enableAllFacets() {\n    var i;\n    var f = $('[data-hook~=cblabel]');\n\n    for (i = 0; i < f.length; i++) {\n      var c = f[i].classList;\n\n      if (!c.contains('is-checked')) {\n        f[i].click();\n      }\n    }\n  },\n  disableAllFacets: function disableAllFacets() {\n    var i;\n    var f = $('[data-hook~=cblabel]');\n\n    for (i = 0; i < f.length; i++) {\n      var c = f[i].classList;\n\n      if (c.contains('is-checked')) {\n        f[i].click();\n      }\n    }\n  },\n  input: function input() {\n    var select = this.el.querySelector('[data-hook~=\"facet-selector\"]');\n    this.needle = select.value;\n    this.update();\n  },\n  setName: function setName() {\n    var field = this.query('#name');\n    this.model.name = field.value;\n  },\n  setDescription: function setDescription() {\n    var field = this.query('#description');\n    this.model.description = field.value;\n  },\n  add: function add() {\n    this.collection.add({\n      name: 'New Facet'\n    });\n  },\n  rescan: function rescan() {\n    this.model.scan();\n  },\n  search: function search() {\n    this.showSearch = !this.showSearch;\n\n    if (this.showSearch) {\n      this.queryByHook('facet-selector').focus();\n    }\n  },\n  clear: function clear() {\n    this.needle = '';\n    this.update();\n  },\n  update: function update() {\n    // build regexp for searching\n    try {\n      var regexp = new RegExp(this.needle, 'i'); // case insensitive search\n      // search through collection, check both name and description\n\n      this.collection.forEach(function (e) {\n        var hay = e.name + e.description;\n        e.show = regexp.test(hay.toLowerCase());\n      });\n    } catch (error) {}\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNGIxZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZGF0YXNldC5qcz9jMzdiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBQYWdlVmlldyA9IHJlcXVpcmUoJy4vYmFzZScpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uL3RlbXBsYXRlcycpO1xudmFyIEZhY2V0Q29sbGVjdGlvblZpZXcgPSByZXF1aXJlKCcuL2NvbmZpZ3VyZS1kYXRhc2V0L2ZhY2V0LWNvbGxlY3Rpb24nKTtcbnZhciBhcHAgPSByZXF1aXJlKCdhbXBlcnNhbmQtYXBwJyk7XG52YXIgJCA9IHJlcXVpcmUoJ2pxdWVyeScpO1xuXG4vLyBBc3N1bXB0aW9uOlxuLy8gdGhpcy5tb2RlbCBpbnN0YW5jZW9mIERhdGFzZXRcbi8vIHRoaXMuY29sbGVjdGlvbiBpbnN0YW5jZW9mIGZhY2V0LWNvbGxlY3Rpb25cblxubW9kdWxlLmV4cG9ydHMgPSBQYWdlVmlldy5leHRlbmQoe1xuICB0ZW1wbGF0ZTogdGVtcGxhdGVzLmNvbmZpZ3VyZURhdGFzZXQucGFnZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZW5kZXJXaXRoVGVtcGxhdGUoKTtcblxuICAgIGlmICh0aGlzLmNvbGxlY3Rpb24pIHtcbiAgICAgIHRoaXMuY29sbGVjdGlvbi5zb3J0KCk7XG4gICAgICB0aGlzLnJlbmRlckNvbGxlY3Rpb24odGhpcy5jb2xsZWN0aW9uLCBGYWNldENvbGxlY3Rpb25WaWV3LCB0aGlzLnF1ZXJ5QnlIb29rKCdmYWNldC1saXN0JykpO1xuICAgIH1cbiAgICB0aGlzLnF1ZXJ5KCcjZGVzY3JpcHRpb24nKS52YWx1ZSA9IHRoaXMubW9kZWwuZGVzY3JpcHRpb247IC8vIG1hdGVyaWFsIGRlc2lnbiBsaXRlIGRvZXMgbm90IGxpa2UgdGhpcyB2aWEgYmluZGluZ3MuLi5cblxuICAgIC8vIEF1dG9tYXRpY2FsbHkgc2NhbiB0aGUgZGF0YXNldCBpZiBuZWNlc3NhcnlcbiAgICBpZiAodGhpcy5tb2RlbC5mYWNldHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLm1vZGVsLnNjYW4oKTtcbiAgICB9XG4gIH0sXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmlzTG9ja2VkRG93biA9IGFwcC5tZS5pc0xvY2tlZERvd247XG4gICAgdGhpcy5uZWVkbGUgPSB0aGlzLmNvbGxlY3Rpb24ubmVlZGxlO1xuICAgIHRoaXMuc2hvd1NlYXJjaCA9IHRoaXMuY29sbGVjdGlvbi5zaG93U2VhcmNoO1xuXG4gICAgdGhpcy5vbigncmVtb3ZlJywgZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5jb2xsZWN0aW9uLm5lZWRsZSA9IHRoaXMubmVlZGxlO1xuICAgICAgdGhpcy5jb2xsZWN0aW9uLnNob3dTZWFyY2ggPSB0aGlzLnNob3dTZWFyY2g7XG4gICAgICB0aGlzLm1vZGVsLmZhY2V0cy5vZmYoJ2FkZCcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5tb2RlbC5mYWNldHMub24oJ2FkZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICB3aW5kb3cuY29tcG9uZW50SGFuZGxlci51cGdyYWRlRG9tKCk7XG4gICAgICB9LCAyMCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9LFxuICBzZXNzaW9uOiB7XG4gICAgbmVlZGxlOiAnc3RyaW5nJyxcbiAgICBzaG93U2VhcmNoOiAnYm9vbGVhbicsXG4gICAgaXNMb2NrZWREb3duOiAnYm9vbGVhbidcbiAgfSxcbiAgYmluZGluZ3M6IHtcbiAgICAnaXNMb2NrZWREb3duJzogW1xuICAgICAgeyB0eXBlOiAndG9nZ2xlJywgaG9vazogJ2FkZC1idXR0b24nLCBpbnZlcnQ6ICd5ZXMnIH0sXG4gICAgICB7IHR5cGU6ICd0b2dnbGUnLCBob29rOiAncmVzY2FuLWJ1dHRvbicsIGludmVydDogJ3llcycgfVxuICAgIF0sXG4gICAgJ3Nob3dTZWFyY2gnOiB7XG4gICAgICB0eXBlOiAndG9nZ2xlJyxcbiAgICAgIGhvb2s6ICdzZWFyY2gtYmFyJ1xuICAgIH0sXG4gICAgJ25lZWRsZSc6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAnZmFjZXQtc2VsZWN0b3InXG4gICAgfSxcbiAgICAnbW9kZWwubmFtZSc6IHtcbiAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgc2VsZWN0b3I6ICcjbmFtZScsXG4gICAgICBuYW1lOiAndmFsdWUnXG4gICAgfVxuICB9LFxuICBldmVudHM6IHtcbiAgICAnaW5wdXQgW2RhdGEtaG9va349ZmFjZXQtc2VsZWN0b3JdJzogJ2lucHV0JyxcbiAgICAnaW5wdXQgI25hbWUnOiAnc2V0TmFtZScsXG4gICAgJ2lucHV0ICNkZXNjcmlwdGlvbic6ICdzZXREZXNjcmlwdGlvbicsXG4gICAgJ2NsaWNrICNlYWInOiAnZW5hYmxlQWxsRmFjZXRzJyxcbiAgICAnY2xpY2sgI2RhYic6ICdkaXNhYmxlQWxsRmFjZXRzJyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349YWRkLWJ1dHRvbl0nOiAnYWRkJyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349cmVzY2FuLWJ1dHRvbl0nOiAncmVzY2FuJyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349c2VhcmNoLWJ1dHRvbl0nOiAnc2VhcmNoJyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349Y2xlYXItYnV0dG9uXSc6ICdjbGVhcidcbiAgfSxcbiAgZW5hYmxlQWxsRmFjZXRzOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGk7XG4gICAgdmFyIGYgPSAkKCdbZGF0YS1ob29rfj1jYmxhYmVsXScpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBmLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IGZbaV0uY2xhc3NMaXN0O1xuICAgICAgaWYgKCFjLmNvbnRhaW5zKCdpcy1jaGVja2VkJykpIHtcbiAgICAgICAgZltpXS5jbGljaygpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZGlzYWJsZUFsbEZhY2V0czogZnVuY3Rpb24gKCkge1xuICAgIHZhciBpO1xuICAgIHZhciBmID0gJCgnW2RhdGEtaG9va349Y2JsYWJlbF0nKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgZi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBmW2ldLmNsYXNzTGlzdDtcbiAgICAgIGlmIChjLmNvbnRhaW5zKCdpcy1jaGVja2VkJykpIHtcbiAgICAgICAgZltpXS5jbGljaygpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgaW5wdXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZWN0ID0gdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1ob29rfj1cImZhY2V0LXNlbGVjdG9yXCJdJyk7XG4gICAgdGhpcy5uZWVkbGUgPSBzZWxlY3QudmFsdWU7XG5cbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9LFxuICBzZXROYW1lOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGZpZWxkID0gdGhpcy5xdWVyeSgnI25hbWUnKTtcbiAgICB0aGlzLm1vZGVsLm5hbWUgPSBmaWVsZC52YWx1ZTtcbiAgfSxcbiAgc2V0RGVzY3JpcHRpb246IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZmllbGQgPSB0aGlzLnF1ZXJ5KCcjZGVzY3JpcHRpb24nKTtcbiAgICB0aGlzLm1vZGVsLmRlc2NyaXB0aW9uID0gZmllbGQudmFsdWU7XG4gIH0sXG4gIGFkZDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY29sbGVjdGlvbi5hZGQoe25hbWU6ICdOZXcgRmFjZXQnfSk7XG4gIH0sXG4gIHJlc2NhbjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMubW9kZWwuc2NhbigpO1xuICB9LFxuICBzZWFyY2g6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNob3dTZWFyY2ggPSAhdGhpcy5zaG93U2VhcmNoO1xuICAgIGlmICh0aGlzLnNob3dTZWFyY2gpIHtcbiAgICAgIHRoaXMucXVlcnlCeUhvb2soJ2ZhY2V0LXNlbGVjdG9yJykuZm9jdXMoKTtcbiAgICB9XG4gIH0sXG4gIGNsZWFyOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5uZWVkbGUgPSAnJztcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBidWlsZCByZWdleHAgZm9yIHNlYXJjaGluZ1xuICAgIHRyeSB7XG4gICAgICB2YXIgcmVnZXhwID0gbmV3IFJlZ0V4cCh0aGlzLm5lZWRsZSwgJ2knKTsgLy8gY2FzZSBpbnNlbnNpdGl2ZSBzZWFyY2hcblxuICAgICAgLy8gc2VhcmNoIHRocm91Z2ggY29sbGVjdGlvbiwgY2hlY2sgYm90aCBuYW1lIGFuZCBkZXNjcmlwdGlvblxuICAgICAgdGhpcy5jb2xsZWN0aW9uLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIGhheSA9IGUubmFtZSArIGUuZGVzY3JpcHRpb247XG4gICAgICAgIGUuc2hvdyA9IHJlZ2V4cC50ZXN0KGhheS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgfVxuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQWJBO0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVEE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBcElBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///4b1e\n")},5122:function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar SlotView = __webpack_require__(/*! ./slot */ \"de8e\");\n\nvar $ = __webpack_require__(/*! jquery */ \"802c\");\n\nvar FileSaver = __webpack_require__(/*! file-saver */ \"23bf\"); // NOTE: gridster does not work properly with require()\n// workaround via browserify-shim (configured in package.json)\n\n\n__webpack_require__(/*! gridster */ \"cc37\");\n\nfunction removeWidget(view, filter) {\n  // Remove the filter from the dataset\n  var filters = filter.collection;\n  filters.remove(filter);\n  filter.off('newData'); // Remove gridster stuff\n\n  var gridster = $('[id~=widgets]').gridster().data('gridster');\n  gridster.remove_widget(view.gridsterHook); // Remove ampersand stuff\n\n  var p = view.parent._subviews;\n  p.splice(p.indexOf(view), 1);\n  view.remove();\n}\n\nmodule.exports = View.extend({\n  template: templates.analyze.widgetFrame,\n  initialize: function initialize(opts) {\n    this.editMode = false; // on initialization we have a Filter as model,\n    // but we need to have a (chart specific) model instead\n    // So, create the proper model and swap it for the filter.\n\n    var filter = this.model;\n    this.model = app.widgetFactory.newModel({\n      modelType: filter.chartType,\n      filter: filter\n    });\n    this.widgetHeader = filter.chartType;\n  },\n  props: {\n    editMode: 'boolean',\n    chartType: 'string'\n  },\n  derived: {\n    'showMenu': {\n      deps: ['editMode', 'mouseOver'],\n      fn: function fn() {\n        // never show in edit mode\n        if (this.editMode) return false; // http://stackoverflow.com/questions/4817029/whats-the-best-way-to-detect-a-touch-screen-device-using-javascript/4819886#4819886\n\n        var touch = 'ontouchstart' in window || navigator.maxTouchPoints;\n        return touch || this.mouseOver;\n      }\n    }\n  },\n  session: {\n    mouseOver: ['boolean', true, false]\n  },\n  bindings: {\n    'editMode': {\n      hook: 'config-view',\n      type: 'toggle',\n      invert: false\n    },\n    'showMenu': {\n      type: 'toggle',\n      hook: 'plot-menu'\n    },\n    'widgetHeader': {\n      hook: 'widgetHeader',\n      type: 'text'\n    }\n  },\n  events: {\n    'click [data-hook~=\"close\"]': 'closeWidget',\n    'click [data-hook~=\"zoom-in\"]': 'zoomIn',\n    'click [data-hook~=\"zoom-out\"]': 'zoomOut',\n    'click [data-hook~=\"save\"]': 'savePlot',\n    'click [data-hook~=\"edit\"]': function clickDataHookEdit() {\n      this.editMode = !this.editMode;\n    },\n    'mouseenter .widgetFrame': 'mouseEnter',\n    'mouseleave .widgetFrame': 'mouseLeave'\n  },\n  zoomIn: function zoomIn(ev) {\n    this.model.filter.zoomIn();\n    app.me.dataview.getData();\n  },\n  zoomOut: function zoomOut() {\n    this.model.filter.zoomOut();\n    app.me.dataview.getData();\n  },\n  savePlot: function savePlot() {\n    // Save the image to disk, but add a white background;\n    // for this we need to make temporary copy\n    // actual onscreen canvas\n    var canvas = this.el.getElementsByTagName('canvas')[0];\n    var ctx = canvas.getContext('2d'); // temporary canvas\n\n    var tempCanvas = document.createElement('canvas');\n    var tempCtx = tempCanvas.getContext('2d');\n    tempCanvas.width = ctx.canvas.width;\n    tempCanvas.height = ctx.canvas.height;\n    tempCtx.fillStyle = 'white';\n    tempCtx.fillRect(0, 0, tempCanvas.width, tempCanvas.height);\n    tempCtx.drawImage(canvas, 0, 0); // use plot type as filename\n\n    var imageName = this.model.modelType;\n    tempCtx.canvas.toBlob(function (blob) {\n      FileSaver.saveAs(blob, imageName);\n    }, 'image/png');\n  },\n  mouseEnter: function mouseEnter() {\n    this.mouseOver = true;\n  },\n  mouseLeave: function mouseLeave() {\n    this.mouseOver = false;\n  },\n  closeWidget: function closeWidget() {\n    removeWidget(this, this.model.filter);\n  },\n  render: function render() {\n    this.renderWithTemplate(this);\n    this.renderCollection(this.model.slots, SlotView, this.queryByHook('slots'));\n    return this;\n  },\n  renderContent: function renderContent() {\n    // Propagate to subview\n    this.widget.renderContent();\n  },\n  subviews: {\n    widget: {\n      hook: 'widget',\n      constructor: function constructor(options) {\n        // NOTE: view type (barchart, bubblechart, ...) is determined from options.model.modelType\n        options.model = options.parent.model;\n        return app.viewFactory.newView(options);\n      }\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTEyMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9hbmFseXplL3dpZGdldC1mcmFtZS5qcz83N2Q5Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBWaWV3ID0gcmVxdWlyZSgnYW1wZXJzYW5kLXZpZXcnKTtcbnZhciB0ZW1wbGF0ZXMgPSByZXF1aXJlKCcuLi8uLi90ZW1wbGF0ZXMnKTtcbnZhciBhcHAgPSByZXF1aXJlKCdhbXBlcnNhbmQtYXBwJyk7XG52YXIgU2xvdFZpZXcgPSByZXF1aXJlKCcuL3Nsb3QnKTtcbnZhciAkID0gcmVxdWlyZSgnanF1ZXJ5Jyk7XG52YXIgRmlsZVNhdmVyID0gcmVxdWlyZSgnZmlsZS1zYXZlcicpO1xuXG4vLyBOT1RFOiBncmlkc3RlciBkb2VzIG5vdCB3b3JrIHByb3Blcmx5IHdpdGggcmVxdWlyZSgpXG4vLyB3b3JrYXJvdW5kIHZpYSBicm93c2VyaWZ5LXNoaW0gKGNvbmZpZ3VyZWQgaW4gcGFja2FnZS5qc29uKVxucmVxdWlyZSgnZ3JpZHN0ZXInKTtcblxuZnVuY3Rpb24gcmVtb3ZlV2lkZ2V0ICh2aWV3LCBmaWx0ZXIpIHtcbiAgLy8gUmVtb3ZlIHRoZSBmaWx0ZXIgZnJvbSB0aGUgZGF0YXNldFxuICB2YXIgZmlsdGVycyA9IGZpbHRlci5jb2xsZWN0aW9uO1xuICBmaWx0ZXJzLnJlbW92ZShmaWx0ZXIpO1xuICBmaWx0ZXIub2ZmKCduZXdEYXRhJyk7XG5cbiAgLy8gUmVtb3ZlIGdyaWRzdGVyIHN0dWZmXG4gIHZhciBncmlkc3RlciA9ICQoJ1tpZH49d2lkZ2V0c10nKS5ncmlkc3RlcigpLmRhdGEoJ2dyaWRzdGVyJyk7XG4gIGdyaWRzdGVyLnJlbW92ZV93aWRnZXQodmlldy5ncmlkc3Rlckhvb2spO1xuXG4gIC8vIFJlbW92ZSBhbXBlcnNhbmQgc3R1ZmZcbiAgdmFyIHAgPSB2aWV3LnBhcmVudC5fc3Vidmlld3M7XG4gIHAuc3BsaWNlKHAuaW5kZXhPZih2aWV3KSwgMSk7XG4gIHZpZXcucmVtb3ZlKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVmlldy5leHRlbmQoe1xuICB0ZW1wbGF0ZTogdGVtcGxhdGVzLmFuYWx5emUud2lkZ2V0RnJhbWUsXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uIChvcHRzKSB7XG4gICAgdGhpcy5lZGl0TW9kZSA9IGZhbHNlO1xuXG4gICAgLy8gb24gaW5pdGlhbGl6YXRpb24gd2UgaGF2ZSBhIEZpbHRlciBhcyBtb2RlbCxcbiAgICAvLyBidXQgd2UgbmVlZCB0byBoYXZlIGEgKGNoYXJ0IHNwZWNpZmljKSBtb2RlbCBpbnN0ZWFkXG4gICAgLy8gU28sIGNyZWF0ZSB0aGUgcHJvcGVyIG1vZGVsIGFuZCBzd2FwIGl0IGZvciB0aGUgZmlsdGVyLlxuICAgIHZhciBmaWx0ZXIgPSB0aGlzLm1vZGVsO1xuXG4gICAgdGhpcy5tb2RlbCA9IGFwcC53aWRnZXRGYWN0b3J5Lm5ld01vZGVsKHtcbiAgICAgIG1vZGVsVHlwZTogZmlsdGVyLmNoYXJ0VHlwZSxcbiAgICAgIGZpbHRlcjogZmlsdGVyXG4gICAgfSk7XG4gICAgdGhpcy53aWRnZXRIZWFkZXIgPSBmaWx0ZXIuY2hhcnRUeXBlO1xuICB9LFxuICBwcm9wczoge1xuICAgIGVkaXRNb2RlOiAnYm9vbGVhbicsXG4gICAgY2hhcnRUeXBlOiAnc3RyaW5nJ1xuICB9LFxuICBkZXJpdmVkOiB7XG4gICAgJ3Nob3dNZW51Jzoge1xuICAgICAgZGVwczogWydlZGl0TW9kZScsICdtb3VzZU92ZXInXSxcbiAgICAgIGZuOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIG5ldmVyIHNob3cgaW4gZWRpdCBtb2RlXG4gICAgICAgIGlmICh0aGlzLmVkaXRNb2RlKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80ODE3MDI5L3doYXRzLXRoZS1iZXN0LXdheS10by1kZXRlY3QtYS10b3VjaC1zY3JlZW4tZGV2aWNlLXVzaW5nLWphdmFzY3JpcHQvNDgxOTg4NiM0ODE5ODg2XG4gICAgICAgIHZhciB0b3VjaCA9ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdyB8fCBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHM7XG4gICAgICAgIHJldHVybiB0b3VjaCB8fCB0aGlzLm1vdXNlT3ZlcjtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHNlc3Npb246IHtcbiAgICBtb3VzZU92ZXI6IFsnYm9vbGVhbicsIHRydWUsIGZhbHNlXVxuICB9LFxuICBiaW5kaW5nczoge1xuICAgICdlZGl0TW9kZSc6IHtcbiAgICAgIGhvb2s6ICdjb25maWctdmlldycsXG4gICAgICB0eXBlOiAndG9nZ2xlJyxcbiAgICAgIGludmVydDogZmFsc2VcbiAgICB9LFxuICAgICdzaG93TWVudSc6IHtcbiAgICAgIHR5cGU6ICd0b2dnbGUnLFxuICAgICAgaG9vazogJ3Bsb3QtbWVudSdcbiAgICB9LFxuICAgICd3aWRnZXRIZWFkZXInOiB7XG4gICAgICBob29rOiAnd2lkZ2V0SGVhZGVyJyxcbiAgICAgIHR5cGU6ICd0ZXh0J1xuICAgIH1cbiAgfSxcbiAgZXZlbnRzOiB7XG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PVwiY2xvc2VcIl0nOiAnY2xvc2VXaWRnZXQnLFxuICAgICdjbGljayBbZGF0YS1ob29rfj1cInpvb20taW5cIl0nOiAnem9vbUluJyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349XCJ6b29tLW91dFwiXSc6ICd6b29tT3V0JyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349XCJzYXZlXCJdJzogJ3NhdmVQbG90JyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349XCJlZGl0XCJdJzogZnVuY3Rpb24gKCkgeyB0aGlzLmVkaXRNb2RlID0gIXRoaXMuZWRpdE1vZGU7IH0sXG5cbiAgICAnbW91c2VlbnRlciAud2lkZ2V0RnJhbWUnOiAnbW91c2VFbnRlcicsXG4gICAgJ21vdXNlbGVhdmUgLndpZGdldEZyYW1lJzogJ21vdXNlTGVhdmUnXG4gIH0sXG4gIHpvb21JbjogZnVuY3Rpb24gKGV2KSB7XG4gICAgdGhpcy5tb2RlbC5maWx0ZXIuem9vbUluKCk7XG4gICAgYXBwLm1lLmRhdGF2aWV3LmdldERhdGEoKTtcbiAgfSxcbiAgem9vbU91dDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMubW9kZWwuZmlsdGVyLnpvb21PdXQoKTtcbiAgICBhcHAubWUuZGF0YXZpZXcuZ2V0RGF0YSgpO1xuICB9LFxuICBzYXZlUGxvdDogZnVuY3Rpb24gKCkge1xuICAgIC8vIFNhdmUgdGhlIGltYWdlIHRvIGRpc2ssIGJ1dCBhZGQgYSB3aGl0ZSBiYWNrZ3JvdW5kO1xuICAgIC8vIGZvciB0aGlzIHdlIG5lZWQgdG8gbWFrZSB0ZW1wb3JhcnkgY29weVxuXG4gICAgLy8gYWN0dWFsIG9uc2NyZWVuIGNhbnZhc1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmVsLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXTtcbiAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgICAvLyB0ZW1wb3JhcnkgY2FudmFzXG4gICAgdmFyIHRlbXBDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICB2YXIgdGVtcEN0eCA9IHRlbXBDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgIHRlbXBDYW52YXMud2lkdGggPSBjdHguY2FudmFzLndpZHRoO1xuICAgIHRlbXBDYW52YXMuaGVpZ2h0ID0gY3R4LmNhbnZhcy5oZWlnaHQ7XG4gICAgdGVtcEN0eC5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgIHRlbXBDdHguZmlsbFJlY3QoMCwgMCwgdGVtcENhbnZhcy53aWR0aCwgdGVtcENhbnZhcy5oZWlnaHQpO1xuICAgIHRlbXBDdHguZHJhd0ltYWdlKGNhbnZhcywgMCwgMCk7XG5cbiAgICAvLyB1c2UgcGxvdCB0eXBlIGFzIGZpbGVuYW1lXG4gICAgdmFyIGltYWdlTmFtZSA9IHRoaXMubW9kZWwubW9kZWxUeXBlO1xuXG4gICAgdGVtcEN0eC5jYW52YXMudG9CbG9iKGZ1bmN0aW9uIChibG9iKSB7XG4gICAgICBGaWxlU2F2ZXIuc2F2ZUFzKGJsb2IsIGltYWdlTmFtZSk7XG4gICAgfSwgJ2ltYWdlL3BuZycpO1xuICB9LFxuICBtb3VzZUVudGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5tb3VzZU92ZXIgPSB0cnVlO1xuICB9LFxuICBtb3VzZUxlYXZlOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5tb3VzZU92ZXIgPSBmYWxzZTtcbiAgfSxcbiAgY2xvc2VXaWRnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZW1vdmVXaWRnZXQodGhpcywgdGhpcy5tb2RlbC5maWx0ZXIpO1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlbmRlcldpdGhUZW1wbGF0ZSh0aGlzKTtcbiAgICB0aGlzLnJlbmRlckNvbGxlY3Rpb24odGhpcy5tb2RlbC5zbG90cywgU2xvdFZpZXcsIHRoaXMucXVlcnlCeUhvb2soJ3Nsb3RzJykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICByZW5kZXJDb250ZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gUHJvcGFnYXRlIHRvIHN1YnZpZXdcbiAgICB0aGlzLndpZGdldC5yZW5kZXJDb250ZW50KCk7XG4gIH0sXG4gIHN1YnZpZXdzOiB7XG4gICAgd2lkZ2V0OiB7XG4gICAgICBob29rOiAnd2lkZ2V0JyxcbiAgICAgIGNvbnN0cnVjdG9yOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICAvLyBOT1RFOiB2aWV3IHR5cGUgKGJhcmNoYXJ0LCBidWJibGVjaGFydCwgLi4uKSBpcyBkZXRlcm1pbmVkIGZyb20gb3B0aW9ucy5tb2RlbC5tb2RlbFR5cGVcbiAgICAgICAgb3B0aW9ucy5tb2RlbCA9IG9wdGlvbnMucGFyZW50Lm1vZGVsO1xuICAgICAgICByZXR1cm4gYXBwLnZpZXdGYWN0b3J5Lm5ld1ZpZXcob3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFUQTtBQURBO0FBYUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQVZBO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBREE7QUFoSEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///5122\n")},"56f6":function(module,exports,__webpack_require__){eval('var View = __webpack_require__(/*! ampersand-view */ "2883");\n\nvar templates = __webpack_require__(/*! ../../templates */ "4324");\n\nvar app = __webpack_require__(/*! ampersand-app */ "fcbc");\n\nvar SessionView = __webpack_require__(/*! ./session-view */ "48248");\n\nmodule.exports = View.extend({\n  template: templates.datasets.sessionCollection,\n  initialize: function initialize() {},\n  render: function render() {\n    this.renderWithTemplate(this);\n    this.renderCollection(app.sessions, SessionView, this.queryByHook(\'session-collection-items\'));\n    return this;\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTZmNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9kYXRhc2V0cy9zZXNzaW9uLWNvbGxlY3Rpb24uanM/N2UyZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgVmlldyA9IHJlcXVpcmUoJ2FtcGVyc2FuZC12aWV3Jyk7XG52YXIgdGVtcGxhdGVzID0gcmVxdWlyZSgnLi4vLi4vdGVtcGxhdGVzJyk7XG52YXIgYXBwID0gcmVxdWlyZSgnYW1wZXJzYW5kLWFwcCcpO1xuXG52YXIgU2Vzc2lvblZpZXcgPSByZXF1aXJlKCcuL3Nlc3Npb24tdmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXcuZXh0ZW5kKHtcbiAgdGVtcGxhdGU6IHRlbXBsYXRlcy5kYXRhc2V0cy5zZXNzaW9uQ29sbGVjdGlvbixcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlbmRlcldpdGhUZW1wbGF0ZSh0aGlzKTtcbiAgICB0aGlzLnJlbmRlckNvbGxlY3Rpb24oYXBwLnNlc3Npb25zLCBTZXNzaW9uVmlldywgdGhpcy5xdWVyeUJ5SG9vaygnc2Vzc2lvbi1jb2xsZWN0aW9uLWl0ZW1zJykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///56f6\n')},"5eb6":function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nmodule.exports = View.extend({\n  template: templates.datasets.dataset,\n  derived: {\n    facetsURL: {\n      deps: ['model.id'],\n      fn: function fn() {\n        return '/dataset/' + this.model.id;\n      }\n    }\n  },\n  props: {\n    bussy: ['boolean', true, false]\n  },\n  bindings: {\n    'bussy': [{\n      hook: 'cbtoggle',\n      type: 'toggle',\n      invert: true\n    }, {\n      hook: 'cbspinner',\n      type: 'toggle',\n      invert: false\n    }],\n    'model.show': {\n      hook: 'dataset',\n      type: 'toggle'\n    },\n    'model.name': {\n      hook: 'name',\n      type: 'text'\n    },\n    'model.description': {\n      hook: 'description',\n      type: 'text'\n    },\n    // material design hooks\n    'model.isActive': [{\n      hook: 'cb',\n      type: 'booleanAttribute',\n      name: 'checked'\n    }, {\n      type: 'toggle',\n      hook: 'settings',\n      invert: true\n    }],\n    'model.id': [{\n      hook: 'cb',\n      type: 'attribute',\n      name: 'id'\n    }, {\n      hook: 'cblabel',\n      type: 'attribute',\n      name: 'for'\n    }]\n  },\n  events: {\n    'change': 'toggleActive',\n    'click [data-hook~=settings]': function clickDataHookSettings() {\n      app.navigate('/dataset/' + this.model.id);\n    },\n    'click [data-hook~=delete]': 'deleteDataset'\n  },\n  toggleActive: function toggleActive() {\n    var that = this;\n    that.bussy = !that.busy;\n\n    if (that.model.facets.length === 0) {\n      // Automatically scan the dataset if there are no facets\n      that.model.scan();\n      that.model.once('syncFacets', function () {\n        app.me.toggleDataset(that.model);\n        that.bussy = !that.bussy;\n      });\n    } else {\n      // BUGFIX: we cant show/hide the spinner from within the event loop; so\n      //  * activate the spinner,\n      //  * exit the event loop (ie. redraw the page),\n      //  * and toggle the dataset via the timeout\n      window.setTimeout(function () {\n        app.me.toggleDataset(that.model);\n        that.bussy = !that.bussy;\n      }, 500);\n    }\n  },\n  deleteDataset: function deleteDataset() {\n    if (this.model.isActive) {\n      this.bussy = true;\n      app.me.toggleDataset(this.model);\n      this.bussy = false;\n    }\n\n    console.log(this.model);\n    app.removeDatasetFromLocalStorage(this.model);\n    app.me.datasets.remove(this.model);\n  },\n  render: function render() {\n    this.renderWithTemplate(this);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNWViNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9kYXRhc2V0cy9kYXRhc2V0LmpzP2U1M2MiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uLy4uL3RlbXBsYXRlcycpO1xudmFyIGFwcCA9IHJlcXVpcmUoJ2FtcGVyc2FuZC1hcHAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMuZGF0YXNldHMuZGF0YXNldCxcbiAgZGVyaXZlZDoge1xuICAgIGZhY2V0c1VSTDoge1xuICAgICAgZGVwczogWydtb2RlbC5pZCddLFxuICAgICAgZm46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcvZGF0YXNldC8nICsgdGhpcy5tb2RlbC5pZDtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHByb3BzOiB7XG4gICAgYnVzc3k6IFsnYm9vbGVhbicsIHRydWUsIGZhbHNlXVxuICB9LFxuICBiaW5kaW5nczoge1xuICAgICdidXNzeSc6IFtcbiAgICAgIHtcbiAgICAgICAgaG9vazogJ2NidG9nZ2xlJyxcbiAgICAgICAgdHlwZTogJ3RvZ2dsZScsXG4gICAgICAgIGludmVydDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaG9vazogJ2Nic3Bpbm5lcicsXG4gICAgICAgIHR5cGU6ICd0b2dnbGUnLFxuICAgICAgICBpbnZlcnQ6IGZhbHNlXG4gICAgICB9XG4gICAgXSxcbiAgICAnbW9kZWwuc2hvdyc6IHtcbiAgICAgIGhvb2s6ICdkYXRhc2V0JyxcbiAgICAgIHR5cGU6ICd0b2dnbGUnXG4gICAgfSxcbiAgICAnbW9kZWwubmFtZSc6IHtcbiAgICAgIGhvb2s6ICduYW1lJyxcbiAgICAgIHR5cGU6ICd0ZXh0J1xuICAgIH0sXG4gICAgJ21vZGVsLmRlc2NyaXB0aW9uJzoge1xuICAgICAgaG9vazogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIHR5cGU6ICd0ZXh0J1xuICAgIH0sXG5cbiAgICAvLyBtYXRlcmlhbCBkZXNpZ24gaG9va3NcbiAgICAnbW9kZWwuaXNBY3RpdmUnOiBbXG4gICAgICB7XG4gICAgICAgIGhvb2s6ICdjYicsXG4gICAgICAgIHR5cGU6ICdib29sZWFuQXR0cmlidXRlJyxcbiAgICAgICAgbmFtZTogJ2NoZWNrZWQnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAndG9nZ2xlJyxcbiAgICAgICAgaG9vazogJ3NldHRpbmdzJyxcbiAgICAgICAgaW52ZXJ0OiB0cnVlXG4gICAgICB9XG4gICAgXSxcbiAgICAnbW9kZWwuaWQnOiBbXG4gICAgICB7IGhvb2s6ICdjYicsIHR5cGU6ICdhdHRyaWJ1dGUnLCBuYW1lOiAnaWQnIH0sXG4gICAgICB7IGhvb2s6ICdjYmxhYmVsJywgdHlwZTogJ2F0dHJpYnV0ZScsIG5hbWU6ICdmb3InIH1cbiAgICBdXG4gIH0sXG4gIGV2ZW50czoge1xuICAgICdjaGFuZ2UnOiAndG9nZ2xlQWN0aXZlJyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349c2V0dGluZ3NdJzogZnVuY3Rpb24gKCkgeyBhcHAubmF2aWdhdGUoJy9kYXRhc2V0LycgKyB0aGlzLm1vZGVsLmlkKTsgfSxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349ZGVsZXRlXSc6ICdkZWxldGVEYXRhc2V0J1xuICB9LFxuICB0b2dnbGVBY3RpdmU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgICB0aGF0LmJ1c3N5ID0gIXRoYXQuYnVzeTtcbiAgICBpZiAodGhhdC5tb2RlbC5mYWNldHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBBdXRvbWF0aWNhbGx5IHNjYW4gdGhlIGRhdGFzZXQgaWYgdGhlcmUgYXJlIG5vIGZhY2V0c1xuICAgICAgdGhhdC5tb2RlbC5zY2FuKCk7XG4gICAgICB0aGF0Lm1vZGVsLm9uY2UoJ3N5bmNGYWNldHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFwcC5tZS50b2dnbGVEYXRhc2V0KHRoYXQubW9kZWwpO1xuICAgICAgICB0aGF0LmJ1c3N5ID0gIXRoYXQuYnVzc3k7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQlVHRklYOiB3ZSBjYW50IHNob3cvaGlkZSB0aGUgc3Bpbm5lciBmcm9tIHdpdGhpbiB0aGUgZXZlbnQgbG9vcDsgc29cbiAgICAgIC8vICAqIGFjdGl2YXRlIHRoZSBzcGlubmVyLFxuICAgICAgLy8gICogZXhpdCB0aGUgZXZlbnQgbG9vcCAoaWUuIHJlZHJhdyB0aGUgcGFnZSksXG4gICAgICAvLyAgKiBhbmQgdG9nZ2xlIHRoZSBkYXRhc2V0IHZpYSB0aGUgdGltZW91dFxuICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBhcHAubWUudG9nZ2xlRGF0YXNldCh0aGF0Lm1vZGVsKTtcbiAgICAgICAgdGhhdC5idXNzeSA9ICF0aGF0LmJ1c3N5O1xuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH0sXG4gIGRlbGV0ZURhdGFzZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5tb2RlbC5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5idXNzeSA9IHRydWU7XG4gICAgICBhcHAubWUudG9nZ2xlRGF0YXNldCh0aGlzLm1vZGVsKTtcbiAgICAgIHRoaXMuYnVzc3kgPSBmYWxzZTtcbiAgICB9XG4gICAgY29uc29sZS5sb2codGhpcy5tb2RlbCk7XG4gICAgYXBwLnJlbW92ZURhdGFzZXRGcm9tTG9jYWxTdG9yYWdlKHRoaXMubW9kZWwpO1xuICAgIGFwcC5tZS5kYXRhc2V0cy5yZW1vdmUodGhpcy5tb2RlbCk7XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVuZGVyV2l0aFRlbXBsYXRlKHRoaXMpO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBREE7QUFRQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBekNBO0FBNENBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaEdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///5eb6\n")},6339:function(module,exports,__webpack_require__){eval("/**\n * @classdesc Base class to hold configuration for charts. Extend and override properties for each chart.\n * @class BaseChart\n */\nvar AmpersandModel = __webpack_require__(/*! ampersand-model */ \"3bfc\");\n\nvar Slots = __webpack_require__(/*! ./slots */ \"e96a\");\n\nfunction titleForChart(chart) {\n  var title = '';\n  var aggregates = chart.filter.aggregates;\n\n  if (aggregates.length === 0) {\n    title = 'count';\n  } else {\n    aggregates.forEach(function (aggregate) {\n      title += aggregate.operation + ' of ' + aggregate.label;\n    });\n  }\n\n  title += ' by';\n  var partitions = chart.filter.partitions;\n  partitions.forEach(function (partition) {\n    title += ' ' + partition.facetName;\n  });\n  return title;\n}\n\nmodule.exports = AmpersandModel.extend({\n  collections: {\n    slots: Slots\n  },\n  session: {\n    /**\n     * Filter instance\n     * @memberof! Chart\n     * @type {Filter}\n     */\n    filter: ['any', true, false],\n\n    /**\n     * True if the charts is properly configured; ie. all required slots are filled.\n     */\n    isConfigured: ['boolean', true, false]\n  },\n  getTitle: function getTitle() {\n    return titleForChart(this);\n  },\n  updateConfiguration: function updateConfiguration() {\n    // without filter instance it cannot be configured\n    if (!this.filter) {\n      this.isConfigured = false;\n    }\n\n    var configured = true; // check if all required slots are filled\n\n    this.slots.forEach(function (slot) {\n      if (slot.required) {\n        if (slot.type === 'partition') {\n          if (!this.filter.partitions.get(slot.rank, 'rank')) {\n            configured = false;\n          }\n        } else if (slot.type === 'aggregate') {\n          if (!this.filter.aggregates.get(slot.rank, 'rank')) {\n            configured = false;\n          }\n        } else {\n          console.error('Illegal slot');\n          configured = false;\n        }\n      }\n    }, this);\n    this.isConfigured = configured;\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMzOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL21vZGVscy9iYXNlLWNoYXJ0LmpzPzM5MzIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY2xhc3NkZXNjIEJhc2UgY2xhc3MgdG8gaG9sZCBjb25maWd1cmF0aW9uIGZvciBjaGFydHMuIEV4dGVuZCBhbmQgb3ZlcnJpZGUgcHJvcGVydGllcyBmb3IgZWFjaCBjaGFydC5cbiAqIEBjbGFzcyBCYXNlQ2hhcnRcbiAqL1xudmFyIEFtcGVyc2FuZE1vZGVsID0gcmVxdWlyZSgnYW1wZXJzYW5kLW1vZGVsJyk7XG52YXIgU2xvdHMgPSByZXF1aXJlKCcuL3Nsb3RzJyk7XG5cbmZ1bmN0aW9uIHRpdGxlRm9yQ2hhcnQgKGNoYXJ0KSB7XG4gIHZhciB0aXRsZSA9ICcnO1xuXG4gIHZhciBhZ2dyZWdhdGVzID0gY2hhcnQuZmlsdGVyLmFnZ3JlZ2F0ZXM7XG4gIGlmIChhZ2dyZWdhdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRpdGxlID0gJ2NvdW50JztcbiAgfSBlbHNlIHtcbiAgICBhZ2dyZWdhdGVzLmZvckVhY2goZnVuY3Rpb24gKGFnZ3JlZ2F0ZSkge1xuICAgICAgdGl0bGUgKz0gYWdncmVnYXRlLm9wZXJhdGlvbiArICcgb2YgJyArIGFnZ3JlZ2F0ZS5sYWJlbDtcbiAgICB9KTtcbiAgfVxuXG4gIHRpdGxlICs9ICcgYnknO1xuXG4gIHZhciBwYXJ0aXRpb25zID0gY2hhcnQuZmlsdGVyLnBhcnRpdGlvbnM7XG4gIHBhcnRpdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAocGFydGl0aW9uKSB7XG4gICAgdGl0bGUgKz0gJyAnICsgcGFydGl0aW9uLmZhY2V0TmFtZTtcbiAgfSk7XG4gIHJldHVybiB0aXRsZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBBbXBlcnNhbmRNb2RlbC5leHRlbmQoe1xuICBjb2xsZWN0aW9uczoge1xuICAgIHNsb3RzOiBTbG90c1xuICB9LFxuICBzZXNzaW9uOiB7XG4gICAgLyoqXG4gICAgICogRmlsdGVyIGluc3RhbmNlXG4gICAgICogQG1lbWJlcm9mISBDaGFydFxuICAgICAqIEB0eXBlIHtGaWx0ZXJ9XG4gICAgICovXG4gICAgZmlsdGVyOiBbJ2FueScsIHRydWUsIGZhbHNlXSxcbiAgICAvKipcbiAgICAgKiBUcnVlIGlmIHRoZSBjaGFydHMgaXMgcHJvcGVybHkgY29uZmlndXJlZDsgaWUuIGFsbCByZXF1aXJlZCBzbG90cyBhcmUgZmlsbGVkLlxuICAgICAqL1xuICAgIGlzQ29uZmlndXJlZDogWydib29sZWFuJywgdHJ1ZSwgZmFsc2VdXG4gIH0sXG4gIGdldFRpdGxlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRpdGxlRm9yQ2hhcnQodGhpcyk7XG4gIH0sXG4gIHVwZGF0ZUNvbmZpZ3VyYXRpb246IGZ1bmN0aW9uICgpIHtcbiAgICAvLyB3aXRob3V0IGZpbHRlciBpbnN0YW5jZSBpdCBjYW5ub3QgYmUgY29uZmlndXJlZFxuICAgIGlmICghdGhpcy5maWx0ZXIpIHtcbiAgICAgIHRoaXMuaXNDb25maWd1cmVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIGNvbmZpZ3VyZWQgPSB0cnVlO1xuXG4gICAgLy8gY2hlY2sgaWYgYWxsIHJlcXVpcmVkIHNsb3RzIGFyZSBmaWxsZWRcbiAgICB0aGlzLnNsb3RzLmZvckVhY2goZnVuY3Rpb24gKHNsb3QpIHtcbiAgICAgIGlmIChzbG90LnJlcXVpcmVkKSB7XG4gICAgICAgIGlmIChzbG90LnR5cGUgPT09ICdwYXJ0aXRpb24nKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmZpbHRlci5wYXJ0aXRpb25zLmdldChzbG90LnJhbmssICdyYW5rJykpIHtcbiAgICAgICAgICAgIGNvbmZpZ3VyZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2xvdC50eXBlID09PSAnYWdncmVnYXRlJykge1xuICAgICAgICAgIGlmICghdGhpcy5maWx0ZXIuYWdncmVnYXRlcy5nZXQoc2xvdC5yYW5rLCAncmFuaycpKSB7XG4gICAgICAgICAgICBjb25maWd1cmVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0lsbGVnYWwgc2xvdCcpO1xuICAgICAgICAgIGNvbmZpZ3VyZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHRoaXMpO1xuXG4gICAgdGhpcy5pc0NvbmZpZ3VyZWQgPSBjb25maWd1cmVkO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7Ozs7O0FBS0E7QUFDQTtBQUFBOzs7QUFHQTtBQVZBO0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQTlDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6339\n")},6535:function(module,exports,__webpack_require__){eval("/**\n * @classdesc Extends the BaseChart class, and adds configuration.\n * @class BarChart\n * @augments BaseChart\n *\n */\nvar BaseChart = __webpack_require__(/*! ./base-chart */ \"6339\");\n\nvar moment = __webpack_require__(/*! moment-timezone */ \"6c9d\");\n\nmodule.exports = BaseChart.extend({\n  initialize: function initialize() {\n    this.slots.reset([{\n      description: 'Group by',\n      type: 'partition',\n      rank: 1,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Subdivide by',\n      type: 'partition',\n      rank: 2,\n      required: false,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Bar height',\n      type: 'aggregate',\n      rank: 1,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }, {\n      description: 'Error bar',\n      type: 'aggregate',\n      rank: 2,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }]);\n  },\n  chartjsConfig: function chartjsConfig() {\n    return {\n      type: 'barError',\n      data: {\n        datasets: [],\n        labels: []\n      },\n      options: {\n        title: {\n          display: true,\n          position: 'top'\n        },\n        scales: {\n          xAxes: [{\n            stacked: true,\n            position: 'bottom',\n            scaleLabel: {\n              display: true,\n              labelString: ''\n            },\n            time: {\n              parser: function parser(label) {\n                return moment(label, moment.ISO_8601);\n              }\n            }\n          }],\n          yAxes: [{\n            stacked: true,\n            position: 'left',\n            scaleLabel: {\n              display: true,\n              labelString: ''\n            },\n            time: {\n              parser: function parser(label) {\n                return moment(label, moment.ISO_8601);\n              }\n            }\n          }]\n        },\n        tooltips: {},\n        errorCapWidth: 0.25\n      }\n    };\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjUzNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL21vZGVscy9iYXJjaGFydC5qcz84YmU0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGNsYXNzZGVzYyBFeHRlbmRzIHRoZSBCYXNlQ2hhcnQgY2xhc3MsIGFuZCBhZGRzIGNvbmZpZ3VyYXRpb24uXG4gKiBAY2xhc3MgQmFyQ2hhcnRcbiAqIEBhdWdtZW50cyBCYXNlQ2hhcnRcbiAqXG4gKi9cbnZhciBCYXNlQ2hhcnQgPSByZXF1aXJlKCcuL2Jhc2UtY2hhcnQnKTtcbnZhciBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQtdGltZXpvbmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBCYXNlQ2hhcnQuZXh0ZW5kKHtcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2xvdHMucmVzZXQoW1xuICAgICAge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0dyb3VwIGJ5JyxcbiAgICAgICAgdHlwZTogJ3BhcnRpdGlvbicsXG4gICAgICAgIHJhbms6IDEsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBzdXBwb3J0ZWRGYWNldHM6IFsnY2F0ZWdvcmlhbCcsICdkYXRldGltZScsICdkdXJhdGlvbicsICdjb250aW51b3VzJywgJ3RleHQnXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdTdWJkaXZpZGUgYnknLFxuICAgICAgICB0eXBlOiAncGFydGl0aW9uJyxcbiAgICAgICAgcmFuazogMixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBzdXBwb3J0ZWRGYWNldHM6IFsnY2F0ZWdvcmlhbCcsICdkYXRldGltZScsICdkdXJhdGlvbicsICdjb250aW51b3VzJywgJ3RleHQnXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdCYXIgaGVpZ2h0JyxcbiAgICAgICAgdHlwZTogJ2FnZ3JlZ2F0ZScsXG4gICAgICAgIHJhbms6IDEsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NvbnRpbnVvdXMnLCAnZHVyYXRpb24nXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdFcnJvciBiYXInLFxuICAgICAgICB0eXBlOiAnYWdncmVnYXRlJyxcbiAgICAgICAgcmFuazogMixcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBzdXBwb3J0ZWRGYWNldHM6IFsnY29udGludW91cycsICdkdXJhdGlvbiddXG4gICAgICB9XG4gICAgXSk7XG4gIH0sXG4gIGNoYXJ0anNDb25maWc6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2JhckVycm9yJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZGF0YXNldHM6IFtdLFxuICAgICAgICBsYWJlbHM6IFtdXG4gICAgICB9LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgcG9zaXRpb246ICd0b3AnXG4gICAgICAgIH0sXG4gICAgICAgIHNjYWxlczoge1xuICAgICAgICAgIHhBeGVzOiBbe1xuICAgICAgICAgICAgc3RhY2tlZDogdHJ1ZSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgICAgICAgIHNjYWxlTGFiZWw6IHtcbiAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGltZToge1xuICAgICAgICAgICAgICBwYXJzZXI6IGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb21lbnQobGFiZWwsIG1vbWVudC5JU09fODYwMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XSxcbiAgICAgICAgICB5QXhlczogW3tcbiAgICAgICAgICAgIHN0YWNrZWQ6IHRydWUsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnLFxuICAgICAgICAgICAgc2NhbGVMYWJlbDoge1xuICAgICAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxuICAgICAgICAgICAgICBsYWJlbFN0cmluZzogJydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aW1lOiB7XG4gICAgICAgICAgICAgIHBhcnNlcjogZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbWVudChsYWJlbCwgbW9tZW50LklTT184NjAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1dXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yQ2FwV2lkdGg6IDAuMjVcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztBQU1BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQVBBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBUEE7QUFkQTtBQTRCQTtBQUVBO0FBbkNBO0FBTkE7QUE0Q0E7QUE5RUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///6535\n")},6668:function(module,exports,__webpack_require__){eval("var PageView = __webpack_require__(/*! ./base */ \"b966\");\n\nvar templates = __webpack_require__(/*! ../templates */ \"4324\");\n\nvar FacetDefineView = __webpack_require__(/*! ./configure-facet/facet-define */ \"b24e\");\n\nvar FacetTransformContinuousView = __webpack_require__(/*! ./configure-facet/facet-transform-continuous */ \"f77a\");\n\nvar FacetTransformCategorialView = __webpack_require__(/*! ./configure-facet/facet-transform-categorial */ \"96da\");\n\nvar FacetTransformDatetimeView = __webpack_require__(/*! ./configure-facet/facet-transform-datetime */ \"9ae5\");\n\nvar FacetTransformDurationView = __webpack_require__(/*! ./configure-facet/facet-transform-duration */ \"2960\");\n\nmodule.exports = PageView.extend({\n  initialize: function initialize() {\n    this.pageName = 'configureFacet';\n  },\n  template: templates.configureFacet.page,\n  bindings: {\n    'model.isCategorial': {\n      hook: 'transform-categorial-panel',\n      type: 'toggle'\n    },\n    'model.isContinuous': {\n      hook: 'transform-continuous-panel',\n      type: 'toggle'\n    },\n    'model.isDatetime': {\n      hook: 'transform-datetime-panel',\n      type: 'toggle'\n    },\n    'model.isDuration': {\n      hook: 'transform-duration-panel',\n      type: 'toggle'\n    }\n  },\n  subviews: {\n    facetDefine: {\n      hook: 'facet-define',\n      prepareView: function prepareView(el) {\n        return new FacetDefineView({\n          el: el,\n          model: this.model\n        });\n      }\n    },\n    transformContinuous: {\n      hook: 'facet-transform-continuous',\n      prepareView: function prepareView(el) {\n        return new FacetTransformContinuousView({\n          el: el,\n          model: this.model.continuousTransform\n        });\n      }\n    },\n    transformCategorial: {\n      hook: 'facet-transform-categorial',\n      prepareView: function prepareView(el) {\n        return new FacetTransformCategorialView({\n          el: el,\n          model: this.model.categorialTransform\n        });\n      }\n    },\n    transformDatetime: {\n      hook: 'facet-transform-datetime',\n      prepareView: function prepareView(el) {\n        return new FacetTransformDatetimeView({\n          el: el,\n          model: this.model.datetimeTransform\n        });\n      }\n    },\n    transformDuration: {\n      hook: 'facet-transform-duration',\n      prepareView: function prepareView(el) {\n        return new FacetTransformDurationView({\n          el: el,\n          model: this.model.durationTransform\n        });\n      }\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjY2OC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZmFjZXQuanM/NjA4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgUGFnZVZpZXcgPSByZXF1aXJlKCcuL2Jhc2UnKTtcbnZhciB0ZW1wbGF0ZXMgPSByZXF1aXJlKCcuLi90ZW1wbGF0ZXMnKTtcblxudmFyIEZhY2V0RGVmaW5lVmlldyA9IHJlcXVpcmUoJy4vY29uZmlndXJlLWZhY2V0L2ZhY2V0LWRlZmluZScpO1xuXG52YXIgRmFjZXRUcmFuc2Zvcm1Db250aW51b3VzVmlldyA9IHJlcXVpcmUoJy4vY29uZmlndXJlLWZhY2V0L2ZhY2V0LXRyYW5zZm9ybS1jb250aW51b3VzJyk7XG52YXIgRmFjZXRUcmFuc2Zvcm1DYXRlZ29yaWFsVmlldyA9IHJlcXVpcmUoJy4vY29uZmlndXJlLWZhY2V0L2ZhY2V0LXRyYW5zZm9ybS1jYXRlZ29yaWFsJyk7XG52YXIgRmFjZXRUcmFuc2Zvcm1EYXRldGltZVZpZXcgPSByZXF1aXJlKCcuL2NvbmZpZ3VyZS1mYWNldC9mYWNldC10cmFuc2Zvcm0tZGF0ZXRpbWUnKTtcbnZhciBGYWNldFRyYW5zZm9ybUR1cmF0aW9uVmlldyA9IHJlcXVpcmUoJy4vY29uZmlndXJlLWZhY2V0L2ZhY2V0LXRyYW5zZm9ybS1kdXJhdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhZ2VWaWV3LmV4dGVuZCh7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnBhZ2VOYW1lID0gJ2NvbmZpZ3VyZUZhY2V0JztcbiAgfSxcbiAgdGVtcGxhdGU6IHRlbXBsYXRlcy5jb25maWd1cmVGYWNldC5wYWdlLFxuICBiaW5kaW5nczoge1xuICAgICdtb2RlbC5pc0NhdGVnb3JpYWwnOiB7XG4gICAgICBob29rOiAndHJhbnNmb3JtLWNhdGVnb3JpYWwtcGFuZWwnLFxuICAgICAgdHlwZTogJ3RvZ2dsZSdcbiAgICB9LFxuICAgICdtb2RlbC5pc0NvbnRpbnVvdXMnOiB7XG4gICAgICBob29rOiAndHJhbnNmb3JtLWNvbnRpbnVvdXMtcGFuZWwnLFxuICAgICAgdHlwZTogJ3RvZ2dsZSdcbiAgICB9LFxuICAgICdtb2RlbC5pc0RhdGV0aW1lJzoge1xuICAgICAgaG9vazogJ3RyYW5zZm9ybS1kYXRldGltZS1wYW5lbCcsXG4gICAgICB0eXBlOiAndG9nZ2xlJ1xuICAgIH0sXG4gICAgJ21vZGVsLmlzRHVyYXRpb24nOiB7XG4gICAgICBob29rOiAndHJhbnNmb3JtLWR1cmF0aW9uLXBhbmVsJyxcbiAgICAgIHR5cGU6ICd0b2dnbGUnXG4gICAgfVxuICB9LFxuICBzdWJ2aWV3czoge1xuICAgIGZhY2V0RGVmaW5lOiB7XG4gICAgICBob29rOiAnZmFjZXQtZGVmaW5lJyxcbiAgICAgIHByZXBhcmVWaWV3OiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGYWNldERlZmluZVZpZXcoe1xuICAgICAgICAgIGVsOiBlbCxcbiAgICAgICAgICBtb2RlbDogdGhpcy5tb2RlbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRyYW5zZm9ybUNvbnRpbnVvdXM6IHtcbiAgICAgIGhvb2s6ICdmYWNldC10cmFuc2Zvcm0tY29udGludW91cycsXG4gICAgICBwcmVwYXJlVmlldzogZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHJldHVybiBuZXcgRmFjZXRUcmFuc2Zvcm1Db250aW51b3VzVmlldyh7XG4gICAgICAgICAgZWw6IGVsLFxuICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLmNvbnRpbnVvdXNUcmFuc2Zvcm1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0cmFuc2Zvcm1DYXRlZ29yaWFsOiB7XG4gICAgICBob29rOiAnZmFjZXQtdHJhbnNmb3JtLWNhdGVnb3JpYWwnLFxuICAgICAgcHJlcGFyZVZpZXc6IGZ1bmN0aW9uIChlbCkge1xuICAgICAgICByZXR1cm4gbmV3IEZhY2V0VHJhbnNmb3JtQ2F0ZWdvcmlhbFZpZXcoe1xuICAgICAgICAgIGVsOiBlbCxcbiAgICAgICAgICBtb2RlbDogdGhpcy5tb2RlbC5jYXRlZ29yaWFsVHJhbnNmb3JtXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgdHJhbnNmb3JtRGF0ZXRpbWU6IHtcbiAgICAgIGhvb2s6ICdmYWNldC10cmFuc2Zvcm0tZGF0ZXRpbWUnLFxuICAgICAgcHJlcGFyZVZpZXc6IGZ1bmN0aW9uIChlbCkge1xuICAgICAgICByZXR1cm4gbmV3IEZhY2V0VHJhbnNmb3JtRGF0ZXRpbWVWaWV3KHtcbiAgICAgICAgICBlbDogZWwsXG4gICAgICAgICAgbW9kZWw6IHRoaXMubW9kZWwuZGF0ZXRpbWVUcmFuc2Zvcm1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0cmFuc2Zvcm1EdXJhdGlvbjoge1xuICAgICAgaG9vazogJ2ZhY2V0LXRyYW5zZm9ybS1kdXJhdGlvbicsXG4gICAgICBwcmVwYXJlVmlldzogZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHJldHVybiBuZXcgRmFjZXRUcmFuc2Zvcm1EdXJhdGlvblZpZXcoe1xuICAgICAgICAgIGVsOiBlbCxcbiAgICAgICAgICBtb2RlbDogdGhpcy5tb2RlbC5kdXJhdGlvblRyYW5zZm9ybVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFiQTtBQWtCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFQQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFQQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFQQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFQQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFQQTtBQXJDQTtBQXZCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6668\n")},"6b2d":function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar $ = __webpack_require__(/*! jquery */ \"802c\");\n\nmodule.exports = View.extend({\n  template: templates.analyze.facetbarItem,\n  bindings: {\n    'model.name': '[data-hook~=\"facet-bar-item-button\"]',\n    'model.id': {\n      type: 'attribute',\n      hook: 'facet-bar-item',\n      name: 'data-id'\n    }\n  },\n  events: {\n    'click [data-hook~=facet-bar-item-button]': 'editFacet',\n    'mouseenter': 'enter',\n    'dragstart': 'dragStart',\n    'dragend': 'dragEnd'\n  },\n  editFacet: function editFacet() {\n    if (!app.me.isLockedDown) {\n      app.navigate('facet/' + this.model.id);\n    }\n  },\n  enter: function enter(e) {\n    var tip = document.getElementById('facet-bar-tooltip');\n\n    if (tip) {\n      tip.innerHTML = this.model.description; // Position the tooltip below the mouse pointer\n\n      $('#facet-bar-tooltip').css('left', e.pageX);\n    }\n  },\n  dragStart: function dragStart(e) {\n    var tip = document.getElementById('facet-bar-tooltip');\n    tip.classList.remove('is-active');\n  },\n  dragEnd: function dragEnd(e) {\n    var tip = document.getElementById('facet-bar-tooltip');\n    tip.classList.add('is-active');\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNmIyZC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9hbmFseXplL2ZhY2V0YmFyLWl0ZW0uanM/NWMzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgVmlldyA9IHJlcXVpcmUoJ2FtcGVyc2FuZC12aWV3Jyk7XG52YXIgdGVtcGxhdGVzID0gcmVxdWlyZSgnLi4vLi4vdGVtcGxhdGVzJyk7XG52YXIgYXBwID0gcmVxdWlyZSgnYW1wZXJzYW5kLWFwcCcpO1xudmFyICQgPSByZXF1aXJlKCdqcXVlcnknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMuYW5hbHl6ZS5mYWNldGJhckl0ZW0sXG4gIGJpbmRpbmdzOiB7XG4gICAgJ21vZGVsLm5hbWUnOiAnW2RhdGEtaG9va349XCJmYWNldC1iYXItaXRlbS1idXR0b25cIl0nLFxuICAgICdtb2RlbC5pZCc6IHtcbiAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgaG9vazogJ2ZhY2V0LWJhci1pdGVtJyxcbiAgICAgIG5hbWU6ICdkYXRhLWlkJ1xuICAgIH1cbiAgfSxcbiAgZXZlbnRzOiB7XG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWZhY2V0LWJhci1pdGVtLWJ1dHRvbl0nOiAnZWRpdEZhY2V0JyxcbiAgICAnbW91c2VlbnRlcic6ICdlbnRlcicsXG4gICAgJ2RyYWdzdGFydCc6ICdkcmFnU3RhcnQnLFxuICAgICdkcmFnZW5kJzogJ2RyYWdFbmQnXG4gIH0sXG4gIGVkaXRGYWNldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghYXBwLm1lLmlzTG9ja2VkRG93bikge1xuICAgICAgYXBwLm5hdmlnYXRlKCdmYWNldC8nICsgdGhpcy5tb2RlbC5pZCk7XG4gICAgfVxuICB9LFxuICBlbnRlcjogZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgdGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhY2V0LWJhci10b29sdGlwJyk7XG4gICAgaWYgKHRpcCkge1xuICAgICAgdGlwLmlubmVySFRNTCA9IHRoaXMubW9kZWwuZGVzY3JpcHRpb247XG4gICAgICAvLyBQb3NpdGlvbiB0aGUgdG9vbHRpcCBiZWxvdyB0aGUgbW91c2UgcG9pbnRlclxuICAgICAgJCgnI2ZhY2V0LWJhci10b29sdGlwJykuY3NzKCdsZWZ0JywgZS5wYWdlWCk7XG4gICAgfVxuICB9LFxuICBkcmFnU3RhcnQ6IGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHRpcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmYWNldC1iYXItdG9vbHRpcCcpO1xuICAgIHRpcC5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKTtcbiAgfSxcbiAgZHJhZ0VuZDogZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgdGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhY2V0LWJhci10b29sdGlwJyk7XG4gICAgdGlwLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUZBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFwQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///6b2d\n")},"6d22":function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nmodule.exports = View.extend({\n  template: templates.configurePartition.partitionContinuous,\n  bindings: {\n    'model.isContinuous': {\n      type: 'toggle',\n      hook: 'group-continuous-panel'\n    },\n    'model.minval': {\n      type: 'value',\n      hook: 'group-minimum-input'\n    },\n    'model.maxval': {\n      type: 'value',\n      hook: 'group-maximum-input'\n    },\n    'model.groupingParam': {\n      type: 'value',\n      hook: 'group-param-input'\n    },\n    'model.groupFixedN': {\n      type: 'booleanAttribute',\n      hook: 'group-fixedn-input',\n      name: 'checked'\n    },\n    'model.groupFixedSC': {\n      type: 'booleanAttribute',\n      hook: 'group-fixedsc-input',\n      name: 'checked'\n    },\n    'model.groupFixedS': {\n      type: 'booleanAttribute',\n      hook: 'group-fixeds-input',\n      name: 'checked'\n    },\n    'model.groupLog': {\n      type: 'booleanAttribute',\n      hook: 'group-log-input',\n      name: 'checked'\n    }\n  },\n  events: {\n    'change [data-hook~=group-minimum-input]': function changeDataHookGroupMinimumInput() {\n      this.model.minval = parseInt(this.queryByHook('group-minimum-input').value);\n      this.parent.resetFilter = true;\n    },\n    'change [data-hook~=group-maximum-input]': function changeDataHookGroupMaximumInput() {\n      this.model.maxval = parseInt(this.queryByHook('group-maximum-input').value);\n      this.parent.resetFilter = true;\n    },\n    'click [data-hook~=group-range-button]': function clickDataHookGroupRangeButton() {\n      var partition = this.model;\n      partition.reset();\n      this.queryByHook('group-minimum-input').dispatchEvent(new window.Event('input'));\n      this.queryByHook('group-maximum-input').dispatchEvent(new window.Event('input'));\n      this.parent.resetFilter = true;\n    },\n    'change [data-hook~=group-param-input]': function changeDataHookGroupParamInput() {\n      this.model.groupingParam = parseInt(this.queryByHook('group-param-input').value);\n      this.parent.resetFilter = true;\n    },\n    'click [data-hook~=group-fixedn-input]': function clickDataHookGroupFixednInput() {\n      this.model.groupingContinuous = 'fixedn';\n      this.parent.resetFilter = true;\n    },\n    'click [data-hook~=group-fixedsc-input]': function clickDataHookGroupFixedscInput() {\n      this.model.groupingContinuous = 'fixedsc';\n      this.parent.resetFilter = true;\n    },\n    'click [data-hook~=group-fixeds-input]': function clickDataHookGroupFixedsInput() {\n      this.model.groupingContinuous = 'fixeds';\n      this.parent.resetFilter = true;\n    },\n    'click [data-hook~=group-log-input]': function clickDataHookGroupLogInput() {\n      this.model.groupingContinuous = 'log';\n      this.parent.resetFilter = true;\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNmQyMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtcGFydGl0aW9uL3BhcnRpdGlvbi1jb250aW51b3VzLmpzPzU4MDIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uLy4uL3RlbXBsYXRlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXcuZXh0ZW5kKHtcbiAgdGVtcGxhdGU6IHRlbXBsYXRlcy5jb25maWd1cmVQYXJ0aXRpb24ucGFydGl0aW9uQ29udGludW91cyxcbiAgYmluZGluZ3M6IHtcbiAgICAnbW9kZWwuaXNDb250aW51b3VzJzoge1xuICAgICAgdHlwZTogJ3RvZ2dsZScsXG4gICAgICBob29rOiAnZ3JvdXAtY29udGludW91cy1wYW5lbCdcbiAgICB9LFxuXG4gICAgJ21vZGVsLm1pbnZhbCc6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAnZ3JvdXAtbWluaW11bS1pbnB1dCdcbiAgICB9LFxuICAgICdtb2RlbC5tYXh2YWwnOiB7XG4gICAgICB0eXBlOiAndmFsdWUnLFxuICAgICAgaG9vazogJ2dyb3VwLW1heGltdW0taW5wdXQnXG4gICAgfSxcbiAgICAnbW9kZWwuZ3JvdXBpbmdQYXJhbSc6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAnZ3JvdXAtcGFyYW0taW5wdXQnXG4gICAgfSxcbiAgICAnbW9kZWwuZ3JvdXBGaXhlZE4nOiB7XG4gICAgICB0eXBlOiAnYm9vbGVhbkF0dHJpYnV0ZScsXG4gICAgICBob29rOiAnZ3JvdXAtZml4ZWRuLWlucHV0JyxcbiAgICAgIG5hbWU6ICdjaGVja2VkJ1xuICAgIH0sXG4gICAgJ21vZGVsLmdyb3VwRml4ZWRTQyc6IHtcbiAgICAgIHR5cGU6ICdib29sZWFuQXR0cmlidXRlJyxcbiAgICAgIGhvb2s6ICdncm91cC1maXhlZHNjLWlucHV0JyxcbiAgICAgIG5hbWU6ICdjaGVja2VkJ1xuICAgIH0sXG4gICAgJ21vZGVsLmdyb3VwRml4ZWRTJzoge1xuICAgICAgdHlwZTogJ2Jvb2xlYW5BdHRyaWJ1dGUnLFxuICAgICAgaG9vazogJ2dyb3VwLWZpeGVkcy1pbnB1dCcsXG4gICAgICBuYW1lOiAnY2hlY2tlZCdcbiAgICB9LFxuICAgICdtb2RlbC5ncm91cExvZyc6IHtcbiAgICAgIHR5cGU6ICdib29sZWFuQXR0cmlidXRlJyxcbiAgICAgIGhvb2s6ICdncm91cC1sb2ctaW5wdXQnLFxuICAgICAgbmFtZTogJ2NoZWNrZWQnXG4gICAgfVxuICB9LFxuICBldmVudHM6IHtcbiAgICAnY2hhbmdlIFtkYXRhLWhvb2t+PWdyb3VwLW1pbmltdW0taW5wdXRdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC5taW52YWwgPSBwYXJzZUludCh0aGlzLnF1ZXJ5QnlIb29rKCdncm91cC1taW5pbXVtLWlucHV0JykudmFsdWUpO1xuICAgICAgdGhpcy5wYXJlbnQucmVzZXRGaWx0ZXIgPSB0cnVlO1xuICAgIH0sXG4gICAgJ2NoYW5nZSBbZGF0YS1ob29rfj1ncm91cC1tYXhpbXVtLWlucHV0XSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwubWF4dmFsID0gcGFyc2VJbnQodGhpcy5xdWVyeUJ5SG9vaygnZ3JvdXAtbWF4aW11bS1pbnB1dCcpLnZhbHVlKTtcbiAgICAgIHRoaXMucGFyZW50LnJlc2V0RmlsdGVyID0gdHJ1ZTtcbiAgICB9LFxuICAgICdjbGljayBbZGF0YS1ob29rfj1ncm91cC1yYW5nZS1idXR0b25dJzogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHBhcnRpdGlvbiA9IHRoaXMubW9kZWw7XG4gICAgICBwYXJ0aXRpb24ucmVzZXQoKTtcblxuICAgICAgdGhpcy5xdWVyeUJ5SG9vaygnZ3JvdXAtbWluaW11bS1pbnB1dCcpLmRpc3BhdGNoRXZlbnQobmV3IHdpbmRvdy5FdmVudCgnaW5wdXQnKSk7XG4gICAgICB0aGlzLnF1ZXJ5QnlIb29rKCdncm91cC1tYXhpbXVtLWlucHV0JykuZGlzcGF0Y2hFdmVudChuZXcgd2luZG93LkV2ZW50KCdpbnB1dCcpKTtcbiAgICAgIHRoaXMucGFyZW50LnJlc2V0RmlsdGVyID0gdHJ1ZTtcbiAgICB9LFxuXG4gICAgJ2NoYW5nZSBbZGF0YS1ob29rfj1ncm91cC1wYXJhbS1pbnB1dF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLmdyb3VwaW5nUGFyYW0gPSBwYXJzZUludCh0aGlzLnF1ZXJ5QnlIb29rKCdncm91cC1wYXJhbS1pbnB1dCcpLnZhbHVlKTtcbiAgICAgIHRoaXMucGFyZW50LnJlc2V0RmlsdGVyID0gdHJ1ZTtcbiAgICB9LFxuICAgICdjbGljayBbZGF0YS1ob29rfj1ncm91cC1maXhlZG4taW5wdXRdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC5ncm91cGluZ0NvbnRpbnVvdXMgPSAnZml4ZWRuJztcbiAgICAgIHRoaXMucGFyZW50LnJlc2V0RmlsdGVyID0gdHJ1ZTtcbiAgICB9LFxuICAgICdjbGljayBbZGF0YS1ob29rfj1ncm91cC1maXhlZHNjLWlucHV0XSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwuZ3JvdXBpbmdDb250aW51b3VzID0gJ2ZpeGVkc2MnO1xuICAgICAgdGhpcy5wYXJlbnQucmVzZXRGaWx0ZXIgPSB0cnVlO1xuICAgIH0sXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWdyb3VwLWZpeGVkcy1pbnB1dF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLmdyb3VwaW5nQ29udGludW91cyA9ICdmaXhlZHMnO1xuICAgICAgdGhpcy5wYXJlbnQucmVzZXRGaWx0ZXIgPSB0cnVlO1xuICAgIH0sXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWdyb3VwLWxvZy1pbnB1dF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLmdyb3VwaW5nQ29udGludW91cyA9ICdsb2cnO1xuICAgICAgdGhpcy5wYXJlbnQucmVzZXRGaWx0ZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBakNBO0FBdUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJDQTtBQXpDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6d22\n")},"701f":function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nmodule.exports = View.extend({\n  template: templates.configureDataset.facet,\n  initialize: function initialize() {\n    this.isLockedDown = app.me.isLockedDown;\n  },\n  render: function render() {\n    this.renderWithTemplate(this);\n    window.componentHandler.upgradeDom(this.el);\n    return this;\n  },\n  session: {\n    'isLockedDown': 'boolean'\n  },\n  bindings: {\n    'isLockedDown': {\n      type: 'toggle',\n      hook: 'actions',\n      invert: 'yes'\n    },\n    'model.name': '[data-hook~=name]',\n    'model.description': '[data-hook~=description]',\n    'model.show': {\n      type: 'toggle',\n      hook: 'fullitem'\n    },\n    //    'model.isCategorial': {\n    //      type: 'booleanClass',\n    //      hook: 'typeIcon',\n    //      name: 'facetCategorialIcon'\n    //    },\n    //    'model.isContinuous': {\n    //      type: 'booleanClass',\n    //      hook: 'typeIcon',\n    //      name: 'facetContinuousIcon'\n    // },\n    //    'model.isDatetime': {\n    //      type: 'booleanClass',\n    //      hook: 'typeIcon',\n    //      name: 'facetDatetimeIcon'\n    //    },\n    //    'model.isDuration': {\n    //      type: 'booleanClass',\n    //      hook: 'typeIcon',\n    //      name: 'facetDurationIcon'\n    //    },\n    //    'model.isText': {\n    //      type: 'booleanClass',\n    //      hook: 'typeIcon',\n    //      name: 'facetTextIcon'\n    //    }\n    // material design hooks\n    'model.id': [{\n      hook: 'cb',\n      type: 'attribute',\n      name: 'id'\n    }, {\n      hook: 'cblabel',\n      type: 'attribute',\n      name: 'for'\n    }],\n    'model.isActive': {\n      hook: 'cb',\n      type: 'booleanAttribute',\n      name: 'checked'\n    }\n  },\n  events: {\n    'change': 'togglePower',\n    'click [data-hook~=configureFacet]': 'configureFacet',\n    'click [data-hook~=removeFacet]': 'removeFacet',\n    'click [data-hook~=duplicateFacet]': 'duplicateFacet'\n  },\n  togglePower: function togglePower(ev) {\n    this.model.isActive = !this.model.isActive;\n\n    if (this.model.isCategorial) {\n      this.model.setCategories();\n    } else if (this.model.isContinuous || this.model.isDatetime || this.model.isDuration) {\n      this.model.setMinMax();\n    }\n  },\n  configureFacet: function configureFacet(ev) {\n    app.navigate('facet/' + this.model.id);\n  },\n  removeFacet: function removeFacet(ev) {\n    this.collection.remove(this.model);\n  },\n  duplicateFacet: function duplicateFacet(ev) {\n    // make a copy with new name and id\n    var duplicateFacet = this.model.toJSON();\n    duplicateFacet.name += ' copy';\n    delete duplicateFacet.id;\n    this.collection.add(duplicateFacet);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzAxZi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZGF0YXNldC9mYWNldC1jb2xsZWN0aW9uLmpzPzBjOTEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uLy4uL3RlbXBsYXRlcycpO1xudmFyIGFwcCA9IHJlcXVpcmUoJ2FtcGVyc2FuZC1hcHAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMuY29uZmlndXJlRGF0YXNldC5mYWNldCxcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaXNMb2NrZWREb3duID0gYXBwLm1lLmlzTG9ja2VkRG93bjtcbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZW5kZXJXaXRoVGVtcGxhdGUodGhpcyk7XG4gICAgd2luZG93LmNvbXBvbmVudEhhbmRsZXIudXBncmFkZURvbSh0aGlzLmVsKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgc2Vzc2lvbjoge1xuICAgICdpc0xvY2tlZERvd24nOiAnYm9vbGVhbidcbiAgfSxcbiAgYmluZGluZ3M6IHtcbiAgICAnaXNMb2NrZWREb3duJzoge1xuICAgICAgdHlwZTogJ3RvZ2dsZScsXG4gICAgICBob29rOiAnYWN0aW9ucycsXG4gICAgICBpbnZlcnQ6ICd5ZXMnXG4gICAgfSxcbiAgICAnbW9kZWwubmFtZSc6ICdbZGF0YS1ob29rfj1uYW1lXScsXG4gICAgJ21vZGVsLmRlc2NyaXB0aW9uJzogJ1tkYXRhLWhvb2t+PWRlc2NyaXB0aW9uXScsXG4gICAgJ21vZGVsLnNob3cnOiB7XG4gICAgICB0eXBlOiAndG9nZ2xlJyxcbiAgICAgIGhvb2s6ICdmdWxsaXRlbSdcbiAgICB9LFxuLy8gICAgJ21vZGVsLmlzQ2F0ZWdvcmlhbCc6IHtcbi8vICAgICAgdHlwZTogJ2Jvb2xlYW5DbGFzcycsXG4vLyAgICAgIGhvb2s6ICd0eXBlSWNvbicsXG4vLyAgICAgIG5hbWU6ICdmYWNldENhdGVnb3JpYWxJY29uJ1xuLy8gICAgfSxcbi8vICAgICdtb2RlbC5pc0NvbnRpbnVvdXMnOiB7XG4vLyAgICAgIHR5cGU6ICdib29sZWFuQ2xhc3MnLFxuLy8gICAgICBob29rOiAndHlwZUljb24nLFxuLy8gICAgICBuYW1lOiAnZmFjZXRDb250aW51b3VzSWNvbidcbi8vIH0sXG4vLyAgICAnbW9kZWwuaXNEYXRldGltZSc6IHtcbi8vICAgICAgdHlwZTogJ2Jvb2xlYW5DbGFzcycsXG4vLyAgICAgIGhvb2s6ICd0eXBlSWNvbicsXG4vLyAgICAgIG5hbWU6ICdmYWNldERhdGV0aW1lSWNvbidcbi8vICAgIH0sXG4vLyAgICAnbW9kZWwuaXNEdXJhdGlvbic6IHtcbi8vICAgICAgdHlwZTogJ2Jvb2xlYW5DbGFzcycsXG4vLyAgICAgIGhvb2s6ICd0eXBlSWNvbicsXG4vLyAgICAgIG5hbWU6ICdmYWNldER1cmF0aW9uSWNvbidcbi8vICAgIH0sXG4vLyAgICAnbW9kZWwuaXNUZXh0Jzoge1xuLy8gICAgICB0eXBlOiAnYm9vbGVhbkNsYXNzJyxcbi8vICAgICAgaG9vazogJ3R5cGVJY29uJyxcbi8vICAgICAgbmFtZTogJ2ZhY2V0VGV4dEljb24nXG4vLyAgICB9XG4gICAgLy8gbWF0ZXJpYWwgZGVzaWduIGhvb2tzXG4gICAgJ21vZGVsLmlkJzogW1xuICAgICAgeyBob29rOiAnY2InLCB0eXBlOiAnYXR0cmlidXRlJywgbmFtZTogJ2lkJyB9LFxuICAgICAgeyBob29rOiAnY2JsYWJlbCcsIHR5cGU6ICdhdHRyaWJ1dGUnLCBuYW1lOiAnZm9yJyB9XG4gICAgXSxcbiAgICAnbW9kZWwuaXNBY3RpdmUnOiB7XG4gICAgICBob29rOiAnY2InLFxuICAgICAgdHlwZTogJ2Jvb2xlYW5BdHRyaWJ1dGUnLFxuICAgICAgbmFtZTogJ2NoZWNrZWQnXG4gICAgfVxuICB9LFxuICBldmVudHM6IHtcbiAgICAnY2hhbmdlJzogJ3RvZ2dsZVBvd2VyJyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349Y29uZmlndXJlRmFjZXRdJzogJ2NvbmZpZ3VyZUZhY2V0JyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349cmVtb3ZlRmFjZXRdJzogJ3JlbW92ZUZhY2V0JyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349ZHVwbGljYXRlRmFjZXRdJzogJ2R1cGxpY2F0ZUZhY2V0J1xuICB9LFxuICB0b2dnbGVQb3dlcjogZnVuY3Rpb24gKGV2KSB7XG4gICAgdGhpcy5tb2RlbC5pc0FjdGl2ZSA9ICF0aGlzLm1vZGVsLmlzQWN0aXZlO1xuXG4gICAgaWYgKHRoaXMubW9kZWwuaXNDYXRlZ29yaWFsKSB7XG4gICAgICB0aGlzLm1vZGVsLnNldENhdGVnb3JpZXMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZWwuaXNDb250aW51b3VzIHx8IHRoaXMubW9kZWwuaXNEYXRldGltZSB8fCB0aGlzLm1vZGVsLmlzRHVyYXRpb24pIHtcbiAgICAgIHRoaXMubW9kZWwuc2V0TWluTWF4KCk7XG4gICAgfVxuICB9LFxuICBjb25maWd1cmVGYWNldDogZnVuY3Rpb24gKGV2KSB7XG4gICAgYXBwLm5hdmlnYXRlKCdmYWNldC8nICsgdGhpcy5tb2RlbC5pZCk7XG4gIH0sXG4gIHJlbW92ZUZhY2V0OiBmdW5jdGlvbiAoZXYpIHtcbiAgICB0aGlzLmNvbGxlY3Rpb24ucmVtb3ZlKHRoaXMubW9kZWwpO1xuICB9LFxuICBkdXBsaWNhdGVGYWNldDogZnVuY3Rpb24gKGV2KSB7XG4gICAgLy8gbWFrZSBhIGNvcHkgd2l0aCBuZXcgbmFtZSBhbmQgaWRcbiAgICB2YXIgZHVwbGljYXRlRmFjZXQgPSB0aGlzLm1vZGVsLnRvSlNPTigpO1xuICAgIGR1cGxpY2F0ZUZhY2V0Lm5hbWUgKz0gJyBjb3B5JztcbiAgICBkZWxldGUgZHVwbGljYXRlRmFjZXQuaWQ7XG5cbiAgICB0aGlzLmNvbGxlY3Rpb24uYWRkKGR1cGxpY2F0ZUZhY2V0KTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUExQ0E7QUFnREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUF6RkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///701f\n")},"71a3":function(module,exports,__webpack_require__){eval("/**\n * @classdesc bubble plot class\n * @class BubblePlot\n * @augments BaseChart\n */\nvar BaseChart = __webpack_require__(/*! ./base-chart */ \"6339\");\n\nvar moment = __webpack_require__(/*! moment-timezone */ \"6c9d\");\n\nfunction ttLabel(tooltip, data) {\n  var point = data.datasets[tooltip.datasetIndex].data[tooltip.index];\n  var axes = data.datasets[0].spotAxes;\n  var label = [axes.x + ': ' + point.a, axes.y + ': ' + point.b];\n\n  if (axes.r) {\n    label.push('radius (' + axes.r + ') ' + point.bb);\n  }\n\n  if (axes.c) {\n    label.push('color (' + axes.c + ' ) ' + point.aa);\n  }\n\n  label.push('Number of points in bin ' + point.count);\n  return label;\n}\n\nmodule.exports = BaseChart.extend({\n  initialize: function initialize() {\n    this.slots.reset([{\n      description: 'X axis',\n      type: 'partition',\n      rank: 1,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Y axis',\n      type: 'partition',\n      rank: 2,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Point color',\n      type: 'aggregate',\n      rank: 1,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }, {\n      description: 'Point size',\n      type: 'aggregate',\n      rank: 2,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }, {\n      description: 'X error',\n      type: 'aggregate',\n      rank: 3,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }, {\n      description: 'Y error',\n      type: 'aggregate',\n      rank: 4,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }]);\n  },\n  chartjsConfig: function chartjsConfig() {\n    return {\n      type: 'bubbleError',\n      data: {\n        datasets: []\n      },\n      options: {\n        animation: false,\n        title: {\n          display: true,\n          position: 'top'\n        },\n        legend: {\n          display: false\n        },\n        scales: {\n          xAxes: [{\n            type: 'linear',\n            position: 'bottom',\n            gridLines: {\n              zeroLineColor: 'rgba(0,255,0,1)'\n            },\n            scaleLabel: {\n              display: true\n            },\n            time: {\n              parser: function parser(label) {\n                return moment(label, moment.ISO_8601);\n              }\n            }\n          }],\n          yAxes: [{\n            type: 'linear',\n            position: 'left',\n            gridLines: {\n              zeroLineColor: 'rgba(0,255,0,1)'\n            },\n            scaleLabel: {\n              display: true\n            },\n            time: {\n              parser: function parser(label) {\n                return moment(label, moment.ISO_8601);\n              }\n            }\n          }]\n        },\n        tooltips: {\n          enabled: true,\n          mode: 'single',\n          callbacks: {\n            label: ttLabel\n          }\n        }\n      }\n    };\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzFhMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL21vZGVscy9idWJibGVwbG90LmpzPzY4NzIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY2xhc3NkZXNjIGJ1YmJsZSBwbG90IGNsYXNzXG4gKiBAY2xhc3MgQnViYmxlUGxvdFxuICogQGF1Z21lbnRzIEJhc2VDaGFydFxuICovXG5cbnZhciBCYXNlQ2hhcnQgPSByZXF1aXJlKCcuL2Jhc2UtY2hhcnQnKTtcbnZhciBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQtdGltZXpvbmUnKTtcblxuZnVuY3Rpb24gdHRMYWJlbCAodG9vbHRpcCwgZGF0YSkge1xuICB2YXIgcG9pbnQgPSBkYXRhLmRhdGFzZXRzW3Rvb2x0aXAuZGF0YXNldEluZGV4XS5kYXRhW3Rvb2x0aXAuaW5kZXhdO1xuICB2YXIgYXhlcyA9IGRhdGEuZGF0YXNldHNbMF0uc3BvdEF4ZXM7XG5cbiAgdmFyIGxhYmVsID0gW1xuICAgIGF4ZXMueCArICc6ICcgKyBwb2ludC5hLFxuICAgIGF4ZXMueSArICc6ICcgKyBwb2ludC5iXG4gIF07XG4gIGlmIChheGVzLnIpIHtcbiAgICBsYWJlbC5wdXNoKCdyYWRpdXMgKCcgKyBheGVzLnIgKyAnKSAnICsgcG9pbnQuYmIpO1xuICB9XG4gIGlmIChheGVzLmMpIHtcbiAgICBsYWJlbC5wdXNoKCdjb2xvciAoJyArIGF4ZXMuYyArICcgKSAnICsgcG9pbnQuYWEpO1xuICB9XG4gIGxhYmVsLnB1c2goJ051bWJlciBvZiBwb2ludHMgaW4gYmluICcgKyBwb2ludC5jb3VudCk7XG4gIHJldHVybiBsYWJlbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBCYXNlQ2hhcnQuZXh0ZW5kKHtcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2xvdHMucmVzZXQoW1xuICAgICAge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1ggYXhpcycsXG4gICAgICAgIHR5cGU6ICdwYXJ0aXRpb24nLFxuICAgICAgICByYW5rOiAxLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NhdGVnb3JpYWwnLCAnZGF0ZXRpbWUnLCAnZHVyYXRpb24nLCAnY29udGludW91cycsICd0ZXh0J11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnWSBheGlzJyxcbiAgICAgICAgdHlwZTogJ3BhcnRpdGlvbicsXG4gICAgICAgIHJhbms6IDIsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBzdXBwb3J0ZWRGYWNldHM6IFsnY2F0ZWdvcmlhbCcsICdkYXRldGltZScsICdkdXJhdGlvbicsICdjb250aW51b3VzJywgJ3RleHQnXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdQb2ludCBjb2xvcicsXG4gICAgICAgIHR5cGU6ICdhZ2dyZWdhdGUnLFxuICAgICAgICByYW5rOiAxLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHN1cHBvcnRlZEZhY2V0czogWydjb250aW51b3VzJywgJ2R1cmF0aW9uJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUG9pbnQgc2l6ZScsXG4gICAgICAgIHR5cGU6ICdhZ2dyZWdhdGUnLFxuICAgICAgICByYW5rOiAyLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHN1cHBvcnRlZEZhY2V0czogWydjb250aW51b3VzJywgJ2R1cmF0aW9uJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnWCBlcnJvcicsXG4gICAgICAgIHR5cGU6ICdhZ2dyZWdhdGUnLFxuICAgICAgICByYW5rOiAzLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHN1cHBvcnRlZEZhY2V0czogWydjb250aW51b3VzJywgJ2R1cmF0aW9uJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnWSBlcnJvcicsXG4gICAgICAgIHR5cGU6ICdhZ2dyZWdhdGUnLFxuICAgICAgICByYW5rOiA0LFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIHN1cHBvcnRlZEZhY2V0czogWydjb250aW51b3VzJywgJ2R1cmF0aW9uJ11cbiAgICAgIH1cbiAgICBdKTtcbiAgfSxcbiAgY2hhcnRqc0NvbmZpZzogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnYnViYmxlRXJyb3InLFxuICAgICAgZGF0YToge1xuICAgICAgICBkYXRhc2V0czogW11cbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGFuaW1hdGlvbjogZmFsc2UsXG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgZGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICBwb3NpdGlvbjogJ3RvcCdcbiAgICAgICAgfSxcbiAgICAgICAgbGVnZW5kOiB7XG4gICAgICAgICAgZGlzcGxheTogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgc2NhbGVzOiB7XG4gICAgICAgICAgeEF4ZXM6IFt7XG4gICAgICAgICAgICB0eXBlOiAnbGluZWFyJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgICAgICAgIGdyaWRMaW5lczoge1xuICAgICAgICAgICAgICB6ZXJvTGluZUNvbG9yOiAncmdiYSgwLDI1NSwwLDEpJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjYWxlTGFiZWw6IHtcbiAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRpbWU6IHtcbiAgICAgICAgICAgICAgcGFyc2VyOiBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9tZW50KGxhYmVsLCBtb21lbnQuSVNPXzg2MDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfV0sXG4gICAgICAgICAgeUF4ZXM6IFt7XG4gICAgICAgICAgICB0eXBlOiAnbGluZWFyJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICBncmlkTGluZXM6IHtcbiAgICAgICAgICAgICAgemVyb0xpbmVDb2xvcjogJ3JnYmEoMCwyNTUsMCwxKSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzY2FsZUxhYmVsOiB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aW1lOiB7XG4gICAgICAgICAgICAgIHBhcnNlcjogZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbWVudChsYWJlbCwgbW9tZW50LklTT184NjAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1dXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBtb2RlOiAnc2luZ2xlJyxcbiAgICAgICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgICAgIGxhYmVsOiB0dExhYmVsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQU1BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBVEE7QUFlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBVEE7QUFoQkE7QUFnQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBSEE7QUF6Q0E7QUFMQTtBQXVEQTtBQXZHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///71a3\n")},"7bdf":function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(process) {function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Spot = __webpack_require__(/*! spot-framework */ \"3b07\");\n\nvar PageView = __webpack_require__(/*! ./base */ \"b966\");\n\nvar templates = __webpack_require__(/*! ../templates */ \"4324\");\n\nvar app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar $ = __webpack_require__(/*! jquery */ \"802c\");\n\nvar dialogPolyfill = __webpack_require__(/*! dialog-polyfill */ \"5c00\");\n\nvar SessionModel = __webpack_require__(/*! ./datasets/session-model */ \"bdff\");\n\nvar DatasetCollectionView = __webpack_require__(/*! ./datasets/dataset-collection */ \"1002\");\n\nvar SessionCollectionView = __webpack_require__(/*! ./datasets/session-collection */ \"56f6\");\n\nmodule.exports = PageView.extend({\n  template: templates.datasets.page,\n  initialize: function initialize() {\n    this.pageName = 'datasets';\n    this.helpTemplate = ''; // // display or hide elements\n    // var serverButton = document.getElementById('serverButton-card');\n    // console.log(serverButton);\n    // if ( process.env.MODE !== 'server' ) {\n    //   // serverButton.style.display = 'inherit';\n    //   // serverButton.style.display = 'none';\n    //   // serverButton.style.display = 'inline';\n    // }\n\n    var localStorageDatasets = app.getDatasetsFromLocalStorage();\n    localStorageDatasets.forEach(function (dset, index) {\n      app.me.datasets.add(dset);\n      console.log(\"[\" + index + \"]: \" + dset.id + '  ', dset.name);\n    });\n    var localStorageSessions = app.getSessionsFromLocalStorage();\n    localStorageSessions.forEach(function (sess, index) {\n      var now = new Date();\n      var sessMod = new SessionModel({\n        id: sess.id,\n        name: 'Local session',\n        date: now.toLocaleString()\n      });\n      app.sessions.add(sessMod);\n    });\n  },\n  events: {\n    'change [data-hook~=json-upload-input]': 'importJSON',\n    'change [data-hook~=csv-upload-input]': 'importCSV',\n    'click [data-hook~=server-connect]': 'connectToServer',\n    'input [data-hook~=dataset-selector]': 'input',\n    'input [data-hook~=CSV-separator-other-input]': 'setOtherSeperator',\n    'click [data-hook~=search-button]': 'search',\n    'click [data-hook~=clear-button]': 'clear',\n    'click [data-hook~=CSV-settings-button]': 'showCSVSettings',\n    'click [data-hook~=CSV-settings-close]': 'closeCSVSettings',\n    'click [data-hook~=session-cloud-upload]': 'uploadSessionZenodo',\n    'click [data-hook~=session-cloud-download]': 'showCloudDownloadInfo',\n    'click [data-hook~=session-download]': 'exportSession',\n    'change [data-hook~=session-upload-input]': 'importLocalSession',\n    'click [data-hook~=data-download]': 'exportData',\n    'click [data-hook~=session-download-cloud-close-button]': 'closeCloudDownloadInfo',\n    'click [data-hook~=session-download-cloud-get]': 'getRemoteSession',\n    'click [data-hook~=session-upload-cloud-close-button]': 'closeCloudUploadInfo',\n    'click #CSV-separator-comma': function clickCSVSeparatorComma() {\n      app.CSVSeparator = ',';\n    },\n    'click #CSV-separator-colon': function clickCSVSeparatorColon() {\n      app.CSVSeparator = ':';\n    },\n    'click #CSV-separator-semicolon': function clickCSVSeparatorSemicolon() {\n      app.CSVSeparator = ';';\n    },\n    'click #CSV-separator-pipe': function clickCSVSeparatorPipe() {\n      app.CSVSeparator = '|';\n    },\n    'click #CSV-separator-tab': function clickCSVSeparatorTab() {\n      app.CSVSeparator = '\\t';\n    },\n    'click #CSV-separator-other': function clickCSVSeparatorOther() {\n      this.el.querySelector('[data-hook~=\"CSV-separator-other-input\"]').focus();\n    },\n    'click #CSV-header-columns': function clickCSVHeaderColumns() {\n      app.CSVHeaders = this.query('#CSV-header-columns').checked;\n    },\n    'click #CSV-quote-single': function clickCSVQuoteSingle() {\n      app.CSVQuote = '\\'';\n    },\n    'click #CSV-quote-double': function clickCSVQuoteDouble() {\n      app.CSVQuote = '\"';\n    },\n    'click #CSV-quote-none': function clickCSVQuoteNone() {\n      app.CSVQuote = null;\n    },\n    'click #CSV-comment-pound': function clickCSVCommentPound() {\n      app.CSVComment = '#';\n    },\n    'click #CSV-comment-exclamation': function clickCSVCommentExclamation() {\n      app.CSVComment = '!';\n    },\n    'click #CSV-comment-slash': function clickCSVCommentSlash() {\n      app.CSVComment = '/';\n    },\n    'click #CSV-comment-dash': function clickCSVCommentDash() {\n      app.CSVComment = '-';\n    },\n    'click #CSV-comment-percent': function clickCSVCommentPercent() {\n      app.CSVComment = '%';\n    }\n  },\n  render: function render() {\n    // Reset the CSV parsing dialog.\n    // NOTE: we could do this via bindings, but this is easier (less code)\n    this.renderWithTemplate(this);\n    this.query('#CSV-header-columns').checked = app.CSVHeaders;\n\n    if (app.CSVSeparator === ',') {\n      this.query('#CSV-separator-comma').checked = true;\n    } else if (app.CSVSeparator === ':') {\n      this.query('#CSV-separator-colon').checked = true;\n    } else if (app.CSVSeparator === ';') {\n      this.query('#CSV-separator-semicolon').checked = true;\n    } else if (app.CSVSeparator === '|') {\n      this.query('#CSV-separator-pipe').checked = true;\n    } else if (app.CSVSeparator === '\\t') {\n      this.query('#CSV-separator-tab').checked = true;\n    }\n\n    if (app.CSVQuote === '\"') {\n      this.query('#CSV-quote-double').checked = true;\n    } else if (app.CSVQuote === '\\'') {\n      this.query('#CSV-quote-single').checked = true;\n    } else if (app.CSVQuote === null) {\n      this.query('#CSV-quote-none').checked = true;\n    }\n\n    if (app.CSVComment === '#') {\n      this.query('#CSV-comment-pound').checked = true;\n    } else if (app.CSVComment === '!') {\n      this.query('#CSV-comment-exclamation').checked = true;\n    } else if (app.CSVComment === '/') {\n      this.query('#CSV-comment-slash').checked = true;\n    } else if (app.CSVComment === '-') {\n      this.query('#CSV-comment-dash').checked = true;\n    } else if (app.CSVComment === 'percent') {\n      this.query('#CSV-comment-percent').checked = true;\n    } // mdl hook ups\n\n\n    this.once('remove', function () {\n      app.me.datasets.off('add');\n    });\n    app.me.datasets.on('add', function () {\n      window.componentHandler.upgradeDom();\n    });\n    app.sessions.on('add', function () {\n      window.componentHandler.upgradeDom();\n    });\n  },\n  session: {\n    needle: 'string',\n    showSearch: 'boolean'\n  },\n  subviews: {\n    datasets: {\n      hook: 'dataset-items',\n      constructor: DatasetCollectionView\n    },\n    sessions: {\n      hook: 'session-items',\n      constructor: SessionCollectionView\n    }\n  },\n  bindings: {\n    'model.isLockedDown': {\n      type: 'toggle',\n      hook: 'add-datasets-div',\n      invert: true\n    },\n    'showSearch': {\n      type: 'toggle',\n      hook: 'search-bar'\n    },\n    'needle': {\n      type: 'value',\n      hook: 'dataset-selector'\n    }\n  },\n  input: function input() {\n    var select = this.el.querySelector('[data-hook~=\"dataset-selector\"]');\n    this.needle = select.value;\n    this.update();\n  },\n  setOtherSeperator: function setOtherSeperator() {\n    var select = this.el.querySelector('[data-hook~=\"CSV-separator-other-input\"]');\n    app.CSVSeparator = select.value;\n  },\n  search: function search() {\n    this.showSearch = !this.showSearch;\n\n    if (this.showSearch) {\n      this.queryByHook('dataset-selector').focus();\n    }\n  },\n  clear: function clear() {\n    this.needle = '';\n    this.update();\n  },\n  update: function update() {\n    // build regexp for searching\n    try {\n      var regexp = new RegExp(this.needle, 'i'); // case insensitive search\n      // search through collection, check both name and description\n\n      this.model.datasets.forEach(function (e) {\n        var hay = e.name + e.URL + e.description;\n        e.show = regexp.test(hay.toLowerCase());\n      });\n    } catch (error) {}\n  },\n  connectToServer: function connectToServer() {\n    app.me = new Spot({\n      sessionType: 'server'\n    });\n    app.message({\n      text: 'Connecting to server at ' + process.env.DB_SERVER + \":\" + process.env.DB_SERVER_PORT,\n      type: 'ok'\n    });\n    app.me.connectToServer();\n    app.me.socket.emit('getDatasets');\n    app.navigate('home');\n    setTimeout(function () {\n      app.navigate('datasets');\n    }, 100);\n  },\n  showCSVSettings: function showCSVSettings() {\n    var dialog = this.queryByHook('CSV-settings');\n    dialogPolyfill.registerDialog(dialog);\n    dialog.showModal();\n  },\n  closeCSVSettings: function closeCSVSettings() {\n    var dialog = this.queryByHook('CSV-settings');\n    dialogPolyfill.registerDialog(dialog);\n    dialog.close();\n  },\n  showCloudUploadInfo: function showCloudUploadInfo() {\n    var dialog = this.queryByHook('session-upload-cloud');\n    dialogPolyfill.registerDialog(dialog);\n    dialog.showModal();\n  },\n  closeCloudUploadInfo: function closeCloudUploadInfo() {\n    var dialog = this.queryByHook('session-upload-cloud');\n    dialogPolyfill.registerDialog(dialog);\n    dialog.close();\n  },\n  showCloudDownloadInfo: function showCloudDownloadInfo() {\n    var dialog = this.queryByHook('session-download-cloud');\n    dialogPolyfill.registerDialog(dialog);\n    dialog.showModal();\n  },\n  closeCloudDownloadInfo: function closeCloudDownloadInfo() {\n    var dialog = this.queryByHook('session-download-cloud');\n    dialogPolyfill.registerDialog(dialog);\n    dialog.close();\n  },\n  /////////////////////////////////////////////\n  importJSON: function importJSON() {\n    console.log('called function importJSON');\n    app.importJSON();\n  },\n  importCSV: function importCSV() {\n    console.log('called function importCSV');\n    app.importCSV();\n  },\n  getRemoteSession: function getRemoteSession() {\n    console.log('called function getRemoteSession');\n    var sessionUrl = this.queryByHook('session-import-remote-link').value; // TODO: verify the link\n\n    if (sessionUrl !== '') {\n      console.log('Downloading:', sessionUrl);\n      this.closeCloudDownloadInfo();\n      app.message({\n        text: 'Downloading the session. Please wait.',\n        type: 'ok'\n      });\n      app.importRemoteSession(sessionUrl);\n    }\n  },\n  exportSession: function exportSession() {\n    console.log('called function exportSession');\n    app.exportSession();\n  },\n  exportData: function exportData() {\n    console.log('called function exportData');\n  },\n  importLocalSession: function importLocalSession() {\n    console.log('called function importLocalSession');\n    app.importLocalSession();\n  },\n  uploadSessionZenodo: function uploadSessionZenodo() {\n    var that = this;\n    var json = app.me.toJSON();\n\n    if (app.me.sessionType === 'client') {\n      app.me.datasets.forEach(function (dataset, i) {\n        json.datasets[i].data = dataset.data;\n      });\n    }\n\n    var sessionData = new window.Blob([JSON.stringify(json)], {\n      type: 'application/json'\n    });\n    var shareLink = this.queryByHook('session-upload-cloud-link');\n    var shareDirectLink = this.queryByHook('session-upload-cloud-link-direct');\n    var fileformData = new FormData();\n    var zenodo_id = null;\n    fileformData.append(\"file\", sessionData, \"sessionfile.json\");\n    var metadata = {\n      metadata: {\n        'title': 'SPOT Session',\n        'upload_type': 'dataset',\n        'creators': [{\n          'name': 'Faruk, Diblen',\n          'affiliation': 'NLeSC'\n        }]\n      }\n    }; // console.log(\"Creating a DOI\");\n\n    app.zenodoRequest({\n      url_addition: \"\",\n      requestType: \"doi\",\n      bodyData: {}\n    }).then(function (doi_data) {\n      // console.log(\"doi_data: \", doi_data);\n      zenodo_id = doi_data.id; // console.log(\"Zenodo id:\", zenodo_id);\n      // console.log(\"Uploading file\");\n\n      app.zenodoRequest({\n        url_addition: zenodo_id + \"/files\",\n        requestType: \"upload\",\n        bodyData: fileformData\n      }).then(function (upload_data) {\n        // console.log(\"upload_data: \", upload_data);\n        // console.log(\"direct link: \", upload_data.links.download);\n        metadata.metadata = _objectSpread({}, metadata.metadata, {\n          'description': '<p><a href=\"' + \"http\" + '://' + \"127.0.0.1\" + \":\" + \"9966\" + '/#session=' + 'https://sandbox.zenodo.org/record/' + zenodo_id + '/files/sessionfile.json' + '\">Open with SPOT</a></p>' // console.log('<p><a href=\"' + process.env.PROTOCOL + '://' + process.env.BASE_URL + \":\" + process.env.PORT + '/#session=' + 'https://sandbox.zenodo.org/record/' + zenodo_id + '/files/sessionfile.json' + '\">Open with SPOT</a></p>');\n          // console.log(\"Setting the metadata\");\n\n        });\n        app.zenodoRequest({\n          url_addition: zenodo_id,\n          requestType: \"meta\",\n          bodyData: metadata\n        }).then(function (metadata_data) {\n          // console.log(\"metadata_data: \", metadata_data);\n          // console.log(\"Publishing...\");\n          app.zenodoRequest({\n            url_addition: zenodo_id + \"/actions/publish\",\n            requestType: \"publish\",\n            bodyData: {}\n          }).then(function (publish_data) {\n            // console.log(\"publish_data: \", publish_data);\n            // console.log(\"links: \", publish_data.links.record_html);\n            shareLink.value = publish_data.links.record_html;\n            shareDirectLink.value = \"http\" + '://' + \"127.0.0.1\" + \":\" + \"9966\" + '/#session=' + 'https://sandbox.zenodo.org/record/' + zenodo_id + '/files/sessionfile.json';\n            that.showCloudUploadInfo();\n          }).catch(function (error_publish) {\n            console.error(error_publish);\n          });\n        }).catch(function (error_metadata) {\n          console.error(error_metadata);\n        });\n      }).catch(function (error_upload) {\n        console.error(error_upload);\n      });\n    }).catch(function (error_doi) {\n      console.error(error_doi);\n    });\n  }\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/process/browser.js */ \"26d5\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiN2JkZi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9kYXRhc2V0cy5qcz85YzM3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBTcG90ID0gcmVxdWlyZSgnc3BvdC1mcmFtZXdvcmsnKTtcbnZhciBQYWdlVmlldyA9IHJlcXVpcmUoJy4vYmFzZScpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uL3RlbXBsYXRlcycpO1xudmFyIGFwcCA9IHJlcXVpcmUoJ2FtcGVyc2FuZC1hcHAnKTtcbnZhciAkID0gcmVxdWlyZSgnanF1ZXJ5Jyk7XG5cbmNvbnN0IGRpYWxvZ1BvbHlmaWxsID0gcmVxdWlyZSgnZGlhbG9nLXBvbHlmaWxsJyk7XG52YXIgU2Vzc2lvbk1vZGVsID0gcmVxdWlyZSgnLi9kYXRhc2V0cy9zZXNzaW9uLW1vZGVsJyk7XG5cbnZhciBEYXRhc2V0Q29sbGVjdGlvblZpZXcgPSByZXF1aXJlKCcuL2RhdGFzZXRzL2RhdGFzZXQtY29sbGVjdGlvbicpO1xudmFyIFNlc3Npb25Db2xsZWN0aW9uVmlldyA9IHJlcXVpcmUoJy4vZGF0YXNldHMvc2Vzc2lvbi1jb2xsZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUGFnZVZpZXcuZXh0ZW5kKHtcbiAgdGVtcGxhdGU6IHRlbXBsYXRlcy5kYXRhc2V0cy5wYWdlLFxuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5wYWdlTmFtZSA9ICdkYXRhc2V0cyc7XG4gICAgdGhpcy5oZWxwVGVtcGxhdGUgPSAnJztcblxuXG4gICAgLy8gLy8gZGlzcGxheSBvciBoaWRlIGVsZW1lbnRzXG4gICAgLy8gdmFyIHNlcnZlckJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZXJ2ZXJCdXR0b24tY2FyZCcpO1xuICAgIC8vIGNvbnNvbGUubG9nKHNlcnZlckJ1dHRvbik7XG4gICAgLy8gaWYgKCBwcm9jZXNzLmVudi5NT0RFICE9PSAnc2VydmVyJyApIHtcbiAgICAvLyAgIC8vIHNlcnZlckJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ2luaGVyaXQnO1xuICAgIC8vICAgLy8gc2VydmVyQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgLy8gICAvLyBzZXJ2ZXJCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnO1xuICAgIC8vIH1cblxuXG4gICAgdmFyIGxvY2FsU3RvcmFnZURhdGFzZXRzID0gYXBwLmdldERhdGFzZXRzRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIGxvY2FsU3RvcmFnZURhdGFzZXRzLmZvckVhY2goZnVuY3Rpb24oZHNldCwgaW5kZXgpIHtcbiAgICAgIGFwcC5tZS5kYXRhc2V0cy5hZGQoZHNldCk7XG4gICAgICBjb25zb2xlLmxvZyhcIltcIiArIGluZGV4ICsgXCJdOiBcIiArIGRzZXQuaWQgKyAnICAnLCBkc2V0Lm5hbWUpO1xuICAgIH0pO1xuXG4gICAgdmFyIGxvY2FsU3RvcmFnZVNlc3Npb25zID0gYXBwLmdldFNlc3Npb25zRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIGxvY2FsU3RvcmFnZVNlc3Npb25zLmZvckVhY2goZnVuY3Rpb24oc2VzcywgaW5kZXgpIHtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICB2YXIgc2Vzc01vZCA9IG5ldyBTZXNzaW9uTW9kZWwoe1xuICAgICAgICBpZDogc2Vzcy5pZCxcbiAgICAgICAgbmFtZTogJ0xvY2FsIHNlc3Npb24nLFxuICAgICAgICBkYXRlOiBub3cudG9Mb2NhbGVTdHJpbmcoKVxuICAgICAgfSk7XG4gICAgICBhcHAuc2Vzc2lvbnMuYWRkKHNlc3NNb2QpO1xuICAgIH0pO1xuXG4gIH0sXG4gIGV2ZW50czoge1xuICAgICdjaGFuZ2UgW2RhdGEtaG9va349anNvbi11cGxvYWQtaW5wdXRdJzogJ2ltcG9ydEpTT04nLFxuICAgICdjaGFuZ2UgW2RhdGEtaG9va349Y3N2LXVwbG9hZC1pbnB1dF0nOiAnaW1wb3J0Q1NWJyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349c2VydmVyLWNvbm5lY3RdJzogJ2Nvbm5lY3RUb1NlcnZlcicsXG5cbiAgICAnaW5wdXQgW2RhdGEtaG9va349ZGF0YXNldC1zZWxlY3Rvcl0nOiAnaW5wdXQnLFxuICAgICdpbnB1dCBbZGF0YS1ob29rfj1DU1Ytc2VwYXJhdG9yLW90aGVyLWlucHV0XSc6ICdzZXRPdGhlclNlcGVyYXRvcicsXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PXNlYXJjaC1idXR0b25dJzogJ3NlYXJjaCcsXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWNsZWFyLWJ1dHRvbl0nOiAnY2xlYXInLFxuXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PUNTVi1zZXR0aW5ncy1idXR0b25dJzogJ3Nob3dDU1ZTZXR0aW5ncycsXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PUNTVi1zZXR0aW5ncy1jbG9zZV0nOiAnY2xvc2VDU1ZTZXR0aW5ncycsXG5cbiAgICAnY2xpY2sgW2RhdGEtaG9va349c2Vzc2lvbi1jbG91ZC11cGxvYWRdJzogJ3VwbG9hZFNlc3Npb25aZW5vZG8nLFxuICAgICdjbGljayBbZGF0YS1ob29rfj1zZXNzaW9uLWNsb3VkLWRvd25sb2FkXSc6ICdzaG93Q2xvdWREb3dubG9hZEluZm8nLFxuICAgICdjbGljayBbZGF0YS1ob29rfj1zZXNzaW9uLWRvd25sb2FkXSc6ICdleHBvcnRTZXNzaW9uJyxcbiAgICAnY2hhbmdlIFtkYXRhLWhvb2t+PXNlc3Npb24tdXBsb2FkLWlucHV0XSc6ICdpbXBvcnRMb2NhbFNlc3Npb24nLFxuICAgICdjbGljayBbZGF0YS1ob29rfj1kYXRhLWRvd25sb2FkXSc6ICdleHBvcnREYXRhJyxcblxuICAgICdjbGljayBbZGF0YS1ob29rfj1zZXNzaW9uLWRvd25sb2FkLWNsb3VkLWNsb3NlLWJ1dHRvbl0nOiAnY2xvc2VDbG91ZERvd25sb2FkSW5mbycsXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PXNlc3Npb24tZG93bmxvYWQtY2xvdWQtZ2V0XSc6ICdnZXRSZW1vdGVTZXNzaW9uJyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349c2Vzc2lvbi11cGxvYWQtY2xvdWQtY2xvc2UtYnV0dG9uXSc6ICdjbG9zZUNsb3VkVXBsb2FkSW5mbycsXG5cbiAgICAnY2xpY2sgI0NTVi1zZXBhcmF0b3ItY29tbWEnOiBmdW5jdGlvbiAoKSB7IGFwcC5DU1ZTZXBhcmF0b3IgPSAnLCc7IH0sXG4gICAgJ2NsaWNrICNDU1Ytc2VwYXJhdG9yLWNvbG9uJzogZnVuY3Rpb24gKCkgeyBhcHAuQ1NWU2VwYXJhdG9yID0gJzonOyB9LFxuICAgICdjbGljayAjQ1NWLXNlcGFyYXRvci1zZW1pY29sb24nOiBmdW5jdGlvbiAoKSB7IGFwcC5DU1ZTZXBhcmF0b3IgPSAnOyc7IH0sXG4gICAgJ2NsaWNrICNDU1Ytc2VwYXJhdG9yLXBpcGUnOiBmdW5jdGlvbiAoKSB7IGFwcC5DU1ZTZXBhcmF0b3IgPSAnfCc7IH0sXG4gICAgJ2NsaWNrICNDU1Ytc2VwYXJhdG9yLXRhYic6IGZ1bmN0aW9uICgpIHsgYXBwLkNTVlNlcGFyYXRvciA9ICdcXHQnOyB9LFxuICAgICdjbGljayAjQ1NWLXNlcGFyYXRvci1vdGhlcic6IGZ1bmN0aW9uICgpIHsgdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1ob29rfj1cIkNTVi1zZXBhcmF0b3Itb3RoZXItaW5wdXRcIl0nKS5mb2N1cygpOyB9LFxuICAgICdjbGljayAjQ1NWLWhlYWRlci1jb2x1bW5zJzogZnVuY3Rpb24gKCkgeyBhcHAuQ1NWSGVhZGVycyA9IHRoaXMucXVlcnkoJyNDU1YtaGVhZGVyLWNvbHVtbnMnKS5jaGVja2VkOyB9LFxuICAgICdjbGljayAjQ1NWLXF1b3RlLXNpbmdsZSc6IGZ1bmN0aW9uICgpIHsgYXBwLkNTVlF1b3RlID0gJ1xcJyc7IH0sXG4gICAgJ2NsaWNrICNDU1YtcXVvdGUtZG91YmxlJzogZnVuY3Rpb24gKCkgeyBhcHAuQ1NWUXVvdGUgPSAnXCInOyB9LFxuICAgICdjbGljayAjQ1NWLXF1b3RlLW5vbmUnOiBmdW5jdGlvbiAoKSB7IGFwcC5DU1ZRdW90ZSA9IG51bGw7IH0sXG4gICAgJ2NsaWNrICNDU1YtY29tbWVudC1wb3VuZCc6IGZ1bmN0aW9uICgpIHsgYXBwLkNTVkNvbW1lbnQgPSAnIyc7IH0sXG4gICAgJ2NsaWNrICNDU1YtY29tbWVudC1leGNsYW1hdGlvbic6IGZ1bmN0aW9uICgpIHsgYXBwLkNTVkNvbW1lbnQgPSAnISc7IH0sXG4gICAgJ2NsaWNrICNDU1YtY29tbWVudC1zbGFzaCc6IGZ1bmN0aW9uICgpIHsgYXBwLkNTVkNvbW1lbnQgPSAnLyc7IH0sXG4gICAgJ2NsaWNrICNDU1YtY29tbWVudC1kYXNoJzogZnVuY3Rpb24gKCkgeyBhcHAuQ1NWQ29tbWVudCA9ICctJzsgfSxcbiAgICAnY2xpY2sgI0NTVi1jb21tZW50LXBlcmNlbnQnOiBmdW5jdGlvbiAoKSB7IGFwcC5DU1ZDb21tZW50ID0gJyUnOyB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIC8vIFJlc2V0IHRoZSBDU1YgcGFyc2luZyBkaWFsb2cuXG4gICAgLy8gTk9URTogd2UgY291bGQgZG8gdGhpcyB2aWEgYmluZGluZ3MsIGJ1dCB0aGlzIGlzIGVhc2llciAobGVzcyBjb2RlKVxuICAgIHRoaXMucmVuZGVyV2l0aFRlbXBsYXRlKHRoaXMpO1xuICAgIHRoaXMucXVlcnkoJyNDU1YtaGVhZGVyLWNvbHVtbnMnKS5jaGVja2VkID0gYXBwLkNTVkhlYWRlcnM7XG5cbiAgICBpZiAoYXBwLkNTVlNlcGFyYXRvciA9PT0gJywnKSB7XG4gICAgICB0aGlzLnF1ZXJ5KCcjQ1NWLXNlcGFyYXRvci1jb21tYScpLmNoZWNrZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYXBwLkNTVlNlcGFyYXRvciA9PT0gJzonKSB7XG4gICAgICB0aGlzLnF1ZXJ5KCcjQ1NWLXNlcGFyYXRvci1jb2xvbicpLmNoZWNrZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYXBwLkNTVlNlcGFyYXRvciA9PT0gJzsnKSB7XG4gICAgICB0aGlzLnF1ZXJ5KCcjQ1NWLXNlcGFyYXRvci1zZW1pY29sb24nKS5jaGVja2VkID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGFwcC5DU1ZTZXBhcmF0b3IgPT09ICd8Jykge1xuICAgICAgdGhpcy5xdWVyeSgnI0NTVi1zZXBhcmF0b3ItcGlwZScpLmNoZWNrZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYXBwLkNTVlNlcGFyYXRvciA9PT0gJ1xcdCcpIHtcbiAgICAgIHRoaXMucXVlcnkoJyNDU1Ytc2VwYXJhdG9yLXRhYicpLmNoZWNrZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChhcHAuQ1NWUXVvdGUgPT09ICdcIicpIHtcbiAgICAgIHRoaXMucXVlcnkoJyNDU1YtcXVvdGUtZG91YmxlJykuY2hlY2tlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChhcHAuQ1NWUXVvdGUgPT09ICdcXCcnKSB7XG4gICAgICB0aGlzLnF1ZXJ5KCcjQ1NWLXF1b3RlLXNpbmdsZScpLmNoZWNrZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYXBwLkNTVlF1b3RlID09PSBudWxsKSB7XG4gICAgICB0aGlzLnF1ZXJ5KCcjQ1NWLXF1b3RlLW5vbmUnKS5jaGVja2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoYXBwLkNTVkNvbW1lbnQgPT09ICcjJykge1xuICAgICAgdGhpcy5xdWVyeSgnI0NTVi1jb21tZW50LXBvdW5kJykuY2hlY2tlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChhcHAuQ1NWQ29tbWVudCA9PT0gJyEnKSB7XG4gICAgICB0aGlzLnF1ZXJ5KCcjQ1NWLWNvbW1lbnQtZXhjbGFtYXRpb24nKS5jaGVja2VkID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGFwcC5DU1ZDb21tZW50ID09PSAnLycpIHtcbiAgICAgIHRoaXMucXVlcnkoJyNDU1YtY29tbWVudC1zbGFzaCcpLmNoZWNrZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYXBwLkNTVkNvbW1lbnQgPT09ICctJykge1xuICAgICAgdGhpcy5xdWVyeSgnI0NTVi1jb21tZW50LWRhc2gnKS5jaGVja2VkID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGFwcC5DU1ZDb21tZW50ID09PSAncGVyY2VudCcpIHtcbiAgICAgIHRoaXMucXVlcnkoJyNDU1YtY29tbWVudC1wZXJjZW50JykuY2hlY2tlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gbWRsIGhvb2sgdXBzXG4gICAgdGhpcy5vbmNlKCdyZW1vdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcHAubWUuZGF0YXNldHMub2ZmKCdhZGQnKTtcbiAgICB9KTtcbiAgICBhcHAubWUuZGF0YXNldHMub24oJ2FkZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5jb21wb25lbnRIYW5kbGVyLnVwZ3JhZGVEb20oKTtcbiAgICB9KTtcbiAgICBhcHAuc2Vzc2lvbnMub24oJ2FkZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5jb21wb25lbnRIYW5kbGVyLnVwZ3JhZGVEb20oKTtcbiAgICB9KTtcbiAgfSxcbiAgc2Vzc2lvbjoge1xuICAgIG5lZWRsZTogJ3N0cmluZycsXG4gICAgc2hvd1NlYXJjaDogJ2Jvb2xlYW4nXG4gIH0sXG4gIHN1YnZpZXdzOiB7XG4gICAgZGF0YXNldHM6IHtcbiAgICAgIGhvb2s6ICdkYXRhc2V0LWl0ZW1zJyxcbiAgICAgIGNvbnN0cnVjdG9yOiBEYXRhc2V0Q29sbGVjdGlvblZpZXdcbiAgICB9LFxuICAgIHNlc3Npb25zOiB7XG4gICAgICBob29rOiAnc2Vzc2lvbi1pdGVtcycsXG4gICAgICBjb25zdHJ1Y3RvcjogU2Vzc2lvbkNvbGxlY3Rpb25WaWV3XG4gICAgfVxuICB9LFxuICBiaW5kaW5nczoge1xuICAgICdtb2RlbC5pc0xvY2tlZERvd24nOiB7XG4gICAgICB0eXBlOiAndG9nZ2xlJyxcbiAgICAgIGhvb2s6ICdhZGQtZGF0YXNldHMtZGl2JyxcbiAgICAgIGludmVydDogdHJ1ZVxuICAgIH0sXG4gICAgJ3Nob3dTZWFyY2gnOiB7XG4gICAgICB0eXBlOiAndG9nZ2xlJyxcbiAgICAgIGhvb2s6ICdzZWFyY2gtYmFyJ1xuICAgIH0sXG4gICAgJ25lZWRsZSc6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAnZGF0YXNldC1zZWxlY3RvcidcbiAgICB9XG4gIH0sXG4gIGlucHV0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGVjdCA9IHRoaXMuZWwucXVlcnlTZWxlY3RvcignW2RhdGEtaG9va349XCJkYXRhc2V0LXNlbGVjdG9yXCJdJyk7XG4gICAgdGhpcy5uZWVkbGUgPSBzZWxlY3QudmFsdWU7XG5cbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9LFxuICBzZXRPdGhlclNlcGVyYXRvcjogZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxlY3QgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWhvb2t+PVwiQ1NWLXNlcGFyYXRvci1vdGhlci1pbnB1dFwiXScpO1xuICAgIGFwcC5DU1ZTZXBhcmF0b3IgPSBzZWxlY3QudmFsdWU7XG4gIH0sXG4gIHNlYXJjaDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2hvd1NlYXJjaCA9ICF0aGlzLnNob3dTZWFyY2g7XG4gICAgaWYgKHRoaXMuc2hvd1NlYXJjaCkge1xuICAgICAgdGhpcy5xdWVyeUJ5SG9vaygnZGF0YXNldC1zZWxlY3RvcicpLmZvY3VzKCk7XG4gICAgfVxuICB9LFxuICBjbGVhcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMubmVlZGxlID0gJyc7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gYnVpbGQgcmVnZXhwIGZvciBzZWFyY2hpbmdcbiAgICB0cnkge1xuICAgICAgdmFyIHJlZ2V4cCA9IG5ldyBSZWdFeHAodGhpcy5uZWVkbGUsICdpJyk7IC8vIGNhc2UgaW5zZW5zaXRpdmUgc2VhcmNoXG5cbiAgICAgIC8vIHNlYXJjaCB0aHJvdWdoIGNvbGxlY3Rpb24sIGNoZWNrIGJvdGggbmFtZSBhbmQgZGVzY3JpcHRpb25cbiAgICAgIHRoaXMubW9kZWwuZGF0YXNldHMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgaGF5ID0gZS5uYW1lICsgZS5VUkwgKyBlLmRlc2NyaXB0aW9uO1xuICAgICAgICBlLnNob3cgPSByZWdleHAudGVzdChoYXkudG9Mb3dlckNhc2UoKSk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgIH1cbiAgfSxcblxuICBjb25uZWN0VG9TZXJ2ZXI6IGZ1bmN0aW9uICgpIHtcbiAgICBhcHAubWUgPSBuZXcgU3BvdCh7XG4gICAgICBzZXNzaW9uVHlwZTogJ3NlcnZlcidcbiAgICB9KTtcbiAgICBhcHAubWVzc2FnZSh7XG4gICAgICB0ZXh0OiAnQ29ubmVjdGluZyB0byBzZXJ2ZXIgYXQgJyArIHByb2Nlc3MuZW52LkRCX1NFUlZFUiArIFwiOlwiICsgcHJvY2Vzcy5lbnYuREJfU0VSVkVSX1BPUlQsXG4gICAgICB0eXBlOiAnb2snXG4gICAgfSk7XG4gICAgYXBwLm1lLmNvbm5lY3RUb1NlcnZlcigpO1xuICAgIGFwcC5tZS5zb2NrZXQuZW1pdCgnZ2V0RGF0YXNldHMnKTtcblxuICAgIGFwcC5uYXZpZ2F0ZSgnaG9tZScpO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgYXBwLm5hdmlnYXRlKCdkYXRhc2V0cycpO1xuICAgIH0sIDEwMCk7XG4gIH0sXG4gIHNob3dDU1ZTZXR0aW5nczogZnVuY3Rpb24gKCkge1xuICAgIHZhciBkaWFsb2cgPSB0aGlzLnF1ZXJ5QnlIb29rKCdDU1Ytc2V0dGluZ3MnKTtcbiAgICBkaWFsb2dQb2x5ZmlsbC5yZWdpc3RlckRpYWxvZyhkaWFsb2cpO1xuICAgIGRpYWxvZy5zaG93TW9kYWwoKTtcbiAgfSxcbiAgY2xvc2VDU1ZTZXR0aW5nczogZnVuY3Rpb24gKCkge1xuICAgIHZhciBkaWFsb2cgPSB0aGlzLnF1ZXJ5QnlIb29rKCdDU1Ytc2V0dGluZ3MnKTtcbiAgICBkaWFsb2dQb2x5ZmlsbC5yZWdpc3RlckRpYWxvZyhkaWFsb2cpO1xuICAgIGRpYWxvZy5jbG9zZSgpO1xuICB9LFxuICBzaG93Q2xvdWRVcGxvYWRJbmZvOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRpYWxvZyA9IHRoaXMucXVlcnlCeUhvb2soJ3Nlc3Npb24tdXBsb2FkLWNsb3VkJyk7XG4gICAgZGlhbG9nUG9seWZpbGwucmVnaXN0ZXJEaWFsb2coZGlhbG9nKTtcbiAgICBkaWFsb2cuc2hvd01vZGFsKCk7XG4gIH0sXG4gIGNsb3NlQ2xvdWRVcGxvYWRJbmZvOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRpYWxvZyA9IHRoaXMucXVlcnlCeUhvb2soJ3Nlc3Npb24tdXBsb2FkLWNsb3VkJyk7XG4gICAgZGlhbG9nUG9seWZpbGwucmVnaXN0ZXJEaWFsb2coZGlhbG9nKTtcbiAgICBkaWFsb2cuY2xvc2UoKTtcbiAgfSxcblxuICBzaG93Q2xvdWREb3dubG9hZEluZm86IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZGlhbG9nID0gdGhpcy5xdWVyeUJ5SG9vaygnc2Vzc2lvbi1kb3dubG9hZC1jbG91ZCcpO1xuICAgIGRpYWxvZ1BvbHlmaWxsLnJlZ2lzdGVyRGlhbG9nKGRpYWxvZyk7XG4gICAgZGlhbG9nLnNob3dNb2RhbCgpO1xuICB9LFxuICBjbG9zZUNsb3VkRG93bmxvYWRJbmZvOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRpYWxvZyA9IHRoaXMucXVlcnlCeUhvb2soJ3Nlc3Npb24tZG93bmxvYWQtY2xvdWQnKTtcbiAgICBkaWFsb2dQb2x5ZmlsbC5yZWdpc3RlckRpYWxvZyhkaWFsb2cpO1xuICAgIGRpYWxvZy5jbG9zZSgpO1xuICB9LFxuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBpbXBvcnRKU09OOiBmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS5sb2coJ2NhbGxlZCBmdW5jdGlvbiBpbXBvcnRKU09OJyk7XG4gICAgYXBwLmltcG9ydEpTT04oKTtcbiAgfSxcblxuICBpbXBvcnRDU1Y6IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zb2xlLmxvZygnY2FsbGVkIGZ1bmN0aW9uIGltcG9ydENTVicpO1xuICAgIGFwcC5pbXBvcnRDU1YoKTtcbiAgfSxcblxuICBnZXRSZW1vdGVTZXNzaW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS5sb2coJ2NhbGxlZCBmdW5jdGlvbiBnZXRSZW1vdGVTZXNzaW9uJyk7XG4gICAgdmFyIHNlc3Npb25VcmwgPSB0aGlzLnF1ZXJ5QnlIb29rKCdzZXNzaW9uLWltcG9ydC1yZW1vdGUtbGluaycpLnZhbHVlO1xuXG4gICAgLy8gVE9ETzogdmVyaWZ5IHRoZSBsaW5rXG4gICAgaWYgKHNlc3Npb25VcmwgIT09ICcnKSB7XG4gICAgICBjb25zb2xlLmxvZygnRG93bmxvYWRpbmc6Jywgc2Vzc2lvblVybCk7XG4gICAgICB0aGlzLmNsb3NlQ2xvdWREb3dubG9hZEluZm8oKTtcblxuICAgICAgYXBwLm1lc3NhZ2Uoe1xuICAgICAgICB0ZXh0OiAnRG93bmxvYWRpbmcgdGhlIHNlc3Npb24uIFBsZWFzZSB3YWl0LicsXG4gICAgICAgIHR5cGU6ICdvaydcbiAgICAgIH0pO1xuXG4gICAgICBhcHAuaW1wb3J0UmVtb3RlU2Vzc2lvbihzZXNzaW9uVXJsKTtcbiAgICB9XG4gIH0sXG5cblxuICBleHBvcnRTZXNzaW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS5sb2coJ2NhbGxlZCBmdW5jdGlvbiBleHBvcnRTZXNzaW9uJyk7XG4gICAgYXBwLmV4cG9ydFNlc3Npb24oKTtcbiAgfSxcblxuICBleHBvcnREYXRhOiBmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS5sb2coJ2NhbGxlZCBmdW5jdGlvbiBleHBvcnREYXRhJyk7XG4gIH0sXG5cbiAgaW1wb3J0TG9jYWxTZXNzaW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgY29uc29sZS5sb2coJ2NhbGxlZCBmdW5jdGlvbiBpbXBvcnRMb2NhbFNlc3Npb24nKTtcbiAgICBhcHAuaW1wb3J0TG9jYWxTZXNzaW9uKCk7XG4gIH0sXG4gIHVwbG9hZFNlc3Npb25aZW5vZG86IGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciB0aGF0ID0gdGhpcztcblxuICAgIHZhciBqc29uID0gYXBwLm1lLnRvSlNPTigpO1xuICAgIGlmIChhcHAubWUuc2Vzc2lvblR5cGUgPT09ICdjbGllbnQnKSB7XG4gICAgICBhcHAubWUuZGF0YXNldHMuZm9yRWFjaChmdW5jdGlvbiAoZGF0YXNldCwgaSkge1xuICAgICAgICBqc29uLmRhdGFzZXRzW2ldLmRhdGEgPSBkYXRhc2V0LmRhdGE7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgc2Vzc2lvbkRhdGEgPSBuZXcgd2luZG93LkJsb2IoW0pTT04uc3RyaW5naWZ5KGpzb24pXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ30pO1xuICAgIHZhciBzaGFyZUxpbmsgPSB0aGlzLnF1ZXJ5QnlIb29rKCdzZXNzaW9uLXVwbG9hZC1jbG91ZC1saW5rJyk7XG4gICAgdmFyIHNoYXJlRGlyZWN0TGluayA9IHRoaXMucXVlcnlCeUhvb2soJ3Nlc3Npb24tdXBsb2FkLWNsb3VkLWxpbmstZGlyZWN0Jyk7XG5cbiAgICB2YXIgZmlsZWZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgdmFyIHplbm9kb19pZCA9IG51bGw7XG5cbiAgICBmaWxlZm9ybURhdGEuYXBwZW5kKFwiZmlsZVwiLCBzZXNzaW9uRGF0YSwgXCJzZXNzaW9uZmlsZS5qc29uXCIpO1xuXG4gICAgdmFyIG1ldGFkYXRhID0gIHtcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICd0aXRsZSc6ICdTUE9UIFNlc3Npb24nLFxuICAgICAgICAndXBsb2FkX3R5cGUnOiAnZGF0YXNldCcsXG4gICAgICAgICdjcmVhdG9ycyc6IFt7J25hbWUnOiAnRmFydWssIERpYmxlbicsXG4gICAgICAgICdhZmZpbGlhdGlvbic6ICdOTGVTQyd9XVxuICAgICAgfVxuICAgIH07XG4gICAgXG4gICAgLy8gY29uc29sZS5sb2coXCJDcmVhdGluZyBhIERPSVwiKTtcbiAgICBhcHAuemVub2RvUmVxdWVzdCh7XG4gICAgICB1cmxfYWRkaXRpb246XCJcIixcbiAgICAgIHJlcXVlc3RUeXBlOlwiZG9pXCIsXG4gICAgICBib2R5RGF0YTp7fVxuICAgIH0pLnRoZW4oZnVuY3Rpb24oZG9pX2RhdGEpIHtcblxuICAgICAgLy8gY29uc29sZS5sb2coXCJkb2lfZGF0YTogXCIsIGRvaV9kYXRhKTtcbiAgICAgIHplbm9kb19pZCA9IGRvaV9kYXRhLmlkO1xuICAgICAgLy8gY29uc29sZS5sb2coXCJaZW5vZG8gaWQ6XCIsIHplbm9kb19pZCk7XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiVXBsb2FkaW5nIGZpbGVcIik7XG4gICAgICBhcHAuemVub2RvUmVxdWVzdCh7XG4gICAgICAgIHVybF9hZGRpdGlvbjp6ZW5vZG9faWQgKyBcIi9maWxlc1wiLCBcbiAgICAgICAgcmVxdWVzdFR5cGU6XCJ1cGxvYWRcIiwgXG4gICAgICAgIGJvZHlEYXRhOmZpbGVmb3JtRGF0YVxuICAgICAgfSkudGhlbihmdW5jdGlvbih1cGxvYWRfZGF0YSkge1xuICAgICAgXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwidXBsb2FkX2RhdGE6IFwiLCB1cGxvYWRfZGF0YSk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZGlyZWN0IGxpbms6IFwiLCB1cGxvYWRfZGF0YS5saW5rcy5kb3dubG9hZCk7XG5cbiAgICAgICAgbWV0YWRhdGEubWV0YWRhdGEgPSB7XG4gICAgICAgICAgLi4ubWV0YWRhdGEubWV0YWRhdGEsXG4gICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJzxwPjxhIGhyZWY9XCInICsgcHJvY2Vzcy5lbnYuUFJPVE9DT0wgKyAnOi8vJyArIHByb2Nlc3MuZW52LkJBU0VfVVJMICsgXCI6XCIgKyBwcm9jZXNzLmVudi5QT1JUICsgJy8jc2Vzc2lvbj0nICsgJ2h0dHBzOi8vc2FuZGJveC56ZW5vZG8ub3JnL3JlY29yZC8nICsgemVub2RvX2lkICsgJy9maWxlcy9zZXNzaW9uZmlsZS5qc29uJyArICdcIj5PcGVuIHdpdGggU1BPVDwvYT48L3A+J1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCc8cD48YSBocmVmPVwiJyArIHByb2Nlc3MuZW52LlBST1RPQ09MICsgJzovLycgKyBwcm9jZXNzLmVudi5CQVNFX1VSTCArIFwiOlwiICsgcHJvY2Vzcy5lbnYuUE9SVCArICcvI3Nlc3Npb249JyArICdodHRwczovL3NhbmRib3guemVub2RvLm9yZy9yZWNvcmQvJyArIHplbm9kb19pZCArICcvZmlsZXMvc2Vzc2lvbmZpbGUuanNvbicgKyAnXCI+T3BlbiB3aXRoIFNQT1Q8L2E+PC9wPicpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlNldHRpbmcgdGhlIG1ldGFkYXRhXCIpO1xuICAgICAgICBhcHAuemVub2RvUmVxdWVzdCh7XG4gICAgICAgICAgdXJsX2FkZGl0aW9uOiB6ZW5vZG9faWQsXG4gICAgICAgICAgcmVxdWVzdFR5cGU6IFwibWV0YVwiLFxuICAgICAgICAgIGJvZHlEYXRhOiBtZXRhZGF0YVxuICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKG1ldGFkYXRhX2RhdGEpIHtcblxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibWV0YWRhdGFfZGF0YTogXCIsIG1ldGFkYXRhX2RhdGEpO1xuXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXCJQdWJsaXNoaW5nLi4uXCIpO1xuICAgICAgICAgIGFwcC56ZW5vZG9SZXF1ZXN0KHtcbiAgICAgICAgICAgIHVybF9hZGRpdGlvbjogemVub2RvX2lkICsgXCIvYWN0aW9ucy9wdWJsaXNoXCIsIFxuICAgICAgICAgICAgcmVxdWVzdFR5cGU6IFwicHVibGlzaFwiLCBcbiAgICAgICAgICAgIGJvZHlEYXRhOiB7fVxuICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24ocHVibGlzaF9kYXRhKSB7XG4gIFxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJwdWJsaXNoX2RhdGE6IFwiLCBwdWJsaXNoX2RhdGEpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJsaW5rczogXCIsIHB1Ymxpc2hfZGF0YS5saW5rcy5yZWNvcmRfaHRtbCk7XG4gICAgICAgICAgICBzaGFyZUxpbmsudmFsdWUgPSBwdWJsaXNoX2RhdGEubGlua3MucmVjb3JkX2h0bWw7XG4gICAgICAgICAgICBzaGFyZURpcmVjdExpbmsudmFsdWUgPSBwcm9jZXNzLmVudi5QUk9UT0NPTCArICc6Ly8nICsgcHJvY2Vzcy5lbnYuQkFTRV9VUkwgKyBcIjpcIiArIHByb2Nlc3MuZW52LlBPUlQgKyAnLyNzZXNzaW9uPScgKyAnaHR0cHM6Ly9zYW5kYm94Lnplbm9kby5vcmcvcmVjb3JkLycgKyB6ZW5vZG9faWQgKyAnL2ZpbGVzL3Nlc3Npb25maWxlLmpzb24nO1xuICAgICAgICAgICAgdGhhdC5zaG93Q2xvdWRVcGxvYWRJbmZvKCk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3JfcHVibGlzaCl7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yX3B1Ymxpc2gpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yX21ldGFkYXRhKXtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yX21ldGFkYXRhKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yX3VwbG9hZCl7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JfdXBsb2FkKTtcbiAgICAgIH0pO1xuXG4gICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3JfZG9pKXtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JfZG9pKTtcbiAgICB9KTsgXG5cbiAgfSxcblxuXG5cbn0pO1xuXG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBckNBO0FBdUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFMQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFWQTtBQWVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFIQTtBQURBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUVBO0FBRUE7QUFHQTtBQUNBO0FBTkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFqWEE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7bdf\n")},"8ab4":function(module,exports,__webpack_require__){eval("var PageView = __webpack_require__(/*! ./base */ \"b966\");\n\nvar templates = __webpack_require__(/*! ../templates */ \"4324\");\n\nvar app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nmodule.exports = PageView.extend({\n  initialize: function initialize() {\n    this.pageName = 'home';\n    this.helpTemplate = '';\n    app.detectMobile();\n    app.startWelcome();\n  },\n  pageTitle: 'Home',\n  template: templates.home,\n  events: {\n    'click [data-hook~=demo-session]': 'demoSessionOnline'\n  },\n  bindings: {},\n  renderContent: function renderContent() {},\n  demoSessionOnline: function demoSessionOnline() {\n    app.busy({\n      enable: true\n    });\n    app.importRemoteSession('https://raw.githubusercontent.com/NLeSC/spot/master/dist/demo.json');\n    app.busy({\n      enable: false\n    });\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOGFiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9ob21lLmpzPzgwNzMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFBhZ2VWaWV3ID0gcmVxdWlyZSgnLi9iYXNlJyk7XG52YXIgdGVtcGxhdGVzID0gcmVxdWlyZSgnLi4vdGVtcGxhdGVzJyk7XG52YXIgYXBwID0gcmVxdWlyZSgnYW1wZXJzYW5kLWFwcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhZ2VWaWV3LmV4dGVuZCh7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnBhZ2VOYW1lID0gJ2hvbWUnO1xuICAgIHRoaXMuaGVscFRlbXBsYXRlID0gJyc7XG4gICAgYXBwLmRldGVjdE1vYmlsZSgpO1xuICAgIGFwcC5zdGFydFdlbGNvbWUoKTtcbiAgfSxcbiAgcGFnZVRpdGxlOiAnSG9tZScsXG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMuaG9tZSxcbiAgZXZlbnRzOiB7XG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWRlbW8tc2Vzc2lvbl0nOiAnZGVtb1Nlc3Npb25PbmxpbmUnXG4gIH0sXG4gIGJpbmRpbmdzOiB7XG5cbiAgfSxcblxuICByZW5kZXJDb250ZW50OiBmdW5jdGlvbiAoKSB7XG5cbiAgfSxcbiAgZGVtb1Nlc3Npb25PbmxpbmU6IGZ1bmN0aW9uICgpIHtcbiAgICBhcHAuYnVzeSh7ZW5hYmxlOiB0cnVlfSk7XG4gICAgYXBwLmltcG9ydFJlbW90ZVNlc3Npb24oJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9OTGVTQy9zcG90L21hc3Rlci9kaXN0L2RlbW8uanNvbicpO1xuICAgIGFwcC5idXN5KHtlbmFibGU6IGZhbHNlfSk7fVxuXG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFJQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXRCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8ab4\n")},"8f0f":function(module,exports,__webpack_require__){eval("/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n/**\n * @classdesc network chart (sigma.js)\n * @class NetworkChart\n * @augments BaseChart\n */\nvar BaseChart = __webpack_require__(/*! ./base-chart */ \"6339\");\n\nmodule.exports = BaseChart.extend({\n  initialize: function initialize() {\n    this.slots.reset([{\n      description: 'From',\n      type: 'partition',\n      rank: 1,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'To',\n      type: 'partition',\n      rank: 2,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Relation',\n      type: 'partition',\n      rank: 3,\n      required: false,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }]);\n  },\n  sigmaConfig: function sigmaConfig() {\n    return {\n      drawEdges: true,\n      labelSize: 'proportional'\n    };\n  }\n});\n}.call(window));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOGYwZi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL21vZGVscy9zaWdtYS5qcz9iMDEwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGNsYXNzZGVzYyBuZXR3b3JrIGNoYXJ0IChzaWdtYS5qcylcbiAqIEBjbGFzcyBOZXR3b3JrQ2hhcnRcbiAqIEBhdWdtZW50cyBCYXNlQ2hhcnRcbiAqL1xuXG52YXIgQmFzZUNoYXJ0ID0gcmVxdWlyZSgnLi9iYXNlLWNoYXJ0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gQmFzZUNoYXJ0LmV4dGVuZCh7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNsb3RzLnJlc2V0KFtcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdGcm9tJyxcbiAgICAgICAgdHlwZTogJ3BhcnRpdGlvbicsXG4gICAgICAgIHJhbms6IDEsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBzdXBwb3J0ZWRGYWNldHM6IFsnY2F0ZWdvcmlhbCcsICdkYXRldGltZScsICdkdXJhdGlvbicsICdjb250aW51b3VzJywgJ3RleHQnXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdUbycsXG4gICAgICAgIHR5cGU6ICdwYXJ0aXRpb24nLFxuICAgICAgICByYW5rOiAyLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NhdGVnb3JpYWwnLCAnZGF0ZXRpbWUnLCAnZHVyYXRpb24nLCAnY29udGludW91cycsICd0ZXh0J11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUmVsYXRpb24nLFxuICAgICAgICB0eXBlOiAncGFydGl0aW9uJyxcbiAgICAgICAgcmFuazogMyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBzdXBwb3J0ZWRGYWNldHM6IFsnY2F0ZWdvcmlhbCcsICdkYXRldGltZScsICdkdXJhdGlvbicsICdjb250aW51b3VzJywgJ3RleHQnXVxuICAgICAgfVxuICAgIF0pO1xuICB9LFxuICBzaWdtYUNvbmZpZzogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkcmF3RWRnZXM6IHRydWUsXG4gICAgICBsYWJlbFNpemU6ICdwcm9wb3J0aW9uYWwnXG4gICAgfTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQS9CQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///8f0f\n")},9218:function(module,exports,__webpack_require__){eval("function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar Spot = __webpack_require__(/*! spot-framework */ \"3b07\");\n\nvar app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar Router = __webpack_require__(/*! ./router */ \"aa00\");\n\nvar MainView = __webpack_require__(/*! ./pages/main */ \"3f86\");\n\nvar DatasetsView = __webpack_require__(/*! ./pages/datasets */ \"7bdf\");\n\nvar domReady = __webpack_require__(/*! domready */ \"3ca4\");\n\nvar widgetFactory = __webpack_require__(/*! ./widgets/widget-factory */ \"f2bc\");\n\nvar viewFactory = __webpack_require__(/*! ./widgets/view-factory */ \"a6e8\");\n\nvar Collection = __webpack_require__(/*! ampersand-collection */ \"7bd3\");\n\nvar SessionModel = __webpack_require__(/*! ./pages/datasets/session-model */ \"bdff\");\n\nvar dialogPolyfill = __webpack_require__(/*! dialog-polyfill */ \"5c00\");\n\nvar Help = __webpack_require__(/*! intro.js */ \"0444\");\n\nvar templates = __webpack_require__(/*! ./templates */ \"4324\");\n\nvar csv = __webpack_require__(/*! csv */ \"00a7\");\n\nvar $ = __webpack_require__(/*! jquery */ \"802c\");\n\n__webpack_require__(/*! babel-polyfill */ \"a26e\");\n\n__webpack_require__(/*! mdl */ \"9d69\");\n\nvar sessionCollection = Collection.extend({\n  mainIndex: 'id',\n  indexes: ['name'],\n  model: SessionModel\n}); // attach our app to `window` so we can\n// easily access it from the console.\n\nwindow.app = app; // Extends our main app singleton\n\napp.extend({\n  /**\n   * [fullscreenMode description]\n   * @type {Boolean}\n   */\n  fullscreenMode: false,\n\n  /**\n   * [demoSession description]\n   * @type {Boolean}\n   */\n  demoSession: false,\n\n  /**\n   * [mobileBrowser description]\n   * @type {Boolean}\n   */\n  mobileBrowser: false,\n\n  /**\n   * [me description]\n   * @type {Spot}\n   */\n  me: new Spot(),\n\n  /**\n   * [widgetFactory description]\n   * @type {any}\n   */\n  widgetFactory: widgetFactory,\n\n  /**\n   * [viewFactory description]\n   * @type {any}\n   */\n  viewFactory: viewFactory,\n\n  /**\n   * [router description]\n   * @type {Router}\n   */\n  router: new Router(),\n\n  /**\n   * [CSVSeparator description]\n   * @type {String}\n   */\n  CSVSeparator: ',',\n\n  /**\n   * [CSVHeaders description]\n   * @type {Boolean}\n   */\n  CSVHeaders: true,\n\n  /**\n   * [CSVQuote description]\n   * @type {String}\n   */\n  CSVQuote: '\"',\n\n  /**\n   * [CSVComment description]\n   * @type {String}\n   */\n  CSVComment: '#',\n  helper: {\n    enabled: false,\n    instance: new Help()\n  },\n\n  /**\n   * [sessions description]\n   * @type {any}\n   */\n  sessions: new sessionCollection(),\n\n  /**\n   * This is where it all starts\n   */\n  init: function init() {\n    // Create and attach our main view\n    this.mainView = new MainView({\n      model: this.me,\n      el: document.body\n    }); // this kicks off our backbutton tracking (browser history)\n    // and will cause the first matching handler in the router\n    // to fire.\n\n    this.router.history.start({\n      root: '/',\n      pushState: true,\n      hashChange: true\n    });\n  },\n\n  /**\n   * This is a helper for navigating around the app.\n     this gets called by a global click handler that handles\n     all the <a> tags in the app.\n     it expects a url pathname for example: \"/costello/settings\"\n   * @param  {any} page [description]\n   */\n  navigate: function navigate(page) {\n    // clean all help items before navigating to new page\n    app.stopHelp();\n    var url = page.charAt(0) === '/' ? page.slice(1) : page;\n    this.router.history.navigate(url, {\n      trigger: true\n    });\n  },\n\n  /**\n   * [description]\n   * @param  {any} percentage [description]\n   */\n  progress: function progress(percentage) {\n    var progressBar = document.getElementById('progress-bar');\n    progressBar.MaterialProgress.setProgress(percentage);\n    progressBar.style.display = 'inherit';\n  },\n\n  /**\n   * [description]\n   * @param  {boolean} status [description]\n   */\n  busy: function busy(callBack) {\n    var that = this;\n    var dialog = document.getElementById('main-dialog');\n    dialogPolyfill.registerDialog(dialog);\n    console.log(dialog);\n    dialog.open = !dialog.open;\n    console.log(dialog);\n  },\n\n  /**\n   * [description]\n   * @param  {any} options [description]\n   */\n  message: function message(options) {\n    var snackbarContainer = document.getElementById('snack-bar');\n    var snackData = {\n      message: options.text\n    }; // BUGFIX: during app initialization, the snackbar is not always ready yet\n\n    if (!snackbarContainer.MaterialSnackbar) {\n      return;\n    }\n\n    var progressBar = document.getElementById('progress-bar');\n    progressBar.style.display = 'none';\n\n    if (options.type === 'error') {\n      console.warn(options.text, options.error);\n      snackData.timeout = 10000; // show error for 10 seconds\n    } else {\n      console.log(options.text);\n      snackData.timeout = 2750;\n    }\n\n    snackbarContainer.MaterialSnackbar.showSnackbar(snackData);\n  },\n\n  /**\n   * [description]\n   */\n  startHelp: function startHelp() {\n    console.log(app.currentPage.helpTemplate);\n    console.log(app.currentPage.helpHints);\n    console.log(app.currentPage.helpSteps);\n\n    if ((!app.currentPage.helpTemplate || app.currentPage.helpTemplate === '') && (!app.currentPage.helpHints || app.currentPage.helpHints() === []) && (!app.currentPage.helpSteps || app.currentPage.helpTemplate === [])) {\n      console.log('No Help item was found for this page! Exiting.');\n      return;\n    }\n\n    console.log(app.helper.enabled);\n\n    if (app.helper.enabled) {\n      console.log('Closing existing help!');\n      app.stopHelp();\n      return;\n    }\n\n    app.helper.enabled = true;\n    console.log(\"app.helper: \", app.helper);\n\n    if (app.currentPage.helpTemplate && app.currentPage.helpTemplate !== '') {\n      console.log(\"Setting intros...\");\n      app.helper.instance.setOptions({\n        steps: [{\n          intro: window[app.currentPage.helpTemplate]()\n        }]\n      });\n    }\n\n    app.helper.instance.setOptions({\n      hints: app.currentPage.helpHints(),\n      steps: app.currentPage.helpSteps()\n    });\n    app.helper.instance.onhintsadded(function () {\n      console.log('all hints added');\n    });\n    app.helper.instance.onhintclick(function (hintElement, item, stepId) {\n      console.log('hint clicked', hintElement, item, stepId);\n    });\n    app.helper.instance.onhintclose(function (stepId) {\n      console.log('hint closed', stepId);\n    });\n    app.helper.instance.addHints();\n    app.helper.instance.showHints(); // app.helper.start();\n  },\n  stopHelp: function stopHelp() {\n    if (app.helper.enabled) {\n      console.log('Closing existing help!'); // app.helper.instance.helper.exit();\n\n      app.helper.instance.hideHints();\n      app.helper.enabled = false;\n      return;\n    }\n  },\n\n  /**\n   * [description]\n   */\n  startWelcome: function startWelcome() {\n    var welcome = Help();\n    welcome.setOption('tooltipClass', 'welcome-dialog');\n    welcome.setOptions({\n      'showStepNumbers': false,\n      'showBullets': false,\n      'showProgress': false,\n      'skipLabel': 'Exit',\n      'doneLabel': 'Start demo',\n      'tooltipPosition': 'auto',\n      steps: [{\n        intro: templates.help.welcome()\n      }]\n    });\n    welcome.onchange(function (targetElement) {\n      if (this._currentStep === this._introItems.length - 1) {\n        $('.introjs-skipbutton').css('color', 'green');\n      }\n    });\n    welcome.oncomplete(function () {\n      window.localStorage.setItem('spotWelcome', 'done');\n      app.message({\n        text: 'Starting the demo session.',\n        type: 'ok'\n      });\n      app.importRemoteSession('https://raw.githubusercontent.com/NLeSC/spot/master/dist/demo.json');\n    }); // add a flag when we exit\n\n    welcome.onexit(function () {\n      window.localStorage.setItem('spotWelcome', 'done');\n    });\n    var spotWelcome = window.localStorage.getItem('spotWelcome') === 'done';\n\n    if (spotWelcome) {// console.log('No need to show welcome dialog again.');\n    } else {\n      console.log('Starting the welcome dialog.');\n      welcome.start();\n    }\n  },\n\n  /**\n   * [description]\n   * @return {boolean} [description]\n   */\n  detectMobile: function detectMobile() {\n    var check = false;\n\n    if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i)) {\n      check = true;\n    } else {\n      check = false;\n    }\n\n    app.mobileBrowser = check;\n    return check;\n  },\n\n  /**\n   * [description]\n   * @return {} [description]\n   */\n  addDatasetToLocalStorage: function addDatasetToLocalStorage(dataset) {\n    console.log('Adding a dataset to the local storage');\n    console.log(dataset);\n    var allDatasets = this.getDatasetsFromLocalStorage(); // allDatasets.forEach(function(dset, index) {\n    //   console.log(\"[\" + index + \"]: \" + dset.id + '  ', dset.name);\n    // });\n\n    allDatasets.push(dataset);\n    localStorage.setItem('datasets', JSON.stringify(allDatasets));\n  },\n\n  /**\n  * [description]\n  * @return {} [description]\n  */\n  removeDatasetFromLocalStorage: function removeDatasetFromLocalStorage(dataset) {\n    console.log('Removing a dataset from the local storage');\n    console.log(dataset);\n    var allDatasets = this.getDatasetsFromLocalStorage();\n    allDatasets.forEach(function (dset, index) {\n      console.log(\"[\" + index + \"]: \" + dset.id + '  ', dset.name);\n      if (dataset.id === dset.id) allDatasets.splice(index, 1);\n    }); // var index = allDatasets.indexOf(dataset);\n    // if (index > -1) {\n    //   allDatasets.splice(index, 1);\n    // }\n\n    localStorage.setItem('datasets', allDatasets);\n  },\n\n  /**\n  * [description]\n  * @return {} [description]\n  */\n  getDatasetsFromLocalStorage: function getDatasetsFromLocalStorage() {\n    console.log('Getting a list of datasets from the local storage');\n    var allDatasets = JSON.parse(localStorage.getItem('datasets') || \"[]\");\n    return allDatasets;\n  },\n\n  /**\n   * [description]\n   * @return {} [description]\n   */\n  addSessionToLocalStorage: function addSessionToLocalStorage(session) {\n    console.log('Adding a session to the local storage');\n    console.log(session);\n    var allSessions = this.getSessionsFromLocalStorage(); // allDatasets.forEach(function(dset, index) {\n    //   console.log(\"[\" + index + \"]: \" + dset.id + '  ', dset.name);\n    // });\n\n    allSessions.push(session);\n    localStorage.setItem('sessions', JSON.stringify(allSessions));\n  },\n\n  /**\n  * [description]\n  * @return {} [description]\n  */\n  removeSessionFromLocalStorage: function removeSessionFromLocalStorage(input_session) {\n    console.log('Removing a session from the local storage');\n    console.log(input_session);\n    var allSessions = this.getSessionsFromLocalStorage();\n    allSessions.forEach(function (sess, index) {\n      console.log(\"[\" + index + \"]: \" + sess.id + '  ', sess.name);\n      if (input_session.id === sess.id) allSessions.splice(index, 1);\n    });\n    localStorage.setItem('sessions', allSessions);\n  },\n\n  /**\n  * [description]\n  * @return {} [description]\n  */\n  getSessionsFromLocalStorage: function getSessionsFromLocalStorage() {\n    console.log('Getting a list of sessions from the local storage');\n    var allSessions = JSON.parse(localStorage.getItem('sessions') || \"[]\");\n    return allSessions;\n  },\n  getCurrentSession: function getCurrentSession() {\n    var json = app.me.toJSON();\n\n    if (app.me.sessionType === 'client') {\n      // for client datasets, also save the data in the session file\n      app.me.datasets.forEach(function (dataset, i) {\n        json.datasets[i].data = dataset.data;\n      });\n    } // json.saveDate = Date().toLocaleString();\n\n\n    var currentSession = json;\n    return currentSession;\n  },\n  saveCurrentSession: function saveCurrentSession() {\n    var currentSession = this.getCurrentSession();\n    this.addSessionToLocalStorage(currentSession);\n  },\n  importRemoteSession: function importRemoteSession(sessionUrl) {\n    // console.log('app.js: Getting the remote session.');\n    var that = this;\n    app.busy({\n      enable: true\n    });\n    var urlParts = sessionUrl.replace('http://', '').replace('https://', '').split(/[/?#]/);\n    var domain = urlParts[0];\n\n    if (domain === \"sandbox.zenodo.org\" || domain === \"zenodo.org\") {\n      // get files using a proxy to fix CORS issues\n      sessionUrl = 'http://localhost:8000/' + sessionUrl;\n    }\n\n    that.zenodoRequest({\n      base_url: sessionUrl,\n      url_addition: \"\",\n      requestType: \"download\",\n      zenodoId: '',\n      fileHash: ''\n    }).then(function (download_data) {\n      // console.log(download_data);\n      app.busy({\n        enable: false\n      });\n      app.message({\n        text: 'Session was imported succesfully',\n        type: 'ok'\n      });\n      app.loadSessionBlob(download_data);\n    }).catch(function (error_download) {\n      app.busy({\n        enable: false\n      });\n      app.message({\n        text: 'Could not import the session',\n        type: 'error',\n        error: ev\n      });\n      console.error(error_download);\n    });\n  },\n\n  /**\n   * [description]\n   * @param  {any} data [description]\n   */\n  loadSessionBlob: function loadSessionBlob(data) {\n    console.log('Loading the session.');\n    app.me = new Spot(data);\n\n    if (data.sessionType === 'server') {\n      app.me.connectToServer(data.address);\n    } else if (data.sessionType === 'client') {\n      // add data from the session file to the dataset\n      data.datasets.forEach(function (d, i) {\n        app.me.datasets.models[i].crossfilter.add(d.data);\n        app.me.datasets.models[i].isActive = false; // we'll turn it on later\n      }); // merge all the data into the app.me.dataview\n      // by toggling the active datasets back on\n\n      data.datasets.forEach(function (d, i) {\n        if (d.isActive) {\n          app.me.toggleDataset(app.me.datasets.models[i]);\n        }\n      });\n    } // and automatically go to the analyze page\n\n\n    app.navigate('/analyze');\n    app.navigate('/datasets');\n    app.navigate('/analyze');\n  },\n  importJSON: function importJSON() {\n    // var fileLoader = this.queryByHook('json-upload-input');\n    var fileLoader = document.getElementById('jsonuploadBtn');\n    var uploadedFile = fileLoader.files[0];\n    var reader = new window.FileReader();\n    var dataURL = fileLoader.files[0].name; // TODO: enforce spot.driver === 'client'\n\n    var dataset = app.me.datasets.add({\n      name: dataURL,\n      URL: dataURL,\n      description: 'uploaded JSON file'\n    });\n\n    reader.onload = function (ev) {\n      app.message({\n        text: 'Processing',\n        type: 'ok'\n      });\n\n      try {\n        dataset.data = JSON.parse(ev.target.result); // automatically analyze dataset\n\n        dataset.scan();\n        dataset.facets.forEach(function (facet, i) {\n          if (i < 20) {\n            facet.isActive = true;\n\n            if (facet.isCategorial) {\n              facet.setCategories();\n            } else if (facet.isContinuous || facet.isDatetime || facet.isDuration) {\n              facet.setMinMax();\n            }\n          }\n        });\n        app.message({\n          text: dataURL + ' was uploaded succesfully. Configured ' + dataset.facets.length + ' facets',\n          type: 'ok'\n        });\n        window.componentHandler.upgradeDom(); // Automatically activate dataset if it is the only one\n\n        if (app.me.datasets.length === 1) {\n          $('.mdl-switch').click(); // only way to get the switch in the 'on' position\n        }\n      } catch (ev) {\n        app.me.datasets.remove(dataset);\n        app.message({\n          text: 'Error parsing JSON file: ' + ev,\n          type: 'error',\n          error: ev\n        });\n      }\n    };\n\n    reader.onerror = function (ev) {\n      var error = ev.srcElement.error;\n      app.message({\n        text: 'File loading problem: ' + error,\n        type: 'error',\n        error: ev\n      });\n    };\n\n    reader.onprogress = function (ev) {\n      if (ev.lengthComputable) {\n        // ev.loaded and ev.total are ProgressEvent properties\n        app.progress(parseInt(100.0 * ev.loaded / ev.total));\n      }\n    };\n\n    reader.readAsText(uploadedFile);\n  },\n  importCSV: function importCSV() {\n    // var fileLoader = this.queryByHook('csv-upload-input');\n    var fileLoader = document.getElementById('csvuploadBtn');\n    var uploadedFile = fileLoader.files[0];\n    var reader = new window.FileReader();\n    var dataURL = fileLoader.files[0].name; // TODO: enforce spot.driver === 'client'\n\n    var dataset = app.me.datasets.add({\n      name: dataURL,\n      URL: dataURL,\n      description: 'Imported CSV file'\n    });\n\n    reader.onload = function (ev) {\n      app.message({\n        text: 'Processing',\n        type: 'ok'\n      });\n      var options = {\n        columns: app.CSVHeaders,\n        // treat first line as header with column names\n        relax_column_count: false,\n        // accept malformed lines\n        delimiter: app.CSVSeparator,\n        // field delimieter\n        quote: app.CSVQuote,\n        // String quoting character\n        comment: app.CSVComment,\n        // Treat all the characters after this one as a comment.\n        trim: true // ignore white space around delimiter\n\n      };\n      csv.parse(ev.target.result, options, function (err, data) {\n        if (err) {\n          app.me.datasets.remove(dataset);\n          app.message({\n            text: 'Error parsing CSV file: ' + err.message,\n            type: 'error',\n            error: ev\n          });\n        } else {\n          dataset.data = data; // automatically analyze dataset\n\n          dataset.scan();\n          dataset.facets.forEach(function (facet, i) {\n            if (i < 20) {\n              facet.isActive = true;\n\n              if (facet.isCategorial) {\n                facet.setCategories();\n              } else if (facet.isContinuous || facet.isDatetime || facet.isDuration) {\n                facet.setMinMax();\n              }\n            }\n          });\n          app.addDatasetToLocalStorage(dataset);\n          app.message({\n            text: dataURL + ' was uploaded succesfully. Configured ' + dataset.facets.length + ' facets',\n            type: 'ok'\n          });\n          window.componentHandler.upgradeDom(); // Automatically activate dataset if it is the only one\n\n          if (app.me.datasets.length === 1) {\n            $('.mdl-switch').click(); // only way to get the switch in the 'on' position\n          }\n        }\n      });\n    };\n\n    reader.onerror = function (ev) {\n      app.me.datasets.remove(dataset);\n      app.message({\n        text: 'File loading problem: ' + reader.error,\n        type: 'error',\n        error: reader.error\n      });\n    };\n\n    reader.onprogress = function (ev) {\n      if (ev.lengthComputable) {\n        // ev.loaded and ev.total are ProgressEvent properties\n        app.progress(parseInt(100.0 * ev.loaded / ev.total));\n      }\n    };\n\n    reader.readAsText(uploadedFile);\n  },\n  exportSession: function exportSession() {\n    var json = app.me.toJSON();\n\n    if (app.me.sessionType === 'client') {\n      // for client datasets, also save the data in the session file\n      app.me.datasets.forEach(function (dataset, i) {\n        json.datasets[i].data = dataset.data;\n      });\n    }\n\n    var blob = new window.Blob([JSON.stringify(json)], {\n      type: 'application/json'\n    });\n    var url = window.URL.createObjectURL(blob);\n    var element = document.createElement('a');\n    element.download = 'session.json';\n    element.href = url;\n    element.click();\n    window.URL.revokeObjectURL(url);\n  },\n  exportData: function exportData() {\n    var chartsData = [];\n    var partitionRankToName = {\n      1: 'a',\n      2: 'b',\n      3: 'c',\n      4: 'd'\n    };\n    var aggregateRankToName = {\n      1: 'aa',\n      2: 'bb',\n      3: 'cc',\n      4: 'dd',\n      5: 'ee'\n    };\n    app.me.dataview.filters.forEach(function (filter) {\n      var map = {};\n      var axis = [];\n      filter.partitions.forEach(function (partition) {\n        map[partitionRankToName[partition.rank]] = partition.facetName;\n        axis.push(partition.facetName);\n      });\n      filter.aggregates.forEach(function (aggregate) {\n        map[aggregateRankToName[aggregate.rank]] = aggregate.operation + ' ' + aggregate.facetName;\n      });\n      map['count'] = 'count';\n      var data = [];\n      filter.data.forEach(function (d) {\n        var mapped = {};\n        Object.keys(d).forEach(function (k) {\n          if (map[k]) {\n            mapped[map[k]] = d[k];\n          }\n        });\n        data.push(mapped);\n      });\n      chartsData.push({\n        chartType: filter.chartType,\n        axis: axis.join(','),\n        data: data\n      });\n    });\n    var blob = new window.Blob([JSON.stringify(chartsData)], {\n      type: 'application/json'\n    });\n    var url = window.URL.createObjectURL(blob);\n    var element = document.createElement('a');\n    element.download = 'data.json';\n    element.href = url;\n    element.click();\n    window.URL.revokeObjectURL(url);\n  },\n  importLocalSession: function importLocalSession() {\n    // var fileLoader = this.queryByHook('session-upload-input');\n    var fileLoader = document.getElementById('sessionuploadBtn');\n    var uploadedFile = fileLoader.files[0];\n    var reader = new window.FileReader();\n\n    reader.onload = function (ev) {\n      var data = JSON.parse(ev.target.result);\n      app.loadSessionBlob(data);\n      app.message({\n        text: 'Session \"' + uploadedFile.name + '\" was uploaded succesfully',\n        type: 'ok'\n      });\n    };\n\n    reader.onerror = function (ev) {\n      app.message({\n        text: 'Could not load Session \"' + uploadedFile.name + '\"',\n        type: 'error',\n        error: ev\n      });\n    };\n\n    reader.readAsText(uploadedFile);\n  },\n  zenodoRequest: function () {\n    var _zenodoRequest = _asyncToGenerator(\n    /*#__PURE__*/\n    regeneratorRuntime.mark(function _callee(zenodoParams) {\n      var url_addition, requestType, bodyData, base_url, zenodoToken, url, params, request_options, response, data;\n      return regeneratorRuntime.wrap(function _callee$(_context) {\n        while (1) {\n          switch (_context.prev = _context.next) {\n            case 0:\n              url_addition = zenodoParams.url_addition;\n              requestType = zenodoParams.requestType;\n              bodyData = zenodoParams.bodyData; // console.log('requestType:', requestType);\n\n              base_url = new URL(\"https://sandbox.zenodo.org/api/deposit/depositions\");\n\n              if (zenodoParams.base_url) {\n                base_url = zenodoParams.base_url;\n              }\n\n              zenodoToken = \"AddYourTokenHere\";\n\n              if (url_addition) {\n                // console.log(\" Addition is provided: \", url_addition);\n                base_url = base_url + \"/\" + url_addition;\n              }\n\n              url = new URL(base_url), params = {\n                access_token: zenodoToken\n              };\n              Object.keys(params).forEach(function (key) {\n                url.searchParams.append(key, params[key]);\n              }); // console.log('Zenodo base_url:', base_url);\n              // console.log('Zenodo url:', url);\n\n              request_options = {};\n\n              if (requestType === \"doi\") {\n                request_options = {\n                  cache: \"no-cache\",\n                  method: \"POST\",\n                  headers: {\n                    \"Content-Type\": \"application/json\"\n                  },\n                  body: JSON.stringify(bodyData)\n                };\n              } else if (requestType === \"upload\") {\n                request_options = {\n                  cache: \"no-cache\",\n                  method: \"POST\",\n                  body: bodyData\n                };\n              } else if (requestType === \"publish\") {\n                request_options = {\n                  cache: \"no-cache\",\n                  method: \"POST\"\n                };\n              } else if (requestType === \"meta\") {\n                request_options = {\n                  cache: \"no-cache\",\n                  method: \"PUT\",\n                  headers: {\n                    \"Content-Type\": \"application/json\"\n                  },\n                  body: JSON.stringify(bodyData)\n                };\n              } else if (requestType === \"download\") {\n                request_options = {\n                  cache: \"no-cache\",\n                  method: \"GET\",\n                  withCredentials: true\n                };\n              } else {\n                console.error('Unknown method');\n              } // console.log('request_options: ', request_options);\n\n\n              _context.next = 13;\n              return fetch(url, request_options);\n\n            case 13:\n              response = _context.sent;\n              _context.next = 16;\n              return response.json();\n\n            case 16:\n              data = _context.sent;\n              return _context.abrupt(\"return\", data);\n\n            case 18:\n            case \"end\":\n              return _context.stop();\n          }\n        }\n      }, _callee);\n    }));\n\n    function zenodoRequest(_x) {\n      return _zenodoRequest.apply(this, arguments);\n    }\n\n    return zenodoRequest;\n  }()\n});\n/**\n * run it on domReady\n */\n\ndomReady(function () {\n  app.init();\n\n  if (false) {}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTIxOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9hcHAuanM/MTExMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgU3BvdCA9IHJlcXVpcmUoJ3Nwb3QtZnJhbWV3b3JrJyk7XG52YXIgYXBwID0gcmVxdWlyZSgnYW1wZXJzYW5kLWFwcCcpO1xudmFyIFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVyJyk7XG52YXIgTWFpblZpZXcgPSByZXF1aXJlKCcuL3BhZ2VzL21haW4nKTtcbnZhciBEYXRhc2V0c1ZpZXcgPSByZXF1aXJlKCcuL3BhZ2VzL2RhdGFzZXRzJyk7XG52YXIgZG9tUmVhZHkgPSByZXF1aXJlKCdkb21yZWFkeScpO1xudmFyIHdpZGdldEZhY3RvcnkgPSByZXF1aXJlKCcuL3dpZGdldHMvd2lkZ2V0LWZhY3RvcnknKTtcbnZhciB2aWV3RmFjdG9yeSA9IHJlcXVpcmUoJy4vd2lkZ2V0cy92aWV3LWZhY3RvcnknKTtcbnZhciBDb2xsZWN0aW9uID0gcmVxdWlyZSgnYW1wZXJzYW5kLWNvbGxlY3Rpb24nKTtcblxudmFyIFNlc3Npb25Nb2RlbCA9IHJlcXVpcmUoJy4vcGFnZXMvZGF0YXNldHMvc2Vzc2lvbi1tb2RlbCcpO1xudmFyIGRpYWxvZ1BvbHlmaWxsID0gcmVxdWlyZSgnZGlhbG9nLXBvbHlmaWxsJyk7XG5cbnZhciBIZWxwID0gcmVxdWlyZSgnaW50cm8uanMnKTtcbnZhciB0ZW1wbGF0ZXMgPSByZXF1aXJlKCcuL3RlbXBsYXRlcycpO1xudmFyIGNzdiA9IHJlcXVpcmUoJ2NzdicpO1xudmFyICQgPSByZXF1aXJlKCdqcXVlcnknKTtcblxucmVxdWlyZSgnYmFiZWwtcG9seWZpbGwnKTtcbnJlcXVpcmUoJ21kbCcpO1xuXG52YXIgc2Vzc2lvbkNvbGxlY3Rpb24gPSBDb2xsZWN0aW9uLmV4dGVuZCh7XG4gIG1haW5JbmRleDogJ2lkJyxcbiAgaW5kZXhlczogWyduYW1lJ10sXG4gIG1vZGVsOiBTZXNzaW9uTW9kZWxcbn0pO1xuXG4vLyBhdHRhY2ggb3VyIGFwcCB0byBgd2luZG93YCBzbyB3ZSBjYW5cbi8vIGVhc2lseSBhY2Nlc3MgaXQgZnJvbSB0aGUgY29uc29sZS5cbndpbmRvdy5hcHAgPSBhcHA7XG5cbi8vIEV4dGVuZHMgb3VyIG1haW4gYXBwIHNpbmdsZXRvblxuYXBwLmV4dGVuZCh7XG4gIC8qKlxuICAgKiBbZnVsbHNjcmVlbk1vZGUgZGVzY3JpcHRpb25dXG4gICAqIEB0eXBlIHtCb29sZWFufVxuICAgKi9cbiAgZnVsbHNjcmVlbk1vZGU6IGZhbHNlLFxuICAvKipcbiAgICogW2RlbW9TZXNzaW9uIGRlc2NyaXB0aW9uXVxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cbiAgICovXG4gIGRlbW9TZXNzaW9uOiBmYWxzZSxcbiAgLyoqXG4gICAqIFttb2JpbGVCcm93c2VyIGRlc2NyaXB0aW9uXVxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cbiAgICovXG4gIG1vYmlsZUJyb3dzZXI6IGZhbHNlLFxuICAvKipcbiAgICogW21lIGRlc2NyaXB0aW9uXVxuICAgKiBAdHlwZSB7U3BvdH1cbiAgICovXG4gIG1lOiBuZXcgU3BvdCgpLFxuICAvKipcbiAgICogW3dpZGdldEZhY3RvcnkgZGVzY3JpcHRpb25dXG4gICAqIEB0eXBlIHthbnl9XG4gICAqL1xuICB3aWRnZXRGYWN0b3J5OiB3aWRnZXRGYWN0b3J5LFxuICAvKipcbiAgICogW3ZpZXdGYWN0b3J5IGRlc2NyaXB0aW9uXVxuICAgKiBAdHlwZSB7YW55fVxuICAgKi9cbiAgdmlld0ZhY3Rvcnk6IHZpZXdGYWN0b3J5LFxuICAvKipcbiAgICogW3JvdXRlciBkZXNjcmlwdGlvbl1cbiAgICogQHR5cGUge1JvdXRlcn1cbiAgICovXG4gIHJvdXRlcjogbmV3IFJvdXRlcigpLFxuICAvKipcbiAgICogW0NTVlNlcGFyYXRvciBkZXNjcmlwdGlvbl1cbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIENTVlNlcGFyYXRvcjogJywnLFxuICAvKipcbiAgICogW0NTVkhlYWRlcnMgZGVzY3JpcHRpb25dXG4gICAqIEB0eXBlIHtCb29sZWFufVxuICAgKi9cbiAgQ1NWSGVhZGVyczogdHJ1ZSxcbiAgLyoqXG4gICAqIFtDU1ZRdW90ZSBkZXNjcmlwdGlvbl1cbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIENTVlF1b3RlOiAnXCInLFxuICAvKipcbiAgICogW0NTVkNvbW1lbnQgZGVzY3JpcHRpb25dXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICBDU1ZDb21tZW50OiAnIycsXG5cbiAgaGVscGVyOiB7ZW5hYmxlZDogZmFsc2UsIGluc3RhbmNlOiBuZXcgSGVscCgpfSxcblxuICAvKipcbiAgICogW3Nlc3Npb25zIGRlc2NyaXB0aW9uXVxuICAgKiBAdHlwZSB7YW55fVxuICAgKi9cbiAgc2Vzc2lvbnM6IG5ldyBzZXNzaW9uQ29sbGVjdGlvbigpLFxuICAvKipcbiAgICogVGhpcyBpcyB3aGVyZSBpdCBhbGwgc3RhcnRzXG4gICAqL1xuICBpbml0OiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gQ3JlYXRlIGFuZCBhdHRhY2ggb3VyIG1haW4gdmlld1xuICAgIHRoaXMubWFpblZpZXcgPSBuZXcgTWFpblZpZXcoe1xuICAgICAgbW9kZWw6IHRoaXMubWUsXG4gICAgICBlbDogZG9jdW1lbnQuYm9keVxuICAgIH0pO1xuXG4gICAgLy8gdGhpcyBraWNrcyBvZmYgb3VyIGJhY2tidXR0b24gdHJhY2tpbmcgKGJyb3dzZXIgaGlzdG9yeSlcbiAgICAvLyBhbmQgd2lsbCBjYXVzZSB0aGUgZmlyc3QgbWF0Y2hpbmcgaGFuZGxlciBpbiB0aGUgcm91dGVyXG4gICAgLy8gdG8gZmlyZS5cbiAgICB0aGlzLnJvdXRlci5oaXN0b3J5LnN0YXJ0KHtcbiAgICAgIHJvb3Q6ICcvJyxcbiAgICAgIHB1c2hTdGF0ZTogdHJ1ZSxcbiAgICAgIGhhc2hDaGFuZ2U6IHRydWVcbiAgICB9KTtcbiAgfSxcbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBoZWxwZXIgZm9yIG5hdmlnYXRpbmcgYXJvdW5kIHRoZSBhcHAuXG4gICAgIHRoaXMgZ2V0cyBjYWxsZWQgYnkgYSBnbG9iYWwgY2xpY2sgaGFuZGxlciB0aGF0IGhhbmRsZXNcbiAgICAgYWxsIHRoZSA8YT4gdGFncyBpbiB0aGUgYXBwLlxuICAgICBpdCBleHBlY3RzIGEgdXJsIHBhdGhuYW1lIGZvciBleGFtcGxlOiBcIi9jb3N0ZWxsby9zZXR0aW5nc1wiXG4gICAqIEBwYXJhbSAge2FueX0gcGFnZSBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBuYXZpZ2F0ZTogZnVuY3Rpb24gKHBhZ2UpIHtcblxuICAgIC8vIGNsZWFuIGFsbCBoZWxwIGl0ZW1zIGJlZm9yZSBuYXZpZ2F0aW5nIHRvIG5ldyBwYWdlXG4gICAgYXBwLnN0b3BIZWxwKCk7XG5cbiAgICB2YXIgdXJsID0gKHBhZ2UuY2hhckF0KDApID09PSAnLycpID8gcGFnZS5zbGljZSgxKSA6IHBhZ2U7XG4gICAgdGhpcy5yb3V0ZXIuaGlzdG9yeS5uYXZpZ2F0ZSh1cmwsIHtcbiAgICAgIHRyaWdnZXI6IHRydWVcbiAgICB9KTtcbiAgfSxcbiAgLyoqXG4gICAqIFtkZXNjcmlwdGlvbl1cbiAgICogQHBhcmFtICB7YW55fSBwZXJjZW50YWdlIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHByb2dyZXNzOiBmdW5jdGlvbiAocGVyY2VudGFnZSkge1xuICAgIHZhciBwcm9ncmVzc0JhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9ncmVzcy1iYXInKTtcbiAgICBwcm9ncmVzc0Jhci5NYXRlcmlhbFByb2dyZXNzLnNldFByb2dyZXNzKHBlcmNlbnRhZ2UpO1xuXG4gICAgcHJvZ3Jlc3NCYXIuc3R5bGUuZGlzcGxheSA9ICdpbmhlcml0JztcbiAgfSxcbiAgLyoqXG4gICAqIFtkZXNjcmlwdGlvbl1cbiAgICogQHBhcmFtICB7Ym9vbGVhbn0gc3RhdHVzIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGJ1c3k6IGZ1bmN0aW9uIChjYWxsQmFjaykge1xuICAgIHZhciB0aGF0ID0gdGhpcztcblxuICAgIHZhciBkaWFsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbi1kaWFsb2cnKTtcbiAgICBkaWFsb2dQb2x5ZmlsbC5yZWdpc3RlckRpYWxvZyhkaWFsb2cpO1xuXG4gICAgY29uc29sZS5sb2coZGlhbG9nKTtcbiAgICBkaWFsb2cub3BlbiA9ICFkaWFsb2cub3BlbjtcbiAgICBjb25zb2xlLmxvZyhkaWFsb2cpO1xuICB9LFxuICAvKipcbiAgICogW2Rlc2NyaXB0aW9uXVxuICAgKiBAcGFyYW0gIHthbnl9IG9wdGlvbnMgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgbWVzc2FnZTogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICB2YXIgc25hY2tiYXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc25hY2stYmFyJyk7XG4gICAgdmFyIHNuYWNrRGF0YSA9IHsgbWVzc2FnZTogb3B0aW9ucy50ZXh0IH07XG5cbiAgICAvLyBCVUdGSVg6IGR1cmluZyBhcHAgaW5pdGlhbGl6YXRpb24sIHRoZSBzbmFja2JhciBpcyBub3QgYWx3YXlzIHJlYWR5IHlldFxuICAgIGlmICghc25hY2tiYXJDb250YWluZXIuTWF0ZXJpYWxTbmFja2Jhcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBwcm9ncmVzc0JhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9ncmVzcy1iYXInKTtcbiAgICBwcm9ncmVzc0Jhci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgY29uc29sZS53YXJuKG9wdGlvbnMudGV4dCwgb3B0aW9ucy5lcnJvcik7XG4gICAgICBzbmFja0RhdGEudGltZW91dCA9IDEwMDAwOyAvLyBzaG93IGVycm9yIGZvciAxMCBzZWNvbmRzXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKG9wdGlvbnMudGV4dCk7XG4gICAgICBzbmFja0RhdGEudGltZW91dCA9IDI3NTA7XG4gICAgfVxuICAgIHNuYWNrYmFyQ29udGFpbmVyLk1hdGVyaWFsU25hY2tiYXIuc2hvd1NuYWNrYmFyKHNuYWNrRGF0YSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHN0YXJ0SGVscDogZnVuY3Rpb24gKCkge1xuXG4gICAgY29uc29sZS5sb2coYXBwLmN1cnJlbnRQYWdlLmhlbHBUZW1wbGF0ZSk7XG4gICAgY29uc29sZS5sb2coYXBwLmN1cnJlbnRQYWdlLmhlbHBIaW50cyk7XG4gICAgY29uc29sZS5sb2coYXBwLmN1cnJlbnRQYWdlLmhlbHBTdGVwcyk7XG4gICAgaWYgKFxuICAgICAgKCFhcHAuY3VycmVudFBhZ2UuaGVscFRlbXBsYXRlIHx8IGFwcC5jdXJyZW50UGFnZS5oZWxwVGVtcGxhdGUgPT09ICcnKSAmJlxuICAgICAgKCFhcHAuY3VycmVudFBhZ2UuaGVscEhpbnRzIHx8IGFwcC5jdXJyZW50UGFnZS5oZWxwSGludHMoKSA9PT0gW10pICYmXG4gICAgICAoIWFwcC5jdXJyZW50UGFnZS5oZWxwU3RlcHMgfHwgYXBwLmN1cnJlbnRQYWdlLmhlbHBUZW1wbGF0ZSA9PT0gW10pXG4gICAgKSB7XG4gICAgICBjb25zb2xlLmxvZygnTm8gSGVscCBpdGVtIHdhcyBmb3VuZCBmb3IgdGhpcyBwYWdlISBFeGl0aW5nLicpXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coYXBwLmhlbHBlci5lbmFibGVkKTtcblxuICAgIGlmIChhcHAuaGVscGVyLmVuYWJsZWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdDbG9zaW5nIGV4aXN0aW5nIGhlbHAhJyk7XG4gICAgICBhcHAuc3RvcEhlbHAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhcHAuaGVscGVyLmVuYWJsZWQgPSB0cnVlO1xuXG4gICAgY29uc29sZS5sb2coXCJhcHAuaGVscGVyOiBcIiwgYXBwLmhlbHBlcik7XG5cbiAgICBpZiAoYXBwLmN1cnJlbnRQYWdlLmhlbHBUZW1wbGF0ZSAmJiBhcHAuY3VycmVudFBhZ2UuaGVscFRlbXBsYXRlICE9PSAnJykge1xuICAgICAgY29uc29sZS5sb2coXCJTZXR0aW5nIGludHJvcy4uLlwiKTtcbiAgICAgIGFwcC5oZWxwZXIuaW5zdGFuY2Uuc2V0T3B0aW9ucyh7XG4gICAgICAgIHN0ZXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW50cm86IHdpbmRvd1thcHAuY3VycmVudFBhZ2UuaGVscFRlbXBsYXRlXSgpXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhcHAuaGVscGVyLmluc3RhbmNlLnNldE9wdGlvbnMoe1xuICAgICAgaGludHM6IGFwcC5jdXJyZW50UGFnZS5oZWxwSGludHMoKSxcbiAgICAgIHN0ZXBzOiBhcHAuY3VycmVudFBhZ2UuaGVscFN0ZXBzKClcbiAgICB9KTtcblxuICAgIGFwcC5oZWxwZXIuaW5zdGFuY2Uub25oaW50c2FkZGVkKGZ1bmN0aW9uKCkge1xuICAgICAgICBjb25zb2xlLmxvZygnYWxsIGhpbnRzIGFkZGVkJyk7XG4gICAgfSk7XG4gICAgYXBwLmhlbHBlci5pbnN0YW5jZS5vbmhpbnRjbGljayhmdW5jdGlvbihoaW50RWxlbWVudCwgaXRlbSwgc3RlcElkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdoaW50IGNsaWNrZWQnLCBoaW50RWxlbWVudCwgaXRlbSwgc3RlcElkKTtcbiAgICB9KTtcbiAgICBhcHAuaGVscGVyLmluc3RhbmNlLm9uaGludGNsb3NlKGZ1bmN0aW9uIChzdGVwSWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2hpbnQgY2xvc2VkJywgc3RlcElkKTtcbiAgICB9KTtcblxuICAgIGFwcC5oZWxwZXIuaW5zdGFuY2UuYWRkSGludHMoKTtcbiAgICBhcHAuaGVscGVyLmluc3RhbmNlLnNob3dIaW50cygpO1xuICAgIC8vIGFwcC5oZWxwZXIuc3RhcnQoKTtcbiAgfSxcbiAgc3RvcEhlbHA6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYXBwLmhlbHBlci5lbmFibGVkKSB7XG4gICAgICBjb25zb2xlLmxvZygnQ2xvc2luZyBleGlzdGluZyBoZWxwIScpO1xuICAgICAgLy8gYXBwLmhlbHBlci5pbnN0YW5jZS5oZWxwZXIuZXhpdCgpO1xuICAgICAgYXBwLmhlbHBlci5pbnN0YW5jZS5oaWRlSGludHMoKTtcbiAgICAgIGFwcC5oZWxwZXIuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfSxcbiAgLyoqXG4gICAqIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHN0YXJ0V2VsY29tZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciB3ZWxjb21lID0gSGVscCgpO1xuICAgIHdlbGNvbWUuc2V0T3B0aW9uKCd0b29sdGlwQ2xhc3MnLCAnd2VsY29tZS1kaWFsb2cnKTtcbiAgICB3ZWxjb21lLnNldE9wdGlvbnMoe1xuICAgICAgJ3Nob3dTdGVwTnVtYmVycyc6IGZhbHNlLFxuICAgICAgJ3Nob3dCdWxsZXRzJzogZmFsc2UsXG4gICAgICAnc2hvd1Byb2dyZXNzJzogZmFsc2UsXG4gICAgICAnc2tpcExhYmVsJzogJ0V4aXQnLFxuICAgICAgJ2RvbmVMYWJlbCc6ICdTdGFydCBkZW1vJyxcbiAgICAgICd0b29sdGlwUG9zaXRpb24nOiAnYXV0bycsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgaW50cm86IHRlbXBsYXRlcy5oZWxwLndlbGNvbWUoKVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICB3ZWxjb21lLm9uY2hhbmdlKGZ1bmN0aW9uICh0YXJnZXRFbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudFN0ZXAgPT09IHRoaXMuX2ludHJvSXRlbXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAkKCcuaW50cm9qcy1za2lwYnV0dG9uJykuY3NzKCdjb2xvcicsICdncmVlbicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgd2VsY29tZS5vbmNvbXBsZXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3BvdFdlbGNvbWUnLCAnZG9uZScpO1xuICAgICAgYXBwLm1lc3NhZ2Uoe1xuICAgICAgICB0ZXh0OiAnU3RhcnRpbmcgdGhlIGRlbW8gc2Vzc2lvbi4nLFxuICAgICAgICB0eXBlOiAnb2snXG4gICAgICB9KTtcbiAgICAgIGFwcC5pbXBvcnRSZW1vdGVTZXNzaW9uKCdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vTkxlU0Mvc3BvdC9tYXN0ZXIvZGlzdC9kZW1vLmpzb24nKTtcbiAgICB9KTtcblxuICAgIC8vIGFkZCBhIGZsYWcgd2hlbiB3ZSBleGl0XG4gICAgd2VsY29tZS5vbmV4aXQoZnVuY3Rpb24gKCkge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzcG90V2VsY29tZScsICdkb25lJyk7XG4gICAgfSk7XG5cbiAgICB2YXIgc3BvdFdlbGNvbWUgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Nwb3RXZWxjb21lJykgPT09ICdkb25lJztcbiAgICBpZiAoc3BvdFdlbGNvbWUpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdObyBuZWVkIHRvIHNob3cgd2VsY29tZSBkaWFsb2cgYWdhaW4uJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdTdGFydGluZyB0aGUgd2VsY29tZSBkaWFsb2cuJyk7XG4gICAgICB3ZWxjb21lLnN0YXJ0KCk7XG4gICAgfVxuICB9LFxuICAvKipcbiAgICogW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIHtib29sZWFufSBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBkZXRlY3RNb2JpbGU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY2hlY2sgPSBmYWxzZTtcbiAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQW5kcm9pZC9pKSB8fFxuICAgIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL3dlYk9TL2kpIHx8XG4gICAgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVBob25lL2kpIHx8XG4gICAgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVBhZC9pKSB8fFxuICAgIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQb2QvaSkgfHxcbiAgICBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9CbGFja0JlcnJ5L2kpIHx8XG4gICAgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cyBQaG9uZS9pKVxuICAgKSB7XG4gICAgICBjaGVjayA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoZWNrID0gZmFsc2U7XG4gICAgfVxuICAgIGFwcC5tb2JpbGVCcm93c2VyID0gY2hlY2s7XG4gICAgcmV0dXJuIGNoZWNrO1xuICB9LFxuXG4gIC8qKlxuICAgKiBbZGVzY3JpcHRpb25dXG4gICAqIEByZXR1cm4ge30gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgYWRkRGF0YXNldFRvTG9jYWxTdG9yYWdlOiBmdW5jdGlvbihkYXRhc2V0KSB7XG4gICAgY29uc29sZS5sb2coJ0FkZGluZyBhIGRhdGFzZXQgdG8gdGhlIGxvY2FsIHN0b3JhZ2UnKTtcbiAgICBjb25zb2xlLmxvZyhkYXRhc2V0KTtcbiAgICB2YXIgYWxsRGF0YXNldHMgPSB0aGlzLmdldERhdGFzZXRzRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIC8vIGFsbERhdGFzZXRzLmZvckVhY2goZnVuY3Rpb24oZHNldCwgaW5kZXgpIHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKFwiW1wiICsgaW5kZXggKyBcIl06IFwiICsgZHNldC5pZCArICcgICcsIGRzZXQubmFtZSk7XG4gICAgLy8gfSk7XG4gICAgYWxsRGF0YXNldHMucHVzaChkYXRhc2V0KTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGF0YXNldHMnLCBKU09OLnN0cmluZ2lmeShhbGxEYXRhc2V0cykpO1xuICB9LFxuICAgIC8qKlxuICAgKiBbZGVzY3JpcHRpb25dXG4gICAqIEByZXR1cm4ge30gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcmVtb3ZlRGF0YXNldEZyb21Mb2NhbFN0b3JhZ2U6IGZ1bmN0aW9uKGRhdGFzZXQpIHtcbiAgICBjb25zb2xlLmxvZygnUmVtb3ZpbmcgYSBkYXRhc2V0IGZyb20gdGhlIGxvY2FsIHN0b3JhZ2UnKTtcbiAgICBjb25zb2xlLmxvZyhkYXRhc2V0KTtcbiAgICB2YXIgYWxsRGF0YXNldHMgPSB0aGlzLmdldERhdGFzZXRzRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIGFsbERhdGFzZXRzLmZvckVhY2goZnVuY3Rpb24oZHNldCwgaW5kZXgpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiW1wiICsgaW5kZXggKyBcIl06IFwiICsgZHNldC5pZCArICcgICcsIGRzZXQubmFtZSk7XG4gICAgICBpZiAoIGRhdGFzZXQuaWQgPT09IGRzZXQuaWQgKVxuICAgICAgICBhbGxEYXRhc2V0cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH0pO1xuICAgIC8vIHZhciBpbmRleCA9IGFsbERhdGFzZXRzLmluZGV4T2YoZGF0YXNldCk7XG4gICAgLy8gaWYgKGluZGV4ID4gLTEpIHtcbiAgICAvLyAgIGFsbERhdGFzZXRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgLy8gfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYXRhc2V0cycsIGFsbERhdGFzZXRzKTtcbiAgfSxcbiAgICAvKipcbiAgICogW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIHt9IFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGdldERhdGFzZXRzRnJvbUxvY2FsU3RvcmFnZTogZnVuY3Rpb24oKSB7XG4gICAgY29uc29sZS5sb2coJ0dldHRpbmcgYSBsaXN0IG9mIGRhdGFzZXRzIGZyb20gdGhlIGxvY2FsIHN0b3JhZ2UnKTtcbiAgICB2YXIgYWxsRGF0YXNldHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhc2V0cycpIHx8IFwiW11cIik7XG4gICAgcmV0dXJuIGFsbERhdGFzZXRzO1xuICB9LFxuICAvKipcbiAgICogW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIHt9IFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGFkZFNlc3Npb25Ub0xvY2FsU3RvcmFnZTogZnVuY3Rpb24oc2Vzc2lvbikge1xuICAgIGNvbnNvbGUubG9nKCdBZGRpbmcgYSBzZXNzaW9uIHRvIHRoZSBsb2NhbCBzdG9yYWdlJyk7XG4gICAgY29uc29sZS5sb2coc2Vzc2lvbik7XG4gICAgdmFyIGFsbFNlc3Npb25zID0gdGhpcy5nZXRTZXNzaW9uc0Zyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICAvLyBhbGxEYXRhc2V0cy5mb3JFYWNoKGZ1bmN0aW9uKGRzZXQsIGluZGV4KSB7XG4gICAgLy8gICBjb25zb2xlLmxvZyhcIltcIiArIGluZGV4ICsgXCJdOiBcIiArIGRzZXQuaWQgKyAnICAnLCBkc2V0Lm5hbWUpO1xuICAgIC8vIH0pO1xuICAgIGFsbFNlc3Npb25zLnB1c2goc2Vzc2lvbik7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Nlc3Npb25zJywgSlNPTi5zdHJpbmdpZnkoYWxsU2Vzc2lvbnMpKTtcbiAgfSxcbiAgICAvKipcbiAgICogW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIHt9IFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHJlbW92ZVNlc3Npb25Gcm9tTG9jYWxTdG9yYWdlOiBmdW5jdGlvbihpbnB1dF9zZXNzaW9uKSB7XG4gICAgY29uc29sZS5sb2coJ1JlbW92aW5nIGEgc2Vzc2lvbiBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlJyk7XG4gICAgY29uc29sZS5sb2coaW5wdXRfc2Vzc2lvbik7XG4gICAgdmFyIGFsbFNlc3Npb25zID0gdGhpcy5nZXRTZXNzaW9uc0Zyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICBhbGxTZXNzaW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlc3MsIGluZGV4KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIltcIiArIGluZGV4ICsgXCJdOiBcIiArIHNlc3MuaWQgKyAnICAnLCBzZXNzLm5hbWUpO1xuICAgICAgaWYgKCBpbnB1dF9zZXNzaW9uLmlkID09PSBzZXNzLmlkIClcbiAgICAgICAgYWxsU2Vzc2lvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9KTtcblxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzZXNzaW9ucycsIGFsbFNlc3Npb25zKTtcbiAgfSxcbiAgICAvKipcbiAgICogW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIHt9IFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGdldFNlc3Npb25zRnJvbUxvY2FsU3RvcmFnZTogZnVuY3Rpb24oKSB7XG4gICAgY29uc29sZS5sb2coJ0dldHRpbmcgYSBsaXN0IG9mIHNlc3Npb25zIGZyb20gdGhlIGxvY2FsIHN0b3JhZ2UnKTtcbiAgICB2YXIgYWxsU2Vzc2lvbnMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzZXNzaW9ucycpIHx8IFwiW11cIik7XG4gICAgcmV0dXJuIGFsbFNlc3Npb25zO1xuICB9LFxuICBnZXRDdXJyZW50U2Vzc2lvbjogZnVuY3Rpb24gKCkge1xuICAgIHZhciBqc29uID0gYXBwLm1lLnRvSlNPTigpO1xuICAgIGlmIChhcHAubWUuc2Vzc2lvblR5cGUgPT09ICdjbGllbnQnKSB7XG4gICAgICAvLyBmb3IgY2xpZW50IGRhdGFzZXRzLCBhbHNvIHNhdmUgdGhlIGRhdGEgaW4gdGhlIHNlc3Npb24gZmlsZVxuICAgICAgYXBwLm1lLmRhdGFzZXRzLmZvckVhY2goZnVuY3Rpb24gKGRhdGFzZXQsIGkpIHtcbiAgICAgICAganNvbi5kYXRhc2V0c1tpXS5kYXRhID0gZGF0YXNldC5kYXRhO1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIGpzb24uc2F2ZURhdGUgPSBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICB2YXIgY3VycmVudFNlc3Npb24gPSBqc29uO1xuICAgIHJldHVybiBjdXJyZW50U2Vzc2lvbjtcbiAgfSxcbiAgc2F2ZUN1cnJlbnRTZXNzaW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGN1cnJlbnRTZXNzaW9uID0gdGhpcy5nZXRDdXJyZW50U2Vzc2lvbigpO1xuICAgIHRoaXMuYWRkU2Vzc2lvblRvTG9jYWxTdG9yYWdlKGN1cnJlbnRTZXNzaW9uKTtcbiAgfSxcbiAgaW1wb3J0UmVtb3RlU2Vzc2lvbjogZnVuY3Rpb24gKHNlc3Npb25VcmwpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnYXBwLmpzOiBHZXR0aW5nIHRoZSByZW1vdGUgc2Vzc2lvbi4nKTtcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgICBhcHAuYnVzeSh7ZW5hYmxlOiB0cnVlfSk7XG5cbiAgICB2YXIgdXJsUGFydHMgPSBzZXNzaW9uVXJsLnJlcGxhY2UoJ2h0dHA6Ly8nLCcnKS5yZXBsYWNlKCdodHRwczovLycsJycpLnNwbGl0KC9bLz8jXS8pO1xuICAgIHZhciBkb21haW4gPSB1cmxQYXJ0c1swXTtcblxuICAgIGlmICggKGRvbWFpbiA9PT0gXCJzYW5kYm94Lnplbm9kby5vcmdcIikgfHwgKGRvbWFpbiA9PT0gXCJ6ZW5vZG8ub3JnXCIpICkge1xuICAgICAgLy8gZ2V0IGZpbGVzIHVzaW5nIGEgcHJveHkgdG8gZml4IENPUlMgaXNzdWVzXG4gICAgICBzZXNzaW9uVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8nICsgc2Vzc2lvblVybDtcbiAgICB9XG5cbiAgICB0aGF0Lnplbm9kb1JlcXVlc3Qoe1xuICAgICAgYmFzZV91cmw6IHNlc3Npb25VcmwsXG4gICAgICB1cmxfYWRkaXRpb246XCJcIixcbiAgICAgIHJlcXVlc3RUeXBlOlwiZG93bmxvYWRcIixcbiAgICAgIHplbm9kb0lkOiAnJyxcbiAgICAgIGZpbGVIYXNoOiAnJ1xuICAgIH0pLnRoZW4oZnVuY3Rpb24oZG93bmxvYWRfZGF0YSkge1xuICAgICAgLy8gY29uc29sZS5sb2coZG93bmxvYWRfZGF0YSk7XG4gICAgICBhcHAuYnVzeSh7ZW5hYmxlOiBmYWxzZX0pO1xuICAgICAgYXBwLm1lc3NhZ2Uoe1xuICAgICAgICB0ZXh0OiAnU2Vzc2lvbiB3YXMgaW1wb3J0ZWQgc3VjY2VzZnVsbHknLFxuICAgICAgICB0eXBlOiAnb2snXG4gICAgICB9KTtcbiAgICAgIGFwcC5sb2FkU2Vzc2lvbkJsb2IoZG93bmxvYWRfZGF0YSk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3JfZG93bmxvYWQpe1xuICAgICAgYXBwLmJ1c3koe2VuYWJsZTogZmFsc2V9KTtcbiAgICAgIGFwcC5tZXNzYWdlKHtcbiAgICAgICAgdGV4dDogJ0NvdWxkIG5vdCBpbXBvcnQgdGhlIHNlc3Npb24nLFxuICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICBlcnJvcjogZXZcbiAgICAgIH0pO1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcl9kb3dubG9hZCk7XG4gICAgfSk7XG5cbiAgfSxcbiAgLyoqXG4gICAqIFtkZXNjcmlwdGlvbl1cbiAgICogQHBhcmFtICB7YW55fSBkYXRhIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGxvYWRTZXNzaW9uQmxvYjogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBjb25zb2xlLmxvZygnTG9hZGluZyB0aGUgc2Vzc2lvbi4nKTtcbiAgICBhcHAubWUgPSBuZXcgU3BvdChkYXRhKTtcblxuICAgIGlmIChkYXRhLnNlc3Npb25UeXBlID09PSAnc2VydmVyJykge1xuICAgICAgYXBwLm1lLmNvbm5lY3RUb1NlcnZlcihkYXRhLmFkZHJlc3MpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5zZXNzaW9uVHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIC8vIGFkZCBkYXRhIGZyb20gdGhlIHNlc3Npb24gZmlsZSB0byB0aGUgZGF0YXNldFxuICAgICAgZGF0YS5kYXRhc2V0cy5mb3JFYWNoKGZ1bmN0aW9uIChkLCBpKSB7XG4gICAgICAgIGFwcC5tZS5kYXRhc2V0cy5tb2RlbHNbaV0uY3Jvc3NmaWx0ZXIuYWRkKGQuZGF0YSk7XG4gICAgICAgIGFwcC5tZS5kYXRhc2V0cy5tb2RlbHNbaV0uaXNBY3RpdmUgPSBmYWxzZTsgLy8gd2UnbGwgdHVybiBpdCBvbiBsYXRlclxuICAgICAgfSk7XG4gICAgICAvLyBtZXJnZSBhbGwgdGhlIGRhdGEgaW50byB0aGUgYXBwLm1lLmRhdGF2aWV3XG4gICAgICAvLyBieSB0b2dnbGluZyB0aGUgYWN0aXZlIGRhdGFzZXRzIGJhY2sgb25cbiAgICAgIGRhdGEuZGF0YXNldHMuZm9yRWFjaChmdW5jdGlvbiAoZCwgaSkge1xuICAgICAgICBpZiAoZC5pc0FjdGl2ZSkge1xuICAgICAgICAgIGFwcC5tZS50b2dnbGVEYXRhc2V0KGFwcC5tZS5kYXRhc2V0cy5tb2RlbHNbaV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gYW5kIGF1dG9tYXRpY2FsbHkgZ28gdG8gdGhlIGFuYWx5emUgcGFnZVxuICAgIGFwcC5uYXZpZ2F0ZSgnL2FuYWx5emUnKTsgICAgXG4gICAgYXBwLm5hdmlnYXRlKCcvZGF0YXNldHMnKTtcbiAgICBhcHAubmF2aWdhdGUoJy9hbmFseXplJyk7XG4gIH0sXG4gIGltcG9ydEpTT046IGZ1bmN0aW9uICgpIHtcbiAgICAvLyB2YXIgZmlsZUxvYWRlciA9IHRoaXMucXVlcnlCeUhvb2soJ2pzb24tdXBsb2FkLWlucHV0Jyk7XG4gICAgdmFyIGZpbGVMb2FkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnanNvbnVwbG9hZEJ0bicpO1xuICAgIHZhciB1cGxvYWRlZEZpbGUgPSBmaWxlTG9hZGVyLmZpbGVzWzBdO1xuICAgIHZhciByZWFkZXIgPSBuZXcgd2luZG93LkZpbGVSZWFkZXIoKTtcbiAgICB2YXIgZGF0YVVSTCA9IGZpbGVMb2FkZXIuZmlsZXNbMF0ubmFtZTtcblxuICAgIC8vIFRPRE86IGVuZm9yY2Ugc3BvdC5kcml2ZXIgPT09ICdjbGllbnQnXG5cbiAgICB2YXIgZGF0YXNldCA9IGFwcC5tZS5kYXRhc2V0cy5hZGQoe1xuICAgICAgbmFtZTogZGF0YVVSTCxcbiAgICAgIFVSTDogZGF0YVVSTCxcbiAgICAgIGRlc2NyaXB0aW9uOiAndXBsb2FkZWQgSlNPTiBmaWxlJ1xuICAgIH0pO1xuXG4gICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgYXBwLm1lc3NhZ2Uoe1xuICAgICAgICB0ZXh0OiAnUHJvY2Vzc2luZycsXG4gICAgICAgIHR5cGU6ICdvaydcbiAgICAgIH0pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZGF0YXNldC5kYXRhID0gSlNPTi5wYXJzZShldi50YXJnZXQucmVzdWx0KTtcblxuICAgICAgICAvLyBhdXRvbWF0aWNhbGx5IGFuYWx5emUgZGF0YXNldFxuICAgICAgICBkYXRhc2V0LnNjYW4oKTtcbiAgICAgICAgZGF0YXNldC5mYWNldHMuZm9yRWFjaChmdW5jdGlvbiAoZmFjZXQsIGkpIHtcbiAgICAgICAgICBpZiAoaSA8IDIwKSB7XG4gICAgICAgICAgICBmYWNldC5pc0FjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmIChmYWNldC5pc0NhdGVnb3JpYWwpIHtcbiAgICAgICAgICAgICAgZmFjZXQuc2V0Q2F0ZWdvcmllcygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmYWNldC5pc0NvbnRpbnVvdXMgfHwgZmFjZXQuaXNEYXRldGltZSB8fCBmYWNldC5pc0R1cmF0aW9uKSB7XG4gICAgICAgICAgICAgIGZhY2V0LnNldE1pbk1heCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGFwcC5tZXNzYWdlKHtcbiAgICAgICAgICB0ZXh0OiBkYXRhVVJMICsgJyB3YXMgdXBsb2FkZWQgc3VjY2VzZnVsbHkuIENvbmZpZ3VyZWQgJyArIGRhdGFzZXQuZmFjZXRzLmxlbmd0aCArICcgZmFjZXRzJyxcbiAgICAgICAgICB0eXBlOiAnb2snXG4gICAgICAgIH0pO1xuICAgICAgICB3aW5kb3cuY29tcG9uZW50SGFuZGxlci51cGdyYWRlRG9tKCk7XG5cbiAgICAgICAgLy8gQXV0b21hdGljYWxseSBhY3RpdmF0ZSBkYXRhc2V0IGlmIGl0IGlzIHRoZSBvbmx5IG9uZVxuICAgICAgICBpZiAoYXBwLm1lLmRhdGFzZXRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICQoJy5tZGwtc3dpdGNoJykuY2xpY2soKTsgLy8gb25seSB3YXkgdG8gZ2V0IHRoZSBzd2l0Y2ggaW4gdGhlICdvbicgcG9zaXRpb25cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXYpIHtcbiAgICAgICAgYXBwLm1lLmRhdGFzZXRzLnJlbW92ZShkYXRhc2V0KTtcbiAgICAgICAgYXBwLm1lc3NhZ2Uoe1xuICAgICAgICAgIHRleHQ6ICdFcnJvciBwYXJzaW5nIEpTT04gZmlsZTogJyArIGV2LFxuICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgZXJyb3I6IGV2XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uIChldikge1xuICAgICAgdmFyIGVycm9yID0gZXYuc3JjRWxlbWVudC5lcnJvcjtcblxuICAgICAgYXBwLm1lc3NhZ2Uoe1xuICAgICAgICB0ZXh0OiAnRmlsZSBsb2FkaW5nIHByb2JsZW06ICcgKyBlcnJvcixcbiAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgZXJyb3I6IGV2XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmVhZGVyLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIGlmIChldi5sZW5ndGhDb21wdXRhYmxlKSB7XG4gICAgICAgIC8vIGV2LmxvYWRlZCBhbmQgZXYudG90YWwgYXJlIFByb2dyZXNzRXZlbnQgcHJvcGVydGllc1xuICAgICAgICBhcHAucHJvZ3Jlc3MocGFyc2VJbnQoMTAwLjAgKiBldi5sb2FkZWQgLyBldi50b3RhbCkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZWFkZXIucmVhZEFzVGV4dCh1cGxvYWRlZEZpbGUpO1xuICB9LFxuICBpbXBvcnRDU1Y6IGZ1bmN0aW9uICgpIHtcbiAgICAvLyB2YXIgZmlsZUxvYWRlciA9IHRoaXMucXVlcnlCeUhvb2soJ2Nzdi11cGxvYWQtaW5wdXQnKTtcbiAgICB2YXIgZmlsZUxvYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjc3Z1cGxvYWRCdG4nKTtcbiAgICB2YXIgdXBsb2FkZWRGaWxlID0gZmlsZUxvYWRlci5maWxlc1swXTtcbiAgICB2YXIgcmVhZGVyID0gbmV3IHdpbmRvdy5GaWxlUmVhZGVyKCk7XG4gICAgdmFyIGRhdGFVUkwgPSBmaWxlTG9hZGVyLmZpbGVzWzBdLm5hbWU7XG5cbiAgICAvLyBUT0RPOiBlbmZvcmNlIHNwb3QuZHJpdmVyID09PSAnY2xpZW50J1xuXG4gICAgdmFyIGRhdGFzZXQgPSBhcHAubWUuZGF0YXNldHMuYWRkKHtcbiAgICAgIG5hbWU6IGRhdGFVUkwsXG4gICAgICBVUkw6IGRhdGFVUkwsXG4gICAgICBkZXNjcmlwdGlvbjogJ0ltcG9ydGVkIENTViBmaWxlJ1xuICAgIH0pO1xuXG4gICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgYXBwLm1lc3NhZ2Uoe1xuICAgICAgICB0ZXh0OiAnUHJvY2Vzc2luZycsXG4gICAgICAgIHR5cGU6ICdvaydcbiAgICAgIH0pO1xuICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIGNvbHVtbnM6IGFwcC5DU1ZIZWFkZXJzLCAvLyB0cmVhdCBmaXJzdCBsaW5lIGFzIGhlYWRlciB3aXRoIGNvbHVtbiBuYW1lc1xuICAgICAgICByZWxheF9jb2x1bW5fY291bnQ6IGZhbHNlLCAvLyBhY2NlcHQgbWFsZm9ybWVkIGxpbmVzXG4gICAgICAgIGRlbGltaXRlcjogYXBwLkNTVlNlcGFyYXRvciwgLy8gZmllbGQgZGVsaW1pZXRlclxuICAgICAgICBxdW90ZTogYXBwLkNTVlF1b3RlLCAvLyBTdHJpbmcgcXVvdGluZyBjaGFyYWN0ZXJcbiAgICAgICAgY29tbWVudDogYXBwLkNTVkNvbW1lbnQsIC8vIFRyZWF0IGFsbCB0aGUgY2hhcmFjdGVycyBhZnRlciB0aGlzIG9uZSBhcyBhIGNvbW1lbnQuXG4gICAgICAgIHRyaW06IHRydWUgLy8gaWdub3JlIHdoaXRlIHNwYWNlIGFyb3VuZCBkZWxpbWl0ZXJcbiAgICAgIH07XG5cbiAgICAgIGNzdi5wYXJzZShldi50YXJnZXQucmVzdWx0LCBvcHRpb25zLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBhcHAubWUuZGF0YXNldHMucmVtb3ZlKGRhdGFzZXQpO1xuICAgICAgICAgIGFwcC5tZXNzYWdlKHtcbiAgICAgICAgICAgIHRleHQ6ICdFcnJvciBwYXJzaW5nIENTViBmaWxlOiAnICsgZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgZXJyb3I6IGV2XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0YXNldC5kYXRhID0gZGF0YTtcblxuICAgICAgICAgIC8vIGF1dG9tYXRpY2FsbHkgYW5hbHl6ZSBkYXRhc2V0XG4gICAgICAgICAgZGF0YXNldC5zY2FuKCk7XG4gICAgICAgICAgZGF0YXNldC5mYWNldHMuZm9yRWFjaChmdW5jdGlvbiAoZmFjZXQsIGkpIHtcbiAgICAgICAgICAgIGlmIChpIDwgMjApIHtcbiAgICAgICAgICAgICAgZmFjZXQuaXNBY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGlmIChmYWNldC5pc0NhdGVnb3JpYWwpIHtcbiAgICAgICAgICAgICAgICBmYWNldC5zZXRDYXRlZ29yaWVzKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmFjZXQuaXNDb250aW51b3VzIHx8IGZhY2V0LmlzRGF0ZXRpbWUgfHwgZmFjZXQuaXNEdXJhdGlvbikge1xuICAgICAgICAgICAgICAgIGZhY2V0LnNldE1pbk1heCgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYXBwLmFkZERhdGFzZXRUb0xvY2FsU3RvcmFnZShkYXRhc2V0KTtcbiAgICAgICAgICBhcHAubWVzc2FnZSh7XG4gICAgICAgICAgICB0ZXh0OiBkYXRhVVJMICsgJyB3YXMgdXBsb2FkZWQgc3VjY2VzZnVsbHkuIENvbmZpZ3VyZWQgJyArIGRhdGFzZXQuZmFjZXRzLmxlbmd0aCArICcgZmFjZXRzJyxcbiAgICAgICAgICAgIHR5cGU6ICdvaydcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB3aW5kb3cuY29tcG9uZW50SGFuZGxlci51cGdyYWRlRG9tKCk7XG5cbiAgICAgICAgICAvLyBBdXRvbWF0aWNhbGx5IGFjdGl2YXRlIGRhdGFzZXQgaWYgaXQgaXMgdGhlIG9ubHkgb25lXG4gICAgICAgICAgaWYgKGFwcC5tZS5kYXRhc2V0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICQoJy5tZGwtc3dpdGNoJykuY2xpY2soKTsgLy8gb25seSB3YXkgdG8gZ2V0IHRoZSBzd2l0Y2ggaW4gdGhlICdvbicgcG9zaXRpb25cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uIChldikge1xuICAgICAgYXBwLm1lLmRhdGFzZXRzLnJlbW92ZShkYXRhc2V0KTtcbiAgICAgIGFwcC5tZXNzYWdlKHtcbiAgICAgICAgdGV4dDogJ0ZpbGUgbG9hZGluZyBwcm9ibGVtOiAnICsgcmVhZGVyLmVycm9yLFxuICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICBlcnJvcjogcmVhZGVyLmVycm9yXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmVhZGVyLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIGlmIChldi5sZW5ndGhDb21wdXRhYmxlKSB7XG4gICAgICAgIC8vIGV2LmxvYWRlZCBhbmQgZXYudG90YWwgYXJlIFByb2dyZXNzRXZlbnQgcHJvcGVydGllc1xuICAgICAgICBhcHAucHJvZ3Jlc3MocGFyc2VJbnQoMTAwLjAgKiBldi5sb2FkZWQgLyBldi50b3RhbCkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZWFkZXIucmVhZEFzVGV4dCh1cGxvYWRlZEZpbGUpO1xuICB9LFxuICBleHBvcnRTZXNzaW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGpzb24gPSBhcHAubWUudG9KU09OKCk7XG5cbiAgICBpZiAoYXBwLm1lLnNlc3Npb25UeXBlID09PSAnY2xpZW50Jykge1xuICAgICAgLy8gZm9yIGNsaWVudCBkYXRhc2V0cywgYWxzbyBzYXZlIHRoZSBkYXRhIGluIHRoZSBzZXNzaW9uIGZpbGVcbiAgICAgIGFwcC5tZS5kYXRhc2V0cy5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhc2V0LCBpKSB7XG4gICAgICAgIGpzb24uZGF0YXNldHNbaV0uZGF0YSA9IGRhdGFzZXQuZGF0YTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB2YXIgYmxvYiA9IG5ldyB3aW5kb3cuQmxvYihbSlNPTi5zdHJpbmdpZnkoanNvbildLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nfSk7XG4gICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG4gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgZWxlbWVudC5kb3dubG9hZCA9ICdzZXNzaW9uLmpzb24nO1xuICAgIGVsZW1lbnQuaHJlZiA9IHVybDtcbiAgICBlbGVtZW50LmNsaWNrKCk7XG5cbiAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICB9LFxuICBleHBvcnREYXRhOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNoYXJ0c0RhdGEgPSBbXTtcblxuICAgIHZhciBwYXJ0aXRpb25SYW5rVG9OYW1lID0gezE6ICdhJywgMjogJ2InLCAzOiAnYycsIDQ6ICdkJ307XG4gICAgdmFyIGFnZ3JlZ2F0ZVJhbmtUb05hbWUgPSB7MTogJ2FhJywgMjogJ2JiJywgMzogJ2NjJywgNDogJ2RkJywgNTogJ2VlJ307XG5cbiAgICBhcHAubWUuZGF0YXZpZXcuZmlsdGVycy5mb3JFYWNoKGZ1bmN0aW9uIChmaWx0ZXIpIHtcbiAgICAgIHZhciBtYXAgPSB7fTtcbiAgICAgIHZhciBheGlzID0gW107XG4gICAgICBmaWx0ZXIucGFydGl0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChwYXJ0aXRpb24pIHtcbiAgICAgICAgbWFwW3BhcnRpdGlvblJhbmtUb05hbWVbcGFydGl0aW9uLnJhbmtdXSA9IHBhcnRpdGlvbi5mYWNldE5hbWU7XG4gICAgICAgIGF4aXMucHVzaChwYXJ0aXRpb24uZmFjZXROYW1lKTtcbiAgICAgIH0pO1xuICAgICAgZmlsdGVyLmFnZ3JlZ2F0ZXMuZm9yRWFjaChmdW5jdGlvbiAoYWdncmVnYXRlKSB7XG4gICAgICAgIG1hcFthZ2dyZWdhdGVSYW5rVG9OYW1lW2FnZ3JlZ2F0ZS5yYW5rXV0gPSBhZ2dyZWdhdGUub3BlcmF0aW9uICsgJyAnICsgYWdncmVnYXRlLmZhY2V0TmFtZTtcbiAgICAgIH0pO1xuICAgICAgbWFwWydjb3VudCddID0gJ2NvdW50JztcblxuICAgICAgdmFyIGRhdGEgPSBbXTtcbiAgICAgIGZpbHRlci5kYXRhLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgdmFyIG1hcHBlZCA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhkKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgaWYgKG1hcFtrXSkge1xuICAgICAgICAgICAgbWFwcGVkW21hcFtrXV0gPSBkW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGEucHVzaChtYXBwZWQpO1xuICAgICAgfSk7XG4gICAgICBjaGFydHNEYXRhLnB1c2goe1xuICAgICAgICBjaGFydFR5cGU6IGZpbHRlci5jaGFydFR5cGUsXG4gICAgICAgIGF4aXM6IGF4aXMuam9pbignLCcpLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHZhciBibG9iID0gbmV3IHdpbmRvdy5CbG9iKFtKU09OLnN0cmluZ2lmeShjaGFydHNEYXRhKV0sIHt0eXBlOiAnYXBwbGljYXRpb24vanNvbid9KTtcbiAgICB2YXIgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBlbGVtZW50LmRvd25sb2FkID0gJ2RhdGEuanNvbic7XG4gICAgZWxlbWVudC5ocmVmID0gdXJsO1xuICAgIGVsZW1lbnQuY2xpY2soKTtcblxuICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gIH0sXG4gIGltcG9ydExvY2FsU2Vzc2lvbjogZnVuY3Rpb24gKCkge1xuICAgIC8vIHZhciBmaWxlTG9hZGVyID0gdGhpcy5xdWVyeUJ5SG9vaygnc2Vzc2lvbi11cGxvYWQtaW5wdXQnKTtcbiAgICB2YXIgZmlsZUxvYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZXNzaW9udXBsb2FkQnRuJyk7XG4gICAgdmFyIHVwbG9hZGVkRmlsZSA9IGZpbGVMb2FkZXIuZmlsZXNbMF07XG4gICAgdmFyIHJlYWRlciA9IG5ldyB3aW5kb3cuRmlsZVJlYWRlcigpO1xuXG4gICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGV2LnRhcmdldC5yZXN1bHQpO1xuICAgICAgYXBwLmxvYWRTZXNzaW9uQmxvYihkYXRhKTtcbiAgICAgIGFwcC5tZXNzYWdlKHtcbiAgICAgICAgdGV4dDogJ1Nlc3Npb24gXCInICsgdXBsb2FkZWRGaWxlLm5hbWUgKyAnXCIgd2FzIHVwbG9hZGVkIHN1Y2Nlc2Z1bGx5JyxcbiAgICAgICAgdHlwZTogJ29rJ1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICBhcHAubWVzc2FnZSh7XG4gICAgICAgIHRleHQ6ICdDb3VsZCBub3QgbG9hZCBTZXNzaW9uIFwiJyArIHVwbG9hZGVkRmlsZS5uYW1lICsgJ1wiJyxcbiAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgZXJyb3I6IGV2XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmVhZGVyLnJlYWRBc1RleHQodXBsb2FkZWRGaWxlKTtcbiAgfSxcbiAgemVub2RvUmVxdWVzdDogYXN5bmMgZnVuY3Rpb24oemVub2RvUGFyYW1zKSB7XG5cbiAgICB2YXIgdXJsX2FkZGl0aW9uID0gemVub2RvUGFyYW1zLnVybF9hZGRpdGlvbjtcbiAgICB2YXIgcmVxdWVzdFR5cGUgPSB6ZW5vZG9QYXJhbXMucmVxdWVzdFR5cGU7XG4gICAgdmFyIGJvZHlEYXRhID0gemVub2RvUGFyYW1zLmJvZHlEYXRhO1xuICAgIC8vIGNvbnNvbGUubG9nKCdyZXF1ZXN0VHlwZTonLCByZXF1ZXN0VHlwZSk7XG5cbiAgICB2YXIgYmFzZV91cmwgPSBuZXcgVVJMKFwiaHR0cHM6Ly9zYW5kYm94Lnplbm9kby5vcmcvYXBpL2RlcG9zaXQvZGVwb3NpdGlvbnNcIik7XG5cbiAgICBpZiAoemVub2RvUGFyYW1zLmJhc2VfdXJsKXtcbiAgICAgIGJhc2VfdXJsID0gemVub2RvUGFyYW1zLmJhc2VfdXJsO1xuICAgIH1cblxuICAgIHZhciB6ZW5vZG9Ub2tlbiA9IHByb2Nlc3MuZW52LlpFTk9ET19UT0tFTjtcbiAgICBpZiAodXJsX2FkZGl0aW9uKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhcIiBBZGRpdGlvbiBpcyBwcm92aWRlZDogXCIsIHVybF9hZGRpdGlvbik7XG4gICAgICBiYXNlX3VybCA9IGJhc2VfdXJsICsgXCIvXCIgKyB1cmxfYWRkaXRpb247XG4gICAgfVxuICAgIHZhciB1cmwgPSBuZXcgVVJMKGJhc2VfdXJsKSxcbiAgICBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IHplbm9kb1Rva2VuXG4gICAgfTtcbiAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goZnVuY3Rpb24oa2V5KXtcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKGtleSwgcGFyYW1zW2tleV0pO1xuICAgIH0pO1xuXG4gICAgLy8gY29uc29sZS5sb2coJ1plbm9kbyBiYXNlX3VybDonLCBiYXNlX3VybCk7XG4gICAgLy8gY29uc29sZS5sb2coJ1plbm9kbyB1cmw6JywgdXJsKTtcblxuICAgIHZhciByZXF1ZXN0X29wdGlvbnMgPSB7fTtcblxuICAgIGlmIChyZXF1ZXN0VHlwZSA9PT0gXCJkb2lcIikge1xuICAgICAgcmVxdWVzdF9vcHRpb25zID0ge1xuICAgICAgICBjYWNoZTogXCJuby1jYWNoZVwiLFxuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHlEYXRhKVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChyZXF1ZXN0VHlwZSA9PT0gXCJ1cGxvYWRcIikge1xuICAgICAgcmVxdWVzdF9vcHRpb25zID0ge1xuICAgICAgICBjYWNoZTogXCJuby1jYWNoZVwiLFxuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBib2R5OiBib2R5RGF0YVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChyZXF1ZXN0VHlwZSA9PT0gXCJwdWJsaXNoXCIpIHtcbiAgICAgIHJlcXVlc3Rfb3B0aW9ucyA9IHtcbiAgICAgICAgY2FjaGU6IFwibm8tY2FjaGVcIixcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAocmVxdWVzdFR5cGUgPT09IFwibWV0YVwiKSB7XG4gICAgICByZXF1ZXN0X29wdGlvbnMgPSB7XG4gICAgICAgIGNhY2hlOiBcIm5vLWNhY2hlXCIsXG4gICAgICAgIG1ldGhvZDogXCJQVVRcIixcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHlEYXRhKVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChyZXF1ZXN0VHlwZSA9PT0gXCJkb3dubG9hZFwiKSB7XG4gICAgICByZXF1ZXN0X29wdGlvbnMgPSB7XG4gICAgICAgIGNhY2hlOiBcIm5vLWNhY2hlXCIsXG4gICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1Vua25vd24gbWV0aG9kJyk7XG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5sb2coJ3JlcXVlc3Rfb3B0aW9uczogJywgcmVxdWVzdF9vcHRpb25zKTtcblxuICAgIHZhciByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgcmVxdWVzdF9vcHRpb25zKTtcbiAgICB2YXIgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxufSk7XG5cbi8qKlxuICogcnVuIGl0IG9uIGRvbVJlYWR5XG4gKi9cbmRvbVJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgYXBwLmluaXQoKTtcblxuICBpZiAoIHByb2Nlc3MuZW52Lk1PREUgPT09ICdzZXJ2ZXInICkge1xuICAgIGNvbnNvbGUubG9nKCdjb25uZWN0aW5nIHRvIGRhdGFiYXNlIGF0JywgcHJvY2Vzcy5lbnYuREJfU0VSVkVSICsgXCI6XCIgKyBwcm9jZXNzLmVudi5EQl9TRVJWRVJfUE9SVCk7XG4gICAgYXBwLm1lLmlzTG9ja2VkRG93biA9IHRydWU7XG4gICAgYXBwLm1lLmNvbm5lY3RUb1NlcnZlcihwcm9jZXNzLmVudi5EQl9TRVJWRVIgKyBcIjpcIiArIHByb2Nlc3MuZW52LkRCX1NFUlZFUl9QT1JUKTtcbiAgICBhcHAubWUuc29ja2V0LmVtaXQoJ2dldERhdGFzZXRzJyk7XG4gIH1cbn0pO1xuXG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFBQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFBQTs7Ozs7OztBQU9BO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUFBOzs7O0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBREE7QUFGQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQURBO0FBUkE7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUFBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFOQTtBQVFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBTkE7QUFRQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBM0VBO0FBQUE7QUFDQTtBQURBO0FBNkVBO0FBN0VBO0FBQUE7QUFDQTtBQURBO0FBOEVBO0FBOUVBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBL3JCQTtBQWt4QkE7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxlQUtBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9218\n")},"96da":function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar CategorialRuleView = __webpack_require__(/*! ./categorial-rule */ \"c783\");\n\nmodule.exports = View.extend({\n  template: templates.configureFacet.facetTransformCategorial,\n  render: function render() {\n    this.renderWithTemplate(this);\n    this.renderCollection(this.model.rules, CategorialRuleView, this.queryByHook('categorial-rules-table'));\n    return this;\n  },\n  events: {\n    'click [data-hook~=categorial-addone-button]': function clickDataHookCategorialAddoneButton() {\n      this.model.rules.add({});\n    },\n    'click [data-hook~=categorial-removeall-button]': function clickDataHookCategorialRemoveallButton() {\n      this.model.reset();\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTZkYS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZmFjZXQvZmFjZXQtdHJhbnNmb3JtLWNhdGVnb3JpYWwuanM/ZmJlMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgVmlldyA9IHJlcXVpcmUoJ2FtcGVyc2FuZC12aWV3Jyk7XG52YXIgdGVtcGxhdGVzID0gcmVxdWlyZSgnLi4vLi4vdGVtcGxhdGVzJyk7XG5cbnZhciBDYXRlZ29yaWFsUnVsZVZpZXcgPSByZXF1aXJlKCcuL2NhdGVnb3JpYWwtcnVsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXcuZXh0ZW5kKHtcbiAgdGVtcGxhdGU6IHRlbXBsYXRlcy5jb25maWd1cmVGYWNldC5mYWNldFRyYW5zZm9ybUNhdGVnb3JpYWwsXG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVuZGVyV2l0aFRlbXBsYXRlKHRoaXMpO1xuICAgIHRoaXMucmVuZGVyQ29sbGVjdGlvbih0aGlzLm1vZGVsLnJ1bGVzLCBDYXRlZ29yaWFsUnVsZVZpZXcsIHRoaXMucXVlcnlCeUhvb2soJ2NhdGVnb3JpYWwtcnVsZXMtdGFibGUnKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgZXZlbnRzOiB7XG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWNhdGVnb3JpYWwtYWRkb25lLWJ1dHRvbl0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLnJ1bGVzLmFkZCh7fSk7XG4gICAgfSxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349Y2F0ZWdvcmlhbC1yZW1vdmVhbGwtYnV0dG9uXSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwucmVzZXQoKTtcbiAgICB9XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFSQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///96da\n")},"9ae5":function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar TimePartsSelect = __webpack_require__(/*! ./time-parts-select */ \"c678\");\n\nvar TimeZonesSelect = __webpack_require__(/*! ./time-zones-select */ \"f3d5\");\n\nvar DurationUnitsSelect = __webpack_require__(/*! ./duration-units-select */ \"4916\");\n\nmodule.exports = View.extend({\n  template: templates.configureFacet.facetTransformDatetime,\n  bindings: {\n    'model.transformedZone': {\n      type: 'value',\n      hook: 'transform-time-zone-input'\n    },\n    'model.transformedReference': {\n      type: 'value',\n      hook: 'transform-time-reference-input'\n    }\n  },\n  events: {\n    'change [data-hook~=transform-time-zone-input]': function changeDataHookTransformTimeZoneInput() {\n      this.model.zone = this.queryByHook('transform-time-zone-input').value;\n    },\n    'change [data-hook~=transform-time-format-input]': function changeDataHookTransformTimeFormatInput() {\n      this.model.format = this.queryByHook('transform-time-format-input').value;\n    },\n    'change [data-hook~=transform-time-transformedzone-input]': function changeDataHookTransformTimeTransformedzoneInput() {\n      this.model.transformedZone = this.queryByHook('transform-time-transformedzone-input').value;\n    },\n    'change [data-hook~=transform-time-transformedformat-input]': function changeDataHookTransformTimeTransformedformatInput() {\n      this.model.transformedFormat = this.queryByHook('transform-time-transformedformat-input').value;\n    },\n    'change [data-hook~=transform-time-transformedreference-input]': function changeDataHookTransformTimeTransformedreferenceInput() {\n      this.model.transformedReference = this.queryByHook('transform-time-transformedreference-input').value;\n    },\n    'change [data-hook~=transform-time-transformedunits-input]': function changeDataHookTransformTimeTransformedunitsInput() {\n      this.model.transformedReference = this.queryByHook('transform-time-transformedunits-input').value;\n    }\n  },\n  subviews: {\n    timeParts: {\n      hook: 'time-parts',\n      prepareView: function prepareView(el) {\n        return new TimePartsSelect({\n          el: el,\n          model: this.model\n        });\n      }\n    },\n    timeZones: {\n      hook: 'time-zones',\n      prepareView: function prepareView(el) {\n        return new TimeZonesSelect({\n          el: el,\n          field: 'zone',\n          model: this.model\n        });\n      }\n    },\n    transformedTimeZones: {\n      hook: 'transformed-time-zones',\n      prepareView: function prepareView(el) {\n        return new TimeZonesSelect({\n          el: el,\n          field: 'transformedZone',\n          model: this.model\n        });\n      }\n    },\n    transformedTimeUnits: {\n      hook: 'transformed-time-units',\n      constructor: DurationUnitsSelect\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOWFlNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZmFjZXQvZmFjZXQtdHJhbnNmb3JtLWRhdGV0aW1lLmpzPzA4NjAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uLy4uL3RlbXBsYXRlcycpO1xudmFyIFRpbWVQYXJ0c1NlbGVjdCA9IHJlcXVpcmUoJy4vdGltZS1wYXJ0cy1zZWxlY3QnKTtcbnZhciBUaW1lWm9uZXNTZWxlY3QgPSByZXF1aXJlKCcuL3RpbWUtem9uZXMtc2VsZWN0Jyk7XG52YXIgRHVyYXRpb25Vbml0c1NlbGVjdCA9IHJlcXVpcmUoJy4vZHVyYXRpb24tdW5pdHMtc2VsZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gVmlldy5leHRlbmQoe1xuICB0ZW1wbGF0ZTogdGVtcGxhdGVzLmNvbmZpZ3VyZUZhY2V0LmZhY2V0VHJhbnNmb3JtRGF0ZXRpbWUsXG4gIGJpbmRpbmdzOiB7XG4gICAgJ21vZGVsLnRyYW5zZm9ybWVkWm9uZSc6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAndHJhbnNmb3JtLXRpbWUtem9uZS1pbnB1dCdcbiAgICB9LFxuICAgICdtb2RlbC50cmFuc2Zvcm1lZFJlZmVyZW5jZSc6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAndHJhbnNmb3JtLXRpbWUtcmVmZXJlbmNlLWlucHV0J1xuICAgIH1cbiAgfSxcbiAgZXZlbnRzOiB7XG4gICAgJ2NoYW5nZSBbZGF0YS1ob29rfj10cmFuc2Zvcm0tdGltZS16b25lLWlucHV0XSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwuem9uZSA9IHRoaXMucXVlcnlCeUhvb2soJ3RyYW5zZm9ybS10aW1lLXpvbmUtaW5wdXQnKS52YWx1ZTtcbiAgICB9LFxuICAgICdjaGFuZ2UgW2RhdGEtaG9va349dHJhbnNmb3JtLXRpbWUtZm9ybWF0LWlucHV0XSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwuZm9ybWF0ID0gdGhpcy5xdWVyeUJ5SG9vaygndHJhbnNmb3JtLXRpbWUtZm9ybWF0LWlucHV0JykudmFsdWU7XG4gICAgfSxcbiAgICAnY2hhbmdlIFtkYXRhLWhvb2t+PXRyYW5zZm9ybS10aW1lLXRyYW5zZm9ybWVkem9uZS1pbnB1dF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLnRyYW5zZm9ybWVkWm9uZSA9IHRoaXMucXVlcnlCeUhvb2soJ3RyYW5zZm9ybS10aW1lLXRyYW5zZm9ybWVkem9uZS1pbnB1dCcpLnZhbHVlO1xuICAgIH0sXG4gICAgJ2NoYW5nZSBbZGF0YS1ob29rfj10cmFuc2Zvcm0tdGltZS10cmFuc2Zvcm1lZGZvcm1hdC1pbnB1dF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLnRyYW5zZm9ybWVkRm9ybWF0ID0gdGhpcy5xdWVyeUJ5SG9vaygndHJhbnNmb3JtLXRpbWUtdHJhbnNmb3JtZWRmb3JtYXQtaW5wdXQnKS52YWx1ZTtcbiAgICB9LFxuICAgICdjaGFuZ2UgW2RhdGEtaG9va349dHJhbnNmb3JtLXRpbWUtdHJhbnNmb3JtZWRyZWZlcmVuY2UtaW5wdXRdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC50cmFuc2Zvcm1lZFJlZmVyZW5jZSA9IHRoaXMucXVlcnlCeUhvb2soJ3RyYW5zZm9ybS10aW1lLXRyYW5zZm9ybWVkcmVmZXJlbmNlLWlucHV0JykudmFsdWU7XG4gICAgfSxcbiAgICAnY2hhbmdlIFtkYXRhLWhvb2t+PXRyYW5zZm9ybS10aW1lLXRyYW5zZm9ybWVkdW5pdHMtaW5wdXRdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC50cmFuc2Zvcm1lZFJlZmVyZW5jZSA9IHRoaXMucXVlcnlCeUhvb2soJ3RyYW5zZm9ybS10aW1lLXRyYW5zZm9ybWVkdW5pdHMtaW5wdXQnKS52YWx1ZTtcbiAgICB9XG4gIH0sXG4gIHN1YnZpZXdzOiB7XG4gICAgdGltZVBhcnRzOiB7XG4gICAgICBob29rOiAndGltZS1wYXJ0cycsXG4gICAgICBwcmVwYXJlVmlldzogZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHJldHVybiBuZXcgVGltZVBhcnRzU2VsZWN0KHtcbiAgICAgICAgICBlbDogZWwsXG4gICAgICAgICAgbW9kZWw6IHRoaXMubW9kZWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0aW1lWm9uZXM6IHtcbiAgICAgIGhvb2s6ICd0aW1lLXpvbmVzJyxcbiAgICAgIHByZXBhcmVWaWV3OiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUaW1lWm9uZXNTZWxlY3Qoe1xuICAgICAgICAgIGVsOiBlbCxcbiAgICAgICAgICBmaWVsZDogJ3pvbmUnLFxuICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgdHJhbnNmb3JtZWRUaW1lWm9uZXM6IHtcbiAgICAgIGhvb2s6ICd0cmFuc2Zvcm1lZC10aW1lLXpvbmVzJyxcbiAgICAgIHByZXBhcmVWaWV3OiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUaW1lWm9uZXNTZWxlY3Qoe1xuICAgICAgICAgIGVsOiBlbCxcbiAgICAgICAgICBmaWVsZDogJ3RyYW5zZm9ybWVkWm9uZScsXG4gICAgICAgICAgbW9kZWw6IHRoaXMubW9kZWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB0cmFuc2Zvcm1lZFRpbWVVbml0czoge1xuICAgICAgaG9vazogJ3RyYW5zZm9ybWVkLXRpbWUtdW5pdHMnLFxuICAgICAgY29uc3RydWN0b3I6IER1cmF0aW9uVW5pdHNTZWxlY3RcbiAgICB9XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFMQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbEJBO0FBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBUkE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQUZBO0FBOUJBO0FBaENBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///9ae5\n")},"9cb1":function(module,exports,__webpack_require__){eval("/**\n * @classdesc line chart class\n * @class LineChart\n * @augments BaseChart\n */\nvar BaseChart = __webpack_require__(/*! ./base-chart */ \"6339\");\n\nvar moment = __webpack_require__(/*! moment-timezone */ \"6c9d\");\n\nmodule.exports = BaseChart.extend({\n  initialize: function initialize() {\n    this.slots.reset([{\n      description: 'X axis',\n      type: 'partition',\n      rank: 1,\n      required: true,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Group by',\n      type: 'partition',\n      rank: 2,\n      required: false,\n      supportedFacets: ['categorial', 'datetime', 'duration', 'continuous', 'text']\n    }, {\n      description: 'Y axis',\n      type: 'aggregate',\n      rank: 1,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }, {\n      description: 'X error',\n      type: 'aggregate',\n      rank: 2,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }, {\n      description: 'Y error',\n      type: 'aggregate',\n      rank: 3,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }, {\n      description: 'Second Y axis',\n      type: 'aggregate',\n      rank: 4,\n      required: false,\n      supportedFacets: ['continuous', 'duration']\n    }]);\n  },\n  chartjsConfig: function chartjsConfig() {\n    return {\n      type: 'lineError',\n      data: {\n        datasets: [],\n        labels: []\n      },\n      options: {\n        title: {\n          display: true,\n          position: 'top'\n        },\n        scales: {\n          xAxes: [{\n            type: 'linear',\n            position: 'bottom',\n            scaleLabel: {\n              display: true\n            },\n            time: {\n              parser: function parser(label) {\n                return moment(label, moment.ISO_8601);\n              }\n            }\n          }],\n          yAxes: [{\n            type: 'linear',\n            display: true,\n            position: 'left',\n            id: 'first-scale'\n          }, {\n            type: 'linear',\n            display: false,\n            position: 'right',\n            id: 'second-scale'\n          }, {\n            type: 'linear',\n            display: false,\n            position: 'right',\n            id: 'selection-scale',\n            ticks: {\n              min: 0,\n              max: 1\n            }\n          }]\n        },\n        tooltips: {}\n      }\n    };\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOWNiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL21vZGVscy9saW5lY2hhcnQuanM/ZGM2MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBjbGFzc2Rlc2MgbGluZSBjaGFydCBjbGFzc1xuICogQGNsYXNzIExpbmVDaGFydFxuICogQGF1Z21lbnRzIEJhc2VDaGFydFxuICovXG52YXIgQmFzZUNoYXJ0ID0gcmVxdWlyZSgnLi9iYXNlLWNoYXJ0Jyk7XG52YXIgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50LXRpbWV6b25lJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gQmFzZUNoYXJ0LmV4dGVuZCh7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNsb3RzLnJlc2V0KFtcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdYIGF4aXMnLFxuICAgICAgICB0eXBlOiAncGFydGl0aW9uJyxcbiAgICAgICAgcmFuazogMSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIHN1cHBvcnRlZEZhY2V0czogWydjYXRlZ29yaWFsJywgJ2RhdGV0aW1lJywgJ2R1cmF0aW9uJywgJ2NvbnRpbnVvdXMnLCAndGV4dCddXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0dyb3VwIGJ5JyxcbiAgICAgICAgdHlwZTogJ3BhcnRpdGlvbicsXG4gICAgICAgIHJhbms6IDIsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NhdGVnb3JpYWwnLCAnZGF0ZXRpbWUnLCAnZHVyYXRpb24nLCAnY29udGludW91cycsICd0ZXh0J11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnWSBheGlzJyxcbiAgICAgICAgdHlwZTogJ2FnZ3JlZ2F0ZScsXG4gICAgICAgIHJhbms6IDEsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NvbnRpbnVvdXMnLCAnZHVyYXRpb24nXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdYIGVycm9yJyxcbiAgICAgICAgdHlwZTogJ2FnZ3JlZ2F0ZScsXG4gICAgICAgIHJhbms6IDIsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NvbnRpbnVvdXMnLCAnZHVyYXRpb24nXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdZIGVycm9yJyxcbiAgICAgICAgdHlwZTogJ2FnZ3JlZ2F0ZScsXG4gICAgICAgIHJhbms6IDMsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NvbnRpbnVvdXMnLCAnZHVyYXRpb24nXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdTZWNvbmQgWSBheGlzJyxcbiAgICAgICAgdHlwZTogJ2FnZ3JlZ2F0ZScsXG4gICAgICAgIHJhbms6IDQsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgc3VwcG9ydGVkRmFjZXRzOiBbJ2NvbnRpbnVvdXMnLCAnZHVyYXRpb24nXVxuICAgICAgfVxuICAgIF0pO1xuICB9LFxuICBjaGFydGpzQ29uZmlnOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdsaW5lRXJyb3InLFxuICAgICAgZGF0YToge1xuICAgICAgICBkYXRhc2V0czogW10sXG4gICAgICAgIGxhYmVsczogW11cbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgZGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICBwb3NpdGlvbjogJ3RvcCdcbiAgICAgICAgfSxcbiAgICAgICAgc2NhbGVzOiB7XG4gICAgICAgICAgeEF4ZXM6IFt7XG4gICAgICAgICAgICB0eXBlOiAnbGluZWFyJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgICAgICAgIHNjYWxlTGFiZWw6IHtcbiAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRpbWU6IHtcbiAgICAgICAgICAgICAgcGFyc2VyOiBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9tZW50KGxhYmVsLCBtb21lbnQuSVNPXzg2MDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfV0sXG4gICAgICAgICAgeUF4ZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ2xpbmVhcicsXG4gICAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICAgIGlkOiAnZmlyc3Qtc2NhbGUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAnbGluZWFyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAncmlnaHQnLFxuICAgICAgICAgICAgICBpZDogJ3NlY29uZC1zY2FsZSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICdsaW5lYXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcbiAgICAgICAgICAgICAgcG9zaXRpb246ICdyaWdodCcsXG4gICAgICAgICAgICAgIGlkOiAnc2VsZWN0aW9uLXNjYWxlJyxcbiAgICAgICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQU5BO0FBWUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFMQTtBQTFCQTtBQXNDQTtBQTNDQTtBQU5BO0FBcURBO0FBckdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///9cb1\n")},"9d44":function(module,exports,__webpack_require__){eval("var app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar Spot = __webpack_require__(/*! spot-framework */ \"3b07\");\n\nvar BaseWidget = __webpack_require__(/*! ./base-widget */ \"26ef\");\n\nvar Chart = __webpack_require__(/*! chart.js */ \"70b5\");\n\nvar colors = __webpack_require__(/*! ../../colors */ \"eb63\");\n\nvar misval = Spot.util.misval;\n\nvar util = __webpack_require__(/*! ./util */ \"2b41\"); // used for pie, bar, horizontalbar, and radar charts\n// modify the horizontalbarchart to have the group name printed on the bar\n\n\nChart.pluginService.register({\n  afterDatasetsDraw: function afterDatasetsDraw(chartInstance) {\n    var chartType = chartInstance.config.type;\n\n    if (chartType === 'horizontalBarError') {\n      var scale = chartInstance.scales['y-axis-0'];\n      scale.draw(scale);\n    }\n  }\n});\n\nfunction defaultErrorDir(model) {\n  var t = model.getType();\n\n  if (t === 'barchart') {\n    return 'vertical';\n  } else if (t === 'horizontalbarchart') {\n    return 'horizontal';\n  } else {\n    // pie radar\n    return 'none';\n  }\n}\n\nfunction acceptTimeAxis(model) {\n  var t = model.getType();\n  return t === 'barchart';\n}\n\nfunction hasPerItemColor(model) {\n  // data  Array\n  // color depending on plot type:\n  //           Array<Color>: barchart, piechart\n  //           Color:        radarchart\n  var t = model.getType();\n  return t === 'barchart' || t === 'horizontalbarchart' || t === 'piechart';\n} // true: color items by the index in the data array; for cateogrial facets\n// false:  color items by the index of their subgroup\n\n\nfunction colorByIndex(model) {\n  var t = model.getType();\n  return t === 'piechart';\n} // Called by Chartjs, this -> chart instance\n\n\nfunction onClick(ev, elements) {\n  if (elements.length > 0) {\n    var filter = this._Ampersandview.model.filter;\n    var partition = filter.partitions.get(1, 'rank');\n    partition.updateSelection(partition.groups.models[elements[0]._index]);\n    filter.updateDataFilter();\n    app.me.dataview.getData();\n  }\n}\n\nfunction _deinitChart(view) {\n  if (view._chartjs) {\n    view._chartjs.destroy();\n\n    delete view._chartjs;\n  }\n\n  delete view._config;\n  var canvas = view.queryByHook('canvas');\n\n  if (canvas) {\n    canvas.parentNode.removeChild(canvas);\n  }\n\n  view.isInitialized = false;\n}\n\nfunction _initChart(view) {\n  // Configure plot\n  view._config = view.model.chartjsConfig();\n  var options = view._config.options;\n  var partition = view.model.filter.partitions.get(1, 'rank'); // axis types\n\n  if (acceptTimeAxis(view.model)) {\n    if (partition.isDatetime) {\n      options.scales.xAxes[0].type = 'time';\n    } else if (partition.isDuration) {\n      options.scales.xAxes[0].type = 'spot-duration';\n    } else if (partition.isCategorial) {\n      options.scales.xAxes[0].type = 'category';\n    }\n  } // axis labels and title\n\n\n  if (view.model.getType() === 'barchart' || view.model.getType() === 'horizontalbarchart') {\n    options.scales.xAxes[0].scaleLabel.display = partition.showLabel;\n    options.scales.xAxes[0].scaleLabel.labelString = partition.label;\n  }\n\n  options.title.text = view.model.getTitle(); // mouse selection callbacks\n\n  if (view.model.getType() !== 'radarchart') {\n    options.onClick = onClick;\n  } // force a square full size plot\n\n\n  var width = view.el.offsetWidth;\n  var height = view.el.offsetHeight;\n  var canvas = document.createElement('canvas');\n  canvas.setAttribute('data-hook', 'canvas');\n  view.el.appendChild(canvas);\n  var ctx = canvas.getContext('2d');\n  ctx.canvas.width = width;\n  ctx.canvas.height = height; // Create Chartjs object\n\n  view._chartjs = new Chart(ctx, view._config); // In callbacks on the chart we will need the view, so store a reference\n\n  view._chartjs._Ampersandview = view;\n  view.isInitialized = true;\n}\n\nfunction _update(view) {\n  if (!view.isInitialized) {\n    console.warn('Cannot update chart, not initialized', view);\n    return;\n  }\n\n  var model = view.model;\n  var filter = view.model.filter;\n  var partitionA = filter.partitions.get(1, 'rank');\n  var partitionB = filter.partitions.get(2, 'rank');\n  var chartData = view._config.data;\n  util.resizeChartjsData(chartData, partitionA, partitionB, {\n    perItem: hasPerItemColor(model)\n  }); // update legends and tooltips:\n\n  if (model.getType() === 'piechart') {\n    view._config.options.legend.display = partitionA.showLegend;\n    view._config.options.tooltips.mode = 'single';\n  } else {\n    if (partitionB && partitionB.showLegend) {\n      view._config.options.legend.display = true;\n    } else {\n      view._config.options.legend.display = false;\n    }\n\n    if (partitionB && partitionB.groups && partitionB.groups.length > 1) {\n      view._config.options.tooltips.mode = 'label';\n    } else {\n      view._config.options.tooltips.mode = 'single';\n    }\n  }\n\n  var aggregate;\n  var valueFn;\n  aggregate = filter.aggregates.get(1, 'rank');\n\n  if (aggregate) {\n    valueFn = function valueFn(group) {\n      if (group.aa !== misval) {\n        return parseFloat(group.aa) || 0;\n      }\n\n      return 0;\n    };\n  } else {\n    valueFn = function valueFn(group) {\n      if (group.count !== misval) {\n        return group.count;\n      }\n\n      return 0;\n    };\n  }\n\n  var errorFn;\n  aggregate = filter.aggregates.get(2, 'rank');\n\n  if (aggregate) {\n    errorFn = function errorFn(group) {\n      if (group.bb !== misval) {\n        return parseFloat(group.bb) || 0;\n      }\n\n      return 0;\n    }; // use preset errorDir\n\n\n    view._config.options.errorDir = defaultErrorDir(model);\n  } else {\n    errorFn = function errorFn(group) {\n      return null;\n    };\n\n    view._config.options.errorDir = 'none';\n  }\n\n  var filterFn = partitionA.filterFunction(); // add datapoints\n\n  filter.data.forEach(function (group) {\n    var i = util.partitionValueToIndex(partitionA, group.a);\n    var j = util.partitionValueToIndex(partitionB, group.b); // only plot if both values are well defined\n\n    if (i >= 0 && j >= 0) {\n      // data value\n      chartData.datasets[j].data[i] = valueFn(group);\n      chartData.datasets[j].error[i] = errorFn(group); // data color\n\n      if (hasPerItemColor(model)) {\n        if (filterFn(partitionA.groups.models[i].value)) {\n          if (colorByIndex(model)) {\n            chartData.datasets[j].backgroundColor[i] = colors.getColor(i).css();\n          } else {\n            chartData.datasets[j].backgroundColor[i] = colors.getColor(j).css();\n          }\n        } else {\n          chartData.datasets[j].backgroundColor[i] = colors.unselectedColor.css();\n        }\n      }\n    }\n  }); // Hand-off to ChartJS for plotting\n\n  view._chartjs.update();\n}\n\nmodule.exports = BaseWidget.extend({\n  template: '<div class=\"widgetInner mdl-card__media\"></div>',\n  update: function update() {\n    _update(this);\n  },\n  initChart: function initChart() {\n    _initChart(this);\n  },\n  deinitChart: function deinitChart() {\n    _deinitChart(this);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOWQ0NC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL3ZpZXdzL2NoYXJ0anMuanM/MjFiMSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXBwID0gcmVxdWlyZSgnYW1wZXJzYW5kLWFwcCcpO1xudmFyIFNwb3QgPSByZXF1aXJlKCdzcG90LWZyYW1ld29yaycpO1xudmFyIEJhc2VXaWRnZXQgPSByZXF1aXJlKCcuL2Jhc2Utd2lkZ2V0Jyk7XG52YXIgQ2hhcnQgPSByZXF1aXJlKCdjaGFydC5qcycpO1xudmFyIGNvbG9ycyA9IHJlcXVpcmUoJy4uLy4uL2NvbG9ycycpO1xudmFyIG1pc3ZhbCA9IFNwb3QudXRpbC5taXN2YWw7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG4vLyB1c2VkIGZvciBwaWUsIGJhciwgaG9yaXpvbnRhbGJhciwgYW5kIHJhZGFyIGNoYXJ0c1xuXG4vLyBtb2RpZnkgdGhlIGhvcml6b250YWxiYXJjaGFydCB0byBoYXZlIHRoZSBncm91cCBuYW1lIHByaW50ZWQgb24gdGhlIGJhclxuQ2hhcnQucGx1Z2luU2VydmljZS5yZWdpc3Rlcih7XG4gIGFmdGVyRGF0YXNldHNEcmF3OiBmdW5jdGlvbiAoY2hhcnRJbnN0YW5jZSkge1xuICAgIHZhciBjaGFydFR5cGUgPSBjaGFydEluc3RhbmNlLmNvbmZpZy50eXBlO1xuXG4gICAgaWYgKGNoYXJ0VHlwZSA9PT0gJ2hvcml6b250YWxCYXJFcnJvcicpIHtcbiAgICAgIHZhciBzY2FsZSA9IGNoYXJ0SW5zdGFuY2Uuc2NhbGVzWyd5LWF4aXMtMCddO1xuICAgICAgc2NhbGUuZHJhdyhzY2FsZSk7XG4gICAgfVxuICB9XG59KTtcblxuZnVuY3Rpb24gZGVmYXVsdEVycm9yRGlyIChtb2RlbCkge1xuICB2YXIgdCA9IG1vZGVsLmdldFR5cGUoKTtcbiAgaWYgKHQgPT09ICdiYXJjaGFydCcpIHtcbiAgICByZXR1cm4gJ3ZlcnRpY2FsJztcbiAgfSBlbHNlIGlmICh0ID09PSAnaG9yaXpvbnRhbGJhcmNoYXJ0Jykge1xuICAgIHJldHVybiAnaG9yaXpvbnRhbCc7XG4gIH0gZWxzZSB7XG4gICAgLy8gcGllIHJhZGFyXG4gICAgcmV0dXJuICdub25lJztcbiAgfVxufVxuXG5mdW5jdGlvbiBhY2NlcHRUaW1lQXhpcyAobW9kZWwpIHtcbiAgdmFyIHQgPSBtb2RlbC5nZXRUeXBlKCk7XG4gIHJldHVybiAodCA9PT0gJ2JhcmNoYXJ0Jyk7XG59XG5cbmZ1bmN0aW9uIGhhc1Blckl0ZW1Db2xvciAobW9kZWwpIHtcbiAgLy8gZGF0YSAgQXJyYXlcbiAgLy8gY29sb3IgZGVwZW5kaW5nIG9uIHBsb3QgdHlwZTpcbiAgLy8gICAgICAgICAgIEFycmF5PENvbG9yPjogYmFyY2hhcnQsIHBpZWNoYXJ0XG4gIC8vICAgICAgICAgICBDb2xvcjogICAgICAgIHJhZGFyY2hhcnRcbiAgdmFyIHQgPSBtb2RlbC5nZXRUeXBlKCk7XG4gIHJldHVybiAodCA9PT0gJ2JhcmNoYXJ0JyB8fCB0ID09PSAnaG9yaXpvbnRhbGJhcmNoYXJ0JyB8fCB0ID09PSAncGllY2hhcnQnKTtcbn1cblxuLy8gdHJ1ZTogY29sb3IgaXRlbXMgYnkgdGhlIGluZGV4IGluIHRoZSBkYXRhIGFycmF5OyBmb3IgY2F0ZW9ncmlhbCBmYWNldHNcbi8vIGZhbHNlOiAgY29sb3IgaXRlbXMgYnkgdGhlIGluZGV4IG9mIHRoZWlyIHN1Ymdyb3VwXG5mdW5jdGlvbiBjb2xvckJ5SW5kZXggKG1vZGVsKSB7XG4gIHZhciB0ID0gbW9kZWwuZ2V0VHlwZSgpO1xuICByZXR1cm4gKHQgPT09ICdwaWVjaGFydCcpO1xufVxuXG4vLyBDYWxsZWQgYnkgQ2hhcnRqcywgdGhpcyAtPiBjaGFydCBpbnN0YW5jZVxuZnVuY3Rpb24gb25DbGljayAoZXYsIGVsZW1lbnRzKSB7XG4gIGlmIChlbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgdmFyIGZpbHRlciA9IHRoaXMuX0FtcGVyc2FuZHZpZXcubW9kZWwuZmlsdGVyO1xuXG4gICAgdmFyIHBhcnRpdGlvbiA9IGZpbHRlci5wYXJ0aXRpb25zLmdldCgxLCAncmFuaycpO1xuICAgIHBhcnRpdGlvbi51cGRhdGVTZWxlY3Rpb24ocGFydGl0aW9uLmdyb3Vwcy5tb2RlbHNbZWxlbWVudHNbMF0uX2luZGV4XSk7XG5cbiAgICBmaWx0ZXIudXBkYXRlRGF0YUZpbHRlcigpO1xuICAgIGFwcC5tZS5kYXRhdmlldy5nZXREYXRhKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVpbml0Q2hhcnQgKHZpZXcpIHtcbiAgaWYgKHZpZXcuX2NoYXJ0anMpIHtcbiAgICB2aWV3Ll9jaGFydGpzLmRlc3Ryb3koKTtcbiAgICBkZWxldGUgdmlldy5fY2hhcnRqcztcbiAgfVxuICBkZWxldGUgdmlldy5fY29uZmlnO1xuXG4gIHZhciBjYW52YXMgPSB2aWV3LnF1ZXJ5QnlIb29rKCdjYW52YXMnKTtcbiAgaWYgKGNhbnZhcykge1xuICAgIGNhbnZhcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNhbnZhcyk7XG4gIH1cbiAgdmlldy5pc0luaXRpYWxpemVkID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGluaXRDaGFydCAodmlldykge1xuICAvLyBDb25maWd1cmUgcGxvdFxuICB2aWV3Ll9jb25maWcgPSB2aWV3Lm1vZGVsLmNoYXJ0anNDb25maWcoKTtcbiAgdmFyIG9wdGlvbnMgPSB2aWV3Ll9jb25maWcub3B0aW9ucztcblxuICB2YXIgcGFydGl0aW9uID0gdmlldy5tb2RlbC5maWx0ZXIucGFydGl0aW9ucy5nZXQoMSwgJ3JhbmsnKTtcblxuICAvLyBheGlzIHR5cGVzXG4gIGlmIChhY2NlcHRUaW1lQXhpcyh2aWV3Lm1vZGVsKSkge1xuICAgIGlmIChwYXJ0aXRpb24uaXNEYXRldGltZSkge1xuICAgICAgb3B0aW9ucy5zY2FsZXMueEF4ZXNbMF0udHlwZSA9ICd0aW1lJztcbiAgICB9IGVsc2UgaWYgKHBhcnRpdGlvbi5pc0R1cmF0aW9uKSB7XG4gICAgICBvcHRpb25zLnNjYWxlcy54QXhlc1swXS50eXBlID0gJ3Nwb3QtZHVyYXRpb24nO1xuICAgIH0gZWxzZSBpZiAocGFydGl0aW9uLmlzQ2F0ZWdvcmlhbCkge1xuICAgICAgb3B0aW9ucy5zY2FsZXMueEF4ZXNbMF0udHlwZSA9ICdjYXRlZ29yeSc7XG4gICAgfVxuICB9XG5cbiAgLy8gYXhpcyBsYWJlbHMgYW5kIHRpdGxlXG4gIGlmICh2aWV3Lm1vZGVsLmdldFR5cGUoKSA9PT0gJ2JhcmNoYXJ0JyB8fCB2aWV3Lm1vZGVsLmdldFR5cGUoKSA9PT0gJ2hvcml6b250YWxiYXJjaGFydCcpIHtcbiAgICBvcHRpb25zLnNjYWxlcy54QXhlc1swXS5zY2FsZUxhYmVsLmRpc3BsYXkgPSBwYXJ0aXRpb24uc2hvd0xhYmVsO1xuICAgIG9wdGlvbnMuc2NhbGVzLnhBeGVzWzBdLnNjYWxlTGFiZWwubGFiZWxTdHJpbmcgPSBwYXJ0aXRpb24ubGFiZWw7XG4gIH1cbiAgb3B0aW9ucy50aXRsZS50ZXh0ID0gdmlldy5tb2RlbC5nZXRUaXRsZSgpO1xuXG4gIC8vIG1vdXNlIHNlbGVjdGlvbiBjYWxsYmFja3NcbiAgaWYgKHZpZXcubW9kZWwuZ2V0VHlwZSgpICE9PSAncmFkYXJjaGFydCcpIHtcbiAgICBvcHRpb25zLm9uQ2xpY2sgPSBvbkNsaWNrO1xuICB9XG5cbiAgLy8gZm9yY2UgYSBzcXVhcmUgZnVsbCBzaXplIHBsb3RcbiAgdmFyIHdpZHRoID0gdmlldy5lbC5vZmZzZXRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IHZpZXcuZWwub2Zmc2V0SGVpZ2h0O1xuXG4gIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgY2FudmFzLnNldEF0dHJpYnV0ZSgnZGF0YS1ob29rJywgJ2NhbnZhcycpO1xuICB2aWV3LmVsLmFwcGVuZENoaWxkKGNhbnZhcyk7XG5cbiAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICBjdHguY2FudmFzLndpZHRoID0gd2lkdGg7XG4gIGN0eC5jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gIC8vIENyZWF0ZSBDaGFydGpzIG9iamVjdFxuICB2aWV3Ll9jaGFydGpzID0gbmV3IENoYXJ0KGN0eCwgdmlldy5fY29uZmlnKTtcblxuICAvLyBJbiBjYWxsYmFja3Mgb24gdGhlIGNoYXJ0IHdlIHdpbGwgbmVlZCB0aGUgdmlldywgc28gc3RvcmUgYSByZWZlcmVuY2VcbiAgdmlldy5fY2hhcnRqcy5fQW1wZXJzYW5kdmlldyA9IHZpZXc7XG5cbiAgdmlldy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlICh2aWV3KSB7XG4gIGlmICghdmlldy5pc0luaXRpYWxpemVkKSB7XG4gICAgY29uc29sZS53YXJuKCdDYW5ub3QgdXBkYXRlIGNoYXJ0LCBub3QgaW5pdGlhbGl6ZWQnLCB2aWV3KTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgbW9kZWwgPSB2aWV3Lm1vZGVsO1xuICB2YXIgZmlsdGVyID0gdmlldy5tb2RlbC5maWx0ZXI7XG4gIHZhciBwYXJ0aXRpb25BID0gZmlsdGVyLnBhcnRpdGlvbnMuZ2V0KDEsICdyYW5rJyk7XG4gIHZhciBwYXJ0aXRpb25CID0gZmlsdGVyLnBhcnRpdGlvbnMuZ2V0KDIsICdyYW5rJyk7XG5cbiAgdmFyIGNoYXJ0RGF0YSA9IHZpZXcuX2NvbmZpZy5kYXRhO1xuXG4gIHV0aWwucmVzaXplQ2hhcnRqc0RhdGEoY2hhcnREYXRhLCBwYXJ0aXRpb25BLCBwYXJ0aXRpb25CLCB7IHBlckl0ZW06IGhhc1Blckl0ZW1Db2xvcihtb2RlbCkgfSk7XG5cbiAgLy8gdXBkYXRlIGxlZ2VuZHMgYW5kIHRvb2x0aXBzOlxuICBpZiAobW9kZWwuZ2V0VHlwZSgpID09PSAncGllY2hhcnQnKSB7XG4gICAgdmlldy5fY29uZmlnLm9wdGlvbnMubGVnZW5kLmRpc3BsYXkgPSBwYXJ0aXRpb25BLnNob3dMZWdlbmQ7XG4gICAgdmlldy5fY29uZmlnLm9wdGlvbnMudG9vbHRpcHMubW9kZSA9ICdzaW5nbGUnO1xuICB9IGVsc2Uge1xuICAgIGlmIChwYXJ0aXRpb25CICYmIHBhcnRpdGlvbkIuc2hvd0xlZ2VuZCkge1xuICAgICAgdmlldy5fY29uZmlnLm9wdGlvbnMubGVnZW5kLmRpc3BsYXkgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2aWV3Ll9jb25maWcub3B0aW9ucy5sZWdlbmQuZGlzcGxheSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAocGFydGl0aW9uQiAmJiBwYXJ0aXRpb25CLmdyb3VwcyAmJiBwYXJ0aXRpb25CLmdyb3Vwcy5sZW5ndGggPiAxKSB7XG4gICAgICB2aWV3Ll9jb25maWcub3B0aW9ucy50b29sdGlwcy5tb2RlID0gJ2xhYmVsJztcbiAgICB9IGVsc2Uge1xuICAgICAgdmlldy5fY29uZmlnLm9wdGlvbnMudG9vbHRpcHMubW9kZSA9ICdzaW5nbGUnO1xuICAgIH1cbiAgfVxuXG4gIHZhciBhZ2dyZWdhdGU7XG5cbiAgdmFyIHZhbHVlRm47XG4gIGFnZ3JlZ2F0ZSA9IGZpbHRlci5hZ2dyZWdhdGVzLmdldCgxLCAncmFuaycpO1xuICBpZiAoYWdncmVnYXRlKSB7XG4gICAgdmFsdWVGbiA9IGZ1bmN0aW9uIChncm91cCkge1xuICAgICAgaWYgKGdyb3VwLmFhICE9PSBtaXN2YWwpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoZ3JvdXAuYWEpIHx8IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHZhbHVlRm4gPSBmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICAgIGlmIChncm91cC5jb3VudCAhPT0gbWlzdmFsKSB7XG4gICAgICAgIHJldHVybiBncm91cC5jb3VudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH07XG4gIH1cblxuICB2YXIgZXJyb3JGbjtcbiAgYWdncmVnYXRlID0gZmlsdGVyLmFnZ3JlZ2F0ZXMuZ2V0KDIsICdyYW5rJyk7XG4gIGlmIChhZ2dyZWdhdGUpIHtcbiAgICBlcnJvckZuID0gZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgICBpZiAoZ3JvdXAuYmIgIT09IG1pc3ZhbCkge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChncm91cC5iYikgfHwgMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH07XG4gICAgLy8gdXNlIHByZXNldCBlcnJvckRpclxuICAgIHZpZXcuX2NvbmZpZy5vcHRpb25zLmVycm9yRGlyID0gZGVmYXVsdEVycm9yRGlyKG1vZGVsKTtcbiAgfSBlbHNlIHtcbiAgICBlcnJvckZuID0gZnVuY3Rpb24gKGdyb3VwKSB7IHJldHVybiBudWxsOyB9O1xuICAgIHZpZXcuX2NvbmZpZy5vcHRpb25zLmVycm9yRGlyID0gJ25vbmUnO1xuICB9XG5cbiAgdmFyIGZpbHRlckZuID0gcGFydGl0aW9uQS5maWx0ZXJGdW5jdGlvbigpO1xuXG4gIC8vIGFkZCBkYXRhcG9pbnRzXG4gIGZpbHRlci5kYXRhLmZvckVhY2goZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgdmFyIGkgPSB1dGlsLnBhcnRpdGlvblZhbHVlVG9JbmRleChwYXJ0aXRpb25BLCBncm91cC5hKTtcbiAgICB2YXIgaiA9IHV0aWwucGFydGl0aW9uVmFsdWVUb0luZGV4KHBhcnRpdGlvbkIsIGdyb3VwLmIpO1xuXG4gICAgLy8gb25seSBwbG90IGlmIGJvdGggdmFsdWVzIGFyZSB3ZWxsIGRlZmluZWRcbiAgICBpZiAoaSA+PSAwICYmIGogPj0gMCkge1xuICAgICAgLy8gZGF0YSB2YWx1ZVxuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzW2pdLmRhdGFbaV0gPSB2YWx1ZUZuKGdyb3VwKTtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5lcnJvcltpXSA9IGVycm9yRm4oZ3JvdXApO1xuXG4gICAgICAvLyBkYXRhIGNvbG9yXG4gICAgICBpZiAoaGFzUGVySXRlbUNvbG9yKG1vZGVsKSkge1xuICAgICAgICBpZiAoZmlsdGVyRm4ocGFydGl0aW9uQS5ncm91cHMubW9kZWxzW2ldLnZhbHVlKSkge1xuICAgICAgICAgIGlmIChjb2xvckJ5SW5kZXgobW9kZWwpKSB7XG4gICAgICAgICAgICBjaGFydERhdGEuZGF0YXNldHNbal0uYmFja2dyb3VuZENvbG9yW2ldID0gY29sb3JzLmdldENvbG9yKGkpLmNzcygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGFydERhdGEuZGF0YXNldHNbal0uYmFja2dyb3VuZENvbG9yW2ldID0gY29sb3JzLmdldENvbG9yKGopLmNzcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGFydERhdGEuZGF0YXNldHNbal0uYmFja2dyb3VuZENvbG9yW2ldID0gY29sb3JzLnVuc2VsZWN0ZWRDb2xvci5jc3MoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gSGFuZC1vZmYgdG8gQ2hhcnRKUyBmb3IgcGxvdHRpbmdcbiAgdmlldy5fY2hhcnRqcy51cGRhdGUoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBCYXNlV2lkZ2V0LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz1cIndpZGdldElubmVyIG1kbC1jYXJkX19tZWRpYVwiPjwvZGl2PicsXG5cbiAgdXBkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgdXBkYXRlKHRoaXMpO1xuICB9LFxuXG4gIGluaXRDaGFydDogZnVuY3Rpb24gKCkge1xuICAgIGluaXRDaGFydCh0aGlzKTtcbiAgfSxcblxuICBkZWluaXRDaGFydDogZnVuY3Rpb24gKCkge1xuICAgIGRlaW5pdENoYXJ0KHRoaXMpO1xuICB9XG59KTtcblxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQ0E7QUFVQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBYkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9d44\n")},a6e8:function(module,exports,__webpack_require__){eval("var Collection = __webpack_require__(/*! ampersand-collection */ \"7bd3\");\n\nvar AmpersandModel = __webpack_require__(/*! ampersand-model */ \"3bfc\");\n\nvar Chart = __webpack_require__(/*! chart.js */ \"70b5\"); // extend plot with errorbars\n\n\nvar extendWithErrorBar = __webpack_require__(/*! ./chartjs-errorbars */ \"ee83\");\n\nextendWithErrorBar(Chart, 'line', 'lineError');\nextendWithErrorBar(Chart, 'bubble', 'bubbleError');\nextendWithErrorBar(Chart, 'bar', 'barError');\nextendWithErrorBar(Chart, 'horizontalBar', 'horizontalBarError'); // extend plots with a duration scale type\n\nvar extendWithDurationScale = __webpack_require__(/*! ./chartjs-duration-scale */ \"d11f\");\n\nextendWithDurationScale(Chart); // replace the default linear scale with a smarter formatter\n\nvar SciLinearFormatter = __webpack_require__(/*! ./chartjs-scilinear-formatter */ \"de33\");\n\nChart.scaleService.updateScaleDefaults('linear', {\n  ticks: {\n    callback: SciLinearFormatter\n  }\n});\nvar widgetEntry = AmpersandModel.extend({\n  props: {\n    modelType: {\n      type: 'string',\n      required: true\n    },\n    newView: {\n      type: 'any',\n      required: false\n    }\n  }\n});\nvar WidgetCollection = Collection.extend({\n  model: widgetEntry,\n  mainIndex: 'modelType'\n});\n/**\n * A factory producing the Ampersand views corresponding to the different chart types.\n * @module widgets/view-factory\n */\n\nmodule.exports.widgets = new WidgetCollection([{\n  modelType: 'piechart',\n  newView: __webpack_require__(/*! ./views/chartjs */ \"9d44\")\n}, {\n  modelType: 'barchart',\n  newView: __webpack_require__(/*! ./views/chartjs */ \"9d44\")\n}, {\n  modelType: 'horizontalbarchart',\n  newView: __webpack_require__(/*! ./views/chartjs */ \"9d44\")\n}, {\n  modelType: 'linechart',\n  newView: __webpack_require__(/*! ./views/chartjs1d */ \"e9bd\")\n}, {\n  modelType: 'radarchart',\n  newView: __webpack_require__(/*! ./views/chartjs */ \"9d44\")\n}, {\n  modelType: 'bubbleplot',\n  newView: __webpack_require__(/*! ./views/chartjs2d */ \"fdc1\")\n}, {\n  modelType: 'scatterchart',\n  newView: __webpack_require__(/*! ./views/scatter */ \"035a\")\n}, {\n  modelType: 'networkchart',\n  newView: __webpack_require__(/*! ./views/sigma */ \"af18\") // Register new widgets here\n\n}]);\n/**\n * Create a new Ampersand view for a widget\n * @param {Object} options - passed on to the view constructor, see https://github.com/AmpersandJS/ampersand-view#constructor-new-ampersandviewoptions\n * @param {Object} options.model - The widget\n * @returns {View} view - An Ampersand view\n */\n\nmodule.exports.newView = function newView(options) {\n  var entry = module.exports.widgets.get(options.model.modelType);\n  var constructor = entry.newView;\n  return new constructor(options);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYTZlOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL3ZpZXctZmFjdG9yeS5qcz8xZTBkIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBDb2xsZWN0aW9uID0gcmVxdWlyZSgnYW1wZXJzYW5kLWNvbGxlY3Rpb24nKTtcbnZhciBBbXBlcnNhbmRNb2RlbCA9IHJlcXVpcmUoJ2FtcGVyc2FuZC1tb2RlbCcpO1xuXG52YXIgQ2hhcnQgPSByZXF1aXJlKCdjaGFydC5qcycpO1xuXG4vLyBleHRlbmQgcGxvdCB3aXRoIGVycm9yYmFyc1xudmFyIGV4dGVuZFdpdGhFcnJvckJhciA9IHJlcXVpcmUoJy4vY2hhcnRqcy1lcnJvcmJhcnMnKTtcbmV4dGVuZFdpdGhFcnJvckJhcihDaGFydCwgJ2xpbmUnLCAnbGluZUVycm9yJyk7XG5leHRlbmRXaXRoRXJyb3JCYXIoQ2hhcnQsICdidWJibGUnLCAnYnViYmxlRXJyb3InKTtcbmV4dGVuZFdpdGhFcnJvckJhcihDaGFydCwgJ2JhcicsICdiYXJFcnJvcicpO1xuZXh0ZW5kV2l0aEVycm9yQmFyKENoYXJ0LCAnaG9yaXpvbnRhbEJhcicsICdob3Jpem9udGFsQmFyRXJyb3InKTtcblxuLy8gZXh0ZW5kIHBsb3RzIHdpdGggYSBkdXJhdGlvbiBzY2FsZSB0eXBlXG52YXIgZXh0ZW5kV2l0aER1cmF0aW9uU2NhbGUgPSByZXF1aXJlKCcuL2NoYXJ0anMtZHVyYXRpb24tc2NhbGUnKTtcbmV4dGVuZFdpdGhEdXJhdGlvblNjYWxlKENoYXJ0KTtcblxuLy8gcmVwbGFjZSB0aGUgZGVmYXVsdCBsaW5lYXIgc2NhbGUgd2l0aCBhIHNtYXJ0ZXIgZm9ybWF0dGVyXG52YXIgU2NpTGluZWFyRm9ybWF0dGVyID0gcmVxdWlyZSgnLi9jaGFydGpzLXNjaWxpbmVhci1mb3JtYXR0ZXInKTtcbkNoYXJ0LnNjYWxlU2VydmljZS51cGRhdGVTY2FsZURlZmF1bHRzKCdsaW5lYXInLCB7IHRpY2tzOiB7IGNhbGxiYWNrOiBTY2lMaW5lYXJGb3JtYXR0ZXIgfSB9KTtcblxudmFyIHdpZGdldEVudHJ5ID0gQW1wZXJzYW5kTW9kZWwuZXh0ZW5kKHtcbiAgcHJvcHM6IHtcbiAgICBtb2RlbFR5cGU6IHt0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWV9LFxuICAgIG5ld1ZpZXc6IHt0eXBlOiAnYW55JywgcmVxdWlyZWQ6IGZhbHNlfVxuICB9XG59KTtcblxudmFyIFdpZGdldENvbGxlY3Rpb24gPSBDb2xsZWN0aW9uLmV4dGVuZCh7XG4gIG1vZGVsOiB3aWRnZXRFbnRyeSxcbiAgbWFpbkluZGV4OiAnbW9kZWxUeXBlJ1xufSk7XG5cbi8qKlxuICogQSBmYWN0b3J5IHByb2R1Y2luZyB0aGUgQW1wZXJzYW5kIHZpZXdzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGRpZmZlcmVudCBjaGFydCB0eXBlcy5cbiAqIEBtb2R1bGUgd2lkZ2V0cy92aWV3LWZhY3RvcnlcbiAqL1xubW9kdWxlLmV4cG9ydHMud2lkZ2V0cyA9IG5ldyBXaWRnZXRDb2xsZWN0aW9uKFtcbiAge1xuICAgIG1vZGVsVHlwZTogJ3BpZWNoYXJ0JyxcbiAgICBuZXdWaWV3OiByZXF1aXJlKCcuL3ZpZXdzL2NoYXJ0anMnKVxuICB9LFxuICB7XG4gICAgbW9kZWxUeXBlOiAnYmFyY2hhcnQnLFxuICAgIG5ld1ZpZXc6IHJlcXVpcmUoJy4vdmlld3MvY2hhcnRqcycpXG4gIH0sXG4gIHtcbiAgICBtb2RlbFR5cGU6ICdob3Jpem9udGFsYmFyY2hhcnQnLFxuICAgIG5ld1ZpZXc6IHJlcXVpcmUoJy4vdmlld3MvY2hhcnRqcycpXG4gIH0sXG4gIHtcbiAgICBtb2RlbFR5cGU6ICdsaW5lY2hhcnQnLFxuICAgIG5ld1ZpZXc6IHJlcXVpcmUoJy4vdmlld3MvY2hhcnRqczFkJylcbiAgfSxcbiAge1xuICAgIG1vZGVsVHlwZTogJ3JhZGFyY2hhcnQnLFxuICAgIG5ld1ZpZXc6IHJlcXVpcmUoJy4vdmlld3MvY2hhcnRqcycpXG4gIH0sXG4gIHtcbiAgICBtb2RlbFR5cGU6ICdidWJibGVwbG90JyxcbiAgICBuZXdWaWV3OiByZXF1aXJlKCcuL3ZpZXdzL2NoYXJ0anMyZCcpXG4gIH0sXG4gIHtcbiAgICBtb2RlbFR5cGU6ICdzY2F0dGVyY2hhcnQnLFxuICAgIG5ld1ZpZXc6IHJlcXVpcmUoJy4vdmlld3Mvc2NhdHRlcicpXG4gIH0sXG4gIHtcbiAgICBtb2RlbFR5cGU6ICduZXR3b3JrY2hhcnQnLFxuICAgIG5ld1ZpZXc6IHJlcXVpcmUoJy4vdmlld3Mvc2lnbWEnKVxuICB9XG4gIC8vIFJlZ2lzdGVyIG5ldyB3aWRnZXRzIGhlcmVcbl0pO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBBbXBlcnNhbmQgdmlldyBmb3IgYSB3aWRnZXRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gcGFzc2VkIG9uIHRvIHRoZSB2aWV3IGNvbnN0cnVjdG9yLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL0FtcGVyc2FuZEpTL2FtcGVyc2FuZC12aWV3I2NvbnN0cnVjdG9yLW5ldy1hbXBlcnNhbmR2aWV3b3B0aW9uc1xuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMubW9kZWwgLSBUaGUgd2lkZ2V0XG4gKiBAcmV0dXJucyB7Vmlld30gdmlldyAtIEFuIEFtcGVyc2FuZCB2aWV3XG4gKi9cbm1vZHVsZS5leHBvcnRzLm5ld1ZpZXcgPSBmdW5jdGlvbiBuZXdWaWV3IChvcHRpb25zKSB7XG4gIHZhciBlbnRyeSA9IG1vZHVsZS5leHBvcnRzLndpZGdldHMuZ2V0KG9wdGlvbnMubW9kZWwubW9kZWxUeXBlKTtcbiAgdmFyIGNvbnN0cnVjdG9yID0gZW50cnkubmV3VmlldztcbiAgcmV0dXJuIG5ldyBjb25zdHJ1Y3RvcihvcHRpb25zKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFGQTtBQURBO0FBT0E7QUFDQTtBQUNBO0FBRkE7QUFLQTs7Ozs7QUFJQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUhBO0FBT0E7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///a6e8\n")},aa00:function(module,exports,__webpack_require__){eval("var app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar Router = __webpack_require__(/*! ampersand-router */ \"e57e\");\n\nvar HomePage = __webpack_require__(/*! ./pages/home */ \"8ab4\");\n\nvar DatasetsPage = __webpack_require__(/*! ./pages/datasets */ \"7bdf\");\n\nvar ConfigureDatasetPage = __webpack_require__(/*! ./pages/configure-dataset */ \"4b1e\");\n\nvar ConfigureFacetPage = __webpack_require__(/*! ./pages/configure-facet */ \"6668\");\n\nvar ConfigurePartitionPage = __webpack_require__(/*! ./pages/configure-partition */ \"d38c\");\n\nvar AnalyzePage = __webpack_require__(/*! ./pages/analyze */ \"22e9\");\n/**\n * [exports description]\n * @module router\n */\n\n\nmodule.exports = Router.extend({\n  routes: {\n    '': 'home',\n    'home': 'home',\n    'datasets': 'datasets',\n    'analyze': 'analyze',\n    'dataset/:id': 'configureDataset',\n    'facet/:id': 'configureFacet',\n    'partition/:id': 'configurePartition',\n    'session=(*url)': 'getSession',\n    '(*path)': 'catchAll'\n  },\n  // ------- ROUTE HANDLERS ---------\n  home: function home() {\n    app.trigger('page', new HomePage({\n      model: app.me\n    }));\n  },\n  datasets: function datasets() {\n    app.trigger('page', new DatasetsPage({\n      model: app.me\n    }));\n  },\n  analyze: function analyze() {\n    app.trigger('page', new AnalyzePage({\n      model: app.me.dataview,\n      collection: app.me.dataview.filters\n    }));\n  },\n  share: function share() {\n    app.trigger('page', new SharePage({\n      model: app.me\n    }));\n  },\n  configureDataset: function configureDataset(id) {\n    var dataset = app.me.datasets.get(id);\n\n    if (dataset) {\n      app.trigger('page', new ConfigureDatasetPage({\n        model: dataset,\n        collection: dataset.facets\n      }));\n    } else {\n      this.home();\n    }\n  },\n  configureFacet: function configureFacet(id) {\n    var dataset = null;\n    var facet = null; // look for facet in app.me.datasets\n\n    app.me.datasets.forEach(function (d) {\n      facet = d.facets.get(id);\n\n      if (facet) {\n        dataset = d;\n      }\n    }); // look for facet in app.me.dataview\n\n    facet = app.me.dataview.facets.get(id);\n\n    if (facet) {\n      dataset = app.me.dataview;\n    }\n\n    if (dataset) {\n      facet = dataset.facets.get(id);\n      app.trigger('page', new ConfigureFacetPage({\n        dataset: dataset,\n        model: facet\n      }));\n    } else {\n      this.home();\n      console.error('Facet not found');\n    }\n  },\n  configurePartition: function configurePartition(id) {\n    // Search over all filters and partitions in this dataset to find the right partition\n    // Not very pretty, but the number of filters and filters per partition are small\n    var partitionToEdit;\n    var found = false;\n    app.me.dataview.filters.forEach(function (filter) {\n      filter.partitions.forEach(function (partition) {\n        if (partition.getId() === id) {\n          found = true;\n          partitionToEdit = partition;\n        }\n      });\n    });\n\n    if (found) {\n      app.trigger('page', new ConfigurePartitionPage({\n        model: partitionToEdit\n      }));\n    } else {\n      this.home();\n    }\n  },\n  getSession: function getSession(url) {\n    console.log('router.js: Getting a remote session from:', url);\n    app.importRemoteSession(url);\n  },\n  catchAll: function catchAll() {\n    this.redirectTo('');\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWEwMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9yb3V0ZXIuanM/NDFjYiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXBwID0gcmVxdWlyZSgnYW1wZXJzYW5kLWFwcCcpO1xudmFyIFJvdXRlciA9IHJlcXVpcmUoJ2FtcGVyc2FuZC1yb3V0ZXInKTtcbnZhciBIb21lUGFnZSA9IHJlcXVpcmUoJy4vcGFnZXMvaG9tZScpO1xudmFyIERhdGFzZXRzUGFnZSA9IHJlcXVpcmUoJy4vcGFnZXMvZGF0YXNldHMnKTtcbnZhciBDb25maWd1cmVEYXRhc2V0UGFnZSA9IHJlcXVpcmUoJy4vcGFnZXMvY29uZmlndXJlLWRhdGFzZXQnKTtcbnZhciBDb25maWd1cmVGYWNldFBhZ2UgPSByZXF1aXJlKCcuL3BhZ2VzL2NvbmZpZ3VyZS1mYWNldCcpO1xudmFyIENvbmZpZ3VyZVBhcnRpdGlvblBhZ2UgPSByZXF1aXJlKCcuL3BhZ2VzL2NvbmZpZ3VyZS1wYXJ0aXRpb24nKTtcbnZhciBBbmFseXplUGFnZSA9IHJlcXVpcmUoJy4vcGFnZXMvYW5hbHl6ZScpO1xuXG4vKipcbiAqIFtleHBvcnRzIGRlc2NyaXB0aW9uXVxuICogQG1vZHVsZSByb3V0ZXJcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBSb3V0ZXIuZXh0ZW5kKHtcbiAgcm91dGVzOiB7XG4gICAgJyc6ICdob21lJyxcbiAgICAnaG9tZSc6ICdob21lJyxcbiAgICAnZGF0YXNldHMnOiAnZGF0YXNldHMnLFxuICAgICdhbmFseXplJzogJ2FuYWx5emUnLFxuXG4gICAgJ2RhdGFzZXQvOmlkJzogJ2NvbmZpZ3VyZURhdGFzZXQnLFxuICAgICdmYWNldC86aWQnOiAnY29uZmlndXJlRmFjZXQnLFxuICAgICdwYXJ0aXRpb24vOmlkJzogJ2NvbmZpZ3VyZVBhcnRpdGlvbicsXG4gICAgJ3Nlc3Npb249KCp1cmwpJzogJ2dldFNlc3Npb24nLFxuICAgICcoKnBhdGgpJzogJ2NhdGNoQWxsJ1xuICB9LFxuXG4gIC8vIC0tLS0tLS0gUk9VVEUgSEFORExFUlMgLS0tLS0tLS0tXG4gIGhvbWU6IGZ1bmN0aW9uICgpIHtcbiAgICBhcHAudHJpZ2dlcigncGFnZScsIG5ldyBIb21lUGFnZSh7XG4gICAgICBtb2RlbDogYXBwLm1lXG4gICAgfSkpO1xuICB9LFxuXG4gIGRhdGFzZXRzOiBmdW5jdGlvbiAoKSB7XG4gICAgYXBwLnRyaWdnZXIoJ3BhZ2UnLCBuZXcgRGF0YXNldHNQYWdlKHtcbiAgICAgIG1vZGVsOiBhcHAubWVcbiAgICB9KSk7XG4gIH0sXG5cbiAgYW5hbHl6ZTogZnVuY3Rpb24gKCkge1xuICAgIGFwcC50cmlnZ2VyKCdwYWdlJywgbmV3IEFuYWx5emVQYWdlKHtcbiAgICAgIG1vZGVsOiBhcHAubWUuZGF0YXZpZXcsXG4gICAgICBjb2xsZWN0aW9uOiBhcHAubWUuZGF0YXZpZXcuZmlsdGVyc1xuICAgIH0pKTtcbiAgfSxcblxuICBzaGFyZTogZnVuY3Rpb24gKCkge1xuICAgIGFwcC50cmlnZ2VyKCdwYWdlJywgbmV3IFNoYXJlUGFnZSh7XG4gICAgICBtb2RlbDogYXBwLm1lXG4gICAgfSkpO1xuICB9LFxuXG4gIGNvbmZpZ3VyZURhdGFzZXQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBkYXRhc2V0ID0gYXBwLm1lLmRhdGFzZXRzLmdldChpZCk7XG4gICAgaWYgKGRhdGFzZXQpIHtcbiAgICAgIGFwcC50cmlnZ2VyKCdwYWdlJywgbmV3IENvbmZpZ3VyZURhdGFzZXRQYWdlKHtcbiAgICAgICAgbW9kZWw6IGRhdGFzZXQsXG4gICAgICAgIGNvbGxlY3Rpb246IGRhdGFzZXQuZmFjZXRzXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG9tZSgpO1xuICAgIH1cbiAgfSxcblxuICBjb25maWd1cmVGYWNldDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGRhdGFzZXQgPSBudWxsO1xuICAgIHZhciBmYWNldCA9IG51bGw7XG5cbiAgICAvLyBsb29rIGZvciBmYWNldCBpbiBhcHAubWUuZGF0YXNldHNcbiAgICBhcHAubWUuZGF0YXNldHMuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xuICAgICAgZmFjZXQgPSBkLmZhY2V0cy5nZXQoaWQpO1xuICAgICAgaWYgKGZhY2V0KSB7XG4gICAgICAgIGRhdGFzZXQgPSBkO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gbG9vayBmb3IgZmFjZXQgaW4gYXBwLm1lLmRhdGF2aWV3XG4gICAgZmFjZXQgPSBhcHAubWUuZGF0YXZpZXcuZmFjZXRzLmdldChpZCk7XG4gICAgaWYgKGZhY2V0KSB7XG4gICAgICBkYXRhc2V0ID0gYXBwLm1lLmRhdGF2aWV3O1xuICAgIH1cblxuICAgIGlmIChkYXRhc2V0KSB7XG4gICAgICBmYWNldCA9IGRhdGFzZXQuZmFjZXRzLmdldChpZCk7XG4gICAgICBhcHAudHJpZ2dlcigncGFnZScsIG5ldyBDb25maWd1cmVGYWNldFBhZ2Uoe1xuICAgICAgICBkYXRhc2V0OiBkYXRhc2V0LFxuICAgICAgICBtb2RlbDogZmFjZXRcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ob21lKCk7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWNldCBub3QgZm91bmQnKTtcbiAgICB9XG4gIH0sXG5cbiAgY29uZmlndXJlUGFydGl0aW9uOiBmdW5jdGlvbiAoaWQpIHtcbiAgICAvLyBTZWFyY2ggb3ZlciBhbGwgZmlsdGVycyBhbmQgcGFydGl0aW9ucyBpbiB0aGlzIGRhdGFzZXQgdG8gZmluZCB0aGUgcmlnaHQgcGFydGl0aW9uXG4gICAgLy8gTm90IHZlcnkgcHJldHR5LCBidXQgdGhlIG51bWJlciBvZiBmaWx0ZXJzIGFuZCBmaWx0ZXJzIHBlciBwYXJ0aXRpb24gYXJlIHNtYWxsXG4gICAgdmFyIHBhcnRpdGlvblRvRWRpdDtcbiAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICBhcHAubWUuZGF0YXZpZXcuZmlsdGVycy5mb3JFYWNoKGZ1bmN0aW9uIChmaWx0ZXIpIHtcbiAgICAgIGZpbHRlci5wYXJ0aXRpb25zLmZvckVhY2goZnVuY3Rpb24gKHBhcnRpdGlvbikge1xuICAgICAgICBpZiAocGFydGl0aW9uLmdldElkKCkgPT09IGlkKSB7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgIHBhcnRpdGlvblRvRWRpdCA9IHBhcnRpdGlvbjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIGFwcC50cmlnZ2VyKCdwYWdlJywgbmV3IENvbmZpZ3VyZVBhcnRpdGlvblBhZ2UoeyBtb2RlbDogcGFydGl0aW9uVG9FZGl0IH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ob21lKCk7XG4gICAgfVxuICB9LFxuICBnZXRTZXNzaW9uOiBmdW5jdGlvbiAodXJsKSB7XG4gICAgY29uc29sZS5sb2coJ3JvdXRlci5qczogR2V0dGluZyBhIHJlbW90ZSBzZXNzaW9uIGZyb206JywgdXJsKTtcbiAgICBhcHAuaW1wb3J0UmVtb3RlU2Vzc2lvbih1cmwpO1xuICB9LFxuICBjYXRjaEFsbDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVkaXJlY3RUbygnJyk7XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVZBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVHQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///aa00\n")},aea4:function(module,exports,__webpack_require__){eval("/**\n * A slot defines how a variable can be added to a plot\n *\n * @class Slot\n */\nvar AmpersandModel = __webpack_require__(/*! ampersand-model */ \"3bfc\");\n\nfunction labelForPartition(facet) {\n  // use: \"label [units]\" or \"label\"\n  if (facet.units.length > 0) {\n    return facet.name + ' [' + facet.units + ']';\n  } else {\n    return facet.name;\n  }\n}\n\nmodule.exports = AmpersandModel.extend({\n  props: {\n    /**\n     * Description of this slot, to be shown in the UI\n     */\n    description: {\n      type: 'string',\n      required: 'true'\n    },\n\n    /**\n     * Type of slot:\n     * 1. partition: partitions the data along this variable\n     * 2. aggregate: this variable is used to style the plot: bar height, color, etc.\n     */\n    type: {\n      type: 'string',\n      required: true,\n      default: 'partition',\n      values: ['partition', 'aggregate']\n    },\n\n    /**\n     * Supported facet types. A subset of: [constant, categorial, datetime, duration, text]\n     */\n    supportedFacets: {\n      type: 'array',\n      required: true,\n      default: function _default() {\n        return [];\n      }\n    },\n    rank: 'number',\n    required: 'boolean',\n    isFilled: 'boolean'\n  },\n\n  /**\n   * Remove facet from the slot\n   * @returns {boolean} succes True if something was removed\n   */\n  emptySlot: function emptySlot() {\n    var filter = this.collection.parent.filter;\n\n    if (!filter || !this.isFilled) {\n      return false;\n    }\n\n    filter.releaseDataFilter();\n\n    if (this.type === 'partition') {\n      var partition = filter.partitions.get(this.rank, 'rank');\n      filter.partitions.remove(partition);\n    } else if (this.type === 'aggregate') {\n      var aggregate = filter.aggregates.get(this.rank, 'rank');\n      filter.aggregates.remove(aggregate);\n    }\n\n    this.isFilled = false;\n    return true;\n  },\n\n  /**\n   * Try to fill the slot with the provided facet\n   * returns true on success, false on failure\n   * The tryFillSlot caller is responsible to do a app.trigger('refresh')\n   *\n   * @param {Facet} facet\n   * @param {string} operation Optional. Requested operation for aggregates\n   * @returns {boolean} success\n   */\n  tryFillSlot: function tryFillSlot(facet, operation) {\n    var filter = this.collection.parent.filter;\n\n    if (!filter || this.isFilled) {\n      return false;\n    } // check if this slot accepts this type of facet\n\n\n    if (this.supportedFacets.indexOf(facet.type) === -1) {\n      return false;\n    } // Release this filter, and add relevant partition or aggregate\n\n\n    filter.releaseDataFilter();\n\n    if (this.type === 'partition') {\n      var partition = filter.partitions.add({\n        facetName: facet.name,\n        label: labelForPartition(facet),\n        showLabel: this.rank !== 1 || !facet.isCategorial,\n        rank: this.rank\n      });\n      partition.reset();\n    } else if (this.type === 'aggregate') {\n      filter.aggregates.add({\n        facetName: facet.name,\n        label: facet.name,\n        rank: this.rank,\n        operation: operation || 'avg'\n      });\n    } else {\n      console.error('Illegal slot');\n      return false;\n    }\n\n    this.isFilled = true;\n    return true;\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWVhNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL21vZGVscy9zbG90LmpzPzdjNmEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNsb3QgZGVmaW5lcyBob3cgYSB2YXJpYWJsZSBjYW4gYmUgYWRkZWQgdG8gYSBwbG90XG4gKlxuICogQGNsYXNzIFNsb3RcbiAqL1xudmFyIEFtcGVyc2FuZE1vZGVsID0gcmVxdWlyZSgnYW1wZXJzYW5kLW1vZGVsJyk7XG5cbmZ1bmN0aW9uIGxhYmVsRm9yUGFydGl0aW9uIChmYWNldCkge1xuICAvLyB1c2U6IFwibGFiZWwgW3VuaXRzXVwiIG9yIFwibGFiZWxcIlxuICBpZiAoZmFjZXQudW5pdHMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBmYWNldC5uYW1lICsgJyBbJyArIGZhY2V0LnVuaXRzICsgJ10nO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWNldC5uYW1lO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQW1wZXJzYW5kTW9kZWwuZXh0ZW5kKHtcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbiBvZiB0aGlzIHNsb3QsIHRvIGJlIHNob3duIGluIHRoZSBVSVxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHJlcXVpcmVkOiAndHJ1ZSdcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFR5cGUgb2Ygc2xvdDpcbiAgICAgKiAxLiBwYXJ0aXRpb246IHBhcnRpdGlvbnMgdGhlIGRhdGEgYWxvbmcgdGhpcyB2YXJpYWJsZVxuICAgICAqIDIuIGFnZ3JlZ2F0ZTogdGhpcyB2YXJpYWJsZSBpcyB1c2VkIHRvIHN0eWxlIHRoZSBwbG90OiBiYXIgaGVpZ2h0LCBjb2xvciwgZXRjLlxuICAgICAqL1xuICAgIHR5cGU6IHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICBkZWZhdWx0OiAncGFydGl0aW9uJyxcbiAgICAgIHZhbHVlczogWydwYXJ0aXRpb24nLCAnYWdncmVnYXRlJ11cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFN1cHBvcnRlZCBmYWNldCB0eXBlcy4gQSBzdWJzZXQgb2Y6IFtjb25zdGFudCwgY2F0ZWdvcmlhbCwgZGF0ZXRpbWUsIGR1cmF0aW9uLCB0ZXh0XVxuICAgICAqL1xuICAgIHN1cHBvcnRlZEZhY2V0czoge1xuICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfSxcbiAgICByYW5rOiAnbnVtYmVyJyxcbiAgICByZXF1aXJlZDogJ2Jvb2xlYW4nLFxuICAgIGlzRmlsbGVkOiAnYm9vbGVhbidcbiAgfSxcbiAgLyoqXG4gICAqIFJlbW92ZSBmYWNldCBmcm9tIHRoZSBzbG90XG4gICAqIEByZXR1cm5zIHtib29sZWFufSBzdWNjZXMgVHJ1ZSBpZiBzb21ldGhpbmcgd2FzIHJlbW92ZWRcbiAgICovXG4gIGVtcHR5U2xvdDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBmaWx0ZXIgPSB0aGlzLmNvbGxlY3Rpb24ucGFyZW50LmZpbHRlcjtcbiAgICBpZiAoIWZpbHRlciB8fCAhdGhpcy5pc0ZpbGxlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZpbHRlci5yZWxlYXNlRGF0YUZpbHRlcigpO1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdwYXJ0aXRpb24nKSB7XG4gICAgICB2YXIgcGFydGl0aW9uID0gZmlsdGVyLnBhcnRpdGlvbnMuZ2V0KHRoaXMucmFuaywgJ3JhbmsnKTtcbiAgICAgIGZpbHRlci5wYXJ0aXRpb25zLnJlbW92ZShwYXJ0aXRpb24pO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnYWdncmVnYXRlJykge1xuICAgICAgdmFyIGFnZ3JlZ2F0ZSA9IGZpbHRlci5hZ2dyZWdhdGVzLmdldCh0aGlzLnJhbmssICdyYW5rJyk7XG4gICAgICBmaWx0ZXIuYWdncmVnYXRlcy5yZW1vdmUoYWdncmVnYXRlKTtcbiAgICB9XG4gICAgdGhpcy5pc0ZpbGxlZCA9IGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAvKipcbiAgICogVHJ5IHRvIGZpbGwgdGhlIHNsb3Qgd2l0aCB0aGUgcHJvdmlkZWQgZmFjZXRcbiAgICogcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmVcbiAgICogVGhlIHRyeUZpbGxTbG90IGNhbGxlciBpcyByZXNwb25zaWJsZSB0byBkbyBhIGFwcC50cmlnZ2VyKCdyZWZyZXNoJylcbiAgICpcbiAgICogQHBhcmFtIHtGYWNldH0gZmFjZXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdGlvbiBPcHRpb25hbC4gUmVxdWVzdGVkIG9wZXJhdGlvbiBmb3IgYWdncmVnYXRlc1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gc3VjY2Vzc1xuICAgKi9cbiAgdHJ5RmlsbFNsb3Q6IGZ1bmN0aW9uIChmYWNldCwgb3BlcmF0aW9uKSB7XG4gICAgdmFyIGZpbHRlciA9IHRoaXMuY29sbGVjdGlvbi5wYXJlbnQuZmlsdGVyO1xuICAgIGlmICghZmlsdGVyIHx8IHRoaXMuaXNGaWxsZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiB0aGlzIHNsb3QgYWNjZXB0cyB0aGlzIHR5cGUgb2YgZmFjZXRcbiAgICBpZiAodGhpcy5zdXBwb3J0ZWRGYWNldHMuaW5kZXhPZihmYWNldC50eXBlKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBSZWxlYXNlIHRoaXMgZmlsdGVyLCBhbmQgYWRkIHJlbGV2YW50IHBhcnRpdGlvbiBvciBhZ2dyZWdhdGVcbiAgICBmaWx0ZXIucmVsZWFzZURhdGFGaWx0ZXIoKTtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdwYXJ0aXRpb24nKSB7XG4gICAgICB2YXIgcGFydGl0aW9uID0gZmlsdGVyLnBhcnRpdGlvbnMuYWRkKHtcbiAgICAgICAgZmFjZXROYW1lOiBmYWNldC5uYW1lLFxuICAgICAgICBsYWJlbDogbGFiZWxGb3JQYXJ0aXRpb24oZmFjZXQpLFxuICAgICAgICBzaG93TGFiZWw6ICh0aGlzLnJhbmsgIT09IDEpIHx8ICFmYWNldC5pc0NhdGVnb3JpYWwsXG4gICAgICAgIHJhbms6IHRoaXMucmFua1xuICAgICAgfSk7XG4gICAgICBwYXJ0aXRpb24ucmVzZXQoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2FnZ3JlZ2F0ZScpIHtcbiAgICAgIGZpbHRlci5hZ2dyZWdhdGVzLmFkZCh7XG4gICAgICAgIGZhY2V0TmFtZTogZmFjZXQubmFtZSxcbiAgICAgICAgbGFiZWw6IGZhY2V0Lm5hbWUsXG4gICAgICAgIHJhbms6IHRoaXMucmFuayxcbiAgICAgICAgb3BlcmF0aW9uOiBvcGVyYXRpb24gfHwgJ2F2ZydcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdJbGxlZ2FsIHNsb3QnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmlzRmlsbGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFHQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBQ0E7QUFDQTtBQS9CQTtBQUNBO0FBZ0NBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFwR0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///aea4\n")},af18:function(module,exports,__webpack_require__){eval("/*** IMPORTS FROM imports-loader ***/\n(function() {\n\nvar Spot = __webpack_require__(/*! spot-framework */ \"3b07\");\n\nvar BaseWidget = __webpack_require__(/*! ./base-widget */ \"26ef\");\n\nvar colors = __webpack_require__(/*! ../../colors */ \"eb63\");\n\nvar misval = Spot.util.misval; // NOTE: sigma and sigma plugins do not work properly with require()\n// workaround via browserify-shim (configured in package.json)\n\nvar Sigma = __webpack_require__(/*! sigmajs */ \"2f77\");\n\n__webpack_require__(/*! sigmajsLayoutForceAtlas2 */ \"48ba\");\n\n__webpack_require__(/*! sigmajsRenderersParallelEdges */ \"f2d8\");\n\nfunction _deinitChart(view) {\n  if (view._sigma) {\n    view._sigma.killForceAtlas2();\n\n    view._sigma.kill();\n\n    delete view._sigma;\n  }\n\n  delete view._config;\n  view.isInitialized = false;\n}\n\nfunction _initChart(view) {\n  // Configure plot\n  view._config = view.model.sigmaConfig(); // Get a new sigma plot\n\n  view._sigma = new Sigma({\n    renderers: [{\n      container: view.el,\n      type: 'canvas'\n    }],\n    settings: view._config\n  }); // In callbacks on the chart we will need the view, so store a reference\n\n  view._sigma._Ampersandview = view; // cache for nodes and their positions\n\n  view._nodes = {}; // number of nodes on screen\n\n  view._nnodes = 0;\n  view.isInitialized = true;\n} // test if node exits, and add it if not\n\n\nfunction testNode(view, label) {\n  var alpha;\n  var x;\n  var y;\n\n  if (!view._sigma.graph.nodes(label)) {\n    // try to get previous postion, or generate new one\n    if (view._nodes.hasOwnProperty(label)) {\n      x = view._nodes[label].x;\n      y = view._nodes[label].y;\n    } else {\n      // place all new nodes on a circle\n      alpha = view._nnodes * 2.0 * 3.1415297 / 5.333333;\n      x = 10.0 * Math.cos(alpha);\n      y = 10.0 * Math.sin(alpha);\n    }\n\n    view._sigma.graph.addNode({\n      id: label,\n      label: label,\n      size: 1,\n      color: '#666',\n      x: x,\n      y: y\n    });\n\n    view._nnodes++;\n  }\n}\n\nfunction drawGraph(view) {\n  var filter = view.model.filter;\n  var edgeToCount = {};\n  var count;\n  var type;\n  var edgePartition = view.model.filter.partitions.get(3, 'rank');\n\n  if (edgePartition) {\n    type = 'curve';\n    edgePartition.groups.forEach(function (group, n) {\n      edgeToCount[group.value] = n;\n    });\n  } else {\n    count = 0;\n    type = 'line';\n  } // draw new ones\n\n\n  filter.data.forEach(function (group, id) {\n    if (group.count !== 0 && group.a !== misval && group.b !== misval) {\n      testNode(view, group.a);\n      testNode(view, group.b);\n\n      if (edgePartition) {\n        if (edgeToCount.hasOwnProperty(group.c)) {\n          count = edgeToCount[group.c];\n        } else {\n          return;\n        }\n      } // add edge\n\n\n      view._sigma.graph.addEdge({\n        color: colors.getColor(count).css(),\n        id: 'e' + id,\n        source: group.a,\n        target: group.b,\n        count: count,\n        type: type\n      });\n    }\n  });\n}\n\nfunction _update(view) {\n  if (!view.isInitialized) {\n    return;\n  } // remove graph, but cache the node positions\n\n\n  view._sigma.killForceAtlas2();\n\n  view._nodes = {};\n  view._nnodes = 0;\n\n  view._sigma.graph.nodes().forEach(function (node) {\n    view._nodes[node.id] = node;\n  });\n\n  view._sigma.graph.clear(); // redraw graph\n\n\n  drawGraph(view);\n\n  view._sigma.refresh();\n\n  view._sigma.startForceAtlas2({\n    worker: true,\n    adjustSizes: true,\n    barnesHutOptimize: true,\n    edgeWeightInfluence: 1,\n    slowDown: 10,\n    gravity: 1\n  });\n}\n\nmodule.exports = BaseWidget.extend({\n  template: '<div class=\"widgetInner sigmajs mdl-card__media\"></div>',\n  update: function update() {\n    _update(this);\n  },\n  initChart: function initChart() {\n    _initChart(this);\n  },\n  deinitChart: function deinitChart() {\n    _deinitChart(this);\n  }\n});\n}.call(window));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWYxOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL3ZpZXdzL3NpZ21hLmpzPzc1MzgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFNwb3QgPSByZXF1aXJlKCdzcG90LWZyYW1ld29yaycpO1xudmFyIEJhc2VXaWRnZXQgPSByZXF1aXJlKCcuL2Jhc2Utd2lkZ2V0Jyk7XG52YXIgY29sb3JzID0gcmVxdWlyZSgnLi4vLi4vY29sb3JzJyk7XG52YXIgbWlzdmFsID0gU3BvdC51dGlsLm1pc3ZhbDtcblxuLy8gTk9URTogc2lnbWEgYW5kIHNpZ21hIHBsdWdpbnMgZG8gbm90IHdvcmsgcHJvcGVybHkgd2l0aCByZXF1aXJlKClcbi8vIHdvcmthcm91bmQgdmlhIGJyb3dzZXJpZnktc2hpbSAoY29uZmlndXJlZCBpbiBwYWNrYWdlLmpzb24pXG52YXIgU2lnbWEgPSByZXF1aXJlKCdzaWdtYWpzJyk7XG5yZXF1aXJlKCdzaWdtYWpzTGF5b3V0Rm9yY2VBdGxhczInKTtcbnJlcXVpcmUoJ3NpZ21hanNSZW5kZXJlcnNQYXJhbGxlbEVkZ2VzJyk7XG5cbmZ1bmN0aW9uIGRlaW5pdENoYXJ0ICh2aWV3KSB7XG4gIGlmICh2aWV3Ll9zaWdtYSkge1xuICAgIHZpZXcuX3NpZ21hLmtpbGxGb3JjZUF0bGFzMigpO1xuICAgIHZpZXcuX3NpZ21hLmtpbGwoKTtcbiAgICBkZWxldGUgdmlldy5fc2lnbWE7XG4gIH1cbiAgZGVsZXRlIHZpZXcuX2NvbmZpZztcbiAgdmlldy5pc0luaXRpYWxpemVkID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGluaXRDaGFydCAodmlldykge1xuICAvLyBDb25maWd1cmUgcGxvdFxuICB2aWV3Ll9jb25maWcgPSB2aWV3Lm1vZGVsLnNpZ21hQ29uZmlnKCk7XG5cbiAgLy8gR2V0IGEgbmV3IHNpZ21hIHBsb3RcbiAgdmlldy5fc2lnbWEgPSBuZXcgU2lnbWEoe1xuICAgIHJlbmRlcmVyczogW3tcbiAgICAgIGNvbnRhaW5lcjogdmlldy5lbCxcbiAgICAgIHR5cGU6ICdjYW52YXMnXG4gICAgfV0sXG4gICAgc2V0dGluZ3M6IHZpZXcuX2NvbmZpZ1xuICB9KTtcblxuICAvLyBJbiBjYWxsYmFja3Mgb24gdGhlIGNoYXJ0IHdlIHdpbGwgbmVlZCB0aGUgdmlldywgc28gc3RvcmUgYSByZWZlcmVuY2VcbiAgdmlldy5fc2lnbWEuX0FtcGVyc2FuZHZpZXcgPSB2aWV3O1xuXG4gIC8vIGNhY2hlIGZvciBub2RlcyBhbmQgdGhlaXIgcG9zaXRpb25zXG4gIHZpZXcuX25vZGVzID0ge307XG5cbiAgLy8gbnVtYmVyIG9mIG5vZGVzIG9uIHNjcmVlblxuICB2aWV3Ll9ubm9kZXMgPSAwO1xuXG4gIHZpZXcuaXNJbml0aWFsaXplZCA9IHRydWU7XG59XG5cbi8vIHRlc3QgaWYgbm9kZSBleGl0cywgYW5kIGFkZCBpdCBpZiBub3RcbmZ1bmN0aW9uIHRlc3ROb2RlICh2aWV3LCBsYWJlbCkge1xuICB2YXIgYWxwaGE7XG4gIHZhciB4O1xuICB2YXIgeTtcblxuICBpZiAoIXZpZXcuX3NpZ21hLmdyYXBoLm5vZGVzKGxhYmVsKSkge1xuICAgIC8vIHRyeSB0byBnZXQgcHJldmlvdXMgcG9zdGlvbiwgb3IgZ2VuZXJhdGUgbmV3IG9uZVxuICAgIGlmICh2aWV3Ll9ub2Rlcy5oYXNPd25Qcm9wZXJ0eShsYWJlbCkpIHtcbiAgICAgIHggPSB2aWV3Ll9ub2Rlc1tsYWJlbF0ueDtcbiAgICAgIHkgPSB2aWV3Ll9ub2Rlc1tsYWJlbF0ueTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcGxhY2UgYWxsIG5ldyBub2RlcyBvbiBhIGNpcmNsZVxuICAgICAgYWxwaGEgPSB2aWV3Ll9ubm9kZXMgKiAyLjAgKiAzLjE0MTUyOTcgLyA1LjMzMzMzMztcbiAgICAgIHggPSAxMC4wICogTWF0aC5jb3MoYWxwaGEpO1xuICAgICAgeSA9IDEwLjAgKiBNYXRoLnNpbihhbHBoYSk7XG4gICAgfVxuXG4gICAgdmlldy5fc2lnbWEuZ3JhcGguYWRkTm9kZSh7XG4gICAgICBpZDogbGFiZWwsXG4gICAgICBsYWJlbDogbGFiZWwsXG4gICAgICBzaXplOiAxLFxuICAgICAgY29sb3I6ICcjNjY2JyxcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSk7XG4gICAgdmlldy5fbm5vZGVzKys7XG4gIH1cbn1cblxuZnVuY3Rpb24gZHJhd0dyYXBoICh2aWV3KSB7XG4gIHZhciBmaWx0ZXIgPSB2aWV3Lm1vZGVsLmZpbHRlcjtcbiAgdmFyIGVkZ2VUb0NvdW50ID0ge307XG4gIHZhciBjb3VudDtcbiAgdmFyIHR5cGU7XG5cbiAgdmFyIGVkZ2VQYXJ0aXRpb24gPSB2aWV3Lm1vZGVsLmZpbHRlci5wYXJ0aXRpb25zLmdldCgzLCAncmFuaycpO1xuICBpZiAoZWRnZVBhcnRpdGlvbikge1xuICAgIHR5cGUgPSAnY3VydmUnO1xuICAgIGVkZ2VQYXJ0aXRpb24uZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKGdyb3VwLCBuKSB7XG4gICAgICBlZGdlVG9Db3VudFtncm91cC52YWx1ZV0gPSBuO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvdW50ID0gMDtcbiAgICB0eXBlID0gJ2xpbmUnO1xuICB9XG5cbiAgLy8gZHJhdyBuZXcgb25lc1xuICBmaWx0ZXIuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChncm91cCwgaWQpIHtcbiAgICBpZiAoZ3JvdXAuY291bnQgIT09IDAgJiYgZ3JvdXAuYSAhPT0gbWlzdmFsICYmIGdyb3VwLmIgIT09IG1pc3ZhbCkge1xuICAgICAgdGVzdE5vZGUodmlldywgZ3JvdXAuYSk7XG4gICAgICB0ZXN0Tm9kZSh2aWV3LCBncm91cC5iKTtcblxuICAgICAgaWYgKGVkZ2VQYXJ0aXRpb24pIHtcbiAgICAgICAgaWYgKGVkZ2VUb0NvdW50Lmhhc093blByb3BlcnR5KGdyb3VwLmMpKSB7XG4gICAgICAgICAgY291bnQgPSBlZGdlVG9Db3VudFtncm91cC5jXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gYWRkIGVkZ2VcbiAgICAgIHZpZXcuX3NpZ21hLmdyYXBoLmFkZEVkZ2Uoe1xuICAgICAgICBjb2xvcjogY29sb3JzLmdldENvbG9yKGNvdW50KS5jc3MoKSxcbiAgICAgICAgaWQ6ICdlJyArIGlkLFxuICAgICAgICBzb3VyY2U6IGdyb3VwLmEsXG4gICAgICAgIHRhcmdldDogZ3JvdXAuYixcbiAgICAgICAgY291bnQ6IGNvdW50LFxuICAgICAgICB0eXBlOiB0eXBlXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUgKHZpZXcpIHtcbiAgaWYgKCF2aWV3LmlzSW5pdGlhbGl6ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyByZW1vdmUgZ3JhcGgsIGJ1dCBjYWNoZSB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgdmlldy5fc2lnbWEua2lsbEZvcmNlQXRsYXMyKCk7XG4gIHZpZXcuX25vZGVzID0ge307XG4gIHZpZXcuX25ub2RlcyA9IDA7XG4gIHZpZXcuX3NpZ21hLmdyYXBoLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIHZpZXcuX25vZGVzW25vZGUuaWRdID0gbm9kZTtcbiAgfSk7XG4gIHZpZXcuX3NpZ21hLmdyYXBoLmNsZWFyKCk7XG5cbiAgLy8gcmVkcmF3IGdyYXBoXG4gIGRyYXdHcmFwaCh2aWV3KTtcbiAgdmlldy5fc2lnbWEucmVmcmVzaCgpO1xuXG4gIHZpZXcuX3NpZ21hLnN0YXJ0Rm9yY2VBdGxhczIoe1xuICAgIHdvcmtlcjogdHJ1ZSxcbiAgICBhZGp1c3RTaXplczogdHJ1ZSxcbiAgICBiYXJuZXNIdXRPcHRpbWl6ZTogdHJ1ZSxcbiAgICBlZGdlV2VpZ2h0SW5mbHVlbmNlOiAxLFxuICAgIHNsb3dEb3duOiAxMCxcbiAgICBncmF2aXR5OiAxXG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEJhc2VXaWRnZXQuZXh0ZW5kKHtcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwid2lkZ2V0SW5uZXIgc2lnbWFqcyBtZGwtY2FyZF9fbWVkaWFcIj48L2Rpdj4nLFxuXG4gIHVwZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIHVwZGF0ZSh0aGlzKTtcbiAgfSxcblxuICBpbml0Q2hhcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpbml0Q2hhcnQodGhpcyk7XG4gIH0sXG5cbiAgZGVpbml0Q2hhcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBkZWluaXRDaGFydCh0aGlzKTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFMQTtBQUNBO0FBUUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBYkE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///af18\n")},b24e:function(module,exports,__webpack_require__){eval("function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar Spot = __webpack_require__(/*! spot-framework */ \"3b07\");\n\nvar View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar misval = Spot.util.misval;\n\nfunction addRawValue(string, raw) {\n  if (typeof string !== 'string' || string.length === 0) {\n    string = '';\n  } else {\n    string = string + ', ';\n  }\n\n  if (typeof raw === 'string') {\n    string = string + '\"' + raw + '\"';\n  } else if (typeof raw === 'number') {\n    string = string + raw;\n  } else {\n    console.warn('Cannot add raw value', raw, 'of type', _typeof(raw));\n  }\n\n  return string;\n}\n\nmodule.exports = View.extend({\n  template: templates.configureFacet.facetDefine,\n  derived: {\n    showMinMax: {\n      deps: ['model.type'],\n      fn: function fn() {\n        return this.model.type === 'datetime' || this.model.type === 'duration' || this.model.type === 'continuous';\n      }\n    }\n  },\n  bindings: {\n    'showMinMax': [{\n      type: 'toggle',\n      hook: 'define-minimum-div'\n    }, {\n      type: 'toggle',\n      hook: 'define-maximum-div'\n    }],\n    'model.name': {\n      type: 'value',\n      hook: 'define-name-input'\n    },\n    'model.units': {\n      type: 'value',\n      hook: 'define-units-input'\n    },\n    'model.description': {\n      type: 'value',\n      hook: 'define-description-input'\n    },\n    'model.isContinuous': {\n      type: 'booleanAttribute',\n      hook: 'define-type-continuous',\n      name: 'checked'\n    },\n    'model.isCategorial': {\n      type: 'booleanAttribute',\n      hook: 'define-type-categorial',\n      name: 'checked'\n    },\n    'model.isDatetime': {\n      type: 'booleanAttribute',\n      hook: 'define-type-datetime',\n      name: 'checked'\n    },\n    'model.isDuration': {\n      type: 'booleanAttribute',\n      hook: 'define-type-duration',\n      name: 'checked'\n    },\n    'model.isText': {\n      type: 'booleanAttribute',\n      hook: 'define-type-text',\n      name: 'checked'\n    },\n    'model.accessor': {\n      type: 'value',\n      hook: 'define-accessor-input'\n    },\n    'model.misvalAsText': {\n      type: 'value',\n      hook: 'define-missing-input'\n    },\n    'model.minvalAsText': {\n      type: 'value',\n      hook: 'define-minimum-input'\n    },\n    'model.maxvalAsText': {\n      type: 'value',\n      hook: 'define-maximum-input'\n    }\n  },\n  events: {\n    'change [data-hook~=define-name-input]': function changeDataHookDefineNameInput() {\n      this.model.name = this.queryByHook('define-name-input').value;\n    },\n    'change [data-hook~=define-units-input]': function changeDataHookDefineUnitsInput() {\n      this.model.units = this.queryByHook('define-units-input').value;\n    },\n    'change [data-hook~=define-description-input]': function changeDataHookDefineDescriptionInput() {\n      this.model.description = this.queryByHook('define-description-input').value;\n    },\n    'click [data-hook~=define-type-continuous]': function clickDataHookDefineTypeContinuous() {\n      this.model.type = 'continuous';\n    },\n    'click [data-hook~=define-type-categorial]': function clickDataHookDefineTypeCategorial() {\n      this.model.type = 'categorial';\n    },\n    'click [data-hook~=define-type-datetime]': function clickDataHookDefineTypeDatetime() {\n      this.model.type = 'datetime';\n    },\n    'click [data-hook~=define-type-duration]': function clickDataHookDefineTypeDuration() {\n      this.model.type = 'duration';\n    },\n    'click [data-hook~=define-type-text]': function clickDataHookDefineTypeText() {\n      this.model.type = 'text';\n    },\n    'click [data-hook~=button-minval-missing]': function clickDataHookButtonMinvalMissing() {\n      if (this.model.minval === misval) {\n        return;\n      }\n\n      if (this.model.hasOwnProperty('rawMinval')) {\n        this.model.misvalAsText = addRawValue(this.model.misvalAsText, this.model.rawMinval);\n      } else {\n        this.model.misvalAsText += ', ' + this.model.minvalAsText;\n      }\n\n      this.model.minvalAsText = 'scanning';\n      this.model.setMinMax();\n      this.queryByHook('define-maximum-input').dispatchEvent(new window.Event('input'));\n      this.queryByHook('define-minimum-input').dispatchEvent(new window.Event('input'));\n      this.queryByHook('define-missing-input').dispatchEvent(new window.Event('input'));\n    },\n    'click [data-hook~=button-maxval-missing]': function clickDataHookButtonMaxvalMissing() {\n      if (this.model.maxval === misval) {\n        return;\n      }\n\n      if (this.model.hasOwnProperty('rawMaxval')) {\n        this.model.misvalAsText = addRawValue(this.model.misvalAsText, this.model.rawMaxval);\n      } else {\n        this.model.misvalAsText += ', ' + this.model.maxvalAsText;\n      }\n\n      this.model.maxvalAsText = 'scanning';\n      this.model.setMinMax();\n      this.queryByHook('define-maximum-input').dispatchEvent(new window.Event('input'));\n      this.queryByHook('define-minimum-input').dispatchEvent(new window.Event('input'));\n      this.queryByHook('define-missing-input').dispatchEvent(new window.Event('input'));\n    },\n    'click [data-hook~=define-rescan-button]': function clickDataHookDefineRescanButton() {\n      if (this.model.isContinuous || this.model.isDatetime || this.model.isDuration) {\n        this.model.minvalAsText = 'scanning';\n        this.model.maxvalAsText = 'scanning';\n        this.model.setMinMax();\n        this.queryByHook('define-minimum-input').dispatchEvent(new window.Event('input'));\n        this.queryByHook('define-maximum-input').dispatchEvent(new window.Event('input'));\n      } else if (this.model.isCategorial) {\n        this.model.setCategories();\n      }\n    },\n    'change [data-hook~=define-accessor-input]': function changeDataHookDefineAccessorInput() {\n      this.model.accessor = this.queryByHook('define-accessor-input').value;\n    },\n    'change [data-hook~=define-missing-input]': function changeDataHookDefineMissingInput() {\n      this.model.misvalAsText = this.queryByHook('define-missing-input').value;\n    },\n    'change [data-hook~=define-minimum-input]': function changeDataHookDefineMinimumInput() {\n      this.model.minvalAsText = this.queryByHook('define-minimum-input').value;\n    },\n    'change [data-hook~=define-maximum-input]': function changeDataHookDefineMaximumInput() {\n      this.model.maxvalAsText = this.queryByHook('define-maximum-input').value;\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYjI0ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZmFjZXQvZmFjZXQtZGVmaW5lLmpzP2Q1MWMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFNwb3QgPSByZXF1aXJlKCdzcG90LWZyYW1ld29yaycpO1xudmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uLy4uL3RlbXBsYXRlcycpO1xudmFyIG1pc3ZhbCA9IFNwb3QudXRpbC5taXN2YWw7XG5cbmZ1bmN0aW9uIGFkZFJhd1ZhbHVlIChzdHJpbmcsIHJhdykge1xuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycgfHwgc3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0cmluZyA9ICcnO1xuICB9IGVsc2Uge1xuICAgIHN0cmluZyA9IHN0cmluZyArICcsICc7XG4gIH1cblxuICBpZiAodHlwZW9mIHJhdyA9PT0gJ3N0cmluZycpIHtcbiAgICBzdHJpbmcgPSBzdHJpbmcgKyAnXCInICsgcmF3ICsgJ1wiJztcbiAgfSBlbHNlIGlmICh0eXBlb2YgcmF3ID09PSAnbnVtYmVyJykge1xuICAgIHN0cmluZyA9IHN0cmluZyArIHJhdztcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLndhcm4oJ0Nhbm5vdCBhZGQgcmF3IHZhbHVlJywgcmF3LCAnb2YgdHlwZScsIHR5cGVvZiByYXcpO1xuICB9XG4gIHJldHVybiBzdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVmlldy5leHRlbmQoe1xuICB0ZW1wbGF0ZTogdGVtcGxhdGVzLmNvbmZpZ3VyZUZhY2V0LmZhY2V0RGVmaW5lLFxuICBkZXJpdmVkOiB7XG4gICAgc2hvd01pbk1heDoge1xuICAgICAgZGVwczogWydtb2RlbC50eXBlJ10sXG4gICAgICBmbjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC50eXBlID09PSAnZGF0ZXRpbWUnIHx8IHRoaXMubW9kZWwudHlwZSA9PT0gJ2R1cmF0aW9uJyB8fCB0aGlzLm1vZGVsLnR5cGUgPT09ICdjb250aW51b3VzJztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGJpbmRpbmdzOiB7XG4gICAgJ3Nob3dNaW5NYXgnOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICd0b2dnbGUnLFxuICAgICAgICBob29rOiAnZGVmaW5lLW1pbmltdW0tZGl2J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3RvZ2dsZScsXG4gICAgICAgIGhvb2s6ICdkZWZpbmUtbWF4aW11bS1kaXYnXG4gICAgICB9XG4gICAgXSxcbiAgICAnbW9kZWwubmFtZSc6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAnZGVmaW5lLW5hbWUtaW5wdXQnXG4gICAgfSxcbiAgICAnbW9kZWwudW5pdHMnOiB7XG4gICAgICB0eXBlOiAndmFsdWUnLFxuICAgICAgaG9vazogJ2RlZmluZS11bml0cy1pbnB1dCdcbiAgICB9LFxuICAgICdtb2RlbC5kZXNjcmlwdGlvbic6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAnZGVmaW5lLWRlc2NyaXB0aW9uLWlucHV0J1xuICAgIH0sXG5cbiAgICAnbW9kZWwuaXNDb250aW51b3VzJzoge1xuICAgICAgdHlwZTogJ2Jvb2xlYW5BdHRyaWJ1dGUnLFxuICAgICAgaG9vazogJ2RlZmluZS10eXBlLWNvbnRpbnVvdXMnLFxuICAgICAgbmFtZTogJ2NoZWNrZWQnXG4gICAgfSxcbiAgICAnbW9kZWwuaXNDYXRlZ29yaWFsJzoge1xuICAgICAgdHlwZTogJ2Jvb2xlYW5BdHRyaWJ1dGUnLFxuICAgICAgaG9vazogJ2RlZmluZS10eXBlLWNhdGVnb3JpYWwnLFxuICAgICAgbmFtZTogJ2NoZWNrZWQnXG4gICAgfSxcbiAgICAnbW9kZWwuaXNEYXRldGltZSc6IHtcbiAgICAgIHR5cGU6ICdib29sZWFuQXR0cmlidXRlJyxcbiAgICAgIGhvb2s6ICdkZWZpbmUtdHlwZS1kYXRldGltZScsXG4gICAgICBuYW1lOiAnY2hlY2tlZCdcbiAgICB9LFxuICAgICdtb2RlbC5pc0R1cmF0aW9uJzoge1xuICAgICAgdHlwZTogJ2Jvb2xlYW5BdHRyaWJ1dGUnLFxuICAgICAgaG9vazogJ2RlZmluZS10eXBlLWR1cmF0aW9uJyxcbiAgICAgIG5hbWU6ICdjaGVja2VkJ1xuICAgIH0sXG4gICAgJ21vZGVsLmlzVGV4dCc6IHtcbiAgICAgIHR5cGU6ICdib29sZWFuQXR0cmlidXRlJyxcbiAgICAgIGhvb2s6ICdkZWZpbmUtdHlwZS10ZXh0JyxcbiAgICAgIG5hbWU6ICdjaGVja2VkJ1xuICAgIH0sXG5cbiAgICAnbW9kZWwuYWNjZXNzb3InOiB7XG4gICAgICB0eXBlOiAndmFsdWUnLFxuICAgICAgaG9vazogJ2RlZmluZS1hY2Nlc3Nvci1pbnB1dCdcbiAgICB9LFxuICAgICdtb2RlbC5taXN2YWxBc1RleHQnOiB7XG4gICAgICB0eXBlOiAndmFsdWUnLFxuICAgICAgaG9vazogJ2RlZmluZS1taXNzaW5nLWlucHV0J1xuICAgIH0sXG4gICAgJ21vZGVsLm1pbnZhbEFzVGV4dCc6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAnZGVmaW5lLW1pbmltdW0taW5wdXQnXG4gICAgfSxcbiAgICAnbW9kZWwubWF4dmFsQXNUZXh0Jzoge1xuICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgIGhvb2s6ICdkZWZpbmUtbWF4aW11bS1pbnB1dCdcbiAgICB9XG4gIH0sXG4gIGV2ZW50czoge1xuICAgICdjaGFuZ2UgW2RhdGEtaG9va349ZGVmaW5lLW5hbWUtaW5wdXRdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC5uYW1lID0gdGhpcy5xdWVyeUJ5SG9vaygnZGVmaW5lLW5hbWUtaW5wdXQnKS52YWx1ZTtcbiAgICB9LFxuICAgICdjaGFuZ2UgW2RhdGEtaG9va349ZGVmaW5lLXVuaXRzLWlucHV0XSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwudW5pdHMgPSB0aGlzLnF1ZXJ5QnlIb29rKCdkZWZpbmUtdW5pdHMtaW5wdXQnKS52YWx1ZTtcbiAgICB9LFxuICAgICdjaGFuZ2UgW2RhdGEtaG9va349ZGVmaW5lLWRlc2NyaXB0aW9uLWlucHV0XSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwuZGVzY3JpcHRpb24gPSB0aGlzLnF1ZXJ5QnlIb29rKCdkZWZpbmUtZGVzY3JpcHRpb24taW5wdXQnKS52YWx1ZTtcbiAgICB9LFxuXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWRlZmluZS10eXBlLWNvbnRpbnVvdXNdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC50eXBlID0gJ2NvbnRpbnVvdXMnO1xuICAgIH0sXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWRlZmluZS10eXBlLWNhdGVnb3JpYWxdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC50eXBlID0gJ2NhdGVnb3JpYWwnO1xuICAgIH0sXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWRlZmluZS10eXBlLWRhdGV0aW1lXSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwudHlwZSA9ICdkYXRldGltZSc7XG4gICAgfSxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349ZGVmaW5lLXR5cGUtZHVyYXRpb25dJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC50eXBlID0gJ2R1cmF0aW9uJztcbiAgICB9LFxuICAgICdjbGljayBbZGF0YS1ob29rfj1kZWZpbmUtdHlwZS10ZXh0XSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwudHlwZSA9ICd0ZXh0JztcbiAgICB9LFxuICAgICdjbGljayBbZGF0YS1ob29rfj1idXR0b24tbWludmFsLW1pc3NpbmddJzogZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHRoaXMubW9kZWwubWludmFsID09PSBtaXN2YWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubW9kZWwuaGFzT3duUHJvcGVydHkoJ3Jhd01pbnZhbCcpKSB7XG4gICAgICAgIHRoaXMubW9kZWwubWlzdmFsQXNUZXh0ID0gYWRkUmF3VmFsdWUodGhpcy5tb2RlbC5taXN2YWxBc1RleHQsIHRoaXMubW9kZWwucmF3TWludmFsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9kZWwubWlzdmFsQXNUZXh0ICs9ICcsICcgKyB0aGlzLm1vZGVsLm1pbnZhbEFzVGV4dDtcbiAgICAgIH1cbiAgICAgIHRoaXMubW9kZWwubWludmFsQXNUZXh0ID0gJ3NjYW5uaW5nJztcbiAgICAgIHRoaXMubW9kZWwuc2V0TWluTWF4KCk7XG4gICAgICB0aGlzLnF1ZXJ5QnlIb29rKCdkZWZpbmUtbWF4aW11bS1pbnB1dCcpLmRpc3BhdGNoRXZlbnQobmV3IHdpbmRvdy5FdmVudCgnaW5wdXQnKSk7XG4gICAgICB0aGlzLnF1ZXJ5QnlIb29rKCdkZWZpbmUtbWluaW11bS1pbnB1dCcpLmRpc3BhdGNoRXZlbnQobmV3IHdpbmRvdy5FdmVudCgnaW5wdXQnKSk7XG4gICAgICB0aGlzLnF1ZXJ5QnlIb29rKCdkZWZpbmUtbWlzc2luZy1pbnB1dCcpLmRpc3BhdGNoRXZlbnQobmV3IHdpbmRvdy5FdmVudCgnaW5wdXQnKSk7XG4gICAgfSxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349YnV0dG9uLW1heHZhbC1taXNzaW5nXSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICh0aGlzLm1vZGVsLm1heHZhbCA9PT0gbWlzdmFsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1vZGVsLmhhc093blByb3BlcnR5KCdyYXdNYXh2YWwnKSkge1xuICAgICAgICB0aGlzLm1vZGVsLm1pc3ZhbEFzVGV4dCA9IGFkZFJhd1ZhbHVlKHRoaXMubW9kZWwubWlzdmFsQXNUZXh0LCB0aGlzLm1vZGVsLnJhd01heHZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vZGVsLm1pc3ZhbEFzVGV4dCArPSAnLCAnICsgdGhpcy5tb2RlbC5tYXh2YWxBc1RleHQ7XG4gICAgICB9XG4gICAgICB0aGlzLm1vZGVsLm1heHZhbEFzVGV4dCA9ICdzY2FubmluZyc7XG4gICAgICB0aGlzLm1vZGVsLnNldE1pbk1heCgpO1xuICAgICAgdGhpcy5xdWVyeUJ5SG9vaygnZGVmaW5lLW1heGltdW0taW5wdXQnKS5kaXNwYXRjaEV2ZW50KG5ldyB3aW5kb3cuRXZlbnQoJ2lucHV0JykpO1xuICAgICAgdGhpcy5xdWVyeUJ5SG9vaygnZGVmaW5lLW1pbmltdW0taW5wdXQnKS5kaXNwYXRjaEV2ZW50KG5ldyB3aW5kb3cuRXZlbnQoJ2lucHV0JykpO1xuICAgICAgdGhpcy5xdWVyeUJ5SG9vaygnZGVmaW5lLW1pc3NpbmctaW5wdXQnKS5kaXNwYXRjaEV2ZW50KG5ldyB3aW5kb3cuRXZlbnQoJ2lucHV0JykpO1xuICAgIH0sXG4gICAgJ2NsaWNrIFtkYXRhLWhvb2t+PWRlZmluZS1yZXNjYW4tYnV0dG9uXSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICh0aGlzLm1vZGVsLmlzQ29udGludW91cyB8fCB0aGlzLm1vZGVsLmlzRGF0ZXRpbWUgfHwgdGhpcy5tb2RlbC5pc0R1cmF0aW9uKSB7XG4gICAgICAgIHRoaXMubW9kZWwubWludmFsQXNUZXh0ID0gJ3NjYW5uaW5nJztcbiAgICAgICAgdGhpcy5tb2RlbC5tYXh2YWxBc1RleHQgPSAnc2Nhbm5pbmcnO1xuICAgICAgICB0aGlzLm1vZGVsLnNldE1pbk1heCgpO1xuICAgICAgICB0aGlzLnF1ZXJ5QnlIb29rKCdkZWZpbmUtbWluaW11bS1pbnB1dCcpLmRpc3BhdGNoRXZlbnQobmV3IHdpbmRvdy5FdmVudCgnaW5wdXQnKSk7XG4gICAgICAgIHRoaXMucXVlcnlCeUhvb2soJ2RlZmluZS1tYXhpbXVtLWlucHV0JykuZGlzcGF0Y2hFdmVudChuZXcgd2luZG93LkV2ZW50KCdpbnB1dCcpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlbC5pc0NhdGVnb3JpYWwpIHtcbiAgICAgICAgdGhpcy5tb2RlbC5zZXRDYXRlZ29yaWVzKCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgICdjaGFuZ2UgW2RhdGEtaG9va349ZGVmaW5lLWFjY2Vzc29yLWlucHV0XSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwuYWNjZXNzb3IgPSB0aGlzLnF1ZXJ5QnlIb29rKCdkZWZpbmUtYWNjZXNzb3ItaW5wdXQnKS52YWx1ZTtcbiAgICB9LFxuICAgICdjaGFuZ2UgW2RhdGEtaG9va349ZGVmaW5lLW1pc3NpbmctaW5wdXRdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC5taXN2YWxBc1RleHQgPSB0aGlzLnF1ZXJ5QnlIb29rKCdkZWZpbmUtbWlzc2luZy1pbnB1dCcpLnZhbHVlO1xuICAgIH0sXG4gICAgJ2NoYW5nZSBbZGF0YS1ob29rfj1kZWZpbmUtbWluaW11bS1pbnB1dF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLm1pbnZhbEFzVGV4dCA9IHRoaXMucXVlcnlCeUhvb2soJ2RlZmluZS1taW5pbXVtLWlucHV0JykudmFsdWU7XG4gICAgfSxcbiAgICAnY2hhbmdlIFtkYXRhLWhvb2t+PWRlZmluZS1tYXhpbXVtLWlucHV0XSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwubWF4dmFsQXNUZXh0ID0gdGhpcy5xdWVyeUJ5SG9vaygnZGVmaW5lLW1heGltdW0taW5wdXQnKS52YWx1ZTtcbiAgICB9XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFEQTtBQVFBO0FBQ0E7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBOURBO0FBbUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0VBO0FBN0VBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///b24e\n")},b322:function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar moment = __webpack_require__(/*! moment-timezone */ \"6c9d\");\n\nmodule.exports = View.extend({\n  template: templates.configurePartition.partitionDuration,\n  derived: {\n    minvalAsText: {\n      deps: ['model.minval', 'model.isDuration'],\n      fn: function fn() {\n        if (this.model.isDuration) {\n          return this.model.minval.toISOString();\n        } else {\n          return 'not a date';\n        }\n      }\n    },\n    maxvalAsText: {\n      deps: ['model.maxval', 'model.isDuration'],\n      fn: function fn() {\n        if (this.model.isDuration) {\n          return this.model.maxval.toISOString();\n        } else {\n          return 'not a date';\n        }\n      }\n    }\n  },\n  bindings: {\n    'model.isDuration': {\n      type: 'toggle',\n      hook: 'group-duration-panel'\n    },\n    'minvalAsText': {\n      type: 'value',\n      hook: 'group-startduration-input'\n    },\n    'maxvalAsText': {\n      type: 'value',\n      hook: 'group-endduration-input'\n    }\n  },\n  events: {\n    'click [data-hook~=group-durationrange-button]': function clickDataHookGroupDurationrangeButton() {\n      var partition = this.model;\n      partition.reset();\n      this.queryByHook('group-startduration-input').dispatchEvent(new window.Event('input'));\n      this.queryByHook('group-endduration-input').dispatchEvent(new window.Event('input'));\n      this.parent.resetFilter = true;\n    },\n    'change [data-hook~=group-startduration-input]': function changeDataHookGroupStartdurationInput() {\n      var d = moment.duration(this.queryByHook('group-startduration-input').value);\n\n      if (moment.isDuration(d)) {\n        this.model.minval = d;\n      }\n\n      this.parent.resetFilter = true;\n    },\n    'change [data-hook~=group-endduration-input]': function changeDataHookGroupEnddurationInput() {\n      var d = moment.duration(this.queryByHook('group-endduration-input').value);\n\n      if (moment.isDuration(d)) {\n        this.model.maxval = d;\n      }\n\n      this.parent.resetFilter = true;\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYjMyMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtcGFydGl0aW9uL3BhcnRpdGlvbi1kdXJhdGlvbi5qcz9jZjk0Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBWaWV3ID0gcmVxdWlyZSgnYW1wZXJzYW5kLXZpZXcnKTtcbnZhciB0ZW1wbGF0ZXMgPSByZXF1aXJlKCcuLi8uLi90ZW1wbGF0ZXMnKTtcbnZhciBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQtdGltZXpvbmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMuY29uZmlndXJlUGFydGl0aW9uLnBhcnRpdGlvbkR1cmF0aW9uLFxuICBkZXJpdmVkOiB7XG4gICAgbWludmFsQXNUZXh0OiB7XG4gICAgICBkZXBzOiBbJ21vZGVsLm1pbnZhbCcsICdtb2RlbC5pc0R1cmF0aW9uJ10sXG4gICAgICBmbjogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5tb2RlbC5pc0R1cmF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwubWludmFsLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICdub3QgYSBkYXRlJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbWF4dmFsQXNUZXh0OiB7XG4gICAgICBkZXBzOiBbJ21vZGVsLm1heHZhbCcsICdtb2RlbC5pc0R1cmF0aW9uJ10sXG4gICAgICBmbjogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5tb2RlbC5pc0R1cmF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwubWF4dmFsLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICdub3QgYSBkYXRlJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgYmluZGluZ3M6IHtcbiAgICAnbW9kZWwuaXNEdXJhdGlvbic6IHtcbiAgICAgIHR5cGU6ICd0b2dnbGUnLFxuICAgICAgaG9vazogJ2dyb3VwLWR1cmF0aW9uLXBhbmVsJ1xuICAgIH0sXG5cbiAgICAnbWludmFsQXNUZXh0Jzoge1xuICAgICAgdHlwZTogJ3ZhbHVlJyxcbiAgICAgIGhvb2s6ICdncm91cC1zdGFydGR1cmF0aW9uLWlucHV0J1xuICAgIH0sXG4gICAgJ21heHZhbEFzVGV4dCc6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAnZ3JvdXAtZW5kZHVyYXRpb24taW5wdXQnXG4gICAgfVxuXG4gIH0sXG4gIGV2ZW50czoge1xuICAgICdjbGljayBbZGF0YS1ob29rfj1ncm91cC1kdXJhdGlvbnJhbmdlLWJ1dHRvbl0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcGFydGl0aW9uID0gdGhpcy5tb2RlbDtcbiAgICAgIHBhcnRpdGlvbi5yZXNldCgpO1xuXG4gICAgICB0aGlzLnF1ZXJ5QnlIb29rKCdncm91cC1zdGFydGR1cmF0aW9uLWlucHV0JykuZGlzcGF0Y2hFdmVudChuZXcgd2luZG93LkV2ZW50KCdpbnB1dCcpKTtcbiAgICAgIHRoaXMucXVlcnlCeUhvb2soJ2dyb3VwLWVuZGR1cmF0aW9uLWlucHV0JykuZGlzcGF0Y2hFdmVudChuZXcgd2luZG93LkV2ZW50KCdpbnB1dCcpKTtcbiAgICAgIHRoaXMucGFyZW50LnJlc2V0RmlsdGVyID0gdHJ1ZTtcbiAgICB9LFxuICAgICdjaGFuZ2UgW2RhdGEtaG9va349Z3JvdXAtc3RhcnRkdXJhdGlvbi1pbnB1dF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZCA9IG1vbWVudC5kdXJhdGlvbih0aGlzLnF1ZXJ5QnlIb29rKCdncm91cC1zdGFydGR1cmF0aW9uLWlucHV0JykudmFsdWUpO1xuICAgICAgaWYgKG1vbWVudC5pc0R1cmF0aW9uKGQpKSB7XG4gICAgICAgIHRoaXMubW9kZWwubWludmFsID0gZDtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFyZW50LnJlc2V0RmlsdGVyID0gdHJ1ZTtcbiAgICB9LFxuICAgICdjaGFuZ2UgW2RhdGEtaG9va349Z3JvdXAtZW5kZHVyYXRpb24taW5wdXRdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGQgPSBtb21lbnQuZHVyYXRpb24odGhpcy5xdWVyeUJ5SG9vaygnZ3JvdXAtZW5kZHVyYXRpb24taW5wdXQnKS52YWx1ZSk7XG4gICAgICBpZiAobW9tZW50LmlzRHVyYXRpb24oZCkpIHtcbiAgICAgICAgdGhpcy5tb2RlbC5tYXh2YWwgPSBkO1xuICAgICAgfVxuICAgICAgdGhpcy5wYXJlbnQucmVzZXRGaWx0ZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFYQTtBQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQVZBO0FBZ0JBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUF0QkE7QUF4Q0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///b322\n")},b43e:function(module,exports){eval('module.exports = {\n  steps: function steps() {\n    return [// {\n      //     element: document.getElementById(\'saveSessionButton\'),\n      //     position: "bottom",\n      //     intro: "Ok, wasn\'t that fun?",\n      // }\n    ];\n  },\n  hints: function hints() {\n    return [{\n      element: document.getElementById(\'saveSessionButton\'),\n      hintPosition: "bottom",\n      hint: "This buttons saves the current session."\n    }, {\n      element: document.getElementById(\'resetFiltersButton\'),\n      hintPosition: "bottom",\n      hint: "This buttons resets all the filters."\n    }];\n  }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYjQzZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9oZWxwL2FuYWx5emUuanM/ZDhhMSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBzdGVwczogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAvLyAgICAgZWxlbWVudDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhdmVTZXNzaW9uQnV0dG9uJyksXG4gICAgICAgICAgICAvLyAgICAgcG9zaXRpb246IFwiYm90dG9tXCIsXG4gICAgICAgICAgICAvLyAgICAgaW50cm86IFwiT2ssIHdhc24ndCB0aGF0IGZ1bj9cIixcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgXTtcbiAgICB9LFxuICAgIGhpbnRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2F2ZVNlc3Npb25CdXR0b24nKSxcbiAgICAgICAgICAgICAgICBoaW50UG9zaXRpb246IFwiYm90dG9tXCIsXG4gICAgICAgICAgICAgICAgaGludDogXCJUaGlzIGJ1dHRvbnMgc2F2ZXMgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzZXRGaWx0ZXJzQnV0dG9uJyksXG4gICAgICAgICAgICAgICAgaGludFBvc2l0aW9uOiBcImJvdHRvbVwiLFxuICAgICAgICAgICAgICAgIGhpbnQ6IFwiVGhpcyBidXR0b25zIHJlc2V0cyBhbGwgdGhlIGZpbHRlcnMuXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9ICAgIFxufTsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUF2QkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///b43e\n')},b966:function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\"); // var key = require('keymaster')\n\n\nmodule.exports = View.extend({\n  // register keyboard handlers\n  registerKeyboardShortcuts: function registerKeyboardShortcuts() {\n    /*\n    var self = this\n    _.each(this.keyboardShortcuts, function (value, k) {\n        // register key handler scoped to this page\n        key(k, self.cid, _.bind(self[value], self))\n    })\n    key.setScope(this.cid)\n    */\n  },\n  unregisterKeyboardShortcuts: function unregisterKeyboardShortcuts() {// key.deleteScope(this.cid)\n  },\n  props: {\n    pageName: 'string'\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYjk2Ni5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9iYXNlLmpzP2U0NWUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xuLy8gdmFyIGtleSA9IHJlcXVpcmUoJ2tleW1hc3RlcicpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlldy5leHRlbmQoe1xuICAvLyByZWdpc3RlciBrZXlib2FyZCBoYW5kbGVyc1xuICByZWdpc3RlcktleWJvYXJkU2hvcnRjdXRzOiBmdW5jdGlvbiAoKSB7XG4gICAgLypcbiAgICB2YXIgc2VsZiA9IHRoaXNcbiAgICBfLmVhY2godGhpcy5rZXlib2FyZFNob3J0Y3V0cywgZnVuY3Rpb24gKHZhbHVlLCBrKSB7XG4gICAgICAgIC8vIHJlZ2lzdGVyIGtleSBoYW5kbGVyIHNjb3BlZCB0byB0aGlzIHBhZ2VcbiAgICAgICAga2V5KGssIHNlbGYuY2lkLCBfLmJpbmQoc2VsZlt2YWx1ZV0sIHNlbGYpKVxuICAgIH0pXG4gICAga2V5LnNldFNjb3BlKHRoaXMuY2lkKVxuICAgICovXG4gIH0sXG4gIHVucmVnaXN0ZXJLZXlib2FyZFNob3J0Y3V0czogZnVuY3Rpb24gKCkge1xuICAgIC8vIGtleS5kZWxldGVTY29wZSh0aGlzLmNpZClcbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBwYWdlTmFtZTogJ3N0cmluZydcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQVFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQWZBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///b966\n")},bdff:function(module,exports,__webpack_require__){eval("var AmpersandModel = __webpack_require__(/*! ampersand-model */ \"3bfc\");\n\nmodule.exports = AmpersandModel.extend({\n  props: {\n    id: 'string',\n    date: 'string',\n    name: 'string'\n  },\n  session: {\n    isActive: ['boolean', true, false]\n  },\n  derived: {// fullName: {\n    //     deps: ['date', 'name'],\n    //     fn: function () {\n    //         return this.firstName + ' ' + this.lastName;\n    //     }\n    // }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmRmZi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9kYXRhc2V0cy9zZXNzaW9uLW1vZGVsLmpzPzcwZWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIEFtcGVyc2FuZE1vZGVsID0gcmVxdWlyZSgnYW1wZXJzYW5kLW1vZGVsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gQW1wZXJzYW5kTW9kZWwuZXh0ZW5kKHtcbiAgICBwcm9wczoge1xuICAgICAgICBpZDogJ3N0cmluZycsXG4gICAgICAgIGRhdGU6ICdzdHJpbmcnLFxuICAgICAgICBuYW1lOiAnc3RyaW5nJ1xuICAgIH0sXG4gICAgc2Vzc2lvbjoge1xuICAgICAgICBpc0FjdGl2ZTogWydib29sZWFuJywgdHJ1ZSwgZmFsc2VdLFxuICAgIH0sXG4gICAgZGVyaXZlZDoge1xuICAgICAgICAvLyBmdWxsTmFtZToge1xuICAgICAgICAvLyAgICAgZGVwczogWydkYXRlJywgJ25hbWUnXSxcbiAgICAgICAgLy8gICAgIGZuOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3ROYW1lICsgJyAnICsgdGhpcy5sYXN0TmFtZTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgIH1cbn0pOyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFEQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBVEEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///bdff\n")},c678:function(module,exports,__webpack_require__){eval("var Spot = __webpack_require__(/*! spot-framework */ \"3b07\");\n\nvar View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar timeUtil = Spot.util.time; // this.model should be a DatetimeTransform\n\nvar TimePartView = View.extend({\n  template: '<option data-hook=\"option\"> </option>',\n  render: function render() {\n    this.renderWithTemplate(this);\n  },\n  bindings: {\n    'model.description': [{\n      hook: 'option',\n      type: 'text'\n    }, {\n      hook: 'option',\n      type: 'attribute',\n      name: 'value'\n    }]\n  }\n});\nmodule.exports = View.extend({\n  template: '<select data-hook=\"options\"> </select>',\n  render: function render() {\n    this.renderWithTemplate(this);\n    this.renderCollection(timeUtil.timeParts, TimePartView, this.queryByHook('options'));\n    var value = this.model.transformedFormat;\n    this.queryByHook('options').value = value;\n  },\n  events: {\n    'change [data-hook=\"options\"]': 'changeTimePart'\n  },\n  changeTimePart: function changeTimePart() {\n    var value = this.queryByHook('options').value;\n    this.model.transformedFormat = value;\n\n    if (this.parent.parent.resetFilter === false) {\n      this.parent.parent.resetFilter = true;\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYzY3OC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZmFjZXQvdGltZS1wYXJ0cy1zZWxlY3QuanM/ZDlhZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgU3BvdCA9IHJlcXVpcmUoJ3Nwb3QtZnJhbWV3b3JrJyk7XG52YXIgVmlldyA9IHJlcXVpcmUoJ2FtcGVyc2FuZC12aWV3Jyk7XG52YXIgdGltZVV0aWwgPSBTcG90LnV0aWwudGltZTtcblxuLy8gdGhpcy5tb2RlbCBzaG91bGQgYmUgYSBEYXRldGltZVRyYW5zZm9ybVxuXG52YXIgVGltZVBhcnRWaWV3ID0gVmlldy5leHRlbmQoe1xuICB0ZW1wbGF0ZTogJzxvcHRpb24gZGF0YS1ob29rPVwib3B0aW9uXCI+IDwvb3B0aW9uPicsXG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVuZGVyV2l0aFRlbXBsYXRlKHRoaXMpO1xuICB9LFxuICBiaW5kaW5nczoge1xuICAgICdtb2RlbC5kZXNjcmlwdGlvbic6IFtcbiAgICAgIHtcbiAgICAgICAgaG9vazogJ29wdGlvbicsXG4gICAgICAgIHR5cGU6ICd0ZXh0J1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaG9vazogJ29wdGlvbicsXG4gICAgICAgIHR5cGU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBuYW1lOiAndmFsdWUnXG4gICAgICB9XG4gICAgXVxuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiAnPHNlbGVjdCBkYXRhLWhvb2s9XCJvcHRpb25zXCI+IDwvc2VsZWN0PicsXG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVuZGVyV2l0aFRlbXBsYXRlKHRoaXMpO1xuICAgIHRoaXMucmVuZGVyQ29sbGVjdGlvbih0aW1lVXRpbC50aW1lUGFydHMsIFRpbWVQYXJ0VmlldywgdGhpcy5xdWVyeUJ5SG9vaygnb3B0aW9ucycpKTtcblxuICAgIHZhciB2YWx1ZSA9IHRoaXMubW9kZWwudHJhbnNmb3JtZWRGb3JtYXQ7XG4gICAgdGhpcy5xdWVyeUJ5SG9vaygnb3B0aW9ucycpLnZhbHVlID0gdmFsdWU7XG4gIH0sXG4gIGV2ZW50czoge1xuICAgICdjaGFuZ2UgW2RhdGEtaG9vaz1cIm9wdGlvbnNcIl0nOiAnY2hhbmdlVGltZVBhcnQnXG4gIH0sXG4gIGNoYW5nZVRpbWVQYXJ0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5xdWVyeUJ5SG9vaygnb3B0aW9ucycpLnZhbHVlO1xuICAgIHRoaXMubW9kZWwudHJhbnNmb3JtZWRGb3JtYXQgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5wYXJlbnQucGFyZW50LnJlc2V0RmlsdGVyID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5wYXJlbnQucGFyZW50LnJlc2V0RmlsdGVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUhBO0FBTkE7QUFMQTtBQW9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQWxCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///c678\n")},c783:function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nmodule.exports = View.extend({\n  template: templates.configureFacet.categorialRule,\n  bindings: {\n    'model.expression': {\n      type: 'value',\n      hook: 'category-expression-input'\n    },\n    'model.count': {\n      type: 'text',\n      hook: 'category-value-count'\n    },\n    'model.group': {\n      type: 'value',\n      hook: 'category-group-input'\n    }\n  },\n  events: {\n    'click [data-hook~=category-remove]': function clickDataHookCategoryRemove() {\n      this.collection.remove(this.model);\n    },\n    'change [data-hook~=category-expression-input]': function changeDataHookCategoryExpressionInput() {\n      this.model.expression = this.queryByHook('category-expression-input').value;\n    },\n    'change [data-hook~=category-group-input]': function changeDataHookCategoryGroupInput() {\n      this.model.group = this.queryByHook('category-group-input').value;\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYzc4My5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZmFjZXQvY2F0ZWdvcmlhbC1ydWxlLmpzPzdjMWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uLy4uL3RlbXBsYXRlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXcuZXh0ZW5kKHtcbiAgdGVtcGxhdGU6IHRlbXBsYXRlcy5jb25maWd1cmVGYWNldC5jYXRlZ29yaWFsUnVsZSxcbiAgYmluZGluZ3M6IHtcbiAgICAnbW9kZWwuZXhwcmVzc2lvbic6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAnY2F0ZWdvcnktZXhwcmVzc2lvbi1pbnB1dCdcbiAgICB9LFxuICAgICdtb2RlbC5jb3VudCc6IHtcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGhvb2s6ICdjYXRlZ29yeS12YWx1ZS1jb3VudCdcbiAgICB9LFxuICAgICdtb2RlbC5ncm91cCc6IHtcbiAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICBob29rOiAnY2F0ZWdvcnktZ3JvdXAtaW5wdXQnXG4gICAgfVxuICB9LFxuICBldmVudHM6IHtcbiAgICAnY2xpY2sgW2RhdGEtaG9va349Y2F0ZWdvcnktcmVtb3ZlXSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuY29sbGVjdGlvbi5yZW1vdmUodGhpcy5tb2RlbCk7XG4gICAgfSxcbiAgICAnY2hhbmdlIFtkYXRhLWhvb2t+PWNhdGVnb3J5LWV4cHJlc3Npb24taW5wdXRdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC5leHByZXNzaW9uID0gdGhpcy5xdWVyeUJ5SG9vaygnY2F0ZWdvcnktZXhwcmVzc2lvbi1pbnB1dCcpLnZhbHVlO1xuICAgIH0sXG4gICAgJ2NoYW5nZSBbZGF0YS1ob29rfj1jYXRlZ29yeS1ncm91cC1pbnB1dF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLmdyb3VwID0gdGhpcy5xdWVyeUJ5SG9vaygnY2F0ZWdvcnktZ3JvdXAtaW5wdXQnKS52YWx1ZTtcbiAgICB9XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQVRBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQWhCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///c783\n")},d11f:function(module,exports,__webpack_require__){"use strict";eval("/* global window: false */\n\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar moment = __webpack_require__(/*! moment-timezone */ \"6c9d\");\n\nfunction prettyPrintDuration(tick) {\n  var parts = [];\n  var count;\n  var remainder = moment.duration(tick);\n  count = Math.floor(remainder.asYears());\n\n  if (count) {\n    if (count === 1) {\n      parts.push('1 year');\n    } else {\n      parts.push(count.toString() + ' years');\n    }\n  }\n\n  remainder.subtract(count, 'years');\n  count = Math.floor(remainder.asMonths());\n\n  if (count) {\n    if (count === 1) {\n      parts.push('1 month');\n    } else {\n      parts.push(count.toString() + ' months');\n    }\n  }\n\n  remainder.subtract(count, 'months');\n  count = Math.floor(remainder.asWeeks());\n\n  if (count) {\n    if (count === 1) {\n      parts.push('1 week');\n    } else {\n      parts.push(count.toString() + ' weeks');\n    }\n  }\n\n  remainder.subtract(count, 'weeks');\n  count = Math.floor(remainder.asDays());\n\n  if (count) {\n    if (count === 1) {\n      parts.push('1 day');\n    } else {\n      parts.push(count.toString() + ' days');\n    }\n  }\n\n  remainder.subtract(count, 'days');\n  count = Math.floor(remainder.asHours());\n\n  if (count) {\n    if (count === 1) {\n      parts.push('1 hour');\n    } else {\n      parts.push(count.toString() + ' hours');\n    }\n  }\n\n  remainder.subtract(count, 'hours');\n  count = Math.floor(remainder.asMinutes());\n\n  if (count) {\n    if (count === 1) {\n      parts.push('1 minute');\n    } else {\n      parts.push(count.toString() + ' minutes');\n    }\n  }\n\n  remainder.subtract(count, 'minutes');\n  count = Math.floor(remainder.asSeconds());\n\n  if (count) {\n    if (count === 1) {\n      parts.push('1 second');\n    } else {\n      parts.push(count.toString() + ' seconds');\n    }\n  }\n\n  remainder.subtract(count, 'seconds');\n  count = Math.floor(remainder.asMilliseconds());\n\n  if (count) {\n    if (count === 1) {\n      parts.push('1 millisecond');\n    } else {\n      parts.push(count.toString() + ' milliseconds');\n    }\n  }\n\n  return parts.join(' ');\n}\n\nvar time = {\n  units: [{\n    name: 'millisecond',\n    steps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n  }, {\n    name: 'second',\n    steps: [1, 2, 5, 10, 30]\n  }, {\n    name: 'minute',\n    steps: [1, 2, 5, 10, 30]\n  }, {\n    name: 'hour',\n    steps: [1, 2, 3, 6, 12]\n  }, {\n    name: 'day',\n    steps: [1, 2, 5]\n  }, {\n    name: 'week',\n    maxStep: 4\n  }, {\n    name: 'month',\n    maxStep: 3 //  }, {\n    //    name: 'quarter',\n    //    maxStep: 4\n\n  }, {\n    name: 'year',\n    maxStep: false\n  }]\n};\nvar defaultConfig = {};\n\nmodule.exports = function (Chart, moment) {\n  var helpers = Chart.helpers;\n  moment = moment || __webpack_require__(/*! moment */ \"da01\");\n  var DurationScale = Chart.Scale.extend({\n    getLabelMoment: function getLabelMoment(datasetIndex, index) {\n      if (datasetIndex === null || index === null) {\n        return null;\n      }\n\n      if (typeof this.labelMoments[datasetIndex] !== 'undefined') {\n        return this.labelMoments[datasetIndex][index];\n      }\n\n      return null;\n    },\n    getLabelDiff: function getLabelDiff(datasetIndex, index) {\n      var me = this;\n\n      if (datasetIndex === null || index === null) {\n        return null;\n      }\n\n      if (me.labelDiffs === undefined) {\n        me.buildLabelDiffs();\n      }\n\n      if (typeof me.labelDiffs[datasetIndex] !== 'undefined') {\n        return me.labelDiffs[datasetIndex][index];\n      }\n\n      return null;\n    },\n    getMomentStartOf: function getMomentStartOf(tick) {\n      var me = this;\n      return moment.duration(Math.floor(tick.as(me.tickUnit)), me.tickUnit);\n    },\n    determineDataLimits: function determineDataLimits() {\n      var me = this;\n      me.labelMoments = []; // Get min max from labels\n\n      var scaleLabelMoments = [];\n\n      if (me.chart.data.labels && me.chart.data.labels.length > 0) {\n        me.firstTick = null;\n        me.lastTick = null;\n        helpers.each(me.chart.data.labels, function (label) {\n          var labelMoment = me.parseDuration(label);\n          scaleLabelMoments.push(labelMoment);\n\n          if (me.firstTick === null || me.firstTick > labelMoment) {\n            me.firstTick = labelMoment;\n          }\n\n          if (me.lastTick === null || me.lastTick < labelMoment) {\n            me.lastTick = labelMoment;\n          }\n        }, me);\n      } else {\n        me.firstTick = moment.duration('PT1S');\n        me.lastTick = moment.duration('PT10S');\n      } // Adjust min max from datasets, and build the labelMoments[dataset][point] array\n\n\n      helpers.each(me.chart.data.datasets, function (dataset, datasetIndex) {\n        var momentsForDataset = [];\n        var datasetVisible = me.chart.isDatasetVisible(datasetIndex);\n\n        if (_typeof(dataset.data[0]) === 'object' && dataset.data[0] !== null) {\n          helpers.each(dataset.data, function (value) {\n            var labelMoment;\n\n            if (me.isHorizontal()) {\n              labelMoment = me.parseDuration(value.x);\n            } else {\n              labelMoment = me.parseDuration(value.y);\n            }\n\n            momentsForDataset.push(labelMoment);\n\n            if (datasetVisible) {\n              // May have gone outside the scale ranges, make sure we keep the first and last ticks updated\n              me.firstTick = me.firstTick > labelMoment ? labelMoment : me.firstTick;\n              me.lastTick = me.lastTick < labelMoment ? labelMoment : me.lastTick;\n            }\n          }, me);\n        } else {\n          // We have no labels. Use the ones from the scale\n          momentsForDataset = scaleLabelMoments;\n        }\n\n        me.labelMoments.push(momentsForDataset);\n      }, me); // We will modify these, so clone for later\n\n      me.firstTick = moment.duration(me.firstTick);\n      me.lastTick = moment.duration(me.lastTick);\n    },\n    buildLabelDiffs: function buildLabelDiffs() {\n      var me = this;\n      me.labelDiffs = [];\n      var scaleLabelDiffs = []; // Parse common labels once\n\n      if (me.chart.data.labels && me.chart.data.labels.length > 0) {\n        helpers.each(me.chart.data.labels, function (label) {\n          var labelMoment = me.parseDuration(label);\n\n          if (moment.isDuration(labelMoment)) {\n            scaleLabelDiffs.push(moment.duration(labelMoment).subtract(me.firstTick).as(me.tickUnit));\n          }\n        }, me);\n      }\n\n      helpers.each(me.chart.data.datasets, function (dataset) {\n        var diffsForDataset = [];\n\n        if (_typeof(dataset.data[0]) === 'object' && dataset.data[0] !== null) {\n          helpers.each(dataset.data, function (value) {\n            var labelMoment;\n\n            if (me.isHorizontal()) {\n              labelMoment = me.parseDuration(value.x);\n            } else {\n              labelMoment = me.parseDuration(value.y);\n            }\n\n            if (moment.isDuration(labelMoment)) {\n              diffsForDataset.push(moment.duration(labelMoment).subtract(me.firstTick).as(me.tickUnit));\n            }\n          }, me);\n        } else {\n          // We have no labels. Use common ones\n          diffsForDataset = scaleLabelDiffs;\n        }\n\n        me.labelDiffs.push(diffsForDataset);\n      }, me);\n    },\n    buildTicks: function buildTicks() {\n      var me = this;\n      me.ctx.save();\n      var tickFontSize = helpers.getValueOrDefault(me.options.ticks.fontSize, Chart.defaults.global.defaultFontSize);\n      var tickFontStyle = helpers.getValueOrDefault(me.options.ticks.fontStyle, Chart.defaults.global.defaultFontStyle);\n      var tickFontFamily = helpers.getValueOrDefault(me.options.ticks.fontFamily, Chart.defaults.global.defaultFontFamily);\n      var tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n      me.ctx.font = tickLabelFont;\n      me.ticks = [];\n      me.unitScale = 1; // How much we scale the unit by, ie 2 means 2x unit per step\n\n      me.scaleSizeInUnits = 0; // How large the scale is in the base unit (seconds, minutes, etc)\n      // Determine the smallest needed unit of the time\n\n      var innerWidth = me.isHorizontal() ? me.width - (me.paddingLeft + me.paddingRight) : me.height - (me.paddingTop + me.paddingBottom); // Crude approximation of what the label length might be\n\n      var tempFirstLabel = me.tickFormatFunction(me.firstTick, 0, []);\n      var tickLabelWidth = me.ctx.measureText(tempFirstLabel).width;\n      var cosRotation = Math.cos(helpers.toRadians(me.options.ticks.maxRotation));\n      var sinRotation = Math.sin(helpers.toRadians(me.options.ticks.maxRotation));\n      tickLabelWidth = tickLabelWidth * cosRotation + tickFontSize * sinRotation;\n      var labelCapacity = innerWidth / tickLabelWidth; // Start as small as possible\n\n      me.tickUnit = 'millisecond';\n      me.scaleSizeInUnits = moment.duration(me.lastTick).subtract(me.firstTick).as(me.tickUnit);\n      var unitDefinitionIndex = 0;\n      var unitDefinition = time.units[unitDefinitionIndex]; // While we aren't ideal and we don't have units left\n\n      while (unitDefinitionIndex < time.units.length) {\n        // Can we scale this unit. If `false` we can scale infinitely\n        me.unitScale = 1;\n\n        if (helpers.isArray(unitDefinition.steps) && Math.ceil(me.scaleSizeInUnits / labelCapacity) < helpers.max(unitDefinition.steps)) {\n          // Use one of the predefined steps\n          for (var idx = 0; idx < unitDefinition.steps.length; ++idx) {\n            if (unitDefinition.steps[idx] >= Math.ceil(me.scaleSizeInUnits / labelCapacity)) {\n              me.unitScale = helpers.getValueOrDefault(me.options.time.unitStepSize, unitDefinition.steps[idx]);\n              break;\n            }\n          }\n\n          break;\n        } else if (unitDefinition.maxStep === false || Math.ceil(me.scaleSizeInUnits / labelCapacity) < unitDefinition.maxStep) {\n          // We have a max step. Scale this unit\n          me.unitScale = helpers.getValueOrDefault(me.options.time.unitStepSize, Math.ceil(me.scaleSizeInUnits / labelCapacity));\n          break;\n        } else {\n          // Move to the next unit up\n          ++unitDefinitionIndex;\n          unitDefinition = time.units[unitDefinitionIndex];\n          me.tickUnit = unitDefinition.name;\n          var leadingUnitBuffer = moment.duration(me.firstTick).subtract(me.getMomentStartOf(me.firstTick)).as(me.tickUnit);\n          var trailingUnitBuffer = me.getMomentStartOf(moment.duration(me.lastTick).add(1, me.tickUnit)).subtract(me.lastTick).as(me.tickUnit);\n          me.scaleSizeInUnits = moment.duration(me.lastTick).subtract(me.firstTick).as(me.tickUnit) + leadingUnitBuffer + trailingUnitBuffer;\n        }\n      } // Round the first tick\n\n\n      var roundedStart = me.getMomentStartOf(me.firstTick); // Round the last tick\n\n      var roundedEnd = me.getMomentStartOf(me.lastTick);\n      var delta = moment.duration(roundedEnd).subtract(me.lastTick).as(me.tickUnit);\n\n      if (delta < 0) {\n        // Do not use end of because we need me to be in the next time unit\n        me.lastTick = roundedEnd.add(1, me.tickUnit);\n      } else if (delta >= 0) {\n        me.lastTick = roundedEnd;\n      }\n\n      me.scaleSizeInUnits = moment.duration(me.lastTick).subtract(me.firstTick).as(me.tickUnit);\n      me.ticks.push(moment.duration(me.firstTick)); // For every unit in between the first and last moment, create a moment and add it to the ticks tick\n\n      for (var i = 1; i <= me.scaleSizeInUnits; ++i) {\n        var newTick = moment.duration(roundedStart).add(i, me.tickUnit);\n\n        if (i % me.unitScale === 0) {\n          me.ticks.push(newTick);\n        }\n      }\n\n      me.ctx.restore(); // Invalidate label diffs cache\n\n      me.labelDiffs = undefined;\n    },\n    // Get tooltip label\n    getLabelForIndex: function getLabelForIndex(index, datasetIndex) {\n      var me = this;\n      var label = me.chart.data.labels && index < me.chart.data.labels.length ? me.chart.data.labels[index] : '';\n\n      if (_typeof(me.chart.data.datasets[datasetIndex].data[0]) === 'object') {\n        if (me.isHorizontal()) {\n          label = me.chart.data.datasets[datasetIndex].data[index].x;\n        } else {\n          label = me.chart.data.datasets[datasetIndex].data[index].y;\n        }\n      }\n\n      return prettyPrintDuration(me.parseDuration(label));\n    },\n    // Function to format an individual tick mark\n    tickFormatFunction: function tickFormatFunction(tick, index, ticks) {\n      return tick.toISOString();\n    },\n    convertTicksToLabels: function convertTicksToLabels() {\n      var me = this;\n      me.tickMoments = me.ticks;\n      me.ticks = me.ticks.map(me.tickFormatFunction, me);\n    },\n    getPixelForValue: function getPixelForValue(value, index, datasetIndex) {\n      var me = this;\n      var offset = null;\n\n      if (index !== undefined && datasetIndex !== undefined) {\n        offset = me.getLabelDiff(datasetIndex, index);\n      }\n\n      if (offset === null) {\n        if (!value || !moment.isDuration(value)) {\n          // not already a moment object\n          value = me.parseDuration(value);\n        }\n\n        if (value && moment.isDuration(value)) {\n          offset = moment.duration(value).subtract(me.firstTick).as(me.tickUnit);\n        }\n      }\n\n      if (offset !== null) {\n        var decimal = offset !== 0 ? offset / me.scaleSizeInUnits : offset;\n\n        if (me.isHorizontal()) {\n          var innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n          var valueOffset = innerWidth * decimal + me.paddingLeft;\n          return me.left + Math.round(valueOffset);\n        }\n\n        var innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n        var heightOffset = innerHeight * decimal + me.paddingTop;\n        return me.top + Math.round(heightOffset);\n      }\n    },\n    getPixelForTick: function getPixelForTick(index) {\n      return this.getPixelForValue(this.tickMoments[index], null, null);\n    },\n    getValueForPixel: function getValueForPixel(pixel) {\n      var me = this;\n      var innerDimension = me.isHorizontal() ? me.width - (me.paddingLeft + me.paddingRight) : me.height - (me.paddingTop + me.paddingBottom);\n      var offset = (pixel - (me.isHorizontal() ? me.left + me.paddingLeft : me.top + me.paddingTop)) / innerDimension;\n      offset *= me.scaleSizeInUnits;\n      return moment.duration(me.firstTick).add(moment.duration(offset, me.tickUnit).asSeconds(), 'seconds');\n    },\n    parseDuration: function parseDuration(label) {\n      return moment.duration(label);\n    }\n  });\n  Chart.scaleService.registerScaleType('spot-duration', DurationScale, defaultConfig);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDExZi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL2NoYXJ0anMtZHVyYXRpb24tc2NhbGUuanM/MWY5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgd2luZG93OiBmYWxzZSAqL1xuJ3VzZSBzdHJpY3QnO1xudmFyIG1vbWVudCA9IHJlcXVpcmUoJ21vbWVudC10aW1lem9uZScpO1xuXG5mdW5jdGlvbiBwcmV0dHlQcmludER1cmF0aW9uICh0aWNrKSB7XG4gIHZhciBwYXJ0cyA9IFtdO1xuICB2YXIgY291bnQ7XG4gIHZhciByZW1haW5kZXIgPSBtb21lbnQuZHVyYXRpb24odGljayk7XG5cbiAgY291bnQgPSBNYXRoLmZsb29yKHJlbWFpbmRlci5hc1llYXJzKCkpO1xuICBpZiAoY291bnQpIHsgaWYgKGNvdW50ID09PSAxKSB7IHBhcnRzLnB1c2goJzEgeWVhcicpOyB9IGVsc2UgeyBwYXJ0cy5wdXNoKGNvdW50LnRvU3RyaW5nKCkgKyAnIHllYXJzJyk7IH0gfVxuICByZW1haW5kZXIuc3VidHJhY3QoY291bnQsICd5ZWFycycpO1xuXG4gIGNvdW50ID0gTWF0aC5mbG9vcihyZW1haW5kZXIuYXNNb250aHMoKSk7XG4gIGlmIChjb3VudCkgeyBpZiAoY291bnQgPT09IDEpIHsgcGFydHMucHVzaCgnMSBtb250aCcpOyB9IGVsc2UgeyBwYXJ0cy5wdXNoKGNvdW50LnRvU3RyaW5nKCkgKyAnIG1vbnRocycpOyB9IH1cbiAgcmVtYWluZGVyLnN1YnRyYWN0KGNvdW50LCAnbW9udGhzJyk7XG5cbiAgY291bnQgPSBNYXRoLmZsb29yKHJlbWFpbmRlci5hc1dlZWtzKCkpO1xuICBpZiAoY291bnQpIHsgaWYgKGNvdW50ID09PSAxKSB7IHBhcnRzLnB1c2goJzEgd2VlaycpOyB9IGVsc2UgeyBwYXJ0cy5wdXNoKGNvdW50LnRvU3RyaW5nKCkgKyAnIHdlZWtzJyk7IH0gfVxuICByZW1haW5kZXIuc3VidHJhY3QoY291bnQsICd3ZWVrcycpO1xuXG4gIGNvdW50ID0gTWF0aC5mbG9vcihyZW1haW5kZXIuYXNEYXlzKCkpO1xuICBpZiAoY291bnQpIHsgaWYgKGNvdW50ID09PSAxKSB7IHBhcnRzLnB1c2goJzEgZGF5Jyk7IH0gZWxzZSB7IHBhcnRzLnB1c2goY291bnQudG9TdHJpbmcoKSArICcgZGF5cycpOyB9IH1cbiAgcmVtYWluZGVyLnN1YnRyYWN0KGNvdW50LCAnZGF5cycpO1xuXG4gIGNvdW50ID0gTWF0aC5mbG9vcihyZW1haW5kZXIuYXNIb3VycygpKTtcbiAgaWYgKGNvdW50KSB7IGlmIChjb3VudCA9PT0gMSkgeyBwYXJ0cy5wdXNoKCcxIGhvdXInKTsgfSBlbHNlIHsgcGFydHMucHVzaChjb3VudC50b1N0cmluZygpICsgJyBob3VycycpOyB9IH1cbiAgcmVtYWluZGVyLnN1YnRyYWN0KGNvdW50LCAnaG91cnMnKTtcblxuICBjb3VudCA9IE1hdGguZmxvb3IocmVtYWluZGVyLmFzTWludXRlcygpKTtcbiAgaWYgKGNvdW50KSB7IGlmIChjb3VudCA9PT0gMSkgeyBwYXJ0cy5wdXNoKCcxIG1pbnV0ZScpOyB9IGVsc2UgeyBwYXJ0cy5wdXNoKGNvdW50LnRvU3RyaW5nKCkgKyAnIG1pbnV0ZXMnKTsgfSB9XG4gIHJlbWFpbmRlci5zdWJ0cmFjdChjb3VudCwgJ21pbnV0ZXMnKTtcblxuICBjb3VudCA9IE1hdGguZmxvb3IocmVtYWluZGVyLmFzU2Vjb25kcygpKTtcbiAgaWYgKGNvdW50KSB7IGlmIChjb3VudCA9PT0gMSkgeyBwYXJ0cy5wdXNoKCcxIHNlY29uZCcpOyB9IGVsc2UgeyBwYXJ0cy5wdXNoKGNvdW50LnRvU3RyaW5nKCkgKyAnIHNlY29uZHMnKTsgfSB9XG4gIHJlbWFpbmRlci5zdWJ0cmFjdChjb3VudCwgJ3NlY29uZHMnKTtcblxuICBjb3VudCA9IE1hdGguZmxvb3IocmVtYWluZGVyLmFzTWlsbGlzZWNvbmRzKCkpO1xuICBpZiAoY291bnQpIHsgaWYgKGNvdW50ID09PSAxKSB7IHBhcnRzLnB1c2goJzEgbWlsbGlzZWNvbmQnKTsgfSBlbHNlIHsgcGFydHMucHVzaChjb3VudC50b1N0cmluZygpICsgJyBtaWxsaXNlY29uZHMnKTsgfSB9XG4gIHJldHVybiBwYXJ0cy5qb2luKCcgJyk7XG59XG5cbnZhciB0aW1lID0ge1xuICB1bml0czogW3tcbiAgICBuYW1lOiAnbWlsbGlzZWNvbmQnLFxuICAgIHN0ZXBzOiBbMSwgMiwgNSwgMTAsIDIwLCA1MCwgMTAwLCAyNTAsIDUwMF1cbiAgfSwge1xuICAgIG5hbWU6ICdzZWNvbmQnLFxuICAgIHN0ZXBzOiBbMSwgMiwgNSwgMTAsIDMwXVxuICB9LCB7XG4gICAgbmFtZTogJ21pbnV0ZScsXG4gICAgc3RlcHM6IFsxLCAyLCA1LCAxMCwgMzBdXG4gIH0sIHtcbiAgICBuYW1lOiAnaG91cicsXG4gICAgc3RlcHM6IFsxLCAyLCAzLCA2LCAxMl1cbiAgfSwge1xuICAgIG5hbWU6ICdkYXknLFxuICAgIHN0ZXBzOiBbMSwgMiwgNV1cbiAgfSwge1xuICAgIG5hbWU6ICd3ZWVrJyxcbiAgICBtYXhTdGVwOiA0XG4gIH0sIHtcbiAgICBuYW1lOiAnbW9udGgnLFxuICAgIG1heFN0ZXA6IDNcbi8vICB9LCB7XG4vLyAgICBuYW1lOiAncXVhcnRlcicsXG4vLyAgICBtYXhTdGVwOiA0XG4gIH0sIHtcbiAgICBuYW1lOiAneWVhcicsXG4gICAgbWF4U3RlcDogZmFsc2VcbiAgfV1cbn07XG5cbnZhciBkZWZhdWx0Q29uZmlnID0ge1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ2hhcnQsIG1vbWVudCkge1xuICB2YXIgaGVscGVycyA9IENoYXJ0LmhlbHBlcnM7XG4gIG1vbWVudCA9IG1vbWVudCB8fCByZXF1aXJlKCdtb21lbnQnKTtcblxuICB2YXIgRHVyYXRpb25TY2FsZSA9IENoYXJ0LlNjYWxlLmV4dGVuZCh7XG4gICAgZ2V0TGFiZWxNb21lbnQ6IGZ1bmN0aW9uIChkYXRhc2V0SW5kZXgsIGluZGV4KSB7XG4gICAgICBpZiAoZGF0YXNldEluZGV4ID09PSBudWxsIHx8IGluZGV4ID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRoaXMubGFiZWxNb21lbnRzW2RhdGFzZXRJbmRleF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhYmVsTW9tZW50c1tkYXRhc2V0SW5kZXhdW2luZGV4XTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgICBnZXRMYWJlbERpZmY6IGZ1bmN0aW9uIChkYXRhc2V0SW5kZXgsIGluZGV4KSB7XG4gICAgICB2YXIgbWUgPSB0aGlzO1xuICAgICAgaWYgKGRhdGFzZXRJbmRleCA9PT0gbnVsbCB8fCBpbmRleCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lLmxhYmVsRGlmZnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtZS5idWlsZExhYmVsRGlmZnMoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBtZS5sYWJlbERpZmZzW2RhdGFzZXRJbmRleF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBtZS5sYWJlbERpZmZzW2RhdGFzZXRJbmRleF1baW5kZXhdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIGdldE1vbWVudFN0YXJ0T2Y6IGZ1bmN0aW9uICh0aWNrKSB7XG4gICAgICB2YXIgbWUgPSB0aGlzO1xuICAgICAgcmV0dXJuIG1vbWVudC5kdXJhdGlvbihNYXRoLmZsb29yKHRpY2suYXMobWUudGlja1VuaXQpKSwgbWUudGlja1VuaXQpO1xuICAgIH0sXG4gICAgZGV0ZXJtaW5lRGF0YUxpbWl0czogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG1lID0gdGhpcztcbiAgICAgIG1lLmxhYmVsTW9tZW50cyA9IFtdO1xuXG4gICAgICAvLyBHZXQgbWluIG1heCBmcm9tIGxhYmVsc1xuICAgICAgdmFyIHNjYWxlTGFiZWxNb21lbnRzID0gW107XG4gICAgICBpZiAobWUuY2hhcnQuZGF0YS5sYWJlbHMgJiYgbWUuY2hhcnQuZGF0YS5sYWJlbHMubGVuZ3RoID4gMCkge1xuICAgICAgICBtZS5maXJzdFRpY2sgPSBudWxsO1xuICAgICAgICBtZS5sYXN0VGljayA9IG51bGw7XG5cbiAgICAgICAgaGVscGVycy5lYWNoKG1lLmNoYXJ0LmRhdGEubGFiZWxzLCBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgICB2YXIgbGFiZWxNb21lbnQgPSBtZS5wYXJzZUR1cmF0aW9uKGxhYmVsKTtcblxuICAgICAgICAgIHNjYWxlTGFiZWxNb21lbnRzLnB1c2gobGFiZWxNb21lbnQpO1xuXG4gICAgICAgICAgaWYgKG1lLmZpcnN0VGljayA9PT0gbnVsbCB8fCBtZS5maXJzdFRpY2sgPiBsYWJlbE1vbWVudCkge1xuICAgICAgICAgICAgbWUuZmlyc3RUaWNrID0gbGFiZWxNb21lbnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtZS5sYXN0VGljayA9PT0gbnVsbCB8fCBtZS5sYXN0VGljayA8IGxhYmVsTW9tZW50KSB7XG4gICAgICAgICAgICBtZS5sYXN0VGljayA9IGxhYmVsTW9tZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWUuZmlyc3RUaWNrID0gbW9tZW50LmR1cmF0aW9uKCdQVDFTJyk7XG4gICAgICAgIG1lLmxhc3RUaWNrID0gbW9tZW50LmR1cmF0aW9uKCdQVDEwUycpO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGp1c3QgbWluIG1heCBmcm9tIGRhdGFzZXRzLCBhbmQgYnVpbGQgdGhlIGxhYmVsTW9tZW50c1tkYXRhc2V0XVtwb2ludF0gYXJyYXlcbiAgICAgIGhlbHBlcnMuZWFjaChtZS5jaGFydC5kYXRhLmRhdGFzZXRzLCBmdW5jdGlvbiAoZGF0YXNldCwgZGF0YXNldEluZGV4KSB7XG4gICAgICAgIHZhciBtb21lbnRzRm9yRGF0YXNldCA9IFtdO1xuICAgICAgICB2YXIgZGF0YXNldFZpc2libGUgPSBtZS5jaGFydC5pc0RhdGFzZXRWaXNpYmxlKGRhdGFzZXRJbmRleCk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhc2V0LmRhdGFbMF0gPT09ICdvYmplY3QnICYmIGRhdGFzZXQuZGF0YVswXSAhPT0gbnVsbCkge1xuICAgICAgICAgIGhlbHBlcnMuZWFjaChkYXRhc2V0LmRhdGEsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIGxhYmVsTW9tZW50O1xuICAgICAgICAgICAgaWYgKG1lLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICAgICAgICAgIGxhYmVsTW9tZW50ID0gbWUucGFyc2VEdXJhdGlvbih2YWx1ZS54KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxhYmVsTW9tZW50ID0gbWUucGFyc2VEdXJhdGlvbih2YWx1ZS55KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1vbWVudHNGb3JEYXRhc2V0LnB1c2gobGFiZWxNb21lbnQpO1xuXG4gICAgICAgICAgICBpZiAoZGF0YXNldFZpc2libGUpIHtcbiAgICAgICAgICAgICAgLy8gTWF5IGhhdmUgZ29uZSBvdXRzaWRlIHRoZSBzY2FsZSByYW5nZXMsIG1ha2Ugc3VyZSB3ZSBrZWVwIHRoZSBmaXJzdCBhbmQgbGFzdCB0aWNrcyB1cGRhdGVkXG4gICAgICAgICAgICAgIG1lLmZpcnN0VGljayA9IG1lLmZpcnN0VGljayA+IGxhYmVsTW9tZW50ID8gbGFiZWxNb21lbnQgOiBtZS5maXJzdFRpY2s7XG4gICAgICAgICAgICAgIG1lLmxhc3RUaWNrID0gbWUubGFzdFRpY2sgPCBsYWJlbE1vbWVudCA/IGxhYmVsTW9tZW50IDogbWUubGFzdFRpY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFdlIGhhdmUgbm8gbGFiZWxzLiBVc2UgdGhlIG9uZXMgZnJvbSB0aGUgc2NhbGVcbiAgICAgICAgICBtb21lbnRzRm9yRGF0YXNldCA9IHNjYWxlTGFiZWxNb21lbnRzO1xuICAgICAgICB9XG5cbiAgICAgICAgbWUubGFiZWxNb21lbnRzLnB1c2gobW9tZW50c0ZvckRhdGFzZXQpO1xuICAgICAgfSwgbWUpO1xuXG4gICAgICAvLyBXZSB3aWxsIG1vZGlmeSB0aGVzZSwgc28gY2xvbmUgZm9yIGxhdGVyXG4gICAgICBtZS5maXJzdFRpY2sgPSBtb21lbnQuZHVyYXRpb24obWUuZmlyc3RUaWNrKTtcbiAgICAgIG1lLmxhc3RUaWNrID0gbW9tZW50LmR1cmF0aW9uKG1lLmxhc3RUaWNrKTtcbiAgICB9LFxuICAgIGJ1aWxkTGFiZWxEaWZmczogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG1lID0gdGhpcztcbiAgICAgIG1lLmxhYmVsRGlmZnMgPSBbXTtcbiAgICAgIHZhciBzY2FsZUxhYmVsRGlmZnMgPSBbXTtcbiAgICAgIC8vIFBhcnNlIGNvbW1vbiBsYWJlbHMgb25jZVxuICAgICAgaWYgKG1lLmNoYXJ0LmRhdGEubGFiZWxzICYmIG1lLmNoYXJ0LmRhdGEubGFiZWxzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaGVscGVycy5lYWNoKG1lLmNoYXJ0LmRhdGEubGFiZWxzLCBmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgICB2YXIgbGFiZWxNb21lbnQgPSBtZS5wYXJzZUR1cmF0aW9uKGxhYmVsKTtcblxuICAgICAgICAgIGlmIChtb21lbnQuaXNEdXJhdGlvbihsYWJlbE1vbWVudCkpIHtcbiAgICAgICAgICAgIHNjYWxlTGFiZWxEaWZmcy5wdXNoKG1vbWVudC5kdXJhdGlvbihsYWJlbE1vbWVudCkuc3VidHJhY3QobWUuZmlyc3RUaWNrKS5hcyhtZS50aWNrVW5pdCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgbWUpO1xuICAgICAgfVxuXG4gICAgICBoZWxwZXJzLmVhY2gobWUuY2hhcnQuZGF0YS5kYXRhc2V0cywgZnVuY3Rpb24gKGRhdGFzZXQpIHtcbiAgICAgICAgdmFyIGRpZmZzRm9yRGF0YXNldCA9IFtdO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YXNldC5kYXRhWzBdID09PSAnb2JqZWN0JyAmJiBkYXRhc2V0LmRhdGFbMF0gIT09IG51bGwpIHtcbiAgICAgICAgICBoZWxwZXJzLmVhY2goZGF0YXNldC5kYXRhLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBsYWJlbE1vbWVudDtcbiAgICAgICAgICAgIGlmIChtZS5pc0hvcml6b250YWwoKSkge1xuICAgICAgICAgICAgICBsYWJlbE1vbWVudCA9IG1lLnBhcnNlRHVyYXRpb24odmFsdWUueCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsYWJlbE1vbWVudCA9IG1lLnBhcnNlRHVyYXRpb24odmFsdWUueSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtb21lbnQuaXNEdXJhdGlvbihsYWJlbE1vbWVudCkpIHtcbiAgICAgICAgICAgICAgZGlmZnNGb3JEYXRhc2V0LnB1c2gobW9tZW50LmR1cmF0aW9uKGxhYmVsTW9tZW50KS5zdWJ0cmFjdChtZS5maXJzdFRpY2spLmFzKG1lLnRpY2tVbml0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFdlIGhhdmUgbm8gbGFiZWxzLiBVc2UgY29tbW9uIG9uZXNcbiAgICAgICAgICBkaWZmc0ZvckRhdGFzZXQgPSBzY2FsZUxhYmVsRGlmZnM7XG4gICAgICAgIH1cbiAgICAgICAgbWUubGFiZWxEaWZmcy5wdXNoKGRpZmZzRm9yRGF0YXNldCk7XG4gICAgICB9LCBtZSk7XG4gICAgfSxcbiAgICBidWlsZFRpY2tzOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgbWUgPSB0aGlzO1xuXG4gICAgICBtZS5jdHguc2F2ZSgpO1xuICAgICAgdmFyIHRpY2tGb250U2l6ZSA9IGhlbHBlcnMuZ2V0VmFsdWVPckRlZmF1bHQobWUub3B0aW9ucy50aWNrcy5mb250U2l6ZSwgQ2hhcnQuZGVmYXVsdHMuZ2xvYmFsLmRlZmF1bHRGb250U2l6ZSk7XG4gICAgICB2YXIgdGlja0ZvbnRTdHlsZSA9IGhlbHBlcnMuZ2V0VmFsdWVPckRlZmF1bHQobWUub3B0aW9ucy50aWNrcy5mb250U3R5bGUsIENoYXJ0LmRlZmF1bHRzLmdsb2JhbC5kZWZhdWx0Rm9udFN0eWxlKTtcbiAgICAgIHZhciB0aWNrRm9udEZhbWlseSA9IGhlbHBlcnMuZ2V0VmFsdWVPckRlZmF1bHQobWUub3B0aW9ucy50aWNrcy5mb250RmFtaWx5LCBDaGFydC5kZWZhdWx0cy5nbG9iYWwuZGVmYXVsdEZvbnRGYW1pbHkpO1xuICAgICAgdmFyIHRpY2tMYWJlbEZvbnQgPSBoZWxwZXJzLmZvbnRTdHJpbmcodGlja0ZvbnRTaXplLCB0aWNrRm9udFN0eWxlLCB0aWNrRm9udEZhbWlseSk7XG4gICAgICBtZS5jdHguZm9udCA9IHRpY2tMYWJlbEZvbnQ7XG5cbiAgICAgIG1lLnRpY2tzID0gW107XG4gICAgICBtZS51bml0U2NhbGUgPSAxOyAvLyBIb3cgbXVjaCB3ZSBzY2FsZSB0aGUgdW5pdCBieSwgaWUgMiBtZWFucyAyeCB1bml0IHBlciBzdGVwXG4gICAgICBtZS5zY2FsZVNpemVJblVuaXRzID0gMDsgLy8gSG93IGxhcmdlIHRoZSBzY2FsZSBpcyBpbiB0aGUgYmFzZSB1bml0IChzZWNvbmRzLCBtaW51dGVzLCBldGMpXG5cbiAgICAgIC8vIERldGVybWluZSB0aGUgc21hbGxlc3QgbmVlZGVkIHVuaXQgb2YgdGhlIHRpbWVcbiAgICAgIHZhciBpbm5lcldpZHRoID0gbWUuaXNIb3Jpem9udGFsKCkgPyBtZS53aWR0aCAtIChtZS5wYWRkaW5nTGVmdCArIG1lLnBhZGRpbmdSaWdodCkgOiBtZS5oZWlnaHQgLSAobWUucGFkZGluZ1RvcCArIG1lLnBhZGRpbmdCb3R0b20pO1xuXG4gICAgICAvLyBDcnVkZSBhcHByb3hpbWF0aW9uIG9mIHdoYXQgdGhlIGxhYmVsIGxlbmd0aCBtaWdodCBiZVxuICAgICAgdmFyIHRlbXBGaXJzdExhYmVsID0gbWUudGlja0Zvcm1hdEZ1bmN0aW9uKG1lLmZpcnN0VGljaywgMCwgW10pO1xuICAgICAgdmFyIHRpY2tMYWJlbFdpZHRoID0gbWUuY3R4Lm1lYXN1cmVUZXh0KHRlbXBGaXJzdExhYmVsKS53aWR0aDtcbiAgICAgIHZhciBjb3NSb3RhdGlvbiA9IE1hdGguY29zKGhlbHBlcnMudG9SYWRpYW5zKG1lLm9wdGlvbnMudGlja3MubWF4Um90YXRpb24pKTtcbiAgICAgIHZhciBzaW5Sb3RhdGlvbiA9IE1hdGguc2luKGhlbHBlcnMudG9SYWRpYW5zKG1lLm9wdGlvbnMudGlja3MubWF4Um90YXRpb24pKTtcbiAgICAgIHRpY2tMYWJlbFdpZHRoID0gKHRpY2tMYWJlbFdpZHRoICogY29zUm90YXRpb24pICsgKHRpY2tGb250U2l6ZSAqIHNpblJvdGF0aW9uKTtcbiAgICAgIHZhciBsYWJlbENhcGFjaXR5ID0gaW5uZXJXaWR0aCAvICh0aWNrTGFiZWxXaWR0aCk7XG5cbiAgICAgIC8vIFN0YXJ0IGFzIHNtYWxsIGFzIHBvc3NpYmxlXG4gICAgICBtZS50aWNrVW5pdCA9ICdtaWxsaXNlY29uZCc7XG4gICAgICBtZS5zY2FsZVNpemVJblVuaXRzID0gbW9tZW50LmR1cmF0aW9uKG1lLmxhc3RUaWNrKS5zdWJ0cmFjdChtZS5maXJzdFRpY2spLmFzKG1lLnRpY2tVbml0KTtcblxuICAgICAgdmFyIHVuaXREZWZpbml0aW9uSW5kZXggPSAwO1xuICAgICAgdmFyIHVuaXREZWZpbml0aW9uID0gdGltZS51bml0c1t1bml0RGVmaW5pdGlvbkluZGV4XTtcblxuICAgICAgLy8gV2hpbGUgd2UgYXJlbid0IGlkZWFsIGFuZCB3ZSBkb24ndCBoYXZlIHVuaXRzIGxlZnRcbiAgICAgIHdoaWxlICh1bml0RGVmaW5pdGlvbkluZGV4IDwgdGltZS51bml0cy5sZW5ndGgpIHtcbiAgICAgICAgLy8gQ2FuIHdlIHNjYWxlIHRoaXMgdW5pdC4gSWYgYGZhbHNlYCB3ZSBjYW4gc2NhbGUgaW5maW5pdGVseVxuICAgICAgICBtZS51bml0U2NhbGUgPSAxO1xuXG4gICAgICAgIGlmIChoZWxwZXJzLmlzQXJyYXkodW5pdERlZmluaXRpb24uc3RlcHMpICYmIE1hdGguY2VpbChtZS5zY2FsZVNpemVJblVuaXRzIC8gbGFiZWxDYXBhY2l0eSkgPCBoZWxwZXJzLm1heCh1bml0RGVmaW5pdGlvbi5zdGVwcykpIHtcbiAgICAgICAgICAvLyBVc2Ugb25lIG9mIHRoZSBwcmVkZWZpbmVkIHN0ZXBzXG4gICAgICAgICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgdW5pdERlZmluaXRpb24uc3RlcHMubGVuZ3RoOyArK2lkeCkge1xuICAgICAgICAgICAgaWYgKHVuaXREZWZpbml0aW9uLnN0ZXBzW2lkeF0gPj0gTWF0aC5jZWlsKG1lLnNjYWxlU2l6ZUluVW5pdHMgLyBsYWJlbENhcGFjaXR5KSkge1xuICAgICAgICAgICAgICBtZS51bml0U2NhbGUgPSBoZWxwZXJzLmdldFZhbHVlT3JEZWZhdWx0KG1lLm9wdGlvbnMudGltZS51bml0U3RlcFNpemUsIHVuaXREZWZpbml0aW9uLnN0ZXBzW2lkeF0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIGlmICgodW5pdERlZmluaXRpb24ubWF4U3RlcCA9PT0gZmFsc2UpIHx8IChNYXRoLmNlaWwobWUuc2NhbGVTaXplSW5Vbml0cyAvIGxhYmVsQ2FwYWNpdHkpIDwgdW5pdERlZmluaXRpb24ubWF4U3RlcCkpIHtcbiAgICAgICAgICAvLyBXZSBoYXZlIGEgbWF4IHN0ZXAuIFNjYWxlIHRoaXMgdW5pdFxuICAgICAgICAgIG1lLnVuaXRTY2FsZSA9IGhlbHBlcnMuZ2V0VmFsdWVPckRlZmF1bHQobWUub3B0aW9ucy50aW1lLnVuaXRTdGVwU2l6ZSwgTWF0aC5jZWlsKG1lLnNjYWxlU2l6ZUluVW5pdHMgLyBsYWJlbENhcGFjaXR5KSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTW92ZSB0byB0aGUgbmV4dCB1bml0IHVwXG4gICAgICAgICAgKyt1bml0RGVmaW5pdGlvbkluZGV4O1xuICAgICAgICAgIHVuaXREZWZpbml0aW9uID0gdGltZS51bml0c1t1bml0RGVmaW5pdGlvbkluZGV4XTtcblxuICAgICAgICAgIG1lLnRpY2tVbml0ID0gdW5pdERlZmluaXRpb24ubmFtZTtcbiAgICAgICAgICB2YXIgbGVhZGluZ1VuaXRCdWZmZXIgPSBtb21lbnQuZHVyYXRpb24obWUuZmlyc3RUaWNrKS5zdWJ0cmFjdChtZS5nZXRNb21lbnRTdGFydE9mKG1lLmZpcnN0VGljaykpLmFzKG1lLnRpY2tVbml0KTtcbiAgICAgICAgICB2YXIgdHJhaWxpbmdVbml0QnVmZmVyID0gbWUuZ2V0TW9tZW50U3RhcnRPZihtb21lbnQuZHVyYXRpb24obWUubGFzdFRpY2spLmFkZCgxLCBtZS50aWNrVW5pdCkpLnN1YnRyYWN0KG1lLmxhc3RUaWNrKS5hcyhtZS50aWNrVW5pdCk7XG4gICAgICAgICAgbWUuc2NhbGVTaXplSW5Vbml0cyA9IG1vbWVudC5kdXJhdGlvbihtZS5sYXN0VGljaykuc3VidHJhY3QobWUuZmlyc3RUaWNrKS5hcyhtZS50aWNrVW5pdCkgKyBsZWFkaW5nVW5pdEJ1ZmZlciArIHRyYWlsaW5nVW5pdEJ1ZmZlcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSb3VuZCB0aGUgZmlyc3QgdGlja1xuICAgICAgdmFyIHJvdW5kZWRTdGFydCA9IG1lLmdldE1vbWVudFN0YXJ0T2YobWUuZmlyc3RUaWNrKTtcblxuICAgICAgLy8gUm91bmQgdGhlIGxhc3QgdGlja1xuICAgICAgdmFyIHJvdW5kZWRFbmQgPSBtZS5nZXRNb21lbnRTdGFydE9mKG1lLmxhc3RUaWNrKTtcbiAgICAgIHZhciBkZWx0YSA9IG1vbWVudC5kdXJhdGlvbihyb3VuZGVkRW5kKS5zdWJ0cmFjdChtZS5sYXN0VGljaykuYXMobWUudGlja1VuaXQpO1xuICAgICAgaWYgKGRlbHRhIDwgMCkge1xuICAgICAgICAvLyBEbyBub3QgdXNlIGVuZCBvZiBiZWNhdXNlIHdlIG5lZWQgbWUgdG8gYmUgaW4gdGhlIG5leHQgdGltZSB1bml0XG4gICAgICAgIG1lLmxhc3RUaWNrID0gcm91bmRlZEVuZC5hZGQoMSwgbWUudGlja1VuaXQpO1xuICAgICAgfSBlbHNlIGlmIChkZWx0YSA+PSAwKSB7XG4gICAgICAgIG1lLmxhc3RUaWNrID0gcm91bmRlZEVuZDtcbiAgICAgIH1cblxuICAgICAgbWUuc2NhbGVTaXplSW5Vbml0cyA9IG1vbWVudC5kdXJhdGlvbihtZS5sYXN0VGljaykuc3VidHJhY3QobWUuZmlyc3RUaWNrKS5hcyhtZS50aWNrVW5pdCk7XG5cbiAgICAgIG1lLnRpY2tzLnB1c2gobW9tZW50LmR1cmF0aW9uKG1lLmZpcnN0VGljaykpO1xuXG4gICAgICAvLyBGb3IgZXZlcnkgdW5pdCBpbiBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgbGFzdCBtb21lbnQsIGNyZWF0ZSBhIG1vbWVudCBhbmQgYWRkIGl0IHRvIHRoZSB0aWNrcyB0aWNrXG4gICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBtZS5zY2FsZVNpemVJblVuaXRzOyArK2kpIHtcbiAgICAgICAgdmFyIG5ld1RpY2sgPSBtb21lbnQuZHVyYXRpb24ocm91bmRlZFN0YXJ0KS5hZGQoaSwgbWUudGlja1VuaXQpO1xuXG4gICAgICAgIGlmIChpICUgbWUudW5pdFNjYWxlID09PSAwKSB7XG4gICAgICAgICAgbWUudGlja3MucHVzaChuZXdUaWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtZS5jdHgucmVzdG9yZSgpO1xuXG4gICAgICAvLyBJbnZhbGlkYXRlIGxhYmVsIGRpZmZzIGNhY2hlXG4gICAgICBtZS5sYWJlbERpZmZzID0gdW5kZWZpbmVkO1xuICAgIH0sXG4gICAgLy8gR2V0IHRvb2x0aXAgbGFiZWxcbiAgICBnZXRMYWJlbEZvckluZGV4OiBmdW5jdGlvbiAoaW5kZXgsIGRhdGFzZXRJbmRleCkge1xuICAgICAgdmFyIG1lID0gdGhpcztcbiAgICAgIHZhciBsYWJlbCA9IG1lLmNoYXJ0LmRhdGEubGFiZWxzICYmIGluZGV4IDwgbWUuY2hhcnQuZGF0YS5sYWJlbHMubGVuZ3RoID8gbWUuY2hhcnQuZGF0YS5sYWJlbHNbaW5kZXhdIDogJyc7XG5cbiAgICAgIGlmICh0eXBlb2YgbWUuY2hhcnQuZGF0YS5kYXRhc2V0c1tkYXRhc2V0SW5kZXhdLmRhdGFbMF0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChtZS5pc0hvcml6b250YWwoKSkge1xuICAgICAgICAgIGxhYmVsID0gbWUuY2hhcnQuZGF0YS5kYXRhc2V0c1tkYXRhc2V0SW5kZXhdLmRhdGFbaW5kZXhdLng7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGFiZWwgPSBtZS5jaGFydC5kYXRhLmRhdGFzZXRzW2RhdGFzZXRJbmRleF0uZGF0YVtpbmRleF0ueTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldHR5UHJpbnREdXJhdGlvbihtZS5wYXJzZUR1cmF0aW9uKGxhYmVsKSk7XG4gICAgfSxcbiAgICAvLyBGdW5jdGlvbiB0byBmb3JtYXQgYW4gaW5kaXZpZHVhbCB0aWNrIG1hcmtcbiAgICB0aWNrRm9ybWF0RnVuY3Rpb246IGZ1bmN0aW9uICh0aWNrLCBpbmRleCwgdGlja3MpIHtcbiAgICAgIHJldHVybiB0aWNrLnRvSVNPU3RyaW5nKCk7XG4gICAgfSxcbiAgICBjb252ZXJ0VGlja3NUb0xhYmVsczogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIG1lID0gdGhpcztcbiAgICAgIG1lLnRpY2tNb21lbnRzID0gbWUudGlja3M7XG4gICAgICBtZS50aWNrcyA9IG1lLnRpY2tzLm1hcChtZS50aWNrRm9ybWF0RnVuY3Rpb24sIG1lKTtcbiAgICB9LFxuICAgIGdldFBpeGVsRm9yVmFsdWU6IGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIGRhdGFzZXRJbmRleCkge1xuICAgICAgdmFyIG1lID0gdGhpcztcbiAgICAgIHZhciBvZmZzZXQgPSBudWxsO1xuICAgICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQgJiYgZGF0YXNldEluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb2Zmc2V0ID0gbWUuZ2V0TGFiZWxEaWZmKGRhdGFzZXRJbmRleCwgaW5kZXgpO1xuICAgICAgfVxuXG4gICAgICBpZiAob2Zmc2V0ID09PSBudWxsKSB7XG4gICAgICAgIGlmICghdmFsdWUgfHwgIW1vbWVudC5pc0R1cmF0aW9uKHZhbHVlKSkge1xuICAgICAgICAgIC8vIG5vdCBhbHJlYWR5IGEgbW9tZW50IG9iamVjdFxuICAgICAgICAgIHZhbHVlID0gbWUucGFyc2VEdXJhdGlvbih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlICYmIG1vbWVudC5pc0R1cmF0aW9uKHZhbHVlKSkge1xuICAgICAgICAgIG9mZnNldCA9IG1vbWVudC5kdXJhdGlvbih2YWx1ZSkuc3VidHJhY3QobWUuZmlyc3RUaWNrKS5hcyhtZS50aWNrVW5pdCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9mZnNldCAhPT0gbnVsbCkge1xuICAgICAgICB2YXIgZGVjaW1hbCA9IG9mZnNldCAhPT0gMCA/IG9mZnNldCAvIG1lLnNjYWxlU2l6ZUluVW5pdHMgOiBvZmZzZXQ7XG5cbiAgICAgICAgaWYgKG1lLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICAgICAgdmFyIGlubmVyV2lkdGggPSBtZS53aWR0aCAtIChtZS5wYWRkaW5nTGVmdCArIG1lLnBhZGRpbmdSaWdodCk7XG4gICAgICAgICAgdmFyIHZhbHVlT2Zmc2V0ID0gKGlubmVyV2lkdGggKiBkZWNpbWFsKSArIG1lLnBhZGRpbmdMZWZ0O1xuXG4gICAgICAgICAgcmV0dXJuIG1lLmxlZnQgKyBNYXRoLnJvdW5kKHZhbHVlT2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5uZXJIZWlnaHQgPSBtZS5oZWlnaHQgLSAobWUucGFkZGluZ1RvcCArIG1lLnBhZGRpbmdCb3R0b20pO1xuICAgICAgICB2YXIgaGVpZ2h0T2Zmc2V0ID0gKGlubmVySGVpZ2h0ICogZGVjaW1hbCkgKyBtZS5wYWRkaW5nVG9wO1xuXG4gICAgICAgIHJldHVybiBtZS50b3AgKyBNYXRoLnJvdW5kKGhlaWdodE9mZnNldCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRQaXhlbEZvclRpY2s6IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0UGl4ZWxGb3JWYWx1ZSh0aGlzLnRpY2tNb21lbnRzW2luZGV4XSwgbnVsbCwgbnVsbCk7XG4gICAgfSxcbiAgICBnZXRWYWx1ZUZvclBpeGVsOiBmdW5jdGlvbiAocGl4ZWwpIHtcbiAgICAgIHZhciBtZSA9IHRoaXM7XG4gICAgICB2YXIgaW5uZXJEaW1lbnNpb24gPSBtZS5pc0hvcml6b250YWwoKSA/IG1lLndpZHRoIC0gKG1lLnBhZGRpbmdMZWZ0ICsgbWUucGFkZGluZ1JpZ2h0KSA6IG1lLmhlaWdodCAtIChtZS5wYWRkaW5nVG9wICsgbWUucGFkZGluZ0JvdHRvbSk7XG4gICAgICB2YXIgb2Zmc2V0ID0gKHBpeGVsIC0gKG1lLmlzSG9yaXpvbnRhbCgpID8gbWUubGVmdCArIG1lLnBhZGRpbmdMZWZ0IDogbWUudG9wICsgbWUucGFkZGluZ1RvcCkpIC8gaW5uZXJEaW1lbnNpb247XG4gICAgICBvZmZzZXQgKj0gbWUuc2NhbGVTaXplSW5Vbml0cztcbiAgICAgIHJldHVybiBtb21lbnQuZHVyYXRpb24obWUuZmlyc3RUaWNrKS5hZGQobW9tZW50LmR1cmF0aW9uKG9mZnNldCwgbWUudGlja1VuaXQpLmFzU2Vjb25kcygpLCAnc2Vjb25kcycpO1xuICAgIH0sXG4gICAgcGFyc2VEdXJhdGlvbjogZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgICByZXR1cm4gbW9tZW50LmR1cmF0aW9uKGxhYmVsKTtcbiAgICB9XG4gIH0pO1xuICBDaGFydC5zY2FsZVNlcnZpY2UucmVnaXN0ZXJTY2FsZVR5cGUoJ3Nwb3QtZHVyYXRpb24nLCBEdXJhdGlvblNjYWxlLCBkZWZhdWx0Q29uZmlnKTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFOQTtBQU9BO0FBQ0E7QUFGQTtBQXpCQTtBQStCQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcFNBO0FBc1NBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///d11f\n")},d38c:function(module,exports,__webpack_require__){eval("var app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar PageView = __webpack_require__(/*! ./base */ \"b966\");\n\nvar templates = __webpack_require__(/*! ../templates */ \"4324\");\n\nvar PartitionContinuousView = __webpack_require__(/*! ./configure-partition/partition-continuous */ \"6d22\");\n\nvar PartitionCategorialView = __webpack_require__(/*! ./configure-partition/partition-categorial */ \"de24\");\n\nvar PartitionDatetimeView = __webpack_require__(/*! ./configure-partition/partition-datetime */ \"0d07\");\n\nvar PartitionDurationView = __webpack_require__(/*! ./configure-partition/partition-duration */ \"b322\");\n\nvar PartitionTextView = __webpack_require__(/*! ./configure-partition/partition-text */ \"faa4\");\n\nmodule.exports = PageView.extend({\n  initialize: function initialize() {\n    this.pageName = 'configurePartition';\n    this.once('remove', function () {\n      if (this.resetFilter) {\n        var filter = this.model.collection.parent;\n        filter.releaseDataFilter();\n        filter.initDataFilter();\n        filter.updateDataFilter(); // this filter needs new data\n\n        app.me.dataview.getData();\n      }\n    }, this);\n  },\n  template: templates.configurePartition.page,\n  bindings: {\n    'model.label': {\n      type: 'value',\n      hook: 'partition-title-input'\n    },\n    'model.showLabel': {\n      type: 'booleanAttribute',\n      hook: 'show-label',\n      name: 'checked'\n    },\n    'model.showLegend': {\n      type: 'booleanAttribute',\n      hook: 'show-legend',\n      name: 'checked'\n    }\n  },\n  session: {\n    resetFilter: ['boolean', true, false]\n  },\n  events: {\n    'change [data-hook~=partition-title-input]': function changeDataHookPartitionTitleInput() {\n      this.model.label = this.queryByHook('partition-title-input').value;\n    },\n    'change [data-hook~=show-label]': function changeDataHookShowLabel() {\n      this.model.showLabel = !this.model.showLabel;\n    },\n    'change [data-hook~=show-legend]': function changeDataHookShowLegend() {\n      this.model.showLegend = !this.model.showLegend;\n    }\n  },\n  subviews: {\n    groupContinuous: {\n      hook: 'partition-continuous',\n      prepareView: function prepareView(el) {\n        return new PartitionContinuousView({\n          el: el,\n          model: this.model\n        });\n      }\n    },\n    groupCategorial: {\n      hook: 'partition-categorial',\n      prepareView: function prepareView(el) {\n        return new PartitionCategorialView({\n          el: el,\n          model: this.model\n        });\n      }\n    },\n    groupDatetime: {\n      hook: 'partition-datetime',\n      prepareView: function prepareView(el) {\n        return new PartitionDatetimeView({\n          el: el,\n          model: this.model\n        });\n      }\n    },\n    groupDuration: {\n      hook: 'partition-duration',\n      prepareView: function prepareView(el) {\n        return new PartitionDurationView({\n          el: el,\n          model: this.model\n        });\n      }\n    },\n    groupText: {\n      hook: 'partition-text',\n      prepareView: function prepareView(el) {\n        return new PartitionTextView({\n          el: el,\n          model: this.model\n        });\n      }\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDM4Yy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtcGFydGl0aW9uLmpzPzkzOTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFwcCA9IHJlcXVpcmUoJ2FtcGVyc2FuZC1hcHAnKTtcbnZhciBQYWdlVmlldyA9IHJlcXVpcmUoJy4vYmFzZScpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uL3RlbXBsYXRlcycpO1xuXG52YXIgUGFydGl0aW9uQ29udGludW91c1ZpZXcgPSByZXF1aXJlKCcuL2NvbmZpZ3VyZS1wYXJ0aXRpb24vcGFydGl0aW9uLWNvbnRpbnVvdXMnKTtcbnZhciBQYXJ0aXRpb25DYXRlZ29yaWFsVmlldyA9IHJlcXVpcmUoJy4vY29uZmlndXJlLXBhcnRpdGlvbi9wYXJ0aXRpb24tY2F0ZWdvcmlhbCcpO1xudmFyIFBhcnRpdGlvbkRhdGV0aW1lVmlldyA9IHJlcXVpcmUoJy4vY29uZmlndXJlLXBhcnRpdGlvbi9wYXJ0aXRpb24tZGF0ZXRpbWUnKTtcbnZhciBQYXJ0aXRpb25EdXJhdGlvblZpZXcgPSByZXF1aXJlKCcuL2NvbmZpZ3VyZS1wYXJ0aXRpb24vcGFydGl0aW9uLWR1cmF0aW9uJyk7XG52YXIgUGFydGl0aW9uVGV4dFZpZXcgPSByZXF1aXJlKCcuL2NvbmZpZ3VyZS1wYXJ0aXRpb24vcGFydGl0aW9uLXRleHQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQYWdlVmlldy5leHRlbmQoe1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5wYWdlTmFtZSA9ICdjb25maWd1cmVQYXJ0aXRpb24nO1xuXG4gICAgdGhpcy5vbmNlKCdyZW1vdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAodGhpcy5yZXNldEZpbHRlcikge1xuICAgICAgICB2YXIgZmlsdGVyID0gdGhpcy5tb2RlbC5jb2xsZWN0aW9uLnBhcmVudDtcbiAgICAgICAgZmlsdGVyLnJlbGVhc2VEYXRhRmlsdGVyKCk7XG5cbiAgICAgICAgZmlsdGVyLmluaXREYXRhRmlsdGVyKCk7XG4gICAgICAgIGZpbHRlci51cGRhdGVEYXRhRmlsdGVyKCk7XG5cbiAgICAgICAgLy8gdGhpcyBmaWx0ZXIgbmVlZHMgbmV3IGRhdGFcbiAgICAgICAgYXBwLm1lLmRhdGF2aWV3LmdldERhdGEoKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcbiAgfSxcbiAgdGVtcGxhdGU6IHRlbXBsYXRlcy5jb25maWd1cmVQYXJ0aXRpb24ucGFnZSxcbiAgYmluZGluZ3M6IHtcbiAgICAnbW9kZWwubGFiZWwnOiB7XG4gICAgICB0eXBlOiAndmFsdWUnLFxuICAgICAgaG9vazogJ3BhcnRpdGlvbi10aXRsZS1pbnB1dCdcbiAgICB9LFxuICAgICdtb2RlbC5zaG93TGFiZWwnOiB7XG4gICAgICB0eXBlOiAnYm9vbGVhbkF0dHJpYnV0ZScsXG4gICAgICBob29rOiAnc2hvdy1sYWJlbCcsXG4gICAgICBuYW1lOiAnY2hlY2tlZCdcbiAgICB9LFxuICAgICdtb2RlbC5zaG93TGVnZW5kJzoge1xuICAgICAgdHlwZTogJ2Jvb2xlYW5BdHRyaWJ1dGUnLFxuICAgICAgaG9vazogJ3Nob3ctbGVnZW5kJyxcbiAgICAgIG5hbWU6ICdjaGVja2VkJ1xuICAgIH1cbiAgfSxcbiAgc2Vzc2lvbjoge1xuICAgIHJlc2V0RmlsdGVyOiBbJ2Jvb2xlYW4nLCB0cnVlLCBmYWxzZV1cbiAgfSxcbiAgZXZlbnRzOiB7XG4gICAgJ2NoYW5nZSBbZGF0YS1ob29rfj1wYXJ0aXRpb24tdGl0bGUtaW5wdXRdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC5sYWJlbCA9IHRoaXMucXVlcnlCeUhvb2soJ3BhcnRpdGlvbi10aXRsZS1pbnB1dCcpLnZhbHVlO1xuICAgIH0sXG4gICAgJ2NoYW5nZSBbZGF0YS1ob29rfj1zaG93LWxhYmVsXSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwuc2hvd0xhYmVsID0gIXRoaXMubW9kZWwuc2hvd0xhYmVsO1xuICAgIH0sXG4gICAgJ2NoYW5nZSBbZGF0YS1ob29rfj1zaG93LWxlZ2VuZF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLnNob3dMZWdlbmQgPSAhdGhpcy5tb2RlbC5zaG93TGVnZW5kO1xuICAgIH1cbiAgfSxcbiAgc3Vidmlld3M6IHtcbiAgICBncm91cENvbnRpbnVvdXM6IHtcbiAgICAgIGhvb2s6ICdwYXJ0aXRpb24tY29udGludW91cycsXG4gICAgICBwcmVwYXJlVmlldzogZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHJldHVybiBuZXcgUGFydGl0aW9uQ29udGludW91c1ZpZXcoe1xuICAgICAgICAgIGVsOiBlbCxcbiAgICAgICAgICBtb2RlbDogdGhpcy5tb2RlbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdyb3VwQ2F0ZWdvcmlhbDoge1xuICAgICAgaG9vazogJ3BhcnRpdGlvbi1jYXRlZ29yaWFsJyxcbiAgICAgIHByZXBhcmVWaWV3OiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJ0aXRpb25DYXRlZ29yaWFsVmlldyh7XG4gICAgICAgICAgZWw6IGVsLFxuICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ3JvdXBEYXRldGltZToge1xuICAgICAgaG9vazogJ3BhcnRpdGlvbi1kYXRldGltZScsXG4gICAgICBwcmVwYXJlVmlldzogZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHJldHVybiBuZXcgUGFydGl0aW9uRGF0ZXRpbWVWaWV3KHtcbiAgICAgICAgICBlbDogZWwsXG4gICAgICAgICAgbW9kZWw6IHRoaXMubW9kZWxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBncm91cER1cmF0aW9uOiB7XG4gICAgICBob29rOiAncGFydGl0aW9uLWR1cmF0aW9uJyxcbiAgICAgIHByZXBhcmVWaWV3OiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJ0aXRpb25EdXJhdGlvblZpZXcoe1xuICAgICAgICAgIGVsOiBlbCxcbiAgICAgICAgICBtb2RlbDogdGhpcy5tb2RlbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdyb3VwVGV4dDoge1xuICAgICAgaG9vazogJ3BhcnRpdGlvbi10ZXh0JyxcbiAgICAgIHByZXBhcmVWaWV3OiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJ0aXRpb25UZXh0Vmlldyh7XG4gICAgICAgICAgZWw6IGVsLFxuICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBVkE7QUFnQkE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQVBBO0FBckNBO0FBaERBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///d38c\n")},de24:function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar GroupView = __webpack_require__(/*! ./group */ \"0b9a\");\n\nmodule.exports = View.extend({\n  template: templates.configurePartition.partitionCategorial,\n  bindings: {\n    'model.isCategorial': {\n      type: 'toggle',\n      hook: 'group-categorial-panel'\n    }\n  },\n  render: function render() {\n    this.renderWithTemplate(this);\n    this.renderCollection(this.model.groups, GroupView, this.queryByHook('groups-table'));\n    return this;\n  },\n  events: {\n    'click [data-hook~=group-order-count]': function clickDataHookGroupOrderCount() {\n      this.model.ordering = 'count';\n      this.parent.resetFilter = true;\n    },\n    'click [data-hook~=group-order-abc]': function clickDataHookGroupOrderAbc() {\n      this.model.ordering = 'value';\n      this.parent.resetFilter = true;\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGUyNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtcGFydGl0aW9uL3BhcnRpdGlvbi1jYXRlZ29yaWFsLmpzPzJhZTQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uLy4uL3RlbXBsYXRlcycpO1xudmFyIEdyb3VwVmlldyA9IHJlcXVpcmUoJy4vZ3JvdXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMuY29uZmlndXJlUGFydGl0aW9uLnBhcnRpdGlvbkNhdGVnb3JpYWwsXG4gIGJpbmRpbmdzOiB7XG4gICAgJ21vZGVsLmlzQ2F0ZWdvcmlhbCc6IHtcbiAgICAgIHR5cGU6ICd0b2dnbGUnLFxuICAgICAgaG9vazogJ2dyb3VwLWNhdGVnb3JpYWwtcGFuZWwnXG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlbmRlcldpdGhUZW1wbGF0ZSh0aGlzKTtcbiAgICB0aGlzLnJlbmRlckNvbGxlY3Rpb24odGhpcy5tb2RlbC5ncm91cHMsIEdyb3VwVmlldywgdGhpcy5xdWVyeUJ5SG9vaygnZ3JvdXBzLXRhYmxlJykpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGV2ZW50czoge1xuICAgICdjbGljayBbZGF0YS1ob29rfj1ncm91cC1vcmRlci1jb3VudF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLm9yZGVyaW5nID0gJ2NvdW50JztcbiAgICAgIHRoaXMucGFyZW50LnJlc2V0RmlsdGVyID0gdHJ1ZTtcbiAgICB9LFxuICAgICdjbGljayBbZGF0YS1ob29rfj1ncm91cC1vcmRlci1hYmNdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC5vcmRlcmluZyA9ICd2YWx1ZSc7XG4gICAgICB0aGlzLnBhcmVudC5yZXNldEZpbHRlciA9IHRydWU7XG4gICAgfVxuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFEQTtBQU1BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQWRBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///de24\n")},de33:function(module,exports){eval("/**\n * Formatter for tick labels on a linear axis in chartjs\n *\n * Override the default behavious such that it:\n *  * switches to scientific notation for large numbers with a lot of 'trailing zeros': 1e25\n *  * only prints the trailing (least significant) digits when zoomin in: 100000000000.1 prints as '..000.1'\n *\n * see issue #142\n */\nmodule.exports = function (tickValue, index, ticks) {\n  // Find the proper tick spacing\n  // if we have lots of ticks, don't use the ones\n  var delta = Math.abs(ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]);\n\n  if (tickValue === 0) {\n    return '0';\n  } // Find the order of magnitude of the least significant digit\n\n\n  var leastSignificantOOM = Math.floor(Math.log10(delta)); // Find the order magnitude of the most significant digit\n\n  var logTicks = [];\n  ticks.forEach(function (value, i) {\n    if (value !== 0) {\n      logTicks.push(Math.log10(Math.abs(value)));\n    }\n  });\n  var mostSignificantOOM = Math.floor(Math.max.apply(Math, logTicks)); // We can chose between 3 different notations for '12.34':\n  //   fixed precision:     12.34\n  //   scientific notation: 1.234e1\n  //   and truncated         ..34\n  // find how long each notation would be, and chose the optimal one\n  // when using scientific notation (1,2303e2), how many digits would it take?\n\n  var totalNumberOfDigits = mostSignificantOOM + 1 - leastSignificantOOM; // when using fixed notation (123.03), how many digits would it take?\n\n  var fixedNotationDitigts = 1 + Math.max(0, mostSignificantOOM) + // digits before '.'\n  Math.max(0, Math.abs(leastSignificantOOM)); // digits after '.'\n  // when truncating the string to the last 5 digits, it is of course 5 digits\n\n  var tickString = '';\n\n  if (fixedNotationDitigts < 9) {\n    var numDecimal = Math.max(Math.min(-1 * leastSignificantOOM, 20), 0); // toFixed has a max of 20 decimal places\n\n    tickString = tickValue.toFixed(numDecimal);\n  } else if (totalNumberOfDigits < 9) {\n    tickString = tickValue.toExponential(totalNumberOfDigits - 1);\n  } else {\n    tickString = tickValue.toFixed(Math.max(0, -1 * leastSignificantOOM));\n    tickString = '..' + tickString.substring(tickString.length - 5, tickString.length);\n  }\n\n  return tickString;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGUzMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL2NoYXJ0anMtc2NpbGluZWFyLWZvcm1hdHRlci5qcz9hZjZhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9ybWF0dGVyIGZvciB0aWNrIGxhYmVscyBvbiBhIGxpbmVhciBheGlzIGluIGNoYXJ0anNcbiAqXG4gKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvdXMgc3VjaCB0aGF0IGl0OlxuICogICogc3dpdGNoZXMgdG8gc2NpZW50aWZpYyBub3RhdGlvbiBmb3IgbGFyZ2UgbnVtYmVycyB3aXRoIGEgbG90IG9mICd0cmFpbGluZyB6ZXJvcyc6IDFlMjVcbiAqICAqIG9ubHkgcHJpbnRzIHRoZSB0cmFpbGluZyAobGVhc3Qgc2lnbmlmaWNhbnQpIGRpZ2l0cyB3aGVuIHpvb21pbiBpbjogMTAwMDAwMDAwMDAwLjEgcHJpbnRzIGFzICcuLjAwMC4xJ1xuICpcbiAqIHNlZSBpc3N1ZSAjMTQyXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRpY2tWYWx1ZSwgaW5kZXgsIHRpY2tzKSB7XG4gIC8vIEZpbmQgdGhlIHByb3BlciB0aWNrIHNwYWNpbmdcbiAgLy8gaWYgd2UgaGF2ZSBsb3RzIG9mIHRpY2tzLCBkb24ndCB1c2UgdGhlIG9uZXNcbiAgdmFyIGRlbHRhID0gTWF0aC5hYnModGlja3MubGVuZ3RoID4gMyA/IHRpY2tzWzJdIC0gdGlja3NbMV0gOiB0aWNrc1sxXSAtIHRpY2tzWzBdKTtcblxuICBpZiAodGlja1ZhbHVlID09PSAwKSB7XG4gICAgcmV0dXJuICcwJztcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIG9yZGVyIG9mIG1hZ25pdHVkZSBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXRcbiAgdmFyIGxlYXN0U2lnbmlmaWNhbnRPT00gPSBNYXRoLmZsb29yKE1hdGgubG9nMTAoZGVsdGEpKTtcblxuICAvLyBGaW5kIHRoZSBvcmRlciBtYWduaXR1ZGUgb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXRcbiAgdmFyIGxvZ1RpY2tzID0gW107XG4gIHRpY2tzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBpKSB7XG4gICAgaWYgKHZhbHVlICE9PSAwKSB7XG4gICAgICBsb2dUaWNrcy5wdXNoKE1hdGgubG9nMTAoTWF0aC5hYnModmFsdWUpKSk7XG4gICAgfVxuICB9KTtcbiAgdmFyIG1vc3RTaWduaWZpY2FudE9PTSA9IE1hdGguZmxvb3IoTWF0aC5tYXguYXBwbHkoTWF0aCwgbG9nVGlja3MpKTtcblxuICAvLyBXZSBjYW4gY2hvc2UgYmV0d2VlbiAzIGRpZmZlcmVudCBub3RhdGlvbnMgZm9yICcxMi4zNCc6XG4gIC8vICAgZml4ZWQgcHJlY2lzaW9uOiAgICAgMTIuMzRcbiAgLy8gICBzY2llbnRpZmljIG5vdGF0aW9uOiAxLjIzNGUxXG4gIC8vICAgYW5kIHRydW5jYXRlZCAgICAgICAgIC4uMzRcbiAgLy8gZmluZCBob3cgbG9uZyBlYWNoIG5vdGF0aW9uIHdvdWxkIGJlLCBhbmQgY2hvc2UgdGhlIG9wdGltYWwgb25lXG5cbiAgLy8gd2hlbiB1c2luZyBzY2llbnRpZmljIG5vdGF0aW9uICgxLDIzMDNlMiksIGhvdyBtYW55IGRpZ2l0cyB3b3VsZCBpdCB0YWtlP1xuICB2YXIgdG90YWxOdW1iZXJPZkRpZ2l0cyA9IG1vc3RTaWduaWZpY2FudE9PTSArIDEgLSBsZWFzdFNpZ25pZmljYW50T09NO1xuXG4gIC8vIHdoZW4gdXNpbmcgZml4ZWQgbm90YXRpb24gKDEyMy4wMyksIGhvdyBtYW55IGRpZ2l0cyB3b3VsZCBpdCB0YWtlP1xuICB2YXIgZml4ZWROb3RhdGlvbkRpdGlndHMgPSAxICtcbiAgICBNYXRoLm1heCgwLCBtb3N0U2lnbmlmaWNhbnRPT00pICsgICAgICAgICAgIC8vIGRpZ2l0cyBiZWZvcmUgJy4nXG4gICAgTWF0aC5tYXgoMCwgTWF0aC5hYnMobGVhc3RTaWduaWZpY2FudE9PTSkpOyAvLyBkaWdpdHMgYWZ0ZXIgJy4nXG5cbiAgLy8gd2hlbiB0cnVuY2F0aW5nIHRoZSBzdHJpbmcgdG8gdGhlIGxhc3QgNSBkaWdpdHMsIGl0IGlzIG9mIGNvdXJzZSA1IGRpZ2l0c1xuXG4gIHZhciB0aWNrU3RyaW5nID0gJyc7XG4gIGlmIChmaXhlZE5vdGF0aW9uRGl0aWd0cyA8IDkpIHtcbiAgICB2YXIgbnVtRGVjaW1hbCA9IE1hdGgubWF4KE1hdGgubWluKC0xICogbGVhc3RTaWduaWZpY2FudE9PTSwgMjApLCAwKTsgLy8gdG9GaXhlZCBoYXMgYSBtYXggb2YgMjAgZGVjaW1hbCBwbGFjZXNcbiAgICB0aWNrU3RyaW5nID0gdGlja1ZhbHVlLnRvRml4ZWQobnVtRGVjaW1hbCk7XG4gIH0gZWxzZSBpZiAodG90YWxOdW1iZXJPZkRpZ2l0cyA8IDkpIHtcbiAgICB0aWNrU3RyaW5nID0gdGlja1ZhbHVlLnRvRXhwb25lbnRpYWwodG90YWxOdW1iZXJPZkRpZ2l0cyAtIDEpO1xuICB9IGVsc2Uge1xuICAgIHRpY2tTdHJpbmcgPSB0aWNrVmFsdWUudG9GaXhlZChNYXRoLm1heCgwLCAtMSAqIGxlYXN0U2lnbmlmaWNhbnRPT00pKTtcbiAgICB0aWNrU3RyaW5nID0gJy4uJyArIHRpY2tTdHJpbmcuc3Vic3RyaW5nKHRpY2tTdHJpbmcubGVuZ3RoIC0gNSwgdGlja1N0cmluZy5sZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIHRpY2tTdHJpbmc7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///de33\n")},de8e:function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nvar sortablejs = __webpack_require__(/*! sortablejs */ \"4776\");\n\nvar app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar startDnd = function startDnd(type) {\n  if (this.model.isFilled) {\n    // do nothing if the slot is already filled\n    this.dndClass = '';\n  } else {\n    if (this.model.supportedFacets.indexOf(type) > -1) {\n      // highlight the drop zone\n      this.dndClass = 'slot-start-dnd-accept';\n    } else {\n      // gray out the drop zone\n      this.dndClass = 'slot-start-dnd-reject';\n    }\n  }\n};\n\nvar stopDnd = function stopDnd() {\n  this.dndClass = '';\n};\n\nmodule.exports = View.extend({\n  template: templates.analyze.slot,\n  props: {\n    dndClass: 'string',\n    // CSS class to add when a facet dnd is in progress\n    updateCounter: {\n      type: 'number',\n      default: 0,\n      required: true\n    }\n  },\n  derived: {\n    requiredText: {\n      deps: ['model.required', 'model.isFilled'],\n      fn: function fn() {\n        if (this.model.isFilled) {\n          return 'click to configure';\n        } else {\n          if (this.model.required) {\n            return 'required';\n          } else {\n            return 'optional';\n          }\n        }\n      }\n    },\n    chipText: {\n      deps: ['model.isFilled', 'updateCounter'],\n      cache: false,\n      fn: function fn() {\n        var filter = this.collection.parent.filter; // stop accepting DND\n\n        if (this._sortable) {\n          this._sortable.option('disabled', true);\n        }\n\n        if (filter) {\n          if (this.model.type === 'partition') {\n            var partition = filter.partitions.get(this.model.rank, 'rank');\n\n            if (partition) {\n              return partition.facetName;\n            }\n          } else if (this.model.type === 'aggregate') {\n            var aggregate = filter.aggregates.get(this.model.rank, 'rank');\n\n            if (aggregate) {\n              return aggregate.operation + ' ' + aggregate.label;\n            }\n          } else {\n            console.error('Illegal slot');\n          }\n        } // this slots should accept DND\n\n\n        if (this._sortable) {\n          this._sortable.option('disabled', false);\n        }\n\n        return '';\n      }\n    }\n  },\n  initialize: function initialize() {\n    var filter = this.collection.parent.filter;\n    this.model.isFilled = false;\n\n    if (filter) {\n      if (this.model.type === 'partition') {\n        var partition = filter.partitions.get(this.model.rank, 'rank');\n\n        if (partition) {\n          this.model.isFilled = true;\n        }\n      } else if (this.model.type === 'aggregate') {\n        var aggregate = filter.aggregates.get(this.model.rank, 'rank');\n\n        if (aggregate) {\n          this.model.isFilled = true;\n        }\n      } else {\n        console.error('Illegal slot');\n      }\n    } // add remove classes 'dndAccept' and 'dndRefuse' on drag-and-drop\n\n\n    app.on('dragStart', startDnd, this);\n    app.on('dragEnd', stopDnd, this);\n    this.on('remove', function () {\n      app.off('dragStart', startDnd);\n      app.off('dragEnd', stopDnd);\n    }, this);\n  },\n  bindings: {\n    'dndClass': {\n      type: 'class',\n      hook: 'drop-zone'\n    },\n    'model.description': {\n      type: 'text',\n      hook: 'description'\n    },\n    'requiredText': {\n      type: 'text',\n      hook: 'required'\n    },\n    'chipText': {\n      type: 'text',\n      hook: 'drop-zone'\n    },\n    'model.isFilled': {\n      type: 'toggle',\n      hook: 'button-div'\n    }\n  },\n  events: {\n    'click .clickTarget': 'rotateSetting',\n    'click [data-hook~=\"delete\"]': 'emptySlot'\n  },\n  rotateSetting: function rotateSetting() {\n    var filter = this.collection.parent.filter;\n    filter.releaseDataFilter();\n\n    if (this.model.type === 'partition') {\n      var partition = filter.partitions.get(this.model.rank, 'rank');\n\n      if (!partition) {\n        return;\n      }\n\n      app.navigate('partition/' + partition.getId());\n    } else if (this.model.type === 'aggregate') {\n      var values = ['count', 'avg', 'sum', 'stddev', 'min', 'max'];\n      var aggregate = filter.aggregates.get(this.model.rank, 'rank');\n\n      if (!aggregate) {\n        return;\n      }\n\n      var i = values.indexOf(aggregate.operation) + 1;\n\n      if (i >= values.length) {\n        i = 0;\n      }\n\n      if (app.me.sessionType === 'client' && values[i] === 'min' | values[i] === 'max') {\n        // crossfilter does not support min/max\n        i = 0;\n      }\n\n      aggregate.operation = values[i];\n      app.trigger('refresh'); // force a redraw of the text\n\n      this.updateCounter += 1;\n    }\n  },\n  emptySlot: function emptySlot() {\n    if (this.model.emptySlot()) {\n      app.trigger('refresh'); // force a redraw of the chipText\n\n      this.updateCounter += 1;\n    }\n  },\n  tryFillSlot: function tryFillSlot(facet) {\n    if (this.model.tryFillSlot(facet)) {\n      // Hack-ish feature:\n      //  * for bubble plots, add a facet dropped as 'X axis' also as 'Point size'\n      //  * for 3d scatter plots, add a facet dropped as 'X axis' also as 'Color by'\n      var chartType = this.model.collection.parent.filter.chartType;\n\n      if (chartType === 'bubbleplot') {\n        if (this.model.description === 'X axis') {\n          this.model.collection.get('Point size', 'description').tryFillSlot(facet, 'count');\n        }\n      } else if (chartType === 'scatterchart') {\n        if (this.model.description === 'X axis') {\n          this.model.collection.get('Color by', 'description').tryFillSlot(facet, 'count');\n        }\n      }\n\n      app.trigger('refresh'); // force a redraw of the chipText\n\n      this.updateCounter += 1;\n    }\n  },\n  render: function render() {\n    this.renderWithTemplate(this);\n    var me = this;\n    this._sortable = sortablejs.create(this.queryByHook('drop-zone'), {\n      draggable: '.mdl-chip',\n      disabled: me.model.isFilled,\n      group: {\n        name: 'facets',\n        pull: false,\n        put: true\n      },\n      onAdd: function onAdd(evt) {\n        // get the dropped facet\n        // because the ampersand view collection takes care of rendering a\n        // prettier one\n        var item = evt.item;\n        var facetId = item.getAttribute('data-id');\n        item.remove();\n        var facet = app.me.dataview.facets.get(facetId);\n\n        if (!facet) {\n          console.error('Cannot find facet');\n          return;\n        }\n\n        me.tryFillSlot(facet);\n      }\n    });\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGU4ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9hbmFseXplL3Nsb3QuanM/ZjNmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgVmlldyA9IHJlcXVpcmUoJ2FtcGVyc2FuZC12aWV3Jyk7XG52YXIgdGVtcGxhdGVzID0gcmVxdWlyZSgnLi4vLi4vdGVtcGxhdGVzJyk7XG52YXIgc29ydGFibGVqcyA9IHJlcXVpcmUoJ3NvcnRhYmxlanMnKTtcbnZhciBhcHAgPSByZXF1aXJlKCdhbXBlcnNhbmQtYXBwJyk7XG5cbnZhciBzdGFydERuZCA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIGlmICh0aGlzLm1vZGVsLmlzRmlsbGVkKSB7XG4gICAgLy8gZG8gbm90aGluZyBpZiB0aGUgc2xvdCBpcyBhbHJlYWR5IGZpbGxlZFxuICAgIHRoaXMuZG5kQ2xhc3MgPSAnJztcbiAgfSBlbHNlIHtcbiAgICBpZiAodGhpcy5tb2RlbC5zdXBwb3J0ZWRGYWNldHMuaW5kZXhPZih0eXBlKSA+IC0xKSB7XG4gICAgICAvLyBoaWdobGlnaHQgdGhlIGRyb3Agem9uZVxuICAgICAgdGhpcy5kbmRDbGFzcyA9ICdzbG90LXN0YXJ0LWRuZC1hY2NlcHQnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBncmF5IG91dCB0aGUgZHJvcCB6b25lXG4gICAgICB0aGlzLmRuZENsYXNzID0gJ3Nsb3Qtc3RhcnQtZG5kLXJlamVjdCc7XG4gICAgfVxuICB9XG59O1xuXG52YXIgc3RvcERuZCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5kbmRDbGFzcyA9ICcnO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3LmV4dGVuZCh7XG4gIHRlbXBsYXRlOiB0ZW1wbGF0ZXMuYW5hbHl6ZS5zbG90LFxuICBwcm9wczoge1xuICAgIGRuZENsYXNzOiAnc3RyaW5nJywgLy8gQ1NTIGNsYXNzIHRvIGFkZCB3aGVuIGEgZmFjZXQgZG5kIGlzIGluIHByb2dyZXNzXG4gICAgdXBkYXRlQ291bnRlcjoge1xuICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICBkZWZhdWx0OiAwLFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9XG4gIH0sXG4gIGRlcml2ZWQ6IHtcbiAgICByZXF1aXJlZFRleHQ6IHtcbiAgICAgIGRlcHM6IFsnbW9kZWwucmVxdWlyZWQnLCAnbW9kZWwuaXNGaWxsZWQnXSxcbiAgICAgIGZuOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmlzRmlsbGVkKSB7XG4gICAgICAgICAgcmV0dXJuICdjbGljayB0byBjb25maWd1cmUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3JlcXVpcmVkJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdvcHRpb25hbCc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBjaGlwVGV4dDoge1xuICAgICAgZGVwczogWydtb2RlbC5pc0ZpbGxlZCcsICd1cGRhdGVDb3VudGVyJ10sXG4gICAgICBjYWNoZTogZmFsc2UsXG4gICAgICBmbjogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZmlsdGVyID0gdGhpcy5jb2xsZWN0aW9uLnBhcmVudC5maWx0ZXI7XG5cbiAgICAgICAgLy8gc3RvcCBhY2NlcHRpbmcgRE5EXG4gICAgICAgIGlmICh0aGlzLl9zb3J0YWJsZSkge1xuICAgICAgICAgIHRoaXMuX3NvcnRhYmxlLm9wdGlvbignZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICBpZiAodGhpcy5tb2RlbC50eXBlID09PSAncGFydGl0aW9uJykge1xuICAgICAgICAgICAgdmFyIHBhcnRpdGlvbiA9IGZpbHRlci5wYXJ0aXRpb25zLmdldCh0aGlzLm1vZGVsLnJhbmssICdyYW5rJyk7XG4gICAgICAgICAgICBpZiAocGFydGl0aW9uKSB7XG4gICAgICAgICAgICAgIHJldHVybiBwYXJ0aXRpb24uZmFjZXROYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlbC50eXBlID09PSAnYWdncmVnYXRlJykge1xuICAgICAgICAgICAgdmFyIGFnZ3JlZ2F0ZSA9IGZpbHRlci5hZ2dyZWdhdGVzLmdldCh0aGlzLm1vZGVsLnJhbmssICdyYW5rJyk7XG4gICAgICAgICAgICBpZiAoYWdncmVnYXRlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBhZ2dyZWdhdGUub3BlcmF0aW9uICsgJyAnICsgYWdncmVnYXRlLmxhYmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdJbGxlZ2FsIHNsb3QnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0aGlzIHNsb3RzIHNob3VsZCBhY2NlcHQgRE5EXG4gICAgICAgIGlmICh0aGlzLl9zb3J0YWJsZSkge1xuICAgICAgICAgIHRoaXMuX3NvcnRhYmxlLm9wdGlvbignZGlzYWJsZWQnLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciBmaWx0ZXIgPSB0aGlzLmNvbGxlY3Rpb24ucGFyZW50LmZpbHRlcjtcbiAgICB0aGlzLm1vZGVsLmlzRmlsbGVkID0gZmFsc2U7XG5cbiAgICBpZiAoZmlsdGVyKSB7XG4gICAgICBpZiAodGhpcy5tb2RlbC50eXBlID09PSAncGFydGl0aW9uJykge1xuICAgICAgICB2YXIgcGFydGl0aW9uID0gZmlsdGVyLnBhcnRpdGlvbnMuZ2V0KHRoaXMubW9kZWwucmFuaywgJ3JhbmsnKTtcbiAgICAgICAgaWYgKHBhcnRpdGlvbikge1xuICAgICAgICAgIHRoaXMubW9kZWwuaXNGaWxsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubW9kZWwudHlwZSA9PT0gJ2FnZ3JlZ2F0ZScpIHtcbiAgICAgICAgdmFyIGFnZ3JlZ2F0ZSA9IGZpbHRlci5hZ2dyZWdhdGVzLmdldCh0aGlzLm1vZGVsLnJhbmssICdyYW5rJyk7XG4gICAgICAgIGlmIChhZ2dyZWdhdGUpIHtcbiAgICAgICAgICB0aGlzLm1vZGVsLmlzRmlsbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignSWxsZWdhbCBzbG90Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWRkIHJlbW92ZSBjbGFzc2VzICdkbmRBY2NlcHQnIGFuZCAnZG5kUmVmdXNlJyBvbiBkcmFnLWFuZC1kcm9wXG4gICAgYXBwLm9uKCdkcmFnU3RhcnQnLCBzdGFydERuZCwgdGhpcyk7XG4gICAgYXBwLm9uKCdkcmFnRW5kJywgc3RvcERuZCwgdGhpcyk7XG4gICAgdGhpcy5vbigncmVtb3ZlJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXBwLm9mZignZHJhZ1N0YXJ0Jywgc3RhcnREbmQpO1xuICAgICAgYXBwLm9mZignZHJhZ0VuZCcsIHN0b3BEbmQpO1xuICAgIH0sIHRoaXMpO1xuICB9LFxuICBiaW5kaW5nczoge1xuICAgICdkbmRDbGFzcyc6IHtcbiAgICAgIHR5cGU6ICdjbGFzcycsXG4gICAgICBob29rOiAnZHJvcC16b25lJ1xuICAgIH0sXG4gICAgJ21vZGVsLmRlc2NyaXB0aW9uJzoge1xuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgaG9vazogJ2Rlc2NyaXB0aW9uJ1xuICAgIH0sXG4gICAgJ3JlcXVpcmVkVGV4dCc6IHtcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGhvb2s6ICdyZXF1aXJlZCdcbiAgICB9LFxuICAgICdjaGlwVGV4dCc6IHtcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGhvb2s6ICdkcm9wLXpvbmUnXG4gICAgfSxcbiAgICAnbW9kZWwuaXNGaWxsZWQnOiB7XG4gICAgICB0eXBlOiAndG9nZ2xlJyxcbiAgICAgIGhvb2s6ICdidXR0b24tZGl2J1xuICAgIH1cbiAgfSxcbiAgZXZlbnRzOiB7XG4gICAgJ2NsaWNrIC5jbGlja1RhcmdldCc6ICdyb3RhdGVTZXR0aW5nJyxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349XCJkZWxldGVcIl0nOiAnZW1wdHlTbG90J1xuICB9LFxuICByb3RhdGVTZXR0aW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGZpbHRlciA9IHRoaXMuY29sbGVjdGlvbi5wYXJlbnQuZmlsdGVyO1xuICAgIGZpbHRlci5yZWxlYXNlRGF0YUZpbHRlcigpO1xuXG4gICAgaWYgKHRoaXMubW9kZWwudHlwZSA9PT0gJ3BhcnRpdGlvbicpIHtcbiAgICAgIHZhciBwYXJ0aXRpb24gPSBmaWx0ZXIucGFydGl0aW9ucy5nZXQodGhpcy5tb2RlbC5yYW5rLCAncmFuaycpO1xuICAgICAgaWYgKCFwYXJ0aXRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhcHAubmF2aWdhdGUoJ3BhcnRpdGlvbi8nICsgcGFydGl0aW9uLmdldElkKCkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlbC50eXBlID09PSAnYWdncmVnYXRlJykge1xuICAgICAgdmFyIHZhbHVlcyA9IFsnY291bnQnLCAnYXZnJywgJ3N1bScsICdzdGRkZXYnLCAnbWluJywgJ21heCddO1xuICAgICAgdmFyIGFnZ3JlZ2F0ZSA9IGZpbHRlci5hZ2dyZWdhdGVzLmdldCh0aGlzLm1vZGVsLnJhbmssICdyYW5rJyk7XG4gICAgICBpZiAoIWFnZ3JlZ2F0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBpID0gdmFsdWVzLmluZGV4T2YoYWdncmVnYXRlLm9wZXJhdGlvbikgKyAxO1xuICAgICAgaWYgKGkgPj0gdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICBpID0gMDtcbiAgICAgIH1cblxuICAgICAgaWYgKGFwcC5tZS5zZXNzaW9uVHlwZSA9PT0gJ2NsaWVudCcgJiYgdmFsdWVzW2ldID09PSAnbWluJyB8IHZhbHVlc1tpXSA9PT0gJ21heCcpIHtcbiAgICAgICAgLy8gY3Jvc3NmaWx0ZXIgZG9lcyBub3Qgc3VwcG9ydCBtaW4vbWF4XG4gICAgICAgIGkgPSAwO1xuICAgICAgfVxuXG4gICAgICBhZ2dyZWdhdGUub3BlcmF0aW9uID0gdmFsdWVzW2ldO1xuXG4gICAgICBhcHAudHJpZ2dlcigncmVmcmVzaCcpO1xuXG4gICAgICAvLyBmb3JjZSBhIHJlZHJhdyBvZiB0aGUgdGV4dFxuICAgICAgdGhpcy51cGRhdGVDb3VudGVyICs9IDE7XG4gICAgfVxuICB9LFxuICBlbXB0eVNsb3Q6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5tb2RlbC5lbXB0eVNsb3QoKSkge1xuICAgICAgYXBwLnRyaWdnZXIoJ3JlZnJlc2gnKTtcblxuICAgICAgLy8gZm9yY2UgYSByZWRyYXcgb2YgdGhlIGNoaXBUZXh0XG4gICAgICB0aGlzLnVwZGF0ZUNvdW50ZXIgKz0gMTtcbiAgICB9XG4gIH0sXG4gIHRyeUZpbGxTbG90OiBmdW5jdGlvbiAoZmFjZXQpIHtcbiAgICBpZiAodGhpcy5tb2RlbC50cnlGaWxsU2xvdChmYWNldCkpIHtcbiAgICAgIC8vIEhhY2staXNoIGZlYXR1cmU6XG4gICAgICAvLyAgKiBmb3IgYnViYmxlIHBsb3RzLCBhZGQgYSBmYWNldCBkcm9wcGVkIGFzICdYIGF4aXMnIGFsc28gYXMgJ1BvaW50IHNpemUnXG4gICAgICAvLyAgKiBmb3IgM2Qgc2NhdHRlciBwbG90cywgYWRkIGEgZmFjZXQgZHJvcHBlZCBhcyAnWCBheGlzJyBhbHNvIGFzICdDb2xvciBieSdcbiAgICAgIHZhciBjaGFydFR5cGUgPSB0aGlzLm1vZGVsLmNvbGxlY3Rpb24ucGFyZW50LmZpbHRlci5jaGFydFR5cGU7XG4gICAgICBpZiAoY2hhcnRUeXBlID09PSAnYnViYmxlcGxvdCcpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuZGVzY3JpcHRpb24gPT09ICdYIGF4aXMnKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbC5jb2xsZWN0aW9uLmdldCgnUG9pbnQgc2l6ZScsICdkZXNjcmlwdGlvbicpLnRyeUZpbGxTbG90KGZhY2V0LCAnY291bnQnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGFydFR5cGUgPT09ICdzY2F0dGVyY2hhcnQnKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmRlc2NyaXB0aW9uID09PSAnWCBheGlzJykge1xuICAgICAgICAgIHRoaXMubW9kZWwuY29sbGVjdGlvbi5nZXQoJ0NvbG9yIGJ5JywgJ2Rlc2NyaXB0aW9uJykudHJ5RmlsbFNsb3QoZmFjZXQsICdjb3VudCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFwcC50cmlnZ2VyKCdyZWZyZXNoJyk7XG5cbiAgICAgIC8vIGZvcmNlIGEgcmVkcmF3IG9mIHRoZSBjaGlwVGV4dFxuICAgICAgdGhpcy51cGRhdGVDb3VudGVyICs9IDE7XG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlbmRlcldpdGhUZW1wbGF0ZSh0aGlzKTtcblxuICAgIHZhciBtZSA9IHRoaXM7XG4gICAgdGhpcy5fc29ydGFibGUgPSBzb3J0YWJsZWpzLmNyZWF0ZSh0aGlzLnF1ZXJ5QnlIb29rKCdkcm9wLXpvbmUnKSwge1xuICAgICAgZHJhZ2dhYmxlOiAnLm1kbC1jaGlwJyxcbiAgICAgIGRpc2FibGVkOiBtZS5tb2RlbC5pc0ZpbGxlZCxcbiAgICAgIGdyb3VwOiB7XG4gICAgICAgIG5hbWU6ICdmYWNldHMnLFxuICAgICAgICBwdWxsOiBmYWxzZSxcbiAgICAgICAgcHV0OiB0cnVlXG4gICAgICB9LFxuICAgICAgb25BZGQ6IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy8gZ2V0IHRoZSBkcm9wcGVkIGZhY2V0XG4gICAgICAgIC8vIGJlY2F1c2UgdGhlIGFtcGVyc2FuZCB2aWV3IGNvbGxlY3Rpb24gdGFrZXMgY2FyZSBvZiByZW5kZXJpbmcgYVxuICAgICAgICAvLyBwcmV0dGllciBvbmVcbiAgICAgICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICAgICAgdmFyIGZhY2V0SWQgPSBpdGVtLmdldEF0dHJpYnV0ZSgnZGF0YS1pZCcpO1xuICAgICAgICBpdGVtLnJlbW92ZSgpO1xuXG4gICAgICAgIHZhciBmYWNldCA9IGFwcC5tZS5kYXRhdmlldy5mYWNldHMuZ2V0KGZhY2V0SWQpO1xuICAgICAgICBpZiAoIWZhY2V0KSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignQ2Fubm90IGZpbmQgZmFjZXQnKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbWUudHJ5RmlsbFNsb3QoZmFjZXQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFGQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQWNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFoQ0E7QUFmQTtBQWtEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFqQkE7QUFzQkE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUF0QkE7QUF3QkE7QUFoTkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///de8e\n")},e96a:function(module,exports,__webpack_require__){eval('var Collection = __webpack_require__(/*! ampersand-collection */ "7bd3");\n\nvar Slot = __webpack_require__(/*! ./slot */ "aea4");\n\nmodule.exports = Collection.extend({\n  model: Slot,\n  indexes: [\'description\']\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTk2YS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL21vZGVscy9zbG90cy5qcz9jYmU1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBDb2xsZWN0aW9uID0gcmVxdWlyZSgnYW1wZXJzYW5kLWNvbGxlY3Rpb24nKTtcbnZhciBTbG90ID0gcmVxdWlyZSgnLi9zbG90Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gQ29sbGVjdGlvbi5leHRlbmQoe1xuICBtb2RlbDogU2xvdCxcbiAgaW5kZXhlczogWydkZXNjcmlwdGlvbiddXG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///e96a\n')},e9bd:function(module,exports,__webpack_require__){eval("var app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar Spot = __webpack_require__(/*! spot-framework */ \"3b07\");\n\nvar BaseWidget = __webpack_require__(/*! ./base-widget */ \"26ef\");\n\nvar Chart = __webpack_require__(/*! chart.js */ \"70b5\");\n\nvar colors = __webpack_require__(/*! ../../colors */ \"eb63\");\n\nvar misval = Spot.util.misval;\n\nvar util = __webpack_require__(/*! ./util */ \"2b41\"); // Called by Chartjs, this -> chart instance\n\n\nfunction onClick(ev, elements) {\n  var model = this._Ampersandview.model;\n  var partition = model.filter.partitions.get(1, 'rank');\n\n  if (elements.length > 0) {\n    partition.updateSelection(partition.groups.models[elements[0]._index]);\n    model.filter.updateDataFilter();\n    app.me.dataview.getData();\n  }\n}\n\nfunction _deinitChart(view) {\n  if (view._chartjs) {\n    view._chartjs.destroy();\n\n    delete view._chartjs;\n  }\n\n  delete view._config;\n  var canvas = view.queryByHook('canvas');\n\n  if (canvas) {\n    view.el.removeChild(canvas);\n  }\n\n  view.isInitialized = false;\n}\n\nfunction _initChart(view) {\n  // Configure plot\n  view._config = view.model.chartjsConfig();\n  var options = view._config.options; // axis types\n\n  var partitionA = view.model.filter.partitions.get(1, 'rank');\n\n  if (partitionA.isDatetime) {\n    options.scales.xAxes[0].type = 'time';\n  } else if (partitionA.isDuration) {\n    options.scales.xAxes[0].type = 'spot-duration';\n  }\n\n  options.scales.xAxes[0].scaleLabel = {\n    display: partitionA.showLabel,\n    labelString: partitionA.label\n  }; // title\n\n  options.title.text = view.model.getTitle(); // mouse interaction\n\n  options.onClick = onClick; // force a square full size plot\n\n  var width = view.el.offsetWidth;\n  var height = view.el.offsetHeight;\n  var canvas = document.createElement('canvas');\n  canvas.setAttribute('data-hook', 'canvas');\n  view.el.appendChild(canvas);\n  var ctx = canvas.getContext('2d');\n  ctx.canvas.width = width;\n  ctx.canvas.height = height;\n  var aggregateD = view.model.filter.aggregates.get(4, 'rank');\n\n  if (aggregateD) {\n    // show secondary y Axis on the right when we have a second y variable\n    view._config.options.scales.yAxes[1].display = true;\n  } // Create Chartjs object\n\n\n  view._chartjs = new Chart(ctx, view._config); // In callbacks on the chart we will need the view, so store a reference\n\n  view._chartjs._Ampersandview = view;\n  view.isInitialized = true;\n}\n\nfunction _update(view) {\n  if (!view.isInitialized) {\n    return;\n  }\n\n  var filter = view.model.filter;\n  var partitionA = filter.partitions.get(1, 'rank');\n  var partitionB = filter.partitions.get(2, 'rank');\n  var chartData = view._config.data;\n  var datasetCount; // update legends and tooltips\n\n  if (partitionB && partitionB.groups && partitionB.groups.length > 1) {\n    // we have sub-grouping\n    view._config.options.legend.display = partitionB.showLegend;\n    view._config.options.tooltips.mode = 'label';\n    datasetCount = partitionB.groups.length;\n  } else {\n    view._config.options.legend.display = false;\n    view._config.options.tooltips.mode = 'single';\n    datasetCount = 1;\n  }\n\n  var aggregate;\n  aggregate = filter.aggregates.get(1, 'rank');\n  var valueFn;\n\n  if (aggregate) {\n    valueFn = function valueFn(group) {\n      if (group.count !== misval && group.aa !== misval) {\n        return parseFloat(group.aa) || null;\n      }\n\n      return null;\n    };\n  } else {\n    valueFn = function valueFn(group) {\n      if (group.count !== misval && group.count !== 0) {\n        return parseInt(group.count);\n      }\n\n      return null;\n    };\n  }\n\n  view._config.options.errorDir = 'both';\n  aggregate = filter.aggregates.get(2, 'rank');\n  var errorXFn;\n\n  if (aggregate) {\n    errorXFn = function errorXFn(group) {\n      if (group.bb !== misval) {\n        return parseFloat(group.bb) || 0;\n      }\n\n      return 0;\n    };\n  } else {\n    errorXFn = function errorXFn(group) {\n      return null;\n    };\n\n    view._config.options.errorDir = 'vertical';\n  }\n\n  aggregate = filter.aggregates.get(3, 'rank');\n  var errorYFn;\n\n  if (aggregate) {\n    errorYFn = function errorYFn(group) {\n      if (group.cc !== misval) {\n        return parseFloat(group.cc) || 0;\n      }\n\n      return 0;\n    };\n  } else {\n    errorYFn = function errorYFn(group) {\n      return null;\n    };\n\n    if (view._config.options.errorDir === 'vertical') {\n      view._config.options.errorDir === 'none';\n    }\n\n    if (view._config.options.errorDir === 'both') {\n      view._config.options.errorDir === 'horizontal';\n    }\n  }\n\n  aggregate = filter.aggregates.get(4, 'rank');\n  var secondYFn = false;\n  var secondYOffset = datasetCount;\n\n  if (aggregate) {\n    // double the number of datasets for the second y value\n    secondYOffset = datasetCount;\n    datasetCount = 2 * datasetCount;\n\n    secondYFn = function secondYFn(group) {\n      if (group.dd !== misval) {\n        return parseFloat(group.dd) || null;\n      }\n\n      return null;\n    };\n  }\n\n  util.resizeChartjsData(chartData, partitionA, partitionB, {\n    multiDimensional: true,\n    doubleDatasets: secondYFn\n  }); // add datapoints\n\n  filter.data.forEach(function (group) {\n    var i = util.partitionValueToIndex(partitionA, group.a);\n    var j = util.partitionValueToIndex(partitionB, group.b);\n\n    if (i >= 0 && j >= 0) {\n      chartData.datasets[j].data[i].x = group.a;\n      chartData.datasets[j].data[i].y = valueFn(group);\n      chartData.datasets[j].error[i].x = errorXFn(group);\n      chartData.datasets[j].error[i].y = errorYFn(group);\n      chartData.datasets[j].yAxisID = 'first-scale';\n\n      if (secondYFn) {\n        chartData.datasets[secondYOffset + j].data[i].x = group.a;\n        chartData.datasets[secondYOffset + j].data[i].y = secondYFn(group);\n        chartData.datasets[secondYOffset + j].error[i].x = null;\n        chartData.datasets[secondYOffset + j].error[i].y = null;\n        chartData.datasets[secondYOffset + j].yAxisID = 'second-scale';\n      }\n    }\n  }); // Add an extra dataset to highlight selected area\n\n  var selectionId = datasetCount;\n  chartData.datasets[selectionId] = chartData.datasets[selectionId] || {\n    data: [{\n      x: null,\n      y: 1\n    }, {\n      x: null,\n      y: 1\n    }],\n    error: [{\n      x: null,\n      y: null\n    }, {\n      x: null,\n      y: null\n    }],\n    yAxisID: 'selection-scale',\n    label: 'selection',\n    backgroundColor: colors.getColor(1).css(),\n    borderColor: colors.getColor(1).css(),\n    fill: true,\n    lineTension: 0,\n    pointRadius: 0\n  };\n\n  if (partitionA.selected && partitionA.selected.length > 0) {\n    chartData.datasets[selectionId].data[0].x = partitionA.selected[0];\n    chartData.datasets[selectionId].data[1].x = partitionA.selected[1];\n  } else {\n    chartData.datasets[selectionId].data[0].x = null;\n    chartData.datasets[selectionId].data[1].x = null;\n  } // Hand-off to ChartJS for plotting\n\n\n  view._chartjs.update();\n}\n\nmodule.exports = BaseWidget.extend({\n  template: '<div class=\"widgetInner mdl-card__media\"></div>',\n  update: function update() {\n    _update(this);\n  },\n  initChart: function initChart() {\n    _initChart(this);\n  },\n  deinitChart: function deinitChart() {\n    _deinitChart(this);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTliZC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL3ZpZXdzL2NoYXJ0anMxZC5qcz8yN2MxIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBhcHAgPSByZXF1aXJlKCdhbXBlcnNhbmQtYXBwJyk7XG52YXIgU3BvdCA9IHJlcXVpcmUoJ3Nwb3QtZnJhbWV3b3JrJyk7XG52YXIgQmFzZVdpZGdldCA9IHJlcXVpcmUoJy4vYmFzZS13aWRnZXQnKTtcbnZhciBDaGFydCA9IHJlcXVpcmUoJ2NoYXJ0LmpzJyk7XG52YXIgY29sb3JzID0gcmVxdWlyZSgnLi4vLi4vY29sb3JzJyk7XG52YXIgbWlzdmFsID0gU3BvdC51dGlsLm1pc3ZhbDtcbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8vIENhbGxlZCBieSBDaGFydGpzLCB0aGlzIC0+IGNoYXJ0IGluc3RhbmNlXG5mdW5jdGlvbiBvbkNsaWNrIChldiwgZWxlbWVudHMpIHtcbiAgdmFyIG1vZGVsID0gdGhpcy5fQW1wZXJzYW5kdmlldy5tb2RlbDtcbiAgdmFyIHBhcnRpdGlvbiA9IG1vZGVsLmZpbHRlci5wYXJ0aXRpb25zLmdldCgxLCAncmFuaycpO1xuXG4gIGlmIChlbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgcGFydGl0aW9uLnVwZGF0ZVNlbGVjdGlvbihwYXJ0aXRpb24uZ3JvdXBzLm1vZGVsc1tlbGVtZW50c1swXS5faW5kZXhdKTtcbiAgICBtb2RlbC5maWx0ZXIudXBkYXRlRGF0YUZpbHRlcigpO1xuICAgIGFwcC5tZS5kYXRhdmlldy5nZXREYXRhKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVpbml0Q2hhcnQgKHZpZXcpIHtcbiAgaWYgKHZpZXcuX2NoYXJ0anMpIHtcbiAgICB2aWV3Ll9jaGFydGpzLmRlc3Ryb3koKTtcbiAgICBkZWxldGUgdmlldy5fY2hhcnRqcztcbiAgfVxuICBkZWxldGUgdmlldy5fY29uZmlnO1xuXG4gIHZhciBjYW52YXMgPSB2aWV3LnF1ZXJ5QnlIb29rKCdjYW52YXMnKTtcbiAgaWYgKGNhbnZhcykge1xuICAgIHZpZXcuZWwucmVtb3ZlQ2hpbGQoY2FudmFzKTtcbiAgfVxuICB2aWV3LmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaW5pdENoYXJ0ICh2aWV3KSB7XG4gIC8vIENvbmZpZ3VyZSBwbG90XG4gIHZpZXcuX2NvbmZpZyA9IHZpZXcubW9kZWwuY2hhcnRqc0NvbmZpZygpO1xuICB2YXIgb3B0aW9ucyA9IHZpZXcuX2NvbmZpZy5vcHRpb25zO1xuXG4gIC8vIGF4aXMgdHlwZXNcbiAgdmFyIHBhcnRpdGlvbkEgPSB2aWV3Lm1vZGVsLmZpbHRlci5wYXJ0aXRpb25zLmdldCgxLCAncmFuaycpO1xuICBpZiAocGFydGl0aW9uQS5pc0RhdGV0aW1lKSB7XG4gICAgb3B0aW9ucy5zY2FsZXMueEF4ZXNbMF0udHlwZSA9ICd0aW1lJztcbiAgfSBlbHNlIGlmIChwYXJ0aXRpb25BLmlzRHVyYXRpb24pIHtcbiAgICBvcHRpb25zLnNjYWxlcy54QXhlc1swXS50eXBlID0gJ3Nwb3QtZHVyYXRpb24nO1xuICB9XG4gIG9wdGlvbnMuc2NhbGVzLnhBeGVzWzBdLnNjYWxlTGFiZWwgPSB7XG4gICAgZGlzcGxheTogcGFydGl0aW9uQS5zaG93TGFiZWwsXG4gICAgbGFiZWxTdHJpbmc6IHBhcnRpdGlvbkEubGFiZWxcbiAgfTtcblxuICAvLyB0aXRsZVxuICBvcHRpb25zLnRpdGxlLnRleHQgPSB2aWV3Lm1vZGVsLmdldFRpdGxlKCk7XG5cbiAgLy8gbW91c2UgaW50ZXJhY3Rpb25cbiAgb3B0aW9ucy5vbkNsaWNrID0gb25DbGljaztcblxuICAvLyBmb3JjZSBhIHNxdWFyZSBmdWxsIHNpemUgcGxvdFxuICB2YXIgd2lkdGggPSB2aWV3LmVsLm9mZnNldFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gdmlldy5lbC5vZmZzZXRIZWlnaHQ7XG5cbiAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICBjYW52YXMuc2V0QXR0cmlidXRlKCdkYXRhLWhvb2snLCAnY2FudmFzJyk7XG4gIHZpZXcuZWwuYXBwZW5kQ2hpbGQoY2FudmFzKTtcblxuICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gIGN0eC5jYW52YXMud2lkdGggPSB3aWR0aDtcbiAgY3R4LmNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG5cbiAgdmFyIGFnZ3JlZ2F0ZUQgPSB2aWV3Lm1vZGVsLmZpbHRlci5hZ2dyZWdhdGVzLmdldCg0LCAncmFuaycpO1xuICBpZiAoYWdncmVnYXRlRCkge1xuICAgIC8vIHNob3cgc2Vjb25kYXJ5IHkgQXhpcyBvbiB0aGUgcmlnaHQgd2hlbiB3ZSBoYXZlIGEgc2Vjb25kIHkgdmFyaWFibGVcbiAgICB2aWV3Ll9jb25maWcub3B0aW9ucy5zY2FsZXMueUF4ZXNbMV0uZGlzcGxheSA9IHRydWU7XG4gIH1cblxuICAvLyBDcmVhdGUgQ2hhcnRqcyBvYmplY3RcbiAgdmlldy5fY2hhcnRqcyA9IG5ldyBDaGFydChjdHgsIHZpZXcuX2NvbmZpZyk7XG5cbiAgLy8gSW4gY2FsbGJhY2tzIG9uIHRoZSBjaGFydCB3ZSB3aWxsIG5lZWQgdGhlIHZpZXcsIHNvIHN0b3JlIGEgcmVmZXJlbmNlXG4gIHZpZXcuX2NoYXJ0anMuX0FtcGVyc2FuZHZpZXcgPSB2aWV3O1xuICB2aWV3LmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUgKHZpZXcpIHtcbiAgaWYgKCF2aWV3LmlzSW5pdGlhbGl6ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZmlsdGVyID0gdmlldy5tb2RlbC5maWx0ZXI7XG4gIHZhciBwYXJ0aXRpb25BID0gZmlsdGVyLnBhcnRpdGlvbnMuZ2V0KDEsICdyYW5rJyk7XG4gIHZhciBwYXJ0aXRpb25CID0gZmlsdGVyLnBhcnRpdGlvbnMuZ2V0KDIsICdyYW5rJyk7XG5cbiAgdmFyIGNoYXJ0RGF0YSA9IHZpZXcuX2NvbmZpZy5kYXRhO1xuICB2YXIgZGF0YXNldENvdW50O1xuXG4gIC8vIHVwZGF0ZSBsZWdlbmRzIGFuZCB0b29sdGlwc1xuICBpZiAocGFydGl0aW9uQiAmJiBwYXJ0aXRpb25CLmdyb3VwcyAmJiBwYXJ0aXRpb25CLmdyb3Vwcy5sZW5ndGggPiAxKSB7XG4gICAgLy8gd2UgaGF2ZSBzdWItZ3JvdXBpbmdcbiAgICB2aWV3Ll9jb25maWcub3B0aW9ucy5sZWdlbmQuZGlzcGxheSA9IHBhcnRpdGlvbkIuc2hvd0xlZ2VuZDtcbiAgICB2aWV3Ll9jb25maWcub3B0aW9ucy50b29sdGlwcy5tb2RlID0gJ2xhYmVsJztcbiAgICBkYXRhc2V0Q291bnQgPSBwYXJ0aXRpb25CLmdyb3Vwcy5sZW5ndGg7XG4gIH0gZWxzZSB7XG4gICAgdmlldy5fY29uZmlnLm9wdGlvbnMubGVnZW5kLmRpc3BsYXkgPSBmYWxzZTtcbiAgICB2aWV3Ll9jb25maWcub3B0aW9ucy50b29sdGlwcy5tb2RlID0gJ3NpbmdsZSc7XG4gICAgZGF0YXNldENvdW50ID0gMTtcbiAgfVxuXG4gIHZhciBhZ2dyZWdhdGU7XG5cbiAgYWdncmVnYXRlID0gZmlsdGVyLmFnZ3JlZ2F0ZXMuZ2V0KDEsICdyYW5rJyk7XG4gIHZhciB2YWx1ZUZuO1xuICBpZiAoYWdncmVnYXRlKSB7XG4gICAgdmFsdWVGbiA9IGZ1bmN0aW9uIChncm91cCkge1xuICAgICAgaWYgKGdyb3VwLmNvdW50ICE9PSBtaXN2YWwgJiYgZ3JvdXAuYWEgIT09IG1pc3ZhbCkge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChncm91cC5hYSkgfHwgbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdmFsdWVGbiA9IGZ1bmN0aW9uIChncm91cCkge1xuICAgICAgaWYgKGdyb3VwLmNvdW50ICE9PSBtaXN2YWwgJiYgZ3JvdXAuY291bnQgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KGdyb3VwLmNvdW50KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICB2aWV3Ll9jb25maWcub3B0aW9ucy5lcnJvckRpciA9ICdib3RoJztcbiAgYWdncmVnYXRlID0gZmlsdGVyLmFnZ3JlZ2F0ZXMuZ2V0KDIsICdyYW5rJyk7XG4gIHZhciBlcnJvclhGbjtcbiAgaWYgKGFnZ3JlZ2F0ZSkge1xuICAgIGVycm9yWEZuID0gZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgICBpZiAoZ3JvdXAuYmIgIT09IG1pc3ZhbCkge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChncm91cC5iYikgfHwgMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgZXJyb3JYRm4gPSBmdW5jdGlvbiAoZ3JvdXApIHsgcmV0dXJuIG51bGw7IH07XG4gICAgdmlldy5fY29uZmlnLm9wdGlvbnMuZXJyb3JEaXIgPSAndmVydGljYWwnO1xuICB9XG5cbiAgYWdncmVnYXRlID0gZmlsdGVyLmFnZ3JlZ2F0ZXMuZ2V0KDMsICdyYW5rJyk7XG4gIHZhciBlcnJvcllGbjtcbiAgaWYgKGFnZ3JlZ2F0ZSkge1xuICAgIGVycm9yWUZuID0gZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgICBpZiAoZ3JvdXAuY2MgIT09IG1pc3ZhbCkge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChncm91cC5jYykgfHwgMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgZXJyb3JZRm4gPSBmdW5jdGlvbiAoZ3JvdXApIHsgcmV0dXJuIG51bGw7IH07XG4gICAgaWYgKHZpZXcuX2NvbmZpZy5vcHRpb25zLmVycm9yRGlyID09PSAndmVydGljYWwnKSB7XG4gICAgICB2aWV3Ll9jb25maWcub3B0aW9ucy5lcnJvckRpciA9PT0gJ25vbmUnO1xuICAgIH1cbiAgICBpZiAodmlldy5fY29uZmlnLm9wdGlvbnMuZXJyb3JEaXIgPT09ICdib3RoJykge1xuICAgICAgdmlldy5fY29uZmlnLm9wdGlvbnMuZXJyb3JEaXIgPT09ICdob3Jpem9udGFsJztcbiAgICB9XG4gIH1cblxuICBhZ2dyZWdhdGUgPSBmaWx0ZXIuYWdncmVnYXRlcy5nZXQoNCwgJ3JhbmsnKTtcbiAgdmFyIHNlY29uZFlGbiA9IGZhbHNlO1xuICB2YXIgc2Vjb25kWU9mZnNldCA9IGRhdGFzZXRDb3VudDtcbiAgaWYgKGFnZ3JlZ2F0ZSkge1xuICAgIC8vIGRvdWJsZSB0aGUgbnVtYmVyIG9mIGRhdGFzZXRzIGZvciB0aGUgc2Vjb25kIHkgdmFsdWVcbiAgICBzZWNvbmRZT2Zmc2V0ID0gZGF0YXNldENvdW50O1xuICAgIGRhdGFzZXRDb3VudCA9IDIgKiBkYXRhc2V0Q291bnQ7XG4gICAgc2Vjb25kWUZuID0gZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgICBpZiAoZ3JvdXAuZGQgIT09IG1pc3ZhbCkge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChncm91cC5kZCkgfHwgbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICB1dGlsLnJlc2l6ZUNoYXJ0anNEYXRhKGNoYXJ0RGF0YSwgcGFydGl0aW9uQSwgcGFydGl0aW9uQiwge1xuICAgIG11bHRpRGltZW5zaW9uYWw6IHRydWUsXG4gICAgZG91YmxlRGF0YXNldHM6IHNlY29uZFlGblxuICB9KTtcblxuICAvLyBhZGQgZGF0YXBvaW50c1xuICBmaWx0ZXIuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChncm91cCkge1xuICAgIHZhciBpID0gdXRpbC5wYXJ0aXRpb25WYWx1ZVRvSW5kZXgocGFydGl0aW9uQSwgZ3JvdXAuYSk7XG4gICAgdmFyIGogPSB1dGlsLnBhcnRpdGlvblZhbHVlVG9JbmRleChwYXJ0aXRpb25CLCBncm91cC5iKTtcblxuICAgIGlmIChpID49IDAgJiYgaiA+PSAwKSB7XG4gICAgICBjaGFydERhdGEuZGF0YXNldHNbal0uZGF0YVtpXS54ID0gZ3JvdXAuYTtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5kYXRhW2ldLnkgPSB2YWx1ZUZuKGdyb3VwKTtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tqXS5lcnJvcltpXS54ID0gZXJyb3JYRm4oZ3JvdXApO1xuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzW2pdLmVycm9yW2ldLnkgPSBlcnJvcllGbihncm91cCk7XG4gICAgICBjaGFydERhdGEuZGF0YXNldHNbal0ueUF4aXNJRCA9ICdmaXJzdC1zY2FsZSc7XG5cbiAgICAgIGlmIChzZWNvbmRZRm4pIHtcbiAgICAgICAgY2hhcnREYXRhLmRhdGFzZXRzW3NlY29uZFlPZmZzZXQgKyBqXS5kYXRhW2ldLnggPSBncm91cC5hO1xuICAgICAgICBjaGFydERhdGEuZGF0YXNldHNbc2Vjb25kWU9mZnNldCArIGpdLmRhdGFbaV0ueSA9IHNlY29uZFlGbihncm91cCk7XG4gICAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tzZWNvbmRZT2Zmc2V0ICsgal0uZXJyb3JbaV0ueCA9IG51bGw7XG4gICAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tzZWNvbmRZT2Zmc2V0ICsgal0uZXJyb3JbaV0ueSA9IG51bGw7XG4gICAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tzZWNvbmRZT2Zmc2V0ICsgal0ueUF4aXNJRCA9ICdzZWNvbmQtc2NhbGUnO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gQWRkIGFuIGV4dHJhIGRhdGFzZXQgdG8gaGlnaGxpZ2h0IHNlbGVjdGVkIGFyZWFcbiAgdmFyIHNlbGVjdGlvbklkID0gZGF0YXNldENvdW50O1xuICBjaGFydERhdGEuZGF0YXNldHNbc2VsZWN0aW9uSWRdID0gY2hhcnREYXRhLmRhdGFzZXRzW3NlbGVjdGlvbklkXSB8fCB7XG4gICAgZGF0YTogWyB7eDogbnVsbCwgeTogMX0sIHt4OiBudWxsLCB5OiAxfSBdLFxuICAgIGVycm9yOiBbIHt4OiBudWxsLCB5OiBudWxsfSwge3g6IG51bGwsIHk6IG51bGx9IF0sXG4gICAgeUF4aXNJRDogJ3NlbGVjdGlvbi1zY2FsZScsXG4gICAgbGFiZWw6ICdzZWxlY3Rpb24nLFxuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLmdldENvbG9yKDEpLmNzcygpLFxuICAgIGJvcmRlckNvbG9yOiBjb2xvcnMuZ2V0Q29sb3IoMSkuY3NzKCksXG4gICAgZmlsbDogdHJ1ZSxcbiAgICBsaW5lVGVuc2lvbjogMCxcbiAgICBwb2ludFJhZGl1czogMFxuICB9O1xuXG4gIGlmIChwYXJ0aXRpb25BLnNlbGVjdGVkICYmIHBhcnRpdGlvbkEuc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xuICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tzZWxlY3Rpb25JZF0uZGF0YVswXS54ID0gcGFydGl0aW9uQS5zZWxlY3RlZFswXTtcbiAgICBjaGFydERhdGEuZGF0YXNldHNbc2VsZWN0aW9uSWRdLmRhdGFbMV0ueCA9IHBhcnRpdGlvbkEuc2VsZWN0ZWRbMV07XG4gIH0gZWxzZSB7XG4gICAgY2hhcnREYXRhLmRhdGFzZXRzW3NlbGVjdGlvbklkXS5kYXRhWzBdLnggPSBudWxsO1xuICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1tzZWxlY3Rpb25JZF0uZGF0YVsxXS54ID0gbnVsbDtcbiAgfVxuXG4gIC8vIEhhbmQtb2ZmIHRvIENoYXJ0SlMgZm9yIHBsb3R0aW5nXG4gIHZpZXcuX2NoYXJ0anMudXBkYXRlKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQmFzZVdpZGdldC5leHRlbmQoe1xuICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJ3aWRnZXRJbm5lciBtZGwtY2FyZF9fbWVkaWFcIj48L2Rpdj4nLFxuXG4gIHVwZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIHVwZGF0ZSh0aGlzKTtcbiAgfSxcblxuICBpbml0Q2hhcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpbml0Q2hhcnQodGhpcyk7XG4gIH0sXG5cbiAgZGVpbml0Q2hhcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBkZWluaXRDaGFydCh0aGlzKTtcbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBQ0E7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBYkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///e9bd\n")},eb63:function(module,exports,__webpack_require__){eval("/**\n *\n * Color handling\n *\n * All colors are a chroma.js color. See http://gka.github.io/chroma.js/\n * @module colors\n */\nvar chroma = __webpack_require__(/*! chroma-js */ \"9b81\");\n\nvar colors = ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f']; // alternative color scheme, needs some tuning:\n// var colors = ['#cccccc', '#c2e06c', '#00168c', '#997100', '#eabd00', '#ff4889', '#f497ff', '#0db700', '#d26bb8', '#a8e74b', '#a83375', '#ff6a2b', '#8690ff', '#ff4b50', '#fb78ff', '#00a349', '#c6008f', '#4ef168', '#ff25a2', '#be6300', '#b667ff', '#ff9451', '#e113d2', '#cc0013', '#ff66e0'];\n\nvar scale = chroma.scale('Spectral');\nmodule.exports = {\n  /**\n   * Get i-th color\n   * @param {number} color number\n   * @returns {Object} color\n   */\n  getColor: function getColor(i) {\n    i = parseInt(i);\n\n    if (i < 0 || i >= colors.length) {\n      // pick a color from the scale defined above\n      return scale((i - colors.length) * (211 / 971) % 1);\n    } else {\n      return chroma(colors[i]);\n    }\n  },\n\n  /**\n   * Colorscale from 0 to 1\n   * @param  {number} f [description]\n   * @return {number}   [description]\n   */\n  getColorFloat: function getColorFloat(f) {\n    return scale(f);\n  },\n\n  /**\n   * Color for unselected groups\n   * @type {any}\n   */\n  unselectedColor: chroma('#aaaaaa')\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWI2My5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9jb2xvcnMuanM/MWI5MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBDb2xvciBoYW5kbGluZ1xuICpcbiAqIEFsbCBjb2xvcnMgYXJlIGEgY2hyb21hLmpzIGNvbG9yLiBTZWUgaHR0cDovL2drYS5naXRodWIuaW8vY2hyb21hLmpzL1xuICogQG1vZHVsZSBjb2xvcnNcbiAqL1xudmFyIGNocm9tYSA9IHJlcXVpcmUoJ2Nocm9tYS1qcycpO1xuXG52YXIgY29sb3JzID0gWycjOGRkM2M3JywgJyNmZmZmYjMnLCAnI2JlYmFkYScsICcjZmI4MDcyJywgJyM4MGIxZDMnLCAnI2ZkYjQ2MicsICcjYjNkZTY5JywgJyNmY2NkZTUnLCAnI2Q5ZDlkOScsICcjYmM4MGJkJywgJyNjY2ViYzUnLCAnI2ZmZWQ2ZiddO1xuLy8gYWx0ZXJuYXRpdmUgY29sb3Igc2NoZW1lLCBuZWVkcyBzb21lIHR1bmluZzpcbi8vIHZhciBjb2xvcnMgPSBbJyNjY2NjY2MnLCAnI2MyZTA2YycsICcjMDAxNjhjJywgJyM5OTcxMDAnLCAnI2VhYmQwMCcsICcjZmY0ODg5JywgJyNmNDk3ZmYnLCAnIzBkYjcwMCcsICcjZDI2YmI4JywgJyNhOGU3NGInLCAnI2E4MzM3NScsICcjZmY2YTJiJywgJyM4NjkwZmYnLCAnI2ZmNGI1MCcsICcjZmI3OGZmJywgJyMwMGEzNDknLCAnI2M2MDA4ZicsICcjNGVmMTY4JywgJyNmZjI1YTInLCAnI2JlNjMwMCcsICcjYjY2N2ZmJywgJyNmZjk0NTEnLCAnI2UxMTNkMicsICcjY2MwMDEzJywgJyNmZjY2ZTAnXTtcbnZhciBzY2FsZSA9IGNocm9tYS5zY2FsZSgnU3BlY3RyYWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8qKlxuICAgKiBHZXQgaS10aCBjb2xvclxuICAgKiBAcGFyYW0ge251bWJlcn0gY29sb3IgbnVtYmVyXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IGNvbG9yXG4gICAqL1xuICBnZXRDb2xvcjogZnVuY3Rpb24gZ2V0Q29sb3IgKGkpIHtcbiAgICBpID0gcGFyc2VJbnQoaSk7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gY29sb3JzLmxlbmd0aCkge1xuICAgICAgLy8gcGljayBhIGNvbG9yIGZyb20gdGhlIHNjYWxlIGRlZmluZWQgYWJvdmVcbiAgICAgIHJldHVybiBzY2FsZSgoKGkgLSBjb2xvcnMubGVuZ3RoKSAqICgyMTEgLyA5NzEpKSAlIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY2hyb21hKGNvbG9yc1tpXSk7XG4gICAgfVxuICB9LFxuICAvKipcbiAgICogQ29sb3JzY2FsZSBmcm9tIDAgdG8gMVxuICAgKiBAcGFyYW0gIHtudW1iZXJ9IGYgW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgZ2V0Q29sb3JGbG9hdDogZnVuY3Rpb24gKGYpIHtcbiAgICByZXR1cm4gc2NhbGUoZik7XG4gIH0sXG4gIC8qKlxuICAgKiBDb2xvciBmb3IgdW5zZWxlY3RlZCBncm91cHNcbiAgICogQHR5cGUge2FueX1cbiAgICovXG4gIHVuc2VsZWN0ZWRDb2xvcjogY2hyb21hKCcjYWFhYWFhJylcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTs7OztBQUlBO0FBM0JBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///eb63\n")},ee83:function(module,exports,__webpack_require__){"use strict";eval("// Code adapted from: https://github.com/CAYdenberg/Chart.js-ErrorBars.git\n// Original license: MIT\n// Original copyright: Copyright (c) 2013-2016 Nick Downie\n\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = function (Chart, chartType, newType) {\n  var helpers = Chart.helpers; // ErrorBar element\n\n  Chart.elements.ErrorBar = Chart.elements.ErrorBar || Chart.Element.extend({\n    draw: function draw() {\n      var ctx = this._chart.ctx;\n      var vm = this._view;\n\n      if (vm.direction === 'none') {\n        return;\n      }\n\n      var halfWidth = vm.capWidth / 2;\n      var halfHeight = vm.capHeight / 2;\n      var top = vm.yTop;\n      var bottom = vm.yBottom;\n      var left = vm.xLeft;\n      var right = vm.xRight;\n      ctx.strokeStyle = vm.strokeColor;\n      ctx.lineWidth = vm.strokeWidth; // draw vertical error bar\n\n      if (vm.direction === 'vertical' || vm.direction === 'both') {\n        ctx.beginPath();\n        ctx.moveTo(vm.x, top);\n        ctx.lineTo(vm.x, bottom);\n        ctx.stroke();\n        ctx.beginPath();\n        ctx.moveTo(vm.x - halfWidth, top);\n        ctx.lineTo(vm.x + halfWidth, top);\n        ctx.stroke();\n        ctx.beginPath();\n        ctx.moveTo(vm.x - halfWidth, bottom);\n        ctx.lineTo(vm.x + halfWidth, bottom);\n        ctx.stroke();\n      } // draw horizontal error bar\n\n\n      if (vm.direction === 'horizontal' || vm.direction === 'both') {\n        ctx.beginPath();\n        ctx.moveTo(left, vm.y);\n        ctx.lineTo(right, vm.y);\n        ctx.stroke();\n        ctx.beginPath();\n        ctx.moveTo(left, vm.y - halfHeight);\n        ctx.lineTo(left, vm.y + halfHeight);\n        ctx.stroke();\n        ctx.beginPath();\n        ctx.moveTo(right, vm.y - halfHeight);\n        ctx.lineTo(right, vm.y + halfHeight);\n        ctx.stroke();\n      }\n    }\n  });\n  /**\n   * Default config for errorbars:\n   * errorDir: none, horizontal, vertical, both\n   * errorStrokeWidth\n   * errorCapWidth\n   * errorCapHeight\n   * errorColor\n   */\n\n  Chart.defaults[newType] = helpers.extend(Chart.defaults[chartType], {\n    errorDir: 'vertical',\n    errorStrokeWidth: 1,\n    errorCapWidth: 2.5,\n    errorCapHeight: 0.25,\n    errorColor: 'rgba(0,0,0,1)'\n  }); // Extend chart type with error bar\n\n  Chart.controllers[newType] = Chart.controllers[chartType].extend({\n    initialize: function initialize(chart, datasetIndex) {\n      // call Super\n      Chart.controllers[chartType].prototype.initialize.call(this, chart, datasetIndex);\n      var options = chart.chart.config.options;\n      options.errorDir = options.errorDir || Chart.defaults[newType].errorDir;\n      options.errorCapWidth = options.errorCapWidth || Chart.defaults[newType].errorCapWidth;\n      options.errorCapHeight = options.errorCapHeight || Chart.defaults[newType].errorCapHeight;\n      options.errorStrokeColor = options.errorColor || Chart.defaults[newType].errorColor;\n      options.errorStrokeWidth = options.errorStrokeWidth || Chart.defaults[newType].errorStrokeWidth;\n    },\n    addElements: function addElements() {\n      // call Super\n      Chart.controllers[chartType].prototype.addElements.call(this);\n      var meta = this.getMeta();\n      var error = this.getDataset().error || [];\n      var metaError = meta.error || [];\n      var i, ilen;\n\n      for (i = 0, ilen = error.length; i < ilen; i++) {\n        metaError[i] = metaError[i] || new Chart.elements.ErrorBar({\n          _chart: this.chart.chart,\n          _datasetIndex: this.index,\n          _index: i\n        });\n      }\n\n      meta.error = metaError;\n    },\n    addElementAndReset: function addElementAndReset(index) {\n      // call Super\n      Chart.controllers[chartType].prototype.addElementAndReset.call(this, index);\n      var meta = this.getMeta();\n      var metaError = meta.error;\n      var metaData = meta.data;\n      metaError[index] = metaError[index] || new Chart.elements.ErrorBar({\n        _chart: this.chart.chart,\n        _datasetIndex: this.index,\n        _index: index,\n        x: 0,\n        y: 0\n      });\n      this.updateErrorBar(metaError[index], metaData[index], index, true);\n    },\n    update: function update(reset) {\n      // call Super\n      Chart.controllers[chartType].prototype.update.call(this, reset);\n      var meta = this.getMeta();\n      var metaData = meta.data;\n      var metaError = meta.error; // make sure we don't have more error bars than points\n\n      var cut = metaError.length - metaData.length;\n\n      if (cut > 0) {\n        metaError.splice(metaData.length, cut);\n      }\n\n      metaError.forEach(function (errorBar, index) {\n        this.updateErrorBar(errorBar, metaData[index], index, reset);\n      }, this);\n    },\n    updateErrorBar: function updateErrorBar(errorBar, element, index, reset) {\n      var dataset = this.getDataset();\n      var meta = this.getMeta();\n      var xScale = this.getScaleForId(meta.xAxisID);\n      var yScale = this.getScaleForId(meta.yAxisID);\n      var options = this.chart.chart.config.options;\n      var px = element._model.x;\n      var py = element._model.y;\n      var x = xScale.getValueForPixel(px);\n      var y = yScale.getValueForPixel(py);\n      var errorX;\n      var errorY;\n\n      if (_typeof(dataset.error[index]) === 'object' && dataset.error[index] != null) {\n        errorX = dataset.error[index].x;\n        errorY = dataset.error[index].y;\n      } else {\n        errorX = dataset.error[index];\n        errorY = dataset.error[index];\n      } // Utility\n\n\n      errorBar._chart = this.chart.chart;\n      errorBar._xScale = xScale;\n      errorBar._yScale = yScale;\n      errorBar._datasetIndex = this.index;\n      errorBar._index = index;\n      errorBar._model = {\n        // Position\n        x: px,\n        y: py,\n        yTop: yScale.getPixelForValue(y + errorY, index, this.index, this.chart.isCombo),\n        yBottom: yScale.getPixelForValue(y - errorY, index, this.index, this.chart.isCombo),\n        xLeft: xScale.getPixelForValue(x - errorX, index, this.index, this.chart.isCombo),\n        xRight: xScale.getPixelForValue(x + errorX, index, this.index, this.chart.isCombo),\n        // Appearance\n        capWidth: element._model.width * options.errorCapWidth || options.errorCapWidth,\n        capHeight: element._model.height * options.errorCapHeight || options.errorCapHeight,\n        direction: options.errorDir,\n        strokeColor: options.errorStrokeColor,\n        strokeWidth: options.errorStrokeWidth\n      };\n      errorBar.pivot();\n    },\n    draw: function draw(ease) {\n      var easingDecimal = ease || 1; // call Super\n\n      Chart.controllers[chartType].prototype.draw.call(this, ease);\n      this.getMeta().error.forEach(function (errorBar, index) {\n        // Chech for valid errror bar sizes:\n        // 2-d datastructure: check error.x and error.y\n        // 1-d datastructure: check error\n        var e = this.getDataset().error[index];\n\n        if (e !== null && _typeof(e) === 'object') {\n          if (e.x !== null && e.x !== undefined && !isNaN(e.x) || e.y !== null && e.y !== undefined && !isNaN(e.y)) {\n            errorBar.transition(easingDecimal).draw();\n          }\n        } else if (e !== null && e !== undefined && !isNaN(e) && e !== 0) {\n          errorBar.transition(easingDecimal).draw();\n        }\n      }, this);\n    }\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWU4My5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL2NoYXJ0anMtZXJyb3JiYXJzLmpzPzZmOWMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZSBhZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9DQVlkZW5iZXJnL0NoYXJ0LmpzLUVycm9yQmFycy5naXRcbi8vIE9yaWdpbmFsIGxpY2Vuc2U6IE1JVFxuLy8gT3JpZ2luYWwgY29weXJpZ2h0OiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNiBOaWNrIERvd25pZVxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDaGFydCwgY2hhcnRUeXBlLCBuZXdUeXBlKSB7XG4gIHZhciBoZWxwZXJzID0gQ2hhcnQuaGVscGVycztcblxuICAvLyBFcnJvckJhciBlbGVtZW50XG4gIENoYXJ0LmVsZW1lbnRzLkVycm9yQmFyID0gQ2hhcnQuZWxlbWVudHMuRXJyb3JCYXIgfHwgQ2hhcnQuRWxlbWVudC5leHRlbmQoe1xuICAgIGRyYXc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjdHggPSB0aGlzLl9jaGFydC5jdHg7XG4gICAgICB2YXIgdm0gPSB0aGlzLl92aWV3O1xuXG4gICAgICBpZiAodm0uZGlyZWN0aW9uID09PSAnbm9uZScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgaGFsZldpZHRoID0gdm0uY2FwV2lkdGggLyAyO1xuICAgICAgdmFyIGhhbGZIZWlnaHQgPSB2bS5jYXBIZWlnaHQgLyAyO1xuXG4gICAgICB2YXIgdG9wID0gdm0ueVRvcDtcbiAgICAgIHZhciBib3R0b20gPSB2bS55Qm90dG9tO1xuICAgICAgdmFyIGxlZnQgPSB2bS54TGVmdDtcbiAgICAgIHZhciByaWdodCA9IHZtLnhSaWdodDtcblxuICAgICAgY3R4LnN0cm9rZVN0eWxlID0gdm0uc3Ryb2tlQ29sb3I7XG4gICAgICBjdHgubGluZVdpZHRoID0gdm0uc3Ryb2tlV2lkdGg7XG5cbiAgICAgIC8vIGRyYXcgdmVydGljYWwgZXJyb3IgYmFyXG4gICAgICBpZiAodm0uZGlyZWN0aW9uID09PSAndmVydGljYWwnIHx8IHZtLmRpcmVjdGlvbiA9PT0gJ2JvdGgnKSB7XG4gICAgICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICAgICAgY3R4Lm1vdmVUbyh2bS54LCB0b3ApO1xuICAgICAgICBjdHgubGluZVRvKHZtLngsIGJvdHRvbSk7XG4gICAgICAgIGN0eC5zdHJva2UoKTtcblxuICAgICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICAgIGN0eC5tb3ZlVG8odm0ueCAtIGhhbGZXaWR0aCwgdG9wKTtcbiAgICAgICAgY3R4LmxpbmVUbyh2bS54ICsgaGFsZldpZHRoLCB0b3ApO1xuICAgICAgICBjdHguc3Ryb2tlKCk7XG5cbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICBjdHgubW92ZVRvKHZtLnggLSBoYWxmV2lkdGgsIGJvdHRvbSk7XG4gICAgICAgIGN0eC5saW5lVG8odm0ueCArIGhhbGZXaWR0aCwgYm90dG9tKTtcbiAgICAgICAgY3R4LnN0cm9rZSgpO1xuICAgICAgfVxuXG4gICAgICAvLyBkcmF3IGhvcml6b250YWwgZXJyb3IgYmFyXG4gICAgICBpZiAodm0uZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgfHwgdm0uZGlyZWN0aW9uID09PSAnYm90aCcpIHtcbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICBjdHgubW92ZVRvKGxlZnQsIHZtLnkpO1xuICAgICAgICBjdHgubGluZVRvKHJpZ2h0LCB2bS55KTtcbiAgICAgICAgY3R4LnN0cm9rZSgpO1xuXG4gICAgICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICAgICAgY3R4Lm1vdmVUbyhsZWZ0LCB2bS55IC0gaGFsZkhlaWdodCk7XG4gICAgICAgIGN0eC5saW5lVG8obGVmdCwgdm0ueSArIGhhbGZIZWlnaHQpO1xuICAgICAgICBjdHguc3Ryb2tlKCk7XG5cbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICBjdHgubW92ZVRvKHJpZ2h0LCB2bS55IC0gaGFsZkhlaWdodCk7XG4gICAgICAgIGN0eC5saW5lVG8ocmlnaHQsIHZtLnkgKyBoYWxmSGVpZ2h0KTtcbiAgICAgICAgY3R4LnN0cm9rZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgY29uZmlnIGZvciBlcnJvcmJhcnM6XG4gICAqIGVycm9yRGlyOiBub25lLCBob3Jpem9udGFsLCB2ZXJ0aWNhbCwgYm90aFxuICAgKiBlcnJvclN0cm9rZVdpZHRoXG4gICAqIGVycm9yQ2FwV2lkdGhcbiAgICogZXJyb3JDYXBIZWlnaHRcbiAgICogZXJyb3JDb2xvclxuICAgKi9cbiAgQ2hhcnQuZGVmYXVsdHNbbmV3VHlwZV0gPSBoZWxwZXJzLmV4dGVuZChDaGFydC5kZWZhdWx0c1tjaGFydFR5cGVdLCB7XG4gICAgZXJyb3JEaXI6ICd2ZXJ0aWNhbCcsXG4gICAgZXJyb3JTdHJva2VXaWR0aDogMSxcbiAgICBlcnJvckNhcFdpZHRoOiAyLjUsXG4gICAgZXJyb3JDYXBIZWlnaHQ6IDAuMjUsXG4gICAgZXJyb3JDb2xvcjogJ3JnYmEoMCwwLDAsMSknXG4gIH0pO1xuXG4gIC8vIEV4dGVuZCBjaGFydCB0eXBlIHdpdGggZXJyb3IgYmFyXG4gIENoYXJ0LmNvbnRyb2xsZXJzW25ld1R5cGVdID0gQ2hhcnQuY29udHJvbGxlcnNbY2hhcnRUeXBlXS5leHRlbmQoe1xuICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uIChjaGFydCwgZGF0YXNldEluZGV4KSB7XG4gICAgICAvLyBjYWxsIFN1cGVyXG4gICAgICBDaGFydC5jb250cm9sbGVyc1tjaGFydFR5cGVdLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgY2hhcnQsIGRhdGFzZXRJbmRleCk7XG5cbiAgICAgIHZhciBvcHRpb25zID0gY2hhcnQuY2hhcnQuY29uZmlnLm9wdGlvbnM7XG4gICAgICBvcHRpb25zLmVycm9yRGlyID0gb3B0aW9ucy5lcnJvckRpciB8fCBDaGFydC5kZWZhdWx0c1tuZXdUeXBlXS5lcnJvckRpcjtcbiAgICAgIG9wdGlvbnMuZXJyb3JDYXBXaWR0aCA9IG9wdGlvbnMuZXJyb3JDYXBXaWR0aCB8fCBDaGFydC5kZWZhdWx0c1tuZXdUeXBlXS5lcnJvckNhcFdpZHRoO1xuICAgICAgb3B0aW9ucy5lcnJvckNhcEhlaWdodCA9IG9wdGlvbnMuZXJyb3JDYXBIZWlnaHQgfHwgQ2hhcnQuZGVmYXVsdHNbbmV3VHlwZV0uZXJyb3JDYXBIZWlnaHQ7XG4gICAgICBvcHRpb25zLmVycm9yU3Ryb2tlQ29sb3IgPSBvcHRpb25zLmVycm9yQ29sb3IgfHwgQ2hhcnQuZGVmYXVsdHNbbmV3VHlwZV0uZXJyb3JDb2xvcjtcbiAgICAgIG9wdGlvbnMuZXJyb3JTdHJva2VXaWR0aCA9IG9wdGlvbnMuZXJyb3JTdHJva2VXaWR0aCB8fCBDaGFydC5kZWZhdWx0c1tuZXdUeXBlXS5lcnJvclN0cm9rZVdpZHRoO1xuICAgIH0sXG5cbiAgICBhZGRFbGVtZW50czogZnVuY3Rpb24gKCkge1xuICAgICAgLy8gY2FsbCBTdXBlclxuICAgICAgQ2hhcnQuY29udHJvbGxlcnNbY2hhcnRUeXBlXS5wcm90b3R5cGUuYWRkRWxlbWVudHMuY2FsbCh0aGlzKTtcblxuICAgICAgdmFyIG1ldGEgPSB0aGlzLmdldE1ldGEoKTtcbiAgICAgIHZhciBlcnJvciA9IHRoaXMuZ2V0RGF0YXNldCgpLmVycm9yIHx8IFtdO1xuICAgICAgdmFyIG1ldGFFcnJvciA9IG1ldGEuZXJyb3IgfHwgW107XG4gICAgICB2YXIgaSwgaWxlbjtcblxuICAgICAgZm9yIChpID0gMCwgaWxlbiA9IGVycm9yLmxlbmd0aDsgaSA8IGlsZW47IGkrKykge1xuICAgICAgICBtZXRhRXJyb3JbaV0gPSBtZXRhRXJyb3JbaV0gfHwgbmV3IENoYXJ0LmVsZW1lbnRzLkVycm9yQmFyKHtcbiAgICAgICAgICBfY2hhcnQ6IHRoaXMuY2hhcnQuY2hhcnQsXG4gICAgICAgICAgX2RhdGFzZXRJbmRleDogdGhpcy5pbmRleCxcbiAgICAgICAgICBfaW5kZXg6IGlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBtZXRhLmVycm9yID0gbWV0YUVycm9yO1xuICAgIH0sXG5cbiAgICBhZGRFbGVtZW50QW5kUmVzZXQ6IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgLy8gY2FsbCBTdXBlclxuICAgICAgQ2hhcnQuY29udHJvbGxlcnNbY2hhcnRUeXBlXS5wcm90b3R5cGUuYWRkRWxlbWVudEFuZFJlc2V0LmNhbGwodGhpcywgaW5kZXgpO1xuXG4gICAgICB2YXIgbWV0YSA9IHRoaXMuZ2V0TWV0YSgpO1xuICAgICAgdmFyIG1ldGFFcnJvciA9IG1ldGEuZXJyb3I7XG4gICAgICB2YXIgbWV0YURhdGEgPSBtZXRhLmRhdGE7XG5cbiAgICAgIG1ldGFFcnJvcltpbmRleF0gPSBtZXRhRXJyb3JbaW5kZXhdIHx8IG5ldyBDaGFydC5lbGVtZW50cy5FcnJvckJhcih7XG4gICAgICAgIF9jaGFydDogdGhpcy5jaGFydC5jaGFydCxcbiAgICAgICAgX2RhdGFzZXRJbmRleDogdGhpcy5pbmRleCxcbiAgICAgICAgX2luZGV4OiBpbmRleCxcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZUVycm9yQmFyKG1ldGFFcnJvcltpbmRleF0sIG1ldGFEYXRhW2luZGV4XSwgaW5kZXgsIHRydWUpO1xuICAgIH0sXG5cbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSAocmVzZXQpIHtcbiAgICAgIC8vIGNhbGwgU3VwZXJcbiAgICAgIENoYXJ0LmNvbnRyb2xsZXJzW2NoYXJ0VHlwZV0ucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMsIHJlc2V0KTtcblxuICAgICAgdmFyIG1ldGEgPSB0aGlzLmdldE1ldGEoKTtcbiAgICAgIHZhciBtZXRhRGF0YSA9IG1ldGEuZGF0YTtcbiAgICAgIHZhciBtZXRhRXJyb3IgPSBtZXRhLmVycm9yO1xuXG4gICAgICAvLyBtYWtlIHN1cmUgd2UgZG9uJ3QgaGF2ZSBtb3JlIGVycm9yIGJhcnMgdGhhbiBwb2ludHNcbiAgICAgIHZhciBjdXQgPSBtZXRhRXJyb3IubGVuZ3RoIC0gbWV0YURhdGEubGVuZ3RoO1xuICAgICAgaWYgKGN1dCA+IDApIHtcbiAgICAgICAgbWV0YUVycm9yLnNwbGljZShtZXRhRGF0YS5sZW5ndGgsIGN1dCk7XG4gICAgICB9XG5cbiAgICAgIG1ldGFFcnJvci5mb3JFYWNoKGZ1bmN0aW9uIChlcnJvckJhciwgaW5kZXgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVFcnJvckJhcihlcnJvckJhciwgbWV0YURhdGFbaW5kZXhdLCBpbmRleCwgcmVzZXQpO1xuICAgICAgfSwgdGhpcyk7XG4gICAgfSxcblxuICAgIHVwZGF0ZUVycm9yQmFyOiBmdW5jdGlvbiB1cGRhdGVFcnJvckJhciAoZXJyb3JCYXIsIGVsZW1lbnQsIGluZGV4LCByZXNldCkge1xuICAgICAgdmFyIGRhdGFzZXQgPSB0aGlzLmdldERhdGFzZXQoKTtcbiAgICAgIHZhciBtZXRhID0gdGhpcy5nZXRNZXRhKCk7XG4gICAgICB2YXIgeFNjYWxlID0gdGhpcy5nZXRTY2FsZUZvcklkKG1ldGEueEF4aXNJRCk7XG4gICAgICB2YXIgeVNjYWxlID0gdGhpcy5nZXRTY2FsZUZvcklkKG1ldGEueUF4aXNJRCk7XG5cbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5jaGFydC5jaGFydC5jb25maWcub3B0aW9ucztcblxuICAgICAgdmFyIHB4ID0gZWxlbWVudC5fbW9kZWwueDtcbiAgICAgIHZhciBweSA9IGVsZW1lbnQuX21vZGVsLnk7XG5cbiAgICAgIHZhciB4ID0geFNjYWxlLmdldFZhbHVlRm9yUGl4ZWwocHgpO1xuICAgICAgdmFyIHkgPSB5U2NhbGUuZ2V0VmFsdWVGb3JQaXhlbChweSk7XG5cbiAgICAgIHZhciBlcnJvclg7XG4gICAgICB2YXIgZXJyb3JZO1xuICAgICAgaWYgKHR5cGVvZiBkYXRhc2V0LmVycm9yW2luZGV4XSA9PT0gJ29iamVjdCcgJiYgZGF0YXNldC5lcnJvcltpbmRleF0gIT0gbnVsbCkge1xuICAgICAgICBlcnJvclggPSBkYXRhc2V0LmVycm9yW2luZGV4XS54O1xuICAgICAgICBlcnJvclkgPSBkYXRhc2V0LmVycm9yW2luZGV4XS55O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3JYID0gZGF0YXNldC5lcnJvcltpbmRleF07XG4gICAgICAgIGVycm9yWSA9IGRhdGFzZXQuZXJyb3JbaW5kZXhdO1xuICAgICAgfVxuXG4gICAgICAvLyBVdGlsaXR5XG4gICAgICBlcnJvckJhci5fY2hhcnQgPSB0aGlzLmNoYXJ0LmNoYXJ0O1xuICAgICAgZXJyb3JCYXIuX3hTY2FsZSA9IHhTY2FsZTtcbiAgICAgIGVycm9yQmFyLl95U2NhbGUgPSB5U2NhbGU7XG4gICAgICBlcnJvckJhci5fZGF0YXNldEluZGV4ID0gdGhpcy5pbmRleDtcbiAgICAgIGVycm9yQmFyLl9pbmRleCA9IGluZGV4O1xuXG4gICAgICBlcnJvckJhci5fbW9kZWwgPSB7XG4gICAgICAgIC8vIFBvc2l0aW9uXG4gICAgICAgIHg6IHB4LFxuICAgICAgICB5OiBweSxcbiAgICAgICAgeVRvcDogeVNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeSArIGVycm9yWSwgaW5kZXgsIHRoaXMuaW5kZXgsIHRoaXMuY2hhcnQuaXNDb21ibyksXG4gICAgICAgIHlCb3R0b206IHlTY2FsZS5nZXRQaXhlbEZvclZhbHVlKHkgLSBlcnJvclksIGluZGV4LCB0aGlzLmluZGV4LCB0aGlzLmNoYXJ0LmlzQ29tYm8pLFxuICAgICAgICB4TGVmdDogeFNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeCAtIGVycm9yWCwgaW5kZXgsIHRoaXMuaW5kZXgsIHRoaXMuY2hhcnQuaXNDb21ibyksXG4gICAgICAgIHhSaWdodDogeFNjYWxlLmdldFBpeGVsRm9yVmFsdWUoeCArIGVycm9yWCwgaW5kZXgsIHRoaXMuaW5kZXgsIHRoaXMuY2hhcnQuaXNDb21ibyksXG5cbiAgICAgICAgLy8gQXBwZWFyYW5jZVxuICAgICAgICBjYXBXaWR0aDogZWxlbWVudC5fbW9kZWwud2lkdGggKiBvcHRpb25zLmVycm9yQ2FwV2lkdGggfHwgb3B0aW9ucy5lcnJvckNhcFdpZHRoLFxuICAgICAgICBjYXBIZWlnaHQ6IGVsZW1lbnQuX21vZGVsLmhlaWdodCAqIG9wdGlvbnMuZXJyb3JDYXBIZWlnaHQgfHwgb3B0aW9ucy5lcnJvckNhcEhlaWdodCxcbiAgICAgICAgZGlyZWN0aW9uOiBvcHRpb25zLmVycm9yRGlyLFxuICAgICAgICBzdHJva2VDb2xvcjogb3B0aW9ucy5lcnJvclN0cm9rZUNvbG9yLFxuICAgICAgICBzdHJva2VXaWR0aDogb3B0aW9ucy5lcnJvclN0cm9rZVdpZHRoXG4gICAgICB9O1xuXG4gICAgICBlcnJvckJhci5waXZvdCgpO1xuICAgIH0sXG5cbiAgICBkcmF3OiBmdW5jdGlvbiAoZWFzZSkge1xuICAgICAgdmFyIGVhc2luZ0RlY2ltYWwgPSBlYXNlIHx8IDE7XG5cbiAgICAgIC8vIGNhbGwgU3VwZXJcbiAgICAgIENoYXJ0LmNvbnRyb2xsZXJzW2NoYXJ0VHlwZV0ucHJvdG90eXBlLmRyYXcuY2FsbCh0aGlzLCBlYXNlKTtcblxuICAgICAgdGhpcy5nZXRNZXRhKCkuZXJyb3IuZm9yRWFjaChmdW5jdGlvbiAoZXJyb3JCYXIsIGluZGV4KSB7XG4gICAgICAgIC8vIENoZWNoIGZvciB2YWxpZCBlcnJyb3IgYmFyIHNpemVzOlxuICAgICAgICAvLyAyLWQgZGF0YXN0cnVjdHVyZTogY2hlY2sgZXJyb3IueCBhbmQgZXJyb3IueVxuICAgICAgICAvLyAxLWQgZGF0YXN0cnVjdHVyZTogY2hlY2sgZXJyb3JcbiAgICAgICAgdmFyIGUgPSB0aGlzLmdldERhdGFzZXQoKS5lcnJvcltpbmRleF07XG5cbiAgICAgICAgaWYgKGUgIT09IG51bGwgJiYgdHlwZW9mIGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKChlLnggIT09IG51bGwgJiYgZS54ICE9PSB1bmRlZmluZWQgJiYgIWlzTmFOKGUueCkpIHx8IChlLnkgIT09IG51bGwgJiYgZS55ICE9PSB1bmRlZmluZWQgJiYgIWlzTmFOKGUueSkpKSB7XG4gICAgICAgICAgICBlcnJvckJhci50cmFuc2l0aW9uKGVhc2luZ0RlY2ltYWwpLmRyYXcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZSAhPT0gbnVsbCAmJiBlICE9PSB1bmRlZmluZWQgJiYgIWlzTmFOKGUpICYmIGUgIT09IDApIHtcbiAgICAgICAgICBlcnJvckJhci50cmFuc2l0aW9uKGVhc2luZ0RlY2ltYWwpLmRyYXcoKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcyk7XG4gICAgfVxuICB9KTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkRBO0FBMERBOzs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZEE7QUFpQkE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNUlBO0FBOElBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///ee83\n")},f2bc:function(module,exports,__webpack_require__){eval("var Collection = __webpack_require__(/*! ampersand-collection */ \"7bd3\");\n\nvar AmpersandModel = __webpack_require__(/*! ampersand-model */ \"3bfc\");\n\nvar widgetEntry = AmpersandModel.extend({\n  props: {\n    modelType: {\n      type: 'string',\n      required: true\n    },\n    newModel: {\n      type: 'any',\n      required: true\n    }\n  }\n});\nvar WidgetCollection = Collection.extend({\n  model: widgetEntry,\n  mainIndex: 'modelType'\n});\n/**\n * A collection of Ampersand widget containing all available chart types\n * @module widgets/widget-factory\n */\n\nmodule.exports.widgets = new WidgetCollection([{\n  modelType: 'piechart',\n  newModel: __webpack_require__(/*! ./models/piechart */ \"2413\")\n}, {\n  modelType: 'horizontalbarchart',\n  newModel: __webpack_require__(/*! ./models/horizontalbarchart */ \"1c81\")\n}, {\n  modelType: 'barchart',\n  newModel: __webpack_require__(/*! ./models/barchart */ \"6535\")\n}, {\n  modelType: 'linechart',\n  newModel: __webpack_require__(/*! ./models/linechart */ \"9cb1\")\n}, {\n  modelType: 'radarchart',\n  newModel: __webpack_require__(/*! ./models/radarchart */ \"0b9d\")\n}, {\n  modelType: 'bubbleplot',\n  newModel: __webpack_require__(/*! ./models/bubbleplot */ \"71a3\")\n}, {\n  modelType: 'scatterchart',\n  newModel: __webpack_require__(/*! ./models/scatter */ \"37f6\")\n}, {\n  modelType: 'networkchart',\n  newModel: __webpack_require__(/*! ./models/sigma */ \"8f0f\") // Register new widgets here\n\n}]);\n/**\n * Create a new Ampersand model for a widget\n * @param {Object} attrs - Used for initialization of model properties, passed on to the model constructor.\n * @param {Object} options - passed on to the model constructor, see https://github.com/AmpersandJS/ampersand-model#constructorinitialize-new-extendedampersandmodelattrs-options\n * @returns {Model} widget - An Ampersand model representing the widget\n */\n\nmodule.exports.newModel = function newModel(attrs, options) {\n  var model;\n  var entry = module.exports.widgets.get(attrs.modelType);\n  var constructor = entry.newModel;\n  model = new constructor(attrs, options);\n  model.modelType = attrs.modelType;\n  return model;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZjJiYy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL3dpZGdldC1mYWN0b3J5LmpzP2Y0M2EiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIENvbGxlY3Rpb24gPSByZXF1aXJlKCdhbXBlcnNhbmQtY29sbGVjdGlvbicpO1xudmFyIEFtcGVyc2FuZE1vZGVsID0gcmVxdWlyZSgnYW1wZXJzYW5kLW1vZGVsJyk7XG5cbnZhciB3aWRnZXRFbnRyeSA9IEFtcGVyc2FuZE1vZGVsLmV4dGVuZCh7XG4gIHByb3BzOiB7XG4gICAgbW9kZWxUeXBlOiB7dHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiB0cnVlfSxcbiAgICBuZXdNb2RlbDoge3R5cGU6ICdhbnknLCByZXF1aXJlZDogdHJ1ZX1cbiAgfVxufSk7XG5cbnZhciBXaWRnZXRDb2xsZWN0aW9uID0gQ29sbGVjdGlvbi5leHRlbmQoe1xuICBtb2RlbDogd2lkZ2V0RW50cnksXG4gIG1haW5JbmRleDogJ21vZGVsVHlwZSdcbn0pO1xuXG4vKipcbiAqIEEgY29sbGVjdGlvbiBvZiBBbXBlcnNhbmQgd2lkZ2V0IGNvbnRhaW5pbmcgYWxsIGF2YWlsYWJsZSBjaGFydCB0eXBlc1xuICogQG1vZHVsZSB3aWRnZXRzL3dpZGdldC1mYWN0b3J5XG4gKi9cbm1vZHVsZS5leHBvcnRzLndpZGdldHMgPSBuZXcgV2lkZ2V0Q29sbGVjdGlvbihbXG4gIHtcbiAgICBtb2RlbFR5cGU6ICdwaWVjaGFydCcsXG4gICAgbmV3TW9kZWw6IHJlcXVpcmUoJy4vbW9kZWxzL3BpZWNoYXJ0JylcbiAgfSxcbiAge1xuICAgIG1vZGVsVHlwZTogJ2hvcml6b250YWxiYXJjaGFydCcsXG4gICAgbmV3TW9kZWw6IHJlcXVpcmUoJy4vbW9kZWxzL2hvcml6b250YWxiYXJjaGFydCcpXG4gIH0sXG4gIHtcbiAgICBtb2RlbFR5cGU6ICdiYXJjaGFydCcsXG4gICAgbmV3TW9kZWw6IHJlcXVpcmUoJy4vbW9kZWxzL2JhcmNoYXJ0JylcbiAgfSxcbiAge1xuICAgIG1vZGVsVHlwZTogJ2xpbmVjaGFydCcsXG4gICAgbmV3TW9kZWw6IHJlcXVpcmUoJy4vbW9kZWxzL2xpbmVjaGFydCcpXG4gIH0sXG4gIHtcbiAgICBtb2RlbFR5cGU6ICdyYWRhcmNoYXJ0JyxcbiAgICBuZXdNb2RlbDogcmVxdWlyZSgnLi9tb2RlbHMvcmFkYXJjaGFydCcpXG4gIH0sXG4gIHtcbiAgICBtb2RlbFR5cGU6ICdidWJibGVwbG90JyxcbiAgICBuZXdNb2RlbDogcmVxdWlyZSgnLi9tb2RlbHMvYnViYmxlcGxvdCcpXG4gIH0sXG4gIHtcbiAgICBtb2RlbFR5cGU6ICdzY2F0dGVyY2hhcnQnLFxuICAgIG5ld01vZGVsOiByZXF1aXJlKCcuL21vZGVscy9zY2F0dGVyJylcbiAgfSxcbiAge1xuICAgIG1vZGVsVHlwZTogJ25ldHdvcmtjaGFydCcsXG4gICAgbmV3TW9kZWw6IHJlcXVpcmUoJy4vbW9kZWxzL3NpZ21hJylcbiAgfVxuICAvLyBSZWdpc3RlciBuZXcgd2lkZ2V0cyBoZXJlXG5dKTtcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgQW1wZXJzYW5kIG1vZGVsIGZvciBhIHdpZGdldFxuICogQHBhcmFtIHtPYmplY3R9IGF0dHJzIC0gVXNlZCBmb3IgaW5pdGlhbGl6YXRpb24gb2YgbW9kZWwgcHJvcGVydGllcywgcGFzc2VkIG9uIHRvIHRoZSBtb2RlbCBjb25zdHJ1Y3Rvci5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gcGFzc2VkIG9uIHRvIHRoZSBtb2RlbCBjb25zdHJ1Y3Rvciwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9BbXBlcnNhbmRKUy9hbXBlcnNhbmQtbW9kZWwjY29uc3RydWN0b3Jpbml0aWFsaXplLW5ldy1leHRlbmRlZGFtcGVyc2FuZG1vZGVsYXR0cnMtb3B0aW9uc1xuICogQHJldHVybnMge01vZGVsfSB3aWRnZXQgLSBBbiBBbXBlcnNhbmQgbW9kZWwgcmVwcmVzZW50aW5nIHRoZSB3aWRnZXRcbiAqL1xubW9kdWxlLmV4cG9ydHMubmV3TW9kZWwgPSBmdW5jdGlvbiBuZXdNb2RlbCAoYXR0cnMsIG9wdGlvbnMpIHtcbiAgdmFyIG1vZGVsO1xuICB2YXIgZW50cnkgPSBtb2R1bGUuZXhwb3J0cy53aWRnZXRzLmdldChhdHRycy5tb2RlbFR5cGUpO1xuICB2YXIgY29uc3RydWN0b3IgPSBlbnRyeS5uZXdNb2RlbDtcbiAgbW9kZWwgPSBuZXcgY29uc3RydWN0b3IoYXR0cnMsIG9wdGlvbnMpO1xuICBtb2RlbC5tb2RlbFR5cGUgPSBhdHRycy5tb2RlbFR5cGU7XG5cbiAgcmV0dXJuIG1vZGVsO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUZBO0FBREE7QUFPQTtBQUNBO0FBQ0E7QUFGQTtBQUtBOzs7OztBQUlBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBSEE7QUFPQTs7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///f2bc\n")},f3d5:function(module,exports,__webpack_require__){eval("var Spot = __webpack_require__(/*! spot-framework */ \"3b07\");\n\nvar timeUtil = Spot.util.time;\n\nvar View = __webpack_require__(/*! ampersand-view */ \"2883\"); // this.model should be a DatetimeTransform or DurationTransform\n\n\nvar TimeZoneView = View.extend({\n  template: '<option data-hook=\"option\"> </option>',\n  render: function render() {\n    this.renderWithTemplate(this);\n  },\n  bindings: {\n    'model.description': {\n      hook: 'option',\n      type: 'text'\n    },\n    'model.format': {\n      hook: 'option',\n      type: 'attribute',\n      name: 'value'\n    }\n  }\n});\nmodule.exports = View.extend({\n  template: '<select data-hook=\"options\"> </select>',\n  initialize: function initialize(options) {\n    this.field = options.field;\n  },\n  render: function render() {\n    this.renderWithTemplate(this);\n    this.renderCollection(timeUtil.timeZones, TimeZoneView, this.queryByHook('options'));\n    var value = this.model[this.field];\n    this.queryByHook('options').value = value;\n  },\n  events: {\n    'change [data-hook=\"options\"]': 'changeTimeZone'\n  },\n  changeTimeZone: function changeTimeZone() {\n    var value = this.queryByHook('options').value;\n    this.model[this.field] = value;\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZjNkNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZmFjZXQvdGltZS16b25lcy1zZWxlY3QuanM/ZDY4YiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgU3BvdCA9IHJlcXVpcmUoJ3Nwb3QtZnJhbWV3b3JrJyk7XG52YXIgdGltZVV0aWwgPSBTcG90LnV0aWwudGltZTtcbnZhciBWaWV3ID0gcmVxdWlyZSgnYW1wZXJzYW5kLXZpZXcnKTtcblxuLy8gdGhpcy5tb2RlbCBzaG91bGQgYmUgYSBEYXRldGltZVRyYW5zZm9ybSBvciBEdXJhdGlvblRyYW5zZm9ybVxuXG52YXIgVGltZVpvbmVWaWV3ID0gVmlldy5leHRlbmQoe1xuICB0ZW1wbGF0ZTogJzxvcHRpb24gZGF0YS1ob29rPVwib3B0aW9uXCI+IDwvb3B0aW9uPicsXG4gIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucmVuZGVyV2l0aFRlbXBsYXRlKHRoaXMpO1xuICB9LFxuICBiaW5kaW5nczoge1xuICAgICdtb2RlbC5kZXNjcmlwdGlvbic6IHtcbiAgICAgIGhvb2s6ICdvcHRpb24nLFxuICAgICAgdHlwZTogJ3RleHQnXG4gICAgfSxcbiAgICAnbW9kZWwuZm9ybWF0Jzoge1xuICAgICAgaG9vazogJ29wdGlvbicsXG4gICAgICB0eXBlOiAnYXR0cmlidXRlJyxcbiAgICAgIG5hbWU6ICd2YWx1ZSdcbiAgICB9XG4gIH1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXcuZXh0ZW5kKHtcbiAgdGVtcGxhdGU6ICc8c2VsZWN0IGRhdGEtaG9vaz1cIm9wdGlvbnNcIj4gPC9zZWxlY3Q+JyxcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICB0aGlzLmZpZWxkID0gb3B0aW9ucy5maWVsZDtcbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZW5kZXJXaXRoVGVtcGxhdGUodGhpcyk7XG4gICAgdGhpcy5yZW5kZXJDb2xsZWN0aW9uKHRpbWVVdGlsLnRpbWVab25lcywgVGltZVpvbmVWaWV3LCB0aGlzLnF1ZXJ5QnlIb29rKCdvcHRpb25zJykpO1xuXG4gICAgdmFyIHZhbHVlID0gdGhpcy5tb2RlbFt0aGlzLmZpZWxkXTtcbiAgICB0aGlzLnF1ZXJ5QnlIb29rKCdvcHRpb25zJykudmFsdWUgPSB2YWx1ZTtcbiAgfSxcbiAgZXZlbnRzOiB7XG4gICAgJ2NoYW5nZSBbZGF0YS1ob29rPVwib3B0aW9uc1wiXSc6ICdjaGFuZ2VUaW1lWm9uZSdcbiAgfSxcbiAgY2hhbmdlVGltZVpvbmU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLnF1ZXJ5QnlIb29rKCdvcHRpb25zJykudmFsdWU7XG4gICAgdGhpcy5tb2RlbFt0aGlzLmZpZWxkXSA9IHZhbHVlO1xuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFMQTtBQUxBO0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQWxCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///f3d5\n")},f77a:function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nmodule.exports = View.extend({\n  template: templates.configureFacet.facetTransformContinuous,\n  bindings: {\n    'model.isNone': {\n      type: 'booleanAttribute',\n      hook: 'define-transform-none',\n      name: 'checked'\n    },\n    'model.isPercentiles': {\n      type: 'booleanAttribute',\n      hook: 'define-transform-percentiles',\n      name: 'checked'\n    }\n  },\n  events: {\n    'click [data-hook~=define-transform-percentiles]': function clickDataHookDefineTransformPercentiles() {\n      this.model.clear();\n      this.model.setPercentiles();\n    },\n    'click [data-hook~=define-transform-none]': function clickDataHookDefineTransformNone() {\n      this.model.clear();\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZjc3YS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtZmFjZXQvZmFjZXQtdHJhbnNmb3JtLWNvbnRpbnVvdXMuanM/NDgyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgVmlldyA9IHJlcXVpcmUoJ2FtcGVyc2FuZC12aWV3Jyk7XG52YXIgdGVtcGxhdGVzID0gcmVxdWlyZSgnLi4vLi4vdGVtcGxhdGVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gVmlldy5leHRlbmQoe1xuICB0ZW1wbGF0ZTogdGVtcGxhdGVzLmNvbmZpZ3VyZUZhY2V0LmZhY2V0VHJhbnNmb3JtQ29udGludW91cyxcbiAgYmluZGluZ3M6IHtcbiAgICAnbW9kZWwuaXNOb25lJzoge1xuICAgICAgdHlwZTogJ2Jvb2xlYW5BdHRyaWJ1dGUnLFxuICAgICAgaG9vazogJ2RlZmluZS10cmFuc2Zvcm0tbm9uZScsXG4gICAgICBuYW1lOiAnY2hlY2tlZCdcbiAgICB9LFxuICAgICdtb2RlbC5pc1BlcmNlbnRpbGVzJzoge1xuICAgICAgdHlwZTogJ2Jvb2xlYW5BdHRyaWJ1dGUnLFxuICAgICAgaG9vazogJ2RlZmluZS10cmFuc2Zvcm0tcGVyY2VudGlsZXMnLFxuICAgICAgbmFtZTogJ2NoZWNrZWQnXG4gICAgfVxuICB9LFxuICBldmVudHM6IHtcbiAgICAnY2xpY2sgW2RhdGEtaG9va349ZGVmaW5lLXRyYW5zZm9ybS1wZXJjZW50aWxlc10nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLmNsZWFyKCk7XG4gICAgICB0aGlzLm1vZGVsLnNldFBlcmNlbnRpbGVzKCk7XG4gICAgfSxcbiAgICAnY2xpY2sgW2RhdGEtaG9va349ZGVmaW5lLXRyYW5zZm9ybS1ub25lXSc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMubW9kZWwuY2xlYXIoKTtcbiAgICB9XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBTkE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFkQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///f77a\n")},faa4:function(module,exports,__webpack_require__){eval("var View = __webpack_require__(/*! ampersand-view */ \"2883\");\n\nvar templates = __webpack_require__(/*! ../../templates */ \"4324\");\n\nmodule.exports = View.extend({\n  template: templates.configurePartition.partitionText,\n  bindings: {\n    'model.isText': {\n      type: 'toggle',\n      hook: 'group-text-panel'\n    }\n  },\n  events: {\n    'click [data-hook~=group-order-count]': function clickDataHookGroupOrderCount() {\n      this.model.ordering = 'count';\n      this.parent.resetFilter = true;\n    },\n    'click [data-hook~=group-order-abc]': function clickDataHookGroupOrderAbc() {\n      this.model.ordering = 'value';\n      this.parent.resetFilter = true;\n    }\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFhNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9wYWdlcy9jb25maWd1cmUtcGFydGl0aW9uL3BhcnRpdGlvbi10ZXh0LmpzPzdhOGYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIFZpZXcgPSByZXF1aXJlKCdhbXBlcnNhbmQtdmlldycpO1xudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4uLy4uL3RlbXBsYXRlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXcuZXh0ZW5kKHtcbiAgdGVtcGxhdGU6IHRlbXBsYXRlcy5jb25maWd1cmVQYXJ0aXRpb24ucGFydGl0aW9uVGV4dCxcbiAgYmluZGluZ3M6IHtcbiAgICAnbW9kZWwuaXNUZXh0Jzoge1xuICAgICAgdHlwZTogJ3RvZ2dsZScsXG4gICAgICBob29rOiAnZ3JvdXAtdGV4dC1wYW5lbCdcbiAgICB9XG4gIH0sXG4gIGV2ZW50czoge1xuICAgICdjbGljayBbZGF0YS1ob29rfj1ncm91cC1vcmRlci1jb3VudF0nOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLm1vZGVsLm9yZGVyaW5nID0gJ2NvdW50JztcbiAgICAgIHRoaXMucGFyZW50LnJlc2V0RmlsdGVyID0gdHJ1ZTtcbiAgICB9LFxuICAgICdjbGljayBbZGF0YS1ob29rfj1ncm91cC1vcmRlci1hYmNdJzogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5tb2RlbC5vcmRlcmluZyA9ICd2YWx1ZSc7XG4gICAgICB0aGlzLnBhcmVudC5yZXNldEZpbHRlciA9IHRydWU7XG4gICAgfVxuICB9XG59KTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQURBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFSQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///faa4\n")},fdc1:function(module,exports,__webpack_require__){eval("var app = __webpack_require__(/*! ampersand-app */ \"fcbc\");\n\nvar Spot = __webpack_require__(/*! spot-framework */ \"3b07\");\n\nvar BaseWidget = __webpack_require__(/*! ./base-widget */ \"26ef\");\n\nvar Chart = __webpack_require__(/*! chart.js */ \"70b5\");\n\nvar colors = __webpack_require__(/*! ../../colors */ \"eb63\");\n\nvar misval = Spot.util.misval;\n\nvar util = __webpack_require__(/*! ./util */ \"2b41\");\n\nvar BUBBLE_ALPHA = 0.5;\nvar MAX_BUBBLE_SIZE = 50; // in pixels\n\nvar MIN_BUBBLE_SIZE = 5; // in pixels\n\nfunction normalizeGroup(data, key) {\n  var norm;\n  var min = Number.MAX_VALUE;\n  var max = -min;\n  data.forEach(function (group) {\n    if (group.count !== 0) {\n      var val = parseFloat(group[key]) || 0;\n\n      if (val !== misval) {\n        min = min <= val ? min : val;\n        max = max >= val ? max : val;\n      }\n    }\n  });\n\n  if (min === Number.MAX_VALUE) {\n    // no data, no normalization\n    norm = function norm(v) {\n      return 1;\n    };\n  } else if (min < 0 && max > 0) {\n    // bubble radius should always be positive,\n    // so take abs, and normalize by largest of |min| and max\n    min = Math.abs(min);\n    max = max < min ? min : max;\n\n    norm = function norm(v) {\n      return Math.abs(v) / max;\n    };\n  } else if (max > 0 && min >= 0 || max <= 0 && min < 0) {\n    // linear map v from [min, max] to [0,1]\n    norm = function norm(v) {\n      return (v - min) / (max - min);\n    };\n  } else {\n    // not sure if ever reached\n    norm = function norm(v) {\n      return 1;\n    };\n  }\n\n  return norm;\n}\n\nfunction _deinitChart(view) {\n  if (view._chartjs) {\n    view._chartjs.destroy();\n\n    delete view._chartjs;\n  }\n\n  delete view._config;\n  var canvas = view.queryByHook('canvas');\n\n  if (canvas) {\n    view.el.removeChild(canvas);\n  }\n\n  view.isInitialized = false;\n}\n\nfunction _initChart(view) {\n  // Configure plot\n  view._config = view.model.chartjsConfig();\n  var options = view._config.options;\n  var filter = view.model.filter;\n  var partition;\n  var canSelect = true; // configure x-axis\n\n  partition = filter.partitions.get(1, 'rank');\n\n  if (partition.isDatetime) {\n    options.scales.xAxes[0].type = 'time';\n  } else if (partition.isDuration) {\n    options.scales.xAxes[0].type = 'spot-duration';\n  } else if (partition.isContinuous) {\n    if (partition.groupLog) {\n      options.scales.xAxes[0].type = 'logarithmic';\n    } else {\n      options.scales.xAxes[0].type = 'linear';\n    }\n  } else {\n    canSelect = false;\n  }\n\n  options.scales.xAxes[0].scaleLabel = {\n    display: partition.showLabel,\n    labelString: partition.label\n  }; // configure y-axis\n\n  partition = filter.partitions.get(2, 'rank');\n\n  if (partition.isDatetime) {\n    options.scales.yAxes[0].type = 'time';\n  } else if (partition.isDuration) {\n    options.scales.yAxes[0].type = 'spot-duration';\n  } else if (partition.isContinuous) {\n    if (partition.groupLog) {\n      options.scales.yAxes[0].type = 'logarithmic';\n    } else {\n      options.scales.yAxes[0].type = 'linear';\n    }\n  } else {\n    canSelect = false;\n  }\n\n  options.scales.yAxes[0].scaleLabel = {\n    display: partition.showLabel,\n    labelString: partition.label\n  }; // title\n\n  options.title.text = view.model.getTitle(); // user interaction\n\n  if (canSelect) {\n    options.onClick = function (ev, elements) {\n      var partitionA = filter.partitions.get(1, 'rank');\n      var partitionB = filter.partitions.get(2, 'rank');\n\n      if (elements && elements[0]) {\n        // get the clicked-on bubble\n        var index = elements[0]._index;\n        var point = view._config.data.datasets[0].data[index]; // update selection on x-axis\n\n        var groupx = partitionA.groups.models[point.i];\n        partitionA.updateSelection(groupx); // update selection on y-axis\n\n        var groupy = partitionB.groups.models[point.j];\n        partitionB.updateSelection(groupy);\n        view.model.filter.updateDataFilter();\n        app.me.dataview.getData();\n      }\n    };\n  } // force a square full size plot\n\n\n  var width = view.el.offsetWidth;\n  var height = view.el.offsetHeight;\n  var canvas = document.createElement('canvas');\n  canvas.setAttribute('data-hook', 'canvas');\n  view.el.appendChild(canvas);\n  var ctx = canvas.getContext('2d');\n  ctx.canvas.width = width;\n  ctx.canvas.height = height; // Create Chartjs object\n\n  view._chartjs = new Chart(ctx, view._config); // In callbacks on the chart we will need the view, so store a reference\n\n  view._chartjs._Ampersandview = view;\n  view.isInitialized = true;\n}\n\nfunction _update(view) {\n  if (!view.isInitialized) {\n    return;\n  } // Add our data to the plot\n\n\n  updateBubbles(view); // Hand over to Chartjs for actual plotting\n\n  view._chartjs.update();\n}\n\nfunction updateBubbles(view) {\n  var filter = view.model.filter;\n  var chartData = view._config.data;\n  var partitionA = filter.partitions.get(1, 'rank');\n  var partitionB = filter.partitions.get(2, 'rank');\n  chartData.datasets = chartData.datasets || [];\n  chartData.datasets[0] = chartData.datasets[0] || {\n    data: [],\n    error: [],\n    backgroundColor: []\n  }; // find facet names for tooltips\n\n  chartData.datasets[0].spotAxes = {\n    x: partitionA.label,\n    y: partitionB.label\n  };\n  var aggregate;\n  var bubbleColorFn; // normalization function for bubble color\n\n  var bubbleRadiusFn; // normalization function for bubble radius\n\n  var errorXFn;\n  var errorYFn;\n  aggregate = filter.aggregates.get(1, 'rank');\n\n  if (aggregate) {\n    bubbleColorFn = normalizeGroup(filter.data, 'aa');\n    chartData.datasets[0].spotAxes.c = aggregate.operation + ' ' + aggregate.label;\n  }\n\n  aggregate = filter.aggregates.get(2, 'rank');\n\n  if (aggregate) {\n    bubbleRadiusFn = normalizeGroup(filter.data, 'bb');\n    chartData.datasets[0].spotAxes.r = aggregate.operation + ' ' + aggregate.label;\n  }\n\n  view._config.options.errorDir = 'both';\n  aggregate = filter.aggregates.get(3, 'rank');\n\n  if (aggregate) {\n    errorXFn = function errorXFn(group) {\n      return group['cc'];\n    };\n  } else {\n    errorXFn = function errorXFn(group) {\n      return null;\n    };\n\n    view._config.options.errorDir = 'vertical';\n  }\n\n  aggregate = filter.aggregates.get(4, 'rank');\n\n  if (aggregate) {\n    errorYFn = function errorYFn(group) {\n      return group['dd'];\n    };\n  } else {\n    errorYFn = function errorYFn(group) {\n      return null;\n    };\n\n    if (view._config.options.errorDir === 'vertical') {\n      view._config.options.errorDir === 'none';\n    }\n\n    if (view._config.options.errorDir === 'both') {\n      view._config.options.errorDir === 'horizontal';\n    }\n  } // add data\n\n\n  var val;\n  var d = 0;\n  filter.data.forEach(function (group) {\n    var i = util.partitionValueToIndex(partitionA, group.a);\n    var j = util.partitionValueToIndex(partitionB, group.b);\n\n    if (i >= 0 && j >= 0 && group.aa !== misval && group.bb !== misval && group.count !== 0) {\n      // initialize if necessary\n      chartData.datasets[0].data[d] = chartData.datasets[0].data[d] || {};\n      chartData.datasets[0].error[d] = chartData.datasets[0].error[d] || {}; // update position\n\n      if (partitionA.isDatetime || partitionA.isDuration || partitionA.isContinuous) {\n        chartData.datasets[0].data[d].x = partitionA.groups.models[i].value;\n      } else {\n        chartData.datasets[0].data[d].x = i;\n      }\n\n      if (partitionB.isDatetime || partitionB.isDuration || partitionB.isContinuous) {\n        chartData.datasets[0].data[d].y = partitionB.groups.models[j].value;\n      } else {\n        chartData.datasets[0].data[d].y = j;\n      } // update error\n\n\n      chartData.datasets[0].error[d].x = errorXFn(group);\n      chartData.datasets[0].error[d].y = errorYFn(group); // update color\n\n      val = parseFloat(group.aa) || 0;\n\n      if (bubbleColorFn) {\n        chartData.datasets[0].backgroundColor[d] = colors.getColorFloat(bubbleColorFn(val)).alpha(BUBBLE_ALPHA).css();\n      } else {\n        chartData.datasets[0].backgroundColor[d] = colors.getColor(0).alpha(BUBBLE_ALPHA).css();\n      } // update radius\n\n\n      val = parseFloat(group.bb) || 0;\n\n      if (bubbleRadiusFn) {\n        chartData.datasets[0].data[d].r = Math.round(MIN_BUBBLE_SIZE + Math.sqrt(bubbleRadiusFn(val)) * (MAX_BUBBLE_SIZE - MIN_BUBBLE_SIZE));\n      } else {\n        chartData.datasets[0].data[d].r = MIN_BUBBLE_SIZE; // NOTE: in pixels\n      } // store group indexes for onClick callback\n\n\n      chartData.datasets[0].data[d].i = i;\n      chartData.datasets[0].data[d].j = j;\n      chartData.datasets[0].data[d].a = group.a;\n      chartData.datasets[0].data[d].b = group.b;\n      chartData.datasets[0].data[d].aa = group.aa;\n      chartData.datasets[0].data[d].bb = group.bb;\n      chartData.datasets[0].data[d].count = group.count;\n      d++;\n    }\n  }); // remove remaining (unused) points\n\n  var cut = chartData.datasets[0].data.length - d;\n\n  if (cut > 0) {\n    chartData.datasets[0].data.splice(d, cut);\n    chartData.datasets[0].error.splice(d, cut);\n    chartData.datasets[0].backgroundColor.splice(d, cut);\n  } // highlight selected area\n\n\n  if ((partitionA.isDatetime || partitionA.isDuration || partitionA.isContinuous) && (partitionB.isDatetime || partitionB.isDuration || partitionB.isContinuous)) {\n    if (partitionA.selected && partitionA.selected.length > 0) {\n      chartData.datasets[1] = chartData.datasets[1] || {\n        type: 'line',\n        lineTension: 0\n      };\n      chartData.datasets[1].data = [{\n        x: partitionA.selected[0],\n        y: partitionB.selected[0],\n        r: 1\n      }, {\n        x: partitionA.selected[0],\n        y: partitionB.selected[1],\n        r: 1\n      }, {\n        x: partitionA.selected[1],\n        y: partitionB.selected[1],\n        r: 1\n      }, {\n        x: partitionA.selected[1],\n        y: partitionB.selected[0],\n        r: 1\n      }, {\n        x: partitionA.selected[0],\n        y: partitionB.selected[0],\n        r: 1\n      }];\n      chartData.datasets[1].error = [null, null, null, null];\n      chartData.datasets[1].backgroundColor = colors.getColor(1).alpha(BUBBLE_ALPHA).css();\n    } else {\n      chartData.datasets.splice(1, 1);\n    }\n  }\n}\n\nmodule.exports = BaseWidget.extend({\n  template: '<div class=\"widgetInner mdl-card__media\"></div>',\n  update: function update() {\n    _update(this);\n  },\n  initChart: function initChart() {\n    _initChart(this);\n  },\n  deinitChart: function deinitChart() {\n    _deinitChart(this);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmRjMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy93aWRnZXRzL3ZpZXdzL2NoYXJ0anMyZC5qcz85MDhlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBhcHAgPSByZXF1aXJlKCdhbXBlcnNhbmQtYXBwJyk7XG52YXIgU3BvdCA9IHJlcXVpcmUoJ3Nwb3QtZnJhbWV3b3JrJyk7XG52YXIgQmFzZVdpZGdldCA9IHJlcXVpcmUoJy4vYmFzZS13aWRnZXQnKTtcbnZhciBDaGFydCA9IHJlcXVpcmUoJ2NoYXJ0LmpzJyk7XG52YXIgY29sb3JzID0gcmVxdWlyZSgnLi4vLi4vY29sb3JzJyk7XG52YXIgbWlzdmFsID0gU3BvdC51dGlsLm1pc3ZhbDtcbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbnZhciBCVUJCTEVfQUxQSEEgPSAwLjU7XG52YXIgTUFYX0JVQkJMRV9TSVpFID0gNTA7IC8vIGluIHBpeGVsc1xudmFyIE1JTl9CVUJCTEVfU0laRSA9IDU7IC8vIGluIHBpeGVsc1xuXG5mdW5jdGlvbiBub3JtYWxpemVHcm91cCAoZGF0YSwga2V5KSB7XG4gIHZhciBub3JtO1xuICB2YXIgbWluID0gTnVtYmVyLk1BWF9WQUxVRTtcbiAgdmFyIG1heCA9IC1taW47XG4gIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICBpZiAoZ3JvdXAuY291bnQgIT09IDApIHtcbiAgICAgIHZhciB2YWwgPSBwYXJzZUZsb2F0KGdyb3VwW2tleV0pIHx8IDA7XG4gICAgICBpZiAodmFsICE9PSBtaXN2YWwpIHtcbiAgICAgICAgbWluID0gbWluIDw9IHZhbCA/IG1pbiA6IHZhbDtcbiAgICAgICAgbWF4ID0gbWF4ID49IHZhbCA/IG1heCA6IHZhbDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIGlmIChtaW4gPT09IE51bWJlci5NQVhfVkFMVUUpIHtcbiAgICAvLyBubyBkYXRhLCBubyBub3JtYWxpemF0aW9uXG4gICAgbm9ybSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiAxOyB9O1xuICB9IGVsc2UgaWYgKG1pbiA8IDAgJiYgbWF4ID4gMCkge1xuICAgIC8vIGJ1YmJsZSByYWRpdXMgc2hvdWxkIGFsd2F5cyBiZSBwb3NpdGl2ZSxcbiAgICAvLyBzbyB0YWtlIGFicywgYW5kIG5vcm1hbGl6ZSBieSBsYXJnZXN0IG9mIHxtaW58IGFuZCBtYXhcbiAgICBtaW4gPSBNYXRoLmFicyhtaW4pO1xuICAgIG1heCA9IG1heCA8IG1pbiA/IG1pbiA6IG1heDtcbiAgICBub3JtID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgIHJldHVybiBNYXRoLmFicyh2KSAvIG1heDtcbiAgICB9O1xuICB9IGVsc2UgaWYgKChtYXggPiAwICYmIG1pbiA+PSAwKSB8fCAobWF4IDw9IDAgJiYgbWluIDwgMCkpIHtcbiAgICAvLyBsaW5lYXIgbWFwIHYgZnJvbSBbbWluLCBtYXhdIHRvIFswLDFdXG4gICAgbm9ybSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICByZXR1cm4gKHYgLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBub3Qgc3VyZSBpZiBldmVyIHJlYWNoZWRcbiAgICBub3JtID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIDE7IH07XG4gIH1cbiAgcmV0dXJuIG5vcm07XG59XG5cbmZ1bmN0aW9uIGRlaW5pdENoYXJ0ICh2aWV3KSB7XG4gIGlmICh2aWV3Ll9jaGFydGpzKSB7XG4gICAgdmlldy5fY2hhcnRqcy5kZXN0cm95KCk7XG4gICAgZGVsZXRlIHZpZXcuX2NoYXJ0anM7XG4gIH1cbiAgZGVsZXRlIHZpZXcuX2NvbmZpZztcblxuICB2YXIgY2FudmFzID0gdmlldy5xdWVyeUJ5SG9vaygnY2FudmFzJyk7XG4gIGlmIChjYW52YXMpIHtcbiAgICB2aWV3LmVsLnJlbW92ZUNoaWxkKGNhbnZhcyk7XG4gIH1cbiAgdmlldy5pc0luaXRpYWxpemVkID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGluaXRDaGFydCAodmlldykge1xuICAvLyBDb25maWd1cmUgcGxvdFxuICB2aWV3Ll9jb25maWcgPSB2aWV3Lm1vZGVsLmNoYXJ0anNDb25maWcoKTtcbiAgdmFyIG9wdGlvbnMgPSB2aWV3Ll9jb25maWcub3B0aW9ucztcblxuICB2YXIgZmlsdGVyID0gdmlldy5tb2RlbC5maWx0ZXI7XG4gIHZhciBwYXJ0aXRpb247XG5cbiAgdmFyIGNhblNlbGVjdCA9IHRydWU7XG5cbiAgLy8gY29uZmlndXJlIHgtYXhpc1xuICBwYXJ0aXRpb24gPSBmaWx0ZXIucGFydGl0aW9ucy5nZXQoMSwgJ3JhbmsnKTtcblxuICBpZiAocGFydGl0aW9uLmlzRGF0ZXRpbWUpIHtcbiAgICBvcHRpb25zLnNjYWxlcy54QXhlc1swXS50eXBlID0gJ3RpbWUnO1xuICB9IGVsc2UgaWYgKHBhcnRpdGlvbi5pc0R1cmF0aW9uKSB7XG4gICAgb3B0aW9ucy5zY2FsZXMueEF4ZXNbMF0udHlwZSA9ICdzcG90LWR1cmF0aW9uJztcbiAgfSBlbHNlIGlmIChwYXJ0aXRpb24uaXNDb250aW51b3VzKSB7XG4gICAgaWYgKHBhcnRpdGlvbi5ncm91cExvZykge1xuICAgICAgb3B0aW9ucy5zY2FsZXMueEF4ZXNbMF0udHlwZSA9ICdsb2dhcml0aG1pYyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMuc2NhbGVzLnhBeGVzWzBdLnR5cGUgPSAnbGluZWFyJztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY2FuU2VsZWN0ID0gZmFsc2U7XG4gIH1cbiAgb3B0aW9ucy5zY2FsZXMueEF4ZXNbMF0uc2NhbGVMYWJlbCA9IHtcbiAgICBkaXNwbGF5OiBwYXJ0aXRpb24uc2hvd0xhYmVsLFxuICAgIGxhYmVsU3RyaW5nOiBwYXJ0aXRpb24ubGFiZWxcbiAgfTtcblxuICAvLyBjb25maWd1cmUgeS1heGlzXG4gIHBhcnRpdGlvbiA9IGZpbHRlci5wYXJ0aXRpb25zLmdldCgyLCAncmFuaycpO1xuXG4gIGlmIChwYXJ0aXRpb24uaXNEYXRldGltZSkge1xuICAgIG9wdGlvbnMuc2NhbGVzLnlBeGVzWzBdLnR5cGUgPSAndGltZSc7XG4gIH0gZWxzZSBpZiAocGFydGl0aW9uLmlzRHVyYXRpb24pIHtcbiAgICBvcHRpb25zLnNjYWxlcy55QXhlc1swXS50eXBlID0gJ3Nwb3QtZHVyYXRpb24nO1xuICB9IGVsc2UgaWYgKHBhcnRpdGlvbi5pc0NvbnRpbnVvdXMpIHtcbiAgICBpZiAocGFydGl0aW9uLmdyb3VwTG9nKSB7XG4gICAgICBvcHRpb25zLnNjYWxlcy55QXhlc1swXS50eXBlID0gJ2xvZ2FyaXRobWljJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucy5zY2FsZXMueUF4ZXNbMF0udHlwZSA9ICdsaW5lYXInO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjYW5TZWxlY3QgPSBmYWxzZTtcbiAgfVxuICBvcHRpb25zLnNjYWxlcy55QXhlc1swXS5zY2FsZUxhYmVsID0ge1xuICAgIGRpc3BsYXk6IHBhcnRpdGlvbi5zaG93TGFiZWwsXG4gICAgbGFiZWxTdHJpbmc6IHBhcnRpdGlvbi5sYWJlbFxuICB9O1xuXG4gIC8vIHRpdGxlXG4gIG9wdGlvbnMudGl0bGUudGV4dCA9IHZpZXcubW9kZWwuZ2V0VGl0bGUoKTtcblxuICAvLyB1c2VyIGludGVyYWN0aW9uXG4gIGlmIChjYW5TZWxlY3QpIHtcbiAgICBvcHRpb25zLm9uQ2xpY2sgPSBmdW5jdGlvbiAoZXYsIGVsZW1lbnRzKSB7XG4gICAgICB2YXIgcGFydGl0aW9uQSA9IGZpbHRlci5wYXJ0aXRpb25zLmdldCgxLCAncmFuaycpO1xuICAgICAgdmFyIHBhcnRpdGlvbkIgPSBmaWx0ZXIucGFydGl0aW9ucy5nZXQoMiwgJ3JhbmsnKTtcblxuICAgICAgaWYgKGVsZW1lbnRzICYmIGVsZW1lbnRzWzBdKSB7XG4gICAgICAgIC8vIGdldCB0aGUgY2xpY2tlZC1vbiBidWJibGVcbiAgICAgICAgdmFyIGluZGV4ID0gZWxlbWVudHNbMF0uX2luZGV4O1xuICAgICAgICB2YXIgcG9pbnQgPSB2aWV3Ll9jb25maWcuZGF0YS5kYXRhc2V0c1swXS5kYXRhW2luZGV4XTtcblxuICAgICAgICAvLyB1cGRhdGUgc2VsZWN0aW9uIG9uIHgtYXhpc1xuICAgICAgICB2YXIgZ3JvdXB4ID0gcGFydGl0aW9uQS5ncm91cHMubW9kZWxzW3BvaW50LmldO1xuICAgICAgICBwYXJ0aXRpb25BLnVwZGF0ZVNlbGVjdGlvbihncm91cHgpO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBzZWxlY3Rpb24gb24geS1heGlzXG4gICAgICAgIHZhciBncm91cHkgPSBwYXJ0aXRpb25CLmdyb3Vwcy5tb2RlbHNbcG9pbnQual07XG4gICAgICAgIHBhcnRpdGlvbkIudXBkYXRlU2VsZWN0aW9uKGdyb3VweSk7XG5cbiAgICAgICAgdmlldy5tb2RlbC5maWx0ZXIudXBkYXRlRGF0YUZpbHRlcigpO1xuICAgICAgICBhcHAubWUuZGF0YXZpZXcuZ2V0RGF0YSgpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvLyBmb3JjZSBhIHNxdWFyZSBmdWxsIHNpemUgcGxvdFxuICB2YXIgd2lkdGggPSB2aWV3LmVsLm9mZnNldFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gdmlldy5lbC5vZmZzZXRIZWlnaHQ7XG5cbiAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICBjYW52YXMuc2V0QXR0cmlidXRlKCdkYXRhLWhvb2snLCAnY2FudmFzJyk7XG4gIHZpZXcuZWwuYXBwZW5kQ2hpbGQoY2FudmFzKTtcblxuICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gIGN0eC5jYW52YXMud2lkdGggPSB3aWR0aDtcbiAgY3R4LmNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG5cbiAgLy8gQ3JlYXRlIENoYXJ0anMgb2JqZWN0XG4gIHZpZXcuX2NoYXJ0anMgPSBuZXcgQ2hhcnQoY3R4LCB2aWV3Ll9jb25maWcpO1xuXG4gIC8vIEluIGNhbGxiYWNrcyBvbiB0aGUgY2hhcnQgd2Ugd2lsbCBuZWVkIHRoZSB2aWV3LCBzbyBzdG9yZSBhIHJlZmVyZW5jZVxuICB2aWV3Ll9jaGFydGpzLl9BbXBlcnNhbmR2aWV3ID0gdmlldztcblxuICB2aWV3LmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUgKHZpZXcpIHtcbiAgaWYgKCF2aWV3LmlzSW5pdGlhbGl6ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBBZGQgb3VyIGRhdGEgdG8gdGhlIHBsb3RcbiAgdXBkYXRlQnViYmxlcyh2aWV3KTtcblxuICAvLyBIYW5kIG92ZXIgdG8gQ2hhcnRqcyBmb3IgYWN0dWFsIHBsb3R0aW5nXG4gIHZpZXcuX2NoYXJ0anMudXBkYXRlKCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUJ1YmJsZXMgKHZpZXcpIHtcbiAgdmFyIGZpbHRlciA9IHZpZXcubW9kZWwuZmlsdGVyO1xuICB2YXIgY2hhcnREYXRhID0gdmlldy5fY29uZmlnLmRhdGE7XG5cbiAgdmFyIHBhcnRpdGlvbkEgPSBmaWx0ZXIucGFydGl0aW9ucy5nZXQoMSwgJ3JhbmsnKTtcbiAgdmFyIHBhcnRpdGlvbkIgPSBmaWx0ZXIucGFydGl0aW9ucy5nZXQoMiwgJ3JhbmsnKTtcblxuICBjaGFydERhdGEuZGF0YXNldHMgPSBjaGFydERhdGEuZGF0YXNldHMgfHwgW107XG4gIGNoYXJ0RGF0YS5kYXRhc2V0c1swXSA9IGNoYXJ0RGF0YS5kYXRhc2V0c1swXSB8fCB7IGRhdGE6IFtdLCBlcnJvcjogW10sIGJhY2tncm91bmRDb2xvcjogW10gfTtcblxuICAvLyBmaW5kIGZhY2V0IG5hbWVzIGZvciB0b29sdGlwc1xuICBjaGFydERhdGEuZGF0YXNldHNbMF0uc3BvdEF4ZXMgPSB7XG4gICAgeDogcGFydGl0aW9uQS5sYWJlbCxcbiAgICB5OiBwYXJ0aXRpb25CLmxhYmVsXG4gIH07XG5cbiAgdmFyIGFnZ3JlZ2F0ZTtcbiAgdmFyIGJ1YmJsZUNvbG9yRm47IC8vIG5vcm1hbGl6YXRpb24gZnVuY3Rpb24gZm9yIGJ1YmJsZSBjb2xvclxuICB2YXIgYnViYmxlUmFkaXVzRm47IC8vIG5vcm1hbGl6YXRpb24gZnVuY3Rpb24gZm9yIGJ1YmJsZSByYWRpdXNcbiAgdmFyIGVycm9yWEZuO1xuICB2YXIgZXJyb3JZRm47XG5cbiAgYWdncmVnYXRlID0gZmlsdGVyLmFnZ3JlZ2F0ZXMuZ2V0KDEsICdyYW5rJyk7XG4gIGlmIChhZ2dyZWdhdGUpIHtcbiAgICBidWJibGVDb2xvckZuID0gbm9ybWFsaXplR3JvdXAoZmlsdGVyLmRhdGEsICdhYScpO1xuICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1swXS5zcG90QXhlcy5jID0gYWdncmVnYXRlLm9wZXJhdGlvbiArICcgJyArIGFnZ3JlZ2F0ZS5sYWJlbDtcbiAgfVxuXG4gIGFnZ3JlZ2F0ZSA9IGZpbHRlci5hZ2dyZWdhdGVzLmdldCgyLCAncmFuaycpO1xuICBpZiAoYWdncmVnYXRlKSB7XG4gICAgYnViYmxlUmFkaXVzRm4gPSBub3JtYWxpemVHcm91cChmaWx0ZXIuZGF0YSwgJ2JiJyk7XG4gICAgY2hhcnREYXRhLmRhdGFzZXRzWzBdLnNwb3RBeGVzLnIgPSBhZ2dyZWdhdGUub3BlcmF0aW9uICsgJyAnICsgYWdncmVnYXRlLmxhYmVsO1xuICB9XG5cbiAgdmlldy5fY29uZmlnLm9wdGlvbnMuZXJyb3JEaXIgPSAnYm90aCc7XG4gIGFnZ3JlZ2F0ZSA9IGZpbHRlci5hZ2dyZWdhdGVzLmdldCgzLCAncmFuaycpO1xuICBpZiAoYWdncmVnYXRlKSB7XG4gICAgZXJyb3JYRm4gPSBmdW5jdGlvbiAoZ3JvdXApIHsgcmV0dXJuIGdyb3VwWydjYyddOyB9O1xuICB9IGVsc2Uge1xuICAgIGVycm9yWEZuID0gZnVuY3Rpb24gKGdyb3VwKSB7IHJldHVybiBudWxsOyB9O1xuICAgIHZpZXcuX2NvbmZpZy5vcHRpb25zLmVycm9yRGlyID0gJ3ZlcnRpY2FsJztcbiAgfVxuXG4gIGFnZ3JlZ2F0ZSA9IGZpbHRlci5hZ2dyZWdhdGVzLmdldCg0LCAncmFuaycpO1xuICBpZiAoYWdncmVnYXRlKSB7XG4gICAgZXJyb3JZRm4gPSBmdW5jdGlvbiAoZ3JvdXApIHsgcmV0dXJuIGdyb3VwWydkZCddOyB9O1xuICB9IGVsc2Uge1xuICAgIGVycm9yWUZuID0gZnVuY3Rpb24gKGdyb3VwKSB7IHJldHVybiBudWxsOyB9O1xuICAgIGlmICh2aWV3Ll9jb25maWcub3B0aW9ucy5lcnJvckRpciA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgdmlldy5fY29uZmlnLm9wdGlvbnMuZXJyb3JEaXIgPT09ICdub25lJztcbiAgICB9XG4gICAgaWYgKHZpZXcuX2NvbmZpZy5vcHRpb25zLmVycm9yRGlyID09PSAnYm90aCcpIHtcbiAgICAgIHZpZXcuX2NvbmZpZy5vcHRpb25zLmVycm9yRGlyID09PSAnaG9yaXpvbnRhbCc7XG4gICAgfVxuICB9XG5cbiAgLy8gYWRkIGRhdGFcbiAgdmFyIHZhbDtcbiAgdmFyIGQgPSAwO1xuICBmaWx0ZXIuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChncm91cCkge1xuICAgIHZhciBpID0gdXRpbC5wYXJ0aXRpb25WYWx1ZVRvSW5kZXgocGFydGl0aW9uQSwgZ3JvdXAuYSk7XG4gICAgdmFyIGogPSB1dGlsLnBhcnRpdGlvblZhbHVlVG9JbmRleChwYXJ0aXRpb25CLCBncm91cC5iKTtcblxuICAgIGlmIChpID49IDAgJiYgaiA+PSAwICYmIGdyb3VwLmFhICE9PSBtaXN2YWwgJiYgZ3JvdXAuYmIgIT09IG1pc3ZhbCAmJiBncm91cC5jb3VudCAhPT0gMCkge1xuICAgICAgLy8gaW5pdGlhbGl6ZSBpZiBuZWNlc3NhcnlcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1swXS5kYXRhW2RdID0gY2hhcnREYXRhLmRhdGFzZXRzWzBdLmRhdGFbZF0gfHwge307XG4gICAgICBjaGFydERhdGEuZGF0YXNldHNbMF0uZXJyb3JbZF0gPSBjaGFydERhdGEuZGF0YXNldHNbMF0uZXJyb3JbZF0gfHwge307XG5cbiAgICAgIC8vIHVwZGF0ZSBwb3NpdGlvblxuICAgICAgaWYgKHBhcnRpdGlvbkEuaXNEYXRldGltZSB8fCBwYXJ0aXRpb25BLmlzRHVyYXRpb24gfHwgcGFydGl0aW9uQS5pc0NvbnRpbnVvdXMpIHtcbiAgICAgICAgY2hhcnREYXRhLmRhdGFzZXRzWzBdLmRhdGFbZF0ueCA9IHBhcnRpdGlvbkEuZ3JvdXBzLm1vZGVsc1tpXS52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1swXS5kYXRhW2RdLnggPSBpO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFydGl0aW9uQi5pc0RhdGV0aW1lIHx8IHBhcnRpdGlvbkIuaXNEdXJhdGlvbiB8fCBwYXJ0aXRpb25CLmlzQ29udGludW91cykge1xuICAgICAgICBjaGFydERhdGEuZGF0YXNldHNbMF0uZGF0YVtkXS55ID0gcGFydGl0aW9uQi5ncm91cHMubW9kZWxzW2pdLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhcnREYXRhLmRhdGFzZXRzWzBdLmRhdGFbZF0ueSA9IGo7XG4gICAgICB9XG5cbiAgICAgIC8vIHVwZGF0ZSBlcnJvclxuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzWzBdLmVycm9yW2RdLnggPSBlcnJvclhGbihncm91cCk7XG4gICAgICBjaGFydERhdGEuZGF0YXNldHNbMF0uZXJyb3JbZF0ueSA9IGVycm9yWUZuKGdyb3VwKTtcblxuICAgICAgLy8gdXBkYXRlIGNvbG9yXG4gICAgICB2YWwgPSBwYXJzZUZsb2F0KGdyb3VwLmFhKSB8fCAwO1xuICAgICAgaWYgKGJ1YmJsZUNvbG9yRm4pIHtcbiAgICAgICAgY2hhcnREYXRhLmRhdGFzZXRzWzBdLmJhY2tncm91bmRDb2xvcltkXSA9IGNvbG9ycy5nZXRDb2xvckZsb2F0KGJ1YmJsZUNvbG9yRm4odmFsKSkuYWxwaGEoQlVCQkxFX0FMUEhBKS5jc3MoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1swXS5iYWNrZ3JvdW5kQ29sb3JbZF0gPSBjb2xvcnMuZ2V0Q29sb3IoMCkuYWxwaGEoQlVCQkxFX0FMUEhBKS5jc3MoKTtcbiAgICAgIH1cblxuICAgICAgLy8gdXBkYXRlIHJhZGl1c1xuICAgICAgdmFsID0gcGFyc2VGbG9hdChncm91cC5iYikgfHwgMDtcbiAgICAgIGlmIChidWJibGVSYWRpdXNGbikge1xuICAgICAgICBjaGFydERhdGEuZGF0YXNldHNbMF0uZGF0YVtkXS5yID0gTWF0aC5yb3VuZChNSU5fQlVCQkxFX1NJWkUgKyBNYXRoLnNxcnQoYnViYmxlUmFkaXVzRm4odmFsKSkgKiAoTUFYX0JVQkJMRV9TSVpFIC0gTUlOX0JVQkJMRV9TSVpFKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGFydERhdGEuZGF0YXNldHNbMF0uZGF0YVtkXS5yID0gTUlOX0JVQkJMRV9TSVpFOyAvLyBOT1RFOiBpbiBwaXhlbHNcbiAgICAgIH1cblxuICAgICAgLy8gc3RvcmUgZ3JvdXAgaW5kZXhlcyBmb3Igb25DbGljayBjYWxsYmFja1xuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzWzBdLmRhdGFbZF0uaSA9IGk7XG4gICAgICBjaGFydERhdGEuZGF0YXNldHNbMF0uZGF0YVtkXS5qID0gajtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1swXS5kYXRhW2RdLmEgPSBncm91cC5hO1xuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzWzBdLmRhdGFbZF0uYiA9IGdyb3VwLmI7XG4gICAgICBjaGFydERhdGEuZGF0YXNldHNbMF0uZGF0YVtkXS5hYSA9IGdyb3VwLmFhO1xuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzWzBdLmRhdGFbZF0uYmIgPSBncm91cC5iYjtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1swXS5kYXRhW2RdLmNvdW50ID0gZ3JvdXAuY291bnQ7XG4gICAgICBkKys7XG4gICAgfVxuICB9KTtcblxuICAvLyByZW1vdmUgcmVtYWluaW5nICh1bnVzZWQpIHBvaW50c1xuICB2YXIgY3V0ID0gY2hhcnREYXRhLmRhdGFzZXRzWzBdLmRhdGEubGVuZ3RoIC0gZDtcbiAgaWYgKGN1dCA+IDApIHtcbiAgICBjaGFydERhdGEuZGF0YXNldHNbMF0uZGF0YS5zcGxpY2UoZCwgY3V0KTtcbiAgICBjaGFydERhdGEuZGF0YXNldHNbMF0uZXJyb3Iuc3BsaWNlKGQsIGN1dCk7XG4gICAgY2hhcnREYXRhLmRhdGFzZXRzWzBdLmJhY2tncm91bmRDb2xvci5zcGxpY2UoZCwgY3V0KTtcbiAgfVxuXG4gIC8vIGhpZ2hsaWdodCBzZWxlY3RlZCBhcmVhXG4gIGlmIChcbiAgICAocGFydGl0aW9uQS5pc0RhdGV0aW1lIHx8IHBhcnRpdGlvbkEuaXNEdXJhdGlvbiB8fCBwYXJ0aXRpb25BLmlzQ29udGludW91cykgJiZcbiAgICAocGFydGl0aW9uQi5pc0RhdGV0aW1lIHx8IHBhcnRpdGlvbkIuaXNEdXJhdGlvbiB8fCBwYXJ0aXRpb25CLmlzQ29udGludW91cykpIHtcbiAgICBpZiAocGFydGl0aW9uQS5zZWxlY3RlZCAmJiBwYXJ0aXRpb25BLnNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNoYXJ0RGF0YS5kYXRhc2V0c1sxXSA9IGNoYXJ0RGF0YS5kYXRhc2V0c1sxXSB8fCB7XG4gICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgbGluZVRlbnNpb246IDBcbiAgICAgIH07XG4gICAgICBjaGFydERhdGEuZGF0YXNldHNbMV0uZGF0YSA9IFtcbiAgICAgICAgeyB4OiBwYXJ0aXRpb25BLnNlbGVjdGVkWzBdLCB5OiBwYXJ0aXRpb25CLnNlbGVjdGVkWzBdLCByOiAxIH0sXG4gICAgICAgIHsgeDogcGFydGl0aW9uQS5zZWxlY3RlZFswXSwgeTogcGFydGl0aW9uQi5zZWxlY3RlZFsxXSwgcjogMSB9LFxuICAgICAgICB7IHg6IHBhcnRpdGlvbkEuc2VsZWN0ZWRbMV0sIHk6IHBhcnRpdGlvbkIuc2VsZWN0ZWRbMV0sIHI6IDEgfSxcbiAgICAgICAgeyB4OiBwYXJ0aXRpb25BLnNlbGVjdGVkWzFdLCB5OiBwYXJ0aXRpb25CLnNlbGVjdGVkWzBdLCByOiAxIH0sXG4gICAgICAgIHsgeDogcGFydGl0aW9uQS5zZWxlY3RlZFswXSwgeTogcGFydGl0aW9uQi5zZWxlY3RlZFswXSwgcjogMSB9XG4gICAgICBdO1xuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzWzFdLmVycm9yID0gW251bGwsIG51bGwsIG51bGwsIG51bGxdO1xuICAgICAgY2hhcnREYXRhLmRhdGFzZXRzWzFdLmJhY2tncm91bmRDb2xvciA9IGNvbG9ycy5nZXRDb2xvcigxKS5hbHBoYShCVUJCTEVfQUxQSEEpLmNzcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGFydERhdGEuZGF0YXNldHMuc3BsaWNlKDEsIDEpO1xuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEJhc2VXaWRnZXQuZXh0ZW5kKHtcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwid2lkZ2V0SW5uZXIgbWRsLWNhcmRfX21lZGlhXCI+PC9kaXY+JyxcblxuICB1cGRhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICB1cGRhdGUodGhpcyk7XG4gIH0sXG5cbiAgaW5pdENoYXJ0OiBmdW5jdGlvbiAoKSB7XG4gICAgaW5pdENoYXJ0KHRoaXMpO1xuICB9LFxuXG4gIGRlaW5pdENoYXJ0OiBmdW5jdGlvbiAoKSB7XG4gICAgZGVpbml0Q2hhcnQodGhpcyk7XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFGQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQWJBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///fdc1\n")}},[[0,"runtime","npm.core-js","npm.lodash","npm.spot-framework","npm.chart.js","npm.readable-stream","npm.es-abstract","npm.qs","npm.string.prototype.trim","npm.webpack","npm.sigma","npm.moment-timezone","npm.object-keys","npm.ampersand-events","npm.ampersand-router","npm.ampersand-sync","npm.babel-polyfill","npm.closest","npm.color-convert","npm.es-to-primitive","npm.function-bind","npm.has-binary","npm.node-libs-browser","npm.util","npm.after","npm.ampersand-app","npm.ampersand-class-extend","npm.ampersand-collection-view","npm.ampersand-collection","npm.ampersand-dom-bindings","npm.ampersand-dom","npm.ampersand-model","npm.ampersand-state","npm.ampersand-view-switcher","npm.ampersand-view","npm.array-next","npm.backo2","npm.base64-arraybuffer","npm.base64-js","npm.buffer","npm.chartjs-color-string","npm.chartjs-color","npm.chroma-js","npm.color-name","npm.component-bind","npm.component-emitter","npm.component-event","npm.component-inherit","npm.core-util-is","npm.csv-generate","npm.csv-parse","npm.csv-stringify","npm.csv","npm.define-properties","npm.delegate-events","npm.dialog-polyfill","npm.domify","npm.domready","npm.events-mixin","npm.events","npm.file-saver","npm.for-each","npm.global","npm.gridster","npm.has-cors","npm.has","npm.ieee754","npm.indexof","npm.inherits","npm.intro.js","npm.is-callable","npm.is-function","npm.isarray","npm.jquery","npm.json3","npm.key-tree-store","npm.local-links","npm.lodash.get","npm.matches-selector","npm.material-design-lite","npm.media-type","npm.moment","npm.parse-headers","npm.parsejson","npm.parseqs","npm.parseuri","npm.process-nextick-args","npm.process","npm.safe-buffer","npm.setimmediate","npm.sortablejs","npm.stream-browserify","npm.stream-transform","npm.timers-browserify","npm.to-array","npm.util-deprecate","npm.vis","npm.wtf-8","npm.xhr","npm.xtend","npm.yeast"]]]);