/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

/**
* Display a full-width photo with a white border
*/
#main-photo {
  display: inline-block;
  position: relative;
  margin-bottom: 8px;
  width: 100%;
}

#main-photo img {
  position: relative;
  display: block;
  width: 100%;
  height: auto;
}

#main-photo .image-border {
  display: block;
  position: absolute;
  left: 10px;
  top: 10px;
  right: 10px;
  bottom: 10px;
  border: 1px solid white;
}

/*****************************************************************
 Overview Map and summary
*****************************************************************/
#summary {
  padding: 0;
  position: relative;
}

#summary .map-button {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  background-color: transparent;
  z-index: 9000;
  position: absolute;
  top: -2px;
  right: -2px !important;
  height: 20px;
  width: 140px;
  padding: 4px;
  text-align: center;
  overflow: hidden;
}

#summary .map-button, #summary .map-button a {
  color: white;
}

#summary .map-button:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#717171, #424141);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

#summary .map-button:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#404040, #2f2f2f);
  z-index: -1;
}

#summary .map-button > * {
  z-index: 2;
}

body:not(.fullscreen) #summary .map-button > * {
  position: relative;
}

#summary .map-button:before, #summary .map-button:after {
  z-index: 901;
}

#summary .map-button:before {
  top: 1px;
}

#summary .map-button > * {
  z-index: 902;
}

#summary .map-button a {
  text-decoration: none;
}

#summary .map-button a:hover {
  text-decoration: underline;
}

#summary .map-button#full-screen-map {
  right: 0;
  border-radius: 0 0 0 4px;
  display: none;
}

#caveats {
  font-weight: bold;
  line-height: 16px;
}

#summary-container {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  padding: 8px;
}

#summary-container, #summary-container a {
  color: white;
}

#summary-container:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#717171, #424141);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

#summary-container:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#404040, #2f2f2f);
  z-index: -1;
}

#summary-container > * {
  z-index: 2;
}

body:not(.fullscreen) #summary-container > * {
  position: relative;
}

#map-container {
  background: white;
}

@media screen and (min-width: 37.5em) {
  #map-container {
    margin-top: 12px;
  }
}

#map-container .map {
  width: 520px;
  max-width: 100% !important;
  height: 440px;
}

body.walk-ready #map-container .map {
  background: none;
}

@media screen and (max-width: 59.99em) {
  #map-container .map {
    width: inherit !important;
  }
  #map-container .map, #map-container .map * {
    pointer-events: none !important;
  }
}

#map-container #osm-map a {
  color: black !important;
}

/*****************************************************************
 Directions
*****************************************************************/
#toggle-directions {
  margin-top: 16px;
  text-align: center;
  display: none;
  /* disabled as too many reports of this being abused */
}

@media screen and (min-width: 37.5em) {
  #toggle-directions {
    display: none;
  }
}

#toggle-directions [data-role="button"] {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  box-shadow: 4px 4px 4px #bbb;
  color: #eee;
}

#toggle-directions [data-role="button"], #toggle-directions [data-role="button"] a {
  color: white;
}

#toggle-directions [data-role="button"]:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#717171, #424141);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

#toggle-directions [data-role="button"]:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#404040, #2f2f2f);
  z-index: -1;
}

#toggle-directions [data-role="button"] > * {
  z-index: 2;
}

body:not(.fullscreen) #toggle-directions [data-role="button"] > * {
  position: relative;
}

#toggle-directions [data-role="button"] a, #toggle-directions [data-role="button"] strong {
  color: white;
}

#toggle-directions [data-role="button"] h2 {
  border: none;
  margin: 0;
}

#toggle-directions [data-role="button"] * {
  color: white !important;
}

#toggle-directions [data-role="button"] i {
  position: absolute !important;
}

#toggle-directions [data-role="button"] span {
  margin-left: 16px;
}

#directions {
  margin-top: 32px;
  clear: left;
}

@media screen and (max-width: 37.49em) {
  #directions {
    display: none;
  }
}

#directions .map-only {
  display: none;
}

#directions span.intro {
  display: none;
}

#directions h2 {
  border-bottom: 1px solid #aaa;
}

#directions > ol {
  margin-top: 16px;
  padding-left: 24px;
}

#directions > ol > li {
  margin-bottom: 16px;
}

#directions > ol > li > p {
  display: inline;
  /* only split into paragraphs in the app, not in the PDFs */
}

#directions .quote {
  border: 1px solid #ccc;
  background: white;
  font-family: Palatino, serif;
  font-size: 14pt;
  border-radius: 4px;
  padding: 4px 12px 12px 12px;
  margin-left: 16px;
  margin-right: 16px;
}

#directions .quote:before {
  content: '\201C';
  font-family: Times New Roman;
  font-size: 24pt;
  color: #ccc;
  padding-right: 8px;
}

.feature-box {
  border: 1px solid #ccc;
  border-radius: 4px;
  background: #eee;
  padding: 8px;
  margin-top: 4px;
  margin-bottom: 4px;
  /*no gap at top of first p*/
  /*...but gap on first p between multiple divs in the feature box, to space them apart*/
  /*...but not the first one*/
  /*no gap at bottom of last p*/
}

.feature-box p:first-child {
  margin-top: 0;
}

.feature-box div p:first-child {
  margin-top: 8px;
}

.feature-box div:first-child p:first-child {
  margin-top: 0;
}

.feature-box p:last-child {
  margin-bottom: 0;
}

.feature-box ul > li {
  list-style-type: square;
}

.feature-box p.more-info {
  display: none;
}

.app-only {
  display: none;
}

#like_on_facebook {
  margin-top: 24px;
}

/*****************************************************************
 Post-print contribute popup
*****************************************************************/
@media screen and (min-width: 37.5em) {
  .contribute-popup .promo-container {
    float: left;
    max-width: 320px;
  }
  .contribute-popup .body {
    margin-left: 336px;
  }
}

@media screen and (max-width: 37.49em) {
  .contribute-popup {
    max-width: calc(100vw - 20px);
  }
  .contribute-popup .promo-container {
    max-width: 100%;
  }
}

.contribute-popup .promos {
  margin: 0 auto;
}

.contribute-popup h2 {
  margin-top: 0;
}

.contribute-popup .paypal-button {
  text-align: center;
  margin-bottom: 16px;
}

.contribute-popup .paypal-button form {
  display: inline;
}

.contribute-popup .disclaimer {
  clear: left;
  margin-top: 8px;
}

/*****************************************************************
 Pre-print buy walk popup
*****************************************************************/
@media screen and (min-width: 37.5em) {
  .buy-walk-popup .buy-app, .buy-pdf-popup .buy-app {
    background-image: url("/images/graphics/buy_app.jpg");
    background-repeat: no-repeat;
    margin-bottom: 64px;
  }
  .buy-walk-popup .buy-pdf, .buy-pdf-popup .buy-pdf {
    background-image: url("/images/graphics/buy_pdf_leaflets.png");
    background-repeat: no-repeat;
  }
  .buy-walk-popup .buy-app .content, .buy-walk-popup .buy-pdf .content, .buy-pdf-popup .buy-app .content, .buy-pdf-popup .buy-pdf .content {
    margin-left: 320px;
    min-height: 250px;
  }
  .buy-walk-popup .recommended, .buy-pdf-popup .recommended {
    background-image: url("/images/graphics/recommended.png");
    background-repeat: no-repeat;
    background-position: right top;
  }
}

@media screen and (max-width: 37.49em) {
  .buy-walk-popup, .buy-pdf-popup {
    max-width: calc(100vw - 100px);
  }
}

.buy-walk-popup .paypal-button, .buy-walk-popup .buy-button, .buy-pdf-popup .paypal-button, .buy-pdf-popup .buy-button {
  text-align: center;
  margin: 36px;
}

.buy-walk-popup .paypal-button form, .buy-pdf-popup .paypal-button form {
  display: inline;
}

/*****************************************************************
 Walk photos slideshow using lightgallery - walk leaf page
*****************************************************************/
/*
 * Lightgallery photo slideshow
 */
.lightgallery {
  position: relative;
}

.lightgallery.fullscreen {
  position: static !important;
}

.lightgallery.fullscreen .lightGallery-captions p {
  font-size: 16px !important;
}

.lightgallery:not(.fullscreen) .lg-next, .lightgallery:not(.fullscreen) .lg-prev {
  display: none;
}

.lightgallery .lightGallery-captions {
  position: relative;
  color: black !important;
  text-shadow: 0 0 1px rgba(0, 0, 0, 0.5);
}

.lightgallery .lightGallery-captions::before {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  z-index: -1;
  border-radius: 4px;
  padding-bottom: 1px;
  background: white;
  opacity: 0.85;
}

/*****************************************************************
 SEO-friendly photo gallery (server-rendered HTML)
 Shows first image before JS initializes lightgallery
*****************************************************************/
#photos .photo-gallery-seo {
  position: relative;
  width: 100%;
}

#photos .photo-gallery-seo .gallery-item {
  margin: 0;
  display: none;
}

#photos .photo-gallery-seo .gallery-item:first-child {
  display: block;
}

#photos .photo-gallery-seo .gallery-item img {
  width: 100%;
  height: auto;
  display: block;
  object-fit: contain;
  aspect-ratio: 1.3197969543;
}

#photos .photo-gallery-seo .gallery-item figcaption {
  background: rgba(0, 0, 0, 0.7);
  color: white;
  padding: 8px 12px;
  font-size: 14px;
  text-align: center;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
}

#photos.lightgallery:not(.loading) .photo-gallery-seo {
  display: none;
}

@media (max-width: 959px) {
  #photos.lightgallery body {
    width: auto;
    height: 0;
    padding-bottom: 75.7692307692%;
  }
  #photos.lightgallery body:not(.fullscreen) .lg-container {
    width: auto;
    height: 0;
    padding-bottom: 75.7692307692%;
  }
}

@media (min-width: 960px) {
  #photos.lightgallery {
    width: 520px;
    height: 394px;
  }
  #photos.lightgallery:not(.fullscreen) .lg-container {
    width: 520px;
    height: 394px;
  }
}

#photos.lightgallery:after {
  display: none;
}

/*****************************************************************
 Walk location shown on outline map of Cornwall
*****************************************************************/
#outline-map {
  margin: 8px auto;
  position: relative;
  width: 320px;
  height: 320px;
}

#outline-map img {
  cursor: pointer;
}

#outline-map .indicator {
  position: absolute;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: red;
  box-shadow: 0 0 3px white;
  border: 1px solid white;
  transform: translate(-50%, -50%);
}

/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

@media screen and (max-width: 59.99em) {
  #mysteries {
    padding-top: 24px;
  }
}

#mysteries img {
  width: 100%;
}

#columns {
  display: grid;
  grid-template-columns: 1fr;
}

#columns .left.col,
#columns .right.col {
  display: contents;
}

.left.col .narrow.box {
  max-width: 536px;
}

.box[data-col-dual="right"] {
  padding-top: 4px;
}

.box {
  order: 100;
}

[data-role="listview"] > li {
  padding: 2px 0;
}

@media (max-width: 959px) {
  #columns [data-role="button"]:not(.non-responsive) {
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
    color: #333 !important;
    background: #eee;
    border-color: #ddd;
    border-width: 1px;
    border-style: solid;
    border-radius: 5px;
    margin: .5em 0;
    padding: .7em 1em;
    display: inline-block;
    position: relative;
    overflow: hidden;
    white-space: nowrap;
    cursor: pointer;
    user-select: none;
    text-align: center;
    text-overflow: ellipsis;
    text-decoration: none;
    font-weight: bold;
    font-size: 16px;
  }
  #columns [data-role="button"]:not(.non-responsive):hover, #columns [data-role="button"]:not(.non-responsive):active {
    background: #e8f0ff;
  }
  #columns [data-role="button"]:not(.non-responsive)[data-icon] {
    padding-left: 32px;
    padding-right: 8px;
  }
  #columns [data-role="button"]:not(.non-responsive)[data-icon] i {
    top: 50%;
    transform: translateY(-50%);
    position: absolute;
    left: 8px;
  }
  #columns [data-role="button"]:not(.non-responsive).green {
    background: linear-gradient(to bottom, #8ddda0 0%, #3ddb8c 50%, #8ddda0 100%);
    border-color: #2b6b37;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  }
  #columns [data-role="button"]:not(.non-responsive).green:hover, #columns [data-role="button"]:not(.non-responsive).green:active {
    background: linear-gradient(to bottom, #dcf4e1 0%, #3ddb8c 50%, #dcf4e1 100%);
  }
  #columns [data-role="button"]:not(.non-responsive).blue {
    background: linear-gradient(to bottom, #8dc0dd 0%, #3dacdb 50%, #8dc0dd 100%);
    border-color: #126167;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
  }
  #columns [data-role="button"]:not(.non-responsive).blue:hover, #columns [data-role="button"]:not(.non-responsive).blue:active {
    background: linear-gradient(to bottom, #dce1f4 0%, #6eaceb 50%, #dce1f4 100%);
  }
  #columns [data-role="listview"]:not(.non-responsive) {
    background-color: #2f2f2f;
    border-radius: 4px;
    z-index: 0;
    position: relative;
    box-shadow: 4px 4px 4px #bbb;
    color: #eee;
    padding: 0 !important;
    list-style: none;
  }
  #columns [data-role="listview"]:not(.non-responsive), #columns [data-role="listview"]:not(.non-responsive) a {
    color: white;
  }
  #columns [data-role="listview"]:not(.non-responsive):before {
    content: '';
    position: absolute;
    width: 100%;
    height: 18px;
    left: 0;
    top: 0;
    background: linear-gradient(#717171, #424141);
    border-radius: 4px 4px 0 0;
    z-index: -1;
  }
  #columns [data-role="listview"]:not(.non-responsive):after {
    content: '';
    position: absolute;
    width: 100%;
    height: 18px;
    left: 0;
    top: 18px;
    background: linear-gradient(#404040, #2f2f2f);
    z-index: -1;
  }
  #columns [data-role="listview"]:not(.non-responsive) > * {
    z-index: 2;
  }
  body:not(.fullscreen) #columns [data-role="listview"]:not(.non-responsive) > * {
    position: relative;
  }
  #columns [data-role="listview"]:not(.non-responsive) a, #columns [data-role="listview"]:not(.non-responsive) strong {
    color: white;
  }
  #columns [data-role="listview"]:not(.non-responsive) h2 {
    border: none;
    margin: 0;
  }
  #columns [data-role="listview"]:not(.non-responsive) > li {
    display: block;
    position: relative;
    overflow: visible;
    margin: 0;
    padding: 8px 16px 8px 8px !important;
    list-style: none;
    font-weight: bold;
    border-color: #ddd;
    border-style: solid;
    border-width: 1px 1px 0 1px;
    font-size: 16px !important;
  }
}

@media screen and (max-width: 959px) and (max-width: 37.49em) {
  #columns [data-role="listview"]:not(.non-responsive) > li {
    font-size: 14px !important;
  }
}

@media (max-width: 959px) {
  #columns [data-role="listview"]:not(.non-responsive) > li a {
    margin: 0;
    text-align: left;
    text-decoration: none;
    overflow: hidden;
    font-size: 16px !important;
  }
}

@media screen and (max-width: 959px) and (max-width: 37.49em) {
  #columns [data-role="listview"]:not(.non-responsive) > li a {
    font-size: 14px !important;
  }
}

@media (max-width: 959px) {
  #columns [data-role="listview"]:not(.non-responsive) > li a:after {
    content: '>';
    position: absolute;
    right: 4px;
    font-size: 16px !important;
  }
}

@media screen and (max-width: 959px) and (max-width: 37.49em) {
  #columns [data-role="listview"]:not(.non-responsive) > li a:after {
    font-size: 14px !important;
  }
}

@media (max-width: 959px) {
  #columns :not(.non-responsive):not([data-role]):not([role]) > li > a:only-child {
    padding: 8px 0;
    display: inline-block;
  }
}

@media (min-width: 740px) and (max-width: 959px) {
  #columns .box[data-col-single="right"],
  #columns .box[data-col-dual="right"] {
    width: calc(50% - 12px);
    float: left;
    margin: 0 4px 8px;
  }
  #columns .box[data-col-single="right"]:nth-of-type(odd),
  #columns .box[data-col-dual="right"]:nth-of-type(odd) {
    clear: left;
  }
}

@media (min-width: 960px) {
  #columns {
    grid-template-columns: 536px 376px;
    gap: 0 16px;
  }
  #columns .left.col,
  #columns .right.col {
    display: block;
  }
  #columns .left.col {
    grid-column: 1;
    grid-row: 1;
  }
  #columns .right.col {
    grid-column: 2;
    grid-row: 1;
  }
}

/******************************************************
* Promos
******************************************************/
.promo-container {
  margin: 0 auto;
  width: 100%;
  /******************************************************
* Slick Carousel default theme overrides
******************************************************/
}

.promo-container .slick-prev,
.promo-container .slick-next {
  z-index: 1;
  width: auto !important;
  height: auto !important;
}

.promo-container .slick-prev:before,
.promo-container .slick-next:before {
  background-color: black;
  border-radius: 20px;
}

.promo-container .slick-prev {
  left: 16px;
}

.promo-container .slick-prev:before {
  content: "\f104";
  font: 40px/1 'FontAwesome';
  padding: 0 16px 2px 12px;
}

.promo-container .slick-next {
  right: 16px;
  text-align: right;
}

.promo-container .slick-next:before {
  content: "\f105";
  font: 40px/1 'FontAwesome';
  padding: 0 12px 2px 16px;
}

.promo-container .slick-prev:hover:before,
.promo-container .slick-next:hover:before {
  color: #7e7e7e;
}

@media (pointer: coarse) and (hover: none) {
  .promo-container .slick-prev:hover:before,
  .promo-container .slick-next:hover:before {
    color: white;
    opacity: 0.75;
  }
}

@media screen and (max-width: 48.615em) {
  .promo-container .slick-prev:hover:before,
  .promo-container .slick-next:hover:before {
    color: white;
    opacity: 0.75;
  }
}

.promo-container .slick-list {
  margin: 0 -8px;
}

.promo-container .slick-slide {
  margin: 0 8px;
}

body:not(.fullscreen) .promo-container:not(.loaded), .promo-container:not(.displayed) {
  position: relative;
}

.promo-container:not(.loaded)::after, .promo-container:not(.displayed)::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -30px;
  margin-left: -30px;
  width: 50px;
  height: 50px;
  border-radius: 50px;
  border: 5px solid rgba(0, 0, 0, 0.25);
  border-top-color: black;
  animation: loading 1s ease infinite;
}

@keyframes loading {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

.promo-container:not(.displayed) .slick-arrow {
  display: none !important;
}

.promo-container:not(.loaded) .promo {
  display: none !important;
}

.promo-container .promos {
  padding: 8px 0 4px 0;
}

@media screen and (max-width: 22.75em) {
  .promo-container .promos {
    padding: 0;
  }
}

.promo-container .promo {
  position: relative;
  text-align: center;
}

.promo-container .promo .wrapper {
  display: inline-block;
  position: relative;
  left: -1px;
  border: 1px solid #999999;
}

.promo-container .promo img {
  box-shadow: 4px 4px 4px #bbb;
  margin: 0 auto;
  width: 100%;
}

.promo-container .promo .title, .promo-container .promo .message {
  position: absolute;
  width: 100%;
  left: 0;
}

.promo-container .promo .title h2, .promo-container .promo .title p, .promo-container .promo .message h2, .promo-container .promo .message p {
  color: white;
  margin: 0;
  z-index: 2;
  background-color: rgba(0, 0, 0, 0.5);
  text-shadow: 0 0 1px black;
}

.promo-container .promo .title {
  top: 0;
}

.promo-container .promo .title h2 {
  font-size: 14pt;
  border: none;
  padding: 2px;
}

.promo-container .promo .message {
  bottom: 0;
}

.promo-container .promo .message p {
  padding: 4px 0 4px 4px;
  font-size: 10pt;
  text-align: left;
}

/*****************************************************************
 Box layout
*****************************************************************/
.box {
  margin-bottom: 16px;
}

@media screen and (min-width: 60em) {
  body:not(.fullscreen) .box {
    position: relative;
  }
  .box.shaded {
    background-color: #2f2f2f;
    border-radius: 4px;
    z-index: 0;
    position: relative;
    box-shadow: 4px 4px 4px #bbb;
    color: #eee;
    padding: 8px;
  }
  .box.shaded, .box.shaded a {
    color: white;
  }
  .box.shaded:before {
    content: '';
    position: absolute;
    width: 100%;
    height: 18px;
    left: 0;
    top: 0;
    background: linear-gradient(#717171, #424141);
    border-radius: 4px 4px 0 0;
    z-index: -1;
  }
  .box.shaded:after {
    content: '';
    position: absolute;
    width: 100%;
    height: 18px;
    left: 0;
    top: 18px;
    background: linear-gradient(#404040, #2f2f2f);
    z-index: -1;
  }
  .box.shaded > * {
    z-index: 2;
  }
  body:not(.fullscreen) .box.shaded > * {
    position: relative;
  }
  .box.shaded a, .box.shaded strong {
    color: white;
  }
  .box.shaded h2 {
    border: none;
    margin: 0;
  }
  .box > p {
    margin: 0;
  }
}

body:not(.fullscreen) .box.always {
  position: relative;
}

.box.always.shaded {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  box-shadow: 4px 4px 4px #bbb;
  color: #eee;
  padding: 8px;
}

.box.always.shaded, .box.always.shaded a {
  color: white;
}

.box.always.shaded:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#717171, #424141);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

.box.always.shaded:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#404040, #2f2f2f);
  z-index: -1;
}

.box.always.shaded > * {
  z-index: 2;
}

body:not(.fullscreen) .box.always.shaded > * {
  position: relative;
}

.box.always.shaded a, .box.always.shaded strong {
  color: white;
}

.box.always.shaded h2 {
  border: none;
  margin: 0;
}

.box.always > p {
  margin: 0;
}

.box h2 {
  font-weight: normal;
  font-size: 16pt;
}

@media screen and (max-width: 59.99em) {
  .box h2 {
    margin-top: 0;
  }
}

.box ul {
  padding-left: 16px;
}

.panel {
  margin-bottom: 16px;
}

/*****************************************************************
 Single column box order
*****************************************************************/
#caveats {
  order: 0;
}

#overview {
  order: 1;
}

#buy {
  order: 2;
}

#app-ad {
  order: 3;
}

#summary {
  order: 4;
}

#highlights {
  order: 5;
}

#stats {
  order: 6;
}

#dogs {
  order: 7;
}

#location {
  order: 8;
}

#weather {
  order: 9;
}

#photos {
  order: 10;
}

#walk-reviews {
  order: 11;
}

#os_maps {
  order: 12;
}

#links {
  order: 13;
}

/*****************************************************************
 Buy
*****************************************************************/
body:not(.accounts-enabled) #buy {
  display: none;
}

#buy, #buy [class*='status-'] {
  display: none;
}

#buy[class*='status-'],
#buy.status-signed-out .status-signed-out,
#buy.status-in-basket .status-in-basket,
#buy.status-owned .status-owned,
#buy.status-available .status-available,
#buy.status-error .status-error {
  display: block;
}

#buy [role="button"] {
  display: table;
  cursor: pointer;
  text-decoration: underline;
  margin-top: 8px;
}

@media (pointer: coarse) and (hover: none) {
  #buy [role="button"] {
    text-decoration: inherit;
  }
}

@media screen and (max-width: 48.615em) {
  #buy [role="button"] {
    text-decoration: inherit;
  }
}

#buy [role="button"]:first-child {
  margin-top: 0;
}

/*****************************************************************
 Social bookmarks
*****************************************************************/
#walk_sharing {
  float: right;
  margin-top: 16px;
  margin-right: 12px;
}

@media screen and (max-width: 59.99em) {
  #walk_sharing {
    display: none;
  }
}

/*****************************************************************
 Overview (inside left column on desktop)
*****************************************************************/
@media screen and (max-width: 37.49em) {
  #overview {
    margin-bottom: 16px;
  }
  body:not(.fullscreen) #overview {
    position: relative;
  }
  #overview.shaded {
    background-color: #2f2f2f;
    border-radius: 4px;
    z-index: 0;
    position: relative;
    box-shadow: 4px 4px 4px #bbb;
    color: #eee;
    padding: 8px;
  }
  #overview.shaded, #overview.shaded a {
    color: white;
  }
  #overview.shaded:before {
    content: '';
    position: absolute;
    width: 100%;
    height: 18px;
    left: 0;
    top: 0;
    background: linear-gradient(#717171, #424141);
    border-radius: 4px 4px 0 0;
    z-index: -1;
  }
  #overview.shaded:after {
    content: '';
    position: absolute;
    width: 100%;
    height: 18px;
    left: 0;
    top: 18px;
    background: linear-gradient(#404040, #2f2f2f);
    z-index: -1;
  }
  #overview.shaded > * {
    z-index: 2;
  }
  body:not(.fullscreen) #overview.shaded > * {
    position: relative;
  }
  #overview.shaded a, #overview.shaded strong {
    color: white;
  }
  #overview.shaded h2 {
    border: none;
    margin: 0;
  }
  #overview > p {
    margin: 0;
  }
  #overview #main-photo {
    max-width: 100% !important;
    margin-bottom: 8px;
  }
  #overview #main-photo .image-border {
    display: none;
  }
}

@media screen and (min-width: 37.5em) {
  #overview #main-photo {
    margin-bottom: 12px;
  }
  #overview #short-description {
    display: none;
  }
}

@media screen and (min-width: 60em) {
  #overview {
    order: 0;
  }
  #overview #main-photo {
    max-width: 100%;
  }
  #overview #main-photo img {
    width: 100%;
    height: auto;
  }
}

/*****************************************************************
 App intro shown for new users
*****************************************************************/
.app-formats {
  display: table;
  margin: 0 auto;
  width: 100%;
}

@media screen and (min-width: 60em) {
  .app-formats .app-button {
    display: none !important;
  }
}

@media screen and (max-width: 59.99em) {
  .app-formats .text {
    display: none !important;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 59.99em) {
  .app-formats .icon {
    visibility: hidden;
  }
}

@media screen and (max-width: 37.49em) {
  .app-formats {
    display: block;
    width: 100%;
  }
  .app-formats .icon {
    display: none !important;
  }
}

.app-formats > div.store-link {
  display: table-cell;
}

.app-formats > div.store-link .inner {
  left: 50%;
  transform: translateX(-50%);
  position: relative;
  width: 98%;
  width: calc(100% - 12px);
  border-radius: 10px;
  display: table;
  table-layout: fixed;
}

@media screen and (min-width: 37.5em) {
  .app-formats > div.store-link .inner {
    margin: 8px 0 0 0;
    padding: 8px 0 4px 0;
    border: 1px solid #aaaaaa;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 59.99em) {
  .app-formats > div.store-link .inner {
    position: relative;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 46.24em) {
  .app-formats > div.store-link .inner {
    padding: 4px 0 8px 0;
  }
}

@media screen and (min-width: 60em) {
  .app-formats > div.store-link:hover {
    cursor: pointer;
  }
  .app-formats > div.store-link:hover a {
    text-decoration: underline;
  }
}

.app-formats > div.store-link.ios .icon {
  padding-left: 42px;
}

@media screen and (min-width: 46.25em) {
  .app-formats > div.store-link.android .icon img {
    margin-left: 12px;
  }
}

.app-formats > div.store-link.android .icon {
  padding-left: 24px !important;
}

.app-formats > div.store-link .inner > div {
  display: table-cell;
  vertical-align: middle;
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div {
    display: block;
  }
}

.app-formats > div.store-link .inner > div.icon {
  text-align: left;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-right: 16px;
}

@media screen and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.icon {
    display: none;
  }
}

.app-formats > div.store-link .inner > div.text {
  text-align: center;
  font-size: 17px;
  font-variant: small-caps;
  color: white;
}

.app-formats > div.store-link .inner > div.text a {
  color: white;
  text-decoration: none;
}

.app-formats > div.store-link .inner > div.qr {
  text-align: right;
  padding-left: 18px;
  padding-right: 8px;
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div.qr {
    text-align: center;
  }
}

@media screen and (max-width: 37.49em) {
  .app-formats > div.store-link .inner > div.qr {
    display: none !important;
  }
}

.app-formats > div.store-link .inner > div.qr img {
  max-width: 100px;
}

@media screen and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.qr img {
    width: 100%;
  }
}

@media screen and (min-width: 46.25em) and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.app-button {
    top: 50%;
    transform: translateY(-50%);
    position: absolute;
    left: 8px;
    text-align: left;
  }
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div.app-button {
    text-align: center;
  }
}

.app-formats > div.store-link .inner > div.app-button a {
  padding-left: 42px;
}

@media screen and (max-width: 37.49em) {
  .app-formats > div.store-link .inner > div.app-button a {
    margin: 12px 0 0 0;
  }
}

#app-intro {
  background-color: #131;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  /*
 * Responsive slideshow widget using Slick carousel
 */
  /******************************************************
* Slick Carousel default theme overrides
******************************************************/
  display: none;
  padding: 4px 0 0 0;
  margin-bottom: 16px;
}

#app-intro, #app-intro a {
  color: white;
}

#app-intro:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#2e802e, #174517);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

#app-intro:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#184719, #113311);
  z-index: -1;
}

#app-intro > * {
  z-index: 2;
}

body:not(.fullscreen) #app-intro > * {
  position: relative;
}

#app-intro .slick-prev,
#app-intro .slick-next {
  z-index: 1;
  width: auto !important;
  height: auto !important;
}

#app-intro .slick-prev:before,
#app-intro .slick-next:before {
  background-color: black;
  border-radius: 20px;
}

#app-intro .slick-prev {
  left: 16px;
}

#app-intro .slick-prev:before {
  content: "\f104";
  font: 40px/1 'FontAwesome';
  padding: 0 16px 2px 12px;
}

#app-intro .slick-next {
  right: 16px;
  text-align: right;
}

#app-intro .slick-next:before {
  content: "\f105";
  font: 40px/1 'FontAwesome';
  padding: 0 12px 2px 16px;
}

#app-intro .slick-prev:hover:before,
#app-intro .slick-next:hover:before {
  color: #7e7e7e;
}

@media (pointer: coarse) and (hover: none) {
  #app-intro .slick-prev:hover:before,
  #app-intro .slick-next:hover:before {
    color: white;
    opacity: 0.75;
  }
}

@media screen and (max-width: 48.615em) {
  #app-intro .slick-prev:hover:before,
  #app-intro .slick-next:hover:before {
    color: white;
    opacity: 0.75;
  }
}

#app-intro .slideshow {
  --slideshow-aspect-ratio: 928/350;
  margin: 0 auto 0 auto;
  width: 100%;
}

#app-intro .slideshow:not(.initialised) .slide {
  display: none !important;
}

#app-intro .slideshow:not(.initialised) .slide:first-child {
  display: block !important;
}

#app-intro .slideshow.loading {
  width: 100%;
}

body:not(.fullscreen) #app-intro .slideshow.loading {
  position: relative;
}

#app-intro .slideshow.loading::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -30px;
  margin-left: -30px;
  width: 50px;
  height: 50px;
  border-radius: 50px;
  border: 5px solid rgba(255, 255, 255, 0.25);
  border-top-color: white;
  animation: loading 1s ease infinite;
}

@keyframes loading {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

#app-intro .slideshow.loading .caption {
  display: none !important;
}

#app-intro .slideshow.loading .slide {
  visibility: hidden;
}

#app-intro .slideshow.loading .slide:first-child .caption {
  display: block !important;
}

#app-intro .slideshow.loading .slide img {
  visibility: hidden;
}

#app-intro .slideshow.initialised:not(.loading) .wrapper:not(.evaluating) {
  position: relative;
}

#app-intro .slideshow.initialised:not(.loading) .wrapper:not(.evaluating) .caption {
  top: 50%;
  transform: translateY(-50%);
  position: absolute;
}

#app-intro .slideshow .slide img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  aspect-ratio: var(--slideshow-aspect-ratio);
}

#app-intro .slideshow .slide .caption {
  font-family: "Coming Soon";
  color: #ddd;
  padding: 8px 16px;
  display: block;
  vertical-align: middle;
  font-size: 16pt;
}

@media screen and (max-width: 37.49em) {
  #app-intro .slideshow .slide .caption {
    font-size: 12pt;
    line-height: 14pt;
  }
}

#app-intro h2 {
  border-bottom: none;
  padding: 0 8px 8px 8px;
  margin: 0;
}

#app-intro .slideshow {
  background-color: #131;
}

#app-download-links {
  padding-bottom: 8px;
}

/*****************************************************************
 Summary
*****************************************************************/
#summary {
  display: block;
}

@media screen and (max-width: 37.49em) {
  #summary .synopsis {
    display: none;
  }
}

#summary:before, #summary:after {
  z-index: -1;
}

/*****************************************************************
 Caveats and considerations
*****************************************************************/
#caveats {
  background-color: #5c1e1e;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  padding: 6px;
}

body:not(.fullscreen) #caveats {
  position: relative;
}

#caveats.shaded {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  box-shadow: 4px 4px 4px #bbb;
  color: #eee;
  padding: 8px;
}

#caveats.shaded, #caveats.shaded a {
  color: white;
}

#caveats.shaded:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#717171, #424141);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

#caveats.shaded:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#404040, #2f2f2f);
  z-index: -1;
}

#caveats.shaded > * {
  z-index: 2;
}

body:not(.fullscreen) #caveats.shaded > * {
  position: relative;
}

#caveats.shaded a, #caveats.shaded strong {
  color: white;
}

#caveats.shaded h2 {
  border: none;
  margin: 0;
}

#caveats > p {
  margin: 0;
}

#caveats, #caveats a {
  color: white;
}

#caveats:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#a83b3b, #6e2525);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

#caveats:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#702525, #5c1e1e);
  z-index: -1;
}

#caveats > * {
  z-index: 2;
}

body:not(.fullscreen) #caveats > * {
  position: relative;
}

#considerations h2 {
  background-image: url("/images/graphics/warning.png");
  background-repeat: no-repeat;
  padding-left: 40px;
}

/*****************************************************************
 Highlights
*****************************************************************/
/*****************************************************************
 Reviews
*****************************************************************/
@media screen and (min-width: 60em) {
  #walk-reviews h2 {
    margin-bottom: 8px;
  }
}

/*****************************************************************
 Links
*****************************************************************/
#links li.linking-url {
  cursor: copy;
}

#links li.linking-url .url:after {
  position: absolute;
  right: 4px;
}

@media screen and (max-width: 59.99em) {
  #links li.linking-url .url:after {
    font-family: FontAwesome;
    content: "\f0c5";
    font-size: 16px !important;
  }
}

@media screen and (max-width: 59.99em) and (max-width: 37.49em) {
  #links li.linking-url .url:after {
    font-size: 14px !important;
  }
}

@media screen and (min-width: 60em) {
  #links li.linking-url .url:after {
    content: 'Copy';
    padding: 1px 4px;
    font-size: 10pt;
    background-color: #aaaaaa;
  }
}

/*****************************************************************
 Dogs
*****************************************************************/
#dogs {
  padding-top: 4px;
}

/*****************************************************************
 QR and app promo (Desktop only)
*****************************************************************/
@media screen and (max-width: 59.99em) {
  #app-promo {
    display: none;
  }
}

#app-promo .qrcode {
  float: right;
  margin-left: 16px;
  margin-top: 4px;
  background: white;
}

#app-promo .qrcode img {
  display: block;
}

#app-promo p {
  margin: 0;
}

#app-promo .inner a {
  text-decoration: none;
  font-weight: bold;
  line-height: 16px;
}

#app-promo .os-links img {
  margin: 8px 5% 0 5%;
}

/*****************************************************************
 Stats
*****************************************************************/
#stats ul {
  clear: right;
}

/*****************************************************************
 OS Maps
*****************************************************************/
#map-images {
  margin-top: 4px;
  margin-bottom: 4px;
}

#map-images a {
  position: relative;
  height: 100%;
  display: inline-block;
}

#map-images a:after {
  content: '';
  position: absolute;
  left: -2px;
  bottom: 14px;
  width: 100%;
  height: 100%;
  background-position-x: center;
  background-position-y: bottom;
  background-size: 60px 46px;
  background-repeat: no-repeat;
}

/*****************************************************************
 Ads
*****************************************************************/
#app-ad {
  background-color: #285d1e;
  border-radius: 4px;
  z-index: 0;
  position: relative;
}

#app-ad, #app-ad a {
  color: white;
}

#app-ad:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#469936, #307025);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

#app-ad:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#307225, #285d1e);
  z-index: -1;
}

#app-ad > * {
  z-index: 2;
}

body:not(.fullscreen) #app-ad > * {
  position: relative;
}

@media screen and (max-width: 37.49em) {
  #app-ad .text {
    display: none;
  }
  #app-ad .text > * {
    display: table-cell;
  }
  #app-ad .text * {
    vertical-align: middle;
  }
  #app-ad .text .more {
    display: none;
  }
  #app-ad .text .app-ad-phone {
    margin-right: 16px;
  }
}

@media screen and (min-width: 37.5em) {
  #app-ad .app-ad-phone {
    float: right;
    margin: 0 0 8px 8px;
    position: relative;
    z-index: 2;
  }
}

@media screen and (max-width: 59.99em) {
  #app-ad .text .download {
    display: none;
  }
}

#app-ad:hover {
  filter: brightness(1.25);
}

#app-ad #app-deeplink {
  text-align: center;
}

@media screen and (max-width: 37.49em) {
  #app-ad #app-deeplink .app-name {
    display: none;
  }
}

@media screen and (min-width: 60em) {
  #app-ad #app-deeplink {
    display: none;
  }
}

#app-ad #app-deeplink a {
  margin: 0;
}

/*****************************************************************
 PDF icon
*****************************************************************/
.pdf-icon {
  float: right;
  position: relative;
  top: -9px;
  filter: opacity(60%);
}

.pdf-icon:hover {
  cursor: pointer;
  filter: opacity(100%);
}

body.accounts-enabled .pdf-icon {
  display: none;
}

/*****************************************************************
 Sample directions
*****************************************************************/
#sample-explanation {
  background-color: #fff;
  border: 1px solid #ccc;
  padding: 16px;
  width: auto;
  font-style: italic;
}

.sample-elipses {
  width: auto;
  font-size: 36pt;
  text-align: center;
}

/*****************************************************************
 Buy walk box
*****************************************************************/
.buy-walk {
  margin-top: 12px;
  margin-bottom: 12px;
  border: 1px solid #ccc;
  padding: 16px;
  width: auto;
}

@media screen and (max-width: 37.49em) {
  .buy-walk {
    display: none;
  }
}

body.accounts-enabled .buy-walk {
  display: none;
}

.buy-walk p {
  margin: -8px 0 0 0;
}

.buy-walk p .button {
  cursor: pointer;
  margin: 8px 8px 8px 0;
}

#buy-walk-top.buy-walk p .button-caption {
  display: inline;
}

.buy-walk p > * {
  vertical-align: middle;
}

.buy-walk p a {
  display: block;
  margin-top: 8px;
  text-align: center;
}

#buy-walk-top {
  margin-top: 0;
  margin-bottom: 16px;
}

@media screen and (max-width: 37.49em) {
  #buy-walk-top {
    display: none;
  }
}

body.accounts-enabled #buy-walk-top {
  display: none;
}

#buy-walk-top p {
  margin: 0;
}

#buy-walk-top p .button {
  cursor: pointer;
  margin: 0 8px 8px 0;
  max-width: 100%;
  height: auto;
}

#buy-walk-top p > * {
  vertical-align: middle;
}

#buy-walk-top p .button-caption {
  display: block;
  margin-top: 8px;
}

#buy-walk-top p a {
  display: block;
  margin-top: 8px;
}

/********************************************************
* Bottom promo (if active)
********************************************************/
/**
* Display a bottom promo in a light green box
*/
.bottom-promo {
  background-color: rgba(124, 197, 149, 0.65);
  border-radius: 4px;
  box-shadow: 4px 4px 4px #bbb;
  margin-top: 16px;
  padding: 8px;
}

.bottom-promo, .bottom-promo a {
  color: white;
}

.bottom-promo, .bottom-promo a {
  color: black;
}

.bottom-promo p {
  margin: 0;
}

/*****************************************************************
 Print Adverts
*****************************************************************/
.print-advert {
  display: none;
  margin-top: 16px;
}

.print-advert img {
  width: 100%;
}

#ink_message {
  color: #006600;
  font-size: 8pt;
  display: none;
}

/*****************************************************************
 Misc responsive tweaks
*****************************************************************/
@media screen and (max-width: 37.49em) {
  #like_on_facebook {
    display: none;
  }
}

/*****************************************************************
 Print mods
*****************************************************************/
body.accounts-enabled .print_button {
  display: none;
}

#atic_print {
  display: none !important;
}

@media print {
  body, body *, body :before, body :after {
    background: none !important;
    color: #000 !important;
  }
  .left.col, #cutdowns, #buy, #main-photo, #photos, #app-promo, #stats, #os_maps, #highlights, #related, #nearby, #alternatives, #adjoining, #links, #pubs, #facebook-group, #like_on_facebook, #app-ad, #walk-reviews, #toggle-directions, #directions .more-info, .pdf-icon, #buy-walk, .feature-box {
    display: none;
  }
  #app-intro {
    display: none !important;
  }
  #directions {
    display: none !important;
  }
  .right.col {
    float: none;
    width: 100%;
  }
  h2 {
    border-bottom: 1px solid #aaa;
  }
  .box {
    margin: 0;
    border-radius: 0;
    box-shadow: 0 0;
  }
  #stats {
    margin-top: 16px;
    color: black;
  }
  #print-app-promo {
    display: block;
    position: relative;
    height: 200px;
  }
  #print-app-promo .qr {
    position: absolute;
  }
  #print-app-promo .content {
    position: absolute;
    margin-left: 88px;
  }
  #print-app-promo .content p {
    margin: 4px 0px 0px 0px;
  }
  .print-advert {
    display: block;
  }
  #ink_message {
    display: none;
    margin-top: 32px;
  }
}

/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiLi4vd3d3L2Nzcy93YWxrLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vd3d3L3Njc3Mvd2Fsay5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX2NvbW1vbi5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX3ZhcmlhYmxlcy5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX2dlbmVyYWxfbWl4aW5zLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fbWVkaWEuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19tcS5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX3RvdWNoLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fbWFpbl9waG90by5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQHdhbGsvX21hcC5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQHdhbGsvX2RpcmVjdGlvbnMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0B3YWxrL19jb250cmlidXRlLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9Ad2Fsay9fYnV5X3dhbGsuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0B3YWxrL19waG90b3Muc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL2NvbXBvbmVudC9fbGlnaHRnYWxsZXJ5LnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9Ad2Fsay9fb3V0bGluZV9tYXAuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0B3YWxrL19teXN0ZXJpZXMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19yZXNwb25zaXZlX2NvbHVtbnMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL2NvbXBvbmVudC9fcHJvbW9zLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9jb21wb25lbnQvX2xvYWRlci5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvY29tcG9uZW50L19zbGlja19vdmVycmlkZXMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19hcHBfYWRfZm9ybWF0cy5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvY29tcG9uZW50L19zbGlkZXNob3cuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19ib3R0b21fcHJvbW8uc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIi8vIEltcG9ydCBjb21wb25lbnRzXG5AaW1wb3J0IFwiQGluY2x1ZGUvY29tbW9uXCI7XG5AaW1wb3J0IFwiQGluY2x1ZGUvbWFpbl9waG90b1wiO1xuQGltcG9ydCBcIkB3YWxrL21hcFwiO1xuQGltcG9ydCBcIkB3YWxrL2RpcmVjdGlvbnNcIjtcbkBpbXBvcnQgXCJAd2Fsay9jb250cmlidXRlXCI7XG5AaW1wb3J0IFwiQHdhbGsvYnV5X3dhbGtcIjtcbkBpbXBvcnQgXCJAd2Fsay9waG90b3NcIjtcbkBpbXBvcnQgXCJAd2Fsay9vdXRsaW5lX21hcFwiO1xuQGltcG9ydCBcIkB3YWxrL215c3Rlcmllc1wiO1xuQGltcG9ydCBcIkBpbmNsdWRlL3Jlc3BvbnNpdmVfY29sdW1uc1wiO1xuQGltcG9ydCBcIkBpbmNsdWRlL2NvbXBvbmVudC9wcm9tb3NcIjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gQm94IGxheW91dFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbkBtaXhpbiB3YWxrLWJveHtcblxuICBAYXQtcm9vdHtcbiAgICBib2R5Om5vdCguZnVsbHNjcmVlbikgI3smfSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuICB9XG5cbiAgJi5zaGFkZWR7XG4gICAgQGluY2x1ZGUgYm94eTtcbiAgICBwYWRkaW5nOiA4cHg7XG4gIH1cblxuXG4gID4gcHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLmJveCB7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG5cbiAgQGluY2x1ZGUgbXFzKCRmcm9tOiBwYWdlKSB7XG4gICAgQGluY2x1ZGUgd2Fsay1ib3g7XG4gIH1cblxuICAmLmFsd2F5c3tcbiAgICBAaW5jbHVkZSB3YWxrLWJveDtcbiAgfVxuXG4gIGgyIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogMTZwdDtcbiAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiBwYWdlKSB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cbiAgfVxuXG4gIHVsIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7XG4gIH1cbn1cblxuLnBhbmVsIHtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gU2luZ2xlIGNvbHVtbiBib3ggb3JkZXJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI2NhdmVhdHN7XG4gIG9yZGVyOiAwO1xufVxuXG4jb3ZlcnZpZXcge1xuICBvcmRlcjogMTtcbn1cblxuI2J1eSB7XG4gIG9yZGVyOiAyO1xufVxuXG4jYXBwLWFkIHtcbiAgb3JkZXI6IDM7XG59XG5cbiNzdW1tYXJ5e1xuICBvcmRlcjogNDtcbn1cblxuI2hpZ2hsaWdodHMge1xuICBvcmRlcjogNTtcbn1cblxuI3N0YXRzIHtcbiAgb3JkZXI6IDY7XG59XG5cbiNkb2dzIHtcbiAgb3JkZXI6IDc7XG59XG5cbiNsb2NhdGlvbiB7XG4gIG9yZGVyOiA4O1xufVxuI3dlYXRoZXIge1xuICBvcmRlcjogOTtcbn1cblxuI3Bob3RvcyB7XG4gIG9yZGVyOiAxMDtcbn1cblxuI3dhbGstcmV2aWV3c3tcbiAgb3JkZXI6IDExO1xufVxuI29zX21hcHN7XG4gIG9yZGVyOiAxMjtcbn1cbiNsaW5rcyB7XG4gIG9yZGVyOiAxMztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gQnV5XG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiNidXl7XG5cbiAgQGF0LXJvb3R7XG4gICAgYm9keTpub3QoLmFjY291bnRzLWVuYWJsZWQpICN7Jn0ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmLCBbY2xhc3MqPSdzdGF0dXMtJ117XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gICZbY2xhc3MqPSdzdGF0dXMtJ10sXG4gICYuc3RhdHVzLXNpZ25lZC1vdXQgLnN0YXR1cy1zaWduZWQtb3V0LFxuICAmLnN0YXR1cy1pbi1iYXNrZXQgLnN0YXR1cy1pbi1iYXNrZXQsXG4gICYuc3RhdHVzLW93bmVkIC5zdGF0dXMtb3duZWQsXG4gICYuc3RhdHVzLWF2YWlsYWJsZSAuc3RhdHVzLWF2YWlsYWJsZSxcbiAgJi5zdGF0dXMtZXJyb3IgLnN0YXR1cy1lcnJvcntcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIFtyb2xlPVwiYnV0dG9uXCJde1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG5cbiAgICBAaW5jbHVkZSB0b3VjaC1zY3JlZW4tZGV2aWNlc3tcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbiAgICB9XG5cbiAgICAmOmZpcnN0LWNoaWxke1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gU29jaWFsIGJvb2ttYXJrc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiN3YWxrX3NoYXJpbmcge1xuICBmbG9hdDogcmlnaHQ7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIG1hcmdpbi1yaWdodDogMTJweDtcblxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiBwYWdlKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIE92ZXJ2aWV3IChpbnNpZGUgbGVmdCBjb2x1bW4gb24gZGVza3RvcClcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI292ZXJ2aWV3e1xuICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgIEBpbmNsdWRlIHdhbGstYm94O1xuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgI21haW4tcGhvdG97XG4gICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgIC5pbWFnZS1ib3JkZXJ7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgbXFzKCRmcm9tOiB0YWJsZXQ3aW5jaCkge1xuICAgICNtYWluLXBob3Rve1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICB9XG4gICAgI3Nob3J0LWRlc2NyaXB0aW9ue1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBJbnNpZGUgY29sdW1ucyBvbiBkZXNrdG9wIC0gY29uc3RyYWluIHBob3RvIHNpemVcbiAgQGluY2x1ZGUgbXFzKCRmcm9tOiBwYWdlKSB7XG4gICAgb3JkZXI6IDA7IC8vIEZpcnN0IGl0ZW0gaW4gbGVmdCBjb2x1bW5cblxuICAgICNtYWluLXBob3RvIHtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgICAgaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gQXBwIGludHJvIHNob3duIGZvciBuZXcgdXNlcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuQGltcG9ydCBcIi4uL0BpbmNsdWRlL2FwcF9hZF9mb3JtYXRzXCI7XG5cbiNhcHAtaW50cm8ge1xuICBAaW5jbHVkZSBib3hHcmFkaWVudERhcmtHcmVlbjtcbiAgQGltcG9ydCBcIi4vQGluY2x1ZGUvY29tcG9uZW50L3NsaWRlc2hvd1wiO1xuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiA0cHggMCAwIDA7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIGgye1xuXHRib3JkZXItYm90dG9tOiBub25lO1xuICAgIHBhZGRpbmc6IDAgOHB4IDhweCA4cHg7XG5cdG1hcmdpbjogMDtcbiAgfVxuICAuc2xpZGVzaG93e1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkYXJrLWdyZWVuO1xuICB9XG4gIFxufVxuXG4jYXBwLWRvd25sb2FkLWxpbmtzIHtcblx0cGFkZGluZy1ib3R0b206IDhweDtcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIFN1bW1hcnlcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI3N1bW1hcnl7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgLnN5bm9wc2lze1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgei1pbmRleDogLTE7XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gQ2F2ZWF0cyBhbmQgY29uc2lkZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI2NhdmVhdHN7XG4gICAgQGluY2x1ZGUgd2Fsay1ib3g7XG4gICAgQGluY2x1ZGUgYm94R3JhZGllbnRSZWQ7XG4gICAgcGFkZGluZzogNnB4O1xufVxuXG4jY29uc2lkZXJhdGlvbnMge1xuXHRoMiB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCcvaW1hZ2VzL2dyYXBoaWNzL3dhcm5pbmcucG5nJyk7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRwYWRkaW5nLWxlZnQ6IDQwcHg7XG5cdH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gSGlnaGxpZ2h0c1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vLyNoaWdobGlnaHRze31cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gUmV2aWV3c1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4jd2Fsay1yZXZpZXdze1xuICBAaW5jbHVkZSBtcXMoJGZyb206IHBhZ2UpIHtcbiAgICBoMntcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gTGlua3NcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI2xpbmtze1xuICBsaS5saW5raW5nLXVybHtcbiAgICBjdXJzb3I6IGNvcHk7XG4gICAgLnVybDphZnRlcntcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHJpZ2h0OiA0cHg7XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lO1xuICAgICAgICBjb250ZW50OiBcIlxcZjBjNVwiO1xuXG4gICAgICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuICAgICAgICBjb250ZW50OiAnQ29weSc7XG4gICAgICAgIHBhZGRpbmc6IDFweCA0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBwdDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2FhYWFhYTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gRG9nc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiNkb2dzIHtcbiAgcGFkZGluZy10b3A6NHB4O1xufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gUVIgYW5kIGFwcCBwcm9tbyAoRGVza3RvcCBvbmx5KVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiNhcHAtcHJvbW97XG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHBhZ2UpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLnFyY29kZSB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xuICAgIG1hcmdpbi10b3A6NHB4O1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICBcbiAgICBpbWcge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLmlubmVyIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgfVxuXG4gIC5vcy1saW5rcyBpbWd7XG4gICAgbWFyZ2luOiA4cHggNSUgMCA1JTtcbiAgfVxufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gU3RhdHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4jc3RhdHN7XG4gIHVsIHtcbiAgICBjbGVhcjpyaWdodDtcbiAgfVxufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gT1MgTWFwc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiNtYXAtaW1hZ2VzIHtcbiAgbWFyZ2luLXRvcDo0cHg7XG4gIG1hcmdpbi1ib3R0b206NHB4O1xuXG4gIGF7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgJjphZnRlcntcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogLTJweDtcbiAgICAgIGJvdHRvbTogMTRweDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi14OiBjZW50ZXI7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGJvdHRvbTtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogNjBweCA0NnB4O1xuICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gQWRzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI2FwcC1hZCB7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50R3JlZW47XG5cbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcbiAgICAudGV4dHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICA+ICp7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB9XG4gICAgICAqe1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuICAgICAgLm1vcmV7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgICAuYXBwLWFkLXBob25lIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gpIHtcbiAgICAuYXBwLWFkLXBob25lIHtcbiAgICAgIGZsb2F0OnJpZ2h0O1xuICAgICAgbWFyZ2luOiAwIDAgOHB4IDhweDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHotaW5kZXg6IDI7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuXHQudGV4dCB7XG5cdFx0LmRvd25sb2FkIHtcblx0XHRcdGRpc3BsYXk6bm9uZTtcblx0XHR9XG5cdH1cbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGZpbHRlcjpicmlnaHRuZXNzKDEuMjUpO1xuICB9XG4gIFxuICAjYXBwLWRlZXBsaW5re1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICAuYXBwLW5hbWV7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbXFzKCRmcm9tOiBwYWdlKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIGF7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIFBERiBpY29uXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi5wZGYtaWNvbiB7XG5cdGZsb2F0OnJpZ2h0O1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0dG9wOiAtOXB4O1xuXHRmaWx0ZXI6IG9wYWNpdHkoNjAlKTtcblx0XG5cdCY6aG92ZXIge1xuXHRcdGN1cnNvcjpwb2ludGVyO1xuXHRcdGZpbHRlcjogb3BhY2l0eSgxMDAlKTtcblx0fVxuXG4gIEBhdC1yb290e1xuICAgIGJvZHkuYWNjb3VudHMtZW5hYmxlZCAjeyZ9IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIFNhbXBsZSBkaXJlY3Rpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI3NhbXBsZS1leHBsYW5hdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIHBhZGRpbmc6IDE2cHg7XG4gIHdpZHRoOiBhdXRvO1xuICBmb250LXN0eWxlOml0YWxpYztcbn1cblxuLnNhbXBsZS1lbGlwc2VzIHtcblx0d2lkdGg6IGF1dG87XG5cdGZvbnQtc2l6ZTogMzZwdDtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBCdXkgd2FsayBib3hcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4uYnV5LXdhbGsgIHtcbiAgbWFyZ2luLXRvcDoxMnB4O1xuICBtYXJnaW4tYm90dG9tOjEycHg7XG5cbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgcGFkZGluZzogMTZweDtcbiAgd2lkdGg6IGF1dG87XG5cbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgQGF0LXJvb3R7XG4gICAgYm9keS5hY2NvdW50cy1lbmFibGVkICN7Jn0ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBwIHtcblx0bWFyZ2luOiAtOHB4IDAgMCAwO1xuXG4gICAgLmJ1dHRvbiB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBtYXJnaW46IDhweCA4cHggOHB4IDA7XG4gICAgfVxuXG4gICAgLmJ1dHRvbi1jYXB0aW9uIHtcbiAgICAgIEBhdC1yb290e1xuICAgICAgICAjYnV5LXdhbGstdG9wI3smfSB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgPiAqe1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICBhe1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICB9XG59XG5cbi8vIEJ1eSB3YWxrIGJveCBhdCB0b3Agb2YgcmlnaHQgY29sdW1uIChpbnNpZGUgI2NvbHVtbnMpXG4jYnV5LXdhbGstdG9wIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcblxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBAYXQtcm9vdHtcbiAgICBib2R5LmFjY291bnRzLWVuYWJsZWQgI3smfSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcblxuICAgIC5idXR0b24ge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgbWFyZ2luOiAwIDhweCA4cHggMDtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICB9XG5cbiAgICA+ICoge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAuYnV0dG9uLWNhcHRpb24ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIEJvdHRvbSBwcm9tbyAoaWYgYWN0aXZlKVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0IFwiQGluY2x1ZGUvYm90dG9tX3Byb21vXCI7XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gUHJpbnQgQWR2ZXJ0c1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi5wcmludC1hZHZlcnQge1xuICBkaXNwbGF5Om5vbmU7XG4gIG1hcmdpbi10b3A6MTZweDtcbiAgaW1nIHt3aWR0aDoxMDAlfVxufVxuXG4jaW5rX21lc3NhZ2Uge1xuICBjb2xvcjogIzAwNjYwMDtcbiAgZm9udC1zaXplOiA4cHQ7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIE1pc2MgcmVzcG9uc2l2ZSB0d2Vha3NcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcbiAgI2xpa2Vfb25fZmFjZWJvb2t7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBQcmludCBtb2RzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8vIGhpZGUgcHJpbnQgYnV0dG9uIHdoZW4gYWNjb3VudHMgYXJlIGVuYWJsZWQgYXMgaXQgbGlua3MgdG8gYnV5IFBERlxuYm9keS5hY2NvdW50cy1lbmFibGVkIC5wcmludF9idXR0b257XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8vIEhpZGUgdGhlIEFkZCBUaGlzIFByaW50IGJ1dHRvblxuI2F0aWNfcHJpbnR7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuQG1lZGlhIHByaW50IHtcbiAgYm9keSwgYm9keSAqLCBib2R5IDpiZWZvcmUsIGJvZHkgOmFmdGVye1xuICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50O1xuICB9XG4gIC5sZWZ0LmNvbCwgI2N1dGRvd25zLCAjYnV5LCAjbWFpbi1waG90bywgI3Bob3RvcywgI2FwcC1wcm9tbywgI3N0YXRzLCAjb3NfbWFwcywgI2hpZ2hsaWdodHMsICNyZWxhdGVkLCAjbmVhcmJ5LCAjYWx0ZXJuYXRpdmVzLCAjYWRqb2luaW5nLCAjbGlua3MsICNwdWJzLCAjZmFjZWJvb2stZ3JvdXAsICNsaWtlX29uX2ZhY2Vib29rLCAjYXBwLWFkLCAjd2Fsay1yZXZpZXdzLCAjdG9nZ2xlLWRpcmVjdGlvbnMsICNkaXJlY3Rpb25zIC5tb3JlLWluZm8sIC5wZGYtaWNvbiwgI2J1eS13YWxrLCAuZmVhdHVyZS1ib3gge1xuICAgIGRpc3BsYXk6IG5vbmVcbiAgfVxuICBcbiAgI2FwcC1pbnRybyB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICBcbiAgI2RpcmVjdGlvbnMgeyBcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgXG4gIC5yaWdodC5jb2wge1xuICAgIGZsb2F0OiBub25lO1xuICAgIHdpZHRoOiAxMDAlXG4gIH1cblxuICBoMiB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNhYWFcbiAgfVxuXG4gIC5ib3gge1xuICAgIG1hcmdpbjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGJveC1zaGFkb3c6IDAgMDtcbiAgfVxuXG5cbiAgI3N0YXRzIHtcbiAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgIGNvbG9yOiBibGFja1xuICB9XG5cbiAgI3ByaW50LWFwcC1wcm9tbyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0aGVpZ2h0OiAyMDBweDtcblx0XG5cdC5xciB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHR9XG5cdFxuXHQuY29udGVudCB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdG1hcmdpbi1sZWZ0OiA4OHB4O1xuXHRcdFxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiA0cHggMHB4IDBweCAwcHg7XG5cdFx0fVxuXHR9XG4gIH1cbiAgXG4gIC5wcmludC1hZHZlcnQge1xuICAgIGRpc3BsYXk6IGJsb2NrOyAgXG4gIH1cbiAgXG4gICNpbmtfbWVzc2FnZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtYXJnaW4tdG9wOiAzMnB4XG4gIH1cbn1cblxuIiwKCQkiLy8gQ29tbW9uIHN0eWxlc1xuQGltcG9ydCBcInZhcmlhYmxlc1wiO1xuQGltcG9ydCBcImdlbmVyYWxfbWl4aW5zXCI7XG5AaW1wb3J0IFwibWVkaWFcIjtcbkBpbXBvcnQgXCJ0b3VjaFwiO1xuXG5ib2R5e1xuICB2aXNpYmlsaXR5OiBpbmhlcml0O1xufVxuIiwKCQkiLy8gVmFyaWFibGVzXG5cbiRwYWdlLXdpZHRoOiA5NjBweDtcbiRyZXNwb25zaXZlLW1lbnU6IDc3OHB4O1xuXG4kZ3JleTogIzJmMmYyZjtcbiRkYXJrLWdyZWVuOiAjMTMxO1xuJGdyZWVuOiAjMjg1ZDFlO1xuJGJsdWU6ICMxOTQyNGE7XG4kbGlnaHQtZ3JlZW46IHJnYmEoMTI0LCAxOTcsIDE0OSwgMC42NSk7XG4kcmVkOiAjNWMxZTFlO1xuJGRhcmstcmVkOiAjNjYwMDAwO1xuXG4vLyBCb3ggZ3JhZGllbnRzXG4kYm94LUdyYWQtSGVpZ2h0OiAxOHB4O1xuXG4kYm94LUJHLUdyZXk6ICRncmV5O1xuJGJveC1HcmFkLVVwcGVyLVRvcC1HcmV5OiAjNzE3MTcxO1xuJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1HcmV5OiAjNDI0MTQxO1xuJGJveC1HcmFkLUxvd2VyLVRvcC1HcmV5OiAjNDA0MDQwO1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1HcmV5OiAjMmYyZjJmO1xuXG4kYm94LUJHLUdyZWVuOiAkZ3JlZW47XG4kYm94LUdyYWQtVXBwZXItVG9wLUdyZWVuOiAjNDY5OTM2O1xuJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1HcmVlbjogIzMwNzAyNTtcbiRib3gtR3JhZC1Mb3dlci1Ub3AtR3JlZW46ICMzMDcyMjU7XG4kYm94LUdyYWQtTG93ZXItQm90dG9tLUdyZWVuOiAjMjg1ZDFlO1xuXG4kYm94LUJHLUJsdWU6ICMxOTQyNGE7XG4kYm94LUdyYWQtVXBwZXItVG9wLUJsdWU6ICMxMjYxNjc7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLUJsdWU6ICMxOTQyNGE7XG4kYm94LUdyYWQtTG93ZXItVG9wLUJsdWU6ICMxOTQyNGE7XG4kYm94LUdyYWQtTG93ZXItQm90dG9tLUJsdWU6ICMxOTQyNGE7XG5cblxuJGJveC1CRy1EYXJrLUdyZWVuOiAkZGFyay1ncmVlbjtcbiRib3gtR3JhZC1VcHBlci1Ub3AtRGFyay1HcmVlbjogIzJlODAyZTtcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tRGFyay1HcmVlbjogIzE3NDUxNztcbiRib3gtR3JhZC1Mb3dlci1Ub3AtRGFyay1HcmVlbjogIzE4NDcxOTtcbiRib3gtR3JhZC1Mb3dlci1Cb3R0b20tRGFyay1HcmVlbjogIzExMzMxMTtcblxuJGJveC1CRy1SZWQ6ICRyZWQ7XG4kYm94LUdyYWQtVXBwZXItVG9wLVJlZDogI2E4M2IzYjtcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tUmVkOiAjNmUyNTI1O1xuJGJveC1HcmFkLUxvd2VyLVRvcC1SZWQ6ICM3MDI1MjU7XG4kYm94LUdyYWQtTG93ZXItQm90dG9tLVJlZDogIzVjMWUxZTtcblxuJG1xLWJyZWFrcG9pbnQtbW9iaWxlOiAzMjBweDtcbiRtcS1icmVha3BvaW50LXRhYmxldDdpbmNoOiA2MDBweDtcbiRtcS1icmVha3BvaW50LXRhYmxldDogNzQwcHg7XG4kbXEtYnJlYWtwb2ludC1kZXNrdG9wOiA5ODBweDtcbiRtcS1icmVha3BvaW50LXdpZGU6IDEzMDBweDtcbiRtcS1icmVha3BvaW50LWRlc2t0b3BBZDogODEwcHg7XG4kbXEtYnJlYWtwb2ludC1tb2JpbGVMYW5kc2NhcGU6IDQ4MHB4O1xuJG1xLWJyZWFrcG9pbnQtbWVkaXVtTG9nbzogNDQwcHg7XG4kbXEtYnJlYWtwb2ludC1zbWFsbExvZ286IDMyMHB4O1xuJG1xLWJyZWFrcG9pbnQtaGVhZGVyU29jaWFsSWNvbnM6IDk1NHB4O1xuJG1xLWJyZWFrcG9pbnQtcGFnZTogJHBhZ2Utd2lkdGg7XG4kbXEtYnJlYWtwb2ludC1yZXNwb25zaXZlTWVudTogJHJlc3BvbnNpdmUtbWVudTtcblxuXG4vLyBCcmVha3BvaW50c1xuJG1xLWJyZWFrcG9pbnRzOiAoXG4gICAgICAgIG1vYmlsZTogICRtcS1icmVha3BvaW50LW1vYmlsZSxcbiAgICAgICAgdGFibGV0N2luY2g6ICAkbXEtYnJlYWtwb2ludC10YWJsZXQ3aW5jaCxcbiAgICAgICAgdGFibGV0OiAgJG1xLWJyZWFrcG9pbnQtdGFibGV0LFxuICAgICAgICBkZXNrdG9wOiAkbXEtYnJlYWtwb2ludC1kZXNrdG9wLFxuICAgICAgICB3aWRlOiAkbXEtYnJlYWtwb2ludC13aWRlLFxuXG4gIC8vIFR3ZWFrcG9pbnRzXG4gICAgICAgIGRlc2t0b3BBZDogJG1xLWJyZWFrcG9pbnQtZGVza3RvcEFkLFxuICAgICAgICBtb2JpbGVMYW5kc2NhcGU6ICRtcS1icmVha3BvaW50LW1vYmlsZUxhbmRzY2FwZSxcbiAgICAgICAgc21hbGxMb2dvOiAkbXEtYnJlYWtwb2ludC1zbWFsbExvZ28sXG4gICAgICAgIHBhZ2U6ICRtcS1icmVha3BvaW50LXBhZ2UsXG4gICAgICAgIHJlc3BvbnNpdmVNZW51OiAkbXEtYnJlYWtwb2ludC1yZXNwb25zaXZlTWVudSxcbiAgICAgICAgaGVhZGVyU29jaWFsSWNvbnM6ICRtcS1icmVha3BvaW50LWhlYWRlclNvY2lhbEljb25zXG4pO1xuXG5cbi8vIFRvIGVuYWJsZSBzdXBwb3J0IGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IEBtZWRpYSBxdWVyaWVzLFxuLy8gKElFIDw9IDgsIEZpcmVmb3ggPD0gMywgT3BlcmEgPD0gOSkgc2V0ICRtcS1yZXNwb25zaXZlIHRvIGZhbHNlXG4vLyBDcmVhdGUgYSBzZXBhcmF0ZSBzdHlsZXNoZWV0IHNlcnZlZCBleGNsdXNpdmVseSB0byB0aGVzZSBicm93c2Vycyxcbi8vIG1lYW5pbmcgQG1lZGlhIHF1ZXJpZXMgd2lsbCBiZSByYXN0ZXJpemVkLCByZWx5aW5nIG9uIHRoZSBjYXNjYWRlIGl0c2VsZlxuJG1xLXJlc3BvbnNpdmU6IHRydWU7XG5cbi8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXG4vLyByaWdodCBjb3JuZXIgb2YgeW91ciBzaXRlIGR1cmluZyBkZXZlbG9wbWVudCwgYWRkIHRoZSBicmVha3BvaW50c1xuLy8gdG8gdGhpcyBsaXN0LCBvcmRlcmVkIGJ5IHdpZHRoLCBlLmcuIChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCkuXG4vLyRtcS1zaG93LWJyZWFrcG9pbnRzOiAobW9iaWxlLCBtb2JpbGVMYW5kc2NhcGUsIHRhYmxldCwgZGVza3RvcCwgd2lkZSk7XG4iLAoJCSJAbWl4aW4gaVdhbGtNb2JpbGVHcmFkaWVudHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2M5ZGNmNCAwJSwjODJiNWVjIDIyJSwjMjk4YWUzIDQ2JSwjM2VjMWY3IDcwJSwjM2VjMWY3IDEwMCUpO1xufVxuXG5AbWl4aW4gY2VudHJlWXtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuQG1peGluIGNlbnRyZVh7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG5AbWl4aW4gY2VudHJlWFl7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSAgdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuQG1peGluIGdyZXlfZ3JhZGllbnR7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMTgxLCAxODksIDIwMCwgMSkgMCUsIHJnYmEoMTMwLCAxNDAsIDE0OSwgMSkgMzYlLCByZ2JhKDQwLCA1MiwgNTksIDEpIDEwMCUpO1xufVxuXG5AbWl4aW4gZ3JlZW5fZ3JhZGllbnR7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM0ZWI5NGUgMCUsICMxMDkwMTAgMzYlLCAjMDkzZTA5IDEwMCUpO1xufVxuXG5AbWl4aW4gYm94KCRiZyl7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiZztcbiAgYm9yZGVyLXJhZGl1czo0cHg7XG4gICYsIGF7XG4gICAgY29sb3I6IHdoaXRlO1xuICB9XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudCgkYmcsICR1cHBlci10b3AsICR1cHBlci1ib3R0b20sICRsb3dlci10b3AsICRsb3dlci1ib3R0b20sICRoZWlnaHQ6ICRib3gtR3JhZC1IZWlnaHQpe1xuICBAaW5jbHVkZSBib3goJGJnKTtcbiAgei1pbmRleDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICY6YmVmb3Jle1xuICAgIGNvbnRlbnQ6Jyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoJHVwcGVyLXRvcCwgJHVwcGVyLWJvdHRvbSk7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7XG4gICAgei1pbmRleDogLTE7XG4gIH1cblxuICAmOmFmdGVye1xuICAgIGNvbnRlbnQ6Jyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogJGhlaWdodDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoJGxvd2VyLXRvcCwgJGxvd2VyLWJvdHRvbSk7XG4gICAgei1pbmRleDogLTE7XG4gIH1cblxuICA+ICp7XG4gICAgei1pbmRleDogMjtcblxuICAgIEBhdC1yb290IHtcbiAgICAgIGJvZHk6bm90KC5mdWxsc2NyZWVuKSAjeyZ9IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYm94R3JhZGllbnRHcmV5e1xuICBAaW5jbHVkZSBib3hHcmFkaWVudCgkYm94LUJHLUdyZXksICRib3gtR3JhZC1VcHBlci1Ub3AtR3JleSwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1HcmV5LCAkYm94LUdyYWQtTG93ZXItVG9wLUdyZXksICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tR3JleSk7XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudEdyZWVue1xuICBAaW5jbHVkZSBib3hHcmFkaWVudCgkYm94LUJHLUdyZWVuLCAkYm94LUdyYWQtVXBwZXItVG9wLUdyZWVuLCAkYm94LUdyYWQtVXBwZXItQm90dG9tLUdyZWVuLCAkYm94LUdyYWQtTG93ZXItVG9wLUdyZWVuLCAkYm94LUdyYWQtTG93ZXItQm90dG9tLUdyZWVuKTtcbn1cblxuQG1peGluIGJveEdyYWRpZW50Qmx1ZXtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1CbHVlLCAkYm94LUdyYWQtVXBwZXItVG9wLUJsdWUsICRib3gtR3JhZC1VcHBlci1Cb3R0b20tQmx1ZSwgJGJveC1HcmFkLUxvd2VyLVRvcC1CbHVlLCAkYm94LUdyYWQtTG93ZXItQm90dG9tLUJsdWUpO1xufVxuXG5AbWl4aW4gYm94R3JhZGllbnREYXJrR3JlZW57XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50KCRib3gtQkctRGFyay1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLVRvcC1EYXJrLUdyZWVuLCAkYm94LUdyYWQtVXBwZXItQm90dG9tLURhcmstR3JlZW4sICRib3gtR3JhZC1Mb3dlci1Ub3AtRGFyay1HcmVlbiwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1EYXJrLUdyZWVuKTtcbn1cblxuQG1peGluIGJveEdyYWRpZW50UmVke1xuICBAaW5jbHVkZSBib3hHcmFkaWVudCgkYm94LUJHLVJlZCwgJGJveC1HcmFkLVVwcGVyLVRvcC1SZWQsICRib3gtR3JhZC1VcHBlci1Cb3R0b20tUmVkLCAkYm94LUdyYWQtTG93ZXItVG9wLVJlZCwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1SZWQpO1xufVxuXG5AbWl4aW4gYm94U2hhZG93e1xuICBib3gtc2hhZG93OiA0cHggNHB4IDRweCAjYmJiO1xufVxuXG5AbWl4aW4gYm94eXtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnRHcmV5O1xuICBAaW5jbHVkZSBib3hTaGFkb3c7XG4gIGNvbG9yOiAjZWVlO1xuXG4gIGEsIHN0cm9uZyB7XG4gICAgY29sb3I6IHdoaXRlO1xuICB9XG5cbiAgaDIge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuQG1peGluIGxpZ2h0R3JlZW5Cb3h7XG4gIEBpbmNsdWRlIGJveCgkbGlnaHQtZ3JlZW4pO1xuICAmLGF7XG4gICAgY29sb3I6IGJsYWNrO1xuICB9XG59XG5cbiIsCgkJIlxuLyoqXG4gKiBCcmVha3BvaW50c1xuICovXG5cbkBpbXBvcnQgXCJtcVwiO1xuXG5cbkBtaXhpbiBtcXMoJGZyb206IGZhbHNlLCAkdW50aWw6IGZhbHNlKXtcbiAgQGluY2x1ZGUgbXEoJGZyb20sICR1bnRpbCwgJG1lZGlhLXR5cGU6IHNjcmVlbikge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8qKlxuICogSW5wdXQgY2FwYWJpbGl0aWVzXG4gKi9cblxuLy8gc21hcnRwaG9uZXMgYW5kIHRhYmxldHNcbkBtaXhpbiB0b3VjaC1zY3JlZW4taW5wdXQge1xuICBAbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSlcbiAgYW5kIChob3Zlcjogbm9uZSl7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTW91c2Ugb3IgdG91Y2ggcGFkXG5AbWl4aW4gbW91c2UtaW5wdXQge1xuICBAbWVkaWEgKHBvaW50ZXI6IGZpbmUpXG4gIGFuZCAoaG92ZXI6IGhvdmVyKXtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTaG93IGZvciB0b3VjaCBzY3JlZW5zXG4vLyBhbmQgdXAgdW50aWwgdGFibGV0IGRldmljZSB3aWR0aCBmb3IgdGFibGV0cyBub3Qgc3VwcG9ydGluZyBpbnB1dCBtZWRpYSBxdWVyaWVzIGllLiBvbGQgQW5kcm9pZCA0LnhcbkBtaXhpbiB0b3VjaC1zY3JlZW4tZGV2aWNlc3tcbiAgQGluY2x1ZGUgdG91Y2gtc2NyZWVuLWlucHV0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiByZXNwb25zaXZlTWVudSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE5pbnRlbmRvIFdpaSBjb250cm9sbGVyLCBLaW5lY3QsIGV0Yy5cbkBtaXhpbiBjb25zb2xlLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpXG4gIGFuZCAoaG92ZXI6IGhvdmVyKXtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBzdHlsdXMtYmFzZWQgc2NyZWVucyAoQ2ludGlxLCBXYWNvbSwgZXRjKVxuQG1peGluIGNvbnNvbGUtaW5wdXQge1xuICBAbWVkaWEgKHBvaW50ZXI6IGZpbmUpXG4gIGFuZCAoaG92ZXI6IG5vbmUpe1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFJldGluYSBkaXNwbGF5cyAoMngpXG5AbWl4aW4gcmV0aW5hIHtcbiAgQG1lZGlhIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuNSksKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDMvMiksXG4gICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuNSksKG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuNSksKG1pbi1yZXNvbHV0aW9uOiAxLjVkcHB4KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsCgkJIkBjaGFyc2V0IFwiVVRGLThcIjsgLy8gRml4ZXMgYW4gaXNzdWUgd2hlcmUgUnVieSBsb2NhbGUgaXMgbm90IHNldCBwcm9wZXJseVxuICAgICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvcHVsbC8xMFxuXG4vLy8gQmFzZSBmb250IHNpemUgb24gdGhlIGA8Ym9keT5gIGVsZW1lbnRcbi8vLyBAdHlwZSBOdW1iZXIgKHVuaXQpXG4kbXEtYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vLyBSZXNwb25zaXZlIG1vZGVcbi8vL1xuLy8vIFNldCB0byBgZmFsc2VgIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IEBtZWRpYSBxdWVyaWVzLFxuLy8vIChJRSA8PSA4LCBGaXJlZm94IDw9IDMsIE9wZXJhIDw9IDkpXG4vLy9cbi8vLyBZb3UgY291bGQgY3JlYXRlIGEgc3R5bGVzaGVldCBzZXJ2ZWQgZXhjbHVzaXZlbHkgdG8gb2xkZXIgYnJvd3NlcnMsXG4vLy8gd2hlcmUgQG1lZGlhIHF1ZXJpZXMgYXJlIHJhc3Rlcml6ZWRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gb2xkLWllLnNjc3Ncbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBCb29sZWFuXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb2ZmIERpc2FibGVkIHJlc3BvbnNpdmUgbW9kZSBkb2N1bWVudGF0aW9uXG4kbXEtcmVzcG9uc2l2ZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJyZWFrcG9pbnQgbGlzdFxuLy8vXG4vLy8gTmFtZSB5b3VyIGJyZWFrcG9pbnRzIGluIGEgd2F5IHRoYXQgY3JlYXRlcyBhIHViaXF1aXRvdXMgbGFuZ3VhZ2Vcbi8vLyBhY3Jvc3MgdGVhbSBtZW1iZXJzLiBJdCB3aWxsIGltcHJvdmUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuXG4vLy8gc3Rha2Vob2xkZXJzLCBkZXNpZ25lcnMsIGRldmVsb3BlcnMsIGFuZCB0ZXN0ZXJzLlxuLy8vXG4vLy8gQHR5cGUgTWFwXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtYnJlYWtwb2ludHM6IChcbiAgICBtb2JpbGU6ICAzMjBweCxcbiAgICB0YWJsZXQ6ICA3NDBweCxcbiAgICBkZXNrdG9wOiA5ODBweCxcbiAgICB3aWRlOiAgICAxMzAwcHhcbikgIWRlZmF1bHQ7XG5cbi8vLyBTdGF0aWMgYnJlYWtwb2ludCAoZm9yIGZpeGVkLXdpZHRoIGxheW91dHMpXG4vLy9cbi8vLyBEZWZpbmUgdGhlIGJyZWFrcG9pbnQgZnJvbSAkbXEtYnJlYWtwb2ludHMgdGhhdCBzaG91bGRcbi8vLyBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgd2lkdGggZm9yIHRoZSBmaXhlZC13aWR0aCBsYXlvdXRcbi8vLyAoaS5lLiB3aGVuICRtcS1yZXNwb25zaXZlIGlzIHNldCB0byAnZmFsc2UnKSBpbiBhIG9sZC1pZS5zY3NzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIHRhYmxldC1vbmx5LnNjc3Ncbi8vLyAgLy9cbi8vLyAgLy8gSWdub3JlIGFsbCBzdHlsZXMgYWJvdmUgdGFibGV0IGJyZWFrcG9pbnQsXG4vLy8gIC8vIGFuZCBmaXggdGhlIHN0eWxlcyAoZS5nLiBsYXlvdXQpIGF0IHRhYmxldCB3aWR0aFxuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gICRtcS1zdGF0aWMtYnJlYWtwb2ludDogdGFibGV0O1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byB0YWJsZXRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2FkZGluZy1jdXN0b20tYnJlYWtwb2ludHMgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLXN0YXRpYy1icmVha3BvaW50OiBkZXNrdG9wICFkZWZhdWx0O1xuXG4vLy8gU2hvdyBicmVha3BvaW50cyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vXG4vLy8gSWYgeW91IHdhbnQgdG8gZGlzcGxheSB0aGUgY3VycmVudGx5IGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3Bcbi8vLyByaWdodCBjb3JuZXIgb2YgeW91ciBzaXRlIGR1cmluZyBkZXZlbG9wbWVudCwgYWRkIHRoZSBicmVha3BvaW50c1xuLy8vIHRvIHRoaXMgbGlzdCwgb3JkZXJlZCBieSB3aWR0aCwgZS5nLiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApLlxuLy8vXG4vLy8gQHR5cGUgbWFwXG4kbXEtc2hvdy1icmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG5cbi8vLyBDdXN0b21pemUgdGhlIG1lZGlhIHR5cGUgKGUuZy4gYEBtZWRpYSBzY3JlZW5gIG9yIGBAbWVkaWEgcHJpbnRgKVxuLy8vIEJ5IGRlZmF1bHQgc2Fzcy1tcSB1c2VzIGFuIFwiYWxsXCIgbWVkaWEgdHlwZSAoYEBtZWRpYSBhbGwgYW5kIOKApmApXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2NoYW5naW5nLW1lZGlhLXR5cGUgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLW1lZGlhLXR5cGU6IGFsbCAhZGVmYXVsdDtcblxuLy8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRweCAtIHZhbHVlIHRvIGNvbnZlcnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UtZm9udC1zaXplICgkbXEtYmFzZS1mb250LXNpemUpIC0gYDxib2R5PmAgZm9udCBzaXplXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICRmb250LXNpemUtaW4tZW1zOiBtcS1weDJlbSgxNnB4KTtcbi8vLyAgcCB7IGZvbnQtc2l6ZTogbXEtcHgyZW0oMTZweCk7IH1cbi8vL1xuLy8vIEByZXF1aXJlcyAkbXEtYmFzZS1mb250LXNpemVcbi8vLyBAcmV0dXJucyB7TnVtYmVyfVxuQGZ1bmN0aW9uIG1xLXB4MmVtKCRweCwgJGJhc2UtZm9udC1zaXplOiAkbXEtYmFzZS1mb250LXNpemUpIHtcbiAgICBAaWYgdW5pdGxlc3MoJHB4KSB7XG4gICAgICAgIEB3YXJuIFwiQXNzdW1pbmcgI3skcHh9IHRvIGJlIGluIHBpeGVscywgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGl0IGludG8gcGl4ZWxzLlwiO1xuICAgICAgICBAcmV0dXJuIG1xLXB4MmVtKCRweCAqIDFweCwgJGJhc2UtZm9udC1zaXplKTtcbiAgICB9IEBlbHNlIGlmIHVuaXQoJHB4KSA9PSBlbSB7XG4gICAgICAgIEByZXR1cm4gJHB4O1xuICAgIH1cbiAgICBAcmV0dXJuICgkcHggLyAkYmFzZS1mb250LXNpemUpICogMWVtO1xufVxuXG4vLy8gR2V0IGEgYnJlYWtwb2ludCdzIHdpZHRoXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50LiBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICR0YWJsZXQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKHRhYmxldCk7XG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aChkZXNrdG9wKSkge31cbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVmFsdWUgaW4gcGl4ZWxzXG5AZnVuY3Rpb24gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJG5hbWUsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIHtcbiAgICAgICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgICBAd2FybiBcIkJyZWFrcG9pbnQgI3skbmFtZX0gd2Fzbid0IGZvdW5kIGluICRicmVha3BvaW50cy5cIjtcbiAgICB9XG59XG5cbi8vLyBNZWRpYSBRdWVyeSBtaXhpblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkZnJvbSAoZmFsc2UpIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJHVudGlsIChmYWxzZSkgLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkYW5kIChmYWxzZSkgLSBBZGRpdGlvbmFsIG1lZGlhIHF1ZXJ5IHBhcmFtZXRlcnNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lZGlhLXR5cGUgKCRtcS1tZWRpYS10eXBlKSAtIE1lZGlhIHR5cGU6IHNjcmVlbiwgcHJpbnTigKZcbi8vL1xuLy8vIEBpZ25vcmUgVW5kb2N1bWVudGVkIEFQSSwgZm9yIGFkdmFuY2VkIHVzZSBvbmx5OlxuLy8vIEBpZ25vcmUgQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyAoJG1xLWJyZWFrcG9pbnRzKVxuLy8vIEBpZ25vcmUgQHBhcmFtIHtTdHJpbmd9ICRzdGF0aWMtYnJlYWtwb2ludCAoJG1xLXN0YXRpYy1icmVha3BvaW50KVxuLy8vXG4vLy8gQGNvbnRlbnQgc3R5bGluZyBydWxlcywgd3JhcHBlZCBpbnRvIGEgQG1lZGlhIHF1ZXJ5IHdoZW4gJHJlc3BvbnNpdmUgaXMgdHJ1ZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLW1lZGlhLXR5cGVcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1weDJlbVxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLWdldC1icmVha3BvaW50LXdpZHRoXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vbi1kZWZhdWx0IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLmVsZW1lbnQge1xuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiBtb2JpbGUpIHtcbi8vLyAgICAgIGNvbG9yOiByZWQ7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCR1bnRpbDogdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogYmx1ZTtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEobW9iaWxlLCB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBncmVlbjtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IHRhYmxldCwgJGFuZDogJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScpIHtcbi8vLyAgICAgIGNvbG9yOiB0ZWFsO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSg5NTBweCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKHRhYmxldCwgJG1lZGlhLXR5cGU6IHNjcmVlbikge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIC8vIEFkdmFuY2VkIHVzZTpcbi8vLyAgICAkbXktYnJlYWtwb2ludHM6IChMOiA5MDBweCwgWEw6IDEyMDBweCk7XG4vLy8gICAgQGluY2x1ZGUgbXEoTCwgJGJyZWFrcG9pbnRzOiAkbXktYnJlYWtwb2ludHMsICRzdGF0aWMtYnJlYWtwb2ludDogTCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICB9XG5AbWl4aW4gbXEoXG4gICAgJGZyb206IGZhbHNlLFxuICAgICR1bnRpbDogZmFsc2UsXG4gICAgJGFuZDogZmFsc2UsXG4gICAgJG1lZGlhLXR5cGU6ICRtcS1tZWRpYS10eXBlLFxuICAgICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzLFxuICAgICRyZXNwb25zaXZlOiAkbXEtcmVzcG9uc2l2ZSxcbiAgICAkc3RhdGljLWJyZWFrcG9pbnQ6ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuKSB7XG4gICAgJG1pbi13aWR0aDogMDtcbiAgICAkbWF4LXdpZHRoOiAwO1xuICAgICRtZWRpYS1xdWVyeTogJyc7XG5cbiAgICAvLyBGcm9tOiB0aGlzIGJyZWFrcG9pbnQgKGluY2x1c2l2ZSlcbiAgICBAaWYgJGZyb20ge1xuICAgICAgICBAaWYgdHlwZS1vZigkZnJvbSkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKCRmcm9tKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkZnJvbSwgJGJyZWFrcG9pbnRzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbnRpbDogdGhhdCBicmVha3BvaW50IChleGNsdXNpdmUpXG4gICAgQGlmICR1bnRpbCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCR1bnRpbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKCR1bnRpbCk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHVudGlsLCAkYnJlYWtwb2ludHMpKSAtIC4wMWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGRpc2FibGVkLCByYXN0ZXJpemUgdGhlIG91dHB1dCBvdXRzaWRlIEBtZWRpYSBibG9ja3NcbiAgICAvLyBUaGUgYnJvd3NlciB3aWxsIHJlbHkgb24gdGhlIGNhc2NhZGUgaXRzZWxmLlxuICAgIEBpZiAkcmVzcG9uc2l2ZSA9PSBmYWxzZSB7XG4gICAgICAgICRzdGF0aWMtYnJlYWtwb2ludC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHN0YXRpYy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAkdGFyZ2V0LXdpZHRoOiBtcS1weDJlbSgkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGgpO1xuXG4gICAgICAgIC8vIE91dHB1dCBvbmx5IHJ1bGVzIHRoYXQgc3RhcnQgYXQgb3Igc3BhbiBvdXIgdGFyZ2V0IHdpZHRoXG4gICAgICAgIEBpZiAoXG4gICAgICAgICAgICAkYW5kID09IGZhbHNlXG4gICAgICAgICAgICBhbmQgJG1pbi13aWR0aCA8PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICBhbmQgKFxuICAgICAgICAgICAgICAgICR1bnRpbCA9PSBmYWxzZSBvciAkbWF4LXdpZHRoID49ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH0gQGVsc2UgeyAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZW5hYmxlZCwgb3V0cHV0IHJ1bGVzIGluc2lkZSBAbWVkaWEgcXVlcmllc1xuICAgICAgICBAaWYgJG1pbi13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWluLXdpZHRoOiAjeyRtaW4td2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRtYXgtd2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1heC13aWR0aDogI3skbWF4LXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkYW5kICAgICAgICAgICAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kICN7JGFuZH0nOyB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIHVubmVjZXNzYXJ5IG1lZGlhIHF1ZXJ5IHByZWZpeCAnYWxsIGFuZCAnXG4gICAgICAgIEBpZiAoJG1lZGlhLXR5cGUgPT0gJ2FsbCcgYW5kICRtZWRpYS1xdWVyeSAhPSAnJykge1xuICAgICAgICAgICAgJG1lZGlhLXR5cGU6ICcnO1xuICAgICAgICAgICAgJG1lZGlhLXF1ZXJ5OiBzdHItc2xpY2UodW5xdW90ZSgkbWVkaWEtcXVlcnkpLCA2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAjeyRtZWRpYS10eXBlICsgJG1lZGlhLXF1ZXJ5fSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8vIEFkZCBhIGJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIC0gV2lkdGggb2YgdGhlIGJyZWFrcG9pbnRcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICBAaW5jbHVkZSBtcS1hZGQtYnJlYWtwb2ludCh0dnNjcmVlbiwgMTkyMHB4KTtcbi8vLyAgQGluY2x1ZGUgbXEodHZzY3JlZW4pIHt9XG5AbWl4aW4gbXEtYWRkLWJyZWFrcG9pbnQoJG5hbWUsICR3aWR0aCkge1xuICAgICRuZXctYnJlYWtwb2ludDogKCRuYW1lOiAkd2lkdGgpO1xuICAgICRtcS1icmVha3BvaW50czogbWFwLW1lcmdlKCRtcS1icmVha3BvaW50cywgJG5ldy1icmVha3BvaW50KSAhZ2xvYmFsO1xufVxuXG4vLy8gU2hvdyB0aGUgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcCByaWdodCBjb3JuZXIgb2YgdGhlIHZpZXdwb3J0XG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hvdy1icmVha3BvaW50cyAoJG1xLXNob3ctYnJlYWtwb2ludHMpIC0gTGlzdCBvZiBicmVha3BvaW50cyB0byBzaG93IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy8gQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyAoJG1xLWJyZWFrcG9pbnRzKSAtIEJyZWFrcG9pbnQgbmFtZXMgYW5kIHNpemVzXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc2hvdy1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGdsb2JhbCBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xuLy8vXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgY3VzdG9tIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHMoKEwsIFhMKSwgKFM6IDMwMHB4LCBMOiA4MDBweCwgWEw6IDEyMDBweCkpO1xuQG1peGluIG1xLXNob3ctYnJlYWtwb2ludHMoJHNob3ctYnJlYWtwb2ludHM6ICRtcS1zaG93LWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIGJvZHk6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZDRjhFMztcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgY29sb3I6ICNDMDk4NTM7XG4gICAgICAgIGZvbnQ6IHNtYWxsLWNhcHRpb247XG4gICAgICAgIHBhZGRpbmc6IDNweCA2cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHotaW5kZXg6IDEwMDtcblxuICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIGJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkIGJlIHNob3duXG4gICAgICAgIEBlYWNoICRzaG93LWJyZWFrcG9pbnQgaW4gJHNob3ctYnJlYWtwb2ludHMge1xuICAgICAgICAgICAgJHdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAgICAgQGluY2x1ZGUgbXEoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIiN7JHNob3ctYnJlYWtwb2ludH0g4omlICN7JHdpZHRofSAoI3ttcS1weDJlbSgkd2lkdGgpfSlcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGlmIGxlbmd0aCgkbXEtc2hvdy1icmVha3BvaW50cykgPiAwIHtcbiAgICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xufVxuIiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIFRvdWNoIGRldmljZXNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuQGltcG9ydCBcImdlbmVyYWxfbWl4aW5zXCI7XG5cbkBtaXhpbiBib3gtc2hhZG93e1xuICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLDAsMCwuMTUpO1xufVxuXG5AbWl4aW4gdG91Y2gtc2NyZWVuLXN0eWxlcyB7XG5cbiAgLy8gQnV0dG9uc1xuICBbZGF0YS1yb2xlPVwiYnV0dG9uXCJdOm5vdCgubm9uLXJlc3BvbnNpdmUpe1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3c7XG5cbiAgICBjb2xvcjogIzMzMyAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6ICNlZWU7XG5cbiAgICBib3JkZXItY29sb3I6ICNkZGQ7XG4gICAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG5cblxuICAgIG1hcmdpbjogLjVlbSAwO1xuICAgIHBhZGRpbmc6IC43ZW0gMWVtO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuXG4gICAgJjpob3ZlciwgJjphY3RpdmV7XG4gICAgICBiYWNrZ3JvdW5kOiAjZThmMGZmO1xuICAgIH1cblxuICAgICZbZGF0YS1pY29uXXtcbiAgICAgIHBhZGRpbmctbGVmdDogMzJweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgICAgIGl7XG4gICAgICAgIEBpbmNsdWRlIGNlbnRyZVk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogOHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZ3JlZW4ge1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzhkZGRhMCAwJSwgIzNkZGI4YyA1MCUsICM4ZGRkYTAgMTAwJSk7XG4gICAgICBib3JkZXItY29sb3I6ICMyYjZiMzc7XG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjUpOyAvL2hlYXZpZXIgc2hhZG93IG9uIGRhcmsgZ3JlZW4gYmdcbiAgICAgICY6aG92ZXIsICY6YWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2RjZjRlMSAwJSwgIzNkZGI4YyA1MCUsICNkY2Y0ZTEgMTAwJSk7XG4gICAgICB9XG4gICAgfVxuICAgICYuYmx1ZXtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzhkYzBkZCAwJSwjM2RhY2RiIDUwJSwjOGRjMGRkIDEwMCUpO1xuICAgICAgICBib3JkZXItY29sb3I6ICMxMjYxNjc7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gICAgICAgICY6aG92ZXIsICY6YWN0aXZle1xuICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNkY2UxZjQgMCUsIzZlYWNlYiA1MCUsI2RjZTFmNCAxMDAlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIExpc3R2aWV3c1xuICBbZGF0YS1yb2xlPVwibGlzdHZpZXdcIl06bm90KC5ub24tcmVzcG9uc2l2ZSl7XG4gICAgQGluY2x1ZGUgYm94eTtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcblxuXG4gICAgPmxpe1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHBhZGRpbmc6IDhweCAxNnB4IDhweCA4cHggIWltcG9ydGFudDtcbiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGJvcmRlci1jb2xvcjogI2RkZDtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBib3JkZXItd2lkdGg6IDFweCAxcHggMCAxcHg7XG4gICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcbiAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICBhe1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuXG4gICAgICAgICY6YWZ0ZXJ7XG4gICAgICAgICAgY29udGVudDogJz4nO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICByaWdodDogNHB4O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBMaW5rIGxpc3RzXG4gIDpub3QoLm5vbi1yZXNwb25zaXZlKTpub3QoW2RhdGEtcm9sZV0pOm5vdChbcm9sZV0pID4gbGkgPiBhOm9ubHktY2hpbGR7XG4gICAgcGFkZGluZzogOHB4IDA7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cblxuIiwKCQkiLyoqXG4qIERpc3BsYXkgYSBmdWxsLXdpZHRoIHBob3RvIHdpdGggYSB3aGl0ZSBib3JkZXJcbiovXG5cbiNtYWluLXBob3RvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgaW1nIHtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cblxuICAuaW1hZ2UtYm9yZGVyIHtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAxMHB4O1xuICAgIHRvcDogMTBweDtcbiAgICByaWdodDogMTBweDtcbiAgICBib3R0b206IDEwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgd2hpdGU7XG4gIH1cdFxufVxuIiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gT3ZlcnZpZXcgTWFwIGFuZCBzdW1tYXJ5XG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI3N1bW1hcnkge1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLm1hcC1idXR0b257XG4gICAgQGluY2x1ZGUgYm94R3JhZGllbnRHcmV5O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHotaW5kZXg6IDkwMDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTJweDtcbiAgICByaWdodDogLTJweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMjBweDtcbiAgICB3aWR0aDogMTQwcHg7XG4gICAgcGFkZGluZzogNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJjpiZWZvcmUsICY6YWZ0ZXJ7XG4gICAgICB6LWluZGV4OiA5MDE7XG4gICAgfVxuXG4gICAgJjpiZWZvcmUge1xuICAgICAgdG9wOiAxcHg7XG4gICAgfVxuXG4gICAgPiAqe1xuICAgICAgei1pbmRleDogOTAyO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiNmdWxsLXNjcmVlbi1tYXAge1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBib3JkZXItcmFkaXVzOiAwIDAgMCA0cHg7XG5cdCAgZGlzcGxheTogbm9uZTsgLy9UT0RPIEhpZGUgdW50aWwgbWFwIHRlbXBsYXRlIGlzIHJld29ya2VkIHRvIHVzZSBPU01cbiAgICB9XG4gIH1cbn1cblxuI2NhdmVhdHMge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG59XG5cbiNzdW1tYXJ5LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50R3JleTtcbiAgcGFkZGluZzogOHB4O1xufVxuXG4jbWFwLWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQ6d2hpdGU7XG4gIFxuICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoKSB7XG4gICAgbWFyZ2luLXRvcDogMTJweDtcbiAgfVxuXG4gIC5tYXAge1xuICAgIHdpZHRoOiA1MjBweDtcbiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDQ0MHB4O1xuXG4gICAgQGF0LXJvb3R7XG4gICAgICBib2R5LndhbGstcmVhZHkgI3smfSB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgICAgd2lkdGg6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICAgICYsICp7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI29zbS1tYXB7XG4gICAgYXtcbiAgICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gRGlyZWN0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiN0b2dnbGUtZGlyZWN0aW9uc3tcbiAgbWFyZ2luLXRvcDogMTZweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBcbiAgZGlzcGxheTpub25lOyAvKiBkaXNhYmxlZCBhcyB0b28gbWFueSByZXBvcnRzIG9mIHRoaXMgYmVpbmcgYWJ1c2VkICovXG5cbiAgQGluY2x1ZGUgbXFzKCRmcm9tOiB0YWJsZXQ3aW5jaCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBbZGF0YS1yb2xlPVwiYnV0dG9uXCJde1xuICAgIEBpbmNsdWRlIGJveHk7XG5cbiAgICAqe1xuICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgaXtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIHNwYW57XG4gICAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgICB9XG4gIH1cbn1cblxuI2RpcmVjdGlvbnMge1xuICBtYXJnaW4tdG9wOiAzMnB4O1xuICBjbGVhcjpsZWZ0O1xuXG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5tYXAtb25seXtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgc3Bhbi5pbnRybyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIGgyIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2FhYTtcbiAgfVxuXG4gID5vbCB7XG4gICAgbWFyZ2luLXRvcDoxNnB4O1xuICAgIHBhZGRpbmctbGVmdDoyNHB4O1xuICB9XG4gID5vbD5saSB7XG4gICAgbWFyZ2luLWJvdHRvbToxNnB4O1xuICB9XG4gID5vbD5saT5wIHtcbiAgICBkaXNwbGF5OmlubGluZTsgLyogb25seSBzcGxpdCBpbnRvIHBhcmFncmFwaHMgaW4gdGhlIGFwcCwgbm90IGluIHRoZSBQREZzICovXG4gIH1cblxuXG4gIC5xdW90ZSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBmb250LWZhbWlseTogUGFsYXRpbm8sIHNlcmlmO1xuICAgIGZvbnQtc2l6ZTogMTRwdDtcbiAgICBib3JkZXItcmFkaXVzOjRweDtcbiAgICBwYWRkaW5nOiA0cHggMTJweCAxMnB4IDEycHg7XG4gICAgbWFyZ2luLWxlZnQ6IDE2cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ1xcMjAxQyc7XG4gICAgICBmb250LWZhbWlseTogVGltZXMgTmV3IFJvbWFuO1xuICAgICAgZm9udC1zaXplOiAyNHB0O1xuICAgICAgY29sb3I6ICNjY2M7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG4gICAgfVxuICB9XG59XG5cbi5mZWF0dXJlLWJveCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIGJvcmRlci1yYWRpdXM6NHB4O1xuICBiYWNrZ3JvdW5kOiAjZWVlO1xuICBwYWRkaW5nOiA4cHg7XG4gIG1hcmdpbi10b3A6IDRweDtcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xuXG4gIC8qbm8gZ2FwIGF0IHRvcCBvZiBmaXJzdCBwKi9cbiAgcDpmaXJzdC1jaGlsZCB7XG4gICAgbWFyZ2luLXRvcDowO1xuICB9XG5cbiAgLyouLi5idXQgZ2FwIG9uIGZpcnN0IHAgYmV0d2VlbiBtdWx0aXBsZSBkaXZzIGluIHRoZSBmZWF0dXJlIGJveCwgdG8gc3BhY2UgdGhlbSBhcGFydCovXG4gIGRpdiBwOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOjhweDtcbiAgfVxuXG4gIC8qLi4uYnV0IG5vdCB0aGUgZmlyc3Qgb25lKi9cbiAgZGl2OmZpcnN0LWNoaWxkICBwOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOjA7XG4gIH1cblxuICAvKm5vIGdhcCBhdCBib3R0b20gb2YgbGFzdCBwKi9cbiAgcDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOjA7XG4gIH1cblxuICB1bD5saSB7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7XG4gIH1cbiAgXG4gIHAubW9yZS1pbmZvIHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbn1cblxuLmFwcC1vbmx5IHtcbiAgZGlzcGxheTpub25lO1xufVxuXG4jbGlrZV9vbl9mYWNlYm9vayB7XG4gIG1hcmdpbi10b3A6IDI0cHg7XG59IiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiBQb3N0LXByaW50IGNvbnRyaWJ1dGUgcG9wdXBcclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbi5jb250cmlidXRlLXBvcHVwe1xyXG4gIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gpIHtcclxuICAgIC5wcm9tby1jb250YWluZXJ7XHJcbiAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICBtYXgtd2lkdGg6IDMyMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5ib2R5e1xyXG4gICAgICBtYXJnaW4tbGVmdDogMzM2cHg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XHJcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSAyMHB4KTtcclxuICAgIC5wcm9tby1jb250YWluZXJ7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9tb3N7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICB9XHJcblxyXG4gIGgye1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICB9XHJcblxyXG4gIC5wYXlwYWwtYnV0dG9ue1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcclxuICAgIGZvcm17XHJcbiAgICAgIGRpc3BsYXk6aW5saW5lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRpc2NsYWltZXJ7XHJcbiAgICBjbGVhcjogbGVmdDtcclxuICAgIG1hcmdpbi10b3A6IDhweDtcclxuICB9XHJcbn0iLAoJCSIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBQcmUtcHJpbnQgYnV5IHdhbGsgcG9wdXBcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLmJ1eS13YWxrLXBvcHVwLC5idXktcGRmLXBvcHVwIHtcbiAgQGluY2x1ZGUgbXFzKCRmcm9tOiB0YWJsZXQ3aW5jaCkge1xuXHRcbiAgICAuYnV5LWFwcCB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTp1cmwoJy9pbWFnZXMvZ3JhcGhpY3MvYnV5X2FwcC5qcGcnKTtcblx0XHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG5cdFx0bWFyZ2luLWJvdHRvbTo2NHB4O1xuXHR9XG5cdC5idXktcGRmIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOnVybCgnL2ltYWdlcy9ncmFwaGljcy9idXlfcGRmX2xlYWZsZXRzLnBuZycpOyAgICAgIFxuXHRcdGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcbiAgICB9XG5cbiAgICAuYnV5LWFwcCAuY29udGVudCwgLmJ1eS1wZGYgLmNvbnRlbnQge1xuICAgICAgbWFyZ2luLWxlZnQ6IDMyMHB4O1xuXHQgIG1pbi1oZWlnaHQ6IDI1MHB4O1xuICAgIH1cblxuXHQucmVjb21tZW5kZWQge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6dXJsKCcvaW1hZ2VzL2dyYXBoaWNzL3JlY29tbWVuZGVkLnBuZycpOyAgICAgIFxuXHRcdGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCB0b3A7XG4gICAgfVxuXHRcbiAgfVxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDEwMHB4KTtcbiAgfVxuXG4gIC5wYXlwYWwtYnV0dG9uLCAuYnV5LWJ1dHRvbntcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdG1hcmdpbjogMzZweDtcbiAgfVxuXG4gIC5wYXlwYWwtYnV0dG9ue1xuICAgIGZvcm17XG4gICAgICBkaXNwbGF5OmlubGluZTtcbiAgICB9XG4gIH1cblxufSIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIFdhbGsgcGhvdG9zIHNsaWRlc2hvdyB1c2luZyBsaWdodGdhbGxlcnkgLSB3YWxrIGxlYWYgcGFnZVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0IFwiLi4vQGluY2x1ZGUvY29tcG9uZW50L2xpZ2h0Z2FsbGVyeVwiO1xuXG4kd2lkdGg6IDUyMHB4O1xuJGhlaWdodDogMzk0cHg7XG4kYXNwZWN0OiBwZXJjZW50YWdlKCRoZWlnaHQgLyAkd2lkdGgpO1xuXG5cbkBtaXhpbiBkdWFsQ29se1xuICB3aWR0aDogNTIwcHg7XG4gIGhlaWdodDogMzk0cHg7XG59XG5cbkBtaXhpbiBzaW5nbGVDb2x7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAkYXNwZWN0O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBTRU8tZnJpZW5kbHkgcGhvdG8gZ2FsbGVyeSAoc2VydmVyLXJlbmRlcmVkIEhUTUwpXG4gU2hvd3MgZmlyc3QgaW1hZ2UgYmVmb3JlIEpTIGluaXRpYWxpemVzIGxpZ2h0Z2FsbGVyeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4jcGhvdG9zIC5waG90by1nYWxsZXJ5LXNlbyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIFxuICAuZ2FsbGVyeS1pdGVtIHtcbiAgICBtYXJnaW46IDA7XG4gICAgZGlzcGxheTogbm9uZTsgLy8gSGlkZSBhbGwgaXRlbXMgYnkgZGVmYXVsdFxuICAgIFxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgZGlzcGxheTogYmxvY2s7IC8vIFNob3cgZmlyc3QgaW1hZ2UgZm9yIFNFTy9MQ1BcbiAgICB9XG4gICAgXG4gICAgaW1nIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgYXNwZWN0LXJhdGlvOiAkd2lkdGggLyAkaGVpZ2h0O1xuICAgIH1cbiAgICBcbiAgICBmaWdjYXB0aW9uIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43KTtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgIH1cbiAgfVxufVxuXG4vLyBIaWRlIFNFTyBnYWxsZXJ5IG9uY2UgbGlnaHRnYWxsZXJ5IGhhcyBpbml0aWFsaXplZFxuI3Bob3Rvcy5saWdodGdhbGxlcnk6bm90KC5sb2FkaW5nKSAucGhvdG8tZ2FsbGVyeS1zZW8ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4jcGhvdG9zLmxpZ2h0Z2FsbGVyeXtcblxuICAvLyBTaW5nbGUgY29sdW1uIGxheW91dCAobW9iaWxlLWZpcnN0LCA8IDk2MHB4KVxuICBAbWVkaWEgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgICBib2R5IHtcbiAgICAgIFxuICAgICAgQGluY2x1ZGUgc2luZ2xlQ29sO1xuXG4gICAgICAmOm5vdCguZnVsbHNjcmVlbikgLmxnLWNvbnRhaW5lcntcbiAgICAgICAgQGluY2x1ZGUgc2luZ2xlQ29sO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIER1YWwgY29sdW1uIGxheW91dCAoPj0gOTYwcHgpXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAgIEBpbmNsdWRlIGR1YWxDb2w7XG5cbiAgICAmOm5vdCguZnVsbHNjcmVlbikgLmxnLWNvbnRhaW5lcntcbiAgICAgIEBpbmNsdWRlIGR1YWxDb2w7XG4gICAgfVxuICB9XG5cbiAgJjphZnRlcntcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbn1cbiIsCgkJIi8qXG4gKiBMaWdodGdhbGxlcnkgcGhvdG8gc2xpZGVzaG93XG4gKi9cbi5saWdodGdhbGxlcnl7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmLmZ1bGxzY3JlZW57XG4gICAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xuXG4gICAgLmxpZ2h0R2FsbGVyeS1jYXB0aW9ucyBwe1xuICAgICAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgJjpub3QoLmZ1bGxzY3JlZW4pe1xuICAgIC5sZy1uZXh0LCAubGctcHJldntcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLmxpZ2h0R2FsbGVyeS1jYXB0aW9uc3tcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1zaGFkb3c6IDAgMCAxcHggcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgICY6OmJlZm9yZXtcbiAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICB6LWluZGV4OiAtMTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxcHg7XG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgfVxuICB9XG59XG5cbiIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIFdhbGsgbG9jYXRpb24gc2hvd24gb24gb3V0bGluZSBtYXAgb2YgQ29ybndhbGxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI291dGxpbmUtbWFwe1xuICBtYXJnaW46IDhweCBhdXRvO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gc2V0IHRvIG1hcCBpbWFnZSBkaW1lbnNpb25cbiAgd2lkdGg6IDMyMHB4O1xuICBoZWlnaHQ6IDMyMHB4O1xuXG4gIGltZ3tcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAuaW5kaWNhdG9ye1xuICAgICRzaXplOiA4cHg7XG4gICAgJGNvbG9yOiByZWQ7XG4gICAgJGJvcmRlci1jb2xvcjogd2hpdGU7XG4gICAgJHNoYWRvdy1jb2xvcjogd2hpdGU7XG5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICBib3gtc2hhZG93OiAwIDAgM3B4ICRzaGFkb3ctY29sb3I7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxufVxuIiwKCQkiQGltcG9ydCBcIi4uL0BpbmNsdWRlL2NvbW1vblwiO1xyXG5cclxuI215c3RlcmllcyB7XHJcblx0QGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xyXG5cdFx0cGFkZGluZy10b3A6IDI0cHg7XHJcblx0fVxyXG5cclxuXHRpbWcge1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRAaW5jbHVkZSBtcXMoJGZyb206IHBhZ2UpIHtcclxuXHRcdFx0Ly9kaXNwbGF5OiBub25lO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuIiwKCQkiLy8gUHVyZSBDU1MgcmVzcG9uc2l2ZSBjb2x1bW5zIGxheW91dFxuLy8gTm8gSmF2YVNjcmlwdCByZXF1aXJlZCAtIHVzZXMgQ1NTIEdyaWQgd2l0aCBtZWRpYSBxdWVyaWVzXG5cbiRsZWZ0Q29sV2lkdGg6IDUzNnB4O1xuJHJpZ2h0Q29sV2lkdGg6IDM3NnB4O1xuJGNvbHVtbkdhcDogMTZweDtcbiRkdWFsQ29sdW1uQnJlYWtwb2ludDogOTYwcHg7XG5cbi8vIFRoZSAjY29sdW1ucyBjb250YWluZXIgdXNlcyBDU1MgR3JpZFxuI2NvbHVtbnMge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgLy8gU2luZ2xlIGNvbHVtbiBsYXlvdXQgKGRlZmF1bHQsIG1vYmlsZS1maXJzdClcblxuICAvLyBJbiBzaW5nbGUtY29sdW1uIG1vZGUsIGFsbCBib3hlcyBmbG93IGludG8gYSBzaW5nbGUgY29sdW1uXG4gIC8vIGFuZCBhcmUgb3JkZXJlZCBieSB0aGUgQ1NTIG9yZGVyIHByb3BlcnR5IGRlZmluZWQgaW4gd2Fsay5zY3NzXG4gIC5sZWZ0LmNvbCxcbiAgLnJpZ2h0LmNvbCB7XG4gICAgZGlzcGxheTogY29udGVudHM7IC8vIE1ha2VzIGNoaWxkcmVuIGRpcmVjdCBncmlkIGl0ZW1zXG4gIH1cbn1cblxuLy8gQm94IHN0eWxpbmdcbi5sZWZ0LmNvbCB7XG4gIC5uYXJyb3cuYm94IHtcbiAgICBtYXgtd2lkdGg6ICRsZWZ0Q29sV2lkdGg7XG4gIH1cbn1cblxuLmJveFtkYXRhLWNvbC1kdWFsPVwicmlnaHRcIl0ge1xuICBwYWRkaW5nLXRvcDogNHB4O1xufVxuXG4vLyBkZWZhdWx0IHNpbmdsZSBjb2x1bW4gb3JkZXI6IGF0IHRoZSBib3R0b20gKG92ZXJyaWRkZW4gcGVyLWJveCBpbiB3YWxrLnNjc3MpXG4uYm94IHtcbiAgb3JkZXI6IDEwMDtcbn1cblxuW2RhdGEtcm9sZT1cImxpc3R2aWV3XCJdIHtcbiAgPiBsaSB7XG4gICAgcGFkZGluZzogMnB4IDA7XG4gIH1cbn1cblxuLy8gU2luZ2xlIGNvbHVtbiBsYXlvdXQgc3R5bGVzICg8IDk2MHB4KVxuQG1lZGlhIChtYXgtd2lkdGg6ICN7JGR1YWxDb2x1bW5CcmVha3BvaW50IC0gMXB4fSkge1xuICAjY29sdW1ucyB7XG4gICAgQGluY2x1ZGUgdG91Y2gtc2NyZWVuLXN0eWxlcztcbiAgfVxufVxuXG4vLyBUYWJsZXQ6IHNpZGUtYnktc2lkZSBib3hlcyBpbiBzaW5nbGUgY29sdW1uIG1vZGUgZm9yIHJpZ2h0IGNvbHVtbiBpdGVtc1xuLy8gVXNlcyB0YWJsZXQgYnJlYWtwb2ludCAoNzQwcHgpIHVwIHRvIGR1YWwgY29sdW1uIGJyZWFrcG9pbnQgKDk2MHB4KVxuQG1lZGlhIChtaW4td2lkdGg6ICRtcS1icmVha3BvaW50LXRhYmxldCkgYW5kIChtYXgtd2lkdGg6ICN7JGR1YWxDb2x1bW5CcmVha3BvaW50IC0gMXB4fSkge1xuICAjY29sdW1ucyB7XG4gICAgLy8gUmlnaHQgY29sdW1uIGJveGVzIGdldCAyLXVwIGxheW91dCB3aXRoaW4gdGhlIHNpbmdsZSBjb2x1bW5cbiAgICAuYm94W2RhdGEtY29sLXNpbmdsZT1cInJpZ2h0XCJdLFxuICAgIC5ib3hbZGF0YS1jb2wtZHVhbD1cInJpZ2h0XCJdIHtcbiAgICAgIHdpZHRoOiBjYWxjKDUwJSAtIDEycHgpO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBtYXJnaW46IDAgNHB4IDhweDtcblxuICAgICAgJjpudGgtb2YtdHlwZShvZGQpIHtcbiAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIER1YWwgY29sdW1uIGxheW91dCBhdCB3aWRlciB2aWV3cG9ydHNcbkBtZWRpYSAobWluLXdpZHRoOiAkZHVhbENvbHVtbkJyZWFrcG9pbnQpIHtcbiAgI2NvbHVtbnMge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGxlZnRDb2xXaWR0aCAkcmlnaHRDb2xXaWR0aDtcbiAgICBnYXA6IDAgJGNvbHVtbkdhcDtcblxuICAgIC5sZWZ0LmNvbCxcbiAgICAucmlnaHQuY29sIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyAvLyBSZXN0b3JlIG5vcm1hbCBibG9jayBiZWhhdmlvclxuICAgIH1cblxuICAgIC5sZWZ0LmNvbCB7XG4gICAgICBncmlkLWNvbHVtbjogMTtcbiAgICAgIGdyaWQtcm93OiAxO1xuICAgIH1cblxuICAgIC5yaWdodC5jb2wge1xuICAgICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgICBncmlkLXJvdzogMTtcbiAgICB9XG4gIH1cbn1cbiIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiogUHJvbW9zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0IFwibG9hZGVyXCI7XG5cbi5wcm9tby1jb250YWluZXIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG5cbiAgQGltcG9ydCBcInNsaWNrX292ZXJyaWRlc1wiO1xuXG4gIC5zbGljay1saXN0e1xuICAgIG1hcmdpbjogMCAtOHB4O1xuICB9XG5cbiAgLnNsaWNrLXNsaWRle1xuICAgIG1hcmdpbjogMCA4cHg7XG4gIH1cblxuICAmOm5vdCgubG9hZGVkKSwgJjpub3QoLmRpc3BsYXllZCl7XG4gICAgQGluY2x1ZGUgbG9hZGVyKFxuICAgICAgICAgICAgJHNpemU6IDUwcHgsXG4gICAgICAgICAgICAkdGhpY2tuZXNzOiA1cHgsXG4gICAgICAgICAgICAkZm9yZWdyb3VuZDogYmxhY2ssXG4gICAgICAgICAgICAkYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjI1KVxuICAgICk7XG4gIH1cblxuICAmOm5vdCguZGlzcGxheWVkKXtcbiAgICAuc2xpY2stYXJyb3d7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgQGF0LXJvb3Qge1xuICAgICN7Jn06bm90KC5sb2FkZWQpe1xuICAgICAgLnByb21ve1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnByb21vc3tcbiAgICBwYWRkaW5nOiA4cHggMCA0cHggMDtcbiAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiAzNjRweCkge1xuICAgICAgcGFkZGluZzogMDtcbiAgICB9XG4gIH1cbiAgLnByb21ve1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgLndyYXBwZXJ7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBsZWZ0OiAtMXB4O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTk5OTtcbiAgICB9XG4gICAgaW1ne1xuICAgICAgQGluY2x1ZGUgYm94U2hhZG93O1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAudGl0bGUsIC5tZXNzYWdle1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgaDIsIHB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLDAuNSk7XG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgMXB4IGJsYWNrO1xuICAgICAgfVxuICAgIH1cbiAgICAudGl0bGV7XG4gICAgICB0b3A6IDA7XG4gICAgICBoMntcbiAgICAgICAgZm9udC1zaXplOiAxNHB0O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDJweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWVzc2FnZXtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIHB7XG4gICAgICAgIHBhZGRpbmc6IDRweCAwIDRweCA0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBwdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsCgkJIi8vIExvYWRpbmcgYW5pbWF0aW9uXG5cbiRsb2FkZXItZGVmYXVsdC1zaXplOiA1MHB4O1xuJGxvYWRlci1kZWZhdWx0LXRoaWNrbmVzczogNXB4O1xuJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQ6IHdoaXRlO1xuJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4yNSk7XG4kbG9hZGVyLWRlZmF1bHQtZm9yZWdyb3VuZC1pbnZlcnRlZDogYmxhY2s7XG4kbG9hZGVyLWRlZmF1bHQtYmFja2dyb3VuZC1pbnZlcnRlZDogcmdiYSgwLDAsMCwwLjI1KTtcblxuQG1peGluIGxvYWRlcihcbiAgJHNpemU6ICRsb2FkZXItZGVmYXVsdC1zaXplLFxuICAkdGhpY2tuZXNzOiAkbG9hZGVyLWRlZmF1bHQtdGhpY2tuZXNzLFxuICAkZm9yZWdyb3VuZDogJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQsXG4gICRiYWNrZ3JvdW5kOiAkbG9hZGVyLWRlZmF1bHQtYmFja2dyb3VuZFxuKXtcblxuICBAYXQtcm9vdHtcbiAgICBib2R5Om5vdCguZnVsbHNjcmVlbikgI3smfSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLXRvcDogLSgkc2l6ZSAvIDIgKyAkdGhpY2tuZXNzKTtcbiAgICBtYXJnaW4tbGVmdDogLSgkc2l6ZSAvIDIgKyAkdGhpY2tuZXNzKTtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICBib3JkZXItcmFkaXVzOiAkc2l6ZTtcbiAgICBib3JkZXI6ICR0aGlja25lc3Mgc29saWQgJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGZvcmVncm91bmQ7XG4gICAgYW5pbWF0aW9uOiBsb2FkaW5nIDFzIGVhc2UgaW5maW5pdGU7XG4gIH1cbiAgQGtleWZyYW1lcyBsb2FkaW5nIHtcbiAgICAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbG9hZGVyLWludmVydGVkKFxuICAkc2l6ZTogJGxvYWRlci1kZWZhdWx0LXNpemUsXG4gICR0aGlja25lc3M6ICRsb2FkZXItZGVmYXVsdC10aGlja25lc3MsXG4gICRmb3JlZ3JvdW5kOiAkbG9hZGVyLWRlZmF1bHQtZm9yZWdyb3VuZC1pbnZlcnRlZCxcbiAgJGJhY2tncm91bmQ6ICRsb2FkZXItZGVmYXVsdC1iYWNrZ3JvdW5kLWludmVydGVkXG4pe1xuICBAaW5jbHVkZSBsb2FkZXIoXG4gICAgJHNpemU6ICRzaXplLFxuICAgICR0aGlja25lc3M6ICR0aGlja25lc3MsXG4gICAgJGZvcmVncm91bmQ6ICRmb3JlZ3JvdW5kLFxuICAgICRiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZFxuICApO1xufVxuIiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBTbGljayBDYXJvdXNlbCBkZWZhdWx0IHRoZW1lIG92ZXJyaWRlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4uc2xpY2stcHJldixcbi5zbGljay1uZXh0IHtcbiAgei1pbmRleDogMTtcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG5cbiAgJjpiZWZvcmV7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgfVxufVxuXG4uc2xpY2stcHJldiB7XG4gIGxlZnQ6IDE2cHg7XG59XG5cbi5zbGljay1wcmV2OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMTA0XCI7XG4gIGZvbnQ6IDQwcHgvMSAnRm9udEF3ZXNvbWUnO1xuICBwYWRkaW5nOiAwIDE2cHggMnB4IDEycHg7XG59XG5cbi5zbGljay1uZXh0IHtcbiAgcmlnaHQ6IDE2cHg7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4uc2xpY2stbmV4dDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjEwNVwiO1xuICBmb250OiA0MHB4LzEgJ0ZvbnRBd2Vzb21lJztcbiAgcGFkZGluZzogMCAxMnB4IDJweCAxNnB4O1xufVxuXG4uc2xpY2stcHJldjpob3ZlcjpiZWZvcmUsXG4uc2xpY2stbmV4dDpob3ZlcjpiZWZvcmUge1xuICBjb2xvcjogIzdlN2U3ZTtcbiAgQGluY2x1ZGUgdG91Y2gtc2NyZWVuLWRldmljZXN7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDAuNzU7XG4gIH1cbn0iLAoJCSIuYXBwLWZvcm1hdHMge1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC8vZGVza3RvcFxuICBAaW5jbHVkZSBtcXMoJGZyb206IHBhZ2UpIHtcbiAgICAuYXBwLWJ1dHRvbiB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLy90YWJsZXRcbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgIC50ZXh0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoLCAkdW50aWw6IHBhZ2UpIHtcbiAgICAuaWNvbntcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5pY29uIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICA+IGRpdi5zdG9yZS1saW5rIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuXG4gICAgLmlubmVye1xuICAgICAgQGluY2x1ZGUgY2VudHJlWDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHdpZHRoOiA5OCU7XG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gMTJweCk7XG4gICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuXG4gICAgICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoKXtcbiAgICAgICAgbWFyZ2luOiA4cHggMCAwIDA7XG4gICAgICAgIHBhZGRpbmc6IDhweCAwIDRweCAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhYWFhO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoLCAkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoLCAkdW50aWw6IHRhYmxldCkge1xuICAgICAgICBwYWRkaW5nOiA0cHggMCA4cHggMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGEge1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5pb3N7XG4gICAgICAuaWNvbntcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA0MnB4O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuYW5kcm9pZHtcbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIC5pY29uIGltZ3tcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMTJweDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuaWNvbntcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyNHB4ICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmlubmVyID4gZGl2IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG5cbiAgICAgICYuaWNvbiB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA0cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7XG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYudGV4dCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxN3B4O1xuICAgICAgICBmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHM7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgYXtcbiAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYucXJ7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDE4cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcblxuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGltZ3tcbiAgICAgICAgICBtYXgtd2lkdGg6IDEwMHB4O1xuICAgICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmFwcC1idXR0b257XG4gICAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0LCAkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgICBAaW5jbHVkZSBjZW50cmVZO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBsZWZ0OiA4cHg7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldCkge1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGF7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiA0MnB4O1xuICAgICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICAgICAgICBtYXJnaW46IDEycHggMCAwIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLAoJCSIvKlxuICogUmVzcG9uc2l2ZSBzbGlkZXNob3cgd2lkZ2V0IHVzaW5nIFNsaWNrIGNhcm91c2VsXG4gKi9cblxuQGltcG9ydCBcInNsaWNrX292ZXJyaWRlc1wiO1xuQGltcG9ydCBcImxvYWRlclwiO1xuXG4uc2xpZGVzaG93IHtcbiAgLy8gQXNwZWN0IHJhdGlvIG9mIHRoZSBzbGlkZXNob3cgYmFubmVyIGltYWdlcyAob3JpZ2luYWwgZGltZW5zaW9uczogOTI4eDM1MClcbiAgLy8gVGhpcyByZXNlcnZlcyBzcGFjZSBiZWZvcmUgaW1hZ2VzIGxvYWQsIHByZXZlbnRpbmcgQ0xTIChDdW11bGF0aXZlIExheW91dCBTaGlmdClcbiAgLS1zbGlkZXNob3ctYXNwZWN0LXJhdGlvOiAjezkyOCAvIDM1MH07XG5cbiAgbWFyZ2luOiAwIGF1dG8gMCBhdXRvO1xuICB3aWR0aDogMTAwJTtcblxuICAmOm5vdCguaW5pdGlhbGlzZWQpIHtcbiAgICAuc2xpZGUge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmxvYWRpbmcge1xuICAgIEBpbmNsdWRlIGxvYWRlcjtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIC5jYXB0aW9uIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuc2xpZGUge1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gICAgICAmOmZpcnN0LWNoaWxkIC5jYXB0aW9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgaW1nIHtcbiAgICAgICAgLy8gVXNlIHZpc2liaWxpdHk6IGhpZGRlbiBpbnN0ZWFkIG9mIGRpc3BsYXk6IG5vbmUgdG8gcHJlc2VydmVcbiAgICAgICAgLy8gdGhlIGFzcGVjdC1yYXRpbyBoZWlnaHQgcmVzZXJ2YXRpb24gYW5kIHByZXZlbnQgQ0xTXG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmluaXRpYWxpc2VkOm5vdCgubG9hZGluZykge1xuICAgIC53cmFwcGVyOm5vdCguZXZhbHVhdGluZykge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAuY2FwdGlvbiB7XG4gICAgICAgIEBpbmNsdWRlIGNlbnRyZVk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc2xpZGUge1xuXG4gICAgaW1nIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICBhc3BlY3QtcmF0aW86IHZhcigtLXNsaWRlc2hvdy1hc3BlY3QtcmF0aW8pO1xuICAgIH1cblxuICAgIC5jYXB0aW9uIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBcIkNvbWluZyBTb29uXCI7XG4gICAgICBjb2xvcjogI2RkZDtcbiAgICAgIHBhZGRpbmc6IDhweCAxNnB4O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgZm9udC1zaXplOiAxNnB0O1xuXG4gICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICBmb250LXNpemU6IDEycHQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxNHB0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsCgkJIi8qKlxuKiBEaXNwbGF5IGEgYm90dG9tIHByb21vIGluIGEgbGlnaHQgZ3JlZW4gYm94XG4qL1xuXG5cbi5ib3R0b20tcHJvbW8ge1xuICAgIEBpbmNsdWRlIGxpZ2h0R3JlZW5Cb3g7XG4gICAgQGluY2x1ZGUgYm94U2hhZG93O1xuICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIHB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxufSIKCV0sCgkibmFtZXMiOiBbXSwKCSJtYXBwaW5ncyI6ICJBSUNBOztHQUVHO0FBV0g7O0dBRUc7QUVoQkg7O3lEQUV5RDtBTEl6RCxBQUFBLElBQUksQ0FBQTtFQUNGLFVBQVUsRUFBRSxPQUFPO0NBQ3BCOztBTVJEOztFQUVFO0FBRUYsQUFBQSxXQUFXLENBQUM7RUFDVixPQUFPLEVBQUUsWUFBWTtFQUNyQixRQUFRLEVBQUUsUUFBUTtFQUNsQixhQUFhLEVBQUUsR0FBRztFQUNsQixLQUFLLEVBQUUsSUFBSTtDQWtCWjs7QUF0QkQsQUFNRSxXQU5TLENBTVQsR0FBRyxDQUFDO0VBQ0YsUUFBUSxFQUFDLFFBQVE7RUFDakIsT0FBTyxFQUFFLEtBQUs7RUFDZCxLQUFLLEVBQUUsSUFBSTtFQUNYLE1BQU0sRUFBRSxJQUFJO0NBQ2I7O0FBWEgsQUFhRSxXQWJTLENBYVQsYUFBYSxDQUFDO0VBQ1osT0FBTyxF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 */