dygraphs
Version:
dygraphs is a fast, flexible open source JavaScript charting library.
123 lines (122 loc) • 16.7 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var DygraphTickers = _interopRequireWildcard(require("./dygraph-tickers"));
var _dygraphInteractionModel = _interopRequireDefault(require("./dygraph-interaction-model"));
var _dygraphCanvas = _interopRequireDefault(require("./dygraph-canvas"));
var utils = _interopRequireWildcard(require("./dygraph-utils"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
// Default attribute values.
var DEFAULT_ATTRS = {
highlightCircleSize: 3,
highlightSeriesOpts: null,
highlightSeriesBackgroundAlpha: 0.5,
highlightSeriesBackgroundColor: 'rgb(255, 255, 255)',
labelsSeparateLines: false,
labelsShowZeroValues: true,
labelsKMB: false,
labelsKMG2: false,
showLabelsOnHighlight: true,
digitsAfterDecimal: 2,
maxNumberWidth: 6,
sigFigs: null,
strokeWidth: 1.0,
strokeBorderWidth: 0,
strokeBorderColor: "white",
axisTickSize: 3,
axisLabelFontSize: 14,
rightGap: 5,
showRoller: false,
xValueParser: undefined,
delimiter: ',',
sigma: 2.0,
errorBars: false,
fractions: false,
wilsonInterval: true,
// only relevant if fractions is true
customBars: false,
fillGraph: false,
fillAlpha: 0.15,
connectSeparatedPoints: false,
stackedGraph: false,
stackedGraphNaNFill: 'all',
hideOverlayOnMouseOut: true,
resizable: 'no',
legend: 'onmouseover',
legendFollowOffsetX: 50,
legendFollowOffsetY: -50,
stepPlot: false,
xRangePad: 0,
yRangePad: null,
drawAxesAtZero: false,
// Sizes of the various chart labels.
titleHeight: 28,
xLabelHeight: 18,
yLabelWidth: 18,
axisLineColor: "black",
axisLineWidth: 0.3,
gridLineWidth: 0.3,
axisLabelWidth: 50,
gridLineColor: "rgb(128,128,128)",
interactionModel: _dygraphInteractionModel["default"].defaultModel,
animatedZooms: false,
// (for now)
animateBackgroundFade: true,
// Range selector options
showRangeSelector: false,
rangeSelectorHeight: 40,
rangeSelectorPlotStrokeColor: "#808FAB",
rangeSelectorPlotFillGradientColor: "white",
rangeSelectorPlotFillColor: "#A7B1C4",
rangeSelectorBackgroundStrokeColor: "gray",
rangeSelectorBackgroundLineWidth: 1,
rangeSelectorPlotLineWidth: 1.5,
rangeSelectorForegroundStrokeColor: "black",
rangeSelectorForegroundLineWidth: 1,
rangeSelectorAlpha: 0.6,
showInRangeSelector: null,
// The ordering here ensures that central lines always appear above any
// fill bars/error bars.
plotter: [_dygraphCanvas["default"]._fillPlotter, _dygraphCanvas["default"]._errorPlotter, _dygraphCanvas["default"]._linePlotter],
plugins: [],
// per-axis options
axes: {
x: {
pixelsPerLabel: 70,
axisLabelWidth: 60,
axisLabelFormatter: utils.dateAxisLabelFormatter,
valueFormatter: utils.dateValueFormatter,
drawGrid: true,
drawAxis: true,
independentTicks: true,
ticker: DygraphTickers.dateTicker
},
y: {
axisLabelWidth: 50,
pixelsPerLabel: 30,
valueFormatter: utils.numberValueFormatter,
axisLabelFormatter: utils.numberAxisLabelFormatter,
drawGrid: true,
drawAxis: true,
independentTicks: true,
ticker: DygraphTickers.numericTicks
},
y2: {
axisLabelWidth: 50,
pixelsPerLabel: 30,
valueFormatter: utils.numberValueFormatter,
axisLabelFormatter: utils.numberAxisLabelFormatter,
drawAxis: true,
// only applies when there are two axes of data.
drawGrid: false,
independentTicks: false,
ticker: DygraphTickers.numericTicks
}
}
};
var _default = exports["default"] = DEFAULT_ATTRS;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIkR5Z3JhcGhUaWNrZXJzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2R5Z3JhcGhJbnRlcmFjdGlvbk1vZGVsIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9keWdyYXBoQ2FudmFzIiwidXRpbHMiLCJlIiwiX19lc01vZHVsZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkRFRkFVTFRfQVRUUlMiLCJoaWdobGlnaHRDaXJjbGVTaXplIiwiaGlnaGxpZ2h0U2VyaWVzT3B0cyIsImhpZ2hsaWdodFNlcmllc0JhY2tncm91bmRBbHBoYSIsImhpZ2hsaWdodFNlcmllc0JhY2tncm91bmRDb2xvciIsImxhYmVsc1NlcGFyYXRlTGluZXMiLCJsYWJlbHNTaG93WmVyb1ZhbHVlcyIsImxhYmVsc0tNQiIsImxhYmVsc0tNRzIiLCJzaG93TGFiZWxzT25IaWdobGlnaHQiLCJkaWdpdHNBZnRlckRlY2ltYWwiLCJtYXhOdW1iZXJXaWR0aCIsInNpZ0ZpZ3MiLCJzdHJva2VXaWR0aCIsInN0cm9rZUJvcmRlcldpZHRoIiwic3Ryb2tlQm9yZGVyQ29sb3IiLCJheGlzVGlja1NpemUiLCJheGlzTGFiZWxGb250U2l6ZSIsInJpZ2h0R2FwIiwic2hvd1JvbGxlciIsInhWYWx1ZVBhcnNlciIsInVuZGVmaW5lZCIsImRlbGltaXRlciIsInNpZ21hIiwiZXJyb3JCYXJzIiwiZnJhY3Rpb25zIiwid2lsc29uSW50ZXJ2YWwiLCJjdXN0b21CYXJzIiwiZmlsbEdyYXBoIiwiZmlsbEFscGhhIiwiY29ubmVjdFNlcGFyYXRlZFBvaW50cyIsInN0YWNrZWRHcmFwaCIsInN0YWNrZWRHcmFwaE5hTkZpbGwiLCJoaWRlT3ZlcmxheU9uTW91c2VPdXQiLCJyZXNpemFibGUiLCJsZWdlbmQiLCJsZWdlbmRGb2xsb3dPZmZzZXRYIiwibGVnZW5kRm9sbG93T2Zmc2V0WSIsInN0ZXBQbG90IiwieFJhbmdlUGFkIiwieVJhbmdlUGFkIiwiZHJhd0F4ZXNBdFplcm8iLCJ0aXRsZUhlaWdodCIsInhMYWJlbEhlaWdodCIsInlMYWJlbFdpZHRoIiwiYXhpc0xpbmVDb2xvciIsImF4aXNMaW5lV2lkdGgiLCJncmlkTGluZVdpZHRoIiwiYXhpc0xhYmVsV2lkdGgiLCJncmlkTGluZUNvbG9yIiwiaW50ZXJhY3Rpb25Nb2RlbCIsIkR5Z3JhcGhJbnRlcmFjdGlvbiIsImRlZmF1bHRNb2RlbCIsImFuaW1hdGVkWm9vbXMiLCJhbmltYXRlQmFja2dyb3VuZEZhZGUiLCJzaG93UmFuZ2VTZWxlY3RvciIsInJhbmdlU2VsZWN0b3JIZWlnaHQiLCJyYW5nZVNlbGVjdG9yUGxvdFN0cm9rZUNvbG9yIiwicmFuZ2VTZWxlY3RvclBsb3RGaWxsR3JhZGllbnRDb2xvciIsInJhbmdlU2VsZWN0b3JQbG90RmlsbENvbG9yIiwicmFuZ2VTZWxlY3RvckJhY2tncm91bmRTdHJva2VDb2xvciIsInJhbmdlU2VsZWN0b3JCYWNrZ3JvdW5kTGluZVdpZHRoIiwicmFuZ2VTZWxlY3RvclBsb3RMaW5lV2lkdGgiLCJyYW5nZVNlbGVjdG9yRm9yZWdyb3VuZFN0cm9rZUNvbG9yIiwicmFuZ2VTZWxlY3RvckZvcmVncm91bmRMaW5lV2lkdGgiLCJyYW5nZVNlbGVjdG9yQWxwaGEiLCJzaG93SW5SYW5nZVNlbGVjdG9yIiwicGxvdHRlciIsIkR5Z3JhcGhDYW52YXNSZW5kZXJlciIsIl9maWxsUGxvdHRlciIsIl9lcnJvclBsb3R0ZXIiLCJfbGluZVBsb3R0ZXIiLCJwbHVnaW5zIiwiYXhlcyIsIngiLCJwaXhlbHNQZXJMYWJlbCIsImF4aXNMYWJlbEZvcm1hdHRlciIsImRhdGVBeGlzTGFiZWxGb3JtYXR0ZXIiLCJ2YWx1ZUZvcm1hdHRlciIsImRhdGVWYWx1ZUZvcm1hdHRlciIsImRyYXdHcmlkIiwiZHJhd0F4aXMiLCJpbmRlcGVuZGVudFRpY2tzIiwidGlja2VyIiwiZGF0ZVRpY2tlciIsInkiLCJudW1iZXJWYWx1ZUZvcm1hdHRlciIsIm51bWJlckF4aXNMYWJlbEZvcm1hdHRlciIsIm51bWVyaWNUaWNrcyIsInkyIiwiX2RlZmF1bHQiLCJtb2R1bGUiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2R5Z3JhcGgtZGVmYXVsdC1hdHRycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCAqIGFzIER5Z3JhcGhUaWNrZXJzIGZyb20gJy4vZHlncmFwaC10aWNrZXJzJztcbmltcG9ydCBEeWdyYXBoSW50ZXJhY3Rpb24gZnJvbSAnLi9keWdyYXBoLWludGVyYWN0aW9uLW1vZGVsJztcbmltcG9ydCBEeWdyYXBoQ2FudmFzUmVuZGVyZXIgZnJvbSAnLi9keWdyYXBoLWNhbnZhcyc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL2R5Z3JhcGgtdXRpbHMnO1xuXG4vLyBEZWZhdWx0IGF0dHJpYnV0ZSB2YWx1ZXMuXG52YXIgREVGQVVMVF9BVFRSUyA9IHtcbiAgaGlnaGxpZ2h0Q2lyY2xlU2l6ZTogMyxcbiAgaGlnaGxpZ2h0U2VyaWVzT3B0czogbnVsbCxcbiAgaGlnaGxpZ2h0U2VyaWVzQmFja2dyb3VuZEFscGhhOiAwLjUsXG4gIGhpZ2hsaWdodFNlcmllc0JhY2tncm91bmRDb2xvcjogJ3JnYigyNTUsIDI1NSwgMjU1KScsXG5cbiAgbGFiZWxzU2VwYXJhdGVMaW5lczogZmFsc2UsXG4gIGxhYmVsc1Nob3daZXJvVmFsdWVzOiB0cnVlLFxuICBsYWJlbHNLTUI6IGZhbHNlLFxuICBsYWJlbHNLTUcyOiBmYWxzZSxcbiAgc2hvd0xhYmVsc09uSGlnaGxpZ2h0OiB0cnVlLFxuXG4gIGRpZ2l0c0FmdGVyRGVjaW1hbDogMixcbiAgbWF4TnVtYmVyV2lkdGg6IDYsXG4gIHNpZ0ZpZ3M6IG51bGwsXG5cbiAgc3Ryb2tlV2lkdGg6IDEuMCxcbiAgc3Ryb2tlQm9yZGVyV2lkdGg6IDAsXG4gIHN0cm9rZUJvcmRlckNvbG9yOiBcIndoaXRlXCIsXG5cbiAgYXhpc1RpY2tTaXplOiAzLFxuICBheGlzTGFiZWxGb250U2l6ZTogMTQsXG4gIHJpZ2h0R2FwOiA1LFxuXG4gIHNob3dSb2xsZXI6IGZhbHNlLFxuICB4VmFsdWVQYXJzZXI6IHVuZGVmaW5lZCxcblxuICBkZWxpbWl0ZXI6ICcsJyxcblxuICBzaWdtYTogMi4wLFxuICBlcnJvckJhcnM6IGZhbHNlLFxuICBmcmFjdGlvbnM6IGZhbHNlLFxuICB3aWxzb25JbnRlcnZhbDogdHJ1ZSwgIC8vIG9ubHkgcmVsZXZhbnQgaWYgZnJhY3Rpb25zIGlzIHRydWVcbiAgY3VzdG9tQmFyczogZmFsc2UsXG4gIGZpbGxHcmFwaDogZmFsc2UsXG4gIGZpbGxBbHBoYTogMC4xNSxcbiAgY29ubmVjdFNlcGFyYXRlZFBvaW50czogZmFsc2UsXG5cbiAgc3RhY2tlZEdyYXBoOiBmYWxzZSxcbiAgc3RhY2tlZEdyYXBoTmFORmlsbDogJ2FsbCcsXG4gIGhpZGVPdmVybGF5T25Nb3VzZU91dDogdHJ1ZSxcbiAgcmVzaXphYmxlOiAnbm8nLFxuXG4gIGxlZ2VuZDogJ29ubW91c2VvdmVyJyxcbiAgbGVnZW5kRm9sbG93T2Zmc2V0WDogNTAsXG4gIGxlZ2VuZEZvbGxvd09mZnNldFk6IC01MCxcbiAgc3RlcFBsb3Q6IGZhbHNlLFxuICB4UmFuZ2VQYWQ6IDAsXG4gIHlSYW5nZVBhZDogbnVsbCxcbiAgZHJhd0F4ZXNBdFplcm86IGZhbHNlLFxuXG4gIC8vIFNpemVzIG9mIHRoZSB2YXJpb3VzIGNoYXJ0IGxhYmVscy5cbiAgdGl0bGVIZWlnaHQ6IDI4LFxuICB4TGFiZWxIZWlnaHQ6IDE4LFxuICB5TGFiZWxXaWR0aDogMTgsXG5cbiAgYXhpc0xpbmVDb2xvcjogXCJibGFja1wiLFxuICBheGlzTGluZVdpZHRoOiAwLjMsXG4gIGdyaWRMaW5lV2lkdGg6IDAuMyxcbiAgYXhpc0xhYmVsV2lkdGg6IDUwLFxuICBncmlkTGluZUNvbG9yOiBcInJnYigxMjgsMTI4LDEyOClcIixcblxuICBpbnRlcmFjdGlvbk1vZGVsOiBEeWdyYXBoSW50ZXJhY3Rpb24uZGVmYXVsdE1vZGVsLFxuICBhbmltYXRlZFpvb21zOiBmYWxzZSwgIC8vIChmb3Igbm93KVxuICBhbmltYXRlQmFja2dyb3VuZEZhZGU6IHRydWUsXG5cbiAgLy8gUmFuZ2Ugc2VsZWN0b3Igb3B0aW9uc1xuICBzaG93UmFuZ2VTZWxlY3RvcjogZmFsc2UsXG4gIHJhbmdlU2VsZWN0b3JIZWlnaHQ6IDQwLFxuICByYW5nZVNlbGVjdG9yUGxvdFN0cm9rZUNvbG9yOiBcIiM4MDhGQUJcIixcbiAgcmFuZ2VTZWxlY3RvclBsb3RGaWxsR3JhZGllbnRDb2xvcjogXCJ3aGl0ZVwiLFxuICByYW5nZVNlbGVjdG9yUGxvdEZpbGxDb2xvcjogXCIjQTdCMUM0XCIsXG4gIHJhbmdlU2VsZWN0b3JCYWNrZ3JvdW5kU3Ryb2tlQ29sb3I6IFwiZ3JheVwiLFxuICByYW5nZVNlbGVjdG9yQmFja2dyb3VuZExpbmVXaWR0aDogMSxcbiAgcmFuZ2VTZWxlY3RvclBsb3RMaW5lV2lkdGg6MS41LFxuICByYW5nZVNlbGVjdG9yRm9yZWdyb3VuZFN0cm9rZUNvbG9yOiBcImJsYWNrXCIsXG4gIHJhbmdlU2VsZWN0b3JGb3JlZ3JvdW5kTGluZVdpZHRoOiAxLFxuICByYW5nZVNlbGVjdG9yQWxwaGE6IDAuNixcbiAgc2hvd0luUmFuZ2VTZWxlY3RvcjogbnVsbCxcblxuICAvLyBUaGUgb3JkZXJpbmcgaGVyZSBlbnN1cmVzIHRoYXQgY2VudHJhbCBsaW5lcyBhbHdheXMgYXBwZWFyIGFib3ZlIGFueVxuICAvLyBmaWxsIGJhcnMvZXJyb3IgYmFycy5cbiAgcGxvdHRlcjogW1xuICAgIER5Z3JhcGhDYW52YXNSZW5kZXJlci5fZmlsbFBsb3R0ZXIsXG4gICAgRHlncmFwaENhbnZhc1JlbmRlcmVyLl9lcnJvclBsb3R0ZXIsXG4gICAgRHlncmFwaENhbnZhc1JlbmRlcmVyLl9saW5lUGxvdHRlclxuICBdLFxuXG4gIHBsdWdpbnM6IFsgXSxcblxuICAvLyBwZXItYXhpcyBvcHRpb25zXG4gIGF4ZXM6IHtcbiAgICB4OiB7XG4gICAgICBwaXhlbHNQZXJMYWJlbDogNzAsXG4gICAgICBheGlzTGFiZWxXaWR0aDogNjAsXG4gICAgICBheGlzTGFiZWxGb3JtYXR0ZXI6IHV0aWxzLmRhdGVBeGlzTGFiZWxGb3JtYXR0ZXIsXG4gICAgICB2YWx1ZUZvcm1hdHRlcjogdXRpbHMuZGF0ZVZhbHVlRm9ybWF0dGVyLFxuICAgICAgZHJhd0dyaWQ6IHRydWUsXG4gICAgICBkcmF3QXhpczogdHJ1ZSxcbiAgICAgIGluZGVwZW5kZW50VGlja3M6IHRydWUsXG4gICAgICB0aWNrZXI6IER5Z3JhcGhUaWNrZXJzLmRhdGVUaWNrZXJcbiAgICB9LFxuICAgIHk6IHtcbiAgICAgIGF4aXNMYWJlbFdpZHRoOiA1MCxcbiAgICAgIHBpeGVsc1BlckxhYmVsOiAzMCxcbiAgICAgIHZhbHVlRm9ybWF0dGVyOiB1dGlscy5udW1iZXJWYWx1ZUZvcm1hdHRlcixcbiAgICAgIGF4aXNMYWJlbEZvcm1hdHRlcjogdXRpbHMubnVtYmVyQXhpc0xhYmVsRm9ybWF0dGVyLFxuICAgICAgZHJhd0dyaWQ6IHRydWUsXG4gICAgICBkcmF3QXhpczogdHJ1ZSxcbiAgICAgIGluZGVwZW5kZW50VGlja3M6IHRydWUsXG4gICAgICB0aWNrZXI6IER5Z3JhcGhUaWNrZXJzLm51bWVyaWNUaWNrc1xuICAgIH0sXG4gICAgeTI6IHtcbiAgICAgIGF4aXNMYWJlbFdpZHRoOiA1MCxcbiAgICAgIHBpeGVsc1BlckxhYmVsOiAzMCxcbiAgICAgIHZhbHVlRm9ybWF0dGVyOiB1dGlscy5udW1iZXJWYWx1ZUZvcm1hdHRlcixcbiAgICAgIGF4aXNMYWJlbEZvcm1hdHRlcjogdXRpbHMubnVtYmVyQXhpc0xhYmVsRm9ybWF0dGVyLFxuICAgICAgZHJhd0F4aXM6IHRydWUsICAvLyBvbmx5IGFwcGxpZXMgd2hlbiB0aGVyZSBhcmUgdHdvIGF4ZXMgb2YgZGF0YS5cbiAgICAgIGRyYXdHcmlkOiBmYWxzZSxcbiAgICAgIGluZGVwZW5kZW50VGlja3M6IGZhbHNlLFxuICAgICAgdGlja2VyOiBEeWdyYXBoVGlja2Vycy5udW1lcmljVGlja3NcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IERFRkFVTFRfQVRUUlM7XG4iXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7O0FBQUNBLE1BQUEsQ0FBQUMsY0FBQSxDQUFBQyxPQUFBO0VBQUFDLEtBQUE7QUFBQTtBQUFBRCxPQUFBO0FBRWIsSUFBQUUsY0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsd0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUwsdUJBQUEsQ0FBQUMsT0FBQTtBQUF5QyxTQUFBRSx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQU4sd0JBQUFNLENBQUEsRUFBQUUsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFULHVCQUFBLFlBQUFBLHdCQUFBTSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsdUJBQUFBLENBQUEseUJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFKLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFFLENBQUEsQ0FBQUksR0FBQSxDQUFBVixDQUFBLFVBQUFNLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxD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Q0FBa0MsRUFBRSxPQUFPO0VBQzNDQyxnQ0FBZ0MsRUFBRSxDQUFDO0VBQ25DQyxrQkFBa0IsRUFBRSxHQUFHO0VBQ3ZCQyxtQkFBbUIsRUFBRSxJQUFJO0VBRXpCO0VBQ0E7RUFDQUMsT0FBTyxFQUFFLENBQ1BDLHlCQUFxQixDQUFDQyxZQUFZLEVBQ2xDRCx5QkFBcUIsQ0FBQ0UsYUFBYSxFQUNuQ0YseUJBQXFCLENBQUNHLFlBQVksQ0FDbkM7RUFFREMsT0FBTyxFQUFFLEVBQUc7RUFFWjtFQUNBQyxJQUFJLEVBQUU7SUFDSkMsQ0FBQyxFQUFFO01BQ0RDLGNBQWMsRUFBRSxFQUFFO01BQ2xCM0IsY0FBYyxFQUFFLEVBQUU7TUFDbEI0QixrQkFBa0IsRUFBRTlGLEtBQUssQ0FBQytGLHNCQUFzQjtNQUNoREMsY0FBYyxFQUFFaEcsS0FBSyxDQUFDaUcsa0JBQWtCO01BQ3hDQyxRQUFRLEVBQUUsSUFBSTtNQUNkQyxRQUFRLEVBQUUsSUFBSTtNQUNkQyxnQkFBZ0IsRUFBRSxJQUFJO01BQ3RCQyxNQUFNLEVBQUUzRyxjQUFjLENBQUM0RztJQUN6QixDQUFDO0lBQ0RDLENBQUMsRUFBRTtNQUNEckMsY0FBYyxFQUFFLEVBQUU7TUFDbEIyQixjQUFjLEVBQUUsRUFBRTtNQUNsQkcsY0FBYyxFQUFFaEcsS0FBSyxDQUFDd0csb0JBQW9CO01BQzFDVixrQkFBa0IsRUFBRTlGLEtBQUssQ0FBQ3lHLHdCQUF3QjtNQUNsRFAsUUFBUSxFQUFFLElBQUk7TUFDZEMsUUFBUSxFQUFFLElBQUk7TUFDZEMsZ0JBQWdCLEVBQUUsSUFBSTtNQUN0QkMsTUFBTSxFQUFFM0csY0FBYyxDQUFDZ0g7SUFDekIsQ0FBQztJQUNEQyxFQUFFLEVBQUU7TUFDRnpDLGNBQWMsRUFBRSxFQUFFO01BQ2xCMkIsY0FBYyxFQUFFLEVBQUU7TUFDbEJHLGNBQWMsRUFBRWhHLEtBQUssQ0FBQ3dHLG9CQUFvQjtNQUMxQ1Ysa0JBQWtCLEVBQUU5RixLQUFLLENBQUN5Ryx3QkFBd0I7TUFDbEROLFFBQVEsRUFBRSxJQUFJO01BQUc7TUFDakJELFFBQVEsRUFBRSxLQUFLO01BQ2ZFLGdCQUFnQixFQUFFLEtBQUs7TUFDdkJDLE1BQU0sRUFBRTNHLGNBQWMsQ0FBQ2dIO0lBQ3pCO0VBQ0Y7QUFDRixDQUFDO0FBQUMsSUFBQUUsUUFBQSxHQUFBcEgsT0FBQSxjQUVhMEIsYUFBYTtBQUFBMkYsTUFBQSxDQUFBckgsT0FBQSxHQUFBQSxPQUFBLENBQUFzSCxPQUFBIiwiaWdub3JlTGlzdCI6W119