*:focus {
  outline: none; }

/**
 * Brand Color
 *
 */
a {
  text-decoration: none;
  color: inherit; }

.slick-arrow {
  height: 26px;
  border-radius: 50%;
  background-color: #d2d2d2;
  color: white;
  margin: 80px 10px;
  border: 2px solid #cecece; }

/**
 * Button Reset
 *
 */
/**
 * Grid, Center Last
 *
 */
/**
 * Margin, No Edge
 * Removes left margin from first item, right margin from last item
 */
/**
 * Icon Position
 *
 */
/**
 * Block Cover
 * Creates a block that covers the full width/height of parent div. Typically used on a :before pseudo element
 */
/**
 * Placeholder Color
 *
 */
/**
 * Clearfix
 *
 */
/**
 * Font Sizes
 *
**/
/**
 * Columns
 *
 */
/**
 * Columns, Mobile
 *
 */
/**
 * Columns, Tablet
 *
 */
/**
 * Columns, Tablet Up
 *
 */
/**
 * Columns, Desktop
 *
 */
a, a svg {
  transition: all 0.1s ease-in-out; }

/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */
/* Document
   ========================================================================== */
/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */
html {
  line-height: 1.15;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/* Sections
   ========================================================================== */
/**
 * Remove the margin in all browsers.
 */
body {
  margin: 0; }

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/* Grouping content
   ========================================================================== */
/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */
hr {
  box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */ }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
pre {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/* Text-level semantics
   ========================================================================== */
/**
 * Remove the gray background on active links in IE 10.
 */
a {
  background-color: transparent; }

/**
 * 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */
abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  text-decoration: underline dotted;
  /* 2 */ }

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */
b,
strong {
  font-weight: bolder; }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
code,
kbd,
samp {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/**
 * Add the correct font size in all browsers.
 */
small {
  font-size: 80%; }

/**
 * Prevent `sub` and `sup` elements from affecting the line height in
 * all browsers.
 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

/* Embedded content
   ========================================================================== */
/**
 * Remove the border on images inside links in IE 10.
 */
img {
  border-style: none; }

/* Forms
   ========================================================================== */
/**
 * 1. Change the font styles in all browsers.
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
  /* 1 */
  font-size: 100%;
  /* 1 */
  line-height: 1.15;
  /* 1 */
  margin: 0;
  /* 2 */ }

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */
button,
input {
  /* 1 */
  overflow: visible; }

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */
button,
select {
  /* 1 */
  text-transform: none; }

/**
 * Correct the inability to style clickable types in iOS and Safari.
 */
button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button; }

/**
 * Remove the inner border and padding in Firefox.
 */
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0; }

/**
 * Restore the focus styles unset by the previous rule.
 */
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText; }

/**
 * Correct the padding in Firefox.
 */
fieldset {
  padding: 0.35em 0.75em 0.625em; }

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */
legend {
  box-sizing: border-box;
  /* 1 */
  color: inherit;
  /* 2 */
  display: table;
  /* 1 */
  max-width: 100%;
  /* 1 */
  padding: 0;
  /* 3 */
  white-space: normal;
  /* 1 */ }

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */
progress {
  vertical-align: baseline; }

/**
 * Remove the default vertical scrollbar in IE 10+.
 */
textarea {
  overflow: auto; }

/**
 * 1. Add the correct box sizing in IE 10.
 * 2. Remove the padding in IE 10.
 */
[type="checkbox"],
[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */
[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */ }

/**
 * Remove the inner padding in Chrome and Safari on macOS.
 */
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */
::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */ }

/* Interactive
   ========================================================================== */
/*
 * Add the correct display in Edge, IE 10+, and Firefox.
 */
details {
  display: block; }

/*
 * Add the correct display in all browsers.
 */
summary {
  display: list-item; }

/* Misc
   ========================================================================== */
/**
 * Add the correct display in IE 10+.
 */
template {
  display: none; }

/**
 * Add the correct display in IE 10.
 */
[hidden] {
  display: none; }

/* Box Sizing
--------------------------------------------- */
html,
input[type="search"] {
  box-sizing: border-box; }

*,
*:before,
*:after {
  box-sizing: inherit; }

@media (max-width: 1199px) {
  .entry-content {
    padding: 0 20px; } }

/* Wrap
--------------------------------------------- */
.wrap {
  max-width: 1200px;
  margin: 0 auto; }
  .wrap:after {
    content: "";
    display: table;
    clear: both; }

.site-header .wrap {
  max-width: 1640px; }

.site-inner {
  padding: 0px 0; }
  @media (min-width: 768px) {
    .site-inner {
      padding: 0px 0; } }
  .singular.content .site-inner > .wrap {
    max-width: 800px; }

/* Screen Reader Text
--------------------------------------------- */
.genesis-skip-link {
  display: none; }

.screen-reader-text,
.screen-reader-text span,
.screen-reader-shortcut {
  position: absolute !important;
  clip: rect(0, 0, 0, 0);
  height: 1px;
  width: 1px;
  border: 0;
  overflow: hidden; }

.screen-reader-text:focus,
.screen-reader-shortcut:focus {
  clip: auto !important;
  height: auto;
  width: auto;
  display: block;
  font-size: 1em;
  font-weight: bold;
  padding: 15px 23px 14px;
  color: #333;
  background: #fff;
  z-index: 100000;
  /* Above WP toolbar. */
  text-decoration: none;
  box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); }

/* Sidebar Layouts
--------------------------------------------- */
@media (max-width: 991px) {
  .sidebar-primary {
    display: none; } }

@media (min-width: 992px) {
  .content-sidebar .site-main {
    float: left;
    width: 65.75342%; }
  .content-sidebar .sidebar-primary {
    float: right;
    width: 28.68151%; }
  @supports (display: grid) {
    .content-sidebar .content-area {
      display: grid;
      grid-template-columns: 1fr 300px;
      grid-column-gap: 32px; }
    .content-sidebar .site-main {
      float: none;
      width: 100%;
      max-width: 768px; }
    .content-sidebar .sidebar-primary {
      float: none;
      width: 100%; } } }

/* Typographical Elements
--------------------------------------------- */
body {
  color: #424242;
  font-family: "Rubik", sans-serif;
  font-size: 18px;
  font-weight: 400;
  line-height: 1.55;
  overflow-x: hidden;
  width: 100%; }
  @media (min-width: 768px) {
    body {
      font-size: 18px; } }
  @media print {
    body {
      font-family: sans-serif; } }

a {
  color: #FF0000;
  text-decoration: underline; }
  a:hover {
    text-decoration: none; }

strong {
  font-weight: 700; }

ol,
ul {
  margin: 0;
  padding: 0; }

code,
pre {
  font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
  font-size: 12px; }

code {
  padding: 2px 4px;
  white-space: nowrap; }

pre {
  display: block;
  padding: 9.5px;
  margin: 0 0 10px;
  line-height: 18px;
  word-break: break-all;
  word-wrap: break-word;
  white-space: pre;
  white-space: pre-wrap; }

pre code {
  padding: 0;
  color: inherit;
  white-space: pre;
  white-space: pre-wrap;
  background-color: transparent;
  border: 0; }

cite {
  font-style: normal; }

.clearfix:after {
  content: "";
  display: table;
  clear: both; }

/* Paragraph
--------------------------------------------- */
p {
  margin: 0 0 16px;
  padding: 0; }
  p.large, p.has-large-font-size {
    font-size: 21px; }
    @media (min-width: 768px) {
      p.large, p.has-large-font-size {
        font-size: 24px; } }
  p.has-normal-font-size {
    font-size: 18px; }
    @media (min-width: 768px) {
      p.has-normal-font-size {
        font-size: 18px; } }
  p.small, p.has-small-font-size {
    font-size: 14px; }

/* Headings
--------------------------------------------- */
h1,
h2,
h3,
h4,
h5,
h6 {
  color: #212121;
  font-family: "Rubik", sans-serif;
  font-weight: 400;
  line-height: 1.2;
  margin: 0 0 16px; }
  h1 a,
  h2 a,
  h3 a,
  h4 a,
  h5 a,
  h6 a {
    color: #212121; }
    h1 a:hover,
    h2 a:hover,
    h3 a:hover,
    h4 a:hover,
    h5 a:hover,
    h6 a:hover {
      color: #FF0000;
      text-decoration: none; }
  h1:focus,
  h2:focus,
  h3:focus,
  h4:focus,
  h5:focus,
  h6:focus {
    outline: none; }

.entry-header {
  display: flex;
  flex-direction: column;
  justify-content: center; }

h1 {
  font-size: 50px;
  font-weight: bold; }
  @media (min-width: 768px) {
    h1 {
      font-size: 65px; } }
  @media (min-width: 992px) {
    h1 {
      font-size: 84px; } }

h2 {
  font-size: 26px;
  font-weight: bold; }
  @media (min-width: 768px) {
    h2 {
      font-size: 32px; } }
  @media (min-width: 992px) {
    h2 {
      font-size: 40px; } }

h3 {
  font-size: 22px; }
  @media (min-width: 768px) {
    h3 {
      font-size: 26px; } }
  @media (min-width: 992px) {
    h3 {
      font-size: 28px; } }

h4,
h5,
h6 {
  font-size: 12px; }
  @media (min-width: 768px) {
    h4,
    h5,
    h6 {
      font-size: 16px; } }

/* Site Header
---------------------------------------------------------------------------------------------------- */
/* .navbar-wrap {
	position: fixed;
	width: 100%;
	z-index: 999999;
} */
.site-header {
  background: #fff;
  border-bottom: 1px solid #E0E0E0;
  position: relative;
  min-height: 49px; }

.title-area {
  /*float: left;*/
  float: right;
  width: 100%;
  max-width: 48px;
  text-align: left;
  margin: 0 auto; }
  .title-area h1.site-title,
  .title-area p.site-title {
    margin: 0;
    font-size: 24px;
    line-height: 30px;
    padding: 8px 0 8px 8px; }
    .title-area h1.site-title a,
    .title-area p.site-title a {
      color: #424242;
      text-decoration: none; }
  .title-area .site-title a {
    background: url(../images/logo.png) no-repeat center;
    background-size: contain;
    display: block;
    text-indent: -9999em;
    width: 100%;
    direction: ltr;
    height: 0;
    padding-bottom: 215%; }
  @media (max-width: 810px) {
    .title-area {
      float: none;
      text-align: center; }
      .title-area .site-title a {
        padding-bottom: 0;
        height: 48px;
        background-size: auto 42px; } }

/* Admin Bar
--------------------------------------------- */
@media (min-width: 783px) {
  .admin-bar .site-container {
    padding-top: 32px; } }

@media (max-width: 782px) {
  #wpadminbar {
    display: none !important; } }

/* Persistent Header
--------------------------------------------- */
/* Navigation
---------------------------------------------------------------------------------------------------- */
.nav-menu > * {
  line-height: 0; }

.nav-menu ul {
  clear: both;
  line-height: 1;
  margin: 0;
  width: 100%; }

.nav-menu .menu-item {
  list-style: none;
  position: relative;
  margin: 10px 0; }
  .nav-menu .menu-item a {
    border: none;
    color: #424242;
    display: inline;
    font-size: 18px;
    font-weight: bold;
    line-height: 22px;
    padding: 13px 20px;
    position: relative;
    text-decoration: none;
    margin: 0 4px; }
  .nav-menu .menu-item:hover > a {
    color: #9c9c9c !important; }
  .nav-menu .menu-item.current-menu-item > a,
  .nav-menu .menu-item.current-menu-ancestor > a {
    color: #FFD65D; }

.nav-menu .submenu-expand {
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
  padding: 0;
  outline: none;
  cursor: pointer;
  line-height: 0;
  top: 50%;
  transform: translateY(-50%);
  left: 7px;
  margin-right: -14px; }
  .nav-menu .submenu-expand svg {
    fill: #757575; }

@media (max-width: 810px) {
  .nav-menu .nav-secondary .menu-item.search {
    padding: 4px 16px 16px; } }

@media (min-width: 811px) {
  .nav-menu .nav-secondary .menu-item.search {
    margin: 5px 0 0 8px; }
    .nav-menu .nav-secondary .menu-item.search .search-field {
      padding-top: 8px;
      padding-bottom: 8px;
      width: 268px; } }

.nav-menu .nav-primary .menu-item.search {
  line-height: 0; }
  .nav-menu .nav-primary .menu-item.search button {
    padding: 12px; }
  @media (max-width: 810px) {
    .nav-menu .nav-primary .menu-item.search {
      display: none; } }

@media (min-width: 811px) {
  .nav-menu {
    float: right;
    width: calc(100% - 80px);
    display: flex;
    flex-flow: column-reverse nowrap;
    margin-top: 70px; }
    .nav-menu .nav-primary,
    .nav-menu .nav-secondary {
      display: flex;
      justify-content: flex-end; }
    .nav-menu .nav-primary + .nav-secondary {
      margin-bottom: 16px; }
    .nav-menu .menu {
      display: inline-block;
      width: 100%; }
      .nav-menu .menu #menu-item-243 {
        float: left;
        background-color: #FFD65D; }
        .nav-menu .menu #menu-item-243 a {
          padding: 13px 35px; }
    .nav-menu .menu-item {
      float: right;
      /*float: left;*/
      position: initial;
      display: contents; }
      .nav-menu .menu-item:hover > .mega-menu-wrap {
        left: auto;
        opacity: 1;
        width: 100vw;
        right: 0;
        display: flex;
        height: 275px; }
        .nav-menu .menu-item:hover > .mega-menu-wrap .sub-menu {
          display: grid;
          grid-template-columns: 260px 260px 260px;
          grid-template-rows: 14% 14% 14%;
          row-gap: 39px;
          grid-auto-flow: column;
          padding: 49px 186px 88px 0;
          background-color: #f5f5f5;
          border: 1px solid #e8e8e8; } }
        @media (min-width: 811px) and (max-width: 1499px) {
          .nav-menu .menu-item:hover > .mega-menu-wrap .sub-menu {
            padding: 49px 30px 88px 0; } }
        @media (min-width: 811px) and (max-width: 1119px) {
          .nav-menu .menu-item:hover > .mega-menu-wrap .sub-menu {
            grid-template-columns: 200px 200px 200px; } }
        @media (min-width: 811px) and (max-width: 939px) {
          .nav-menu .menu-item:hover > .mega-menu-wrap .sub-menu {
            grid-template-columns: 33% 33% 33%; } }

@media (min-width: 811px) {
          .nav-menu .menu-item:hover > .mega-menu-wrap .sub-menu .menu-item {
            display: block; }
            .nav-menu .menu-item:hover > .mega-menu-wrap .sub-menu .menu-item a {
              padding: 0 !important;
              height: 62%; }
        .nav-menu .menu-item:hover > .mega-menu-wrap .contact-header {
          background: #000;
          width: 675px;
          padding: 39px 59px 39px 0;
          color: #fff; } }
        @media (min-width: 811px) and (max-width: 1169px) {
          .nav-menu .menu-item:hover > .mega-menu-wrap .contact-header {
            padding: 39px 20px 39px 0; } }
        @media (min-width: 811px) and (max-width: 939px) {
          .nav-menu .menu-item:hover > .mega-menu-wrap .contact-header {
            display: none; } }

@media (min-width: 811px) {
          .nav-menu .menu-item:hover > .mega-menu-wrap .contact-header .contact-details-box {
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            height: 100%;
            line-height: 1.6; }
            .nav-menu .menu-item:hover > .mega-menu-wrap .contact-header .contact-details-box .bottom-details span {
              font-weight: bold !important; }
            .nav-menu .menu-item:hover > .mega-menu-wrap .contact-header .contact-details-box a {
              background-color: #FFD65D;
              background-color: #FFD65D;
              width: 172px;
              text-align: center; }
    .nav-menu .mega-menu-wrap {
      opacity: 0;
      position: absolute;
      width: 215px;
      z-index: 99;
      display: none; }
      .nav-menu .mega-menu-wrap .sub-menu {
        background: #fff; }
        .nav-menu .mega-menu-wrap .sub-menu .menu-item {
          float: none; }
          .nav-menu .mega-menu-wrap .sub-menu .menu-item:hover > a {
            background: #FFD65D; }
        .nav-menu .mega-menu-wrap .sub-menu .sub-menu {
          margin: -48px 0 0 215px; } }

@media (max-width: 810px) {
  .nav-menu {
    display: none; }
    .nav-menu .contact-header {
      display: none; }
    .nav-menu.active {
      background: #EEEEEE;
      border-top: 1px solid #E0E0E0;
      display: block;
      margin: 0 -48px;
      max-width: calc(100% + 96px); }
    .nav-menu .menu > .menu-item > a {
      padding: 11px 18px;
      text-decoration: underline #FFD65D !important; }
    .nav-menu .submenu-expand {
      top: 0;
      right: 0;
      transform: none;
      width: 44px;
      height: 44px; }
      .nav-menu .submenu-expand svg {
        width: 12px;
        height: 12px; }
      .nav-menu .submenu-expand:not(.expanded) {
        transform: rotate(180deg); }
      .nav-menu .submenu-expand.expanded + .mega-menu-wrap .sub-menu {
        display: block;
        padding-bottom: 15px; }
        .nav-menu .submenu-expand.expanded + .mega-menu-wrap .sub-menu li {
          margin: 15px 0; }
          .nav-menu .submenu-expand.expanded + .mega-menu-wrap .sub-menu li a {
            padding: 5px 20px;
            text-decoration: none !important; }
        .nav-menu .submenu-expand.expanded + .mega-menu-wrap .sub-menu li:first-child {
          margin: 7px 0 10px 0; }
        .nav-menu .submenu-expand.expanded + .mega-menu-wrap .sub-menu li:last-child {
          margin: 10px 0 0 0; }
    .nav-menu .sub-menu {
      display: none;
      padding-left: 8px; } }

/* Toggles
--------------------------------------------- */
.search-toggle,
.menu-toggle {
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
  padding: 0;
  outline: none;
  cursor: pointer;
  line-height: 0;
  text-align: center; }
  .search-toggle .close,
  .menu-toggle .close {
    display: none; }
  .search-toggle:hover, .search-toggle.active,
  .menu-toggle:hover,
  .menu-toggle.active {
    background: #EEEEEE; }
  .search-toggle.active .close,
  .menu-toggle.active .close {
    display: inline; }
  .search-toggle.active .open,
  .menu-toggle.active .open {
    display: none; }

@media (max-width: 810px) {
  .site-header .wrap {
    padding: 0 48px; } }

.site-header .wrap > .menu-toggle,
.site-header .wrap > .search-toggle {
  position: absolute;
  top: 0;
  width: 48px;
  height: 48px; }
  @media (min-width: 811px) {
    .site-header .wrap > .menu-toggle,
    .site-header .wrap > .search-toggle {
      display: none; } }

.site-header .wrap > .menu-toggle {
  left: 0; }

.site-header .wrap > .search-toggle {
  right: 0; }

/* Header Search
--------------------------------------------- */
.header-search {
  background: #EEEEEE;
  overflow: hidden;
  padding: 16px;
  width: 100%; }
  @media (min-width: 768px) {
    .header-search {
      position: absolute;
      bottom: -82px;
      right: 0; }
      .header-search .search-form {
        margin: 0 auto; } }
  @media (max-width: 810px) {
    .header-search {
      margin: 0 -48px;
      width: calc(100% + 96px); } }
  .header-search:not(.active) {
    display: none; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JpdGljYWwuY3NzIiwic291cmNlcyI6WyJjcml0aWNhbC5zY3NzIiwicGFydGlhbHMvX2Jhc2Uuc2NzcyIsIm1vZHVsZXMvX2JyYW5kLWNvbG9yLnNjc3MiLCJtb2R1bGVzL19oZWxwZXJzLnNjc3MiLCJ2ZW5kb3IvX2luY2x1ZGUtbWVkaWEuc2NzcyIsIm1vZHVsZXMvX2Jhc2Utc3R5bGVzLnNjc3MiLCJwYXJ0aWFscy9fcmVzZXQuc2NzcyIsInBhcnRpYWxzL19sYXlvdXQuc2NzcyIsInBhcnRpYWxzL19ibG9ja3MtYmFzZS5zY3NzIiwicGFydGlhbHMvX3NpdGUtaGVhZGVyLnNjc3MiLCJwYXJ0aWFscy9fbmF2aWdhdGlvbi5zY3NzIiwicGFydGlhbHMvX2NyaXRpY2FsLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcInBhcnRpYWxzL2Jhc2VcIjtcclxuQGltcG9ydCBcInBhcnRpYWxzL3Jlc2V0XCI7XHJcbkBpbXBvcnQgXCJwYXJ0aWFscy9sYXlvdXRcIjtcclxuQGltcG9ydCBcInBhcnRpYWxzL2Jsb2Nrcy1iYXNlXCI7XHJcbkBpbXBvcnQgXCJwYXJ0aWFscy9zaXRlLWhlYWRlclwiO1xyXG5AaW1wb3J0IFwicGFydGlhbHMvbmF2aWdhdGlvblwiO1xyXG5AaW1wb3J0IFwicGFydGlhbHMvY3JpdGljYWxcIjtcclxuIiwiLy8gQ29sb3JzXHJcbiR3aGl0ZTogI2ZmZjtcclxuJGdyZXlfMTogI0ZBRkFGQTtcclxuJGdyZXlfMjogI0Y1RjVGNTtcclxuJGdyZXlfMzogI0VFRUVFRTtcclxuJGdyZXlfNDogI0UwRTBFMDtcclxuJGdyZXlfNTogI0JEQkRCRDtcclxuJGdyZXlfNjogIzlFOUU5RTtcclxuJGdyZXlfNzogIzc1NzU3NTtcclxuJGdyZXlfODogIzYxNjE2MTtcclxuJGdyZXlfOTogIzQyNDI0MjtcclxuJGdyZXlfMTA6ICMyMTIxMjE7XHJcbiRibGFjazogIzAwMDtcclxuJHllbGxvdzojRkZENjVEO1xyXG4kc2l0ZV9mb290ZXI6IzQ0NDI0MjtcclxuJG15LWdyYXk6I2YzZjNmMztcclxuXHJcbio6Zm9jdXMge1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi8vIEJyYW5kIENvbG9yc1xyXG4kYnJhbmRfY29sb3JzOiAoJ3llbGxvdyc6I0ZGRDY1RCxcclxuICAnYmx1ZSc6ICMwNTMwNkYsXHJcbiAgJ3JlZCc6ICNGRjAwMDAsXHJcbiAgJ2dyZXknOiAkZ3JleV8xLFxyXG4gICdibGFjayc6JGJsYWNrLFxyXG4pO1xyXG5AaW1wb3J0IFwiLi4vbW9kdWxlcy9icmFuZC1jb2xvclwiO1xyXG5cclxuJGZhY2Vib29rOiAjM0I1OTk4O1xyXG4kdHdpdHRlcjogIzAwQjZGMTtcclxuJHBpbnRlcmVzdDogI0NCMjAyNztcclxuXHJcbiRiYXNlLWNvbG9yOiAkZ3JleV85O1xyXG4kaGlnaGxpZ2h0OiBicmFuZC1jb2xvcigncmVkJyk7XHJcbiRib3JkZXItY29sb3I6ICRncmV5XzQ7XHJcblxyXG4vLyBGb250c1xyXG4kc2VyaWY6ICdSdWJpaycsXHJcbnNhbnMtc2VyaWY7XHJcbiRzYW5zLXNlcmlmOiAnUnViaWsnLFxyXG5zYW5zLXNlcmlmO1xyXG5cclxuXHJcbi8vIENvbnRlbnRcclxuJGNvbnRlbnQtd2lkdGg6IDc2OHB4O1xyXG4kYmxvY2stbWFyZ2luOiAyMHB4O1xyXG5cclxuLy8gR3JpZFxyXG4kZ3JpZDogZ3JpZDtcclxuJGdyaWQtd2lkdGg6IDExNjhweDtcclxuJGdyaWQtZ2FwOiAzMnB4O1xyXG4kYmFzZS1tYXJnaW46IDE2cHg7XHJcbiR3cmFwX2VkZ2U6ICRiYXNlLW1hcmdpbjtcclxuJG1hcmdpbl8yeDogJGJhc2UtbWFyZ2luICogMjtcclxuJG1hcmdpbl80eDogJGJhc2UtbWFyZ2luICogNDtcclxuXHJcbi8vIFNpdGUgSGVhZGVyXHJcbiRsb2dvX3dpZHRoOjQ4cHg7XHJcbiRtZW51X3dpZHRoOiAkbG9nb193aWR0aCskZ3JpZC1nYXA7XHJcbiRwZXJzaXN0YW50X21vYmlsZTogZmFsc2U7IC8vIDQ5cHhcclxuJHBlcnNpc3RlbnRfZGVza3RvcDogZmFsc2U7IC8vIDQ5cHhcclxuXHJcblxyXG4vLyBJbmNsdWRlIE1lZGlhXHJcbiRicmVha3BvaW50czogKCdwaG9uZScgOiAzNjBweCxcclxuICAnbXktcGhvbmUnOjQ5MHB4LFxyXG4gICdzbWFsbCcgOiA3NjhweCxcclxuICAndGFibGV0JyA6IDc2OHB4LCAvLyByZXF1aXJlZCBmb3IgaW5jbHVkZS1tZWRpYVxyXG4gICdtb2JpbGVfbWVudScgOiA4MTBweCxcclxuICAnbWVkaXVtJyA6IDk5MnB4LFxyXG4gICdsYXJnZScgOiAxMjAwcHgsXHJcbiAgJ2Rlc2t0b3AnOiAkZ3JpZC13aWR0aCArICRncmlkLWdhcCwgLy8gcmVxdWlyZWQgZm9yIGluY2x1ZGUtbWVkaWFcclxuICAnY29udGVudC13aWR0aCc6ICRjb250ZW50LXdpZHRoICsgJGdyaWQtZ2FwLFxyXG4pO1xyXG5cclxuYSB7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIGNvbG9yOiBpbmhlcml0O1xyXG59XHJcblxyXG4vL3NsaWNrLWFycm93c1xyXG4uc2xpY2stYXJyb3cge1xyXG4gIGhlaWdodDogMjZweDtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QyZDJkMjtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgbWFyZ2luOiA4MHB4IDEwcHg7XHJcbiAgYm9yZGVyOiAycHggc29saWQgI2NlY2VjZTtcclxufVxyXG5cclxuXHJcbkBpbXBvcnQgXCIuLi9tb2R1bGVzL2hlbHBlcnNcIjtcclxuQGltcG9ydCBcIi4uL3ZlbmRvci9faW5jbHVkZS1tZWRpYVwiO1xyXG5AaW1wb3J0IFwiLi4vbW9kdWxlcy9iYXNlLXN0eWxlc1wiOyIsIi8qKlxyXG4gKiBCcmFuZCBDb2xvclxyXG4gKlxyXG4gKi9cclxuQGZ1bmN0aW9uIGJyYW5kLWNvbG9yKCAka2V5LCAkdmFyaWFudDogbnVsbCApIHtcclxuXHRAaWYgbWFwLWhhcy1rZXkoICRicmFuZF9jb2xvcnMsICRrZXkgKSB7XHJcblx0XHQkY29sb3I6IG1hcC1nZXQoICRicmFuZF9jb2xvcnMsICRrZXkgKTtcclxuXHRcdEBpZiAoICdsaWdodGVuJyA9PSAkdmFyaWFudCApIHtcclxuXHRcdFx0JGxpZ2h0ZW5fa2V5OiAka2V5ICsgJ19saWdodGVuJztcclxuXHRcdFx0QGlmIG1hcC1oYXMta2V5KCAkYnJhbmRfY29sb3JzLCAkbGlnaHRlbl9rZXkgKSB7XHJcblx0XHRcdFx0JGNvbG9yOiAje21hcC1nZXQoICRicmFuZF9jb2xvcnMsICRsaWdodGVuX2tleSApfTtcclxuXHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0JGNvbG9yOiBsaWdodGVuKCAkY29sb3IsIDEwJSApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRAZWxzZSBpZiggJ2RhcmtlbicgPT0gJHZhcmlhbnQgKSB7XHJcblx0XHRcdCRkYXJrZW5fa2V5OiAka2V5ICsgJ19kYXJrZW4nO1xyXG5cdFx0XHRAaWYgbWFwLWhhcy1rZXkoICRicmFuZF9jb2xvcnMsICRkYXJrZW5fa2V5ICkge1xyXG5cdFx0XHRcdCRjb2xvcjogI3ttYXAtZ2V0KCAkYnJhbmRfY29sb3JzLCAkZGFya2VuX2tleSApfTtcclxuXHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0JGNvbG9yOiBkYXJrZW4oICRjb2xvciwgMTAlICk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdEByZXR1cm4gJGNvbG9yO1xyXG5cdH0gQGVsc2Uge1xyXG5cdFx0QGVycm9yIFwiVGhlICN7JGtleX0gY29sb3IgY291bGQgbm90IGJlIGZvdW5kIGluICRicmFuZF9jb2xvcnNcIjtcclxuXHR9XHJcbn1cclxuIiwiLyoqXHJcbiAqIEJ1dHRvbiBSZXNldFxyXG4gKlxyXG4gKi9cclxuQG1peGluIGJ1dHRvbi1yZXNldCgpIHtcclxuXHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0Ym9yZGVyLXJhZGl1czogMDtcclxuXHRib3gtc2hhZG93OiBub25lO1xyXG5cdHBhZGRpbmc6IDA7XHJcblx0b3V0bGluZTogbm9uZTtcclxuXHRjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG59XHJcblxyXG4vKipcclxuICogR3JpZCwgQ2VudGVyIExhc3RcclxuICpcclxuICovXHJcbkBtaXhpbiBncmlkLWNlbnRlci1sYXN0KCRjb2x1bW5zKSB7XHJcblx0JHRvdGFsX2NvbHVtbnM6ICRjb2x1bW5zICogMjtcclxuXHQkc3BhbjogJHRvdGFsX2NvbHVtbnMgLyAkY29sdW1ucztcclxuXHQkb2Zmc2V0OiAkY29sdW1ucyAtIDE7XHJcblx0JG50aC1jaGlsZDogaWYoJGNvbHVtbnMgJSAyPT0wLCAnb2RkJywgJ2V2ZW4nKTtcclxuXHJcblx0ZGlzcGxheTogZ3JpZDtcclxuXHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgkdG90YWxfY29sdW1ucywgMWZyKTtcclxuXHJcblx0Jj4qIHtcclxuXHRcdGdyaWQtY29sdW1uOiBzcGFuICRzcGFuO1xyXG5cclxuXHRcdCY6bnRoLWxhc3QtY2hpbGQoI3skb2Zmc2V0fSk6bnRoLWNoaWxkKCN7JG50aC1jaGlsZH0pIHtcclxuXHRcdFx0Z3JpZC1jb2x1bW46ICRzcGFuIC8gc3BhbiAkc3BhbjtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNYXJnaW4sIE5vIEVkZ2VcclxuICogUmVtb3ZlcyBsZWZ0IG1hcmdpbiBmcm9tIGZpcnN0IGl0ZW0sIHJpZ2h0IG1hcmdpbiBmcm9tIGxhc3QgaXRlbVxyXG4gKi9cclxuQG1peGluIG1hcmdpbi1uby1lZGdlKCRtYXJnaW4pIHtcclxuXHRtYXJnaW46ICRtYXJnaW47XHJcblxyXG5cdCY6Zmlyc3QtY2hpbGQge1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDA7XHJcblx0fVxyXG5cclxuXHQmOmxhc3QtY2hpbGQge1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAwO1xyXG5cdH1cclxuXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJY29uIFBvc2l0aW9uXHJcbiAqXHJcbiAqL1xyXG5AbWl4aW4gaWNvbi1wb3NpdGlvbigkaWNvbl9zaXplLCAkY29udGFpbmVyX3NpemU6IG51bGwpIHtcclxuXHR3aWR0aDogJGljb25fc2l6ZTtcclxuXHRoZWlnaHQ6ICRpY29uX3NpemU7XHJcblxyXG5cdEBpZiAoJGNvbnRhaW5lcl9zaXplKSB7XHJcblx0XHRtYXJnaW4tdG9wOiBjYWxjKCgjeyRjb250YWluZXJfc2l6ZX0gLSAjeyRpY29uX3NpemV9KSAvIDIpO1xyXG5cdH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEJsb2NrIENvdmVyXHJcbiAqIENyZWF0ZXMgYSBibG9jayB0aGF0IGNvdmVycyB0aGUgZnVsbCB3aWR0aC9oZWlnaHQgb2YgcGFyZW50IGRpdi4gVHlwaWNhbGx5IHVzZWQgb24gYSA6YmVmb3JlIHBzZXVkbyBlbGVtZW50XHJcbiAqL1xyXG5AbWl4aW4gYmxvY2stY292ZXIoKSB7XHJcblx0Y29udGVudDogJyc7XHJcblx0ZGlzcGxheTogYmxvY2s7XHJcblx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdHRvcDogMDtcclxuXHRsZWZ0OiAwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdGhlaWdodDogMTAwJTtcclxuXHR6LWluZGV4OiAxO1xyXG59XHJcblxyXG4vKipcclxuICogUGxhY2Vob2xkZXIgQ29sb3JcclxuICpcclxuICovXHJcbkBtaXhpbiBwbGFjZWhvbGRlci1jb2xvcigkY29sb3IpIHtcclxuXHJcblx0OjotbW96LXBsYWNlaG9sZGVyIHtcclxuXHRcdGNvbG9yOiAkY29sb3I7XHJcblx0XHRvcGFjaXR5OiAxO1xyXG5cdH1cclxuXHJcblx0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdFx0Y29sb3I6ICRjb2xvcjtcclxuXHR9XHJcblxyXG5cdDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XHJcblx0XHRjb2xvcjogJGNvbG9yO1xyXG5cdH1cclxuXHJcblx0aW5wdXQ6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsXHJcblx0aW5wdXQ6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIsXHJcblx0aW5wdXQ6Zm9jdXM6LW1zLWlucHV0LXBsYWNlaG9sZGVyLFxyXG5cdHRleHRhcmVhOmZvY3VzOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLFxyXG5cdHRleHRhcmVhOmZvY3VzOjotbW96LXBsYWNlaG9sZGVyLFxyXG5cdHRleHRhcmVhOmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XHJcblx0XHRjb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0fVxyXG5cclxufVxyXG5cclxuLyoqXHJcbiAqIENsZWFyZml4XHJcbiAqXHJcbiAqL1xyXG5AbWl4aW4gY2xlYXJmaXgoKSB7XHJcblx0JjphZnRlciB7XHJcblx0XHRjb250ZW50OiBcIlwiO1xyXG5cdFx0ZGlzcGxheTogdGFibGU7XHJcblx0XHRjbGVhcjogYm90aDtcclxuXHR9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb250IFNpemVzXHJcbiAqXHJcbioqL1xyXG5AbWl4aW4gZm9udC1zaXplcygkYmFzZTogbnVsbCwgJHRhYmxldDogbnVsbCwgJG1lZGl1bTogbnVsbCwgJGxhcmdlOiBudWxsKSB7XHJcblxyXG5cdEBpZiAoJGJhc2UpIHtcclxuXHRcdGZvbnQtc2l6ZTogJGJhc2U7XHJcblx0fVxyXG5cclxuXHRAaWYoJHRhYmxldCkge1xyXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI+PXRhYmxldFwiKSB7XHJcblx0XHRcdGZvbnQtc2l6ZTogJHRhYmxldDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdEBpZigkbWVkaXVtKSB7XHJcblx0XHRAaW5jbHVkZSBtZWRpYShcIj49bWVkaXVtXCIpIHtcclxuXHRcdFx0Zm9udC1zaXplOiAkbWVkaXVtO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0QGlmKCRsYXJnZSkge1xyXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI+PWRlc2t0b3BcIikge1xyXG5cdFx0XHRmb250LXNpemU6ICRsYXJnZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG59XHJcblxyXG4vKipcclxuICogQ29sdW1uc1xyXG4gKlxyXG4gKi9cclxuQG1peGluIGNvbHVtbnMoJGNvbHVtbnMsICRncmlkX2l0ZW1fZWxlbWVudDogYXJ0aWNsZSwgJGdhcDogbnVsbCkge1xyXG5cclxuXHRAaWYoJGdhcD09bnVsbCkge1xyXG5cdFx0JGdhcDogJGdyaWQtZ2FwO1xyXG5cdH1cclxuXHJcblx0Jj4jeyRncmlkX2l0ZW1fZWxlbWVudH0ge1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRtYXJnaW4tbGVmdDogJGdhcCAvICRncmlkLXdpZHRoICogMTAwJTtcclxuXHRcdHdpZHRoOiAoKCRncmlkLXdpZHRoIC0gJGdhcCAqICgkY29sdW1ucyAtIDEpKSAvICRjb2x1bW5zKSAvICRncmlkLXdpZHRoICogMTAwJTtcclxuXHJcblx0XHQmOm50aC1vZi10eXBlKCN7JGNvbHVtbnN9bisxKSB7XHJcblx0XHRcdGNsZWFyOiBib3RoO1xyXG5cdFx0XHRtYXJnaW4tbGVmdDogMDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdEBzdXBwb3J0cyhkaXNwbGF5OiBncmlkKSB7XHJcblx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0Z3JpZC1jb2x1bW4tZ2FwOiAkZ2FwO1xyXG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoJGNvbHVtbnMsIDFmcik7XHJcblxyXG5cdFx0Jj4jeyRncmlkX2l0ZW1fZWxlbWVudH0ge1xyXG5cdFx0XHRtYXJnaW4tbGVmdDogMDtcclxuXHRcdFx0d2lkdGg6IDEwMCU7XHJcblx0XHR9XHJcblxyXG5cdFx0aGVhZGVyLFxyXG5cdFx0bmF2LFxyXG5cdFx0YXNpZGUsXHJcblx0XHRmb290ZXIge1xyXG5cdFx0XHRncmlkLWNvbHVtbjogMSAvIC0xO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENvbHVtbnMsIE1vYmlsZVxyXG4gKlxyXG4gKi9cclxuQG1peGluIGNvbHVtbnMtbW9iaWxlKCRjb2x1bW5zLCAkZ3JpZF9pdGVtX2VsZW1lbnQ6IGFydGljbGUsICRnYXA6IG51bGwpIHtcclxuXHJcblx0QGluY2x1ZGUgbWVkaWEoXCI8dGFibGV0XCIpIHtcclxuXHRcdEBpbmNsdWRlIGNvbHVtbnMoJGNvbHVtbnMsICRncmlkX2l0ZW1fZWxlbWVudCwgJGdhcCk7XHJcblx0fVxyXG59XHJcblxyXG4vKipcclxuICogQ29sdW1ucywgVGFibGV0XHJcbiAqXHJcbiAqL1xyXG5AbWl4aW4gY29sdW1ucy10YWJsZXQoJGNvbHVtbnMsICRncmlkX2l0ZW1fZWxlbWVudDogYXJ0aWNsZSwgJGdhcDogbnVsbCkge1xyXG5cclxuXHRAaW5jbHVkZSBtZWRpYShcIj49dGFibGV0XCIsIFwiPG1lZGl1bVwiKSB7XHJcblx0XHRAaW5jbHVkZSBjb2x1bW5zKCRjb2x1bW5zLCAkZ3JpZF9pdGVtX2VsZW1lbnQsICRnYXApO1xyXG5cdH1cclxuXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2x1bW5zLCBUYWJsZXQgVXBcclxuICpcclxuICovXHJcbkBtaXhpbiBjb2x1bW5zLXRhYmxldC11cCgkY29sdW1ucywgJGdyaWRfaXRlbV9lbGVtZW50OiBhcnRpY2xlLCAkZ2FwOiBudWxsKSB7XHJcblxyXG5cdEBpbmNsdWRlIG1lZGlhKFwiPj10YWJsZXRcIikge1xyXG5cdFx0QGluY2x1ZGUgY29sdW1ucygkY29sdW1ucywgJGdyaWRfaXRlbV9lbGVtZW50LCAkZ2FwKTtcclxuXHR9XHJcblxyXG59XHJcblxyXG4vKipcclxuICogQ29sdW1ucywgRGVza3RvcFxyXG4gKlxyXG4gKi9cclxuQG1peGluIGNvbHVtbnMtZGVza3RvcCgkY29sdW1ucywgJGdyaWRfaXRlbV9lbGVtZW50OiBhcnRpY2xlLCAkZ2FwOiBudWxsKSB7XHJcblx0QGluY2x1ZGUgbWVkaWEoXCI+PW1lZGl1bVwiKSB7XHJcblx0XHRAaW5jbHVkZSBjb2x1bW5zKCRjb2x1bW5zLCAkZ3JpZF9pdGVtX2VsZW1lbnQsICRnYXApO1xyXG5cdH1cclxufSIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vICAgICBfICAgICAgICAgICAgXyAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gX1xyXG4vLyAgICAoXykgICAgICAgICAgfCB8ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF8pXHJcbi8vICAgICBfIF8gX18gICBfX198IHxfICAgXyAgX198IHwgX19fICAgXyBfXyBfX18gICBfX18gIF9ffCB8XyAgX18gX1xyXG4vLyAgICB8IHwgJ18gXFwgLyBfX3wgfCB8IHwgfC8gX2AgfC8gXyBcXCB8ICdfIGAgXyBcXCAvIF8gXFwvIF9gIHwgfC8gX2AgfFxyXG4vLyAgICB8IHwgfCB8IHwgKF9ffCB8IHxffCB8IChffCB8ICBfXy8gfCB8IHwgfCB8IHwgIF9fLyAoX3wgfCB8IChffCB8XHJcbi8vICAgIHxffF98IHxffFxcX19ffF98XFxfXyxffFxcX18sX3xcXF9fX3wgfF98IHxffCB8X3xcXF9fX3xcXF9fLF98X3xcXF9fLF98XHJcbi8vXHJcbi8vICAgICAgU2ltcGxlLCBlbGVnYW50IGFuZCBtYWludGFpbmFibGUgbWVkaWEgcXVlcmllcyBpbiBTYXNzXHJcbi8vICAgICAgICAgICAgICAgICAgICAgICAgdjEuNC44XHJcbi8vXHJcbi8vICAgICAgICAgICAgICAgIGh0dHA6Ly9pbmNsdWRlLW1lZGlhLmNvbVxyXG4vL1xyXG4vLyAgICAgICAgIEF1dGhvcnM6IEVkdWFyZG8gQm91Y2FzIChAZWR1YXJkb2JvdWNhcylcclxuLy8gICAgICAgICAgICAgICAgICBIdWdvIEdpcmF1ZGVsIChAaHVnb2dpcmF1ZGVsKVxyXG4vL1xyXG4vLyAgICAgIFRoaXMgcHJvamVjdCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlXHJcblxyXG5cclxuLy8vL1xyXG4vLy8gaW5jbHVkZS1tZWRpYSBsaWJyYXJ5IHB1YmxpYyBjb25maWd1cmF0aW9uXHJcbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXHJcbi8vLyBAYWNjZXNzIHB1YmxpY1xyXG4vLy8vXHJcblxyXG5cclxuLy8vXHJcbi8vLyBDcmVhdGVzIGEgbGlzdCBvZiBnbG9iYWwgYnJlYWtwb2ludHNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHdpdGggdGhlIGxhYmVsIGBwaG9uZWBcclxuLy8vICAkYnJlYWtwb2ludHM6ICgncGhvbmUnOiAzMjBweCk7XHJcbi8vL1xyXG4kYnJlYWtwb2ludHM6IChcclxuICAncGhvbmUnOiAzMjBweCxcclxuICAndGFibGV0JzogNzY4cHgsXHJcbiAgJ2Rlc2t0b3AnOiAxMDI0cHhcclxuKSAhZGVmYXVsdDtcclxuXHJcblxyXG4vLy9cclxuLy8vIENyZWF0ZXMgYSBsaXN0IG9mIHN0YXRpYyBleHByZXNzaW9ucyBvciBtZWRpYSB0eXBlc1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc2luZ2xlIG1lZGlhIHR5cGUgKHNjcmVlbilcclxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJzogJ3NjcmVlbicpO1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc3RhdGljIGV4cHJlc3Npb24gd2l0aCBsb2dpY2FsIGRpc2p1bmN0aW9uIChPUiBvcGVyYXRvcilcclxuLy8vICAkbWVkaWEtZXhwcmVzc2lvbnM6IChcclxuLy8vICAgICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJ1xyXG4vLy8gICk7XHJcbi8vL1xyXG4kbWVkaWEtZXhwcmVzc2lvbnM6IChcclxuICAnc2NyZWVuJzogJ3NjcmVlbicsXHJcbiAgJ3ByaW50JzogJ3ByaW50JyxcclxuICAnaGFuZGhlbGQnOiAnaGFuZGhlbGQnLFxyXG4gICdsYW5kc2NhcGUnOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcclxuICAncG9ydHJhaXQnOiAnKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxyXG4gICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLCAobWluLXJlc29sdXRpb246IDJkcHB4KScsXHJcbiAgJ3JldGluYTN4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDMpLCAobWluLXJlc29sdXRpb246IDM1MGRwaSksIChtaW4tcmVzb2x1dGlvbjogM2RwcHgpJ1xyXG4pICFkZWZhdWx0O1xyXG5cclxuXHJcbi8vL1xyXG4vLy8gRGVmaW5lcyBhIG51bWJlciB0byBiZSBhZGRlZCBvciBzdWJ0cmFjdGVkIGZyb20gZWFjaCB1bml0IHdoZW4gZGVjbGFyaW5nIGJyZWFrcG9pbnRzIHdpdGggZXhjbHVzaXZlIGludGVydmFsc1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcGl4ZWxzIGlzIGRlZmluZWQgYXMgYDFgIGJ5IGRlZmF1bHRcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjEyOHB4Jykge31cclxuLy8vXHJcbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xyXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAxMjlweCkge31cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIGVtcyBpcyBkZWZpbmVkIGFzIGAwLjAxYCBieSBkZWZhdWx0XHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yMGVtJykge31cclxuLy8vXHJcbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xyXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAyMC4wMWVtKSB7fVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgcmVtcyBpcyBkZWZpbmVkIGFzIGAwLjFgIGJ5IGRlZmF1bHQsIHRvIGJlIHVzZWQgd2l0aCBgZm9udC1zaXplOiA2Mi41JTtgXHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yLjByZW0nKSB7fVxyXG4vLy9cclxuLy8vICAvKiBHZW5lcmF0ZXM6ICovXHJcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDIuMXJlbSkge31cclxuLy8vXHJcbiR1bml0LWludGVydmFsczogKFxyXG4gICdweCc6IDEsXHJcbiAgJ2VtJzogMC4wMSxcclxuICAncmVtJzogMC4xLFxyXG4gICcnOiAwXHJcbikgIWRlZmF1bHQ7XHJcblxyXG4vLy9cclxuLy8vIERlZmluZXMgd2hldGhlciBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzIGlzIGF2YWlsYWJsZSwgdXNlZnVsIGZvciBjcmVhdGluZyBzZXBhcmF0ZSBzdHlsZXNoZWV0c1xyXG4vLy8gZm9yIGJyb3dzZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBtZWRpYSBxdWVyaWVzLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBEaXNhYmxlcyBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzXHJcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcclxuLy8vICAgIC5mb28ge1xyXG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xyXG4vLy8gICAgfVxyXG4vLy8gIH1cclxuLy8vXHJcbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xyXG4vLy8gIC5mb28ge1xyXG4vLy8gICAgY29sb3I6IHRvbWF0bztcclxuLy8vICB9XHJcbi8vL1xyXG4kaW0tbWVkaWEtc3VwcG9ydDogdHJ1ZSAhZGVmYXVsdDtcclxuXHJcbi8vL1xyXG4vLy8gU2VsZWN0cyB3aGljaCBicmVha3BvaW50IHRvIGVtdWxhdGUgd2hlbiBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzIGlzIGRpc2FibGVkLiBNZWRpYSBxdWVyaWVzIHRoYXQgc3RhcnQgYXQgb3JcclxuLy8vIGludGVyY2VwdCB0aGUgYnJlYWtwb2ludCB3aWxsIGJlIGRpc3BsYXllZCwgYW55IG90aGVycyB3aWxsIGJlIGlnbm9yZWQuXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnRcclxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XHJcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnKSB7XHJcbi8vLyAgICAuZm9vIHtcclxuLy8vICAgICAgY29sb3I6IHRvbWF0bztcclxuLy8vICAgIH1cclxuLy8vICB9XHJcbi8vL1xyXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cclxuLy8vICAuZm9vIHtcclxuLy8vICAgIGNvbG9yOiB0b21hdG87XHJcbi8vLyAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgTk9UIHNob3cgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbnRlcmNlcHQgdGhlIGRlc2t0b3AgYnJlYWtwb2ludFxyXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcclxuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ3RhYmxldCc7XHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcclxuLy8vICAgIC5mb28ge1xyXG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xyXG4vLy8gICAgfVxyXG4vLy8gIH1cclxuLy8vXHJcbi8vLyAgLyogTm8gb3V0cHV0ICovXHJcbi8vL1xyXG4kaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnICFkZWZhdWx0O1xyXG5cclxuLy8vXHJcbi8vLyBTZWxlY3RzIHdoaWNoIG1lZGlhIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGluIGFuIGV4cHJlc3Npb24gZm9yIGl0IHRvIGJlIHVzZWQgd2hlbiBtZWRpYSBxdWVyaWVzXHJcbi8vLyBhcmUgbm90IHN1cHBvcnRlZC5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBhbmQgY29udGFpbnMgb25seSBhY2NlcHRlZCBtZWRpYSBleHByZXNzaW9uc1xyXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcclxuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xyXG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnLCAnc2NyZWVuJykge1xyXG4vLy8gICAgLmZvbyB7XHJcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XHJcbi8vLyAgICB9XHJcbi8vLyAgfVxyXG4vLy9cclxuLy8vICAgLyogR2VuZXJhdGVzOiAqL1xyXG4vLy8gICAuZm9vIHtcclxuLy8vICAgICBjb2xvcjogdG9tYXRvO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGJ1dCBjb250YWlucyBhIG1lZGlhIGV4cHJlc3Npb24gdGhhdCBpcyBub3QgYWNjZXB0ZWRcclxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XHJcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcclxuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJ3JldGluYTJ4Jykge1xyXG4vLy8gICAgLmZvbyB7XHJcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XHJcbi8vLyAgICB9XHJcbi8vLyAgfVxyXG4vLy9cclxuLy8vICAvKiBObyBvdXRwdXQgKi9cclxuLy8vXHJcbiRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nLCAncG9ydHJhaXQnLCAnbGFuZHNjYXBlJykgIWRlZmF1bHQ7XHJcblxyXG4vLy8vXHJcbi8vLyBDcm9zcy1lbmdpbmUgbG9nZ2luZyBlbmdpbmVcclxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vLy9cclxuXHJcblxyXG4vLy9cclxuLy8vIExvZyBhIG1lc3NhZ2UgZWl0aGVyIHdpdGggYEBlcnJvcmAgaWYgc3VwcG9ydGVkXHJcbi8vLyBlbHNlIHdpdGggYEB3YXJuYCwgdXNpbmcgYGZlYXR1cmUtZXhpc3RzKCdhdC1lcnJvcicpYFxyXG4vLy8gdG8gZGV0ZWN0IHN1cHBvcnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZXNzYWdlIC0gTWVzc2FnZSB0byBsb2dcclxuLy8vXHJcbkBmdW5jdGlvbiBsb2coJG1lc3NhZ2UpIHtcclxuICBAaWYgZmVhdHVyZS1leGlzdHMoJ2F0LWVycm9yJykge1xyXG4gICAgQGVycm9yICRtZXNzYWdlO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgQHdhcm4gJG1lc3NhZ2U7XHJcbiAgICAkXzogbm9vcCgpO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkbWVzc2FnZTtcclxufVxyXG5cclxuXHJcbi8vL1xyXG4vLy8gV3JhcHBlciBtaXhpbiBmb3IgdGhlIGxvZyBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIGEgbW9yZSBmcmllbmRseVxyXG4vLy8gQVBJIHRoYW4gYEBpZiBsb2coJy4uJykge31gIG9yIGAkXzogbG9nKCcuLicpYC4gQmFzaWNhbGx5LCB1c2UgdGhlIGZ1bmN0aW9uXHJcbi8vLyB3aXRoaW4gZnVuY3Rpb25zIGJlY2F1c2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbiBhIGZ1bmN0aW9uXHJcbi8vLyBhbmQgdXNlIHRoZSBtaXhpbiBldmVyeXdoZXJlIGVsc2UgYmVjYXVzZSBpdCdzIG11Y2ggbW9yZSBlbGVnYW50LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXHJcbi8vL1xyXG5AbWl4aW4gbG9nKCRtZXNzYWdlKSB7XHJcbiAgQGlmIGxvZygkbWVzc2FnZSkge31cclxufVxyXG5cclxuXHJcbi8vL1xyXG4vLy8gRnVuY3Rpb24gd2l0aCBubyBgQHJldHVybmAgY2FsbGVkIG5leHQgdG8gYEB3YXJuYCBpbiBTYXNzIDMuM1xyXG4vLy8gdG8gdHJpZ2dlciBhIGNvbXBpbGluZyBlcnJvciBhbmQgc3RvcCB0aGUgcHJvY2Vzcy5cclxuLy8vXHJcbkBmdW5jdGlvbiBub29wKCkge31cclxuXHJcbi8vL1xyXG4vLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbGlzdCBvZiBjb25kaXRpb25zIGlzIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICAgJGNvbmRpdGlvbnMgIC0gTWVkaWEgcXVlcnkgY29uZGl0aW9uc1xyXG4vLy9cclxuLy8vIEByZXR1cm4ge0Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBjb25kaXRpb25zIGFyZSBpbnRlcmNlcHRlZCBieSB0aGUgc3RhdGljIGJyZWFrcG9pbnRcclxuLy8vXHJcbkBmdW5jdGlvbiBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSB7XHJcbiAgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludCk7XHJcblxyXG4gIEBpZiBub3QgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUge1xyXG4gICAgQGlmIGxvZygnYCN7JGltLW5vLW1lZGlhLWJyZWFrcG9pbnR9YCBpcyBub3QgYSB2YWxpZCBicmVha3BvaW50LicpIHt9XHJcbiAgfVxyXG5cclxuICBAZWFjaCAkY29uZGl0aW9uIGluICRjb25kaXRpb25zIHtcclxuICAgIEBpZiBub3QgbWFwLWhhcy1rZXkoJG1lZGlhLWV4cHJlc3Npb25zLCAkY29uZGl0aW9uKSB7XHJcbiAgICAgICRvcGVyYXRvcjogZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGNvbmRpdGlvbik7XHJcbiAgICAgICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xyXG4gICAgICAkdmFsdWU6IGdldC1leHByZXNzaW9uLXZhbHVlKCRjb25kaXRpb24sICRvcGVyYXRvcik7XHJcblxyXG4gICAgICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBTcGFjZUFyb3VuZE9wZXJhdG9yXHJcbiAgICAgIEBpZiAoJHByZWZpeCA9PSAnbWF4JyBhbmQgJHZhbHVlIDw9ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSBvclxyXG4gICAgICAgICAgKCRwcmVmaXggPT0gJ21pbicgYW5kICR2YWx1ZSA+ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSB7XHJcbiAgICAgICAgQHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBAZWxzZSBpZiBub3QgaW5kZXgoJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zLCAkY29uZGl0aW9uKSB7XHJcbiAgICAgIEByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbi8vLy9cclxuLy8vIFBhcnNpbmcgZW5naW5lXHJcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy8vXHJcblxyXG5cclxuLy8vXHJcbi8vLyBHZXQgb3BlcmF0b3Igb2YgYW4gZXhwcmVzc2lvblxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBvcGVyYXRvciBmcm9tXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIEFueSBvZiBgPj1gLCBgPmAsIGA8PWAsIGA8YCwgYOKJpWAsIGDiiaRgXHJcbi8vL1xyXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGV4cHJlc3Npb24pIHtcclxuICBAZWFjaCAkb3BlcmF0b3IgaW4gKCc+PScsICc+JywgJzw9JywgJzwnLCAn4omlJywgJ+KJpCcpIHtcclxuICAgIEBpZiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xyXG4gICAgICBAcmV0dXJuICRvcGVyYXRvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbmNsdWRlIGEgbWl4aW4gaW5zaWRlIGEgZnVuY3Rpb24sIHNvIHdlIGhhdmUgdG9cclxuICAvLyByZWx5IG9uIHRoZSBgbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxyXG4gIC8vIGZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGFueXdoZXJlIGluIFNhc3MsIHdlIG5lZWQgdG8gaGFjayB0aGUgY2FsbCBpblxyXG4gIC8vIGEgZHVtbXkgdmFyaWFibGUsIHN1Y2ggYXMgYCRfYC4gSWYgYW55Ym9keSBldmVyIHJhaXNlIGEgc2NvcGluZyBpc3N1ZSB3aXRoXHJcbiAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBsb2coLi4pIHt9YCBpbnN0ZWFkLlxyXG4gICRfOiBsb2coJ05vIG9wZXJhdG9yIGZvdW5kIGluIGAjeyRleHByZXNzaW9ufWAuJyk7XHJcbn1cclxuXHJcblxyXG4vLy9cclxuLy8vIEdldCBkaW1lbnNpb24gb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBkaW1lbnNpb24gZnJvbVxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxyXG4vLy9cclxuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBgd2lkdGhgIG9yIGBoZWlnaHRgIChvciBwb3RlbnRpYWxseSBhbnl0aGluZyBlbHNlKVxyXG4vLy9cclxuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XHJcbiAgJG9wZXJhdG9yLWluZGV4OiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XHJcbiAgJHBhcnNlZC1kaW1lbnNpb246IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgMCwgJG9wZXJhdG9yLWluZGV4IC0gMSk7XHJcbiAgJGRpbWVuc2lvbjogJ3dpZHRoJztcclxuXHJcbiAgQGlmIHN0ci1sZW5ndGgoJHBhcnNlZC1kaW1lbnNpb24pID4gMCB7XHJcbiAgICAkZGltZW5zaW9uOiAkcGFyc2VkLWRpbWVuc2lvbjtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJGRpbWVuc2lvbjtcclxufVxyXG5cclxuXHJcbi8vL1xyXG4vLy8gR2V0IGRpbWVuc2lvbiBwcmVmaXggYmFzZWQgb24gYW4gb3BlcmF0b3JcclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG9wZXJhdG9yIC0gT3BlcmF0b3JcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYG1pbmAgb3IgYG1heGBcclxuLy8vXHJcbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKSB7XHJcbiAgQHJldHVybiBpZihpbmRleCgoJzwnLCAnPD0nLCAn4omkJyksICRvcGVyYXRvciksICdtYXgnLCAnbWluJyk7XHJcbn1cclxuXHJcblxyXG4vLy9cclxuLy8vIEdldCB2YWx1ZSBvZiBhbiBleHByZXNzaW9uLCBiYXNlZCBvbiBhIGZvdW5kIG9wZXJhdG9yXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IHZhbHVlIGZyb21cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvciBmcm9tIGAkZXhwcmVzc2lvbmBcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gQSBudW1lcmljIHZhbHVlXHJcbi8vL1xyXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xyXG4gICRvcGVyYXRvci1pbmRleDogc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xyXG4gICR2YWx1ZTogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAkb3BlcmF0b3ItaW5kZXggKyBzdHItbGVuZ3RoKCRvcGVyYXRvcikpO1xyXG5cclxuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIHtcclxuICAgICR2YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSk7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICAkdmFsdWU6IHRvLW51bWJlcigkdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgJGludGVydmFsOiBtYXAtZ2V0KCR1bml0LWludGVydmFscywgdW5pdCgkdmFsdWUpKTtcclxuXHJcbiAgQGlmIG5vdCAkaW50ZXJ2YWwge1xyXG4gICAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xyXG4gICAgLy8gcmVseSBvbiB0aGUgYGxvZyguLilgIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBgbG9nKC4uKWAgbWl4aW4uIEJlY2F1c2VcclxuICAgIC8vIGZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGFueXdoZXJlIGluIFNhc3MsIHdlIG5lZWQgdG8gaGFjayB0aGUgY2FsbCBpblxyXG4gICAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcclxuICAgIC8vIFNhc3MgMy4zLCBjaGFuZ2UgdGhpcyBsaW5lIGluIGBAaWYgbG9nKC4uKSB7fWAgaW5zdGVhZC5cclxuICAgICRfOiBsb2coJ1Vua25vd24gdW5pdCBgI3t1bml0KCR2YWx1ZSl9YC4nKTtcclxuICB9XHJcblxyXG4gIEBpZiAkb3BlcmF0b3IgPT0gJz4nIHtcclxuICAgICR2YWx1ZTogJHZhbHVlICsgJGludGVydmFsO1xyXG4gIH0gQGVsc2UgaWYgJG9wZXJhdG9yID09ICc8JyB7XHJcbiAgICAkdmFsdWU6ICR2YWx1ZSAtICRpbnRlcnZhbDtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHZhbHVlO1xyXG59XHJcblxyXG5cclxuLy8vXHJcbi8vLyBQYXJzZSBhbiBleHByZXNzaW9uIHRvIHJldHVybiBhIHZhbGlkIG1lZGlhLXF1ZXJ5IGV4cHJlc3Npb25cclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIHBhcnNlXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIFZhbGlkIG1lZGlhIHF1ZXJ5XHJcbi8vL1xyXG5AZnVuY3Rpb24gcGFyc2UtZXhwcmVzc2lvbigkZXhwcmVzc2lvbikge1xyXG4gIC8vIElmIGl0IGlzIHBhcnQgb2YgJG1lZGlhLWV4cHJlc3Npb25zLCBpdCBoYXMgbm8gb3BlcmF0b3JcclxuICAvLyB0aGVuIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ28gYW55IGZ1cnRoZXIsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxyXG4gIEBpZiBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRleHByZXNzaW9uKSB7XHJcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1lZGlhLWV4cHJlc3Npb25zLCAkZXhwcmVzc2lvbik7XHJcbiAgfVxyXG5cclxuICAkb3BlcmF0b3I6IGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKTtcclxuICAkZGltZW5zaW9uOiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XHJcbiAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XHJcbiAgJHZhbHVlOiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcclxuXHJcbiAgQHJldHVybiAnKCN7JHByZWZpeH0tI3skZGltZW5zaW9ufTogI3skdmFsdWV9KSc7XHJcbn1cclxuXHJcbi8vL1xyXG4vLy8gU2xpY2UgYCRsaXN0YCBiZXR3ZWVuIGAkc3RhcnRgIGFuZCBgJGVuZGAgaW5kZXhlc1xyXG4vLy9cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBMaXN0IHRvIHNsaWNlXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHN0YXJ0IFsxXSAtIFN0YXJ0IGluZGV4XHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGVuZCBbbGVuZ3RoKCRsaXN0KV0gLSBFbmQgaW5kZXhcclxuLy8vXHJcbi8vLyBAcmV0dXJuIHtMaXN0fSBTbGljZWQgbGlzdFxyXG4vLy9cclxuQGZ1bmN0aW9uIHNsaWNlKCRsaXN0LCAkc3RhcnQ6IDEsICRlbmQ6IGxlbmd0aCgkbGlzdCkpIHtcclxuICBAaWYgbGVuZ3RoKCRsaXN0KSA8IDEgb3IgJHN0YXJ0ID4gJGVuZCB7XHJcbiAgICBAcmV0dXJuICgpO1xyXG4gIH1cclxuXHJcbiAgJHJlc3VsdDogKCk7XHJcblxyXG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgdGhyb3VnaCAkZW5kIHtcclxuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCBudGgoJGxpc3QsICRpKSk7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRyZXN1bHQ7XHJcbn1cclxuXHJcbi8vLy9cclxuLy8vIFN0cmluZyB0byBudW1iZXIgY29udmVydGVyXHJcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy8vXHJcblxyXG5cclxuLy8vXHJcbi8vLyBDYXN0cyBhIHN0cmluZyBpbnRvIGEgbnVtYmVyXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGJlIHBhcnNlZFxyXG4vLy9cclxuLy8vIEByZXR1cm4ge051bWJlcn1cclxuLy8vXHJcbkBmdW5jdGlvbiB0by1udW1iZXIoJHZhbHVlKSB7XHJcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XHJcbiAgICBAcmV0dXJuICR2YWx1ZTtcclxuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnc3RyaW5nJyB7XHJcbiAgICAkXzogbG9nKCdWYWx1ZSBmb3IgYHRvLW51bWJlcmAgc2hvdWxkIGJlIGEgbnVtYmVyIG9yIGEgc3RyaW5nLicpO1xyXG4gIH1cclxuXHJcbiAgJGZpcnN0LWNoYXJhY3Rlcjogc3RyLXNsaWNlKCR2YWx1ZSwgMSwgMSk7XHJcbiAgJHJlc3VsdDogMDtcclxuICAkZGlnaXRzOiAwO1xyXG4gICRtaW51czogKCRmaXJzdC1jaGFyYWN0ZXIgPT0gJy0nKTtcclxuICAkbnVtYmVyczogKCcwJzogMCwgJzEnOiAxLCAnMic6IDIsICczJzogMywgJzQnOiA0LCAnNSc6IDUsICc2JzogNiwgJzcnOiA3LCAnOCc6IDgsICc5JzogOSk7XHJcblxyXG4gIC8vIFJlbW92ZSArLy0gc2lnbiBpZiBwcmVzZW50IGF0IGZpcnN0IGNoYXJhY3RlclxyXG4gIEBpZiAoJGZpcnN0LWNoYXJhY3RlciA9PSAnKycgb3IgJGZpcnN0LWNoYXJhY3RlciA9PSAnLScpIHtcclxuICAgICR2YWx1ZTogc3RyLXNsaWNlKCR2YWx1ZSwgMik7XHJcbiAgfVxyXG5cclxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0ci1sZW5ndGgoJHZhbHVlKSB7XHJcbiAgICAkY2hhcmFjdGVyOiBzdHItc2xpY2UoJHZhbHVlLCAkaSwgJGkpO1xyXG5cclxuICAgIEBpZiBub3QgKGluZGV4KG1hcC1rZXlzKCRudW1iZXJzKSwgJGNoYXJhY3Rlcikgb3IgJGNoYXJhY3RlciA9PSAnLicpIHtcclxuICAgICAgQHJldHVybiB0by1sZW5ndGgoaWYoJG1pbnVzLCAtJHJlc3VsdCwgJHJlc3VsdCksIHN0ci1zbGljZSgkdmFsdWUsICRpKSlcclxuICAgIH1cclxuXHJcbiAgICBAaWYgJGNoYXJhY3RlciA9PSAnLicge1xyXG4gICAgICAkZGlnaXRzOiAxO1xyXG4gICAgfSBAZWxzZSBpZiAkZGlnaXRzID09IDAge1xyXG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICogMTAgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKTtcclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICAkZGlnaXRzOiAkZGlnaXRzICogMTA7XHJcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKSAvICRkaWdpdHM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuIGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpO1xyXG59XHJcblxyXG5cclxuLy8vXHJcbi8vLyBBZGQgYCR1bml0YCB0byBgJHZhbHVlYFxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBhZGQgdW5pdCB0b1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR1bml0IC0gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB1bml0XHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIGAkdmFsdWVgIGV4cHJlc3NlZCBpbiBgJHVuaXRgXHJcbi8vL1xyXG5AZnVuY3Rpb24gdG8tbGVuZ3RoKCR2YWx1ZSwgJHVuaXQpIHtcclxuICAkdW5pdHM6ICgncHgnOiAxcHgsICdjbSc6IDFjbSwgJ21tJzogMW1tLCAnJSc6IDElLCAnY2gnOiAxY2gsICdwYyc6IDFwYywgJ2luJzogMWluLCAnZW0nOiAxZW0sICdyZW0nOiAxcmVtLCAncHQnOiAxcHQsICdleCc6IDFleCwgJ3Z3JzogMXZ3LCAndmgnOiAxdmgsICd2bWluJzogMXZtaW4sICd2bWF4JzogMXZtYXgpO1xyXG5cclxuICBAaWYgbm90IGluZGV4KG1hcC1rZXlzKCR1bml0cyksICR1bml0KSB7XHJcbiAgICAkXzogbG9nKCdJbnZhbGlkIHVuaXQgYCN7JHVuaXR9YC4nKTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHZhbHVlICogbWFwLWdldCgkdW5pdHMsICR1bml0KTtcclxufVxyXG5cclxuLy8vXHJcbi8vLyBUaGlzIG1peGluIGFpbXMgYXQgcmVkZWZpbmluZyB0aGUgY29uZmlndXJhdGlvbiBqdXN0IGZvciB0aGUgc2NvcGUgb2ZcclxuLy8vIHRoZSBjYWxsLiBJdCBpcyBoZWxwZnVsIHdoZW4gaGF2aW5nIGEgY29tcG9uZW50IG5lZWRpbmcgYW4gZXh0ZW5kZWRcclxuLy8vIGNvbmZpZ3VyYXRpb24gc3VjaCBhcyBjdXN0b20gYnJlYWtwb2ludHMgKHJlZmVycmVkIHRvIGFzIHR3ZWFrcG9pbnRzKVxyXG4vLy8gZm9yIGluc3RhbmNlLlxyXG4vLy9cclxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TWFwfSAkdHdlYWtwb2ludHMgWygpXSAtIE1hcCBvZiB0d2Vha3BvaW50cyB0byBiZSBtZXJnZWQgd2l0aCBgJGJyZWFrcG9pbnRzYFxyXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucyBbKCldIC0gTWFwIG9mIHR3ZWFrZWQgbWVkaWEgZXhwcmVzc2lvbnMgdG8gYmUgbWVyZ2VkIHdpdGggYCRtZWRpYS1leHByZXNzaW9uYFxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgdGhlIGdsb2JhbCBicmVha3BvaW50cyB3aXRoIGEgdHdlYWtwb2ludFxyXG4vLy8gIEBpbmNsdWRlIG1lZGlhLWNvbnRleHQoKCdjdXN0b20nOiA2NzhweCkpIHtcclxuLy8vICAgIC5mb28ge1xyXG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJywgJzw9Y3VzdG9tJykge1xyXG4vLy8gICAgICAgLy8gLi4uXHJcbi8vLyAgICAgIH1cclxuLy8vICAgIH1cclxuLy8vICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCB0aGUgZ2xvYmFsIG1lZGlhIGV4cHJlc3Npb25zIHdpdGggYSBjdXN0b20gb25lXHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgnYWxsJzogJ2FsbCcpKSB7XHJcbi8vLyAgICAuZm9vIHtcclxuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJ2FsbCcsICc+cGhvbmUnKSB7XHJcbi8vLyAgICAgICAvLyAuLi5cclxuLy8vICAgICAgfVxyXG4vLy8gICAgfVxyXG4vLy8gIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIGJvdGggY29uZmlndXJhdGlvbiBtYXBzXHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSwgKCdhbGwnOiAnYWxsJykpIHtcclxuLy8vICAgIC5mb28ge1xyXG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSgnYWxsJywgJz5waG9uZScsICc8PWN1c3RvbScpIHtcclxuLy8vICAgICAgIC8vIC4uLlxyXG4vLy8gICAgICB9XHJcbi8vLyAgICB9XHJcbi8vLyAgfVxyXG4vLy9cclxuQG1peGluIG1lZGlhLWNvbnRleHQoJHR3ZWFrcG9pbnRzOiAoKSwgJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zOiAoKSkge1xyXG4gIC8vIFNhdmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cclxuICAkZ2xvYmFsLWJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHM7XHJcbiAgJGdsb2JhbC1tZWRpYS1leHByZXNzaW9uczogJG1lZGlhLWV4cHJlc3Npb25zO1xyXG5cclxuICAvLyBVcGRhdGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cclxuICAkYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICR0d2Vha3BvaW50cykgIWdsb2JhbDtcclxuICAkbWVkaWEtZXhwcmVzc2lvbnM6IG1hcC1tZXJnZSgkbWVkaWEtZXhwcmVzc2lvbnMsICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucykgIWdsb2JhbDtcclxuXHJcbiAgQGNvbnRlbnQ7XHJcblxyXG4gIC8vIFJlc3RvcmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cclxuICAkYnJlYWtwb2ludHM6ICRnbG9iYWwtYnJlYWtwb2ludHMgIWdsb2JhbDtcclxuICAkbWVkaWEtZXhwcmVzc2lvbnM6ICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnMgIWdsb2JhbDtcclxufVxyXG5cclxuLy8vL1xyXG4vLy8gaW5jbHVkZS1tZWRpYSBwdWJsaWMgZXhwb3NlZCBBUElcclxuLy8vIEBhdXRob3IgRWR1YXJkbyBCb3VjYXNcclxuLy8vIEBhY2Nlc3MgcHVibGljXHJcbi8vLy9cclxuXHJcblxyXG4vLy9cclxuLy8vIEdlbmVyYXRlcyBhIG1lZGlhIHF1ZXJ5IGJhc2VkIG9uIGEgbGlzdCBvZiBjb25kaXRpb25zXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAgICRjb25kaXRpb25zICAtIE1lZGlhIHF1ZXJ5IGNvbmRpdGlvbnNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHNpbmdsZSBzZXQgYnJlYWtwb2ludFxyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnKSB7IH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCB0d28gc2V0IGJyZWFrcG9pbnRzXHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PXRhYmxldCcpIHsgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGN1c3RvbSB2YWx1ZXNcclxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNThweCcsICc8ODUwcHgnKSB7IH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBzZXQgYnJlYWtwb2ludHMgd2l0aCBjdXN0b20gdmFsdWVzXHJcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5kZXNrdG9wJywgJzw9MTM1MHB4JykgeyB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzdGF0aWMgZXhwcmVzc2lvblxyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCdyZXRpbmEyeCcpIHsgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBNaXhpbmcgZXZlcnl0aGluZ1xyXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PTM1MHB4JywgJzx0YWJsZXQnLCAncmV0aW5hM3gnKSB7IH1cclxuLy8vXHJcbkBtaXhpbiBtZWRpYSgkY29uZGl0aW9ucy4uLikge1xyXG4gIC8vIHNjc3MtbGludDpkaXNhYmxlIFNwYWNlQXJvdW5kT3BlcmF0b3JcclxuICBAaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID09IDApIG9yXHJcbiAgICAgIChub3QgJGltLW1lZGlhLXN1cHBvcnQgYW5kIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pKSB7XHJcbiAgICBAY29udGVudDtcclxuICB9IEBlbHNlIGlmICgkaW0tbWVkaWEtc3VwcG9ydCBhbmQgbGVuZ3RoKCRjb25kaXRpb25zKSA+IDApIHtcclxuICAgIEBtZWRpYSAje3VucXVvdGUocGFyc2UtZXhwcmVzc2lvbihudGgoJGNvbmRpdGlvbnMsIDEpKSl9IHtcclxuICAgICAgLy8gUmVjdXJzaXZlIGNhbGxcclxuICAgICAgQGluY2x1ZGUgbWVkaWEoc2xpY2UoJGNvbmRpdGlvbnMsIDIpLi4uKSB7XHJcbiAgICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQG1peGluIGJhc2Utc3R5bGUge1xyXG5cdGNvbG9yOiAkYmFzZS1jb2xvcjtcclxuXHRmb250LWZhbWlseTogJHNhbnMtc2VyaWY7XHJcblx0QGluY2x1ZGUgZm9udC1zaXplcyggMThweCwgMThweCApO1xyXG5cdGZvbnQtd2VpZ2h0OiA0MDA7XHJcblx0bGluZS1oZWlnaHQ6IDEuNTU7XHJcblxyXG5cdEBtZWRpYSBwcmludCB7XHJcblx0XHRmb250LWZhbWlseTogc2Fucy1zZXJpZjtcclxuXHR9XHJcbn1cclxuXHJcbiV0cmFuc2l0aW9uIHtcclxuXHR0cmFuc2l0aW9uOiBhbGwgMC4xcyBlYXNlLWluLW91dDtcclxufVxyXG5cclxuJWFsdF9saW5rIHtcclxuXHRjb2xvcjogJGJhc2UtY29sb3I7XHJcblx0Zm9udC13ZWlnaHQ6IDQwMDtcclxuXHJcblx0Jjpob3ZlciB7XHJcblx0XHRjb2xvcjogJGhpZ2hsaWdodDtcclxuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHR9XHJcbn1cclxuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjguMC4wIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xyXG5cclxuLyogRG9jdW1lbnRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxyXG4gKi9cclxuXHJcbmh0bWwge1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXHJcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXHJcbn1cclxuXHJcbi8qIFNlY3Rpb25zXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbmJvZHkge1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcclxuICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cclxuICovXHJcblxyXG5oMSB7XHJcbiAgZm9udC1zaXplOiAyZW07XHJcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcclxufVxyXG5cclxuLyogR3JvdXBpbmcgY29udGVudFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXHJcbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxyXG4gKi9cclxuXHJcbmhyIHtcclxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMSAqL1xyXG4gIGhlaWdodDogMDsgLyogMSAqL1xyXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxucHJlIHtcclxuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cclxuICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xyXG59XHJcblxyXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cclxuICovXHJcblxyXG5hIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXHJcbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXHJcbiAqL1xyXG5cclxuYWJiclt0aXRsZV0ge1xyXG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLyogMiAqL1xyXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cclxuICovXHJcblxyXG5iLFxyXG5zdHJvbmcge1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxuY29kZSxcclxua2JkLFxyXG5zYW1wIHtcclxuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cclxuICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxuc21hbGwge1xyXG4gIGZvbnQtc2l6ZTogODAlO1xyXG59XHJcblxyXG4vKipcclxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXHJcbiAqIGFsbCBicm93c2Vycy5cclxuICovXHJcblxyXG5zdWIsXHJcbnN1cCB7XHJcbiAgZm9udC1zaXplOiA3NSU7XHJcbiAgbGluZS1oZWlnaHQ6IDA7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcclxufVxyXG5cclxuc3ViIHtcclxuICBib3R0b206IC0wLjI1ZW07XHJcbn1cclxuXHJcbnN1cCB7XHJcbiAgdG9wOiAtMC41ZW07XHJcbn1cclxuXHJcbi8qIEVtYmVkZGVkIGNvbnRlbnRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxyXG4gKi9cclxuXHJcbmltZyB7XHJcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xyXG59XHJcblxyXG4vKiBGb3Jtc1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXHJcbiAqL1xyXG5cclxuYnV0dG9uLFxyXG5pbnB1dCxcclxub3B0Z3JvdXAsXHJcbnNlbGVjdCxcclxudGV4dGFyZWEge1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0OyAvKiAxICovXHJcbiAgZm9udC1zaXplOiAxMDAlOyAvKiAxICovXHJcbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cclxuICBtYXJnaW46IDA7IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxyXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuaW5wdXQgeyAvKiAxICovXHJcbiAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cclxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuc2VsZWN0IHsgLyogMSAqL1xyXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xyXG59XHJcblxyXG4vKipcclxuICogQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cclxuICovXHJcblxyXG5idXR0b24sXHJcblt0eXBlPVwiYnV0dG9uXCJdLFxyXG5bdHlwZT1cInJlc2V0XCJdLFxyXG5bdHlwZT1cInN1Ym1pdFwiXSB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxyXG4gKi9cclxuXHJcbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcclxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXHJcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXHJcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcclxuICBib3JkZXItc3R5bGU6IG5vbmU7XHJcbiAgcGFkZGluZzogMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cclxuICovXHJcblxyXG5idXR0b246LW1vei1mb2N1c3JpbmcsXHJcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxyXG5bdHlwZT1cInJlc2V0XCJdOi1tb3otZm9jdXNyaW5nLFxyXG5bdHlwZT1cInN1Ym1pdFwiXTotbW96LWZvY3VzcmluZyB7XHJcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xyXG59XHJcblxyXG4vKipcclxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxyXG4gKi9cclxuXHJcbmZpZWxkc2V0IHtcclxuICBwYWRkaW5nOiAwLjM1ZW0gMC43NWVtIDAuNjI1ZW07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxyXG4gKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXHJcbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcclxuICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxubGVnZW5kIHtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXHJcbiAgY29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cclxuICBkaXNwbGF5OiB0YWJsZTsgLyogMSAqL1xyXG4gIG1heC13aWR0aDogMTAwJTsgLyogMSAqL1xyXG4gIHBhZGRpbmc6IDA7IC8qIDMgKi9cclxuICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiAxICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxyXG4gKi9cclxuXHJcbnByb2dyZXNzIHtcclxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDEwKy5cclxuICovXHJcblxyXG50ZXh0YXJlYSB7XHJcbiAgb3ZlcmZsb3c6IGF1dG87XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC5cclxuICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLlxyXG4gKi9cclxuXHJcblt0eXBlPVwiY2hlY2tib3hcIl0sXHJcblt0eXBlPVwicmFkaW9cIl0ge1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cclxuICBwYWRkaW5nOiAwOyAvKiAyICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXHJcbiAqL1xyXG5cclxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXHJcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcclxuICBoZWlnaHQ6IGF1dG87XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cclxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXHJcbiAqL1xyXG5cclxuW3R5cGU9XCJzZWFyY2hcIl0ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXHJcbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cclxuICovXHJcblxyXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cclxuICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxyXG4gKi9cclxuXHJcbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXHJcbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xyXG59XHJcblxyXG4vKiBJbnRlcmFjdGl2ZVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLypcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUgMTArLCBhbmQgRmlyZWZveC5cclxuICovXHJcblxyXG5kZXRhaWxzIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLypcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbnN1bW1hcnkge1xyXG4gIGRpc3BsYXk6IGxpc3QtaXRlbTtcclxufVxyXG5cclxuLyogTWlzY1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwKy5cclxuICovXHJcblxyXG50ZW1wbGF0ZSB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxyXG4gKi9cclxuXHJcbltoaWRkZW5dIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcbiIsIi8qIEJveCBTaXppbmdcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcblxyXG5odG1sLFxyXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcclxuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG4qLFxyXG4qOmJlZm9yZSxcclxuKjphZnRlciB7XHJcblx0Ym94LXNpemluZzogaW5oZXJpdDtcclxufVxyXG5cclxuQGluY2x1ZGUgbWVkaWEoJzwxMjAwcHgnKSB7XHJcblx0LmVudHJ5LWNvbnRlbnQge1xyXG5cdFx0cGFkZGluZzogMCAyMHB4O1xyXG5cdH1cclxufVxyXG5cclxuLyogV3JhcFxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuXHJcbi53cmFwIHtcclxuXHRtYXgtd2lkdGg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAnZGVza3RvcCcpO1xyXG5cdG1hcmdpbjogMCBhdXRvO1xyXG5cdC8vcGFkZGluZy1sZWZ0OiAoJGdyaWQtZ2FwIC8gMik7XHJcblx0Ly9wYWRkaW5nLXJpZ2h0OiAoJGdyaWQtZ2FwIC8gMik7XHJcblx0QGluY2x1ZGUgY2xlYXJmaXg7XHJcbn1cclxuXHJcbi5zaXRlLWhlYWRlciAud3JhcCB7XHJcblx0bWF4LXdpZHRoOiAxNjQwcHg7XHJcbn1cclxuXHJcbi5zaXRlLWlubmVyIHtcclxuXHRwYWRkaW5nOiAwcHggMDtcclxuXHJcblx0QGluY2x1ZGUgbWVkaWEoXCI+PXRhYmxldFwiKSB7XHJcblx0XHRwYWRkaW5nOiAwcHggMDtcclxuXHR9XHJcblxyXG5cdC5zaW5ndWxhci5jb250ZW50ICY+LndyYXAge1xyXG5cdFx0bWF4LXdpZHRoOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJ2NvbnRlbnQtd2lkdGgnKTtcclxuXHR9XHJcbn1cclxuXHJcbi8qIFNjcmVlbiBSZWFkZXIgVGV4dFxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuXHJcbi5nZW5lc2lzLXNraXAtbGluayB7XHJcblx0ZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLnNjcmVlbi1yZWFkZXItdGV4dCxcclxuLnNjcmVlbi1yZWFkZXItdGV4dCBzcGFuLFxyXG4uc2NyZWVuLXJlYWRlci1zaG9ydGN1dCB7XHJcblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XHJcblx0Y2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcclxuXHRoZWlnaHQ6IDFweDtcclxuXHR3aWR0aDogMXB4O1xyXG5cdGJvcmRlcjogMDtcclxuXHRvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4uc2NyZWVuLXJlYWRlci10ZXh0OmZvY3VzLFxyXG4uc2NyZWVuLXJlYWRlci1zaG9ydGN1dDpmb2N1cyB7XHJcblx0Y2xpcDogYXV0byAhaW1wb3J0YW50O1xyXG5cdGhlaWdodDogYXV0bztcclxuXHR3aWR0aDogYXV0bztcclxuXHRkaXNwbGF5OiBibG9jaztcclxuXHRmb250LXNpemU6IDFlbTtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxuXHRwYWRkaW5nOiAxNXB4IDIzcHggMTRweDtcclxuXHRjb2xvcjogIzMzMztcclxuXHRiYWNrZ3JvdW5kOiAjZmZmO1xyXG5cdHotaW5kZXg6IDEwMDAwMDtcclxuXHQvKiBBYm92ZSBXUCB0b29sYmFyLiAqL1xyXG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHRib3gtc2hhZG93OiAwIDAgMnB4IDJweCByZ2JhKDAsIDAsIDAsIC42KTtcclxufVxyXG5cclxuLyogU2lkZWJhciBMYXlvdXRzXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG5cclxuQGluY2x1ZGUgbWVkaWEoXCI8bWVkaXVtXCIpIHtcclxuXHJcblx0LnNpZGViYXItcHJpbWFyeSB7XHJcblx0XHRkaXNwbGF5OiBub25lO1xyXG5cdH1cclxufVxyXG5cclxuQGluY2x1ZGUgbWVkaWEoXCI+PW1lZGl1bVwiKSB7XHJcblxyXG5cdC5jb250ZW50LXNpZGViYXIge1xyXG5cclxuXHRcdC5zaXRlLW1haW4ge1xyXG5cdFx0XHRmbG9hdDogbGVmdDtcclxuXHRcdFx0d2lkdGg6IDc2OHB4IC8gMTE2OHB4ICogMTAwJTtcclxuXHRcdH1cclxuXHJcblx0XHQuc2lkZWJhci1wcmltYXJ5IHtcclxuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0XHR3aWR0aDogMzM1cHggLyAxMTY4cHggKiAxMDAlO1xyXG5cdFx0fVxyXG5cclxuXHRcdEBzdXBwb3J0cyhkaXNwbGF5OiAkZ3JpZCkge1xyXG5cdFx0XHQuY29udGVudC1hcmVhIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDMwMHB4O1xyXG5cdFx0XHRcdGdyaWQtY29sdW1uLWdhcDogJGdyaWQtZ2FwO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQuc2l0ZS1tYWluIHtcclxuXHRcdFx0XHRmbG9hdDogbm9uZTtcclxuXHRcdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdFx0XHRtYXgtd2lkdGg6ICRjb250ZW50LXdpZHRoO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQuc2lkZWJhci1wcmltYXJ5IHtcclxuXHRcdFx0XHRmbG9hdDogbm9uZTtcclxuXHRcdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufSIsIi8qIFR5cG9ncmFwaGljYWwgRWxlbWVudHNcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcblxyXG5ib2R5IHtcclxuXHRAaW5jbHVkZSBiYXNlLXN0eWxlKCk7XHJcblx0b3ZlcmZsb3cteDogaGlkZGVuO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG5hIHtcclxuXHRjb2xvcjogJGhpZ2hsaWdodDtcclxuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuXHRAZXh0ZW5kICV0cmFuc2l0aW9uO1xyXG5cclxuXHQmOmhvdmVyIHtcclxuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHR9XHJcblxyXG5cdHN2ZyB7XHJcblx0XHRAZXh0ZW5kICV0cmFuc2l0aW9uO1xyXG5cdH1cclxufVxyXG5cclxuc3Ryb25nIHtcclxuXHRmb250LXdlaWdodDogNzAwO1xyXG59XHJcblxyXG5vbCxcclxudWwge1xyXG5cdG1hcmdpbjogMDtcclxuXHRwYWRkaW5nOiAwO1xyXG59XHJcblxyXG5jb2RlLFxyXG5wcmUge1xyXG5cdGZvbnQtZmFtaWx5OiBNb25hY28sIE1lbmxvLCBDb25zb2xhcywgXCJDb3VyaWVyIE5ld1wiLCBtb25vc3BhY2U7XHJcblx0Zm9udC1zaXplOiAxMnB4O1xyXG59XHJcblxyXG5jb2RlIHtcclxuXHRwYWRkaW5nOiAycHggNHB4O1xyXG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbn1cclxuXHJcbnByZSB7XHJcblx0ZGlzcGxheTogYmxvY2s7XHJcblx0cGFkZGluZzogOS41cHg7XHJcblx0bWFyZ2luOiAwIDAgMTBweDtcclxuXHRsaW5lLWhlaWdodDogMThweDtcclxuXHR3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcblx0d29yZC13cmFwOiBicmVhay13b3JkO1xyXG5cdHdoaXRlLXNwYWNlOiBwcmU7XHJcblx0d2hpdGUtc3BhY2U6IHByZS13cmFwO1xyXG59XHJcblxyXG5wcmUgY29kZSB7XHJcblx0cGFkZGluZzogMDtcclxuXHRjb2xvcjogaW5oZXJpdDtcclxuXHR3aGl0ZS1zcGFjZTogcHJlO1xyXG5cdHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuXHRib3JkZXI6IDA7XHJcbn1cclxuXHJcbmNpdGUge1xyXG5cdGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufVxyXG5cclxuLmNsZWFyZml4IHtcclxuXHRAaW5jbHVkZSBjbGVhcmZpeDtcclxufVxyXG5cclxuLyogUGFyYWdyYXBoXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG5cclxucCB7XHJcblx0bWFyZ2luOiAwIDAgJGJhc2UtbWFyZ2luO1xyXG5cdHBhZGRpbmc6IDA7XHJcblxyXG5cdCYubGFyZ2UsXHJcblx0Ji5oYXMtbGFyZ2UtZm9udC1zaXplIHtcclxuXHRcdEBpbmNsdWRlIGZvbnQtc2l6ZXMoMjFweCwgMjRweCk7XHJcblx0fVxyXG5cclxuXHQmLmhhcy1ub3JtYWwtZm9udC1zaXplIHtcclxuXHRcdEBpbmNsdWRlIGZvbnQtc2l6ZXMoMThweCwgMThweCk7XHJcblx0fVxyXG5cclxuXHQmLnNtYWxsLFxyXG5cdCYuaGFzLXNtYWxsLWZvbnQtc2l6ZSB7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0fVxyXG59XHJcblxyXG4vKiBIZWFkaW5nc1xyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuXHJcbmgxLFxyXG5oMixcclxuaDMsXHJcbmg0LFxyXG5oNSxcclxuaDYge1xyXG5cdGNvbG9yOiAkZ3JleV8xMDtcclxuXHRmb250LWZhbWlseTogJHNlcmlmO1xyXG5cdGZvbnQtd2VpZ2h0OiA0MDA7XHJcblx0bGluZS1oZWlnaHQ6IDEuMjtcclxuXHRtYXJnaW46IDAgMCAxNnB4O1xyXG5cclxuXHRhIHtcclxuXHRcdGNvbG9yOiAkZ3JleV8xMDtcclxuXHJcblx0XHQmOmhvdmVyIHtcclxuXHRcdFx0Y29sb3I6ICRoaWdobGlnaHQ7XHJcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cclxuXHQmOmZvY3VzIHtcclxuXHRcdG91dGxpbmU6IG5vbmU7XHJcblx0fVxyXG59XHJcblxyXG4uZW50cnktaGVhZGVyIHtcclxuXHRkaXNwbGF5OiBmbGV4O1xyXG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbn1cclxuXHJcblxyXG5cclxuaDEge1xyXG5cdEBpbmNsdWRlIGZvbnQtc2l6ZXMoNTBweCwgNjVweCwgODRweCk7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblxyXG59XHJcblxyXG5oMiB7XHJcblx0QGluY2x1ZGUgZm9udC1zaXplcygyNnB4LCAzMnB4LCA0MHB4KTtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuXHJcbmgzIHtcclxuXHRAaW5jbHVkZSBmb250LXNpemVzKDIycHgsIDI2cHgsIDI4cHgpO1xyXG59XHJcblxyXG5oNCxcclxuaDUsXHJcbmg2IHtcclxuXHRAaW5jbHVkZSBmb250LXNpemVzKDEycHgsIDE2cHgpO1xyXG59IiwiLyogU2l0ZSBIZWFkZXJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4vKiAubmF2YmFyLXdyYXAge1xyXG5cdHBvc2l0aW9uOiBmaXhlZDtcclxuXHR3aWR0aDogMTAwJTtcclxuXHR6LWluZGV4OiA5OTk5OTk7XHJcbn0gKi9cclxuXHJcbi5zaXRlLWhlYWRlciB7XHJcblx0YmFja2dyb3VuZDogJHdoaXRlO1xyXG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRtaW4taGVpZ2h0OiA0OXB4O1xyXG59XHJcblxyXG4udGl0bGUtYXJlYSB7XHJcblx0LypmbG9hdDogbGVmdDsqL1xyXG5cdGZsb2F0OiByaWdodDtcclxuXHR3aWR0aDogMTAwJTtcclxuXHRtYXgtd2lkdGg6ICRsb2dvX3dpZHRoO1xyXG5cdHRleHQtYWxpZ246IGxlZnQ7XHJcblx0bWFyZ2luOiAwIGF1dG87XHJcblxyXG5cdGgxLnNpdGUtdGl0bGUsXHJcblx0cC5zaXRlLXRpdGxlIHtcclxuXHRcdG1hcmdpbjogMDtcclxuXHRcdGZvbnQtc2l6ZTogMjRweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAzMHB4O1xyXG5cclxuXHRcdHBhZGRpbmc6IDhweCAwIDhweCA4cHg7XHJcblxyXG5cdFx0YSB7XHJcblx0XHRcdGNvbG9yOiAkYmFzZS1jb2xvcjtcclxuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblxyXG5cdC5zaXRlLXRpdGxlIGEge1xyXG5cdFx0YmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9sb2dvLnBuZykgbm8tcmVwZWF0IGNlbnRlcjtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuXHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0dGV4dC1pbmRlbnQ6IC05OTk5ZW07XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGRpcmVjdGlvbjogbHRyO1xyXG5cdFx0aGVpZ2h0OiAwO1xyXG5cdFx0cGFkZGluZy1ib3R0b206IDg2cHggLyA0MHB4ICogMTAwJTtcclxuXHR9XHJcblxyXG5cclxuXHRAaW5jbHVkZSBtZWRpYShcIjw9bW9iaWxlX21lbnVcIikge1xyXG5cdFx0ZmxvYXQ6IG5vbmU7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG5cdFx0LnNpdGUtdGl0bGUgYSB7XHJcblx0XHRcdHBhZGRpbmctYm90dG9tOiAwO1xyXG5cdFx0XHRoZWlnaHQ6IDQ4cHg7XHJcblx0XHRcdGJhY2tncm91bmQtc2l6ZTogYXV0byA0MnB4O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblxyXG59XHJcblxyXG5cclxuLyogQWRtaW4gQmFyXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG5cclxuQGluY2x1ZGUgbWVkaWEoXCI+NzgycHhcIikge1xyXG5cdC5hZG1pbi1iYXIgLnNpdGUtY29udGFpbmVyIHtcclxuXHRcdHBhZGRpbmctdG9wOiAzMnB4O1xyXG5cdH1cclxufVxyXG5cclxuQGluY2x1ZGUgbWVkaWEoXCI8PTc4MnB4XCIpIHtcclxuXHQjd3BhZG1pbmJhciB7XHJcblx0XHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcblxyXG4vKiBQZXJzaXN0ZW50IEhlYWRlclxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuXHJcbkBpZigkcGVyc2lzdGVudF9kZXNrdG9wKSB7XHJcblx0QGluY2x1ZGUgbWVkaWEoXCI+bW9iaWxlX21lbnVcIikge1xyXG5cclxuXHRcdC5zaXRlLWNvbnRhaW5lciB7XHJcblx0XHRcdHBhZGRpbmctdG9wOiAkcGVyc2lzdGVudF9kZXNrdG9wO1xyXG5cdFx0fVxyXG5cclxuXHRcdC5zaXRlLWhlYWRlciB7XHJcblx0XHRcdHBvc2l0aW9uOiBmaXhlZDtcclxuXHRcdFx0dG9wOiAwO1xyXG5cdFx0XHRsZWZ0OiAwO1xyXG5cdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdFx0ei1pbmRleDogOTk5O1xyXG5cdFx0XHRoZWlnaHQ6ICRwZXJzaXN0ZW50X2Rlc2t0b3A7XHJcblx0XHR9XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI+NzgycHhcIikge1xyXG5cdFx0XHQuYWRtaW4tYmFyIHtcclxuXHJcblx0XHRcdFx0LnNpdGUtY29udGFpbmVyIHtcclxuXHRcdFx0XHRcdHBhZGRpbmctdG9wOiAzMnB4ICsgJHBlcnNpc3RlbnRfZGVza3RvcDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC5zaXRlLWhlYWRlciB7XHJcblx0XHRcdFx0XHR0b3A6IDMycHg7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5AaWYoJHBlcnNpc3RhbnRfbW9iaWxlKSB7XHJcblx0QGluY2x1ZGUgbWVkaWEoXCI8PW1vYmlsZV9tZW51XCIpIHtcclxuXHJcblx0XHQuc2l0ZS1jb250YWluZXIge1xyXG5cdFx0XHRwYWRkaW5nLXRvcDogJHBlcnNpc3RhbnRfbW9iaWxlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC5zaXRlLWhlYWRlciB7XHJcblx0XHRcdHBvc2l0aW9uOiBmaXhlZDtcclxuXHRcdFx0dG9wOiAwO1xyXG5cdFx0XHRsZWZ0OiAwO1xyXG5cdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdFx0ei1pbmRleDogOTk5O1xyXG5cclxuXHRcdFx0b3ZlcmZsb3c6IHNjcm9sbDtcclxuXHRcdFx0bWF4LWhlaWdodDogMTAwdmg7XHJcblx0XHR9XHJcblxyXG5cdFx0QGluY2x1ZGUgbWVkaWEoXCI+NzgycHhcIikge1xyXG5cdFx0XHQuYWRtaW4tYmFyIHtcclxuXHJcblx0XHRcdFx0LnNpdGUtY29udGFpbmVyIHtcclxuXHRcdFx0XHRcdHBhZGRpbmctdG9wOiAzMnB4ICsgJHBlcnNpc3RhbnRfbW9iaWxlO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LnNpdGUtaGVhZGVyIHtcclxuXHRcdFx0XHRcdHRvcDogMzJweDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0fVxyXG59IiwiLyogTmF2aWdhdGlvblxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcblxyXG5cclxuXHJcbi5uYXYtbWVudSB7XHJcblxyXG5cdCY+KiB7XHJcblx0XHRsaW5lLWhlaWdodDogMDtcclxuXHR9XHJcblxyXG5cdHVsIHtcclxuXHRcdGNsZWFyOiBib3RoO1xyXG5cdFx0bGluZS1oZWlnaHQ6IDE7XHJcblx0XHRtYXJnaW46IDA7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHJcblxyXG5cdH1cclxuXHJcblx0Lm1lbnUtaXRlbSB7XHJcblx0XHRsaXN0LXN0eWxlOiBub25lO1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0bWFyZ2luOiAxMHB4IDA7XHJcblxyXG5cdFx0YSB7XHJcblx0XHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdFx0Y29sb3I6ICRiYXNlLWNvbG9yO1xyXG5cdFx0XHRkaXNwbGF5OiBpbmxpbmU7XHJcblx0XHRcdGZvbnQtc2l6ZTogMThweDtcclxuXHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHRcdGxpbmUtaGVpZ2h0OiAyMnB4O1xyXG5cdFx0XHRwYWRkaW5nOiAxM3B4IDIwcHg7XHJcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG5cdFx0XHRtYXJnaW46IDAgNHB4O1xyXG5cdFx0fVxyXG5cclxuXHRcdCY6aG92ZXI+YSB7XHJcblx0XHRcdC8vYmFja2dyb3VuZDogJHllbGxvdztcclxuXHRcdFx0Y29sb3I6ICM5YzljOWMgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHJcblx0XHQmLmN1cnJlbnQtbWVudS1pdGVtPmEsXHJcblx0XHQmLmN1cnJlbnQtbWVudS1hbmNlc3Rvcj5hIHtcclxuXHRcdFx0Y29sb3I6ICR5ZWxsb3c7XHJcblxyXG5cdFx0XHRAaW5jbHVkZSBtZWRpYSgnPHNtYWxsJykge1xyXG5cdFx0XHRcdC8vXHRtYXJnaW4tcmlnaHQ6IC0xN3B4O1xyXG5cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHR9XHJcblxyXG5cdC5zdWJtZW51LWV4cGFuZCB7XHJcblx0XHRAaW5jbHVkZSBidXR0b24tcmVzZXQ7XHJcblx0XHQvL3Bvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdGxpbmUtaGVpZ2h0OiAwO1xyXG5cdFx0dG9wOiA1MCU7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcblx0XHRsZWZ0OiA3cHg7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IC0xNHB4O1xyXG5cclxuXHRcdHN2ZyB7XHJcblx0XHRcdGZpbGw6ICRncmV5Xzc7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQubmF2LXNlY29uZGFyeSB7XHJcblx0XHQubWVudS1pdGVtLnNlYXJjaCB7XHJcblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPD1tb2JpbGVfbWVudVwiKSB7XHJcblx0XHRcdFx0cGFkZGluZzogNHB4IDE2cHggMTZweDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0QGluY2x1ZGUgbWVkaWEoXCI+bW9iaWxlX21lbnVcIikge1xyXG5cdFx0XHRcdG1hcmdpbjogNXB4IDAgMCA4cHg7XHJcblxyXG5cdFx0XHRcdC5zZWFyY2gtZmllbGQge1xyXG5cdFx0XHRcdFx0cGFkZGluZy10b3A6IDhweDtcclxuXHRcdFx0XHRcdHBhZGRpbmctYm90dG9tOiA4cHg7XHJcblx0XHRcdFx0XHR3aWR0aDogMjY4cHg7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQubmF2LXByaW1hcnkge1xyXG5cclxuXHRcdC5tZW51LWl0ZW0uc2VhcmNoIHtcclxuXHRcdFx0bGluZS1oZWlnaHQ6IDA7XHJcblxyXG5cdFx0XHRidXR0b24ge1xyXG5cdFx0XHRcdHBhZGRpbmc6IDEycHg7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdEBpbmNsdWRlIG1lZGlhKFwiPD1tb2JpbGVfbWVudVwiKSB7XHJcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblxyXG5cclxuXHRAaW5jbHVkZSBtZWRpYShcIj5tb2JpbGVfbWVudVwiKSB7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHR3aWR0aDogY2FsYygxMDAlIC0gI3skbWVudV93aWR0aH0pO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZmxvdzogY29sdW1uLXJldmVyc2Ugbm93cmFwO1xyXG5cdFx0bWFyZ2luLXRvcDogNzBweDtcclxuXHJcblx0XHQubmF2LXByaW1hcnksXHJcblx0XHQubmF2LXNlY29uZGFyeSB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Lm5hdi1wcmltYXJ5Ky5uYXYtc2Vjb25kYXJ5IHtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcclxuXHRcdH1cclxuXHJcblxyXG5cdFx0Lm1lbnUge1xyXG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cclxuXHRcdFx0I21lbnUtaXRlbS0yNDMge1xyXG5cdFx0XHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3c7XHJcblxyXG5cdFx0XHRcdGEge1xyXG5cdFx0XHRcdFx0cGFkZGluZzogMTNweCAzNXB4O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC5tZW51LWl0ZW0ge1xyXG5cdFx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRcdC8qZmxvYXQ6IGxlZnQ7Ki9cclxuXHRcdFx0cG9zaXRpb246IGluaXRpYWw7XHJcblx0XHRcdGRpc3BsYXk6IGNvbnRlbnRzO1xyXG5cclxuXHRcdFx0Jjpob3ZlciB7XHJcblxyXG5cdFx0XHRcdCY+Lm1lZ2EtbWVudS13cmFwIHtcclxuXHRcdFx0XHRcdGxlZnQ6IGF1dG87XHJcblx0XHRcdFx0XHRvcGFjaXR5OiAxO1xyXG5cdFx0XHRcdFx0d2lkdGg6IDEwMHZ3O1xyXG5cdFx0XHRcdFx0cmlnaHQ6IDA7XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdFx0aGVpZ2h0OiAyNzVweDtcclxuXHJcblx0XHRcdFx0XHQuc3ViLW1lbnUge1xyXG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBncmlkO1xyXG5cdFx0XHRcdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI2MHB4IDI2MHB4IDI2MHB4O1xyXG5cdFx0XHRcdFx0XHRncmlkLXRlbXBsYXRlLXJvd3M6IDE0JSAxNCUgMTQlO1xyXG5cdFx0XHRcdFx0XHRyb3ctZ2FwOiAzOXB4O1xyXG5cdFx0XHRcdFx0XHRncmlkLWF1dG8tZmxvdzogY29sdW1uO1xyXG5cdFx0XHRcdFx0XHRwYWRkaW5nOiA0OXB4IDE4NnB4IDg4cHggMDtcclxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcclxuXHRcdFx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2U4ZThlODtcclxuXHJcblx0XHRcdFx0XHRcdEBpbmNsdWRlIG1lZGlhKCc8MTUwMHB4Jykge1xyXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmc6IDQ5cHggMzBweCA4OHB4IDA7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdEBpbmNsdWRlIG1lZGlhKCc8MTEyMHB4Jykge1xyXG5cdFx0XHRcdFx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjAwcHggMjAwcHggMjAwcHg7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdEBpbmNsdWRlIG1lZGlhKCc8OTQwcHgnKSB7XHJcblx0XHRcdFx0XHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMyUgMzMlIDMzJTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0Lm1lbnUtaXRlbSB7XHJcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XHJcblxyXG5cdFx0XHRcdFx0XHRcdGEge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly9kaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcclxuXHRcdFx0XHRcdFx0XHRcdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxuXHRcdFx0XHRcdFx0XHRcdGhlaWdodDogNjIlO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdC5jb250YWN0LWhlYWRlciB7XHJcblx0XHRcdFx0XHRcdGJhY2tncm91bmQ6ICMwMDA7XHJcblx0XHRcdFx0XHRcdHdpZHRoOiA2NzVweDtcclxuXHRcdFx0XHRcdFx0cGFkZGluZzogMzlweCA1OXB4IDM5cHggMDtcclxuXHRcdFx0XHRcdFx0Y29sb3I6ICNmZmY7XHJcblxyXG5cdFx0XHRcdFx0XHRAaW5jbHVkZSBtZWRpYSgnPDExNzBweCcpIHtcclxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAzOXB4IDIwcHggMzlweCAwO1xyXG5cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgbWVkaWEoJzw5NDBweCcpIHtcclxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHQuY29udGFjdC1kZXRhaWxzLWJveCB7XHJcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0XHRcdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0XHRcdFx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRcdFx0XHRcdFx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRcdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDEuNjtcclxuXHJcblx0XHRcdFx0XHRcdFx0LmJvdHRvbS1kZXRhaWxzIHtcclxuXHRcdFx0XHRcdFx0XHRcdHNwYW4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdFx0YSB7XHJcblx0XHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93O1xyXG5cdFx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRDY1RDtcclxuXHRcdFx0XHRcdFx0XHRcdHdpZHRoOiAxNzJweDtcclxuXHRcdFx0XHRcdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQubWVnYS1tZW51LXdyYXAge1xyXG5cdFx0XHQvL2xlZnQ6IC05OTk5cHg7XHJcblx0XHRcdG9wYWNpdHk6IDA7XHJcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0d2lkdGg6IDIxNXB4O1xyXG5cdFx0XHR6LWluZGV4OiA5OTtcclxuXHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHJcblx0XHRcdC5zdWItbWVudSB7XHJcblx0XHRcdFx0YmFja2dyb3VuZDogI2ZmZjtcclxuXHJcblxyXG5cdFx0XHRcdC5tZW51LWl0ZW0ge1xyXG5cdFx0XHRcdFx0ZmxvYXQ6IG5vbmU7XHJcblxyXG5cdFx0XHRcdFx0Jjpob3Zlcj5hIHtcclxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogJHllbGxvdztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC5zdWItbWVudSB7XHJcblx0XHRcdFx0XHRtYXJnaW46IC00OHB4IDAgMCAyMTVweDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cclxuXHRAaW5jbHVkZSBtZWRpYShcIjw9bW9iaWxlX21lbnVcIikge1xyXG5cdFx0ZGlzcGxheTogbm9uZTtcclxuXHJcblx0XHQuY29udGFjdC1oZWFkZXIge1xyXG5cdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0fVxyXG5cclxuXHJcblxyXG5cdFx0Ji5hY3RpdmUge1xyXG5cdFx0XHRiYWNrZ3JvdW5kOiAkZ3JleV8zO1xyXG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcclxuXHRcdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRcdG1hcmdpbjogMCAtNDhweDtcclxuXHRcdFx0bWF4LXdpZHRoOiBjYWxjKDEwMCUgKyA5NnB4KTtcclxuXHRcdH1cclxuXHJcblx0XHQubWVudT4ubWVudS1pdGVtPmEge1xyXG5cdFx0XHRwYWRkaW5nOiAxMXB4IDE4cHg7XHJcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICR5ZWxsb3cgIWltcG9ydGFudDtcclxuXHRcdH1cclxuXHJcblx0XHQuc3VibWVudS1leHBhbmQge1xyXG5cdFx0XHR0b3A6IDA7XHJcblx0XHRcdHJpZ2h0OiAwO1xyXG5cdFx0XHR0cmFuc2Zvcm06IG5vbmU7XHJcblx0XHRcdEBpbmNsdWRlIGljb24tcG9zaXRpb24oNDRweCk7XHJcblxyXG5cdFx0XHRzdmcge1xyXG5cdFx0XHRcdEBpbmNsdWRlIGljb24tcG9zaXRpb24oMTJweCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCY6bm90KC5leHBhbmRlZCkge1xyXG5cdFx0XHRcdHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCYuZXhwYW5kZWQge1xyXG5cclxuXHRcdFx0XHQmKy5tZWdhLW1lbnUtd3JhcCB7XHJcblxyXG5cdFx0XHRcdFx0LnN1Yi1tZW51IHtcclxuXHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRcdFx0XHRcdHBhZGRpbmctYm90dG9tOiAxNXB4O1xyXG5cclxuXHJcblx0XHRcdFx0XHRcdGxpIHtcclxuXHRcdFx0XHRcdFx0XHRtYXJnaW46IDE1cHggMDtcclxuXHJcblx0XHRcdFx0XHRcdFx0YSB7XHJcblx0XHRcdFx0XHRcdFx0XHRwYWRkaW5nOiA1cHggMjBweDtcclxuXHRcdFx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0bGk6Zmlyc3QtY2hpbGQge1xyXG5cdFx0XHRcdFx0XHRcdG1hcmdpbjogN3B4IDAgMTBweCAwO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRsaTpsYXN0LWNoaWxkIHtcclxuXHRcdFx0XHRcdFx0XHRtYXJnaW46IDEwcHggMCAwIDA7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQuc3ViLW1lbnUge1xyXG5cdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDhweDtcclxuXHRcdH1cclxuXHJcblxyXG5cdH1cclxufVxyXG5cclxuLyogVG9nZ2xlc1xyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuXHJcbi5zZWFyY2gtdG9nZ2xlLFxyXG4ubWVudS10b2dnbGUge1xyXG5cclxuXHRAaW5jbHVkZSBidXR0b24tcmVzZXQ7XHJcblx0bGluZS1oZWlnaHQ6IDA7XHJcblx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuXHQuY2xvc2Uge1xyXG5cdFx0ZGlzcGxheTogbm9uZTtcclxuXHR9XHJcblxyXG5cdCY6aG92ZXIsXHJcblx0Ji5hY3RpdmUge1xyXG5cdFx0YmFja2dyb3VuZDogJGdyZXlfMztcclxuXHR9XHJcblxyXG5cdCYuYWN0aXZlIHtcclxuXHJcblx0XHQuY2xvc2Uge1xyXG5cdFx0XHRkaXNwbGF5OiBpbmxpbmU7XHJcblx0XHR9XHJcblxyXG5cdFx0Lm9wZW4ge1xyXG5cdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLnNpdGUtaGVhZGVyIC53cmFwIHtcclxuXHRAaW5jbHVkZSBtZWRpYShcIjw9bW9iaWxlX21lbnVcIikge1xyXG5cdFx0cGFkZGluZzogMCA0OHB4O1xyXG5cdH1cclxuXHJcblx0Jj4ubWVudS10b2dnbGUsXHJcblx0Jj4uc2VhcmNoLXRvZ2dsZSB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR0b3A6IDA7XHJcblx0XHR3aWR0aDogNDhweDtcclxuXHRcdGhlaWdodDogNDhweDtcclxuXHJcblx0XHRAaW5jbHVkZSBtZWRpYShcIj5tb2JpbGVfbWVudVwiKSB7XHJcblx0XHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQmPi5tZW51LXRvZ2dsZSB7XHJcblx0XHRsZWZ0OiAwO1xyXG5cdH1cclxuXHJcblx0Jj4uc2VhcmNoLXRvZ2dsZSB7XHJcblx0XHRyaWdodDogMDtcclxuXHR9XHJcbn1cclxuXHJcbi8qIEhlYWRlciBTZWFyY2hcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcblxyXG4uaGVhZGVyLXNlYXJjaCB7XHJcblx0YmFja2dyb3VuZDogJGdyZXlfMztcclxuXHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdHBhZGRpbmc6IDE2cHg7XHJcblx0d2lkdGg6IDEwMCU7XHJcblxyXG5cdEBpbmNsdWRlIG1lZGlhKFwiPj10YWJsZXRcIikge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0Ym90dG9tOiAtODJweDtcclxuXHRcdHJpZ2h0OiAwO1xyXG5cclxuXHRcdC5zZWFyY2gtZm9ybSB7XHJcblx0XHRcdG1hcmdpbjogMCBhdXRvO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0QGluY2x1ZGUgbWVkaWEoXCI8PW1vYmlsZV9tZW51XCIpIHtcclxuXHRcdG1hcmdpbjogMCAtNDhweDtcclxuXHRcdHdpZHRoOiBjYWxjKDEwMCUgKyA5NnB4KTtcclxuXHR9XHJcblxyXG5cdCY6bm90KC5hY3RpdmUpIHtcclxuXHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0fVxyXG59IiwiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQ2lCQSxBQUFBLENBQUMs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 */
