/* Grid settings
========================== */
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/**
 * Remove default margin.
 */
body {
  margin: 0; }

/* HTML5 display definitions
   ========================================================================== */
/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11
 * and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */
article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary {
  display: block; }

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */
audio, canvas, progress, video {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */
audio:not([controls]) {
  display: none;
  height: 0; }

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
 */
[hidden], template {
  display: none; }

/* Links
   ========================================================================== */
/**
 * Remove the gray background color from active links in IE 10.
 */
a {
  background-color: transparent; }

/**
 * Improve readability when focused and also mouse hovered in all browsers.
 */
a:active, a:hover {
  outline: 0; }

/* Text-level semantics
   ========================================================================== */
/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
 */
abbr[title] {
  border-bottom: 1px dotted; }

/**
 * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
 */
b, strong {
  font-weight: bold; }

/**
 * Address styling not present in Safari and Chrome.
 */
dfn {
  font-style: italic; }

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari, and Chrome.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/**
 * Address styling not present in IE 8/9.
 */
mark {
  background: #ff0;
  color: #000; }

/**
 * Address inconsistent and variable font size in all browsers.
 */
small {
  font-size: 80%; }

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

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

/* Embedded content
   ========================================================================== */
/**
 * Remove border when inside `a` element in IE 8/9/10.
 */
img {
  border: 0;
  max-width: 100%; }

/**
 * Correct overflow not hidden in IE 9/10/11.
 */
svg:not(:root) {
  overflow: hidden; }

/* Grouping content
   ========================================================================== */
/**
 * Address margin not present in IE 8/9 and Safari.
 */
figure {
  margin: 1em 40px; }

/**
 * Address differences between Firefox and other browsers.
 */
hr {
  box-sizing: content-box;
  height: 0; }

/**
 * Contain overflow in all browsers.
 */
pre {
  overflow: auto; }

/**
 * Address odd `em`-unit font size rendering in all browsers.
 */
code, kbd, pre, samp {
  font-family: monospace, monospace;
  font-size: 1em; }

/* Forms
   ========================================================================== */
/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */
/**
 * 1. Correct color not being inherited.
 *    Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
 */
button, input, optgroup, select, textarea {
  color: inherit;
  /* 1 */
  font: inherit;
  /* 2 */
  margin: 0;
  /* 3 */ }

/**
 * Address `overflow` set to `hidden` in IE 8/9/10/11.
 */
button {
  overflow: visible; }

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
 * Correct `select` style inheritance in Firefox.
 */
button, select {
  text-transform: none; }

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */
button, html input[type="button"], input[type="reset"], input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */ }

/**
 * Re-set default cursor for disabled elements.
 */
button[disabled], html input[disabled] {
  cursor: default; }

/**
 * Remove inner padding and border in Firefox 4+.
 */
button::-moz-focus-inner, input::-moz-focus-inner {
  border: 0;
  padding: 0; }

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */
input {
  line-height: normal; }

/**
 * It's recommended that you don't attempt to style these elements.
 * Firefox's implementation doesn't respect box-sizing, padding, or width.
 *
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */
input[type="checkbox"], input[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */
input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
 * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
 *    (include `-moz` to future-proof).
 */
input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  /* 2 */
  box-sizing: content-box; }

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */
input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * Define consistent border, margin, and padding.
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
 * 1. Correct `color` not being inherited in IE 8/9/10/11.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 */
legend {
  border: 0;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Remove default vertical scrollbar in IE 8/9/10/11.
 */
textarea {
  overflow: auto; }

/**
 * Don't inherit the `font-weight` (applied by a rule above).
 * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
 */
optgroup {
  font-weight: bold; }

/* Tables
   ========================================================================== */
/**
 * Remove most spacing between table cells.
 */
table {
  border-collapse: collapse;
  border-spacing: 0; }

td, th {
  padding: 0; }

.section-title {
  font-size: 1em;
  text-transform: uppercase;
  margin-bottom: 10.66656px;
  text-align: center;
  letter-spacing: -.04em;
  font-weight: 600; }
  @media  (min-width: 47em) {
    .section-title {
      font-size: 1.16667em;
      margin-bottom: 8px;
      text-align: left; } }

.section-row p {
  margin-top: 0; }

.container {
  padding-right: 2.94118% !important;
  padding-left: 2.94118% !important; }
  @media  (min-width: 26em) {
    .container {
      max-width: 620px;
      margin-left: auto;
      margin-right: auto; }
      .container:after {
        content: " ";
        display: block;
        clear: both; } }
  @media  (min-width: 660px) {
    .container {
      padding-right: 0 !important;
      padding-left: 0 !important; } }

.grid .grid-item + .grid-item, .grid--three .grid-item + .grid-item, .grid--stack .grid-item + .grid-item, .grid--two-one .grid-item + .grid-item {
  margin-top: 5.88235%; }
  @media  (min-width: 34em) {
    .grid .grid-item + .grid-item, .grid--three .grid-item + .grid-item, .grid--stack .grid-item + .grid-item, .grid--two-one .grid-item + .grid-item {
      margin-top: 2.85714%; } }

/*doc
---
title: Grid three
name: grid-three
category: Container
  - Grid
---

Goes from one `grid-item` on small screens to three `grid-item`'s on larger screens

Class | Description
:-- | :--
`grid--three` | Used on parent element
`grid-item` | Used on each individual child element of `grid--three`

```html_example
<div class="grid--three">
  <div class="grid-item">Grid column 1. Example text to show how the coluns breaks on smaller screens.</div>
  <div class="grid-item">Grid column 2. Example text to show how the coluns breaks on smaller screens.</div>
  <div class="grid-item">Grid column 3. Example text to show how the coluns breaks on smaller screens.</div>
</div>

```
*/
@media  (min-width: 26em) and (max-width: 34em) {
  .grid--three .grid-item {
    width: 64.70588%;
    float: left;
    margin-right: 5.88235%;
    margin-left: 17.64706%; } }
@media  (min-width: 34em) {
  .grid--three .grid-item {
    width: 31.42857%;
    float: left;
    margin-right: 2.85714%;
    margin-top: 0 !important; }
    .grid--three .grid-item:nth-child(3) {
      float: right;
      margin-right: 0; } }

@media  (min-width: 26em) {
  .grid--two-one .grid-item + .grid-item {
    margin-top: 0; } }
@media  (min-width: 26em) {
  .grid--two-one .grid-item:first-child {
    width: 64.70588%;
    float: left;
    margin-right: 5.88235%; } }
@media  (min-width: 34em) {
  .grid--two-one .grid-item:first-child {
    width: 57.14286%;
    float: left;
    margin-right: 2.85714%; } }
@media  (min-width: 26em) {
  .grid--two-one .grid-item:last-child {
    width: 29.41176%;
    float: right;
    margin-right: 0; } }
@media  (min-width: 34em) {
  .grid--two-one .grid-item:last-child {
    width: 40%;
    float: right;
    margin-right: 0; } }

.gallery .grid-item, .gallery--four .grid-item, .gallery--six .grid-item {
  margin-bottom: 2.85714%; }

@media  (min-width: 16em) {
  .gallery--four .grid-item {
    width: 47.05882%;
    float: left; }
    .gallery--four .grid-item:nth-child(2n+1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    .gallery--four .grid-item:nth-child(2n+2) {
      margin-left: 52.94118%;
      margin-right: -100%;
      clear: none; } }
@media  (min-width: 34em) {
  .gallery--four .grid-item {
    width: 22.85714%;
    float: left; }
    .gallery--four .grid-item:nth-child(4n+1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    .gallery--four .grid-item:nth-child(4n+2) {
      margin-left: 25.71429%;
      margin-right: -100%;
      clear: none; }
    .gallery--four .grid-item:nth-child(4n+3) {
      margin-left: 51.42857%;
      margin-right: -100%;
      clear: none; }
    .gallery--four .grid-item:nth-child(4n+4) {
      margin-left: 77.14286%;
      margin-right: -100%;
      clear: none; } }

@media  (min-width: 16em) {
  .gallery--six .grid-item {
    width: 47.05882%;
    float: left; }
    .gallery--six .grid-item:nth-child(2n+1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    .gallery--six .grid-item:nth-child(2n+2) {
      margin-left: 52.94118%;
      margin-right: -100%;
      clear: none; } }
@media  (min-width: 26em) {
  .gallery--six .grid-item {
    width: 29.41176%;
    float: left; }
    .gallery--six .grid-item:nth-child(3n+1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    .gallery--six .grid-item:nth-child(3n+2) {
      margin-left: 35.29412%;
      margin-right: -100%;
      clear: none; }
    .gallery--six .grid-item:nth-child(3n+3) {
      margin-left: 70.58824%;
      margin-right: -100%;
      clear: none; } }
@media  (min-width: 34em) {
  .gallery--six .grid-item {
    width: 14.28571%;
    float: left; }
    .gallery--six .grid-item:nth-child(6n+1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    .gallery--six .grid-item:nth-child(6n+2) {
      margin-left: 17.14286%;
      margin-right: -100%;
      clear: none; }
    .gallery--six .grid-item:nth-child(6n+3) {
      margin-left: 34.28571%;
      margin-right: -100%;
      clear: none; }
    .gallery--six .grid-item:nth-child(6n+4) {
      margin-left: 51.42857%;
      margin-right: -100%;
      clear: none; }
    .gallery--six .grid-item:nth-child(6n+5) {
      margin-left: 68.57143%;
      margin-right: -100%;
      clear: none; }
    .gallery--six .grid-item:nth-child(6n+6) {
      margin-left: 85.71429%;
      margin-right: -100%;
      clear: none; } }

/*doc
---
title: Hide elements
name: hide-elements
category: Element
  - Helper class
---

Different ways to hide elements.

```html_example
<a href="" class="visuallyhidden">Example hidden link</a>
<a href="" class="visuallyhidden focusable">Example hidden link</a>
<a href="" class="invisible">Example hidden link</a>
```

Class name | Comment
:---|:---
`visuallyhidden` | Visually hide elements, but have them available for screen readers.
`focusable` | By also adding this, a link would be shown on focus.
`invisible` | Hide visually and from screenreaders, but maintain layout.
*/
.visuallyhidden {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px; }
  .visuallyhidden.focusable:active, .visuallyhidden.focusable:focus {
    clip: auto;
    height: auto;
    margin: 0;
    overflow: visible;
    position: static;
    width: auto; }

.invisible {
  visibility: hidden; }

/*doc
---
title: Clearfix
name: clearfix
category: Element
  - Helper class
---

`clearfix` can be applied on a container that breaks because of floating elements inside it. 

```html_example
<div class="clearfix" style="border: 1px solid black;">
  <img src="http://placehold.it/200x300" alt="" style="float: right;">
</div>
```
*/
.grid:before, .grid--three:before, .grid--stack:before, .grid--two-one:before, .clearfix:before, .section-row:before, .section-main:before, .teaser--adjacent:before, .signup-newsletter .form:before, .grid:after, .grid--three:after, .grid--stack:after, .grid--two-one:after, .clearfix:after, .section-row:after, .section-main:after, .teaser--adjacent:after, .signup-newsletter .form:after {
  content: " ";
  display: table; }
.grid:after, .grid--three:after, .grid--stack:after, .grid--two-one:after, .clearfix:after, .section-row:after, .section-main:after, .teaser--adjacent:after, .signup-newsletter .form:after {
  clear: both; }

/*doc
---
title: Alignment
name: alignment
category: Element
  - Helper class
---

Description.

```html_example
<p>Example</p>
```
*/
.left {
  text-align: left; }

.center {
  text-align: center; }

.right {
  text-align: right; }

/*doc
---
title: Box display
name: block-display
category: Element
  - Helper class
---

Helper class to change a default inline element to a block element, or the other way arround. Illustrated in the example where a label changes from inline to block when adding the class `block`.

```html_example
<label for="example-inline">Inline label <small>(default)</small></label>
<input type="text" id="example-inline">

<label for="example-block" class="block">Block label</label>
<input type="text" id="example-block">
```

Class name | Comment 
:--- | :---
`block` | Change display to block
`inline` | Change display to inline

*/
.block {
  display: block !important; }

.inline {
  display: inline-block !important; }

/*doc
---
title: Space
name: space
category: Element
  - Helper class
---

Add space to a element. 30px are added on smaller screens and it expands to 60px on larger screens. A background is added in the example to better illustrate the space. 

Class | Description
:--- | :---
`space-top` | Add space on top of a element
`space-top-half` | Add space on top, but half of `space-top`
`space-bottom` | Add space on bottom of a element
`space-bottom-half` | Add half space on bottom of a element
`space-top-bottom` | Add space on top and bottom of a element

```html_example
<div class="container space-top bg-light">
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis. Nullam sit amet enim. Suspendisse id velit vitae ligula volutpat condimentum. Aliquam erat volutpat.</p>
</div>  
```
*/
.space-top {
  padding-top: 16px; }
  @media  (min-width: 47em) {
    .space-top {
      padding-top: 32px; } }
.space-top-half {
  padding-top: 8px; }
  @media  (min-width: 47em) {
    .space-top-half {
      padding-top: 16px; } }

.space-bottom {
  padding-bottom: 16px; }
  @media  (min-width: 47em) {
    .space-bottom {
      padding-bottom: 32px; } }
.space-bottom-half {
  padding-bottom: 8px; }
  @media  (min-width: 47em) {
    .space-bottom-half {
      padding-bottom: 16px; } }

.space-top-bottom {
  padding-top: 16px;
  padding-bottom: 16px; }
  @media  (min-width: 47em) {
    .space-top-bottom {
      padding-top: 32px;
      padding-bottom: 32px; } }

/*doc
---
title: No-space
name: no-space
category: Element
  - Helper class
---

Remove space on a element.

Class | Description
:-- | :--
`nospace` | Remove space arround all edges of a element
`nospace-top` | Remove space on top of a element
`nospace-bottom` | Remove space on bottom of a element

*/
.nospace {
  padding: 0 !important; }

.nospace-top {
  padding-top: 0 !important; }

.nospace-bottom {
  padding-bottom: 0 !important; }

.link-block {
  display: block; }

.icon, .list-accordion .title:before {
  font-size: 16px; }

.icon:before, .list-accordion .title:before {
  content: ' ';
  vertical-align: middle;
  display: inline-block;
  background-image: url("../img/sprite/export/sprite.svg");
  background-repeat: no-repeat;
  background-size: 2.125em 4.25em; }

.no-svg .icon:before, .no-svg .list-accordion .title:before, .list-accordion .no-svg .title:before {
  background-image: url("../img/sprite/export/sprite.png"); }

.icon.icon-chevron-circle-right-blue:before, .list-accordion .title:before {
  background-position: -0.3125em -0.3125em;
  width: 1.5em;
  height: 1.5em; }

.icon.icon-chevron-right-blue:before, .list-accordion .icon-chevron-right-blue.title:before {
  background-position: -0.3125em -2.4375em;
  width: 1.5em;
  height: 1.5em; }

.breadcrumb {
  padding: .4375em .875em;
  margin: 0 0 1.125em;
  list-style: none; }
  .breadcrumb li {
    display: inline-block; }
  .breadcrumb .divider {
    padding: 0 0.41667em;
    color: #999; }

.btn, .btn--cta, .signup-newsletter .form .btn {
  border: none;
  padding: .25em 1em;
  display: inline-block; }

.btn--cta, .signup-newsletter .form .btn, .signup-newsletter .form .btn--cta {
  background-color: #229ED0;
  color: #fff; }
  .btn--cta:hover, .signup-newsletter .form .btn:hover, .signup-newsletter .form .btn--cta:hover, .btn--cta:focus, .signup-newsletter .form .btn:focus, .signup-newsletter .form .btn--cta:focus {
    background: #30abdd; }

.logo {
  text-align: center;
  display: block;
  line-height: 70px;
  -webkit-transition: all .2s ease-in-out;
          transition: all .2s ease-in-out; }
  .logo img {
    max-width: 80px;
    max-height: 70px;
    vertical-align: middle; }

a.logo:hover, a.logo:focus {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.video .title, .video--large .title {
  font-size: 1.16667em;
  font-weight: 600;
  margin: 1em 0 .25em; }
.video .meta, .video--large .meta {
  margin: 0 0 .75em;
  font-size: 0.83333em; }

.video--large {
  text-align: center; }
  .video--large .title, .video--large .desc {
    margin-left: auto;
    margin-right: auto;
    max-width: 90%; }
    @media  (min-width: 34em) {
      .video--large .title, .video--large .desc {
        max-width: 95%; } }
  .video--large .title {
    color: #000;
    font-size: 1.5em;
    margin-top: 1em !important;
    margin-bottom: .25em; }
    @media  (min-width: 34em) {
      .video--large .title {
        font-size: 1.75em; } }
  .video--large .desc {
    font-size: 1em;
    line-height: 1.5; }
    @media  (min-width: 34em) {
      .video--large .desc {
        font-size: 1.16667em; } }
    .video--large .desc p {
      margin-top: 0;
      margin-bottom: .75em; }

.section-row + .section-row, .section-row + .field-type-entityreference, .field-type-entityreference + .section-row, .field-type-entityreference + .field-type-entityreference {
  margin-top: 16px; }
  @media  (min-width: 34em) {
    .section-row + .section-row, .section-row + .field-type-entityreference, .field-type-entityreference + .section-row, .field-type-entityreference + .field-type-entityreference {
      margin-top: 32px; } }

.list-accordion {
  list-style: none;
  padding-left: 0; }
  .list-accordion li {
    list-style: none !important;
    margin-left: 0 !important;
    margin-bottom: 0 !important; }
  .list-accordion > li {
    margin-bottom: 1em !important; }
  .list-accordion ul {
    padding-left: 14.28571%; }
  .list-accordion .title {
    display: block;
    font-size: 1.16667em;
    font-weight: 600; }
    .list-accordion .title:before {
      font-size: 13px;
      margin-top: -2px;
      margin-right: .5em;
      -webkit-transition: all .2s;
              transition: all .2s; }
  .list-accordion .is-open:before {
    -webkit-transform: rotate(90deg);
        -ms-transform: rotate(90deg);
            transform: rotate(90deg); }

.teaser p, .teaser--stack p, .teaser--adjacent p {
  margin: 0 0 .75em; }
.teaser .link-block, .teaser--stack .link-block, .teaser--adjacent .link-block {
  color: inherit;
  text-decoration: none; }
  .teaser .link-block:hover .title, .teaser--stack .link-block:hover .title, .teaser--adjacent .link-block:hover .title, .teaser .link-block:focus .title, .teaser--stack .link-block:focus .title, .teaser--adjacent .link-block:focus .title {
    text-decoration: underline; }
.teaser img, .teaser--stack img, .teaser--adjacent img {
  display: inline-block; }
.teaser .title, .teaser--stack .title, .teaser--adjacent .title {
  font-size: 1.16667em;
  font-weight: 600;
  clear: none;
  margin: 1em 0 .25em; }
  @media  (min-width: 47em) {
    .teaser .title, .teaser--stack .title, .teaser--adjacent .title {
      font-size: 1.5em; } }

@media  (min-width: 34em) {
  .teaser--adjacent img {
    width: 31.42857%;
    float: left;
    margin-right: 2.85714%; } }
.teaser--adjacent .title {
  margin-top: 0; }
@media  (min-width: 34em) {
  .teaser--adjacent .title, .teaser--adjacent .desc {
    margin-left: 34.28571%; } }

.teaser-quote {
  text-align: center; }
  .teaser-quote .link-block {
    color: inherit;
    text-decoration: none; }
    .teaser-quote .link-block:hover .quote p, .teaser-quote .link-block:focus .quote p {
      text-decoration: underline; }
  .teaser-quote .tag {
    color: gray;
    margin: 0 0 .25em;
    text-transform: uppercase;
    font-size: 0.83333em;
    line-height: 1.3; }
  .teaser-quote .quote {
    margin: 0; }
    .teaser-quote .quote p {
      font-size: 1.5em;
      font-family: Georgia, serif;
      font-style: italic;
      line-height: 1.4;
      margin: .25em 0 .75em; }
    .teaser-quote .quote .name {
      font-style: normal; }
      .teaser-quote .quote .name:before {
        content: "- "; }

.hero .title, .hero--img .title, .campaign-sms .title, .hero--video .title {
  font-size: 1.75em;
  font-weight: 600;
  text-align: center;
  margin-top: 32px;
  margin-bottom: 32px;
  clear: none; }
  @media  (min-width: 34em) {
    .hero .title, .hero--img .title, .campaign-sms .title, .hero--video .title {
      font-size: 2em;
      margin-top: 64px;
      margin-bottom: 64px; } }

.hero--img .title, .campaign-sms .title, .hero--video .title {
  margin-top: 8px; }
  @media  (min-width: 34em) {
    .hero--img .title, .campaign-sms .title, .hero--video .title {
      margin-top: 16px;
      margin-bottom: 16px; } }

.hero--img, .campaign-sms {
  position: relative;
  overflow: hidden; }
  @media  (min-width: 34em) {
    .hero--img:before, .campaign-sms:before {
      content: "";
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      background-color: rgba(0, 0, 0, 0.2);
      z-index: 5; } }
  .hero--img .text-wrap, .campaign-sms .text-wrap {
    position: relative; }
    @media  (min-width: 34em) {
      .hero--img .text-wrap, .campaign-sms .text-wrap {
        z-index: 10;
        padding: 64px 10%;
        color: #fff; } }
  .hero--img .title, .campaign-sms .title {
    color: inherit; }
  @media  (min-width: 34em) {
    .hero--img img, .campaign-sms img {
      position: absolute;
      left: 0;
      top: 0;
      width: 100%; } }

@media  (min-width: 47em) {
  .hero--video .video, .hero--video .video--large {
    width: 40%;
    float: right;
    margin-right: 0;
    margin-top: 16px;
    margin-bottom: 16px; } }
@media  (min-width: 47em) {
  .hero--video .title {
    font-size: 1.75em;
    width: 48.57143%;
    float: left;
    margin-right: 2.85714%; } }

/**
 * Newsletter signup
 */
.signup-newsletter {
  background-color: #1d86b1;
  padding: 16px 8px;
  color: white; }
  #content .signup-newsletter {
    text-align: center; }
    @media  (min-width: 47em) {
      #content .signup-newsletter {
        padding: 32px 15%; } }
  .signup-newsletter .title {
    font-size: 1.75em;
    font-weight: 600;
    margin-top: 0;
    margin: 0;
    color: inherit; }
    @media  (min-width: 47em) {
      .signup-newsletter .title {
        font-size: 1.75em; } }
  .signup-newsletter .desc {
    font-size: 1.16667em;
    line-height: 1.6; }
    .signup-newsletter .desc p {
      margin: 1.2em 0 0; }
    @media  (min-width: 47em) {
      #content .signup-newsletter .desc {
        font-size: 1.16667em; } }
  .signup-newsletter .form {
    margin-top: 1em; }
    .signup-newsletter .form .input, .signup-newsletter .form .btn--cta, .signup-newsletter .form .btn {
      display: block;
      width: 100%;
      height: 30px;
      border-radius: 0; }
    .signup-newsletter .form .input {
      border: none;
      padding-left: 8px; }
      @media  (min-width: 47em) {
        #content .signup-newsletter .form .input {
          width: 70%;
          float: left; } }
    @media  (min-width: 47em) {
      #content .signup-newsletter .form .btn--cta, #content .signup-newsletter .form .btn {
        width: 30%;
        float: left; } }
  .signup-newsletter .note {
    margin: .5em 0 0;
    font-size: 0.83333em;
    color: rgba(255, 255, 255, 0.8); }

.campaign-sms {
  text-align: center; }
  .sidebars .campaign-sms {
    text-align: left; }
  .campaign-sms .title {
    margin-bottom: 0;
    font-weight: 600;
    text-align: inherit; }
    .sidebars .campaign-sms .title {
      font-size: 1.5em; }
  .campaign-sms .note {
    margin: 1em 0 0;
    font-size: 1.16667em; }
    @media  (min-width: 34em) {
      .campaign-sms .note {
        background-color: rgba(0, 0, 0, 0.5);
        display: inline-block;
        padding: .5em 2em; } }


/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyIsImJhc2UvX2Jhc2Uuc2NzcyIsImJhc2UvX3R5cG9ncmFwaHkuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL19icmVha3BvaW50LnNjc3MiLCJsYXlvdXQvX2xheW91dC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsImxheW91dC9fZ3JpZC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCJsYXlvdXQvX2dhbGxlcnkuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwibW9kdWxlcy9faGVscGVyLWNsYXNzZXMuc2NzcyIsIl9zZXR0aW5ncy5zY3NzIiwibW9kdWxlcy9fc3ByaXRlLnNjc3MiLCJtb2R1bGVzL19icmVhZGNydW1iLnNjc3MiLCJtb2R1bGVzL19idXR0b25zLnNjc3MiLCJtb2R1bGVzL19tZWRpYS5zY3NzIiwibW9kdWxlcy9fc2VjdGlvbi5zY3NzIiwibW9kdWxlcy9fYWNjb3JkaW9uLnNjc3MiLCJtb2R1bGVzL190ZWFzZXIuc2NzcyIsIm1vZHVsZXMvX2hlcm8uc2NzcyIsIm1vZHVsZXMvX2NhbXBhaWduLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OEJBQzZCO0FBQzdCLDZEQUE0RDtBQUM1RDs7OztJQUlHO0FDSUg7RUFDRSx5QkFBYTtFREZiLFFBQU87RUNHZSw0QkFBQTtFRER0QixRQUFPO0VDRVAsZ0NBQTBCO0VEQTFCLFFBQU8sRUFBRTs7QUFFWDs7SUFFRztBQ0dIO0VBQ0UsV0FBUSxFQUFBOztBREFWO2lGQUNnRjtBQUNoRjs7Ozs7SUFLRztBQ000RjtFQWFwRixnQkFBQSxFQUFBOztBRGZYOzs7SUFHRztBQ29CWTtFQUlKLHVCQUFBO0VEckJULFFBQU87RUNzQlAsMEJBQWdCO0VEcEJoQixRQUFPLEVBQUU7O0FBRVg7OztJQUdHO0FDdUJIO0VBQ0UsZUFBUztFQUNELFdBQUEsRUFBQTs7QURwQlY7OztJQUdHO0FDeUJIO0VBRUUsZUFBUyxFQUFBOztBRHZCWDtpRkFDZ0Y7QUFDaEY7O0lBRUc7QUM2Qkg7RUFDRSwrQkFBa0IsRUFBQTs7QUQxQnBCOztJQUVHO0FDK0JRO0VBRVQsWUFBUyxFQUFBOztBRDdCWDtpRkFDZ0Y7QUFDaEY7O0lBRUc7QUNtQ0g7RUFDaUIsMkJBQUEsRUFBQTs7QURoQ2pCOztJQUVHO0FDcUNIO0VBRUUsbUJBQWEsRUFBQTs7QURuQ2Y7O0lBRUc7QUN3Q0g7RUFDRSxvQkFBWSxFQUFBOztBRHJDZDs7O0lBR0c7QUMwQ0g7RUFDRSxnQkFBVztFQUNILGtCQUFBLEVBQUE7O0FEdkNWOztJQUVHO0FDNENIO0VBQ2Msa0JBQUE7RUFDWixhQUFPLEVBQUE7O0FEekNUOztJQUVHO0FDOENIO0VBQ0UsZ0JBQVcsRUFBQTs7QUQzQ2I7O0lBRUc7QUNnREg7RUFFYSxnQkFBQTtFQUNYLGdCQUFhO0VBQ2Isb0JBQVU7RUFDTSwwQkFBQSxFQUFBOztBQUdsQjtFQUNPLGFBQUEsRUFBQTs7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RUFBQSxFQUFBO0FMUmhCO0VLWUo7SUVKVSxrQkxqRE47SUFBQSxhQUFBO0lLNkRpQix3Qkw3RGpCLEVBQUEsRUFBQTtBRnlDQTtFS1lxQjtJRUpmLGtCTGpETjtJSU9zQyxhSlB0QztJQUFBLHdCQUFBLEVBQUEsRUFBQTtBRnlDQTtFS3NCVztJRWRMLGtCTGpETjtJQUFBLGNBQUE7SUtrRm1CLGlCTGxGbkIsRUFBQSxFQUFBO0FGeUNBO0VLc0JxQjtJRWRmLFlMakROO0lJT08sY0pQUDtJQUFBLGlCQUFBLEVBQUEsRUFBQTs7QVFsQjBEO0VBQzNDLHlCQUFBLEVBQUE7O0FWMERmO0VVbkRXO0lDb0N5QixrQlQxQnBDO0lJT3NDLGFKUHRDLEVBQUE7SVM4Q1c7TVQ5Q1gsZ0JBQUE7TVNvRHdCLHFCVHBEeEI7TU9ac0IsYVBZdEI7TUFBQSxnQkFBQSxFQUFBO0lTOENxQjtNVDlDckIsd0JBQUE7TVNvRHdCLHFCVHBEeEI7TU9Kc0IsYVBJdEIsRUFBQSxFQUFBO0FGeUNBO0VVbkRKO0lSVUksa0JBQUE7SUlPc0MsYUpQdEMsRUFBQTtJUzhDSjtNQUs0QixnQlRuRHhCO01BQUEscUJBQUE7TU9ac0IsYVBZdEI7TU1nQnVCLGdCTmhCdkIsRUFBQTtJUzhDVztNVDlDWCx3QkFBQTtNU29Ed0IscUJUcER4QjtNT0pzQixhUEl0QixFQUFBO0lTOENXO01UOUNYLHdCQUFBO01Tb0R3QixxQlRwRHhCO01PSnNCLGFQSXRCLEVBQUE7SVM4Q1c7TVQ5Q1gsd0JBQUE7TUFBQSxxQkFBQTtNT0pzQixhUEl0QixFQUFBLEVBQUE7O0FGeUNBO0VVcENKO0lDcUJ3QyxrQlQxQnBDO0lBQUEsYUFBQSxFQUFBO0lTOENvQjtNQUtJLGdCVG5EeEI7TVNvRHdCLHFCVHBEeEI7TUFBQSxhQUFBO01NZ0J1QixnQk5oQnZCLEVBQUE7SVM4Q0o7TUFLNEIsd0JUbkR4QjtNU29Ed0IscUJUcER4QjtNQUFBLGFBQUEsRUFBQSxFQUFBO0FGeUNBO0VVcENVO0lDcUIwQixrQlQxQnBDO0lJT3NDLGFKUHRDLEVBQUE7SVM4Q1U7TVQ5Q1Ys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QVc7SUFDSixpQ0FBQSxFQUFBOztBQUlYO0VBRWMsb0JBQUEsRUFBQTtFQUVkO0lBQ0ksa0JBQVksRUFBQTtFQUdGO0lBQ1Ysa0JBQWU7SVQzQlQsa0JTNEJOO0lBQ1kscUJBQUEsRUFBQTtJQUVRO01BQ2xCLGtCQUFXLEVBQUE7RUFJakI7SUFDWSxpQkFBQTtJQUNSLHNCQUFXLEVBQUE7SXRCN0NYO01zQjJDSjtRQUlNLHNDQUFrQjtRQUNULHVCQUFBO1FBQ1QsbUJBQVMsRUFBQSxFQUFBIiwiZmlsZSI6InN0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEdyaWQgc2V0dGluZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiEgbm9ybWFsaXplLmNzcyB2My4wLjIgfCBNSVQgTGljZW5zZSB8IGdpdC5pby9ub3JtYWxpemUgKi9cbi8qKlxuICogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiAqIDIuIFByZXZlbnQgaU9TIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlLCB3aXRob3V0IGRpc2FibGluZ1xuICogICAgdXNlciB6b29tLlxuICovXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIC8qIDEgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC8qIDIgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBSZW1vdmUgZGVmYXVsdCBtYXJnaW4uXG4gKi9cbmJvZHkge1xuICBtYXJnaW46IDA7IH1cblxuLyogSFRNTDUgZGlzcGxheSBkZWZpbml0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGFueSBIVE1MNSBlbGVtZW50IGluIElFIDgvOS5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4gKiBhbmQgRmlyZWZveC5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgbWFpbmAgaW4gSUUgMTEuXG4gKi9cbmFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG1lbnUsIG5hdiwgc2VjdGlvbiwgc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cbiAqIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuYXVkaW8sIGNhbnZhcywgcHJvZ3Jlc3MsIHZpZGVvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAvKiAxICovXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogUHJldmVudCBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy5cbiAqIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuXG4gKi9cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDsgfVxuXG4vKipcbiAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cbiAqL1xuW2hpZGRlbl0sIHRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgd2hlbiBmb2N1c2VkIGFuZCBhbHNvIG1vdXNlIGhvdmVyZWQgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5hOmFjdGl2ZSwgYTpob3ZlciB7XG4gIG91dGxpbmU6IDA7IH1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkOyB9XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5iLCBzdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDsgfVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi8qKlxuICogQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYFxuICogY29udGV4dHMgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xubWFyayB7XG4gIGJhY2tncm91bmQ6ICNmZjA7XG4gIGNvbG9yOiAjMDAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7IH1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1Yiwgc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTsgfVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07IH1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkvMTAuXG4gKi9cbmltZyB7XG4gIGJvcmRlcjogMDtcbiAgbWF4LXdpZHRoOiAxMDAlOyB9XG5cbi8qKlxuICogQ29ycmVjdCBvdmVyZmxvdyBub3QgaGlkZGVuIGluIElFIDkvMTAvMTEuXG4gKi9cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBBZGRyZXNzIG1hcmdpbiBub3QgcHJlc2VudCBpbiBJRSA4LzkgYW5kIFNhZmFyaS5cbiAqL1xuZmlndXJlIHtcbiAgbWFyZ2luOiAxZW0gNDBweDsgfVxuXG4vKipcbiAqIEFkZHJlc3MgZGlmZmVyZW5jZXMgYmV0d2VlbiBGaXJlZm94IGFuZCBvdGhlciBicm93c2Vycy5cbiAqL1xuaHIge1xuICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwOyB9XG5cbi8qKlxuICogQ29udGFpbiBvdmVyZmxvdyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnByZSB7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG5cbi8qKlxuICogQWRkcmVzcyBvZGQgYGVtYC11bml0IGZvbnQgc2l6ZSByZW5kZXJpbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5jb2RlLCBrYmQsIHByZSwgc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxZW07IH1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXG4gKiBzdHlsaW5nIG9mIGBzZWxlY3RgLCB1bmxlc3MgYSBgYm9yZGVyYCBwcm9wZXJ0eSBpcyBzZXQuXG4gKi9cbi8qKlxuICogMS4gQ29ycmVjdCBjb2xvciBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXG4gKiAyLiBDb3JyZWN0IGZvbnQgcHJvcGVydGllcyBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cbmJ1dHRvbiwgaW5wdXQsIG9wdGdyb3VwLCBzZWxlY3QsIHRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDtcbiAgLyogMiAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDMgKi8gfVxuXG4vKipcbiAqIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExLlxuICovXG5idXR0b24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTsgfVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXG4gKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3gsIElFIDgvOS8xMC8xMSwgYW5kIE9wZXJhLlxuICogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LlxuICovXG5idXR0b24sIHNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyB9XG5cbi8qKlxuICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcbiAqICAgIGFuZCBgdmlkZW9gIGNvbnRyb2xzLlxuICogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuICogMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcbiAqICAgIGBpbnB1dGAgYW5kIG90aGVycy5cbiAqL1xuYnV0dG9uLCBodG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIGlucHV0W3R5cGU9XCJyZXNldFwiXSwgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAvKiAyICovXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLyogMyAqLyB9XG5cbi8qKlxuICogUmUtc2V0IGRlZmF1bHQgY3Vyc29yIGZvciBkaXNhYmxlZCBlbGVtZW50cy5cbiAqL1xuYnV0dG9uW2Rpc2FibGVkXSwgaHRtbCBpbnB1dFtkaXNhYmxlZF0ge1xuICBjdXJzb3I6IGRlZmF1bHQ7IH1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4gKi9cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwgaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7IH1cblxuLyoqXG4gKiBBZGRyZXNzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluXG4gKiB0aGUgVUEgc3R5bGVzaGVldC5cbiAqL1xuaW5wdXQge1xuICBsaW5lLWhlaWdodDogbm9ybWFsOyB9XG5cbi8qKlxuICogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxuICogRmlyZWZveCdzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgcmVzcGVjdCBib3gtc2l6aW5nLCBwYWRkaW5nLCBvciB3aWR0aC5cbiAqXG4gKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxuICogMi4gUmVtb3ZlIGV4Y2VzcyBwYWRkaW5nIGluIElFIDgvOS8xMC5cbiAqL1xuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLCBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiAxICovXG4gIHBhZGRpbmc6IDA7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIEZpeCB0aGUgY3Vyc29yIHN0eWxlIGZvciBDaHJvbWUncyBpbmNyZW1lbnQvZGVjcmVtZW50IGJ1dHRvbnMuIEZvciBjZXJ0YWluXG4gKiBgZm9udC1zaXplYCB2YWx1ZXMgb2YgdGhlIGBpbnB1dGAsIGl0IGNhdXNlcyB0aGUgY3Vyc29yIHN0eWxlIG9mIHRoZVxuICogZGVjcmVtZW50IGJ1dHRvbiB0byBjaGFuZ2UgZnJvbSBgZGVmYXVsdGAgdG8gYHRleHRgLlxuICovXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLCBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvOyB9XG5cbi8qKlxuICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKiAyLiBBZGRyZXNzIGBib3gtc2l6aW5nYCBzZXQgdG8gYGJvcmRlci1ib3hgIGluIFNhZmFyaSBhbmQgQ2hyb21lXG4gKiAgICAoaW5jbHVkZSBgLW1vemAgdG8gZnV0dXJlLXByb29mKS5cbiAqL1xuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICAvKiAxICovXG4gIC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIC8qIDIgKi9cbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IH1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIGFuZCBDaHJvbWUgb24gT1MgWC5cbiAqIFNhZmFyaSAoYnV0IG5vdCBDaHJvbWUpIGNsaXBzIHRoZSBjYW5jZWwgYnV0dG9uIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBoYXNcbiAqIHBhZGRpbmcgKGFuZCBgdGV4dGZpZWxkYCBhcHBlYXJhbmNlKS5cbiAqL1xuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG4vKipcbiAqIERlZmluZSBjb25zaXN0ZW50IGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZy5cbiAqL1xuZmllbGRzZXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBtYXJnaW46IDAgMnB4O1xuICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXG4gKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gKi9cbmxlZ2VuZCB7XG4gIGJvcmRlcjogMDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLlxuICovXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG5cbi8qKlxuICogRG9uJ3QgaW5oZXJpdCB0aGUgYGZvbnQtd2VpZ2h0YCAoYXBwbGllZCBieSBhIHJ1bGUgYWJvdmUpLlxuICogTk9URTogdGhlIGRlZmF1bHQgY2Fubm90IHNhZmVseSBiZSBjaGFuZ2VkIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFguXG4gKi9cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLyogVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuXG4gKi9cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxudGQsIHRoIHtcbiAgcGFkZGluZzogMDsgfVxuXG4uc2VjdGlvbi10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMWVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBtYXJnaW4tYm90dG9tOiAxMC42NjY1NnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxldHRlci1zcGFjaW5nOiAtLjA0ZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7IH1cbiAgQG1lZGlhICAobWluLXdpZHRoOiA0N2VtKSB7XG4gICAgLnNlY3Rpb24tdGl0bGUge1xuICAgICAgZm9udC1zaXplOiAxLjE2NjY3ZW07XG4gICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9IH1cblxuLnNlY3Rpb24tcm93IHAge1xuICBtYXJnaW4tdG9wOiAwOyB9XG5cbi5jb250YWluZXIge1xuICBwYWRkaW5nLXJpZ2h0OiAyLjk0MTE4JSAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWxlZnQ6IDIuOTQxMTglICFpbXBvcnRhbnQ7IH1cbiAgQG1lZGlhICAobWluLXdpZHRoOiAyNmVtKSB7XG4gICAgLmNvbnRhaW5lciB7XG4gICAgICBtYXgtd2lkdGg6IDYyMHB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87IH1cbiAgICAgIC5jb250YWluZXI6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNsZWFyOiBib3RoOyB9IH1cbiAgQG1lZGlhICAobWluLXdpZHRoOiA2NjBweCkge1xuICAgIC5jb250YWluZXIge1xuICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7IH0gfVxuXG4uZ3JpZCAuZ3JpZC1pdGVtICsgLmdyaWQtaXRlbSwgLmdyaWQtLXRocmVlIC5ncmlkLWl0ZW0gKyAuZ3JpZC1pdGVtLCAuZ3JpZC0tc3RhY2sgLmdyaWQtaXRlbSArIC5ncmlkLWl0ZW0sIC5ncmlkLS10d28tb25lIC5ncmlkLWl0ZW0gKyAuZ3JpZC1pdGVtIHtcbiAgbWFyZ2luLXRvcDogNS44ODIzNSU7IH1cbiAgQG1lZGlhICAobWluLXdpZHRoOiAzNGVtKSB7XG4gICAgLmdyaWQgLmdyaWQtaXRlbSArIC5ncmlkLWl0ZW0sIC5ncmlkLS10aHJlZSAuZ3JpZC1pdGVtICsgLmdyaWQtaXRlbSwgLmdyaWQtLXN0YWNrIC5ncmlkLWl0ZW0gKyAuZ3JpZC1pdGVtLCAuZ3JpZC0tdHdvLW9uZSAuZ3JpZC1pdGVtICsgLmdyaWQtaXRlbSB7XG4gICAgICBtYXJnaW4tdG9wOiAyLjg1NzE0JTsgfSB9XG5cbi8qZG9jXG4tLS1cbnRpdGxlOiBHcmlkIHRocmVlXG5uYW1lOiBncmlkLXRocmVlXG5jYXRlZ29yeTogQ29udGFpbmVyXG4gIC0gR3JpZFxuLS0tXG5cbkdvZXMgZnJvbSBvbmUgYGdyaWQtaXRlbWAgb24gc21hbGwgc2NyZWVucyB0byB0aHJlZSBgZ3JpZC1pdGVtYCdzIG9uIGxhcmdlciBzY3JlZW5zXG5cbkNsYXNzIHwgRGVzY3JpcHRpb25cbjotLSB8IDotLVxuYGdyaWQtLXRocmVlYCB8IFVzZWQgb24gcGFyZW50IGVsZW1lbnRcbmBncmlkLWl0ZW1gIHwgVXNlZCBvbiBlYWNoIGluZGl2aWR1YWwgY2hpbGQgZWxlbWVudCBvZiBgZ3JpZC0tdGhyZWVgXG5cbmBgYGh0bWxfZXhhbXBsZVxuPGRpdiBjbGFzcz1cImdyaWQtLXRocmVlXCI+XG4gIDxkaXYgY2xhc3M9XCJncmlkLWl0ZW1cIj5HcmlkIGNvbHVtbiAxLiBFeGFtcGxlIHRleHQgdG8gc2hvdyBob3cgdGhlIGNvbHVucyBicmVha3Mgb24gc21hbGxlciBzY3JlZW5zLjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZ3JpZC1pdGVtXCI+R3JpZCBjb2x1bW4gMi4gRXhhbXBsZSB0ZXh0IHRvIHNob3cgaG93IHRoZSBjb2x1bnMgYnJlYWtzIG9uIHNtYWxsZXIgc2NyZWVucy48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImdyaWQtaXRlbVwiPkdyaWQgY29sdW1uIDMuIEV4YW1wbGUgdGV4dCB0byBzaG93IGhvdyB0aGUgY29sdW5zIGJyZWFrcyBvbiBzbWFsbGVyIHNjcmVlbnMuPC9kaXY+XG48L2Rpdj5cblxuYGBgXG4qL1xuQG1lZGlhICAobWluLXdpZHRoOiAyNmVtKSBhbmQgKG1heC13aWR0aDogMzRlbSkge1xuICAuZ3JpZC0tdGhyZWUgLmdyaWQtaXRlbSB7XG4gICAgd2lkdGg6IDY0LjcwNTg4JTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDUuODgyMzUlO1xuICAgIG1hcmdpbi1sZWZ0OiAxNy42NDcwNiU7IH0gfVxuQG1lZGlhICAobWluLXdpZHRoOiAzNGVtKSB7XG4gIC5ncmlkLS10aHJlZSAuZ3JpZC1pdGVtIHtcbiAgICB3aWR0aDogMzEuNDI4NTclO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMi44NTcxNCU7XG4gICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OyB9XG4gICAgLmdyaWQtLXRocmVlIC5ncmlkLWl0ZW06bnRoLWNoaWxkKDMpIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIG1hcmdpbi1yaWdodDogMDsgfSB9XG5cbkBtZWRpYSAgKG1pbi13aWR0aDogMjZlbSkge1xuICAuZ3JpZC0tdHdvLW9uZSAuZ3JpZC1pdGVtICsgLmdyaWQtaXRlbSB7XG4gICAgbWFyZ2luLXRvcDogMDsgfSB9XG5AbWVkaWEgIChtaW4td2lkdGg6IDI2ZW0pIHtcbiAgLmdyaWQtLXR3by1vbmUgLmdyaWQtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgd2lkdGg6IDY0LjcwNTg4JTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDUuODgyMzUlOyB9IH1cbkBtZWRpYSAgKG1pbi13aWR0aDogMzRlbSkge1xuICAuZ3JpZC0tdHdvLW9uZSAuZ3JpZC1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgICB3aWR0aDogNTcuMTQyODYlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMi44NTcxNCU7IH0gfVxuQG1lZGlhICAobWluLXdpZHRoOiAyNmVtKSB7XG4gIC5ncmlkLS10d28tb25lIC5ncmlkLWl0ZW06bGFzdC1jaGlsZCB7XG4gICAgd2lkdGg6IDI5LjQxMTc2JTtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAwOyB9IH1cbkBtZWRpYSAgKG1pbi13aWR0aDogMzRlbSkge1xuICAuZ3JpZC0tdHdvLW9uZSAuZ3JpZC1pdGVtOmxhc3QtY2hpbGQge1xuICAgIHdpZHRoOiA0MCU7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogMDsgfSB9XG5cbi5nYWxsZXJ5IC5ncmlkLWl0ZW0sIC5nYWxsZXJ5LS1mb3VyIC5ncmlkLWl0ZW0sIC5nYWxsZXJ5LS1zaXggLmdyaWQtaXRlbSB7XG4gIG1hcmdpbi1ib3R0b206IDIuODU3MTQlOyB9XG5cbkBtZWRpYSAgKG1pbi13aWR0aDogMTZlbSkge1xuICAuZ2FsbGVyeS0tZm91ciAuZ3JpZC1pdGVtIHtcbiAgICB3aWR0aDogNDcuMDU4ODIlO1xuICAgIGZsb2F0OiBsZWZ0OyB9XG4gICAgLmdhbGxlcnktLWZvdXIgLmdyaWQtaXRlbTpudGgtY2hpbGQoMm4rMSkge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICBtYXJnaW4tbGVmdDogMDsgfVxuICAgIC5nYWxsZXJ5LS1mb3VyIC5ncmlkLWl0ZW06bnRoLWNoaWxkKDJuKzIpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA1Mi45NDExOCU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgY2xlYXI6IG5vbmU7IH0gfVxuQG1lZGlhICAobWluLXdpZHRoOiAzNGVtKSB7XG4gIC5nYWxsZXJ5LS1mb3VyIC5ncmlkLWl0ZW0ge1xuICAgIHdpZHRoOiAyMi44NTcxNCU7XG4gICAgZmxvYXQ6IGxlZnQ7IH1cbiAgICAuZ2FsbGVyeS0tZm91ciAuZ3JpZC1pdGVtOm50aC1jaGlsZCg0bisxKSB7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwOyB9XG4gICAgLmdhbGxlcnktLWZvdXIgLmdyaWQtaXRlbTpudGgtY2hpbGQoNG4rMikge1xuICAgICAgbWFyZ2luLWxlZnQ6IDI1LjcxNDI5JTtcbiAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gICAgICBjbGVhcjogbm9uZTsgfVxuICAgIC5nYWxsZXJ5LS1mb3VyIC5ncmlkLWl0ZW06bnRoLWNoaWxkKDRuKzMpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA1MS40Mjg1NyU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgY2xlYXI6IG5vbmU7IH1cbiAgICAuZ2FsbGVyeS0tZm91ciAuZ3JpZC1pdGVtOm50aC1jaGlsZCg0bis0KSB7XG4gICAgICBtYXJnaW4tbGVmdDogNzcuMTQyODYlO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtMTAwJTtcbiAgICAgIGNsZWFyOiBub25lOyB9IH1cblxuQG1lZGlhICAobWluLXdpZHRoOiAxNmVtKSB7XG4gIC5nYWxsZXJ5LS1zaXggLmdyaWQtaXRlbSB7XG4gICAgd2lkdGg6IDQ3LjA1ODgyJTtcbiAgICBmbG9hdDogbGVmdDsgfVxuICAgIC5nYWxsZXJ5LS1zaXggLmdyaWQtaXRlbTpudGgtY2hpbGQoMm4rMSkge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICBtYXJnaW4tbGVmdDogMDsgfVxuICAgIC5nYWxsZXJ5LS1zaXggLmdyaWQtaXRlbTpudGgtY2hpbGQoMm4rMikge1xuICAgICAgbWFyZ2luLWxlZnQ6IDUyLjk0MTE4JTtcbiAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gICAgICBjbGVhcjogbm9uZTsgfSB9XG5AbWVkaWEgIChtaW4td2lkdGg6IDI2ZW0pIHtcbiAgLmdhbGxlcnktLXNpeCAuZ3JpZC1pdGVtIHtcbiAgICB3aWR0aDogMjkuNDExNzYlO1xuICAgIGZsb2F0OiBsZWZ0OyB9XG4gICAgLmdhbGxlcnktLXNpeCAuZ3JpZC1pdGVtOm50aC1jaGlsZCgzbisxKSB7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwOyB9XG4gICAgLmdhbGxlcnktLXNpeCAuZ3JpZC1pdGVtOm50aC1jaGlsZCgzbisyKSB7XG4gICAgICBtYXJnaW4tbGVmdDogMzUuMjk0MTIlO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtMTAwJTtcbiAgICAgIGNsZWFyOiBub25lOyB9XG4gICAgLmdhbGxlcnktLXNpeCAuZ3JpZC1pdGVtOm50aC1jaGlsZCgzbiszKSB7XG4gICAgICBtYXJnaW4tbGVmdDogNzAuNTg4MjQlO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtMTAwJTtcbiAgICAgIGNsZWFyOiBub25lOyB9IH1cbkBtZWRpYSAgKG1pbi13aWR0aDogMzRlbSkge1xuICAuZ2FsbGVyeS0tc2l4IC5ncmlkLWl0ZW0ge1xuICAgIHdpZHRoOiAxNC4yODU3MSU7XG4gICAgZmxvYXQ6IGxlZnQ7IH1cbiAgICAuZ2FsbGVyeS0tc2l4IC5ncmlkLWl0ZW06bnRoLWNoaWxkKDZuKzEpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtMTAwJTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cbiAgICAuZ2FsbGVyeS0tc2l4IC5ncmlkLWl0ZW06bnRoLWNoaWxkKDZuKzIpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxNy4xNDI4NiU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgY2xlYXI6IG5vbmU7IH1cbiAgICAuZ2FsbGVyeS0tc2l4IC5ncmlkLWl0ZW06bnRoLWNoaWxkKDZuKzMpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAzNC4yODU3MSU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgY2xlYXI6IG5vbmU7IH1cbiAgICAuZ2FsbGVyeS0tc2l4IC5ncmlkLWl0ZW06bnRoLWNoaWxkKDZuKzQpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA1MS40Mjg1NyU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgY2xlYXI6IG5vbmU7IH1cbiAgICAuZ2FsbGVyeS0tc2l4IC5ncmlkLWl0ZW06bnRoLWNoaWxkKDZuKzUpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA2OC41NzE0MyU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgY2xlYXI6IG5vbmU7IH1cbiAgICAuZ2FsbGVyeS0tc2l4IC5ncmlkLWl0ZW06bnRoLWNoaWxkKDZuKzYpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA4NS43MTQyOSU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgY2xlYXI6IG5vbmU7IH0gfVxuXG4vKmRvY1xuLS0tXG50aXRsZTogSGlkZSBlbGVtZW50c1xubmFtZTogaGlkZS1lbGVtZW50c1xuY2F0ZWdvcnk6IEVsZW1lbnRcbiAgLSBIZWxwZXIgY2xhc3Ncbi0tLVxuXG5EaWZmZXJlbnQgd2F5cyB0byBoaWRlIGVsZW1lbnRzLlxuXG5gYGBodG1sX2V4YW1wbGVcbjxhIGhyZWY9XCJcIiBjbGFzcz1cInZpc3VhbGx5aGlkZGVuXCI+RXhhbXBsZSBoaWRkZW4gbGluazwvYT5cbjxhIGhyZWY9XCJcIiBjbGFzcz1cInZpc3VhbGx5aGlkZGVuIGZvY3VzYWJsZVwiPkV4YW1wbGUgaGlkZGVuIGxpbms8L2E+XG48YSBocmVmPVwiXCIgY2xhc3M9XCJpbnZpc2libGVcIj5FeGFtcGxlIGhpZGRlbiBsaW5rPC9hPlxuYGBgXG5cbkNsYXNzIG5hbWUgfCBDb21tZW50XG46LS0tfDotLS1cbmB2aXN1YWxseWhpZGRlbmAgfCBWaXN1YWxseSBoaWRlIGVsZW1lbnRzLCBidXQgaGF2ZSB0aGVtIGF2YWlsYWJsZSBmb3Igc2NyZWVuIHJlYWRlcnMuXG5gZm9jdXNhYmxlYCB8IEJ5IGFsc28gYWRkaW5nIHRoaXMsIGEgbGluayB3b3VsZCBiZSBzaG93biBvbiBmb2N1cy5cbmBpbnZpc2libGVgIHwgSGlkZSB2aXN1YWxseSBhbmQgZnJvbSBzY3JlZW5yZWFkZXJzLCBidXQgbWFpbnRhaW4gbGF5b3V0LlxuKi9cbi52aXN1YWxseWhpZGRlbiB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4OyB9XG4gIC52aXN1YWxseWhpZGRlbi5mb2N1c2FibGU6YWN0aXZlLCAudmlzdWFsbHloaWRkZW4uZm9jdXNhYmxlOmZvY3VzIHtcbiAgICBjbGlwOiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB3aWR0aDogYXV0bzsgfVxuXG4uaW52aXNpYmxlIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG5cbi8qZG9jXG4tLS1cbnRpdGxlOiBDbGVhcmZpeFxubmFtZTogY2xlYXJmaXhcbmNhdGVnb3J5OiBFbGVtZW50XG4gIC0gSGVscGVyIGNsYXNzXG4tLS1cblxuYGNsZWFyZml4YCBjYW4gYmUgYXBwbGllZCBvbiBhIGNvbnRhaW5lciB0aGF0IGJyZWFrcyBiZWNhdXNlIG9mIGZsb2F0aW5nIGVsZW1lbnRzIGluc2lkZSBpdC4gXG5cbmBgYGh0bWxfZXhhbXBsZVxuPGRpdiBjbGFzcz1cImNsZWFyZml4XCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCBibGFjaztcIj5cbiAgPGltZyBzcmM9XCJodHRwOi8vcGxhY2Vob2xkLml0LzIwMHgzMDBcIiBhbHQ9XCJcIiBzdHlsZT1cImZsb2F0OiByaWdodDtcIj5cbjwvZGl2PlxuYGBgXG4qL1xuLmdyaWQ6YmVmb3JlLCAuZ3JpZC0tdGhyZWU6YmVmb3JlLCAuZ3JpZC0tc3RhY2s6YmVmb3JlLCAuZ3JpZC0tdHdvLW9uZTpiZWZvcmUsIC5jbGVhcmZpeDpiZWZvcmUsIC5zZWN0aW9uLXJvdzpiZWZvcmUsIC5zZWN0aW9uLW1haW46YmVmb3JlLCAudGVhc2VyLS1hZGphY2VudDpiZWZvcmUsIC5zaWdudXAtbmV3c2xldHRlciAuZm9ybTpiZWZvcmUsIC5ncmlkOmFmdGVyLCAuZ3JpZC0tdGhyZWU6YWZ0ZXIsIC5ncmlkLS1zdGFjazphZnRlciwgLmdyaWQtLXR3by1vbmU6YWZ0ZXIsIC5jbGVhcmZpeDphZnRlciwgLnNlY3Rpb24tcm93OmFmdGVyLCAuc2VjdGlvbi1tYWluOmFmdGVyLCAudGVhc2VyLS1hZGphY2VudDphZnRlciwgLnNpZ251cC1uZXdzbGV0dGVyIC5mb3JtOmFmdGVyIHtcbiAgY29udGVudDogXCIgXCI7XG4gIGRpc3BsYXk6IHRhYmxlOyB9XG4uZ3JpZDphZnRlciwgLmdyaWQtLXRocmVlOmFmdGVyLCAuZ3JpZC0tc3RhY2s6YWZ0ZXIsIC5ncmlkLS10d28tb25lOmFmdGVyLCAuY2xlYXJmaXg6YWZ0ZXIsIC5zZWN0aW9uLXJvdzphZnRlciwgLnNlY3Rpb24tbWFpbjphZnRlciwgLnRlYXNlci0tYWRqYWNlbnQ6YWZ0ZXIsIC5zaWdudXAtbmV3c2xldHRlciAuZm9ybTphZnRlciB7XG4gIGNsZWFyOiBib3RoOyB9XG5cbi8qZG9jXG4tLS1cbnRpdGxlOiBBbGlnbm1lbnRcbm5hbWU6IGFsaWdubWVudFxuY2F0ZWdvcnk6IEVsZW1lbnRcbiAgLSBIZWxwZXIgY2xhc3Ncbi0tLVxuXG5EZXNjcmlwdGlvbi5cblxuYGBgaHRtbF9leGFtcGxlXG48cD5FeGFtcGxlPC9wPlxuYGBgXG4qL1xuLmxlZnQge1xuICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG5cbi5jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLnJpZ2h0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7IH1cblxuLypkb2Ncbi0tLVxudGl0bGU6IEJveCBkaXNwbGF5XG5uYW1lOiBibG9jay1kaXNwbGF5XG5jYXRlZ29yeTogRWxlbWVudFxuICAtIEhlbHBlciBjbGFzc1xuLS0tXG5cbkhlbHBlciBjbGFzcyB0byBjaGFuZ2UgYSBkZWZhdWx0IGlubGluZSBlbGVtZW50IHRvIGEgYmxvY2sgZWxlbWVudCwgb3IgdGhlIG90aGVyIHdheSBhcnJvdW5kLiBJbGx1c3RyYXRlZCBpbiB0aGUgZXhhbXBsZSB3aGVyZSBhIGxhYmVsIGNoYW5nZXMgZnJvbSBpbmxpbmUgdG8gYmxvY2sgd2hlbiBhZGRpbmcgdGhlIGNsYXNzIGBibG9ja2AuXG5cbmBgYGh0bWxfZXhhbXBsZVxuPGxhYmVsIGZvcj1cImV4YW1wbGUtaW5saW5lXCI+SW5saW5lIGxhYmVsIDxzbWFsbD4oZGVmYXVsdCk8L3NtYWxsPjwvbGFiZWw+XG48aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImV4YW1wbGUtaW5saW5lXCI+XG5cbjxsYWJlbCBmb3I9XCJleGFtcGxlLWJsb2NrXCIgY2xhc3M9XCJibG9ja1wiPkJsb2NrIGxhYmVsPC9sYWJlbD5cbjxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiZXhhbXBsZS1ibG9ja1wiPlxuYGBgXG5cbkNsYXNzIG5hbWUgfCBDb21tZW50IFxuOi0tLSB8IDotLS1cbmBibG9ja2AgfCBDaGFuZ2UgZGlzcGxheSB0byBibG9ja1xuYGlubGluZWAgfCBDaGFuZ2UgZGlzcGxheSB0byBpbmxpbmVcblxuKi9cbi5ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cblxuLmlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9XG5cbi8qZG9jXG4tLS1cbnRpdGxlOiBTcGFjZVxubmFtZTogc3BhY2VcbmNhdGVnb3J5OiBFbGVtZW50XG4gIC0gSGVscGVyIGNsYXNzXG4tLS1cblxuQWRkIHNwYWNlIHRvIGEgZWxlbWVudC4gMzBweCBhcmUgYWRkZWQgb24gc21hbGxlciBzY3JlZW5zIGFuZCBpdCBleHBhbmRzIHRvIDYwcHggb24gbGFyZ2VyIHNjcmVlbnMuIEEgYmFja2dyb3VuZCBpcyBhZGRlZCBpbiB0aGUgZXhhbXBsZSB0byBiZXR0ZXIgaWxsdXN0cmF0ZSB0aGUgc3BhY2UuIFxuXG5DbGFzcyB8IERlc2NyaXB0aW9uXG46LS0tIHwgOi0tLVxuYHNwYWNlLXRvcGAgfCBBZGQgc3BhY2Ugb24gdG9wIG9mIGEgZWxlbWVudFxuYHNwYWNlLXRvcC1oYWxmYCB8IEFkZCBzcGFjZSBvbiB0b3AsIGJ1dCBoYWxmIG9mIGBzcGFjZS10b3BgXG5gc3BhY2UtYm90dG9tYCB8IEFkZCBzcGFjZSBvbiBib3R0b20gb2YgYSBlbGVtZW50XG5gc3BhY2UtYm90dG9tLWhhbGZgIHwgQWRkIGhhbGYgc3BhY2Ugb24gYm90dG9tIG9mIGEgZWxlbWVudFxuYHNwYWNlLXRvcC1ib3R0b21gIHwgQWRkIHNwYWNlIG9uIHRvcCBhbmQgYm90dG9tIG9mIGEgZWxlbWVudFxuXG5gYGBodG1sX2V4YW1wbGVcbjxkaXYgY2xhc3M9XCJjb250YWluZXIgc3BhY2UtdG9wIGJnLWxpZ2h0XCI+XG4gIDxwPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LiBNb3JiaSBjb21tb2RvLCBpcHN1bSBzZWQgcGhhcmV0cmEgZ3JhdmlkYSwgb3JjaSBtYWduYSByaG9uY3VzIG5lcXVlLCBpZCBwdWx2aW5hciBvZGlvIGxvcmVtIG5vbiB0dXJwaXMuIE51bGxhbSBzaXQgYW1ldCBlbmltLiBTdXNwZW5kaXNzZSBpZCB2ZWxpdCB2aXRhZSBsaWd1bGEgdm9sdXRwYXQgY29uZGltZW50dW0uIEFsaXF1YW0gZXJhdCB2b2x1dHBhdC48L3A+XG48L2Rpdj4gIFxuYGBgXG4qL1xuLnNwYWNlLXRvcCB7XG4gIHBhZGRpbmctdG9wOiAxNnB4OyB9XG4gIEBtZWRpYSAgKG1pbi13aWR0aDogNDdlbSkge1xuICAgIC5zcGFjZS10b3Age1xuICAgICAgcGFkZGluZy10b3A6IDMycHg7IH0gfVxuLnNwYWNlLXRvcC1oYWxmIHtcbiAgcGFkZGluZy10b3A6IDhweDsgfVxuICBAbWVkaWEgIChtaW4td2lkdGg6IDQ3ZW0pIHtcbiAgICAuc3BhY2UtdG9wLWhhbGYge1xuICAgICAgcGFkZGluZy10b3A6IDE2cHg7IH0gfVxuXG4uc3BhY2UtYm90dG9tIHtcbiAgcGFkZGluZy1ib3R0b206IDE2cHg7IH1cbiAgQG1lZGlhICAobWluLXdpZHRoOiA0N2VtKSB7XG4gICAgLnNwYWNlLWJvdHRvbSB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMzJweDsgfSB9XG4uc3BhY2UtYm90dG9tLWhhbGYge1xuICBwYWRkaW5nLWJvdHRvbTogOHB4OyB9XG4gIEBtZWRpYSAgKG1pbi13aWR0aDogNDdlbSkge1xuICAgIC5zcGFjZS1ib3R0b20taGFsZiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDsgfSB9XG5cbi5zcGFjZS10b3AtYm90dG9tIHtcbiAgcGFkZGluZy10b3A6IDE2cHg7XG4gIHBhZGRpbmctYm90dG9tOiAxNnB4OyB9XG4gIEBtZWRpYSAgKG1pbi13aWR0aDogNDdlbSkge1xuICAgIC5zcGFjZS10b3AtYm90dG9tIHtcbiAgICAgIHBhZGRpbmctdG9wOiAzMnB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDMycHg7IH0gfVxuXG4vKmRvY1xuLS0tXG50aXRsZTogTm8tc3BhY2Vcbm5hbWU6IG5vLXNwYWNlXG5jYXRlZ29yeTogRWxlbWVudFxuICAtIEhlbHBlciBjbGFzc1xuLS0tXG5cblJlbW92ZSBzcGFjZSBvbiBhIGVsZW1lbnQuXG5cbkNsYXNzIHwgRGVzY3JpcHRpb25cbjotLSB8IDotLVxuYG5vc3BhY2VgIHwgUmVtb3ZlIHNwYWNlIGFycm91bmQgYWxsIGVkZ2VzIG9mIGEgZWxlbWVudFxuYG5vc3BhY2UtdG9wYCB8IFJlbW92ZSBzcGFjZSBvbiB0b3Agb2YgYSBlbGVtZW50XG5gbm9zcGFjZS1ib3R0b21gIHwgUmVtb3ZlIHNwYWNlIG9uIGJvdHRvbSBvZiBhIGVsZW1lbnRcblxuKi9cbi5ub3NwYWNlIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50OyB9XG5cbi5ub3NwYWNlLXRvcCB7XG4gIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH1cblxuLm5vc3BhY2UtYm90dG9tIHtcbiAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuXG4ubGluay1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi5pY29uLCAubGlzdC1hY2NvcmRpb24gLnRpdGxlOmJlZm9yZSB7XG4gIGZvbnQtc2l6ZTogMTZweDsgfVxuXG4uaWNvbjpiZWZvcmUsIC5saXN0LWFjY29yZGlvbiAudGl0bGU6YmVmb3JlIHtcbiAgY29udGVudDogJyAnO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9zcHJpdGUvZXhwb3J0L3Nwcml0ZS5zdmdcIik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogMi4xMjVlbSA0LjI1ZW07IH1cblxuLm5vLXN2ZyAuaWNvbjpiZWZvcmUsIC5uby1zdmcgLmxpc3QtYWNjb3JkaW9uIC50aXRsZTpiZWZvcmUsIC5saXN0LWFjY29yZGlvbiAubm8tc3ZnIC50aXRsZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWcvc3ByaXRlL2V4cG9ydC9zcHJpdGUucG5nXCIpOyB9XG5cbi5pY29uLmljb24tY2hldnJvbi1jaXJjbGUtcmlnaHQtYmx1ZTpiZWZvcmUsIC5saXN0LWFjY29yZGlvbiAudGl0bGU6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTAuMzEyNWVtIC0wLjMxMjVlbTtcbiAgd2lkdGg6IDEuNWVtO1xuICBoZWlnaHQ6IDEuNWVtOyB9XG5cbi5pY29uLmljb24tY2hldnJvbi1yaWdodC1ibHVlOmJlZm9yZSwgLmxpc3QtYWNjb3JkaW9uIC5pY29uLWNoZXZyb24tcmlnaHQtYmx1ZS50aXRsZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMC4zMTI1ZW0gLTIuNDM3NWVtO1xuICB3aWR0aDogMS41ZW07XG4gIGhlaWdodDogMS41ZW07IH1cblxuLmJyZWFkY3J1bWIge1xuICBwYWRkaW5nOiAuNDM3NWVtIC44NzVlbTtcbiAgbWFyZ2luOiAwIDAgMS4xMjVlbTtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuICAuYnJlYWRjcnVtYiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG4gIC5icmVhZGNydW1iIC5kaXZpZGVyIHtcbiAgICBwYWRkaW5nOiAwIDAuNDE2NjdlbTtcbiAgICBjb2xvcjogIzk5OTsgfVxuXG4uYnRuLCAuYnRuLS1jdGEsIC5zaWdudXAtbmV3c2xldHRlciAuZm9ybSAuYnRuIHtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAuMjVlbSAxZW07XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuXG4uYnRuLS1jdGEsIC5zaWdudXAtbmV3c2xldHRlciAuZm9ybSAuYnRuLCAuc2lnbnVwLW5ld3NsZXR0ZXIgLmZvcm0gLmJ0bi0tY3RhIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIyOUVEMDtcbiAgY29sb3I6ICNmZmY7IH1cbiAgLmJ0bi0tY3RhOmhvdmVyLCAuc2lnbnVwLW5ld3NsZXR0ZXIgLmZvcm0gLmJ0bjpob3ZlciwgLnNpZ251cC1uZXdzbGV0dGVyIC5mb3JtIC5idG4tLWN0YTpob3ZlciwgLmJ0bi0tY3RhOmZvY3VzLCAuc2lnbnVwLW5ld3NsZXR0ZXIgLmZvcm0gLmJ0bjpmb2N1cywgLnNpZ251cC1uZXdzbGV0dGVyIC5mb3JtIC5idG4tLWN0YTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZDogIzMwYWJkZDsgfVxuXG4ubG9nbyB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGxpbmUtaGVpZ2h0OiA3MHB4O1xuICB0cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2UtaW4tb3V0OyB9XG4gIC5sb2dvIGltZyB7XG4gICAgbWF4LXdpZHRoOiA4MHB4O1xuICAgIG1heC1oZWlnaHQ6IDcwcHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG5hLmxvZ286aG92ZXIsIGEubG9nbzpmb2N1cyB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4yKTsgfVxuXG4udmlkZW8gLnRpdGxlLCAudmlkZW8tLWxhcmdlIC50aXRsZSB7XG4gIGZvbnQtc2l6ZTogMS4xNjY2N2VtO1xuICBmb250LXdlaWdodDogNjAwO1xuICBtYXJnaW46IDFlbSAwIC4yNWVtOyB9XG4udmlkZW8gLm1ldGEsIC52aWRlby0tbGFyZ2UgLm1ldGEge1xuICBtYXJnaW46IDAgMCAuNzVlbTtcbiAgZm9udC1zaXplOiAwLjgzMzMzZW07IH1cblxuLnZpZGVvLS1sYXJnZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAudmlkZW8tLWxhcmdlIC50aXRsZSwgLnZpZGVvLS1sYXJnZSAuZGVzYyB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1heC13aWR0aDogOTAlOyB9XG4gICAgQG1lZGlhICAobWluLXdpZHRoOiAzNGVtKSB7XG4gICAgICAudmlkZW8tLWxhcmdlIC50aXRsZSwgLnZpZGVvLS1sYXJnZSAuZGVzYyB7XG4gICAgICAgIG1heC13aWR0aDogOTUlOyB9IH1cbiAgLnZpZGVvLS1sYXJnZSAudGl0bGUge1xuICAgIGNvbG9yOiAjMDAwO1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgbWFyZ2luLXRvcDogMWVtICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLWJvdHRvbTogLjI1ZW07IH1cbiAgICBAbWVkaWEgIChtaW4td2lkdGg6IDM0ZW0pIHtcbiAgICAgIC52aWRlby0tbGFyZ2UgLnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjc1ZW07IH0gfVxuICAudmlkZW8tLWxhcmdlIC5kZXNjIHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBsaW5lLWhlaWdodDogMS41OyB9XG4gICAgQG1lZGlhICAobWluLXdpZHRoOiAzNGVtKSB7XG4gICAgICAudmlkZW8tLWxhcmdlIC5kZXNjIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjE2NjY3ZW07IH0gfVxuICAgIC52aWRlby0tbGFyZ2UgLmRlc2MgcCB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgbWFyZ2luLWJvdHRvbTogLjc1ZW07IH1cblxuLnNlY3Rpb24tcm93ICsgLnNlY3Rpb24tcm93LCAuc2VjdGlvbi1yb3cgKyAuZmllbGQtdHlwZS1lbnRpdHlyZWZlcmVuY2UsIC5maWVsZC10eXBlLWVudGl0eXJlZmVyZW5jZSArIC5zZWN0aW9uLXJvdywgLmZpZWxkLXR5cGUtZW50aXR5cmVmZXJlbmNlICsgLmZpZWxkLXR5cGUtZW50aXR5cmVmZXJlbmNlIHtcbiAgbWFyZ2luLXRvcDogMTZweDsgfVxuICBAbWVkaWEgIChtaW4td2lkdGg6IDM0ZW0pIHtcbiAgICAuc2VjdGlvbi1yb3cgKyAuc2VjdGlvbi1yb3csIC5zZWN0aW9uLXJvdyArIC5maWVsZC10eXBlLWVudGl0eXJlZmVyZW5jZSwgLmZpZWxkLXR5cGUtZW50aXR5cmVmZXJlbmNlICsgLnNlY3Rpb24tcm93LCAuZmllbGQtdHlwZS1lbnRpdHlyZWZlcmVuY2UgKyAuZmllbGQtdHlwZS1lbnRpdHlyZWZlcmVuY2Uge1xuICAgICAgbWFyZ2luLXRvcDogMzJweDsgfSB9XG5cbi5saXN0LWFjY29yZGlvbiB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDsgfVxuICAubGlzdC1hY2NvcmRpb24gbGkge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmUgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuICAubGlzdC1hY2NvcmRpb24gPiBsaSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtICFpbXBvcnRhbnQ7IH1cbiAgLmxpc3QtYWNjb3JkaW9uIHVsIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDE0LjI4NTcxJTsgfVxuICAubGlzdC1hY2NvcmRpb24gLnRpdGxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDEuMTY2NjdlbTtcbiAgICBmb250LXdlaWdodDogNjAwOyB9XG4gICAgLmxpc3QtYWNjb3JkaW9uIC50aXRsZTpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgbWFyZ2luLXRvcDogLTJweDtcbiAgICAgIG1hcmdpbi1yaWdodDogLjVlbTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAuMnM7IH1cbiAgLmxpc3QtYWNjb3JkaW9uIC5pcy1vcGVuOmJlZm9yZSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOyB9XG5cbi50ZWFzZXIgcCwgLnRlYXNlci0tc3RhY2sgcCwgLnRlYXNlci0tYWRqYWNlbnQgcCB7XG4gIG1hcmdpbjogMCAwIC43NWVtOyB9XG4udGVhc2VyIC5saW5rLWJsb2NrLCAudGVhc2VyLS1zdGFjayAubGluay1ibG9jaywgLnRlYXNlci0tYWRqYWNlbnQgLmxpbmstYmxvY2sge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gIC50ZWFzZXIgLmxpbmstYmxvY2s6aG92ZXIgLnRpdGxlLCAudGVhc2VyLS1zdGFjayAubGluay1ibG9jazpob3ZlciAudGl0bGUsIC50ZWFzZXItLWFkamFjZW50IC5saW5rLWJsb2NrOmhvdmVyIC50aXRsZSwgLnRlYXNlciAubGluay1ibG9jazpmb2N1cyAudGl0bGUsIC50ZWFzZXItLXN0YWNrIC5saW5rLWJsb2NrOmZvY3VzIC50aXRsZSwgLnRlYXNlci0tYWRqYWNlbnQgLmxpbmstYmxvY2s6Zm9jdXMgLnRpdGxlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfVxuLnRlYXNlciBpbWcsIC50ZWFzZXItLXN0YWNrIGltZywgLnRlYXNlci0tYWRqYWNlbnQgaW1nIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG4udGVhc2VyIC50aXRsZSwgLnRlYXNlci0tc3RhY2sgLnRpdGxlLCAudGVhc2VyLS1hZGphY2VudCAudGl0bGUge1xuICBmb250LXNpemU6IDEuMTY2NjdlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY2xlYXI6IG5vbmU7XG4gIG1hcmdpbjogMWVtIDAgLjI1ZW07IH1cbiAgQG1lZGlhICAobWluLXdpZHRoOiA0N2VtKSB7XG4gICAgLnRlYXNlciAudGl0bGUsIC50ZWFzZXItLXN0YWNrIC50aXRsZSwgLnRlYXNlci0tYWRqYWNlbnQgLnRpdGxlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07IH0gfVxuXG5AbWVkaWEgIChtaW4td2lkdGg6IDM0ZW0pIHtcbiAgLnRlYXNlci0tYWRqYWNlbnQgaW1nIHtcbiAgICB3aWR0aDogMzEuNDI4NTclO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMi44NTcxNCU7IH0gfVxuLnRlYXNlci0tYWRqYWNlbnQgLnRpdGxlIHtcbiAgbWFyZ2luLXRvcDogMDsgfVxuQG1lZGlhICAobWluLXdpZHRoOiAzNGVtKSB7XG4gIC50ZWFzZXItLWFkamFjZW50IC50aXRsZSwgLnRlYXNlci0tYWRqYWNlbnQgLmRlc2Mge1xuICAgIG1hcmdpbi1sZWZ0OiAzNC4yODU3MSU7IH0gfVxuXG4udGVhc2VyLXF1b3RlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIC50ZWFzZXItcXVvdGUgLmxpbmstYmxvY2sge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICAgIC50ZWFzZXItcXVvdGUgLmxpbmstYmxvY2s6aG92ZXIgLnF1b3RlIHAsIC50ZWFzZXItcXVvdGUgLmxpbmstYmxvY2s6Zm9jdXMgLnF1b3RlIHAge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cbiAgLnRlYXNlci1xdW90ZSAudGFnIHtcbiAgICBjb2xvcjogZ3JheTtcbiAgICBtYXJnaW46IDAgMCAuMjVlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtc2l6ZTogMC44MzMzM2VtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7IH1cbiAgLnRlYXNlci1xdW90ZSAucXVvdGUge1xuICAgIG1hcmdpbjogMDsgfVxuICAgIC50ZWFzZXItcXVvdGUgLnF1b3RlIHAge1xuICAgICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICAgIGZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBzZXJpZjtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICBtYXJnaW46IC4yNWVtIDAgLjc1ZW07IH1cbiAgICAudGVhc2VyLXF1b3RlIC5xdW90ZSAubmFtZSB7XG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7IH1cbiAgICAgIC50ZWFzZXItcXVvdGUgLnF1b3RlIC5uYW1lOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiLSBcIjsgfVxuXG4uaGVybyAudGl0bGUsIC5oZXJvLS1pbWcgLnRpdGxlLCAuY2FtcGFpZ24tc21zIC50aXRsZSwgLmhlcm8tLXZpZGVvIC50aXRsZSB7XG4gIGZvbnQtc2l6ZTogMS43NWVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IDMycHg7XG4gIG1hcmdpbi1ib3R0b206IDMycHg7XG4gIGNsZWFyOiBub25lOyB9XG4gIEBtZWRpYSAgKG1pbi13aWR0aDogMzRlbSkge1xuICAgIC5oZXJvIC50aXRsZSwgLmhlcm8tLWltZyAudGl0bGUsIC5jYW1wYWlnbi1zbXMgLnRpdGxlLCAuaGVyby0tdmlkZW8gLnRpdGxlIHtcbiAgICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgICAgbWFyZ2luLXRvcDogNjRweDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDY0cHg7IH0gfVxuXG4uaGVyby0taW1nIC50aXRsZSwgLmNhbXBhaWduLXNtcyAudGl0bGUsIC5oZXJvLS12aWRlbyAudGl0bGUge1xuICBtYXJnaW4tdG9wOiA4cHg7IH1cbiAgQG1lZGlhICAobWluLXdpZHRoOiAzNGVtKSB7XG4gICAgLmhlcm8tLWltZyAudGl0bGUsIC5jYW1wYWlnbi1zbXMgLnRpdGxlLCAuaGVyby0tdmlkZW8gLnRpdGxlIHtcbiAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNnB4OyB9IH1cblxuLmhlcm8tLWltZywgLmNhbXBhaWduLXNtcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICBAbWVkaWEgIChtaW4td2lkdGg6IDM0ZW0pIHtcbiAgICAuaGVyby0taW1nOmJlZm9yZSwgLmNhbXBhaWduLXNtczpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgICAgIHotaW5kZXg6IDU7IH0gfVxuICAuaGVyby0taW1nIC50ZXh0LXdyYXAsIC5jYW1wYWlnbi1zbXMgLnRleHQtd3JhcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gICAgQG1lZGlhICAobWluLXdpZHRoOiAzNGVtKSB7XG4gICAgICAuaGVyby0taW1nIC50ZXh0LXdyYXAsIC5jYW1wYWlnbi1zbXMgLnRleHQtd3JhcCB7XG4gICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgICBwYWRkaW5nOiA2NHB4IDEwJTtcbiAgICAgICAgY29sb3I6ICNmZmY7IH0gfVxuICAuaGVyby0taW1nIC50aXRsZSwgLmNhbXBhaWduLXNtcyAudGl0bGUge1xuICAgIGNvbG9yOiBpbmhlcml0OyB9XG4gIEBtZWRpYSAgKG1pbi13aWR0aDogMzRlbSkge1xuICAgIC5oZXJvLS1pbWcgaW1nLCAuY2FtcGFpZ24tc21zIGltZyB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdG9wOiAwO1xuICAgICAgd2lkdGg6IDEwMCU7IH0gfVxuXG5AbWVkaWEgIChtaW4td2lkdGg6IDQ3ZW0pIHtcbiAgLmhlcm8tLXZpZGVvIC52aWRlbywgLmhlcm8tLXZpZGVvIC52aWRlby0tbGFyZ2Uge1xuICAgIHdpZHRoOiA0MCU7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7IH0gfVxuQG1lZGlhICAobWluLXdpZHRoOiA0N2VtKSB7XG4gIC5oZXJvLS12aWRlbyAudGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NWVtO1xuICAgIHdpZHRoOiA0OC41NzE0MyU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyLjg1NzE0JTsgfSB9XG5cbi8qKlxuICogTmV3c2xldHRlciBzaWdudXBcbiAqL1xuLnNpZ251cC1uZXdzbGV0dGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkODZiMTtcbiAgcGFkZGluZzogMTZweCA4cHg7XG4gIGNvbG9yOiB3aGl0ZTsgfVxuICAjY29udGVudCAuc2lnbnVwLW5ld3NsZXR0ZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAgIEBtZWRpYSAgKG1pbi13aWR0aDogNDdlbSkge1xuICAgICAgI2NvbnRlbnQgLnNpZ251cC1uZXdzbGV0dGVyIHtcbiAgICAgICAgcGFkZGluZzogMzJweCAxNSU7IH0gfVxuICAuc2lnbnVwLW5ld3NsZXR0ZXIgLnRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0OyB9XG4gICAgQG1lZGlhICAobWluLXdpZHRoOiA0N2VtKSB7XG4gICAgICAuc2lnbnVwLW5ld3NsZXR0ZXIgLnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjc1ZW07IH0gfVxuICAuc2lnbnVwLW5ld3NsZXR0ZXIgLmRlc2Mge1xuICAgIGZvbnQtc2l6ZTogMS4xNjY2N2VtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7IH1cbiAgICAuc2lnbnVwLW5ld3NsZXR0ZXIgLmRlc2MgcCB7XG4gICAgICBtYXJnaW46IDEuMmVtIDAgMDsgfVxuICAgIEBtZWRpYSAgKG1pbi13aWR0aDogNDdlbSkge1xuICAgICAgI2NvbnRlbnQgLnNpZ251cC1uZXdzbGV0dGVyIC5kZXNjIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjE2NjY3ZW07IH0gfVxuICAuc2lnbnVwLW5ld3NsZXR0ZXIgLmZvcm0ge1xuICAgIG1hcmdpbi10b3A6IDFlbTsgfVxuICAgIC5zaWdudXAtbmV3c2xldHRlciAuZm9ybSAuaW5wdXQsIC5zaWdudXAtbmV3c2xldHRlciAuZm9ybSAuYnRuLS1jdGEsIC5zaWdudXAtbmV3c2xldHRlciAuZm9ybSAuYnRuIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAwOyB9XG4gICAgLnNpZ251cC1uZXdzbGV0dGVyIC5mb3JtIC5pbnB1dCB7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDhweDsgfVxuICAgICAgQG1lZGlhICAobWluLXdpZHRoOiA0N2VtKSB7XG4gICAgICAgICNjb250ZW50IC5zaWdudXAtbmV3c2xldHRlciAuZm9ybSAuaW5wdXQge1xuICAgICAgICAgIHdpZHRoOiA3MCU7XG4gICAgICAgICAgZmxvYXQ6IGxlZnQ7IH0gfVxuICAgIEBtZWRpYSAgKG1pbi13aWR0aDogNDdlbSkge1xuICAgICAgI2NvbnRlbnQgLnNpZ251cC1uZXdzbGV0dGVyIC5mb3JtIC5idG4tLWN0YSwgI2NvbnRlbnQgLnNpZ251cC1uZXdzbGV0dGVyIC5mb3JtIC5idG4ge1xuICAgICAgICB3aWR0aDogMzAlO1xuICAgICAgICBmbG9hdDogbGVmdDsgfSB9XG4gIC5zaWdudXAtbmV3c2xldHRlciAubm90ZSB7XG4gICAgbWFyZ2luOiAuNWVtIDAgMDtcbiAgICBmb250LXNpemU6IDAuODMzMzNlbTtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOyB9XG5cbi5jYW1wYWlnbi1zbXMge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLnNpZGViYXJzIC5jYW1wYWlnbi1zbXMge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgLmNhbXBhaWduLXNtcyAudGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LWFsaWduOiBpbmhlcml0OyB9XG4gICAgLnNpZGViYXJzIC5jYW1wYWlnbi1zbXMgLnRpdGxlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07IH1cbiAgLmNhbXBhaWduLXNtcyAubm90ZSB7XG4gICAgbWFyZ2luOiAxZW0gMCAwO1xuICAgIGZvbnQtc2l6ZTogMS4xNjY2N2VtOyB9XG4gICAgQG1lZGlhICAobWluLXdpZHRoOiAzNGVtKSB7XG4gICAgICAuY2FtcGFpZ24tc21zIC5ub3RlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IC41ZW0gMmVtOyB9IH1cblxuIiwiLy8gU2V0IGdsb2JhbCBib3ggc2l6aW5nIChTdXN5IG1peGluKVxuLy8gQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCk7XG5cbi8qISBub3JtYWxpemUuY3NzIHYzLjAuMiB8IE1JVCBMaWNlbnNlIHwgZ2l0LmlvL25vcm1hbGl6ZSAqL1xuXG4vKipcbiAqIDEuIFNldCBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuXG4gKiAyLiBQcmV2ZW50IGlPUyB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZSwgd2l0aG91dCBkaXNhYmxpbmdcbiAqICAgIHVzZXIgem9vbS5cbiAqL1xuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8qIDEgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLlxuICovXG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8qIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGFueSBIVE1MNSBlbGVtZW50IGluIElFIDgvOS5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4gKiBhbmQgRmlyZWZveC5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgbWFpbmAgaW4gSUUgMTEuXG4gKi9cblxuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cbiAqIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvKiAyICovXG59XG5cbi8qKlxuICogUHJldmVudCBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy5cbiAqIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuXG4gKi9cblxuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cbiAqL1xuXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogTGlua3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgd2hlbiBmb2N1c2VkIGFuZCBhbHNvIG1vdXNlIGhvdmVyZWQgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmE6YWN0aXZlLFxuYTpob3ZlciB7XG4gIG91dGxpbmU6IDA7XG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKi9cblxuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgdmFyaWFibGUgYGgxYCBmb250LXNpemUgYW5kIG1hcmdpbiB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWBcbiAqIGNvbnRleHRzIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuXG4gKi9cblxubWFyayB7XG4gIGJhY2tncm91bmQ6ICNmZjA7XG4gIGNvbG9yOiAjMDAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgYWZmZWN0aW5nIGBsaW5lLWhlaWdodGAgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkvMTAuXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyOiAwO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi8qKlxuICogQ29ycmVjdCBvdmVyZmxvdyBub3QgaGlkZGVuIGluIElFIDkvMTAvMTEuXG4gKi9cblxuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpLlxuICovXG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMWVtIDQwcHg7XG59XG5cbi8qKlxuICogQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxuICovXG5cbmhyIHtcbiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIGhlaWdodDogMDtcbn1cblxuLyoqXG4gKiBDb250YWluIG92ZXJmbG93IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5wcmUge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiBBZGRyZXNzIG9kZCBgZW1gLXVuaXQgZm9udCBzaXplIHJlbmRlcmluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBLbm93biBsaW1pdGF0aW9uOiBieSBkZWZhdWx0LCBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYIGFsbG93IHZlcnkgbGltaXRlZFxuICogc3R5bGluZyBvZiBgc2VsZWN0YCwgdW5sZXNzIGEgYGJvcmRlcmAgcHJvcGVydHkgaXMgc2V0LlxuICovXG5cbi8qKlxuICogMS4gQ29ycmVjdCBjb2xvciBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXG4gKiAyLiBDb3JyZWN0IGZvbnQgcHJvcGVydGllcyBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xuICBtYXJnaW46IDA7IC8qIDMgKi9cbn1cblxuLyoqXG4gKiBBZGRyZXNzIGBvdmVyZmxvd2Agc2V0IHRvIGBoaWRkZW5gIGluIElFIDgvOS8xMC8xMS5cbiAqL1xuXG5idXR0b24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBgdGV4dC10cmFuc2Zvcm1gIGluaGVyaXRhbmNlIGZvciBgYnV0dG9uYCBhbmQgYHNlbGVjdGAuXG4gKiBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLlxuICogQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4LzkvMTAvMTEsIGFuZCBPcGVyYS5cbiAqIENvcnJlY3QgYHNlbGVjdGAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxuICogICAgYW5kIGB2aWRlb2AgY29udHJvbHMuXG4gKiAyLiBDb3JyZWN0IGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgYGlucHV0YCB0eXBlcyBpbiBpT1MuXG4gKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxuICogICAgYGlucHV0YCBhbmQgb3RoZXJzLlxuICovXG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSwgLyogMSAqL1xuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAyICovXG4gIGN1cnNvcjogcG9pbnRlcjsgLyogMyAqL1xufVxuXG4vKipcbiAqIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuXG4gKi9cblxuYnV0dG9uW2Rpc2FibGVkXSxcbmh0bWwgaW5wdXRbZGlzYWJsZWRdIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluXG4gKiB0aGUgVUEgc3R5bGVzaGVldC5cbiAqL1xuXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi8qKlxuICogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxuICogRmlyZWZveCdzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgcmVzcGVjdCBib3gtc2l6aW5nLCBwYWRkaW5nLCBvciB3aWR0aC5cbiAqXG4gKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxuICogMi4gUmVtb3ZlIGV4Y2VzcyBwYWRkaW5nIGluIElFIDgvOS8xMC5cbiAqL1xuXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxuICogYGZvbnQtc2l6ZWAgdmFsdWVzIG9mIHRoZSBgaW5wdXRgLCBpdCBjYXVzZXMgdGhlIGN1cnNvciBzdHlsZSBvZiB0aGVcbiAqIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cbiAqL1xuXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWVcbiAqICAgIChpbmNsdWRlIGAtbW96YCB0byBmdXR1cmUtcHJvb2YpLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAyICovXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xufVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgYW5kIENocm9tZSBvbiBPUyBYLlxuICogU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xuICogcGFkZGluZyAoYW5kIGB0ZXh0ZmllbGRgIGFwcGVhcmFuY2UpLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIERlZmluZSBjb25zaXN0ZW50IGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZy5cbiAqL1xuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXG4gKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gKi9cblxubGVnZW5kIHtcbiAgYm9yZGVyOiAwOyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLlxuICovXG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogRG9uJ3QgaW5oZXJpdCB0aGUgYGZvbnQtd2VpZ2h0YCAoYXBwbGllZCBieSBhIHJ1bGUgYWJvdmUpLlxuICogTk9URTogdGhlIGRlZmF1bHQgY2Fubm90IHNhZmVseSBiZSBjaGFuZ2VkIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFguXG4gKi9cblxub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyogVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSBtb3N0IHNwYWNpbmcgYmV0d2VlbiB0YWJsZSBjZWxscy5cbiAqL1xuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xufVxuXG50ZCxcbnRoIHtcbiAgcGFkZGluZzogMDtcbn1cbiIsIi5zZWN0aW9uLXRpdGxlIHtcbiAgZm9udC1zaXplOiBlbSgkaDUpO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBtYXJnaW4tYm90dG9tOiAkc3BhY2UtdHdvLXRoaXJkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxldHRlci1zcGFjaW5nOiAtLjA0ZW07XG4gIGZvbnQtd2VpZ2h0OiAkZnctYm9sZDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1sYXJnZSkge1xuICAgIGZvbnQtc2l6ZTogZW0oJGg0KTtcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2UtaGFsZjtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG59XG5cbi5zZWN0aW9uLXJvdyBwIHtcbiAgbWFyZ2luLXRvcDogMDsgLy8gQ291bGQgbWF5YmUgZ28gZ2xvYmFsbHksIGJ1dCB3aXRoaW4gc2VjdGlvbi1yb3cgZm9yIG5vd1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBGZWF0dXJlc1xuJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYTogICAgICBhbGwgIWRlZmF1bHQ7XG4kYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmU6ICAgIG1pbi13aWR0aCAhZGVmYXVsdDtcbiRicmVha3BvaW50LWRlZmF1bHQtcGFpcjogICAgICAgd2lkdGggIWRlZmF1bHQ7XG5cbi8vIERlZmF1bHQgVHJhbnNmb3Jtc1xuJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsOiAgICBmYWxzZSAhZGVmYXVsdDtcbiRicmVha3BvaW50LXRvLWVtczogICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYnJlYWtwb2ludC1yZXNvbHV0aW9uczogICAgICAgIHRydWUgIWRlZmF1bHQ7XG5cbi8vIERlZmF1bHQgTm8gUXVlcnkgT3B0aW9uc1xuJGJyZWFrcG9pbnQtbm8tcXVlcmllczogICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIERlZnRhdWx0IEJhc2UgRm9udCBTaXplXG4kYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZTogICAgIDE2cHggIWRlZmF1bHQ7XG5cbi8vIExlZ2FjeSBTeW50YXggU3VwcG9ydFxuJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheDogICAgICBmYWxzZSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvY29udGV4dCc7XG5AaW1wb3J0ICdicmVha3BvaW50L2hlbHBlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9wYXJzZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvbm8tcXVlcnknO1xuXG5AaW1wb3J0ICdicmVha3BvaW50L3Jlc3BvbmQtdG8nO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgLy8gUmVzZXQgY29udGV4dHNcbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG5cbiAgJGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQoJHF1ZXJ5LCBmYWxzZSk7XG5cbiAgJHF1ZXJ5LXN0cmluZzogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5Jyk7XG4gICRxdWVyeS1mYWxsYmFjazogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2ZhbGxiYWNrJyk7XG5cbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2NvbnRleHQgaG9sZGVyJykgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5IGNvdW50JykgIWdsb2JhbDtcblxuICAvLyBBbGxvdyBmb3IgYW4gYXMtbmVlZGVkIG92ZXJyaWRlIG9yIHVzYWdlIG9mIG5vIHF1ZXJ5IGZhbGxiYWNrLlxuICBAaWYgJG5vLXF1ZXJ5ICE9IGZhbHNlIHtcbiAgICAkcXVlcnktZmFsbGJhY2s6ICRuby1xdWVyeTtcbiAgfVxuXG4gIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gIH1cblxuICAvLyBQcmludCBPdXQgUXVlcnkgU3RyaW5nXG4gIEBpZiBub3QgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyB7XG4gICAgQG1lZGlhICN7JHF1ZXJ5LXN0cmluZ30ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBmYWxzZSBvciAkYnJlYWtwb2ludC1uby1xdWVyaWVzID09IHRydWUge1xuXG4gICAgJHR5cGU6IHR5cGUtb2YoJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzKTtcbiAgICAkcHJpbnQ6IGZhbHNlO1xuXG4gICAgQGlmICgkdHlwZSA9PSAnYm9vbCcpIHtcbiAgICAgICRwcmludDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyB7XG4gICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdsaXN0Jykge1xuICAgICAgQGVhY2ggJHdyYXBwZXIgaW4gJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzIHtcbiAgICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkd3JhcHBlciB7XG4gICAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgRmFsbGJhY2tcbiAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkgYW5kICgkcHJpbnQgPT0gdHJ1ZSkge1xuICAgICAgJHR5cGUtZmFsbGJhY2s6IHR5cGUtb2YoJHF1ZXJ5LWZhbGxiYWNrKTtcblxuICAgICAgQGlmICgkdHlwZS1mYWxsYmFjayAhPSAnYm9vbCcpIHtcbiAgICAgICAgI3skcXVlcnktZmFsbGJhY2t9ICYge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xufVxuXG5cbkBtaXhpbiBtcSgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIuY29udGFpbmVyIHtcbiAgcGFkZGluZy1yaWdodDogZ3V0dGVyKCkgKiAuNSAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWxlZnQ6IGd1dHRlcigpICogLjUgIWltcG9ydGFudDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1zbWFsbCkge1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lcig2MjBweCk7XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KDYyMHB4ICsgNDBweCkge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLW1lZGl1bSkge1xuICAgIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0LW1lZGl1bSk7XG4gIH0gXG59IiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIuZ3JpZCB7XG4gIEBleHRlbmQgJWNsZWFyZml4O1xuXG4gIC5ncmlkLWl0ZW0gKyAuZ3JpZC1pdGVtIHtcbiAgICBtYXJnaW4tdG9wOiBndXR0ZXIoKTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLW1lZGl1bSkge1xuICAgICAgbWFyZ2luLXRvcDogZ3V0dGVyKCRsYXlvdXQtbWVkaXVtKTtcbiAgICB9XG4gIH1cbn1cblxuLypkb2Ncbi0tLVxudGl0bGU6IEdyaWQgdGhyZWVcbm5hbWU6IGdyaWQtdGhyZWVcbmNhdGVnb3J5OiBDb250YWluZXJcbiAgLSBHcmlkXG4tLS1cblxuR29lcyBmcm9tIG9uZSBgZ3JpZC1pdGVtYCBvbiBzbWFsbCBzY3JlZW5zIHRvIHRocmVlIGBncmlkLWl0ZW1gJ3Mgb24gbGFyZ2VyIHNjcmVlbnNcblxuQ2xhc3MgfCBEZXNjcmlwdGlvblxuOi0tIHwgOi0tXG5gZ3JpZC0tdGhyZWVgIHwgVXNlZCBvbiBwYXJlbnQgZWxlbWVudFxuYGdyaWQtaXRlbWAgfCBVc2VkIG9uIGVhY2ggaW5kaXZpZHVhbCBjaGlsZCBlbGVtZW50IG9mIGBncmlkLS10aHJlZWBcblxuYGBgaHRtbF9leGFtcGxlXG48ZGl2IGNsYXNzPVwiZ3JpZC0tdGhyZWVcIj5cbiAgPGRpdiBjbGFzcz1cImdyaWQtaXRlbVwiPkdyaWQgY29sdW1uIDEuIEV4YW1wbGUgdGV4dCB0byBzaG93IGhvdyB0aGUgY29sdW5zIGJyZWFrcyBvbiBzbWFsbGVyIHNjcmVlbnMuPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJncmlkLWl0ZW1cIj5HcmlkIGNvbHVtbiAyLiBFeGFtcGxlIHRleHQgdG8gc2hvdyBob3cgdGhlIGNvbHVucyBicmVha3Mgb24gc21hbGxlciBzY3JlZW5zLjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZ3JpZC1pdGVtXCI+R3JpZCBjb2x1bW4gMy4gRXhhbXBsZSB0ZXh0IHRvIHNob3cgaG93IHRoZSBjb2x1bnMgYnJlYWtzIG9uIHNtYWxsZXIgc2NyZWVucy48L2Rpdj5cbjwvZGl2PlxuXG5gYGBcbiovXG5cbi5ncmlkLS10aHJlZSB7XG4gIEBleHRlbmQgLmdyaWQ7XG5cbiAgLmdyaWQtaXRlbSB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1zbWFsbCAkYnJlYWstbWVkaXVtKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDQpO1xuICAgICAgQGluY2x1ZGUgcHVzaCgxKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1tZWRpdW0pIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oNCAkbGF5b3V0LW1lZGl1bSk7XG4gICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgICBcbiAgICAgICY6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLmdyaWQtLXN0YWNrIHtcbiAgQGV4dGVuZCAuZ3JpZDtcbn1cblxuLmdyaWQtLXR3by1vbmUge1xuICBAZXh0ZW5kIC5ncmlkO1xuXG4gIC5ncmlkLWl0ZW0ge1xuICAgICsgLmdyaWQtaXRlbSB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1zbWFsbCkge1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstc21hbGwpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig0KVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1tZWRpdW0pIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig3ICRsYXlvdXQtbWVkaXVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstc21hbGwpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIGxhc3QpO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1tZWRpdW0pIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1ICRsYXlvdXQtbWVkaXVtIGxhc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi5nYWxsZXJ5IHtcbiAgLmdyaWQtaXRlbSB7XG4gICAgbWFyZ2luLWJvdHRvbTogZ3V0dGVyKCRsYXlvdXQtbWVkaXVtKTtcbiAgfVxufVxuXG4uZ2FsbGVyeS0tZm91ciB7XG4gIEBleHRlbmQgLmdhbGxlcnk7XG5cbiAgLmdyaWQtaXRlbSB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay14c21hbGwpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMyk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstbWVkaXVtKSB7XG4gICAgICBAaW5jbHVkZSBnYWxsZXJ5KDMgJGxheW91dC1tZWRpdW0pO1xuICAgIH1cbiAgfVxufVxuXG4uZ2FsbGVyeS0tc2l4IHtcbiAgQGV4dGVuZCAuZ2FsbGVyeTtcblxuICAuZ3JpZC1pdGVtIHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLXhzbWFsbCkge1xuICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgzKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1zbWFsbCkge1xuICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1tZWRpdW0pIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMiAkbGF5b3V0LW1lZGl1bSk7XG4gICAgfVxuICB9XG59XG5cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qZG9jXG4tLS1cbnRpdGxlOiBIaWRlIGVsZW1lbnRzXG5uYW1lOiBoaWRlLWVsZW1lbnRzXG5jYXRlZ29yeTogRWxlbWVudFxuICAtIEhlbHBlciBjbGFzc1xuLS0tXG5cbkRpZmZlcmVudCB3YXlzIHRvIGhpZGUgZWxlbWVudHMuXG5cbmBgYGh0bWxfZXhhbXBsZVxuPGEgaHJlZj1cIlwiIGNsYXNzPVwidmlzdWFsbHloaWRkZW5cIj5FeGFtcGxlIGhpZGRlbiBsaW5rPC9hPlxuPGEgaHJlZj1cIlwiIGNsYXNzPVwidmlzdWFsbHloaWRkZW4gZm9jdXNhYmxlXCI+RXhhbXBsZSBoaWRkZW4gbGluazwvYT5cbjxhIGhyZWY9XCJcIiBjbGFzcz1cImludmlzaWJsZVwiPkV4YW1wbGUgaGlkZGVuIGxpbms8L2E+XG5gYGBcblxuQ2xhc3MgbmFtZSB8IENvbW1lbnRcbjotLS18Oi0tLVxuYHZpc3VhbGx5aGlkZGVuYCB8IFZpc3VhbGx5IGhpZGUgZWxlbWVudHMsIGJ1dCBoYXZlIHRoZW0gYXZhaWxhYmxlIGZvciBzY3JlZW4gcmVhZGVycy5cbmBmb2N1c2FibGVgIHwgQnkgYWxzbyBhZGRpbmcgdGhpcywgYSBsaW5rIHdvdWxkIGJlIHNob3duIG9uIGZvY3VzLlxuYGludmlzaWJsZWAgfCBIaWRlIHZpc3VhbGx5IGFuZCBmcm9tIHNjcmVlbnJlYWRlcnMsIGJ1dCBtYWludGFpbiBsYXlvdXQuXG4qL1xuXG5cbi8vIFZpc2FiaWxpdHlcbi8vIEhpZGUgb25seSB2aXN1YWxseSwgYnV0IGhhdmUgaXQgYXZhaWxhYmxlIGZvciBzY3JlZW5yZWFkZXJzOiBoNWJwLmNvbS92XG4udmlzdWFsbHloaWRkZW4ge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcblxuICAvLyBFeHRlbmRzIHRoZSAudmlzdWFsbHloaWRkZW4gY2xhc3MgdG8gYWxsb3cgdGhlIGVsZW1lbnQgdG8gYmUgZm9jdXNhYmxlXG4gIC8vIHdoZW4gbmF2aWdhdGVkIHRvIHZpYSB0aGUga2V5Ym9hcmQ6IGg1YnAuY29tL3BcbiAgJi5mb2N1c2FibGU6YWN0aXZlLFxuICAmLmZvY3VzYWJsZTpmb2N1cyB7XG4gICAgICBjbGlwOiBhdXRvO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgd2lkdGg6IGF1dG87XG4gIH1cbn1cblxuLmludmlzaWJsZSB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuXG5cbi8qZG9jXG4tLS1cbnRpdGxlOiBDbGVhcmZpeFxubmFtZTogY2xlYXJmaXhcbmNhdGVnb3J5OiBFbGVtZW50XG4gIC0gSGVscGVyIGNsYXNzXG4tLS1cblxuYGNsZWFyZml4YCBjYW4gYmUgYXBwbGllZCBvbiBhIGNvbnRhaW5lciB0aGF0IGJyZWFrcyBiZWNhdXNlIG9mIGZsb2F0aW5nIGVsZW1lbnRzIGluc2lkZSBpdC4gXG5cbmBgYGh0bWxfZXhhbXBsZVxuPGRpdiBjbGFzcz1cImNsZWFyZml4XCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCBibGFjaztcIj5cbiAgPGltZyBzcmM9XCJodHRwOi8vcGxhY2Vob2xkLml0LzIwMHgzMDBcIiBhbHQ9XCJcIiBzdHlsZT1cImZsb2F0OiByaWdodDtcIj5cbjwvZGl2PlxuYGBgXG4qL1xuXG4lY2xlYXJmaXgge1xuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCIgXCI7XG4gICAgZGlzcGxheTogdGFibGU7IFxuICB9XG5cbiAgJjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbn1cblxuLmNsZWFyZml4IHtcbiAgQGV4dGVuZCAlY2xlYXJmaXg7XG59XG5cbi8qZG9jXG4tLS1cbnRpdGxlOiBBbGlnbm1lbnRcbm5hbWU6IGFsaWdubWVudFxuY2F0ZWdvcnk6IEVsZW1lbnRcbiAgLSBIZWxwZXIgY2xhc3Ncbi0tLVxuXG5EZXNjcmlwdGlvbi5cblxuYGBgaHRtbF9leGFtcGxlXG48cD5FeGFtcGxlPC9wPlxuYGBgXG4qL1xuXG4ubGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5yaWdodCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4vKmRvY1xuLS0tXG50aXRsZTogQm94IGRpc3BsYXlcbm5hbWU6IGJsb2NrLWRpc3BsYXlcbmNhdGVnb3J5OiBFbGVtZW50XG4gIC0gSGVscGVyIGNsYXNzXG4tLS1cblxuSGVscGVyIGNsYXNzIHRvIGNoYW5nZSBhIGRlZmF1bHQgaW5saW5lIGVsZW1lbnQgdG8gYSBibG9jayBlbGVtZW50LCBvciB0aGUgb3RoZXIgd2F5IGFycm91bmQuIElsbHVzdHJhdGVkIGluIHRoZSBleGFtcGxlIHdoZXJlIGEgbGFiZWwgY2hhbmdlcyBmcm9tIGlubGluZSB0byBibG9jayB3aGVuIGFkZGluZyB0aGUgY2xhc3MgYGJsb2NrYC5cblxuYGBgaHRtbF9leGFtcGxlXG48bGFiZWwgZm9yPVwiZXhhbXBsZS1pbmxpbmVcIj5JbmxpbmUgbGFiZWwgPHNtYWxsPihkZWZhdWx0KTwvc21hbGw+PC9sYWJlbD5cbjxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiZXhhbXBsZS1pbmxpbmVcIj5cblxuPGxhYmVsIGZvcj1cImV4YW1wbGUtYmxvY2tcIiBjbGFzcz1cImJsb2NrXCI+QmxvY2sgbGFiZWw8L2xhYmVsPlxuPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJleGFtcGxlLWJsb2NrXCI+XG5gYGBcblxuQ2xhc3MgbmFtZSB8IENvbW1lbnQgXG46LS0tIHwgOi0tLVxuYGJsb2NrYCB8IENoYW5nZSBkaXNwbGF5IHRvIGJsb2NrXG5gaW5saW5lYCB8IENoYW5nZSBkaXNwbGF5IHRvIGlubGluZVxuXG4qL1xuXG4uYmxvY2sge1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xufVxuXG4uaW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG59XG5cblxuLypkb2Ncbi0tLVxudGl0bGU6IFNwYWNlXG5uYW1lOiBzcGFjZVxuY2F0ZWdvcnk6IEVsZW1lbnRcbiAgLSBIZWxwZXIgY2xhc3Ncbi0tLVxuXG5BZGQgc3BhY2UgdG8gYSBlbGVtZW50LiAzMHB4IGFyZSBhZGRlZCBvbiBzbWFsbGVyIHNjcmVlbnMgYW5kIGl0IGV4cGFuZHMgdG8gNjBweCBvbiBsYXJnZXIgc2NyZWVucy4gQSBiYWNrZ3JvdW5kIGlzIGFkZGVkIGluIHRoZSBleGFtcGxlIHRvIGJldHRlciBpbGx1c3RyYXRlIHRoZSBzcGFjZS4gXG5cbkNsYXNzIHwgRGVzY3JpcHRpb25cbjotLS0gfCA6LS0tXG5gc3BhY2UtdG9wYCB8IEFkZCBzcGFjZSBvbiB0b3Agb2YgYSBlbGVtZW50XG5gc3BhY2UtdG9wLWhhbGZgIHwgQWRkIHNwYWNlIG9uIHRvcCwgYnV0IGhhbGYgb2YgYHNwYWNlLXRvcGBcbmBzcGFjZS1ib3R0b21gIHwgQWRkIHNwYWNlIG9uIGJvdHRvbSBvZiBhIGVsZW1lbnRcbmBzcGFjZS1ib3R0b20taGFsZmAgfCBBZGQgaGFsZiBzcGFjZSBvbiBib3R0b20gb2YgYSBlbGVtZW50XG5gc3BhY2UtdG9wLWJvdHRvbWAgfCBBZGQgc3BhY2Ugb24gdG9wIGFuZCBib3R0b20gb2YgYSBlbGVtZW50XG5cbmBgYGh0bWxfZXhhbXBsZVxuPGRpdiBjbGFzcz1cImNvbnRhaW5lciBzcGFjZS10b3AgYmctbGlnaHRcIj5cbiAgPHA+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlwaXNjaW5nIGVsaXQuIE1vcmJpIGNvbW1vZG8sIGlwc3VtIHNlZCBwaGFyZXRyYSBncmF2aWRhLCBvcmNpIG1hZ25hIHJob25jdXMgbmVxdWUsIGlkIHB1bHZpbmFyIG9kaW8gbG9yZW0gbm9uIHR1cnBpcy4gTnVsbGFtIHNpdCBhbWV0IGVuaW0uIFN1c3BlbmRpc3NlIGlkIHZlbGl0IHZpdGFlIGxpZ3VsYSB2b2x1dHBhdCBjb25kaW1lbnR1bS4gQWxpcXVhbSBlcmF0IHZvbHV0cGF0LjwvcD5cbjwvZGl2PiAgXG5gYGBcbiovXG5cbi5zcGFjZS0ge1xuICAmdG9wIHtcbiAgICBwYWRkaW5nLXRvcDogJHNwYWNlO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstbGFyZ2UpIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkc3BhY2UtZG91YmxlO1xuICAgIH0gIFxuICB9XG5cbiAgJnRvcC1oYWxmIHtcbiAgICBwYWRkaW5nLXRvcDogJHNwYWNlLWhhbGY7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1sYXJnZSkge1xuICAgICAgcGFkZGluZy10b3A6ICRzcGFjZTtcbiAgICB9ICBcbiAgfVxufVxuXG4uc3BhY2UtIHtcbiAgJmJvdHRvbSB7XG4gICAgcGFkZGluZy1ib3R0b206ICRzcGFjZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLWxhcmdlKSB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHNwYWNlLWRvdWJsZTtcbiAgICB9ICBcbiAgfVxuXG4gICZib3R0b20taGFsZiB7XG4gICAgcGFkZGluZy1ib3R0b206ICRzcGFjZS1oYWxmO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstbGFyZ2UpIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkc3BhY2U7XG4gICAgfSBcbiAgfVxufVxuXG4uc3BhY2UtdG9wLWJvdHRvbSB7XG4gIHBhZGRpbmctdG9wOiAkc3BhY2U7XG4gIHBhZGRpbmctYm90dG9tOiAkc3BhY2U7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstbGFyZ2UpIHtcbiAgICBwYWRkaW5nLXRvcDogJHNwYWNlLWRvdWJsZTtcbiAgICBwYWRkaW5nLWJvdHRvbTogJHNwYWNlLWRvdWJsZTtcbiAgfSAgXG59XG5cbi8qZG9jXG4tLS1cbnRpdGxlOiBOby1zcGFjZVxubmFtZTogbm8tc3BhY2VcbmNhdGVnb3J5OiBFbGVtZW50XG4gIC0gSGVscGVyIGNsYXNzXG4tLS1cblxuUmVtb3ZlIHNwYWNlIG9uIGEgZWxlbWVudC5cblxuQ2xhc3MgfCBEZXNjcmlwdGlvblxuOi0tIHwgOi0tXG5gbm9zcGFjZWAgfCBSZW1vdmUgc3BhY2UgYXJyb3VuZCBhbGwgZWRnZXMgb2YgYSBlbGVtZW50XG5gbm9zcGFjZS10b3BgIHwgUmVtb3ZlIHNwYWNlIG9uIHRvcCBvZiBhIGVsZW1lbnRcbmBub3NwYWNlLWJvdHRvbWAgfCBSZW1vdmUgc3BhY2Ugb24gYm90dG9tIG9mIGEgZWxlbWVudFxuXG4qL1xuXG5cbi5ub3NwYWNlIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4ubm9zcGFjZS10b3Age1xuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4ubm9zcGFjZS1ib3R0b20ge1xuICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuXG4ubGluay1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufSIsIi8vIENvbG9yc1xuLy8gPT09PT09XG5cbiRibGFjay0xMDogZGFya2VuKCNmZmYsIDEwJSk7XG4kYmxhY2stMjA6IGRhcmtlbigjZmZmLCAyMCUpO1xuJGJsYWNrLTMwOiBkYXJrZW4oI2ZmZiwgMzAlKTtcbiRibGFjay00MDogZGFya2VuKCNmZmYsIDQwJSk7XG4kYmxhY2stNTA6IGRhcmtlbigjZmZmLCA1MCUpO1xuJGJsYWNrLTYwOiBkYXJrZW4oI2ZmZiwgNjAlKTtcbiRibGFjay03MDogZGFya2VuKCNmZmYsIDcwJSk7XG4kYmxhY2stODA6IGRhcmtlbigjZmZmLCA4MCUpO1xuJGJsYWNrLTkwOiBkYXJrZW4oI2ZmZiwgOTAlKTtcbiR3aGl0ZTogI2ZmZjtcbiRibHVlOiAjMjI5RUQwOyAvLyAjMUQ3NkJDXG4kYmx1ZS1kYXJrOiAjNDc3M0I5O1xuJGJsdWUtbGlnaHQ6ICM2NkEyREM7XG4vLyBCYXNlIE1lYXN1cmVtZW50IFVuaXRcbi8vICRiYXNlLXVuaXQ6IDZweDtcblxuLy8gVHlwb2dyYXBoeSBWYXJpYWJsZXNcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbiRiYXNlZm9udDogMTI7XG4kaDE6IDI0O1xuJGgxLW5hcnJvdzogMjE7XG4kaDI6IDIxO1xuJGgzOiAxODtcbiRoNDogMTQ7XG4kaDU6IDEyO1xuJGg2OiAxMDtcbiRiYXNlcDogJGJhc2Vmb250O1xuXG4kbGlnaHQ6IDEwMDtcbiRyZWd1bGFyOiAzMDA7XG4kc2VtaS1ib2xkOiA0MDA7XG4kaGVhdnk6IDcwMDtcbiRibGFjazogOTAwO1xuXG4kbGluZS1oZWlnaHQ6IDEuNTtcblxuJGJvZHktYmc6ICNmZmY7XG4kYm9keS1mb250LWNvbG9yOiAkYmxhY2stODA7XG4kYm9keS1mb250LWZhbWlseTogVmVyZGFuYSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjtcbiRib2R5LWZvbnQtd2VpZ2h0OiA0MDA7XG4kZmYtcHJpbWFyeTogJGJvZHktZm9udC1mYW1pbHk7XG4kZmYtc2Vjb25kYXJ5OiBHZW9yZ2lhLCBzZXJpZjtcblxuLy8gVGhlIGRlZmF1bHQgZm9udC1zaXplIGlzIHNldCB0byAxMDAlIG9mIHRoZSBicm93c2VyIHN0eWxlIHNoZWV0ICh1c3VhbGx5IDE2cHgpXG4vLyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGJyb3dzZXItYmFzZWQgdGV4dCB6b29tIG9yIHVzZXItc2V0IGRlZmF1bHRzLlxuJGJhc2UtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xuXG4vLyBGb250LXNtb290aGluZ1xuJGZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblxuLy8gVGV4dCBkaXJlY3Rpb24gc2V0dGluZ3NcbiR0ZXh0LWRpcmVjdGlvbjogbHRyO1xuXG4vL21hcmdpbnMgJiBwYWRkaW5nXG4vLyAkc3BhY2U6ICgkYmFzZS11bml0ICogMik7XG5cbi8vIExpbmtzXG4kbGluay1jb2xvcjogJGJsYWNrLTcwO1xuJGxpbmstY29sb3ItaG92ZXI6IGRhcmtlbigkbGluay1jb2xvciwgMTUlKTtcblxuLy8gRm9udCB3ZWlnaHRzXG4kZnctbGlnaHQ6IDMwMDtcbiRmdy1yZWd1bGFyOiA0MDA7XG4kZnctYm9sZDogNjAwO1xuXG4vKiBHcmlkIHNldHRpbmdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuJHN1c3k6IChcbiAgY29sdW1uczogNixcbiAgZ3V0dGVyczogLjUsXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICAvLyBkZWJ1ZzogKGltYWdlOiBzaG93KVxuKTtcblxuJGxheW91dC1tZWRpdW06IGxheW91dCgxMiAxLzIgZmFsc2UpOyAvLyAxMiBjb2x1bW5zLCAxLzMgZ3V0dGVyXG5cbi8vIFNwYWNpbmdcbiRzcGFjZTogMTZweDtcbiRzcGFjZS1vbmUtZm91cnRoOiAkc3BhY2UgKiAwLjI1O1xuJHNwYWNlLW9uZS10aGlyZDogJHNwYWNlICogMC4zMzMzMztcbiRzcGFjZS1oYWxmOiAkc3BhY2UgKiAwLjU7XG4kc3BhY2UtdHdvLXRoaXJkOiAkc3BhY2UgKiAwLjY2NjY2O1xuJHNwYWNlLWRvdWJsZTogJHNwYWNlICogMjtcbiRzcGFjZS10cmlwbGU6ICRzcGFjZSAqIDM7XG4kc3BhY2UtcXVhZHJ1cGxlOiAkc3BhY2UgKiA0O1xuXG5cbi8vIEJyZWFrcG9pbnRzXG4kYnJlYWsteHNtYWxsOiAxNmVtOyAvLyA0MDBweFxuJGJyZWFrLXNtYWxsOiAyNmVtOyAvLyA0MDBweFxuJGJyZWFrLW1lZGl1bTogMzRlbTsgXG4kYnJlYWstbGFyZ2U6IDQ3ZW07IFxuJGJyZWFrLXhsYXJnZTogNjRlbTtcbiIsIi5pY29uIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG59XG5cbi5pY29uOmJlZm9yZSB7XG4gICAgY29udGVudDonICc7XG4gICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWcvc3ByaXRlL2V4cG9ydC9zcHJpdGUuc3ZnXCIpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiAyLjEyNWVtIDQuMjVlbTtcbn1cblxuLm5vLXN2ZyAuaWNvbjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9zcHJpdGUvZXhwb3J0L3Nwcml0ZS5wbmdcIik7XG59XG5cbi5pY29uLmljb24tY2hldnJvbi1jaXJjbGUtcmlnaHQtYmx1ZTpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0wLjMxMjVlbSAtMC4zMTI1ZW07XG4gICAgd2lkdGg6IDEuNWVtO1xuICAgIGhlaWdodDogMS41ZW07XG59XG5cbi5pY29uLmljb24tY2hldnJvbi1yaWdodC1ibHVlOmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTAuMzEyNWVtIC0yLjQzNzVlbTtcbiAgICB3aWR0aDogMS41ZW07XG4gICAgaGVpZ2h0OiAxLjVlbTtcbn1cblxuIiwiLmJyZWFkY3J1bWIge1xuICBwYWRkaW5nOiAuNDM3NWVtIC44NzVlbTtcbiAgbWFyZ2luOiAwIDAgMS4xMjVlbTtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgLmRpdmlkZXIge1xuICAgIHBhZGRpbmc6IDAgZW0oNSk7XG4gICAgY29sb3I6ICM5OTk7XG4gIH1cblxufVxuIiwiLmJ0biB7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogLjI1ZW0gMWVtO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5idG4tLWN0YSB7XG4gIEBleHRlbmQgLmJ0bjtcbiAgLy8gYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgJGJsdWUtZGFyaywgJGJsdWUtbGlnaHQpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZTtcbiAgY29sb3I6ICR3aGl0ZTtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kOiBzY2FsZV9jb2xvcigkYmx1ZSwgJGxpZ2h0bmVzczogMTAlKTtcbiAgfVxufSIsIi8vIExvZ29cbi5sb2dvIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbGluZS1oZWlnaHQ6IDcwcHg7XG4gIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZS1pbi1vdXQ7XG4gIFxuICBpbWcge1xuICAgIG1heC13aWR0aDogODBweDtcbiAgICBtYXgtaGVpZ2h0OiA3MHB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cbn1cblxuYS5sb2dvIHtcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpO1xuICB9XG59XG5cbi8vIFZpZGVvXG4udmlkZW8ge1xuICAudGl0bGUge1xuICAgIGZvbnQtc2l6ZTogZW0oJGg0KTtcbiAgICBmb250LXdlaWdodDogJGZ3LWJvbGQ7XG4gICAgbWFyZ2luOiAxZW0gMCAuMjVlbTtcbiAgfVxuXG4gIC5tZXRhIHtcbiAgICBtYXJnaW46IDAgMCAuNzVlbTtcbiAgICBmb250LXNpemU6IGVtKCRoNik7XG4gIH1cbn1cblxuLnZpZGVvLS1sYXJnZSB7XG4gIEBleHRlbmQgLnZpZGVvO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIFxuICAudGl0bGUsXG4gIC5kZXNjIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstbWVkaXVtKSB7XG4gICAgICBtYXgtd2lkdGg6IDk1JTtcbiAgICB9XG4gIH1cblxuICAudGl0bGUge1xuICAgIGNvbG9yOiAjMDAwO1xuICAgIGZvbnQtc2l6ZTogZW0oJGgzKTtcbiAgICBtYXJnaW4tdG9wOiAxZW0gIWltcG9ydGFudDtcbiAgICBtYXJnaW4tYm90dG9tOiAuMjVlbTtcbiAgICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1tZWRpdW0pIHtcbiAgICAgIGZvbnQtc2l6ZTogZW0oJGgyKTtcbiAgICB9XG4gIH1cbiAgLmRlc2Mge1xuICAgIGZvbnQtc2l6ZTogZW0oJGg1KTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstbWVkaXVtKSB7XG4gICAgICBmb250LXNpemU6IGVtKCRoNCk7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgbWFyZ2luLWJvdHRvbTogLjc1ZW07XG4gICAgfVxuICB9XG59IiwiLnNlY3Rpb24tcm93IHtcbiAgQGV4dGVuZCAlY2xlYXJmaXg7XG59XG5cbi5zZWN0aW9uLW1haW4ge1xuICBAZXh0ZW5kICVjbGVhcmZpeDtcbn1cblxuLnNlY3Rpb24tZm9vdGVyIHtcbiAgLy8gQGV4dGVuZCAlY2xlYXJmaXg7XG59XG5cbi5zZWN0aW9uLXJvdyxcbi5maWVsZC10eXBlLWVudGl0eXJlZmVyZW5jZSB7XG4gICsgLnNlY3Rpb24tcm93LFxuICArIC5maWVsZC10eXBlLWVudGl0eXJlZmVyZW5jZSB7XG4gICAgbWFyZ2luLXRvcDogJHNwYWNlO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLW1lZGl1bSkge1xuICAgICAgbWFyZ2luLXRvcDogJHNwYWNlLWRvdWJsZTtcbiAgICB9XG4gIH1cbn0iLCIubGlzdC1hY2NvcmRpb24ge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cblxuICBsaSB7XG4gICAgbGlzdC1zdHlsZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICB9XG5cbiAgPiBsaSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtICFpbXBvcnRhbnQ7XG4gIH1cblxuICB1bCB7XG4gICAgcGFkZGluZy1sZWZ0OiBzcGFuKDIgJGxheW91dC1tZWRpdW0pO1xuICB9XG5cbiAgLnRpdGxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IGVtKCRoNCk7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1ib2xkO1xuICAgIFxuICAgICY6YmVmb3JlIHtcbiAgICAgIEBleHRlbmQgLmljb247XG4gICAgICBAZXh0ZW5kIC5pY29uLWNoZXZyb24tY2lyY2xlLXJpZ2h0LWJsdWU7XG4gICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICBtYXJnaW4tdG9wOiAtMnB4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAuNWVtO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIC4ycztcbiAgICB9XG4gIH1cblxuICAuaXMtb3BlbiB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgIH1cbiAgfVxufSIsIi50ZWFzZXIge1xuICBwIHtcbiAgICBtYXJnaW46IDAgMCAuNzVlbTtcbiAgfVxuXG4gIC5saW5rLWJsb2NrIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgLnRpdGxlIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW1nIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICAudGl0bGUge1xuICAgIGZvbnQtc2l6ZTogZW0oJGg0KTtcbiAgICBmb250LXdlaWdodDogJGZ3LWJvbGQ7XG4gICAgY2xlYXI6IG5vbmU7XG4gICAgbWFyZ2luOiAxZW0gMCAuMjVlbTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLWxhcmdlKSB7XG4gICAgICBmb250LXNpemU6IGVtKCRoMyk7XG4gICAgfVxuICB9XG5cbn1cblxuLnRlYXNlci0tc3RhY2sge1xuICBAZXh0ZW5kIC50ZWFzZXI7XG59XG5cbi50ZWFzZXItLWFkamFjZW50IHtcbiAgQGV4dGVuZCAudGVhc2VyO1xuICBAZXh0ZW5kICVjbGVhcmZpeDtcblxuICBpbWcge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLW1lZGl1bSkge1xuICAgICAgQGluY2x1ZGUgc3Bhbig0ICRsYXlvdXQtbWVkaXVtKTtcbiAgICB9XG4gIH1cbiAgXG4gIC50aXRsZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLW1lZGl1bSkge1xuICAgIC50aXRsZSwgXG4gICAgLmRlc2Mge1xuICAgICAgbWFyZ2luLWxlZnQ6IHNwYW4oNCAkbGF5b3V0LW1lZGl1bSkgKyBndXR0ZXIoJGxheW91dC1tZWRpdW0pO1xuICAgIH1cbiAgfVxuXG59XG5cbi50ZWFzZXItcXVvdGUge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgLmxpbmstYmxvY2sge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICAucXVvdGUgcCB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50YWcge1xuICAgIGNvbG9yOiAkYmxhY2stNTA7XG4gICAgbWFyZ2luOiAwIDAgLjI1ZW07XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6IGVtKCRoNik7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgfVxuXG4gIC5xdW90ZSB7XG4gICAgbWFyZ2luOiAwO1xuXG4gICAgcCB7XG4gICAgICBmb250LXNpemU6IGVtKCRoMyk7XG4gICAgICBmb250LWZhbWlseTogJGZmLXNlY29uZGFyeTtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICBtYXJnaW46IC4yNWVtIDAgLjc1ZW07XG4gICAgfVxuXG4gICAgLm5hbWUge1xuICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuXG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiLSBcIjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCIuaGVybyB7XG4gIC50aXRsZSB7XG4gICAgZm9udC1zaXplOiBlbSgkaDEtbmFycm93KTtcbiAgICBmb250LXdlaWdodDogJGZ3LWJvbGQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6ICRzcGFjZS1kb3VibGU7XG4gICAgbWFyZ2luLWJvdHRvbTogJHNwYWNlLWRvdWJsZTtcbiAgICBjbGVhcjogbm9uZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLW1lZGl1bSkge1xuICAgICAgZm9udC1zaXplOiBlbSgkaDEpO1xuICAgICAgbWFyZ2luLXRvcDogJHNwYWNlLXF1YWRydXBsZTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjZS1xdWFkcnVwbGU7XG4gICAgfVxuICB9XG59XG5cbi5oZXJvLS1pbWcsXG4uaGVyby0tdmlkZW8ge1xuICBAZXh0ZW5kIC5oZXJvO1xuXG4gIC50aXRsZSB7XG4gICAgbWFyZ2luLXRvcDogJHNwYWNlLWhhbGY7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1tZWRpdW0pIHtcbiAgICAgIG1hcmdpbi10b3A6ICRzcGFjZTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjZTtcbiAgICB9XG4gIH1cbn1cblxuLmhlcm8tLWltZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLW1lZGl1bSkge1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLC4yKTtcbiAgICAgIHotaW5kZXg6IDU7XG4gICAgfVxuICB9XG5cbiAgLnRleHQtd3JhcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIFxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLW1lZGl1bSkge1xuICAgICAgei1pbmRleDogMTA7XG4gICAgICBwYWRkaW5nOiAkc3BhY2UtcXVhZHJ1cGxlIDEwJTtcbiAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxuICB9XG5cbiAgLnRpdGxlIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxuXG4gIGltZyB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstbWVkaXVtKSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdG9wOiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG59XG5cbi5oZXJvLS1pbWctb25seSB7fVxuXG4uaGVyby0tdmlkZW8ge1xuICAudmlkZW8ge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLWxhcmdlKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDUgJGxheW91dC1tZWRpdW0gbGFzdCk7XG4gICAgICBtYXJnaW4tdG9wOiAkc3BhY2U7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbiAgLnRpdGxlIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1sYXJnZSkge1xuICAgICAgZm9udC1zaXplOiBlbSgkaDIpO1xuICAgICAgQGluY2x1ZGUgc3Bhbig2ICRsYXlvdXQtbWVkaXVtKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIE5ld3NsZXR0ZXIgc2lnbnVwXG4gKi9cbi5zaWdudXAtbmV3c2xldHRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHNjYWxlX2NvbG9yKCRibHVlLCAkbGlnaHRuZXNzOiAtMTUlKTtcbiAgcGFkZGluZzogJHNwYWNlICRzcGFjZS1oYWxmO1xuICBjb2xvcjogd2hpdGU7XG5cbiAgLy8gSW4gY29udGV4dCAtIE1haW4gY29udGVudFxuICAjY29udGVudCAmIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstbGFyZ2UpIHtcbiAgICAgIHBhZGRpbmc6ICRzcGFjZS1kb3VibGUgMTUlO1xuICAgIH1cbiAgfVxuXG4gIC50aXRsZSB7XG4gICAgZm9udC1zaXplOiBlbSgkaDEtbmFycm93KTtcbiAgICBmb250LXdlaWdodDogJGZ3LWJvbGQ7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstbGFyZ2UpIHtcbiAgICAgIGZvbnQtc2l6ZTogZW0oJGgyKTtcbiAgICB9XG4gIH1cblxuICAuZGVzYyB7XG4gICAgZm9udC1zaXplOiBlbSgkaDQpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgcCB7XG4gICAgICBtYXJnaW46IDEuMmVtIDAgMDtcbiAgICB9XG5cbiAgICAvLyBJbiBjb250ZXh0IC0gTWFpbiBjb250ZW50XG4gICAgI2NvbnRlbnQgJiB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVhay1sYXJnZSkge1xuICAgICAgICBmb250LXNpemU6IGVtKCRoNCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmZvcm0ge1xuICAgIEBleHRlbmQgJWNsZWFyZml4O1xuICAgIG1hcmdpbi10b3A6IDFlbTtcblxuICAgIC5pbnB1dCxcbiAgICAuYnRuIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIH1cblxuICAgIC5pbnB1dCB7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRzcGFjZS1oYWxmO1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstbGFyZ2UpIHtcbiAgICAgICAgI2NvbnRlbnQgJiB7XG4gICAgICAgICAgd2lkdGg6IDcwJTtcbiAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgQGV4dGVuZCAuYnRuLS1jdGE7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJyZWFrLWxhcmdlKSB7XG4gICAgICAgICNjb250ZW50ICYge1xuICAgICAgICAgIHdpZHRoOiAzMCU7XG4gICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubm90ZSB7XG4gICAgbWFyZ2luOiAuNWVtIDAgMDtcbiAgICBmb250LXNpemU6IGVtKCRoNik7XG4gICAgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjgpIDtcbiAgfVxufVxuXG4uY2FtcGFpZ24tc21zIHtcbiAgQGV4dGVuZCAuaGVyby0taW1nO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgLnNpZGViYXJzICYge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH1cblxuICAudGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1ib2xkO1xuICAgIHRleHQtYWxpZ246IGluaGVyaXQ7XG5cbiAgICAuc2lkZWJhcnMgJiB7XG4gICAgICBmb250LXNpemU6IGVtKCRoMyk7XG4gICAgfVxuICB9XG5cbiAgLm5vdGUge1xuICAgIG1hcmdpbjogMWVtIDAgMDtcbiAgICBmb250LXNpemU6IGVtKCRoNCk7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWstbWVkaXVtKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHBhZGRpbmc6IC41ZW0gMmVtO1xuICAgIH1cblxuICB9XG59Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */