/*! normalize.css v8.0.1 | 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; }

/**
 * Render the `main` element consistently in IE.
 */
main {
  display: block; }

/**
 * 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 */
  -webkit-text-decoration: underline dotted;
          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; }

/*
 *  Owl Carousel - Core
 */
.owl-carousel {
  display: none;
  width: 100%;
  -webkit-tap-highlight-color: transparent;
  /* position relative and z-index fix webkit rendering fonts issue */
  position: relative;
  z-index: 1; }
  .owl-carousel .owl-stage {
    position: relative;
    touch-action: manipulation;
    -moz-backface-visibility: hidden;
    /* fix firefox animation glitch */ }
  .owl-carousel .owl-stage:after {
    content: ".";
    display: block;
    clear: both;
    visibility: hidden;
    line-height: 0;
    height: 0; }
  .owl-carousel .owl-stage-outer {
    position: relative;
    overflow: hidden;
    /* fix for flashing background */
    -webkit-transform: translate3d(0px, 0px, 0px); }
  .owl-carousel .owl-wrapper,
  .owl-carousel .owl-item {
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    -ms-backface-visibility: hidden;
    -webkit-transform: translate3d(0, 0, 0);
    -moz-transform: translate3d(0, 0, 0);
    -ms-transform: translate3d(0, 0, 0); }
  .owl-carousel .owl-item {
    position: relative;
    min-height: 1px;
    float: left;
    -webkit-backface-visibility: hidden;
    -webkit-tap-highlight-color: transparent;
    -webkit-touch-callout: none; }
  .owl-carousel .owl-item img {
    display: block;
    width: 100%; }
  .owl-carousel .owl-nav.disabled,
  .owl-carousel .owl-dots.disabled {
    display: none; }
  .owl-carousel .owl-nav .owl-prev,
  .owl-carousel .owl-nav .owl-next,
  .owl-carousel .owl-dot {
    cursor: pointer;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none; }
  .owl-carousel .owl-nav button.owl-prev,
  .owl-carousel .owl-nav button.owl-next,
  .owl-carousel button.owl-dot {
    background: none;
    color: inherit;
    border: none;
    padding: 0 !important;
    font: inherit; }
  .owl-carousel.owl-loaded {
    display: block; }
  .owl-carousel.owl-loading {
    opacity: 0;
    display: block; }
  .owl-carousel.owl-hidden {
    opacity: 0; }
  .owl-carousel.owl-refresh .owl-item {
    visibility: hidden; }
  .owl-carousel.owl-drag .owl-item {
    touch-action: pan-y;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none; }
  .owl-carousel.owl-grab {
    cursor: move;
    cursor: -webkit-grab;
    cursor: grab; }
  .owl-carousel.owl-rtl {
    direction: rtl; }
  .owl-carousel.owl-rtl .owl-item {
    float: right; }

/* No Js */
.no-js .owl-carousel {
  display: block; }

/*
 *  Owl Carousel - Animate Plugin
 */
.owl-carousel .animated {
  -webkit-animation-duration: 1000ms;
          animation-duration: 1000ms;
  -webkit-animation-fill-mode: both;
          animation-fill-mode: both; }

.owl-carousel .owl-animated-in {
  z-index: 0; }

.owl-carousel .owl-animated-out {
  z-index: 1; }

.owl-carousel .fadeOut {
  -webkit-animation-name: fadeOut;
          animation-name: fadeOut; }

@-webkit-keyframes fadeOut {
  0% {
    opacity: 1; }
  100% {
    opacity: 0; } }

@keyframes fadeOut {
  0% {
    opacity: 1; }
  100% {
    opacity: 0; } }

/*
 * 	Owl Carousel - Auto Height Plugin
 */
.owl-height {
  transition: height 500ms ease-in-out; }

/*
 * 	Owl Carousel - Lazy Load Plugin
 */
.owl-carousel .owl-item {
  /**
			This is introduced due to a bug in IE11 where lazy loading combined with autoheight plugin causes a wrong
			calculation of the height of the owl-item that breaks page layouts
		 */ }
  .owl-carousel .owl-item .owl-lazy {
    opacity: 0;
    transition: opacity 400ms ease; }
  .owl-carousel .owl-item .owl-lazy[src^=""], .owl-carousel .owl-item .owl-lazy:not([src]) {
    max-height: 0; }
  .owl-carousel .owl-item img.owl-lazy {
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d; }

/*
 * 	Owl Carousel - Video Plugin
 */
.owl-carousel .owl-video-wrapper {
  position: relative;
  height: 100%;
  background: #000; }

.owl-carousel .owl-video-play-icon {
  position: absolute;
  height: 80px;
  width: 80px;
  left: 50%;
  top: 50%;
  margin-left: -40px;
  margin-top: -40px;
  background: url("owl.video.play.png") no-repeat;
  cursor: pointer;
  z-index: 1;
  -webkit-backface-visibility: hidden;
  transition: -webkit-transform 100ms ease;
  transition: transform 100ms ease;
  transition: transform 100ms ease, -webkit-transform 100ms ease; }

.owl-carousel .owl-video-play-icon:hover {
  -webkit-transform: scale(1.3, 1.3);
          transform: scale(1.3, 1.3); }

.owl-carousel .owl-video-playing .owl-video-tn,
.owl-carousel .owl-video-playing .owl-video-play-icon {
  display: none; }

.owl-carousel .owl-video-tn {
  opacity: 0;
  height: 100%;
  background-position: center center;
  background-repeat: no-repeat;
  background-size: contain;
  transition: opacity 400ms ease; }

.owl-carousel .owl-video-frame {
  position: relative;
  z-index: 1;
  height: 100%;
  width: 100%; }

/* ==========================================================================
   Base
   ========================================================================== */
/**
 * Remove margin and padding from every selector including their
 * psuedo selectors.
 *
 * 1. More sensible default box sizing.
 *    (css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice).
 */
*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: inherit;
  /* 1 */ }

/**
 * Set height of the document to maxium viewport height.
 *
 * 1. Set root font size to 10.
 */
html {
  height: 100vh;
  font-size: 62.5%;
  /* 1 */
  box-sizing: border-box; }

/**
 * Set minimal height of the body to maximum viewport height to
 * match the document's height.
 *
 * 1. Firefox 25+.
 * 2. Chrome 5+.
 */
body {
  font-size: 15px;
  font-size: 1.5rem;
  line-height: 2em;
  min-height: 100vh;
  transition: opacity 250ms ease;
  background-color: white;
  color: black;
  font-family: "Montserrat";
  text-rendering: optimizeLegibility;
  opacity: 0;
  -moz-osx-font-smoothing: grayscale;
  /* 1 */
  -webkit-font-smoothing: antialiased;
  /* 2 */ }
  body.is-loaded {
    opacity: 1; }

/* ==========================================================================
   Reset
   ========================================================================== */
/**
 * Custom user agent resets and overrides that are not present in
 * Normalize 8.0.0. This mostly removes some annoying margin and padding
 * defaults, border radius, and outlines.
 */
a {
  color: inherit;
  text-decoration: none; }

/**
 * 1. Remove border radius on Chrome 62.0+ on macOS.
 */
button {
  border: 0;
  border-radius: 0;
  /* 1 */
  outline: none;
  background: none;
  cursor: pointer; }

fieldset {
  margin: 0;
  padding: 0;
  border: 0; }

figure {
  margin: 0; }

h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 0;
  padding: 0;
  font-size: inherit;
  font-weight: inherit; }

hr {
  margin: 0;
  padding: 0; }

/**
 * 1. Remove white space.
 */
img {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
  /* 1 */ }

/**
 * 1. Remove inherited user agent appearance.
 */
input,
select,
textarea {
  max-width: 100%;
  border: 0;
  border-radius: 0;
  outline: none;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  /* 1 */ }

/**
 * 1. Only allow vertical resizing to prevent the textarea
 *    from overflowing the container.
 */
textarea {
  resize: vertical; }

ul,
ol {
  margin: 0;
  padding: 0;
  list-style-type: none; }

p {
  margin: 0; }

/**
 * 1. Collapse borders to prevent double sided borders.
 */
table {
  max-width: 100%;
  border-collapse: collapse;
  /* 1 */ }

strong {
  font-weight: 700; }

/* ==========================================================================
   Buttons
   ========================================================================== */
/**
 * Button base.
 */
.button {
  font-size: 15px;
  font-size: 1.5rem;
  line-height: 1.26667em;
  display: inline-flex;
  align-items: center;
  padding: 10px 20px;
  transition: all 250ms ease;
  color: white;
  font-weight: 600;
  letter-spacing: 0.42px;
  text-transform: uppercase; }
  .button svg {
    width: 15px;
    height: 15px; }
  .button.svg-right svg {
    margin-left: 10px; }
  .button.svg-left svg {
    margin-right: 10px; }

/**
 * Button primary (red).
 */
.button-primary--red {
  background: #ee1b3b; }
  @media only screen and (min-width: 1200px) {
    .button-primary--red:hover {
      background: #c70f2b; } }

/**
 * Button primary (blue).
 */
.button-primary--blue {
  background: #3e5379; }
  @media only screen and (min-width: 1200px) {
    .button-primary--blue:hover {
      background: #2d3c58; } }

/**
 * Button primary (brown).
 */
.button-primary--brown {
  background: #c69939; }
  @media only screen and (min-width: 1200px) {
    .button-primary--brown:hover {
      background: #9e7b2e; } }

/* ==========================================================================
   Container
   ========================================================================== */
/**
 * The container object centers an element in the document.
 */
.container {
  max-width: calc(1024px + 50.66667px);
  padding: 0 25.33333px;
  width: 100%;
  margin: 0 auto; }

/* ==========================================================================
   Content Constraint
   ========================================================================== */
/**
 * The content constraint is a constraint for all the content within
 * the document. It can be manipulated by CSS or JavaScript without
 * influencing the body.
 */
.content-constraint {
  position: relative;
  min-height: 100vh;
  overflow-x: hidden; }
  @media only screen and (max-width: 599px) {
    .content-constraint {
      margin-top: 68px; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) {
    .content-constraint {
      margin-top: 94px; } }
  @media only screen and (min-width: 1200px) {
    .content-constraint {
      margin-top: 131px; } }

/* ==========================================================================
   Flex
   ========================================================================== */
/**
 * Example of a flex based column grid layout in practice:
 *
 * <div class="row">
 *   <div class="col col-xs-6 col-sm-12"></div>
 *   <div class="col col-xs-6 col-sm-12"></div>
 * </div>
 *
 * This example will create a row with two columns each filling half the width
 * of the row on all media, but will convert to a full width column on the
 * small `-sm` breakpoint alias, which is mobile only. Refer to
 * `settings/_definitions.scss` for all breakpoint alias.
 */
/**
 * Flex object.
 *
 * Tip: Use flex on a column to make the box the same height as the column.
 */
.flex {
  display: flex; }

.flex-wrap {
  display: flex;
  flex-wrap: wrap; }

/**
 * Flex object with a column based layout system.
 */
.row {
  display: flex;
  flex: 0 1 auto;
  flex-flow: row wrap;
  margin: 0 -12.66667px; }

/**
 * Box, the inside of a column.
 */
.box {
  flex: 1; }

/**
       * Column 1 for the `xs` breakpoint.
       */
.col-xs-1 {
  flex: 0 1 auto;
  width: 8.33333%;
  padding: 0 12.66667px; }

/**
         * Offset 1 for the `xs` breakpoint.
         */
.offset-xs-1 {
  margin-left: 8.33333%; }

/**
       * Column 2 for the `xs` breakpoint.
       */
.col-xs-2 {
  flex: 0 1 auto;
  width: 16.66667%;
  padding: 0 12.66667px; }

/**
         * Offset 2 for the `xs` breakpoint.
         */
.offset-xs-2 {
  margin-left: 16.66667%; }

/**
       * Column 3 for the `xs` breakpoint.
       */
.col-xs-3 {
  flex: 0 1 auto;
  width: 25%;
  padding: 0 12.66667px; }

/**
         * Offset 3 for the `xs` breakpoint.
         */
.offset-xs-3 {
  margin-left: 25%; }

/**
       * Column 4 for the `xs` breakpoint.
       */
.col-xs-4 {
  flex: 0 1 auto;
  width: 33.33333%;
  padding: 0 12.66667px; }

/**
         * Offset 4 for the `xs` breakpoint.
         */
.offset-xs-4 {
  margin-left: 33.33333%; }

/**
       * Column 5 for the `xs` breakpoint.
       */
.col-xs-5 {
  flex: 0 1 auto;
  width: 41.66667%;
  padding: 0 12.66667px; }

/**
         * Offset 5 for the `xs` breakpoint.
         */
.offset-xs-5 {
  margin-left: 41.66667%; }

/**
       * Column 6 for the `xs` breakpoint.
       */
.col-xs-6 {
  flex: 0 1 auto;
  width: 50%;
  padding: 0 12.66667px; }

/**
         * Offset 6 for the `xs` breakpoint.
         */
.offset-xs-6 {
  margin-left: 50%; }

/**
       * Column 7 for the `xs` breakpoint.
       */
.col-xs-7 {
  flex: 0 1 auto;
  width: 58.33333%;
  padding: 0 12.66667px; }

/**
         * Offset 7 for the `xs` breakpoint.
         */
.offset-xs-7 {
  margin-left: 58.33333%; }

/**
       * Column 8 for the `xs` breakpoint.
       */
.col-xs-8 {
  flex: 0 1 auto;
  width: 66.66667%;
  padding: 0 12.66667px; }

/**
         * Offset 8 for the `xs` breakpoint.
         */
.offset-xs-8 {
  margin-left: 66.66667%; }

/**
       * Column 9 for the `xs` breakpoint.
       */
.col-xs-9 {
  flex: 0 1 auto;
  width: 75%;
  padding: 0 12.66667px; }

/**
         * Offset 9 for the `xs` breakpoint.
         */
.offset-xs-9 {
  margin-left: 75%; }

/**
       * Column 10 for the `xs` breakpoint.
       */
.col-xs-10 {
  flex: 0 1 auto;
  width: 83.33333%;
  padding: 0 12.66667px; }

/**
         * Offset 10 for the `xs` breakpoint.
         */
.offset-xs-10 {
  margin-left: 83.33333%; }

/**
       * Column 11 for the `xs` breakpoint.
       */
.col-xs-11 {
  flex: 0 1 auto;
  width: 91.66667%;
  padding: 0 12.66667px; }

/**
         * Offset 11 for the `xs` breakpoint.
         */
.offset-xs-11 {
  margin-left: 91.66667%; }

/**
       * Column 12 for the `xs` breakpoint.
       */
.col-xs-12 {
  flex: 0 1 auto;
  width: 100%;
  padding: 0 12.66667px; }

/**
       * Align `stretch` for the xs breakpoint.
       */
.align-xs-stretch {
  align-items: stretch; }

/**
       * Align `center` for the xs breakpoint.
       */
.align-xs-center {
  align-items: center; }

/**
       * Align `flex-start` for the xs breakpoint.
       */
.align-xs-flex-start {
  align-items: flex-start; }

/**
       * Align `flex-end` for the xs breakpoint.
       */
.align-xs-flex-end {
  align-items: flex-end; }

/**
       * Align `baseline` for the xs breakpoint.
       */
.align-xs-baseline {
  align-items: baseline; }

/**
       * Justify `start` for the xs breakpoint.
       */
.justify-xs-start {
  justify-content: start; }

/**
       * Justify `center` for the xs breakpoint.
       */
.justify-xs-center {
  justify-content: center; }

/**
       * Justify `space-between` for the xs breakpoint.
       */
.justify-xs-space-between {
  justify-content: space-between; }

/**
       * Justify `space-around` for the xs breakpoint.
       */
.justify-xs-space-around {
  justify-content: space-around; }

/**
       * Justify `space-evenly` for the xs breakpoint.
       */
.justify-xs-space-evenly {
  justify-content: space-evenly; }

/**
       * Justify `flex-start` for the xs breakpoint.
       */
.justify-xs-flex-start {
  justify-content: flex-start; }

/**
       * Justify `flex-end` for the xs breakpoint.
       */
.justify-xs-flex-end {
  justify-content: flex-end; }

/**
       * Bleed left for the xs breakpoint.
       */
.bleed-xs-left {
  padding-left: 0; }

/**
       * Bleed right for the xs breakpoint.
       */
.bleed-xs-right {
  padding-right: 0; }

/**
     * Order first for the `xs` breakpoint.
     */
.first-xs {
  order: -1; }

/**
     * Order last for the `xs` breakpoint.
     */
.last-xs {
  order: 1; }

/**
     * Reverse order for the `xs` breakpoint.
     */
.reverse-xs {
  flex-direction: row-reverse; }

@media only screen and (max-width: 599px) {
  /**
       * Column 1 for the `sm` breakpoint.
       */
  .col-sm-1 {
    flex: 0 1 auto;
    width: 8.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 1 for the `sm` breakpoint.
         */
  .offset-sm-1 {
    margin-left: 8.33333%; }
  /**
       * Column 2 for the `sm` breakpoint.
       */
  .col-sm-2 {
    flex: 0 1 auto;
    width: 16.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 2 for the `sm` breakpoint.
         */
  .offset-sm-2 {
    margin-left: 16.66667%; }
  /**
       * Column 3 for the `sm` breakpoint.
       */
  .col-sm-3 {
    flex: 0 1 auto;
    width: 25%;
    padding: 0 12.66667px; }
  /**
         * Offset 3 for the `sm` breakpoint.
         */
  .offset-sm-3 {
    margin-left: 25%; }
  /**
       * Column 4 for the `sm` breakpoint.
       */
  .col-sm-4 {
    flex: 0 1 auto;
    width: 33.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 4 for the `sm` breakpoint.
         */
  .offset-sm-4 {
    margin-left: 33.33333%; }
  /**
       * Column 5 for the `sm` breakpoint.
       */
  .col-sm-5 {
    flex: 0 1 auto;
    width: 41.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 5 for the `sm` breakpoint.
         */
  .offset-sm-5 {
    margin-left: 41.66667%; }
  /**
       * Column 6 for the `sm` breakpoint.
       */
  .col-sm-6 {
    flex: 0 1 auto;
    width: 50%;
    padding: 0 12.66667px; }
  /**
         * Offset 6 for the `sm` breakpoint.
         */
  .offset-sm-6 {
    margin-left: 50%; }
  /**
       * Column 7 for the `sm` breakpoint.
       */
  .col-sm-7 {
    flex: 0 1 auto;
    width: 58.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 7 for the `sm` breakpoint.
         */
  .offset-sm-7 {
    margin-left: 58.33333%; }
  /**
       * Column 8 for the `sm` breakpoint.
       */
  .col-sm-8 {
    flex: 0 1 auto;
    width: 66.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 8 for the `sm` breakpoint.
         */
  .offset-sm-8 {
    margin-left: 66.66667%; }
  /**
       * Column 9 for the `sm` breakpoint.
       */
  .col-sm-9 {
    flex: 0 1 auto;
    width: 75%;
    padding: 0 12.66667px; }
  /**
         * Offset 9 for the `sm` breakpoint.
         */
  .offset-sm-9 {
    margin-left: 75%; }
  /**
       * Column 10 for the `sm` breakpoint.
       */
  .col-sm-10 {
    flex: 0 1 auto;
    width: 83.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 10 for the `sm` breakpoint.
         */
  .offset-sm-10 {
    margin-left: 83.33333%; }
  /**
       * Column 11 for the `sm` breakpoint.
       */
  .col-sm-11 {
    flex: 0 1 auto;
    width: 91.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 11 for the `sm` breakpoint.
         */
  .offset-sm-11 {
    margin-left: 91.66667%; }
  /**
       * Column 12 for the `sm` breakpoint.
       */
  .col-sm-12 {
    flex: 0 1 auto;
    width: 100%;
    padding: 0 12.66667px; }
  /**
       * Align `stretch` for the sm breakpoint.
       */
  .align-sm-stretch {
    align-items: stretch; }
  /**
       * Align `center` for the sm breakpoint.
       */
  .align-sm-center {
    align-items: center; }
  /**
       * Align `flex-start` for the sm breakpoint.
       */
  .align-sm-flex-start {
    align-items: flex-start; }
  /**
       * Align `flex-end` for the sm breakpoint.
       */
  .align-sm-flex-end {
    align-items: flex-end; }
  /**
       * Align `baseline` for the sm breakpoint.
       */
  .align-sm-baseline {
    align-items: baseline; }
  /**
       * Justify `start` for the sm breakpoint.
       */
  .justify-sm-start {
    justify-content: start; }
  /**
       * Justify `center` for the sm breakpoint.
       */
  .justify-sm-center {
    justify-content: center; }
  /**
       * Justify `space-between` for the sm breakpoint.
       */
  .justify-sm-space-between {
    justify-content: space-between; }
  /**
       * Justify `space-around` for the sm breakpoint.
       */
  .justify-sm-space-around {
    justify-content: space-around; }
  /**
       * Justify `space-evenly` for the sm breakpoint.
       */
  .justify-sm-space-evenly {
    justify-content: space-evenly; }
  /**
       * Justify `flex-start` for the sm breakpoint.
       */
  .justify-sm-flex-start {
    justify-content: flex-start; }
  /**
       * Justify `flex-end` for the sm breakpoint.
       */
  .justify-sm-flex-end {
    justify-content: flex-end; }
  /**
       * Bleed left for the sm breakpoint.
       */
  .bleed-sm-left {
    padding-left: 0; }
  /**
       * Bleed right for the sm breakpoint.
       */
  .bleed-sm-right {
    padding-right: 0; }
  /**
     * Order first for the `sm` breakpoint.
     */
  .first-sm {
    order: -1; }
  /**
     * Order last for the `sm` breakpoint.
     */
  .last-sm {
    order: 1; }
  /**
     * Reverse order for the `sm` breakpoint.
     */
  .reverse-sm {
    flex-direction: row-reverse; } }

@media only screen and (min-width: 600px) {
  /**
       * Column 1 for the `md` breakpoint.
       */
  .col-md-1 {
    flex: 0 1 auto;
    width: 8.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 1 for the `md` breakpoint.
         */
  .offset-md-1 {
    margin-left: 8.33333%; }
  /**
       * Column 2 for the `md` breakpoint.
       */
  .col-md-2 {
    flex: 0 1 auto;
    width: 16.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 2 for the `md` breakpoint.
         */
  .offset-md-2 {
    margin-left: 16.66667%; }
  /**
       * Column 3 for the `md` breakpoint.
       */
  .col-md-3 {
    flex: 0 1 auto;
    width: 25%;
    padding: 0 12.66667px; }
  /**
         * Offset 3 for the `md` breakpoint.
         */
  .offset-md-3 {
    margin-left: 25%; }
  /**
       * Column 4 for the `md` breakpoint.
       */
  .col-md-4 {
    flex: 0 1 auto;
    width: 33.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 4 for the `md` breakpoint.
         */
  .offset-md-4 {
    margin-left: 33.33333%; }
  /**
       * Column 5 for the `md` breakpoint.
       */
  .col-md-5 {
    flex: 0 1 auto;
    width: 41.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 5 for the `md` breakpoint.
         */
  .offset-md-5 {
    margin-left: 41.66667%; }
  /**
       * Column 6 for the `md` breakpoint.
       */
  .col-md-6 {
    flex: 0 1 auto;
    width: 50%;
    padding: 0 12.66667px; }
  /**
         * Offset 6 for the `md` breakpoint.
         */
  .offset-md-6 {
    margin-left: 50%; }
  /**
       * Column 7 for the `md` breakpoint.
       */
  .col-md-7 {
    flex: 0 1 auto;
    width: 58.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 7 for the `md` breakpoint.
         */
  .offset-md-7 {
    margin-left: 58.33333%; }
  /**
       * Column 8 for the `md` breakpoint.
       */
  .col-md-8 {
    flex: 0 1 auto;
    width: 66.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 8 for the `md` breakpoint.
         */
  .offset-md-8 {
    margin-left: 66.66667%; }
  /**
       * Column 9 for the `md` breakpoint.
       */
  .col-md-9 {
    flex: 0 1 auto;
    width: 75%;
    padding: 0 12.66667px; }
  /**
         * Offset 9 for the `md` breakpoint.
         */
  .offset-md-9 {
    margin-left: 75%; }
  /**
       * Column 10 for the `md` breakpoint.
       */
  .col-md-10 {
    flex: 0 1 auto;
    width: 83.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 10 for the `md` breakpoint.
         */
  .offset-md-10 {
    margin-left: 83.33333%; }
  /**
       * Column 11 for the `md` breakpoint.
       */
  .col-md-11 {
    flex: 0 1 auto;
    width: 91.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 11 for the `md` breakpoint.
         */
  .offset-md-11 {
    margin-left: 91.66667%; }
  /**
       * Column 12 for the `md` breakpoint.
       */
  .col-md-12 {
    flex: 0 1 auto;
    width: 100%;
    padding: 0 12.66667px; }
  /**
       * Align `stretch` for the md breakpoint.
       */
  .align-md-stretch {
    align-items: stretch; }
  /**
       * Align `center` for the md breakpoint.
       */
  .align-md-center {
    align-items: center; }
  /**
       * Align `flex-start` for the md breakpoint.
       */
  .align-md-flex-start {
    align-items: flex-start; }
  /**
       * Align `flex-end` for the md breakpoint.
       */
  .align-md-flex-end {
    align-items: flex-end; }
  /**
       * Align `baseline` for the md breakpoint.
       */
  .align-md-baseline {
    align-items: baseline; }
  /**
       * Justify `start` for the md breakpoint.
       */
  .justify-md-start {
    justify-content: start; }
  /**
       * Justify `center` for the md breakpoint.
       */
  .justify-md-center {
    justify-content: center; }
  /**
       * Justify `space-between` for the md breakpoint.
       */
  .justify-md-space-between {
    justify-content: space-between; }
  /**
       * Justify `space-around` for the md breakpoint.
       */
  .justify-md-space-around {
    justify-content: space-around; }
  /**
       * Justify `space-evenly` for the md breakpoint.
       */
  .justify-md-space-evenly {
    justify-content: space-evenly; }
  /**
       * Justify `flex-start` for the md breakpoint.
       */
  .justify-md-flex-start {
    justify-content: flex-start; }
  /**
       * Justify `flex-end` for the md breakpoint.
       */
  .justify-md-flex-end {
    justify-content: flex-end; }
  /**
       * Bleed left for the md breakpoint.
       */
  .bleed-md-left {
    padding-left: 0; }
  /**
       * Bleed right for the md breakpoint.
       */
  .bleed-md-right {
    padding-right: 0; }
  /**
     * Order first for the `md` breakpoint.
     */
  .first-md {
    order: -1; }
  /**
     * Order last for the `md` breakpoint.
     */
  .last-md {
    order: 1; }
  /**
     * Reverse order for the `md` breakpoint.
     */
  .reverse-md {
    flex-direction: row-reverse; } }

@media only screen and (min-width: 900px) {
  /**
       * Column 1 for the `lg` breakpoint.
       */
  .col-lg-1 {
    flex: 0 1 auto;
    width: 8.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 1 for the `lg` breakpoint.
         */
  .offset-lg-1 {
    margin-left: 8.33333%; }
  /**
       * Column 2 for the `lg` breakpoint.
       */
  .col-lg-2 {
    flex: 0 1 auto;
    width: 16.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 2 for the `lg` breakpoint.
         */
  .offset-lg-2 {
    margin-left: 16.66667%; }
  /**
       * Column 3 for the `lg` breakpoint.
       */
  .col-lg-3 {
    flex: 0 1 auto;
    width: 25%;
    padding: 0 12.66667px; }
  /**
         * Offset 3 for the `lg` breakpoint.
         */
  .offset-lg-3 {
    margin-left: 25%; }
  /**
       * Column 4 for the `lg` breakpoint.
       */
  .col-lg-4 {
    flex: 0 1 auto;
    width: 33.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 4 for the `lg` breakpoint.
         */
  .offset-lg-4 {
    margin-left: 33.33333%; }
  /**
       * Column 5 for the `lg` breakpoint.
       */
  .col-lg-5 {
    flex: 0 1 auto;
    width: 41.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 5 for the `lg` breakpoint.
         */
  .offset-lg-5 {
    margin-left: 41.66667%; }
  /**
       * Column 6 for the `lg` breakpoint.
       */
  .col-lg-6 {
    flex: 0 1 auto;
    width: 50%;
    padding: 0 12.66667px; }
  /**
         * Offset 6 for the `lg` breakpoint.
         */
  .offset-lg-6 {
    margin-left: 50%; }
  /**
       * Column 7 for the `lg` breakpoint.
       */
  .col-lg-7 {
    flex: 0 1 auto;
    width: 58.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 7 for the `lg` breakpoint.
         */
  .offset-lg-7 {
    margin-left: 58.33333%; }
  /**
       * Column 8 for the `lg` breakpoint.
       */
  .col-lg-8 {
    flex: 0 1 auto;
    width: 66.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 8 for the `lg` breakpoint.
         */
  .offset-lg-8 {
    margin-left: 66.66667%; }
  /**
       * Column 9 for the `lg` breakpoint.
       */
  .col-lg-9 {
    flex: 0 1 auto;
    width: 75%;
    padding: 0 12.66667px; }
  /**
         * Offset 9 for the `lg` breakpoint.
         */
  .offset-lg-9 {
    margin-left: 75%; }
  /**
       * Column 10 for the `lg` breakpoint.
       */
  .col-lg-10 {
    flex: 0 1 auto;
    width: 83.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 10 for the `lg` breakpoint.
         */
  .offset-lg-10 {
    margin-left: 83.33333%; }
  /**
       * Column 11 for the `lg` breakpoint.
       */
  .col-lg-11 {
    flex: 0 1 auto;
    width: 91.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 11 for the `lg` breakpoint.
         */
  .offset-lg-11 {
    margin-left: 91.66667%; }
  /**
       * Column 12 for the `lg` breakpoint.
       */
  .col-lg-12 {
    flex: 0 1 auto;
    width: 100%;
    padding: 0 12.66667px; }
  /**
       * Align `stretch` for the lg breakpoint.
       */
  .align-lg-stretch {
    align-items: stretch; }
  /**
       * Align `center` for the lg breakpoint.
       */
  .align-lg-center {
    align-items: center; }
  /**
       * Align `flex-start` for the lg breakpoint.
       */
  .align-lg-flex-start {
    align-items: flex-start; }
  /**
       * Align `flex-end` for the lg breakpoint.
       */
  .align-lg-flex-end {
    align-items: flex-end; }
  /**
       * Align `baseline` for the lg breakpoint.
       */
  .align-lg-baseline {
    align-items: baseline; }
  /**
       * Justify `start` for the lg breakpoint.
       */
  .justify-lg-start {
    justify-content: start; }
  /**
       * Justify `center` for the lg breakpoint.
       */
  .justify-lg-center {
    justify-content: center; }
  /**
       * Justify `space-between` for the lg breakpoint.
       */
  .justify-lg-space-between {
    justify-content: space-between; }
  /**
       * Justify `space-around` for the lg breakpoint.
       */
  .justify-lg-space-around {
    justify-content: space-around; }
  /**
       * Justify `space-evenly` for the lg breakpoint.
       */
  .justify-lg-space-evenly {
    justify-content: space-evenly; }
  /**
       * Justify `flex-start` for the lg breakpoint.
       */
  .justify-lg-flex-start {
    justify-content: flex-start; }
  /**
       * Justify `flex-end` for the lg breakpoint.
       */
  .justify-lg-flex-end {
    justify-content: flex-end; }
  /**
       * Bleed left for the lg breakpoint.
       */
  .bleed-lg-left {
    padding-left: 0; }
  /**
       * Bleed right for the lg breakpoint.
       */
  .bleed-lg-right {
    padding-right: 0; }
  /**
     * Order first for the `lg` breakpoint.
     */
  .first-lg {
    order: -1; }
  /**
     * Order last for the `lg` breakpoint.
     */
  .last-lg {
    order: 1; }
  /**
     * Reverse order for the `lg` breakpoint.
     */
  .reverse-lg {
    flex-direction: row-reverse; } }

@media only screen and (min-width: 1200px) {
  /**
       * Column 1 for the `xl` breakpoint.
       */
  .col-xl-1 {
    flex: 0 1 auto;
    width: 8.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 1 for the `xl` breakpoint.
         */
  .offset-xl-1 {
    margin-left: 8.33333%; }
  /**
       * Column 2 for the `xl` breakpoint.
       */
  .col-xl-2 {
    flex: 0 1 auto;
    width: 16.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 2 for the `xl` breakpoint.
         */
  .offset-xl-2 {
    margin-left: 16.66667%; }
  /**
       * Column 3 for the `xl` breakpoint.
       */
  .col-xl-3 {
    flex: 0 1 auto;
    width: 25%;
    padding: 0 12.66667px; }
  /**
         * Offset 3 for the `xl` breakpoint.
         */
  .offset-xl-3 {
    margin-left: 25%; }
  /**
       * Column 4 for the `xl` breakpoint.
       */
  .col-xl-4 {
    flex: 0 1 auto;
    width: 33.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 4 for the `xl` breakpoint.
         */
  .offset-xl-4 {
    margin-left: 33.33333%; }
  /**
       * Column 5 for the `xl` breakpoint.
       */
  .col-xl-5 {
    flex: 0 1 auto;
    width: 41.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 5 for the `xl` breakpoint.
         */
  .offset-xl-5 {
    margin-left: 41.66667%; }
  /**
       * Column 6 for the `xl` breakpoint.
       */
  .col-xl-6 {
    flex: 0 1 auto;
    width: 50%;
    padding: 0 12.66667px; }
  /**
         * Offset 6 for the `xl` breakpoint.
         */
  .offset-xl-6 {
    margin-left: 50%; }
  /**
       * Column 7 for the `xl` breakpoint.
       */
  .col-xl-7 {
    flex: 0 1 auto;
    width: 58.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 7 for the `xl` breakpoint.
         */
  .offset-xl-7 {
    margin-left: 58.33333%; }
  /**
       * Column 8 for the `xl` breakpoint.
       */
  .col-xl-8 {
    flex: 0 1 auto;
    width: 66.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 8 for the `xl` breakpoint.
         */
  .offset-xl-8 {
    margin-left: 66.66667%; }
  /**
       * Column 9 for the `xl` breakpoint.
       */
  .col-xl-9 {
    flex: 0 1 auto;
    width: 75%;
    padding: 0 12.66667px; }
  /**
         * Offset 9 for the `xl` breakpoint.
         */
  .offset-xl-9 {
    margin-left: 75%; }
  /**
       * Column 10 for the `xl` breakpoint.
       */
  .col-xl-10 {
    flex: 0 1 auto;
    width: 83.33333%;
    padding: 0 12.66667px; }
  /**
         * Offset 10 for the `xl` breakpoint.
         */
  .offset-xl-10 {
    margin-left: 83.33333%; }
  /**
       * Column 11 for the `xl` breakpoint.
       */
  .col-xl-11 {
    flex: 0 1 auto;
    width: 91.66667%;
    padding: 0 12.66667px; }
  /**
         * Offset 11 for the `xl` breakpoint.
         */
  .offset-xl-11 {
    margin-left: 91.66667%; }
  /**
       * Column 12 for the `xl` breakpoint.
       */
  .col-xl-12 {
    flex: 0 1 auto;
    width: 100%;
    padding: 0 12.66667px; }
  /**
       * Align `stretch` for the xl breakpoint.
       */
  .align-xl-stretch {
    align-items: stretch; }
  /**
       * Align `center` for the xl breakpoint.
       */
  .align-xl-center {
    align-items: center; }
  /**
       * Align `flex-start` for the xl breakpoint.
       */
  .align-xl-flex-start {
    align-items: flex-start; }
  /**
       * Align `flex-end` for the xl breakpoint.
       */
  .align-xl-flex-end {
    align-items: flex-end; }
  /**
       * Align `baseline` for the xl breakpoint.
       */
  .align-xl-baseline {
    align-items: baseline; }
  /**
       * Justify `start` for the xl breakpoint.
       */
  .justify-xl-start {
    justify-content: start; }
  /**
       * Justify `center` for the xl breakpoint.
       */
  .justify-xl-center {
    justify-content: center; }
  /**
       * Justify `space-between` for the xl breakpoint.
       */
  .justify-xl-space-between {
    justify-content: space-between; }
  /**
       * Justify `space-around` for the xl breakpoint.
       */
  .justify-xl-space-around {
    justify-content: space-around; }
  /**
       * Justify `space-evenly` for the xl breakpoint.
       */
  .justify-xl-space-evenly {
    justify-content: space-evenly; }
  /**
       * Justify `flex-start` for the xl breakpoint.
       */
  .justify-xl-flex-start {
    justify-content: flex-start; }
  /**
       * Justify `flex-end` for the xl breakpoint.
       */
  .justify-xl-flex-end {
    justify-content: flex-end; }
  /**
       * Bleed left for the xl breakpoint.
       */
  .bleed-xl-left {
    padding-left: 0; }
  /**
       * Bleed right for the xl breakpoint.
       */
  .bleed-xl-right {
    padding-right: 0; }
  /**
     * Order first for the `xl` breakpoint.
     */
  .first-xl {
    order: -1; }
  /**
     * Order last for the `xl` breakpoint.
     */
  .last-xl {
    order: 1; }
  /**
     * Reverse order for the `xl` breakpoint.
     */
  .reverse-xl {
    flex-direction: row-reverse; } }

/* ==========================================================================
   Heading
   ========================================================================== */
/**
 * Main settings.
 */
.subheading {
  font-weight: 400;
  text-transform: uppercase; }

/**
 * Heading 1
 */
.heading-1, .cms-output h1 {
  font-size: 45px;
  font-size: 4.5rem;
  line-height: 1.55556em;
  font-weight: 700;
  letter-spacing: 1.25px; }
  @media only screen and (max-width: 1199px) {
    .heading-1, .cms-output h1 {
      font-size: 30px;
      font-size: 3rem;
      line-height: 1.66667em; } }

.subheading-1 {
  font-size: 35px;
  font-size: 3.5rem;
  line-height: 1.22857em;
  letter-spacing: 0.69px;
  text-transform: uppercase; }
  @media only screen and (max-width: 899px) {
    .subheading-1 {
      font-size: 25px;
      font-size: 2.5rem;
      line-height: 1.2em; } }

/**
 * Heading 2
 */
.heading-2, .cms-output h2 {
  font-size: 33px;
  font-size: 3.3rem;
  line-height: 1.21212em;
  font-weight: 500;
  letter-spacing: 1.25px; }
  @media only screen and (max-width: 899px) {
    .heading-2, .cms-output h2 {
      font-size: 27px;
      font-size: 2.7rem;
      line-height: 1.48148em; } }

.subheading-2 {
  font-size: 27px;
  font-size: 2.7rem;
  line-height: 1.37037em;
  letter-spacing: 0.69px;
  text-transform: uppercase; }
  @media only screen and (max-width: 899px) {
    .subheading-2 {
      font-size: 20px;
      font-size: 2rem;
      line-height: 1.5em; } }

/**
 * Heading 3
 */
.heading-3, .cms-output h3 {
  font-size: 30px;
  font-size: 3rem;
  line-height: 1.23333em;
  font-weight: 500;
  letter-spacing: 1.25px; }
  @media only screen and (max-width: 899px) {
    .heading-3, .cms-output h3 {
      font-size: 25px;
      font-size: 2.5rem;
      line-height: 1.48em; } }

.subheading-3 {
  font-size: 25px;
  font-size: 2.5rem;
  line-height: 1.48em;
  letter-spacing: 0.69px;
  text-transform: uppercase; }
  @media only screen and (max-width: 899px) {
    .subheading-3 {
      font-size: 17px;
      font-size: 1.7rem;
      line-height: 1.76471em; } }

/**
 * Heading 4
 */
.heading-4, .cms-output h4 {
  font-size: 20px;
  font-size: 2rem;
  line-height: 1.85em;
  font-weight: 500;
  letter-spacing: 0.69px; }

/* ==========================================================================
   Links
   ========================================================================== */
/**
 * Link base.
 */
.link {
  font-size: 15px;
  font-size: 1.5rem;
  line-height: 2em;
  display: inline-flex;
  transition: all 250ms ease; }
  .link svg {
    width: 15px;
    height: 15px; }
  .link.svg-right svg {
    margin-left: 10px; }
  .link.svg-left svg {
    margin-right: 10px; }
  .link.underline {
    text-decoration: underline; }

/**
 * Link (red).
 */
.link--red {
  color: #ee1b3b; }
  @media only screen and (min-width: 1200px) {
    .link--red:hover {
      color: #c70f2b; } }

/**
 * Link (white).
 */
.link--white {
  color: white; }
  @media only screen and (min-width: 1200px) {
    .link--white:hover {
      color: #c69939; } }

/**
 * Link (black).
 */
.link--black {
  color: black; }
  @media only screen and (min-width: 1200px) {
    .link--black:hover {
      color: #ee1b3b; } }

/* ==========================================================================
   Section
   ========================================================================== */
/* ==========================================================================
   Tags
   ========================================================================== */
/**
 * Tag base.
 */
.tag {
  position: absolute;
  top: 0;
  right: 0;
  padding: 1px 16px 1px 0;
  font-weight: 600;
  text-transform: capitalize;
  z-index: 20; }
  .tag::before {
    display: block;
    position: absolute;
    top: 0;
    right: calc(100% - 20px);
    bottom: 0;
    width: 30px;
    -webkit-transform: skewX(15deg);
            transform: skewX(15deg);
    content: '';
    z-index: -1; }

.tag--yellow {
  background: #ffcc24;
  color: black; }
  .tag--yellow::before {
    background: #ffcc24; }

/* ==========================================================================
   Wrapper
   ========================================================================== */
/**
 * The wrapper object centers an element in the document.
 */
/**
 * Wrapper (default)
 */
.wrapper {
  max-width: calc(1240px + 40px);
  padding: 0 20px;
  width: 100%;
  margin: 0 auto;
  position: relative; }
  @media only screen and (max-width: 599px) {
    .wrapper {
      max-width: calc(1240px + 40px);
      padding: 0 20px;
      width: 100%;
      margin: 0 auto; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .wrapper {
      max-width: calc(1240px + 120px);
      padding: 0 60px;
      width: 100%;
      margin: 0 auto; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .wrapper {
      max-width: calc(1240px + 100px);
      padding: 0 50px;
      width: 100%;
      margin: 0 auto; } }

/**
 * Wrapper (full width)
 */
.wrapper--full {
  width: 100%;
  max-width: 100%;
  padding: 0; }

.wrapper--small {
  max-width: 840px;
  margin: auto; }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .wrapper--small {
      max-width: 760px; } }

/* ==========================================================================
   CMS Output
   ========================================================================== */
/**
 * Every conceivable HTML element within a `.cms-output` wrapper.
 *
 * 1. Exclude last childs.
 */
.cms-output > *:not(:last-child) {
  margin-bottom: 30px;
  /* 1 */ }

.cms-output h1 {
  margin-bottom: 20px !important; }

.cms-output h2 {
  margin-bottom: 20px !important; }

.cms-output h3 {
  margin-bottom: 20px !important; }

.cms-output h4 {
  margin-bottom: 20px !important; }

.cms-output ul {
  padding-left: 10px;
  list-style-type: none; }
  .cms-output ul li {
    position: relative;
    padding-left: 16px; }
    .cms-output ul li svg {
      position: absolute;
      top: 12px;
      left: 0;
      width: 5px;
      height: 5px;
      color: #c69939; }
    .cms-output ul li:not(:last-child) {
      margin-bottom: 10px; }

.cms-output ol {
  list-style: none;
  counter-reset: my-awesome-counter; }

.cms-output ol li {
  padding-left: 10px;
  counter-increment: my-awesome-counter; }
  .cms-output ol li:not(:last-child) {
    margin-bottom: 10px; }

.cms-output ol li::before {
  display: inline-block;
  width: 20px;
  color: #c69939;
  font-size: 13px;
  font-weight: bold;
  content: counter(my-awesome-counter) ". "; }

.cms-output p > a {
  color: black; }
  .cms-output p > a:hover {
    text-decoration: underline; }

.cms-output p {
  transition: color 250ms ease;
  color: #454545;
  letter-spacing: 0.42px; }

.cms-output strong {
  font-weight: bold; }

/* ==========================================================================
   Template default.
   ========================================================================== */
/**
 * Main settings.
 */
.content-default {
  background: white; }

/**
 * Title.
 */
.content-default__title {
  margin-bottom: 15px;
  font-weight: 600; }

/**
 * Subtitle.
 */
.content-default__subtitle {
  margin-bottom: 50px; }

/**
 * Front-page.
 */
.content-default--front-page {
  margin-top: 100px; }
  .content-default--front-page .content-default__editor {
    width: 100%; }

/* ==========================================================================
   Content submenu
   ========================================================================== */
/**
 * main.
 */
.content-submenu {
  position: relative;
  width: 100%;
  padding: 50px 20px;
  background: #f2f2f2;
  color: #454545; }
  @media only screen and (max-width: 1199px) {
    .content-submenu {
      padding: 0; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .content-submenu {
      max-width: 550px; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) {
    .content-submenu {
      margin: auto auto 50px; } }
  @media only screen and (max-width: 599px) {
    .content-submenu {
      margin: auto auto 30px; } }
  .content-submenu.has-no-items {
    display: none; }

/**
 * Submenu item.
 */
.content-submenu__item {
  margin-bottom: 20px;
  transition: all 250ms ease; }
  @media only screen and (min-width: 1200px) {
    .content-submenu__item {
      display: block; } }
  @media only screen and (max-width: 1199px) {
    .content-submenu__item {
      display: none;
      width: 100%;
      padding: 20px;
      background: #f2f2f2; } }
  .content-submenu__item.is-current-page {
    color: #ee1b3b; }
  .content-submenu__item:last-of-type {
    margin-bottom: 0; }
  @media only screen and (min-width: 1200px) {
    .content-submenu__item:hover {
      color: #ee1b3b; } }
  .content-submenu__item.is-first-item {
    display: block; }
  .content-submenu__item.is-active {
    display: block; }

.js-expand {
  display: flex;
  position: absolute;
  top: 10px;
  right: 20px;
  align-items: center;
  justify-content: flex-end;
  width: 100px;
  height: 50px;
  cursor: pointer; }
  @media only screen and (min-width: 1200px) {
    .js-expand {
      display: none; } }
  .js-expand svg {
    width: 15px;
    height: 15px;
    transition: -webkit-transform 250ms ease;
    transition: transform 250ms ease;
    transition: transform 250ms ease, -webkit-transform 250ms ease;
    color: #454545; }
  .js-expand.is-active svg {
    -webkit-transform: rotate(180deg);
            transform: rotate(180deg); }

/**
 * Submenu header (only on mobile).
 */
@media only screen and (min-width: 1200px) {
  .content-submenu__choose {
    display: none !important; } }

/* ==========================================================================
   Header
   ========================================================================== */
/**
 * Main.
 */
.footer {
  position: relative;
  overflow-x: hidden; }

/**
 * Upper.
 */
.footer-upper {
  background: #3e5379;
  color: white; }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .footer-upper {
      width: calc(100% + 120px);
      margin-left: -60px; } }
  .footer-upper .wrapper {
    justify-content: space-between; }

/**
 * Upper left.
 */
.footer-upper__left {
  position: relative;
  width: 75%;
  max-width: 610px;
  padding: 100px 0 50px;
  background: #3e5379; }
  @media only screen and (max-width: 899px) {
    .footer-upper__left {
      max-width: 100%;
      padding: 50px 0 0; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .footer-upper__left {
      max-width: 830px;
      margin: auto;
      padding: 100px 0 0; } }
  @media only screen and (max-width: 1199px) {
    .footer-upper__left {
      width: 100%; } }

/**
 * Upper right.
 */
.footer-upper__right {
  position: relative;
  align-content: center;
  width: 25%;
  padding: 100px 0 100px 10px;
  background: #c69939;
  z-index: 10; }
  @media only screen and (max-width: 599px) {
    .footer-upper__right {
      width: calc(100% + 40px);
      margin-top: 60px;
      margin-right: -20px;
      margin-left: -20px;
      padding: 40px 0 50px; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .footer-upper__right {
      width: calc(100% + 120px);
      margin-top: 70px;
      margin-right: -60px;
      margin-left: -60px;
      padding: 30px 0 50px; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .footer-upper__right {
      justify-content: center;
      width: 100%;
      margin: 90px auto auto;
      padding: 50px 0 100px; } }
  .footer-upper__right .heading-2, .footer-upper__right .cms-output h2, .cms-output .footer-upper__right h2 {
    width: 100%;
    margin-bottom: 10px; }
  .footer-upper__right::before {
    display: block;
    position: absolute;
    top: 0;
    right: calc(100% - 170px);
    bottom: 0;
    width: 110%;
    height: 100%;
    -webkit-transform: skewX(-15deg);
            transform: skewX(-15deg);
    background: #c69939;
    content: '';
    z-index: -1; }
    @media only screen and (max-width: 599px) {
      .footer-upper__right::before {
        top: -50px;
        right: 0;
        left: 0;
        -webkit-transform: skewY(-9deg);
                transform: skewY(-9deg); } }
    @media only screen and (min-width: 600px) and (max-width: 1199px) {
      .footer-upper__right::before {
        top: -50px;
        right: 0;
        left: 0;
        height: 120px;
        -webkit-transform: skewY(-5deg);
                transform: skewY(-5deg); } }
  .footer-upper__right::after {
    display: block;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 100%;
    width: 200%;
    height: 100%;
    background: #c69939;
    content: ''; }
    @media only screen and (max-width: 1199px) {
      .footer-upper__right::after {
        display: none; } }

/**
 * Upper right content.
 */
@media only screen and (max-width: 599px) {
  .footer-upper__right-content {
    padding: 0 20px; } }

@media only screen and (min-width: 600px) and (max-width: 899px) {
  .footer-upper__right-content {
    max-width: 100%;
    padding: 0 60px; } }

@media only screen and (min-width: 900px) and (max-width: 1199px) {
  .footer-upper__right-content {
    max-width: 510px; } }

@media only screen and (max-width: 1199px) {
  .footer-upper__right-content {
    display: flex;
    flex-wrap: wrap;
    width: 100%; } }

/**
 * Footer item.
 */
.footer__item {
  max-width: 190px;
  margin-bottom: 50px; }
  @media only screen and (max-width: 599px) {
    .footer__item {
      max-width: 100%; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .footer__item {
      max-width: 100%; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .footer__item {
      max-width: 260px; } }
  .footer__item .content-submenu__item {
    background: transparent; }

/**
 * Footer title (left content).
 */
.footer__title {
  margin-bottom: 10px;
  font-weight: 700; }

/**
 * Link (left content).
 */
.footer__link {
  margin-top: 10px; }

/**
 * Address part.
 */
@media only screen and (min-width: 600px) and (max-width: 1199px) {
  .footer__address {
    width: 50%; } }

.footer__address .small {
  font-size: 10px;
  font-size: 1rem;
  line-height: 2em;
  display: none;
  margin-bottom: 20px; }

/**
 * Contact part.
 */
.footer-contact {
  width: 100%;
  padding: 10px 0 0; }
  @media only screen and (min-width: 600px) and (max-width: 1199px) {
    .footer-contact {
      width: 50%;
      padding: 0 0 0 40px; } }

/**
 * Contact item.
 */
.footer-contact__item {
  display: flex;
  align-items: center; }
  .footer-contact__item svg {
    width: 15px;
    height: 15px;
    margin-right: 10px; }

/**
 * Footer social media.
 */
.footer-social {
  margin-left: -3px;
  padding-top: 20px; }
  .footer-social a {
    margin-right: 10px;
    transition: color 250ms ease; }
    @media only screen and (min-width: 1200px) {
      .footer-social a:hover {
        color: #3e5379; } }
  .footer-social svg {
    width: 30px;
    height: 25px; }

/**
 * Footer lower.
 */
.footer-lower {
  font-size: 12px;
  font-size: 1.2rem;
  line-height: 1.66667em;
  padding: 10px 0;
  background: white;
  text-transform: uppercase; }
  .footer-lower .link {
    font-size: 12px;
    font-size: 1.2rem;
    line-height: 1.66667em; }
  .footer-lower .wrapper {
    justify-content: space-between; }
    @media only screen and (max-width: 1199px) {
      .footer-lower .wrapper {
        justify-content: center; } }
  @media only screen and (max-width: 899px) {
    .footer-lower .flex-wrap {
      justify-content: center;
      text-align: center; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .footer-lower .flex-wrap {
      margin-bottom: 10px; } }
  @media only screen and (max-width: 599px) {
    .footer-lower .lower {
      justify-content: center;
      text-align: center; } }

/**
 * Middle link in the footer.
 */
.footer-lower__middle {
  position: relative;
  margin: 0 10px;
  padding: 0 10px; }
  .footer-lower__middle::before {
    display: block;
    position: absolute;
    top: 2px;
    bottom: 2px;
    left: 0;
    width: 1px;
    background: black;
    content: ''; }
  .footer-lower__middle::after {
    display: block;
    position: absolute;
    top: 2px;
    right: 0;
    bottom: 2px;
    width: 1px;
    background: black;
    content: ''; }

/* ==========================================================================
   Form.
   ========================================================================== */
/**
 * Main settings.
 */
.form__container {
  width: 100%;
  height: 100%;
  margin: 0 0 100px;
  padding: 50px;
  background: #ee1b3b;
  color: white;
  text-align: center; }
  @media only screen and (max-width: 599px) {
    .form__container {
      width: calc(100% + 40px);
      margin-left: -20px; } }
  @media only screen and (max-width: 899px) {
    .form__container {
      padding: 50px 20px; } }
  .form__container form {
    width: 100%;
    max-width: 820px;
    margin: auto; }
  .form__container .button {
    margin-top: 50px; }
    @media only screen and (max-width: 899px) {
      .form__container .button {
        margin-top: 30px; } }

/**
 * Gravity Forms settings.
 */
.gform_title {
  font-size: 45px;
  font-size: 4.5rem;
  line-height: 1.55556em;
  margin-bottom: 20px;
  color: white;
  font-weight: 700; }

.gform_description {
  display: block;
  width: 100%;
  max-width: 380px;
  margin: auto auto 50px;
  font-weight: 300; }

.gfield_label {
  font-weight: 700;
  text-align: left; }

.hidden_label .gfield_label {
  display: none; }

.gform_fields {
  display: flex;
  flex-wrap: wrap;
  margin: -10px; }
  @media only screen and (max-width: 1199px) {
    .gform_fields {
      margin: -5px; } }

fieldset.gfield {
  width: 100%;
  margin-bottom: 30px; }

fieldset .gchoice {
  text-align: left;
  cursor: pointer; }
  fieldset .gchoice input[type="radio"], fieldset .gchoice input[type="checkbox"] {
    width: 10px;
    height: 10px;
    border: 1px solid white;
    background-color: transparent;
    transition: all 300ms ease-in;
    cursor: pointer;
    border-radius: 10px; }
    fieldset .gchoice input[type="radio"]:checked, fieldset .gchoice input[type="checkbox"]:checked {
      background-color: white; }
  fieldset .gchoice input[type="checkbox"] {
    border-radius: 0; }
  fieldset .gchoice label {
    padding-left: 10px;
    cursor: pointer; }

fieldset .gfield_description {
  text-align: left;
  font-size: 13px;
  opacity: 0.7; }
  fieldset .gfield_description.validation_message {
    opacity: 1;
    font-size: 16px; }

.gsection {
  width: 100% !important; }
  .gsection .gsection_title {
    font-weight: 700;
    font-size: 30px;
    margin: 50px 0;
    margin-top: 0; }

.gfield {
  width: calc(50% - 20px);
  margin: 10px; }
  @media only screen and (max-width: 899px) {
    .gfield {
      width: 100%;
      margin: 5px; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .gfield {
      width: calc(50% - 10px);
      margin: 5px; } }

.gfield-has-textarea {
  width: 100%;
  margin: 10px 10px 0; }
  @media only screen and (max-width: 899px) {
    .gfield-has-textarea {
      margin: 5px 5px 0; } }
  .gfield-has-textarea textarea {
    width: 100%;
    padding: 20px; }

input[type='text'],
input[type='tel'],
input[type='email'],
select {
  position: relative;
  width: 100%;
  height: 50px;
  padding: 10px 20px;
  background: white;
  color: #454545;
  font-weight: 500; }

.ginput_container_select, .ginput_container_checkbox {
  position: relative; }
  .ginput_container_select svg, .ginput_container_checkbox svg {
    position: absolute;
    top: calc(50% - 7.5px);
    right: 20px;
    width: 15px;
    height: 15px;
    color: #ee1b3b;
    pointer-events: none; }

.gform_validation_container {
  display: none; }

.validation_message {
  font-style: italic;
  text-align: left; }

.validation_error {
  position: relative;
  width: 100%;
  max-width: 820px;
  height: 100%;
  max-height: 0;
  margin: auto auto 20px;
  transition: all 250ms ease;
  background: #3e5379;
  overflow: hidden; }
  .validation_error h2 {
    margin-bottom: 10px;
    font-weight: 600; }
  .validation_error .close-button {
    position: absolute;
    top: 20px;
    right: 20px; }
    @media only screen and (max-width: 899px) {
      .validation_error .close-button {
        top: 10px;
        right: 10px; } }
    .validation_error .close-button svg {
      width: 20px;
      height: 20px;
      color: white;
      cursor: pointer; }
  .validation_error.is-active {
    max-height: 500px;
    padding: 20px 0; }

/**
 * Additional rules.
 */
.page-header + .form {
  margin-top: 100px; }
  @media only screen and (max-width: 899px) {
    .page-header + .form {
      margin-top: 50px; } }

.gform_required_legend {
  display: none; }

.genera-23_wrapper .gform_description {
  display: none; }

/* ==========================================================================
   Header
   ========================================================================== */
/**
 * Main.
 */
.header {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  padding: 20px 0 30px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  background: white;
  z-index: 999; }
  @media (max-width: 755px) {
    .header {
      padding: 20px 0 15px; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .header {
      padding: 25px 0; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .header {
      padding: 25px 0; } }
  @media (max-width: 1260px) {
    .header .wrapper {
      justify-content: space-between; } }

/**
 * Header left.
 */
.header-left {
  width: 25%; }
  @media (max-width: 755px) {
    .header-left {
      width: 47% !important; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .header-left {
      width: 60%; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .header-left {
      width: 50%; } }
  @media only screen and (max-width: 599px) {
    .header-left img {
      width: auto;
      height: 32px; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) {
    .header-left img {
      width: auto;
      height: auto;
      max-height: 52px; } }
  .header-left .logo--desktop {
    display: block; }
    @media only screen and (min-width: 1200px) {
      .header-left .logo--desktop {
        margin-top: 25px; } }
    @media (max-width: 758px) {
      .header-left .logo--desktop {
        display: none; } }
  .header-left .logo--mobile {
    display: block;
    transition: opacity 250ms ease;
    opacity: 1; }
    @media (min-width: 758px) {
      .header-left .logo--mobile {
        display: none; } }
    .header-left .logo--mobile.is-active {
      display: none; }

/**
 * Header right.
 */
.header-right {
  position: relative;
  align-content: center;
  width: 75%; }
  @media (max-width: 755px) {
    .header-right {
      flex-direction: row !important;
      justify-content: flex-end !important;
      width: 53% !important;
      padding-right: 15%; } }
  @media (min-width: 600px) and (max-width: 1260px) {
    .header-right {
      width: 40%; } }
  @media (min-width: 899) and (max-width: 1260px) {
    .header-right {
      width: 50%; } }
  @media (max-width: 1260px) {
    .header-right {
      flex-direction: row-reverse;
      align-items: center; } }

/**
 * Header right upper.
 */
.header-right__upper {
  justify-content: flex-end;
  width: 100%; }
  @media (max-width: 755px) {
    .header-right__upper {
      margin-right: 0 !important; } }
  @media (max-width: 1260px) {
    .header-right__upper {
      width: auto;
      margin-right: 80px; } }

.header-right__lower {
  justify-content: flex-end;
  width: 100%;
  margin-top: 20px; }
  @media (max-width: 1260px) {
    .header-right__lower {
      width: auto;
      margin-top: 0; } }
  @media (max-width: 1260px) {
    .header-right__lower nav {
      display: none; } }

/**
 * menu button.
 */
.menu-button {
  position: absolute;
  right: 0; }
  @media (min-width: 1260px) {
    .menu-button {
      display: none; } }
  .menu-button .menu-button-svg {
    display: none;
    width: 30px;
    height: 30px;
    transition: opacity 250ms ease;
    color: #3e5379; }
    .menu-button .menu-button-svg.is-active {
      display: block; }

/* ==========================================================================
   Main Menu
   ========================================================================== */
/**
 * WordPress main menu.
 */
/**
 * Main menu.
 */
.main-menu {
  display: flex; }

/**
 * Main menu item.
 */
/**
 * Main menu link.
 */
.main-menu > .menu-item > a {
  margin-left: 25px;
  transition: color 250ms ease;
  font-weight: 600; }
  @media only screen and (max-width: 1199px) {
    .main-menu > .menu-item > a {
      margin-left: 0; } }
  @media only screen and (min-width: 900px) {
    .main-menu > .menu-item > a {
      font-size: 12px;
      font-size: 1.2rem;
      line-height: 1.66667em; } }
  @media only screen and (min-width: 1200px) {
    .main-menu > .menu-item > a {
      padding-bottom: 60px; } }
  .main-menu > .menu-item > a button {
    position: absolute;
    top: 10px;
    right: -13px; }
    @media only screen and (max-width: 1199px) {
      .main-menu > .menu-item > a button {
        right: initial; } }
    .main-menu > .menu-item > a button svg {
      width: 10px;
      height: 10px;
      margin-left: 10px;
      transition: -webkit-transform 250ms ease;
      transition: transform 250ms ease;
      transition: transform 250ms ease, -webkit-transform 250ms ease; }
  @media only screen and (min-width: 1200px) {
    .main-menu > .menu-item > a:hover {
      color: #ee1b3b; } }

/**
 * Main menu item has children.
 */
.main-menu > .menu-item-has-children {
  position: relative; }
  @media only screen and (min-width: 1200px) {
    .main-menu > .menu-item-has-children:hover .submenu-container {
      display: block; }
    .main-menu > .menu-item-has-children:hover svg {
      -webkit-transform: rotate(180deg);
              transform: rotate(180deg);
      color: #ee1b3b; } }

/**
 * Main menu current menu item and current page ancestor.
 */
.main-menu > .current-menu-item > a,
.main-menu > .current-page-ancestor > a {
  color: #ee1b3b; }
  .main-menu > .current-menu-item > a svg,
  .main-menu > .current-page-ancestor > a svg {
    color: #ee1b3b; }

.mobile-menu .main-menu {
  flex-wrap: wrap;
  max-height: 0;
  margin: 0;
  transition: all 500ms ease;
  overflow: hidden; }
  @media only screen and (min-width: 1200px) {
    .mobile-menu .main-menu {
      display: none; } }
  .mobile-menu .main-menu li {
    width: 100%;
    margin-bottom: 20px;
    text-align: center; }
    .mobile-menu .main-menu li:nth-last-child(1) {
      margin-bottom: 0; }
  .mobile-menu .main-menu.is-active {
    max-height: 1000px;
    margin: 50px 0 40px; }

/**
 * Logo in the mobile menu.
 */
.mobile-menu__logo {
  display: block;
  max-height: 0;
  margin: 0;
  transition: max-height 250ms ease;
  overflow: hidden; }
  @media (max-width: 755px) {
    .mobile-menu__logo.is-active {
      max-height: 50px;
      margin: 30px auto auto; } }

/* ==========================================================================
   Navigation blocks.
   ========================================================================== */
/**
 * Main settings.
 */
.navigation-blocks {
  padding-top: 100px;
  padding-bottom: 100px; }
  @media only screen and (max-width: 899px) {
    .navigation-blocks {
      padding-top: 70px;
      padding-bottom: 70px; } }

/**
 * Title.
 */
.navigation-blocks__title {
  font-size: 40px;
  font-size: 4rem;
  line-height: 1.175em;
  display: block;
  margin: auto;
  font-weight: 500;
  text-align: center; }

/**
 * Row settings.
 */
.navigation-blocks__row {
  margin: 0 -25px; }
  @media only screen and (max-width: 599px) {
    .navigation-blocks__row {
      margin: 0; } }

/**
 * Column settings.
 */
.navigation-blocks__column {
  width: calc(100% / 3 - 50px);
  margin: 0 25px; }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .navigation-blocks__column {
      max-width: 650px; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .navigation-blocks__column {
      max-width: 570px; } }
  @media only screen and (max-width: 1199px) {
    .navigation-blocks__column {
      width: 100%;
      margin: auto; } }

/**
 * Single block.
 */
.block {
  margin-top: 50px;
  transition: background 250ms ease;
  border: 3px solid #c69939; }
  @media only screen and (max-width: 899px) {
    .block {
      margin-top: 30px; } }
  @media only screen and (min-width: 1200px) {
    .block:hover {
      border: 3px solid #3e5379;
      background: #3e5379;
      color: white; } }
  .block.news-latest:hover {
    border: 3px solid #c69939; }

/**
 * Block title.
 */
.news-latest__single-title,
.block__title {
  font-size: 30px;
  font-size: 3rem;
  line-height: 1.23333em;
  margin: -3px;
  padding: 43px 23px;
  background: #c69939;
  color: white;
  font-weight: 600; }

/**
 * Links in a block.
 */
.block__links {
  padding: 40px 20px;
  text-transform: uppercase; }

.block__link {
  display: block;
  margin-bottom: 30px;
  transition: all 250ms ease; }
  .block__link:nth-last-child(1) {
    margin-bottom: 0; }
  @media only screen and (min-width: 1200px) {
    .block__link:hover {
      font-weight: 600; } }

/**
 * Additional rules for the'Latest news' block.
 */
.block__latest-news {
  position: relative;
  color: white;
  font-weight: 600;
  letter-spacing: 0.42px;
  text-transform: uppercase;
  z-index: 20; }
  .block__latest-news::after {
    display: block;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(198, 153, 57, 0.8);
    content: '';
    z-index: -1; }
  .block__latest-news .news-item {
    display: flex;
    width: 100%;
    margin: 0;
    padding: 40px 20px; }
  @media only screen and (min-width: 1200px) {
    .block__latest-news:hover .news-latest__title {
      font-weight: 700; } }

/**
 * News block background.
 */
.news-latest__background {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: -1; }
  .news-latest__background img {
    width: 100%;
    height: 100%; }

/**
 * News tuitle (in navigation blocks).
 */
.news-latest__title {
  transition: all 250ms ease; }

/* ==========================================================================
   News list
   ========================================================================== */
/**
 * Main settings.
 */
.news-list {
  padding-top: 100px;
  padding-bottom: 100px; }
  @media only screen and (max-width: 899px) {
    .news-list {
      padding-top: 50px;
      padding-bottom: 50px; } }
  .news-list .teaser:nth-last-child(1) {
    margin-bottom: 50px; }

/**
 * Loop.
 */
.news-list__loop {
  margin: 0 -35px; }
  @media only screen and (max-width: 599px) {
    .news-list__loop {
      margin: 0; } }

/**
 * News item.
 */
.news-item {
  width: calc(50% - 70px);
  margin: 0 35px 50px; }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .news-item {
      max-width: 650px; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .news-item {
      max-width: 570px; } }
  @media only screen and (max-width: 1199px) {
    .news-item {
      width: 100%;
      margin: auto; } }

.news-item__subtitle {
  text-transform: capitalize; }

/* ==========================================================================
   News single
   ========================================================================== */
/**
 * Main settings.
 */
.news-single {
  padding-top: 100px;
  padding-bottom: 100px; }
  @media only screen and (max-width: 899px) {
    .news-single {
      padding-top: 50px;
      padding-bottom: 50px; } }
  .news-single .wrapper {
    max-width: 820px;
    margin: auto; }
  .news-single img {
    width: 100%;
    height: 100%;
    max-height: 570px; }

/**
 * News single title.
 */
.news-single__title {
  margin-bottom: 15px;
  font-weight: 600; }

.news-single__subtitle {
  margin-bottom: 50px; }

/**
 * Back button.
 */
.news-single__goback {
  margin-top: 30px; }

/* ==========================================================================
   Page header
   ========================================================================== */
/**
 * Main settings.
 */
.page-header {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 500px;
  overflow: hidden; }
  @media only screen and (max-width: 599px) {
    .page-header {
      min-height: 0; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .page-header {
      min-height: 350px; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .page-header {
      min-height: 450px; } }
  .page-header .wrapper {
    display: flex;
    flex-wrap: wrap;
    height: 100%;
    z-index: 10; }
    @media only screen and (min-width: 600px) and (max-width: 899px) {
      .page-header .wrapper {
        padding: 0 20px; } }
  .page-header.background-color-yellow {
    border-top: 10px solid #ee1b3b;
    background: #c69939; }
    .page-header.background-color-yellow .page-header__title {
      background: #c69939; }
      .page-header.background-color-yellow .page-header__title::before, .page-header.background-color-yellow .page-header__title::after {
        background: #c69939; }
  .page-header.background-color-red {
    border-top: 10px solid #c69939;
    background: #ee1b3b; }
    .page-header.background-color-red .page-header__title {
      background: #ee1b3b; }
      .page-header.background-color-red .page-header__title::before, .page-header.background-color-red .page-header__title::after {
        background: #ee1b3b; }
    .page-header.background-color-red .page-header__page-title,
    .page-header.background-color-red .page-header__contact-button {
      background: #c69939; }
      .page-header.background-color-red .page-header__page-title::before, .page-header.background-color-red .page-header__page-title::after,
      .page-header.background-color-red .page-header__contact-button::before,
      .page-header.background-color-red .page-header__contact-button::after {
        background: #c69939; }
  .page-header.background-color-blue {
    border-top: 10px solid #ee1b3b;
    background: #3e5379; }
    .page-header.background-color-blue .page-header__title {
      background: #3e5379; }
      .page-header.background-color-blue .page-header__title::before, .page-header.background-color-blue .page-header__title::after {
        background: #3e5379; }
  .page-header.background-color-blue-yellow-buttons {
    border-top: 10px solid #ee1b3b;
    background: #3e5379; }
    .page-header.background-color-blue-yellow-buttons .page-header__contact-button,
    .page-header.background-color-blue-yellow-buttons .page-header__page-title {
      background: #ffcc24;
      color: black; }
      .page-header.background-color-blue-yellow-buttons .page-header__contact-button::before, .page-header.background-color-blue-yellow-buttons .page-header__contact-button::after,
      .page-header.background-color-blue-yellow-buttons .page-header__page-title::before,
      .page-header.background-color-blue-yellow-buttons .page-header__page-title::after {
        background: #ffcc24; }
  .page-header.background-color-orange {
    border-top: 10px solid #3e5379;
    background: #ff6600; }
    .page-header.background-color-orange .page-header__title {
      background: #ff6600; }
      .page-header.background-color-orange .page-header__title::before, .page-header.background-color-orange .page-header__title::after {
        background: #ff6600; }
  .page-header.background-color-light-orange {
    border-top: 10px solid #3e5379;
    background: #ff9900; }
    .page-header.background-color-light-orange .page-header__title {
      background: #ff9900; }
      .page-header.background-color-light-orange .page-header__title::before, .page-header.background-color-light-orange .page-header__title::after {
        background: #ff9900; }
  .page-header.background-color-light-blue {
    border-top: 10px solid #ee1b3b;
    background: #20bbee; }
    .page-header.background-color-light-blue .page-header__title {
      background: #20bbee; }
      .page-header.background-color-light-blue .page-header__title::before, .page-header.background-color-light-blue .page-header__title::after {
        background: #20bbee; }
  .page-header.background-color-dark-green {
    border-top: 10px solid #3e5379;
    background: #5da32e; }
    .page-header.background-color-dark-green .page-header__title {
      background: #5da32e; }
      .page-header.background-color-dark-green .page-header__title::before, .page-header.background-color-dark-green .page-header__title::after {
        background: #5da32e; }
  .page-header.background-color-light-green {
    border-top: 10px solid #ee1b3b;
    background: #00cc00; }
    .page-header.background-color-light-green .page-header__title {
      background: #00cc00; }
      .page-header.background-color-light-green .page-header__title::before, .page-header.background-color-light-green .page-header__title::after {
        background: #00cc00; }
  .page-header.background-color-pink {
    border-top: 10px solid #ff0066;
    background: #ff0066; }
    .page-header.background-color-pink .page-header__title {
      background: #ff0066; }
      .page-header.background-color-pink .page-header__title::before, .page-header.background-color-pink .page-header__title::after {
        background: #ff0066; }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .page-header.has-subtitle .page-header__title {
      padding: 100px 0; } }
  .page-header.full-title-width .title {
    font-weight: 700; }
  .page-header.has-image:not(.full-title-width) .page-header__title {
    width: 35%; }
    @media only screen and (max-width: 599px) {
      .page-header.has-image:not(.full-title-width) .page-header__title {
        width: 100%; } }
    @media only screen and (min-width: 900px) and (max-width: 1199px) {
      .page-header.has-image:not(.full-title-width) .page-header__title {
        width: 40%; } }
    @media only screen and (min-width: 1200px) {
      .page-header.has-image:not(.full-title-width) .page-header__title {
        padding: 100px 0; } }
  .page-header.has-image:not(.full-title-width) .title {
    max-width: 400px; }
    @media only screen and (max-width: 599px) {
      .page-header.has-image:not(.full-title-width) .title {
        max-width: 100%; } }
    @media only screen and (min-width: 600px) and (max-width: 899px) {
      .page-header.has-image:not(.full-title-width) .title {
        font-size: 25px;
        width: auto;
        max-width: 500px; } }
  .page-header.fullscreen .page-header__title {
    background: transparent; }
    .page-header.fullscreen .page-header__title::before, .page-header.fullscreen .page-header__title::after {
      display: none; }
  @media only screen and (max-width: 599px) {
    .page-header.splitscreen .page-header__background {
      position: static; } }
  @media only screen and (max-width: 599px) {
    .page-header.splitscreen.has-image .page-header__title {
      margin-bottom: 0;
      padding: 25px 0 30px; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .page-header.splitscreen.has-image .page-header__title .heading-1, .page-header.splitscreen.has-image .page-header__title .cms-output h1, .cms-output .page-header.splitscreen.has-image .page-header__title h1 {
      margin-top: -40px; } }
  .page-header.splitscreen.has-image .page-header__title::after {
    top: 0;
    bottom: -10%; }
  @media only screen and (min-width: 600px) {
    .page-header.splitscreen.has-image .page-header__background img {
      -webkit-transform: translateX(30%);
              transform: translateX(30%);
      -o-object-position: top;
         object-position: top; } }

/**
 * Header title.
 */
.page-header__title {
  position: relative;
  align-content: center;
  width: 100%;
  height: 100%;
  min-height: 500px;
  z-index: 10; }
  @media only screen and (max-width: 599px) {
    .page-header__title {
      min-height: 140px;
      margin-bottom: 65px;
      padding: 15% 0; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) {
    .page-header__title {
      align-content: center;
      align-items: center; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .page-header__title {
      min-height: 350px; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .page-header__title {
      min-height: 450px; } }
  @media only screen and (min-width: 1200px) {
    .page-header__title {
      height: 500px;
      padding: 100px 0; } }
  .page-header__title::before {
    position: absolute;
    top: 0;
    right: 100%;
    bottom: 0;
    width: 100%;
    content: ''; }
    @media only screen and (max-width: 599px) {
      .page-header__title::before {
        left: -20px;
        width: calc(100% + 40px);
        min-height: 0;
        z-index: -1; } }
  .page-header__title::after {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 20%;
    width: 100%;
    -webkit-transform: skewX(-15deg);
            transform: skewX(-15deg);
    content: '';
    z-index: -1; }
    @media only screen and (max-width: 599px) {
      .page-header__title::after {
        right: 0;
        bottom: -10%;
        left: -20px;
        width: calc(100% + 40px);
        -webkit-transform: skewY(-5deg);
                transform: skewY(-5deg); } }
    @media only screen and (min-width: 600px) and (max-width: 899px) {
      .page-header__title::after {
        left: 50%; } }
    @media only screen and (min-width: 900px) and (max-width: 1199px) {
      .page-header__title::after {
        left: 25%; } }
  .page-header__title .title {
    width: 100%; }
    @media only screen and (max-width: 599px) {
      .page-header__title .title {
        max-width: 100%; } }

/**
 * Subtitle.
 */
.page-header__subtitle {
  margin-top: 20px;
  color: white; }

/**
 * Background image.
 */
.page-header__background {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 0; }
  @media only screen and (max-width: 599px) {
    .page-header__background {
      height: 385px; } }
  .page-header__background img {
    width: 100%;
    height: 100%; }

/**
 * Page title container.
 */
.page-header__page-title {
  font-size: 25px;
  font-size: 2.5rem;
  line-height: 1.48em;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  max-width: 360px;
  padding: 20px;
  background: #ee1b3b;
  color: white;
  font-weight: 600;
  letter-spacing: 0.83px;
  z-index: 20; }
  @media only screen and (max-width: 599px) {
    .page-header__page-title {
      position: relative;
      width: auto;
      max-width: 70%;
      height: 100%;
      padding-left: 0;
      font-size: 20px;
      padding: 14px; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .page-header__page-title {
      position: absolute;
      width: auto;
      max-width: 70%;
      height: 57px;
      font-size: 20px;
      padding: 14px;
      padding-left: 20px; }
      .page-header__page-title + div {
        padding-top: 57px; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .page-header__page-title {
      padding-left: 50px; } }
  .page-header__page-title::before {
    display: block;
    position: absolute;
    top: 0;
    right: 100%;
    bottom: 0;
    width: 200%;
    background: #ee1b3b;
    content: ''; }
  .page-header__page-title::after {
    display: block;
    position: absolute;
    top: 0;
    bottom: 0;
    left: calc(100% - 100px);
    width: 180px;
    height: 100%;
    -webkit-transform: skewX(-45deg);
            transform: skewX(-45deg);
    background: #ee1b3b;
    content: '';
    z-index: -1; }
    @media only screen and (max-width: 599px) {
      .page-header__page-title::after {
        left: calc(100% - 125px);
        -webkit-transform: skewX(-25deg);
                transform: skewX(-25deg); } }

/**
 * Contact button container.
 */
.page-header__contact-button {
  font-size: 30px;
  font-size: 3rem;
  line-height: 1.23333em;
  position: absolute;
  right: 0;
  bottom: 0;
  padding: 20px;
  background: #ee1b3b;
  color: white;
  font-weight: 600;
  letter-spacing: 0.83px;
  z-index: 20; }
  @media only screen and (max-width: 599px) {
    .page-header__contact-button {
      width: calc(100% - 40px);
      padding-right: 0; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .page-header__contact-button {
      width: calc(100% - 40px);
      padding-right: 0; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .page-header__contact-button {
      padding-right: 50px; } }
  .page-header__contact-button::before {
    display: block;
    position: absolute;
    top: 0;
    right: calc(100% - 50px);
    bottom: 0;
    width: 180px;
    height: 100%;
    -webkit-transform: skewX(-45deg);
            transform: skewX(-45deg);
    background: #ee1b3b;
    content: '';
    z-index: -1; }
    @media only screen and (max-width: 599px) {
      .page-header__contact-button::before {
        right: calc(100% - 80px);
        width: 100px;
        -webkit-transform: skewX(-25deg);
                transform: skewX(-25deg); } }
  .page-header__contact-button::after {
    display: block;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 100%;
    width: 200%;
    background: #ee1b3b;
    content: ''; }
  .page-header__contact-button.desktop {
    display: none; }
    @media only screen and (min-width: 600px) {
      .page-header__contact-button.desktop {
        display: block; } }
    @media only screen and (min-width: 600px) and (max-width: 899px) {
      .page-header__contact-button.desktop {
        display: none; } }
  .page-header__contact-button.mobile {
    font-size: 20px;
    font-size: 2rem;
    line-height: 1.85em;
    display: block;
    width: 55%;
    padding: 10px;
    text-align: center; }
    @media only screen and (min-width: 600px) {
      .page-header__contact-button.mobile {
        display: none; } }
    @media only screen and (min-width: 600px) and (max-width: 899px) {
      .page-header__contact-button.mobile {
        font-size: 20px;
        font-size: 2rem;
        line-height: 1.85em;
        display: block;
        width: 35%;
        padding: 10px;
        text-align: center; }
        .page-header__contact-button.mobile::before {
          width: 90px; } }

/* ==========================================================================
   Pagination
   ========================================================================== */
/**
 * Main settings.
 */
.pagination {
  font-size: 30px;
  font-size: 3rem;
  line-height: 1.23333em;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 500; }
  .pagination .page-numbers {
    display: flex;
    align-items: center;
    justify-content: center;
    width: auto;
    min-width: 40px;
    height: auto;
    min-height: 40px;
    margin: 0 5px;
    transition: all 250ms ease; }
    .pagination .page-numbers.current {
      background: #c69939;
      color: white;
      font-weight: 700; }
    @media only screen and (min-width: 1200px) {
      .pagination .page-numbers:hover {
        background: #c69939;
        color: white; }
        .pagination .page-numbers:hover svg {
          color: white; } }
  .pagination .prev,
  .pagination .next {
    margin: 0; }
  .pagination svg {
    width: 20px;
    height: 20px;
    color: black; }

/* ==========================================================================
   Search form
   ========================================================================== */
/**
 * Main form.
 */
.search-form {
  position: absolute;
  top: -150px;
  left: 40px;
  width: 60%;
  transition: top 350ms ease; }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .search-form {
      left: -120px !important; } }
  @media only screen and (max-width: 1199px) {
    .search-form {
      left: -40px; } }
  .search-form input {
    width: 100%;
    height: 45px;
    padding: 5px;
    border-bottom: 2px solid #3e5379; }
  .search-form.is-active {
    top: 0; }
    @media only screen and (min-width: 600px) and (max-width: 899px) {
      .search-form.is-active {
        top: 30px; } }
    @media only screen and (max-width: 1199px) {
      .search-form.is-active {
        top: -10px; } }

/**
 * Search button.
 */
.header__search-button {
  margin-left: 30px;
  cursor: pointer; }
  .header__search-button svg {
    width: 20px;
    height: 20px;
    color: #ee1b3b; }

/* ==========================================================================
   Search results.
   ========================================================================== */
/**
 * Main element.
 */
.search-results {
  position: relative;
  border-top: 10px solid #3e5379; }
  .search-results .teaser__upper h2 {
    font-weight: 600; }

/**
 * Custom wrapper rules.
 */
.search__wrapper {
  max-width: 820px;
  margin: 100px auto; }

/**
 * Title.
 */
.search-results__title {
  position: relative;
  width: 100%; }
  .search-results__title h3 {
    display: inline-flex;
    position: relative;
    padding: 50px 0;
    background: #c69939;
    color: white;
    z-index: 20; }
    .search-results__title h3::after {
      display: block;
      position: absolute;
      top: 0;
      bottom: 0;
      left: 40%;
      width: 100%;
      -webkit-transform: skewX(-30deg);
              transform: skewX(-30deg);
      background: #c69939;
      content: '';
      z-index: -1; }
  .search-results__title::before {
    display: block;
    position: absolute;
    top: 0;
    right: 100%;
    bottom: 0;
    width: 200%;
    background: #c69939;
    content: ''; }

/**
 * Subtitle.
 */
.search__subtitle {
  margin-top: 10px; }

/**
 * You have searched for.
 */
.search-results__query {
  margin-bottom: 50px;
  font-weight: 600; }

/**
 * Search result.
 */
.search-results__results {
  margin-bottom: 100px; }

/* ==========================================================================
   Submenu
   ========================================================================== */
/**
 * Submenu button.
 */
.submenu-button {
  position: absolute; }
  .submenu-button.is-active svg {
    -webkit-transform: rotate(180deg);
            transform: rotate(180deg); }

/**
 * Submenu container.
 */
.submenu-container {
  display: none;
  position: absolute;
  top: 69px;
  padding: 20px 30px;
  border: 1px solid #ee1b3b;
  background: #f2f2f2; }
  @media only screen and (max-width: 1199px) {
    .submenu-container {
      position: static;
      margin-top: 10px;
      border: 0; } }

/**
 * Submenu.
 */
/**
 * Submenu item.
 */
.submenu > .menu-item {
  width: 100%;
  white-space: nowrap; }
  @media only screen and (min-width: 1200px) {
    .submenu > .menu-item {
      padding: 5px 0; } }

/**
 * Submenu item link.
 */
.submenu > .menu-item > a {
  transition: all 250ms ease; }
  @media only screen and (min-width: 1200px) {
    .submenu > .menu-item > a:hover {
      color: #ee1b3b; } }

/* ==========================================================================
   Template default.
   ========================================================================== */
/**
 * Main settings.
 */
.teasers {
  background: white; }

/**
 * Single teaser.
 */
.teaser {
  margin-bottom: 50px;
  transition: background 250ms ease;
  border: 3px solid #c69939; }
  @media only screen and (max-width: 1199px) {
    .teaser {
      margin-bottom: 30px; } }
  .teaser:nth-last-child(1) {
    margin-bottom: 0; }
  .teaser:hover {
    background: #3e5379;
    color: white; }
    .teaser:hover .teaser__editor p {
      color: white; }

/**
 * Upper part of teaser.
 */
.teaser__upper {
  padding: 40px 50px;
  transition: background 250ms ease;
  background: #c69939;
  color: white; }
  @media only screen and (max-width: 599px) {
    .teaser__upper {
      padding: 10px; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .teaser__upper {
      padding: 40px 30px; } }

.teaser__title {
  margin-bottom: 10px;
  word-wrap: break-word; }

/**
 * Lower part of teaser.
 */
.teaser__lower {
  position: relative;
  padding: 50px; }
  @media only screen and (max-width: 599px) {
    .teaser__lower {
      padding: 10px; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .teaser__lower {
      padding: 30px; } }
  @media only screen and (max-width: 599px) {
    .teaser__lower.has-tag {
      padding-top: 40px; } }

/**
 * Editor rules.
 */
.teaser__editor {
  margin-bottom: 20px; }

/* ==========================================================================
   Template default.
   ========================================================================== */
/**
 * Main template.
 */
.template-default {
  padding-top: 100px;
  padding-bottom: 100px; }
  @media only screen and (max-width: 899px) {
    .template-default {
      padding-top: 50px;
      padding-bottom: 50px; } }
  .template-default .wrapper {
    justify-content: space-between; }
    @media only screen and (max-width: 1199px) {
      .template-default .wrapper {
        flex-direction: column-reverse; } }

/**
 * Left column.
 */
.template-default__left {
  width: calc(70% - 25px); }
  @media only screen and (max-width: 1199px) {
    .template-default__left {
      width: 100%; } }

/**
 * Right column.
 */
.template-default__right {
  width: calc(30% - 25px); }
  @media only screen and (max-width: 1199px) {
    .template-default__right {
      width: 100%; } }

/**
 * Additional rules.
 */
.template-default .wrapper + .wrapper {
  margin-top: 100px; }
  @media only screen and (max-width: 899px) {
    .template-default .wrapper + .wrapper {
      margin-top: 50px; } }
  .template-default .wrapper + .wrapper .form__container {
    margin-bottom: 0; }

/* ==========================================================================
   Header
   ========================================================================== */
/**
 * Language switch.
 */
.language-switch {
  display: flex;
  font-weight: 500;
  letter-spacing: 0.42px;
  text-transform: uppercase; }
  @media (max-width: 755px) {
    .language-switch {
      margin-right: 0 !important; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) {
    .language-switch {
      margin-left: 40px; } }

/**
 * Single item.
 */
.language-switch__item {
  padding: 0 10px; }
  .language-switch__item:nth-child(1) {
    border-right: 1px solid black; }
  .language-switch__item:nth-child(2) {
    padding: 0 0 0 10px; }
  .language-switch__item.is-active {
    color: #ee1b3b; }

.logo-slider {
  padding-top: 100px;
  padding-bottom: 100px; }
  @media only screen and (max-width: 899px) {
    .logo-slider {
      padding-top: 70px;
      padding-bottom: 70px; } }

.logo-slider__items {
  display: flex;
  justify-content: space-around;
  align-items: center; }
  .logo-slider__items .logo-item img {
    width: 190px;
    height: auto; }
  .logo-slider__items .owl-stage {
    display: flex;
    align-items: center;
    justify-content: space-around; }
  .logo-slider__items .owl-stage-outer {
    padding: 0 20px;
    padding-left: 50px; }
  .logo-slider__items .owl-stage-outer {
    display: flex;
    flex-wrap: nowrap;
    flex-direction: column; }
  .logo-slider__items .owl-stage-outer > .owl-stage {
    margin: 0 auto; }

/* ==========================================================================
   Color
   ========================================================================== */
/**
 * Color utility classes.
 */
/**
       * `color` black-100 color utility.
       */
.color-black-100 {
  color: black; }

/**
       * `background-color` black-100 color utility.
       */
.background-color-black-100 {
  background-color: black; }

/**
       * `color` #454545-200 color utility.
       */
.color-black-200 {
  color: #454545; }

/**
       * `background-color` #454545-200 color utility.
       */
.background-color-black-200 {
  background-color: #454545; }

/**
       * `color` rgba(0, 0, 0, 0.1)-10 color utility.
       */
.color-black-10 {
  color: rgba(0, 0, 0, 0.1); }

/**
       * `background-color` rgba(0, 0, 0, 0.1)-10 color utility.
       */
.background-color-black-10 {
  background-color: rgba(0, 0, 0, 0.1); }

/**
       * `color` white-100 color utility.
       */
.color-white-100 {
  color: white; }

/**
       * `background-color` white-100 color utility.
       */
.background-color-white-100 {
  background-color: white; }

/**
       * `color` #f2f2f2-200 color utility.
       */
.color-white-200 {
  color: #f2f2f2; }

/**
       * `background-color` #f2f2f2-200 color utility.
       */
.background-color-white-200 {
  background-color: #f2f2f2; }

/**
       * `color` #c69939-100 color utility.
       */
.color-brown-100 {
  color: #c69939; }

/**
       * `background-color` #c69939-100 color utility.
       */
.background-color-brown-100 {
  background-color: #c69939; }

/**
       * `color` #3e5379-100 color utility.
       */
.color-blue-100 {
  color: #3e5379; }

/**
       * `background-color` #3e5379-100 color utility.
       */
.background-color-blue-100 {
  background-color: #3e5379; }

/**
       * `color` #20bbee-50 color utility.
       */
.color-blue-50 {
  color: #20bbee; }

/**
       * `background-color` #20bbee-50 color utility.
       */
.background-color-blue-50 {
  background-color: #20bbee; }

/**
       * `color` #ee1b3b-100 color utility.
       */
.color-red-100 {
  color: #ee1b3b; }

/**
       * `background-color` #ee1b3b-100 color utility.
       */
.background-color-red-100 {
  background-color: #ee1b3b; }

/**
       * `color` #ffcc24-100 color utility.
       */
.color-yellow-100 {
  color: #ffcc24; }

/**
       * `background-color` #ffcc24-100 color utility.
       */
.background-color-yellow-100 {
  background-color: #ffcc24; }

/**
       * `color` #ff6600-100 color utility.
       */
.color-orange-100 {
  color: #ff6600; }

/**
       * `background-color` #ff6600-100 color utility.
       */
.background-color-orange-100 {
  background-color: #ff6600; }

/**
       * `color` #ff9900-50 color utility.
       */
.color-orange-50 {
  color: #ff9900; }

/**
       * `background-color` #ff9900-50 color utility.
       */
.background-color-orange-50 {
  background-color: #ff9900; }

/**
       * `color` #5da32e-100 color utility.
       */
.color-green-100 {
  color: #5da32e; }

/**
       * `background-color` #5da32e-100 color utility.
       */
.background-color-green-100 {
  background-color: #5da32e; }

/**
       * `color` #00cc00-50 color utility.
       */
.color-green-50 {
  color: #00cc00; }

/**
       * `background-color` #00cc00-50 color utility.
       */
.background-color-green-50 {
  background-color: #00cc00; }

/**
       * `color` #ff0066-100 color utility.
       */
.color-pink-100 {
  color: #ff0066; }

/**
       * `background-color` #ff0066-100 color utility.
       */
.background-color-pink-100 {
  background-color: #ff0066; }

/* ==========================================================================
   Object Fit
   ========================================================================== */
/**
 * Object fit.
 *
 * 1. Font family polyfill with (https://github.com/bfred-it/object-fit-images).
 */
/**
   * `object-fit` fill utility class.
   */
.fill {
  font-family: "object-fit: fill;";
  /* 1 */
  -o-object-fit: fill;
     object-fit: fill; }

/**
   * `object-fit` contain utility class.
   */
.contain {
  font-family: "object-fit: contain;";
  /* 1 */
  -o-object-fit: contain;
     object-fit: contain; }

/**
   * `object-fit` cover utility class.
   */
.cover {
  font-family: "object-fit: cover;";
  /* 1 */
  -o-object-fit: cover;
     object-fit: cover; }

/**
   * `object-fit` none utility class.
   */
.none {
  font-family: "object-fit: none;";
  /* 1 */
  -o-object-fit: none;
     object-fit: none; }

/**
   * `object-fit` scale-down utility class.
   */
.scale-down {
  font-family: "object-fit: scale-down;";
  /* 1 */
  -o-object-fit: scale-down;
     object-fit: scale-down; }

/* ==========================================================================
   Position
   ========================================================================== */
/**
 * Position utility class.
 */
.static {
  position: static; }

.relative {
  position: relative; }

.absolute {
  position: absolute; }

.fixed {
  position: fixed; }

.sticky {
  position: -webkit-sticky;
  position: sticky; }

/* ==========================================================================
   Text
   ========================================================================== */
/**
 * Font family utility classes.
 */
.text-xs-default {
  font-family: "Montserrat"; }

.text-sm-default {
  font-family: "Montserrat"; }

.text-md-default {
  font-family: "Montserrat"; }

.text-lg-default {
  font-family: "Montserrat"; }

.text-xl-default {
  font-family: "Montserrat"; }

/**
 * Text size utility classes.
 */
.text-xs-h1 {
  font-size: 45px;
  font-size: 4.5rem;
  line-height: 1.55556em; }

.text-xs-h2 {
  font-size: 33px;
  font-size: 3.3rem;
  line-height: 1.21212em; }

.text-xs-h3 {
  font-size: 30px;
  font-size: 3rem;
  line-height: 1.23333em; }

.text-xs-h4 {
  font-size: 22px;
  font-size: 2.2rem;
  line-height: 1.45455em; }

.text-xs-h5 {
  font-size: 20px;
  font-size: 2rem;
  line-height: 1.6em; }

.text-xs-h6 {
  font-size: 18px;
  font-size: 1.8rem;
  line-height: 1.77778em; }

.text-xs-p {
  font-size: 15px;
  font-size: 1.5rem;
  line-height: 2em; }

.text-sm-h1 {
  font-size: 45px;
  font-size: 4.5rem;
  line-height: 1.55556em; }

.text-sm-h2 {
  font-size: 33px;
  font-size: 3.3rem;
  line-height: 1.21212em; }

.text-sm-h3 {
  font-size: 30px;
  font-size: 3rem;
  line-height: 1.23333em; }

.text-sm-h4 {
  font-size: 22px;
  font-size: 2.2rem;
  line-height: 1.45455em; }

.text-sm-h5 {
  font-size: 20px;
  font-size: 2rem;
  line-height: 1.6em; }

.text-sm-h6 {
  font-size: 18px;
  font-size: 1.8rem;
  line-height: 1.77778em; }

.text-sm-p {
  font-size: 15px;
  font-size: 1.5rem;
  line-height: 2em; }

.text-md-h1 {
  font-size: 45px;
  font-size: 4.5rem;
  line-height: 1.55556em; }

.text-md-h2 {
  font-size: 33px;
  font-size: 3.3rem;
  line-height: 1.21212em; }

.text-md-h3 {
  font-size: 30px;
  font-size: 3rem;
  line-height: 1.23333em; }

.text-md-h4 {
  font-size: 22px;
  font-size: 2.2rem;
  line-height: 1.45455em; }

.text-md-h5 {
  font-size: 20px;
  font-size: 2rem;
  line-height: 1.6em; }

.text-md-h6 {
  font-size: 18px;
  font-size: 1.8rem;
  line-height: 1.77778em; }

.text-md-p {
  font-size: 15px;
  font-size: 1.5rem;
  line-height: 2em; }

.text-lg-h1 {
  font-size: 45px;
  font-size: 4.5rem;
  line-height: 1.55556em; }

.text-lg-h2 {
  font-size: 33px;
  font-size: 3.3rem;
  line-height: 1.21212em; }

.text-lg-h3 {
  font-size: 30px;
  font-size: 3rem;
  line-height: 1.23333em; }

.text-lg-h4 {
  font-size: 22px;
  font-size: 2.2rem;
  line-height: 1.45455em; }

.text-lg-h5 {
  font-size: 20px;
  font-size: 2rem;
  line-height: 1.6em; }

.text-lg-h6 {
  font-size: 18px;
  font-size: 1.8rem;
  line-height: 1.77778em; }

.text-lg-p {
  font-size: 15px;
  font-size: 1.5rem;
  line-height: 2em; }

.text-xl-h1 {
  font-size: 45px;
  font-size: 4.5rem;
  line-height: 1.55556em; }

.text-xl-h2 {
  font-size: 33px;
  font-size: 3.3rem;
  line-height: 1.21212em; }

.text-xl-h3 {
  font-size: 30px;
  font-size: 3rem;
  line-height: 1.23333em; }

.text-xl-h4 {
  font-size: 22px;
  font-size: 2.2rem;
  line-height: 1.45455em; }

.text-xl-h5 {
  font-size: 20px;
  font-size: 2rem;
  line-height: 1.6em; }

.text-xl-h6 {
  font-size: 18px;
  font-size: 1.8rem;
  line-height: 1.77778em; }

.text-xl-p {
  font-size: 15px;
  font-size: 1.5rem;
  line-height: 2em; }

/**
 * Text alignment utility classes.
 */
.text-xs-left {
  text-align: left; }

.text-xs-right {
  text-align: right; }

.text-xs-center {
  text-align: center; }

.text-sm-left {
  text-align: left; }

.text-sm-right {
  text-align: right; }

.text-sm-center {
  text-align: center; }

.text-md-left {
  text-align: left; }

.text-md-right {
  text-align: right; }

.text-md-center {
  text-align: center; }

.text-lg-left {
  text-align: left; }

.text-lg-right {
  text-align: right; }

.text-lg-center {
  text-align: center; }

.text-xl-left {
  text-align: left; }

.text-xl-right {
  text-align: right; }

.text-xl-center {
  text-align: center; }

/**
 * Font weight utility classes.
 *
 * 1. Multiply looped integer by 100 for correct font weight value.
 */
.text-xs-100 {
  font-weight: 100; }

.text-xs-200 {
  font-weight: 200; }

.text-xs-300 {
  font-weight: 300; }

.text-xs-400 {
  font-weight: 400; }

.text-xs-500 {
  font-weight: 500; }

.text-xs-600 {
  font-weight: 600; }

.text-xs-700 {
  font-weight: 700; }

.text-xs-800 {
  font-weight: 800; }

.text-xs-900 {
  font-weight: 900; }

.text-sm-100 {
  font-weight: 100; }

.text-sm-200 {
  font-weight: 200; }

.text-sm-300 {
  font-weight: 300; }

.text-sm-400 {
  font-weight: 400; }

.text-sm-500 {
  font-weight: 500; }

.text-sm-600 {
  font-weight: 600; }

.text-sm-700 {
  font-weight: 700; }

.text-sm-800 {
  font-weight: 800; }

.text-sm-900 {
  font-weight: 900; }

.text-md-100 {
  font-weight: 100; }

.text-md-200 {
  font-weight: 200; }

.text-md-300 {
  font-weight: 300; }

.text-md-400 {
  font-weight: 400; }

.text-md-500 {
  font-weight: 500; }

.text-md-600 {
  font-weight: 600; }

.text-md-700 {
  font-weight: 700; }

.text-md-800 {
  font-weight: 800; }

.text-md-900 {
  font-weight: 900; }

.text-lg-100 {
  font-weight: 100; }

.text-lg-200 {
  font-weight: 200; }

.text-lg-300 {
  font-weight: 300; }

.text-lg-400 {
  font-weight: 400; }

.text-lg-500 {
  font-weight: 500; }

.text-lg-600 {
  font-weight: 600; }

.text-lg-700 {
  font-weight: 700; }

.text-lg-800 {
  font-weight: 800; }

.text-lg-900 {
  font-weight: 900; }

.text-xl-100 {
  font-weight: 100; }

.text-xl-200 {
  font-weight: 200; }

.text-xl-300 {
  font-weight: 300; }

.text-xl-400 {
  font-weight: 400; }

.text-xl-500 {
  font-weight: 500; }

.text-xl-600 {
  font-weight: 600; }

.text-xl-700 {
  font-weight: 700; }

.text-xl-800 {
  font-weight: 800; }

.text-xl-900 {
  font-weight: 900; }

/**
 * Text transform uitlity classes.
 */
.text-xs-capitalize {
  text-transform: capitalize; }

.text-xs-uppercase {
  text-transform: uppercase; }

.text-xs-lowercase {
  text-transform: lowercase; }

.text-xs-none {
  text-transform: none; }

.text-xs-full-width {
  text-transform: full-width; }

.text-sm-capitalize {
  text-transform: capitalize; }

.text-sm-uppercase {
  text-transform: uppercase; }

.text-sm-lowercase {
  text-transform: lowercase; }

.text-sm-none {
  text-transform: none; }

.text-sm-full-width {
  text-transform: full-width; }

.text-md-capitalize {
  text-transform: capitalize; }

.text-md-uppercase {
  text-transform: uppercase; }

.text-md-lowercase {
  text-transform: lowercase; }

.text-md-none {
  text-transform: none; }

.text-md-full-width {
  text-transform: full-width; }

.text-lg-capitalize {
  text-transform: capitalize; }

.text-lg-uppercase {
  text-transform: uppercase; }

.text-lg-lowercase {
  text-transform: lowercase; }

.text-lg-none {
  text-transform: none; }

.text-lg-full-width {
  text-transform: full-width; }

.text-xl-capitalize {
  text-transform: capitalize; }

.text-xl-uppercase {
  text-transform: uppercase; }

.text-xl-lowercase {
  text-transform: lowercase; }

.text-xl-none {
  text-transform: none; }

.text-xl-full-width {
  text-transform: full-width; }

/* ==========================================================================
   Vertical Rhythm
   ========================================================================== */
.vr-0 {
  margin-bottom: 0px; }

.vr-8 {
  margin-bottom: 8px; }

.vr-16 {
  margin-bottom: 16px; }

.vr-24 {
  margin-bottom: 24px; }

.vr-32 {
  margin-bottom: 32px; }

.vr-40 {
  margin-bottom: 40px; }

.vr-48 {
  margin-bottom: 48px; }

.vr-56 {
  margin-bottom: 56px; }

.vr-64 {
  margin-bottom: 64px; }

.vr-72 {
  margin-bottom: 72px; }

.vr-80 {
  margin-bottom: 80px; }

/* ==========================================================================
   Z-index
   ========================================================================== */
/**
 * Utility classes for manipulating stacking order in HTML.
 */
.z-index-0 {
  z-index: 0; }

.z-index-1 {
  z-index: 10; }

.z-index-2 {
  z-index: 20; }

.z-index-3 {
  z-index: 30; }

.z-index-4 {
  z-index: 40; }

.z-index-5 {
  z-index: 50; }

.z-index-6 {
  z-index: 60; }

.z-index-7 {
  z-index: 70; }

.z-index-8 {
  z-index: 80; }

.z-index-9 {
  z-index: 90; }

.z-index-10 {
  z-index: 100; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUuY3NzL25vcm1hbGl6ZS5jc3MiLCJtYWluLmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vd2wuY2Fyb3VzZWwvc3JjL3Njc3MvX2NvcmUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vd2wuY2Fyb3VzZWwvc3JjL3Njc3MvX2FuaW1hdGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vd2wuY2Fyb3VzZWwvc3JjL3Njc3MvX2F1dG9oZWlnaHQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vd2wuY2Fyb3VzZWwvc3JjL3Njc3MvX2xhenlsb2FkLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvb3dsLmNhcm91c2VsL3NyYy9zY3NzL192aWRlby5zY3NzIiwiZ2VuZXJpYy9fYmFzZS5zY3NzIiwidG9vbHMvX21peGlucy5zY3NzIiwic2V0dGluZ3MvX3R5cG9ncmFwaHkuc2NzcyIsInRvb2xzL19mdW5jdGlvbnMuc2NzcyIsInNldHRpbmdzL19jb2xvci5zY3NzIiwiZ2VuZXJpYy9fcmVzZXQuc2NzcyIsIm9iamVjdHMvX2J1dHRvbnMuc2NzcyIsIm9iamVjdHMvX2NvbnRhaW5lci5zY3NzIiwic2V0dGluZ3MvX2RlZmluaXRpb25zLnNjc3MiLCJvYmplY3RzL19jb250ZW50LWNvbnN0cmFpbnQuc2NzcyIsIm9iamVjdHMvX2ZsZXguc2NzcyIsIm9iamVjdHMvX2hlYWRpbmcuc2NzcyIsIm9iamVjdHMvX2xpbmtzLnNjc3MiLCJvYmplY3RzL19zZWN0aW9uLnNjc3MiLCJvYmplY3RzL190YWdzLnNjc3MiLCJvYmplY3RzL193cmFwcGVyLnNjc3MiLCJjb21wb25lbnRzL19jbXMtb3V0cHV0LnNjc3MiLCJjb21wb25lbnRzL19jb250ZW50LWRlZmF1bHQuc2NzcyIsImNvbXBvbmVudHMvX2NvbnRlbnQtc3VibWVudS5zY3NzIiwiY29tcG9uZW50cy9fZm9vdGVyLnNjc3MiLCJjb21wb25lbnRzL19mb3JtLnNjc3MiLCJjb21wb25lbnRzL19oZWFkZXIuc2NzcyIsImNvbXBvbmVudHMvX21haW4tbWVudS5zY3NzIiwiY29tcG9uZW50cy9fbmF2aWdhdGlvbi1ibG9ja3Muc2NzcyIsImNvbXBvbmVudHMvX25ld3MtbGlzdC5zY3NzIiwiY29tcG9uZW50cy9fbmV3cy1zaW5nbGUuc2NzcyIsImNvbXBvbmVudHMvX3BhZ2UtaGVhZGVyLnNjc3MiLCJjb21wb25lbnRzL19wYWdpbmF0aW9uLnNjc3MiLCJjb21wb25lbnRzL19zZWFyY2gtZm9ybS5zY3NzIiwiY29tcG9uZW50cy9fc2VhcmNoLXJlc3VsdHMuc2NzcyIsImNvbXBvbmVudHMvX3N1Ym1lbnUuc2NzcyIsImNvbXBvbmVudHMvX3RlYXNlcnMuc2NzcyIsImNvbXBvbmVudHMvX3RlbXBsYXRlLWRlZmF1bHQuc2NzcyIsImNvbXBvbmVudHMvX3dwbWwuc2NzcyIsImNvbXBvbmVudHMvX2xvZ28tc2xpZGVyLnNjc3MiLCJ1dGlsaXRpZXMvX2NvbG9yLnNjc3MiLCJ1dGlsaXRpZXMvX29iamVjdC1maXQuc2NzcyIsInV0aWxpdGllcy9fcG9zaXRpb24uc2NzcyIsInV0aWxpdGllcy9fdGV4dC5zY3NzIiwidXRpbGl0aWVzL192ZXJ0aWNhbC1yaHl0aG0uc2NzcyIsInV0aWxpdGllcy9fei1pbmRleC5zY3NzIiwic2V0dGluZ3MvX3otaW5kZXguc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0RUFBNEU7QUFFNUU7Z0ZBQ2dGO0FBRWhGOzs7R0FHRztBQUVIO0VBQ0Usa0JBQWlCO0VBQUUsT0FBTztFQUMxQiwrQkFBOEI7RUFBRSxPQUFPLEVBQ3hDOztBQUVEO2dGQUNnRjtBQUVoRjs7R0FFRztBQUVIO0VBQ0UsVUFBUyxFQUNWOztBQUVEOztHQUVHO0FBRUg7RUFDRSxlQUFjLEVBQ2Y7O0FBRUQ7OztHQUdHO0FBRUg7RUFDRSxlQUFjO0VBQ2QsaUJBQWdCLEVBQ2pCOztBQUVEO2dGQUNnRjtBQUVoRjs7O0dBR0c7QUFFSDtFQUNFLHdCQUF1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QnRCbEU2QixFc0I0RTlCO0lBdEZIO01BK0VNLG9CdEJyRTJCLEVzQjJFNUI7TUFyRkw7UUFtRlEsb0J0QnpFeUIsRXNCMEUxQjtFQXBGUDtJQTJGSSwrQnRCN0U2QjtJc0I4RTdCLG9CdEJsRjZCLEVzQjhGOUI7SUF4R0g7O01BZ0dNLG9CdEIvRTJCO01zQmdGM0IsYXRCbkd1QixFc0J5R3hCO01BdkdMOzs7UUFxR1Esb0J0QnBGeUIsRXNCcUYxQjtFQXRHUDtJQTZHSSwrQnRCbkc2QjtJc0JvRzdCLG9CdEIxRjZCLEVzQm9HOUI7SUF4SEg7TUFpSE0sb0J0QjdGMkIsRXNCbUc1QjtNQXZITDtRQXFIUSxvQnRCakd5QixFc0JrRzFCO0VBdEhQO0lBNkhJLCtCdEJuSDZCO0lzQm9IN0Isb0J0QnpHNEIsRXNCbUg3QjtJQXhJSDtNQWlJTSxvQnRCNUcwQixFc0JrSDNCO01BdklMO1FBcUlRLG9CdEJoSHdCLEVzQmlIekI7RUF0SVA7SUE2SUksK0J0Qi9INkI7SXNCZ0k3QixvQnRCbkk0QixFc0I2STdCO0lBeEpIO01BaUpNLG9CdEJ0STBCLEVzQjRJM0I7TUF2Skw7UUFxSlEsb0J0QjFJd0IsRXNCMkl6QjtFQXRKUDtJQTZKSSwrQnRCbko2QjtJc0JvSjdCLG9CdEJ0STRCLEVzQmdKN0I7SUF4S0g7TUFpS00sb0J0QnpJMEIsRXNCK0kzQjtNQXZLTDtRQXFLUSxvQnRCN0l3QixFc0I4SXpCO0VBdEtQO0lBNktJLCtCdEIvSjZCO0lzQmdLN0Isb0J0QnJKNkIsRXNCK0o5QjtJQXhMSDtNQWlMTSxvQnRCeEoyQixFc0I4SjVCO01BdkxMO1FBcUxRLG9CdEI1SnlCLEVzQjZKMUI7RUF0TFA7SUE2TEksK0J0QmpLOEI7SXNCa0s5QixvQnRCbEs4QixFc0I0Sy9CO0lBeE1IO01BaU1NLG9CdEJySzRCLEVzQjJLN0I7TUF2TUw7UUFxTVEsb0J0QnpLMEIsRXNCMEszQjtFekJyQ0g7SXlCaktKO01BK01RLGlCQUFnQixFQUVuQixFQUFBO0VBak5MO0lBc05HLGlCQUFnQixFQUNoQjtFQXZOSDtJQW1QTSxXQUFV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QUVIO0VBQ0UsYS9CZHVCLEUrQmV4Qjs7QUFORDs7U0FFRztBQUVIO0VBQ0Usd0IvQmR1QixFK0JleEI7O0FBTkQ7O1NBRUc7QUFFSDtFQUNFLGUvQmJzQixFK0JjdkI7O0FBTkQ7O1NBRUc7QUFFSDtFQUNFLDBCL0Jic0IsRStCY3ZCOztBQU5EOztTQUVHO0FBRUg7RUFDRSxlL0JWd0IsRStCV3pCOztBQU5EOztTQUVHO0FBRUg7RUFDRSwwQi9CVndCLEUrQld6Qjs7QUFORDs7U0FFRztBQUVIO0VBQ0UsZS9CUHlCLEUrQlExQjs7QUFORDs7U0FFRztBQUVIO0VBQ0UsMEIvQlB5QixFK0JRMUI7O0FBTkQ7O1NBRUc7QUFFSDtFQUNFLGUvQk53QixFK0JPekI7O0FBTkQ7O1NBRUc7QUFFSDtFQUNFLDBCL0JOd0IsRStCT3pCOztBQU5EOztTQUVHO0FBRUg7RUFDRSxlL0JIeUIsRStCSTFCOztBQU5EOztTQUVHO0FBRUg7RUFDRSwwQi9CSHlCLEUrQkkxQjs7QUFORDs7U0FFRztBQUVIO0VBQ0UsZS9CQXlCLEUrQkMxQjs7QUFORDs7U0FFRztBQUVIO0VBQ0UsMEIvQkF5QixFK0JDMUI7O0FBTkQ7O1NBRUc7QUFFSDtFQUNFLGUvQkd5QixFK0JGMUI7O0FBTkQ7O1NBRUc7QUFFSDtFQUNFLDBCL0JHeUIsRStCRjFCOztBQU5EOztTQUVHO0FBRUg7RUFDRSxlL0JJd0IsRStCSHpCOztBQU5EOztTQUVHO0FBRUg7RUFDRSwwQi9CSXdCLEUrQkh6Qjs7QUFORDs7U0FFRztBQUVIO0VBQ0UsZS9CT3dCLEUrQk56Qjs7QUFORDs7U0FFRztBQUVIO0VBQ0UsMEIvQk93QixFK0JOekI7O0FBTkQ7O1NBRUc7QUFFSDtFQUNFLGUvQlF5QixFK0JQMUI7O0FBTkQ7O1NBRUc7QUFFSDtFQUNFLDBCL0JReUIsRStCUDFCOztBQU5EOztTQUVHO0FBRUg7RUFDRSxlL0JXMEIsRStCVjNCOztBQU5EOztTQUVHO0FBRUg7RUFDRSwwQi9CVzBCLEUrQlYzQjs7QUMzQlA7O2dGQUVnRjtBQUVoRjs7OztHQUlHO0FBS0Q7O0tBRUc7QUFFSDtFQUNFLGlDQUFxQztFQUFFLE9BQU87RUFDOUMsb0JBQVk7S0FBWixpQkFBWSxFQUNiOztBQVBEOztLQUVHO0FBRUg7RUFDRSxvQ0FBcUM7RUFBRSxPQUFPO0VBQzlDLHVCQUFZO0tBQVosb0JBQVksRUFDYjs7QUFQRDs7S0FFRztBQUVIO0VBQ0Usa0NBQXFDO0VBQUUsT0FBTztFQUM5QyxxQkFBWTtLQUFaLGtCQUFZLEVBQ2I7O0FBUEQ7O0tBRUc7QUFFSDtFQUNFLGlDQUFxQztFQUFFLE9BQU87RUFDOUMsb0JBQVk7S0FBWixpQkFBWSxFQUNiOztBQVBEOztLQUVHO0FBRUg7RUFDRSx1Q0FBcUM7RUFBRSxPQUFPO0VBQzlDLDBCQUFZO0tBQVosdUJBQVksRUFDYjs7QUNwQkg7O2dGQUVnRjtBQUVoRjs7R0FFRztBQUdEO0VBQ0UsaUJBRmtCLEVBR25COztBQUZEO0VBQ0UsbUJBRjRCLEVBRzdCOztBQUZEO0VBQ0UsbUJBRnNDLEVBR3ZDOztBQUZEO0VBQ0UsZ0JBRjZDLEVBRzlDOztBQUZEO0VBQ0UseUJBRnFEO0VBRXJELGlCQUZxRCxFQUd0RDs7QUNYSDs7Z0ZBRWdGO0FBRWhGOztHQUVHO0FBS0c7RUFDRSwwQnBDTmlCLEVvQ09sQjs7QUFGRDtFQUNFLDBCcENOaUIsRW9DT2xCOztBQUZEO0VBQ0UsMEJwQ05pQixFb0NPbEI7O0FBRkQ7RUFDRSwwQnBDTmlCLEVvQ09sQjs7QUFGRDtFQUNFLDBCcENOaUIsRW9DT2xCOztBQU1QOztHQUVHO0FBS0c7RXJDMEJGLGdCQ3hDUTtFRHlDUixrQkU5QitCO0VGbUMvQix1QkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDdkNRO0VEd0NSLGtCRTlCK0I7RUZtQy9CLHVCQUFnRCxFcUM5QjdDOztBQUZEO0VyQzBCRixnQkN0Q1E7RUR1Q1IsZ0JFOUIrQjtFRm1DL0IsdUJBQWdELEVxQzlCN0M7O0FBRkQ7RXJDMEJGLGdCQ3JDUTtFRHNDUixrQkU5QitCO0VGbUMvQix1QkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDcENRO0VEcUNSLGdCRTlCK0I7RUZtQy9CLG1CQUFnRCxFcUM5QjdDOztBQUZEO0VyQzBCRixnQkNuQ1E7RURvQ1Isa0JFOUIrQjtFRm1DL0IsdUJBQWdELEVxQzlCN0M7O0FBRkQ7RXJDMEJGLGdCQ2xDTztFRG1DUCxrQkU5QitCO0VGbUMvQixpQkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDeENRO0VEeUNSLGtCRTlCK0I7RUZtQy9CLHVCQUFnRCxFcUM5QjdDOztBQUZEO0VyQzBCRixnQkN2Q1E7RUR3Q1Isa0JFOUIrQjtFRm1DL0IsdUJBQWdELEVxQzlCN0M7O0FBRkQ7RXJDMEJGLGdCQ3RDUTtFRHVDUixnQkU5QitCO0VGbUMvQix1QkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDckNRO0VEc0NSLGtCRTlCK0I7RUZtQy9CLHVCQUFnRCxFcUM5QjdDOztBQUZEO0VyQzBCRixnQkNwQ1E7RURxQ1IsZ0JFOUIrQjtFRm1DL0IsbUJBQWdELEVxQzlCN0M7O0FBRkQ7RXJDMEJGLGdCQ25DUTtFRG9DUixrQkU5QitCO0VGbUMvQix1QkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDbENPO0VEbUNQLGtCRTlCK0I7RUZtQy9CLGlCQUFnRCxFcUM5QjdDOztBQUZEO0VyQzBCRixnQkN4Q1E7RUR5Q1Isa0JFOUIrQjtFRm1DL0IsdUJBQWdELEVxQzlCN0M7O0FBRkQ7RXJDMEJGLGdCQ3ZDUTtFRHdDUixrQkU5QitCO0VGbUMvQix1QkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDdENRO0VEdUNSLGdCRTlCK0I7RUZtQy9CLHVCQUFnRCxFcUM5QjdDOztBQUZEO0VyQzBCRixnQkNyQ1E7RURzQ1Isa0JFOUIrQjtFRm1DL0IsdUJBQWdELEVxQzlCN0M7O0FBRkQ7RXJDMEJGLGdCQ3BDUTtFRHFDUixnQkU5QitCO0VGbUMvQixtQkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDbkNRO0VEb0NSLGtCRTlCK0I7RUZtQy9CLHVCQUFnRCxFcUM5QjdDOztBQUZEO0VyQzBCRixnQkNsQ087RURtQ1Asa0JFOUIrQjtFRm1DL0IsaUJBQWdELEVxQzlCN0M7O0FBRkQ7RXJDMEJGLGdCQ3hDUTtFRHlDUixrQkU5QitCO0VGbUMvQix1QkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDdkNRO0VEd0NSLGtCRTlCK0I7RUZtQy9CLHVCQUFnRCxFcUM5QjdDOztBQUZEO0VyQzBCRixnQkN0Q1E7RUR1Q1IsZ0JFOUIrQjtFRm1DL0IsdUJBQWdELEVxQzlCN0M7O0FBRkQ7RXJDMEJGLGdCQ3JDUTtFRHNDUixrQkU5QitCO0VGbUMvQix1QkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDcENRO0VEcUNSLGdCRTlCK0I7RUZtQy9CLG1CQUFnRCxFcUM5QjdDOztBQUZEO0VyQzBCRixnQkNuQ1E7RURvQ1Isa0JFOUIrQjtFRm1DL0IsdUJBQWdELEVxQzlCN0M7O0FBRkQ7RXJDMEJGLGdCQ2xDTztFRG1DUCxrQkU5QitCO0VGbUMvQixpQkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDeENRO0VEeUNSLGtCRTlCK0I7RUZtQy9CLHVCQUFnRCxFcUM5QjdDOztBQUZEO0VyQzBCRixnQkN2Q1E7RUR3Q1Isa0JFOUIrQjtFRm1DL0IsdUJBQWdELEVxQzlCN0M7O0FBRkQ7RXJDMEJGLGdCQ3RDUTtFRHVDUixnQkU5QitCO0VGbUMvQix1QkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDckNRO0VEc0NSLGtCRTlCK0I7RUZtQy9CLHVCQUFnRCxFcUM5QjdDOztBQUZEO0VyQzBCRixnQkNwQ1E7RURxQ1IsZ0JFOUIrQjtFRm1DL0IsbUJBQWdELEVxQzlCN0M7O0FBRkQ7RXJDMEJGLGdCQ25DUTtFRG9DUixrQkU5QitCO0VGbUMvQix1QkFBZ0QsRXFDOUI3Qzs7QUFGRDtFckMwQkYsZ0JDbENPO0VEbUNQLGtCRTlCK0I7RUZtQy9CLGlCQUFnRCxFcUM5QjdDOztBQU1QOztHQUVHO0FBS0c7RUFDRSxpQkFGb0IsRUFHckI7O0FBRkQ7RUFDRSxrQkFGMkIsRUFHNUI7O0FBRkQ7RUFDRSxtQkFGbUMsRUFHcEM7O0FBRkQ7RUFDRSxpQkFGb0IsRUFHckI7O0FBRkQ7RUFDRSxrQkFGMkIsRUFHNUI7O0FBRkQ7RUFDRSxtQkFGbUMsRUFHcEM7O0FBRkQ7RUFDRSxpQkFGb0IsRUFHckI7O0FBRkQ7RUFDRSxrQkFGMkIsRUFHNUI7O0FBRkQ7RUFDRSxtQkFGbUMsRUFHcEM7O0FBRkQ7RUFDRSxpQkFGb0IsRUFHckI7O0FBRkQ7RUFDRSxrQkFGMkIsRUFHNUI7O0FBRkQ7RUFDRSxtQkFGbUMsRUFHcEM7O0FBRkQ7RUFDRSxpQkFGb0IsRUFHckI7O0FBRkQ7RUFDRSxrQkFGMkIsRUFHNUI7O0FBRkQ7RUFDRSxtQkFGbUMsRUFHcEM7O0FBTVA7Ozs7R0FJRztBQU9HO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQUZEO0VBQ0UsaUJBQWEsRUFDZDs7QUFGRDtFQUNFLGlCQUFhLEVBQ2Q7O0FBRkQ7RUFDRSxpQkFBYSxFQUNkOztBQU1QOztHQUVHO0FBS0c7RUFDRSwyQkFGMEIsRUFHM0I7O0FBRkQ7RUFDRSwwQkFGcUMsRUFHdEM7O0FBRkQ7RUFDRSwwQkFGZ0QsRUFHakQ7O0FBRkQ7RUFDRSxxQkFGc0QsRUFHdkQ7O0FBRkQ7RUFDRSwyQkFGa0UsRUFHbkU7O0FBRkQ7RUFDRSwyQkFGMEIsRUFHM0I7O0FBRkQ7RUFDRSwwQkFGcUMsRUFHdEM7O0FBRkQ7RUFDRSwwQkFGZ0QsRUFHakQ7O0FBRkQ7RUFDRSxxQkFGc0QsRUFHdkQ7O0FBRkQ7RUFDRSwyQkFGa0UsRUFHbkU7O0FBRkQ7RUFDRSwyQkFGMEIsRUFHM0I7O0FBRkQ7RUFDRSwwQkFGcUMsRUFHdEM7O0FBRkQ7RUFDRSwwQkFGZ0QsRUFHakQ7O0FBRkQ7RUFDRSxxQkFGc0QsRUFHdkQ7O0FBRkQ7RUFDRSwyQkFGa0UsRUFHbkU7O0FBRkQ7RUFDRSwyQkFGMEIsRUFHM0I7O0FBRkQ7RUFDRSwwQkFGcUMsRUFHdEM7O0FBRkQ7RUFDRSwwQkFGZ0QsRUFHakQ7O0FBRkQ7RUFDRSxxQkFGc0QsRUFHdkQ7O0FBRkQ7RUFDRSwyQkFGa0UsRUFHbkU7O0FBRkQ7RUFDRSwyQkFGMEIsRUFHM0I7O0FBRkQ7RUFDRSwwQkFGcUMsRUFHdEM7O0FBRkQ7RUFDRSwwQkFGZ0QsRUFHakQ7O0FBRkQ7RUFDRSxxQkFGc0QsRUFHdkQ7O0FBRkQ7RUFDRSwyQkFGa0UsRUFHbkU7O0FDN0VQOztnRkFFZ0Y7QUFLOUU7RUFDRSxtQkFBZSxFQUNoQjs7QUFGRDtFQUNFLG1CQUFlLEVBQ2hCOztBQUZEO0VBQ0Usb0JBQWUsRUFDaEI7O0FBRkQ7RUFDRSxvQkFBZSxFQUNoQjs7QUFGRDtFQUNFLG9CQUFlLEVBQ2hCOztBQUZEO0VBQ0Usb0JBQWUsRUFDaEI7O0FBRkQ7RUFDRSxvQkFBZSxFQUNoQjs7QUFGRDtFQUNFLG9CQUFlLEVBQ2hCOztBQUZEO0VBQ0Usb0JBQWUsRUFDaEI7O0FBRkQ7RUFDRSxvQkFBZSxFQUNoQjs7QUFGRDtFQUNFLG9CQUFlLEVBQ2hCOztBQ1RIOztnRkFFZ0Y7QUFFaEY7O0dBRUc7QUFHRDtFQUNFLFdDRkssRURHTjs7QUFGRDtFQUNFLFlDRE0sRURFUDs7QUFGRDtFQUNFLFlDQU0sRURDUDs7QUFGRDtFQUNFLFlDQ00sRURBUDs7QUFGRDtFQUNFLFlDRU0sRUREUDs7QUFGRDtFQUNFLFlDR00sRURGUDs7QUFGRDtFQUNFLFlDSU0sRURIUDs7QUFGRDtFQUNFLFlDS00sRURKUDs7QUFGRDtFQUNFLFlDTU0sRURMUDs7QUFGRDtFQUNFLFlDT00sRUROUDs7QUFGRDtFQUNFLGFDUU8sRURQUiIsImZpbGUiOiJtYWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qISBub3JtYWxpemUuY3NzIHY4LjAuMSB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuLyogRG9jdW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG4gKi9cblxuaHRtbCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKiBTZWN0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyoqXG4gKiBSZW5kZXIgdGhlIGBtYWluYCBlbGVtZW50IGNvbnNpc3RlbnRseSBpbiBJRS5cbiAqL1xuXG5tYWluIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cbiAqL1xuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwO1xufVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAqL1xuXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAxICovXG4gIGhlaWdodDogMDsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTsgLyogMiAqL1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxucHJlIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIENocm9tZSA1Ny1cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gKi9cblxuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvKiAyICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLyogMiAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gKiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuICovXG5cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxMDAlOyAvKiAxICovXG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG4gIG1hcmdpbjogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCB7IC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHsgLyogMSAqL1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcblt0eXBlPVwiYnV0dG9uXCJdLFxuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cblxuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInJlc2V0XCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmZpZWxkc2V0IHtcbiAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgMTArLlxuICovXG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXG4gKi9cblxuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gKi9cblxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xufVxuXG4vKiBJbnRlcmFjdGl2ZVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFIDEwKywgYW5kIEZpcmVmb3guXG4gKi9cblxuZGV0YWlscyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07XG59XG5cbi8qIE1pc2NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxuICovXG5cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC5cbiAqL1xuXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjEgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG4vKiBEb2N1bWVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG4gKi9cbmh0bWwge1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgLyogMSAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC8qIDIgKi8gfVxuXG4vKiBTZWN0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzLlxuICovXG5ib2R5IHtcbiAgbWFyZ2luOiAwOyB9XG5cbi8qKlxuICogUmVuZGVyIHRoZSBgbWFpbmAgZWxlbWVudCBjb25zaXN0ZW50bHkgaW4gSUUuXG4gKi9cbm1haW4ge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gKi9cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7IH1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAvKiAxICovXG4gIGhlaWdodDogMDtcbiAgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xucHJlIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtO1xuICAvKiAyICovIH1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIENocm9tZSA1Ny1cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gKi9cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgLyogMSAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgLyogMiAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyOyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlOyB9XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gKiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtOyB9XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtOyB9XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAuXG4gKi9cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTsgfVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgLyogMSAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cbiAqL1xuYnV0dG9uLFxuaW5wdXQge1xuICAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyB9XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG4gKi9cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIC8qIDEgKi9cbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5idXR0b24sXG5bdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyB9XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7IH1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0OyB9XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5maWVsZHNldCB7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTsgfVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAqL1xubGVnZW5kIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBjb2xvcjogaW5oZXJpdDtcbiAgLyogMiAqL1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgLyogMSAqL1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIC8qIDEgKi9cbiAgcGFkZGluZzogMDtcbiAgLyogMyAqL1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAvKiAxICovIH1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgMTArLlxuICovXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXG4gKi9cblt0eXBlPVwiY2hlY2tib3hcIl0sXG5bdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gKi9cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICAvKiAxICovXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4gKi9cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7XG4gIC8qIDIgKi8gfVxuXG4vKiBJbnRlcmFjdGl2ZVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxuICovXG5kZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cbiAqL1xuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgfVxuXG4vKiBNaXNjXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG4gKi9cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxuICovXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLypcbiAqICBPd2wgQ2Fyb3VzZWwgLSBDb3JlXG4gKi9cbi5vd2wtY2Fyb3VzZWwge1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLyogcG9zaXRpb24gcmVsYXRpdmUgYW5kIHotaW5kZXggZml4IHdlYmtpdCByZW5kZXJpbmcgZm9udHMgaXNzdWUgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxOyB9XG4gIC5vd2wtY2Fyb3VzZWwgLm93bC1zdGFnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC1tcy10b3VjaC1hY3Rpb246IHBhbi1ZO1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIC1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIC8qIGZpeCBmaXJlZm94IGFuaW1hdGlvbiBnbGl0Y2ggKi8gfVxuICAub3dsLWNhcm91c2VsIC5vd2wtc3RhZ2U6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiLlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICBoZWlnaHQ6IDA7IH1cbiAgLm93bC1jYXJvdXNlbCAub3dsLXN0YWdlLW91dGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAvKiBmaXggZm9yIGZsYXNoaW5nIGJhY2tncm91bmQgKi9cbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweCk7IH1cbiAgLm93bC1jYXJvdXNlbCAub3dsLXdyYXBwZXIsXG4gIC5vd2wtY2Fyb3VzZWwgLm93bC1pdGVtIHtcbiAgICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAtbW96LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAtbXMtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7IH1cbiAgLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtaW4taGVpZ2h0OiAxcHg7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7IH1cbiAgLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gaW1nIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTsgfVxuICAub3dsLWNhcm91c2VsIC5vd2wtbmF2LmRpc2FibGVkLFxuICAub3dsLWNhcm91c2VsIC5vd2wtZG90cy5kaXNhYmxlZCB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuICAub3dsLWNhcm91c2VsIC5vd2wtbmF2IC5vd2wtcHJldixcbiAgLm93bC1jYXJvdXNlbCAub3dsLW5hdiAub3dsLW5leHQsXG4gIC5vd2wtY2Fyb3VzZWwgLm93bC1kb3Qge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuICAub3dsLWNhcm91c2VsIC5vd2wtbmF2IGJ1dHRvbi5vd2wtcHJldixcbiAgLm93bC1jYXJvdXNlbCAub3dsLW5hdiBidXR0b24ub3dsLW5leHQsXG4gIC5vd2wtY2Fyb3VzZWwgYnV0dG9uLm93bC1kb3Qge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBmb250OiBpbmhlcml0OyB9XG4gIC5vd2wtY2Fyb3VzZWwub3dsLWxvYWRlZCB7XG4gICAgZGlzcGxheTogYmxvY2s7IH1cbiAgLm93bC1jYXJvdXNlbC5vd2wtbG9hZGluZyB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBkaXNwbGF5OiBibG9jazsgfVxuICAub3dsLWNhcm91c2VsLm93bC1oaWRkZW4ge1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgLm93bC1jYXJvdXNlbC5vd2wtcmVmcmVzaCAub3dsLWl0ZW0ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICAub3dsLWNhcm91c2VsLm93bC1kcmFnIC5vd2wtaXRlbSB7XG4gICAgdG91Y2gtYWN0aW9uOiBwYW4teTtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lOyB9XG4gIC5vd2wtY2Fyb3VzZWwub3dsLWdyYWIge1xuICAgIGN1cnNvcjogbW92ZTtcbiAgICBjdXJzb3I6IGdyYWI7IH1cbiAgLm93bC1jYXJvdXNlbC5vd2wtcnRsIHtcbiAgICBkaXJlY3Rpb246IHJ0bDsgfVxuICAub3dsLWNhcm91c2VsLm93bC1ydGwgLm93bC1pdGVtIHtcbiAgICBmbG9hdDogcmlnaHQ7IH1cblxuLyogTm8gSnMgKi9cbi5uby1qcyAub3dsLWNhcm91c2VsIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLypcbiAqICBPd2wgQ2Fyb3VzZWwgLSBBbmltYXRlIFBsdWdpblxuICovXG4ub3dsLWNhcm91c2VsIC5hbmltYXRlZCB7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMG1zO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOyB9XG5cbi5vd2wtY2Fyb3VzZWwgLm93bC1hbmltYXRlZC1pbiB7XG4gIHotaW5kZXg6IDA7IH1cblxuLm93bC1jYXJvdXNlbCAub3dsLWFuaW1hdGVkLW91dCB7XG4gIHotaW5kZXg6IDE7IH1cblxuLm93bC1jYXJvdXNlbCAuZmFkZU91dCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0OyB9XG5cbkBrZXlmcmFtZXMgZmFkZU91dCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG4vKlxuICogXHRPd2wgQ2Fyb3VzZWwgLSBBdXRvIEhlaWdodCBQbHVnaW5cbiAqL1xuLm93bC1oZWlnaHQge1xuICB0cmFuc2l0aW9uOiBoZWlnaHQgNTAwbXMgZWFzZS1pbi1vdXQ7IH1cblxuLypcbiAqIFx0T3dsIENhcm91c2VsIC0gTGF6eSBMb2FkIFBsdWdpblxuICovXG4ub3dsLWNhcm91c2VsIC5vd2wtaXRlbSB7XG4gIC8qKlxuXHRcdFx0VGhpcyBpcyBpbnRyb2R1Y2VkIGR1ZSB0byBhIGJ1ZyBpbiBJRTExIHdoZXJlIGxhenkgbG9hZGluZyBjb21iaW5lZCB3aXRoIGF1dG9oZWlnaHQgcGx1Z2luIGNhdXNlcyBhIHdyb25nXG5cdFx0XHRjYWxjdWxhdGlvbiBvZiB0aGUgaGVpZ2h0IG9mIHRoZSBvd2wtaXRlbSB0aGF0IGJyZWFrcyBwYWdlIGxheW91dHNcblx0XHQgKi8gfVxuICAub3dsLWNhcm91c2VsIC5vd2wtaXRlbSAub3dsLWxhenkge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlOyB9XG4gIC5vd2wtY2Fyb3VzZWwgLm93bC1pdGVtIC5vd2wtbGF6eVtzcmNePVwiXCJdLCAub3dsLWNhcm91c2VsIC5vd2wtaXRlbSAub3dsLWxhenk6bm90KFtzcmNdKSB7XG4gICAgbWF4LWhlaWdodDogMDsgfVxuICAub3dsLWNhcm91c2VsIC5vd2wtaXRlbSBpbWcub3dsLWxhenkge1xuICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7IH1cblxuLypcbiAqIFx0T3dsIENhcm91c2VsIC0gVmlkZW8gUGx1Z2luXG4gKi9cbi5vd2wtY2Fyb3VzZWwgLm93bC12aWRlby13cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICMwMDA7IH1cblxuLm93bC1jYXJvdXNlbCAub3dsLXZpZGVvLXBsYXktaWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiA4MHB4O1xuICB3aWR0aDogODBweDtcbiAgbGVmdDogNTAlO1xuICB0b3A6IDUwJTtcbiAgbWFyZ2luLWxlZnQ6IC00MHB4O1xuICBtYXJnaW4tdG9wOiAtNDBweDtcbiAgYmFja2dyb3VuZDogdXJsKFwib3dsLnZpZGVvLnBsYXkucG5nXCIpIG5vLXJlcGVhdDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB6LWluZGV4OiAxO1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDEwMG1zIGVhc2U7IH1cblxuLm93bC1jYXJvdXNlbCAub3dsLXZpZGVvLXBsYXktaWNvbjpob3ZlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4zLCAxLjMpOyB9XG5cbi5vd2wtY2Fyb3VzZWwgLm93bC12aWRlby1wbGF5aW5nIC5vd2wtdmlkZW8tdG4sXG4ub3dsLWNhcm91c2VsIC5vd2wtdmlkZW8tcGxheWluZyAub3dsLXZpZGVvLXBsYXktaWNvbiB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLm93bC1jYXJvdXNlbCAub3dsLXZpZGVvLXRuIHtcbiAgb3BhY2l0eTogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgNDAwbXMgZWFzZTsgfVxuXG4ub3dsLWNhcm91c2VsIC5vd2wtdmlkZW8tZnJhbWUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQmFzZVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIFJlbW92ZSBtYXJnaW4gYW5kIHBhZGRpbmcgZnJvbSBldmVyeSBzZWxlY3RvciBpbmNsdWRpbmcgdGhlaXJcclxuICogcHN1ZWRvIHNlbGVjdG9ycy5cclxuICpcclxuICogMS4gTW9yZSBzZW5zaWJsZSBkZWZhdWx0IGJveCBzaXppbmcuXHJcbiAqICAgIChjc3MtdHJpY2tzLmNvbS9pbmhlcml0aW5nLWJveC1zaXppbmctcHJvYmFibHktc2xpZ2h0bHktYmV0dGVyLWJlc3QtcHJhY3RpY2UpLlxyXG4gKi9cbiosXG4qOjpiZWZvcmUsXG4qOjphZnRlciB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgLyogMSAqLyB9XG5cbi8qKlxyXG4gKiBTZXQgaGVpZ2h0IG9mIHRoZSBkb2N1bWVudCB0byBtYXhpdW0gdmlld3BvcnQgaGVpZ2h0LlxyXG4gKlxyXG4gKiAxLiBTZXQgcm9vdCBmb250IHNpemUgdG8gMTAuXHJcbiAqL1xuaHRtbCB7XG4gIGhlaWdodDogMTAwdmg7XG4gIGZvbnQtc2l6ZTogNjIuNSU7XG4gIC8qIDEgKi9cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4vKipcclxuICogU2V0IG1pbmltYWwgaGVpZ2h0IG9mIHRoZSBib2R5IHRvIG1heGltdW0gdmlld3BvcnQgaGVpZ2h0IHRvXHJcbiAqIG1hdGNoIHRoZSBkb2N1bWVudCdzIGhlaWdodC5cclxuICpcclxuICogMS4gRmlyZWZveCAyNSsuXHJcbiAqIDIuIENocm9tZSA1Ky5cclxuICovXG5ib2R5IHtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDJlbTtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMjUwbXMgZWFzZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGNvbG9yOiBibGFjaztcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiO1xuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuICBvcGFjaXR5OiAwO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAvKiAxICovXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAvKiAyICovIH1cbiAgYm9keS5pcy1sb2FkZWQge1xuICAgIG9wYWNpdHk6IDE7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgUmVzZXRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBDdXN0b20gdXNlciBhZ2VudCByZXNldHMgYW5kIG92ZXJyaWRlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBpblxyXG4gKiBOb3JtYWxpemUgOC4wLjAuIFRoaXMgbW9zdGx5IHJlbW92ZXMgc29tZSBhbm5veWluZyBtYXJnaW4gYW5kIHBhZGRpbmdcclxuICogZGVmYXVsdHMsIGJvcmRlciByYWRpdXMsIGFuZCBvdXRsaW5lcy5cclxuICovXG5hIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuXG4vKipcclxuICogMS4gUmVtb3ZlIGJvcmRlciByYWRpdXMgb24gQ2hyb21lIDYyLjArIG9uIG1hY09TLlxyXG4gKi9cbmJ1dHRvbiB7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgLyogMSAqL1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7IH1cblxuZmllbGRzZXQge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG5maWd1cmUge1xuICBtYXJnaW46IDA7IH1cblxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0OyB9XG5cbmhyIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbi8qKlxyXG4gKiAxLiBSZW1vdmUgd2hpdGUgc3BhY2UuXHJcbiAqL1xuaW1nIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIC8qIDEgKi8gfVxuXG4vKipcclxuICogMS4gUmVtb3ZlIGluaGVyaXRlZCB1c2VyIGFnZW50IGFwcGVhcmFuY2UuXHJcbiAqL1xuaW5wdXQsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBvdXRsaW5lOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICAvKiAxICovIH1cblxuLyoqXHJcbiAqIDEuIE9ubHkgYWxsb3cgdmVydGljYWwgcmVzaXppbmcgdG8gcHJldmVudCB0aGUgdGV4dGFyZWFcclxuICogICAgZnJvbSBvdmVyZmxvd2luZyB0aGUgY29udGFpbmVyLlxyXG4gKi9cbnRleHRhcmVhIHtcbiAgcmVzaXplOiB2ZXJ0aWNhbDsgfVxuXG51bCxcbm9sIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH1cblxucCB7XG4gIG1hcmdpbjogMDsgfVxuXG4vKipcclxuICogMS4gQ29sbGFwc2UgYm9yZGVycyB0byBwcmV2ZW50IGRvdWJsZSBzaWRlZCBib3JkZXJzLlxyXG4gKi9cbnRhYmxlIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAvKiAxICovIH1cblxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBCdXR0b25zXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogQnV0dG9uIGJhc2UuXHJcbiAqL1xuLmJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjI2NjY3ZW07XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjQycHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cbiAgLmJ1dHRvbiBzdmcge1xuICAgIHdpZHRoOiAxNXB4O1xuICAgIGhlaWdodDogMTVweDsgfVxuICAuYnV0dG9uLnN2Zy1yaWdodCBzdmcge1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4OyB9XG4gIC5idXR0b24uc3ZnLWxlZnQgc3ZnIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7IH1cblxuLyoqXHJcbiAqIEJ1dHRvbiBwcmltYXJ5IChyZWQpLlxyXG4gKi9cbi5idXR0b24tcHJpbWFyeS0tcmVkIHtcbiAgYmFja2dyb3VuZDogI2VlMWIzYjsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5idXR0b24tcHJpbWFyeS0tcmVkOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNjNzBmMmI7IH0gfVxuXG4vKipcclxuICogQnV0dG9uIHByaW1hcnkgKGJsdWUpLlxyXG4gKi9cbi5idXR0b24tcHJpbWFyeS0tYmx1ZSB7XG4gIGJhY2tncm91bmQ6ICMzZTUzNzk7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAuYnV0dG9uLXByaW1hcnktLWJsdWU6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogIzJkM2M1ODsgfSB9XG5cbi8qKlxyXG4gKiBCdXR0b24gcHJpbWFyeSAoYnJvd24pLlxyXG4gKi9cbi5idXR0b24tcHJpbWFyeS0tYnJvd24ge1xuICBiYWNrZ3JvdW5kOiAjYzY5OTM5OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLmJ1dHRvbi1wcmltYXJ5LS1icm93bjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjOWU3YjJlOyB9IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQ29udGFpbmVyXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogVGhlIGNvbnRhaW5lciBvYmplY3QgY2VudGVycyBhbiBlbGVtZW50IGluIHRoZSBkb2N1bWVudC5cclxuICovXG4uY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMjRweCArIDUwLjY2NjY3cHgpO1xuICBwYWRkaW5nOiAwIDI1LjMzMzMzcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDAgYXV0bzsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb250ZW50IENvbnN0cmFpbnRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBUaGUgY29udGVudCBjb25zdHJhaW50IGlzIGEgY29uc3RyYWludCBmb3IgYWxsIHRoZSBjb250ZW50IHdpdGhpblxyXG4gKiB0aGUgZG9jdW1lbnQuIEl0IGNhbiBiZSBtYW5pcHVsYXRlZCBieSBDU1Mgb3IgSmF2YVNjcmlwdCB3aXRob3V0XHJcbiAqIGluZmx1ZW5jaW5nIHRoZSBib2R5LlxyXG4gKi9cbi5jb250ZW50LWNvbnN0cmFpbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICBvdmVyZmxvdy14OiBoaWRkZW47IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgIC5jb250ZW50LWNvbnN0cmFpbnQge1xuICAgICAgbWFyZ2luLXRvcDogNjhweDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAuY29udGVudC1jb25zdHJhaW50IHtcbiAgICAgIG1hcmdpbi10b3A6IDk0cHg7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5jb250ZW50LWNvbnN0cmFpbnQge1xuICAgICAgbWFyZ2luLXRvcDogMTMxcHg7IH0gfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBGbGV4XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogRXhhbXBsZSBvZiBhIGZsZXggYmFzZWQgY29sdW1uIGdyaWQgbGF5b3V0IGluIHByYWN0aWNlOlxyXG4gKlxyXG4gKiA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAqICAgPGRpdiBjbGFzcz1cImNvbCBjb2wteHMtNiBjb2wtc20tMTJcIj48L2Rpdj5cclxuICogICA8ZGl2IGNsYXNzPVwiY29sIGNvbC14cy02IGNvbC1zbS0xMlwiPjwvZGl2PlxyXG4gKiA8L2Rpdj5cclxuICpcclxuICogVGhpcyBleGFtcGxlIHdpbGwgY3JlYXRlIGEgcm93IHdpdGggdHdvIGNvbHVtbnMgZWFjaCBmaWxsaW5nIGhhbGYgdGhlIHdpZHRoXHJcbiAqIG9mIHRoZSByb3cgb24gYWxsIG1lZGlhLCBidXQgd2lsbCBjb252ZXJ0IHRvIGEgZnVsbCB3aWR0aCBjb2x1bW4gb24gdGhlXHJcbiAqIHNtYWxsIGAtc21gIGJyZWFrcG9pbnQgYWxpYXMsIHdoaWNoIGlzIG1vYmlsZSBvbmx5LiBSZWZlciB0b1xyXG4gKiBgc2V0dGluZ3MvX2RlZmluaXRpb25zLnNjc3NgIGZvciBhbGwgYnJlYWtwb2ludCBhbGlhcy5cclxuICovXG4vKipcclxuICogRmxleCBvYmplY3QuXHJcbiAqXHJcbiAqIFRpcDogVXNlIGZsZXggb24gYSBjb2x1bW4gdG8gbWFrZSB0aGUgYm94IHRoZSBzYW1lIGhlaWdodCBhcyB0aGUgY29sdW1uLlxyXG4gKi9cbi5mbGV4IHtcbiAgZGlzcGxheTogZmxleDsgfVxuXG4uZmxleC13cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwOyB9XG5cbi8qKlxyXG4gKiBGbGV4IG9iamVjdCB3aXRoIGEgY29sdW1uIGJhc2VkIGxheW91dCBzeXN0ZW0uXHJcbiAqL1xuLnJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBtYXJnaW46IDAgLTEyLjY2NjY3cHg7IH1cblxuLyoqXHJcbiAqIEJveCwgdGhlIGluc2lkZSBvZiBhIGNvbHVtbi5cclxuICovXG4uYm94IHtcbiAgZmxleDogMTsgfVxuXG4vKipcclxuICAgICAgICogQ29sdW1uIDEgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmNvbC14cy0xIHtcbiAgZmxleDogMCAxIGF1dG87XG4gIHdpZHRoOiA4LjMzMzMzJTtcbiAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG5cbi8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxIGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuLm9mZnNldC14cy0xIHtcbiAgbWFyZ2luLWxlZnQ6IDguMzMzMzMlOyB9XG5cbi8qKlxyXG4gICAgICAgKiBDb2x1bW4gMiBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uY29sLXhzLTIge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgd2lkdGg6IDE2LjY2NjY3JTtcbiAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG5cbi8qKlxyXG4gICAgICAgICAqIE9mZnNldCAyIGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuLm9mZnNldC14cy0yIHtcbiAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY3JTsgfVxuXG4vKipcclxuICAgICAgICogQ29sdW1uIDMgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmNvbC14cy0zIHtcbiAgZmxleDogMCAxIGF1dG87XG4gIHdpZHRoOiAyNSU7XG4gIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuXG4vKipcclxuICAgICAgICAgKiBPZmZzZXQgMyBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbi5vZmZzZXQteHMtMyB7XG4gIG1hcmdpbi1sZWZ0OiAyNSU7IH1cblxuLyoqXHJcbiAgICAgICAqIENvbHVtbiA0IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5jb2wteHMtNCB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICB3aWR0aDogMzMuMzMzMzMlO1xuICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cblxuLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDQgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4ub2Zmc2V0LXhzLTQge1xuICBtYXJnaW4tbGVmdDogMzMuMzMzMzMlOyB9XG5cbi8qKlxyXG4gICAgICAgKiBDb2x1bW4gNSBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uY29sLXhzLTUge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgd2lkdGg6IDQxLjY2NjY3JTtcbiAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG5cbi8qKlxyXG4gICAgICAgICAqIE9mZnNldCA1IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuLm9mZnNldC14cy01IHtcbiAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY3JTsgfVxuXG4vKipcclxuICAgICAgICogQ29sdW1uIDYgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmNvbC14cy02IHtcbiAgZmxleDogMCAxIGF1dG87XG4gIHdpZHRoOiA1MCU7XG4gIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuXG4vKipcclxuICAgICAgICAgKiBPZmZzZXQgNiBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbi5vZmZzZXQteHMtNiB7XG4gIG1hcmdpbi1sZWZ0OiA1MCU7IH1cblxuLyoqXHJcbiAgICAgICAqIENvbHVtbiA3IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5jb2wteHMtNyB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICB3aWR0aDogNTguMzMzMzMlO1xuICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cblxuLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDcgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4ub2Zmc2V0LXhzLTcge1xuICBtYXJnaW4tbGVmdDogNTguMzMzMzMlOyB9XG5cbi8qKlxyXG4gICAgICAgKiBDb2x1bW4gOCBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uY29sLXhzLTgge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgd2lkdGg6IDY2LjY2NjY3JTtcbiAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG5cbi8qKlxyXG4gICAgICAgICAqIE9mZnNldCA4IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuLm9mZnNldC14cy04IHtcbiAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY3JTsgfVxuXG4vKipcclxuICAgICAgICogQ29sdW1uIDkgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmNvbC14cy05IHtcbiAgZmxleDogMCAxIGF1dG87XG4gIHdpZHRoOiA3NSU7XG4gIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuXG4vKipcclxuICAgICAgICAgKiBPZmZzZXQgOSBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbi5vZmZzZXQteHMtOSB7XG4gIG1hcmdpbi1sZWZ0OiA3NSU7IH1cblxuLyoqXHJcbiAgICAgICAqIENvbHVtbiAxMCBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uY29sLXhzLTEwIHtcbiAgZmxleDogMCAxIGF1dG87XG4gIHdpZHRoOiA4My4zMzMzMyU7XG4gIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuXG4vKipcclxuICAgICAgICAgKiBPZmZzZXQgMTAgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4ub2Zmc2V0LXhzLTEwIHtcbiAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzJTsgfVxuXG4vKipcclxuICAgICAgICogQ29sdW1uIDExIGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5jb2wteHMtMTEge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgd2lkdGg6IDkxLjY2NjY3JTtcbiAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG5cbi8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxMSBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbi5vZmZzZXQteHMtMTEge1xuICBtYXJnaW4tbGVmdDogOTEuNjY2NjclOyB9XG5cbi8qKlxyXG4gICAgICAgKiBDb2x1bW4gMTIgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmNvbC14cy0xMiB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG5cbi8qKlxyXG4gICAgICAgKiBBbGlnbiBgc3RyZXRjaGAgZm9yIHRoZSB4cyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5hbGlnbi14cy1zdHJldGNoIHtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH1cblxuLyoqXHJcbiAgICAgICAqIEFsaWduIGBjZW50ZXJgIGZvciB0aGUgeHMgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uYWxpZ24teHMtY2VudGVyIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuXG4vKipcclxuICAgICAgICogQWxpZ24gYGZsZXgtc3RhcnRgIGZvciB0aGUgeHMgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uYWxpZ24teHMtZmxleC1zdGFydCB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG5cbi8qKlxyXG4gICAgICAgKiBBbGlnbiBgZmxleC1lbmRgIGZvciB0aGUgeHMgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uYWxpZ24teHMtZmxleC1lbmQge1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7IH1cblxuLyoqXHJcbiAgICAgICAqIEFsaWduIGBiYXNlbGluZWAgZm9yIHRoZSB4cyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5hbGlnbi14cy1iYXNlbGluZSB7XG4gIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsgfVxuXG4vKipcclxuICAgICAgICogSnVzdGlmeSBgc3RhcnRgIGZvciB0aGUgeHMgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uanVzdGlmeS14cy1zdGFydCB7XG4gIGp1c3RpZnktY29udGVudDogc3RhcnQ7IH1cblxuLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYGNlbnRlcmAgZm9yIHRoZSB4cyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5qdXN0aWZ5LXhzLWNlbnRlciB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG5cbi8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzcGFjZS1iZXR3ZWVuYCBmb3IgdGhlIHhzIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmp1c3RpZnkteHMtc3BhY2UtYmV0d2VlbiB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfVxuXG4vKipcclxuICAgICAgICogSnVzdGlmeSBgc3BhY2UtYXJvdW5kYCBmb3IgdGhlIHhzIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmp1c3RpZnkteHMtc3BhY2UtYXJvdW5kIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7IH1cblxuLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHNwYWNlLWV2ZW5seWAgZm9yIHRoZSB4cyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5qdXN0aWZ5LXhzLXNwYWNlLWV2ZW5seSB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtZXZlbmx5OyB9XG5cbi8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBmbGV4LXN0YXJ0YCBmb3IgdGhlIHhzIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmp1c3RpZnkteHMtZmxleC1zdGFydCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfVxuXG4vKipcclxuICAgICAgICogSnVzdGlmeSBgZmxleC1lbmRgIGZvciB0aGUgeHMgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uanVzdGlmeS14cy1mbGV4LWVuZCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH1cblxuLyoqXHJcbiAgICAgICAqIEJsZWVkIGxlZnQgZm9yIHRoZSB4cyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5ibGVlZC14cy1sZWZ0IHtcbiAgcGFkZGluZy1sZWZ0OiAwOyB9XG5cbi8qKlxyXG4gICAgICAgKiBCbGVlZCByaWdodCBmb3IgdGhlIHhzIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmJsZWVkLXhzLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogMDsgfVxuXG4vKipcclxuICAgICAqIE9yZGVyIGZpcnN0IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICovXG4uZmlyc3QteHMge1xuICBvcmRlcjogLTE7IH1cblxuLyoqXHJcbiAgICAgKiBPcmRlciBsYXN0IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICovXG4ubGFzdC14cyB7XG4gIG9yZGVyOiAxOyB9XG5cbi8qKlxyXG4gICAgICogUmV2ZXJzZSBvcmRlciBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAqL1xuLnJldmVyc2UteHMge1xuICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAvKipcclxuICAgICAgICogQ29sdW1uIDEgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXNtLTEge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA4LjMzMzMzJTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDEgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtc20tMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMiBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtc20tMiB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDE2LjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDIgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtc20tMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDMgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXNtLTMge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiAyNSU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAzIGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXNtLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAyNSU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA0IGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1zbS00IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMzMuMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNCBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1zbS00IHtcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gNSBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtc20tNSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDQxLjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDUgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtc20tNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDYgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXNtLTYge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA1MCU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA2IGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXNtLTYge1xuICAgIG1hcmdpbi1sZWZ0OiA1MCU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA3IGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1zbS03IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNTguMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNyBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1zbS03IHtcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gOCBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtc20tOCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDY2LjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDggZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtc20tOCB7XG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDkgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXNtLTkge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA3NSU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA5IGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXNtLTkge1xuICAgIG1hcmdpbi1sZWZ0OiA3NSU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAxMCBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtc20tMTAge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA4My4zMzMzMyU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxMCBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1zbS0xMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDExIGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1zbS0xMSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDkxLjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDExIGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXNtLTExIHtcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjclOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMTIgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXNtLTEyIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBzdHJldGNoYCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24tc20tc3RyZXRjaCB7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBjZW50ZXJgIGZvciB0aGUgc20gYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi1zbS1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBmbGV4LXN0YXJ0YCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24tc20tZmxleC1zdGFydCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBmbGV4LWVuZGAgZm9yIHRoZSBzbSBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLXNtLWZsZXgtZW5kIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBiYXNlbGluZWAgZm9yIHRoZSBzbSBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLXNtLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHN0YXJ0YCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1zbS1zdGFydCB7XG4gICAganVzdGlmeS1jb250ZW50OiBzdGFydDsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgY2VudGVyYCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1zbS1jZW50ZXIge1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzcGFjZS1iZXR3ZWVuYCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1zbS1zcGFjZS1iZXR3ZWVuIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHNwYWNlLWFyb3VuZGAgZm9yIHRoZSBzbSBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnktc20tc3BhY2UtYXJvdW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgc3BhY2UtZXZlbmx5YCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1zbS1zcGFjZS1ldmVubHkge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtZXZlbmx5OyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBmbGV4LXN0YXJ0YCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1zbS1mbGV4LXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYGZsZXgtZW5kYCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1zbS1mbGV4LWVuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgfVxuICAvKipcclxuICAgICAgICogQmxlZWQgbGVmdCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYmxlZWQtc20tbGVmdCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC8qKlxyXG4gICAgICAgKiBCbGVlZCByaWdodCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYmxlZWQtc20tcmlnaHQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLyoqXHJcbiAgICAgKiBPcmRlciBmaXJzdCBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAqL1xuICAuZmlyc3Qtc20ge1xuICAgIG9yZGVyOiAtMTsgfVxuICAvKipcclxuICAgICAqIE9yZGVyIGxhc3QgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgKi9cbiAgLmxhc3Qtc20ge1xuICAgIG9yZGVyOiAxOyB9XG4gIC8qKlxyXG4gICAgICogUmV2ZXJzZSBvcmRlciBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAqL1xuICAucmV2ZXJzZS1zbSB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAvKipcclxuICAgICAgICogQ29sdW1uIDEgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLW1kLTEge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA4LjMzMzMzJTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDEgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbWQtMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMiBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbWQtMiB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDE2LjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDIgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbWQtMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDMgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLW1kLTMge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiAyNSU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAzIGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LW1kLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAyNSU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA0IGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1tZC00IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMzMuMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNCBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1tZC00IHtcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gNSBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbWQtNSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDQxLjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDUgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbWQtNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDYgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLW1kLTYge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA1MCU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA2IGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LW1kLTYge1xuICAgIG1hcmdpbi1sZWZ0OiA1MCU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA3IGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1tZC03IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNTguMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNyBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1tZC03IHtcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gOCBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbWQtOCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDY2LjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDggZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbWQtOCB7XG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDkgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLW1kLTkge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA3NSU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA5IGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LW1kLTkge1xuICAgIG1hcmdpbi1sZWZ0OiA3NSU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAxMCBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbWQtMTAge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA4My4zMzMzMyU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxMCBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1tZC0xMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDExIGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1tZC0xMSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDkxLjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDExIGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LW1kLTExIHtcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjclOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMTIgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLW1kLTEyIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBzdHJldGNoYCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24tbWQtc3RyZXRjaCB7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBjZW50ZXJgIGZvciB0aGUgbWQgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi1tZC1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBmbGV4LXN0YXJ0YCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24tbWQtZmxleC1zdGFydCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBmbGV4LWVuZGAgZm9yIHRoZSBtZCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLW1kLWZsZXgtZW5kIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBiYXNlbGluZWAgZm9yIHRoZSBtZCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLW1kLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHN0YXJ0YCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1tZC1zdGFydCB7XG4gICAganVzdGlmeS1jb250ZW50OiBzdGFydDsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgY2VudGVyYCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1tZC1jZW50ZXIge1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzcGFjZS1iZXR3ZWVuYCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1tZC1zcGFjZS1iZXR3ZWVuIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHNwYWNlLWFyb3VuZGAgZm9yIHRoZSBtZCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnktbWQtc3BhY2UtYXJvdW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgc3BhY2UtZXZlbmx5YCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1tZC1zcGFjZS1ldmVubHkge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtZXZlbmx5OyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBmbGV4LXN0YXJ0YCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1tZC1mbGV4LXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYGZsZXgtZW5kYCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1tZC1mbGV4LWVuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgfVxuICAvKipcclxuICAgICAgICogQmxlZWQgbGVmdCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYmxlZWQtbWQtbGVmdCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC8qKlxyXG4gICAgICAgKiBCbGVlZCByaWdodCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYmxlZWQtbWQtcmlnaHQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLyoqXHJcbiAgICAgKiBPcmRlciBmaXJzdCBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAqL1xuICAuZmlyc3QtbWQge1xuICAgIG9yZGVyOiAtMTsgfVxuICAvKipcclxuICAgICAqIE9yZGVyIGxhc3QgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgKi9cbiAgLmxhc3QtbWQge1xuICAgIG9yZGVyOiAxOyB9XG4gIC8qKlxyXG4gICAgICogUmV2ZXJzZSBvcmRlciBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAqL1xuICAucmV2ZXJzZS1tZCB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkge1xuICAvKipcclxuICAgICAgICogQ29sdW1uIDEgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLWxnLTEge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA4LjMzMzMzJTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDEgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbGctMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMiBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbGctMiB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDE2LjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDIgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbGctMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDMgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLWxnLTMge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiAyNSU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAzIGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LWxnLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAyNSU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA0IGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1sZy00IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMzMuMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNCBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1sZy00IHtcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gNSBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbGctNSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDQxLjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDUgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbGctNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDYgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLWxnLTYge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA1MCU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA2IGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LWxnLTYge1xuICAgIG1hcmdpbi1sZWZ0OiA1MCU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA3IGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1sZy03IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNTguMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNyBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1sZy03IHtcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gOCBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbGctOCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDY2LjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDggZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbGctOCB7XG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDkgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLWxnLTkge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA3NSU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA5IGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LWxnLTkge1xuICAgIG1hcmdpbi1sZWZ0OiA3NSU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAxMCBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbGctMTAge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA4My4zMzMzMyU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxMCBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1sZy0xMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDExIGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1sZy0xMSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDkxLjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDExIGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LWxnLTExIHtcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjclOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMTIgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLWxnLTEyIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBzdHJldGNoYCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24tbGctc3RyZXRjaCB7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBjZW50ZXJgIGZvciB0aGUgbGcgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi1sZy1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBmbGV4LXN0YXJ0YCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24tbGctZmxleC1zdGFydCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBmbGV4LWVuZGAgZm9yIHRoZSBsZyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLWxnLWZsZXgtZW5kIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBiYXNlbGluZWAgZm9yIHRoZSBsZyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLWxnLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHN0YXJ0YCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1sZy1zdGFydCB7XG4gICAganVzdGlmeS1jb250ZW50OiBzdGFydDsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgY2VudGVyYCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1sZy1jZW50ZXIge1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzcGFjZS1iZXR3ZWVuYCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1sZy1zcGFjZS1iZXR3ZWVuIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHNwYWNlLWFyb3VuZGAgZm9yIHRoZSBsZyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnktbGctc3BhY2UtYXJvdW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgc3BhY2UtZXZlbmx5YCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1sZy1zcGFjZS1ldmVubHkge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtZXZlbmx5OyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBmbGV4LXN0YXJ0YCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1sZy1mbGV4LXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYGZsZXgtZW5kYCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1sZy1mbGV4LWVuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgfVxuICAvKipcclxuICAgICAgICogQmxlZWQgbGVmdCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYmxlZWQtbGctbGVmdCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC8qKlxyXG4gICAgICAgKiBCbGVlZCByaWdodCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYmxlZWQtbGctcmlnaHQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLyoqXHJcbiAgICAgKiBPcmRlciBmaXJzdCBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAqL1xuICAuZmlyc3QtbGcge1xuICAgIG9yZGVyOiAtMTsgfVxuICAvKipcclxuICAgICAqIE9yZGVyIGxhc3QgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgKi9cbiAgLmxhc3QtbGcge1xuICAgIG9yZGVyOiAxOyB9XG4gIC8qKlxyXG4gICAgICogUmV2ZXJzZSBvcmRlciBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAqL1xuICAucmV2ZXJzZS1sZyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAxIGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC14bC0xIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogOC4zMzMzMyU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxIGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXhsLTEge1xuICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDIgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXhsLTIge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiAxNi42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAyIGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXhsLTIge1xuICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAzIGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC14bC0zIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMjUlO1xuICAgIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgMyBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC14bC0zIHtcbiAgICBtYXJnaW4tbGVmdDogMjUlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gNCBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wteGwtNCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDMzLjMzMzMzJTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDQgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQteGwtNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDUgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXhsLTUge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA0MS42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA1IGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXhsLTUge1xuICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA2IGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC14bC02IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNTAlO1xuICAgIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNiBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC14bC02IHtcbiAgICBtYXJnaW4tbGVmdDogNTAlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gNyBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wteGwtNyB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDU4LjMzMzMzJTtcbiAgICBwYWRkaW5nOiAwIDEyLjY2NjY3cHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDcgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQteGwtNyB7XG4gICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDggZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXhsLTgge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA2Ni42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA4IGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXhsLTgge1xuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA5IGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC14bC05IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNzUlO1xuICAgIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgOSBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC14bC05IHtcbiAgICBtYXJnaW4tbGVmdDogNzUlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMTAgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXhsLTEwIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogODMuMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTIuNjY2NjdweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgMTAgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQteGwtMTAge1xuICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAxMSBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wteGwtMTEge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA5MS42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxMSBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC14bC0xMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDEyIGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC14bC0xMiB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMCAxMi42NjY2N3B4OyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgc3RyZXRjaGAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLXhsLXN0cmV0Y2gge1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgY2VudGVyYCBmb3IgdGhlIHhsIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24teGwtY2VudGVyIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgZmxleC1zdGFydGAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLXhsLWZsZXgtc3RhcnQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgZmxleC1lbmRgIGZvciB0aGUgeGwgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi14bC1mbGV4LWVuZCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kOyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgYmFzZWxpbmVgIGZvciB0aGUgeGwgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi14bC1iYXNlbGluZSB7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzdGFydGAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnkteGwtc3RhcnQge1xuICAgIGp1c3RpZnktY29udGVudDogc3RhcnQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYGNlbnRlcmAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnkteGwtY2VudGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgc3BhY2UtYmV0d2VlbmAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnkteGwtc3BhY2UtYmV0d2VlbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzcGFjZS1hcm91bmRgIGZvciB0aGUgeGwgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5qdXN0aWZ5LXhsLXNwYWNlLWFyb3VuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHNwYWNlLWV2ZW5seWAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnkteGwtc3BhY2UtZXZlbmx5IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgZmxleC1zdGFydGAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnkteGwtZmxleC1zdGFydCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBmbGV4LWVuZGAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnkteGwtZmxleC1lbmQge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEJsZWVkIGxlZnQgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmJsZWVkLXhsLWxlZnQge1xuICAgIHBhZGRpbmctbGVmdDogMDsgfVxuICAvKipcclxuICAgICAgICogQmxlZWQgcmlnaHQgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmJsZWVkLXhsLXJpZ2h0IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwOyB9XG4gIC8qKlxyXG4gICAgICogT3JkZXIgZmlyc3QgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgKi9cbiAgLmZpcnN0LXhsIHtcbiAgICBvcmRlcjogLTE7IH1cbiAgLyoqXHJcbiAgICAgKiBPcmRlciBsYXN0IGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICovXG4gIC5sYXN0LXhsIHtcbiAgICBvcmRlcjogMTsgfVxuICAvKipcclxuICAgICAqIFJldmVyc2Ugb3JkZXIgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgKi9cbiAgLnJldmVyc2UteGwge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfSB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEhlYWRpbmdcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBNYWluIHNldHRpbmdzLlxyXG4gKi9cbi5zdWJoZWFkaW5nIHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuXG4vKipcclxuICogSGVhZGluZyAxXHJcbiAqL1xuLmhlYWRpbmctMSwgLmNtcy1vdXRwdXQgaDEge1xuICBmb250LXNpemU6IDQ1cHg7XG4gIGZvbnQtc2l6ZTogNC41cmVtO1xuICBsaW5lLWhlaWdodDogMS41NTU1NmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBsZXR0ZXItc3BhY2luZzogMS4yNXB4OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmhlYWRpbmctMSwgLmNtcy1vdXRwdXQgaDEge1xuICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNjY2NjdlbTsgfSB9XG5cbi5zdWJoZWFkaW5nLTEge1xuICBmb250LXNpemU6IDM1cHg7XG4gIGZvbnQtc2l6ZTogMy41cmVtO1xuICBsaW5lLWhlaWdodDogMS4yMjg1N2VtO1xuICBsZXR0ZXItc3BhY2luZzogMC42OXB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAuc3ViaGVhZGluZy0xIHtcbiAgICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMmVtOyB9IH1cblxuLyoqXHJcbiAqIEhlYWRpbmcgMlxyXG4gKi9cbi5oZWFkaW5nLTIsIC5jbXMtb3V0cHV0IGgyIHtcbiAgZm9udC1zaXplOiAzM3B4O1xuICBmb250LXNpemU6IDMuM3JlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjEyMTJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDEuMjVweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLmhlYWRpbmctMiwgLmNtcy1vdXRwdXQgaDIge1xuICAgICAgZm9udC1zaXplOiAyN3B4O1xuICAgICAgZm9udC1zaXplOiAyLjdyZW07XG4gICAgICBsaW5lLWhlaWdodDogMS40ODE0OGVtOyB9IH1cblxuLnN1YmhlYWRpbmctMiB7XG4gIGZvbnQtc2l6ZTogMjdweDtcbiAgZm9udC1zaXplOiAyLjdyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjM3MDM3ZW07XG4gIGxldHRlci1zcGFjaW5nOiAwLjY5cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5zdWJoZWFkaW5nLTIge1xuICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtOyB9IH1cblxuLyoqXHJcbiAqIEhlYWRpbmcgM1xyXG4gKi9cbi5oZWFkaW5nLTMsIC5jbXMtb3V0cHV0IGgzIHtcbiAgZm9udC1zaXplOiAzMHB4O1xuICBmb250LXNpemU6IDNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjIzMzMzZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxldHRlci1zcGFjaW5nOiAxLjI1cHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5oZWFkaW5nLTMsIC5jbXMtb3V0cHV0IGgzIHtcbiAgICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNDhlbTsgfSB9XG5cbi5zdWJoZWFkaW5nLTMge1xuICBmb250LXNpemU6IDI1cHg7XG4gIGZvbnQtc2l6ZTogMi41cmVtO1xuICBsaW5lLWhlaWdodDogMS40OGVtO1xuICBsZXR0ZXItc3BhY2luZzogMC42OXB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAuc3ViaGVhZGluZy0zIHtcbiAgICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICAgIGZvbnQtc2l6ZTogMS43cmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNzY0NzFlbTsgfSB9XG5cbi8qKlxyXG4gKiBIZWFkaW5nIDRcclxuICovXG4uaGVhZGluZy00LCAuY21zLW91dHB1dCBoNCB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC1zaXplOiAycmVtO1xuICBsaW5lLWhlaWdodDogMS44NWVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMC42OXB4OyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIExpbmtzXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogTGluayBiYXNlLlxyXG4gKi9cbi5saW5rIHtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDJlbTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlOyB9XG4gIC5saW5rIHN2ZyB7XG4gICAgd2lkdGg6IDE1cHg7XG4gICAgaGVpZ2h0OiAxNXB4OyB9XG4gIC5saW5rLnN2Zy1yaWdodCBzdmcge1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4OyB9XG4gIC5saW5rLnN2Zy1sZWZ0IHN2ZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4OyB9XG4gIC5saW5rLnVuZGVybGluZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cblxuLyoqXHJcbiAqIExpbmsgKHJlZCkuXHJcbiAqL1xuLmxpbmstLXJlZCB7XG4gIGNvbG9yOiAjZWUxYjNiOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLmxpbmstLXJlZDpob3ZlciB7XG4gICAgICBjb2xvcjogI2M3MGYyYjsgfSB9XG5cbi8qKlxyXG4gKiBMaW5rICh3aGl0ZSkuXHJcbiAqL1xuLmxpbmstLXdoaXRlIHtcbiAgY29sb3I6IHdoaXRlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLmxpbmstLXdoaXRlOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAjYzY5OTM5OyB9IH1cblxuLyoqXHJcbiAqIExpbmsgKGJsYWNrKS5cclxuICovXG4ubGluay0tYmxhY2sge1xuICBjb2xvcjogYmxhY2s7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAubGluay0tYmxhY2s6aG92ZXIge1xuICAgICAgY29sb3I6ICNlZTFiM2I7IH0gfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBTZWN0aW9uXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBUYWdzXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogVGFnIGJhc2UuXHJcbiAqL1xuLnRhZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgcGFkZGluZzogMXB4IDE2cHggMXB4IDA7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICB6LWluZGV4OiAyMDsgfVxuICAudGFnOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IGNhbGMoMTAwJSAtIDIwcHgpO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMzBweDtcbiAgICB0cmFuc2Zvcm06IHNrZXdYKDE1ZGVnKTtcbiAgICBjb250ZW50OiAnJztcbiAgICB6LWluZGV4OiAtMTsgfVxuXG4udGFnLS15ZWxsb3cge1xuICBiYWNrZ3JvdW5kOiAjZmZjYzI0O1xuICBjb2xvcjogYmxhY2s7IH1cbiAgLnRhZy0teWVsbG93OjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICNmZmNjMjQ7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgV3JhcHBlclxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIFRoZSB3cmFwcGVyIG9iamVjdCBjZW50ZXJzIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50LlxyXG4gKi9cbi8qKlxyXG4gKiBXcmFwcGVyIChkZWZhdWx0KVxyXG4gKi9cbi53cmFwcGVyIHtcbiAgbWF4LXdpZHRoOiBjYWxjKDEyNDBweCArIDQwcHgpO1xuICBwYWRkaW5nOiAwIDIwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDAgYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHtcbiAgICAud3JhcHBlciB7XG4gICAgICBtYXgtd2lkdGg6IGNhbGMoMTI0MHB4ICsgNDBweCk7XG4gICAgICBwYWRkaW5nOiAwIDIwcHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbjogMCBhdXRvOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLndyYXBwZXIge1xuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEyNDBweCArIDEyMHB4KTtcbiAgICAgIHBhZGRpbmc6IDAgNjBweDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWFyZ2luOiAwIGF1dG87IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLndyYXBwZXIge1xuICAgICAgbWF4LXdpZHRoOiBjYWxjKDEyNDBweCArIDEwMHB4KTtcbiAgICAgIHBhZGRpbmc6IDAgNTBweDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWFyZ2luOiAwIGF1dG87IH0gfVxuXG4vKipcclxuICogV3JhcHBlciAoZnVsbCB3aWR0aClcclxuICovXG4ud3JhcHBlci0tZnVsbCB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDA7IH1cblxuLndyYXBwZXItLXNtYWxsIHtcbiAgbWF4LXdpZHRoOiA4NDBweDtcbiAgbWFyZ2luOiBhdXRvOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAud3JhcHBlci0tc21hbGwge1xuICAgICAgbWF4LXdpZHRoOiA3NjBweDsgfSB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIENNUyBPdXRwdXRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBFdmVyeSBjb25jZWl2YWJsZSBIVE1MIGVsZW1lbnQgd2l0aGluIGEgYC5jbXMtb3V0cHV0YCB3cmFwcGVyLlxyXG4gKlxyXG4gKiAxLiBFeGNsdWRlIGxhc3QgY2hpbGRzLlxyXG4gKi9cbi5jbXMtb3V0cHV0ID4gKjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgLyogMSAqLyB9XG5cbi5jbXMtb3V0cHV0IGgxIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50OyB9XG5cbi5jbXMtb3V0cHV0IGgyIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50OyB9XG5cbi5jbXMtb3V0cHV0IGgzIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50OyB9XG5cbi5jbXMtb3V0cHV0IGg0IHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50OyB9XG5cbi5jbXMtb3V0cHV0IHVsIHtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7IH1cbiAgLmNtcy1vdXRwdXQgdWwgbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7IH1cbiAgICAuY21zLW91dHB1dCB1bCBsaSBzdmcge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAxMnB4O1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiA1cHg7XG4gICAgICBoZWlnaHQ6IDVweDtcbiAgICAgIGNvbG9yOiAjYzY5OTM5OyB9XG4gICAgLmNtcy1vdXRwdXQgdWwgbGk6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OyB9XG5cbi5jbXMtb3V0cHV0IG9sIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgY291bnRlci1yZXNldDogbXktYXdlc29tZS1jb3VudGVyOyB9XG5cbi5jbXMtb3V0cHV0IG9sIGxpIHtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICBjb3VudGVyLWluY3JlbWVudDogbXktYXdlc29tZS1jb3VudGVyOyB9XG4gIC5jbXMtb3V0cHV0IG9sIGxpOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7IH1cblxuLmNtcy1vdXRwdXQgb2wgbGk6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGNvbG9yOiAjYzY5OTM5O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb250ZW50OiBjb3VudGVyKG15LWF3ZXNvbWUtY291bnRlcikgXCIuIFwiOyB9XG5cbi5jbXMtb3V0cHV0IHAgPiBhIHtcbiAgY29sb3I6IGJsYWNrOyB9XG4gIC5jbXMtb3V0cHV0IHAgPiBhOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfVxuXG4uY21zLW91dHB1dCBwIHtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXMgZWFzZTtcbiAgY29sb3I6ICM0NTQ1NDU7XG4gIGxldHRlci1zcGFjaW5nOiAwLjQycHg7IH1cblxuLmNtcy1vdXRwdXQgc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgVGVtcGxhdGUgZGVmYXVsdC5cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBNYWluIHNldHRpbmdzLlxyXG4gKi9cbi5jb250ZW50LWRlZmF1bHQge1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTsgfVxuXG4vKipcclxuICogVGl0bGUuXHJcbiAqL1xuLmNvbnRlbnQtZGVmYXVsdF9fdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbi8qKlxyXG4gKiBTdWJ0aXRsZS5cclxuICovXG4uY29udGVudC1kZWZhdWx0X19zdWJ0aXRsZSB7XG4gIG1hcmdpbi1ib3R0b206IDUwcHg7IH1cblxuLyoqXHJcbiAqIEZyb250LXBhZ2UuXHJcbiAqL1xuLmNvbnRlbnQtZGVmYXVsdC0tZnJvbnQtcGFnZSB7XG4gIG1hcmdpbi10b3A6IDEwMHB4OyB9XG4gIC5jb250ZW50LWRlZmF1bHQtLWZyb250LXBhZ2UgLmNvbnRlbnQtZGVmYXVsdF9fZWRpdG9yIHtcbiAgICB3aWR0aDogMTAwJTsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb250ZW50IHN1Ym1lbnVcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBtYWluLlxyXG4gKi9cbi5jb250ZW50LXN1Ym1lbnUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiA1MHB4IDIwcHg7XG4gIGJhY2tncm91bmQ6ICNmMmYyZjI7XG4gIGNvbG9yOiAjNDU0NTQ1OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmNvbnRlbnQtc3VibWVudSB7XG4gICAgICBwYWRkaW5nOiAwOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5jb250ZW50LXN1Ym1lbnUge1xuICAgICAgbWF4LXdpZHRoOiA1NTBweDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAuY29udGVudC1zdWJtZW51IHtcbiAgICAgIG1hcmdpbjogYXV0byBhdXRvIDUwcHg7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgLmNvbnRlbnQtc3VibWVudSB7XG4gICAgICBtYXJnaW46IGF1dG8gYXV0byAzMHB4OyB9IH1cbiAgLmNvbnRlbnQtc3VibWVudS5oYXMtbm8taXRlbXMge1xuICAgIGRpc3BsYXk6IG5vbmU7IH1cblxuLyoqXHJcbiAqIFN1Ym1lbnUgaXRlbS5cclxuICovXG4uY29udGVudC1zdWJtZW51X19pdGVtIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAuY29udGVudC1zdWJtZW51X19pdGVtIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAuY29udGVudC1zdWJtZW51X19pdGVtIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjJmMmYyOyB9IH1cbiAgLmNvbnRlbnQtc3VibWVudV9faXRlbS5pcy1jdXJyZW50LXBhZ2Uge1xuICAgIGNvbG9yOiAjZWUxYjNiOyB9XG4gIC5jb250ZW50LXN1Ym1lbnVfX2l0ZW06bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLmNvbnRlbnQtc3VibWVudV9faXRlbTpob3ZlciB7XG4gICAgICBjb2xvcjogI2VlMWIzYjsgfSB9XG4gIC5jb250ZW50LXN1Ym1lbnVfX2l0ZW0uaXMtZmlyc3QtaXRlbSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH1cbiAgLmNvbnRlbnQtc3VibWVudV9faXRlbS5pcy1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi5qcy1leHBhbmQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTBweDtcbiAgcmlnaHQ6IDIwcHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHdpZHRoOiAxMDBweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAuanMtZXhwYW5kIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuICAuanMtZXhwYW5kIHN2ZyB7XG4gICAgd2lkdGg6IDE1cHg7XG4gICAgaGVpZ2h0OiAxNXB4O1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyBlYXNlO1xuICAgIGNvbG9yOiAjNDU0NTQ1OyB9XG4gIC5qcy1leHBhbmQuaXMtYWN0aXZlIHN2ZyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfVxuXG4vKipcclxuICogU3VibWVudSBoZWFkZXIgKG9ubHkgb24gbW9iaWxlKS5cclxuICovXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAuY29udGVudC1zdWJtZW51X19jaG9vc2Uge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEhlYWRlclxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIE1haW4uXHJcbiAqL1xuLmZvb3RlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3cteDogaGlkZGVuOyB9XG5cbi8qKlxyXG4gKiBVcHBlci5cclxuICovXG4uZm9vdGVyLXVwcGVyIHtcbiAgYmFja2dyb3VuZDogIzNlNTM3OTtcbiAgY29sb3I6IHdoaXRlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAuZm9vdGVyLXVwcGVyIHtcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAxMjBweCk7XG4gICAgICBtYXJnaW4tbGVmdDogLTYwcHg7IH0gfVxuICAuZm9vdGVyLXVwcGVyIC53cmFwcGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cblxuLyoqXHJcbiAqIFVwcGVyIGxlZnQuXHJcbiAqL1xuLmZvb3Rlci11cHBlcl9fbGVmdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDc1JTtcbiAgbWF4LXdpZHRoOiA2MTBweDtcbiAgcGFkZGluZzogMTAwcHggMCA1MHB4O1xuICBiYWNrZ3JvdW5kOiAjM2U1Mzc5OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAuZm9vdGVyLXVwcGVyX19sZWZ0IHtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIHBhZGRpbmc6IDUwcHggMCAwOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5mb290ZXItdXBwZXJfX2xlZnQge1xuICAgICAgbWF4LXdpZHRoOiA4MzBweDtcbiAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgIHBhZGRpbmc6IDEwMHB4IDAgMDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmZvb3Rlci11cHBlcl9fbGVmdCB7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG5cbi8qKlxyXG4gKiBVcHBlciByaWdodC5cclxuICovXG4uZm9vdGVyLXVwcGVyX19yaWdodCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMjUlO1xuICBwYWRkaW5nOiAxMDBweCAwIDEwMHB4IDEwcHg7XG4gIGJhY2tncm91bmQ6ICNjNjk5Mzk7XG4gIHotaW5kZXg6IDEwOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHtcbiAgICAuZm9vdGVyLXVwcGVyX19yaWdodCB7XG4gICAgICB3aWR0aDogY2FsYygxMDAlICsgNDBweCk7XG4gICAgICBtYXJnaW4tdG9wOiA2MHB4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtMjBweDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMjBweDtcbiAgICAgIHBhZGRpbmc6IDQwcHggMCA1MHB4OyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLmZvb3Rlci11cHBlcl9fcmlnaHQge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSArIDEyMHB4KTtcbiAgICAgIG1hcmdpbi10b3A6IDcwcHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC02MHB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IC02MHB4O1xuICAgICAgcGFkZGluZzogMzBweCAwIDUwcHg7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmZvb3Rlci11cHBlcl9fcmlnaHQge1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbjogOTBweCBhdXRvIGF1dG87XG4gICAgICBwYWRkaW5nOiA1MHB4IDAgMTAwcHg7IH0gfVxuICAuZm9vdGVyLXVwcGVyX19yaWdodCAuaGVhZGluZy0yLCAuZm9vdGVyLXVwcGVyX19yaWdodCAuY21zLW91dHB1dCBoMiwgLmNtcy1vdXRwdXQgLmZvb3Rlci11cHBlcl9fcmlnaHQgaDIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7IH1cbiAgLmZvb3Rlci11cHBlcl9fcmlnaHQ6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogY2FsYygxMDAlIC0gMTcwcHgpO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMTEwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNmb3JtOiBza2V3WCgtMTVkZWcpO1xuICAgIGJhY2tncm91bmQ6ICNjNjk5Mzk7XG4gICAgY29udGVudDogJyc7XG4gICAgei1pbmRleDogLTE7IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgICAuZm9vdGVyLXVwcGVyX19yaWdodDo6YmVmb3JlIHtcbiAgICAgICAgdG9wOiAtNTBweDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2tld1koLTlkZWcpOyB9IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgICAuZm9vdGVyLXVwcGVyX19yaWdodDo6YmVmb3JlIHtcbiAgICAgICAgdG9wOiAtNTBweDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGhlaWdodDogMTIwcHg7XG4gICAgICAgIHRyYW5zZm9ybTogc2tld1koLTVkZWcpOyB9IH1cbiAgLmZvb3Rlci11cHBlcl9fcmlnaHQ6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAxMDAlO1xuICAgIHdpZHRoOiAyMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiAjYzY5OTM5O1xuICAgIGNvbnRlbnQ6ICcnOyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAgIC5mb290ZXItdXBwZXJfX3JpZ2h0OjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4vKipcclxuICogVXBwZXIgcmlnaHQgY29udGVudC5cclxuICovXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gIC5mb290ZXItdXBwZXJfX3JpZ2h0LWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDAgMjBweDsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAuZm9vdGVyLXVwcGVyX19yaWdodC1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMCA2MHB4OyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAuZm9vdGVyLXVwcGVyX19yaWdodC1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDUxMHB4OyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgLmZvb3Rlci11cHBlcl9fcmlnaHQtY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgd2lkdGg6IDEwMCU7IH0gfVxuXG4vKipcclxuICogRm9vdGVyIGl0ZW0uXHJcbiAqL1xuLmZvb3Rlcl9faXRlbSB7XG4gIG1heC13aWR0aDogMTkwcHg7XG4gIG1hcmdpbi1ib3R0b206IDUwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgIC5mb290ZXJfX2l0ZW0ge1xuICAgICAgbWF4LXdpZHRoOiAxMDAlOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLmZvb3Rlcl9faXRlbSB7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmZvb3Rlcl9faXRlbSB7XG4gICAgICBtYXgtd2lkdGg6IDI2MHB4OyB9IH1cbiAgLmZvb3Rlcl9faXRlbSAuY29udGVudC1zdWJtZW51X19pdGVtIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuXG4vKipcclxuICogRm9vdGVyIHRpdGxlIChsZWZ0IGNvbnRlbnQpLlxyXG4gKi9cbi5mb290ZXJfX3RpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG4vKipcclxuICogTGluayAobGVmdCBjb250ZW50KS5cclxuICovXG4uZm9vdGVyX19saW5rIHtcbiAgbWFyZ2luLXRvcDogMTBweDsgfVxuXG4vKipcclxuICogQWRkcmVzcyBwYXJ0LlxyXG4gKi9cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgLmZvb3Rlcl9fYWRkcmVzcyB7XG4gICAgd2lkdGg6IDUwJTsgfSB9XG5cbi5mb290ZXJfX2FkZHJlc3MgLnNtYWxsIHtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAyZW07XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7IH1cblxuLyoqXHJcbiAqIENvbnRhY3QgcGFydC5cclxuICovXG4uZm9vdGVyLWNvbnRhY3Qge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTBweCAwIDA7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5mb290ZXItY29udGFjdCB7XG4gICAgICB3aWR0aDogNTAlO1xuICAgICAgcGFkZGluZzogMCAwIDAgNDBweDsgfSB9XG5cbi8qKlxyXG4gKiBDb250YWN0IGl0ZW0uXHJcbiAqL1xuLmZvb3Rlci1jb250YWN0X19pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAuZm9vdGVyLWNvbnRhY3RfX2l0ZW0gc3ZnIHtcbiAgICB3aWR0aDogMTVweDtcbiAgICBoZWlnaHQ6IDE1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4OyB9XG5cbi8qKlxyXG4gKiBGb290ZXIgc29jaWFsIG1lZGlhLlxyXG4gKi9cbi5mb290ZXItc29jaWFsIHtcbiAgbWFyZ2luLWxlZnQ6IC0zcHg7XG4gIHBhZGRpbmctdG9wOiAyMHB4OyB9XG4gIC5mb290ZXItc29jaWFsIGEge1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcyBlYXNlOyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAgIC5mb290ZXItc29jaWFsIGE6aG92ZXIge1xuICAgICAgICBjb2xvcjogIzNlNTM3OTsgfSB9XG4gIC5mb290ZXItc29jaWFsIHN2ZyB7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAyNXB4OyB9XG5cbi8qKlxyXG4gKiBGb290ZXIgbG93ZXIuXHJcbiAqL1xuLmZvb3Rlci1sb3dlciB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC1zaXplOiAxLjJyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjY2NjY3ZW07XG4gIHBhZGRpbmc6IDEwcHggMDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cbiAgLmZvb3Rlci1sb3dlciAubGluayB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY2NjY3ZW07IH1cbiAgLmZvb3Rlci1sb3dlciAud3JhcHBlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAgIC5mb290ZXItbG93ZXIgLndyYXBwZXIge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAuZm9vdGVyLWxvd2VyIC5mbGV4LXdyYXAge1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmZvb3Rlci1sb3dlciAuZmxleC13cmFwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgLmZvb3Rlci1sb3dlciAubG93ZXIge1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH0gfVxuXG4vKipcclxuICogTWlkZGxlIGxpbmsgaW4gdGhlIGZvb3Rlci5cclxuICovXG4uZm9vdGVyLWxvd2VyX19taWRkbGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogMCAxMHB4O1xuICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLmZvb3Rlci1sb3dlcl9fbWlkZGxlOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDJweDtcbiAgICBib3R0b206IDJweDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxcHg7XG4gICAgYmFja2dyb3VuZDogYmxhY2s7XG4gICAgY29udGVudDogJyc7IH1cbiAgLmZvb3Rlci1sb3dlcl9fbWlkZGxlOjphZnRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMnB4O1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMnB4O1xuICAgIHdpZHRoOiAxcHg7XG4gICAgYmFja2dyb3VuZDogYmxhY2s7XG4gICAgY29udGVudDogJyc7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZvcm0uXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBNYWluIHNldHRpbmdzLlxuICovXG4uZm9ybV9fY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwIDAgMTAwcHg7XG4gIHBhZGRpbmc6IDUwcHg7XG4gIGJhY2tncm91bmQ6ICNlZTFiM2I7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHtcbiAgICAuZm9ybV9fY29udGFpbmVyIHtcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0MHB4KTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMjBweDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAuZm9ybV9fY29udGFpbmVyIHtcbiAgICAgIHBhZGRpbmc6IDUwcHggMjBweDsgfSB9XG4gIC5mb3JtX19jb250YWluZXIgZm9ybSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA4MjBweDtcbiAgICBtYXJnaW46IGF1dG87IH1cbiAgLmZvcm1fX2NvbnRhaW5lciAuYnV0dG9uIHtcbiAgICBtYXJnaW4tdG9wOiA1MHB4OyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgICAgLmZvcm1fX2NvbnRhaW5lciAuYnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMzBweDsgfSB9XG5cbi8qKlxuICogR3Jhdml0eSBGb3JtcyBzZXR0aW5ncy5cbiAqL1xuLmdmb3JtX3RpdGxlIHtcbiAgZm9udC1zaXplOiA0NXB4O1xuICBmb250LXNpemU6IDQuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTU1NTZlbTtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXdlaWdodDogNzAwOyB9XG5cbi5nZm9ybV9kZXNjcmlwdGlvbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAzODBweDtcbiAgbWFyZ2luOiBhdXRvIGF1dG8gNTBweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDsgfVxuXG4uZ2ZpZWxkX2xhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC1hbGlnbjogbGVmdDsgfVxuXG4uaGlkZGVuX2xhYmVsIC5nZmllbGRfbGFiZWwge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi5nZm9ybV9maWVsZHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbjogLTEwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAuZ2Zvcm1fZmllbGRzIHtcbiAgICAgIG1hcmdpbjogLTVweDsgfSB9XG5cbmZpZWxkc2V0LmdmaWVsZCB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAzMHB4OyB9XG5cbmZpZWxkc2V0IC5nY2hvaWNlIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG4gIGZpZWxkc2V0IC5nY2hvaWNlIGlucHV0W3R5cGU9XCJyYWRpb1wiXSwgZmllbGRzZXQgLmdjaG9pY2UgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICB3aWR0aDogMTBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGVhc2UtaW47XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7IH1cbiAgICBmaWVsZHNldCAuZ2Nob2ljZSBpbnB1dFt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCwgZmllbGRzZXQgLmdjaG9pY2UgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH1cbiAgZmllbGRzZXQgLmdjaG9pY2UgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICBib3JkZXItcmFkaXVzOiAwOyB9XG4gIGZpZWxkc2V0IC5nY2hvaWNlIGxhYmVsIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbmZpZWxkc2V0IC5nZmllbGRfZGVzY3JpcHRpb24ge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXNpemU6IDEzcHg7XG4gIG9wYWNpdHk6IDAuNzsgfVxuICBmaWVsZHNldCAuZ2ZpZWxkX2Rlc2NyaXB0aW9uLnZhbGlkYXRpb25fbWVzc2FnZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBmb250LXNpemU6IDE2cHg7IH1cblxuLmdzZWN0aW9uIHtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuICAuZ3NlY3Rpb24gLmdzZWN0aW9uX3RpdGxlIHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtc2l6ZTogMzBweDtcbiAgICBtYXJnaW46IDUwcHggMDtcbiAgICBtYXJnaW4tdG9wOiAwOyB9XG5cbi5nZmllbGQge1xuICB3aWR0aDogY2FsYyg1MCUgLSAyMHB4KTtcbiAgbWFyZ2luOiAxMHB4OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAuZ2ZpZWxkIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWFyZ2luOiA1cHg7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmdmaWVsZCB7XG4gICAgICB3aWR0aDogY2FsYyg1MCUgLSAxMHB4KTtcbiAgICAgIG1hcmdpbjogNXB4OyB9IH1cblxuLmdmaWVsZC1oYXMtdGV4dGFyZWEge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAxMHB4IDEwcHggMDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLmdmaWVsZC1oYXMtdGV4dGFyZWEge1xuICAgICAgbWFyZ2luOiA1cHggNXB4IDA7IH0gfVxuICAuZ2ZpZWxkLWhhcy10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMjBweDsgfVxuXG5pbnB1dFt0eXBlPSd0ZXh0J10sXG5pbnB1dFt0eXBlPSd0ZWwnXSxcbmlucHV0W3R5cGU9J2VtYWlsJ10sXG5zZWxlY3Qge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDUwcHg7XG4gIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGNvbG9yOiAjNDU0NTQ1O1xuICBmb250LXdlaWdodDogNTAwOyB9XG5cbi5naW5wdXRfY29udGFpbmVyX3NlbGVjdCwgLmdpbnB1dF9jb250YWluZXJfY2hlY2tib3gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgLmdpbnB1dF9jb250YWluZXJfc2VsZWN0IHN2ZywgLmdpbnB1dF9jb250YWluZXJfY2hlY2tib3ggc3ZnIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDcuNXB4KTtcbiAgICByaWdodDogMjBweDtcbiAgICB3aWR0aDogMTVweDtcbiAgICBoZWlnaHQ6IDE1cHg7XG4gICAgY29sb3I6ICNlZTFiM2I7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cblxuLmdmb3JtX3ZhbGlkYXRpb25fY29udGFpbmVyIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4udmFsaWRhdGlvbl9tZXNzYWdlIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG5cbi52YWxpZGF0aW9uX2Vycm9yIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiA4MjBweDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAwO1xuICBtYXJnaW46IGF1dG8gYXV0byAyMHB4O1xuICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZTtcbiAgYmFja2dyb3VuZDogIzNlNTM3OTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAudmFsaWRhdGlvbl9lcnJvciBoMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBmb250LXdlaWdodDogNjAwOyB9XG4gIC52YWxpZGF0aW9uX2Vycm9yIC5jbG9zZS1idXR0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDIwcHg7XG4gICAgcmlnaHQ6IDIwcHg7IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgICAudmFsaWRhdGlvbl9lcnJvciAuY2xvc2UtYnV0dG9uIHtcbiAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICByaWdodDogMTBweDsgfSB9XG4gICAgLnZhbGlkYXRpb25fZXJyb3IgLmNsb3NlLWJ1dHRvbiBzdmcge1xuICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7IH1cbiAgLnZhbGlkYXRpb25fZXJyb3IuaXMtYWN0aXZlIHtcbiAgICBtYXgtaGVpZ2h0OiA1MDBweDtcbiAgICBwYWRkaW5nOiAyMHB4IDA7IH1cblxuLyoqXG4gKiBBZGRpdGlvbmFsIHJ1bGVzLlxuICovXG4ucGFnZS1oZWFkZXIgKyAuZm9ybSB7XG4gIG1hcmdpbi10b3A6IDEwMHB4OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAucGFnZS1oZWFkZXIgKyAuZm9ybSB7XG4gICAgICBtYXJnaW4tdG9wOiA1MHB4OyB9IH1cblxuLmdmb3JtX3JlcXVpcmVkX2xlZ2VuZCB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLmdlbmVyYS0yM193cmFwcGVyIC5nZm9ybV9kZXNjcmlwdGlvbiB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgSGVhZGVyXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogTWFpbi5cclxuICovXG4uaGVhZGVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICBwYWRkaW5nOiAyMHB4IDAgMzBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIHotaW5kZXg6IDk5OTsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzU1cHgpIHtcbiAgICAuaGVhZGVyIHtcbiAgICAgIHBhZGRpbmc6IDIwcHggMCAxNXB4OyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLmhlYWRlciB7XG4gICAgICBwYWRkaW5nOiAyNXB4IDA7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmhlYWRlciB7XG4gICAgICBwYWRkaW5nOiAyNXB4IDA7IH0gfVxuICBAbWVkaWEgKG1heC13aWR0aDogMTI2MHB4KSB7XG4gICAgLmhlYWRlciAud3JhcHBlciB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH0gfVxuXG4vKipcclxuICogSGVhZGVyIGxlZnQuXHJcbiAqL1xuLmhlYWRlci1sZWZ0IHtcbiAgd2lkdGg6IDI1JTsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzU1cHgpIHtcbiAgICAuaGVhZGVyLWxlZnQge1xuICAgICAgd2lkdGg6IDQ3JSAhaW1wb3J0YW50OyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLmhlYWRlci1sZWZ0IHtcbiAgICAgIHdpZHRoOiA2MCU7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmhlYWRlci1sZWZ0IHtcbiAgICAgIHdpZHRoOiA1MCU7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgLmhlYWRlci1sZWZ0IGltZyB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIGhlaWdodDogMzJweDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAuaGVhZGVyLWxlZnQgaW1nIHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgbWF4LWhlaWdodDogNTJweDsgfSB9XG4gIC5oZWFkZXItbGVmdCAubG9nby0tZGVza3RvcCB7XG4gICAgZGlzcGxheTogYmxvY2s7IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgICAgLmhlYWRlci1sZWZ0IC5sb2dvLS1kZXNrdG9wIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjVweDsgfSB9XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc1OHB4KSB7XG4gICAgICAuaGVhZGVyLWxlZnQgLmxvZ28tLWRlc2t0b3Age1xuICAgICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgLmhlYWRlci1sZWZ0IC5sb2dvLS1tb2JpbGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMjUwbXMgZWFzZTtcbiAgICBvcGFjaXR5OiAxOyB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDc1OHB4KSB7XG4gICAgICAuaGVhZGVyLWxlZnQgLmxvZ28tLW1vYmlsZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuICAgIC5oZWFkZXItbGVmdCAubG9nby0tbW9iaWxlLmlzLWFjdGl2ZSB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG5cbi8qKlxyXG4gKiBIZWFkZXIgcmlnaHQuXHJcbiAqL1xuLmhlYWRlci1yaWdodCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICB3aWR0aDogNzUlOyB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NTVweCkge1xuICAgIC5oZWFkZXItcmlnaHQge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50O1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xuICAgICAgd2lkdGg6IDUzJSAhaW1wb3J0YW50O1xuICAgICAgcGFkZGluZy1yaWdodDogMTUlOyB9IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogMTI2MHB4KSB7XG4gICAgLmhlYWRlci1yaWdodCB7XG4gICAgICB3aWR0aDogNDAlOyB9IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDg5OSkgYW5kIChtYXgtd2lkdGg6IDEyNjBweCkge1xuICAgIC5oZWFkZXItcmlnaHQge1xuICAgICAgd2lkdGg6IDUwJTsgfSB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiAxMjYwcHgpIHtcbiAgICAuaGVhZGVyLXJpZ2h0IHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0gfVxuXG4vKipcclxuICogSGVhZGVyIHJpZ2h0IHVwcGVyLlxyXG4gKi9cbi5oZWFkZXItcmlnaHRfX3VwcGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgd2lkdGg6IDEwMCU7IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc1NXB4KSB7XG4gICAgLmhlYWRlci1yaWdodF9fdXBwZXIge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH0gfVxuICBAbWVkaWEgKG1heC13aWR0aDogMTI2MHB4KSB7XG4gICAgLmhlYWRlci1yaWdodF9fdXBwZXIge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBtYXJnaW4tcmlnaHQ6IDgwcHg7IH0gfVxuXG4uaGVhZGVyLXJpZ2h0X19sb3dlciB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tdG9wOiAyMHB4OyB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiAxMjYwcHgpIHtcbiAgICAuaGVhZGVyLXJpZ2h0X19sb3dlciB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIG1hcmdpbi10b3A6IDA7IH0gfVxuICBAbWVkaWEgKG1heC13aWR0aDogMTI2MHB4KSB7XG4gICAgLmhlYWRlci1yaWdodF9fbG93ZXIgbmF2IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4vKipcclxuICogbWVudSBidXR0b24uXHJcbiAqL1xuLm1lbnUtYnV0dG9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogMTI2MHB4KSB7XG4gICAgLm1lbnUtYnV0dG9uIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuICAubWVudS1idXR0b24gLm1lbnUtYnV0dG9uLXN2ZyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcyBlYXNlO1xuICAgIGNvbG9yOiAjM2U1Mzc5OyB9XG4gICAgLm1lbnUtYnV0dG9uIC5tZW51LWJ1dHRvbi1zdmcuaXMtYWN0aXZlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIE1haW4gTWVudVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIFdvcmRQcmVzcyBtYWluIG1lbnUuXHJcbiAqL1xuLyoqXHJcbiAqIE1haW4gbWVudS5cclxuICovXG4ubWFpbi1tZW51IHtcbiAgZGlzcGxheTogZmxleDsgfVxuXG4vKipcclxuICogTWFpbiBtZW51IGl0ZW0uXHJcbiAqL1xuLyoqXHJcbiAqIE1haW4gbWVudSBsaW5rLlxyXG4gKi9cbi5tYWluLW1lbnUgPiAubWVudS1pdGVtID4gYSB7XG4gIG1hcmdpbi1sZWZ0OiAyNXB4O1xuICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcyBlYXNlO1xuICBmb250LXdlaWdodDogNjAwOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLm1haW4tbWVudSA+IC5tZW51LWl0ZW0gPiBhIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkge1xuICAgIC5tYWluLW1lbnUgPiAubWVudS1pdGVtID4gYSB7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjY2NjY3ZW07IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5tYWluLW1lbnUgPiAubWVudS1pdGVtID4gYSB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogNjBweDsgfSB9XG4gIC5tYWluLW1lbnUgPiAubWVudS1pdGVtID4gYSBidXR0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IC0xM3B4OyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAgIC5tYWluLW1lbnUgPiAubWVudS1pdGVtID4gYSBidXR0b24ge1xuICAgICAgICByaWdodDogaW5pdGlhbDsgfSB9XG4gICAgLm1haW4tbWVudSA+IC5tZW51LWl0ZW0gPiBhIGJ1dHRvbiBzdmcge1xuICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICBoZWlnaHQ6IDEwcHg7XG4gICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyBlYXNlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLm1haW4tbWVudSA+IC5tZW51LWl0ZW0gPiBhOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAjZWUxYjNiOyB9IH1cblxuLyoqXHJcbiAqIE1haW4gbWVudSBpdGVtIGhhcyBjaGlsZHJlbi5cclxuICovXG4ubWFpbi1tZW51ID4gLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAubWFpbi1tZW51ID4gLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW46aG92ZXIgLnN1Ym1lbnUtY29udGFpbmVyIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgLm1haW4tbWVudSA+IC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmhvdmVyIHN2ZyB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgY29sb3I6ICNlZTFiM2I7IH0gfVxuXG4vKipcclxuICogTWFpbiBtZW51IGN1cnJlbnQgbWVudSBpdGVtIGFuZCBjdXJyZW50IHBhZ2UgYW5jZXN0b3IuXHJcbiAqL1xuLm1haW4tbWVudSA+IC5jdXJyZW50LW1lbnUtaXRlbSA+IGEsXG4ubWFpbi1tZW51ID4gLmN1cnJlbnQtcGFnZS1hbmNlc3RvciA+IGEge1xuICBjb2xvcjogI2VlMWIzYjsgfVxuICAubWFpbi1tZW51ID4gLmN1cnJlbnQtbWVudS1pdGVtID4gYSBzdmcsXG4gIC5tYWluLW1lbnUgPiAuY3VycmVudC1wYWdlLWFuY2VzdG9yID4gYSBzdmcge1xuICAgIGNvbG9yOiAjZWUxYjNiOyB9XG5cbi5tb2JpbGUtbWVudSAubWFpbi1tZW51IHtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXgtaGVpZ2h0OiAwO1xuICBtYXJnaW46IDA7XG4gIHRyYW5zaXRpb246IGFsbCA1MDBtcyBlYXNlO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLm1vYmlsZS1tZW51IC5tYWluLW1lbnUge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG4gIC5tb2JpbGUtbWVudSAubWFpbi1tZW51IGxpIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAgIC5tb2JpbGUtbWVudSAubWFpbi1tZW51IGxpOm50aC1sYXN0LWNoaWxkKDEpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7IH1cbiAgLm1vYmlsZS1tZW51IC5tYWluLW1lbnUuaXMtYWN0aXZlIHtcbiAgICBtYXgtaGVpZ2h0OiAxMDAwcHg7XG4gICAgbWFyZ2luOiA1MHB4IDAgNDBweDsgfVxuXG4vKipcclxuICogTG9nbyBpbiB0aGUgbW9iaWxlIG1lbnUuXHJcbiAqL1xuLm1vYmlsZS1tZW51X19sb2dvIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1heC1oZWlnaHQ6IDA7XG4gIG1hcmdpbjogMDtcbiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAyNTBtcyBlYXNlO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NTVweCkge1xuICAgIC5tb2JpbGUtbWVudV9fbG9nby5pcy1hY3RpdmUge1xuICAgICAgbWF4LWhlaWdodDogNTBweDtcbiAgICAgIG1hcmdpbjogMzBweCBhdXRvIGF1dG87IH0gfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBOYXZpZ2F0aW9uIGJsb2Nrcy5cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBNYWluIHNldHRpbmdzLlxyXG4gKi9cbi5uYXZpZ2F0aW9uLWJsb2NrcyB7XG4gIHBhZGRpbmctdG9wOiAxMDBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwMHB4OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAubmF2aWdhdGlvbi1ibG9ja3Mge1xuICAgICAgcGFkZGluZy10b3A6IDcwcHg7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogNzBweDsgfSB9XG5cbi8qKlxyXG4gKiBUaXRsZS5cclxuICovXG4ubmF2aWdhdGlvbi1ibG9ja3NfX3RpdGxlIHtcbiAgZm9udC1zaXplOiA0MHB4O1xuICBmb250LXNpemU6IDRyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjE3NWVtO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiBhdXRvO1xuICBmb250LXdlaWdodDogNTAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLyoqXHJcbiAqIFJvdyBzZXR0aW5ncy5cclxuICovXG4ubmF2aWdhdGlvbi1ibG9ja3NfX3JvdyB7XG4gIG1hcmdpbjogMCAtMjVweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgLm5hdmlnYXRpb24tYmxvY2tzX19yb3cge1xuICAgICAgbWFyZ2luOiAwOyB9IH1cblxuLyoqXHJcbiAqIENvbHVtbiBzZXR0aW5ncy5cclxuICovXG4ubmF2aWdhdGlvbi1ibG9ja3NfX2NvbHVtbiB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLyAzIC0gNTBweCk7XG4gIG1hcmdpbjogMCAyNXB4OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5uYXZpZ2F0aW9uLWJsb2Nrc19fY29sdW1uIHtcbiAgICAgIG1heC13aWR0aDogNjUwcHg7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLm5hdmlnYXRpb24tYmxvY2tzX19jb2x1bW4ge1xuICAgICAgbWF4LXdpZHRoOiA1NzBweDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLm5hdmlnYXRpb24tYmxvY2tzX19jb2x1bW4ge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtYXJnaW46IGF1dG87IH0gfVxuXG4vKipcclxuICogU2luZ2xlIGJsb2NrLlxyXG4gKi9cbi5ibG9jayB7XG4gIG1hcmdpbi10b3A6IDUwcHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXMgZWFzZTtcbiAgYm9yZGVyOiAzcHggc29saWQgI2M2OTkzOTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLmJsb2NrIHtcbiAgICAgIG1hcmdpbi10b3A6IDMwcHg7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5ibG9jazpob3ZlciB7XG4gICAgICBib3JkZXI6IDNweCBzb2xpZCAjM2U1Mzc5O1xuICAgICAgYmFja2dyb3VuZDogIzNlNTM3OTtcbiAgICAgIGNvbG9yOiB3aGl0ZTsgfSB9XG4gIC5ibG9jay5uZXdzLWxhdGVzdDpob3ZlciB7XG4gICAgYm9yZGVyOiAzcHggc29saWQgI2M2OTkzOTsgfVxuXG4vKipcclxuICogQmxvY2sgdGl0bGUuXHJcbiAqL1xuLm5ld3MtbGF0ZXN0X19zaW5nbGUtdGl0bGUsXG4uYmxvY2tfX3RpdGxlIHtcbiAgZm9udC1zaXplOiAzMHB4O1xuICBmb250LXNpemU6IDNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjIzMzMzZW07XG4gIG1hcmdpbjogLTNweDtcbiAgcGFkZGluZzogNDNweCAyM3B4O1xuICBiYWNrZ3JvdW5kOiAjYzY5OTM5O1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7IH1cblxuLyoqXHJcbiAqIExpbmtzIGluIGEgYmxvY2suXHJcbiAqL1xuLmJsb2NrX19saW5rcyB7XG4gIHBhZGRpbmc6IDQwcHggMjBweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuXG4uYmxvY2tfX2xpbmsge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7IH1cbiAgLmJsb2NrX19saW5rOm50aC1sYXN0LWNoaWxkKDEpIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLmJsb2NrX19saW5rOmhvdmVyIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IH0gfVxuXG4vKipcclxuICogQWRkaXRpb25hbCBydWxlcyBmb3IgdGhlJ0xhdGVzdCBuZXdzJyBibG9jay5cclxuICovXG4uYmxvY2tfX2xhdGVzdC1uZXdzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjQycHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHotaW5kZXg6IDIwOyB9XG4gIC5ibG9ja19fbGF0ZXN0LW5ld3M6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTk4LCAxNTMsIDU3LCAwLjgpO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHotaW5kZXg6IC0xOyB9XG4gIC5ibG9ja19fbGF0ZXN0LW5ld3MgLm5ld3MtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogNDBweCAyMHB4OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLmJsb2NrX19sYXRlc3QtbmV3czpob3ZlciAubmV3cy1sYXRlc3RfX3RpdGxlIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7IH0gfVxuXG4vKipcclxuICogTmV3cyBibG9jayBiYWNrZ3JvdW5kLlxyXG4gKi9cbi5uZXdzLWxhdGVzdF9fYmFja2dyb3VuZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAtMTsgfVxuICAubmV3cy1sYXRlc3RfX2JhY2tncm91bmQgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7IH1cblxuLyoqXHJcbiAqIE5ld3MgdHVpdGxlIChpbiBuYXZpZ2F0aW9uIGJsb2NrcykuXHJcbiAqL1xuLm5ld3MtbGF0ZXN0X190aXRsZSB7XG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIE5ld3MgbGlzdFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIE1haW4gc2V0dGluZ3MuXHJcbiAqL1xuLm5ld3MtbGlzdCB7XG4gIHBhZGRpbmctdG9wOiAxMDBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwMHB4OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAubmV3cy1saXN0IHtcbiAgICAgIHBhZGRpbmctdG9wOiA1MHB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDUwcHg7IH0gfVxuICAubmV3cy1saXN0IC50ZWFzZXI6bnRoLWxhc3QtY2hpbGQoMSkge1xuICAgIG1hcmdpbi1ib3R0b206IDUwcHg7IH1cblxuLyoqXHJcbiAqIExvb3AuXHJcbiAqL1xuLm5ld3MtbGlzdF9fbG9vcCB7XG4gIG1hcmdpbjogMCAtMzVweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgLm5ld3MtbGlzdF9fbG9vcCB7XG4gICAgICBtYXJnaW46IDA7IH0gfVxuXG4vKipcclxuICogTmV3cyBpdGVtLlxyXG4gKi9cbi5uZXdzLWl0ZW0ge1xuICB3aWR0aDogY2FsYyg1MCUgLSA3MHB4KTtcbiAgbWFyZ2luOiAwIDM1cHggNTBweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAubmV3cy1pdGVtIHtcbiAgICAgIG1heC13aWR0aDogNjUwcHg7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLm5ld3MtaXRlbSB7XG4gICAgICBtYXgtd2lkdGg6IDU3MHB4OyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAubmV3cy1pdGVtIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWFyZ2luOiBhdXRvOyB9IH1cblxuLm5ld3MtaXRlbV9fc3VidGl0bGUge1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBOZXdzIHNpbmdsZVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIE1haW4gc2V0dGluZ3MuXHJcbiAqL1xuLm5ld3Mtc2luZ2xlIHtcbiAgcGFkZGluZy10b3A6IDEwMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTAwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5uZXdzLXNpbmdsZSB7XG4gICAgICBwYWRkaW5nLXRvcDogNTBweDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiA1MHB4OyB9IH1cbiAgLm5ld3Mtc2luZ2xlIC53cmFwcGVyIHtcbiAgICBtYXgtd2lkdGg6IDgyMHB4O1xuICAgIG1hcmdpbjogYXV0bzsgfVxuICAubmV3cy1zaW5nbGUgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogNTcwcHg7IH1cblxuLyoqXHJcbiAqIE5ld3Mgc2luZ2xlIHRpdGxlLlxyXG4gKi9cbi5uZXdzLXNpbmdsZV9fdGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbi5uZXdzLXNpbmdsZV9fc3VidGl0bGUge1xuICBtYXJnaW4tYm90dG9tOiA1MHB4OyB9XG5cbi8qKlxyXG4gKiBCYWNrIGJ1dHRvbi5cclxuICovXG4ubmV3cy1zaW5nbGVfX2dvYmFjayB7XG4gIG1hcmdpbi10b3A6IDMwcHg7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgUGFnZSBoZWFkZXJcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBNYWluIHNldHRpbmdzLlxyXG4gKi9cbi5wYWdlLWhlYWRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLWhlaWdodDogNTAwcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgIC5wYWdlLWhlYWRlciB7XG4gICAgICBtaW4taGVpZ2h0OiAwOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDM1MHB4OyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5wYWdlLWhlYWRlciB7XG4gICAgICBtaW4taGVpZ2h0OiA0NTBweDsgfSB9XG4gIC5wYWdlLWhlYWRlciAud3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDEwOyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgICAucGFnZS1oZWFkZXIgLndyYXBwZXIge1xuICAgICAgICBwYWRkaW5nOiAwIDIwcHg7IH0gfVxuICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci15ZWxsb3cge1xuICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgI2VlMWIzYjtcbiAgICBiYWNrZ3JvdW5kOiAjYzY5OTM5OyB9XG4gICAgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3IteWVsbG93IC5wYWdlLWhlYWRlcl9fdGl0bGUge1xuICAgICAgYmFja2dyb3VuZDogI2M2OTkzOTsgfVxuICAgICAgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3IteWVsbG93IC5wYWdlLWhlYWRlcl9fdGl0bGU6OmJlZm9yZSwgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3IteWVsbG93IC5wYWdlLWhlYWRlcl9fdGl0bGU6OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2M2OTkzOTsgfVxuICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1yZWQge1xuICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgI2M2OTkzOTtcbiAgICBiYWNrZ3JvdW5kOiAjZWUxYjNiOyB9XG4gICAgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItcmVkIC5wYWdlLWhlYWRlcl9fdGl0bGUge1xuICAgICAgYmFja2dyb3VuZDogI2VlMWIzYjsgfVxuICAgICAgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItcmVkIC5wYWdlLWhlYWRlcl9fdGl0bGU6OmJlZm9yZSwgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItcmVkIC5wYWdlLWhlYWRlcl9fdGl0bGU6OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2VlMWIzYjsgfVxuICAgIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLXJlZCAucGFnZS1oZWFkZXJfX3BhZ2UtdGl0bGUsXG4gICAgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItcmVkIC5wYWdlLWhlYWRlcl9fY29udGFjdC1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZDogI2M2OTkzOTsgfVxuICAgICAgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItcmVkIC5wYWdlLWhlYWRlcl9fcGFnZS10aXRsZTo6YmVmb3JlLCAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1yZWQgLnBhZ2UtaGVhZGVyX19wYWdlLXRpdGxlOjphZnRlcixcbiAgICAgIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLXJlZCAucGFnZS1oZWFkZXJfX2NvbnRhY3QtYnV0dG9uOjpiZWZvcmUsXG4gICAgICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1yZWQgLnBhZ2UtaGVhZGVyX19jb250YWN0LWJ1dHRvbjo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjYzY5OTM5OyB9XG4gIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLWJsdWUge1xuICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgI2VlMWIzYjtcbiAgICBiYWNrZ3JvdW5kOiAjM2U1Mzc5OyB9XG4gICAgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItYmx1ZSAucGFnZS1oZWFkZXJfX3RpdGxlIHtcbiAgICAgIGJhY2tncm91bmQ6ICMzZTUzNzk7IH1cbiAgICAgIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLWJsdWUgLnBhZ2UtaGVhZGVyX190aXRsZTo6YmVmb3JlLCAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1ibHVlIC5wYWdlLWhlYWRlcl9fdGl0bGU6OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzNlNTM3OTsgfVxuICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1ibHVlLXllbGxvdy1idXR0b25zIHtcbiAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICNlZTFiM2I7XG4gICAgYmFja2dyb3VuZDogIzNlNTM3OTsgfVxuICAgIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLWJsdWUteWVsbG93LWJ1dHRvbnMgLnBhZ2UtaGVhZGVyX19jb250YWN0LWJ1dHRvbixcbiAgICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1ibHVlLXllbGxvdy1idXR0b25zIC5wYWdlLWhlYWRlcl9fcGFnZS10aXRsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmZjYzI0O1xuICAgICAgY29sb3I6IGJsYWNrOyB9XG4gICAgICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1ibHVlLXllbGxvdy1idXR0b25zIC5wYWdlLWhlYWRlcl9fY29udGFjdC1idXR0b246OmJlZm9yZSwgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItYmx1ZS15ZWxsb3ctYnV0dG9ucyAucGFnZS1oZWFkZXJfX2NvbnRhY3QtYnV0dG9uOjphZnRlcixcbiAgICAgIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLWJsdWUteWVsbG93LWJ1dHRvbnMgLnBhZ2UtaGVhZGVyX19wYWdlLXRpdGxlOjpiZWZvcmUsXG4gICAgICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1ibHVlLXllbGxvdy1idXR0b25zIC5wYWdlLWhlYWRlcl9fcGFnZS10aXRsZTo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZjYzI0OyB9XG4gIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLW9yYW5nZSB7XG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAjM2U1Mzc5O1xuICAgIGJhY2tncm91bmQ6ICNmZjY2MDA7IH1cbiAgICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1vcmFuZ2UgLnBhZ2UtaGVhZGVyX190aXRsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmY2NjAwOyB9XG4gICAgICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1vcmFuZ2UgLnBhZ2UtaGVhZGVyX190aXRsZTo6YmVmb3JlLCAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1vcmFuZ2UgLnBhZ2UtaGVhZGVyX190aXRsZTo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmY2NjAwOyB9XG4gIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLWxpZ2h0LW9yYW5nZSB7XG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAjM2U1Mzc5O1xuICAgIGJhY2tncm91bmQ6ICNmZjk5MDA7IH1cbiAgICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1saWdodC1vcmFuZ2UgLnBhZ2UtaGVhZGVyX190aXRsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmY5OTAwOyB9XG4gICAgICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1saWdodC1vcmFuZ2UgLnBhZ2UtaGVhZGVyX190aXRsZTo6YmVmb3JlLCAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1saWdodC1vcmFuZ2UgLnBhZ2UtaGVhZGVyX190aXRsZTo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmY5OTAwOyB9XG4gIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLWxpZ2h0LWJsdWUge1xuICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgI2VlMWIzYjtcbiAgICBiYWNrZ3JvdW5kOiAjMjBiYmVlOyB9XG4gICAgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItbGlnaHQtYmx1ZSAucGFnZS1oZWFkZXJfX3RpdGxlIHtcbiAgICAgIGJhY2tncm91bmQ6ICMyMGJiZWU7IH1cbiAgICAgIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLWxpZ2h0LWJsdWUgLnBhZ2UtaGVhZGVyX190aXRsZTo6YmVmb3JlLCAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1saWdodC1ibHVlIC5wYWdlLWhlYWRlcl9fdGl0bGU6OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzIwYmJlZTsgfVxuICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1kYXJrLWdyZWVuIHtcbiAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICMzZTUzNzk7XG4gICAgYmFja2dyb3VuZDogIzVkYTMyZTsgfVxuICAgIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLWRhcmstZ3JlZW4gLnBhZ2UtaGVhZGVyX190aXRsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjNWRhMzJlOyB9XG4gICAgICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1kYXJrLWdyZWVuIC5wYWdlLWhlYWRlcl9fdGl0bGU6OmJlZm9yZSwgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItZGFyay1ncmVlbiAucGFnZS1oZWFkZXJfX3RpdGxlOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICM1ZGEzMmU7IH1cbiAgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItbGlnaHQtZ3JlZW4ge1xuICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgI2VlMWIzYjtcbiAgICBiYWNrZ3JvdW5kOiAjMDBjYzAwOyB9XG4gICAgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItbGlnaHQtZ3JlZW4gLnBhZ2UtaGVhZGVyX190aXRsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjMDBjYzAwOyB9XG4gICAgICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1saWdodC1ncmVlbiAucGFnZS1oZWFkZXJfX3RpdGxlOjpiZWZvcmUsIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLWxpZ2h0LWdyZWVuIC5wYWdlLWhlYWRlcl9fdGl0bGU6OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzAwY2MwMDsgfVxuICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1waW5rIHtcbiAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICNmZjAwNjY7XG4gICAgYmFja2dyb3VuZDogI2ZmMDA2NjsgfVxuICAgIC5wYWdlLWhlYWRlci5iYWNrZ3JvdW5kLWNvbG9yLXBpbmsgLnBhZ2UtaGVhZGVyX190aXRsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmYwMDY2OyB9XG4gICAgICAucGFnZS1oZWFkZXIuYmFja2dyb3VuZC1jb2xvci1waW5rIC5wYWdlLWhlYWRlcl9fdGl0bGU6OmJlZm9yZSwgLnBhZ2UtaGVhZGVyLmJhY2tncm91bmQtY29sb3ItcGluayAucGFnZS1oZWFkZXJfX3RpdGxlOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZjAwNjY7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLnBhZ2UtaGVhZGVyLmhhcy1zdWJ0aXRsZSAucGFnZS1oZWFkZXJfX3RpdGxlIHtcbiAgICAgIHBhZGRpbmc6IDEwMHB4IDA7IH0gfVxuICAucGFnZS1oZWFkZXIuZnVsbC10aXRsZS13aWR0aCAudGl0bGUge1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7IH1cbiAgLnBhZ2UtaGVhZGVyLmhhcy1pbWFnZTpub3QoLmZ1bGwtdGl0bGUtd2lkdGgpIC5wYWdlLWhlYWRlcl9fdGl0bGUge1xuICAgIHdpZHRoOiAzNSU7IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgICAucGFnZS1oZWFkZXIuaGFzLWltYWdlOm5vdCguZnVsbC10aXRsZS13aWR0aCkgLnBhZ2UtaGVhZGVyX190aXRsZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlOyB9IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgICAucGFnZS1oZWFkZXIuaGFzLWltYWdlOm5vdCguZnVsbC10aXRsZS13aWR0aCkgLnBhZ2UtaGVhZGVyX190aXRsZSB7XG4gICAgICAgIHdpZHRoOiA0MCU7IH0gfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgICAucGFnZS1oZWFkZXIuaGFzLWltYWdlOm5vdCguZnVsbC10aXRsZS13aWR0aCkgLnBhZ2UtaGVhZGVyX190aXRsZSB7XG4gICAgICAgIHBhZGRpbmc6IDEwMHB4IDA7IH0gfVxuICAucGFnZS1oZWFkZXIuaGFzLWltYWdlOm5vdCguZnVsbC10aXRsZS13aWR0aCkgLnRpdGxlIHtcbiAgICBtYXgtd2lkdGg6IDQwMHB4OyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgICAgLnBhZ2UtaGVhZGVyLmhhcy1pbWFnZTpub3QoLmZ1bGwtdGl0bGUtd2lkdGgpIC50aXRsZSB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTsgfSB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgICAucGFnZS1oZWFkZXIuaGFzLWltYWdlOm5vdCguZnVsbC10aXRsZS13aWR0aCkgLnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAyNXB4O1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgbWF4LXdpZHRoOiA1MDBweDsgfSB9XG4gIC5wYWdlLWhlYWRlci5mdWxsc2NyZWVuIC5wYWdlLWhlYWRlcl9fdGl0bGUge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG4gICAgLnBhZ2UtaGVhZGVyLmZ1bGxzY3JlZW4gLnBhZ2UtaGVhZGVyX190aXRsZTo6YmVmb3JlLCAucGFnZS1oZWFkZXIuZnVsbHNjcmVlbiAucGFnZS1oZWFkZXJfX3RpdGxlOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHtcbiAgICAucGFnZS1oZWFkZXIuc3BsaXRzY3JlZW4gLnBhZ2UtaGVhZGVyX19iYWNrZ3JvdW5kIHtcbiAgICAgIHBvc2l0aW9uOiBzdGF0aWM7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgLnBhZ2UtaGVhZGVyLnNwbGl0c2NyZWVuLmhhcy1pbWFnZSAucGFnZS1oZWFkZXJfX3RpdGxlIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICBwYWRkaW5nOiAyNXB4IDAgMzBweDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAucGFnZS1oZWFkZXIuc3BsaXRzY3JlZW4uaGFzLWltYWdlIC5wYWdlLWhlYWRlcl9fdGl0bGUgLmhlYWRpbmctMSwgLnBhZ2UtaGVhZGVyLnNwbGl0c2NyZWVuLmhhcy1pbWFnZSAucGFnZS1oZWFkZXJfX3RpdGxlIC5jbXMtb3V0cHV0IGgxLCAuY21zLW91dHB1dCAucGFnZS1oZWFkZXIuc3BsaXRzY3JlZW4uaGFzLWltYWdlIC5wYWdlLWhlYWRlcl9fdGl0bGUgaDEge1xuICAgICAgbWFyZ2luLXRvcDogLTQwcHg7IH0gfVxuICAucGFnZS1oZWFkZXIuc3BsaXRzY3JlZW4uaGFzLWltYWdlIC5wYWdlLWhlYWRlcl9fdGl0bGU6OmFmdGVyIHtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAtMTAlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgICAucGFnZS1oZWFkZXIuc3BsaXRzY3JlZW4uaGFzLWltYWdlIC5wYWdlLWhlYWRlcl9fYmFja2dyb3VuZCBpbWcge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwJSk7XG4gICAgICBvYmplY3QtcG9zaXRpb246IHRvcDsgfSB9XG5cbi8qKlxyXG4gKiBIZWFkZXIgdGl0bGUuXHJcbiAqL1xuLnBhZ2UtaGVhZGVyX190aXRsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtaW4taGVpZ2h0OiA1MDBweDtcbiAgei1pbmRleDogMTA7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgIC5wYWdlLWhlYWRlcl9fdGl0bGUge1xuICAgICAgbWluLWhlaWdodDogMTQwcHg7XG4gICAgICBtYXJnaW4tYm90dG9tOiA2NXB4O1xuICAgICAgcGFkZGluZzogMTUlIDA7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLnBhZ2UtaGVhZGVyX190aXRsZSB7XG4gICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLnBhZ2UtaGVhZGVyX190aXRsZSB7XG4gICAgICBtaW4taGVpZ2h0OiAzNTBweDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAucGFnZS1oZWFkZXJfX3RpdGxlIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDQ1MHB4OyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAucGFnZS1oZWFkZXJfX3RpdGxlIHtcbiAgICAgIGhlaWdodDogNTAwcHg7XG4gICAgICBwYWRkaW5nOiAxMDBweCAwOyB9IH1cbiAgLnBhZ2UtaGVhZGVyX190aXRsZTo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAxMDAlO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBjb250ZW50OiAnJzsgfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHtcbiAgICAgIC5wYWdlLWhlYWRlcl9fdGl0bGU6OmJlZm9yZSB7XG4gICAgICAgIGxlZnQ6IC0yMHB4O1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgNDBweCk7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIHotaW5kZXg6IC0xOyB9IH1cbiAgLnBhZ2UtaGVhZGVyX190aXRsZTo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDIwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0cmFuc2Zvcm06IHNrZXdYKC0xNWRlZyk7XG4gICAgY29udGVudDogJyc7XG4gICAgei1pbmRleDogLTE7IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgICAucGFnZS1oZWFkZXJfX3RpdGxlOjphZnRlciB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBib3R0b206IC0xMCU7XG4gICAgICAgIGxlZnQ6IC0yMHB4O1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgNDBweCk7XG4gICAgICAgIHRyYW5zZm9ybTogc2tld1koLTVkZWcpOyB9IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAgIC5wYWdlLWhlYWRlcl9fdGl0bGU6OmFmdGVyIHtcbiAgICAgICAgbGVmdDogNTAlOyB9IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgICAucGFnZS1oZWFkZXJfX3RpdGxlOjphZnRlciB7XG4gICAgICAgIGxlZnQ6IDI1JTsgfSB9XG4gIC5wYWdlLWhlYWRlcl9fdGl0bGUgLnRpdGxlIHtcbiAgICB3aWR0aDogMTAwJTsgfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHtcbiAgICAgIC5wYWdlLWhlYWRlcl9fdGl0bGUgLnRpdGxlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOyB9IH1cblxuLyoqXHJcbiAqIFN1YnRpdGxlLlxyXG4gKi9cbi5wYWdlLWhlYWRlcl9fc3VidGl0bGUge1xuICBtYXJnaW4tdG9wOiAyMHB4O1xuICBjb2xvcjogd2hpdGU7IH1cblxuLyoqXHJcbiAqIEJhY2tncm91bmQgaW1hZ2UuXHJcbiAqL1xuLnBhZ2UtaGVhZGVyX19iYWNrZ3JvdW5kIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDA7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgIC5wYWdlLWhlYWRlcl9fYmFja2dyb3VuZCB7XG4gICAgICBoZWlnaHQ6IDM4NXB4OyB9IH1cbiAgLnBhZ2UtaGVhZGVyX19iYWNrZ3JvdW5kIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlOyB9XG5cbi8qKlxyXG4gKiBQYWdlIHRpdGxlIGNvbnRhaW5lci5cclxuICovXG4ucGFnZS1oZWFkZXJfX3BhZ2UtdGl0bGUge1xuICBmb250LXNpemU6IDI1cHg7XG4gIGZvbnQtc2l6ZTogMi41cmVtO1xuICBsaW5lLWhlaWdodDogMS40OGVtO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzYwcHg7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIGJhY2tncm91bmQ6ICNlZTFiM2I7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuODNweDtcbiAgei1pbmRleDogMjA7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgIC5wYWdlLWhlYWRlcl9fcGFnZS10aXRsZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIG1heC13aWR0aDogNzAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgcGFkZGluZzogMTRweDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5wYWdlLWhlYWRlcl9fcGFnZS10aXRsZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIG1heC13aWR0aDogNzAlO1xuICAgICAgaGVpZ2h0OiA1N3B4O1xuICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDsgfVxuICAgICAgLnBhZ2UtaGVhZGVyX19wYWdlLXRpdGxlICsgZGl2IHtcbiAgICAgICAgcGFkZGluZy10b3A6IDU3cHg7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLnBhZ2UtaGVhZGVyX19wYWdlLXRpdGxlIHtcbiAgICAgIHBhZGRpbmctbGVmdDogNTBweDsgfSB9XG4gIC5wYWdlLWhlYWRlcl9fcGFnZS10aXRsZTo6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAxMDAlO1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMjAwJTtcbiAgICBiYWNrZ3JvdW5kOiAjZWUxYjNiO1xuICAgIGNvbnRlbnQ6ICcnOyB9XG4gIC5wYWdlLWhlYWRlcl9fcGFnZS10aXRsZTo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IGNhbGMoMTAwJSAtIDEwMHB4KTtcbiAgICB3aWR0aDogMTgwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRyYW5zZm9ybTogc2tld1goLTQ1ZGVnKTtcbiAgICBiYWNrZ3JvdW5kOiAjZWUxYjNiO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHotaW5kZXg6IC0xOyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgICAgLnBhZ2UtaGVhZGVyX19wYWdlLXRpdGxlOjphZnRlciB7XG4gICAgICAgIGxlZnQ6IGNhbGMoMTAwJSAtIDEyNXB4KTtcbiAgICAgICAgdHJhbnNmb3JtOiBza2V3WCgtMjVkZWcpOyB9IH1cblxuLyoqXHJcbiAqIENvbnRhY3QgYnV0dG9uIGNvbnRhaW5lci5cclxuICovXG4ucGFnZS1oZWFkZXJfX2NvbnRhY3QtYnV0dG9uIHtcbiAgZm9udC1zaXplOiAzMHB4O1xuICBmb250LXNpemU6IDNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjIzMzMzZW07XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcGFkZGluZzogMjBweDtcbiAgYmFja2dyb3VuZDogI2VlMWIzYjtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsZXR0ZXItc3BhY2luZzogMC44M3B4O1xuICB6LWluZGV4OiAyMDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgLnBhZ2UtaGVhZGVyX19jb250YWN0LWJ1dHRvbiB7XG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLnBhZ2UtaGVhZGVyX19jb250YWN0LWJ1dHRvbiB7XG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5wYWdlLWhlYWRlcl9fY29udGFjdC1idXR0b24ge1xuICAgICAgcGFkZGluZy1yaWdodDogNTBweDsgfSB9XG4gIC5wYWdlLWhlYWRlcl9fY29udGFjdC1idXR0b246OmJlZm9yZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogY2FsYygxMDAlIC0gNTBweCk7XG4gICAgYm90dG9tOiAwO1xuICAgIHdpZHRoOiAxODBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNmb3JtOiBza2V3WCgtNDVkZWcpO1xuICAgIGJhY2tncm91bmQ6ICNlZTFiM2I7XG4gICAgY29udGVudDogJyc7XG4gICAgei1pbmRleDogLTE7IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgICAucGFnZS1oZWFkZXJfX2NvbnRhY3QtYnV0dG9uOjpiZWZvcmUge1xuICAgICAgICByaWdodDogY2FsYygxMDAlIC0gODBweCk7XG4gICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgdHJhbnNmb3JtOiBza2V3WCgtMjVkZWcpOyB9IH1cbiAgLnBhZ2UtaGVhZGVyX19jb250YWN0LWJ1dHRvbjo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgd2lkdGg6IDIwMCU7XG4gICAgYmFja2dyb3VuZDogI2VlMWIzYjtcbiAgICBjb250ZW50OiAnJzsgfVxuICAucGFnZS1oZWFkZXJfX2NvbnRhY3QtYnV0dG9uLmRlc2t0b3Age1xuICAgIGRpc3BsYXk6IG5vbmU7IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7XG4gICAgICAucGFnZS1oZWFkZXJfX2NvbnRhY3QtYnV0dG9uLmRlc2t0b3Age1xuICAgICAgICBkaXNwbGF5OiBibG9jazsgfSB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgICAucGFnZS1oZWFkZXJfX2NvbnRhY3QtYnV0dG9uLmRlc2t0b3Age1xuICAgICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgLnBhZ2UtaGVhZGVyX19jb250YWN0LWJ1dHRvbi5tb2JpbGUge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuODVlbTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogNTUlO1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAgICAgLnBhZ2UtaGVhZGVyX19jb250YWN0LWJ1dHRvbi5tb2JpbGUge1xuICAgICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAgIC5wYWdlLWhlYWRlcl9fY29udGFjdC1idXR0b24ubW9iaWxlIHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjg1ZW07XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMzUlO1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgICAgICAgLnBhZ2UtaGVhZGVyX19jb250YWN0LWJ1dHRvbi5tb2JpbGU6OmJlZm9yZSB7XG4gICAgICAgICAgd2lkdGg6IDkwcHg7IH0gfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBQYWdpbmF0aW9uXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogTWFpbiBzZXR0aW5ncy5cclxuICovXG4ucGFnaW5hdGlvbiB7XG4gIGZvbnQtc2l6ZTogMzBweDtcbiAgZm9udC1zaXplOiAzcmVtO1xuICBsaW5lLWhlaWdodDogMS4yMzMzM2VtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDUwMDsgfVxuICAucGFnaW5hdGlvbiAucGFnZS1udW1iZXJzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWluLXdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICAgIG1hcmdpbjogMCA1cHg7XG4gICAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7IH1cbiAgICAucGFnaW5hdGlvbiAucGFnZS1udW1iZXJzLmN1cnJlbnQge1xuICAgICAgYmFja2dyb3VuZDogI2M2OTkzOTtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgICAgLnBhZ2luYXRpb24gLnBhZ2UtbnVtYmVyczpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNjNjk5Mzk7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTsgfVxuICAgICAgICAucGFnaW5hdGlvbiAucGFnZS1udW1iZXJzOmhvdmVyIHN2ZyB7XG4gICAgICAgICAgY29sb3I6IHdoaXRlOyB9IH1cbiAgLnBhZ2luYXRpb24gLnByZXYsXG4gIC5wYWdpbmF0aW9uIC5uZXh0IHtcbiAgICBtYXJnaW46IDA7IH1cbiAgLnBhZ2luYXRpb24gc3ZnIHtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgY29sb3I6IGJsYWNrOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFNlYXJjaCBmb3JtXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogTWFpbiBmb3JtLlxyXG4gKi9cbi5zZWFyY2gtZm9ybSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMTUwcHg7XG4gIGxlZnQ6IDQwcHg7XG4gIHdpZHRoOiA2MCU7XG4gIHRyYW5zaXRpb246IHRvcCAzNTBtcyBlYXNlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5zZWFyY2gtZm9ybSB7XG4gICAgICBsZWZ0OiAtMTIwcHggIWltcG9ydGFudDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLnNlYXJjaC1mb3JtIHtcbiAgICAgIGxlZnQ6IC00MHB4OyB9IH1cbiAgLnNlYXJjaC1mb3JtIGlucHV0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDQ1cHg7XG4gICAgcGFkZGluZzogNXB4O1xuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjM2U1Mzc5OyB9XG4gIC5zZWFyY2gtZm9ybS5pcy1hY3RpdmUge1xuICAgIHRvcDogMDsgfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgICAgLnNlYXJjaC1mb3JtLmlzLWFjdGl2ZSB7XG4gICAgICAgIHRvcDogMzBweDsgfSB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAgIC5zZWFyY2gtZm9ybS5pcy1hY3RpdmUge1xuICAgICAgICB0b3A6IC0xMHB4OyB9IH1cblxuLyoqXHJcbiAqIFNlYXJjaCBidXR0b24uXHJcbiAqL1xuLmhlYWRlcl9fc2VhcmNoLWJ1dHRvbiB7XG4gIG1hcmdpbi1sZWZ0OiAzMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7IH1cbiAgLmhlYWRlcl9fc2VhcmNoLWJ1dHRvbiBzdmcge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBjb2xvcjogI2VlMWIzYjsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBTZWFyY2ggcmVzdWx0cy5cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBNYWluIGVsZW1lbnQuXHJcbiAqL1xuLnNlYXJjaC1yZXN1bHRzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICMzZTUzNzk7IH1cbiAgLnNlYXJjaC1yZXN1bHRzIC50ZWFzZXJfX3VwcGVyIGgyIHtcbiAgICBmb250LXdlaWdodDogNjAwOyB9XG5cbi8qKlxyXG4gKiBDdXN0b20gd3JhcHBlciBydWxlcy5cclxuICovXG4uc2VhcmNoX193cmFwcGVyIHtcbiAgbWF4LXdpZHRoOiA4MjBweDtcbiAgbWFyZ2luOiAxMDBweCBhdXRvOyB9XG5cbi8qKlxyXG4gKiBUaXRsZS5cclxuICovXG4uc2VhcmNoLXJlc3VsdHNfX3RpdGxlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTsgfVxuICAuc2VhcmNoLXJlc3VsdHNfX3RpdGxlIGgzIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogNTBweCAwO1xuICAgIGJhY2tncm91bmQ6ICNjNjk5Mzk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHotaW5kZXg6IDIwOyB9XG4gICAgLnNlYXJjaC1yZXN1bHRzX190aXRsZSBoMzo6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3R0b206IDA7XG4gICAgICBsZWZ0OiA0MCU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHRyYW5zZm9ybTogc2tld1goLTMwZGVnKTtcbiAgICAgIGJhY2tncm91bmQ6ICNjNjk5Mzk7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHotaW5kZXg6IC0xOyB9XG4gIC5zZWFyY2gtcmVzdWx0c19fdGl0bGU6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMTAwJTtcbiAgICBib3R0b206IDA7XG4gICAgd2lkdGg6IDIwMCU7XG4gICAgYmFja2dyb3VuZDogI2M2OTkzOTtcbiAgICBjb250ZW50OiAnJzsgfVxuXG4vKipcclxuICogU3VidGl0bGUuXHJcbiAqL1xuLnNlYXJjaF9fc3VidGl0bGUge1xuICBtYXJnaW4tdG9wOiAxMHB4OyB9XG5cbi8qKlxyXG4gKiBZb3UgaGF2ZSBzZWFyY2hlZCBmb3IuXHJcbiAqL1xuLnNlYXJjaC1yZXN1bHRzX19xdWVyeSB7XG4gIG1hcmdpbi1ib3R0b206IDUwcHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7IH1cblxuLyoqXHJcbiAqIFNlYXJjaCByZXN1bHQuXHJcbiAqL1xuLnNlYXJjaC1yZXN1bHRzX19yZXN1bHRzIHtcbiAgbWFyZ2luLWJvdHRvbTogMTAwcHg7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgU3VibWVudVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIFN1Ym1lbnUgYnV0dG9uLlxyXG4gKi9cbi5zdWJtZW51LWJ1dHRvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxuICAuc3VibWVudS1idXR0b24uaXMtYWN0aXZlIHN2ZyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfVxuXG4vKipcclxuICogU3VibWVudSBjb250YWluZXIuXHJcbiAqL1xuLnN1Ym1lbnUtY29udGFpbmVyIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDY5cHg7XG4gIHBhZGRpbmc6IDIwcHggMzBweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2VlMWIzYjtcbiAgYmFja2dyb3VuZDogI2YyZjJmMjsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5zdWJtZW51LWNvbnRhaW5lciB7XG4gICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICAgIGJvcmRlcjogMDsgfSB9XG5cbi8qKlxyXG4gKiBTdWJtZW51LlxyXG4gKi9cbi8qKlxyXG4gKiBTdWJtZW51IGl0ZW0uXHJcbiAqL1xuLnN1Ym1lbnUgPiAubWVudS1pdGVtIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAuc3VibWVudSA+IC5tZW51LWl0ZW0ge1xuICAgICAgcGFkZGluZzogNXB4IDA7IH0gfVxuXG4vKipcclxuICogU3VibWVudSBpdGVtIGxpbmsuXHJcbiAqL1xuLnN1Ym1lbnUgPiAubWVudS1pdGVtID4gYSB7XG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLnN1Ym1lbnUgPiAubWVudS1pdGVtID4gYTpob3ZlciB7XG4gICAgICBjb2xvcjogI2VlMWIzYjsgfSB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFRlbXBsYXRlIGRlZmF1bHQuXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogTWFpbiBzZXR0aW5ncy5cclxuICovXG4udGVhc2VycyB7XG4gIGJhY2tncm91bmQ6IHdoaXRlOyB9XG5cbi8qKlxyXG4gKiBTaW5nbGUgdGVhc2VyLlxyXG4gKi9cbi50ZWFzZXIge1xuICBtYXJnaW4tYm90dG9tOiA1MHB4O1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDI1MG1zIGVhc2U7XG4gIGJvcmRlcjogM3B4IHNvbGlkICNjNjk5Mzk7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAudGVhc2VyIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7IH0gfVxuICAudGVhc2VyOm50aC1sYXN0LWNoaWxkKDEpIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG4gIC50ZWFzZXI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICMzZTUzNzk7XG4gICAgY29sb3I6IHdoaXRlOyB9XG4gICAgLnRlYXNlcjpob3ZlciAudGVhc2VyX19lZGl0b3IgcCB7XG4gICAgICBjb2xvcjogd2hpdGU7IH1cblxuLyoqXHJcbiAqIFVwcGVyIHBhcnQgb2YgdGVhc2VyLlxyXG4gKi9cbi50ZWFzZXJfX3VwcGVyIHtcbiAgcGFkZGluZzogNDBweCA1MHB4O1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDI1MG1zIGVhc2U7XG4gIGJhY2tncm91bmQ6ICNjNjk5Mzk7XG4gIGNvbG9yOiB3aGl0ZTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgLnRlYXNlcl9fdXBwZXIge1xuICAgICAgcGFkZGluZzogMTBweDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC50ZWFzZXJfX3VwcGVyIHtcbiAgICAgIHBhZGRpbmc6IDQwcHggMzBweDsgfSB9XG5cbi50ZWFzZXJfX3RpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkOyB9XG5cbi8qKlxyXG4gKiBMb3dlciBwYXJ0IG9mIHRlYXNlci5cclxuICovXG4udGVhc2VyX19sb3dlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogNTBweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgLnRlYXNlcl9fbG93ZXIge1xuICAgICAgcGFkZGluZzogMTBweDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC50ZWFzZXJfX2xvd2VyIHtcbiAgICAgIHBhZGRpbmc6IDMwcHg7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gICAgLnRlYXNlcl9fbG93ZXIuaGFzLXRhZyB7XG4gICAgICBwYWRkaW5nLXRvcDogNDBweDsgfSB9XG5cbi8qKlxyXG4gKiBFZGl0b3IgcnVsZXMuXHJcbiAqL1xuLnRlYXNlcl9fZWRpdG9yIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBUZW1wbGF0ZSBkZWZhdWx0LlxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIE1haW4gdGVtcGxhdGUuXHJcbiAqL1xuLnRlbXBsYXRlLWRlZmF1bHQge1xuICBwYWRkaW5nLXRvcDogMTAwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMDBweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLnRlbXBsYXRlLWRlZmF1bHQge1xuICAgICAgcGFkZGluZy10b3A6IDUwcHg7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogNTBweDsgfSB9XG4gIC50ZW1wbGF0ZS1kZWZhdWx0IC53cmFwcGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgICAgLnRlbXBsYXRlLWRlZmF1bHQgLndyYXBwZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7IH0gfVxuXG4vKipcclxuICogTGVmdCBjb2x1bW4uXHJcbiAqL1xuLnRlbXBsYXRlLWRlZmF1bHRfX2xlZnQge1xuICB3aWR0aDogY2FsYyg3MCUgLSAyNXB4KTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC50ZW1wbGF0ZS1kZWZhdWx0X19sZWZ0IHtcbiAgICAgIHdpZHRoOiAxMDAlOyB9IH1cblxuLyoqXHJcbiAqIFJpZ2h0IGNvbHVtbi5cclxuICovXG4udGVtcGxhdGUtZGVmYXVsdF9fcmlnaHQge1xuICB3aWR0aDogY2FsYygzMCUgLSAyNXB4KTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC50ZW1wbGF0ZS1kZWZhdWx0X19yaWdodCB7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG5cbi8qKlxyXG4gKiBBZGRpdGlvbmFsIHJ1bGVzLlxyXG4gKi9cbi50ZW1wbGF0ZS1kZWZhdWx0IC53cmFwcGVyICsgLndyYXBwZXIge1xuICBtYXJnaW4tdG9wOiAxMDBweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gICAgLnRlbXBsYXRlLWRlZmF1bHQgLndyYXBwZXIgKyAud3JhcHBlciB7XG4gICAgICBtYXJnaW4tdG9wOiA1MHB4OyB9IH1cbiAgLnRlbXBsYXRlLWRlZmF1bHQgLndyYXBwZXIgKyAud3JhcHBlciAuZm9ybV9fY29udGFpbmVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEhlYWRlclxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIExhbmd1YWdlIHN3aXRjaC5cclxuICovXG4ubGFuZ3VhZ2Utc3dpdGNoIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNDJweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNzU1cHgpIHtcbiAgICAubGFuZ3VhZ2Utc3dpdGNoIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5sYW5ndWFnZS1zd2l0Y2gge1xuICAgICAgbWFyZ2luLWxlZnQ6IDQwcHg7IH0gfVxuXG4vKipcclxuICogU2luZ2xlIGl0ZW0uXHJcbiAqL1xuLmxhbmd1YWdlLXN3aXRjaF9faXRlbSB7XG4gIHBhZGRpbmc6IDAgMTBweDsgfVxuICAubGFuZ3VhZ2Utc3dpdGNoX19pdGVtOm50aC1jaGlsZCgxKSB7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2s7IH1cbiAgLmxhbmd1YWdlLXN3aXRjaF9faXRlbTpudGgtY2hpbGQoMikge1xuICAgIHBhZGRpbmc6IDAgMCAwIDEwcHg7IH1cbiAgLmxhbmd1YWdlLXN3aXRjaF9faXRlbS5pcy1hY3RpdmUge1xuICAgIGNvbG9yOiAjZWUxYjNiOyB9XG5cbi5sb2dvLXNsaWRlciB7XG4gIHBhZGRpbmctdG9wOiAxMDBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwMHB4OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAubG9nby1zbGlkZXIge1xuICAgICAgcGFkZGluZy10b3A6IDcwcHg7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogNzBweDsgfSB9XG5cbi5sb2dvLXNsaWRlcl9faXRlbXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAubG9nby1zbGlkZXJfX2l0ZW1zIC5sb2dvLWl0ZW0gaW1nIHtcbiAgICB3aWR0aDogMTkwcHg7XG4gICAgaGVpZ2h0OiBhdXRvOyB9XG4gIC5sb2dvLXNsaWRlcl9faXRlbXMgLm93bC1zdGFnZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOyB9XG4gIC5sb2dvLXNsaWRlcl9faXRlbXMgLm93bC1zdGFnZS1vdXRlciB7XG4gICAgcGFkZGluZzogMCAyMHB4O1xuICAgIHBhZGRpbmctbGVmdDogNTBweDsgfVxuICAubG9nby1zbGlkZXJfX2l0ZW1zIC5vd2wtc3RhZ2Utb3V0ZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxuICAubG9nby1zbGlkZXJfX2l0ZW1zIC5vd2wtc3RhZ2Utb3V0ZXIgPiAub3dsLXN0YWdlIHtcbiAgICBtYXJnaW46IDAgYXV0bzsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb2xvclxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIENvbG9yIHV0aWxpdHkgY2xhc3Nlcy5cclxuICovXG4vKipcclxuICAgICAgICogYGNvbG9yYCBibGFjay0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3ItYmxhY2stMTAwIHtcbiAgY29sb3I6IGJsYWNrOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgYmFja2dyb3VuZC1jb2xvcmAgYmxhY2stMTAwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmJhY2tncm91bmQtY29sb3ItYmxhY2stMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IH1cblxuLyoqXHJcbiAgICAgICAqIGBjb2xvcmAgIzQ1NDU0NS0yMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3ItYmxhY2stMjAwIHtcbiAgY29sb3I6ICM0NTQ1NDU7IH1cblxuLyoqXHJcbiAgICAgICAqIGBiYWNrZ3JvdW5kLWNvbG9yYCAjNDU0NTQ1LTIwMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5iYWNrZ3JvdW5kLWNvbG9yLWJsYWNrLTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NTQ1NDU7IH1cblxuLyoqXHJcbiAgICAgICAqIGBjb2xvcmAgcmdiYSgwLCAwLCAwLCAwLjEpLTEwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmNvbG9yLWJsYWNrLTEwIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTsgfVxuXG4vKipcclxuICAgICAgICogYGJhY2tncm91bmQtY29sb3JgIHJnYmEoMCwgMCwgMCwgMC4xKS0xMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5iYWNrZ3JvdW5kLWNvbG9yLWJsYWNrLTEwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgY29sb3JgIHdoaXRlLTEwMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5jb2xvci13aGl0ZS0xMDAge1xuICBjb2xvcjogd2hpdGU7IH1cblxuLyoqXHJcbiAgICAgICAqIGBiYWNrZ3JvdW5kLWNvbG9yYCB3aGl0ZS0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci13aGl0ZS0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfVxuXG4vKipcclxuICAgICAgICogYGNvbG9yYCAjZjJmMmYyLTIwMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5jb2xvci13aGl0ZS0yMDAge1xuICBjb2xvcjogI2YyZjJmMjsgfVxuXG4vKipcclxuICAgICAgICogYGJhY2tncm91bmQtY29sb3JgICNmMmYyZjItMjAwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmJhY2tncm91bmQtY29sb3Itd2hpdGUtMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjsgfVxuXG4vKipcclxuICAgICAgICogYGNvbG9yYCAjYzY5OTM5LTEwMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5jb2xvci1icm93bi0xMDAge1xuICBjb2xvcjogI2M2OTkzOTsgfVxuXG4vKipcclxuICAgICAgICogYGJhY2tncm91bmQtY29sb3JgICNjNjk5MzktMTAwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmJhY2tncm91bmQtY29sb3ItYnJvd24tMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2OTkzOTsgfVxuXG4vKipcclxuICAgICAgICogYGNvbG9yYCAjM2U1Mzc5LTEwMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5jb2xvci1ibHVlLTEwMCB7XG4gIGNvbG9yOiAjM2U1Mzc5OyB9XG5cbi8qKlxyXG4gICAgICAgKiBgYmFja2dyb3VuZC1jb2xvcmAgIzNlNTM3OS0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci1ibHVlLTEwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZTUzNzk7IH1cblxuLyoqXHJcbiAgICAgICAqIGBjb2xvcmAgIzIwYmJlZS01MCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5jb2xvci1ibHVlLTUwIHtcbiAgY29sb3I6ICMyMGJiZWU7IH1cblxuLyoqXHJcbiAgICAgICAqIGBiYWNrZ3JvdW5kLWNvbG9yYCAjMjBiYmVlLTUwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmJhY2tncm91bmQtY29sb3ItYmx1ZS01MCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMGJiZWU7IH1cblxuLyoqXHJcbiAgICAgICAqIGBjb2xvcmAgI2VlMWIzYi0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3ItcmVkLTEwMCB7XG4gIGNvbG9yOiAjZWUxYjNiOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgYmFja2dyb3VuZC1jb2xvcmAgI2VlMWIzYi0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci1yZWQtMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlMWIzYjsgfVxuXG4vKipcclxuICAgICAgICogYGNvbG9yYCAjZmZjYzI0LTEwMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5jb2xvci15ZWxsb3ctMTAwIHtcbiAgY29sb3I6ICNmZmNjMjQ7IH1cblxuLyoqXHJcbiAgICAgICAqIGBiYWNrZ3JvdW5kLWNvbG9yYCAjZmZjYzI0LTEwMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5iYWNrZ3JvdW5kLWNvbG9yLXllbGxvdy0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjYzI0OyB9XG5cbi8qKlxyXG4gICAgICAgKiBgY29sb3JgICNmZjY2MDAtMTAwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmNvbG9yLW9yYW5nZS0xMDAge1xuICBjb2xvcjogI2ZmNjYwMDsgfVxuXG4vKipcclxuICAgICAgICogYGJhY2tncm91bmQtY29sb3JgICNmZjY2MDAtMTAwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmJhY2tncm91bmQtY29sb3Itb3JhbmdlLTEwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjY2MDA7IH1cblxuLyoqXHJcbiAgICAgICAqIGBjb2xvcmAgI2ZmOTkwMC01MCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5jb2xvci1vcmFuZ2UtNTAge1xuICBjb2xvcjogI2ZmOTkwMDsgfVxuXG4vKipcclxuICAgICAgICogYGJhY2tncm91bmQtY29sb3JgICNmZjk5MDAtNTAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci1vcmFuZ2UtNTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5OTAwOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgY29sb3JgICM1ZGEzMmUtMTAwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmNvbG9yLWdyZWVuLTEwMCB7XG4gIGNvbG9yOiAjNWRhMzJlOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgYmFja2dyb3VuZC1jb2xvcmAgIzVkYTMyZS0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci1ncmVlbi0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWRhMzJlOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgY29sb3JgICMwMGNjMDAtNTAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3ItZ3JlZW4tNTAge1xuICBjb2xvcjogIzAwY2MwMDsgfVxuXG4vKipcclxuICAgICAgICogYGJhY2tncm91bmQtY29sb3JgICMwMGNjMDAtNTAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci1ncmVlbi01MCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGNjMDA7IH1cblxuLyoqXHJcbiAgICAgICAqIGBjb2xvcmAgI2ZmMDA2Ni0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3ItcGluay0xMDAge1xuICBjb2xvcjogI2ZmMDA2NjsgfVxuXG4vKipcclxuICAgICAgICogYGJhY2tncm91bmQtY29sb3JgICNmZjAwNjYtMTAwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmJhY2tncm91bmQtY29sb3ItcGluay0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwMDY2OyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIE9iamVjdCBGaXRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBPYmplY3QgZml0LlxyXG4gKlxyXG4gKiAxLiBGb250IGZhbWlseSBwb2x5ZmlsbCB3aXRoIChodHRwczovL2dpdGh1Yi5jb20vYmZyZWQtaXQvb2JqZWN0LWZpdC1pbWFnZXMpLlxyXG4gKi9cbi8qKlxyXG4gICAqIGBvYmplY3QtZml0YCBmaWxsIHV0aWxpdHkgY2xhc3MuXHJcbiAgICovXG4uZmlsbCB7XG4gIGZvbnQtZmFtaWx5OiBcIm9iamVjdC1maXQ6IGZpbGw7XCI7XG4gIC8qIDEgKi9cbiAgb2JqZWN0LWZpdDogZmlsbDsgfVxuXG4vKipcclxuICAgKiBgb2JqZWN0LWZpdGAgY29udGFpbiB1dGlsaXR5IGNsYXNzLlxyXG4gICAqL1xuLmNvbnRhaW4ge1xuICBmb250LWZhbWlseTogXCJvYmplY3QtZml0OiBjb250YWluO1wiO1xuICAvKiAxICovXG4gIG9iamVjdC1maXQ6IGNvbnRhaW47IH1cblxuLyoqXHJcbiAgICogYG9iamVjdC1maXRgIGNvdmVyIHV0aWxpdHkgY2xhc3MuXHJcbiAgICovXG4uY292ZXIge1xuICBmb250LWZhbWlseTogXCJvYmplY3QtZml0OiBjb3ZlcjtcIjtcbiAgLyogMSAqL1xuICBvYmplY3QtZml0OiBjb3ZlcjsgfVxuXG4vKipcclxuICAgKiBgb2JqZWN0LWZpdGAgbm9uZSB1dGlsaXR5IGNsYXNzLlxyXG4gICAqL1xuLm5vbmUge1xuICBmb250LWZhbWlseTogXCJvYmplY3QtZml0OiBub25lO1wiO1xuICAvKiAxICovXG4gIG9iamVjdC1maXQ6IG5vbmU7IH1cblxuLyoqXHJcbiAgICogYG9iamVjdC1maXRgIHNjYWxlLWRvd24gdXRpbGl0eSBjbGFzcy5cclxuICAgKi9cbi5zY2FsZS1kb3duIHtcbiAgZm9udC1mYW1pbHk6IFwib2JqZWN0LWZpdDogc2NhbGUtZG93bjtcIjtcbiAgLyogMSAqL1xuICBvYmplY3QtZml0OiBzY2FsZS1kb3duOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFBvc2l0aW9uXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogUG9zaXRpb24gdXRpbGl0eSBjbGFzcy5cclxuICovXG4uc3RhdGljIHtcbiAgcG9zaXRpb246IHN0YXRpYzsgfVxuXG4ucmVsYXRpdmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblxuLmFic29sdXRlIHtcbiAgcG9zaXRpb246IGFic29sdXRlOyB9XG5cbi5maXhlZCB7XG4gIHBvc2l0aW9uOiBmaXhlZDsgfVxuXG4uc3RpY2t5IHtcbiAgcG9zaXRpb246IHN0aWNreTsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBUZXh0XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogRm9udCBmYW1pbHkgdXRpbGl0eSBjbGFzc2VzLlxyXG4gKi9cbi50ZXh0LXhzLWRlZmF1bHQge1xuICBmb250LWZhbWlseTogXCJNb250c2VycmF0XCI7IH1cblxuLnRleHQtc20tZGVmYXVsdCB7XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIjsgfVxuXG4udGV4dC1tZC1kZWZhdWx0IHtcbiAgZm9udC1mYW1pbHk6IFwiTW9udHNlcnJhdFwiOyB9XG5cbi50ZXh0LWxnLWRlZmF1bHQge1xuICBmb250LWZhbWlseTogXCJNb250c2VycmF0XCI7IH1cblxuLnRleHQteGwtZGVmYXVsdCB7XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIjsgfVxuXG4vKipcclxuICogVGV4dCBzaXplIHV0aWxpdHkgY2xhc3Nlcy5cclxuICovXG4udGV4dC14cy1oMSB7XG4gIGZvbnQtc2l6ZTogNDVweDtcbiAgZm9udC1zaXplOiA0LjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU1NTU2ZW07IH1cblxuLnRleHQteHMtaDIge1xuICBmb250LXNpemU6IDMzcHg7XG4gIGZvbnQtc2l6ZTogMy4zcmVtO1xuICBsaW5lLWhlaWdodDogMS4yMTIxMmVtOyB9XG5cbi50ZXh0LXhzLWgzIHtcbiAgZm9udC1zaXplOiAzMHB4O1xuICBmb250LXNpemU6IDNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjIzMzMzZW07IH1cblxuLnRleHQteHMtaDQge1xuICBmb250LXNpemU6IDIycHg7XG4gIGZvbnQtc2l6ZTogMi4ycmVtO1xuICBsaW5lLWhlaWdodDogMS40NTQ1NWVtOyB9XG5cbi50ZXh0LXhzLWg1IHtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXNpemU6IDJyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjZlbTsgfVxuXG4udGV4dC14cy1oNiB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC1zaXplOiAxLjhyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjc3Nzc4ZW07IH1cblxuLnRleHQteHMtcCB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAyZW07IH1cblxuLnRleHQtc20taDEge1xuICBmb250LXNpemU6IDQ1cHg7XG4gIGZvbnQtc2l6ZTogNC41cmVtO1xuICBsaW5lLWhlaWdodDogMS41NTU1NmVtOyB9XG5cbi50ZXh0LXNtLWgyIHtcbiAgZm9udC1zaXplOiAzM3B4O1xuICBmb250LXNpemU6IDMuM3JlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjEyMTJlbTsgfVxuXG4udGV4dC1zbS1oMyB7XG4gIGZvbnQtc2l6ZTogMzBweDtcbiAgZm9udC1zaXplOiAzcmVtO1xuICBsaW5lLWhlaWdodDogMS4yMzMzM2VtOyB9XG5cbi50ZXh0LXNtLWg0IHtcbiAgZm9udC1zaXplOiAyMnB4O1xuICBmb250LXNpemU6IDIuMnJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNDU0NTVlbTsgfVxuXG4udGV4dC1zbS1oNSB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC1zaXplOiAycmVtO1xuICBsaW5lLWhlaWdodDogMS42ZW07IH1cblxuLnRleHQtc20taDYge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtc2l6ZTogMS44cmVtO1xuICBsaW5lLWhlaWdodDogMS43Nzc3OGVtOyB9XG5cbi50ZXh0LXNtLXAge1xuICBmb250LXNpemU6IDE1cHg7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBsaW5lLWhlaWdodDogMmVtOyB9XG5cbi50ZXh0LW1kLWgxIHtcbiAgZm9udC1zaXplOiA0NXB4O1xuICBmb250LXNpemU6IDQuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTU1NTZlbTsgfVxuXG4udGV4dC1tZC1oMiB7XG4gIGZvbnQtc2l6ZTogMzNweDtcbiAgZm9udC1zaXplOiAzLjNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjIxMjEyZW07IH1cblxuLnRleHQtbWQtaDMge1xuICBmb250LXNpemU6IDMwcHg7XG4gIGZvbnQtc2l6ZTogM3JlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjMzMzNlbTsgfVxuXG4udGV4dC1tZC1oNCB7XG4gIGZvbnQtc2l6ZTogMjJweDtcbiAgZm9udC1zaXplOiAyLjJyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ1NDU1ZW07IH1cblxuLnRleHQtbWQtaDUge1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNmVtOyB9XG5cbi50ZXh0LW1kLWg2IHtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXNpemU6IDEuOHJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNzc3NzhlbTsgfVxuXG4udGV4dC1tZC1wIHtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDJlbTsgfVxuXG4udGV4dC1sZy1oMSB7XG4gIGZvbnQtc2l6ZTogNDVweDtcbiAgZm9udC1zaXplOiA0LjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU1NTU2ZW07IH1cblxuLnRleHQtbGctaDIge1xuICBmb250LXNpemU6IDMzcHg7XG4gIGZvbnQtc2l6ZTogMy4zcmVtO1xuICBsaW5lLWhlaWdodDogMS4yMTIxMmVtOyB9XG5cbi50ZXh0LWxnLWgzIHtcbiAgZm9udC1zaXplOiAzMHB4O1xuICBmb250LXNpemU6IDNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjIzMzMzZW07IH1cblxuLnRleHQtbGctaDQge1xuICBmb250LXNpemU6IDIycHg7XG4gIGZvbnQtc2l6ZTogMi4ycmVtO1xuICBsaW5lLWhlaWdodDogMS40NTQ1NWVtOyB9XG5cbi50ZXh0LWxnLWg1IHtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXNpemU6IDJyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjZlbTsgfVxuXG4udGV4dC1sZy1oNiB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC1zaXplOiAxLjhyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjc3Nzc4ZW07IH1cblxuLnRleHQtbGctcCB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAyZW07IH1cblxuLnRleHQteGwtaDEge1xuICBmb250LXNpemU6IDQ1cHg7XG4gIGZvbnQtc2l6ZTogNC41cmVtO1xuICBsaW5lLWhlaWdodDogMS41NTU1NmVtOyB9XG5cbi50ZXh0LXhsLWgyIHtcbiAgZm9udC1zaXplOiAzM3B4O1xuICBmb250LXNpemU6IDMuM3JlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjEyMTJlbTsgfVxuXG4udGV4dC14bC1oMyB7XG4gIGZvbnQtc2l6ZTogMzBweDtcbiAgZm9udC1zaXplOiAzcmVtO1xuICBsaW5lLWhlaWdodDogMS4yMzMzM2VtOyB9XG5cbi50ZXh0LXhsLWg0IHtcbiAgZm9udC1zaXplOiAyMnB4O1xuICBmb250LXNpemU6IDIuMnJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNDU0NTVlbTsgfVxuXG4udGV4dC14bC1oNSB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC1zaXplOiAycmVtO1xuICBsaW5lLWhlaWdodDogMS42ZW07IH1cblxuLnRleHQteGwtaDYge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtc2l6ZTogMS44cmVtO1xuICBsaW5lLWhlaWdodDogMS43Nzc3OGVtOyB9XG5cbi50ZXh0LXhsLXAge1xuICBmb250LXNpemU6IDE1cHg7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBsaW5lLWhlaWdodDogMmVtOyB9XG5cbi8qKlxyXG4gKiBUZXh0IGFsaWdubWVudCB1dGlsaXR5IGNsYXNzZXMuXHJcbiAqL1xuLnRleHQteHMtbGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7IH1cblxuLnRleHQteHMtcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDsgfVxuXG4udGV4dC14cy1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLnRleHQtc20tbGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7IH1cblxuLnRleHQtc20tcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDsgfVxuXG4udGV4dC1zbS1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLnRleHQtbWQtbGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7IH1cblxuLnRleHQtbWQtcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDsgfVxuXG4udGV4dC1tZC1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLnRleHQtbGctbGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7IH1cblxuLnRleHQtbGctcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDsgfVxuXG4udGV4dC1sZy1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLnRleHQteGwtbGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7IH1cblxuLnRleHQteGwtcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDsgfVxuXG4udGV4dC14bC1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLyoqXHJcbiAqIEZvbnQgd2VpZ2h0IHV0aWxpdHkgY2xhc3Nlcy5cclxuICpcclxuICogMS4gTXVsdGlwbHkgbG9vcGVkIGludGVnZXIgYnkgMTAwIGZvciBjb3JyZWN0IGZvbnQgd2VpZ2h0IHZhbHVlLlxyXG4gKi9cbi50ZXh0LXhzLTEwMCB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7IH1cblxuLnRleHQteHMtMjAwIHtcbiAgZm9udC13ZWlnaHQ6IDIwMDsgfVxuXG4udGV4dC14cy0zMDAge1xuICBmb250LXdlaWdodDogMzAwOyB9XG5cbi50ZXh0LXhzLTQwMCB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7IH1cblxuLnRleHQteHMtNTAwIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDsgfVxuXG4udGV4dC14cy02MDAge1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbi50ZXh0LXhzLTcwMCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7IH1cblxuLnRleHQteHMtODAwIHtcbiAgZm9udC13ZWlnaHQ6IDgwMDsgfVxuXG4udGV4dC14cy05MDAge1xuICBmb250LXdlaWdodDogOTAwOyB9XG5cbi50ZXh0LXNtLTEwMCB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7IH1cblxuLnRleHQtc20tMjAwIHtcbiAgZm9udC13ZWlnaHQ6IDIwMDsgfVxuXG4udGV4dC1zbS0zMDAge1xuICBmb250LXdlaWdodDogMzAwOyB9XG5cbi50ZXh0LXNtLTQwMCB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7IH1cblxuLnRleHQtc20tNTAwIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDsgfVxuXG4udGV4dC1zbS02MDAge1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbi50ZXh0LXNtLTcwMCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7IH1cblxuLnRleHQtc20tODAwIHtcbiAgZm9udC13ZWlnaHQ6IDgwMDsgfVxuXG4udGV4dC1zbS05MDAge1xuICBmb250LXdlaWdodDogOTAwOyB9XG5cbi50ZXh0LW1kLTEwMCB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7IH1cblxuLnRleHQtbWQtMjAwIHtcbiAgZm9udC13ZWlnaHQ6IDIwMDsgfVxuXG4udGV4dC1tZC0zMDAge1xuICBmb250LXdlaWdodDogMzAwOyB9XG5cbi50ZXh0LW1kLTQwMCB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7IH1cblxuLnRleHQtbWQtNTAwIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDsgfVxuXG4udGV4dC1tZC02MDAge1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbi50ZXh0LW1kLTcwMCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7IH1cblxuLnRleHQtbWQtODAwIHtcbiAgZm9udC13ZWlnaHQ6IDgwMDsgfVxuXG4udGV4dC1tZC05MDAge1xuICBmb250LXdlaWdodDogOTAwOyB9XG5cbi50ZXh0LWxnLTEwMCB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7IH1cblxuLnRleHQtbGctMjAwIHtcbiAgZm9udC13ZWlnaHQ6IDIwMDsgfVxuXG4udGV4dC1sZy0zMDAge1xuICBmb250LXdlaWdodDogMzAwOyB9XG5cbi50ZXh0LWxnLTQwMCB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7IH1cblxuLnRleHQtbGctNTAwIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDsgfVxuXG4udGV4dC1sZy02MDAge1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbi50ZXh0LWxnLTcwMCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7IH1cblxuLnRleHQtbGctODAwIHtcbiAgZm9udC13ZWlnaHQ6IDgwMDsgfVxuXG4udGV4dC1sZy05MDAge1xuICBmb250LXdlaWdodDogOTAwOyB9XG5cbi50ZXh0LXhsLTEwMCB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7IH1cblxuLnRleHQteGwtMjAwIHtcbiAgZm9udC13ZWlnaHQ6IDIwMDsgfVxuXG4udGV4dC14bC0zMDAge1xuICBmb250LXdlaWdodDogMzAwOyB9XG5cbi50ZXh0LXhsLTQwMCB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7IH1cblxuLnRleHQteGwtNTAwIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDsgfVxuXG4udGV4dC14bC02MDAge1xuICBmb250LXdlaWdodDogNjAwOyB9XG5cbi50ZXh0LXhsLTcwMCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7IH1cblxuLnRleHQteGwtODAwIHtcbiAgZm9udC13ZWlnaHQ6IDgwMDsgfVxuXG4udGV4dC14bC05MDAge1xuICBmb250LXdlaWdodDogOTAwOyB9XG5cbi8qKlxyXG4gKiBUZXh0IHRyYW5zZm9ybSB1aXRsaXR5IGNsYXNzZXMuXHJcbiAqL1xuLnRleHQteHMtY2FwaXRhbGl6ZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOyB9XG5cbi50ZXh0LXhzLXVwcGVyY2FzZSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cblxuLnRleHQteHMtbG93ZXJjYXNlIHtcbiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsgfVxuXG4udGV4dC14cy1ub25lIHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cblxuLnRleHQteHMtZnVsbC13aWR0aCB7XG4gIHRleHQtdHJhbnNmb3JtOiBmdWxsLXdpZHRoOyB9XG5cbi50ZXh0LXNtLWNhcGl0YWxpemUge1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsgfVxuXG4udGV4dC1zbS11cHBlcmNhc2Uge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG5cbi50ZXh0LXNtLWxvd2VyY2FzZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7IH1cblxuLnRleHQtc20tbm9uZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyB9XG5cbi50ZXh0LXNtLWZ1bGwtd2lkdGgge1xuICB0ZXh0LXRyYW5zZm9ybTogZnVsbC13aWR0aDsgfVxuXG4udGV4dC1tZC1jYXBpdGFsaXplIHtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7IH1cblxuLnRleHQtbWQtdXBwZXJjYXNlIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuXG4udGV4dC1tZC1sb3dlcmNhc2Uge1xuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlOyB9XG5cbi50ZXh0LW1kLW5vbmUge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuXG4udGV4dC1tZC1mdWxsLXdpZHRoIHtcbiAgdGV4dC10cmFuc2Zvcm06IGZ1bGwtd2lkdGg7IH1cblxuLnRleHQtbGctY2FwaXRhbGl6ZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOyB9XG5cbi50ZXh0LWxnLXVwcGVyY2FzZSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cblxuLnRleHQtbGctbG93ZXJjYXNlIHtcbiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsgfVxuXG4udGV4dC1sZy1ub25lIHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cblxuLnRleHQtbGctZnVsbC13aWR0aCB7XG4gIHRleHQtdHJhbnNmb3JtOiBmdWxsLXdpZHRoOyB9XG5cbi50ZXh0LXhsLWNhcGl0YWxpemUge1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsgfVxuXG4udGV4dC14bC11cHBlcmNhc2Uge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG5cbi50ZXh0LXhsLWxvd2VyY2FzZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7IH1cblxuLnRleHQteGwtbm9uZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyB9XG5cbi50ZXh0LXhsLWZ1bGwtd2lkdGgge1xuICB0ZXh0LXRyYW5zZm9ybTogZnVsbC13aWR0aDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBWZXJ0aWNhbCBSaHl0aG1cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi52ci0wIHtcbiAgbWFyZ2luLWJvdHRvbTogMHB4OyB9XG5cbi52ci04IHtcbiAgbWFyZ2luLWJvdHRvbTogOHB4OyB9XG5cbi52ci0xNiB7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7IH1cblxuLnZyLTI0IHtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDsgfVxuXG4udnItMzIge1xuICBtYXJnaW4tYm90dG9tOiAzMnB4OyB9XG5cbi52ci00MCB7XG4gIG1hcmdpbi1ib3R0b206IDQwcHg7IH1cblxuLnZyLTQ4IHtcbiAgbWFyZ2luLWJvdHRvbTogNDhweDsgfVxuXG4udnItNTYge1xuICBtYXJnaW4tYm90dG9tOiA1NnB4OyB9XG5cbi52ci02NCB7XG4gIG1hcmdpbi1ib3R0b206IDY0cHg7IH1cblxuLnZyLTcyIHtcbiAgbWFyZ2luLWJvdHRvbTogNzJweDsgfVxuXG4udnItODAge1xuICBtYXJnaW4tYm90dG9tOiA4MHB4OyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFotaW5kZXhcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBVdGlsaXR5IGNsYXNzZXMgZm9yIG1hbmlwdWxhdGluZyBzdGFja2luZyBvcmRlciBpbiBIVE1MLlxyXG4gKi9cbi56LWluZGV4LTAge1xuICB6LWluZGV4OiAwOyB9XG5cbi56LWluZGV4LTEge1xuICB6LWluZGV4OiAxMDsgfVxuXG4uei1pbmRleC0yIHtcbiAgei1pbmRleDogMjA7IH1cblxuLnotaW5kZXgtMyB7XG4gIHotaW5kZXg6IDMwOyB9XG5cbi56LWluZGV4LTQge1xuICB6LWluZGV4OiA0MDsgfVxuXG4uei1pbmRleC01IHtcbiAgei1pbmRleDogNTA7IH1cblxuLnotaW5kZXgtNiB7XG4gIHotaW5kZXg6IDYwOyB9XG5cbi56LWluZGV4LTcge1xuICB6LWluZGV4OiA3MDsgfVxuXG4uei1pbmRleC04IHtcbiAgei1pbmRleDogODA7IH1cblxuLnotaW5kZXgtOSB7XG4gIHotaW5kZXg6IDkwOyB9XG5cbi56LWluZGV4LTEwIHtcbiAgei1pbmRleDogMTAwOyB9XG4iLCIvKlxuICogIE93bCBDYXJvdXNlbCAtIENvcmVcbiAqL1xuLm93bC1jYXJvdXNlbCB7XG5cdGRpc3BsYXk6IG5vbmU7XG5cdHdpZHRoOiAxMDAlO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHQvKiBwb3NpdGlvbiByZWxhdGl2ZSBhbmQgei1pbmRleCBmaXggd2Via2l0IHJlbmRlcmluZyBmb250cyBpc3N1ZSAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHotaW5kZXg6IDE7XG5cblx0Lm93bC1zdGFnZSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdC1tcy10b3VjaC1hY3Rpb246IHBhbi1ZO1xuXHRcdHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuXHRcdC1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOyAvKiBmaXggZmlyZWZveCBhbmltYXRpb24gZ2xpdGNoICovXG5cdH1cblxuXHQub3dsLXN0YWdlOmFmdGVyIHtcblx0XHRjb250ZW50OiBcIi5cIjtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRjbGVhcjogYm90aDtcblx0XHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0bGluZS1oZWlnaHQ6IDA7XG5cdFx0aGVpZ2h0OiAwO1xuXHR9XG5cblx0Lm93bC1zdGFnZS1vdXRlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0LyogZml4IGZvciBmbGFzaGluZyBiYWNrZ3JvdW5kICovXG5cdFx0LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpO1xuXHR9XG5cblx0Lm93bC13cmFwcGVyLFxuXHQub3dsLWl0ZW17XG5cdFx0LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0LW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0LW1zLWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHQtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwwLDApO1xuXHRcdC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLDAsMCk7XG5cdFx0LW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwwLDApO1xuXHR9XG5cblx0Lm93bC1pdGVtIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0bWluLWhlaWdodDogMXB4O1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXHRcdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0LXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lO1xuXHR9XG5cdC5vd2wtaXRlbSBpbWcge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cblx0Lm93bC1uYXYuZGlzYWJsZWQsXG5cdC5vd2wtZG90cy5kaXNhYmxlZCB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC5vd2wtbmF2IC5vd2wtcHJldixcblx0Lm93bC1uYXYgLm93bC1uZXh0LFxuXHQub3dsLWRvdCB7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdFx0LWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuXHRcdC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG5cdFx0LW1zLXVzZXItc2VsZWN0OiBub25lO1xuXHRcdHVzZXItc2VsZWN0OiBub25lO1xuXHR9XG5cblx0Lm93bC1uYXYgYnV0dG9uLm93bC1wcmV2LFxuXHQub3dsLW5hdiBidXR0b24ub3dsLW5leHQsXG5cdGJ1dHRvbi5vd2wtZG90IHtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRwYWRkaW5nOjAhaW1wb3J0YW50O1xuXHRcdGZvbnQ6IGluaGVyaXQ7XG5cdH1cblxuXHQmLm93bC1sb2FkZWQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0Ji5vd2wtbG9hZGluZyB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG5cdCYub3dsLWhpZGRlbiB7XG5cdFx0b3BhY2l0eTogMDtcblx0fVxuXG5cdCYub3dsLXJlZnJlc2ggLm93bC1pdGVtIHtcblx0XHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdH1cblxuXHQmLm93bC1kcmFnIC5vd2wtaXRlbSB7XG5cdFx0dG91Y2gtYWN0aW9uOiBwYW4teTtcblx0XHQtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuXHRcdC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG5cdFx0LW1zLXVzZXItc2VsZWN0OiBub25lO1xuXHRcdHVzZXItc2VsZWN0OiBub25lO1xuXHR9XG5cblx0Ji5vd2wtZ3JhYiB7XG5cdFx0Y3Vyc29yOiBtb3ZlO1xuXHRcdGN1cnNvcjogZ3JhYjtcblx0fVxuXG5cdCYub3dsLXJ0bCB7XG5cdFx0ZGlyZWN0aW9uOiBydGw7XG5cdH1cblxuXHQmLm93bC1ydGwgLm93bC1pdGVtIHtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdH1cbn1cblxuLyogTm8gSnMgKi9cbi5uby1qcyAub3dsLWNhcm91c2VsIHtcblx0ZGlzcGxheTogYmxvY2s7XG59XG4iLCIvKlxuICogIE93bCBDYXJvdXNlbCAtIEFuaW1hdGUgUGx1Z2luXG4gKi9cbi5vd2wtY2Fyb3VzZWx7XG5cdC5hbmltYXRlZCB7XG5cdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiAxMDAwbXM7XG5cdFx0YW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcblx0fVxuXHQub3dsLWFuaW1hdGVkLWluIHtcblx0XHR6LWluZGV4OiAwO1xuXHR9XG5cdC5vd2wtYW5pbWF0ZWQtb3V0IHtcblx0XHR6LWluZGV4OiAxO1xuXHR9XG5cdC5mYWRlT3V0IHtcblx0XHRhbmltYXRpb24tbmFtZTogZmFkZU91dDtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xuXHQwJSB7XG5cdFx0b3BhY2l0eTogMTtcblx0fVxuXG5cdDEwMCUge1xuXHRcdG9wYWNpdHk6IDA7XG5cdH1cbn1cbiIsIi8qXG4gKiBcdE93bCBDYXJvdXNlbCAtIEF1dG8gSGVpZ2h0IFBsdWdpblxuICovXG5cbi5vd2wtaGVpZ2h0IHtcblx0dHJhbnNpdGlvbjogaGVpZ2h0IDUwMG1zIGVhc2UtaW4tb3V0O1xufVxuIiwiLypcbiAqIFx0T3dsIENhcm91c2VsIC0gTGF6eSBMb2FkIFBsdWdpblxuICovXG5cbi5vd2wtY2Fyb3VzZWwge1xuXHQub3dsLWl0ZW0ge1xuXHRcdC5vd2wtbGF6eSB7XG5cdFx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHRcdHRyYW5zaXRpb246IG9wYWNpdHkgNDAwbXMgZWFzZTtcblx0XHR9XG5cblx0XHQvKipcblx0XHRcdFRoaXMgaXMgaW50cm9kdWNlZCBkdWUgdG8gYSBidWcgaW4gSUUxMSB3aGVyZSBsYXp5IGxvYWRpbmcgY29tYmluZWQgd2l0aCBhdXRvaGVpZ2h0IHBsdWdpbiBjYXVzZXMgYSB3cm9uZ1xuXHRcdFx0Y2FsY3VsYXRpb24gb2YgdGhlIGhlaWdodCBvZiB0aGUgb3dsLWl0ZW0gdGhhdCBicmVha3MgcGFnZSBsYXlvdXRzXG5cdFx0ICovXG5cdFx0Lm93bC1sYXp5W3NyY149XCJcIl0sIC5vd2wtbGF6eTpub3QoW3NyY10pIHtcblx0XHRcdG1heC1oZWlnaHQ6IDA7XG5cdFx0fVxuXG5cdFx0aW1nLm93bC1sYXp5IHtcblx0XHRcdHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG5cdFx0fVxuXHR9XG59XG5cbiIsIiRvd2wtaW1hZ2UtcGF0aDogXCJcIiAhZGVmYXVsdDtcblxuLypcbiAqIFx0T3dsIENhcm91c2VsIC0gVmlkZW8gUGx1Z2luXG4gKi9cblxuLm93bC1jYXJvdXNlbHtcblx0Lm93bC12aWRlby13cmFwcGVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGJhY2tncm91bmQ6ICMwMDA7XG5cdH1cblxuXHQub3dsLXZpZGVvLXBsYXktaWNvbiB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGhlaWdodDogODBweDtcblx0XHR3aWR0aDogODBweDtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0dG9wOiA1MCU7XG5cdFx0bWFyZ2luLWxlZnQ6IC00MHB4O1xuXHRcdG1hcmdpbi10b3A6IC00MHB4O1xuXHRcdGJhY2tncm91bmQ6IHVybChcIiN7JG93bC1pbWFnZS1wYXRofW93bC52aWRlby5wbGF5LnBuZ1wiKSBuby1yZXBlYXQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHotaW5kZXg6IDE7XG5cdFx0LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDEwMG1zIGVhc2U7XG5cdH1cblxuXHQub3dsLXZpZGVvLXBsYXktaWNvbjpob3ZlciB7XG5cdFx0dHJhbnNmb3JtOiBzY2FsZSgxLjMsIDEuMyk7XG5cdH1cblxuXHQub3dsLXZpZGVvLXBsYXlpbmcgLm93bC12aWRlby10bixcblx0Lm93bC12aWRlby1wbGF5aW5nIC5vd2wtdmlkZW8tcGxheS1pY29uIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Lm93bC12aWRlby10biB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcblx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcblx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGVhc2U7XG5cdH1cblxuXHQub3dsLXZpZGVvLWZyYW1lIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ei1pbmRleDogMTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEJhc2VcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgbWFyZ2luIGFuZCBwYWRkaW5nIGZyb20gZXZlcnkgc2VsZWN0b3IgaW5jbHVkaW5nIHRoZWlyXHJcbiAqIHBzdWVkbyBzZWxlY3RvcnMuXHJcbiAqXHJcbiAqIDEuIE1vcmUgc2Vuc2libGUgZGVmYXVsdCBib3ggc2l6aW5nLlxyXG4gKiAgICAoY3NzLXRyaWNrcy5jb20vaW5oZXJpdGluZy1ib3gtc2l6aW5nLXByb2JhYmx5LXNsaWdodGx5LWJldHRlci1iZXN0LXByYWN0aWNlKS5cclxuICovXHJcblxyXG4qLFxyXG4qOjpiZWZvcmUsXHJcbio6OmFmdGVyIHtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxuICBib3gtc2l6aW5nOiBpbmhlcml0OyAvKiAxICovXHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU2V0IGhlaWdodCBvZiB0aGUgZG9jdW1lbnQgdG8gbWF4aXVtIHZpZXdwb3J0IGhlaWdodC5cclxuICpcclxuICogMS4gU2V0IHJvb3QgZm9udCBzaXplIHRvIDEwLlxyXG4gKi9cclxuXHJcbmh0bWwge1xyXG4gIGhlaWdodDogMTAwdmg7XHJcbiAgZm9udC1zaXplOiA2Mi41JTsgLyogMSAqL1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU2V0IG1pbmltYWwgaGVpZ2h0IG9mIHRoZSBib2R5IHRvIG1heGltdW0gdmlld3BvcnQgaGVpZ2h0IHRvXHJcbiAqIG1hdGNoIHRoZSBkb2N1bWVudCdzIGhlaWdodC5cclxuICpcclxuICogMS4gRmlyZWZveCAyNSsuXHJcbiAqIDIuIENocm9tZSA1Ky5cclxuICovXHJcblxyXG5ib2R5IHtcclxuICBAaW5jbHVkZSB0ZXh0KCRib2R5LXRleHQpO1xyXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMjUwbXMgZWFzZTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9keS1iYWNrZ3JvdW5kLWNvbG9yO1xyXG4gIGNvbG9yOiAkYm9keS1jb2xvcjtcclxuICBmb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHk7XHJcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcclxuICBvcGFjaXR5OiAwO1xyXG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7IC8qIDEgKi9cclxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgLyogMiAqL1xyXG5cclxuICAmLmlzLWxvYWRlZCB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gIH1cclxufVxyXG4iLCIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBNaXhpbnNcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8vIFdyYXBwZXJcclxuLy8gQ2VudGVyIGFsaWducyBlbGVtZW50IHdpdGggZ2l2ZW4gbWF4aW11bSB3aWR0aCwgcGFkZGluZywgYW5kIG1hcmdpbnMgdG9wXHJcbi8vIGFuZCBib3R0b20uXHJcbi8vIEBwYXJhbSB7U3RyaW5nfSAkd2lkdGggLSBQaXhlbCB1bml0IHZhbHVlLlxyXG4vLyBAcGFyYW0ge1N0cmluZ30gJGdhcCAtIFBpeGVsIHVuaXQgdmFsdWUuXHJcbi8vIEBleGFtcGxlXHJcbi8vICAgQGluY2x1ZGUgd3JhcHBlcigxMDI0cHgsIDIwcHgpO1xyXG5AbWl4aW4gY29udGFpbmVyKCR3aWR0aDogJGdyaWQtd2lkdGgsICRnYXA6ICRncmlkLWdhcCkge1xyXG4gIEBpZiAodHlwZS1vZigkd2lkdGgpID09IG51bWJlciBhbmQgdHlwZS1vZigkZ2FwKSA9PSBudW1iZXIpIHtcclxuICAgIEBpZiAoJGdhcCAhPSAwKSB7XHJcbiAgICAgIG1heC13aWR0aDogY2FsYygjeyR3aWR0aH0gKyAjeygkZ2FwICogMil9KTtcclxuICAgICAgcGFkZGluZzogMCAkZ2FwO1xyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIG1heC13aWR0aDogJHdpZHRoO1xyXG4gICAgfVxyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICB9IEBlbHNlIHtcclxuICAgIEBlcnJvciAnQXJndW1lbnRzIGAkd2lkdGhgIGFuZCBgJGdhcGAgc2hvdWxkIGJlIGEgbnVtYmVyJztcclxuICB9XHJcbn1cclxuXHJcblxyXG4vLyBTZWN0aW9uXHJcbi8vIEFkZCB0b3AgYW5kIGJvdHRvbSBzcGFjaW5nIHRvIGVsZW1lbnQgdXNpbmcgcGFkZGluZ3MuXHJcbi8vIEBwYXJhbSB7U3RyaW5nfSAkdG9wIC0gUGl4ZWwgdW5pdCB2YWx1ZS5cclxuLy8gQHBhcmFtIHtTdHJpbmd9ICRib3R0b20gLSBQaXhlbCB1bml0IHZhbHVlLlxyXG4vLyBAZXhhbXBsZVxyXG4vLyAgIEBpbmNsdWRlIHNlY3Rpb24oMTAwcHgsIDEwMHB4KTtcclxuQG1peGluIHNlY3Rpb24oJHRvcDogMCwgJGJvdHRvbTogMCkge1xyXG4gIEBpZiAodHlwZS1vZigkdG9wKSA9PSBudW1iZXIgYW5kIHR5cGUtb2YoJGJvdHRvbSkgPT0gbnVtYmVyKSB7XHJcbiAgICBwYWRkaW5nOiAkdG9wIDAgJGJvdHRvbTtcclxuICB9IEBlbHNlIHtcclxuICAgIEBlcnJvciAnQXJndW1lbnRzIGAkdG9wYCBhbmQgYGJvdHRvbWAgc2hvdWxkIGJlIGEgbnVtYmVyJztcclxuICB9XHJcbn1cclxuXHJcblxyXG4vLyBGb250XHJcbi8vIEFkZHMgYHJlbWAgdW5pdCBiYXNlZCBmb250IHNpemUgcHJvcGVydHksIGEgZmFsbGJhY2tcclxuLy8gYHB4YCB1bml0IGJhc2VkIGZvbnQgc2l6ZSBwcm9wZXJ0eSwgYW5kIGEgYGVtYCB1bml0IGJhc2VkIGxpbmUgaGVpZ2h0XHJcbi8vIHByb3BlcnR5IHRvIGFueSBydWxlLlxyXG4vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtc2l6ZSAtIFBpeGVsIHVuaXQgdmFsdWUuXHJcbi8vIEBwYXJhbSB7U3RyaW5nfSAkbGluZS1oZWlnaHQgLSBQaXhlbCB1bml0IHZhbHVlLlxyXG4vLyBAZXhhbXBsZVxyXG4vLyAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxNnB4LCAyNHB4KTtcclxuQG1peGluIGZvbnQoJGZvbnQtc2l6ZSwgJGxpbmUtaGVpZ2h0KSB7XHJcbiAgQGlmICh0eXBlLW9mKCRmb250LXNpemUpID09IG51bWJlciBhbmQgdW5pdCgkZm9udC1zaXplKSA9PSAncHgnKSB7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XHJcbiAgICBmb250LXNpemU6IHJlbSgkZm9udC1zaXplKTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1kdXBsaWNhdGUtcHJvcGVydGllc1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgQGVycm9yICdWYWx1ZSBmb3IgYCN7JGZvbnQtc2l6ZX1gIHNob3VsZCBiZSBhIGBweGAgdW5pdCc7XHJcbiAgfVxyXG4gIEBpZiAodHlwZS1vZigkbGluZS1oZWlnaHQpID09IG51bWJlciBhbmQgdW5pdCgkbGluZS1oZWlnaHQpID09ICdweCcpIHtcclxuICAgIGxpbmUtaGVpZ2h0OiAoKCRsaW5lLWhlaWdodCAvICRmb250LXNpemUpICogMWVtKTtcclxuICB9IEBlbHNlIHtcclxuICAgIEBlcnJvciAnVmFsdWUgZm9yIGAjeyRsaW5lLWhlaWdodH1gIHNob3VsZCBiZSBhIGBweGAgdW5pdCc7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLy8gVGV4dFxyXG4vLyBTaG9ydGhhbmQgZm9yIHRoZSBmb250IG1peGluLCBydW5zIHRoZSBmb250IG1peGluIGJhc2VkIG9uIGEgY29tbW9uXHJcbi8vIGRlbWVhbm91ciBleGlzdGluZyBib3RoIGluIHRoZSBgJGZvbnQtc2l6ZWAgYW5kIHRoZSBgJGxpbmUtaGVpZ2h0YCBtYXBzLlxyXG4vLyBAcGFyYW0ge3N0cmluZ30gJHZhbHVlIC0gU3RyaW5nXHJcbi8vIEBleGFtcGxlXHJcbi8vICAgQGluY2x1ZGUgdGV4dCgncCcpO1xyXG5AbWl4aW4gdGV4dCgkdmFsdWUpIHtcclxuICBAaWYgKHR5cGUtb2YoJHZhbHVlKSA9PSBzdHJpbmcpIHtcclxuICAgIEBpbmNsdWRlIGZvbnQobWFwLWdldCgkZm9udC1zaXplLCAkdmFsdWUpLCBtYXAtZ2V0KCRsaW5lLWhlaWdodCwgJHZhbHVlKSk7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAZXJyb3IgJ1ZhbHVlIHNob3VsZCBiZSBhIHN0cmluZyc7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLy8gRm9udCBBd2Vzb21lXHJcbi8vIEFkZCBGb250IEF3ZXNvbWUgaWNvbnMgYXMgcHN1ZWRvIGVsZW1lbnRzIGJ5IHVzaW5nIHRoZWlyIHVuaWNvZGUuXHJcbi8vIEBwYXJhbSB7U3RyaW5nfSAkY29udGVudCAtIFVuaWNvZGUgc3RyaW5nLlxyXG4vLyBAcGFyYW0ge1N0cmluZ30gJGZhbWlseSAtIEZvbnQgQXdlc29tZSBmb250IGZhbWlseSBzdHJpbmcuXHJcbi8vIEBleGFtcGxlXHJcbi8vICAgQGluY2x1ZGUgZm9udGF3ZXNvbWUoJ2YxMDAnLCAnTGlnaHQnKTtcclxuQG1peGluIGZvbnRhd2Vzb21lKCRjb250ZW50LCAkZmFtaWx5KSB7XHJcbiAgQGlmICh0eXBlLW9mKCRmYW1pbHkpID09IHN0cmluZykge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgI3skZmFtaWx5fSc7XHJcbiAgICBjb250ZW50OiB1bmljb2RlKCRjb250ZW50KTtcclxuICB9IEBlbHNlIHtcclxuICAgIEBlcnJvciAnQXJndW1lbnQgYCRmYW1pbHlgIHNob3VsZCBiZSBhIHN0cmluZyc7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBNYXJnaW5cclxuXHJcbkBtaXhpbiBtYXJnaW4teCgkbWFyZ2luKSB7XHJcbiAgQGlmKHR5cGUtb2YoJG1hcmdpbikgPT0gbnVtYmVyIGFuZCB1bml0KCRtYXJnaW4pID09ICdweCcpIHtcclxuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XHJcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xyXG5cclxuICB9IEBlbHNlIHtcclxuICAgIEBlcnJvciAnQXJndW1lbnQgYCRtYXJnaW5gIHNob3VsZCBiZSBhIHN0cmluZyc7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gbWFyZ2luLXkoJG1hcmdpbikge1xyXG4gIEBpZih0eXBlLW9mKCRtYXJnaW4pID09IG51bWJlciBhbmQgdW5pdCgkbWFyZ2luKSA9PSAncHgnKSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XHJcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcclxuXHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAZXJyb3IgJ0FyZ3VtZW50IGAkbWFyZ2luYCBzaG91bGQgYmUgYSBzdHJpbmcnO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vIFBhZGRpbmdcclxuXHJcbkBtaXhpbiBwYWRkaW5nLXgoJHBhZGRpbmcpIHtcclxuICBAaWYodHlwZS1vZigkcGFkZGluZykgPT0gbnVtYmVyIGFuZCB1bml0KCRwYWRkaW5nKSA9PSAncHgnKSB7XHJcbiAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XHJcblxyXG4gIH0gQGVsc2Uge1xyXG4gICAgQGVycm9yICdBcmd1bWVudCBgJHBhZGRpbmdgIHNob3VsZCBiZSBhIHN0cmluZyc7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gcGFkZGluZy15KCRwYWRkaW5nKSB7XHJcbiAgQGlmKHR5cGUtb2YoJHBhZGRpbmcpID09IG51bWJlciBhbmQgdW5pdCgkcGFkZGluZykgPT0gJ3B4Jykge1xyXG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XHJcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xyXG5cclxuICB9IEBlbHNlIHtcclxuICAgIEBlcnJvciAnQXJndW1lbnQgYCRwYWRkaW5nYCBzaG91bGQgYmUgYSBzdHJpbmcnO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vIE1lZGlhXHJcbi8vIE1lZGlhIHF1ZXJpZXMgYWNjb3JkaW5nIHRvIFwiVGhlIDEwMCUgQ29ycmVjdCBXYXkgVG8gRG8gQ1NTIEJyZWFrcG9pbnRzXCJcclxuLy8gKGh0dHBzOi8vbWVkaXVtLmZyZWVjb2RlY2FtcC5jb20vdGhlLTEwMC1jb3JyZWN0LXdheS10by1kby1jc3MtYnJlYWtwb2ludHMtODhkNmE1YmExODYyKS5cclxuLy8gQHBhcmFtIHtTdHJpbmd9ICRzaXplIC0gQnJlYWtwb2ludCBwaXhlbCB1bml0IHZhbHVlLlxyXG4vLyBAZXhhbXBsZVxyXG4vLyAgIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHt9XHJcbkBtaXhpbiBtZWRpYSgkc2l6ZSkge1xyXG4gIEBpZiAoJHNpemUgPT0gJ2Rlc2t0b3AnKSB7XHJcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kKG1pbi13aWR0aDogMTIwMHB4KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgKCRzaXplID09ICd0YWJsZXQtbGFuZHNjYXBlLXVwJykge1xyXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZChtaW4td2lkdGg6IDkwMHB4KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgKCRzaXplID09ICd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZChtaW4td2lkdGg6IDkwMHB4KSBhbmQobWF4LXdpZHRoOiAxMTk5cHgpIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSBpZiAoJHNpemUgPT0gJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQobWF4LXdpZHRoOiAxMTk5cHgpIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSBpZiAoJHNpemUgPT0gJ3RhYmxldC1wb3J0cmFpdC11cCcpIHtcclxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQobWluLXdpZHRoOiA2MDBweCkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIGlmICgkc2l6ZSA9PSAndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZChtaW4td2lkdGg6IDYwMHB4KSBhbmQobWF4LXdpZHRoOiA4OTlweCkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIGlmICgkc2l6ZSA9PSAndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kKG1heC13aWR0aDogODk5cHgpIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSBpZiAoJHNpemUgPT0gJ3RhYmxldCcpIHtcclxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQobWluLXdpZHRoOiA2MDBweCkgYW5kKG1heC13aWR0aDogMTE5OXB4KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgKCRzaXplID09ICdwaG9uZScpIHtcclxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQobWF4LXdpZHRoOiA1OTlweCkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG4iLCIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBUeXBvZ3JhcGh5XHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vLyBGb250IGZhbWlseSBtYXAuXHJcbiRmb250LWZhbWlseTogKFxyXG4gICdkZWZhdWx0JzogJ01vbnRzZXJyYXQnXHJcbik7XHJcblxyXG5cclxuLy8gRm9udCBzaXplIG1hcC5cclxuJGZvbnQtc2l6ZTogKFxyXG4gICdoMSc6IDQ1cHgsXHJcbiAgJ2gyJzogMzNweCxcclxuICAnaDMnOiAzMHB4LFxyXG4gICdoNCc6IDIycHgsXHJcbiAgJ2g1JzogMjBweCxcclxuICAnaDYnOiAxOHB4LFxyXG4gICdwJzogMTVweFxyXG4pO1xyXG5cclxuXHJcbi8vIExpbmUgaGVpZ2h0IG1hcC5cclxuJGxpbmUtaGVpZ2h0OiAoXHJcbiAgJ2gxJzogNzBweCxcclxuICAnaDInOiA0MHB4LFxyXG4gICdoMyc6IDM3cHgsXHJcbiAgJ2g0JzogMzJweCxcclxuICAnaDUnOiAzMnB4LFxyXG4gICdoNic6IDMycHgsXHJcbiAgJ3AnOiAzMHB4XHJcbik7XHJcbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIEZ1bmN0aW9uc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gVW5pY29kZVxyXG4vLyBQcmVzZXJ2ZSBlc2NhcGVkIHVuaWNvZGUgc3RyaW5nLlxyXG4vLyBAcGFyYW0ge1N0cmluZ30gJHN0cmluZyAtIEFuIHVuaWNvZGUgc3RyaW5nLlxyXG4vLyBAcmV0dXJuIHtTdHJpbmd9IEEgcHJlc2VydmVkIGVzY2FwZWQgdW5pY29kZSBzdHJpbmdcclxuLy8gc2Fzcy1saW50OmRpc2FibGUgcXVvdGVzXHJcbkBmdW5jdGlvbiB1bmljb2RlKCRzdHJpbmcpIHtcclxuICBAcmV0dXJuIHVucXVvdGUoXCJcXCdcIikgKyB1bnF1b3RlKHN0ci1pbnNlcnQoJHN0cmluZywgJ1xcXFwnLCAxKSkgKyB1bnF1b3RlKFwiXFwnXCIpO1xyXG59XHJcbi8vIHNhc3MtbGludDplbmFibGUgcXVvdGVzXHJcblxyXG5cclxuLy8gUkVNXHJcbi8vIENvbnZlcnQgcGl4ZWwgdW5pdHMgdG8gUkVNIHVuaXRzLlxyXG4vLyBAcGFyYW0ge051bWJlcn0gJHBpeGVscyAtIFBpeGVsIHZhbHVlLlxyXG4vLyBAcmV0dXJuIHsqfSAtIEEgY29udmVydGVkIGByZW1gIHVuaXQuXHJcbkBmdW5jdGlvbiByZW0oJHBpeGVscykge1xyXG4gIEBpZiAodW5pdGxlc3MoJHBpeGVscykpIHtcclxuICAgIEBlcnJvciAnVmFsdWUgZm9yIGAjeyRwaXhlbHN9YCBzaG91bGQgYmUgYSBgcHhgIHVuaXQuJztcclxuICB9XHJcbiAgQHJldHVybiAoKCRwaXhlbHMgLyAxMHB4KSAqIDFyZW0pO1xyXG59XHJcblxyXG5cclxuLy8gQ29sdW1uXHJcbi8vIENhbGN1bGF0ZSBnaXZlbiBjb2x1bW4gd2lkdGguXHJcbi8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1uIC0gVGhlIGFtb3VudCBvZiBjb2x1bW5zIHRvIHNwYW4uXHJcbi8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyAtIFRoZSBhbW91bnQgb2YgY29sdW1ucyB0aGF0IGNhbiBiZSBzcGFubmVkLlxyXG4vLyBAcmV0dXJuIHtTdHJpbmd9IC0gUGVyY2VudGFnZSB2YWx1ZS5cclxuQGZ1bmN0aW9uIGNvbHVtbigkY29sdW1uLCAkY29sdW1uczogJGdyaWQtY29sdW1ucykge1xyXG4gIEByZXR1cm4gKCRjb2x1bW4gICogMTAwJSAvICRjb2x1bW5zKTtcclxufVxyXG5cclxuXHJcbi8vIENvbG9yXHJcbi8vIEdldCBhIGNvbG9yIHZhbHVlIGZyb20gdHdvIGxldmVscyBkZWVwIGluIHRoZSBgJGNvbG9yYCBtYXAuXHJcbi8vIEBwYXJhbSB7JHN0cmluZ30gJGtleSAtIEtleSBvZiB0aGUgY29sb3IgdG8gZ2V0IGZyb20gdGhlIG1hcC5cclxuLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIG9mIHRoZSBrZXkgdG8gZ2V0IGZyb20gdGhlIG1hcC5cclxuLy8gQHJldHVybiB7Kn0gQSBIU0xBIGNvbG9yIHZhbHVlLlxyXG5AZnVuY3Rpb24gY29sb3IoJGtleSwgJHZhbHVlKSB7XHJcbiAgQHJldHVybiBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJGtleSksICR2YWx1ZSk7XHJcbn1cclxuIiwiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gQ29sb3JcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8vIENvbG9yIG1hcC5cclxuJGNvbG9yczogKFxyXG4gICdibGFjayc6IChcclxuICAgICcxMDAnOiBoc2xhKDAsIDAlLCAwJSwgMSksXHJcbiAgICAnMjAwJzogaHNsYSgwLCAwJSwgMjclLCAxKSxcclxuICAgICcxMCc6IGhzbGEoMCwgMCUsIDAlLCAwLjEpXHJcbiAgKSxcclxuICAnd2hpdGUnOiAoXHJcbiAgICAnMTAwJzogaHNsYSgwLCAwJSwgMTAwJSwgMSksXHJcbiAgICAnMjAwJzogaHNsYSgwLCAwJSwgOTUlLCAxKSxcclxuICApLFxyXG4gICdicm93bic6IChcclxuICAgICcxMDAnOiBoc2xhKDQxLCA1NSUsIDUwJSwgMSlcclxuICApLFxyXG4gICdibHVlJzogKFxyXG4gICAgJzEwMCc6IGhzbGEoMjE5LCAzMiUsIDM2JSwgMSksXHJcbiAgICAnNTAnOiBoc2xhKDE5NSwgODYlLCA1MyUsIDEpXHJcbiAgKSxcclxuICAncmVkJzogKFxyXG4gICAgJzEwMCc6IGhzbGEoMzUxLCA4NiUsIDUyJSwgMSlcclxuICApLFxyXG4gICd5ZWxsb3cnOiAoXHJcbiAgICAnMTAwJzogaHNsYSg0NiwgMTAwJSwgNTclLCAxKVxyXG4gICksXHJcbiAgJ29yYW5nZSc6IChcclxuICAgICcxMDAnOiBoc2xhKDI0LCAxMDAlLCA1MCUsIDEpLFxyXG4gICAgJzUwJzogaHNsYSgzNiwgMTAwJSwgNTAlLCAxKVxyXG4gICksXHJcbiAgJ2dyZWVuJzogKFxyXG4gICAgJzEwMCc6IGhzbGEoOTYsIDU2JSwgNDElLCAxKSxcclxuICAgICc1MCc6IGhzbGEoMTIwLCAxMDAlLCA0MCUsIDEpXHJcbiAgKSxcclxuICAncGluayc6IChcclxuICAgICcxMDAnOiBoc2xhKDMzNiwgMTAwJSwgNTAlLCAxKSxcclxuICApLFxyXG4pO1xyXG5cclxuLy8gQ29sb3Igc2hvcnRoYW5kIHZhcmlhYmxlcy5cclxuXHJcbi8vIEJsYWNrXHJcbiRjb2xvci1ibGFjay0xMDogICAgIG1hcC1nZXQobWFwLWdldCgkY29sb3JzLCAnYmxhY2snKSwgJzEwJyk7XHJcbiRjb2xvci1ibGFjay0xMDA6ICAgICBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJ2JsYWNrJyksICcxMDAnKTtcclxuJGNvbG9yLWJsYWNrLTIwMDogICAgIG1hcC1nZXQobWFwLWdldCgkY29sb3JzLCAnYmxhY2snKSwgJzIwMCcpO1xyXG5cclxuLy8gV2hpdGVcclxuJGNvbG9yLXdoaXRlLTEwMDogICAgIG1hcC1nZXQobWFwLWdldCgkY29sb3JzLCAnd2hpdGUnKSwgJzEwMCcpO1xyXG4kY29sb3Itd2hpdGUtMjAwOiAgICAgbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICd3aGl0ZScpLCAnMjAwJyk7XHJcblxyXG4vLyBCcm93blxyXG4kY29sb3ItYnJvd24tMTAwOiAgICAgbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICdicm93bicpLCAnMTAwJyk7XHJcblxyXG4vLyBCbHVlXHJcbiRjb2xvci1ibHVlLTEwMDogICAgICBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJ2JsdWUnKSwgJzEwMCcpO1xyXG4kY29sb3ItYmx1ZS01MDogICAgICBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJ2JsdWUnKSwgJzUwJyk7XHJcblxyXG4vLyBSZWRcclxuJGNvbG9yLXJlZC0xMDA6ICAgICAgIG1hcC1nZXQobWFwLWdldCgkY29sb3JzLCAncmVkJyksICcxMDAnKTtcclxuXHJcbi8vIFllbGxvd1xyXG4kY29sb3IteWVsbG93LTEwMDogICAgbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICd5ZWxsb3cnKSwgJzEwMCcpO1xyXG5cclxuLy8gT3JhbmdlXHJcbiRjb2xvci1vcmFuZ2UtMTAwOiAgICBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJ29yYW5nZScpLCAnMTAwJyk7XHJcbiRjb2xvci1vcmFuZ2UtNTA6ICAgIG1hcC1nZXQobWFwLWdldCgkY29sb3JzLCAnb3JhbmdlJyksICc1MCcpO1xyXG5cclxuLy8gR3JlZW5cclxuJGNvbG9yLWdyZWVuLTEwMDogICAgbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICdncmVlbicpLCAnMTAwJyk7XHJcbiRjb2xvci1ncmVlbi01MDogICAgbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICdncmVlbicpLCAnNTAnKTtcclxuXHJcbi8vIFBpbmtcclxuJGNvbG9yLXBpbmstMTAwOiAgICBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJ3BpbmsnKSwgJzEwMCcpO1xyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBSZXNldFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIEN1c3RvbSB1c2VyIGFnZW50IHJlc2V0cyBhbmQgb3ZlcnJpZGVzIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluXHJcbiAqIE5vcm1hbGl6ZSA4LjAuMC4gVGhpcyBtb3N0bHkgcmVtb3ZlcyBzb21lIGFubm95aW5nIG1hcmdpbiBhbmQgcGFkZGluZ1xyXG4gKiBkZWZhdWx0cywgYm9yZGVyIHJhZGl1cywgYW5kIG91dGxpbmVzLlxyXG4gKi9cclxuXHJcbmEge1xyXG4gIGNvbG9yOiBpbmhlcml0O1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiAxLiBSZW1vdmUgYm9yZGVyIHJhZGl1cyBvbiBDaHJvbWUgNjIuMCsgb24gbWFjT1MuXHJcbiAqL1xyXG5cclxuYnV0dG9uIHtcclxuICBib3JkZXI6IDA7XHJcbiAgYm9yZGVyLXJhZGl1czogMDsgLyogMSAqL1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYmFja2dyb3VuZDogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbmZpZWxkc2V0IHtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxuICBib3JkZXI6IDA7XHJcbn1cclxuXHJcbmZpZ3VyZSB7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG5oMSxcclxuaDIsXHJcbmgzLFxyXG5oNCxcclxuaDUsXHJcbmg2IHtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxuICBmb250LXNpemU6IGluaGVyaXQ7XHJcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XHJcbn1cclxuXHJcbmhyIHtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiAxLiBSZW1vdmUgd2hpdGUgc3BhY2UuXHJcbiAqL1xyXG5cclxuaW1nIHtcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IC8qIDEgKi9cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiAxLiBSZW1vdmUgaW5oZXJpdGVkIHVzZXIgYWdlbnQgYXBwZWFyYW5jZS5cclxuICovXHJcblxyXG5pbnB1dCxcclxuc2VsZWN0LFxyXG50ZXh0YXJlYSB7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGJvcmRlcjogMDtcclxuICBib3JkZXItcmFkaXVzOiAwO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgYXBwZWFyYW5jZTogbm9uZTsgLyogMSAqL1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIDEuIE9ubHkgYWxsb3cgdmVydGljYWwgcmVzaXppbmcgdG8gcHJldmVudCB0aGUgdGV4dGFyZWFcclxuICogICAgZnJvbSBvdmVyZmxvd2luZyB0aGUgY29udGFpbmVyLlxyXG4gKi9cclxuXHJcbnRleHRhcmVhIHtcclxuICByZXNpemU6IHZlcnRpY2FsO1xyXG59XHJcblxyXG51bCxcclxub2wge1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxufVxyXG5cclxucCB7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIDEuIENvbGxhcHNlIGJvcmRlcnMgdG8gcHJldmVudCBkb3VibGUgc2lkZWQgYm9yZGVycy5cclxuICovXHJcblxyXG50YWJsZSB7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IC8qIDEgKi9cclxufVxyXG5cclxuc3Ryb25nIHtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEJ1dHRvbnNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4vKipcclxuICogQnV0dG9uIGJhc2UuXHJcbiAqL1xyXG5cclxuLmJ1dHRvbiB7XHJcbiAgQGluY2x1ZGUgZm9udCgxNXB4LCAxOXB4KTtcclxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDEwcHggMjBweDtcclxuICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZTtcclxuICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjQycHg7XHJcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuXHJcbiAgc3ZnIHtcclxuICAgIHdpZHRoOiAxNXB4O1xyXG4gICAgaGVpZ2h0OiAxNXB4O1xyXG4gIH1cclxuXHJcbiAgJi5zdmctcmlnaHQgc3ZnIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gIH1cclxuXHJcbiAgJi5zdmctbGVmdCBzdmcge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBCdXR0b24gcHJpbWFyeSAocmVkKS5cclxuICovXHJcblxyXG4uYnV0dG9uLXByaW1hcnktLXJlZCB7XHJcbiAgYmFja2dyb3VuZDogJGNvbG9yLXJlZC0xMDA7XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IGRhcmtlbigkY29sb3ItcmVkLTEwMCwgMTAlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQnV0dG9uIHByaW1hcnkgKGJsdWUpLlxyXG4gKi9cclxuXHJcbi5idXR0b24tcHJpbWFyeS0tYmx1ZSB7XHJcbiAgYmFja2dyb3VuZDogJGNvbG9yLWJsdWUtMTAwO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgICBiYWNrZ3JvdW5kOiBkYXJrZW4oJGNvbG9yLWJsdWUtMTAwLCAxMCUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBCdXR0b24gcHJpbWFyeSAoYnJvd24pLlxyXG4gKi9cclxuXHJcbi5idXR0b24tcHJpbWFyeS0tYnJvd24ge1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci1icm93bi0xMDA7XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IGRhcmtlbigkY29sb3ItYnJvd24tMTAwLCAxMCUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb250YWluZXJcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBUaGUgY29udGFpbmVyIG9iamVjdCBjZW50ZXJzIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50LlxyXG4gKi9cclxuXHJcbi5jb250YWluZXIge1xyXG4gIEBpbmNsdWRlIGNvbnRhaW5lcjtcclxufVxyXG4iLCIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBEZWZpbml0aW9uc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gR3JpZFxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gR3JpZCB3aWR0aC5cclxuLy8gTWF4aW11bSBjb250YWluZXIgd2lkdGguXHJcbiRncmlkLXdpZHRoOiAxMDI0cHg7XHJcblxyXG4vLyBHcmlkIGNvbHVtbnMuXHJcbi8vIEFtb3VudCBvZiBncmlkIGNvbHVtbnMgdG8gY2FsY3VsYXRlIGEgY29sdW1uIHdpZHRoIHdpdGguXHJcbiRncmlkLWNvbHVtbnM6IDEyO1xyXG5cclxuLy8gR3JpZCBjb2x1bW4uXHJcbi8vIENvbHVtbiB3aWR0aCBpbiBwaXhlbHMuXHJcbiRncmlkLWNvbHVtbjogNjBweDtcclxuXHJcbi8vIEdyaWQgZ2FwLlxyXG4vLyBTcGFjZSBiZXR3ZWVuIGdyaWQgY29sdW1ucywgYXV0b21hdGVkLlxyXG4kZ3JpZC1nYXA6ICgkZ3JpZC13aWR0aCAtICgkZ3JpZC1jb2x1bW4gKiAkZ3JpZC1jb2x1bW5zKSkgLyAkZ3JpZC1jb2x1bW5zO1xyXG5cclxuXHJcbi8vIEFzc2V0c1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gSW1hZ2UgcGF0aC5cclxuJGltYWdlLXBhdGg6ICcuLi9pbWFnZXMvJztcclxuXHJcblxyXG4vLyBCb2R5XHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vLyBCb2R5IGJhY2tncm91bmQgY29sb3IuXHJcbiRib2R5LWJhY2tncm91bmQtY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcblxyXG4vLyBCb2R5IGNvbG9yLlxyXG4kYm9keS1jb2xvcjogJGNvbG9yLWJsYWNrLTEwMDtcclxuXHJcbi8vIEJvZHkgZm9udCBmYW1pbHkuXHJcbiRib2R5LWZvbnQtZmFtaWx5OiBtYXAtZ2V0KCRmb250LWZhbWlseSwgJ2RlZmF1bHQnKTtcclxuXHJcbi8vIEJvZHkgdGV4dC5cclxuJGJvZHktdGV4dDogJ3AnO1xyXG5cclxuXHJcbi8vIE90aGVyXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vLyBMaW5rIGNvbG9yLlxyXG4kbGluay1jb2xvcjogJGNvbG9yLWJsYWNrLTEwMDtcclxuXHJcblxyXG4vLyBSZXNwb25zaXZlXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vLyBHcmlkIGJyZWFrcG9pbnQgYWxpYXMuXHJcbiRicmVha3BvaW50czogKFxyXG4gIHhzOiBudWxsLFxyXG4gIHNtOiAncGhvbmUnLFxyXG4gIG1kOiAndGFibGV0LXBvcnRyYWl0LXVwJyxcclxuICBsZzogJ3RhYmxldC1sYW5kc2NhcGUtdXAnLFxyXG4gIHhsOiAnZGVza3RvcCdcclxuKTtcclxuXHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIENvbnRlbnQgQ29uc3RyYWludFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIFRoZSBjb250ZW50IGNvbnN0cmFpbnQgaXMgYSBjb25zdHJhaW50IGZvciBhbGwgdGhlIGNvbnRlbnQgd2l0aGluXHJcbiAqIHRoZSBkb2N1bWVudC4gSXQgY2FuIGJlIG1hbmlwdWxhdGVkIGJ5IENTUyBvciBKYXZhU2NyaXB0IHdpdGhvdXRcclxuICogaW5mbHVlbmNpbmcgdGhlIGJvZHkuXHJcbiAqL1xyXG5cclxuLmNvbnRlbnQtY29uc3RyYWludCB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3Bob25lJykge1xyXG4gICAgbWFyZ2luLXRvcDogNjhweDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQnKSB7XHJcbiAgICBtYXJnaW4tdG9wOiA5NHB4O1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICBtYXJnaW4tdG9wOiAxMzFweDtcclxuICB9XHJcblxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBtaW4taGVpZ2h0OiAxMDB2aDtcclxuICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgRmxleFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIEV4YW1wbGUgb2YgYSBmbGV4IGJhc2VkIGNvbHVtbiBncmlkIGxheW91dCBpbiBwcmFjdGljZTpcclxuICpcclxuICogPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gKiAgIDxkaXYgY2xhc3M9XCJjb2wgY29sLXhzLTYgY29sLXNtLTEyXCI+PC9kaXY+XHJcbiAqICAgPGRpdiBjbGFzcz1cImNvbCBjb2wteHMtNiBjb2wtc20tMTJcIj48L2Rpdj5cclxuICogPC9kaXY+XHJcbiAqXHJcbiAqIFRoaXMgZXhhbXBsZSB3aWxsIGNyZWF0ZSBhIHJvdyB3aXRoIHR3byBjb2x1bW5zIGVhY2ggZmlsbGluZyBoYWxmIHRoZSB3aWR0aFxyXG4gKiBvZiB0aGUgcm93IG9uIGFsbCBtZWRpYSwgYnV0IHdpbGwgY29udmVydCB0byBhIGZ1bGwgd2lkdGggY29sdW1uIG9uIHRoZVxyXG4gKiBzbWFsbCBgLXNtYCBicmVha3BvaW50IGFsaWFzLCB3aGljaCBpcyBtb2JpbGUgb25seS4gUmVmZXIgdG9cclxuICogYHNldHRpbmdzL19kZWZpbml0aW9ucy5zY3NzYCBmb3IgYWxsIGJyZWFrcG9pbnQgYWxpYXMuXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEZsZXggb2JqZWN0LlxyXG4gKlxyXG4gKiBUaXA6IFVzZSBmbGV4IG9uIGEgY29sdW1uIHRvIG1ha2UgdGhlIGJveCB0aGUgc2FtZSBoZWlnaHQgYXMgdGhlIGNvbHVtbi5cclxuICovXHJcblxyXG4uZmxleCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxufVxyXG5cclxuLmZsZXgtd3JhcCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbn1cclxuXHJcblxyXG5cclxuLyoqXHJcbiAqIEZsZXggb2JqZWN0IHdpdGggYSBjb2x1bW4gYmFzZWQgbGF5b3V0IHN5c3RlbS5cclxuICovXHJcblxyXG4ucm93IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXg6IDAgMSBhdXRvO1xyXG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XHJcbiAgbWFyZ2luOiAwIC0jeygkZ3JpZC1nYXAvMil9O1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEJveCwgdGhlIGluc2lkZSBvZiBhIGNvbHVtbi5cclxuICovXHJcblxyXG4uYm94IHtcclxuICBmbGV4OiAxO1xyXG59XHJcblxyXG5cclxuLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUga2V5cyBpbiB0aGUgYCRicmVha3BvaW50c2AgdmFyaWFibGUgbWFwIGRlZmluZWQgaW5cclxuLy8gYHNldHRpbmdzL19kZWZpbml0aW9ucy5zY3NzYC5cclxuQGVhY2ggJGtleSwgJHZhbHVlIGluICRicmVha3BvaW50cyB7XHJcblxyXG4gIC8vIENyZWF0ZSBhIG1lZGlhIHF1ZXJ5IGZvciBldmVyeSBrZXkgaW4gYCRicmVha3BvaW50c2AuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJHZhbHVlKSB7XHJcblxyXG4gICAgLy8gSXRlcmF0ZSBmcm9tIDEgdGhyb3VnaCB0aGUgYW1vdW50IG9mIGdyaWQgY29sdW1ucyBkZWZpbmVkIGJ5XHJcbiAgICAvLyBgJGdyaWQtY29sdW1uc2AgaW4gYHNldHRpbmdzL19kZWZpbml0aW9ucy5zY3NzYC5cclxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XHJcblxyXG4gICAgICAvKipcclxuICAgICAgICogQ29sdW1uICN7JGl9IGZvciB0aGUgYCN7JGtleX1gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xyXG5cclxuICAgICAgLmNvbC0jeyRrZXl9LSN7JGl9IHtcclxuICAgICAgICBmbGV4OiAwIDEgYXV0bztcclxuICAgICAgICB3aWR0aDogY29sdW1uKCRpKTtcclxuICAgICAgICBwYWRkaW5nOiAwICgkZ3JpZC1nYXAvMik7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvLyBPdXRwdXQgYW4gb2Zmc2V0IHV0aWxpdHkgY2xhc3MgaWYgdGhlIGl0ZXJhdG9yIGlzIGxlc3MgdGhhbiB0aGUgYW1vdW50XHJcbiAgICAgIC8vIG9mIGdyaWQgY29sdW1ucyBkZWZpbmVkIGJ5IGAkZ3JpZC1jb2x1bW5zYCBpblxyXG4gICAgICAvLyBgc2V0dGluZ3MvX2RlZmluaXRpb25zLnNjc3NgLlxyXG4gICAgICBAaWYgKCRpIDwgJGdyaWQtY29sdW1ucykge1xyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgI3skaX0gZm9yIHRoZSBgI3ska2V5fWAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cclxuXHJcbiAgICAgICAgLm9mZnNldC0jeyRrZXl9LSN7JGl9IHtcclxuICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjb2x1bW4oJGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBMb29wIHRocm91Z2ggYWxsIHZhbHVlcyBmb3IgdGhlIGBhbGlnbi1pdGVtc2AgcHJvcGVydHkuXHJcbiAgICBAZWFjaCAkdmFsdWUgaW4gc3RyZXRjaCwgY2VudGVyLCBmbGV4LXN0YXJ0LCBmbGV4LWVuZCwgYmFzZWxpbmUge1xyXG5cclxuICAgICAgLyoqXHJcbiAgICAgICAqIEFsaWduIGAjeyR2YWx1ZX1gIGZvciB0aGUgI3ska2V5fSBicmVha3BvaW50LlxyXG4gICAgICAgKi9cclxuXHJcbiAgICAgIC5hbGlnbi0jeyRrZXl9LSN7JHZhbHVlfSB7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6ICR2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBMb29wIHRocm91Z2ggYWxsIHZhbHVlcyBmb3IgdGhlIGBqdXN0aWZ5LWNvbnRlbnRgIHByb3BlcnR5LlxyXG4gICAgQGVhY2ggJHZhbHVlIGluIHN0YXJ0LCBjZW50ZXIsIHNwYWNlLWJldHdlZW4sIHNwYWNlLWFyb3VuZCwgc3BhY2UtZXZlbmx5LCBmbGV4LXN0YXJ0LCBmbGV4LWVuZCB7XHJcblxyXG4gICAgICAvKipcclxuICAgICAgICogSnVzdGlmeSBgI3skdmFsdWV9YCBmb3IgdGhlICN7JGtleX0gYnJlYWtwb2ludC5cclxuICAgICAgICovXHJcblxyXG4gICAgICAuanVzdGlmeS0jeyRrZXl9LSN7JHZhbHVlfSB7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiAkdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gTG9vcCB0aHJvdWdoIGV2ZXJ5IGRpcmVjdGlvbiBmcm9tIGxlZnQgdG8gcmlnaHQuXHJcbiAgICBAZWFjaCAkZGlyZWN0aW9uIGluIGxlZnQsIHJpZ2h0IHtcclxuXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBCbGVlZCAjeyRkaXJlY3Rpb259IGZvciB0aGUgI3ska2V5fSBicmVha3BvaW50LlxyXG4gICAgICAgKi9cclxuXHJcbiAgICAgIC5ibGVlZC0jeyRrZXl9LSN7JGRpcmVjdGlvbn0ge1xyXG4gICAgICAgIHBhZGRpbmctI3skZGlyZWN0aW9ufTogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9yZGVyIGZpcnN0IGZvciB0aGUgYCN7JGtleX1gIGJyZWFrcG9pbnQuXHJcbiAgICAgKi9cclxuXHJcbiAgICAuZmlyc3QtI3ska2V5fSB7XHJcbiAgICAgIG9yZGVyOiAtMTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcmRlciBsYXN0IGZvciB0aGUgYCN7JGtleX1gIGJyZWFrcG9pbnQuXHJcbiAgICAgKi9cclxuXHJcbiAgICAubGFzdC0jeyRrZXl9IHtcclxuICAgICAgb3JkZXI6IDE7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV2ZXJzZSBvcmRlciBmb3IgdGhlIGAjeyRrZXl9YCBicmVha3BvaW50LlxyXG4gICAgICovXHJcblxyXG4gICAgLnJldmVyc2UtI3ska2V5fSB7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgSGVhZGluZ1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYWluIHNldHRpbmdzLlxyXG4gKi9cclxuXHJcbi5zdWJoZWFkaW5nIHtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogSGVhZGluZyAxXHJcbiAqL1xyXG5cclxuLmhlYWRpbmctMSB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgIEBpbmNsdWRlIGZvbnQoMzBweCwgNTBweCk7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBmb250KDQ1cHgsIDcwcHgpO1xyXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IDEuMjVweDtcclxufVxyXG5cclxuLnN1YmhlYWRpbmctMSB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgQGluY2x1ZGUgZm9udCgyNXB4LCAzMHB4KTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGZvbnQoMzVweCwgNDNweCk7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNjlweDtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEhlYWRpbmcgMlxyXG4gKi9cclxuXHJcbi5oZWFkaW5nLTIge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgIEBpbmNsdWRlIGZvbnQoMjdweCwgNDBweCk7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBmb250KDMzcHgsIDQwcHgpO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IDEuMjVweDtcclxufVxyXG5cclxuLnN1YmhlYWRpbmctMiB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgQGluY2x1ZGUgZm9udCgyMHB4LCAzMHB4KTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGZvbnQoMjdweCwgMzdweCk7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNjlweDtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEhlYWRpbmcgM1xyXG4gKi9cclxuXHJcbi5oZWFkaW5nLTMge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgIEBpbmNsdWRlIGZvbnQoMjVweCwgMzdweCk7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBmb250KDMwcHgsIDM3cHgpO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IDEuMjVweDtcclxufVxyXG5cclxuLnN1YmhlYWRpbmctMyB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgQGluY2x1ZGUgZm9udCgxN3B4LCAzMHB4KTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGZvbnQoMjVweCwgMzdweCk7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNjlweDtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG5cclxufVxyXG5cclxuLyoqXHJcbiAqIEhlYWRpbmcgNFxyXG4gKi9cclxuXHJcbi5oZWFkaW5nLTQge1xyXG5cclxuXHJcbiAgQGluY2x1ZGUgZm9udCgyMHB4LCAzN3B4KTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjY5cHg7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIExpbmtzXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuLyoqXHJcbiAqIExpbmsgYmFzZS5cclxuICovXHJcblxyXG4ubGluayB7XHJcbiAgQGluY2x1ZGUgZm9udCgxNXB4LCAzMHB4KTtcclxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZTtcclxuXHJcbiAgc3ZnIHtcclxuICAgIHdpZHRoOiAxNXB4O1xyXG4gICAgaGVpZ2h0OiAxNXB4O1xyXG4gIH1cclxuXHJcbiAgJi5zdmctcmlnaHQgc3ZnIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gIH1cclxuXHJcbiAgJi5zdmctbGVmdCBzdmcge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG4gIH1cclxuXHJcbiAgJi51bmRlcmxpbmUge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogTGluayAocmVkKS5cclxuICovXHJcblxyXG4ubGluay0tcmVkIHtcclxuICBjb2xvcjogJGNvbG9yLXJlZC0xMDA7XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICAgIGNvbG9yOiBkYXJrZW4oJGNvbG9yLXJlZC0xMDAsIDEwJSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIExpbmsgKHdoaXRlKS5cclxuICovXHJcblxyXG4ubGluay0td2hpdGUge1xyXG4gIGNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgICBjb2xvcjogJGNvbG9yLWJyb3duLTEwMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogTGluayAoYmxhY2spLlxyXG4gKi9cclxuXHJcbi5saW5rLS1ibGFjayB7XHJcbiAgY29sb3I6ICRjb2xvci1ibGFjay0xMDA7XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItcmVkLTEwMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFNlY3Rpb25cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgVGFnc1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBUYWcgYmFzZS5cclxuICovXHJcblxyXG4udGFnIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIHJpZ2h0OiAwO1xyXG4gIHBhZGRpbmc6IDFweCAxNnB4IDFweCAwO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XHJcbiAgei1pbmRleDogMjA7XHJcblxyXG4gICY6OmJlZm9yZSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIHJpZ2h0OiBjYWxjKDEwMCUgLSAyMHB4KTtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIHdpZHRoOiAzMHB4O1xyXG4gICAgdHJhbnNmb3JtOiBza2V3WCgxNWRlZyk7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHotaW5kZXg6IC0xO1xyXG4gIH1cclxufVxyXG5cclxuLnRhZy0teWVsbG93IHtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3IteWVsbG93LTEwMDtcclxuICBjb2xvcjogJGNvbG9yLWJsYWNrLTEwMDtcclxuXHJcbiAgJjo6YmVmb3JlIHtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci15ZWxsb3ctMTAwO1xyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBXcmFwcGVyXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogVGhlIHdyYXBwZXIgb2JqZWN0IGNlbnRlcnMgYW4gZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQuXHJcbiAqL1xyXG5cclxuJHdlYnNpdGUtd2lkdGg6ICAgMTI0MHB4O1xyXG4kd2Vic2l0ZS1wYWRkaW5nLWRlc2t0b3A6IDIwcHg7XHJcbiR3ZWJzaXRlLXBhZGRpbmctdGFibGV0LWxhbmRzY2FwZTogNTBweDtcclxuJHdlYnNpdGUtcGFkZGluZy10YWJsZXQtcG9ydHJhaXQ6IDYwcHg7XHJcbiR3ZWJzaXRlLXBhZGRpbmctcGhvbmU6IDIwcHg7XHJcblxyXG5cclxuLyoqXHJcbiAqIFdyYXBwZXIgKGRlZmF1bHQpXHJcbiAqL1xyXG5cclxuLndyYXBwZXIge1xyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICBAaW5jbHVkZSBjb250YWluZXIoJHdlYnNpdGUtd2lkdGgsICR3ZWJzaXRlLXBhZGRpbmctcGhvbmUpO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdCcpIHtcclxuICAgIEBpbmNsdWRlIGNvbnRhaW5lcigkd2Vic2l0ZS13aWR0aCwgJHdlYnNpdGUtcGFkZGluZy10YWJsZXQtcG9ydHJhaXQpO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUnKSB7XHJcbiAgICBAaW5jbHVkZSBjb250YWluZXIoJHdlYnNpdGUtd2lkdGgsICR3ZWJzaXRlLXBhZGRpbmctdGFibGV0LWxhbmRzY2FwZSk7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBjb250YWluZXIoJHdlYnNpdGUtd2lkdGgsICR3ZWJzaXRlLXBhZGRpbmctZGVza3RvcCk7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFdyYXBwZXIgKGZ1bGwgd2lkdGgpXHJcbiAqL1xyXG5cclxuLndyYXBwZXItLWZ1bGwge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4ud3JhcHBlci0tc21hbGwge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAgbWF4LXdpZHRoOiA3NjBweDtcclxuICB9XHJcblxyXG4gIG1heC13aWR0aDogODQwcHg7XHJcbiAgbWFyZ2luOiBhdXRvO1xyXG59XHJcblxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDTVMgT3V0cHV0XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogRXZlcnkgY29uY2VpdmFibGUgSFRNTCBlbGVtZW50IHdpdGhpbiBhIGAuY21zLW91dHB1dGAgd3JhcHBlci5cclxuICpcclxuICogMS4gRXhjbHVkZSBsYXN0IGNoaWxkcy5cclxuICovXHJcblxyXG4uY21zLW91dHB1dCB7XHJcblxyXG4gID4gKiB7XHJcblxyXG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsgLyogMSAqL1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaDEge1xyXG4gICAgQGV4dGVuZCAuaGVhZGluZy0xO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgaDIge1xyXG4gICAgQGV4dGVuZCAuaGVhZGluZy0yO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgaDMge1xyXG4gICAgQGV4dGVuZCAuaGVhZGluZy0zO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgaDQge1xyXG4gICAgQGV4dGVuZCAuaGVhZGluZy00O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgdWwge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xyXG5cclxuICAgIGxpIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7XHJcblxyXG4gICAgICBzdmcge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDEycHg7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgICB3aWR0aDogNXB4O1xyXG4gICAgICAgIGhlaWdodDogNXB4O1xyXG4gICAgICAgIGNvbG9yOiAkY29sb3ItYnJvd24tMTAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9sIHtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICBjb3VudGVyLXJlc2V0OiBteS1hd2Vzb21lLWNvdW50ZXI7XHJcbiAgfVxyXG5cclxuICBvbCBsaSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgICBjb3VudGVyLWluY3JlbWVudDogbXktYXdlc29tZS1jb3VudGVyO1xyXG5cclxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbCBsaTo6YmVmb3JlIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgY29sb3I6ICRjb2xvci1icm93bi0xMDA7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIGNvbnRlbnQ6IGNvdW50ZXIobXktYXdlc29tZS1jb3VudGVyKSAnLiAnO1xyXG4gIH1cclxuXHJcbiAgcCA+IGEge1xyXG4gICAgY29sb3I6ICRsaW5rLWNvbG9yO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHAge1xyXG4gICAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXMgZWFzZTtcclxuICAgIGNvbG9yOiAkY29sb3ItYmxhY2stMjAwO1xyXG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuNDJweDtcclxuICB9XHJcblxyXG4gIHN0cm9uZyB7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgVGVtcGxhdGUgZGVmYXVsdC5cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4vKipcclxuICogTWFpbiBzZXR0aW5ncy5cclxuICovXHJcblxyXG4uY29udGVudC1kZWZhdWx0IHtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGUtMTAwO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFRpdGxlLlxyXG4gKi9cclxuXHJcbi5jb250ZW50LWRlZmF1bHRfX3RpdGxlIHtcclxuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU3VidGl0bGUuXHJcbiAqL1xyXG5cclxuLmNvbnRlbnQtZGVmYXVsdF9fc3VidGl0bGUge1xyXG4gIG1hcmdpbi1ib3R0b206IDUwcHg7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogRnJvbnQtcGFnZS5cclxuICovXHJcblxyXG4uY29udGVudC1kZWZhdWx0LS1mcm9udC1wYWdlIHtcclxuICBtYXJnaW4tdG9wOiAxMDBweDtcclxuXHJcbiAgLmNvbnRlbnQtZGVmYXVsdF9fZWRpdG9yIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb250ZW50IHN1Ym1lbnVcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4vKipcclxuICogbWFpbi5cclxuICovXHJcblxyXG4uY29udGVudC1zdWJtZW51IHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIC8vdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XHJcblxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUnKSB7XHJcbiAgICBtYXgtd2lkdGg6IDU1MHB4O1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldCcpIHtcclxuICAgIG1hcmdpbjogYXV0byBhdXRvIDUwcHg7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICBtYXJnaW46IGF1dG8gYXV0byAzMHB4O1xyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHBhZGRpbmc6IDUwcHggMjBweDtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGUtMjAwO1xyXG4gIGNvbG9yOiAkY29sb3ItYmxhY2stMjAwO1xyXG4gIC8vdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuXHJcbiAgJi5oYXMtbm8taXRlbXMge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU3VibWVudSBpdGVtLlxyXG4gKi9cclxuXHJcbi5jb250ZW50LXN1Ym1lbnVfX2l0ZW0ge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZzogMjBweDtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZS0yMDA7XHJcbiAgfVxyXG5cclxuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xyXG5cclxuICAmLmlzLWN1cnJlbnQtcGFnZSB7XHJcbiAgICBjb2xvcjogJGNvbG9yLXJlZC0xMDA7XHJcbiAgfVxyXG5cclxuICAmOmxhc3Qtb2YtdHlwZSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIH1cclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgY29sb3I6ICRjb2xvci1yZWQtMTAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIEZpcnN0IGl0ZW0gcnVsZXMuXHJcbiAgJi5pcy1maXJzdC1pdGVtIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIFdoZW4gYW4gaXRlbSBpcyBhY3RpdmUuXHJcbiAgJi5pcy1hY3RpdmUge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLy8gRHJvcGRvd24gYnV0dG9uIG9uIG1vYmlsZSBkZXZpY2VzLlxyXG4uanMtZXhwYW5kIHtcclxuICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDEwcHg7XHJcbiAgcmlnaHQ6IDIwcHg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gIHdpZHRoOiAxMDBweDtcclxuICBoZWlnaHQ6IDUwcHg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG5cclxuICBzdmcge1xyXG4gICAgd2lkdGg6IDE1cHg7XHJcbiAgICBoZWlnaHQ6IDE1cHg7XHJcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXMgZWFzZTtcclxuICAgIGNvbG9yOiAkY29sb3ItYmxhY2stMjAwO1xyXG4gIH1cclxuXHJcbiAgJi5pcy1hY3RpdmUge1xyXG5cclxuICAgIHN2ZyB7XHJcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFN1Ym1lbnUgaGVhZGVyIChvbmx5IG9uIG1vYmlsZSkuXHJcbiAqL1xyXG5cclxuLmNvbnRlbnQtc3VibWVudV9fY2hvb3NlIHtcclxuICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgSGVhZGVyXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuLyoqXHJcbiAqIE1haW4uXHJcbiAqL1xyXG5cclxuLmZvb3RlciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBVcHBlci5cclxuICovXHJcblxyXG4uZm9vdGVyLXVwcGVyIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZScpIHtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAxMjBweCk7XHJcbiAgICBtYXJnaW4tbGVmdDogLTYwcHg7XHJcbiAgfVxyXG5cclxuICBiYWNrZ3JvdW5kOiAkY29sb3ItYmx1ZS0xMDA7XHJcbiAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcblxyXG4gIC53cmFwcGVyIHtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogVXBwZXIgbGVmdC5cclxuICovXHJcblxyXG4uZm9vdGVyLXVwcGVyX19sZWZ0IHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICBwYWRkaW5nOiA1MHB4IDAgMDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAgbWF4LXdpZHRoOiA4MzBweDtcclxuICAgIG1hcmdpbjogYXV0bztcclxuICAgIHBhZGRpbmc6IDEwMHB4IDAgMDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcblxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB3aWR0aDogNzUlO1xyXG4gIG1heC13aWR0aDogNjEwcHg7XHJcbiAgcGFkZGluZzogMTAwcHggMCA1MHB4O1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci1ibHVlLTEwMDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBVcHBlciByaWdodC5cclxuICovXHJcblxyXG4uZm9vdGVyLXVwcGVyX19yaWdodCB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3Bob25lJykge1xyXG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDQwcHgpO1xyXG4gICAgbWFyZ2luLXRvcDogNjBweDtcclxuICAgIG1hcmdpbi1yaWdodDogLTIwcHg7XHJcbiAgICBtYXJnaW4tbGVmdDogLTIwcHg7XHJcbiAgICBwYWRkaW5nOiA0MHB4IDAgNTBweDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQnKSB7XHJcbiAgICB3aWR0aDogY2FsYygxMDAlICsgMTIwcHgpO1xyXG4gICAgbWFyZ2luLXRvcDogNzBweDtcclxuICAgIG1hcmdpbi1yaWdodDogLTYwcHg7XHJcbiAgICBtYXJnaW4tbGVmdDogLTYwcHg7XHJcbiAgICBwYWRkaW5nOiAzMHB4IDAgNTBweDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbjogOTBweCBhdXRvIGF1dG87XHJcbiAgICBwYWRkaW5nOiA1MHB4IDAgMTAwcHg7XHJcbiAgfVxyXG5cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gIHdpZHRoOiAyNSU7XHJcbiAgcGFkZGluZzogMTAwcHggMCAxMDBweCAxMHB4O1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci1icm93bi0xMDA7XHJcbiAgei1pbmRleDogMTA7XHJcblxyXG4gIC5oZWFkaW5nLTIge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIH1cclxuXHJcbiAgJjo6YmVmb3JlIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgICAgdG9wOiAtNTBweDtcclxuICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHRyYW5zZm9ybTogc2tld1koLTlkZWcpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQnKSB7XHJcbiAgICAgIHRvcDogLTUwcHg7XHJcbiAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICBoZWlnaHQ6IDEyMHB4O1xyXG4gICAgICB0cmFuc2Zvcm06IHNrZXdZKC01ZGVnKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIHJpZ2h0OiBjYWxjKDEwMCUgLSAxNzBweCk7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICB3aWR0aDogMTEwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHRyYW5zZm9ybTogc2tld1goLTE1ZGVnKTtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1icm93bi0xMDA7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHotaW5kZXg6IC0xO1xyXG4gIH1cclxuXHJcbiAgJjo6YWZ0ZXIge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIGxlZnQ6IDEwMCU7XHJcbiAgICB3aWR0aDogMjAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1icm93bi0xMDA7XHJcbiAgICBjb250ZW50OiAnJztcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogVXBwZXIgcmlnaHQgY29udGVudC5cclxuICovXHJcblxyXG4uZm9vdGVyLXVwcGVyX19yaWdodC1jb250ZW50IHtcclxuICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICBwYWRkaW5nOiAwIDIwcHg7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZzogMCA2MHB4O1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUnKSB7XHJcbiAgICBtYXgtd2lkdGg6IDUxMHB4O1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogRm9vdGVyIGl0ZW0uXHJcbiAqL1xyXG5cclxuLmZvb3Rlcl9faXRlbSB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3Bob25lJykge1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdCcpIHtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAgbWF4LXdpZHRoOiAyNjBweDtcclxuICB9XHJcblxyXG4gIG1heC13aWR0aDogMTkwcHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogNTBweDtcclxuXHJcbiAgLmNvbnRlbnQtc3VibWVudV9faXRlbSB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogRm9vdGVyIHRpdGxlIChsZWZ0IGNvbnRlbnQpLlxyXG4gKi9cclxuXHJcbi5mb290ZXJfX3RpdGxlIHtcclxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogTGluayAobGVmdCBjb250ZW50KS5cclxuICovXHJcblxyXG4uZm9vdGVyX19saW5rIHtcclxuICBtYXJnaW4tdG9wOiAxMHB4O1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEFkZHJlc3MgcGFydC5cclxuICovXHJcblxyXG4uZm9vdGVyX19hZGRyZXNzIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0Jykge1xyXG4gICAgd2lkdGg6IDUwJTtcclxuICB9XHJcblxyXG4gIC5zbWFsbCB7XHJcbiAgICBAaW5jbHVkZSBmb250KDEwcHgsIDIwcHgpO1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIENvbnRhY3QgcGFydC5cclxuICovXHJcblxyXG4uZm9vdGVyLWNvbnRhY3Qge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQnKSB7XHJcbiAgICB3aWR0aDogNTAlO1xyXG4gICAgcGFkZGluZzogMCAwIDAgNDBweDtcclxuICB9XHJcblxyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIHBhZGRpbmc6IDEwcHggMCAwO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIENvbnRhY3QgaXRlbS5cclxuICovXHJcblxyXG4uZm9vdGVyLWNvbnRhY3RfX2l0ZW0ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgc3ZnIHtcclxuICAgIHdpZHRoOiAxNXB4O1xyXG4gICAgaGVpZ2h0OiAxNXB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBGb290ZXIgc29jaWFsIG1lZGlhLlxyXG4gKi9cclxuXHJcbi5mb290ZXItc29jaWFsIHtcclxuICBtYXJnaW4tbGVmdDogLTNweDtcclxuICBwYWRkaW5nLXRvcDogMjBweDtcclxuXHJcbiAgYSB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcyBlYXNlO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgICBjb2xvcjogJGNvbG9yLWJsdWUtMTAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdmcge1xyXG4gICAgd2lkdGg6IDMwcHg7XHJcbiAgICBoZWlnaHQ6IDI1cHg7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEZvb3RlciBsb3dlci5cclxuICovXHJcblxyXG4uZm9vdGVyLWxvd2VyIHtcclxuICBAaW5jbHVkZSBmb250KDEycHgsIDIwcHgpO1xyXG4gIHBhZGRpbmc6IDEwcHggMDtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGUtMTAwO1xyXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcblxyXG4gIC5saW5rIHtcclxuICAgIEBpbmNsdWRlIGZvbnQoMTJweCwgMjBweCk7XHJcbiAgfVxyXG5cclxuICAud3JhcHBlciB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgfVxyXG5cclxuICAuZmxleC13cmFwIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZScpIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5sb3dlciB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIE1pZGRsZSBsaW5rIGluIHRoZSBmb290ZXIuXHJcbiAqL1xyXG5cclxuLmZvb3Rlci1sb3dlcl9fbWlkZGxlIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWFyZ2luOiAwIDEwcHg7XHJcbiAgcGFkZGluZzogMCAxMHB4O1xyXG5cclxuICAmOjpiZWZvcmUge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDJweDtcclxuICAgIGJvdHRvbTogMnB4O1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxcHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYmxhY2stMTAwO1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgfVxyXG5cclxuICAmOjphZnRlciB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMnB4O1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDJweDtcclxuICAgIHdpZHRoOiAxcHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYmxhY2stMTAwO1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGb3JtLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXG4vKipcbiAqIE1haW4gc2V0dGluZ3MuXG4gKi9cblxuLmZvcm1fX2NvbnRhaW5lciB7XG4gIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNDBweCk7XG4gICAgbWFyZ2luLWxlZnQ6IC0yMHB4O1xuICB9XG5cbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xuICAgIHBhZGRpbmc6IDUwcHggMjBweDtcbiAgfVxuXG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMCAwIDEwMHB4O1xuICBwYWRkaW5nOiA1MHB4O1xuICBiYWNrZ3JvdW5kOiAkY29sb3ItcmVkLTEwMDtcbiAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBmb3JtIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDgyMHB4O1xuICAgIG1hcmdpbjogYXV0bztcbiAgfVxuXG4gIC5idXR0b24ge1xuICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcbiAgICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgfVxuXG4gICAgbWFyZ2luLXRvcDogNTBweDtcbiAgfVxufVxuXG5cbi8qKlxuICogR3Jhdml0eSBGb3JtcyBzZXR0aW5ncy5cbiAqL1xuXG4vL3Nhc3MtbGludDpkaXNhYmxlIGNsYXNzLW5hbWUtZm9ybWF0XG5cbi5nZm9ybV90aXRsZSB7XG4gIEBpbmNsdWRlIGZvbnQoNDVweCwgNzBweCk7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIGNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4uZ2Zvcm1fZGVzY3JpcHRpb24ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzgwcHg7XG4gIG1hcmdpbjogYXV0byBhdXRvIDUwcHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG5cbi5nZmllbGRfbGFiZWwge1xuICBmb250LXdlaWdodDogNzAwO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4uaGlkZGVuX2xhYmVsIHtcblx0LmdmaWVsZF9sYWJlbCB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0ICB9XG5cbn1cblxuLmdmb3JtX2ZpZWxkcyB7XG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XG4gICAgbWFyZ2luOiAtNXB4O1xuICB9XG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXJnaW46IC0xMHB4O1xufVxuXG5maWVsZHNldCB7XG5cdCYuZ2ZpZWxkIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXJnaW4tYm90dG9tOiAzMHB4O1xuXHR9XG5cblx0LmdjaG9pY2Uge1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0aW5wdXRbdHlwZT1cInJhZGlvXCJdLCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0gIHtcblx0XHRcdHdpZHRoOiAxMHB4O1xuXHRcdFx0aGVpZ2h0OiAxMHB4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGNvbG9yLXdoaXRlLTEwMDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdFx0dHJhbnNpdGlvbjogYWxsIDMwMG1zIGVhc2UtaW47XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXG5cdFx0XHQmOmNoZWNrZWQge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0fVxuXG5cdFx0bGFiZWwge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAxMHB4O1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdH1cblx0fVxuXG5cdC5nZmllbGRfZGVzY3JpcHRpb24ge1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdG9wYWNpdHk6IDAuNztcblxuXHRcdCYudmFsaWRhdGlvbl9tZXNzYWdlIHtcblx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0fVxuXHR9XG59XG5cbi5nc2VjdGlvbiB7XG5cdHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG5cblx0LmdzZWN0aW9uX3RpdGxlIHtcblx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdGZvbnQtc2l6ZTogMzBweDtcblx0XHRtYXJnaW46IDUwcHggMDtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHR9XG59XG5cbi5nZmllbGQge1xuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiA1cHg7XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZScpIHtcbiAgICB3aWR0aDogY2FsYyg1MCUgLSAxMHB4KTtcbiAgICBtYXJnaW46IDVweDtcbiAgfVxuXG4gIHdpZHRoOiBjYWxjKDUwJSAtIDIwcHgpO1xuICBtYXJnaW46IDEwcHg7XG59XG5cbi5nZmllbGQtaGFzLXRleHRhcmVhIHtcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xuICAgIG1hcmdpbjogNXB4IDVweCAwO1xuICB9XG5cbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMTBweCAxMHB4IDA7XG5cbiAgdGV4dGFyZWEge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gIH1cbn1cblxuaW5wdXRbdHlwZT0ndGV4dCddLFxuaW5wdXRbdHlwZT0ndGVsJ10sXG5pbnB1dFt0eXBlPSdlbWFpbCddLFxuc2VsZWN0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA1MHB4O1xuICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZS0xMDA7XG4gIGNvbG9yOiAkY29sb3ItYmxhY2stMjAwO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uZ2lucHV0X2NvbnRhaW5lcl9zZWxlY3QsIC5naW5wdXRfY29udGFpbmVyX2NoZWNrYm94IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIHN2ZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogY2FsYyg1MCUgLSA3LjVweCk7XG4gICAgcmlnaHQ6IDIwcHg7XG4gICAgd2lkdGg6IDE1cHg7XG4gICAgaGVpZ2h0OiAxNXB4O1xuICAgIGNvbG9yOiAkY29sb3ItcmVkLTEwMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxufVxuXG4uZ2Zvcm1fdmFsaWRhdGlvbl9jb250YWluZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4udmFsaWRhdGlvbl9tZXNzYWdlIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4udmFsaWRhdGlvbl9lcnJvciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogODIwcHg7XG4gIGhlaWdodDogMTAwJTtcbiAgbWF4LWhlaWdodDogMDtcbiAgbWFyZ2luOiBhdXRvIGF1dG8gMjBweDtcbiAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7XG4gIGJhY2tncm91bmQ6ICRjb2xvci1ibHVlLTEwMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICBoMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICB9XG5cbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xuICAgICAgdG9wOiAxMHB4O1xuICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgfVxuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMjBweDtcbiAgICByaWdodDogMjBweDtcblxuICAgIHN2ZyB7XG4gICAgICB3aWR0aDogMjBweDtcbiAgICAgIGhlaWdodDogMjBweDtcbiAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgfVxuXG4gICYuaXMtYWN0aXZlIHtcbiAgICBtYXgtaGVpZ2h0OiA1MDBweDtcbiAgICBwYWRkaW5nOiAyMHB4IDA7XG4gIH1cbn1cblxuLy9zYXNzLWxpbnQ6ZW5hYmxlIGNsYXNzLW5hbWUtZm9ybWF0XG5cbi8qKlxuICogQWRkaXRpb25hbCBydWxlcy5cbiAqL1xuXG4ucGFnZS1oZWFkZXIgKyAuZm9ybSB7XG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcbiAgICBtYXJnaW4tdG9wOiA1MHB4O1xuICB9XG5cbiAgbWFyZ2luLXRvcDogMTAwcHg7XG59XG5cblxuLmdmb3JtX3JlcXVpcmVkX2xlZ2VuZCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5nZW5lcmEtMjNfd3JhcHBlciB7XG5cdC5nZm9ybV9kZXNjcmlwdGlvbiB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgSGVhZGVyXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuLyoqXHJcbiAqIE1haW4uXHJcbiAqL1xyXG5cclxuXHJcbi5oZWFkZXIge1xyXG4gIEBtZWRpYShtYXgtd2lkdGg6IDc1NXB4KSB7XHJcbiAgICBwYWRkaW5nOiAyMHB4IDAgMTVweDtcclxuICB9XHJcblxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgcGFkZGluZzogMjVweCAwO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUnKSB7XHJcbiAgICBwYWRkaW5nOiAyNXB4IDA7XHJcbiAgfVxyXG5cclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgdG9wOiAwO1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgcGFkZGluZzogMjBweCAwIDMwcHg7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvci1ibGFjay0xMDtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGUtMTAwO1xyXG4gIHotaW5kZXg6IDk5OTtcclxuXHJcbiAgLndyYXBwZXIge1xyXG4gICAgQG1lZGlhKG1heC13aWR0aDogMTI2MHB4KSB7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogSGVhZGVyIGxlZnQuXHJcbiAqL1xyXG5cclxuLmhlYWRlci1sZWZ0IHtcclxuICBAbWVkaWEobWF4LXdpZHRoOiA3NTVweCkge1xyXG4gICAgd2lkdGg6IDQ3JSAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdCcpIHtcclxuICAgIHdpZHRoOiA2MCU7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZScpIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICB3aWR0aDogMjUlO1xyXG5cclxuICBpbWcge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3Bob25lJykge1xyXG4gICAgICB3aWR0aDogYXV0bztcclxuICAgICAgaGVpZ2h0OiAzMnB4O1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQnKSB7XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIG1heC1oZWlnaHQ6IDUycHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubG9nby0tZGVza3RvcCB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgbWFyZ2luLXRvcDogMjVweDtcclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEobWF4LXdpZHRoOiA3NThweCkge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxuXHJcbiAgLmxvZ28tLW1vYmlsZSB7XHJcbiAgICBAbWVkaWEobWluLXdpZHRoOiA3NThweCkge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcyBlYXNlO1xyXG4gICAgb3BhY2l0eTogMTtcclxuXHJcbiAgICAmLmlzLWFjdGl2ZSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEhlYWRlciByaWdodC5cclxuICovXHJcblxyXG4uaGVhZGVyLXJpZ2h0IHtcclxuICBAbWVkaWEobWF4LXdpZHRoOiA3NTVweCkge1xyXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50O1xyXG4gICAgd2lkdGg6IDUzJSAhaW1wb3J0YW50O1xyXG4gICAgcGFkZGluZy1yaWdodDogMTUlO1xyXG4gIH1cclxuXHJcbiAgQG1lZGlhKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMjYwcHgpIHtcclxuICAgIHdpZHRoOiA0MCU7XHJcbiAgfVxyXG5cclxuICBAbWVkaWEobWluLXdpZHRoOiA4OTkpIGFuZCAobWF4LXdpZHRoOiAxMjYwcHgpIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICBAbWVkaWEobWF4LXdpZHRoOiAxMjYwcHgpIHtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgfVxyXG5cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gIHdpZHRoOiA3NSU7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogSGVhZGVyIHJpZ2h0IHVwcGVyLlxyXG4gKi9cclxuXHJcblxyXG4uaGVhZGVyLXJpZ2h0X191cHBlciB7XHJcbiAgQG1lZGlhKG1heC13aWR0aDogNzU1cHgpIHtcclxuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgQG1lZGlhKG1heC13aWR0aDogMTI2MHB4KSB7XHJcbiAgICB3aWR0aDogYXV0bztcclxuICAgIG1hcmdpbi1yaWdodDogODBweDtcclxuXHJcbiAgfVxyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5oZWFkZXItcmlnaHRfX2xvd2VyIHtcclxuICBAbWVkaWEobWF4LXdpZHRoOiAxMjYwcHgpIHtcclxuICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICB9XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXJnaW4tdG9wOiAyMHB4O1xyXG5cclxuICBuYXYge1xyXG4gICAgQG1lZGlhKG1heC13aWR0aDogMTI2MHB4KSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIG1lbnUgYnV0dG9uLlxyXG4gKi9cclxuXHJcbi5tZW51LWJ1dHRvbiB7XHJcbiAgQG1lZGlhKG1pbi13aWR0aDogMTI2MHB4KSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHJpZ2h0OiAwO1xyXG5cclxuICAubWVudS1idXR0b24tc3ZnIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB3aWR0aDogMzBweDtcclxuICAgIGhlaWdodDogMzBweDtcclxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMjUwbXMgZWFzZTtcclxuICAgIGNvbG9yOiAkY29sb3ItYmx1ZS0xMDA7XHJcblxyXG4gICAgJi5pcy1hY3RpdmUge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgTWFpbiBNZW51XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogV29yZFByZXNzIG1haW4gbWVudS5cclxuICovXHJcblxyXG5cclxuLyoqXHJcbiAqIE1haW4gbWVudS5cclxuICovXHJcblxyXG4ubWFpbi1tZW51IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIE1haW4gbWVudSBpdGVtLlxyXG4gKi9cclxuXHJcbi8vIC5tYWluLW1lbnUgPiAubWVudS1pdGVtIHtcclxuXHJcbi8vIH1cclxuXHJcblxyXG4vKipcclxuICogTWFpbiBtZW51IGxpbmsuXHJcbiAqL1xyXG5cclxuLm1haW4tbWVudSA+IC5tZW51LWl0ZW0gPiBhIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS11cCcpIHtcclxuICAgIEBpbmNsdWRlIGZvbnQoMTJweCwgMjBweCk7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgIHBhZGRpbmctYm90dG9tOiA2MHB4O1xyXG4gIH1cclxuXHJcbiAgbWFyZ2luLWxlZnQ6IDI1cHg7XHJcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXMgZWFzZTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG5cclxuICBidXR0b24ge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgICAgcmlnaHQ6IGluaXRpYWw7XHJcbiAgICB9XHJcblxyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAxMHB4O1xyXG4gICAgcmlnaHQ6IC0xM3B4O1xyXG5cclxuICAgIHN2ZyB7XHJcbiAgICAgIHdpZHRoOiAxMHB4O1xyXG4gICAgICBoZWlnaHQ6IDEwcHg7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXMgZWFzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItcmVkLTEwMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogTWFpbiBtZW51IGl0ZW0gaGFzIGNoaWxkcmVuLlxyXG4gKi9cclxuXHJcbi5tYWluLW1lbnUgPiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgLnN1Ym1lbnUtY29udGFpbmVyIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgfVxyXG5cclxuICAgICAgc3ZnIHtcclxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xyXG4gICAgICAgIGNvbG9yOiAkY29sb3ItcmVkLTEwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogTWFpbiBtZW51IGN1cnJlbnQgbWVudSBpdGVtIGFuZCBjdXJyZW50IHBhZ2UgYW5jZXN0b3IuXHJcbiAqL1xyXG5cclxuLm1haW4tbWVudSA+IC5jdXJyZW50LW1lbnUtaXRlbSA+IGEsXHJcbi5tYWluLW1lbnUgPiAuY3VycmVudC1wYWdlLWFuY2VzdG9yID4gYSB7XHJcblxyXG4gIHN2ZyB7XHJcbiAgICBjb2xvcjogJGNvbG9yLXJlZC0xMDA7XHJcbiAgfVxyXG4gIGNvbG9yOiAkY29sb3ItcmVkLTEwMDtcclxufVxyXG5cclxuLm1vYmlsZS1tZW51IC5tYWluLW1lbnUge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuICBtYXgtaGVpZ2h0OiAwO1xyXG4gIG1hcmdpbjogMDtcclxuICB0cmFuc2l0aW9uOiBhbGwgNTAwbXMgZWFzZTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICBsaSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG4gICAgJjpudGgtbGFzdC1jaGlsZCgxKSB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmlzLWFjdGl2ZSB7XHJcbiAgICBtYXgtaGVpZ2h0OiAxMDAwcHg7XHJcbiAgICBtYXJnaW46IDUwcHggMCA0MHB4O1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBMb2dvIGluIHRoZSBtb2JpbGUgbWVudS5cclxuICovXHJcblxyXG4ubW9iaWxlLW1lbnVfX2xvZ28ge1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIG1heC1oZWlnaHQ6IDA7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMjUwbXMgZWFzZTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmLmlzLWFjdGl2ZSB7XHJcbiAgICBAbWVkaWEobWF4LXdpZHRoOiA3NTVweCkge1xyXG4gICAgICBtYXgtaGVpZ2h0OiA1MHB4O1xyXG4gICAgICBtYXJnaW46IDMwcHggYXV0byBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBOYXZpZ2F0aW9uIGJsb2Nrcy5cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4vKipcclxuICogTWFpbiBzZXR0aW5ncy5cclxuICovXHJcblxyXG4ubmF2aWdhdGlvbi1ibG9ja3Mge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgIEBpbmNsdWRlIHBhZGRpbmcteCg3MHB4KTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIHBhZGRpbmcteCgxMDBweCk7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogVGl0bGUuXHJcbiAqL1xyXG5cclxuLm5hdmlnYXRpb24tYmxvY2tzX190aXRsZSB7XHJcbiAgQGluY2x1ZGUgZm9udCg0MHB4LCA0N3B4KTtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW46IGF1dG87XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogUm93IHNldHRpbmdzLlxyXG4gKi9cclxuXHJcbi5uYXZpZ2F0aW9uLWJsb2Nrc19fcm93IHtcclxuICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgfVxyXG5cclxuICBtYXJnaW46IDAgLTI1cHg7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQ29sdW1uIHNldHRpbmdzLlxyXG4gKi9cclxuXHJcbi5uYXZpZ2F0aW9uLWJsb2Nrc19fY29sdW1uIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgbWF4LXdpZHRoOiA2NTBweDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAgbWF4LXdpZHRoOiA1NzBweDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbjogYXV0bztcclxuICB9XHJcblxyXG4gIHdpZHRoOiBjYWxjKDEwMCUgLyAzIC0gNTBweCk7XHJcbiAgbWFyZ2luOiAwIDI1cHg7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU2luZ2xlIGJsb2NrLlxyXG4gKi9cclxuXHJcbi5ibG9jayB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgbWFyZ2luLXRvcDogMzBweDtcclxuICB9XHJcblxyXG4gIG1hcmdpbi10b3A6IDUwcHg7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAyNTBtcyBlYXNlO1xyXG4gIGJvcmRlcjogM3B4IHNvbGlkICRjb2xvci1icm93bi0xMDA7XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICAgIGJvcmRlcjogM3B4IHNvbGlkICRjb2xvci1ibHVlLTEwMDtcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWJsdWUtMTAwO1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmV3cy1sYXRlc3Qge1xyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJvcmRlcjogM3B4IHNvbGlkICRjb2xvci1icm93bi0xMDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEJsb2NrIHRpdGxlLlxyXG4gKi9cclxuXHJcbi5uZXdzLWxhdGVzdF9fc2luZ2xlLXRpdGxlLFxyXG4uYmxvY2tfX3RpdGxlIHtcclxuICBAaW5jbHVkZSBmb250KDMwcHgsIDM3cHgpO1xyXG4gIG1hcmdpbjogLTNweDtcclxuICBwYWRkaW5nOiA0M3B4IDIzcHg7XHJcbiAgYmFja2dyb3VuZDogJGNvbG9yLWJyb3duLTEwMDtcclxuICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIExpbmtzIGluIGEgYmxvY2suXHJcbiAqL1xyXG5cclxuLmJsb2NrX19saW5rcyB7XHJcbiAgcGFkZGluZzogNDBweCAyMHB4O1xyXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbn1cclxuXHJcbi5ibG9ja19fbGluayB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZTtcclxuXHJcbiAgJjpudGgtbGFzdC1jaGlsZCgxKSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gIH1cclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQWRkaXRpb25hbCBydWxlcyBmb3IgdGhlJ0xhdGVzdCBuZXdzJyBibG9jay5cclxuICovXHJcblxyXG4uYmxvY2tfX2xhdGVzdC1uZXdzIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBsZXR0ZXItc3BhY2luZzogMC40MnB4O1xyXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgei1pbmRleDogMjA7XHJcblxyXG4gICY6OmFmdGVyIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgLy9zYXNzLWxpbnQ6ZGlzYWJsZSBuby1jb2xvci1saXRlcmFsc1xyXG4gICAgYmFja2dyb3VuZDogaHNsYSg0MSwgNTUlLCA1MCUsIDAuOCk7XHJcbiAgICAvL3Nhc3MtbGludDplbmFibGUgbm8tY29sb3ItbGl0ZXJhbHNcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgei1pbmRleDogLTE7XHJcbiAgfVxyXG5cclxuICAubmV3cy1pdGVtIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDQwcHggMjBweDtcclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG5cclxuICAgIC5uZXdzLWxhdGVzdF9fdGl0bGUge1xyXG4gICAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIE5ld3MgYmxvY2sgYmFja2dyb3VuZC5cclxuICovXHJcblxyXG4ubmV3cy1sYXRlc3RfX2JhY2tncm91bmQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgei1pbmRleDogLTE7XHJcblxyXG4gIGltZyB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogTmV3cyB0dWl0bGUgKGluIG5hdmlnYXRpb24gYmxvY2tzKS5cclxuICovXHJcblxyXG4ubmV3cy1sYXRlc3RfX3RpdGxlIHtcclxuICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZTtcclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBOZXdzIGxpc3RcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4vKipcclxuICogTWFpbiBzZXR0aW5ncy5cclxuICovXHJcblxyXG4ubmV3cy1saXN0IHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICBAaW5jbHVkZSBwYWRkaW5nLXgoNTBweCk7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBwYWRkaW5nLXgoMTAwcHgpO1xyXG5cclxuICAudGVhc2VyOm50aC1sYXN0LWNoaWxkKDEpIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDUwcHg7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIExvb3AuXHJcbiAqL1xyXG5cclxuLm5ld3MtbGlzdF9fbG9vcCB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3Bob25lJykge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gIH1cclxuXHJcbiAgbWFyZ2luOiAwIC0zNXB4O1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIE5ld3MgaXRlbS5cclxuICovXHJcblxyXG4ubmV3cy1pdGVtIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgbWF4LXdpZHRoOiA2NTBweDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAgbWF4LXdpZHRoOiA1NzBweDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbjogYXV0bztcclxuICB9XHJcblxyXG4gIHdpZHRoOiBjYWxjKDUwJSAtIDcwcHgpO1xyXG4gIG1hcmdpbjogMCAzNXB4IDUwcHg7XHJcbn1cclxuXHJcbi5uZXdzLWl0ZW1fX3N1YnRpdGxlIHtcclxuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBOZXdzIHNpbmdsZVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYWluIHNldHRpbmdzLlxyXG4gKi9cclxuXHJcbi5uZXdzLXNpbmdsZSB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgQGluY2x1ZGUgcGFkZGluZy14KDUwcHgpO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgcGFkZGluZy14KDEwMHB4KTtcclxuXHJcbiAgLndyYXBwZXIge1xyXG4gICAgbWF4LXdpZHRoOiA4MjBweDtcclxuICAgIG1hcmdpbjogYXV0bztcclxuICB9XHJcblxyXG5cclxuXHJcbiAgaW1nIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgbWF4LWhlaWdodDogNTcwcHg7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIE5ld3Mgc2luZ2xlIHRpdGxlLlxyXG4gKi9cclxuXHJcbi5uZXdzLXNpbmdsZV9fdGl0bGUge1xyXG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLm5ld3Mtc2luZ2xlX19zdWJ0aXRsZSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogNTBweDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBCYWNrIGJ1dHRvbi5cclxuICovXHJcblxyXG4ubmV3cy1zaW5nbGVfX2dvYmFjayB7XHJcbiAgbWFyZ2luLXRvcDogMzBweDtcclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBQYWdlIGhlYWRlclxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYWluIHNldHRpbmdzLlxyXG4gKi9cclxuXHJcbi5wYWdlLWhlYWRlciB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3Bob25lJykge1xyXG4gICAgbWluLWhlaWdodDogMDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQnKSB7XHJcbiAgICBtaW4taGVpZ2h0OiAzNTBweDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAgbWluLWhlaWdodDogNDUwcHg7XHJcbiAgfVxyXG5cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG1pbi1oZWlnaHQ6IDUwMHB4O1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcblxyXG4gIC53cmFwcGVyIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQnKSB7XHJcbiAgICAgIHBhZGRpbmc6IDAgMjBweDtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgei1pbmRleDogMTA7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gWWVsbG93IGJhY2tncm91bmRcclxuICAmLmJhY2tncm91bmQtY29sb3IteWVsbG93IHtcclxuICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLXJlZC0xMDA7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYnJvd24tMTAwO1xyXG5cclxuICAgIC5wYWdlLWhlYWRlcl9fdGl0bGUge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYnJvd24tMTAwO1xyXG5cclxuICAgICAgJjo6YmVmb3JlLFxyXG4gICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWJyb3duLTEwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIFJlZCBiYWNrZ3JvdW5kXHJcbiAgJi5iYWNrZ3JvdW5kLWNvbG9yLXJlZCB7XHJcbiAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1icm93bi0xMDA7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcmVkLTEwMDtcclxuXHJcbiAgICAucGFnZS1oZWFkZXJfX3RpdGxlIHtcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXJlZC0xMDA7XHJcblxyXG4gICAgICAmOjpiZWZvcmUsXHJcbiAgICAgICY6OmFmdGVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcmVkLTEwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5wYWdlLWhlYWRlcl9fcGFnZS10aXRsZSxcclxuICAgIC5wYWdlLWhlYWRlcl9fY29udGFjdC1idXR0b24ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYnJvd24tMTAwO1xyXG5cclxuICAgICAgJjo6YmVmb3JlLFxyXG4gICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWJyb3duLTEwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIEJsdWUgYmFja2dyb3VuZFxyXG4gICYuYmFja2dyb3VuZC1jb2xvci1ibHVlIHtcclxuICAgIGJvcmRlci10b3A6IDEwcHggc29saWQgJGNvbG9yLXJlZC0xMDA7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYmx1ZS0xMDA7XHJcblxyXG4gICAgLnBhZ2UtaGVhZGVyX190aXRsZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1ibHVlLTEwMDtcclxuXHJcbiAgICAgICY6OmJlZm9yZSxcclxuICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1ibHVlLTEwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQmFja2dyb3VuZCBibHVlIHdpdGggeWVsbG93IGJ1dHRvbnNcclxuICAmLmJhY2tncm91bmQtY29sb3ItYmx1ZS15ZWxsb3ctYnV0dG9ucyB7XHJcblxyXG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItcmVkLTEwMDtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1ibHVlLTEwMDtcclxuXHJcbiAgICAucGFnZS1oZWFkZXJfX2NvbnRhY3QtYnV0dG9uLFxyXG4gICAgLnBhZ2UtaGVhZGVyX19wYWdlLXRpdGxlIHtcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXllbGxvdy0xMDA7XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2stMTAwO1xyXG5cclxuICAgICAgJjo6YmVmb3JlLFxyXG4gICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXllbGxvdy0xMDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE9yYW5nZSBiYWNrZ3JvdW5kXHJcbiAgJi5iYWNrZ3JvdW5kLWNvbG9yLW9yYW5nZSB7XHJcblxyXG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItYmx1ZS0xMDA7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3Itb3JhbmdlLTEwMDtcclxuXHJcbiAgICAucGFnZS1oZWFkZXJfX3RpdGxlIHtcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLW9yYW5nZS0xMDA7XHJcblxyXG4gICAgICAmOjpiZWZvcmUsXHJcbiAgICAgICY6OmFmdGVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3Itb3JhbmdlLTEwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlnaHQgT3JhbmdlIGJhY2tncm91bmRcclxuICAmLmJhY2tncm91bmQtY29sb3ItbGlnaHQtb3JhbmdlIHtcclxuXHJcbiAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1ibHVlLTEwMDtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1vcmFuZ2UtNTA7XHJcblxyXG4gICAgLnBhZ2UtaGVhZGVyX190aXRsZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1vcmFuZ2UtNTA7XHJcblxyXG4gICAgICAmOjpiZWZvcmUsXHJcbiAgICAgICY6OmFmdGVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3Itb3JhbmdlLTUwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBMaWdodCBibHVlIGJhY2tncm91bmRcclxuICAmLmJhY2tncm91bmQtY29sb3ItbGlnaHQtYmx1ZSB7XHJcblxyXG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItcmVkLTEwMDtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1ibHVlLTUwO1xyXG5cclxuICAgIC5wYWdlLWhlYWRlcl9fdGl0bGUge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYmx1ZS01MDtcclxuXHJcbiAgICAgICY6OmJlZm9yZSxcclxuICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1ibHVlLTUwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBEYXJrIGdyZWVuIGJhY2tncm91bmRcclxuICAmLmJhY2tncm91bmQtY29sb3ItZGFyay1ncmVlbiB7XHJcblxyXG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItYmx1ZS0xMDA7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItZ3JlZW4tMTAwO1xyXG5cclxuICAgIC5wYWdlLWhlYWRlcl9fdGl0bGUge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItZ3JlZW4tMTAwO1xyXG5cclxuICAgICAgJjo6YmVmb3JlLFxyXG4gICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWdyZWVuLTEwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlnaHQgZ3JlZW4gYmFja2dyb3VuZFxyXG4gICYuYmFja2dyb3VuZC1jb2xvci1saWdodC1ncmVlbiB7XHJcblxyXG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItcmVkLTEwMDtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1ncmVlbi01MDtcclxuXHJcbiAgICAucGFnZS1oZWFkZXJfX3RpdGxlIHtcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWdyZWVuLTUwO1xyXG5cclxuICAgICAgJjo6YmVmb3JlLFxyXG4gICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWdyZWVuLTUwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBQaW5rIGJhY2tncm91bmRcclxuICAmLmJhY2tncm91bmQtY29sb3ItcGluayB7XHJcblxyXG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAkY29sb3ItcGluay0xMDA7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcGluay0xMDA7XHJcblxyXG4gICAgLnBhZ2UtaGVhZGVyX190aXRsZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1waW5rLTEwMDtcclxuXHJcbiAgICAgICY6OmJlZm9yZSxcclxuICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1waW5rLTEwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSWYgc3VidGl0bGUgaXMgcHJlc2VudFxyXG4gICYuaGFzLXN1YnRpdGxlIHtcclxuXHJcbiAgICAucGFnZS1oZWFkZXJfX3RpdGxlIHtcclxuICAgICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdCcpIHtcclxuICAgICAgICBwYWRkaW5nOiAxMDBweCAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmZ1bGwtdGl0bGUtd2lkdGgge1xyXG5cdCAudGl0bGUge1xyXG5cdFx0IGZvbnQtd2VpZ2h0OiA3MDA7XHJcblx0IH0gXHJcbiAgfVxyXG5cclxuICAvLyBJZiBpbWFnZSBpcyBwcmVzZW50LlxyXG4gICYuaGFzLWltYWdlOm5vdCguZnVsbC10aXRsZS13aWR0aCkge1xyXG5cclxuICAgIC5wYWdlLWhlYWRlcl9fdGl0bGUge1xyXG4gICAgICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgLy9wb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgLy9cclxuICAgICAgICAvLy50aXRsZSB7XHJcbiAgICAgICAgLy8gIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgICAvL31cclxuICAgICAgfVxyXG5cclxuICAgICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdCcpIHtcclxuICAgICAgICAvL3dpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZScpIHtcclxuICAgICAgICB3aWR0aDogNDAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgICBwYWRkaW5nOiAxMDBweCAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3aWR0aDogMzUlO1xyXG4gICAgfVxyXG5cclxuICAgIC50aXRsZSB7XHJcbiAgICAgIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQnKSB7XHJcbiAgICAgICAgZm9udC1zaXplOiAyNXB4O1xyXG4gICAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICAgIG1heC13aWR0aDogNTAwcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1heC13aWR0aDogNDAwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBGdWxsIHNjcmVlblxyXG4gICYuZnVsbHNjcmVlbiB7XHJcbiAgICAucGFnZS1oZWFkZXJfX3RpdGxlIHtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgICAmOjpiZWZvcmUsXHJcbiAgICAgICY6OmFmdGVyIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBTcGxpdCBzY3JlZW5cclxuICAmLnNwbGl0c2NyZWVuIHtcclxuXHJcbiAgICAucGFnZS1oZWFkZXJfX2JhY2tncm91bmQge1xyXG4gICAgICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuaGFzLWltYWdlIHtcclxuXHJcbiAgICAgIC5wYWdlLWhlYWRlcl9fdGl0bGUge1xyXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgICAgICBwYWRkaW5nOiAyNXB4IDAgMzBweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5oZWFkaW5nLTEge1xyXG4gICAgICAgICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUnKSB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC00MHB4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgYm90dG9tOiAtMTAlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLnBhZ2UtaGVhZGVyX19iYWNrZ3JvdW5kIHtcclxuXHJcbiAgICAgICAgaW1nIHtcclxuICAgICAgICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtdXAnKSB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzMCUpO1xyXG4gICAgICAgICAgICBvYmplY3QtcG9zaXRpb246IHRvcDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogSGVhZGVyIHRpdGxlLlxyXG4gKi9cclxuXHJcbi5wYWdlLWhlYWRlcl9fdGl0bGUge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgIG1pbi1oZWlnaHQ6IDE0MHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogNjVweDtcclxuICAgIC8vcGFkZGluZzogMTBweCAwO1xyXG4gICAgcGFkZGluZzogMTUlIDA7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0Jykge1xyXG4gICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQnKSB7XHJcbiAgICBtaW4taGVpZ2h0OiAzNTBweDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAgbWluLWhlaWdodDogNDUwcHg7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgIGhlaWdodDogNTAwcHg7XHJcbiAgICBwYWRkaW5nOiAxMDBweCAwO1xyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgbWluLWhlaWdodDogNTAwcHg7XHJcbiAgei1pbmRleDogMTA7XHJcblxyXG4gICY6OmJlZm9yZSB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICAgIGxlZnQ6IC0yMHB4O1xyXG4gICAgICB3aWR0aDogY2FsYygxMDAlICsgNDBweCk7XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDA7XHJcbiAgICAgIHotaW5kZXg6IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIHJpZ2h0OiAxMDAlO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBjb250ZW50OiAnJztcclxuICB9XHJcblxyXG4gICY6OmFmdGVyIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIGJvdHRvbTogLTEwJTtcclxuICAgICAgbGVmdDogLTIwcHg7XHJcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0MHB4KTtcclxuICAgICAgdHJhbnNmb3JtOiBza2V3WSgtNWRlZyk7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdCcpIHtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAgICBsZWZ0OiAyNSU7XHJcbiAgICB9XHJcblxyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgbGVmdDogMjAlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICB0cmFuc2Zvcm06IHNrZXdYKC0xNWRlZyk7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHotaW5kZXg6IC0xO1xyXG4gIH1cclxuXHJcbiAgLnRpdGxlIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBTdWJ0aXRsZS5cclxuICovXHJcblxyXG4ucGFnZS1oZWFkZXJfX3N1YnRpdGxlIHtcclxuICBtYXJnaW4tdG9wOiAyMHB4O1xyXG4gIGNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xyXG59XHJcblxyXG4vKipcclxuICogQmFja2dyb3VuZCBpbWFnZS5cclxuICovXHJcblxyXG4ucGFnZS1oZWFkZXJfX2JhY2tncm91bmQge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgIGhlaWdodDogMzg1cHg7XHJcbiAgfVxyXG5cclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGJvdHRvbTogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHotaW5kZXg6IDA7XHJcblxyXG4gIGltZyB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogUGFnZSB0aXRsZSBjb250YWluZXIuXHJcbiAqL1xyXG5cclxuLnBhZ2UtaGVhZGVyX19wYWdlLXRpdGxlIHtcclxuICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAvL21pbi13aWR0aDogNDMlO1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbiAgICBtYXgtd2lkdGg6IDcwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIHBhZGRpbmc6IDE0cHg7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgLy9taW4td2lkdGg6IDQzJTtcclxuICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgbWF4LXdpZHRoOiA3MCU7XHJcbiAgICBoZWlnaHQ6IDU3cHg7XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICBwYWRkaW5nOiAxNHB4O1xyXG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xyXG5cclxuICAgICsgZGl2IHtcclxuICAgICAgcGFkZGluZy10b3A6IDU3cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZScpIHtcclxuICAgIHBhZGRpbmctbGVmdDogNTBweDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGZvbnQoMjVweCwgMzdweCk7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1heC13aWR0aDogMzYwcHg7XHJcbiAgcGFkZGluZzogMjBweDtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3ItcmVkLTEwMDtcclxuICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjgzcHg7XHJcbiAgei1pbmRleDogMjA7XHJcblxyXG4gICY6OmJlZm9yZSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIHJpZ2h0OiAxMDAlO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgd2lkdGg6IDIwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcmVkLTEwMDtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gIH1cclxuXHJcbiAgJjo6YWZ0ZXIge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3Bob25lJykge1xyXG4gICAgICBsZWZ0OiBjYWxjKDEwMCUgLSAxMjVweCk7XHJcbiAgICAgIHRyYW5zZm9ybTogc2tld1goLTI1ZGVnKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIGxlZnQ6IGNhbGMoMTAwJSAtIDEwMHB4KTtcclxuICAgIHdpZHRoOiAxODBweDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHRyYW5zZm9ybTogc2tld1goLTQ1ZGVnKTtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1yZWQtMTAwO1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICB6LWluZGV4OiAtMTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQ29udGFjdCBidXR0b24gY29udGFpbmVyLlxyXG4gKi9cclxuXHJcbi5wYWdlLWhlYWRlcl9fY29udGFjdC1idXR0b24ge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDA7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpO1xyXG4gICAgcGFkZGluZy1yaWdodDogMDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAgcGFkZGluZy1yaWdodDogNTBweDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGZvbnQoMzBweCwgMzdweCk7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGJvdHRvbTogMDtcclxuICBwYWRkaW5nOiAyMHB4O1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci1yZWQtMTAwO1xyXG4gIGNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IDAuODNweDtcclxuICB6LWluZGV4OiAyMDtcclxuXHJcbiAgJjo6YmVmb3JlIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgICAgcmlnaHQ6IGNhbGMoMTAwJSAtIDgwcHgpO1xyXG4gICAgICB3aWR0aDogMTAwcHg7XHJcbiAgICAgIHRyYW5zZm9ybTogc2tld1goLTI1ZGVnKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIHJpZ2h0OiBjYWxjKDEwMCUgLSA1MHB4KTtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIHdpZHRoOiAxODBweDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHRyYW5zZm9ybTogc2tld1goLTQ1ZGVnKTtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1yZWQtMTAwO1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICB6LWluZGV4OiAtMTtcclxuICB9XHJcblxyXG4gICY6OmFmdGVyIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgbGVmdDogMTAwJTtcclxuICAgIHdpZHRoOiAyMDAlO1xyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXJlZC0xMDA7XHJcbiAgICBjb250ZW50OiAnJztcclxuICB9XHJcblxyXG4gICYuZGVza3RvcCB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LXVwJykge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAmLm1vYmlsZSB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LXVwJykge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQnKSB7XHJcbiAgICAgIEBpbmNsdWRlIGZvbnQoMjBweCwgMzdweCk7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB3aWR0aDogMzUlO1xyXG4gICAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICY6OmJlZm9yZSB7XHJcbiAgICAgICAgd2lkdGg6IDkwcHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBmb250KDIwcHgsIDM3cHgpO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB3aWR0aDogNTUlO1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgUGFnaW5hdGlvblxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYWluIHNldHRpbmdzLlxyXG4gKi9cclxuXHJcbi5wYWdpbmF0aW9uIHtcclxuICBAaW5jbHVkZSBmb250KDMwcHgsIDM3cHgpO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG5cclxuICAucGFnZS1udW1iZXJzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICB3aWR0aDogYXV0bztcclxuICAgIG1pbi13aWR0aDogNDBweDtcclxuICAgIGhlaWdodDogYXV0bztcclxuICAgIG1pbi1oZWlnaHQ6IDQwcHg7XHJcbiAgICBtYXJnaW46IDAgNXB4O1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7XHJcblxyXG4gICAgJi5jdXJyZW50IHtcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWJyb3duLTEwMDtcclxuICAgICAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1icm93bi0xMDA7XHJcbiAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcblxyXG4gICAgICAgIHN2ZyB7XHJcbiAgICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcmV2LFxyXG4gIC5uZXh0IHtcclxuICAgIG1hcmdpbjogMDtcclxuICB9XHJcblxyXG4gIHN2ZyB7XHJcbiAgICB3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcclxuICAgIGNvbG9yOiAkY29sb3ItYmxhY2stMTAwO1xyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBTZWFyY2ggZm9ybVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYWluIGZvcm0uXHJcbiAqL1xyXG5cclxuLnNlYXJjaC1mb3JtIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgbGVmdDogLTEyMHB4ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgbGVmdDogLTQwcHg7XHJcbiAgfVxyXG5cclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAtMTUwcHg7XHJcbiAgbGVmdDogNDBweDtcclxuICB3aWR0aDogNjAlO1xyXG4gIHRyYW5zaXRpb246IHRvcCAzNTBtcyBlYXNlO1xyXG5cclxuICBpbnB1dCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogNDVweDtcclxuICAgIHBhZGRpbmc6IDVweDtcclxuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAkY29sb3ItYmx1ZS0xMDA7XHJcbiAgfVxyXG5cclxuICAmLmlzLWFjdGl2ZSB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgICB0b3A6IDMwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgICAgdG9wOiAtMTBweDtcclxuICAgIH1cclxuXHJcbiAgICB0b3A6IDA7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFNlYXJjaCBidXR0b24uXHJcbiAqL1xyXG5cclxuXHJcbi5oZWFkZXJfX3NlYXJjaC1idXR0b24ge1xyXG4gIC8vIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAvLyAgIHBhZGRpbmc6IDRweCAwIDRweCA3cHg7XHJcbiAgLy8gICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRjb2xvci1ibGFjay0xMDA7XHJcbiAgLy8gfVxyXG5cclxuICBtYXJnaW4tbGVmdDogMzBweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gIHN2ZyB7XHJcbiAgICB3aWR0aDogMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcclxuICAgIGNvbG9yOiAkY29sb3ItcmVkLTEwMDtcclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgU2VhcmNoIHJlc3VsdHMuXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuLyoqXHJcbiAqIE1haW4gZWxlbWVudC5cclxuICovXHJcblxyXG4uc2VhcmNoLXJlc3VsdHMge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci1ibHVlLTEwMDtcclxuXHJcbiAgLnRlYXNlcl9fdXBwZXIgaDIge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQ3VzdG9tIHdyYXBwZXIgcnVsZXMuXHJcbiAqL1xyXG5cclxuLnNlYXJjaF9fd3JhcHBlciB7XHJcbiAgbWF4LXdpZHRoOiA4MjBweDtcclxuICBtYXJnaW46IDEwMHB4IGF1dG87XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogVGl0bGUuXHJcbiAqL1xyXG5cclxuLnNlYXJjaC1yZXN1bHRzX190aXRsZSB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICBoMyB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHBhZGRpbmc6IDUwcHggMDtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1icm93bi0xMDA7XHJcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICAgIHotaW5kZXg6IDIwO1xyXG5cclxuICAgICY6OmFmdGVyIHtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBib3R0b206IDA7XHJcbiAgICAgIGxlZnQ6IDQwJTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIHRyYW5zZm9ybTogc2tld1goLTMwZGVnKTtcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWJyb3duLTEwMDtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHotaW5kZXg6IC0xO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjo6YmVmb3JlIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgcmlnaHQ6IDEwMCU7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICB3aWR0aDogMjAwJTtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1icm93bi0xMDA7XHJcbiAgICBjb250ZW50OiAnJztcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU3VidGl0bGUuXHJcbiAqL1xyXG5cclxuLnNlYXJjaF9fc3VidGl0bGUge1xyXG4gIG1hcmdpbi10b3A6IDEwcHg7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogWW91IGhhdmUgc2VhcmNoZWQgZm9yLlxyXG4gKi9cclxuXHJcbi5zZWFyY2gtcmVzdWx0c19fcXVlcnkge1xyXG4gIG1hcmdpbi1ib3R0b206IDUwcHg7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBTZWFyY2ggcmVzdWx0LlxyXG4gKi9cclxuXHJcbi5zZWFyY2gtcmVzdWx0c19fcmVzdWx0cyB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTAwcHg7XHJcbn1cclxuXHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFN1Ym1lbnVcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBTdWJtZW51IGJ1dHRvbi5cclxuICovXHJcblxyXG4uc3VibWVudS1idXR0b24ge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHJcbiAgLy8gPiAuaW5saW5lLWljb24ge1xyXG5cclxuICAvLyB9XHJcblxyXG4gIC8vICYuaXMtYWN0aXZlID4gLmlubGluZS1pY29uIHtcclxuXHJcbiAgLy8gfVxyXG5cclxuICAmLmlzLWFjdGl2ZSB7XHJcblxyXG4gICAgc3ZnIHtcclxuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU3VibWVudSBjb250YWluZXIuXHJcbiAqL1xyXG5cclxuLnN1Ym1lbnUtY29udGFpbmVyIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgcG9zaXRpb246IHN0YXRpYztcclxuICAgIG1hcmdpbi10b3A6IDEwcHg7XHJcbiAgICBib3JkZXI6IDA7XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5OiBub25lO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDY5cHg7XHJcbiAgcGFkZGluZzogMjBweCAzMHB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1yZWQtMTAwO1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZS0yMDA7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU3VibWVudS5cclxuICovXHJcblxyXG4vLyAuc3VibWVudSB7XHJcblxyXG4vLyB9XHJcblxyXG5cclxuLyoqXHJcbiAqIFN1Ym1lbnUgaXRlbS5cclxuICovXHJcblxyXG4uc3VibWVudSA+IC5tZW51LWl0ZW0ge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgcGFkZGluZzogNXB4IDA7XHJcbiAgfVxyXG5cclxuICB3aWR0aDogMTAwJTtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFN1Ym1lbnUgaXRlbSBsaW5rLlxyXG4gKi9cclxuXHJcbi5zdWJtZW51ID4gLm1lbnUtaXRlbSA+IGEge1xyXG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXJlZC0xMDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFRlbXBsYXRlIGRlZmF1bHQuXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuLyoqXHJcbiAqIE1haW4gc2V0dGluZ3MuXHJcbiAqL1xyXG5cclxuLnRlYXNlcnMge1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZS0xMDA7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU2luZ2xlIHRlYXNlci5cclxuICovXHJcblxyXG4udGVhc2VyIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuICB9XHJcblxyXG4gIG1hcmdpbi1ib3R0b206IDUwcHg7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAyNTBtcyBlYXNlO1xyXG4gIGJvcmRlcjogM3B4IHNvbGlkICRjb2xvci1icm93bi0xMDA7XHJcblxyXG4gICY6bnRoLWxhc3QtY2hpbGQoMSkge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWJsdWUtMTAwO1xyXG4gICAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcblxyXG4gICAgLnRlYXNlcl9fZWRpdG9yIHAge1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogVXBwZXIgcGFydCBvZiB0ZWFzZXIuXHJcbiAqL1xyXG5cclxuLnRlYXNlcl9fdXBwZXIge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgcGFkZGluZzogNDBweCAzMHB4O1xyXG4gIH1cclxuXHJcbiAgcGFkZGluZzogNDBweCA1MHB4O1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXMgZWFzZTtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3ItYnJvd24tMTAwO1xyXG4gIGNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xyXG59XHJcblxyXG4udGVhc2VyX190aXRsZSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogTG93ZXIgcGFydCBvZiB0ZWFzZXIuXHJcbiAqL1xyXG5cclxuLnRlYXNlcl9fbG93ZXIge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0Jykge1xyXG4gICAgcGFkZGluZzogMzBweDtcclxuICB9XHJcblxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBwYWRkaW5nOiA1MHB4O1xyXG5cclxuICAmLmhhcy10YWcge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3Bob25lJykge1xyXG4gICAgICBwYWRkaW5nLXRvcDogNDBweDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogRWRpdG9yIHJ1bGVzLlxyXG4gKi9cclxuXHJcbi50ZWFzZXJfX2VkaXRvciB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBUZW1wbGF0ZSBkZWZhdWx0LlxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYWluIHRlbXBsYXRlLlxyXG4gKi9cclxuXHJcbi50ZW1wbGF0ZS1kZWZhdWx0IHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICBAaW5jbHVkZSBwYWRkaW5nLXgoNTBweCk7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBwYWRkaW5nLXgoMTAwcHgpO1xyXG5cclxuICAud3JhcHBlciB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XHJcbiAgICB9XHJcblxyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBMZWZ0IGNvbHVtbi5cclxuICovXHJcblxyXG4udGVtcGxhdGUtZGVmYXVsdF9fbGVmdCB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgd2lkdGg6IGNhbGMoNzAlIC0gMjVweCk7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogUmlnaHQgY29sdW1uLlxyXG4gKi9cclxuXHJcbi50ZW1wbGF0ZS1kZWZhdWx0X19yaWdodCB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgd2lkdGg6IGNhbGMoMzAlIC0gMjVweCk7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQWRkaXRpb25hbCBydWxlcy5cclxuICovXHJcblxyXG4udGVtcGxhdGUtZGVmYXVsdCAud3JhcHBlciArIC53cmFwcGVyIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICBtYXJnaW4tdG9wOiA1MHB4O1xyXG4gIH1cclxuXHJcbiAgbWFyZ2luLXRvcDogMTAwcHg7XHJcblxyXG4gIC5mb3JtX19jb250YWluZXIge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgSGVhZGVyXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuLyoqXHJcbiAqIExhbmd1YWdlIHN3aXRjaC5cclxuICovXHJcblxyXG4ubGFuZ3VhZ2Utc3dpdGNoIHtcclxuICBAbWVkaWEobWF4LXdpZHRoOiA3NTVweCkge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0Jykge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDQwcHg7XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNDJweDtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFNpbmdsZSBpdGVtLlxyXG4gKi9cclxuXHJcblxyXG4ubGFuZ3VhZ2Utc3dpdGNoX19pdGVtIHtcclxuICBwYWRkaW5nOiAwIDEwcHg7XHJcblxyXG4gICY6bnRoLWNoaWxkKDEpIHtcclxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjb2xvci1ibGFjay0xMDA7XHJcbiAgfVxyXG5cclxuICAmOm50aC1jaGlsZCgyKSB7XHJcbiAgICBwYWRkaW5nOiAwIDAgMCAxMHB4O1xyXG4gIH1cclxuXHJcbiAgJi5pcy1hY3RpdmUge1xyXG4gICAgY29sb3I6ICRjb2xvci1yZWQtMTAwO1xyXG4gIH1cclxufVxyXG4iLCIubG9nby1zbGlkZXIge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgIEBpbmNsdWRlIHBhZGRpbmcteCg3MHB4KTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIHBhZGRpbmcteCgxMDBweCk7XHJcbn1cclxuXHJcbi5sb2dvLXNsaWRlcl9faXRlbXMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgLmxvZ28taXRlbSB7XHJcbiAgICBpbWcge1xyXG4gICAgICB3aWR0aDogMTkwcHg7XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5vd2wtc3RhZ2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcclxuICB9XHJcblxyXG4gIC5vd2wtc3RhZ2Utb3V0ZXIge1xyXG4gICAgcGFkZGluZzogMCAyMHB4O1xyXG4gICAgcGFkZGluZy1sZWZ0OiA1MHB4O1xyXG4gIH1cclxuXHJcbiAgLm93bC1zdGFnZS1vdXRlciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC13cmFwOiBub3dyYXA7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIH1cclxuICAub3dsLXN0YWdlLW91dGVyID4gLm93bC1zdGFnZSB7XHJcbiAgICBtYXJnaW46MCBhdXRvO1xyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb2xvclxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIENvbG9yIHV0aWxpdHkgY2xhc3Nlcy5cclxuICovXHJcblxyXG4vLyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBjb2xvciBhbmQgYmFja2dyb3VuZCBjb2xvciB1dGlsaXR5IGNsYXNzZXMgYmFzZWQgb25cclxuLy8gZXZlcnkgY29sb3IgZGVmaW5pdGlvbiBpbiBgc2V0dGluZ3MvX2NvbG9yLnNjc3NgLlxyXG4vL1xyXG4vLyBMb29wIHRocm91Z2ggZXZlcnkgYCRrZXlgIGFuZCBgJG1hcGAgaW4gdGhlIGAkY29sb3JzYCB2YXJpYWJsZSBtYXAgZGVmaW5lZCBpblxyXG4vLyBgc2V0dGluZ3MvX2NvbG9yLnNjc3NgLlxyXG5AZWFjaCAka2V5LCAkbWFwIGluICRjb2xvcnMge1xyXG5cclxuICAvLyBMb29wIHRocm91Z2ggZXZlcnkgYCRzaGFkZWAgYW5kIGAkcmdiYCBpbiBgJG1hcGAuXHJcbiAgQGVhY2ggJHNoYWRlLCAkcmdiIGluICRtYXAge1xyXG5cclxuICAgIC8vIExvb3AgdGhyb3VnaCBldmVyeSBgY29sb3JgIGFuZCBgYmFja2dyb3VuZC1jb2xvcmAgcnVsZXMuXHJcbiAgICBAZWFjaCAkcnVsZSBpbiBjb2xvciwgYmFja2dyb3VuZC1jb2xvciB7XHJcblxyXG4gICAgICAvKipcclxuICAgICAgICogYCN7JHJ1bGV9YCAjeyRyZ2J9LSN7JHNoYWRlfSBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cclxuXHJcbiAgICAgIC4jeyRydWxlfS0je3VucXVvdGUoJGtleSl9LSN7dW5xdW90ZSgkc2hhZGUpfSB7XHJcbiAgICAgICAgI3skcnVsZX06ICRyZ2I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgT2JqZWN0IEZpdFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIE9iamVjdCBmaXQuXHJcbiAqXHJcbiAqIDEuIEZvbnQgZmFtaWx5IHBvbHlmaWxsIHdpdGggKGh0dHBzOi8vZ2l0aHViLmNvbS9iZnJlZC1pdC9vYmplY3QtZml0LWltYWdlcykuXHJcbiAqL1xyXG5cclxuLy8gTG9vcCB0aHJvdWdoIGV2ZXJ5IHZhbHVlIGZvciB0aGUgYG9iamVjdC1maXRgIHByb3BlcnR5LlxyXG5AZWFjaCAkdmFsdWUgaW4gZmlsbCwgY29udGFpbiwgY292ZXIsIG5vbmUsIHNjYWxlLWRvd24ge1xyXG5cclxuICAvKipcclxuICAgKiBgb2JqZWN0LWZpdGAgI3skdmFsdWV9IHV0aWxpdHkgY2xhc3MuXHJcbiAgICovXHJcblxyXG4gIC4jeyR2YWx1ZX0ge1xyXG4gICAgZm9udC1mYW1pbHk6ICdvYmplY3QtZml0OiAjeyR2YWx1ZX07JzsgLyogMSAqL1xyXG4gICAgb2JqZWN0LWZpdDogI3skdmFsdWV9O1xyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBQb3NpdGlvblxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIFBvc2l0aW9uIHV0aWxpdHkgY2xhc3MuXHJcbiAqL1xyXG5cclxuQGVhY2ggJHZhbHVlIGluIHN0YXRpYywgcmVsYXRpdmUsIGFic29sdXRlLCBmaXhlZCwgc3RpY2t5IHtcclxuICAuI3skdmFsdWV9IHtcclxuICAgIHBvc2l0aW9uOiAkdmFsdWU7XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFRleHRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBGb250IGZhbWlseSB1dGlsaXR5IGNsYXNzZXMuXHJcbiAqL1xyXG5cclxuQGVhY2ggJGtleSwgJGJyZWFrcG9pbnQgaW4gJGJyZWFrcG9pbnRzIHtcclxuICBAaW5jbHVkZSBtZWRpYSgka2V5KSB7XHJcbiAgICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkZm9udC1mYW1pbHkge1xyXG4gICAgICAudGV4dC0jeyRrZXl9LSN7JHByb3BlcnR5fSB7XHJcbiAgICAgICAgZm9udC1mYW1pbHk6IG1hcC1nZXQoJGZvbnQtZmFtaWx5LCAkcHJvcGVydHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFRleHQgc2l6ZSB1dGlsaXR5IGNsYXNzZXMuXHJcbiAqL1xyXG5cclxuQGVhY2ggJGtleSwgJGJyZWFrcG9pbnQgaW4gJGJyZWFrcG9pbnRzIHtcclxuICBAaW5jbHVkZSBtZWRpYSgka2V5KSB7XHJcbiAgICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkZm9udC1zaXplIHtcclxuICAgICAgLnRleHQtI3ska2V5fS0jeyRwcm9wZXJ0eX0ge1xyXG4gICAgICAgIEBpbmNsdWRlIHRleHQoJHByb3BlcnR5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBUZXh0IGFsaWdubWVudCB1dGlsaXR5IGNsYXNzZXMuXHJcbiAqL1xyXG5cclxuQGVhY2ggJGtleSwgJGJyZWFrcG9pbnQgaW4gJGJyZWFrcG9pbnRzIHtcclxuICBAaW5jbHVkZSBtZWRpYSgka2V5KSB7XHJcbiAgICBAZWFjaCAkZGlyZWN0aW9uIGluIGxlZnQsIHJpZ2h0LCBjZW50ZXIge1xyXG4gICAgICAudGV4dC0jeyRrZXl9LSN7JGRpcmVjdGlvbn0ge1xyXG4gICAgICAgIHRleHQtYWxpZ246ICRkaXJlY3Rpb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogRm9udCB3ZWlnaHQgdXRpbGl0eSBjbGFzc2VzLlxyXG4gKlxyXG4gKiAxLiBNdWx0aXBseSBsb29wZWQgaW50ZWdlciBieSAxMDAgZm9yIGNvcnJlY3QgZm9udCB3ZWlnaHQgdmFsdWUuXHJcbiAqL1xyXG5cclxuQGVhY2ggJGtleSwgJGJyZWFrcG9pbnQgaW4gJGJyZWFrcG9pbnRzIHtcclxuICBAaW5jbHVkZSBtZWRpYSgka2V5KSB7XHJcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDkge1xyXG4gICAgICAkaTogJGkgKiAxMDA7IC8vIFsxXVxyXG5cclxuICAgICAgLnRleHQtI3ska2V5fS0jeyRpfSB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6ICN7JGl9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFRleHQgdHJhbnNmb3JtIHVpdGxpdHkgY2xhc3Nlcy5cclxuICovXHJcblxyXG5AZWFjaCAka2V5LCAkYnJlYWtwb2ludCBpbiAkYnJlYWtwb2ludHMge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCRrZXkpIHtcclxuICAgIEBlYWNoICR0cmFuc2Zvcm0gaW4gY2FwaXRhbGl6ZSwgdXBwZXJjYXNlLCBsb3dlcmNhc2UsIG5vbmUsIGZ1bGwtd2lkdGgge1xyXG4gICAgICAudGV4dC0jeyRrZXl9LSN7JHRyYW5zZm9ybX0ge1xyXG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFZlcnRpY2FsIFJoeXRobVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAxMCB7XHJcbiAgJGk6ICRpICogODtcclxuXHJcbiAgLnZyLSN7JGl9IHtcclxuICAgIG1hcmdpbi1ib3R0b206ICN7JGl9cHg7XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFotaW5kZXhcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBVdGlsaXR5IGNsYXNzZXMgZm9yIG1hbmlwdWxhdGluZyBzdGFja2luZyBvcmRlciBpbiBIVE1MLlxyXG4gKi9cclxuXHJcbkBlYWNoICRrZXksICR2YWx1ZSBpbiAkei1pbmRleCB7XHJcbiAgLnotaW5kZXgtI3ska2V5fSB7XHJcbiAgICB6LWluZGV4OiAkdmFsdWU7XHJcbiAgfVxyXG59XHJcbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIFotaW5kZXhcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8vIEEgbGltaXRlZCBhcnJheSBvZiB2YWx1ZXMgZm9yIHRoZSBgei1pbmRleGAgcHJvcGVydHkgdG8gcHJldmVudFxyXG4vLyBleGFnZ2VyYXRlZCBhbW91bnRzIGFuZCB1Z2x5IGhhY2tzLlxyXG5cclxuJHotaW5kZXg6IChcclxuICAnMCc6ICAwLFxyXG4gICcxJzogIDEwLFxyXG4gICcyJzogIDIwLFxyXG4gICczJzogIDMwLFxyXG4gICc0JzogIDQwLFxyXG4gICc1JzogIDUwLFxyXG4gICc2JzogIDYwLFxyXG4gICc3JzogIDcwLFxyXG4gICc4JzogIDgwLFxyXG4gICc5JzogIDkwLFxyXG4gICcxMCc6IDEwMFxyXG4pO1xyXG4iXX0= */
