UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

402 lines 114 kB
"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.WidgetContainer = exports.TruncatedTitleText = exports.Tooltip = exports.TextAreaLight = exports.TextArea = exports.StyledType = exports.StyledTimePicker = exports.StyledTable = exports.StyledPanelHeader = exports.StyledPanelDropdown = exports.StyledModalVerticalPanel = exports.StyledModalSection = exports.StyledModalInputFootnote = exports.StyledModalContent = exports.StyledMapContainer = exports.StyledFilteredOption = exports.StyledFilterContent = exports.StyledExportSection = exports.StyledDatePicker = exports.StyledAttrbution = exports.SpaceBetweenFlexbox = exports.SidePanelSection = exports.SidePanelDivider = exports.SelectionButton = exports.SelectTextBold = exports.SelectText = exports.SBFlexboxNoMargin = exports.SBFlexboxItem = exports.PanelLabelWrapper = exports.PanelLabelBold = exports.PanelLabel = exports.PanelHeaderTitle = exports.PanelHeaderContent = exports.PanelContent = exports.MapControlButton = exports.InputLight = exports.Input = exports.InlineInput = exports.IconRoundSmall = exports.EndHorizontalFlexbox = exports.DatasetSquare = exports.CheckMark = exports.CenterVerticalFlexbox = exports.CenterFlexbox = exports.ButtonGroup = exports.Button = exports.BottomWidgetInner = void 0;
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _styles = require("@kepler.gl/styles");
var _classnames = _interopRequireDefault(require("classnames"));
var _reactDatePicker = _interopRequireDefault(require("react-date-picker"));
var _reactTimePicker = _interopRequireDefault(require("react-time-picker"));
var _reactTooltip = _interopRequireDefault(require("react-tooltip"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30, _templateObject31, _templateObject32, _templateObject33, _templateObject34, _templateObject35, _templateObject36, _templateObject37, _templateObject38, _templateObject39, _templateObject40, _templateObject41, _templateObject42, _templateObject43, _templateObject44, _templateObject45, _templateObject46, _templateObject47, _templateObject48, _templateObject49, _templateObject50, _templateObject51, _templateObject52, _templateObject53; // SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
var SelectText = exports.SelectText = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n  color: ", ";\n  font-size: ", ";\n  font-weight: 400;\n\n  i {\n    font-size: 13px;\n    margin-right: 6px;\n  }\n"])), function (props) {
  return props.theme.labelColor;
}, function (props) {
  return props.theme.selectFontSize;
});
var SelectTextBold = exports.SelectTextBold = (0, _styledComponents["default"])(SelectText)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n  color: ", ";\n  font-weight: 500;\n"])), function (props) {
  return props.theme.textColor;
});
var IconRoundSmall = exports.IconRoundSmall = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  width: 18px;\n  height: 18px;\n  border-radius: 9px;\n  background-color: ", ";\n  color: ", ";\n  align-items: center;\n  justify-content: center;\n\n  &:hover {\n    cursor: pointer;\n    background-color: ", ";\n  }\n"])), function (props) {
  return props.theme.secondaryBtnBgdHover;
}, function (props) {
  return props.theme.secondaryBtnColor;
}, function (props) {
  return props.theme.secondaryBtnBgdHover;
});
var CenterFlexbox = exports.CenterFlexbox = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  align-items: center;\n"])));
var CenterVerticalFlexbox = exports.CenterVerticalFlexbox = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n"])));
var EndHorizontalFlexbox = exports.EndHorizontalFlexbox = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  flex-direction: row;\n  align-items: end;\n"])));
var SpaceBetweenFlexbox = exports.SpaceBetweenFlexbox = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  justify-content: space-between;\n  margin-left: -16px;\n"])));
var SBFlexboxItem = exports.SBFlexboxItem = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n  flex-grow: 1;\n  margin-left: 16px;\n"])));
var SBFlexboxNoMargin = exports.SBFlexboxNoMargin = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  justify-content: space-between;\n"])));
var PanelLabel = exports.PanelLabel = _styledComponents["default"].label.attrs({
  className: 'side-panel-panel__label'
})(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n  color: ", ";\n  display: inline-block;\n  font-size: 11px;\n  font-weight: 400;\n  margin-bottom: 4px;\n  text-transform: capitalize;\n"])), function (props) {
  return props.theme.labelColor;
});
var PanelLabelWrapper = exports.PanelLabelWrapper = _styledComponents["default"].div.attrs({
  className: 'side-panel-panel__label-wrapper'
})(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  align-items: self-start;\n"])));
var PanelLabelBold = exports.PanelLabelBold = (0, _styledComponents["default"])(PanelLabel)(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n  font-weight: 500;\n"])));
var PanelHeaderTitle = exports.PanelHeaderTitle = _styledComponents["default"].span.attrs(function (props) {
  return {
    className: (0, _classnames["default"])('side-panel-panel__header__title', props.className)
  };
})(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n  color: ", ";\n  font-size: 13px;\n  letter-spacing: 0.43px;\n  text-transform: capitalize;\n"])), function (props) {
  return props.theme.textColor;
});
var PanelHeaderContent = exports.PanelHeaderContent = _styledComponents["default"].div(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  align-items: center;\n  color: ", ";\n  padding-left: 12px;\n\n  .icon {\n    color: ", ";\n    display: flex;\n    align-items: center;\n    margin-right: 12px;\n  }\n"])), function (props) {
  return props.theme.textColor;
}, function (props) {
  return props.theme.labelColor;
});
var PanelContent = exports.PanelContent = _styledComponents["default"].div.attrs(function (props) {
  return {
    className: (0, _classnames["default"])('side-panel-panel__content', props.className)
  };
})(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n  background-color: ", ";\n  padding: 12px;\n"])), function (props) {
  return props.theme.panelContentBackground;
});
var SidePanelSection = exports.SidePanelSection = _styledComponents["default"].div.attrs(function (props) {
  return {
    className: (0, _classnames["default"])('side-panel-section', props.className)
  };
})(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["\n  margin-bottom: 12px;\n\n  opacity: ", ";\n  pointer-events: ", ";\n"])), function (props) {
  return props.disabled ? 0.4 : 1;
}, function (props) {
  return props.disabled ? 'none' : 'all';
});
var SidePanelDivider = exports.SidePanelDivider = _styledComponents["default"].div.attrs({
  className: 'side-panel-divider'
})(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["\n  border-bottom: ", " solid\n    ", ";\n  margin-bottom: ", "px;\n  height: ", "px;\n"])), function (props) {
  return props.theme.sidepanelDividerBorder;
}, function (props) {
  return props.theme.panelBorderColor;
}, function (props) {
  return props.theme.sidepanelDividerMargin;
}, function (props) {
  return props.theme.sidepanelDividerHeight;
});
var Tooltip = exports.Tooltip = (0, _styledComponents["default"])(_reactTooltip["default"])(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteral2["default"])(["\n  &.__react_component_tooltip {\n    font-size: ", ";\n    font-weight: 400;\n    padding: 10px 18px;\n    box-shadow: ", ";\n\n    &.type-dark {\n      background-color: ", ";\n      color: ", ";\n      &.place-bottom {\n        &:after {\n          border-bottom-color: ", ";\n        }\n      }\n\n      &.place-top {\n        &:after {\n          border-top-color: ", ";\n        }\n      }\n\n      &.place-right {\n        &:after {\n          border-right-color: ", ";\n        }\n      }\n\n      &.place-left {\n        &:after {\n          border-left-color: ", ";\n        }\n      }\n    }\n  }\n"])), function (props) {
  return props.theme.tooltipFontSize;
}, function (props) {
  return props.theme.tooltipBoxShadow;
}, function (props) {
  return props.theme.tooltipBg;
}, function (props) {
  return props.theme.tooltipColor;
}, function (props) {
  return props.theme.tooltipBg;
}, function (props) {
  return props.theme.tooltipBg;
}, function (props) {
  return props.theme.tooltipBg;
}, function (props) {
  return props.theme.tooltipBg;
});
// this needs to be an actual button to be able to set disabled attribute correctly
var Button = exports.Button = _styledComponents["default"].button.attrs(function (props) {
  return {
    className: (0, _classnames["default"])('button', props.className)
  };
})(_templateObject19 || (_templateObject19 = (0, _taggedTemplateLiteral2["default"])(["\n  align-items: center;\n  background-color: ", ";\n  border-radius: ", ";\n  color: ", ";\n  cursor: pointer;\n  display: inline-flex;\n  font-size: ", ";\n  font-weight: 500;\n  font-family: ", ";\n  justify-content: center;\n  letter-spacing: 0.3px;\n  line-height: 14px;\n  outline: 0;\n  padding: ", ";\n  text-align: center;\n  transition: ", ";\n  vertical-align: middle;\n  width: ", ";\n  opacity: ", ";\n  pointer-events: ", ";\n  border: ", ";\n  &:hover,\n  &:focus,\n  &:active,\n  &.active {\n    background-color: ", ";\n    color: ", ";\n  }\n\n  svg {\n    margin-right: ", ";\n  }\n"])), function (props) {
  return props.negative ? props.theme.negativeBtnBgd : props.secondary ? props.theme.secondaryBtnBgd : props.link ? props.theme.linkBtnBgd : props.floating ? props.theme.floatingBtnBgd : props.cta ? props.theme.ctaBtnBgd : props.theme.primaryBtnBgd;
}, function (props) {
  return props.theme.primaryBtnRadius;
}, function (props) {
  return props.negative ? props.theme.negativeBtnColor : props.secondary ? props.theme.secondaryBtnColor : props.link ? props.theme.linkBtnColor : props.floating ? props.theme.floatingBtnColor : props.cta ? props.theme.ctaBtnColor : props.theme.primaryBtnColor;
}, function (props) {
  return props.large ? props.theme.primaryBtnFontSizeLarge : props.small ? props.theme.primaryBtnFontSizeSmall : props.theme.primaryBtnFontSizeDefault;
}, function (props) {
  return props.theme.btnFontFamily;
}, function (props) {
  return props.large ? '14px 32px' : props.small ? '6px 9px' : '9px 12px';
}, function (props) {
  return props.theme.transition;
}, function (props) {
  return props.width || 'auto';
}, function (props) {
  return props.disabled ? 0.4 : 1;
}, function (props) {
  return props.disabled ? 'none' : 'all';
}, function (props) {
  return props.negative ? props.theme.negativeBtnBorder : props.secondary ? props.theme.secondaryBtnBorder : props.floating ? props.theme.floatingBtnBorder : props.link ? props.theme.linkBtnBorder : props.theme.primaryBtnBorder;
}, function (props) {
  return props.negative ? props.theme.negativeBtnBgdHover : props.secondary ? props.theme.secondaryBtnBgdHover : props.link ? props.theme.linkBtnActBgdHover : props.floating ? props.theme.floatingBtnBgdHover : props.cta ? props.theme.ctaBtnBgdHover : props.theme.primaryBtnBgdHover;
}, function (props) {
  return props.negative ? props.theme.negativeBtnActColor : props.secondary ? props.theme.secondaryBtnActColor : props.link ? props.theme.linkBtnActColor : props.floating ? props.theme.floatingBtnActColor : props.cta ? props.theme.ctaBtnActColor : props.theme.primaryBtnActColor;
}, function (props) {
  return props.large ? '10px' : props.small ? '6px' : '8px';
});
var Input = exports.Input = _styledComponents["default"].input(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteral2["default"])(["\n  ", ";\n"])), function (props) {
  return props.secondary ? props.theme.secondaryInput : props.theme.input;
});
var InputLight = exports.InputLight = _styledComponents["default"].input(_templateObject21 || (_templateObject21 = (0, _taggedTemplateLiteral2["default"])(["\n  ", ";\n"])), function (props) {
  return props.theme.inputLT;
});
var TextArea = exports.TextArea = _styledComponents["default"].textarea(_templateObject22 || (_templateObject22 = (0, _taggedTemplateLiteral2["default"])(["\n  ", ";\n"])), function (props) {
  return props.secondary ? props.theme.secondaryInput : props.theme.input;
});
var TextAreaLight = exports.TextAreaLight = _styledComponents["default"].textarea(_templateObject23 || (_templateObject23 = (0, _taggedTemplateLiteral2["default"])(["\n  ", " height: auto;\n  white-space: pre-wrap;\n"])), function (props) {
  return props.theme.inputLT;
});
var InlineInput = exports.InlineInput = (0, _styledComponents["default"])(Input)(_templateObject24 || (_templateObject24 = (0, _taggedTemplateLiteral2["default"])(["\n  ", ";\n"])), function (props) {
  return props.theme.inlineInput;
});
var StyledPanelHeader = exports.StyledPanelHeader = _styledComponents["default"].div(_templateObject25 || (_templateObject25 = (0, _taggedTemplateLiteral2["default"])(["\n  background-color: ", ";\n  border-left: 3px solid\n    rgb(\n      ", "\n    );\n  padding: 0 10px 0 0;\n  height: ", "px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  border-radius: ", ";\n  transition: ", ";\n"])), function (props) {
  return props.active ? props.theme.panelBackgroundHover : props.theme.panelBackground;
}, function (props) {
  return props.labelRCGColorValues ? props.labelRCGColorValues.join(',') : 'transparent';
}, function (props) {
  return props.theme.panelHeaderHeight;
}, function (props) {
  return props.theme.panelHeaderBorderRadius;
}, function (props) {
  return props.theme.transition;
});
var StyledPanelDropdown = exports.StyledPanelDropdown = _styledComponents["default"].div(_templateObject26 || (_templateObject26 = (0, _taggedTemplateLiteral2["default"])(["\n  ", "\n  background-color: ", ";\n  overflow-y: auto;\n  box-shadow: ", ";\n  border-radius: ", ";\n  max-height: 500px;\n  position: relative;\n  z-index: 999;\n"])), function (props) {
  return props.theme.panelDropdownScrollBar;
}, function (props) {
  return props.type === 'light' ? props.theme.modalDropdownBackground : props.theme.panelBackground;
}, function (props) {
  return props.theme.panelBoxShadow;
}, function (props) {
  return props.theme.panelBorderRadius;
});
var ButtonGroup = exports.ButtonGroup = _styledComponents["default"].div(_templateObject27 || (_templateObject27 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  .button {\n    border-radius: 0;\n    margin-left: 2px;\n  }\n  .button:first-child {\n    border-bottom-left-radius: ", ";\n    border-top-left-radius: ", ";\n    margin-left: 0;\n  }\n  .button:last-child {\n    border-bottom-right-radius: ", ";\n    border-top-right-radius: ", ";\n  }\n"])), function (props) {
  return props.theme.primaryBtnRadius;
}, function (props) {
  return props.theme.primaryBtnRadius;
}, function (props) {
  return props.theme.primaryBtnRadius;
}, function (props) {
  return props.theme.primaryBtnRadius;
});
var DatasetSquare = exports.DatasetSquare = _styledComponents["default"].div(_templateObject28 || (_templateObject28 = (0, _taggedTemplateLiteral2["default"])(["\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  background-color: rgb(", ");\n  margin-right: 12px;\n"])), function (props) {
  return props.backgroundColor.join(',');
});
var SelectionButton = exports.SelectionButton = _styledComponents["default"].div(_templateObject29 || (_templateObject29 = (0, _taggedTemplateLiteral2["default"])(["\n  position: relative;\n  border-radius: 2px;\n  border: 1px solid\n    ", ";\n  color: ", ";\n  background-color: ", ";\n\n  cursor: pointer;\n  font-weight: 500;\n  margin-right: 6px;\n  padding: 6px 16px;\n\n  &:hover {\n    color: ", ";\n    border: 1px solid ", ";\n  }\n"])), function (props) {
  return props.selected ? props.theme.selectionBtnBorderActColor : props.theme.selectionBtnBorderColor;
}, function (props) {
  return props.selected ? props.theme.selectionBtnActColor : props.theme.selectionBtnColor;
}, function (props) {
  return props.selected ? props.theme.selectionBtnActBgd : props.theme.selectionBtnBgd;
}, function (props) {
  return props.theme.selectionBtnActColor;
}, function (props) {
  return props.theme.selectionBtnBorderActColor;
});
var StyledTable = exports.StyledTable = _styledComponents["default"].table(_templateObject30 || (_templateObject30 = (0, _taggedTemplateLiteral2["default"])(["\n  width: 100%;\n  border-spacing: 0;\n\n  thead {\n    tr th {\n      background: ", ";\n      color: ", ";\n      padding: 18px 12px;\n      text-align: start;\n    }\n  }\n\n  tbody {\n    tr td {\n      border-bottom: ", ";\n      padding: 12px;\n    }\n  }\n"])), function (props) {
  return props.theme.panelBackgroundLT;
}, function (props) {
  return props.theme.titleColorLT;
}, function (props) {
  return props.theme.panelBorderLT;
});
var StyledModalContent = exports.StyledModalContent = _styledComponents["default"].div(_templateObject31 || (_templateObject31 = (0, _taggedTemplateLiteral2["default"])(["\n  background: ", ";\n  color: ", ";\n  display: flex;\n  flex-direction: row;\n  font-size: 10px;\n  padding: 24px ", ";\n  margin: 0 -", ";\n  justify-content: space-between;\n  ", ";\n"])), function (props) {
  return props.theme.panelBackgroundLT;
}, function (props) {
  return props.theme.textColorLT;
}, function (props) {
  return props.theme.modalLateralPadding;
}, function (props) {
  return props.theme.modalLateralPadding;
}, _styles.media.portable(_templateObject32 || (_templateObject32 = (0, _taggedTemplateLiteral2["default"])(["\n    flex-direction: column;\n    padding: 16px ", ";\n    margin: 0 -", ";\n  "])), function (props) {
  return props.theme.modalPortableLateralPadding;
}, function (props) {
  return props.theme.modalPortableLateralPadding;
}));
var StyledModalVerticalPanel = exports.StyledModalVerticalPanel = _styledComponents["default"].div.attrs({
  className: 'modal-vertical-panel'
})(_templateObject33 || (_templateObject33 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  flex-direction: column;\n  justify-content: space-around;\n  font-size: 12px;\n\n  .modal-section:first-child {\n    margin-top: 24px;\n    ", ";\n  }\n\n  input {\n    margin-right: 8px;\n  }\n"])), _styles.media.palm(_templateObject34 || (_templateObject34 = (0, _taggedTemplateLiteral2["default"])(["\n      margin-top: 0;\n    "]))));
var StyledModalSection = exports.StyledModalSection = _styledComponents["default"].div.attrs(function (_ref) {
  var className = _ref.className;
  return {
    className: (0, _classnames["default"])('modal-section', className)
  };
})(_templateObject35 || (_templateObject35 = (0, _taggedTemplateLiteral2["default"])(["\n  margin-bottom: 32px;\n\n  .modal-section-title {\n    font-weight: 500;\n  }\n  .modal-section-subtitle {\n    color: ", ";\n  }\n\n  input {\n    margin-top: 8px;\n  }\n\n  ", ";\n  ", ";\n"])), function (props) {
  return props.theme.subtextColorLT;
}, _styles.media.portable(_templateObject36 || (_templateObject36 = (0, _taggedTemplateLiteral2["default"])(["\n    margin-bottom: 24px;\n  "]))), _styles.media.palm(_templateObject37 || (_templateObject37 = (0, _taggedTemplateLiteral2["default"])(["\n    margin-bottom: 16px;\n  "]))));
var StyledModalInputFootnote = exports.StyledModalInputFootnote = _styledComponents["default"].div.attrs({
  className: 'modal-input__footnote'
})(_templateObject38 || (_templateObject38 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  justify-content: flex-end;\n  color: ", ";\n  font-size: 10px;\n"])), function (props) {
  return props.error ? props.theme.errorColor : props.theme.subtextColorLT;
});
/**
 * Newer versions of mapbox.gl display an error message banner on top of the map by default
 * which will cause the map to display points in the wrong locations
 * This workaround will hide the error banner.
 */
var StyledMapContainer = exports.StyledMapContainer = _styledComponents["default"].div(_templateObject39 || (_templateObject39 = (0, _taggedTemplateLiteral2["default"])(["\n  width: 100%;\n  height: 100%;\n  .maplibregl-map {\n    .maplibregl-missing-css {\n      display: none;\n    }\n    .maplibregl-ctrl-attrib {\n      display: none;\n    }\n  }\n  .mapboxgl-map {\n    .mapboxgl-missing-css {\n      display: none;\n    }\n    .mapboxgl-ctrl-attrib {\n      display: none;\n    }\n  }\n"])));
var StyledAttrbution = exports.StyledAttrbution = _styledComponents["default"].div.attrs(function (props) {
  return {
    className: props.mapLibAttributionCssClass
  };
})(_templateObject40 || (_templateObject40 = (0, _taggedTemplateLiteral2["default"])(["\n  bottom: 0;\n  right: 0;\n  position: absolute;\n  display: block;\n  margin: 0 10px 6px;\n  z-index: 1;\n  .attrition-link {\n    display: flex;\n    align-items: center;\n    margin-left: 10px;\n\n    a,\n    .pipe-separator {\n      margin-right: 2px;\n      color: ", ";\n    }\n\n    .pipe-separator {\n      text-decoration: none;\n    }\n  }\n\n  .attrition-logo {\n    display: flex;\n    font-size: 10px;\n    justify-content: flex-end;\n    align-items: center;\n    color: ", ";\n\n    a.", "-ctrl-logo {\n      width: 72px;\n      margin-left: 4px;\n      background-size: contain;\n    }\n  }\n  a,\n  .pipe-separator {\n    font-size: 10px;\n  }\n\n  ", ";\n"])), function (props) {
  return props.theme.labelColor;
}, function (props) {
  return props.theme.labelColor;
}, function (props) {
  return props.mapLibCssClass;
}, _styles.media.palm(_templateObject41 || (_templateObject41 = (0, _taggedTemplateLiteral2["default"])(["\n    .attrition-logo a {\n      width: 60px;\n    }\n\n    .attrition-link {\n      line-height: 1em;\n    }\n  "]))));
var StyledExportSection = exports.StyledExportSection = _styledComponents["default"].div(_templateObject42 || (_templateObject42 = (0, _taggedTemplateLiteral2["default"])(["\n  display: flex;\n  flex-direction: row;\n  margin: 35px 0;\n  width: 100%;\n  color: ", ";\n  font-size: 12px;\n  opacity: ", ";\n  pointer-events: ", ";\n\n  .description {\n    width: 185px;\n    .title {\n      font-weight: 500;\n      font-family: ", ";\n    }\n    .subtitle {\n      color: ", ";\n      font-size: 11px;\n    }\n  }\n  .warning {\n    color: ", ";\n    font-weight: 500;\n  }\n  .description.full {\n    width: 100%;\n  }\n  .selection {\n    display: flex;\n    flex-wrap: wrap;\n    flex: 1;\n    padding-left: 50px;\n\n    select {\n      background-color: white;\n      border-radius: 1px;\n      display: inline-block;\n      font: inherit;\n      line-height: 1.5em;\n      padding: 0.5em 3.5em 0.5em 1em;\n      margin: 0;\n      box-sizing: border-box;\n      appearance: none;\n      width: 250px;\n      height: 36px;\n\n      background-image: linear-gradient(45deg, transparent 50%, gray 50%),\n        linear-gradient(135deg, gray 50%, transparent 50%), linear-gradient(to right, #ccc, #ccc);\n      background-position: calc(100% - 20px) calc(1em + 2px), calc(100% - 15px) calc(1em + 2px),\n        calc(100% - 2.5em) 4.5em;\n      background-size: 5px 5px, 5px 5px, 1px 1.5em;\n      background-repeat: no-repeat;\n    }\n\n    select:focus {\n      background-image: linear-gradient(45deg, green 50%, transparent 50%),\n        linear-gradient(135deg, transparent 50%, green 50%), linear-gradient(to right, #ccc, #ccc);\n      background-position: calc(100% - 15px) 1em, calc(100% - 20px) 1em, calc(100% - 2.5em) 4.5em;\n      background-size: 5px 5px, 5px 5px, 1px 1.5em;\n      background-repeat: no-repeat;\n      border-color: green;\n      outline: 0;\n    }\n  }\n"])), function (props) {
  return props.theme.textColorLT;
}, function (props) {
  return props.disabled ? 0.3 : 1;
}, function (props) {
  return props.disabled ? 'none' : 'all';
}, function (props) {
  var _props$theme$fontFami;
  return (_props$theme$fontFami = props.theme.fontFamilyMedium) !== null && _props$theme$fontFami !== void 0 ? _props$theme$fontFami : props.theme.fontFamily;
}, function (props) {
  return props.theme.subtextColorLT;
}, function (props) {
  return props.theme.errorColor;
});
var StyledFilteredOption = exports.StyledFilteredOption = (0, _styledComponents["default"])(SelectionButton)(_templateObject43 || (_templateObject43 = (0, _taggedTemplateLiteral2["default"])(["\n  align-items: center;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  margin: 4px;\n  padding: 8px 12px;\n  width: 140px;\n\n  .filter-option-title {\n    color: ", ";\n    font-size: 12px;\n    font-weight: 500;\n  }\n  .filter-option-subtitle {\n    color: ", ";\n    font-size: 11px;\n  }\n"])), function (props) {
  return props.theme.textColorLT;
}, function (props) {
  return props.theme.subtextColorLT;
});
var StyledType = exports.StyledType = (0, _styledComponents["default"])(SelectionButton)(_templateObject44 || (_templateObject44 = (0, _taggedTemplateLiteral2["default"])(["\n  height: 100px;\n  margin: 4px;\n  padding: 6px 10px;\n  width: 100px;\n"])));
var WidgetContainer = exports.WidgetContainer = _styledComponents["default"].div(_templateObject45 || (_templateObject45 = (0, _taggedTemplateLiteral2["default"])(["\n  z-index: 1;\n"])));
var BottomWidgetInner = exports.BottomWidgetInner = _styledComponents["default"].div(_templateObject46 || (_templateObject46 = (0, _taggedTemplateLiteral2["default"])(["\n  background-color: ", ";\n  padding: ", ";\n  position: relative;\n  margin-top: ", "px;\n\n  ", "\n"])), function (props) {
  return props.theme.bottomWidgetBgd;
}, function (props) {
  return "".concat(props.theme.bottomInnerPdVert, "px ").concat(props.theme.bottomInnerPdSide, "px");
}, function (props) {
  return props.theme.bottomPanelGap;
}, _styles.media.portable(_templateObject47 || (_templateObject47 = (0, _taggedTemplateLiteral2["default"])(["\n    border-top: 1px solid ", ";\n    border-left: 1px solid ", ";\n    padding: 12px 12px;\n    margin-top: 0;\n  "])), function (props) {
  return props.theme.panelBorderColor;
}, function (props) {
  return props.theme.panelBorderColor;
}));
var MapControlButton = exports.MapControlButton = (0, _styledComponents["default"])(Button).attrs(function (props) {
  return {
    className: (0, _classnames["default"])('map-control-button', props.className)
  };
})(_templateObject48 || (_templateObject48 = (0, _taggedTemplateLiteral2["default"])(["\n  box-shadow: 0 6px 12px 0 rgba(0, 0, 0, 0.16);\n  height: 32px;\n  width: 32px;\n  padding: 0;\n  border-radius: 0;\n  background-color: ", ";\n  color: ", ";\n  border: ", ";\n\n  &:hover,\n  &:focus,\n  &:active,\n  &.active {\n    background-color: ", ";\n    color: ", ";\n    border: ", ";\n  }\n  svg {\n    margin-right: 0;\n  }\n"])), function (props) {
  return props.active ? props.theme.floatingBtnBgdHover : props.theme.floatingBtnBgd;
}, function (props) {
  return props.active ? props.theme.floatingBtnActColor : props.theme.floatingBtnColor;
}, function (props) {
  return props.active ? props.theme.floatingBtnBorderHover : props.theme.floatingBtnBorder;
}, function (props) {
  return props.theme.floatingBtnBgdHover;
}, function (props) {
  return props.theme.floatingBtnActColor;
}, function (props) {
  return props.theme.floatingBtnBorderHover;
});
var StyledFilterContent = exports.StyledFilterContent = _styledComponents["default"].div(_templateObject49 || (_templateObject49 = (0, _taggedTemplateLiteral2["default"])(["\n  background-color: ", ";\n  padding: 12px;\n"])), function (props) {
  return props.theme.panelContentBackground;
});
var TruncatedTitleText = exports.TruncatedTitleText = _styledComponents["default"].div(_templateObject50 || (_templateObject50 = (0, _taggedTemplateLiteral2["default"])(["\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  overflow: hidden;\n"])));
var CheckMark = exports.CheckMark = _styledComponents["default"].span.attrs({
  className: 'checkbox-inner'
})(_templateObject51 || (_templateObject51 = (0, _taggedTemplateLiteral2["default"])(["\n  background-color: ", ";\n  position: absolute;\n  top: 0;\n  right: 0;\n  display: block;\n  width: 10px;\n  height: 10px;\n  border-top-left-radius: 2px;\n\n  &:after {\n    position: absolute;\n    display: table;\n    border: 1px solid #fff;\n    border-top: 0;\n    border-left: 0;\n    transform: rotate(45deg) scale(1) translate(-50%, -50%);\n    opacity: 1;\n    content: ' ';\n    top: 40%;\n    left: 30%;\n    width: 3.2px;\n    height: 6.22px;\n  }\n"])), function (props) {
  return props.theme.selectionBtnBorderActColor;
});
var StyledTimePicker = exports.StyledTimePicker = (0, _styledComponents["default"])(_reactTimePicker["default"])(_templateObject52 || (_templateObject52 = (0, _taggedTemplateLiteral2["default"])(["\n  .react-time-picker {\n    display: inline-flex;\n    position: relative;\n    font-family: ", ";\n    font-size: ", ";\n    background-color: ", ";\n    color: ", ";\n  }\n  .react-time-picker,\n  .react-time-picker *,\n  .react-time-picker *:before,\n  .react-time-picker *:after {\n    -moz-box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box;\n  }\n  .react-time-picker__wrapper {\n    display: flex;\n    flex-grow: 1;\n    flex-shrink: 0;\n    background-color: ", ";\n    border-radius: 4px;\n    width: 110px;\n    white-space: nowrap;\n  }\n  .react-time-picker__wrapper:hover {\n    background-color: ", ";\n  }\n  .react-time-picker__inputGroup {\n    min-width: calc((4px * 3) + 0.54em * 6 + 0.217em * 2);\n    flex-grow: 1;\n    padding: 4px 2px;\n    box-sizing: content-box;\n    display: flex;\n    justify-content: end;\n    align-items: center;\n    height: 24px;\n  }\n  .react-time-picker__inputGroup__divider {\n    padding: 1px 0;\n    white-space: pre;\n  }\n  .react-time-picker__inputGroup__divider,\n  .react-time-picker__inputGroup__leadingZero {\n    display: inline-block;\n    color: ", ";\n    font-family: ", ";\n    font-size: ", ";\n    font-weight: 400;\n  }\n  .react-time-picker__inputGroup__input {\n    min-width: 0.54em;\n    height: 100%;\n    position: relative;\n    padding: 0 1px;\n    border: 0;\n    background: transparent;\n    color: ", ";\n    font-family: ", ";\n    font-size: ", ";\n    box-sizing: content-box;\n    -webkit-appearance: textfield;\n    -moz-appearance: textfield;\n    appearance: textfield;\n  }\n  .react-time-picker__inputGroup__input:focus {\n    outline: none;\n  }\n  .react-time-picker__inputGroup__input::-webkit-outer-spin-button,\n  .react-time-picker__inputGroup__input::-webkit-inner-spin-button {\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    appearance: none;\n    margin: 0;\n  }\n  .react-time-picker__inputGroup__input--hasLeadingZero {\n    margin-left: -0.54em;\n    padding-left: calc(1px + 0.54em);\n  }\n  .react-time-picker__inputGroup__amPm {\n    max-width: 37px;\n    font: inherit;\n    font-weight: 400;\n    -webkit-appearance: menulist;\n    -moz-appearance: menulist;\n    appearance: menulist;\n    font-size: ", ";\n  }\n  .react-time-picker__button {\n    border: 0;\n    background-color: ", ";\n    padding: 4px 6px;\n  }\n  .react-time-picker__button:enabled {\n    cursor: pointer;\n  }\n  .react-time-picker__button svg {\n    display: inherit;\n  }\n  .react-time-picker__clock--closed,\n  .react-time-picker__clear-button {\n    display: none;\n  }\n"])), function (props) {
  return props.theme.fontFamily;
}, function (props) {
  return props.theme.inputFontSize;
}, function (props) {
  return props.theme.inputBgd;
}, function (props) {
  return props.theme.effectPanelTextMain;
}, function (props) {
  return props.theme.inputBgd;
}, function (props) {
  return props.theme.inputBgdHover;
}, function (props) {
  return props.theme.effectPanelTextMain;
}, function (props) {
  return props.theme.fontFamily;
}, function (props) {
  return props.theme.inputFontSize;
}, function (props) {
  return props.theme.effectPanelTextMain;
}, function (props) {
  return props.theme.fontFamily;
}, function (props) {
  return props.theme.inputFontSize;
}, function (props) {
  return props.theme.inputFontSize;
}, function (props) {
  return props.theme.inputBgd;
});
var StyledDatePicker = exports.StyledDatePicker = (0, _styledComponents["default"])(_reactDatePicker["default"])(_templateObject53 || (_templateObject53 = (0, _taggedTemplateLiteral2["default"])(["\n  .react-date-picker {\n    display: inline-flex;\n    position: relative;\n    font-family: ", ";\n    font-size: ", ";\n  }\n  .react-date-picker,\n  .react-date-picker *,\n  .react-date-picker *:before,\n  .react-date-picker *:after {\n    -moz-box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box;\n  }\n  .react-date-picker__wrapper {\n    display: flex;\n    flex-grow: 1;\n    flex-shrink: 0;\n    width: 108px;\n    white-space: nowrap;\n    border-radius: 4px;\n  }\n  .react-date-picker__inputGroup {\n    min-width: calc((4px * 3) + 0.54em * 8 + 0.217em * 2);\n    flex-grow: 1;\n    padding: 4px 9px;\n    box-sizing: content-box;\n    background-color: ", ";\n    display: flex;\n    justify-content: end;\n    align-items: center;\n    height: 22px;\n    border: 1px solid ", ";\n    border-radius: 4px;\n  }\n\n  .react-date-picker__inputGroup:hover {\n    background-color: ", ";\n  }\n  .react-date-picker__inputGroup__divider {\n    padding: 1px 0;\n    white-space: pre;\n    color: ", ";\n  }\n  .react-date-picker__inputGroup__divider,\n  .react-date-picker__inputGroup__leadingZero {\n    display: inline-block;\n  }\n  .react-date-picker__inputGroup__input {\n    min-width: 0.54em;\n    height: 100%;\n    position: relative;\n    padding: 0 1px;\n    border: 0;\n    background: none;\n    color: ", ";\n    font: inherit;\n    font-size: ", ";\n    box-sizing: content-box;\n    -webkit-appearance: textfield;\n    -moz-appearance: textfield;\n    appearance: textfield;\n  }\n  .react-date-picker__inputGroup__input:focus {\n    outline: none;\n  }\n  .react-date-picker__inputGroup__input::-webkit-outer-spin-button,\n  .react-date-picker__inputGroup__input::-webkit-inner-spin-button {\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    appearance: none;\n    margin: 0;\n  }\n  .react-date-picker__inputGroup__input:invalid {\n    background: ", ";\n  }\n  .react-date-picker__inputGroup__input--hasLeadingZero {\n    margin-left: -0.54em;\n    padding-left: calc(1px + 0.54em);\n  }\n  .react-date-picker__calendar {\n    width: 257px;\n    max-width: 100vw;\n    z-index: 11;\n    color: ", ";\n    inset: auto !important;\n  }\n  .react-date-picker__calendar--closed {\n    display: none;\n  }\n  .react-date-picker__calendar .react-calendar {\n    border-width: thin;\n  }\n  .react-date-picker__button {\n    display: none;\n  }\n  .react-calendar {\n    width: 256px;\n    max-width: 100%;\n    color: ", ";\n    background: ", ";\n    border-radius: 0px 4px 4px 4px;\n    font-family: ", ";\n    line-height: 1.125em;\n    padding: 16px;\n  }\n  .react-calendar,\n  .react-calendar *,\n  .react-calendar *:before,\n  .react-calendar *:after {\n    -moz-box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box;\n  }\n  .react-calendar button {\n    margin: 0;\n    border: 0;\n    outline: none;\n  }\n  .react-calendar buttom:enabled {\n    color: ", ";\n  }\n  .react-calendar button:enabled:hover {\n    cursor: pointer;\n  }\n  .react-calendar__navigation {\n    display: flex;\n    height: 25px;\n    margin-bottom: 1em;\n  }\n  .react-calendar__navigation button {\n    min-width: 25px;\n    background: none;\n  }\n  .react-calendar__navigation button:enabled:hover,\n  .react-calendar__navigation button:enabled:focus {\n    background-color: ", ";\n  }\n  .react-calendar__month-view__weekdays {\n    text-align: center;\n    text-transform: uppercase;\n    font-weight: bold;\n  }\n  .react-calendar__month-view__weekdays__weekday {\n    color: ", ";\n    padding: 0.5em;\n    font-size: ", ";\n    abbr {\n      text-decoration: none;\n    }\n  }\n  .react-calendar__month-view__weekNumbers .react-calendar__tile {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-weight: bold;\n  }\n  .react-calendar__month-view__days__day--weekend {\n    color: ", ";\n  }\n  .react-calendar__month-view__days__day--neighboringMonth {\n    color: ", ";\n    opacity: 0.4;\n  }\n  .react-calendar__navigation__label__labelText,\n  .react-calendar__navigation__arrow {\n    color: ", ";\n  }\n  .react-calendar__year-view .react-calendar__tile,\n  .react-calendar__decade-view .react-calendar__tile,\n  .react-calendar__century-view .react-calendar__tile {\n    padding: 2em 0.5em;\n  }\n  .react-calendar__tile {\n    color: ", ";\n    max-width: 100%;\n    padding: 6px 4px;\n    background: none;\n    text-align: center;\n    font-size: ", ";\n    height: 30px;\n  }\n  .react-calendar__tile:enabled:hover,\n  .react-calendar__tile:enabled:focus {\n    background-color: ", ";\n    color: ", ";\n  }\n  .react-calendar__tile--now:enabled:hover,\n  .react-calendar__tile--now:enabled:focus {\n    background: ", ";\n    color: ", ";\n  }\n  .react-calendar__tile--hasActive {\n    background: ", ";\n  }\n  .react-calendar__tile--hasActive:enabled:hover,\n  .react-calendar__tile--hasActive:enabled:focus {\n    background: ", ";\n    color: ", ";\n  }\n  .react-calendar__tile--active {\n    background: ", ";\n    color: ", ";\n    border-radius: 4px;\n  }\n  .react-calendar__tile--active:enabled:hover,\n  .react-calendar__tile--active:enabled:focus {\n    background: ", ";\n  }\n  .calendar__navigation__label__labelText {\n    \u0441olor: ", ";\n  }\n"])), function (props) {
  return props.theme.fontFamily;
}, function (props) {
  return props.theme.inputFontSize;
}, function (props) {
  return props.theme.inputBgd;
}, function (props) {
  return props.theme.inputBgd;
}, function (props) {
  return props.theme.inputBgdHover;
}, function (props) {
  return props.theme.effectPanelTextMain;
}, function (props) {
  return props.theme.effectPanelTextMain;
}, function (props) {
  return props.theme.inputFontSize;
}, function (props) {
  return props.theme.inputBgd;
}, function (props) {
  return props.theme.effectPanelTextSecondary1;
}, function (props) {
  return props.theme.effectPanelTextSecondary1;
}, function (props) {
  return props.theme.inputBgdHover;
}, function (props) {
  return props.theme.fontFamily;
}, function (props) {
  return props.theme.effectPanelTextMain;
}, function (props) {
  return props.theme.inputBgdActive;
}, function (props) {
  return props.theme.effectPanelTextSecondary2;
}, function (props) {
  return props.theme.inputFontSize;
}, function (props) {
  return props.theme.effectPanelTextSecondary1;
}, function (props) {
  return props.theme.effectPanelTextSecondary3;
}, function (props) {
  return props.theme.effectPanelTextMain;
}, function (props) {
  return props.theme.effectPanelTextSecondary1;
}, function (props) {
  return props.theme.inputFontSize;
}, function (props) {
  return props.theme.primaryBtnBgd;
}, function (props) {
  return props.theme.primaryBtnActColor;
}, function (props) {
  return props.theme.primaryBtnBgd;
}, function (props) {
  return props.theme.effectPanelTextMain;
}, function (props) {
  return props.theme.primaryBtnActBgd;
}, function (props) {
  return props.theme.primaryBtnActBgd;
}, function (props) {
  return props.theme.effectPanelTextMain;
}, function (props) {
  return props.theme.primaryBtnActBgd;
}, function (props) {
  return props.theme.effectPanelTextMain;
}, function (props) {
  return props.theme.primaryBtnActBgd;
}, function (props) {
  return props.theme.effectPanelTextMain;
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3R5bGVzIiwicmVxdWlyZSIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdERhdGVQaWNrZXIiLCJfcmVhY3RUaW1lUGlja2VyIiwiX3JlYWN0VG9vbHRpcCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl90ZW1wbGF0ZU9iamVjdDYiLCJfdGVtcGxhdGVPYmplY3Q3IiwiX3RlbXBsYXRlT2JqZWN0OCIsIl90ZW1wbGF0ZU9iamVjdDkiLCJfdGVtcGxhdGVPYmplY3QxMCIsIl90ZW1wbGF0ZU9iamVjdDExIiwiX3RlbXBsYXRlT2JqZWN0MTIiLCJfdGVtcGxhdGVPYmplY3QxMyIsIl90ZW1wbGF0ZU9iamVjdDE0IiwiX3RlbXBsYXRlT2JqZWN0MTUiLCJfdGVtcGxhdGVPYmplY3QxNiIsIl90ZW1wbGF0ZU9iamVjdDE3IiwiX3RlbXBsYXRlT2JqZWN0MTgiLCJfdGVtcGxhdGVPYmplY3QxOSIsIl90ZW1wbGF0ZU9iamVjdDIwIiwiX3RlbXBsYXRlT2JqZWN0MjEiLCJfdGVtcGxhdGVPYmplY3QyMiIsIl90ZW1wbGF0ZU9iamVjdDIzIiwiX3RlbXBsYXRlT2JqZWN0MjQiLCJfdGVtcGxhdGVPYmplY3QyNSIsIl90ZW1wbGF0ZU9iamVjdDI2IiwiX3RlbXBsYXRlT2JqZWN0MjciLCJfdGVtcGxhdGVPYmplY3QyOCIsIl90ZW1wbGF0ZU9iamVjdDI5IiwiX3RlbXBsYXRlT2JqZWN0MzAiLCJfdGVtcGxhdGVPYmplY3QzMSIsIl90ZW1wbGF0ZU9iamVjdDMyIiwiX3RlbXBsYXRlT2JqZWN0MzMiLCJfdGVtcGxhdGVPYmplY3QzNCIsIl90ZW1wbGF0ZU9iamVjdDM1IiwiX3RlbXBsYXRlT2JqZWN0MzYiLCJfdGVtcGxhdGVPYmplY3QzNyIsIl90ZW1wbGF0ZU9iamVjdDM4IiwiX3RlbXBsYXRlT2JqZWN0MzkiLCJfdGVtcGxhdGVPYmplY3Q0MCIsIl90ZW1wbGF0ZU9iamVjdDQxIiwiX3RlbXBsYXRlT2JqZWN0NDIiLCJfdGVtcGxhdGVPYmplY3Q0MyIsIl90ZW1wbGF0ZU9iamVjdDQ0IiwiX3RlbXBsYXRlT2JqZWN0NDUiLCJfdGVtcGxhdGVPYmplY3Q0NiIsIl90ZW1wbGF0ZU9iamVjdDQ3IiwiX3RlbXBsYXRlT2JqZWN0NDgiLCJfdGVtcGxhdGVPYmplY3Q0OSIsIl90ZW1wbGF0ZU9iamVjdDUwIiwiX3RlbXBsYXRlT2JqZWN0NTEiLCJfdGVtcGxhdGVPYmplY3Q1MiIsIl90ZW1wbGF0ZU9iamVjdDUzIiwiU2VsZWN0VGV4dCIsImV4cG9ydHMiLCJzdHlsZWQiLCJzcGFuIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwibGFiZWxDb2xvciIsInNlbGVjdEZvbnRTaXplIiwiU2VsZWN0VGV4dEJvbGQiLCJ0ZXh0Q29sb3IiLCJJY29uUm91bmRTbWFsbCIsImRpdiIsInNlY29uZGFyeUJ0bkJnZEhvdmVyIiwic2Vjb25kYXJ5QnRuQ29sb3IiLCJDZW50ZXJGbGV4Ym94IiwiQ2VudGVyVmVydGljYWxGbGV4Ym94IiwiRW5kSG9yaXpvbnRhbEZsZXhib3giLCJTcGFjZUJldHdlZW5GbGV4Ym94IiwiU0JGbGV4Ym94SXRlbSIsIlNCRmxleGJveE5vTWFyZ2luIiwiUGFuZWxMYWJlbCIsImxhYmVsIiwiYXR0cnMiLCJjbGFzc05hbWUiLCJQYW5lbExhYmVsV3JhcHBlciIsIlBhbmVsTGFiZWxCb2xkIiwiUGFuZWxIZWFkZXJUaXRsZSIsImNsYXNzbmFtZXMiLCJQYW5lbEhlYWRlckNvbnRlbnQiLCJQYW5lbENvbnRlbnQiLCJwYW5lbENvbnRlbnRCYWNrZ3JvdW5kIiwiU2lkZVBhbmVsU2VjdGlvbiIsImRpc2FibGVkIiwiU2lkZVBhbmVsRGl2aWRlciIsInNpZGVwYW5lbERpdmlkZXJCb3JkZXIiLCJwYW5lbEJvcmRlckNvbG9yIiwic2lkZXBhbmVsRGl2aWRlck1hcmdpbiIsInNpZGVwYW5lbERpdmlkZXJIZWlnaHQiLCJUb29sdGlwIiwiUmVhY3RUb29sdGlwIiwidG9vbHRpcEZvbnRTaXplIiwidG9vbHRpcEJveFNoYWRvdyIsInRvb2x0aXBCZyIsInRvb2x0aXBDb2xvciIsIkJ1dHRvbiIsImJ1dHRvbiIsIm5lZ2F0aXZlIiwibmVnYXRpdmVCdG5CZ2QiLCJzZWNvbmRhcnkiLCJzZWNvbmRhcnlCdG5CZ2QiLCJsaW5rIiwibGlua0J0bkJnZCIsImZsb2F0aW5nIiwiZmxvYXRpbmdCdG5CZ2QiLCJjdGEiLCJjdGFCdG5CZ2QiLCJwcmltYXJ5QnRuQmdkIiwicHJpbWFyeUJ0blJhZGl1cyIsIm5lZ2F0aXZlQnRuQ29sb3IiLCJsaW5rQnRuQ29sb3IiLCJmbG9hdGluZ0J0bkNvbG9yIiwiY3RhQnRuQ29sb3IiLCJwcmltYXJ5QnRuQ29sb3IiLCJsYXJnZSIsInByaW1hcnlCdG5Gb250U2l6ZUxhcmdlIiwic21hbGwiLCJwcmltYXJ5QnRuRm9udFNpemVTbWFsbCIsInByaW1hcnlCdG5Gb250U2l6ZURlZmF1bHQiLCJidG5Gb250RmFtaWx5IiwidHJhbnNpdGlvbiIsIndpZHRoIiwibmVnYXRpdmVCdG5Cb3JkZXIiLCJzZWNvbmRhcnlCdG5Cb3JkZXIiLCJmbG9hdGluZ0J0bkJvcmRlciIsImxpbmtCdG5Cb3JkZXIiLCJwcmltYXJ5QnRuQm9yZGVyIiwibmVnYXRpdmVCdG5CZ2RIb3ZlciIsImxpbmtCdG5BY3RCZ2RIb3ZlciIsImZsb2F0aW5nQnRuQmdkSG92ZXIiLCJjdGFCdG5CZ2RIb3ZlciIsInByaW1hcnlCdG5CZ2RIb3ZlciIsIm5lZ2F0aXZlQnRuQWN0Q29sb3IiLCJzZWNvbmRhcnlCdG5BY3RDb2xvciIsImxpbmtCdG5BY3RDb2xvciIsImZsb2F0aW5nQnRuQWN0Q29sb3IiLCJjdGFCdG5BY3RDb2xvciIsInByaW1hcnlCdG5BY3RDb2xvciIsIklucHV0IiwiaW5wdXQiLCJzZWNvbmRhcnlJbnB1dCIsIklucHV0TGlnaHQiLCJpbnB1dExUIiwiVGV4dEFyZWEiLCJ0ZXh0YXJlYSIsIlRleHRBcmVhTGlnaHQiLCJJbmxpbmVJbnB1dCIsImlubGluZUlucHV0IiwiU3R5bGVkUGFuZWxIZWFkZXIiLCJhY3RpdmUiLCJwYW5lbEJhY2tncm91bmRIb3ZlciIsInBhbmVsQmFja2dyb3VuZCIsImxhYmVsUkNHQ29sb3JWYWx1ZXMiLCJqb2luIiwicGFuZWxIZWFkZXJIZWlnaHQiLCJwYW5lbEhlYWRlckJvcmRlclJhZGl1cyIsIlN0eWxlZFBhbmVsRHJvcGRvd24iLCJwYW5lbERyb3Bkb3duU2Nyb2xsQmFyIiwidHlwZSIsIm1vZGFsRHJvcGRvd25CYWNrZ3JvdW5kIiwicGFuZWxCb3hTaGFkb3ciLCJwYW5lbEJvcmRlclJhZGl1cyIsIkJ1dHRvbkdyb3VwIiwiRGF0YXNldFNxdWFyZSIsImJhY2tncm91bmRDb2xvciIsIlNlbGVjdGlvbkJ1dHRvbiIsInNlbGVjdGVkIiwic2VsZWN0aW9uQnRuQm9yZGVyQWN0Q29sb3IiLCJzZWxlY3Rpb25CdG5Cb3JkZXJDb2xvciIsInNlbGVjdGlvbkJ0bkFjdENvbG9yIiwic2VsZWN0aW9uQnRuQ29sb3IiLCJzZWxlY3Rpb25CdG5BY3RCZ2QiLCJzZWxlY3Rpb25CdG5CZ2QiLCJTdHlsZWRUYWJsZSIsInRhYmxlIiwicGFuZWxCYWNrZ3JvdW5kTFQiLCJ0aXRsZUNvbG9yTFQiLCJwYW5lbEJvcmRlckxUIiwiU3R5bGVkTW9kYWxDb250ZW50IiwidGV4dENvbG9yTFQiLCJtb2RhbExhdGVyYWxQYWRkaW5nIiwibWVkaWEiLCJwb3J0YWJsZSIsIm1vZGFsUG9ydGFibGVMYXRlcmFsUGFkZGluZyIsIlN0eWxlZE1vZGFsVmVydGljYWxQYW5lbCIsInBhbG0iLCJTdHlsZWRNb2RhbFNlY3Rpb24iLCJfcmVmIiwic3VidGV4dENvbG9yTFQiLCJTdHlsZWRNb2RhbElucHV0Rm9vdG5vdGUiLCJlcnJvciIsImVycm9yQ29sb3IiLCJTdHlsZWRNYXBDb250YWluZXIiLCJTdHlsZWRBdHRyYnV0aW9uIiwibWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcyIsIm1hcExpYkNzc0NsYXNzIiwiU3R5bGVkRXhwb3J0U2VjdGlvbiIsIl9wcm9wcyR0aGVtZSRmb250RmFtaSIsImZvbnRGYW1pbHlNZWRpdW0iLCJmb250RmFtaWx5IiwiU3R5bGVkRmlsdGVyZWRPcHRpb24iLCJTdHlsZWRUeXBlIiwiV2lkZ2V0Q29udGFpbmVyIiwiQm90dG9tV2lkZ2V0SW5uZXIiLCJib3R0b21XaWRnZXRCZ2QiLCJjb25jYXQiLCJib3R0b21Jbm5lclBkVmVydCIsImJvdHRvbUlubmVyUGRTaWRlIiwiYm90dG9tUGFuZWxHYXAiLCJNYXBDb250cm9sQnV0dG9uIiwiZmxvYXRpbmdCdG5Cb3JkZXJIb3ZlciIsIlN0eWxlZEZpbHRlckNvbnRlbnQiLCJUcnVuY2F0ZWRUaXRsZVRleHQiLCJDaGVja01hcmsiLCJTdHlsZWRUaW1lUGlja2VyIiwiVGltZVBpY2tlciIsImlucHV0Rm9udFNpemUiLCJpbnB1dEJnZCIsImVmZmVjdFBhbmVsVGV4dE1haW4iLCJpbnB1dEJnZEhvdmVyIiwiU3R5bGVkRGF0ZVBpY2tlciIsIkRhdGVQaWNrZXIiLCJlZmZlY3RQYW5lbFRleHRTZWNvbmRhcnkxIiwiaW5wdXRCZ2RBY3RpdmUiLCJlZmZlY3RQYW5lbFRleHRTZWNvbmRhcnkyIiwiZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5MyIsInByaW1hcnlCdG5BY3RCZ2QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge21lZGlhfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge1JHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAncmVhY3QtZGF0ZS1waWNrZXInO1xuaW1wb3J0IFRpbWVQaWNrZXIgZnJvbSAncmVhY3QtdGltZS1waWNrZXInO1xuaW1wb3J0IFJlYWN0VG9vbHRpcCwge1Rvb2x0aXBQcm9wc30gZnJvbSAncmVhY3QtdG9vbHRpcCc7XG5pbXBvcnQgc3R5bGVkLCB7SVN0eWxlZENvbXBvbmVudH0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge0Jhc2VDb21wb25lbnRQcm9wc30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgU2VsZWN0VGV4dCA9IHN0eWxlZC5zcGFuYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNlbGVjdEZvbnRTaXplfTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcblxuICBpIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBTZWxlY3RUZXh0Qm9sZCA9IHN0eWxlZChTZWxlY3RUZXh0KWBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbmA7XG5cbmV4cG9ydCBjb25zdCBJY29uUm91bmRTbWFsbCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxOHB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDlweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zZWNvbmRhcnlCdG5CZ2RIb3Zlcn07XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNlY29uZGFyeUJ0bkNvbG9yfTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQmdkSG92ZXJ9O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgQ2VudGVyRmxleGJveCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5leHBvcnQgY29uc3QgQ2VudGVyVmVydGljYWxGbGV4Ym94ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmV4cG9ydCBjb25zdCBFbmRIb3Jpem9udGFsRmxleGJveCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBlbmQ7XG5gO1xuXG5leHBvcnQgY29uc3QgU3BhY2VCZXR3ZWVuRmxleGJveCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWFyZ2luLWxlZnQ6IC0xNnB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IFNCRmxleGJveEl0ZW0gPSBzdHlsZWQuZGl2YFxuICBmbGV4LWdyb3c6IDE7XG4gIG1hcmdpbi1sZWZ0OiAxNnB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IFNCRmxleGJveE5vTWFyZ2luID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuYDtcblxuZXhwb3J0IGNvbnN0IFBhbmVsTGFiZWwgPSBzdHlsZWQubGFiZWwuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdzaWRlLXBhbmVsLXBhbmVsX19sYWJlbCdcbn0pYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDExcHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIG1hcmdpbi1ib3R0b206IDRweDtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG5gO1xuXG5leHBvcnQgY29uc3QgUGFuZWxMYWJlbFdyYXBwZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2lkZS1wYW5lbC1wYW5lbF9fbGFiZWwtd3JhcHBlcidcbn0pYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogc2VsZi1zdGFydDtcbmA7XG5cbmV4cG9ydCBjb25zdCBQYW5lbExhYmVsQm9sZCA9IHN0eWxlZChQYW5lbExhYmVsKWBcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbmA7XG5cbmV4cG9ydCBjb25zdCBQYW5lbEhlYWRlclRpdGxlID0gc3R5bGVkLnNwYW4uYXR0cnMocHJvcHMgPT4gKHtcbiAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKCdzaWRlLXBhbmVsLXBhbmVsX19oZWFkZXJfX3RpdGxlJywgcHJvcHMuY2xhc3NOYW1lKVxufSkpYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjQzcHg7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuYDtcblxuZXhwb3J0IGNvbnN0IFBhbmVsSGVhZGVyQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIHBhZGRpbmctbGVmdDogMTJweDtcblxuICAuaWNvbiB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFBhbmVsQ29udGVudCA9IHN0eWxlZC5kaXYuYXR0cnMocHJvcHMgPT4gKHtcbiAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKCdzaWRlLXBhbmVsLXBhbmVsX19jb250ZW50JywgcHJvcHMuY2xhc3NOYW1lKVxufSkpYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQ29udGVudEJhY2tncm91bmR9O1xuICBwYWRkaW5nOiAxMnB4O1xuYDtcblxuaW50ZXJmYWNlIFNpZGVQYW5lbFNlY3Rpb25Qcm9wcyB7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IFNpZGVQYW5lbFNlY3Rpb24gPSBzdHlsZWQuZGl2LmF0dHJzKHByb3BzID0+ICh7XG4gIGNsYXNzTmFtZTogY2xhc3NuYW1lcygnc2lkZS1wYW5lbC1zZWN0aW9uJywgcHJvcHMuY2xhc3NOYW1lKVxufSkpPFNpZGVQYW5lbFNlY3Rpb25Qcm9wcz5gXG4gIG1hcmdpbi1ib3R0b206IDEycHg7XG5cbiAgb3BhY2l0eTogJHtwcm9wcyA9PiAocHJvcHMuZGlzYWJsZWQgPyAwLjQgOiAxKX07XG4gIHBvaW50ZXItZXZlbnRzOiAke3Byb3BzID0+IChwcm9wcy5kaXNhYmxlZCA/ICdub25lJyA6ICdhbGwnKX07XG5gO1xuXG5leHBvcnQgY29uc3QgU2lkZVBhbmVsRGl2aWRlciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdzaWRlLXBhbmVsLWRpdmlkZXInXG59KWBcbiAgYm9yZGVyLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zaWRlcGFuZWxEaXZpZGVyQm9yZGVyfSBzb2xpZFxuICAgICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCb3JkZXJDb2xvcn07XG4gIG1hcmdpbi1ib3R0b206ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2lkZXBhbmVsRGl2aWRlck1hcmdpbn1weDtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNpZGVwYW5lbERpdmlkZXJIZWlnaHR9cHg7XG5gO1xuXG50eXBlIFRvb2x0aXBBdHRyc1Byb3BzID0ge2ludGVyYWN0aXZlPzogYm9vbGVhbn0gJiBUb29sdGlwUHJvcHMgJiBCYXNlQ29tcG9uZW50UHJvcHM7XG5cbmV4cG9ydCBjb25zdCBUb29sdGlwOiBJU3R5bGVkQ29tcG9uZW50PCd3ZWInLCBUb29sdGlwQXR0cnNQcm9wcz4gPSBzdHlsZWQoXG4gIFJlYWN0VG9vbHRpcFxuKTxUb29sdGlwUHJvcHM+YFxuICAmLl9fcmVhY3RfY29tcG9uZW50X3Rvb2x0aXAge1xuICAgIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50b29sdGlwRm9udFNpemV9O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgcGFkZGluZzogMTBweCAxOHB4O1xuICAgIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudG9vbHRpcEJveFNoYWRvd307XG5cbiAgICAmLnR5cGUtZGFyayB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRvb2x0aXBCZ307XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50b29sdGlwQ29sb3J9O1xuICAgICAgJi5wbGFjZS1ib3R0b20ge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRvb2x0aXBCZ307XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5wbGFjZS10b3Age1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRvb2x0aXBCZ307XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5wbGFjZS1yaWdodCB7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50b29sdGlwQmd9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYucGxhY2UtbGVmdCB7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRvb2x0aXBCZ307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCB0eXBlIEJ1dHRvblByb3BzID0gUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+ICYge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlZj86IFJlYWN0LkZvcndhcmRlZFJlZjxIVE1MRWxlbWVudD47XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICBuZWdhdGl2ZT86IGJvb2xlYW47XG4gIHNlY29uZGFyeT86IGJvb2xlYW47XG4gIGxpbms/OiBib29sZWFuO1xuICBmbG9hdGluZz86IGJvb2xlYW47XG4gIGN0YT86IGJvb2xlYW47XG4gIGxhcmdlPzogYm9vbGVhbjtcbiAgc21hbGw/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHdpZHRoPzogc3RyaW5nO1xuICBpbmFjdGl2ZT86IGJvb2xlYW47XG4gIHNpemU/OiBzdHJpbmc7XG59O1xuXG4vLyB0aGlzIG5lZWRzIHRvIGJlIGFuIGFjdHVhbCBidXR0b24gdG8gYmUgYWJsZSB0byBzZXQgZGlzYWJsZWQgYXR0cmlidXRlIGNvcnJlY3RseVxuZXhwb3J0IGNvbnN0IEJ1dHRvbiA9IHN0eWxlZC5idXR0b24uYXR0cnMocHJvcHMgPT4gKHtcbiAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKCdidXR0b24nLCBwcm9wcy5jbGFzc05hbWUpXG59KSk8QnV0dG9uUHJvcHM+YFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMubmVnYXRpdmVcbiAgICAgID8gcHJvcHMudGhlbWUubmVnYXRpdmVCdG5CZ2RcbiAgICAgIDogcHJvcHMuc2Vjb25kYXJ5XG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUJ0bkJnZFxuICAgICAgOiBwcm9wcy5saW5rXG4gICAgICA/IHByb3BzLnRoZW1lLmxpbmtCdG5CZ2RcbiAgICAgIDogcHJvcHMuZmxvYXRpbmdcbiAgICAgID8gcHJvcHMudGhlbWUuZmxvYXRpbmdCdG5CZ2RcbiAgICAgIDogcHJvcHMuY3RhXG4gICAgICA/IHByb3BzLnRoZW1lLmN0YUJ0bkJnZFxuICAgICAgOiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuQmdkfTtcbiAgYm9yZGVyLXJhZGl1czogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuUmFkaXVzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5uZWdhdGl2ZVxuICAgICAgPyBwcm9wcy50aGVtZS5uZWdhdGl2ZUJ0bkNvbG9yXG4gICAgICA6IHByb3BzLnNlY29uZGFyeVxuICAgICAgPyBwcm9wcy50aGVtZS5zZWNvbmRhcnlCdG5Db2xvclxuICAgICAgOiBwcm9wcy5saW5rXG4gICAgICA/IHByb3BzLnRoZW1lLmxpbmtCdG5Db2xvclxuICAgICAgOiBwcm9wcy5mbG9hdGluZ1xuICAgICAgPyBwcm9wcy50aGVtZS5mbG9hdGluZ0J0bkNvbG9yXG4gICAgICA6IHByb3BzLmN0YVxuICAgICAgPyBwcm9wcy50aGVtZS5jdGFCdG5Db2xvclxuICAgICAgOiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuQ29sb3J9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5sYXJnZVxuICAgICAgPyBwcm9wcy50aGVtZS5wcmltYXJ5QnRuRm9udFNpemVMYXJnZVxuICAgICAgOiBwcm9wcy5zbWFsbFxuICAgICAgPyBwcm9wcy50aGVtZS5wcmltYXJ5QnRuRm9udFNpemVTbWFsbFxuICAgICAgOiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuRm9udFNpemVEZWZhdWx0fTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1mYW1pbHk6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYnRuRm9udEZhbWlseX07XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBsZXR0ZXItc3BhY2luZzogMC4zcHg7XG4gIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICBvdXRsaW5lOiAwO1xuICBwYWRkaW5nOiAke3Byb3BzID0+IChwcm9wcy5sYXJnZSA/ICcxNHB4IDMycHgnIDogcHJvcHMuc21hbGwgPyAnNnB4IDlweCcgOiAnOXB4IDEycHgnKX07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50cmFuc2l0aW9ufTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGggfHwgJ2F1dG8nfTtcbiAgb3BhY2l0eTogJHtwcm9wcyA9PiAocHJvcHMuZGlzYWJsZWQgPyAwLjQgOiAxKX07XG4gIHBvaW50ZXItZXZlbnRzOiAke3Byb3BzID0+IChwcm9wcy5kaXNhYmxlZCA/ICdub25lJyA6ICdhbGwnKX07XG4gIGJvcmRlcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLm5lZ2F0aXZlXG4gICAgICA/IHByb3BzLnRoZW1lLm5lZ2F0aXZlQnRuQm9yZGVyXG4gICAgICA6IHByb3BzLnNlY29uZGFyeVxuICAgICAgPyBwcm9wcy50aGVtZS5zZWNvbmRhcnlCdG5Cb3JkZXJcbiAgICAgIDogcHJvcHMuZmxvYXRpbmdcbiAgICAgID8gcHJvcHMudGhlbWUuZmxvYXRpbmdCdG5Cb3JkZXJcbiAgICAgIDogcHJvcHMubGlua1xuICAgICAgPyBwcm9wcy50aGVtZS5saW5rQnRuQm9yZGVyXG4gICAgICA6IHByb3BzLnRoZW1lLnByaW1hcnlCdG5Cb3JkZXJ9O1xuICAmOmhvdmVyLFxuICAmOmZvY3VzLFxuICAmOmFjdGl2ZSxcbiAgJi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLm5lZ2F0aXZlXG4gICAgICAgID8gcHJvcHMudGhlbWUubmVnYXRpdmVCdG5CZ2RIb3ZlclxuICAgICAgICA6IHByb3BzLnNlY29uZGFyeVxuICAgICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUJ0bkJnZEhvdmVyXG4gICAgICAgIDogcHJvcHMubGlua1xuICAgICAgICA/IHByb3BzLnRoZW1lLmxpbmtCdG5BY3RCZ2RIb3ZlclxuICAgICAgICA6IHByb3BzLmZsb2F0aW5nXG4gICAgICAgID8gcHJvcHMudGhlbWUuZmxvYXRpbmdCdG5CZ2RIb3ZlclxuICAgICAgICA6IHByb3BzLmN0YVxuICAgICAgICA/IHByb3BzLnRoZW1lLmN0YUJ0bkJnZEhvdmVyXG4gICAgICAgIDogcHJvcHMudGhlbWUucHJpbWFyeUJ0bkJnZEhvdmVyfTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PlxuICAgICAgcHJvcHMubmVnYXRpdmVcbiAgICAgICAgPyBwcm9wcy50aGVtZS5uZWdhdGl2ZUJ0bkFjdENvbG9yXG4gICAgICAgIDogcHJvcHMuc2Vjb25kYXJ5XG4gICAgICAgID8gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQWN0Q29sb3JcbiAgICAgICAgOiBwcm9wcy5saW5rXG4gICAgICAgID8gcHJvcHMudGhlbWUubGlua0J0bkFjdENvbG9yXG4gICAgICAgIDogcHJvcHMuZmxvYXRpbmdcbiAgICAgICAgPyBwcm9wcy50aGVtZS5mbG9hdGluZ0J0bkFjdENvbG9yXG4gICAgICAgIDogcHJvcHMuY3RhXG4gICAgICAgID8gcHJvcHMudGhlbWUuY3RhQnRuQWN0Q29sb3JcbiAgICAgICAgOiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuQWN0Q29sb3J9O1xuICB9XG5cbiAgc3ZnIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICR7cHJvcHMgPT4gKHByb3BzLmxhcmdlID8gJzEwcHgnIDogcHJvcHMuc21hbGwgPyAnNnB4JyA6ICc4cHgnKX07XG4gIH1cbmA7XG5cbmludGVyZmFjZSBJbnB1dFByb3BzIHtcbiAgc2Vjb25kYXJ5PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IElucHV0ID0gc3R5bGVkLmlucHV0PElucHV0UHJvcHM+YFxuICAke3Byb3BzID0+IChwcm9wcy5zZWNvbmRhcnkgPyBwcm9wcy50aGVtZS5zZWNvbmRhcnlJbnB1dCA6IHByb3BzLnRoZW1lLmlucHV0KX07XG5gO1xuXG5leHBvcnQgY29uc3QgSW5wdXRMaWdodCA9IHN0eWxlZC5pbnB1dGBcbiAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dExUfTtcbmA7XG5cbmV4cG9ydCBjb25zdCBUZXh0QXJlYSA9IHN0eWxlZC50ZXh0YXJlYTxJbnB1dFByb3BzPmBcbiAgJHtwcm9wcyA9PiAocHJvcHMuc2Vjb25kYXJ5ID8gcHJvcHMudGhlbWUuc2Vjb25kYXJ5SW5wdXQgOiBwcm9wcy50aGVtZS5pbnB1dCl9O1xuYDtcbmV4cG9ydCBjb25zdCBUZXh0QXJlYUxpZ2h0ID0gc3R5bGVkLnRleHRhcmVhYFxuICAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0TFR9IGhlaWdodDogYXV0bztcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuYDtcblxuZXhwb3J0IGNvbnN0IElubGluZUlucHV0ID0gc3R5bGVkKElucHV0KWBcbiAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbmxpbmVJbnB1dH07XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0eWxlZFBhbmVsSGVhZGVyUHJvcHMge1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBsYWJlbFJDR0NvbG9yVmFsdWVzPzogUkdCQ29sb3IgfCBudWxsO1xuICB3YXJuaW5nPzogYm9vbGVhbjtcbiAgaXNWYWxpZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRQYW5lbEhlYWRlciA9IHN0eWxlZC5kaXY8U3R5bGVkUGFuZWxIZWFkZXJQcm9wcz5gXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5hY3RpdmUgPyBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3ZlciA6IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZH07XG4gIGJvcmRlci1sZWZ0OiAzcHggc29saWRcbiAgICByZ2IoXG4gICAgICAke3Byb3BzID0+IChwcm9wcy5sYWJlbFJDR0NvbG9yVmFsdWVzID8gcHJvcHMubGFiZWxSQ0dDb2xvclZhbHVlcy5qb2luKCcsJykgOiAndHJhbnNwYXJlbnQnKX1cbiAgICApO1xuICBwYWRkaW5nOiAwIDEwcHggMCAwO1xuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxIZWFkZXJIZWlnaHR9cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEhlYWRlckJvcmRlclJhZGl1c307XG4gIHRyYW5zaXRpb246ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudHJhbnNpdGlvbn07XG5gO1xuXG5pbnRlcmZhY2UgU3R5bGVkUGFuZWxEcm9wZG93blByb3BzIHtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFN0eWxlZFBhbmVsRHJvcGRvd24gPSBzdHlsZWQuZGl2PFN0eWxlZFBhbmVsRHJvcGRvd25Qcm9wcz5gXG4gICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxEcm9wZG93blNjcm9sbEJhcn1cbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLnR5cGUgPT09ICdsaWdodCcgPyBwcm9wcy50aGVtZS5tb2RhbERyb3Bkb3duQmFja2dyb3VuZCA6IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZH07XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCb3hTaGFkb3d9O1xuICBib3JkZXItcmFkaXVzOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQm9yZGVyUmFkaXVzfTtcbiAgbWF4LWhlaWdodDogNTAwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogOTk5O1xuYDtcblxuZXhwb3J0IGNvbnN0IEJ1dHRvbkdyb3VwID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgLmJ1dHRvbiB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBtYXJnaW4tbGVmdDogMnB4O1xuICB9XG4gIC5idXR0b246Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucHJpbWFyeUJ0blJhZGl1c307XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuUmFkaXVzfTtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICAuYnV0dG9uOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnByaW1hcnlCdG5SYWRpdXN9O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnByaW1hcnlCdG5SYWRpdXN9O1xuICB9XG5gO1xuXG5pbnRlcmZhY2UgRGF0YXNldFNxdWFyZVByb3BzIHtcbiAgYmFja2dyb3VuZENvbG9yOiBSR0JDb2xvcjtcbn1cblxuZXhwb3J0IGNvbnN0IERhdGFzZXRTcXVhcmUgPSBzdHlsZWQuZGl2PERhdGFzZXRTcXVhcmVQcm9wcz5gXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwcHg7XG4gIGhlaWdodDogMTBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKCR7cHJvcHMgPT4gcHJvcHMuYmFja2dyb3VuZENvbG9yLmpvaW4oJywnKX0pO1xuICBtYXJnaW4tcmlnaHQ6IDEycHg7XG5gO1xuXG5pbnRlcmZhY2UgU2VsZWN0aW9uQnV0dG9uUHJvcHMge1xuICBzZWxlY3RlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBTZWxlY3Rpb25CdXR0b24gPSBzdHlsZWQuZGl2PFNlbGVjdGlvbkJ1dHRvblByb3BzPmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkXG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuc2VsZWN0ZWRcbiAgICAgICAgPyBwcm9wcy50aGVtZS5zZWxlY3Rpb25CdG5Cb3JkZXJBY3RDb2xvclxuICAgICAgICA6IHByb3BzLnRoZW1lLnNlbGVjdGlvbkJ0bkJvcmRlckNvbG9yfTtcbiAgY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5zZWxlY3RlZCA/IHByb3BzLnRoZW1lLnNlbGVjdGlvbkJ0bkFjdENvbG9yIDogcHJvcHMudGhlbWUuc2VsZWN0aW9uQnRuQ29sb3J9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMuc2VsZWN0ZWQgPyBwcm9wcy50aGVtZS5zZWxlY3Rpb25CdG5BY3RCZ2QgOiBwcm9wcy50aGVtZS5zZWxlY3Rpb25CdG5CZ2R9O1xuXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIHBhZGRpbmc6IDZweCAxNnB4O1xuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNlbGVjdGlvbkJ0bkFjdENvbG9yfTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNlbGVjdGlvbkJ0bkJvcmRlckFjdENvbG9yfTtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZFRhYmxlID0gc3R5bGVkLnRhYmxlYFxuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG5cbiAgdGhlYWQge1xuICAgIHRyIHRoIHtcbiAgICAgIGJhY2tncm91bmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kTFR9O1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGl0bGVDb2xvckxUfTtcbiAgICAgIHBhZGRpbmc6IDE4cHggMTJweDtcbiAgICAgIHRleHQtYWxpZ246IHN0YXJ0O1xuICAgIH1cbiAgfVxuXG4gIHRib2R5IHtcbiAgICB0ciB0ZCB7XG4gICAgICBib3JkZXItYm90dG9tOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQm9yZGVyTFR9O1xuICAgICAgcGFkZGluZzogMTJweDtcbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRNb2RhbENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZExUfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yTFR9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBmb250LXNpemU6IDEwcHg7XG4gIHBhZGRpbmc6IDI0cHggJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5tb2RhbExhdGVyYWxQYWRkaW5nfTtcbiAgbWFyZ2luOiAwIC0ke3Byb3BzID0+IHByb3BzLnRoZW1lLm1vZGFsTGF0ZXJhbFBhZGRpbmd9O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICR7bWVkaWEucG9ydGFibGVgXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiAxNnB4ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubW9kYWxQb3J0YWJsZUxhdGVyYWxQYWRkaW5nfTtcbiAgICBtYXJnaW46IDAgLSR7cHJvcHMgPT4gcHJvcHMudGhlbWUubW9kYWxQb3J0YWJsZUxhdGVyYWxQYWRkaW5nfTtcbiAgYH07XG5gO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkTW9kYWxWZXJ0aWNhbFBhbmVsID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ21vZGFsLXZlcnRpY2FsLXBhbmVsJ1xufSlgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBmb250LXNpemU6IDEycHg7XG5cbiAgLm1vZGFsLXNlY3Rpb246Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgJHttZWRpYS5wYWxtYFxuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICBgfTtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZE1vZGFsU2VjdGlvbiA9IHN0eWxlZC5kaXYuYXR0cnMoKHtjbGFzc05hbWV9KSA9PiAoe1xuICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoJ21vZGFsLXNlY3Rpb24nLCBjbGFzc05hbWUpXG59KSlgXG4gIG1hcmdpbi1ib3R0b206IDMycHg7XG5cbiAgLm1vZGFsLXNlY3Rpb24tdGl0bGUge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIH1cbiAgLm1vZGFsLXNlY3Rpb24tc3VidGl0bGUge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvckxUfTtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gIH1cblxuICAke21lZGlhLnBvcnRhYmxlYFxuICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gIGB9O1xuICAke21lZGlhLnBhbG1gXG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgYH07XG5gO1xuXG5pbnRlcmZhY2UgU3R5bGVkTW9kYWxJbnB1dEZvb3Rub3RlUHJvcHMge1xuICBlcnJvcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRNb2RhbElucHV0Rm9vdG5vdGUgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbW9kYWwtaW5wdXRfX2Zvb3Rub3RlJ1xufSk8U3R5bGVkTW9kYWxJbnB1dEZvb3Rub3RlUHJvcHM+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBjb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuZXJyb3IgPyBwcm9wcy50aGVtZS5lcnJvckNvbG9yIDogcHJvcHMudGhlbWUuc3VidGV4dENvbG9yTFQpfTtcbiAgZm9udC1zaXplOiAxMHB4O1xuYDtcbi8qKlxuICogTmV3ZXIgdmVyc2lvbnMgb2YgbWFwYm94LmdsIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSBiYW5uZXIgb24gdG9wIG9mIHRoZSBtYXAgYnkgZGVmYXVsdFxuICogd2hpY2ggd2lsbCBjYXVzZSB0aGUgbWFwIHRvIGRpc3BsYXkgcG9pbnRzIGluIHRoZSB3cm9uZyBsb2NhdGlvbnNcbiAqIFRoaXMgd29ya2Fyb3VuZCB3aWxsIGhpZGUgdGhlIGVycm9yIGJhbm5lci5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0eWxlZE1hcENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIC5tYXBsaWJyZWdsLW1hcCB7XG4gICAgLm1hcGxpYnJlZ2wtbWlzc2luZy1jc3Mge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLm1hcGxpYnJlZ2wtY3RybC1hdHRyaWIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbiAgLm1hcGJveGdsLW1hcCB7XG4gICAgLm1hcGJveGdsLW1pc3NpbmctY3NzIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5tYXBib3hnbC1jdHJsLWF0dHJpYiB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IHR5cGUgU3R5bGVkQXR0cmJ1dGlvblByb3BzID0ge1xuICBtYXBMaWJDc3NDbGFzczogc3RyaW5nO1xuICBtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgU3R5bGVkQXR0cmJ1dGlvbiA9IHN0eWxlZC5kaXYuYXR0cnM8U3R5bGVkQXR0cmJ1dGlvblByb3BzPihwcm9wcyA9PiAoe1xuICBjbGFzc05hbWU6IHByb3BzLm1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3Ncbn0pKTxTdHlsZWRBdHRyYnV0aW9uUHJvcHM+YFxuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDAgMTBweCA2cHg7XG4gIHotaW5kZXg6IDE7XG4gIC5hdHRyaXRpb24tbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuXG4gICAgYSxcbiAgICAucGlwZS1zZXBhcmF0b3Ige1xuICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgICB9XG5cbiAgICAucGlwZS1zZXBhcmF0b3Ige1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC5hdHRyaXRpb24tbG9nbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxhYmVsQ29sb3J9O1xuXG4gICAgYS4ke3Byb3BzID0+IHByb3BzLm1hcExpYkNzc0NsYXNzfS1jdHJsLWxvZ28ge1xuICAgICAgd2lkdGg6IDcycHg7XG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgIH1cbiAgfVxuICBhLFxuICAucGlwZS1zZXBhcmF0b3Ige1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgfVxuXG4gICR7bWVkaWEucGFsbWBcbiAgICAuYXR0cml0aW9uLWxvZ28gYSB7XG4gICAgICB3aWR0aDogNjBweDtcbiAgICB9XG5cbiAgICAuYXR0cml0aW9uLWxpbmsge1xuICAgICAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgICB9XG4gIGB9O1xuYDtcblxuZXhwb3J0IGludGVyZmFjZSBTdHlsZWRFeHBvcnRTZWN0aW9uUHJvcHMge1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRFeHBvcnRTZWN0aW9uID0gc3R5bGVkLmRpdjxTdHlsZWRFeHBvcnRTZWN0aW9uUHJvcHM+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBtYXJnaW46IDM1cHggMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckxUfTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBvcGFjaXR5OiAke3Byb3BzID0+IChwcm9wcy5kaXNhYmxlZCA/IDAuMyA6IDEpfTtcbiAgcG9pbnRlci1ldmVudHM6ICR7cHJvcHMgPT4gKHByb3BzLmRpc2FibGVkID8gJ25vbmUnIDogJ2FsbCcpfTtcblxuICAuZGVzY3JpcHRpb24ge1xuICAgIHdpZHRoOiAxODVweDtcbiAgICAudGl0bGUge1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRGYW1pbHlNZWRpdW0gPz8gcHJvcHMudGhlbWUuZm9udEZhbWlseX07XG4gICAgfVxuICAgIC5zdWJ0aXRsZSB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3JMVH07XG4gICAgICBmb250LXNpemU6IDExcHg7XG4gICAgfVxuICB9XG4gIC53YXJuaW5nIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lcnJvckNvbG9yfTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG4gIC5kZXNjcmlwdGlvbi5mdWxsIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuICAuc2VsZWN0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBmbGV4OiAxO1xuICAgIHBhZGRpbmctbGVmdDogNTBweDtcblxuICAgIHNlbGVjdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICBsaW5lLWhlaWdodDogMS41ZW07XG4gICAgICBwYWRkaW5nOiAwLjVlbSAzLjVlbSAwLjVlbSAxZW07XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIHdpZHRoOiAyNTBweDtcbiAgICAgIGhlaWdodDogMzZweDtcblxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCB0cmFuc3BhcmVudCA1MCUsIGdyYXkgNTAlKSxcbiAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgZ3JheSA1MCUsIHRyYW5zcGFyZW50IDUwJSksIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2NjYywgI2NjYyk7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgLSAyMHB4KSBjYWxjKDFlbSArIDJweCksIGNhbGMoMTAwJSAtIDE1cHgpIGNhbGMoMWVtICsgMnB4KSxcbiAgICAgICAgY2FsYygxMDAlIC0gMi41ZW0pIDQuNWVtO1xuICAgICAgYmFja2dyb3VuZC1zaXplOiA1cHggNXB4LCA1cHggNXB4LCAxcHggMS41ZW07XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIH1cblxuICAgIHNlbGVjdDpmb2N1cyB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIGdyZWVuIDUwJSwgdHJhbnNwYXJlbnQgNTAlKSxcbiAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQgNTAlLCBncmVlbiA1MCUpLCBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNjY2MsICNjY2MpO1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlIC0gMTVweCkgMWVtLCBjYWxjKDEwMCUgLSAyMHB4KSAxZW0sIGNhbGMoMTAwJSAtIDIuNWVtKSA0LjVlbTtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogNXB4IDVweCwgNXB4IDVweCwgMXB4IDEuNWVtO1xuICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgIGJvcmRlci1jb2xvcjogZ3JlZW47XG4gICAgICBvdXRsaW5lOiAwO1xuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZEZpbHRlcmVkT3B0aW9uID0gc3R5bGVkKFNlbGVjdGlvbkJ1dHRvbilgXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW46IDRweDtcbiAgcGFkZGluZzogOHB4IDEycHg7XG4gIHdpZHRoOiAxNDBweDtcblxuICAuZmlsdGVyLW9wdGlvbi10aXRsZSB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yTFR9O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG4gIC5maWx0ZXItb3B0aW9uLXN1YnRpdGxlIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3JMVH07XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkVHlwZSA9IHN0eWxlZChTZWxlY3Rpb25CdXR0b24pYFxuICBoZWlnaHQ6IDEwMHB4O1xuICBtYXJnaW46IDRweDtcbiAgcGFkZGluZzogNnB4IDEwcHg7XG4gIHdpZHRoOiAxMDBweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBXaWRnZXRDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICB6LWluZGV4OiAxO1xuYDtcblxuZXhwb3J0IGNvbnN0IEJvdHRvbVdpZGdldElubmVyID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ib3R0b21XaWRnZXRCZ2R9O1xuICBwYWRkaW5nOiAke3Byb3BzID0+IGAke3Byb3BzLnRoZW1lLmJvdHRvbUlubmVyUGRWZXJ0fXB4ICR7cHJvcHMudGhlbWUuYm90dG9tSW5uZXJQZFNpZGV9cHhgfTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tdG9wOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJvdHRvbVBhbmVsR2FwfXB4O1xuXG4gICR7bWVkaWEucG9ydGFibGVgXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCb3JkZXJDb2xvcn07XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQm9yZGVyQ29sb3J9O1xuICAgIHBhZGRpbmc6IDEycHggMTJweDtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICBgfVxuYDtcblxuaW50ZXJmYWNlIE1hcENvbnRyb2xCdXR0b25Qcm9wcyB7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNYXBDb250cm9sQnV0dG9uID0gc3R5bGVkKEJ1dHRvbikuYXR0cnMocHJvcHMgPT4gKHtcbiAgY2xhc3NOYW1lOiBjbGFzc25hbWVzKCdtYXAtY29udHJvbC1idXR0b24nLCBwcm9wcy5jbGFzc05hbWUpXG59KSk8TWFwQ29udHJvbEJ1dHRvblByb3BzPmBcbiAgYm94LXNoYWRvdzogMCA2cHggMTJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNik7XG4gIGhlaWdodDogMzJweDtcbiAgd2lkdGg6IDMycHg7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5hY3RpdmUgPyBwcm9wcy50aGVtZS5mbG9hdGluZ0J0bkJnZEhvdmVyIDogcHJvcHMudGhlbWUuZmxvYXRpbmdCdG5CZ2R9O1xuICBjb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmFjdGl2ZSA/IHByb3BzLnRoZW1lLmZsb2F0aW5nQnRuQWN0Q29sb3IgOiBwcm9wcy50aGVtZS5mbG9hdGluZ0J0bkNvbG9yfTtcbiAgYm9yZGVyOiAke3Byb3BzID0+XG4gICAgcHJvcHMuYWN0aXZlID8gcHJvcHMudGhlbWUuZmxvYXRpbmdCdG5Cb3JkZXJIb3ZlciA6IHByb3BzLnRoZW1lLmZsb2F0aW5nQnRuQm9yZGVyfTtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzLFxuICAmOmFjdGl2ZSxcbiAgJi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZmxvYXRpbmdCdG5CZ2RIb3Zlcn07XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZmxvYXRpbmdCdG5BY3RDb2xvcn07XG4gICAgYm9yZGVyOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZsb2F0aW5nQnRuQm9yZGVySG92ZXJ9O1xuICB9XG4gIHN2ZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkRmlsdGVyQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxDb250ZW50QmFja2dyb3VuZH07XG4gIHBhZGRpbmc6IDEycHg7XG5gO1xuXG5leHBvcnQgY29uc3QgVHJ1bmNhdGVkVGl0bGVUZXh0ID0gc3R5bGVkLmRpdmBcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xuXG5leHBvcnQgY29uc3QgQ2hlY2tNYXJrID0gc3R5bGVkLnNwYW4uYXR0cnMoe1xuICBjbGFzc05hbWU6ICdjaGVja2JveC1pbm5lcidcbn0pYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNlbGVjdGlvbkJ0bkJvcmRlckFjdENvbG9yfTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwcHg7XG4gIGhlaWdodDogMTBweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMnB4O1xuXG4gICY6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZmO1xuICAgIGJvcmRlci10b3A6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHNjYWxlKDEpIHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICB0b3A6IDQwJTtcbiAgICBsZWZ0OiAzMCU7XG4gICAgd2lkdGg6IDMuMnB4O1xuICAgIGhlaWdodDogNi4yMnB4O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkVGltZVBpY2tlciA9IHN0eWxlZChUaW1lUGlja2VyKWBcbiAgLnJlYWN0LXRpbWUtcGlja2VyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZm9udC1mYW1pbHk6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udEZhbWlseX07XG4gICAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Rm9udFNpemV9O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRCZ2R9O1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dE1haW59O1xuICB9XG4gIC5yZWFjdC10aW1lLXBpY2tlcixcbiAgLnJlYWN0LXRpbWUtcGlja2VyICosXG4gIC5yZWFjdC10aW1lLXBpY2tlciAqOmJlZm9yZSxcbiAgLnJlYWN0LXRpbWUtcGlja2VyICo6YWZ0ZXIge1xuICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAucmVhY3QtdGltZS1waWNrZXJfX3dyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRCZ2R9O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICB3aWR0aDogMTEwcHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgfVxuICAucmVhY3QtdGltZS1waWNrZXJfX3dyYXBwZXI6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRCZ2RIb3Zlcn07XG4gIH1cbiAgLnJlYWN0LXRpbWUtcGlja2VyX19pbnB1dEdyb3VwIHtcbiAgICBtaW4td2lkdGg6IGNhbGMoKDRweCAqIDMpICsgMC41NGVtICogNiArIDAuMjE3ZW0gKiAyKTtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgcGFkZGluZzogNHB4IDJweDtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZW5kO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG4gIC5yZWFjdC10aW1lLXBpY2tlcl9faW5wdXRHcm91cF9fZGl2aWRlciB7XG4gICAgcGFkZGluZzogMXB4IDA7XG4gICAgd2hpdGUtc3BhY2U6IHByZTtcbiAgfVxuICAucmVhY3QtdGltZS1waWNrZXJfX2lucHV0R3JvdXBfX2RpdmlkZXIsXG4gIC5yZWFjdC10aW1lLXBpY2tlcl9faW5wdXRHcm91cF9fbGVhZGluZ1plcm8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRNYWlufTtcbiAgICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5fTtcbiAgICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRGb250U2l6ZX07XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgfVxuICAucmVhY3QtdGltZS1waWNrZXJfX2lucHV0R3JvdXBfX2lucHV0IHtcbiAgICBtaW4td2lkdGg6IDAuNTRlbTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDAgMXB4O1xuICAgIGJvcmRlcjogMDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRNYWlufTtcbiAgICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5fTtcbiAgICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRGb250U2l6ZX07XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gICAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gICAgYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICB9XG4gIC5yZWFjdC10aW1lLXBpY2tlcl9faW5wdXRHcm91cF9faW5wdXQ6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbiAgLnJlYWN0LXRpbWUtcGlja2VyX19pbnB1dEdyb3VwX19pbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbixcbiAgLnJlYWN0LXRpbWUtcGlja2VyX19pbnB1dEdyb3VwX19pbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICAucmVhY3QtdGltZS1waWNrZXJfX2lucHV0R3JvdXBfX2lucHV0LS1oYXNMZWFkaW5nWmVybyB7XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjU0ZW07XG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKDFweCArIDAuNTRlbSk7XG4gIH1cbiAgLnJlYWN0LXRpbWUtcGlja2VyX19pbnB1dEdyb3VwX19hbVBtIHtcbiAgICBtYXgtd2lkdGg6IDM3cHg7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVudWxpc3Q7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBtZW51bGlzdDtcbiAgICBhcHBlYXJhbmNlOiBtZW51bGlzdDtcbiAgICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRGb250U2l6ZX07XG4gIH1cbiAgLnJlYWN0LXRpbWUtcGlja2VyX19idXR0b24ge1xuICAgIGJvcmRlcjogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0QmdkfTtcbiAgICBwYWRkaW5nOiA0cHggNnB4O1xuICB9XG4gIC5yZWFjdC10aW1lLXBpY2tlcl9fYnV0dG9uOmVuYWJsZWQge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICAucmVhY3QtdGltZS1waWNrZXJfX2J1dHRvbiBzdmcge1xuICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gIH1cbiAgLnJlYWN0LXRpbWUtcGlja2VyX19jbG9jay0tY2xvc2VkLFxuICAucmVhY3QtdGltZS1waWNrZXJfX2NsZWFyLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZERhdGVQaWNrZXIgPSBzdHlsZWQoRGF0ZVBpY2tlcilgXG4gIC5yZWFjdC1kYXRlLXBpY2tlciB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRGYW1pbHl9O1xuICAgIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEZvbnRTaXplfTtcbiAgfVxuICAucmVhY3QtZGF0ZS1waWNrZXIsXG4gIC5yZWFjdC1kYXRlLXBpY2tlciAqLFxuICAucmVhY3QtZGF0ZS1waWNrZXIgKjpiZWZvcmUsXG4gIC5yZWFjdC1kYXRlLXBpY2tlciAqOmFmdGVyIHtcbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgLnJlYWN0LWRhdGUtcGlja2VyX193cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICB3aWR0aDogMTA4cHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIH1cbiAgLnJlYWN0LWRhdGUtcGlja2VyX19pbnB1dEdyb3VwIHtcbiAgICBtaW4td2lkdGg6IGNhbGMoKDRweCAqIDMpICsgMC41NGVtICogOCArIDAuMjE3ZW0gKiAyKTtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgcGFkZGluZzogNHB4IDlweDtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0QmdkfTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZW5kO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRCZ2R9O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgfVxuXG4gIC5yZWFjdC1kYXRlLXBpY2tlcl9faW5wdXRHcm91cDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEJnZEhvdmVyfTtcbiAgfVxuICAucmVhY3QtZGF0ZS1waWNrZXJfX2lucHV0R3JvdXBfX2RpdmlkZXIge1xuICAgIHBhZGRpbmc6IDFweCAwO1xuICAgIHdoaXRlLXNwYWNlOiBwcmU7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZWZmZWN0UGFuZWxUZXh0TWFpbn07XG4gIH1cbiAgLnJlYWN0LWRhdGUtcGlja2VyX19pbnB1dEdyb3VwX19kaXZpZGVyLFxuICAucmVhY3QtZGF0ZS1waWNrZXJfX2lucHV0R3JvdXBfX2xlYWRpbmdaZXJvIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbiAgLnJlYWN0LWRhdGUtcGlja2VyX19pbnB1dEdyb3VwX19pbnB1dCB7XG4gICAgbWluLXdpZHRoOiAwLjU0ZW07XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAwIDFweDtcbiAgICBib3JkZXI6IDA7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRNYWlufTtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEZvbnRTaXplfTtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIH1cbiAgLnJlYWN0LWRhdGUtcGlja2VyX19pbnB1dEdyb3VwX19pbnB1dDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuICAucmVhY3QtZGF0ZS1waWNrZXJfX2lucHV0R3JvdXBfX2lucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLFxuICAucmVhY3QtZGF0ZS1waWNrZXJfX2lucHV0R3JvdXBfX2lucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIC5yZWFjdC1kYXRlLXBpY2tlcl9faW5wdXRHcm91cF9faW5wdXQ6aW52YWxpZCB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEJnZH07XG4gIH1cbiAgLnJlYWN0LWRhdGUtcGlja2VyX19pbnB1dEdyb3VwX19pbnB1dC0taGFzTGVhZGluZ1plcm8ge1xuICAgIG1hcmdpbi1sZWZ0OiAtMC41NGVtO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYygxcHggKyAwLjU0ZW0pO1xuICB9XG4gIC5yZWFjdC1kYXRlLXBpY2tlcl9fY2FsZW5kYXIge1xuICAgIHdpZHRoOiAyNTdweDtcbiAgICBtYXgtd2lkdGg6IDEwMHZ3O1xuICAgIHotaW5kZXg6IDExO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dFNlY29uZGFyeTF9O1xuICAgIGluc2V0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbiAgLnJlYWN0LWRhdGUtcGlja2VyX19jYWxlbmRhci0tY2xvc2VkIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5yZWFjdC1kYXRlLXBpY2tlcl9fY2FsZW5kYXIgLnJlYWN0LWNhbGVuZGFyIHtcbiAgICBib3JkZXItd2lkdGg6IHRoaW47XG4gIH1cbiAgLnJlYWN0LWRhdGUtcGlja2VyX19idXR0b24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyIHtcbiAgICB3aWR0aDogMjU2cHg7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dFNlY29uZGFyeTF9O1xuICAgIGJhY2tncm91bmQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRCZ2RIb3Zlcn07XG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDRweCA0cHggNHB4O1xuICAgIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRGYW1pbHl9O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjEyNWVtO1xuICAgIHBhZGRpbmc6IDE2cHg7XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyLFxuICAucmVhY3QtY2FsZW5kYXIgKixcbiAgLnJlYWN0LWNhbGVuZGFyICo6YmVmb3JlLFxuICAucmVhY3QtY2FsZW5kYXIgKjphZnRlciB7XG4gICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhciBidXR0b24ge1xuICAgIG1hcmdpbjogMDtcbiAgICBib3JkZXI6IDA7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXIgYnV0dG9tOmVuYWJsZWQge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dE1haW59O1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhciBidXR0b246ZW5hYmxlZDpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBoZWlnaHQ6IDI1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiBidXR0b24ge1xuICAgIG1pbi13aWR0aDogMjVweDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiBidXR0b246ZW5hYmxlZDpob3ZlcixcbiAgLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIGJ1dHRvbjplbmFibGVkOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0QmdkQWN0aXZlfTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzX193ZWVrZGF5IHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRTZWNvbmRhcnkyfTtcbiAgICBwYWRkaW5nOiAwLjVlbTtcbiAgICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRGb250U2l6ZX07XG4gICAgYWJiciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla051bWJlcnMgLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzX19kYXktLXdlZWtlbmQge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dFNlY29uZGFyeTF9O1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5c19fZGF5LS1uZWlnaGJvcmluZ01vbnRoIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRTZWNvbmRhcnkzfTtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uX19sYWJlbF9fbGFiZWxUZXh0LFxuICAucmVhY3QtY2FsZW5kYXJfX25hdmlnYXRpb25fX2Fycm93IHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRNYWlufTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3llYXItdmlldyAucmVhY3QtY2FsZW5kYXJfX3RpbGUsXG4gIC5yZWFjdC1jYWxlbmRhcl9fZGVjYWRlLXZpZXcgLnJlYWN0LWNhbGVuZGFyX190aWxlLFxuICAucmVhY3QtY2FsZW5kYXJfX2NlbnR1cnktdmlldyAucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xuICAgIHBhZGRpbmc6IDJlbSAwLjVlbTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dFNlY29uZGFyeTF9O1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiA2cHggNHB4O1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEZvbnRTaXplfTtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlOmVuYWJsZWQ6aG92ZXIsXG4gIC5yZWFjdC1jYWxlbmRhcl9fdGlsZTplbmFibGVkOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnByaW1hcnlCdG5CZ2R9O1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnByaW1hcnlCdG5BY3RDb2xvcn07XG4gIH1cbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlLS1ub3c6ZW5hYmxlZDpob3ZlcixcbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlLS1ub3c6ZW5hYmxlZDpmb2N1cyB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuQmdkfTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRNYWlufTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWhhc0FjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuQWN0QmdkfTtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWhhc0FjdGl2ZTplbmFibGVkOmhvdmVyLFxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWhhc0FjdGl2ZTplbmFibGVkOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnByaW1hcnlCdG5BY3RCZ2R9O1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dE1haW59O1xuICB9XG4gIC5yZWFjdC1jYWxlbmRhcl9fdGlsZS0tYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnByaW1hcnlCdG5BY3RCZ2R9O1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dE1haW59O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgfVxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWFjdGl2ZTplbmFibGVkOmhvdmVyLFxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUtLWFjdGl2ZTplbmFibGVkOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnByaW1hcnlCdG5BY3RCZ2R9O1xuICB9XG4gIC5jYWxlbmRhcl9fbmF2aWdhdGlvbl9fbGFiZWxfX2xhYmVsVGV4dCB7XG4gICAg0YFvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dE1haW59O1xuICB9XG5gO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLGdCQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxnQkFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0saUJBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUEyRCxJQUFBTyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGlCQUFBLEVBVDNEO0FBQ0E7QUFZTyxJQUFNQyxVQUFVLEdBQUFDLE9BQUEsQ0FBQUQsVUFBQSxHQUFHRSw0QkFBTSxDQUFDQyxJQUFJLENBQUF4RCxlQUFBLEtBQUFBLGVBQUEsT0FBQXlELHVCQUFBLDRJQUMxQixVQUFBQyxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNDLFVBQVU7QUFBQSxHQUMzQixVQUFBRixLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENB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