/*--------------------------------------------------
	
	# sass / abstractions / _mixins.scss

	Common mixins, including a couple of troubleshooting helpers.
	

	--------------------------------------------------*/
/*----------------------------------------------------

	A couple of useful mixins sourced from:
	http://zerosixthree.se/8-sass-mixins-you-must-have-in-your-toolbox/

----------------------------------------------------*/
/*----------------------------------------------------*/
/*----------------------------------------------------*/
/*----------------------------------------------------*/
/*----------------------------------------------------*/
/*----------------------------------------------------*/
/*----------------------------------------------------*/
/*----------------------------------------------------*/
/*----------------------------------------------------*/
/*---------------------------------------------------------*/
/*---------------------------------------------------------*/
* {
  -webkit-box-sizing: border-box;
          box-sizing: border-box; }

.contained {
  margin: 0 auto;
  max-width: 63em; }

body {
  margin: 0;
  padding: 0;
  text-align: left; }

a {
  -webkit-transition: all 0.3s ease;
  transition: all 0.3s ease;
  color: inherit; }
  a:hover {
    text-decoration: none; }

p a {
  color: #088bd4; }
  p a:hover {
    color: #11a0dc; }

img {
  max-width: 100%; }

img[style*="float:right"],
img[style*="float: right"] {
  margin: 0 0 1em 1em; }

img[style*="float:left"],
img[style*="float: left"] {
  margin: 0 1em 1em 0; }

@media (max-width: 43.75em) {
  img[style*="float"] {
    display: block;
    float: initial !important;
    margin: 1em auto; } }
iframe {
  outline: none;
  border: none; }

a img {
  border: 0; }

table.rwd-table {
  border-collapse: collapse;
  border-spacing: 0;
  width: 100%; }
  @media (max-width: 30em) {
    table.rwd-table td {
      display: block; }
      table.rwd-table td.subhead {
        display: none; } }
  table.rwd-table td:first-child {
    padding-top: .5em; }
  table.rwd-table td:last-child {
    padding-bottom: .5em; }
  table.rwd-table td:before {
    content: attr(data-th) ": ";
    font-weight: bold;
    width: 100%;
    display: inline;
    color: #11a0dc; }
    @media (min-width: 30em) {
      table.rwd-table td:before {
        display: none; } }
  table.rwd-table th {
    background: #11a0dc; }
    table.rwd-table th h3 {
      color: white;
      font-family: "Muli",serif;
      font-weight: normal;
      font-size: 1em; }
  table.rwd-table td:before,
  table.rwd-table th:before {
    color: #11a0dc; }
  @media (max-width: 50.5em) {
    table.rwd-table td,
    table.rwd-table th {
      font-size: 0.8em;
      line-height: 1.3;
      padding: 0.2em;
      text-align: left;
      vertical-align: top; } }
  @media (min-width: 50.5em) {
    table.rwd-table td,
    table.rwd-table th {
      border: 1px solid #bab6b6;
      padding: 0.5em;
      text-align: center; } }
  @media (min-width: 30em) {
    table.rwd-table td,
    table.rwd-table th {
      display: table-cell;
      padding: 0.5em 0; }
      table.rwd-table td:first-child,
      table.rwd-table th:first-child {
        padding-left: 0; }
      table.rwd-table td:last-child,
      table.rwd-table th:last-child {
        padding-right: 0; } }
  table.rwd-table tr {
    border-top: 1px solid #ddd;
    border-bottom: 1px solid #ddd; }
    @media (max-width: 50.5em) {
      table.rwd-table tr.empty {
        display: none !important; } }
  table.rwd-table .subhead {
    background: #d7f1fc; }
  table.rwd-table .footer {
    padding-bottom: 2em; }
  table.rwd-table p {
    margin: 0;
    display: inline; }

body .legend {
  text-align: right;
  font-size: 0.8em;
  font-style: italic; }

/*
@font-face {
  font-family: "Invest";
  src: url("webfont.eot"); /* IE9 Compat Modes *
  src: url("webfont.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 
       url("webfont.woff2") format("woff2"), /* Super Modern Browsers *
       url("webfont.woff") format("woff"), /* Pretty Modern Browsers *
       url("webfont.ttf")  format("truetype"), /* Safari, Android, iOS *
       url("webfont.svg#svgFontName") format("svg"); /* Legacy iOS *

*/
@font-face {
  font-family: "Franchise Bold";
  font-style: normal;
  font-weight: normal;
  src: local("Franchise Bold"), url("../fonts/Franchise-Bold-hinted.woff") format("woff"); }
@font-face {
  font-family: "franchiseregular";
  src: url("../fonts/franchise/franchise-bold-webfont.eot");
  src: url("../fonts/franchise/franchise-bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/franchise/franchise-bold-webfont.woff2") format("woff2"), url("../fonts/franchise/franchise-bold-webfont.woff") format("woff"), url("../fonts/franchise/franchise-bold-webfont.ttf") format("truetype"), url("../fonts/franchise/franchise-bold-webfont.svg#franchiseregular") format("svg");
  font-weight: normal;
  font-style: normal; }
@font-face {
  font-family: "icomoon";
  src: url("../fonts/icomoon/icomoon.eot"); }
@font-face {
  font-family: "icomoon";
  src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SAXQAAAC8AAAAYGNtYXAaVcyJAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZvNmGygAAAF4AAAAmGhlYWQE1kF1AAACEAAAADZoaGVhBigDxgAAAkgAAAAkaG10eAiSACwAAAJsAAAAFGxvY2EAKABgAAACgAAAAAxtYXhwAAcAHQAAAowAAAAgbmFtZZlKCfsAAAKsAAABhnBvc3QAAwAAAAAENAAAACAAAwJJAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADmAQPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg5gH//f//AAAAAAAg5gH//f//AAH/4xoDAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABACwA9QJmAkIAGgAAARQHAQYjIicBJjU0PwE2MzIfATc2MzIfARYVAmYF/vUFCAcG/vYGBhwGBwgG4OEFCAcGHQUCEgcG/vYGBgEKBgcIBR0GBuHhBgYdBQgAAAEAAAABAACqgax/Xw889QALBAAAAAAA0aj/GwAAAADRqP8bAAAAAAJmAkIAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAmYAAQAAAAAAAAAAAAAAAAAAAAUEAAAAAAAAAAAAAAACAAAAApIALAAAAAAACgAUAB4ATAABAAAABQAbAAEAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEABwAAAAEAAAAAAAIABwBgAAEAAAAAAAMABwA2AAEAAAAAAAQABwB1AAEAAAAAAAUACwAVAAEAAAAAAAYABwBLAAEAAAAAAAoAGgCKAAMAAQQJAAEADgAHAAMAAQQJAAIADgBnAAMAAQQJAAMADgA9AAMAAQQJAAQADgB8AAMAAQQJAAUAFgAgAAMAAQQJAAYADgBSAAMAAQQJAAoANACkaWNvbW9vbgBpAGMAbwBtAG8AbwBuVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwaWNvbW9vbgBpAGMAbwBtAG8AbwBuaWNvbW9vbgBpAGMAbwBtAG8AbwBuUmVndWxhcgBSAGUAZwB1AGwAYQByaWNvbW9vbgBpAGMAbwBtAG8AbwBuRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype");
  font-weight: normal;
  font-style: normal; }
body {
  color: #545050;
  font-family: "Muli", sans-serif;
  font-size: 1.1em;
  line-height: 1.7; }
  @media (min-width: 50.5em) {
    body {
      font-size: 1.25em; } }

h1,
h2,
h3,
h4,
h5,
h6 {
  color: #11a0dc;
  font-family: "franchiseregular";
  font-weight: normal;
  text-align: center;
  text-transform: uppercase;
  line-height: 1.3; }
  h1 a,
  h2 a,
  h3 a,
  h4 a,
  h5 a,
  h6 a {
    text-decoration: none; }
    h1 a:hover,
    h2 a:hover,
    h3 a:hover,
    h4 a:hover,
    h5 a:hover,
    h6 a:hover {
      text-decoration: underline; }

h1 {
  font-size: 3.5rem;
  line-height: 1; }
  @media (min-width: 50.5em) {
    h1 {
      font-size: 4.8rem; } }

h2 {
  font-size: 2.8rem;
  line-height: 1; }

h3,
h4,
h5,
h6 {
  font-size: 1.8rem; }

blockquote {
  border-radius: 10px;
  background: #ddf2fe;
  margin: 0;
  padding: 2em;
  font-size: 1.2em; }

.needs-review {
  background-color: rgba(255, 203, 8, 0.7);
  font-style: italic; }

.news {
  border-bottom: 3px solid #11a0dc;
  border-top: 3px solid #11a0dc;
  color: white;
  text-align: center; }
  .news > div {
    background-color: #11a0dc;
    background-image: url("../img/bg-texture.png");
    border-bottom: 5px solid white;
    border-top: 5px solid white;
    padding: 0 1em 4em; }
    @media (min-width: 50.5em) {
      .news > div {
        padding: 0 2em 4em; } }
    @media (min-width: 78.75em) {
      .news > div {
        padding: 0 4em 4em; } }
  .news p a {
    color: #ffcb08; }
  .news h1 {
    background-color: white;
    border-radius: 0 0 0.25em 0.25em;
    color: #11a0dc;
    font-size: 2.25em;
    margin: 0 auto;
    padding: 0.25em;
    text-align: center;
    width: 33%; }
  .news h2 {
    color: white;
    font-size: 2em;
    font-weight: 300;
    margin-left: auto;
    margin-right: auto; }
    @media (min-width: 50.5em) {
      .news h2 {
        font-size: 2.5em;
        max-width: 750px; } }

.post-list {
  list-style-type: none;
  margin: 0;
  padding: 0;
  text-align: left; }
  .post-list h2 {
    text-align: left; }
    .post-list h2 a {
      text-decoration: none; }

.button {
  border-radius: 2em;
  -webkit-transition: all 0.3s ease;
  transition: all 0.3s ease;
  background: #ffcb08;
  color: white;
  font-family: montserrat, "Helvetica Nueue", sans-serif;
  font-size: 0.8em;
  padding: 1em 4em;
  text-decoration: none;
  text-transform: uppercase; }
  .button:hover {
    background: #f7941f; }

.section-nav {
  overflow: hidden;
  *zoom: 1;
  background-position: top left;
  background-repeat: no-repeat;
  font-family: "franchiseregular", "Helvetica Nueue", sans-serif;
  line-height: 1;
  text-transform: uppercase; }
  @media (min-width: 78.75em) {
    .section-nav {
      background-image: url("../img/yellow-arrow.png"); } }
  .section-nav h1 {
    font-size: 3em;
    line-height: 0.9;
    margin: 1em auto 0.5em; }
    @media (min-width: 30em) {
      .section-nav h1 {
        font-size: 3em; } }
    @media (min-width: 50.5em) {
      .section-nav h1 {
        max-width: 700px; } }
    @media (min-width: 78.75em) {
      .section-nav h1 {
        font-size: 4em;
        line-height: 0.9;
        margin: 1em 0.5em 0.5em 2.5em;
        max-width: none; } }
  .section-nav a {
    -webkit-transition: all, 0.3s;
    transition: all, 0.3s;
    display: block;
    font-size: 1.3em;
    line-height: 60px;
    text-decoration: none; }
    @media (min-width: 30em) {
      .section-nav a {
        font-size: 1.6em; } }
    @media (min-width: 50.5em) {
      .section-nav a {
        display: inline-block;
        line-height: 1;
        min-width: 220px;
        padding: 1em;
        width: 29%; }
        .section-nav a:not(:last-child) {
          border-right: 2px dotted #ffcb08; } }
    @media (min-width: 78.75em) {
      .section-nav a {
        min-width: 205px;
        width: 19%; } }
    .section-nav a:hover {
      opacity: 0.8; }
  .section-nav a::before {
    background-position: center center;
    background-repeat: no-repeat;
    background-size: contain;
    content: "";
    display: inline-block;
    height: 36px;
    margin-right: 1em;
    position: relative;
    top: -5px;
    vertical-align: middle;
    width: 36px; }
    @media (min-width: 50.5em) {
      .section-nav a::before {
        display: block;
        height: 100px;
        margin: 0 auto 1em;
        width: 100px; } }
  .section-nav .workforce {
    color: #f7941f; }
    .section-nav .workforce::before {
      background-image: url("../img/svg/workforce-icon.svg"); }
  .section-nav .pedestrian {
    color: #e51d27; }
    .section-nav .pedestrian::before {
      background-image: url("../img/svg/pedestrian-icon.svg"); }
  .section-nav .residential {
    color: #00b0bd; }
    .section-nav .residential::before {
      background-image: url("../img/svg/residential-icon.svg"); }
  .section-nav .visitor {
    color: #a3d063; }
    .section-nav .visitor::before {
      background-image: url("../img/svg/visitor-icon.svg"); }
  .section-nav .parking {
    color: #ffcb08; }
    .section-nav .parking::before {
      background-image: url("../img/svg/parking-icon.svg"); }

/*! Flickity v1.0.2
http://flickity.metafizzy.co
---------------------------------------------- */
.flickity-enabled {
  position: relative; }

.flickity-enabled:focus {
  outline: none; }

.flickity-viewport {
  overflow: hidden;
  position: relative;
  height: 100%; }

.flickity-slider {
  position: absolute;
  width: 100%;
  height: 100%; }

/* draggable */
.flickity-enabled.is-draggable {
  -webkit-tap-highlight-color: transparent;
  tap-highlight-color: transparent;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none; }

.flickity-enabled.is-draggable .flickity-viewport {
  cursor: move;
  cursor: -webkit-grab;
  cursor: grab; }

.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down {
  cursor: -webkit-grabbing;
  cursor: grabbing; }

/* ---- previous/next buttons ---- */
.flickity-prev-next-button {
  position: absolute;
  top: 50%;
  width: 44px;
  height: 44px;
  border: none;
  border-radius: 50%;
  background: white;
  background: rgba(255, 255, 255, 0.75);
  cursor: pointer;
  /* vertically center */
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%); }

.flickity-prev-next-button:hover {
  background: white; }

.flickity-prev-next-button:focus {
  outline: none;
  -webkit-box-shadow: 0 0 0 5px #09F;
          box-shadow: 0 0 0 5px #09F; }

.flickity-prev-next-button:active {
  filter: alpha(opacity=60);
  /* IE8 */
  opacity: 0.6; }

.flickity-prev-next-button.previous {
  left: 10px; }

.flickity-prev-next-button.next {
  right: 10px; }

/* right to left */
.flickity-rtl .flickity-prev-next-button.previous {
  left: auto;
  right: 10px; }

.flickity-rtl .flickity-prev-next-button.next {
  right: auto;
  left: 10px; }

.flickity-prev-next-button:disabled {
  filter: alpha(opacity=30);
  /* IE8 */
  opacity: 0.3;
  cursor: auto; }

.flickity-prev-next-button svg {
  position: absolute;
  left: 20%;
  top: 20%;
  width: 60%;
  height: 60%; }

.flickity-prev-next-button .arrow {
  fill: #333; }

/* color & size if no SVG - IE8 and Android 2.3 */
.flickity-prev-next-button.no-svg {
  color: #333;
  font-size: 26px; }

/* ---- page dots ---- */
.flickity-page-dots {
  padding: 0; }

.flickity-rtl .flickity-page-dots {
  direction: rtl; }

.flickity-page-dots .dot {
  border-radius: 10px;
  display: inline-block;
  width: 25%;
  height: 0.5em;
  margin: 0 8px;
  background: #ffcb08;
  cursor: pointer;
  max-width: 75px; }

.flickity-page-dots .dot.is-selected {
  background: white; }

/*---------------------------------------------------------*/
.news-post {
  width: 100%; }

.flickity-enabled {
  overflow: hidden;
  *zoom: 1; }

.jumbotron {
  background-color: #ffcb08;
  background-image: url("../img/bg-texture.png");
  border-top: 15px solid white;
  margin: -1em -1em;
  padding: 2em;
  text-align: center; }
  @media (min-width: 50.5em) {
    .jumbotron {
      border-radius: 10px;
      border-top: 0; } }
  @media (min-width: 78.75em) {
    .jumbotron {
      border-radius: 10px;
      margin: -1em -3em 0;
      padding: 2em 8em; } }
  .jumbotron h1,
  .jumbotron h2,
  .jumbotron h3,
  .jumbotron h4 {
    color: white;
    margin: 0; }
  .jumbotron h1 {
    font-size: 4em;
    line-height: 1; }
    @media (min-width: 78.75em) {
      .jumbotron h1 {
        font-size: 6em; } }
  .jumbotron h1::before {
    content: url("../img/svg/location-icon.svg");
    display: block;
    height: 100px;
    margin: 0 auto;
    padding-bottom: 0.5em;
    width: 100px; }
  .jumbotron p {
    color: #7b7575;
    font-size: 1.45em;
    line-height: 1.5;
    margin: 1em auto;
    max-width: 700px; }

.meta {
  background: rgba(255, 255, 255, 0.48); }
  .meta img {
    max-width: 321px;
    padding: 1em 0 0.5em 1em;
    width: 48%; }
    @media (min-width: 50.5em) {
      .meta img {
        padding: 1em 0 0.5em 2em; } }

body {
  background-image: url("../img/city-bg-sm.jpg");
  background-position: center top;
  background-repeat: no-repeat; }
  @media (min-width: 50.5em) {
    body {
      background-size: contain; } }
  @media (min-width: 62.5em) {
    body {
      background-image: url("../img/city-bg-med.jpg"); } }
  @media (min-width: 100em) {
    body {
      background-image: url("../img/city-bg-large.jpg"); } }

footer {
  text-align: center; }
  footer div:nth-child(2) {
    border-top: 3px solid #ffcb08; }
    @media (min-width: 30em) {
      footer div:nth-child(2) {
        text-align: left; } }
  footer .logo-downtownvic {
    display: block;
    margin: 0 auto; }
    @media (min-width: 30em) {
      footer .logo-downtownvic {
        float: right; } }
  footer .first .contained {
    padding: 2em; }
    @media (min-width: 78.75em) {
      footer .first .contained {
        padding: 5.5em 0 0;
        background-image: url("../img/blue-arrow.png");
        background-repeat: no-repeat;
        background-position: right top; } }
  @media (min-width: 50.5em) {
    footer .first p {
      font-size: 1.3em;
      font-weight: 100; } }
  @media (min-width: 78.75em) {
    footer .first p {
      font-size: 1.5em;
      margin: auto auto 1em;
      max-width: 860px; } }
  footer .first h2 {
    color: #ffcb08; }
    @media (min-width: 78.75em) {
      footer .first h2 {
        border-left: 2px solid #ffcb08;
        display: inline-block;
        line-height: 2;
        margin-left: 1em;
        padding-left: 1em;
        position: relative;
        top: 10px; } }
  footer .first a {
    display: inline-block; }
    footer .first a:hover {
      color: #f7941f; }
    footer .first a.button:hover {
      color: white; }
  @media (min-width: 78.75em) {
    footer h1 {
      margin-top: 0; } }

.closing-credits p {
  margin: 0;
  padding: 2em;
  color: #888282;
  font-size: 0.9em; }
.closing-credits a {
  color: #ffcb08; }
  .closing-credits a:hover {
    color: #f7941f; }
.closing-credits img {
  margin-left: 2em; }

@media (min-width: 50.5em) {
  .site-header {
    padding: 0 1em; } }
.site-header h1 {
  margin: 0; }

.logo-invest {
  display: block;
  margin: -20% auto 0.3em;
  max-width: 100%; }
  @media (min-width: 30em) {
    .logo-invest {
      margin: -90px auto 0.3em; } }

main {
  background-image: url("../img/bg-cityscape.jpg");
  background-position: center bottom;
  background-repeat: repeat-x;
  padding-bottom: 245px; }
  @media (min-width: 50.5em) {
    main {
      padding: 0 1em 245px; } }
  @media (min-width: 78.75em) {
    main {
      padding: 0; } }
  main .contained {
    background: white;
    padding: 1em 1em; }
    @media (min-width: 50.5em) {
      main .contained {
        padding: 1em 2em; } }
    @media (min-width: 78.75em) {
      main .contained {
        padding: 1em 4em; } }

/*=========================================================*
 The Pedestrian Counter Page
 
 We set up a display with dots across a map. Took a little more styling
 than normal to get this one set up...
 *--------------------------------------------------------*/
.pedestrian-count-map {
  background-image: url("../img/dvba-pedestrian-map.gif");
  background-position: center;
  background-size: contain;
  background-repeat: no-repeat;
  display: block;
  height: 0;
  margin: 2em auto 0;
  padding-bottom: 129%;
  position: relative;
  width: 100%;
  -webkit-print-color-adjust: exact; }
  .pedestrian-count-map a {
    border: 2px dashed white;
    border-radius: 50%;
    color: white;
    display: inline-block;
    font-size: 0.7em;
    height: 1.5em;
    position: absolute;
    text-decoration: none;
    width: 1.5em;
    line-height: 1.2; }
    @media (min-width: 50.5em) {
      .pedestrian-count-map a {
        font-size: 0.8em;
        width: 2em;
        height: 2em;
        line-height: 1.9; } }
    @media (min-width: 78.75em) {
      .pedestrian-count-map a {
        font-size: 0.9em;
        width: 2.5em;
        height: 2.5em;
        line-height: 2.3; } }
    .pedestrian-count-map a:hover {
      color: #088bd4;
      background: white; }

@media print {
  .pedestrian-count-map a {
    display: none; } }
.yates700 {
  left: 78%;
  top: 46.5%; }

.fort700 {
  left: 78%;
  top: 53.5%; }

.douglas1300 {
  left: 70%;
  top: 40%; }

.johnson600 {
  left: 52%;
  top: 32.5%; }

.blanchard1100 {
  left: 83.2%;
  top: 54%; }

.govt1100 {
  left: 53.7%;
  top: 49%; }

.govt900 {
  left: 55.5%;
  top: 59.5%; }

.douglas1100 {
  left: 67.4%;
  top: 55.5%; }

/*---------------------------------------------------------*/
#primary-nav {
  border-radius: 0.5em 0.5em 0 0;
  background-color: white;
  font-family: 'Montserrat', sans-serif;
  font-size: 0.9em;
  line-height: 1.25;
  text-align: center;
  text-transform: uppercase;
  z-index: 1;
  /*---------------------------------------------------------*/ }
  @media (max-width: 50.5em) {
    #primary-nav.activated .menu {
      display: block; } }
  #primary-nav .menu-icon {
    color: white;
    display: block;
    height: 100px;
    line-height: 100px;
    position: absolute;
    right: 1em;
    top: -20px;
    width: 45px; }
    #primary-nav .menu-icon path:hover {
      color: #ffcb08; }
  #primary-nav h1 {
    display: none; }
  #primary-nav ul {
    margin: 0;
    padding: 0; }
  #primary-nav li {
    cursor: pointer;
    list-style: none;
    position: relative;
    padding: 0.5em; }
    @media (min-width: 50.5em) {
      #primary-nav li {
        padding: 1.5em 0.5em; } }
  #primary-nav li,
  #primary-nav a {
    -webkit-transition: all 0.3s ease;
    transition: all 0.3s ease;
    color: #888282; }
    #primary-nav li:hover,
    #primary-nav a:hover {
      color: #11a0dc; }
  #primary-nav a {
    padding: 0.5em;
    text-align: center;
    text-decoration: none; }
  #primary-nav .menu {
    background: white;
    display: none;
    left: 0;
    position: absolute;
    right: 0;
    top: 3.5em;
    z-index: 1;
    padding: 1em 0; }
    @media (min-width: 28.125em) {
      #primary-nav .menu {
        top: 4em; } }
    @media (min-width: 37.5em) {
      #primary-nav .menu {
        top: 4.5em; } }
    @media (min-width: 42.1875em) {
      #primary-nav .menu {
        top: 5em; } }
    @media (min-width: 50.5em) {
      #primary-nav .menu {
        background: none;
        padding: 0; } }
    #primary-nav .menu ul {
      display: none; }
      #primary-nav .menu ul a {
        border-bottom: 2px dotted #ffcb08;
        display: block;
        padding: 0 0 1em; }
      #primary-nav .menu ul li {
        padding: 1em 1em 0;
        text-transform: none; }
      #primary-nav .menu ul li:last-child a {
        border-bottom: 0; }
  #primary-nav .icon-down {
    -webkit-transition: -webkit-transform, 0.3s;
    transition: transform, 0.3s;
    display: inline-block;
    font-family: "icomoon";
    -moz-osx-font-smoothing: grayscale;
    -webkit-font-smoothing: antialiased;
    font-style: normal;
    font-variant: normal;
    font-weight: normal;
    line-height: 1;
    margin: 0 0 0 0.5em;
    speak: none;
    text-transform: none; }
  #primary-nav .icon-downchevron-small-down:before {
    content: "\e601"; }
  #primary-nav .activated ul,
  #primary-nav .activated li {
    display: block;
    position: relative; }
  #primary-nav li:first-child {
    border-radius: 0.5em 0 0 0; }
  #primary-nav li:last-child {
    border-radius: 0 0.5em 0 0; }
  @media (min-width: 50.5em) {
    #primary-nav .menu {
      display: -webkit-box;
      display: -webkit-flex;
      display: -ms-flexbox;
      display: flex;
      position: relative;
      top: 0; }
      #primary-nav .menu ul {
        border-radius: 0 0 0.5em 0.5em;
        -webkit-box-shadow: 0 10px 13px rgba(84, 80, 80, 0.3);
        box-shadow: 0 10px 13px rgba(84, 80, 80, 0.3);
        background: white;
        left: 0;
        min-width: 13em;
        overflow: hidden;
        position: absolute;
        right: 0;
        top: 100%; }
      #primary-nav .menu > li {
        display: inline-block;
        -webkit-box-flex: 1;
        -webkit-flex: 1 1 auto;
            -ms-flex: 1 1 auto;
                flex: 1 1 auto; }
        #primary-nav .menu > li:not(:last-child) {
          border-right: 2px solid #ffcb08; }
      #primary-nav .menu .activated {
        background: #ffcb08;
        color: white; }
        #primary-nav .menu .activated .icon-down {
          -ms-transform: rotate(180deg);
          -webkit-transform: rotate(180deg);
          transform: rotate(180deg); }
    #primary-nav .menu-icon {
      display: none; } }



/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uY3NzIiwiYmx1ZXByaW50cy9fbGF5b3V0LnNjc3MiLCJiYXNlL19ib2R5LnNjc3MiLCJiYXNlL19saW5rcy5zY3NzIiwiLi4vLi4vLi4vLi4vLi4vLnJ2bS9nZW1zL3J1YnktMi4xLjQvZ2Vtcy9jb21wYXNzLWNvcmUtMS4wLjMvc3R5bGVzaGVldHMvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vLi4vLi4vLnJ2bS9nZW1zL3J1YnktMi4xLjQvZ2Vtcy9jb21wYXNzLWNvcmUtMS4wLjMvc3R5bGVzaGVldHMvY29tcGFzcy9jc3MzL190cmFuc2l0aW9uLnNjc3MiLCJ2YXJzL19jb2xvdXJzLnNjc3MiLCJiYXNlL19tZWRpYS5zY3NzIiwiLi4vLi4vLi4vLi4vLi4vLnJ2bS9nZW1zL3J1YnktMi4xLjQvZ2Vtcy9icmVha3BvaW50LTIuNS4wL3N0eWxlc2hlZXRzL19icmVha3BvaW50LnNjc3MiLCJiYXNlL190YWJsZXMuc2NzcyIsImJhc2UvX3R5cG9ncmFwaHkuc2NzcyIsImNvbXBvbmVudHMvX2FzaWRlLW5ld3Muc2NzcyIsImNvbXBvbmVudHMvX2Jsb2ctbGlzdC1wYWdlLnNjc3MiLCJjb21wb25lbnRzL19idXR0b25zLnNjc3MiLCJjb21wb25lbnRzL19kaXZlcnNlLWRvd250b3duLWljb25zLnNjc3MiLCIuLi8uLi8uLi8uLi8uLi8ucnZtL2dlbXMvcnVieS0yLjEuNC9nZW1zL2NvbXBhc3MtY29yZS0xLjAuMy9zdHlsZXNoZWV0cy9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiLi4vLi4vLi4vLi4vLi4vLnJ2bS9nZW1zL3J1YnktMi4xLjQvZ2Vtcy9jb21wYXNzLWNvcmUtMS4wLjMvc3R5bGVzaGVldHMvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2NzcyIsImNvbXBvbmVudHMvX2ZsaWNrZXR5LWNhcm91c2VsLnNjc3MiLCJjb21wb25lbnRzL19qdW1ib3Ryb24uc2NzcyIsImNvbXBvbmVudHMvX2xvZ28tZHZiYS5zY3NzIiwiY29tcG9uZW50cy9fcGFnZS1iYWNrZ3JvdW5kLnNjc3MiLCJjb21wb25lbnRzL19wYWdlLWZvb3Rlci5zY3NzIiwiY29tcG9uZW50cy9fcGFnZS1oZWFkZXIuc2NzcyIsImNvbXBvbmVudHMvX3BhZ2UtbG9nby5zY3NzIiwiY29tcG9uZW50cy9fcGFnZS1tYWluLnNjc3MiLCJjb21wb25lbnRzL19wZWRlc3RyaWFuLWNvdW50LW1hcC5zY3NzIiwiY29tcG9uZW50cy9fcHJpbWFyeS1uYXZpZ2F0aW9uLnNjc3MiLCIuLi8uLi8uLi8uLi8uLi8ucnZtL2dlbXMvcnVieS0yLjEuNC9nZW1zL2NvbXBhc3MtY29yZS0xLjAuMy9zdHlsZXNoZWV0cy9jb21wYXNzL2NzczMvX2JveC1zaGFkb3cuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztxREFPcUQ7QUFDckQ7Ozs7O3NEQUtzRDtBQUN0RCx3REFBd0Q7QUFDeEQsd0RBQXdEO0FBQ3hELHdEQUF3RDtBQUN4RCx3REFBd0Q7QUFDeEQsd0RBQXdEO0FBQ3hELHdEQUF3RDtBQUN4RCx3REFBd0Q7QUFDeEQsd0RBQXdEO0FBQ3hELDZEQUE2RDtBQUM3RCw2REFBNkQ7QUNuQjdEO0VBQ0UsK0JBQXNCO1VBQXRCLHVCQUFzQixFQUFBOztBQUd4QjtFQUNFLGVBQWM7RUFDZCxnQkFWYyxFQUFBOztBQ0FoQjtFQUNFLFVBQVM7RUFDVCxXQUFVO0VBQ1YsaUJBQWdCLEVBQUE7O0FDSGxCO0VDNFZFLGtDQ2pMdUY7RUFlbkYsMEJBWjBGO0VGNUs5RixlQUFjLEVBQUE7RUFDZDtJQUNFLHNCQUFxQixFQUFBOztBQUl6QjtFQUNFLGVHSHFCLEVBQUE7RUhLckI7SUFDRSxlR0R1QixFQUFBOztBQ1QzQjtFQUFNLGdCQUFlLEVBQUE7O0FBRXJCOztFQUVFLG9CQUFtQixFQUFBOztBQUdyQjs7RUFFRSxvQkFBbUIsRUFBQTs7QUNpRGpCO0VENUNGO0lBQ0UsZUFBYztJQUNkLDBCQUF5QjtJQUN6Qixp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a0I7UUFDbEIscUJBQW9CLEVBQUE7TUFHdEI7UUFDRSxpQkFBZ0IsRUFBQTtFQUt0QjtJdEJtT0EsNENDakx1RjtJQWVuRiw0QkFaMEY7SXFCbkQ1RixzQkFBcUI7SUFDckIsdUJBQXNCO0lBQ3RCLG1DQUFrQztJQUNsQyxvQ0FBbUM7SUFDbkMsbUJBQWtCO0lBQ2xCLHFCQUFvQjtJQUNwQixvQkFBbUI7SUFDbkIsZUFBYztJQUNkLG9CQUFtQjtJQUNuQixZQUFXO0lBQ1gscUJBQW9CLEVBQUE7RUFHdEI7SUFDRSxpQkFBZ0IsRUFBQTtFQUloQjs7SUFFRSxlQUFjO0lBQ2QsbUJBQWtCLEVBQUE7RUFHdEI7SXRCeU1BLDJCc0J4TW9DLEVBQUE7RUFFcEM7SXRCc01BLDJCc0JyTW9DLEVBQUE7RWxCM0ZsQztJa0JtR0E7TUFDRSxxQkFBYTtNQUFiLHNCQUFhO01BQWIscUJBQWE7TUFBYixjQUFhO01BQ2IsbUJBQWtCO01BQ2xCLE9BQU0sRUFBQTtNQUVOO1F0QndMSiwrQnNCdkw0QztRdEJ1TDVDLHNEdUJuVDJEO1F2Qm1UM0QsOEN1Qm5UMkQ7UUQ4SHJELGtCcEJ2S2tCO1FvQndLbEIsUUFBTztRQUNQLGdCQUFlO1FBQ2YsaUJBQWdCO1FBQ2hCLG1CQUFrQjtRQUNsQixTQUFRO1FBQ1IsVUFBUyxFQUFBO01BR1g7UUFDRSxzQkFBcUI7UUFDckIsb0JBQWM7UUFBZCx1QkFBYztZQUFkLG1CQUFjO2dCQUFkLGVBQWMsRUFBQTtRQUVkO1VBQ0UsZ0NBQStCLEVBQUE7TUFJbkM7UUFDRSxvQnBCdExpQjtRb0J1TGpCLGFwQjNMa0IsRUFBQTtRb0I2TGxCO1V0QitKTiw4QkFBZ0Q7VUFBaEQsa0NBQWdEO1VBQWhELDBCQUFnRCxFQUFBO0lzQnpKOUM7TUFDRSxjQUFhLEVBQUEsRUFBQSIsImZpbGUiOiJtYWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0XG5cdCMgc2FzcyAvIGFic3RyYWN0aW9ucyAvIF9taXhpbnMuc2Nzc1xuXG5cdENvbW1vbiBtaXhpbnMsIGluY2x1ZGluZyBhIGNvdXBsZSBvZiB0cm91Ymxlc2hvb3RpbmcgaGVscGVycy5cblx0XG5cblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0QSBjb3VwbGUgb2YgdXNlZnVsIG1peGlucyBzb3VyY2VkIGZyb206XG5cdGh0dHA6Ly96ZXJvc2l4dGhyZWUuc2UvOC1zYXNzLW1peGlucy15b3UtbXVzdC1oYXZlLWluLXlvdXItdG9vbGJveC9cblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbioge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbi5jb250YWluZWQge1xuICBtYXJnaW46IDAgYXV0bztcbiAgbWF4LXdpZHRoOiA2M2VtOyB9XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIHRleHQtYWxpZ246IGxlZnQ7IH1cblxuYSB7XG4gIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICBjb2xvcjogaW5oZXJpdDsgfVxuICBhOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cblxucCBhIHtcbiAgY29sb3I6ICMwODhiZDQ7IH1cbiAgcCBhOmhvdmVyIHtcbiAgICBjb2xvcjogIzExYTBkYzsgfVxuXG5pbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7IH1cblxuaW1nW3N0eWxlKj1cImZsb2F0OnJpZ2h0XCJdLFxuaW1nW3N0eWxlKj1cImZsb2F0OiByaWdodFwiXSB7XG4gIG1hcmdpbjogMCAwIDFlbSAxZW07IH1cblxuaW1nW3N0eWxlKj1cImZsb2F0OmxlZnRcIl0sXG5pbWdbc3R5bGUqPVwiZmxvYXQ6IGxlZnRcIl0ge1xuICBtYXJnaW46IDAgMWVtIDFlbSAwOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0My43NWVtKSB7XG4gIGltZ1tzdHlsZSo9XCJmbG9hdFwiXSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZmxvYXQ6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDFlbSBhdXRvOyB9IH1cbmlmcmFtZSB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG5hIGltZyB7XG4gIGJvcmRlcjogMDsgfVxuXG50YWJsZS5yd2QtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbiAgd2lkdGg6IDEwMCU7IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDMwZW0pIHtcbiAgICB0YWJsZS5yd2QtdGFibGUgdGQge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH1cbiAgICAgIHRhYmxlLnJ3ZC10YWJsZSB0ZC5zdWJoZWFkIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG4gIHRhYmxlLnJ3ZC10YWJsZSB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgcGFkZGluZy10b3A6IC41ZW07IH1cbiAgdGFibGUucndkLXRhYmxlIHRkOmxhc3QtY2hpbGQge1xuICAgIHBhZGRpbmctYm90dG9tOiAuNWVtOyB9XG4gIHRhYmxlLnJ3ZC10YWJsZSB0ZDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS10aCkgXCI6IFwiO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBjb2xvcjogIzExYTBkYzsgfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAzMGVtKSB7XG4gICAgICB0YWJsZS5yd2QtdGFibGUgdGQ6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG4gIHRhYmxlLnJ3ZC10YWJsZSB0aCB7XG4gICAgYmFja2dyb3VuZDogIzExYTBkYzsgfVxuICAgIHRhYmxlLnJ3ZC10YWJsZSB0aCBoMyB7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgICBmb250LWZhbWlseTogXCJNdWxpXCIsc2VyaWY7XG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgZm9udC1zaXplOiAxZW07IH1cbiAgdGFibGUucndkLXRhYmxlIHRkOmJlZm9yZSxcbiAgdGFibGUucndkLXRhYmxlIHRoOmJlZm9yZSB7XG4gICAgY29sb3I6ICMxMWEwZGM7IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDUwLjVlbSkge1xuICAgIHRhYmxlLnJ3ZC10YWJsZSB0ZCxcbiAgICB0YWJsZS5yd2QtdGFibGUgdGgge1xuICAgICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICBwYWRkaW5nOiAwLjJlbTtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB9IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDUwLjVlbSkge1xuICAgIHRhYmxlLnJ3ZC10YWJsZSB0ZCxcbiAgICB0YWJsZS5yd2QtdGFibGUgdGgge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2JhYjZiNjtcbiAgICAgIHBhZGRpbmc6IDAuNWVtO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyB9IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDMwZW0pIHtcbiAgICB0YWJsZS5yd2QtdGFibGUgdGQsXG4gICAgdGFibGUucndkLXRhYmxlIHRoIHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICBwYWRkaW5nOiAwLjVlbSAwOyB9XG4gICAgICB0YWJsZS5yd2QtdGFibGUgdGQ6Zmlyc3QtY2hpbGQsXG4gICAgICB0YWJsZS5yd2QtdGFibGUgdGg6Zmlyc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7IH1cbiAgICAgIHRhYmxlLnJ3ZC10YWJsZSB0ZDpsYXN0LWNoaWxkLFxuICAgICAgdGFibGUucndkLXRhYmxlIHRoOmxhc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwOyB9IH1cbiAgdGFibGUucndkLXRhYmxlIHRyIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsgfVxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MC41ZW0pIHtcbiAgICAgIHRhYmxlLnJ3ZC10YWJsZSB0ci5lbXB0eSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG4gIHRhYmxlLnJ3ZC10YWJsZSAuc3ViaGVhZCB7XG4gICAgYmFja2dyb3VuZDogI2Q3ZjFmYzsgfVxuICB0YWJsZS5yd2QtdGFibGUgLmZvb3RlciB7XG4gICAgcGFkZGluZy1ib3R0b206IDJlbTsgfVxuICB0YWJsZS5yd2QtdGFibGUgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGRpc3BsYXk6IGlubGluZTsgfVxuXG5ib2R5IC5sZWdlbmQge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgZm9udC1zaXplOiAwLjhlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi8qXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiSW52ZXN0XCI7XG4gIHNyYzogdXJsKFwid2ViZm9udC5lb3RcIik7IC8qIElFOSBDb21wYXQgTW9kZXMgKlxuICBzcmM6IHVybChcIndlYmZvbnQuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSwgLyogSUU2LUlFOCBcbiAgICAgICB1cmwoXCJ3ZWJmb250LndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLCAvKiBTdXBlciBNb2Rlcm4gQnJvd3NlcnMgKlxuICAgICAgIHVybChcIndlYmZvbnQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCAvKiBQcmV0dHkgTW9kZXJuIEJyb3dzZXJzICpcbiAgICAgICB1cmwoXCJ3ZWJmb250LnR0ZlwiKSAgZm9ybWF0KFwidHJ1ZXR5cGVcIiksIC8qIFNhZmFyaSwgQW5kcm9pZCwgaU9TICpcbiAgICAgICB1cmwoXCJ3ZWJmb250LnN2ZyNzdmdGb250TmFtZVwiKSBmb3JtYXQoXCJzdmdcIik7IC8qIExlZ2FjeSBpT1MgKlxuXG4qL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIkZyYW5jaGlzZSBCb2xkXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgc3JjOiBsb2NhbChcIkZyYW5jaGlzZSBCb2xkXCIpLCB1cmwoXCIuLi9mb250cy9GcmFuY2hpc2UtQm9sZC1oaW50ZWQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpOyB9XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiZnJhbmNoaXNlcmVndWxhclwiO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL2ZyYW5jaGlzZS9mcmFuY2hpc2UtYm9sZC13ZWJmb250LmVvdFwiKTtcbiAgc3JjOiB1cmwoXCIuLi9mb250cy9mcmFuY2hpc2UvZnJhbmNoaXNlLWJvbGQtd2ViZm9udC5lb3Q/I2llZml4XCIpIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLCB1cmwoXCIuLi9mb250cy9mcmFuY2hpc2UvZnJhbmNoaXNlLWJvbGQtd2ViZm9udC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgdXJsKFwiLi4vZm9udHMvZnJhbmNoaXNlL2ZyYW5jaGlzZS1ib2xkLXdlYmZvbnQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCIuLi9mb250cy9mcmFuY2hpc2UvZnJhbmNoaXNlLWJvbGQtd2ViZm9udC50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksIHVybChcIi4uL2ZvbnRzL2ZyYW5jaGlzZS9mcmFuY2hpc2UtYm9sZC13ZWJmb250LnN2ZyNmcmFuY2hpc2VyZWd1bGFyXCIpIGZvcm1hdChcInN2Z1wiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiaWNvbW9vblwiO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL2ljb21vb24vaWNvbW9vbi5lb3RcIik7IH1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJpY29tb29uXCI7XG4gIHNyYzogdXJsKGRhdGE6YXBwbGljYXRpb24veC1mb250LXR0ZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxBQUVBQUFBTEFJQUFBd0F3VDFNdk1nOFNBWFFBQUFDOEFBQUFZR050WVhBYVZjeUpBQUFCSEFBQUFGUm5ZWE53QUFBQUVBQUFBWEFBQUFBSVoyeDVadk5tR3lnQUFBRjRBQUFBbUdobFlXUUUxa0YxQUFBQ0VBQUFBRFpvYUdWaEJpZ0R4Z0FBQWtnQUFBQWthRzEwZUFpU0FDd0FBQUpzQUFBQUZHeHZZMkVBS0FCZ0FBQUNnQUFBQUF4dFlYaHdBQWNBSFFBQUFvd0FBQUFnYm1GdFpabEtDZnNBQUFLc0FBQUJobkJ2YzNRQUF3QUFBQUFFTkFBQUFDQUFBd0pKQVpBQUJRQUFBcGtDekFBQUFJOENtUUxNQUFBQjZ3QXpBUWtBQUFBQUFBQUFBQUFBQUFBQUFBQUJFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQURtQVFQQS84QUFRQVBBQUVBQUFBQUJBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQURBQUFBQXdBQUFCd0FBUUFEQUFBQUhBQURBQUVBQUFBY0FBUUFPQUFBQUFvQUNBQUNBQUlBQVFBZzVnSC8vZi8vQUFBQUFBQWc1Z0gvL2YvL0FBSC80eG9EQUFNQUFRQUFBQUFBQUFBQUFBQUFBUUFCLy84QUR3QUJBQUFBQUFBQUFBQUFBZ0FBTnprQkFBQUFBQUVBQUFBQUFBQUFBQUFDQUFBM09RRUFBQUFBQVFBQUFBQUFBQUFBQUFJQUFEYzVBUUFBQUFBQkFDd0E5UUptQWtJQUdnQUFBUlFIQVFZaklpY0JKalUwUHdFMk16SWZBVGMyTXpJZkFSWVZBbVlGL3ZVRkNBY0cvdllHQmh3R0J3Z0c0T0VGQ0FjR0hRVUNFZ2NHL3ZZR0JnRUtCZ2NJQlIwR0J1SGhCZ1lkQlFnQUFBRUFBQUFCQUFDcWdheC9Ydzg4OVFBTEJBQUFBQUFBMGFqL0d3QUFBQURScVA4YkFBQUFBQUptQWtJQUFBQUlBQUlBQUFBQUFBQUFBUUFBQThEL3dBQUFCQUFBQUFBQUFtWUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVBQUFBQUFBQUFBQUFBQUFDQUFBQUFwSUFMQUFBQUFBQUNnQVVBQjRBVEFBQkFBQUFCUUFiQUFFQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdDdUFBRUFBQUFBQUFFQUJ3QUFBQUVBQUFBQUFBSUFCd0JnQUFFQUFBQUFBQU1BQndBMkFBRUFBQUFBQUFRQUJ3QjFBQUVBQUFBQUFBVUFDd0FWQUFFQUFBQUFBQVlBQndCTEFBRUFBQUFBQUFvQUdnQ0tBQU1BQVFRSkFBRUFEZ0FIQUFNQUFRUUpBQUlBRGdCbkFBTUFBUVFKQUFNQURnQTlBQU1BQVFRSkFBUUFEZ0I4QUFNQUFRUUpBQVVBRmdBZ0FBTUFBUVFKQUFZQURnQlNBQU1BQVFRSkFBb0FOQUNrYVdOdmJXOXZiZ0JwQUdNQWJ3QnRBRzhBYndCdVZtVnljMmx2YmlBeExqQUFWZ0JsQUhJQWN3QnBBRzhBYmdBZ0FERUFMZ0F3YVdOdmJXOXZiZ0JwQUdNQWJ3QnRBRzhBYndCdWFXTnZiVzl2YmdCcEFHTUFid0J0QUc4QWJ3QnVVbVZuZFd4aGNnQlNBR1VBWndCMUFHd0FZUUJ5YVdOdmJXOXZiZ0JwQUdNQWJ3QnRBRzhBYndCdVJtOXVkQ0JuWlc1bGNtRjBaV1FnWW5rZ1NXTnZUVzl2Ymk0QVJnQnZBRzRBZEFBZ0FHY0FaUUJ1QUdVQWNnQmhBSFFBWlFCa0FDQUFZZ0I1QUNBQVNRQmpBRzhBVFFCdkFHOEFiZ0F1QUFBQUF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQT09KSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG5ib2R5IHtcbiAgY29sb3I6ICM1NDUwNTA7XG4gIGZvbnQtZmFtaWx5OiBcIk11bGlcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxLjFlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNzsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNTAuNWVtKSB7XG4gICAgYm9keSB7XG4gICAgICBmb250LXNpemU6IDEuMjVlbTsgfSB9XG5cbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNiB7XG4gIGNvbG9yOiAjMTFhMGRjO1xuICBmb250LWZhbWlseTogXCJmcmFuY2hpc2VyZWd1bGFyXCI7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGluZS1oZWlnaHQ6IDEuMzsgfVxuICBoMSBhLFxuICBoMiBhLFxuICBoMyBhLFxuICBoNCBhLFxuICBoNSBhLFxuICBoNiBhIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgICBoMSBhOmhvdmVyLFxuICAgIGgyIGE6aG92ZXIsXG4gICAgaDMgYTpob3ZlcixcbiAgICBoNCBhOmhvdmVyLFxuICAgIGg1IGE6aG92ZXIsXG4gICAgaDYgYTpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfVxuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMy41cmVtO1xuICBsaW5lLWhlaWdodDogMTsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNTAuNWVtKSB7XG4gICAgaDEge1xuICAgICAgZm9udC1zaXplOiA0LjhyZW07IH0gfVxuXG5oMiB7XG4gIGZvbnQtc2l6ZTogMi44cmVtO1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG5oMyxcbmg0LFxuaDUsXG5oNiB7XG4gIGZvbnQtc2l6ZTogMS44cmVtOyB9XG5cbmJsb2NrcXVvdGUge1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgYmFja2dyb3VuZDogI2RkZjJmZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAyZW07XG4gIGZvbnQtc2l6ZTogMS4yZW07IH1cblxuLm5lZWRzLXJldmlldyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyMDMsIDgsIDAuNyk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG4ubmV3cyB7XG4gIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjMTFhMGRjO1xuICBib3JkZXItdG9wOiAzcHggc29saWQgIzExYTBkYztcbiAgY29sb3I6IHdoaXRlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLm5ld3MgPiBkaXYge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxMWEwZGM7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1nL2JnLXRleHR1cmUucG5nXCIpO1xuICAgIGJvcmRlci1ib3R0b206IDVweCBzb2xpZCB3aGl0ZTtcbiAgICBib3JkZXItdG9wOiA1cHggc29saWQgd2hpdGU7XG4gICAgcGFkZGluZzogMCAxZW0gNGVtOyB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDUwLjVlbSkge1xuICAgICAgLm5ld3MgPiBkaXYge1xuICAgICAgICBwYWRkaW5nOiAwIDJlbSA0ZW07IH0gfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3OC43NWVtKSB7XG4gICAgICAubmV3cyA+IGRpdiB7XG4gICAgICAgIHBhZGRpbmc6IDAgNGVtIDRlbTsgfSB9XG4gIC5uZXdzIHAgYSB7XG4gICAgY29sb3I6ICNmZmNiMDg7IH1cbiAgLm5ld3MgaDEge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAwLjI1ZW0gMC4yNWVtO1xuICAgIGNvbG9yOiAjMTFhMGRjO1xuICAgIGZvbnQtc2l6ZTogMi4yNWVtO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDAuMjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDMzJTsgfVxuICAubmV3cyBoMiB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDUwLjVlbSkge1xuICAgICAgLm5ld3MgaDIge1xuICAgICAgICBmb250LXNpemU6IDIuNWVtO1xuICAgICAgICBtYXgtd2lkdGg6IDc1MHB4OyB9IH1cblxuLnBvc3QtbGlzdCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gIC5wb3N0LWxpc3QgaDIge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgICAucG9zdC1saXN0IGgyIGEge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbi5idXR0b24ge1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDJlbTtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAyZW07XG4gIGJvcmRlci1yYWRpdXM6IDJlbTtcbiAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAtby10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gIGJhY2tncm91bmQ6ICNmZmNiMDg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC1mYW1pbHk6IG1vbnRzZXJyYXQsIFwiSGVsdmV0aWNhIE51ZXVlXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMC44ZW07XG4gIHBhZGRpbmc6IDFlbSA0ZW07XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuICAuYnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjc5NDFmOyB9XG5cbi5zZWN0aW9uLW5hdiB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gICp6b29tOiAxO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgbGVmdDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgZm9udC1mYW1pbHk6IFwiZnJhbmNoaXNlcmVndWxhclwiLCBcIkhlbHZldGljYSBOdWV1ZVwiLCBzYW5zLXNlcmlmO1xuICBsaW5lLWhlaWdodDogMTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNzguNzVlbSkge1xuICAgIC5zZWN0aW9uLW5hdiB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWcveWVsbG93LWFycm93LnBuZ1wiKTsgfSB9XG4gIC5zZWN0aW9uLW5hdiBoMSB7XG4gICAgZm9udC1zaXplOiAzZW07XG4gICAgbGluZS1oZWlnaHQ6IDAuOTtcbiAgICBtYXJnaW46IDFlbSBhdXRvIDAuNWVtOyB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDMwZW0pIHtcbiAgICAgIC5zZWN0aW9uLW5hdiBoMSB7XG4gICAgICAgIGZvbnQtc2l6ZTogM2VtOyB9IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNTAuNWVtKSB7XG4gICAgICAuc2VjdGlvbi1uYXYgaDEge1xuICAgICAgICBtYXgtd2lkdGg6IDcwMHB4OyB9IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNzguNzVlbSkge1xuICAgICAgLnNlY3Rpb24tbmF2IGgxIHtcbiAgICAgICAgZm9udC1zaXplOiA0ZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwLjk7XG4gICAgICAgIG1hcmdpbjogMWVtIDAuNWVtIDAuNWVtIDIuNWVtO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7IH0gfVxuICAuc2VjdGlvbi1uYXYgYSB7XG4gICAgLW1vei10cmFuc2l0aW9uOiBhbGwsIDAuM3M7XG4gICAgLW8tdHJhbnNpdGlvbjogYWxsLCAwLjNzO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsLCAwLjNzO1xuICAgIHRyYW5zaXRpb246IGFsbCwgMC4zcztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAzMGVtKSB7XG4gICAgICAuc2VjdGlvbi1uYXYgYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS42ZW07IH0gfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA1MC41ZW0pIHtcbiAgICAgIC5zZWN0aW9uLW5hdiBhIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAyMjBweDtcbiAgICAgICAgcGFkZGluZzogMWVtO1xuICAgICAgICB3aWR0aDogMjklOyB9XG4gICAgICAgIC5zZWN0aW9uLW5hdiBhOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgIGJvcmRlci1yaWdodDogMnB4IGRvdHRlZCAjZmZjYjA4OyB9IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNzguNzVlbSkge1xuICAgICAgLnNlY3Rpb24tbmF2IGEge1xuICAgICAgICBtaW4td2lkdGg6IDIwNXB4O1xuICAgICAgICB3aWR0aDogMTklOyB9IH1cbiAgICAuc2VjdGlvbi1uYXYgYTpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAwLjg7IH1cbiAgLnNlY3Rpb24tbmF2IGE6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxZW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogLTVweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHdpZHRoOiAzNnB4OyB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDUwLjVlbSkge1xuICAgICAgLnNlY3Rpb24tbmF2IGE6OmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwMHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0byAxZW07XG4gICAgICAgIHdpZHRoOiAxMDBweDsgfSB9XG4gIC5zZWN0aW9uLW5hdiAud29ya2ZvcmNlIHtcbiAgICBjb2xvcjogI2Y3OTQxZjsgfVxuICAgIC5zZWN0aW9uLW5hdiAud29ya2ZvcmNlOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1nL3N2Zy93b3JrZm9yY2UtaWNvbi5zdmdcIik7IH1cbiAgLnNlY3Rpb24tbmF2IC5wZWRlc3RyaWFuIHtcbiAgICBjb2xvcjogI2U1MWQyNzsgfVxuICAgIC5zZWN0aW9uLW5hdiAucGVkZXN0cmlhbjo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9zdmcvcGVkZXN0cmlhbi1pY29uLnN2Z1wiKTsgfVxuICAuc2VjdGlvbi1uYXYgLnJlc2lkZW50aWFsIHtcbiAgICBjb2xvcjogIzAwYjBiZDsgfVxuICAgIC5zZWN0aW9uLW5hdiAucmVzaWRlbnRpYWw6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWcvc3ZnL3Jlc2lkZW50aWFsLWljb24uc3ZnXCIpOyB9XG4gIC5zZWN0aW9uLW5hdiAudmlzaXRvciB7XG4gICAgY29sb3I6ICNhM2QwNjM7IH1cbiAgICAuc2VjdGlvbi1uYXYgLnZpc2l0b3I6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWcvc3ZnL3Zpc2l0b3ItaWNvbi5zdmdcIik7IH1cbiAgLnNlY3Rpb24tbmF2IC5wYXJraW5nIHtcbiAgICBjb2xvcjogI2ZmY2IwODsgfVxuICAgIC5zZWN0aW9uLW5hdiAucGFya2luZzo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9zdmcvcGFya2luZy1pY29uLnN2Z1wiKTsgfVxuXG4vKiEgRmxpY2tpdHkgdjEuMC4yXG5odHRwOi8vZmxpY2tpdHkubWV0YWZpenp5LmNvXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4uZmxpY2tpdHktZW5hYmxlZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuXG4uZmxpY2tpdHktZW5hYmxlZDpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7IH1cblxuLmZsaWNraXR5LXZpZXdwb3J0IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDEwMCU7IH1cblxuLmZsaWNraXR5LXNsaWRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTsgfVxuXG4vKiBkcmFnZ2FibGUgKi9cbi5mbGlja2l0eS1lbmFibGVkLmlzLWRyYWdnYWJsZSB7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lOyB9XG5cbi5mbGlja2l0eS1lbmFibGVkLmlzLWRyYWdnYWJsZSAuZmxpY2tpdHktdmlld3BvcnQge1xuICBjdXJzb3I6IG1vdmU7XG4gIGN1cnNvcjogLXdlYmtpdC1ncmFiO1xuICBjdXJzb3I6IGdyYWI7IH1cblxuLmZsaWNraXR5LWVuYWJsZWQuaXMtZHJhZ2dhYmxlIC5mbGlja2l0eS12aWV3cG9ydC5pcy1wb2ludGVyLWRvd24ge1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7XG4gIGN1cnNvcjogZ3JhYmJpbmc7IH1cblxuLyogLS0tLSBwcmV2aW91cy9uZXh0IGJ1dHRvbnMgLS0tLSAqL1xuLmZsaWNraXR5LXByZXYtbmV4dC1idXR0b24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB3aWR0aDogNDRweDtcbiAgaGVpZ2h0OiA0NHB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLyogdmVydGljYWxseSBjZW50ZXIgKi9cbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgfVxuXG4uZmxpY2tpdHktcHJldi1uZXh0LWJ1dHRvbjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHdoaXRlOyB9XG5cbi5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm94LXNoYWRvdzogMCAwIDAgNXB4ICMwOUY7IH1cblxuLmZsaWNraXR5LXByZXYtbmV4dC1idXR0b246YWN0aXZlIHtcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTYwKTtcbiAgLyogSUU4ICovXG4gIG9wYWNpdHk6IDAuNjsgfVxuXG4uZmxpY2tpdHktcHJldi1uZXh0LWJ1dHRvbi5wcmV2aW91cyB7XG4gIGxlZnQ6IDEwcHg7IH1cblxuLmZsaWNraXR5LXByZXYtbmV4dC1idXR0b24ubmV4dCB7XG4gIHJpZ2h0OiAxMHB4OyB9XG5cbi8qIHJpZ2h0IHRvIGxlZnQgKi9cbi5mbGlja2l0eS1ydGwgLmZsaWNraXR5LXByZXYtbmV4dC1idXR0b24ucHJldmlvdXMge1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogMTBweDsgfVxuXG4uZmxpY2tpdHktcnRsIC5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uLm5leHQge1xuICByaWdodDogYXV0bztcbiAgbGVmdDogMTBweDsgfVxuXG4uZmxpY2tpdHktcHJldi1uZXh0LWJ1dHRvbjpkaXNhYmxlZCB7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT0zMCk7XG4gIC8qIElFOCAqL1xuICBvcGFjaXR5OiAwLjM7XG4gIGN1cnNvcjogYXV0bzsgfVxuXG4uZmxpY2tpdHktcHJldi1uZXh0LWJ1dHRvbiBzdmcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDIwJTtcbiAgdG9wOiAyMCU7XG4gIHdpZHRoOiA2MCU7XG4gIGhlaWdodDogNjAlOyB9XG5cbi5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uIC5hcnJvdyB7XG4gIGZpbGw6ICMzMzM7IH1cblxuLyogY29sb3IgJiBzaXplIGlmIG5vIFNWRyAtIElFOCBhbmQgQW5kcm9pZCAyLjMgKi9cbi5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uLm5vLXN2ZyB7XG4gIGNvbG9yOiAjMzMzO1xuICBmb250LXNpemU6IDI2cHg7IH1cblxuLyogLS0tLSBwYWdlIGRvdHMgLS0tLSAqL1xuLmZsaWNraXR5LXBhZ2UtZG90cyB7XG4gIHBhZGRpbmc6IDA7IH1cblxuLmZsaWNraXR5LXJ0bCAuZmxpY2tpdHktcGFnZS1kb3RzIHtcbiAgZGlyZWN0aW9uOiBydGw7IH1cblxuLmZsaWNraXR5LXBhZ2UtZG90cyAuZG90IHtcbiAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDI1JTtcbiAgaGVpZ2h0OiAwLjVlbTtcbiAgbWFyZ2luOiAwIDhweDtcbiAgYmFja2dyb3VuZDogI2ZmY2IwODtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBtYXgtd2lkdGg6IDc1cHg7IH1cblxuLmZsaWNraXR5LXBhZ2UtZG90cyAuZG90LmlzLXNlbGVjdGVkIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7IH1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLm5ld3MtcG9zdCB7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5mbGlja2l0eS1lbmFibGVkIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgKnpvb206IDE7IH1cblxuLmp1bWJvdHJvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNiMDg7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9iZy10ZXh0dXJlLnBuZ1wiKTtcbiAgYm9yZGVyLXRvcDogMTVweCBzb2xpZCB3aGl0ZTtcbiAgbWFyZ2luOiAtMWVtIC0xZW07XG4gIHBhZGRpbmc6IDJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA1MC41ZW0pIHtcbiAgICAuanVtYm90cm9uIHtcbiAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICBib3JkZXItdG9wOiAwOyB9IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc4Ljc1ZW0pIHtcbiAgICAuanVtYm90cm9uIHtcbiAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICBtYXJnaW46IC0xZW0gLTNlbSAwO1xuICAgICAgcGFkZGluZzogMmVtIDhlbTsgfSB9XG4gIC5qdW1ib3Ryb24gaDEsXG4gIC5qdW1ib3Ryb24gaDIsXG4gIC5qdW1ib3Ryb24gaDMsXG4gIC5qdW1ib3Ryb24gaDQge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBtYXJnaW46IDA7IH1cbiAgLmp1bWJvdHJvbiBoMSB7XG4gICAgZm9udC1zaXplOiA0ZW07XG4gICAgbGluZS1oZWlnaHQ6IDE7IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNzguNzVlbSkge1xuICAgICAgLmp1bWJvdHJvbiBoMSB7XG4gICAgICAgIGZvbnQtc2l6ZTogNmVtOyB9IH1cbiAgLmp1bWJvdHJvbiBoMTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiB1cmwoXCIuLi9pbWcvc3ZnL2xvY2F0aW9uLWljb24uc3ZnXCIpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IDAuNWVtO1xuICAgIHdpZHRoOiAxMDBweDsgfVxuICAuanVtYm90cm9uIHAge1xuICAgIGNvbG9yOiAjN2I3NTc1O1xuICAgIGZvbnQtc2l6ZTogMS40NWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgbWFyZ2luOiAxZW0gYXV0bztcbiAgICBtYXgtd2lkdGg6IDcwMHB4OyB9XG5cbi5tZXRhIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ4KTsgfVxuICAubWV0YSBpbWcge1xuICAgIG1heC13aWR0aDogMzIxcHg7XG4gICAgcGFkZGluZzogMWVtIDAgMC41ZW0gMWVtO1xuICAgIHdpZHRoOiA0OCU7IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNTAuNWVtKSB7XG4gICAgICAubWV0YSBpbWcge1xuICAgICAgICBwYWRkaW5nOiAxZW0gMCAwLjVlbSAyZW07IH0gfVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1nL2NpdHktYmctc20uanBnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgdG9wO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA1MC41ZW0pIHtcbiAgICBib2R5IHtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA2Mi41ZW0pIHtcbiAgICBib2R5IHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9jaXR5LWJnLW1lZC5qcGdcIik7IH0gfVxuICBAbWVkaWEgKG1pbi13aWR0aDogMTAwZW0pIHtcbiAgICBib2R5IHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9jaXR5LWJnLWxhcmdlLmpwZ1wiKTsgfSB9XG5cbmZvb3RlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICBmb290ZXIgZGl2Om50aC1jaGlsZCgyKSB7XG4gICAgYm9yZGVyLXRvcDogM3B4IHNvbGlkICNmZmNiMDg7IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMzBlbSkge1xuICAgICAgZm9vdGVyIGRpdjpudGgtY2hpbGQoMikge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9IH1cbiAgZm9vdGVyIC5sb2dvLWRvd250b3dudmljIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDAgYXV0bzsgfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAzMGVtKSB7XG4gICAgICBmb290ZXIgLmxvZ28tZG93bnRvd252aWMge1xuICAgICAgICBmbG9hdDogcmlnaHQ7IH0gfVxuICBmb290ZXIgLmZpcnN0IC5jb250YWluZWQge1xuICAgIHBhZGRpbmc6IDJlbTsgfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3OC43NWVtKSB7XG4gICAgICBmb290ZXIgLmZpcnN0IC5jb250YWluZWQge1xuICAgICAgICBwYWRkaW5nOiA1LjVlbSAwIDA7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9ibHVlLWFycm93LnBuZ1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgdG9wOyB9IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDUwLjVlbSkge1xuICAgIGZvb3RlciAuZmlyc3QgcCB7XG4gICAgICBmb250LXNpemU6IDEuM2VtO1xuICAgICAgZm9udC13ZWlnaHQ6IDEwMDsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA3OC43NWVtKSB7XG4gICAgZm9vdGVyIC5maXJzdCBwIHtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICBtYXJnaW46IGF1dG8gYXV0byAxZW07XG4gICAgICBtYXgtd2lkdGg6IDg2MHB4OyB9IH1cbiAgZm9vdGVyIC5maXJzdCBoMiB7XG4gICAgY29sb3I6ICNmZmNiMDg7IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNzguNzVlbSkge1xuICAgICAgZm9vdGVyIC5maXJzdCBoMiB7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2ZmY2IwODtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBsaW5lLWhlaWdodDogMjtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDFlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxZW07XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdG9wOiAxMHB4OyB9IH1cbiAgZm9vdGVyIC5maXJzdCBhIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cbiAgICBmb290ZXIgLmZpcnN0IGE6aG92ZXIge1xuICAgICAgY29sb3I6ICNmNzk0MWY7IH1cbiAgICBmb290ZXIgLmZpcnN0IGEuYnV0dG9uOmhvdmVyIHtcbiAgICAgIGNvbG9yOiB3aGl0ZTsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNzguNzVlbSkge1xuICAgIGZvb3RlciBoMSB7XG4gICAgICBtYXJnaW4tdG9wOiAwOyB9IH1cblxuLmNsb3NpbmctY3JlZGl0cyBwIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAyZW07XG4gIGNvbG9yOiAjODg4MjgyO1xuICBmb250LXNpemU6IDAuOWVtOyB9XG4uY2xvc2luZy1jcmVkaXRzIGEge1xuICBjb2xvcjogI2ZmY2IwODsgfVxuICAuY2xvc2luZy1jcmVkaXRzIGE6aG92ZXIge1xuICAgIGNvbG9yOiAjZjc5NDFmOyB9XG4uY2xvc2luZy1jcmVkaXRzIGltZyB7XG4gIG1hcmdpbi1sZWZ0OiAyZW07IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDUwLjVlbSkge1xuICAuc2l0ZS1oZWFkZXIge1xuICAgIHBhZGRpbmc6IDAgMWVtOyB9IH1cbi5zaXRlLWhlYWRlciBoMSB7XG4gIG1hcmdpbjogMDsgfVxuXG4ubG9nby1pbnZlc3Qge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAtMjAlIGF1dG8gMC4zZW07XG4gIG1heC13aWR0aDogMTAwJTsgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogMzBlbSkge1xuICAgIC5sb2dvLWludmVzdCB7XG4gICAgICBtYXJnaW46IC05MHB4IGF1dG8gMC4zZW07IH0gfVxuXG5tYWluIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1nL2JnLWNpdHlzY2FwZS5qcGdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBib3R0b207XG4gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgcGFkZGluZy1ib3R0b206IDI0NXB4OyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA1MC41ZW0pIHtcbiAgICBtYWluIHtcbiAgICAgIHBhZGRpbmc6IDAgMWVtIDI0NXB4OyB9IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc4Ljc1ZW0pIHtcbiAgICBtYWluIHtcbiAgICAgIHBhZGRpbmc6IDA7IH0gfVxuICBtYWluIC5jb250YWluZWQge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDFlbSAxZW07IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNTAuNWVtKSB7XG4gICAgICBtYWluIC5jb250YWluZWQge1xuICAgICAgICBwYWRkaW5nOiAxZW0gMmVtOyB9IH1cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNzguNzVlbSkge1xuICAgICAgbWFpbiAuY29udGFpbmVkIHtcbiAgICAgICAgcGFkZGluZzogMWVtIDRlbTsgfSB9XG5cbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KlxuIFRoZSBQZWRlc3RyaWFuIENvdW50ZXIgUGFnZVxuIFxuIFdlIHNldCB1cCBhIGRpc3BsYXkgd2l0aCBkb3RzIGFjcm9zcyBhIG1hcC4gVG9vayBhIGxpdHRsZSBtb3JlIHN0eWxpbmdcbiB0aGFuIG5vcm1hbCB0byBnZXQgdGhpcyBvbmUgc2V0IHVwLi4uXG4gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi5wZWRlc3RyaWFuLWNvdW50LW1hcCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltZy9kdmJhLXBlZGVzdHJpYW4tbWFwLmdpZlwiKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIG1hcmdpbjogMmVtIGF1dG8gMDtcbiAgcGFkZGluZy1ib3R0b206IDEyOSU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDsgfVxuICAucGVkZXN0cmlhbi1jb3VudC1tYXAgYSB7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMC43ZW07XG4gICAgaGVpZ2h0OiAxLjVlbTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHdpZHRoOiAxLjVlbTtcbiAgICBsaW5lLWhlaWdodDogMS4yOyB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDUwLjVlbSkge1xuICAgICAgLnBlZGVzdHJpYW4tY291bnQtbWFwIGEge1xuICAgICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgICB3aWR0aDogMmVtO1xuICAgICAgICBoZWlnaHQ6IDJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuOTsgfSB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDc4Ljc1ZW0pIHtcbiAgICAgIC5wZWRlc3RyaWFuLWNvdW50LW1hcCBhIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgICAgd2lkdGg6IDIuNWVtO1xuICAgICAgICBoZWlnaHQ6IDIuNWVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMi4zOyB9IH1cbiAgICAucGVkZXN0cmlhbi1jb3VudC1tYXAgYTpob3ZlciB7XG4gICAgICBjb2xvcjogIzA4OGJkNDtcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlOyB9XG5cbkBtZWRpYSBwcmludCB7XG4gIC5wZWRlc3RyaWFuLWNvdW50LW1hcCBhIHtcbiAgICBkaXNwbGF5OiBub25lOyB9IH1cbi55YXRlczcwMCB7XG4gIGxlZnQ6IDc4JTtcbiAgdG9wOiA0Ni41JTsgfVxuXG4uZm9ydDcwMCB7XG4gIGxlZnQ6IDc4JTtcbiAgdG9wOiA1My41JTsgfVxuXG4uZG91Z2xhczEzMDAge1xuICBsZWZ0OiA3MCU7XG4gIHRvcDogNDAlOyB9XG5cbi5qb2huc29uNjAwIHtcbiAgbGVmdDogNTIlO1xuICB0b3A6IDMyLjUlOyB9XG5cbi5ibGFuY2hhcmQxMTAwIHtcbiAgbGVmdDogODMuMiU7XG4gIHRvcDogNTQlOyB9XG5cbi5nb3Z0MTEwMCB7XG4gIGxlZnQ6IDUzLjclO1xuICB0b3A6IDQ5JTsgfVxuXG4uZ292dDkwMCB7XG4gIGxlZnQ6IDU1LjUlO1xuICB0b3A6IDU5LjUlOyB9XG5cbi5kb3VnbGFzMTEwMCB7XG4gIGxlZnQ6IDY3LjQlO1xuICB0b3A6IDU1LjUlOyB9XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbiNwcmltYXJ5LW5hdiB7XG4gIC1tb3otYm9yZGVyLXJhZGl1czogMC41ZW0gMC41ZW0gMCAwO1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAuNWVtO1xuICBib3JkZXItcmFkaXVzOiAwLjVlbSAwLjVlbSAwIDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDAuOWVtO1xuICBsaW5lLWhlaWdodDogMS4yNTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB6LWluZGV4OiAxO1xuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDUwLjVlbSkge1xuICAgICNwcmltYXJ5LW5hdi5hY3RpdmF0ZWQgLm1lbnUge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfVxuICAjcHJpbWFyeS1uYXYgLm1lbnUtaWNvbiB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMTAwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEwMHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMWVtO1xuICAgIHRvcDogLTIwcHg7XG4gICAgd2lkdGg6IDQ1cHg7IH1cbiAgICAjcHJpbWFyeS1uYXYgLm1lbnUtaWNvbiBwYXRoOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAjZmZjYjA4OyB9XG4gICNwcmltYXJ5LW5hdiBoMSB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuICAjcHJpbWFyeS1uYXYgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwOyB9XG4gICNwcmltYXJ5LW5hdiBsaSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDAuNWVtOyB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDUwLjVlbSkge1xuICAgICAgI3ByaW1hcnktbmF2IGxpIHtcbiAgICAgICAgcGFkZGluZzogMS41ZW0gMC41ZW07IH0gfVxuICAjcHJpbWFyeS1uYXYgbGksXG4gICNwcmltYXJ5LW5hdiBhIHtcbiAgICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgICBjb2xvcjogIzg4ODI4MjsgfVxuICAgICNwcmltYXJ5LW5hdiBsaTpob3ZlcixcbiAgICAjcHJpbWFyeS1uYXYgYTpob3ZlciB7XG4gICAgICBjb2xvcjogIzExYTBkYzsgfVxuICAjcHJpbWFyeS1uYXYgYSB7XG4gICAgcGFkZGluZzogMC41ZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICAjcHJpbWFyeS1uYXYgLm1lbnUge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgbGVmdDogMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgdG9wOiAzLjVlbTtcbiAgICB6LWluZGV4OiAxO1xuICAgIHBhZGRpbmc6IDFlbSAwOyB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDI4LjEyNWVtKSB7XG4gICAgICAjcHJpbWFyeS1uYXYgLm1lbnUge1xuICAgICAgICB0b3A6IDRlbTsgfSB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDM3LjVlbSkge1xuICAgICAgI3ByaW1hcnktbmF2IC5tZW51IHtcbiAgICAgICAgdG9wOiA0LjVlbTsgfSB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDQyLjE4NzVlbSkge1xuICAgICAgI3ByaW1hcnktbmF2IC5tZW51IHtcbiAgICAgICAgdG9wOiA1ZW07IH0gfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA1MC41ZW0pIHtcbiAgICAgICNwcmltYXJ5LW5hdiAubWVudSB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7IH0gfVxuICAgICNwcmltYXJ5LW5hdiAubWVudSB1bCB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgICAjcHJpbWFyeS1uYXYgLm1lbnUgdWwgYSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDJweCBkb3R0ZWQgI2ZmY2IwODtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDAgMCAxZW07IH1cbiAgICAgICNwcmltYXJ5LW5hdiAubWVudSB1bCBsaSB7XG4gICAgICAgIHBhZGRpbmc6IDFlbSAxZW0gMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cbiAgICAgICNwcmltYXJ5LW5hdiAubWVudSB1bCBsaTpsYXN0LWNoaWxkIGEge1xuICAgICAgICBib3JkZXItYm90dG9tOiAwOyB9XG4gICNwcmltYXJ5LW5hdiAuaWNvbi1kb3duIHtcbiAgICAtbW96LXRyYW5zaXRpb246IC1tb3otdHJhbnNmb3JtLCAwLjNzO1xuICAgIC1vLXRyYW5zaXRpb246IC1vLXRyYW5zZm9ybSwgMC4zcztcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtLCAwLjNzO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSwgMC4zcztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1mYW1pbHk6IFwiaWNvbW9vblwiO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgbWFyZ2luOiAwIDAgMCAwLjVlbTtcbiAgICBzcGVhazogbm9uZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuICAjcHJpbWFyeS1uYXYgLmljb24tZG93bmNoZXZyb24tc21hbGwtZG93bjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjAxXCI7IH1cbiAgI3ByaW1hcnktbmF2IC5hY3RpdmF0ZWQgdWwsXG4gICNwcmltYXJ5LW5hdiAuYWN0aXZhdGVkIGxpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgI3ByaW1hcnktbmF2IGxpOmZpcnN0LWNoaWxkIHtcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDAuNWVtIDAgMCAwO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMC41ZW07XG4gICAgYm9yZGVyLXJhZGl1czogMC41ZW0gMCAwIDA7IH1cbiAgI3ByaW1hcnktbmF2IGxpOmxhc3QtY2hpbGQge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogMCAwLjVlbSAwIDA7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMC41ZW0gMCAwOyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA1MC41ZW0pIHtcbiAgICAjcHJpbWFyeS1uYXYgLm1lbnUge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogMDsgfVxuICAgICAgI3ByaW1hcnktbmF2IC5tZW51IHVsIHtcbiAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDAgMC41ZW0gMC41ZW07XG4gICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDAuNWVtIDAuNWVtO1xuICAgICAgICAtbW96LWJveC1zaGFkb3c6IDAgMTBweCAxM3B4IHJnYmEoODQsIDgwLCA4MCwgMC4zKTtcbiAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDEwcHggMTNweCByZ2JhKDg0LCA4MCwgODAsIDAuMyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAxM3B4IHJnYmEoODQsIDgwLCA4MCwgMC4zKTtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIG1pbi13aWR0aDogMTNlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAxMDAlOyB9XG4gICAgICAjcHJpbWFyeS1uYXYgLm1lbnUgPiBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgZmxleDogMSAxIGF1dG87IH1cbiAgICAgICAgI3ByaW1hcnktbmF2IC5tZW51ID4gbGk6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgI2ZmY2IwODsgfVxuICAgICAgI3ByaW1hcnktbmF2IC5tZW51IC5hY3RpdmF0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZjYjA4O1xuICAgICAgICBjb2xvcjogd2hpdGU7IH1cbiAgICAgICAgI3ByaW1hcnktbmF2IC5tZW51IC5hY3RpdmF0ZWQgLmljb24tZG93biB7XG4gICAgICAgICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOyB9XG4gICAgI3ByaW1hcnktbmF2IC5tZW51LWljb24ge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cblxuIiwiJHBhZ2V3aWR0aDogNjNlbTtcbiRncmlkcGFkOiA0ZW07XG4kdmVydHBhZDogMWVtOyBcblxuKiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5jb250YWluZWQge1xuICBtYXJnaW46IDAgYXV0bztcbiAgbWF4LXdpZHRoOiAkcGFnZXdpZHRoO1xufVxuXG4iLCJib2R5IHsgXG4gIG1hcmdpbjogMDsgXG4gIHBhZGRpbmc6IDA7IFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuIiwiYSB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsIDAuM3MgZWFzZSk7XG4gIGNvbG9yOiBpbmhlcml0OyBcbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG59XG5cbnAgYSB7XG4gIGNvbG9yOiAkYmx1ZTtcbiAgXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiAkbHQtYmx1ZTtcbiAgfVxufSIsIi8vIE1hcCBvZiBjb21wYXNzIGV4dGVuc2lvbnMgdGhhdCBhcmUgbG9hZGVkLiBUaGUgdmFsdWUgd2lsbCBlaXRoZXIgYmVcbi8vIHRoZSB2ZXJzaW9uIG9mIHRoZSBleHRlbnNpb24gb3IgYHRydWVgIGlmIHRoZSB2ZXJzaW9uIGlzIHVua25vd24uXG4kY29tcGFzcy1leHRlbnNpb25zOiBjb21wYXNzLWV4dGVuc2lvbnMoKSAhZGVmYXVsdDtcblxuLy8gVGhlIGxpc3Qgb2YgYnJvd3NlcnMgeW91IHdhbnQgdG8gc3VwcG9ydC5cbi8vIERlZmF1bHRzIHRvIGFsbC5cbiRzdXBwb3J0ZWQtYnJvd3NlcnM6IGJyb3dzZXJzKCkgIWRlZmF1bHQ7XG5cbi8vIFRoZSBicm93c2VyIHVzYWdlIHRocmVzaG9sZCBmb3IgZmVhdHVyZXMgdGhhdCBncmFjZWZ1bGx5IGRlZ3JhZGVcbi8vIERlZmF1bHRzIHRvIDEgdXNlciBpbiAxLDAwMC5cbiRncmFjZWZ1bC11c2FnZS10aHJlc2hvbGQ6IDAuMSAhZGVmYXVsdDtcblxuLy8gVGhlIGJyb3dzZXIgdXNhZ2UgdGhyZXNob2xkIGZvciBmZWF0dXJlcyB0aGF0IGNhbm5vdCBkZWdyYWRlIGdyYWNlZnVsbHlcbi8vIERlZmF1bHRzIHRvIDEgdXNlciBpbiAxMCwwMDAuXG4kY3JpdGljYWwtdXNhZ2UtdGhyZXNob2xkOiAwLjAxICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhpcyB0byB0cnVlIHRvIGdlbmVyYXRlIGNvbW1lbnRzIHRoYXQgd2lsbCBleHBsYWluIHdoeSBhIHByZWZpeCB3YXMgaW5jbHVkZWQgb3Igb21pdHRlZC5cbiRkZWJ1Zy1icm93c2VyLXN1cHBvcnQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBNaW5pbXVtIGJyb3dzZXIgdmVyc2lvbnMgdGhhdCBtdXN0IGJlIHN1cHBvcnRlZC5cbi8vIFRoZSBrZXlzIG9mIHRoaXMgbWFwIGFyZSBhbnkgdmFsaWQgYnJvd3NlciBhY2NvcmRpbmcgdG8gYGJyb3dzZXJzKClgLlxuLy8gVGhlIHZhbHVlcyBvZiB0aGlzIG1hcCBhcmUgdGhlIG1pbiB2ZXJzaW9uIHRoYXQgaXMgdmFsaWQgZm9yIHRoYXQgYnJvd3NlclxuLy8gYWNjb3JkaW5nIHRvIGBicm93c2VyLXZlcnNpb25zKCRicm93c2VyKWBcbiRicm93c2VyLW1pbmltdW0tdmVyc2lvbnM6IChcbiAgJ2Nocm9tZSc6ICBudWxsLFxuICAnZmlyZWZveCc6IG51bGwsXG4gICdpZSc6ICAgICAgbnVsbCxcbiAgJ3NhZmFyaSc6ICBudWxsLFxuICAnb3BlcmEnOiAgIG51bGxcbikgIWRlZmF1bHQ7XG5cblxuLy8gQHByaXZhdGVcbiRkZWZhdWx0LWNhcGFiaWxpdHktb3B0aW9uczogKFxuICAoZnVsbC1zdXBwb3J0OiB0cnVlKSxcbiAgKHBhcnRpYWwtc3VwcG9ydDogdHJ1ZSlcbik7XG5cbi8vIFdoZW4gYSBwcmVmaXggaW4gaW4gY29udGV4dCwgYnV0IHRoZXJlIGlzIG5vIGN1cnJlbnQgcHJlZml4XG4vLyBUaGF0IGNvbnRleHQgaXMgcmVjb3JkZWQgaGVyZSBzbyBvdGhlciBwcmVmaXhlcyBjYW4gYmUgYXZvaWRlZC5cbiRwcmVmaXgtY29udGV4dDogbnVsbDtcblxuLy8gV2hlbiBhIHByZWZpeCBpcyBpbiBhIHNlbGVjdG9yIG9yIGRpcmVjdGl2ZSBzY29wZSwgdGhpcyBpcyBzZXQgdG8gdGhlXG4vLyBjdXJyZW50IHByZWZpeCB2YWx1ZS4gIFdoZW4gYG51bGxgLCBlaXRoZXIgdGhlcmUgaXMgbm8gcHJlZml4IGluIHNjb3BlXG4vLyBvciB0aGUgb2ZmaWNpYWwgcHJlZml4IGlzIGJlaW5nIHJlbmRlcmVkLiBUaGUgYCRwcmVmaXgtY29udGV4dGBcbi8vIHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIG1ha2UgdGhhdCBkaXN0aW5jdGlvbi5cbiRjdXJyZW50LXByZWZpeDogbnVsbDtcblxuLy8gV2hlbiBpbiBhIGNvbnRleHQgdGhhdCBvbmx5IGV4aXN0cyBpbiBhIHBhcnRpY3VsYXIgdmVyc2lvblxuLy8gdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gdGhvc2UgdmVyc2lvbnMuXG4kY3VycmVudC1icm93c2VyLXZlcnNpb25zOiAoKTtcblxuLy8gVGhlIGxlZ2FjeSBzdXBwb3J0IENTUyAyLjEgU2VsZWN0b3JzLlxuLy8gRGVmYXVsdHMgdG8gdGhlICRjcml0aWNhbC11c2FnZS10aHJlc2hvbGQuXG4kY3NzLXNlbDItc3VwcG9ydC10aHJlc2hvbGQ6ICRjcml0aWNhbC11c2FnZS10aHJlc2hvbGQgIWRlZmF1bHQ7XG5cbi8vIENoZWNrIGlmIHRoZSBicm93c2VyIGlzIGluIHNjb3BlIGdpdmVuIHRoZSBicm93c2VyIHN1cHBvcnQgYW5kIGN1cnJlbnQgcHJlZml4IG1pbmltdW1zLlxuQGZ1bmN0aW9uIGJyb3dzZXItb3V0LW9mLXNjb3BlKCRicm93c2VyLCAkdmVyc2lvbjogbnVsbCkge1xuICBAaWYgbm90IGluZGV4KCRzdXBwb3J0ZWQtYnJvd3NlcnMsICRicm93c2VyKSB7XG4gICAgQGlmICRkZWJ1Zy1icm93c2VyLXN1cHBvcnQge1xuICAgICAgQHJldHVybiBcIiN7JGJyb3dzZXJ9IGlzIG5vdCBsaXN0ZWQgYXMgYSBzdXBwb3J0ZWQgYnJvd3Nlci5cIlxuICAgIH0gQGVsc2Uge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSBAZWxzZSBpZiBub3QgKCRjdXJyZW50LXByZWZpeCA9PSBudWxsIG9yICRjdXJyZW50LXByZWZpeCA9PSBicm93c2VyLXByZWZpeCgkYnJvd3NlcikpIHtcbiAgICBAaWYgJGRlYnVnLWJyb3dzZXItc3VwcG9ydCB7XG4gICAgICBAcmV0dXJuIFwiI3skYnJvd3Nlcn0gI3skdmVyc2lvbn0gaXMgaW5jb21wYXRpYmxlIHdpdGggI3skY3VycmVudC1wcmVmaXh9LlwiXG4gICAgfSBAZWxzZSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gICRjdXJyZW50LXJhbmdlOiBtYXAtZ2V0KCRjdXJyZW50LWJyb3dzZXItdmVyc2lvbnMsICRicm93c2VyKTtcbiAgJGN1cnJlbnQtbWluOiBpZigkY3VycmVudC1yYW5nZSwgbnRoKCRjdXJyZW50LXJhbmdlLCAxKSwgbnVsbCk7XG4gICRjdXJyZW50LW1heDogaWYoJGN1cnJlbnQtcmFuZ2UsIG50aCgkY3VycmVudC1yYW5nZSwgMiksIG51bGwpO1xuICBAaWYgbm90ICgkdmVyc2lvbiBhbmQgJGN1cnJlbnQtbWF4KSB7XG4gICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgdmVyc2lvbnMgdG8gY29tcGFyZVxuICAgIEByZXR1cm4gZmFsc2U7XG4gIH0gQGVsc2Uge1xuICAgIC8vIElmIHRoZSB2ZXJzaW9uIGlzIGxlc3MgdGhhbiB0aGUgY3VycmVudCBtaW4sIGl0IGlzIG5vdCBzdXBwb3J0ZWRcbiAgICAkdG9vLW9sZDogY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkdmVyc2lvbiwgJGN1cnJlbnQtbWluKSA8IDA7XG4gICAgJHRvby1uZXc6IGNvbXBhcmUtYnJvd3Nlci12ZXJzaW9ucygkYnJvd3NlciwgJHZlcnNpb24sICRjdXJyZW50LW1heCkgPiAwO1xuICAgIEBpZiAkdG9vLW9sZCBvciAkdG9vLW5ldyB7XG4gICAgICBAaWYgJGRlYnVnLWJyb3dzZXItc3VwcG9ydCB7XG4gICAgICAgIEByZXR1cm4gXCJUaGUgY3VycmVudCBzY29wZSBvbmx5IHdvcmtzIHdpdGggI3tkaXNwbGF5LWJyb3dzZXItcmFuZ2UoJGJyb3dzZXIsICRjdXJyZW50LW1pbiwgJGN1cnJlbnQtbWF4KX0uXCI7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQ2hlY2sgd2hldGhlciB0aGUgYnJvd3NlciBpcyBzdXBwb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzdXBwb3J0ZWQgYnJvd3NlcnMsXG4vLyBkZWNsYXJlZCBtaW5pbXVtIHN1cHBvcnQgYW5kIHVzYWdlIHRocmVzaG9sZHMuXG5AZnVuY3Rpb24gc3VwcG9ydC1sZWdhY3ktYnJvd3NlcigkYnJvd3NlciwgJG1pbi12ZXJzaW9uLCAkbWF4LXZlcnNpb246IG51bGwsICR0aHJlc2hvbGQ6ICRjcml0aWNhbC11c2FnZS10aHJlc2hvbGQpIHtcbiAgQGlmIG5vdCBpbmRleCgkc3VwcG9ydGVkLWJyb3dzZXJzLCAkYnJvd3Nlcikge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQ2hlY2sgYWdhaXN0IHVzYWdlIHN0YXRzIGFuZCBkZWNsYXJlZCBtaW5pbXVtc1xuICAkbWluLXJlcXVpcmVkLXZlcnNpb246IG1hcC1nZXQoJGJyb3dzZXItbWluaW11bS12ZXJzaW9ucywgJGJyb3dzZXIpO1xuICAkdXNhZ2U6IGlmKCRtYXgtdmVyc2lvbixcbiAgICAgICAgICAgICBvbWl0dGVkLXVzYWdlKCRicm93c2VyLCAkbWluLXZlcnNpb24sICRtYXgtdmVyc2lvbiksXG4gICAgICAgICAgICAgb21pdHRlZC11c2FnZSgkYnJvd3NlciwgJG1pbi12ZXJzaW9uKSk7XG4gIEByZXR1cm4gJHVzYWdlID4gJHRocmVzaG9sZCBvclxuICAgICAgICAgICgkbWluLXJlcXVpcmVkLXZlcnNpb24gYW5kXG4gICAgICAgICAgIGNvbXBhcmUtYnJvd3Nlci12ZXJzaW9ucygkYnJvd3NlciwgJG1heC12ZXJzaW9uIG9yICRtaW4tdmVyc2lvbiwgJG1pbi1yZXF1aXJlZC12ZXJzaW9uKSA+PSAwKTtcbn1cblxuLy8gSW5jbHVkZSBjb250ZW50IGZvciBhIGxlZ2FjeSBicm93c2VyXG4vLyBWZXJzaW9uIGNhbiBiZSBhIHNpbmdsZSB2ZXJzaW9uIHN0cmluZyBvciBhIGxpc3Qgb2YgdmVyc2lvbnMgb3JkZXJlZCBmcm9tIG9sZGVzdCB0byBuZXdlc3QuXG5AbWl4aW4gZm9yLWxlZ2FjeS1icm93c2VyKCRicm93c2VyLCAkbWluLXZlcnNpb24sICRtYXgtdmVyc2lvbjogJG1pbi12ZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhyZXNob2xkOiAkY3JpdGljYWwtdXNhZ2UtdGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkcmFuZ2VzOiAoJGJyb3dzZXI6ICRtaW4tdmVyc2lvbiAkbWF4LXZlcnNpb24pKSB7XG4gIEBpZiBub3QgYnJvd3Nlci1vdXQtb2Ytc2NvcGUoJGJyb3dzZXIsICRtYXgtdmVyc2lvbikgYW5kXG4gICAgICBzdXBwb3J0LWxlZ2FjeS1icm93c2VyKCRicm93c2VyLCAkbWluLXZlcnNpb24sICRtYXgtdmVyc2lvbiwgJHRocmVzaG9sZClcbiAge1xuICAgIEBpZiAkZGVidWctYnJvd3Nlci1zdXBwb3J0IHtcbiAgICAgIC8qIENvbnRlbnQgZm9yICN7ZGlzcGxheS1icm93c2VyLXJhbmdlKCRicm93c2VyLCAkbWluLXZlcnNpb24sICRtYXgtdmVyc2lvbil9LlxuICAgICAgTWluIHZlcnNpb246ICN7bWFwLWdldCgkYnJvd3Nlci1taW5pbXVtLXZlcnNpb25zLCAkYnJvd3Nlcikgb3IgdW5zcGVjaWZpZWR9LlxuICAgICAgVXNlciB0aHJlc2hvbGQgdG8ga2VlcDogI3skdGhyZXNob2xkfSUuIElmICN7ZGlzcGxheS1icm93c2VyLXJhbmdlKCRicm93c2VyLCAkbWluLXZlcnNpb24sICRtYXgtdmVyc2lvbil9IGFyZSBvbWl0dGVkOiAje29taXR0ZWQtdXNhZ2UoJGJyb3dzZXIsICRtaW4tdmVyc2lvbiwgJG1heC12ZXJzaW9uKX0lLiAqL1xuICAgIH1cbiAgICBAaW5jbHVkZSB3aXRoLWJyb3dzZXItcmFuZ2VzKGludGVyc2VjdC1icm93c2VyLXJhbmdlcygkY3VycmVudC1icm93c2VyLXZlcnNpb25zLCAkcmFuZ2VzKSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRkZWJ1Zy1icm93c2VyLXN1cHBvcnQgYW5kIGJyb3dzZXItb3V0LW9mLXNjb3BlKCRicm93c2VyLCAkbWF4LXZlcnNpb24pIHtcbiAgICAvKiBDb250ZW50IGZvciAje2Rpc3BsYXktYnJvd3Nlci1yYW5nZSgkYnJvd3NlciwgJG1pbi12ZXJzaW9uLCAkbWF4LXZlcnNpb24pfSBvbWl0dGVkLlxuICAgICAgIE5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IHNjb3BlOiAje2Jyb3dzZXItb3V0LW9mLXNjb3BlKCRicm93c2VyLCAkbWF4LXZlcnNpb24pfSAqL1xuICB9IEBlbHNlIGlmICRkZWJ1Zy1icm93c2VyLXN1cHBvcnQgYW5kIG5vdFxuICAgICAgICAgICAgIHN1cHBvcnQtbGVnYWN5LWJyb3dzZXIoJGJyb3dzZXIsICRtaW4tdmVyc2lvbiwgJG1heC12ZXJzaW9uLCAkdGhyZXNob2xkKSB7XG4gICAgQGlmIG9taXR0ZWQtdXNhZ2UoJGJyb3dzZXIsICRtaW4tdmVyc2lvbiwgJG1heC12ZXJzaW9uKSA+ICR0aHJlc2hvbGQge1xuICAgICAgLyogQ29udGVudCBmb3IgI3tkaXNwbGF5LWJyb3dzZXItcmFuZ2UoJGJyb3dzZXIsICRtaW4tdmVyc2lvbiwgJG1heC12ZXJzaW9uKX0gb21pdHRlZC5cbiAgICAgICAgIFVzZXIgdGhyZXNob2xkIHRvIGtlZXA6ICN7JHRocmVzaG9sZH0lLiBJZiAje2Rpc3BsYXktYnJvd3Nlci1yYW5nZSgkYnJvd3NlciwgJG1pbi12ZXJzaW9uLCAkbWF4LXZlcnNpb24pfSBhbmQgYmVsb3cgYXJlIG9taXR0ZWQ6ICN7b21pdHRlZC11c2FnZSgkYnJvd3NlciwgJG1pbi12ZXJzaW9uLCAkbWF4LXZlcnNpb24pfSUuICovXG4gICAgfSBAZWxzZSB7XG4gICAgICAvKiBDb250ZW50IGZvciAje2Rpc3BsYXktYnJvd3Nlci1yYW5nZSgkYnJvd3NlciwgJG1pbi12ZXJzaW9uLCAkbWF4LXZlcnNpb24pfSBvbWl0dGVkLlxuICAgICAgICAgTWluaW11bSBzdXBwb3J0IGlzICN7bWFwLWdldCgkYnJvd3Nlci1taW5pbXVtLXZlcnNpb25zLCAkYnJvd3Nlcil9LiAqL1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZGlzcGxheS1icm93c2VyLXJhbmdlKCRicm93c2VyLCAkbWluLXZlcnNpb24sICRtYXgtdmVyc2lvbjogJG1pbi12ZXJzaW9uKSB7XG4gIEByZXR1cm4gXCIje3VucXVvdGUoJGJyb3dzZXIpfSAje3VucXVvdGUoJG1pbi12ZXJzaW9uKX0je2lmKCRtYXgtdmVyc2lvbiAhPSAkbWluLXZlcnNpb24sIHVucXVvdGUoJyAtJykgdW5xdW90ZSgkbWF4LXZlcnNpb24pLCBudWxsKX1cIjtcbn1cblxuXG4vLyBSZW5kZXJzIHRoZSBjb250ZW50IG9uY2UgaWYgYW55IG9mIHRoZSBsZWdhY3kgYnJvd3NlcnMgYXJlIHN1cHBvcnRlZC5cbi8vICRicm93c2VycyBpcyBhIG1hcCBvZiBicm93c2VyIG5hbWUgdG8gdmVyc2lvbiByYW5nZXNcbkBtaXhpbiBmb3ItbGVnYWN5LWJyb3dzZXJzKCRicm93c2VycywgJHRocmVzaG9sZDogJGNyaXRpY2FsLXVzYWdlLXRocmVzaG9sZCkge1xuICAkcmVuZGVyZWQ6IGZhbHNlO1xuICBAZWFjaCAkYnJvd3NlciwgJHJhbmdlIGluICRicm93c2VycyB7XG4gICAgQGlmIG5vdCAkcmVuZGVyZWQge1xuICAgICAgQGluY2x1ZGUgZm9yLWxlZ2FjeS1icm93c2VyKCRicm93c2VyLCAkcmFuZ2UuLi4sICR0aHJlc2hvbGQ6ICR0aHJlc2hvbGQsICRyYW5nZXM6ICRicm93c2Vycykge1xuICAgICAgICAkcmVuZGVyZWQ6IHRydWU7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBJZiB0aGVyZSdzIGEgcHJlZml4IGNvbnRleHQgaW4gc2NvcGUsIHRoaXMgd2lsbCBvbmx5IG91dHB1dCB0aGUgY29udGVudCBpZiB0aGUgcHJlZml4IG1hdGNoZXMuXG4vLyBPdGhlcndpc2UsIHNldHMgdGhlIGN1cnJlbnQgcHJlZml4IHNjb3BlIGFuZCBvdXRwdXRzIHRoZSBjb250ZW50LlxuQG1peGluIHdpdGgtcHJlZml4KCRwcmVmaXgpIHtcbiAgQGlmICRjdXJyZW50LXByZWZpeCBvciAkcHJlZml4LWNvbnRleHQge1xuICAgIEBpZiAkY3VycmVudC1wcmVmaXggPT0gJHByZWZpeCBvciAkcHJlZml4LWNvbnRleHQgPT0gJHByZWZpeCB7XG4gICAgICBAaWYgJGRlYnVnLWJyb3dzZXItc3VwcG9ydCB7XG4gICAgICAgIEBpZiAkcHJlZml4IHtcbiAgICAgICAgICAvKiBjb250ZW50IGZvciAjeyRwcmVmaXh9IGJlY2F1c2UgI3skY3VycmVudC1wcmVmaXggb3IgJHByZWZpeC1jb250ZXh0fSBpcyBhbHJlYWR5IGluIHNjb3BlLiAqL1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAvKiB1bnByZWZpeGVkIGNvbnRlbnQuICN7JGN1cnJlbnQtcHJlZml4IG9yICRwcmVmaXgtY29udGV4dH0gaXMgYWxyZWFkeSBpbiBzY29wZS4gKi9cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJG9sZC1wcmVmaXgtY29udGV4dDogJHByZWZpeC1jb250ZXh0O1xuICAgICAgJG9sZC1wcmVmaXg6ICRjdXJyZW50LXByZWZpeDtcbiAgICAgICRwcmVmaXgtY29udGV4dDogJHByZWZpeC1jb250ZXh0IG9yICRjdXJyZW50LXByZWZpeCAhZ2xvYmFsO1xuICAgICAgJGN1cnJlbnQtcHJlZml4OiAkcHJlZml4ICFnbG9iYWw7XG4gICAgICBAY29udGVudDtcbiAgICAgICRwcmVmaXgtY29udGV4dDogJG9sZC1wcmVmaXgtY29udGV4dCAhZ2xvYmFsO1xuICAgICAgJGN1cnJlbnQtcHJlZml4OiAkb2xkLXByZWZpeCAhZ2xvYmFsO1xuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBudWxsIHtcbiAgICAgICRvbGQtcHJlZml4LWNvbnRleHQ6ICRwcmVmaXgtY29udGV4dDtcbiAgICAgICRwcmVmaXgtY29udGV4dDogJHByZWZpeC1jb250ZXh0IG9yICRjdXJyZW50LXByZWZpeCAhZ2xvYmFsO1xuICAgICAgJGN1cnJlbnQtcHJlZml4OiBudWxsICFnbG9iYWw7XG4gICAgICBAaWYgJGRlYnVnLWJyb3dzZXItc3VwcG9ydCB7XG4gICAgICAgIC8qIENvbnRlbnQgZm9yIG9mZmljaWFsIHN5bnRheC4gUHJlZml4IGNvbnRleHQgaXMgc3RpbGwgI3skcHJlZml4LWNvbnRleHR9LiAqL1xuICAgICAgfVxuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkY3VycmVudC1wcmVmaXg6ICRwcmVmaXgtY29udGV4dCAhZ2xvYmFsO1xuICAgICAgJHByZWZpeC1jb250ZXh0OiAkb2xkLXByZWZpeC1jb250ZXh0ICFnbG9iYWw7XG4gICAgfSBAZWxzZSBpZiAkZGVidWctYnJvd3Nlci1zdXBwb3J0IHtcbiAgICAgIC8qIE9taXR0aW5nIGNvbnRlbnQgZm9yICN7JHByZWZpeH0gYmVjYXVzZSAjeyRjdXJyZW50LXByZWZpeH0gaXMgYWxyZWFkeSBpbiBzY29wZS4gKi9cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiAkZGVidWctYnJvd3Nlci1zdXBwb3J0IGFuZCAkcHJlZml4IHtcbiAgICAgIC8qIENyZWF0aW5nIG5ldyAjeyRwcmVmaXh9IGNvbnRleHQuICovXG4gICAgfVxuICAgICRwcmVmaXgtY29udGV4dDogJHByZWZpeCAhZ2xvYmFsO1xuICAgICRjdXJyZW50LXByZWZpeDogJHByZWZpeCAhZ2xvYmFsO1xuICAgIEBjb250ZW50O1xuICAgICRjdXJyZW50LXByZWZpeDogbnVsbCAhZ2xvYmFsO1xuICAgICRwcmVmaXgtY29udGV4dDogbnVsbCAhZ2xvYmFsO1xuICB9XG59XG5cbkBmdW5jdGlvbiBwcmVmaXhlcy1mb3ItY2FwYWJpbGl0eSgkY2FwYWJpbGl0eSwgJHRocmVzaG9sZCwgJGNhcGFiaWxpdHktb3B0aW9uczogJGRlZmF1bHQtY2FwYWJpbGl0eS1vcHRpb25zKSB7XG4gICRyZXN1bHQ6ICgpO1xuICBAZWFjaCAkcHJlZml4IGluIGJyb3dzZXItcHJlZml4ZXMoJHN1cHBvcnRlZC1icm93c2Vycykge1xuICAgICRyZXN1bHQ6IG1hcC1tZXJnZSgkcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgICgkcHJlZml4OiB1c2UtcHJlZml4KCRwcmVmaXgsICRjYXBhYmlsaXR5LCAkdGhyZXNob2xkLCAkY2FwYWJpbGl0eS1vcHRpb25zKSkpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuLy8gWWllbGRzIHRvIHRoZSBtaXhpbiBjb250ZW50IG9uY2UgZm9yIGVhY2ggcHJlZml4IHJlcXVpcmVkLlxuLy8gVGhlIGN1cnJlbnQgcHJlZml4IGlzIHNldCB0byB0aGUgJGN1cnJlbnQtcHJlZml4IGdsb2JhbCBmb3IgdXNlIGJ5IHRoZSBpbmNsdWRlZCBjb250ZW50LlxuLy8gQWxzbyB5aWVsZHMgdG8gdGhlIGNvbnRlbnQgb25jZSB3aXRoICRjdXJyZW50LXByZWZpeCBzZXQgdG8gbnVsbCBmb3IgdGhlIG9mZmljaWFsIHZlcnNpb25cbi8vIGFzIGxvbmcgYXMgdGhlcmUncyBub3QgYWxyZWFkeSBhIHByZWZpeCBpbiBzY29wZS5cbkBtaXhpbiB3aXRoLWVhY2gtcHJlZml4KCRjYXBhYmlsaXR5LCAkdGhyZXNob2xkLCAkY2FwYWJpbGl0eS1vcHRpb25zOiAkZGVmYXVsdC1jYXBhYmlsaXR5LW9wdGlvbnMpIHtcbiAgQGVhY2ggJHByZWZpeCwgJHNob3VsZC11c2UtcHJlZml4IGluIHByZWZpeGVzLWZvci1jYXBhYmlsaXR5KCRjYXBhYmlsaXR5LCAkdGhyZXNob2xkLCAkY2FwYWJpbGl0eS1vcHRpb25zKSB7XG4gICAgQGlmICRzaG91bGQtdXNlLXByZWZpeCB7XG4gICAgICBAaWYgJGRlYnVnLWJyb3dzZXItc3VwcG9ydCBhbmQgdHlwZS1vZigkc2hvdWxkLXVzZS1wcmVmaXgpID09IGxpc3Qge1xuICAgICAgICAvKiBDYXBhYmlsaXR5ICN7JGNhcGFiaWxpdHl9IGlzIHByZWZpeGVkIHdpdGggI3skcHJlZml4fSBiZWNhdXNlICN7JHNob3VsZC11c2UtcHJlZml4fSBpcyByZXF1aXJlZC4gKi9cbiAgICAgIH0gQGVsc2UgaWYgJGRlYnVnLWJyb3dzZXItc3VwcG9ydCBhbmQgdHlwZS1vZigkc2hvdWxkLXVzZS1wcmVmaXgpID09IG51bWJlciB7XG4gICAgICAgIC8qIENhcGFiaWxpdHkgI3skY2FwYWJpbGl0eX0gaXMgcHJlZml4ZWQgd2l0aCAjeyRwcmVmaXh9IGJlY2F1c2UgI3skc2hvdWxkLXVzZS1wcmVmaXh9JSBvZiB1c2VycyBuZWVkIGl0IHdoaWNoIGlzIG1vcmUgdGhhbiB0aGUgdGhyZXNob2xkIG9mICN7JHRocmVzaG9sZH0lLiAqL1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgd2l0aC1wcmVmaXgoJHByZWZpeCkge1xuICAgICAgICBAaW5jbHVkZSB3aXRoLWJyb3dzZXItcmFuZ2VzKCRjYXBhYmlsaXR5KSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRkZWJ1Zy1icm93c2VyLXN1cHBvcnQge1xuICAgICAgLyogQ2FwYWJpbGl0eSAjeyRjYXBhYmlsaXR5fSBpcyBub3QgcHJlZml4ZWQgd2l0aCAjeyRwcmVmaXh9IGJlY2F1c2UgI3twcmVmaXgtdXNhZ2UoJHByZWZpeCwgJGNhcGFiaWxpdHksICRjYXBhYmlsaXR5LW9wdGlvbnMpfSUgb2YgdXNlcnMgYXJlIGFmZmVjdGVkIHdoaWNoIGlzIGxlc3MgdGhhbiB0aGUgdGhyZXNob2xkIG9mICN7JHRocmVzaG9sZH0uICovXG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHdpdGgtcHJlZml4KG51bGwpIHtcbiAgICBAaW5jbHVkZSB3aXRoLWJyb3dzZXItcmFuZ2VzKCRjYXBhYmlsaXR5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gUmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBicm93c2VyLXZlcnNpb24gcGFpciBpbiAkc3Vic2V0LXJhbmdlc1xuLy8gaXMgYSBoaWdoZXIgKG9yIHNhbWUpIHZlcnNpb24gdGhhbiB0aGUgYnJvd3Nlci12ZXJzaW9uIHBhaXJzIGluXG4vLyAkcmFuZ2VzLlxuQGZ1bmN0aW9uIGhhcy1icm93c2VyLXN1YnNldCgkcmFuZ2VzLCAkc3Vic2V0LXJhbmdlcykge1xuICAkZm91bmQtbWlzbWF0Y2g6IGZhbHNlO1xuICBAZWFjaCAkYnJvd3NlciwgJHN1YnNldC1yYW5nZSBpbiAkc3Vic2V0LXJhbmdlcyB7XG4gICAgJHJhbmdlOiBtYXAtZ2V0KCRyYW5nZXMsICRicm93c2VyKTtcbiAgICBAaWYgJHJhbmdlIHtcbiAgICAgICRtaW4tMTogbnRoKCRzdWJzZXQtcmFuZ2UsIDEpO1xuICAgICAgJG1heC0xOiBudGgoJHN1YnNldC1yYW5nZSwgMik7XG4gICAgICAkbWluLTI6IG50aCgkcmFuZ2UsIDEpO1xuICAgICAgJG1heC0yOiBudGgoJHJhbmdlLCAyKTtcbiAgICAgIEBpZiAoY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkbWluLTIsICRtaW4tMSkgPD0gMCBhbmRcbiAgICAgICAgICAgY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkbWluLTEsICRtYXgtMikgPD0gMCkgb3JcbiAgICAgICAgICAoY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkbWluLTIsICRtYXgtMSkgPD0gMCBhbmRcbiAgICAgICAgICAgY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkbWF4LTEsICRtYXgtMikgPD0gMCkgb3JcbiAgICAgICAgICAoY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkbWluLTEsICRtaW4tMikgPD0gMCBhbmRcbiAgICAgICAgICAgY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkbWF4LTEsICRtYXgtMikgPj0gMCkgb3JcbiAgICAgICAgICAoY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkbWluLTEsICRtaW4tMikgPj0gMCBhbmRcbiAgICAgICAgICAgY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkbWF4LTEsICRtYXgtMikgPD0gMCkge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZvdW5kLW1pc21hdGNoOiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gbm90ICRmb3VuZC1taXNtYXRjaDtcbn1cblxuLy8gV2hlbiB0aGUgc2FtZSBicm93c2VyIGlzIGluIGJvdGggbWFwcywgdGhlbiB0aGUgbWluaW11bSB3aWxsIGJlIHNldFxuLy8gdG8gdGhlIG1heGltdW0gb2YgdGhlIHR3byBtaW5pbXVtIHZlcnNpb25zLCBhbmQgdGhlIG1heGltdW0gd2lsbCBiZVxuLy8gc2V0IHRvIHRoZSBtaW5tdW0gb2YgdGhlIHR3byBtYXhpbXVtIHZlcnNpb25zLlxuQGZ1bmN0aW9uIGludGVyc2VjdC1icm93c2VyLXJhbmdlcygkcmFuZ2VzLCAkbmV3LXJhbmdlcykge1xuICBAZWFjaCAkYnJvd3NlciwgJG5ldy1yYW5nZSBpbiAkbmV3LXJhbmdlcyB7XG4gICAgJG9sZC1yYW5nZTogbWFwLWdldCgkcmFuZ2VzLCAkYnJvd3Nlcik7XG4gICAgQGlmICRvbGQtcmFuZ2Uge1xuICAgICAgJG9sZC1taW46IG50aCgkb2xkLXJhbmdlLCAxKTtcbiAgICAgICRvbGQtbWF4OiBpZihsZW5ndGgoJG9sZC1yYW5nZSkgPT0gMSwgJG9sZC1taW4sIG50aCgkb2xkLXJhbmdlLCAyKSk7XG4gICAgICAkbmV3LW1pbjogbnRoKCRuZXctcmFuZ2UsIDEpO1xuICAgICAgJG5ldy1tYXg6IGlmKGxlbmd0aCgkbmV3LXJhbmdlKSA9PSAxLCAkbmV3LW1pbiwgbnRoKCRuZXctcmFuZ2UsIDIpKTtcbiAgICAgICRtYXhpbWluOiBpZihjb21wYXJlLWJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIsICRvbGQtbWluLCAkbmV3LW1pbikgPiAwLFxuICAgICAgICAgICAgICAgICAgICRvbGQtbWluLCAkbmV3LW1pbik7XG4gICAgICAkbWluaW1heDogaWYoY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkb2xkLW1heCwgJG5ldy1tYXgpIDwgMCxcbiAgICAgICAgICAgICAgICAgICAkb2xkLW1heCwgJG5ldy1tYXgpO1xuICAgICAgJHJhbmdlczogbWFwLW1lcmdlKCRyYW5nZXMsICgkYnJvd3NlcjogJG1heGltaW4gJG1pbmltYXgpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyYW5nZXM6IG1hcC1tZXJnZSgkcmFuZ2VzLCAoJGJyb3dzZXI6ICRuZXctcmFuZ2UpKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkcmFuZ2VzO1xufVxuXG4vLyBJZiBwYXNzZWQgYSBtYXAsIHRoYXQgd2lsbCBiZSB0aGUgbmV3IGJyb3dzZXIgcmFuZ2VzLlxuLy8gT3RoZXJ3aXNlIGEgcmFuZ2UgbWFwIHdpbGwgYmUgY3JlYXRlZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gY2FwYWJpbGl0eSBhbmQgcHJlZml4XG4vLyB1c2luZyB0aGUgYGJyb3dzZXItcmFuZ2VzKCRjYXBhYmlsaXR5LCAkcHJlZml4KWAgZnVuY3Rpb24uXG4vL1xuLy8gSWYgdGhlcmUgYXJlIGN1cnJlbnQgcmFuZ2VzIGluIHNjb3BlIGFuZCB0aGUgbmV3IHJhbmdlcyBoYXZlIHNvbWUgb3ZlcmxhcFxuLy8gd2l0aCB0aGUgY3VycmVudCwgXG4vL1xuLy8gSWYgdGhlcmUgaXMgbm8gb3ZlcmxhcCwgdGhlbiB0aGUgY29udGVudCB3aWxsIG5vdCBiZSByZW5kZXJlZC5cbkBtaXhpbiB3aXRoLWJyb3dzZXItcmFuZ2VzKCRjYXBhYmlsaXR5LCAkcHJlZml4OiAkY3VycmVudC1wcmVmaXgpIHtcbiAgJG5ldy1yYW5nZXM6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRjYXBhYmlsaXR5KSA9PSBtYXAge1xuICAgICRuZXctcmFuZ2VzOiAkY2FwYWJpbGl0eTtcbiAgfSBAZWxzZSB7XG4gICAgJG5ldy1yYW5nZXM6IGJyb3dzZXItcmFuZ2VzKCRjYXBhYmlsaXR5LCAkcHJlZml4KTtcbiAgfVxuXG4gIEBpZiBoYXMtYnJvd3Nlci1zdWJzZXQoJGN1cnJlbnQtYnJvd3Nlci12ZXJzaW9ucywgJG5ldy1yYW5nZXMpIHtcbiAgICAkb2xkLXJhbmdlczogJGN1cnJlbnQtYnJvd3Nlci12ZXJzaW9ucztcbiAgICAkY3VycmVudC1icm93c2VyLXZlcnNpb25zOiBpbnRlcnNlY3QtYnJvd3Nlci1yYW5nZXMoJG9sZC1yYW5nZXMsICRuZXctcmFuZ2VzKSAhZ2xvYmFsO1xuICAgIEBjb250ZW50O1xuICAgICRjdXJyZW50LWJyb3dzZXItdmVyc2lvbnM6ICRvbGQtcmFuZ2VzICFnbG9iYWw7XG4gIH0gQGVsc2UgaWYgJGRlYnVnLWJyb3dzZXItc3VwcG9ydCB7XG4gICAgLyogRXhjbHVkaW5nIGNvbnRlbnQgYmVjYXVzZSAje2luc3BlY3QoJG5ldy1yYW5nZXMpfSBpcyBub3QgaW5jbHVkZWQgd2l0aGluXG4gICAgICAgI3tpbnNwZWN0KCRjdXJyZW50LWJyb3dzZXItdmVyc2lvbnMpfSAqL1xuICB9XG59XG5cbi8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJlZml4ZWQgdXNhZ2Ugc3RhdHMgZm9yIHRoZSBjYXBhYmlsaXR5IGV4Y2VlZCB0aGUgdGhyZXNob2xkXG4vLyBvciBpZiB0aGUgbWluaW11bSB2ZXJzaW9uIGZvciBhIHN1cHBvcnRlZCBicm93c2VyIHdvdWxkIHJlcXVpcmUgYSBwcmVmaXggZm9yIHRoZSBjYXBhYmlsaXR5LlxuQGZ1bmN0aW9uIHVzZS1wcmVmaXgoJHByZWZpeCwgJGNhcGFiaWxpdHksICR0aHJlc2hvbGQsICRjYXBhYmlsaXR5LW9wdGlvbnM6ICRkZWZhdWx0LWNhcGFiaWxpdHktb3B0aW9ucykge1xuICAkdXNhZ2U6IHByZWZpeC11c2FnZSgkcHJlZml4LCAkY2FwYWJpbGl0eSwgJGNhcGFiaWxpdHktb3B0aW9ucyk7XG4gIEBpZiAkdXNhZ2UgPiAkdGhyZXNob2xkIHtcbiAgICBAcmV0dXJuICR1c2FnZTtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGJyb3dzZXIgaW4gYnJvd3NlcnMoJHByZWZpeCkge1xuICAgICAgQGlmIGluZGV4KCRzdXBwb3J0ZWQtYnJvd3NlcnMsICRicm93c2VyKSB7XG4gICAgICAgICRtaW4tdmVyc2lvbjogbWFwLWdldCgkYnJvd3Nlci1taW5pbXVtLXZlcnNpb25zLCAkYnJvd3Nlcik7XG4gICAgICAgIEBpZiAkbWluLXZlcnNpb24ge1xuICAgICAgICAgICRhY3R1YWwtcHJlZml4OiBicm93c2VyLXJlcXVpcmVzLXByZWZpeCgkYnJvd3NlciwgJG1pbi12ZXJzaW9uLCAkY2FwYWJpbGl0eSwgJGNhcGFiaWxpdHktb3B0aW9ucyk7XG4gICAgICAgICAgQGlmICRhY3R1YWwtcHJlZml4IGFuZCAkcHJlZml4ID09ICRhY3R1YWwtcHJlZml4IHtcbiAgICAgICAgICAgIEByZXR1cm4gJGJyb3dzZXIgJG1pbi12ZXJzaW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG5AZnVuY3Rpb24gcHJlZml4LWlkZW50aWZpZXIoJGlkZW50LCAkcHJlZml4OiAkY3VycmVudC1wcmVmaXgpIHtcbiAgQHJldHVybiB1bnF1b3RlKFwiI3skcHJlZml4fSN7aWYoJHByZWZpeCwgJy0nLCBudWxsKX0jeyRpZGVudH1cIik7XG59XG5cbi8vIE91dHB1dCBhIHByb3BlcnR5IGFuZCB2YWx1ZSB1c2luZyB0aGUgY3VycmVudCBwcmVmaXguXG4vLyBJdCB3aWxsIGJlIHVucHJlZml4ZWQgaWYgJGN1cnJlbnQtcHJlZml4IGlzIG51bGwuXG5AbWl4aW4gcHJlZml4LXByb3AoJHByb3BlcnR5LCAkdmFsdWUsICRwcmVmaXg6ICRjdXJyZW50LXByZWZpeCkge1xuICAje3ByZWZpeC1pZGVudGlmaWVyKCRwcm9wZXJ0eSwgJHByZWZpeCl9OiAkdmFsdWU7XG59XG5cbi8vIEVtaXQgYSBzZXQgb2YgcHJvcGVydGllcyB3aXRoIHRoZSBwcmVmaXggZ292ZXJuZWQgYnkgdGhlIGNhcGFiaWxpdHkgYW5kIHVzYWdlIHRocmVzaG9sZCBnaXZlbi5cbi8vXG4vLyBFeGFtcGxlOlxuLy9cbi8vICAgICBAaW5jbHVkZSBwcmVmaXhlZC1wcm9wZXJ0aWVzKGNzcy1hbmltYXRpb24sICRhbmltYXRpb24tc3VwcG9ydC10aHJlc2hvbGQsXG4vLyAgICAgICAoYW5pbWF0aW9uLW5hbWU6IGZvbywgYW5pbWF0aW9uLWR1cmF0aW9uOiAycylcbi8vICAgICApO1xuQG1peGluIHByZWZpeGVkLXByb3BlcnRpZXMoJGNhcGFiaWxpdHksICR0aHJlc2hvbGQsICRwcm9wZXJ0aWVzLCAkY2FwYWJpbGl0eS1vcHRpb25zOiAkZGVmYXVsdC1jYXBhYmlsaXR5LW9wdGlvbnMpIHtcbiAgQGluY2x1ZGUgd2l0aC1lYWNoLXByZWZpeCgkY2FwYWJpbGl0eSwgJHRocmVzaG9sZCwgJGNhcGFiaWxpdHktb3B0aW9ucykge1xuICAgIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJHByb3BlcnRpZXMge1xuICAgICAgQGluY2x1ZGUgcHJlZml4LXByb3AoJHByb3AsICR2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gQHByaXZhdGVcbkBmdW5jdGlvbiB3YXJuLWFib3V0LW9sZC12YXJpYWJsZXMoKSB7XG4gICRvbGQtdmFyaWFibGVzLWluLXVzZTogKCk7XG4gIEBlYWNoICRvbGQtdmFyaWFibGUtbmFtZSBpblxuICAgICAgICAobGVnYWN5LXN1cHBvcnQtZm9yLWllLCBsZWdhY3ktc3VwcG9ydC1mb3ItaWU2LCBsZWdhY3ktc3VwcG9ydC1mb3ItaWU3LFxuICAgICAgICAgbGVnYWN5LXN1cHBvcnQtZm9yLWllOCwgbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGEsIGxlZ2FjeS1zdXBwb3J0LWZvci13ZWJraXQsXG4gICAgICAgICBleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSwgZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgICAgICAgIGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSwgZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgICAgICAgIGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCwgZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZylcbiAge1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCRvbGQtdmFyaWFibGUtbmFtZSkge1xuICAgICAgJG9sZC12YXJpYWJsZXMtaW4tdXNlOiBhcHBlbmQoJG9sZC12YXJpYWJsZXMtaW4tdXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5xdW90ZShcIiQjeyRvbGQtdmFyaWFibGUtbmFtZX1cIiksIGNvbW1hKTtcbiAgICB9XG4gIH1cbiAgQGlmIGxlbmd0aCgkb2xkLXZhcmlhYmxlcy1pbi11c2UpID4gMCB7XG4gICAgQHdhcm4gXCJDb21wYXNzIGhhcyBjaGFuZ2VkIGhvdyBicm93c2VyIHN1cHBvcnQgaXMgY29uZmlndXJlZC4gXCIgK1xuICAgICAgICAgIFwiVGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBcIiArXG4gICAgICAgICAgXCJhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZDogI3skb2xkLXZhcmlhYmxlcy1pbi11c2V9LlwiICtcbiAgICAgICAgICBcIkRldGFpbHM6IGh0dHA6Ly9jb21wYXNzLXN0eWxlLm9yZy9oZWxwL2RvY3VtZW50YXRpb24vdHVuaW5nLXZlbmRvci1wcmVmaXhlcy9cIlxuICB9XG4gIEByZXR1cm4gJG9sZC12YXJpYWJsZXMtaW4tdXNlO1xufVxuXG4vLyBAcHJpdmF0ZVxuQGZ1bmN0aW9uIHdhcm4tYWJvdXQtcGllLXJlbW92YWwoKSB7XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUpIHtcbiAgICBAd2FybiBcIkNvbXBhc3Mgbm8gbG9uZ2VyIHN1cHBvcnRzIGNzczNwaWUuXCI7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLyBFbmFibGUgYnJvd3NlciBzdXBwb3J0IGRlYnVnZ2luZyB3aXRoaW4gdGhlIGNvbnRlbnQgYmxvY2suXG4vLyBPciB5b3UgY2FuIGVuYWJsZSBpdCBmb3IgdGhlIHdob2xlIHN0eWxlc2hlZXQgYnkgc2V0dGluZyBgJGRlYnVnLWJyb3dzZXItc3VwcG9ydGAgdG8gdHJ1ZS5cbkBtaXhpbiB3aXRoLWJyb3dzZXItc3VwcG9ydC1kZWJ1Z2dpbmcge1xuICAkY3VycmVudC1zdGF0dXM6ICRkZWJ1Zy1icm93c2VyLXN1cHBvcnQ7XG4gICRkZWJ1Zy1icm93c2VyLXN1cHBvcnQ6IHRydWUgIWdsb2JhbDtcbiAgQGNvbnRlbnQ7XG4gICRkZWJ1Zy1icm93c2VyLXN1cHBvcnQ6ICRjdXJyZW50LXN0YXR1cyAhZ2xvYmFsO1xufVxuXG4vLyBTZXQgYSBkZWZhdWx0IHZhbHVlIGlmIHRoZSBnaXZlbiBhcmdsaXN0IGlzIGVtcHR5XG5AZnVuY3Rpb24gc2V0LWFyZ2xpc3QtZGVmYXVsdCgkYXJnbGlzdCwgJGRlZmF1bHQpIHtcbiAgJGRlZmF1bHQtaW5kZXg6IGluZGV4KCRhcmdsaXN0LCBkZWZhdWx0KTtcbiAgQGlmICRkZWZhdWx0LWluZGV4IHtcbiAgICAkYXJnbGlzdDogc2V0LW50aCgkYXJnbGlzdCwgJGRlZmF1bHQtaW5kZXgsICRkZWZhdWx0KVxuICB9XG4gIEByZXR1cm4gaWYobGVuZ3RoKCRhcmdsaXN0KSA+IDAsICRhcmdsaXN0LCAkZGVmYXVsdCk7XG59XG5cblxuLy8gQHByaXZhdGVcbiRvbGQtdmFyaWFibGUtd2FybmluZ3MtaXNzdWVkOiB3YXJuLWFib3V0LW9sZC12YXJpYWJsZXMoKSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbiRwaWUtcmVtb3ZhbC13YXJuaW5nLWlzc3VlZDogd2Fybi1hYm91dC1waWUtcmVtb3ZhbCgpICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuQGZ1bmN0aW9uIHdhcm4tYWJvdXQtdXNlbGVzcy1wcmVmaXgtYXJndW1lbnRzKCRtb3o6IG51bGwsICR3ZWJraXQ6IG51bGwsICRvOiBudWxsLCAka2h0bWw6IG51bGwsICRvZmZpY2lhbDogbnVsbCkge1xuICBAaWYgJG1veiAhPSBudWxsIG9yICR3ZWJraXQgIT0gbnVsbCBvciAkbyAhPSBudWxsIG9yICRraHRtbCAhPSBudWxsIG9yICRvZmZpY2lhbCAhPSBudWxsIHtcbiAgICBAd2FybiBcIkJyb3dzZXIgcHJlZml4IGFyZ3VtZW50cyB0byB0aGlzIG1peGluIGFyZSBubyBsb25nZXIgdXNlZCBhbmQgXCIgK1xuICAgICAgICAgIFwid2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuXCI7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLyBjb2VyY2UgYSBsaXN0IHRvIGJlIGNvbW1hIGRlbGltaXRlZCBvciBtYWtlIGEgbmV3LCBlbXB0eSBjb21tYSBkZWxpbWl0ZWQgbGlzdC5cbkBmdW5jdGlvbiBjb21tYS1saXN0KCRsaXN0OiAoKSkge1xuICBAcmV0dXJuIGpvaW4oKCksICRsaXN0LCBjb21tYSk7XG59XG5cbi8vIEBwcml2YXRlIFJldHVybnMgdGhlIGxlZ2FjeSB2YWx1ZSBmb3IgYSBnaXZlbiBib3gtbW9kZWxcbi8vIC0gVXNlZCBieSBiYWNrZ3JvdW5kLWNsaXAgYW5kIC1vcmlnaW4uXG5AZnVuY3Rpb24gbGVnYWN5LWJveCgkYm94KSB7XG4gICRib3g6IHVucXVvdGUoJGJveCk7XG4gIEBpZiAkYm94ID09IHBhZGRpbmctYm94IHsgJGJveDogcGFkZGluZzsgfVxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IHsgJGJveDogYm9yZGVyOyB9XG4gIEBpZiAkYm94ID09IGNvbnRlbnQtYm94IHsgJGJveDogY29udGVudDsgfVxuICBAcmV0dXJuICRib3g7XG59XG4iLCJAaW1wb3J0IFwiY29tcGFzcy9zdXBwb3J0XCI7XG5cbi8vIFRoZSB0aGUgdXNlciB0aHJlc2hvbGQgZm9yIHRyYW5zaXRpb24gc3VwcG9ydC4gRGVmYXVsdHMgdG8gYCRncmFjZWZ1bC11c2FnZS10aHJlc2hvbGRgXG4kdHJhbnNpdGlvbi1zdXBwb3J0LXRocmVzaG9sZDogJGdyYWNlZnVsLXVzYWdlLXRocmVzaG9sZCAhZGVmYXVsdDtcblxuXG4vLyBDU1MgVHJhbnNpdGlvbnNcbi8vIEN1cnJlbnRseSBvbmx5IHdvcmtzIGluIFdlYmtpdC5cbi8vXG4vLyAqIGV4cGVjdGVkIGluIENTUzMsIEZpcmVGb3ggMy42LzcgYW5kIE9wZXJhIFByZXN0byAyLjNcbi8vICogV2UnbGwgYmUgcHJlcGFyZWQuXG4vL1xuLy8gSW5jbHVkaW5nIHRoaXMgc3VibW9kdWxlIHNldHMgZm9sbG93aW5nIGRlZmF1bHRzIGZvciB0aGUgbWl4aW5zOlxuLy9cbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5IDogYWxsXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbiA6IDFzXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbiA6IGZhbHNlXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSAgICA6IGZhbHNlXG4vL1xuLy8gT3ZlcnJpZGUgdGhlbSBpZiB5b3UgbGlrZS4gVGltaW5nLWZ1bmN0aW9uIGFuZCBkZWxheSBhcmUgc2V0IHRvIGZhbHNlIGZvciBicm93c2VyIGRlZmF1bHRzIChlYXNlLCAwcykuXG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHk6IGFsbCAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMXMgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb246IG51bGwgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXk6IG51bGwgIWRlZmF1bHQ7XG5cbiR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXM6IHRyYW5zZm9ybSwgdHJhbnNmb3JtLW9yaWdpbiAhZGVmYXVsdDtcblxuXG5cbi8vIENoZWNrcyBpZiB0aGUgdmFsdWUgZ2l2ZW4gaXMgYSB1bml0IG9mIHRpbWUuXG5AZnVuY3Rpb24gaXMtdGltZSgkdmFsdWUpIHtcbiAgQHJldHVybiBpZih0eXBlLW9mKCR2YWx1ZSkgPT0gbnVtYmVyLCBub3Qgbm90IGluZGV4KHMgbXMsIHVuaXQoJHZhbHVlKSksIGZhbHNlKTtcbn1cblxuLy8gUmV0dXJucyBgJHByb3BlcnR5YCB3aXRoIHRoZSBnaXZlbiBwcmVmaXggaWYgaXQgaXMgZm91bmQgaW4gYCR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXNgLlxuQGZ1bmN0aW9uIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICRwcm9wZXJ0eSkge1xuICBAaWYgbm90ICRwcmVmaXgge1xuICAgIEByZXR1cm4gJHByb3BlcnR5O1xuICB9XG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eSkgPT0gbGlzdCBvciB0eXBlLW9mKCRwcm9wZXJ0eSkgPT0gYXJnbGlzdCB7XG4gICAgJG5ldy1saXN0OiBjb21tYS1saXN0KCk7XG4gICAgQGVhY2ggJHYgaW4gJHByb3BlcnR5IHtcbiAgICAgICRuZXctbGlzdDogYXBwZW5kKCRuZXctbGlzdCwgcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oJHByZWZpeCwgJHYpKTtcbiAgICB9XG4gICAgQHJldHVybiAkbmV3LWxpc3Q7XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBpbmRleCgkdHJhbnNpdGlvbmFibGUtcHJlZml4ZWQtdmFsdWVzLCAkcHJvcGVydHkpIHtcbiAgICAgIEByZXR1cm4gI3skcHJlZml4fS0jeyRwcm9wZXJ0eX07XG4gICAgfSBAZWxzZSB7XG4gICAgICBAcmV0dXJuICRwcm9wZXJ0eTtcbiAgICB9XG4gIH1cbn1cblxuLy8gUmV0dXJucyAkdHJhbnNpdGlvbi1tYXAgd2hpY2ggaW5jbHVkZXMga2V5IGFuZCB2YWx1ZXMgdGhhdCBtYXAgdG8gYSB0cmFuc2l0aW9uIGRlY2xhcmF0aW9uXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1tYXAoJHRyYW5zaXRpb24pIHtcbiAgJHRyYW5zaXRpb24tbWFwOiAoKTtcblxuICBAZWFjaCAkaXRlbSBpbiAkdHJhbnNpdGlvbiB7XG4gICAgQGlmIGlzLXRpbWUoJGl0ZW0pIHtcbiAgICAgIEBpZiBtYXAtaGFzLWtleSgkdHJhbnNpdGlvbi1tYXAsIGR1cmF0aW9uKSB7XG4gICAgICAgICR0cmFuc2l0aW9uLW1hcDogbWFwLW1lcmdlKCR0cmFuc2l0aW9uLW1hcCwgKGRlbGF5OiAkaXRlbSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR0cmFuc2l0aW9uLW1hcDogbWFwLW1lcmdlKCR0cmFuc2l0aW9uLW1hcCwgKGR1cmF0aW9uOiAkaXRlbSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgbWFwLWhhcy1rZXkoJHRyYW5zaXRpb24tbWFwLCBwcm9wZXJ0eSkge1xuICAgICAgJHRyYW5zaXRpb24tbWFwOiBtYXAtbWVyZ2UoJHRyYW5zaXRpb24tbWFwLCAodGltaW5nLWZ1bmN0aW9uOiAkaXRlbSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHRyYW5zaXRpb24tbWFwOiBtYXAtbWVyZ2UoJHRyYW5zaXRpb24tbWFwLCAocHJvcGVydHk6ICRpdGVtKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdHJhbnNpdGlvbi1tYXA7XG59XG5cbi8vIE9uZSBvciBtb3JlIHByb3BlcnRpZXMgdG8gdHJhbnNpdGlvblxuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiBhbHNvIGFjY2VwdHMgXCJhbGxcIiBvciBcIm5vbmVcIlxuXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSgkcHJvcGVydGllcy4uLikge1xuICAkcHJvcGVydGllczogc2V0LWFyZ2xpc3QtZGVmYXVsdCgkcHJvcGVydGllcywgJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHdpdGgtZWFjaC1wcmVmaXgoY3NzLXRyYW5zaXRpb25zLCAkdHJhbnNpdGlvbi1zdXBwb3J0LXRocmVzaG9sZCkge1xuICAgICRwcm9wczogaWYoJGN1cnJlbnQtcHJlZml4LCBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigkY3VycmVudC1wcmVmaXgsICRwcm9wZXJ0aWVzKSwgJHByb3BlcnRpZXMpO1xuICAgIEBpbmNsdWRlIHByZWZpeC1wcm9wKHRyYW5zaXRpb24tcHJvcGVydHksICRwcm9wcyk7XG4gIH1cbn1cblxuLy8gT25lIG9yIG1vcmUgZHVyYXRpb25zIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZHVyYXRpb25zIHdpbGwgYWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZHVyYXRpb24oJGR1cmF0aW9ucy4uLikge1xuICAkZHVyYXRpb25zOiBzZXQtYXJnbGlzdC1kZWZhdWx0KCRkdXJhdGlvbnMsICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pO1xuICBAaW5jbHVkZSBwcmVmaXhlZC1wcm9wZXJ0aWVzKGNzcy10cmFuc2l0aW9ucywgJHRyYW5zaXRpb24tc3VwcG9ydC10aHJlc2hvbGQsIChcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAkZHVyYXRpb25zXG4gICkpO1xufVxuXG4vLyBPbmUgb3IgbW9yZSB0aW1pbmcgZnVuY3Rpb25zXG4vL1xuLy8gKiBbIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dCB8IGN1YmljLWJlemllcih4MSwgeTEsIHgyLCB5MildXG4vLyAqIEZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogVGhlc2UgZnVuY3Rpb25zIHdpbGwgZWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKCRmdW5jdGlvbnMuLi4pIHtcbiAgJGZ1bmN0aW9uczogc2V0LWFyZ2xpc3QtZGVmYXVsdCgkZnVuY3Rpb25zLCAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uKTtcbiAgQGluY2x1ZGUgcHJlZml4ZWQtcHJvcGVydGllcyhjc3MtdHJhbnNpdGlvbnMsICR0cmFuc2l0aW9uLXN1cHBvcnQtdGhyZXNob2xkLCAoXG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ICRmdW5jdGlvbnNcbiAgKSk7XG59XG5cbi8vIE9uZSBvciBtb3JlIHRyYW5zaXRpb24tZGVsYXlzIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZGVsYXlzIHdpbGwgZWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZGVsYXkoJGRlbGF5cy4uLikge1xuICAkZGVsYXlzOiBzZXQtYXJnbGlzdC1kZWZhdWx0KCRkZWxheXMsICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXkpO1xuICBAaW5jbHVkZSBwcmVmaXhlZC1wcm9wZXJ0aWVzKGNzcy10cmFuc2l0aW9ucywgJHRyYW5zaXRpb24tc3VwcG9ydC10aHJlc2hvbGQsIChcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAkZGVsYXlzXG4gICkpO1xufVxuXG4vLyBUcmFuc2l0aW9uIGFsbC1pbi1vbmUgc2hvcnRoYW5kXG5cbkBtaXhpbiBzaW5nbGUtdHJhbnNpdGlvbihcbiAgJHByb3BlcnR5OiAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5LFxuICAkZHVyYXRpb246ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24sXG4gICRmdW5jdGlvbjogJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbixcbiAgJGRlbGF5OiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5XG4pIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb21wYWN0KCRwcm9wZXJ0eSAkZHVyYXRpb24gJGZ1bmN0aW9uICRkZWxheSkpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbigkdHJhbnNpdGlvbnMuLi4pIHtcbiAgJGRlZmF1bHQ6IChjb21wYWN0KCRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHkgJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbiAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXkpLCk7XG4gICR0cmFuc2l0aW9uczogaWYobGVuZ3RoKCR0cmFuc2l0aW9ucykgPT0gMSBhbmQgdHlwZS1vZihudGgoJHRyYW5zaXRpb25zLCAxKSkgPT0gbGlzdCBhbmQgbGlzdC1zZXBhcmF0b3IobnRoKCR0cmFuc2l0aW9ucywgMSkpID09IGNvbW1hLCBudGgoJHRyYW5zaXRpb25zLCAxKSwgJHRyYW5zaXRpb25zKTtcbiAgJHRyYW5zaXRpb25zOiBzZXQtYXJnbGlzdC1kZWZhdWx0KCR0cmFuc2l0aW9ucywgJGRlZmF1bHQpO1xuXG5cbiAgQGluY2x1ZGUgd2l0aC1lYWNoLXByZWZpeChjc3MtdHJhbnNpdGlvbnMsICR0cmFuc2l0aW9uLXN1cHBvcnQtdGhyZXNob2xkKSB7XG4gICAgJGRlbGF5czogY29tbWEtbGlzdCgpO1xuICAgICR0cmFuc2l0aW9ucy13aXRob3V0LWRlbGF5czogY29tbWEtbGlzdCgpO1xuICAgICR0cmFuc2l0aW9ucy13aXRoLWRlbGF5czogY29tbWEtbGlzdCgpO1xuICAgICRoYXMtZGVsYXlzOiBmYWxzZTtcblxuXG4gICAgLy8gVGhpcyBibG9jayBjYW4gYmUgbWFkZSBjb25zaWRlcmFibHkgc2ltcGxlciBhdCB0aGUgcG9pbnQgaW4gdGltZSB0aGF0XG4gICAgLy8gd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gZGVhbCB3aXRoIHRoZSBkaWZmZXJlbmNlcyBpbiBob3cgZGVsYXlzIGFyZSB0cmVhdGVkLlxuICAgIEBlYWNoICR0cmFuc2l0aW9uIGluICR0cmFuc2l0aW9ucyB7XG4gICAgICAvLyBEZWNsYXJlIGluaXRpYWwgdmFsdWVzIGZvciB0cmFuc2l0aW9uXG4gICAgICAkdHJhbnNpdGlvbjogdHJhbnNpdGlvbi1tYXAoJHRyYW5zaXRpb24pO1xuXG4gICAgICAkcHJvcGVydHk6IG1hcC1nZXQoJHRyYW5zaXRpb24sIHByb3BlcnR5KTtcbiAgICAgICRkdXJhdGlvbjogbWFwLWdldCgkdHJhbnNpdGlvbiwgZHVyYXRpb24pO1xuICAgICAgJHRpbWluZy1mdW5jdGlvbjogbWFwLWdldCgkdHJhbnNpdGlvbiwgdGltaW5nLWZ1bmN0aW9uKTtcbiAgICAgICRkZWxheTogbWFwLWdldCgkdHJhbnNpdGlvbiwgZGVsYXkpO1xuXG4gICAgICAvLyBQYXJzZSB0cmFuc2l0aW9uIHN0cmluZyB0byBhc3NpZ24gdmFsdWVzIGludG8gY29ycmVjdCB2YXJpYWJsZXNcbiAgICAgICRoYXMtZGVsYXlzOiAkaGFzLWRlbGF5cyBvciAkZGVsYXk7XG5cbiAgICAgIEBpZiAkY3VycmVudC1wcmVmaXggPT0gLXdlYmtpdCB7XG4gICAgICAgIC8vIEtlZXAgYSBsaXN0IG9mIGRlbGF5cyBpbiBjYXNlIG9uZSBpcyBzcGVjaWZpZWRcbiAgICAgICAgJGRlbGF5czogYXBwZW5kKCRkZWxheXMsIGlmKCRkZWxheSwgJGRlbGF5LCAwcykpO1xuICAgICAgICAkdHJhbnNpdGlvbnMtd2l0aG91dC1kZWxheXM6IGFwcGVuZCgkdHJhbnNpdGlvbnMtd2l0aG91dC1kZWxheXMsXG4gICAgICAgICAgcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oJGN1cnJlbnQtcHJlZml4LCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdHJhbnNpdGlvbnMtd2l0aC1kZWxheXM6IGFwcGVuZCgkdHJhbnNpdGlvbnMtd2l0aC1kZWxheXMsXG4gICAgICAgICAgcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oJGN1cnJlbnQtcHJlZml4LCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uICRkZWxheSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRjdXJyZW50LXByZWZpeCA9PSAtd2Via2l0IHtcbiAgICAgIEBpbmNsdWRlIHByZWZpeC1wcm9wKHRyYW5zaXRpb24sICR0cmFuc2l0aW9ucy13aXRob3V0LWRlbGF5cyk7XG4gICAgICBAaWYgJGhhcy1kZWxheXMge1xuICAgICAgICBAaW5jbHVkZSBwcmVmaXgtcHJvcCh0cmFuc2l0aW9uLWRlbGF5LCAkZGVsYXlzKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRjdXJyZW50LXByZWZpeCB7XG4gICAgICBAaW5jbHVkZSBwcmVmaXgtcHJvcCh0cmFuc2l0aW9uLCAkdHJhbnNpdGlvbnMtd2l0aC1kZWxheXMpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb25zLXdpdGgtZGVsYXlzO1xuICAgIH1cbiAgfVxufVxuIiwiJHdoaXRlOiByZ2IoMjU1LCAyNTUsIDI1NSk7XG4kYmxhY2s6IHJnYig4NCwgODAsIDgwKTtcblxuJG9yYW5nZTogcmdiKDI0NywgMTQ4LCAzMSk7XG4keWVsbG93OiByZ2IoMjU1LCAyMDMsIDgpO1xuJHB1cnBsZTogcmdiKDE4MCwgMTI4LCAxNjQpO1xuJGJsdWU6IHJnYig4LCAxMzksIDIxMik7XG4kcmVkOiByZ2IoMjI5LCAyOSwgMzkpO1xuJGdyZWVuOiByZ2IoMTYzLCAyMDgsIDk5KTtcbiR0ZWFsOiAjMDBiMGJkO1xuXG4kbHQtYmx1ZTogcmdiKDE3LCAxNjAsIDIyMCk7XG4iLCIvL3Njc3MtbGludDpkaXNhYmxlIFF1YWxpZnlpbmdFbGVtZW50LCBJbXBvcnRhbnRSdWxlXG5cbmltZyB7IG1heC13aWR0aDogMTAwJTsgfVxuXG5pbWdbc3R5bGUqPVwiZmxvYXQ6cmlnaHRcIl0sXG5pbWdbc3R5bGUqPVwiZmxvYXQ6IHJpZ2h0XCJdIHtcbiAgbWFyZ2luOiAwIDAgMWVtIDFlbTtcbn1cblxuaW1nW3N0eWxlKj1cImZsb2F0OmxlZnRcIl0sXG5pbWdbc3R5bGUqPVwiZmxvYXQ6IGxlZnRcIl0ge1xuICBtYXJnaW46IDAgMWVtIDFlbSAwO1xufVxuXG4vLyBPbiBzbWFsbCB3aWR0aHMsIGltYWdlcyBmbG9hdGVkIHRvIGxlZnQvcmlnaHQgZG9uJ3Qgd29yayBncmVhdCBmb3Igc3Vycm91bmRpbmcgdGV4dC5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobWF4LXdpZHRoIDcwMHB4KSB7XG4gIGltZ1tzdHlsZSo9XCJmbG9hdFwiXSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZmxvYXQ6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDFlbSBhdXRvO1xuICB9XG59XG5cbmlmcmFtZSB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuYSBpbWcge1xuICBib3JkZXI6IDA7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgRmVhdHVyZXNcbiRicmVha3BvaW50LWRlZmF1bHQtbWVkaWE6ICAgICAgYWxsICFkZWZhdWx0O1xuJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlOiAgICBtaW4td2lkdGggIWRlZmF1bHQ7XG4kYnJlYWtwb2ludC1kZWZhdWx0LXBhaXI6ICAgICAgIHdpZHRoICFkZWZhdWx0O1xuXG4vLyBEZWZhdWx0IFRyYW5zZm9ybXNcbiRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbDogICAgZmFsc2UgIWRlZmF1bHQ7XG4kYnJlYWtwb2ludC10by1lbXM6ICAgICAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnM6ICAgICAgICB0cnVlICFkZWZhdWx0O1xuXG4vLyBEZWZhdWx0IE5vIFF1ZXJ5IE9wdGlvbnNcbiRicmVha3BvaW50LW5vLXF1ZXJpZXM6ICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3M6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBEZWZ0YXVsdCBCYXNlIEZvbnQgU2l6ZVxuJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemU6ICAgICAxNnB4ICFkZWZhdWx0O1xuXG4vLyBMZWdhY3kgU3ludGF4IFN1cHBvcnRcbiRicmVha3BvaW50LWxlZ2FjeS1zeW50YXg6ICAgICAgZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIC8vIFJlc2V0IGNvbnRleHRzXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xuXG4gICRicmVha3BvaW50OiBicmVha3BvaW50KCRxdWVyeSwgZmFsc2UpO1xuXG4gICRxdWVyeS1zdHJpbmc6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeScpO1xuICAkcXVlcnktZmFsbGJhY2s6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdmYWxsYmFjaycpO1xuXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdjb250ZXh0IGhvbGRlcicpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeSBjb3VudCcpICFnbG9iYWw7XG5cbiAgLy8gQWxsb3cgZm9yIGFuIGFzLW5lZWRlZCBvdmVycmlkZSBvciB1c2FnZSBvZiBubyBxdWVyeSBmYWxsYmFjay5cbiAgQGlmICRuby1xdWVyeSAhPSBmYWxzZSB7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiAkbm8tcXVlcnk7XG4gIH1cblxuICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICB9XG5cbiAgLy8gUHJpbnQgT3V0IFF1ZXJ5IFN0cmluZ1xuICBAaWYgbm90ICRicmVha3BvaW50LW5vLXF1ZXJpZXMge1xuICAgIEBtZWRpYSAjeyRxdWVyeS1zdHJpbmd9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MgIT0gZmFsc2Ugb3IgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyA9PSB0cnVlIHtcblxuICAgICR0eXBlOiB0eXBlLW9mKCRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyk7XG4gICAgJHByaW50OiBmYWxzZTtcblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Jvb2wnKSB7XG4gICAgICAkcHJpbnQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3Mge1xuICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnbGlzdCcpIHtcbiAgICAgIEBlYWNoICR3cmFwcGVyIGluICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyB7XG4gICAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJHdyYXBwZXIge1xuICAgICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdyaXRlIEZhbGxiYWNrXG4gICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIGFuZCAoJHByaW50ID09IHRydWUpIHtcbiAgICAgICR0eXBlLWZhbGxiYWNrOiB0eXBlLW9mKCRxdWVyeS1mYWxsYmFjayk7XG5cbiAgICAgIEBpZiAoJHR5cGUtZmFsbGJhY2sgIT0gJ2Jvb2wnKSB7XG4gICAgICAgICN7JHF1ZXJ5LWZhbGxiYWNrfSAmIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcbn1cblxuXG5AbWl4aW4gbXEoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwidGFibGUucndkLXRhYmxlIHsgXG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xuICB3aWR0aDogMTAwJTsgXG4gIFxuICB0ZCB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXgtd2lkdGggJHNtYWxsKSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgXG4gICAgICAmLnN1YmhlYWQge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctdG9wOiAuNWVtO1xuICAgIH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy1ib3R0b206IC41ZW07XG4gICAgfVxuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogYXR0cihkYXRhLXRoKVwiOiBcIjsgLy8gd2hvIGtuZXcgeW91IGNvdWxkIGRvIHRoaXM/IFRoZSBpbnRlcm5ldCwgdGhhdCdzIHdoby5cbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICBjb2xvcjogJGx0LWJsdWU7XG4gICAgICBcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWluLXdpZHRoICRzbWFsbCkgeyBcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIHRoIHtcbiAgICBiYWNrZ3JvdW5kOiAkbHQtYmx1ZTtcbiAgICBcbiAgICBoMyB7XG4gICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgZm9udC1mYW1pbHk6IFwiTXVsaVwiLHNlcmlmO1xuICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIH1cbiAgfVxuICBcbiAgdGQsXG4gIHRoIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb2xvcjogJGx0LWJsdWU7XG4gICAgfVxuICAgIFxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWF4LXdpZHRoICRtZWRpdW0pIHsgXG4gICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICAgIHBhZGRpbmc6IDAuMmVtO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgfVxuICAgIFxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWluLXdpZHRoICRtZWRpdW0pIHsgXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCBsaWdodGVuKCRibGFjayw0MCUpO1xuICAgICAgcGFkZGluZzogMC41ZW07XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICAgIFxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWluLXdpZHRoICRzbWFsbCkge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHBhZGRpbmc6IDAuNWVtIDA7XG4gICAgICBcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgICBcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gICAgXG4gIHRyIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgICAmLmVtcHR5IHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWF4LXdpZHRoICRtZWRpdW0pIHsgXG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIC5zdWJoZWFkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaWdodGVuKCRsdC1ibHVlLDQ1JSk7XG4gIH1cbiAgXG4gIC5mb290ZXIge1xuICAgIHBhZGRpbmctYm90dG9tOiAyZW07XG4gIH1cbiAgXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cblxuYm9keSAubGVnZW5kIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIGZvbnQtc2l6ZTogMC44ZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn0iLCIvLyBTYW1wbGUganVzdCBmb3IgcmVmZXJlbmNlIChmcm9tIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvY3NzL3VzaW5nLWZvbnQtZmFjZS8pXG4vKlxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIkludmVzdFwiO1xuICBzcmM6IHVybChcIndlYmZvbnQuZW90XCIpOyAvKiBJRTkgQ29tcGF0IE1vZGVzICpcbiAgc3JjOiB1cmwoXCJ3ZWJmb250LmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIC8qIElFNi1JRTggXG4gICAgICAgdXJsKFwid2ViZm9udC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgLyogU3VwZXIgTW9kZXJuIEJyb3dzZXJzICpcbiAgICAgICB1cmwoXCJ3ZWJmb250LndvZmZcIikgZm9ybWF0KFwid29mZlwiKSwgLyogUHJldHR5IE1vZGVybiBCcm93c2VycyAqXG4gICAgICAgdXJsKFwid2ViZm9udC50dGZcIikgIGZvcm1hdChcInRydWV0eXBlXCIpLCAvKiBTYWZhcmksIEFuZHJvaWQsIGlPUyAqXG4gICAgICAgdXJsKFwid2ViZm9udC5zdmcjc3ZnRm9udE5hbWVcIikgZm9ybWF0KFwic3ZnXCIpOyAvKiBMZWdhY3kgaU9TICpcblxuKi9cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIkZyYW5jaGlzZSBCb2xkXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgc3JjOiBsb2NhbChcIkZyYW5jaGlzZSBCb2xkXCIpLCB1cmwoXCIuLi9mb250cy9GcmFuY2hpc2UtQm9sZC1oaW50ZWQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiZnJhbmNoaXNlcmVndWxhclwiO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL2ZyYW5jaGlzZS9mcmFuY2hpc2UtYm9sZC13ZWJmb250LmVvdFwiKTtcbiAgc3JjOiB1cmwoXCIuLi9mb250cy9mcmFuY2hpc2UvZnJhbmNoaXNlLWJvbGQtd2ViZm9udC5lb3Q/I2llZml4XCIpIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLFxuICAgIHVybChcIi4uL2ZvbnRzL2ZyYW5jaGlzZS9mcmFuY2hpc2UtYm9sZC13ZWJmb250LndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLFxuICAgIHVybChcIi4uL2ZvbnRzL2ZyYW5jaGlzZS9mcmFuY2hpc2UtYm9sZC13ZWJmb250LndvZmZcIikgZm9ybWF0KFwid29mZlwiKSxcbiAgICB1cmwoXCIuLi9mb250cy9mcmFuY2hpc2UvZnJhbmNoaXNlLWJvbGQtd2ViZm9udC50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksXG4gICAgdXJsKFwiLi4vZm9udHMvZnJhbmNoaXNlL2ZyYW5jaGlzZS1ib2xkLXdlYmZvbnQuc3ZnI2ZyYW5jaGlzZXJlZ3VsYXJcIikgZm9ybWF0KFwic3ZnXCIpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJpY29tb29uXCI7XG4gIHNyYzogdXJsKFwiLi4vZm9udHMvaWNvbW9vbi9pY29tb29uLmVvdFwiKTtcbn1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJpY29tb29uXCI7XG4gIHNyYzogdXJsKGRhdGE6YXBwbGljYXRpb24veC1mb250LXR0ZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxBQUVBQUFBTEFJQUFBd0F3VDFNdk1nOFNBWFFBQUFDOEFBQUFZR050WVhBYVZjeUpBQUFCSEFBQUFGUm5ZWE53QUFBQUVBQUFBWEFBQUFBSVoyeDVadk5tR3lnQUFBRjRBQUFBbUdobFlXUUUxa0YxQUFBQ0VBQUFBRFpvYUdWaEJpZ0R4Z0FBQWtnQUFBQWthRzEwZUFpU0FDd0FBQUpzQUFBQUZHeHZZMkVBS0FCZ0FBQUNnQUFBQUF4dFlYaHdBQWNBSFFBQUFvd0FBQUFnYm1GdFpabEtDZnNBQUFLc0FBQUJobkJ2YzNRQUF3QUFBQUFFTkFBQUFDQUFBd0pKQVpBQUJRQUFBcGtDekFBQUFJOENtUUxNQUFBQjZ3QXpBUWtBQUFBQUFBQUFBQUFBQUFBQUFBQUJFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQURtQVFQQS84QUFRQVBBQUVBQUFBQUJBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQURBQUFBQXdBQUFCd0FBUUFEQUFBQUhBQURBQUVBQUFBY0FBUUFPQUFBQUFvQUNBQUNBQUlBQVFBZzVnSC8vZi8vQUFBQUFBQWc1Z0gvL2YvL0FBSC80eG9EQUFNQUFRQUFBQUFBQUFBQUFBQUFBUUFCLy84QUR3QUJBQUFBQUFBQUFBQUFBZ0FBTnprQkFBQUFBQUVBQUFBQUFBQUFBQUFDQUFBM09RRUFBQUFBQVFBQUFBQUFBQUFBQUFJQUFEYzVBUUFBQUFBQkFDd0E5UUptQWtJQUdnQUFBUlFIQVFZaklpY0JKalUwUHdFMk16SWZBVGMyTXpJZkFSWVZBbVlGL3ZVRkNBY0cvdllHQmh3R0J3Z0c0T0VGQ0FjR0hRVUNFZ2NHL3ZZR0JnRUtCZ2NJQlIwR0J1SGhCZ1lkQlFnQUFBRUFBQUFCQUFDcWdheC9Ydzg4OVFBTEJBQUFBQUFBMGFqL0d3QUFBQURScVA4YkFBQUFBQUptQWtJQUFBQUlBQUlBQUFBQUFBQUFBUUFBQThEL3dBQUFCQUFBQUFBQUFtWUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVBQUFBQUFBQUFBQUFBQUFDQUFBQUFwSUFMQUFBQUFBQUNnQVVBQjRBVEFBQkFBQUFCUUFiQUFFQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdDdUFBRUFBQUFBQUFFQUJ3QUFBQUVBQUFBQUFBSUFCd0JnQUFFQUFBQUFBQU1BQndBMkFBRUFBQUFBQUFRQUJ3QjFBQUVBQUFBQUFBVUFDd0FWQUFFQUFBQUFBQVlBQndCTEFBRUFBQUFBQUFvQUdnQ0tBQU1BQVFRSkFBRUFEZ0FIQUFNQUFRUUpBQUlBRGdCbkFBTUFBUVFKQUFNQURnQTlBQU1BQVFRSkFBUUFEZ0I4QUFNQUFRUUpBQVVBRmdBZ0FBTUFBUVFKQUFZQURnQlNBQU1BQVFRSkFBb0FOQUNrYVdOdmJXOXZiZ0JwQUdNQWJ3QnRBRzhBYndCdVZtVnljMmx2YmlBeExqQUFWZ0JsQUhJQWN3QnBBRzhBYmdBZ0FERUFMZ0F3YVdOdmJXOXZiZ0JwQUdNQWJ3QnRBRzhBYndCdWFXTnZiVzl2YmdCcEFHTUFid0J0QUc4QWJ3QnVVbVZuZFd4aGNnQlNBR1VBWndCMUFHd0FZUUJ5YVdOdmJXOXZiZ0JwQUdNQWJ3QnRBRzhBYndCdVJtOXVkQ0JuWlc1bGNtRjBaV1FnWW5rZ1NXTnZUVzl2Ymk0QVJnQnZBRzRBZEFBZ0FHY0FaUUJ1QUdVQWNnQmhBSFFBWlFCa0FDQUFZZ0I1QUNBQVNRQmpBRzhBVFFCdkFHOEFiZ0F1QUFBQUF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQT09KSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5ib2R5IHtcbiAgY29sb3I6ICRibGFjaztcbiAgZm9udC1mYW1pbHk6IFwiTXVsaVwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuMWVtO1xuICBsaW5lLWhlaWdodDogMS43O1xuICBcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG4gIH1cbn1cblxuaDEsXG5oMiwgXG5oMyxcbmg0LCBcbmg1LCBcbmg2IHtcbiAgY29sb3I6ICRsdC1ibHVlO1xuICBmb250LWZhbWlseTogXCJmcmFuY2hpc2VyZWd1bGFyXCI7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICY6aG92ZXIge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuICB9XG59XG5cbmgxIHsgXG4gIGZvbnQtc2l6ZTogMy41cmVtOyBcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIFxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcbiAgICBmb250LXNpemU6IDQuOHJlbTsgXG4gIH1cbn1cblxuaDIge1xuICBmb250LXNpemU6IDIuOHJlbTsgXG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG5oMywgXG5oNCwgXG5oNSwgXG5oNiB7XG4gIGZvbnQtc2l6ZTogMS44cmVtOyBcbn1cblxuYmxvY2txdW90ZSB7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMTBweCk7XG4gIGJhY2tncm91bmQ6IGxpZ2h0ZW4oJGJsdWUsNTAlKTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAyZW07XG4gIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbi5uZWVkcy1yZXZpZXcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCR5ZWxsb3csIDAuNyk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cbiIsIi5uZXdzIHtcbiAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICRsdC1ibHVlO1xuICBib3JkZXItdG9wOiAzcHggc29saWQgJGx0LWJsdWU7XG4gIGNvbG9yOiAkd2hpdGU7IFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7IFxuICBcbiAgPiBkaXYge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRsdC1ibHVlOyBcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKFwiYmctdGV4dHVyZS5wbmdcIik7XG4gICAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkICR3aGl0ZTtcbiAgICBib3JkZXItdG9wOiA1cHggc29saWQgJHdoaXRlO1xuICAgIHBhZGRpbmc6IDAgJGdyaWRwYWQvNCAkZ3JpZHBhZDtcbiAgICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcbiAgICAgIHBhZGRpbmc6IDAgJGdyaWRwYWQvMiAkZ3JpZHBhZDtcbiAgICB9XG4gICAgXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UpIHtcbiAgICAgIHBhZGRpbmc6IDAgJGdyaWRwYWQgJGdyaWRwYWQ7XG4gICAgfVxuICB9XG4gIFxuICBwIGEge1xuICAgIGNvbG9yOiAkeWVsbG93O1xuICB9XG5cbiAgaDEge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTsgXG4gICAgYm9yZGVyLXJhZGl1czogMCAwIDAuMjVlbSAwLjI1ZW07XG4gICAgY29sb3I6ICRsdC1ibHVlO1xuICAgIGZvbnQtc2l6ZTogMi4yNWVtO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDAuMjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IFxuICAgIHdpZHRoOiAzMyU7XG4gIH1cblxuICBoMiB7XG4gICAgY29sb3I6ICR3aGl0ZTsgXG4gICAgZm9udC1zaXplOiAyZW07XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG4gICAgICBmb250LXNpemU6IDIuNWVtO1xuICAgICAgbWF4LXdpZHRoOiA3NTBweDtcbiAgICB9XG4gIH1cbn1cbiIsIi5wb3N0LWxpc3Qge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcblxuICBoMiB7IHRleHQtYWxpZ246IGxlZnQ7IFxuXG4gICAgYSB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICB9XG5cbn1cbiIsIi5idXR0b24ge1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDJlbSk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsIDAuM3MgZWFzZSk7XG4gIGJhY2tncm91bmQ6ICR5ZWxsb3c7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIGZvbnQtZmFtaWx5OiBtb250c2VycmF0LCBcIkhlbHZldGljYSBOdWV1ZVwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDAuOGVtO1xuICBwYWRkaW5nOiAxZW0gNGVtO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIFxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkb3JhbmdlO1xuICB9XG59XG4iLCIuc2VjdGlvbi1uYXYge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGxlZnQ7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGZvbnQtZmFtaWx5OiBcImZyYW5jaGlzZXJlZ3VsYXJcIiwgXCJIZWx2ZXRpY2EgTnVldWVcIiwgc2Fucy1zZXJpZjtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIFxuICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSkge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoXCJ5ZWxsb3ctYXJyb3cucG5nXCIpO1xuICB9XG4gIFxuICBoMSB7XG4gICAgZm9udC1zaXplOiAzZW07XG4gICAgbGluZS1oZWlnaHQ6IDAuOTtcbiAgICBtYXJnaW46IDFlbSBhdXRvIDAuNWVtO1xuICAgIFxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsKSB7XG4gICAgICBmb250LXNpemU6IDNlbTtcbiAgICB9XG4gICAgXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG4gICAgICBtYXgtd2lkdGg6IDcwMHB4O1xuICAgIH1cbiAgICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSkge1xuICAgICAgZm9udC1zaXplOiA0ZW07XG4gICAgICBsaW5lLWhlaWdodDogMC45O1xuICAgICAgbWFyZ2luOiAxZW0gMC41ZW0gMC41ZW0gMi41ZW07XG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgYSB7IFxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAwLjNzKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbCkge1xuICAgICAgZm9udC1zaXplOiAxLjZlbTtcbiAgICB9XG4gICAgXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIG1pbi13aWR0aDogMjIwcHg7XG4gICAgICBwYWRkaW5nOiAxZW07XG4gICAgICB3aWR0aDogMjklO1xuXG4gICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBib3JkZXItcmlnaHQ6IDJweCBkb3R0ZWQgJHllbGxvdztcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UpIHtcbiAgICAgIG1pbi13aWR0aDogMjA1cHg7XG4gICAgICB3aWR0aDogMTklO1xuICAgIH1cbiAgICBcbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICB9XG4gIH1cblxuICBhOjpiZWZvcmUge1xuICAgICRpY29uc2l6ZTogMzZweDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGhlaWdodDogJGljb25zaXplO1xuICAgIG1hcmdpbi1yaWdodDogMWVtO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IC01cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB3aWR0aDogJGljb25zaXplO1xuICAgIFxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuICAgICAgJGljb25zaXplOiAxMDBweDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgaGVpZ2h0OiAkaWNvbnNpemU7XG4gICAgICBtYXJnaW46IDAgYXV0byAxZW07XG4gICAgICB3aWR0aDogJGljb25zaXplO1xuICAgIH1cbiAgfVxuICBcbiAgLndvcmtmb3JjZSB7XG4gICAgY29sb3I6ICRvcmFuZ2U7XG4gICAgXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoXCJzdmcvd29ya2ZvcmNlLWljb24uc3ZnXCIpO1xuICAgIH1cbiAgfVxuXG4gIC5wZWRlc3RyaWFuIHtcbiAgICBjb2xvcjogJHJlZDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKFwic3ZnL3BlZGVzdHJpYW4taWNvbi5zdmdcIik7XG4gICAgfVxuICB9XG5cbiAgLnJlc2lkZW50aWFsIHtcbiAgICBjb2xvcjogJHRlYWw7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1nLXVybChcInN2Zy9yZXNpZGVudGlhbC1pY29uLnN2Z1wiKTtcbiAgICB9XG4gIH1cblxuICAudmlzaXRvciB7XG4gICAgY29sb3I6ICRncmVlbjtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKFwic3ZnL3Zpc2l0b3ItaWNvbi5zdmdcIik7XG4gICAgfVxuICB9XG5cbiAgLnBhcmtpbmcge1xuICAgIGNvbG9yOiAkeWVsbG93O1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoXCJzdmcvcGFya2luZy1pY29uLnN2Z1wiKTtcbiAgICB9XG4gIH1cblxufVxuXG4iLCIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cblxuLy8gVGhpcyBvbGRlciBtZXRob2QgZnJvbSBQb3NpdGlvbiBJcyBFdmVyeXRoaW5nIGNhbGxlZFxuLy8gW0Vhc3kgQ2xlYXJpbmddKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2Vhc3ljbGVhcmluZy5odG1sKVxuLy8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgcG9zaXRpb25lZCBlbGVtZW50cyB0byBoYW5nXG4vLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lciBhdCB0aGUgZXhwZW5zZSBvZiBtb3JlIHRyaWNreSBDU1MuXG5AbWl4aW4gbGVnYWN5LXBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQgICAgOiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXkgICAgOiBibG9jaztcbiAgICBoZWlnaHQgICAgIDogMDtcbiAgICBjbGVhciAgICAgIDogYm90aDtcbiAgICBvdmVyZmxvdyAgIDogaGlkZGVuO1xuICAgIHZpc2liaWxpdHkgOiBoaWRkZW47XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cblxuLy8gVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFBJRSBjbGVhcmZpeCBtZXRob2QgdGhhdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgQ1NTIG91dHB1dC5cbi8vIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCBiZWZvcmUgMy41IHlvdSBuZWVkIHRvIHVzZSBgbGVnYWN5LXBpZS1jbGVhcmZpeGAgaW5zdGVhZC5cbi8vXG4vLyBBZGFwdGVkIGZyb206IFtBIG5ldyBtaWNybyBjbGVhcmZpeCBoYWNrXShodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8pXG5AbWl4aW4gcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuIiwiQGltcG9ydCBcImNvbXBhc3Mvc3VwcG9ydFwiO1xuXG4vLyBUaGUgbGVnYWN5IHN1cHBvcnQgdGhyZXNob2xkIGZvciBoYXMtbGF5b3V0LlxuLy8gRGVmYXVsdHMgdG8gdGhlICRjcml0aWNhbC11c2FnZS10aHJlc2hvbGQuXG4kaGFzLWxheW91dC1zdXBwb3J0LXRocmVzaG9sZDogJGNyaXRpY2FsLXVzYWdlLXRocmVzaG9sZCAhZGVmYXVsdDtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiBzdXBwb3J0LWxlZ2FjeS1icm93c2VyKFwiaWVcIiwgXCI3XCIsICR0aHJlc2hvbGQ6ICRoYXMtbGF5b3V0LXN1cHBvcnQtdGhyZXNob2xkKSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmIHN1cHBvcnQtbGVnYWN5LWJyb3dzZXIoXCJpZVwiLCBcIjdcIiwgJHRocmVzaG9sZDogJGhhcy1sYXlvdXQtc3VwcG9ydC10aHJlc2hvbGQpIHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiBzdXBwb3J0LWxlZ2FjeS1icm93c2VyKFwiaWVcIiwgXCI3XCIsICR0aHJlc2hvbGQ6ICRoYXMtbGF5b3V0LXN1cHBvcnQtdGhyZXNob2xkKSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgfVxufVxuXG5cbi8vIFRoZSBsZWdhY3kgc3VwcG9ydCB0aHJlc2hvbGQgZm9yIElFNiBhdHRyaWJ1dGUgaGFjay5cbi8vIERlZmF1bHRzIHRvIHRoZSAkY3JpdGljYWwtdXNhZ2UtdGhyZXNob2xkLlxuJGllNi1hdHRyaWJ1dGUtaGFjay1zdXBwb3J0LXRocmVzaG9sZDogJGNyaXRpY2FsLXVzYWdlLXRocmVzaG9sZCAhZGVmYXVsdDtcblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgc3VwcG9ydC1sZWdhY3ktYnJvd3NlcihcImllXCIsIFwiNlwiLCAkdGhyZXNob2xkOiAkaWU2LWF0dHJpYnV0ZS1oYWNrLXN1cHBvcnQtdGhyZXNob2xkKSB7XG4gICAgQHdhcm4gXCJpdCdzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgdW5kZXJzY29yZS1oYWNrKCkgbWl4aW4gaW5zdGVhZCBvZiBiYW5nLWhhY2soKVwiO1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LnBhdWxpcmlzaC5jb20vMjAwOS9icm93c2VyLXNwZWNpZmljLWNzcy1oYWNrcy8pXG5AbWl4aW4gdW5kZXJzY29yZS1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiBzdXBwb3J0LWxlZ2FjeS1icm93c2VyKFwiaWVcIiwgXCI2XCIsICR0aHJlc2hvbGQ6ICRpZTYtYXR0cmlidXRlLWhhY2stc3VwcG9ydC10aHJlc2hvbGQpIHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTtcbiAgICBfI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvKiEgRmxpY2tpdHkgdjEuMC4yXG5odHRwOi8vZmxpY2tpdHkubWV0YWZpenp5LmNvXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbkBpbXBvcnQgXCJjb21wYXNzXCI7XG5cbi8vIHNjc3MtbGludDpkaXNhYmxlIGFsbFxuLmZsaWNraXR5LWVuYWJsZWQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5mbGlja2l0eS1lbmFibGVkOmZvY3VzIHsgb3V0bGluZTogbm9uZTsgfVxuXG4uZmxpY2tpdHktdmlld3BvcnQge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLmZsaWNraXR5LXNsaWRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLyogZHJhZ2dhYmxlICovXG5cbi5mbGlja2l0eS1lbmFibGVkLmlzLWRyYWdnYWJsZSB7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5mbGlja2l0eS1lbmFibGVkLmlzLWRyYWdnYWJsZSAuZmxpY2tpdHktdmlld3BvcnQge1xuICBjdXJzb3I6IG1vdmU7XG4gIGN1cnNvcjogLXdlYmtpdC1ncmFiO1xuICBjdXJzb3I6IGdyYWI7XG59XG5cbi5mbGlja2l0eS1lbmFibGVkLmlzLWRyYWdnYWJsZSAuZmxpY2tpdHktdmlld3BvcnQuaXMtcG9pbnRlci1kb3duIHtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nO1xuICBjdXJzb3I6IGdyYWJiaW5nO1xufVxuXG4vKiAtLS0tIHByZXZpb3VzL25leHQgYnV0dG9ucyAtLS0tICovXG5cbi5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgd2lkdGg6IDQ0cHg7XG4gIGhlaWdodDogNDRweDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBiYWNrZ3JvdW5kOiBoc2xhKDAsIDAlLCAxMDAlLCAwLjc1KTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAvKiB2ZXJ0aWNhbGx5IGNlbnRlciAqL1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4uZmxpY2tpdHktcHJldi1uZXh0LWJ1dHRvbjpob3ZlciB7IGJhY2tncm91bmQ6IHdoaXRlOyB9XG5cbi5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm94LXNoYWRvdzogMCAwIDAgNXB4ICMwOUY7XG59XG5cbi5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uOmFjdGl2ZSB7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT02MCk7IC8qIElFOCAqL1xuICBvcGFjaXR5OiAwLjY7XG59XG5cbi5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uLnByZXZpb3VzIHsgbGVmdDogMTBweDsgfVxuLmZsaWNraXR5LXByZXYtbmV4dC1idXR0b24ubmV4dCB7IHJpZ2h0OiAxMHB4OyB9XG4vKiByaWdodCB0byBsZWZ0ICovXG4uZmxpY2tpdHktcnRsIC5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uLnByZXZpb3VzIHtcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IDEwcHg7XG59XG4uZmxpY2tpdHktcnRsIC5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uLm5leHQge1xuICByaWdodDogYXV0bztcbiAgbGVmdDogMTBweDtcbn1cblxuLmZsaWNraXR5LXByZXYtbmV4dC1idXR0b246ZGlzYWJsZWQge1xuICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MzApOyAvKiBJRTggKi9cbiAgb3BhY2l0eTogMC4zO1xuICBjdXJzb3I6IGF1dG87XG59XG5cbi5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uIHN2ZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMjAlO1xuICB0b3A6IDIwJTtcbiAgd2lkdGg6IDYwJTtcbiAgaGVpZ2h0OiA2MCU7XG59XG5cbi5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uIC5hcnJvdyB7XG4gIGZpbGw6ICMzMzM7XG59XG5cbi8qIGNvbG9yICYgc2l6ZSBpZiBubyBTVkcgLSBJRTggYW5kIEFuZHJvaWQgMi4zICovXG4uZmxpY2tpdHktcHJldi1uZXh0LWJ1dHRvbi5uby1zdmcge1xuICBjb2xvcjogIzMzMztcbiAgZm9udC1zaXplOiAyNnB4O1xufVxuXG4vKiAtLS0tIHBhZ2UgZG90cyAtLS0tICovXG5cbi5mbGlja2l0eS1wYWdlLWRvdHMge1xuICBwYWRkaW5nOiAwO1xufVxuXG4uZmxpY2tpdHktcnRsIC5mbGlja2l0eS1wYWdlLWRvdHMgeyBkaXJlY3Rpb246IHJ0bDsgfVxuXG4uZmxpY2tpdHktcGFnZS1kb3RzIC5kb3Qge1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDEwcHgpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyNSU7XG4gIGhlaWdodDogMC41ZW07XG4gIG1hcmdpbjogMCA4cHg7XG4gIGJhY2tncm91bmQ6ICR5ZWxsb3c7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgbWF4LXdpZHRoOiA3NXB4O1xufVxuXG4uZmxpY2tpdHktcGFnZS1kb3RzIC5kb3QuaXMtc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG59XG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLy8gVGhlbWUgc3BlY2lmaWMgb3ZlcnJpZGVzLi4uXG5cbi5uZXdzLXBvc3Qge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmZsaWNraXR5LWVuYWJsZWQge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbn1cblxuLy8gc2Nzcy1saW50OmVuYWJsZSBhbGwgXG4iLCIuanVtYm90cm9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHllbGxvdzsgXG4gIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoXCJiZy10ZXh0dXJlLnBuZ1wiKTtcbiAgYm9yZGVyLXRvcDogMTVweCBzb2xpZCAkd2hpdGU7XG4gIG1hcmdpbjogLTFlbSAoLTEgKiAkZ3JpZHBhZC80KTtcbiAgcGFkZGluZzogJGdyaWRwYWQvMjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygxMHB4KTtcbiAgICBib3JkZXItdG9wOiAwO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UpIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDEwcHgpO1xuICAgIG1hcmdpbjogLTFlbSAtM2VtIDA7XG4gICAgcGFkZGluZzogKCR2ZXJ0cGFkICogMikgKCRncmlkcGFkICogMik7IFxuICB9XG5cbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQgeyBcbiAgICBjb2xvcjogJHdoaXRlOyBcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDRlbTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSkge1xuICAgICAgZm9udC1zaXplOiA2ZW07XG4gICAgfVxuICB9XG5cbiAgaDE6OmJlZm9yZSB7XG4gICAgY29udGVudDogaW1nLXVybChcInN2Zy9sb2NhdGlvbi1pY29uLnN2Z1wiKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDEwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjVlbTtcbiAgICB3aWR0aDogMTAwcHg7XG4gIH1cblxuICBwIHtcbiAgICBjb2xvcjogbGlnaHRlbigkYmxhY2ssIDE1JSk7XG4gICAgZm9udC1zaXplOiAxLjQ1ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBtYXJnaW46IDFlbSBhdXRvO1xuICAgIG1heC13aWR0aDogNzAwcHg7XG4gIH1cbn1cbiIsIi5tZXRhIHtcbiAgYmFja2dyb3VuZDogcmdiYSgkd2hpdGUsIDAuNDgpO1xuICBcbiAgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDMyMXB4O1xuICAgIHBhZGRpbmc6IDFlbSAwIDAuNWVtICRncmlkcGFkLzQ7XG4gICAgd2lkdGg6IDQ4JTtcbiAgICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcbiAgICAgIHBhZGRpbmc6IDFlbSAwIDAuNWVtICRncmlkcGFkLzI7XG4gICAgfVxuICB9XG59XG4iLCJib2R5IHtcbiAgYmFja2dyb3VuZDoge1xuICAgIGltYWdlOiBpbWctdXJsKFwiY2l0eS1iZy1zbS5qcGdcIik7XG4gICAgcG9zaXRpb246IGNlbnRlciB0b3A7XG4gICAgcmVwZWF0OiBuby1yZXBlYXQ7XG4gIH1cbiAgXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuICAgIGJhY2tncm91bmQ6IHtcbiAgICAgIHNpemU6IGNvbnRhaW47XG4gICAgfSAgICBcbiAgfVxuICBcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMDAwcHgpIHsgYmFja2dyb3VuZC1pbWFnZTogaW1nLXVybChcImNpdHktYmctbWVkLmpwZ1wiKTsgfVxuICBAaW5jbHVkZSBicmVha3BvaW50KDE2MDBweCkgeyBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKFwiY2l0eS1iZy1sYXJnZS5qcGdcIik7IH1cbn1cbiIsImZvb3RlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgXG5cbiAgZGl2Om50aC1jaGlsZCgyKSB7XG4gICAgYm9yZGVyLXRvcDogM3B4IHNvbGlkICR5ZWxsb3c7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbCkge1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG4gIH1cblxuICAubG9nby1kb3dudG93bnZpYyB7IFxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwpIHtcbiAgICAgIGZsb2F0OiByaWdodDsgXG4gICAgfVxuICB9XG4gIFxuICAuZmlyc3Qge1xuICAgIC5jb250YWluZWQge1xuICAgICAgcGFkZGluZzogMmVtO1xuICAgICAgXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSkge1xuICAgICAgICBwYWRkaW5nOiA1LjVlbSAwIDA7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoXCJibHVlLWFycm93LnBuZ1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgdG9wO1xuICAgICAgfVxuICAgIH1cbiAgXG4gICAgcCB7XG4gICAgXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgICAgIH1cbiAgICBcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICAgIG1hcmdpbjogYXV0byBhdXRvIDFlbTtcbiAgICAgICAgbWF4LXdpZHRoOiA4NjBweDtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgaDIge1xuICAgICAgY29sb3I6ICR5ZWxsb3c7XG4gICAgXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSkge1xuICAgICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICR5ZWxsb3c7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbGluZS1oZWlnaHQ6IDI7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogMWVtO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRvcDogMTBweDtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgYSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJG9yYW5nZTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgJi5idXR0b246aG92ZXIge1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgaDEge1xuICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSkge1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG4gIH1cbn1cblxuXG5cbi5jbG9zaW5nLWNyZWRpdHMge1xuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMmVtO1xuICAgIGNvbG9yOiBsaWdodGVuKCRibGFjaywyMCUpO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gIH1cbiAgYSB7XG4gICAgY29sb3I6ICR5ZWxsb3c7XG4gICAgXG4gICAgJjpob3ZlciB7IGNvbG9yOiAkb3JhbmdlOyB9XG4gIH1cblxuICBpbWcgeyBtYXJnaW4tbGVmdDogMmVtOyB9XG59XG4iLCIuc2l0ZS1oZWFkZXIge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcbiAgICBwYWRkaW5nOiAwICRncmlkcGFkLzQ7XG4gIH1cblxuICBoMSB7XG4gICAgbWFyZ2luOiAwOyBcbiAgfVxufVxuXG4iLCIubG9nby1pbnZlc3Qge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAtMjAlIGF1dG8gMC4zZW07XG4gIG1heC13aWR0aDogMTAwJTtcbiAgXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsKSB7XG4gICAgbWFyZ2luOiAtOTBweCBhdXRvIDAuM2VtO1xuICB9XG59XG4iLCJtYWluIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogaW1nLXVybChcImJnLWNpdHlzY2FwZS5qcGdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBib3R0b207XG4gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgcGFkZGluZy1ib3R0b206IDI0NXB4OyBcbiAgLy90ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG4gICAgcGFkZGluZzogMCAkZ3JpZHBhZC80IDI0NXB4O1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UpIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIFxuICAuY29udGFpbmVkIHtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7IFxuICAgIHBhZGRpbmc6ICR2ZXJ0cGFkICRncmlkcGFkLzQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcbiAgICAgIHBhZGRpbmc6ICR2ZXJ0cGFkICRncmlkcGFkLzI7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UpIHtcbiAgICAgIHBhZGRpbmc6ICR2ZXJ0cGFkICRncmlkcGFkO1xuICAgIH1cbiAgfVxuXG59XG5cbiIsIi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KlxuIFRoZSBQZWRlc3RyaWFuIENvdW50ZXIgUGFnZVxuIFxuIFdlIHNldCB1cCBhIGRpc3BsYXkgd2l0aCBkb3RzIGFjcm9zcyBhIG1hcC4gVG9vayBhIGxpdHRsZSBtb3JlIHN0eWxpbmdcbiB0aGFuIG5vcm1hbCB0byBnZXQgdGhpcyBvbmUgc2V0IHVwLi4uXG4gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLnBlZGVzdHJpYW4tY291bnQtbWFwIHtcbiAgYmFja2dyb3VuZDoge1xuICAgIGltYWdlOiBpbWctdXJsKFwiZHZiYS1wZWRlc3RyaWFuLW1hcC5naWZcIik7XG4gICAgcG9zaXRpb246IGNlbnRlcjtcbiAgICBzaXplOiBjb250YWluO1xuICAgIHJlcGVhdDogbm8tcmVwZWF0O1xuICB9XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIG1hcmdpbjogMmVtIGF1dG8gMDtcbiAgcGFkZGluZy1ib3R0b206IDEyOSU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgXG4gIGEge1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCAkd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMC43ZW07XG4gICAgaGVpZ2h0OiAxLjVlbTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHdpZHRoOiAxLjVlbTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuICAgICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICAgIHdpZHRoOiAyZW07XG4gICAgICBoZWlnaHQ6IDJlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjk7XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlKSB7XG4gICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgd2lkdGg6IDIuNWVtO1xuICAgICAgaGVpZ2h0OiAyLjVlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjM7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRibHVlO1xuICAgICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIH1cbiAgfVxufVxuXG5AbWVkaWEgcHJpbnQge1xuICAucGVkZXN0cmlhbi1jb3VudC1tYXAgYSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBQb3NpdGlvbiBlYWNoIG9mIHRoZSBkb3RzIG92ZXIgdGhlIHBlZGVzdHJpYW4gbWFwOlxuLnlhdGVzNzAwIHtcbiAgbGVmdDogNzglO1xuICB0b3A6IDQ2LjUlO1xufVxuXG4uZm9ydDcwMCB7XG4gIGxlZnQ6IDc4JTtcbiAgdG9wOiA1My41JTtcbn1cblxuLmRvdWdsYXMxMzAwIHtcbiAgbGVmdDogNzAlO1xuICB0b3A6IDQwJTtcbn1cblxuLmpvaG5zb242MDAge1xuICBsZWZ0OiA1MiU7XG4gIHRvcDogMzIuNSU7XG59XG5cbi5ibGFuY2hhcmQxMTAwIHtcbiAgbGVmdDogODMuMiU7XG4gIHRvcDogNTQlO1xufVxuXG4uZ292dDExMDAge1xuICBsZWZ0OiA1My43JTtcbiAgdG9wOiA0OSU7XG59XG5cbi5nb3Z0OTAwIHtcbiAgbGVmdDogNTUuNSU7XG4gIHRvcDogNTkuNSU7XG59XG5cbi5kb3VnbGFzMTEwMCB7XG4gIGxlZnQ6IDY3LjQlO1xuICB0b3A6IDU1LjUlO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLy8gUHJpbWFyeSBOYXZpZ2F0aW9uIFN0cnVjdHVyZSAtIE1vYmlsZSBGaXJzdFxuXG4vL3Njc3MtbGludDpkaXNhYmxlIFNlbGVjdG9yRGVwdGgsIElkU2VsZWN0b3Jcbi8vIEkgdXNlZCBhbiBJRCB0byBzaW1wbGlmeSBjb2RpbmcgdGhlIG1lbnUgd2l0aCBvbmx5IGphdmFzY3JpcHQgKGVhc2llciB0byBhY3Qgb24pXG4vLyBhbmQgdGhlIHNlbGVjdG9yIGRlcHRoIGlzIG5lY2Vzc2FyeSBhcyBpcy4uLiBcblxuLy8gYnV0IGhleSwgaWYgeW91IHdhbnQgdG8gb3B0aW1pemUgdGhpcy4uLlxuXG5AaW1wb3J0IFwiY29tcGFzc1wiO1xuXG4jcHJpbWFyeS1uYXYge1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDAuNWVtIDAuNWVtIDAgMCk7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAwLjllbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgei1pbmRleDogMTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1heC13aWR0aCAkbWVkaXVtKSB7ICAgIFxuICAgICYuYWN0aXZhdGVkIC5tZW51IHsgZGlzcGxheTogYmxvY2s7IH1cbiAgfVxuXG4gIC5tZW51LWljb24ge1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAxMDBweDtcbiAgICBsaW5lLWhlaWdodDogMTAwcHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAxZW07XG4gICAgdG9wOiAtMjBweDtcbiAgICB3aWR0aDogNDVweDtcbiAgICBcbiAgICBwYXRoOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkeWVsbG93O1xuICAgIH1cbiAgfVxuXG4gIGgxIHsgZGlzcGxheTogbm9uZTsgfVxuXG4gIHVsIHsgXG4gICAgbWFyZ2luOiAwOyBcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgbGkgeyBcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMC41ZW07XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcbiAgICAgIHBhZGRpbmc6IDEuNWVtIDAuNWVtO1xuICAgIH1cbiAgfVxuICBcbiAgbGksXG4gIGEge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsIDAuM3MgZWFzZSk7XG4gICAgY29sb3I6IGxpZ2h0ZW4oJGJsYWNrLCAyMCUpO1xuICAgIFxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRsdC1ibHVlO1xuICAgIH1cbiAgfVxuICBcbiAgYSB7XG4gICAgcGFkZGluZzogMC41ZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gIC5tZW51IHtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBsZWZ0OiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICB0b3A6IDMuNWVtO1xuICAgIHotaW5kZXg6IDE7XG4gICAgcGFkZGluZzogMWVtIDA7XG4gICAgXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCg0NTBweCkge1xuICAgICAgdG9wOiA0ZW07XG4gICAgfVxuICAgIFxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoNjAwcHgpIHtcbiAgICAgIHRvcDogNC41ZW07XG4gICAgfVxuICAgIFxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoNjc1cHgpIHtcbiAgICAgIHRvcDogNWVtO1xuICAgIH1cbiAgICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIHVsIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IFxuXG4gICAgICBhIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IGRvdHRlZCAkeWVsbG93O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogMCAwIDFlbTtcbiAgICAgIH1cblxuICAgICAgbGkge1xuICAgICAgICBwYWRkaW5nOiAxZW0gMWVtIDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgfVxuXG4gICAgICBsaTpsYXN0LWNoaWxkIGEge1xuICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5pY29uLWRvd24ge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24odHJhbnNmb3JtLCAwLjNzKTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1mYW1pbHk6IFwiaWNvbW9vblwiO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgbWFyZ2luOiAwIDAgMCAwLjVlbTtcbiAgICBzcGVhazogbm9uZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgfVxuICBcbiAgLmljb24tZG93bmNoZXZyb24tc21hbGwtZG93bjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjAxXCI7XG4gIH1cblxuICAuYWN0aXZhdGVkIHtcbiAgICB1bCxcbiAgICBsaSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gIH1cbiAgbGk6Zmlyc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMC41ZW0gMCAwIDApO1xuICB9XG4gIGxpOmxhc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCAwLjVlbSAwIDApO1xuICB9XG5cbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuICAvLyBMYXJnZXIgU2NyZWVuc1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuXG4gICAgLm1lbnUge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogMDtcblxuICAgICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDAgMCAwLjVlbSAwLjVlbSk7XG4gICAgICAgIEBpbmNsdWRlIGJveC1zaGFkb3coMCAxMHB4IDEzcHggcmdiYSgkYmxhY2ssIDAuMykpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIG1pbi13aWR0aDogMTNlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICA+IGxpIHsgXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgZmxleDogMSAxIGF1dG87XG5cbiAgICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAkeWVsbG93OyBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICAuYWN0aXZhdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHllbGxvdztcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgXG4gICAgICAgIC5pY29uLWRvd24ge1xuICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybShyb3RhdGUoMTgwZGVnKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWVudS1pY29uIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IFxuICAgIH1cbiAgfVxuXG59XG4iLCIvLyBCb3ggU2hhZG93XG5cbkBpbXBvcnQgXCJjb21wYXNzL3N1cHBvcnRcIjtcblxuLy8gVGhlIHByZWZpeGVkIHN1cHBvcnQgdGhyZXNob2xkIGZvciBib3gtc2hhZG93LlxuLy8gRGVmYXVsdHMgdG8gdGhlICRncmFjZWZ1bC11c2FnZS10aHJlc2hvbGQuXG4kYm94LXNoYWRvdy1zdXBwb3J0LXRocmVzaG9sZDogJGdyYWNlZnVsLXVzYWdlLXRocmVzaG9sZCAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCBjb2xvciBmb3IgYm94IHNoYWRvd3NcbiRkZWZhdWx0LWJveC1zaGFkb3ctY29sb3I6ICMzMzMzMzMgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGhvcml6b250YWwgb2Zmc2V0LiBQb3NpdGl2ZSBpcyB0byB0aGUgcmlnaHQuXG4kZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0OiAwcHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHZlcnRpY2FsIG9mZnNldC4gUG9zaXRpdmUgaXMgZG93bi5cbiRkZWZhdWx0LWJveC1zaGFkb3ctdi1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgYmx1ciBsZW5ndGguXG4kZGVmYXVsdC1ib3gtc2hhZG93LWJsdXI6IDVweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgc3ByZWFkIGxlbmd0aC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkOiBudWxsICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBzaGFkb3cgaW5zZXQ6IGluc2V0IG9yIG51bGwgKGZvciBzdGFuZGFyZCBzaGFkb3cpLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldDogbnVsbCAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIGRlZmF1bHQtYm94LXNoYWRvdygpIHtcbiAgQHJldHVybiBjb21wYWN0KGlmKCRkZWZhdWx0LWJveC1zaGFkb3ctaW5zZXQsIGluc2V0LCBudWxsKVxuICAgICAgICAgICAgICAgICAgJGRlZmF1bHQtYm94LXNoYWRvdy1oLW9mZnNldFxuICAgICAgICAgICAgICAgICAgJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldFxuICAgICAgICAgICAgICAgICAgJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyXG4gICAgICAgICAgICAgICAgICAkZGVmYXVsdC1ib3gtc2hhZG93LXNwcmVhZFxuICAgICAgICAgICAgICAgICAgJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcik7XG59XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgZm9yIFdlYmtpdCwgR2Vja28sIGFuZCBDU1MzIGJveCBzaGFkb3dzXG4vLyB3aGVuIG9uZSBvciBtb3JlIGJveCBzaGFkb3dzIGFyZSBuZWVkZWQuXG4vLyBFYWNoIHNoYWRvdyBhcmd1bWVudCBzaG91bGQgYWRoZXJlIHRvIHRoZSBzdGFuZGFyZCBjc3MzIHN5bnRheFxuLy8gZm9yIHRoZSBib3gtc2hhZG93IHByb3BlcnR5LlxuQG1peGluIGJveC1zaGFkb3coJHNoYWRvdy4uLikge1xuICAkc2hhZG93OiBzZXQtYXJnbGlzdC1kZWZhdWx0KCRzaGFkb3csIGRlZmF1bHQtYm94LXNoYWRvdygpKTtcbiAgQGluY2x1ZGUgcHJlZml4ZWQtcHJvcGVydGllcyhjc3MtYm94c2hhZG93LCAkYm94LXNoYWRvdy1zdXBwb3J0LXRocmVzaG9sZCwgKGJveC1zaGFkb3c6ICRzaGFkb3cpKTtcbn1cblxuLy8gUHJvdmlkZXMgYSBzaW5nbGUgY3Jvc3MtYnJvd3NlciBDU1MgYm94IHNoYWRvdyBmb3IgV2Via2l0LCBHZWNrbywgYW5kIENTUzMuXG4vLyBJbmNsdWRlcyBkZWZhdWx0IGFyZ3VtZW50cyBmb3IgY29sb3IsIGhvcml6b250YWwgb2Zmc2V0LCB2ZXJ0aWNhbCBvZmZzZXQsIGJsdXIgbGVuZ3RoLCBzcHJlYWQgbGVuZ3RoLCBhbmQgaW5zZXQuXG5AbWl4aW4gc2luZ2xlLWJveC1zaGFkb3coXG4gICRob2ZmICAgOiBudWxsLFxuICAkdm9mZiAgIDogbnVsbCxcbiAgJGJsdXIgICA6IG51bGwsXG4gICRzcHJlYWQgOiBudWxsLFxuICAkY29sb3IgIDogbnVsbCxcbiAgJGluc2V0ICA6ICRkZWZhdWx0LWJveC1zaGFkb3ctaW5zZXRcbikge1xuICAvLyBIYW5kbGUgbGVnYWN5IGFyZ3VtZW50IG9yZGVyXG4gIEBpZiBub3QgKCRob2ZmID09IG5vbmUgb3IgJGhvZmYgPT0gbnVsbCkgYW5kIHR5cGUtb2YoJGhvZmYpICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCJUaGUgJGNvbG9yIGFyZ3VtZW50IGZvciBzaW5nbGUtYm94LXNoYWRvdyBpcyBub3cgdGhlIDV0aCBhcmd1bWVudCBpbnN0ZWFkIG9mIHRoZSAxc3QuXCI7XG4gICAgJHRtcC1jb2xvcjogJGNvbG9yO1xuICAgICRjb2xvcjogJGhvZmY7XG4gICAgJGhvZmY6ICR2b2ZmO1xuICAgICR2b2ZmOiAkYmx1cjtcbiAgICAkYmx1cjogJHNwcmVhZDtcbiAgICAkc3ByZWFkOiAkdG1wLWNvbG9yXG4gIH1cblxuICAvLyBOZWVkIHRvIHNldCB0aGVzZSBkZWZhdWx0cyBoZXJlIGluc3RlYWQgb2YgdGhlIGFyZ2xpc3QgdG8gc3VwcG9ydCB0aGUgYWJvdmUgYmFja3dhcmRzIGNvbXBhdCBoYW5kbGluZ1xuICBAaWYgJGhvZmYgICA9PSBudWxsIHsgJGhvZmY6ICAgJGRlZmF1bHQtYm94LXNoYWRvdy1oLW9mZnNldDsgfVxuICBAaWYgJHZvZmYgICA9PSBudWxsIHsgJGhvZmY6ICAgJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldDsgfVxuICBAaWYgJGJsdXIgICA9PSBudWxsIHsgJGJsdXI6ICAgJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyOyAgICAgfVxuICBAaWYgJHNwcmVhZCA9PSBudWxsIHsgJHNwcmVhZDogJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQ7ICAgfVxuICBAaWYgJGNvbG9yICA9PSBudWxsIHsgJGNvbG9yOiAgJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcjsgICAgfVxuXG4gIEBpZiBub3QgKCRpbnNldCA9PSB0cnVlIG9yICRpbnNldCA9PSBmYWxzZSBvciAkaW5zZXQgPT0gbnVsbCBvciAkaW5zZXQgPT0gaW5zZXQpIHtcbiAgICBAd2FybiBcIiRpbnNldCBleHBlY3RlZCB0byBiZSB0cnVlIG9yIHRoZSBpbnNldCBrZXl3b3JkLiBHb3QgI3skaW5zZXR9IGluc3RlYWQuIFVzaW5nOiBpbnNldFwiO1xuICB9XG5cbiAgQGlmICRob2ZmID09IG5vbmUge1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7XG4gIH0gQGVsc2Uge1xuICAgICRmdWxsICAgOiAkaG9mZiAkdm9mZjtcbiAgICBAaWYgJGJsdXIgICB7ICRmdWxsOiAkZnVsbCAkYmx1cjsgICB9XG4gICAgQGlmICRzcHJlYWQgeyAkZnVsbDogJGZ1bGwgJHNwcmVhZDsgfVxuICAgIEBpZiAkY29sb3IgIHsgJGZ1bGw6ICRmdWxsICRjb2xvcjsgIH1cbiAgICBAaWYgJGluc2V0ICB7ICRmdWxsOiBpbnNldCAkZnVsbDsgICB9XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkZnVsbCk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */