/*
Theme Name: The Venue
Theme URI: http://underscores.me/
Author: Automattic
Author URI: http://automattic.com/
Description: Hi. I'm a starter theme called <code>The Venue</code>, or <em>underscores</em>, if you like. I'm a theme meant for hacking so don't use me as a <em>Parent Theme</em>. Instead try turning me into the next, most awesome, WordPress theme out there. That's what I'm here for.
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: The Venue
Tags:

This theme, like WordPress, is licensed under the GPL.
Use it to make something cool, have fun, and share what you've learned with others.

The Venue is based on Underscores http://underscores.me/, (C) 2012-2015 Automattic, Inc.

Normalizing styles have been helped along thanks to the fine work of
Nicolas Gallagher and Jonathan Neal http://necolas.github.com/normalize.css/
*/
/*--------------------------------------------------------------
>>> TABLE OF CONTENTS:
----------------------------------------------------------------
1.0 Vendor
2.0 Typography
3.0 Elements
4.0 Forms
5.0 Navigation
	5.1 Links
	5.2 Menus
6.0 Accessibility
7.0 Alignments
8.0 Clearings
9.0 Widgets
10.0 Content
	10.1 Posts and pages
	10.2 Asides
	10.3 Comments
    10.4 Headers
11.0 Infinite scroll
12.0 Media
	12.1 Captions
	12.2 Galleries
--------------------------------------------------------------*/
/*--------------------------------------------------------------
1.0 Vendor
--------------------------------------------------------------*/
html {
  font-family: sans-serif;
  -webkit-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%; }

body {
  margin: 0; }

article, aside, details, figcaption, figure, footer, header, main, menu, nav, section, summary {
  display: block; }

audio, canvas, progress, video {
  display: inline-block;
  vertical-align: baseline; }

audio:not([controls]) {
  display: none;
  height: 0; }

[hidden], template {
  display: none; }

a {
  background-color: transparent; }

a:active, a:hover {
  outline: 0; }

abbr[title] {
  border-bottom: 1px dotted; }

b, strong {
  font-weight: bold; }

dfn {
  font-style: italic; }

h1 {
  font-size: 2em;
  margin: 0.67em 0; }

mark {
  background: #ff0;
  color: #000; }

small {
  font-size: 80%; }

sub, sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

img {
  border: 0; }

svg:not(:root) {
  overflow: hidden; }

figure {
  margin: 1em 40px; }

hr {
  box-sizing: content-box;
  height: 0; }

pre {
  overflow: auto; }

code, kbd, pre, samp {
  font-family: monospace, monospace;
  font-size: 1em; }

button, input, optgroup, select, textarea {
  color: inherit;
  font: inherit;
  margin: 0; }

button {
  overflow: visible; }

button, select {
  text-transform: none; }

button, html input[type="button"], input[type="reset"], input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer; }

button[disabled], html input[disabled] {
  cursor: default; }

button::-moz-focus-inner, input::-moz-focus-inner {
  border: 0;
  padding: 0; }

input {
  line-height: normal; }

input[type="checkbox"], input[type="radio"] {
  box-sizing: border-box;
  padding: 0; }

input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button {
  height: auto; }

input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box; }

input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

legend {
  border: 0;
  padding: 0; }

textarea {
  overflow: auto; }

optgroup {
  font-weight: bold; }

table {
  border-collapse: collapse;
  border-spacing: 0; }

td, th {
  padding: 0; }

.ngg-album-compact {
  text-align: center;
  margin-bottom: 1.69492%; }
  .ngg-album-compact .Thumb {
    width: 100%; }
  .ngg-album-compact h4 {
    font-weight: 400;
    margin: 0; }

.ngg-album-desc {
  overflow: hidden;
  display: block;
  text-decoration: none; }

.ngg-album-gallery-image-counter {
  font-size: .8em;
  margin-top: 0; }
  .ngg-album-gallery-image-counter strong {
    font-weight: 400; }

.ngg-gallery-thumbnail-box {
  margin-bottom: 1.69492%; }
  .ngg-gallery-thumbnail-box img {
    width: 100%; }

.ngg-gallery-thumbnail-box, .ngg-album-compact {
  width: 49.15254%;
  float: left; }
  .ngg-gallery-thumbnail-box:nth-child(2n+1), .ngg-album-compact:nth-child(2n+1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0; }
  .ngg-gallery-thumbnail-box:nth-child(2n+2), .ngg-album-compact:nth-child(2n+2) {
    margin-left: 50.84746%;
    margin-right: -100%;
    clear: none; }

@media (min-width: 530px) {
  .ngg-gallery-thumbnail-box, .ngg-album-compact {
    width: 32.20339%;
    float: left; }
    .ngg-gallery-thumbnail-box:nth-child(3n+1), .ngg-album-compact:nth-child(3n+1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    .ngg-gallery-thumbnail-box:nth-child(3n+2), .ngg-album-compact:nth-child(3n+2) {
      margin-left: 33.89831%;
      margin-right: -100%;
      clear: none; }
    .ngg-gallery-thumbnail-box:nth-child(3n+3), .ngg-album-compact:nth-child(3n+3) {
      margin-left: 67.79661%;
      margin-right: -100%;
      clear: none; } }

@media (min-width: 760px) {
  .ngg-gallery-thumbnail-box, .ngg-album-compact {
    width: 23.72881%;
    float: left; }
    .ngg-gallery-thumbnail-box:nth-child(4n+1), .ngg-album-compact:nth-child(4n+1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    .ngg-gallery-thumbnail-box:nth-child(4n+2), .ngg-album-compact:nth-child(4n+2) {
      margin-left: 25.42373%;
      margin-right: -100%;
      clear: none; }
    .ngg-gallery-thumbnail-box:nth-child(4n+3), .ngg-album-compact:nth-child(4n+3) {
      margin-left: 50.84746%;
      margin-right: -100%;
      clear: none; }
    .ngg-gallery-thumbnail-box:nth-child(4n+4), .ngg-album-compact:nth-child(4n+4) {
      margin-left: 76.27119%;
      margin-right: -100%;
      clear: none; } }

@media (min-width: 1200px) {
  .ngg-gallery-thumbnail-box, .ngg-album-compact {
    width: 15.25424%;
    float: left; }
    .ngg-gallery-thumbnail-box:nth-child(6n+1), .ngg-album-compact:nth-child(6n+1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    .ngg-gallery-thumbnail-box:nth-child(6n+2), .ngg-album-compact:nth-child(6n+2) {
      margin-left: 16.94915%;
      margin-right: -100%;
      clear: none; }
    .ngg-gallery-thumbnail-box:nth-child(6n+3), .ngg-album-compact:nth-child(6n+3) {
      margin-left: 33.89831%;
      margin-right: -100%;
      clear: none; }
    .ngg-gallery-thumbnail-box:nth-child(6n+4), .ngg-album-compact:nth-child(6n+4) {
      margin-left: 50.84746%;
      margin-right: -100%;
      clear: none; }
    .ngg-gallery-thumbnail-box:nth-child(6n+5), .ngg-album-compact:nth-child(6n+5) {
      margin-left: 67.79661%;
      margin-right: -100%;
      clear: none; }
    .ngg-gallery-thumbnail-box:nth-child(6n+6), .ngg-album-compact:nth-child(6n+6) {
      margin-left: 84.74576%;
      margin-right: -100%;
      clear: none; } }

/*--------------------------------------------------------------
2.0 Typography
--------------------------------------------------------------*/
body, button, input, select, textarea {
  color: #cccccc;
  font-family: 'Open Sans', sans-serif;
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.5; }

h1, h2, h3, h4, h5, h6 {
  clear: both;
  color: #ed1c24; }

p {
  margin-bottom: 1.5em; }

b, strong {
  font-weight: bold; }

dfn, cite, em, i {
  font-style: italic; }

blockquote {
  margin: 0 1.5em; }

address {
  margin: 0 0 1.5em; }

pre {
  background: #eee;
  font-family: "Courier 10 Pitch", Courier, monospace;
  font-size: 15px;
  font-size: 0.9375rem;
  line-height: 1.6;
  margin-bottom: 1.6em;
  max-width: 100%;
  overflow: auto;
  padding: 1.6em; }

code, kbd, tt, var {
  font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
  font-size: 15px;
  font-size: 0.9375rem; }

abbr, acronym {
  border-bottom: 1px dotted #666;
  cursor: help; }

mark, ins {
  background: #fff9c0;
  text-decoration: none; }

big {
  font-size: 125%; }

/*--------------------------------------------------------------
3.0 Elements
--------------------------------------------------------------*/
html {
  box-sizing: border-box; }

*, *:before, *:after {
  /* Inherit box-sizing to make it easier to change the property for components that leverage other behavior; see http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
  box-sizing: inherit; }

body {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  background: black;
  /* Fallback for when there is no custom background color defined. */ }
  body:after {
    content: " ";
    display: block;
    clear: both; }

blockquote:before, blockquote:after, q:before, q:after {
  content: ""; }

blockquote, q {
  quotes: "'" "'"; }

hr {
  background-color: #ccc;
  border: 0;
  height: 1px;
  margin-bottom: 1.5em; }

ul, ol {
  margin: 0 0 1.5em 3em; }

ul {
  list-style: disc; }

ol {
  list-style: decimal; }

li > ul, li > ol {
  margin-bottom: 0;
  margin-left: 1.5em; }

dt {
  font-weight: bold; }

dd {
  margin: 0 1.5em 1.5em; }

img {
  height: auto;
  /* Make sure images are scaled correctly. */
  max-width: 100%;
  /* Adhere to container width. */ }

table {
  margin: 0 0 1.5em;
  width: 100%; }

/*--------------------------------------------------------------
4.0 Forms
--------------------------------------------------------------*/
button, input[type="button"], input[type="reset"], input[type="submit"] {
  border: 1px solid;
  border-color: #ccc #ccc #bbb;
  border-radius: 3px;
  background: #e6e6e6;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5), inset 0 15px 17px rgba(255, 255, 255, 0.5), inset 0 -5px 12px rgba(0, 0, 0, 0.05);
  color: rgba(0, 0, 0, 0.8);
  font-size: 12px;
  font-size: 0.75rem;
  line-height: 1;
  padding: .6em 1em .4em;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); }

button:hover, input[type="button"]:hover, input[type="reset"]:hover, input[type="submit"]:hover {
  border-color: #ccc #bbb #aaa;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8), inset 0 15px 17px rgba(255, 255, 255, 0.8), inset 0 -5px 12px rgba(0, 0, 0, 0.02); }

button:focus, input[type="button"]:focus, input[type="reset"]:focus, input[type="submit"]:focus, button:active, input[type="button"]:active, input[type="reset"]:active, input[type="submit"]:active {
  border-color: #aaa #bbb #bbb;
  box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.5), inset 0 2px 5px rgba(0, 0, 0, 0.15); }

input[type="text"], input[type="email"], input[type="url"], input[type="password"], input[type="search"], textarea {
  color: #666;
  border: 1px solid #ccc;
  border-radius: 3px; }

input[type="text"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="password"]:focus, input[type="search"]:focus, textarea:focus {
  color: #111; }

input[type="text"], input[type="email"], input[type="url"], input[type="password"], input[type="search"] {
  padding: 3px; }

textarea {
  padding-left: 3px;
  width: 100%; }

/*--------------------------------------------------------------
5.0 Navigation
--------------------------------------------------------------*/
/*--------------------------------------------------------------
5.1 Links
--------------------------------------------------------------*/
a {
  color: #cccccc; }
  a:visited {
    color: #cccccc; }
  a:hover, a:focus, a:active {
    color: #ed1c24; }
  a:focus {
    outline: thin dotted; }
  a:hover, a:active {
    outline: 0; }

/*--------------------------------------------------------------
5.2 Menus
--------------------------------------------------------------*/
.main-navigation {
  clear: both;
  width: 100%; }
  .main-navigation ul {
    list-style: none;
    margin: 0;
    padding-top: .5em;
    padding-left: 0; }
  .main-navigation li {
    padding: .25em 0;
    margin: 0 1em;
    float: none;
    border-top: 1px solid #ed1c24; }
  .main-navigation li:last-child {
    border-bottom: 1px solid #ed1c24; }
  .main-navigation a {
    color: #cccccc;
    display: block;
    padding-left: 1em;
    text-decoration: none; }
  .main-navigation a:hover {
    color: #ed1c24; }

.nav-menu {
  display: none; }

/* Small menu. */
.menu-toggle {
  color: #ed1c24;
  background-color: transparent;
  padding: .5em 1em;
  border: none;
  text-shadow: none;
  position: absolute;
  top: 0;
  right: 0; }

.menu-toggle, .menu-toggle:hover, .menu-toggle:focus, .menu-toggle:active {
  box-shadow: none; }

.menu-toggle, .main-navigation.toggled .nav-menu {
  display: block; }

@media (min-width: 720px) {
  .menu-toggle {
    display: none; }
  .menu-venue-menu-container {
    float: right;
    position: relative;
    left: -50%; }
  .nav-menu {
    display: block;
    position: relative;
    left: 50%; }
  .main-navigation li {
    margin: 0px;
    float: left;
    border-top: none; }
  .main-navigation li:last-child {
    border-bottom: none;
    border-right: none; }
  .main-navigation a {
    padding: 0 .5em; } }

@media (min-width: 880px) {
  .main-navigation a {
    padding: 0 1em; } }

@media (min-width: 1040px) {
  .main-navigation a {
    padding: 0 1.5em; } }

.site-main .comment-navigation, .site-main .posts-navigation, .site-main .post-navigation {
  margin: 0 0 1.5em;
  overflow: hidden; }

.comment-navigation .nav-previous, .posts-navigation .nav-previous, .post-navigation .nav-previous {
  float: left;
  width: 50%; }

.comment-navigation .nav-next, .posts-navigation .nav-next, .post-navigation .nav-next {
  float: right;
  text-align: right;
  width: 50%; }

/*--------------------------------------------------------------
6.0 Accessibility
--------------------------------------------------------------*/
/* Text meant only for screen readers. */
.screen-reader-text {
  clip: rect(1px, 1px, 1px, 1px);
  position: absolute !important;
  height: 1px;
  width: 1px;
  overflow: hidden; }
  .screen-reader-text:hover, .screen-reader-text:active, .screen-reader-text:focus {
    background-color: white;
    border-radius: 3px;
    box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
    clip: auto !important;
    color: #cccccc;
    display: block;
    font-size: 14px;
    font-size: 0.875rem;
    font-weight: bold;
    height: auto;
    left: 5px;
    line-height: normal;
    padding: 15px 23px 14px;
    text-decoration: none;
    top: 5px;
    width: auto;
    z-index: 100000;
    /* Above WP toolbar. */ }

/*--------------------------------------------------------------
7.0 Alignments
--------------------------------------------------------------*/
.alignleft {
  display: inline;
  float: left;
  margin-right: 1.5em; }

.alignright {
  display: inline;
  float: right;
  margin-left: 1.5em; }

.aligncenter {
  display: block;
  margin-left: auto;
  margin-right: auto; }

/*--------------------------------------------------------------
8.0 Clearings
--------------------------------------------------------------*/
.clear:before, .clear:after, .entry-content:before, .entry-content:after, .comment-content:before, .comment-content:after, .site-header:before, .site-header:after, .site-content:before, .site-content:after, .site-footer:before, .site-footer:after {
  content: "";
  display: table; }

.clear:after, .entry-content:after, .comment-content:after, .site-header:after, .site-content:after, .site-footer:after {
  clear: both; }

/*--------------------------------------------------------------
9.0 Widgets
--------------------------------------------------------------*/
.widget {
  margin: 0 0 1.5em;
  /* Make sure select elements fit in widgets. */ }
  .widget select {
    max-width: 100%; }

/* Search widget. */
.widget_search .search-submit {
  display: none; }

/*--------------------------------------------------------------
10.0 Content
--------------------------------------------------------------*/
/*--------------------------------------------------------------
10.1 Posts and pages
--------------------------------------------------------------*/
.sticky {
  display: block; }

.hentry {
  margin: 0 0 1.5em; }

.byline, .updated:not(.published) {
  display: none; }

.single .byline, .group-blog .byline {
  display: inline; }

.page-content, .entry-content, .entry-summary {
  margin: 1.5em 0 0; }

.page-links {
  clear: both;
  margin: 0 0 1.5em; }

/*--------------------------------------------------------------
10.2 Asides
--------------------------------------------------------------*/
.blog .format-aside .entry-title, .archive .format-aside .entry-title {
  display: none; }

/*--------------------------------------------------------------
10.3 Comments
--------------------------------------------------------------*/
.comment-content a {
  word-wrap: break-word; }

.bypostauthor {
  display: block; }

/*--------------------------------------------------------------
10.4 Headers
--------------------------------------------------------------*/
.site-header {
  padding: .5em 0;
  border-bottom: 6px solid #ed1c24; }

.header-logo {
  display: block;
  width: 70%;
  text-align: center;
  margin: 0 auto; }

@media (min-width: 360px) {
  .header-logo {
    width: 55%; } }

@media (min-width: 530px) {
  .header-logo {
    width: 40%; } }

@media (min-width: 760px) {
  .header-logo {
    width: 30%; } }

@media (min-width: 1200px) {
  .header-logo {
    width: 25%; } }

/*--------------------------------------------------------------
10.5 Pages
--------------------------------------------------------------*/
article.bars .entry-header {
  display: none; }
article.bars .entry-content {
  margin-top: 0; }

.bar {
  width: 100%;
  background-color: white;
  overflow: hidden;
  border-bottom: 6px solid #ed1c24; }

.bar-story {
  width: 100%;
  padding: 1em 1em 0;
  color: black;
  overflow: hidden; }

.bar-logo {
  width: 20%;
  margin: 0 auto;
  display: block; }

.bar-basement .bar-logo {
  width: 30%; }

.bar-star-bar .bar-logo {
  width: 70%; }

.bar-fagans .bar-logo {
  width: 50%; }

.bar-barbarellas .bar-logo {
  width: 50%; }

.bar-image {
  width: 100%; }
  .bar-image img {
    display: block; }

@media (min-width: 530px) {
  .bar-story, .bar-image {
    width: 50%;
    float: left; }
  .bar-story p {
    font-size: 1.9vw;
    margin-bottom: 0; }
  .bar-image:nth-child(3) {
    clear: left; } }

article.events {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding: 0 1.69492%;
  border-bottom: 6px solid #ed1c24; }
  article.events:after {
    content: " ";
    display: block;
    clear: both; }
  article.events .entry-header {
    display: none; }
  article.events .ngg-gallery-thumbnail {
    border-style: solid;
    -moz-border-image: url(images/events-frame.png) 42 round;
    -webkit-border-image: url(images/events-frame.png) 42 round;
    -o-border-image: url(images/events-frame.png) 42 round;
    border-image: url(images/events-frame.png) 42 round;
    border-width: 28px; }

.events-logo {
  display: block;
  margin-bottom: 1.5em;
  margin-left: 16.94915%;
  width: 66.10169%;
  float: left;
  margin-right: 1.69492%; }

@media (min-width: 530px) {
  .events-logo {
    margin-left: 25.42373%;
    width: 49.15254%;
    float: left;
    margin-right: 1.69492%; } }

@media (min-width: 760px) {
  .events-logo {
    margin-left: 33.89831%;
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%; } }

article.vip-birthdays {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding: 0 1.69492%;
  border-bottom: 6px solid #ed1c24; }
  article.vip-birthdays:after {
    content: " ";
    display: block;
    clear: both; }
  article.vip-birthdays .entry-header {
    display: none; }

.vip-birthdays-logo {
  margin-bottom: 1.5em;
  margin-left: 25.42373%;
  width: 49.15254%;
  float: left;
  margin-right: 1.69492%; }

.vip-birthdays-poster {
  padding: 0 1.69492% 1.69492%; }

@media (min-width: 360px) {
  .vip-birthdays-poster {
    margin-left: 8.47458%;
    width: 83.05085%;
    float: left;
    margin-right: 1.69492%; } }

@media (min-width: 530px) {
  .vip-birthdays-logo {
    margin-left: 33.89831%;
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%; }
  .vip-birthdays-poster {
    margin-left: 16.94915%;
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%; } }

@media (min-width: 760px) {
  .vip-birthdays-logo {
    margin-left: 38.13559%;
    width: 23.72881%;
    float: left;
    margin-right: 1.69492%; }
  .vip-birthdays-poster {
    margin-left: 25.42373%;
    width: 49.15254%;
    float: left;
    margin-right: 1.69492%; } }

article.photos {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding: 0 1.69492%;
  border-bottom: 6px solid #ed1c24; }
  article.photos:after {
    content: " ";
    display: block;
    clear: both; }
  article.photos .entry-header {
    display: none; }

.photos-logo {
  margin-bottom: 1.5em;
  margin-left: 16.94915%;
  width: 66.10169%;
  float: left;
  margin-right: 1.69492%; }

@media (min-width: 530px) {
  .photos-logo {
    margin-left: 25.42373%;
    width: 49.15254%;
    float: left;
    margin-right: 1.69492%; } }

@media (min-width: 760px) {
  .photos-logo {
    margin-left: 33.89831%;
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%; } }

article.membership {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding: 0 1.69492%;
  border-bottom: 6px solid #ed1c24; }
  article.membership:after {
    content: " ";
    display: block;
    clear: both; }

div.membership {
  margin-bottom: 1.69492%;
  padding-right: 1.69492%; }
  div.membership ul {
    margin-left: 0; }

@media (min-width: 760px) {
  div.membership {
    width: 49.15254%;
    float: left; }
    div.membership:nth-child(2n+1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    div.membership:nth-child(2n+2) {
      margin-left: 50.84746%;
      margin-right: -100%;
      clear: none; } }

article.information {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding: 0 1.69492%;
  border-bottom: 6px solid #ed1c24; }
  article.information:after {
    content: " ";
    display: block;
    clear: both; }

.faq {
  margin-bottom: 1.69492%;
  padding-right: 1.69492%; }
  .faq ul {
    margin-left: 0; }

.faq-footnote {
  clear: both; }

@media (min-width: 760px) {
  .faq {
    width: 49.15254%;
    float: left; }
    .faq:nth-child(2n+1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    .faq:nth-child(2n+2) {
      margin-left: 50.84746%;
      margin-right: -100%;
      clear: none; } }

@media (min-width: 1200px) {
  .faq {
    width: 32.20339%;
    float: left; }
    .faq:nth-child(3n+1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0; }
    .faq:nth-child(3n+2) {
      margin-left: 33.89831%;
      margin-right: -100%;
      clear: none; }
    .faq:nth-child(3n+3) {
      margin-left: 67.79661%;
      margin-right: -100%;
      clear: none; } }

article.contact {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding: 0 1.69492%;
  border-bottom: 6px solid #ed1c24; }
  article.contact:after {
    content: " ";
    display: block;
    clear: both; }

div.contact {
  margin-bottom: 1.69492%;
  padding-right: 1.69492%; }
  div.contact ul {
    margin-left: 0; }

.contact-sign {
  width: 50%;
  float: right;
  padding-left: 1.69492%;
  padding-bottom: 1.69492%; }

@media (min-width: 450px) {
  .contact-address {
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%; }
  .contact-telecomms {
    width: 66.10169%;
    float: right;
    margin-right: 0; } }

@media (min-width: 700px) {
  .contact-col1 {
    width: 49.15254%;
    float: left;
    margin-right: 1.69492%; }
  .contact-address, .contact-telecomms {
    width: 100%;
    float: left;
    margin-left: 0;
    margin-right: 0;
    float: none; }
  .contact-map {
    width: 49.15254%;
    float: right;
    margin-right: 0; } }

@media (min-width: 900px) {
  .contact-address {
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%; }
  .contact-telecomms {
    width: 66.10169%;
    float: right;
    margin-right: 0; } }

/*--------------------------------------------------------------
10.6 Footers
--------------------------------------------------------------*/
.site-footer {
  font-size: .8em;
  margin: 0 1em 1.5em; }

@media (min-width: 760px) {
  .site-footer {
    font-size: inherit; } }

.drink-responsibly {
  float: right; }
  .drink-responsibly a {
    text-decoration: none; }

/*--------------------------------------------------------------
11.0 Infinite scroll
--------------------------------------------------------------*/
/* Globally hidden elements when Infinite Scroll is supported and in use. */
.infinite-scroll .posts-navigation, .infinite-scroll.neverending .site-footer {
  /* Theme Footer (when set to scrolling) */
  display: none; }

/* When Infinite Scroll has reached its end we need to re-display elements that were hidden (via .neverending) before. */
.infinity-end.neverending .site-footer {
  display: block; }

/*--------------------------------------------------------------
12.0 Media
--------------------------------------------------------------*/
.page-content .wp-smiley, .entry-content .wp-smiley, .comment-content .wp-smiley {
  border: none;
  margin-bottom: 0;
  margin-top: 0;
  padding: 0; }

/* Make sure embeds and iframes fit their containers. */
embed, iframe, object {
  max-width: 100%; }

/*--------------------------------------------------------------
12.1 Captions
--------------------------------------------------------------*/
.wp-caption {
  margin-bottom: 1.5em;
  max-width: 100%; }
  .wp-caption img[class*="wp-image-"] {
    display: block;
    margin-left: auto;
    margin-right: auto; }
  .wp-caption .wp-caption-text {
    margin: 0.8075em 0; }

.wp-caption-text {
  text-align: center; }

/*--------------------------------------------------------------
12.2 Galleries
--------------------------------------------------------------*/
.gallery {
  margin-bottom: 1.5em; }

.gallery-item {
  display: inline-block;
  text-align: center;
  vertical-align: top;
  width: 100%; }

.gallery-columns-2 .gallery-item {
  max-width: 50%; }

.gallery-columns-3 .gallery-item {
  max-width: 33.33%; }

.gallery-columns-4 .gallery-item {
  max-width: 25%; }

.gallery-columns-5 .gallery-item {
  max-width: 20%; }

.gallery-columns-6 .gallery-item {
  max-width: 16.66%; }

.gallery-columns-7 .gallery-item {
  max-width: 14.28%; }

.gallery-columns-8 .gallery-item {
  max-width: 12.5%; }

.gallery-columns-9 .gallery-item {
  max-width: 11.11%; }

.gallery-caption {
  display: block; }


/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlbmRvci9fbm9ybWFsaXplLnNjc3MiLCJ2ZW5kb3IvX25leHRnZW4uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fc3Bhbi5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCJ0eXBvZ3JhcGh5L190eXBvZ3JhcGh5LnNjc3MiLCJ2YXJpYWJsZXMtc2l0ZS9fY29sb3JzLnNjc3MiLCJ2YXJpYWJsZXMtc2l0ZS9fdHlwb2dyYXBoeS5zY3NzIiwibWl4aW5zL19taXhpbnMtbWFzdGVyLnNjc3MiLCJ0eXBvZ3JhcGh5L19oZWFkaW5ncy5zY3NzIiwidHlwb2dyYXBoeS9fY29weS5zY3NzIiwiZWxlbWVudHMvX2VsZW1lbnRzLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCJlbGVtZW50cy9fbGlzdHMuc2NzcyIsImVsZW1lbnRzL190YWJsZXMuc2NzcyIsImZvcm1zL19idXR0b25zLnNjc3MiLCJmb3Jtcy9fZmllbGRzLnNjc3MiLCJuYXZpZ2F0aW9uL19saW5rcy5zY3NzIiwibmF2aWdhdGlvbi9fbWVudXMuc2NzcyIsIm1vZHVsZXMvX2FjY2Vzc2liaWxpdHkuc2NzcyIsIm1vZHVsZXMvX2FsaWdubWVudHMuc2NzcyIsIm1vZHVsZXMvX2NsZWFyaW5ncy5zY3NzIiwic2l0ZS9zZWNvbmRhcnkvX3dpZGdldHMuc2NzcyIsInNpdGUvcHJpbWFyeS9fcG9zdHMtYW5kLXBhZ2VzLnNjc3MiLCJzaXRlL3ByaW1hcnkvX2FzaWRlcy5zY3NzIiwic2l0ZS9wcmltYXJ5L19jb21tZW50cy5zY3NzIiwic2l0ZS9wcmltYXJ5L19oZWFkZXJzLnNjc3MiLCJ2YXJpYWJsZXMtc2l0ZS9fYm9yZGVycy5zY3NzIiwic2l0ZS9wcmltYXJ5L19iYXJzLnNjc3MiLCJzaXRlL3ByaW1hcnkvX2V2ZW50cy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsInNpdGUvcHJpbWFyeS9fdmlwLnNjc3MiLCJzaXRlL3ByaW1hcnkvX3Bob3Rvcy5zY3NzIiwic2l0ZS9wcmltYXJ5L19tZW1iZXJzaGlwLnNjc3MiLCJzaXRlL3ByaW1hcnkvX2ZhcS5zY3NzIiwic2l0ZS9wcmltYXJ5L19jb250YWN0LnNjc3MiLCJzaXRlL3ByaW1hcnkvX2Zvb3RlcnMuc2NzcyIsIm1vZHVsZXMvX2luZmluaXRlLXNjcm9sbC5zY3NzIiwibWVkaWEvX21lZGlhLnNjc3MiLCJtZWRpYS9fY2FwdGlvbnMuc2NzcyIsIm1lZGlhL19nYWxsZXJpZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0VBQ0MsQUFB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O01FSnNCLEFGSXRCOztBSStCQTtFTkxKLEFBQTRCO0lDQVksQUMxQnBDO0lDT3NDLEFEUHRDO0lEOENKLEFBQTBCLEFBQWtCLEFBQWtCO01BS2xDLEFDbkR4QjtNRG9Ed0IsQUNwRHhCO01FWnNCLEFGWXRCO01HZ0J1QixBSGhCdkI7SUQ4Q0osQUFBMEIsQUFBa0IsQUFBa0I7TUFLbEMsQUNuRHhCO01Eb0R3QixBQ3BEeEI7TUVKc0IsQUZJdEI7SUQ4Q0osQUFBMEIsQUFBa0IsQUFBa0I7TUFLbEMsQUNuRHhCO01Eb0R3QixBQ3BEeEI7TUVKc0IsQUZJdEI7SUQ4Q0osQUFBMEIsQUFBa0IsQUFBa0I7TUFLbEMsQUNuRHhCO01Eb0R3QixBQ3BEeEI7TUVKc0IsQUZJdEI7O0FJK0JBO0VOQ0osQUFBNEI7SUNOWSxBQzFCcEM7SUNPc0MsQURQdEM7SUQ4Q0osQUFBMEIsQUFBa0IsQUFBa0I7TUFLbEMsQUNuRHhCO01Eb0R3QixBQ3BEeEI7TUVac0IsQUZZdEI7TUdnQnVCLEFIaEJ2QjtJRDhDSixBQUEwQixBQUFrQixBQUFrQjtNQUtsQyxBQ25EeEI7TURvRHdCLEFDcER4QjtNRUpzQixBRkl0QjtJRDhDSixBQUEwQixBQUFrQixBQUFrQjtNQUtsQyxBQ25EeEI7TURvRHdCLEFDcER4QjtNRUpzQixBRkl0QjtJRDhDSixBQUEwQixBQUFrQixBQUFrQjtNQUtsQyxBQ25EeEI7TURvRHdCLEFDcER4QjtNRUpzQixBRkl0QjtJRDhDSixBQUEwQixBQUFrQixBQUFrQjtNQUtsQyxBQ25EeEI7TURvRHdCLEFDcER4QjtNRUpzQixBRkl0QjtJRDhDSixBQUEwQixBQUFrQixBQUFrQjtNQUtsQyxBQ25EeEI7TURvRHdCLEFDcER4QjtNRUpzQixBRkl0Qjs7Ozs7QUtuQkosQUFBTSxBQUFRLEFBQU8sQUFBUTtFQUs1QixBQ0phO0VES2IsQUVOWTtFQ0VaLEFBQVk7RUFDWixBSEltQjtFQUNuQixBRUx3Qjs7QUVIekIsQUFBSSxBQUFJLEFBQUksQUFBSSxBQUFJO0VBQ25CLEFBQU87RUFDSixBSEZTOztBSUFiO0VB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TyxBQUFlO0lBQ2QsQUFBUzs7QUFHakI7RUFDSSxBQUFlO0VGT1AsQWhDS1I7RWlDaURNLEFqQ2pETjtFQ09zQyxBRFB0QztFaUM2RGlCLEFqQzdEakI7O0FrQ1JKO0VBQ0ksQUFBUzs7QTlCc0NUO0U4Qm5DSjtJRkRZLEFoQ0tSO0lpQ2lETSxBakNqRE47SUNPc0MsQURQdEM7SWlDNkRpQixBakM3RGpCOztBSStCQTtFOEI3Qko7SUZQWSxBaENLUjtJaUNpRE0sQWpDakROO0lDT3NDLEFEUHRDO0lpQzZEaUIsQWpDN0RqQjtFa0NNSjtJRlhZLEFoQ0tSO0lpQ2lETSxBakNqRE47SUNPc0MsQURQdEM7SWlDNkRpQixBakM3RGpCOztBSStCQTtFOEJuQko7SUZqQlksQWhDS1I7SWlDaURNLEFqQ2pETjtJQ09zQyxBRFB0QztJaUM2RGlCLEFqQzdEakI7RWtDZ0JKO0lGckJZLEFoQ0tSO0lpQ2lETSxBakNqRE47SUNPc0MsQURQdEM7SWlDNkRpQixBakM3RGpCOztBbUNuQkosQUFBTztFdkJhUyxBWk1aO0VhSmEsQWJJYjtFYUhjLEFiR2Q7RVFRQSxBQUFTO0VBQ1QsQXFCNUJZO0VmV2hCLEFBQU8sQUFBTztJQUNSLEFBQVM7SUFDVCxBQUFTO0lBQ1QsQUFBTztFcUJaYixBQUFPLEFBQVE7SUFDUCxBQUFTOztBQUdqQjtFQUNJLEFBQWU7RUhPUCxBaENLUjtFaUNpRE0sQWpDakROO0VDT3NDLEFEUHRDO0VpQzZEaUIsQWpDN0RqQjs7QUkrQkE7RStCdENKO0lIRVksQWhDS1I7SWlDaURNLEFqQ2pETjtJQ09zQyxBRFB0QztJaUM2RGlCLEFqQzdEakI7O0FJK0JBO0UrQmhDSjtJSEpZLEFoQ0tSO0lpQ2lETSxBakNqRE47SUNPc0MsQURQdEM7SWlDNkRpQixBakM3RGpCOztBb0NuQkosQUFBTztFeEJhUyxBWk1aO0VhSmEsQWJJYjtFYUhjLEFiR2Q7RVFRQSxBQUFTO0VBQ1QsQXFCNUJZO0VmV2hCLEFBQU8sQUFBVztJQUNaLEFBQVM7SUFDVCxBQUFTO0lBQ1QsQUFBTzs7QXNCWGIsQUFBRztFNUI4QkMsQUFBZTtFQUNmLEFBQWU7RUFDbkIsQUFBRyxBQUFZO0lBQ1AsQUFBYTs7QUpjakI7RWdDM0NKLEFBQUc7SXJDc0NxQyxBQzFCcEM7SUNPc0MsQURQdEM7SUQ4Q0osQUFBRyxBQUFXO01BS2MsQUNuRHhCO01Eb0R3QixBQ3BEeEI7TUVac0IsQUZZdEI7TUdnQnVCLEFIaEJ2QjtJRDhDSixBQUFHLEFBQVc7TUFLYyxBQ25EeEI7TURvRHdCLEFDcER4QjtNRUpzQixBRkl0Qjs7QXFDbkJKLEFBQU87RXpCYVMsQVpNWjtFYUphLEFiSWI7RWFIYyxBYkdkO0VRUUEsQUFBUztFQUNULEFxQjVCWTtFZldoQixBQUFPLEFBQVk7SUFDYixBQUFTO0lBQ1QsQUFBUztJQUNULEFBQU87O0F1QlhiO0U3QjhCSSxBQUFlO0VBQ2YsQUFBZTtFQUNuQixBQUFLO0lBQ0csQUFBYTs7QTZCOUJyQjtFQUNJLEFBQU87O0FqQzJDUDtFaUN4Q0o7SXRDbUN3QyxBQzFCcEM7SUNPc0MsQURQdEM7SUQ4Q0osQUFBSTtNQUt3QixBQ25EeEI7TURvRHdCLEFDcER4QjtNRVpzQixBRll0QjtNR2dCdUIsQUhoQnZCO0lEOENKLEFBQUk7TUFLd0IsQUNuRHhCO01Eb0R3QixBQ3BEeEI7TUVKc0IsQUZJdEI7O0FJK0JBO0VpQ25DSjtJdEM4QndDLEFDMUJwQztJQ09zQyxBRFB0QztJRDhDSixBQUFJO01BS3dCLEFDbkR4QjtNRG9Ed0IsQUNwRHhCO01FWnNCLEFGWXRCO01HZ0J1QixBSGhCdkI7SUQ4Q0osQUFBSTtNQUt3QixBQ25EeEI7TURvRHdCLEFDcER4QjtNRUpzQixBRkl0QjtJRDhDSixBQUFJO01BS3dCLEFDbkR4QjtNRG9Ed0IsQUNwRHhCO01FSnNCLEFGSXRCOztBc0NuQkosQUFBTztFMUJhUyxBWk1aO0VhSmEsQWJJYjtFYUhjLEFiR2Q7RVFRQSxBQUFTO0VBQ1QsQXFCNUJZO0VmV2hCLEFBQU8sQUFBUTtJQUNULEFBQVM7SUFDVCxBQUFTO0lBQ1QsQUFBTzs7QXdCWGIsQUFBRztFOUI4QkMsQUFBZTtFQUNmLEFBQWU7RUFDbkIsQUFBRyxBQUFTO0lBQ0osQUFBYTs7QThCOUJyQjtFQUNJLEFBQU87RUFDUCxBQUFPO0VBQ1AsQUFBYztFQUNkLEFBQWdCOztBbEN3Q2hCO0VrQ3BDSjtJTHNEVSxBakNqRE47SUNPc0MsQURQdEM7SWlDNkRpQixBakM3RGpCO0VzQ0ZKO0lMbURVLEFqQ2pETjtJQ09PLEFEUFA7SWlDa0ZtQixBakNsRm5COztBSStCQTtFa0MzQko7SUw2Q1UsQWpDakROO0lDT3NDLEFEUHRDO0lpQzZEaUIsQWpDN0RqQjtFc0NPSixBQUFrQjtJTDBDUixBakNqRE47SUNPc0MsQURQdEM7SWlDK0VvQixBakMvRXBCO0lpQ2tGbUIsQWpDbEZuQjtJc0NTSSxBQUFPO0VBRWY7SUxzQ1UsQWpDakROO0lDT08sQURQUDtJaUNrRm1CLEFqQ2xGbkI7O0FJK0JBO0VrQ2RKO0lMZ0NVLEFqQ2pETjtJQ09zQyxBRFB0QztJaUM2RGlCLEFqQzdEakI7RXNDb0JKO0lMNkJVLEFqQ2pETjtJQ09PLEFEUFA7SWlDa0ZtQixBakNsRm5COzs7OztBdUNuQko7RUFDSSxBQUFXO0VBQ1gsQUFBUTs7QW5DZ0RSO0VtQzVDSjtJQUNRLEFBQVc7O0FBSW5CO0VBQ0ksQUFBTztFQUNYLEFBQW1CO0lBQ1gsQUFBaUI7Ozs7OztBQ2J6QixBQUFpQixBQUFtQixBQUFnQixBQUFhOztFQUVoRSxBQUFTOzs7QUFJVixBQUFhLEFBQWE7RUFDekIsQUFBUzs7Ozs7QUNSVixBQUFjLEFBQVksQUFBZSxBQUFZLEFBQWlCO0VBR3JFLEFBQVE7RUFDUixBQUFlO0VBQ2YsQUFBWTtFQUNaLEFBQVM7OztBQUlWLEFBQU8sQUFBUTtFQUdkLEFBQVc7Ozs7O0FDYlo7RUFDQyxBQUFlO0VBQ2YsQUFBVztFQUVaLEFBQVksQUFBRztJbENJZCxBQUFTO0lBQ1QsQUFBYTtJQUNiLEFBQWM7RWtDRmYsQUFBWTtJQUNWLEFBQVE7O0FBSVY7RUFDQyxBQUFZOzs7OztBQ2RiO0VBQ0MsQUFBZTs7QUFHaEI7RUFDQyxBQUFTO0VBQ1QsQUFBWTtFQUNaLEFBQWdCO0VBQ2hCLEFBQU87O0FBR1IsQUFBbUI7RUFDbEIsQUFBVzs7QUFHWixBQUFtQjtFQUNsQixBQUFXOztBQUdaLEFBQW1CO0VBQ2xCLEFBQVc7O0FBR1osQUFBbUI7RUFDbEIsQUFBVzs7QUFHWixBQUFtQjtFQUNsQixBQUFXOztBQUdaLEFBQW1CO0VBQ2xCLEFBQVc7O0FBR1osQUFBbUI7RUFDbEIsQUFBVzs7QUFHWixBQUFtQjtFQUNsQixBQUFXOztBQUdaO0VBQ0MsQUFBUyIsImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJodG1sIHtcclxuXHRmb250LWZhbWlseTogc2Fucy1zZXJpZjtcclxuXHQtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XHJcblx0LW1zLXRleHQtc2l6ZS1hZGp1c3Q6ICAgICAxMDAlO1xyXG59XHJcblxyXG5ib2R5IHtcclxuXHRtYXJnaW46IDA7XHJcbn1cclxuXHJcbmFydGljbGUsXHJcbmFzaWRlLFxyXG5kZXRhaWxzLFxyXG5maWdjYXB0aW9uLFxyXG5maWd1cmUsXHJcbmZvb3RlcixcclxuaGVhZGVyLFxyXG5tYWluLFxyXG5tZW51LFxyXG5uYXYsXHJcbnNlY3Rpb24sXHJcbnN1bW1hcnkge1xyXG5cdGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG5hdWRpbyxcclxuY2FudmFzLFxyXG5wcm9ncmVzcyxcclxudmlkZW8ge1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcbn1cclxuXHJcbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XHJcblx0ZGlzcGxheTogbm9uZTtcclxuXHRoZWlnaHQ6IDA7XHJcbn1cclxuXHJcbltoaWRkZW5dLFxyXG50ZW1wbGF0ZSB7XHJcblx0ZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuYSB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbmE6YWN0aXZlLFxyXG5hOmhvdmVyIHtcclxuXHRvdXRsaW5lOiAwO1xyXG59XHJcblxyXG5hYmJyW3RpdGxlXSB7XHJcblx0Ym9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDtcclxufVxyXG5cclxuYixcclxuc3Ryb25nIHtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuZGZuIHtcclxuXHRmb250LXN0eWxlOiBpdGFsaWM7XHJcbn1cclxuXHJcbmgxIHtcclxuXHRmb250LXNpemU6IDJlbTtcclxuXHRtYXJnaW46IDAuNjdlbSAwO1xyXG59XHJcblxyXG5tYXJrIHtcclxuXHRiYWNrZ3JvdW5kOiAjZmYwO1xyXG5cdGNvbG9yOiAjMDAwO1xyXG59XHJcblxyXG5zbWFsbCB7XHJcblx0Zm9udC1zaXplOiA4MCU7XHJcbn1cclxuXHJcbnN1Yixcclxuc3VwIHtcclxuXHRmb250LXNpemU6IDc1JTtcclxuXHRsaW5lLWhlaWdodDogMDtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0dmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xyXG59XHJcblxyXG5zdXAge1xyXG5cdHRvcDogLTAuNWVtO1xyXG59XHJcblxyXG5zdWIge1xyXG5cdGJvdHRvbTogLTAuMjVlbTtcclxufVxyXG5cclxuaW1nIHtcclxuXHRib3JkZXI6IDA7XHJcbn1cclxuXHJcbnN2Zzpub3QoOnJvb3QpIHtcclxuXHRvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG5maWd1cmUge1xyXG5cdG1hcmdpbjogMWVtIDQwcHg7XHJcbn1cclxuXHJcbmhyIHtcclxuXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxuXHRoZWlnaHQ6IDA7XHJcbn1cclxuXHJcbnByZSB7XHJcblx0b3ZlcmZsb3c6IGF1dG87XHJcbn1cclxuXHJcbmNvZGUsXHJcbmtiZCxcclxucHJlLFxyXG5zYW1wIHtcclxuXHRmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XHJcblx0Zm9udC1zaXplOiAxZW07XHJcbn1cclxuXHJcbmJ1dHRvbixcclxuaW5wdXQsXHJcbm9wdGdyb3VwLFxyXG5zZWxlY3QsXHJcbnRleHRhcmVhIHtcclxuXHRjb2xvcjogaW5oZXJpdDtcclxuXHRmb250OiBpbmhlcml0O1xyXG5cdG1hcmdpbjogMDtcclxufVxyXG5cclxuYnV0dG9uIHtcclxuXHRvdmVyZmxvdzogdmlzaWJsZTtcclxufVxyXG5cclxuYnV0dG9uLFxyXG5zZWxlY3Qge1xyXG5cdHRleHQtdHJhbnNmb3JtOiBub25lO1xyXG59XHJcblxyXG5idXR0b24sXHJcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcclxuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxyXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcclxuXHQtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcclxuXHRjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbmJ1dHRvbltkaXNhYmxlZF0sXHJcbmh0bWwgaW5wdXRbZGlzYWJsZWRdIHtcclxuXHRjdXJzb3I6IGRlZmF1bHQ7XHJcbn1cclxuXHJcbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcclxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xyXG5cdGJvcmRlcjogMDtcclxuXHRwYWRkaW5nOiAwO1xyXG59XHJcblxyXG5pbnB1dCB7XHJcblx0bGluZS1oZWlnaHQ6IG5vcm1hbDtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxyXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xyXG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0cGFkZGluZzogMDtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcclxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XHJcblx0aGVpZ2h0OiBhdXRvO1xyXG59XHJcblxyXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcclxuXHQtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcclxuXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XHJcblx0LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG59XHJcblxyXG5maWVsZHNldCB7XHJcblx0Ym9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcclxuXHRtYXJnaW46IDAgMnB4O1xyXG5cdHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcclxufVxyXG5cclxubGVnZW5kIHtcclxuXHRib3JkZXI6IDA7XHJcblx0cGFkZGluZzogMDtcclxufVxyXG5cclxudGV4dGFyZWEge1xyXG5cdG92ZXJmbG93OiBhdXRvO1xyXG59XHJcblxyXG5vcHRncm91cCB7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbnRhYmxlIHtcclxuXHRib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG5cdGJvcmRlci1zcGFjaW5nOiAwO1xyXG59XHJcblxyXG50ZCxcclxudGgge1xyXG5cdHBhZGRpbmc6IDA7XHJcbn1cclxuIiwiXHJcbi8vIEFsYnVtIHNwZWNpZmljXHJcblxyXG4ubmdnLWFsYnVtLWNvbXBhY3Qge1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogZ3V0dGVyKCk7XHJcbiAgICAuVGh1bWIge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG4gICAgaDQge1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG59XHJcbi5uZ2ctYWxidW0tZGVzYyB7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbn1cclxuLm5nZy1hbGJ1bS1nYWxsZXJ5LWltYWdlLWNvdW50ZXIge1xyXG4gICAgZm9udC1zaXplOiAuOGVtO1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIHN0cm9uZyB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIH1cclxufVxyXG5cclxuLm5nZy1nYWxsZXJ5LXRodW1ibmFpbC1ib3gge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogZ3V0dGVyKCk7XHJcbiAgICBpbWcge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG59XHJcblxyXG4ubmdnLWdhbGxlcnktdGh1bWJuYWlsLWJveCwgLm5nZy1hbGJ1bS1jb21wYWN0IHtcclxuICAgIEBpbmNsdWRlIGdhbGxlcnkoNiBvZiAxMik7XHJcbn1cclxuXHJcbkBpbmNsdWRlIHN1c3ktbWVkaWEoJGJyZWFrX19zbWFsbC1wbHVzKSB7XHJcbiAgICAubmdnLWdhbGxlcnktdGh1bWJuYWlsLWJveCwgLm5nZy1hbGJ1bS1jb21wYWN0IHtcclxuICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDQgb2YgMTIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBzdXN5LW1lZGlhKCRicmVha19fbWVkaXVtKSB7XHJcbiAgICAubmdnLWdhbGxlcnktdGh1bWJuYWlsLWJveCwgLm5nZy1hbGJ1bS1jb21wYWN0IHtcclxuICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDMgb2YgMTIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBzdXN5LW1lZGlhKCRicmVha19fbGFyZ2UpIHtcclxuICAgIC5uZ2ctZ2FsbGVyeS10aHVtYm5haWwtYm94LCAubmdnLWFsYnVtLWNvbXBhY3Qge1xyXG4gICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMiBvZiAxMik7XHJcbiAgICB9XHJcbn0iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBGbG9hdCBTcGFuIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgU3BhbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICR3aWR0aCAgICAgICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvYXRdICAgICAgICAgICA6IGZyb20gfCB0b1xuLy8gLSBbJG1hcmdpbi1iZWZvcmVdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJG1hcmdpbi1hZnRlcl0gICAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYmVmb3JlXSAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYWZ0ZXJdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICAgICAgICAgICAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1zcGFuLW91dHB1dChcbiAgJHdpZHRoLFxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb20sXG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbCxcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsLFxuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGwsXG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbCxcbiAgJGZsb3cgICAgICAgICAgICAgOiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0byAgICAgOiB0bygkZmxvdyk7XG4gICRmcm9tICAgOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGg6ICR3aWR0aCxcbiAgICBmbG9hdDogaWYoJGZsb2F0ID09IHRvLCAkdG8sIG51bGwpIG9yIGlmKCRmbG9hdCA9PSBmcm9tLCAkZnJvbSwgbnVsbCksXG4gICAgbWFyZ2luLSN7JGZyb219OiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJHBhZGRpbmctYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG5hbWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG5hbWUpO1xuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiYm9keSxcclxuYnV0dG9uLFxyXG5pbnB1dCxcclxuc2VsZWN0LFxyXG50ZXh0YXJlYSB7XHJcblx0Y29sb3I6ICRjb2xvcl9fdGV4dC1tYWluO1xyXG5cdGZvbnQtZmFtaWx5OiAkZm9udF9fbWFpbjtcclxuXHRAaW5jbHVkZSBmb250LXNpemUoMSk7XHJcblx0bGluZS1oZWlnaHQ6ICRmb250X19saW5lLWhlaWdodC1ib2R5O1xyXG59XHJcblxyXG5AaW1wb3J0IFwiaGVhZGluZ3NcIjtcclxuXHJcbkBpbXBvcnQgXCJjb3B5XCI7IiwiJHZlbnVlX19yZWQ6ICNlZDFjMjQ7XHJcbiR2ZW51ZV9fZ3JheTogI2NjY2NjYztcclxuXHJcbiRjb2xvcl9fYmFja2dyb3VuZC1ib2R5OiBibGFjaztcclxuJGNvbG9yX19iYWNrZ3JvdW5kLXNjcmVlbjogd2hpdGU7XHJcbiRjb2xvcl9fYmFja2dyb3VuZC1ocjogI2NjYztcclxuJGNvbG9yX19iYWNrZ3JvdW5kLWJ1dHRvbjogI2U2ZTZlNjtcclxuJGNvbG9yX19iYWNrZ3JvdW5kLXByZTogI2VlZTtcclxuJGNvbG9yX19iYWNrZ3JvdW5kLWluczogI2ZmZjljMDtcclxuXHJcbiRjb2xvcl9fdGV4dC1zY3JlZW46ICR2ZW51ZV9fZ3JheTtcclxuJGNvbG9yX190ZXh0LWludmVydGVkOiBibGFjaztcclxuJGNvbG9yX190ZXh0LWhlYWRpbmc6ICR2ZW51ZV9fcmVkO1xyXG4kY29sb3JfX3RleHQtaW5wdXQ6ICM2NjY7XHJcbiRjb2xvcl9fdGV4dC1pbnB1dC1mb2N1czogIzExMTtcclxuJGNvbG9yX19saW5rOiAkdmVudWVfX2dyYXk7XHJcbiRjb2xvcl9fbGluay12aXNpdGVkOiAkdmVudWVfX2dyYXk7XHJcbiRjb2xvcl9fbGluay1ob3ZlcjogJHZlbnVlX19yZWQ7XHJcbiRjb2xvcl9fdGV4dC1tYWluOiAkdmVudWVfX2dyYXk7XHJcblxyXG4kY29sb3JfX2JvcmRlci10YWJsZTogJHZlbnVlX19yZWQ7XHJcblxyXG4kY29sb3JfX2JvcmRlci1idXR0b246ICNjY2MgI2NjYyAjYmJiO1xyXG4kY29sb3JfX2JvcmRlci1idXR0b24taG92ZXI6ICNjY2MgI2JiYiAjYWFhO1xyXG4kY29sb3JfX2JvcmRlci1idXR0b24tZm9jdXM6ICNhYWEgI2JiYiAjYmJiO1xyXG4kY29sb3JfX2JvcmRlci1pbnB1dDogI2NjYztcclxuJGNvbG9yX19ib3JkZXItYWJicjogIzY2NjtcclxuIiwiJGZvbnRfX21haW46ICdPcGVuIFNhbnMnLCBzYW5zLXNlcmlmO1xyXG4kZm9udF9fY29kZTogTW9uYWNvLCBDb25zb2xhcywgXCJBbmRhbGUgTW9ub1wiLCBcIkRlamFWdSBTYW5zIE1vbm9cIiwgbW9ub3NwYWNlO1xyXG4kZm9udF9fcHJlOiBcIkNvdXJpZXIgMTAgUGl0Y2hcIiwgQ291cmllciwgbW9ub3NwYWNlO1xyXG4kZm9udF9fbGluZS1oZWlnaHQtYm9keTogMS41O1xyXG4kZm9udF9fbGluZS1oZWlnaHQtcHJlOiAxLjY7IiwiLy8gUmVtIG91dHB1dCB3aXRoIHB4IGZhbGxiYWNrXG5AbWl4aW4gZm9udC1zaXplKCRzaXplVmFsdWU6IDEpIHtcblx0Zm9udC1zaXplOiAoJHNpemVWYWx1ZSAqIDE2KSArIHB4O1xuXHRmb250LXNpemU6ICRzaXplVmFsdWUgKyByZW07XG59XG5cbi8vIENlbnRlciBibG9ja1xuQG1peGluIGNlbnRlci1ibG9jayB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRtYXJnaW4tbGVmdDogYXV0bztcblx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4vLyBDbGVhcmZpeFxuQG1peGluIGNsZWFyZml4KCkge1xuXHRjb250ZW50OiBcIlwiO1xuXHRkaXNwbGF5OiB0YWJsZTtcbn1cblxuLy8gQ2xlYXIgYWZ0ZXIgKG5vdCBhbGwgY2xlYXJmaXggbmVlZCB0aGlzIGFsc28pXG5AbWl4aW4gY2xlYXJmaXgtYWZ0ZXIoKSB7XG5cdGNsZWFyOiBib3RoO1xufVxuXG4vLyBTdGFuZGFyZCB0ZXh0IGFydGljbGVcbkBtaXhpbiB0ZXh0LWFydGljbGUoKSB7XG4gICAgQGluY2x1ZGUgY29udGFpbmVyO1xuICAgIHBhZGRpbmc6IDAgZ3V0dGVyKCk7XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcl9fbWFqb3I7XG59XG5cbi8vIFN0YW5kYXJkIHRleHQgYmxvY2tcbkBtaXhpbiB0ZXh0LWJsb2NrKCkge1xuICAgIG1hcmdpbi1ib3R0b206IGd1dHRlcigpO1xuICAgIHBhZGRpbmctcmlnaHQ6IGd1dHRlcigpO1xuICAgIHVsIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxufSIsImgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xyXG5cdGNsZWFyOiBib3RoO1xyXG4gICAgY29sb3I6ICRjb2xvcl9fdGV4dC1oZWFkaW5nO1xyXG59IiwicCB7XHJcblx0bWFyZ2luLWJvdHRvbTogMS41ZW07XHJcbn1cclxuXHJcbmIsIHN0cm9uZyB7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbmRmbiwgY2l0ZSwgZW0sIGkge1xyXG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcclxufVxyXG5cclxuYmxvY2txdW90ZSB7XHJcblx0bWFyZ2luOiAwIDEuNWVtO1xyXG59XHJcblxyXG5hZGRyZXNzIHtcclxuXHRtYXJnaW46IDAgMCAxLjVlbTtcclxufVxyXG5cclxucHJlIHtcclxuXHRiYWNrZ3JvdW5kOiAkY29sb3JfX2JhY2tncm91bmQtcHJlO1xyXG5cdGZvbnQtZmFtaWx5OiAkZm9udF9fcHJlO1xyXG5cdEBpbmNsdWRlIGZvbnQtc2l6ZSgwLjkzNzUpO1xyXG5cdGxpbmUtaGVpZ2h0OiAkZm9udF9fbGluZS1oZWlnaHQtcHJlO1xyXG5cdG1hcmdpbi1ib3R0b206IDEuNmVtO1xyXG5cdG1heC13aWR0aDogMTAwJTtcclxuXHRvdmVyZmxvdzogYXV0bztcclxuXHRwYWRkaW5nOiAxLjZlbTtcclxufVxyXG5cclxuY29kZSwga2JkLCB0dCwgdmFyIHtcclxuXHRmb250LWZhbWlseTogJGZvbnRfX2NvZGU7XHJcblx0QGluY2x1ZGUgZm9udC1zaXplKDAuOTM3NSk7XHJcbn1cclxuXHJcbmFiYnIsIGFjcm9ueW0ge1xyXG5cdGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgJGNvbG9yX19ib3JkZXItYWJicjtcclxuXHRjdXJzb3I6IGhlbHA7XHJcbn1cclxuXHJcbm1hcmssIGlucyB7XHJcblx0YmFja2dyb3VuZDogJGNvbG9yX19iYWNrZ3JvdW5kLWlucztcclxuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbn1cclxuXHJcbmJpZyB7XHJcblx0Zm9udC1zaXplOiAxMjUlO1xyXG59IiwiaHRtbCB7XHJcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuKixcclxuKjpiZWZvcmUsXHJcbio6YWZ0ZXIgeyAvKiBJbmhlcml0IGJveC1zaXppbmcgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY2hhbmdlIHRoZSBwcm9wZXJ0eSBmb3IgY29tcG9uZW50cyB0aGF0IGxldmVyYWdlIG90aGVyIGJlaGF2aW9yOyBzZWUgaHR0cDovL2Nzcy10cmlja3MuY29tL2luaGVyaXRpbmctYm94LXNpemluZy1wcm9iYWJseS1zbGlnaHRseS1iZXR0ZXItYmVzdC1wcmFjdGljZS8gKi9cclxuXHRib3gtc2l6aW5nOiBpbmhlcml0O1xyXG59XHJcblxyXG5ib2R5IHtcclxuICAgIEBpbmNsdWRlIGNvbnRhaW5lcjtcclxuXHRiYWNrZ3JvdW5kOiAkY29sb3JfX2JhY2tncm91bmQtYm9keTsgLyogRmFsbGJhY2sgZm9yIHdoZW4gdGhlcmUgaXMgbm8gY3VzdG9tIGJhY2tncm91bmQgY29sb3IgZGVmaW5lZC4gKi9cclxufVxyXG5cclxuYmxvY2txdW90ZTpiZWZvcmUsIGJsb2NrcXVvdGU6YWZ0ZXIsXHJcbnE6YmVmb3JlLCBxOmFmdGVyIHtcclxuXHRjb250ZW50OiBcIlwiO1xyXG59XHJcblxyXG5ibG9ja3F1b3RlLCBxIHtcclxuXHRxdW90ZXM6IFwiJ1wiIFwiJ1wiO1xyXG59XHJcblxyXG5ociB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX19iYWNrZ3JvdW5kLWhyO1xyXG5cdGJvcmRlcjogMDtcclxuXHRoZWlnaHQ6IDFweDtcclxuXHRtYXJnaW4tYm90dG9tOiAxLjVlbTtcclxufVxyXG5cclxuQGltcG9ydCBcImxpc3RzXCI7XHJcblxyXG5pbWcge1xyXG5cdGhlaWdodDogYXV0bzsgLyogTWFrZSBzdXJlIGltYWdlcyBhcmUgc2NhbGVkIGNvcnJlY3RseS4gKi9cclxuXHRtYXgtd2lkdGg6IDEwMCU7IC8qIEFkaGVyZSB0byBjb250YWluZXIgd2lkdGguICovXHJcbn1cclxuXHJcbkBpbXBvcnQgXCJ0YWJsZXNcIjtcclxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNoYXJlZCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICAgICAgICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGNvbnRhaW5lci1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICAkb3V0cHV0OiAoXG4gICAgI3skcHJvcGVydHl9OiAkd2lkdGggb3IgMTAwJSxcbiAgICBtYXJnaW4tbGVmdDogbnRoKCRqdXN0aWZ5LCAxKSxcbiAgICBtYXJnaW4tcmlnaHQ6IG50aCgkanVzdGlmeSwgMiksXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwidWwsIG9sIHtcclxuXHRtYXJnaW46IDAgMCAxLjVlbSAzZW07XHJcbn1cclxuXHJcbnVsIHtcclxuXHRsaXN0LXN0eWxlOiBkaXNjO1xyXG59XHJcblxyXG5vbCB7XHJcblx0bGlzdC1zdHlsZTogZGVjaW1hbDtcclxufVxyXG5cclxubGkgPiB1bCxcclxubGkgPiBvbCB7XHJcblx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRtYXJnaW4tbGVmdDogMS41ZW07XHJcbn1cclxuXHJcbmR0IHtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuZGQge1xyXG5cdG1hcmdpbjogMCAxLjVlbSAxLjVlbTtcclxufSIsInRhYmxlIHtcclxuXHRtYXJnaW46IDAgMCAxLjVlbTtcclxuXHR3aWR0aDogMTAwJTtcclxufSIsImJ1dHRvbixcclxuaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcclxuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxyXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcclxuXHRib3JkZXI6IDFweCBzb2xpZDtcclxuXHRib3JkZXItY29sb3I6ICRjb2xvcl9fYm9yZGVyLWJ1dHRvbjtcclxuXHRib3JkZXItcmFkaXVzOiAzcHg7XHJcblx0YmFja2dyb3VuZDogJGNvbG9yX19iYWNrZ3JvdW5kLWJ1dHRvbjtcclxuXHRib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSwgaW5zZXQgMCAxNXB4IDE3cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpLCBpbnNldCAwIC01cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xyXG5cdGNvbG9yOiByZ2JhKDAsIDAsIDAsIC44KTtcclxuXHRAaW5jbHVkZSBmb250LXNpemUoMC43NSk7XHJcblx0bGluZS1oZWlnaHQ6IDE7XHJcblx0cGFkZGluZzogLjZlbSAxZW0gLjRlbTtcclxuXHR0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XHJcbn1cclxuXHJcbmJ1dHRvbjpob3ZlcixcclxuaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpob3ZlcixcclxuaW5wdXRbdHlwZT1cInJlc2V0XCJdOmhvdmVyLFxyXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdOmhvdmVyIHtcclxuXHRib3JkZXItY29sb3I6ICRjb2xvcl9fYm9yZGVyLWJ1dHRvbi1ob3ZlcjtcclxuXHRib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSwgaW5zZXQgMCAxNXB4IDE3cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpLCBpbnNldCAwIC01cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMDIpO1xyXG59XHJcblxyXG5idXR0b246Zm9jdXMsXHJcbmlucHV0W3R5cGU9XCJidXR0b25cIl06Zm9jdXMsXHJcbmlucHV0W3R5cGU9XCJyZXNldFwiXTpmb2N1cyxcclxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTpmb2N1cyxcclxuYnV0dG9uOmFjdGl2ZSxcclxuaW5wdXRbdHlwZT1cImJ1dHRvblwiXTphY3RpdmUsXHJcbmlucHV0W3R5cGU9XCJyZXNldFwiXTphY3RpdmUsXHJcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl06YWN0aXZlIHtcclxuXHRib3JkZXItY29sb3I6ICRjb2xvcl9fYm9yZGVyLWJ1dHRvbi1mb2N1cztcclxuXHRib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSksIGluc2V0IDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG59IiwiaW5wdXRbdHlwZT1cInRleHRcIl0sXHJcbmlucHV0W3R5cGU9XCJlbWFpbFwiXSxcclxuaW5wdXRbdHlwZT1cInVybFwiXSxcclxuaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxyXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxyXG50ZXh0YXJlYSB7XHJcblx0Y29sb3I6ICRjb2xvcl9fdGV4dC1pbnB1dDtcclxuXHRib3JkZXI6IDFweCBzb2xpZCAkY29sb3JfX2JvcmRlci1pbnB1dDtcclxuXHRib3JkZXItcmFkaXVzOiAzcHg7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9XCJ0ZXh0XCJdOmZvY3VzLFxyXG5pbnB1dFt0eXBlPVwiZW1haWxcIl06Zm9jdXMsXHJcbmlucHV0W3R5cGU9XCJ1cmxcIl06Zm9jdXMsXHJcbmlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTpmb2N1cyxcclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpmb2N1cyxcclxudGV4dGFyZWE6Zm9jdXMge1xyXG5cdGNvbG9yOiAkY29sb3JfX3RleHQtaW5wdXQtZm9jdXM7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxyXG5pbnB1dFt0eXBlPVwiZW1haWxcIl0sXHJcbmlucHV0W3R5cGU9XCJ1cmxcIl0sXHJcbmlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XHJcblx0cGFkZGluZzogM3B4O1xyXG59XHJcblxyXG50ZXh0YXJlYSB7XHJcblx0cGFkZGluZy1sZWZ0OiAzcHg7XHJcblx0d2lkdGg6IDEwMCU7XHJcbn0iLCJhIHtcclxuXHRjb2xvcjogJGNvbG9yX19saW5rO1xyXG5cclxuXHQmOnZpc2l0ZWQge1xyXG5cdFx0Y29sb3I6ICRjb2xvcl9fbGluay12aXNpdGVkO1xyXG5cdH1cclxuXHQmOmhvdmVyLFxyXG5cdCY6Zm9jdXMsXHJcblx0JjphY3RpdmUge1xyXG5cdFx0Y29sb3I6ICRjb2xvcl9fbGluay1ob3ZlcjtcclxuXHR9XHJcblx0Jjpmb2N1cyB7XHJcblx0XHRvdXRsaW5lOiB0aGluIGRvdHRlZDtcclxuXHR9XHJcblx0Jjpob3ZlcixcclxuXHQmOmFjdGl2ZSB7XHJcblx0XHRvdXRsaW5lOiAwO1xyXG5cdH1cclxufSIsIi5tYWluLW5hdmlnYXRpb24ge1xyXG4gICAgY2xlYXI6IGJvdGg7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHVsIHtcclxuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICBwYWRkaW5nLXRvcDogLjVlbTtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICB9XHJcbiAgICBsaSB7XHJcbiAgICAgICAgcGFkZGluZzogLjI1ZW0gMDtcclxuICAgICAgICBtYXJnaW46IDAgMWVtO1xyXG4gICAgICAgIGZsb2F0OiBub25lO1xyXG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkY29sb3JfX2JvcmRlci10YWJsZTtcclxuICAgIH1cclxuICAgIGxpOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sb3JfX2JvcmRlci10YWJsZTsgICAgIFxyXG4gICAgfVxyXG4gICAgYSB7XHJcbiAgICAgICAgY29sb3I6ICRjb2xvcl9fdGV4dC1zY3JlZW47XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxZW07XHJcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgfVxyXG4gICAgYTpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6ICRjb2xvcl9fbGluay1ob3ZlcjtcclxuICAgIH1cclxufVxyXG4ubmF2LW1lbnUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLyogU21hbGwgbWVudS4gKi9cclxuLm1lbnUtdG9nZ2xlIHtcclxuICAgIGNvbG9yOiAkY29sb3JfX3RleHQtaGVhZGluZztcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgcGFkZGluZzogLjVlbSAxZW07XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG59XHJcbi5tZW51LXRvZ2dsZSxcclxuLm1lbnUtdG9nZ2xlOmhvdmVyLFxyXG4ubWVudS10b2dnbGU6Zm9jdXMsXHJcbi5tZW51LXRvZ2dsZTphY3RpdmUge1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG4ubWVudS10b2dnbGUsXHJcbi5tYWluLW5hdmlnYXRpb24udG9nZ2xlZCAubmF2LW1lbnUge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbkBpbmNsdWRlIHN1c3ktbWVkaWEoNzIwcHgpIHtcclxuICAgIC5tZW51LXRvZ2dsZSB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICAgIC5tZW51LXZlbnVlLW1lbnUtY29udGFpbmVyIHtcclxuICAgICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIGxlZnQ6IC01MCU7XHJcbiAgICB9XHJcbiAgICAubmF2LW1lbnUge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICB9XHJcbiAgICAubWFpbi1uYXZpZ2F0aW9uIHtcclxuICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgIG1hcmdpbjogMHB4O1xyXG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGk6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XHJcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgLjVlbTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIHN1c3ktbWVkaWEoODcwcHgpIHtcclxuICAgIC5tYWluLW5hdmlnYXRpb24ge1xyXG4gICAgICAgIGEge1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAwIDFlbTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIHN1c3ktbWVkaWEoMTAwMHB4KSB7XHJcbiAgICAubWFpbi1uYXZpZ2F0aW9uIHtcclxuICAgICAgICBhIHtcclxuICAgICAgICAgICAgcGFkZGluZzogMCAxLjVlbTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi5zaXRlLW1haW4gLmNvbW1lbnQtbmF2aWdhdGlvbixcclxuLnNpdGUtbWFpbiAucG9zdHMtbmF2aWdhdGlvbixcclxuLnNpdGUtbWFpbiAucG9zdC1uYXZpZ2F0aW9uIHtcclxuXHRtYXJnaW46IDAgMCAxLjVlbTtcclxuXHRvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4uY29tbWVudC1uYXZpZ2F0aW9uIC5uYXYtcHJldmlvdXMsXHJcbi5wb3N0cy1uYXZpZ2F0aW9uIC5uYXYtcHJldmlvdXMsXHJcbi5wb3N0LW5hdmlnYXRpb24gLm5hdi1wcmV2aW91cyB7XHJcblx0ZmxvYXQ6IGxlZnQ7XHJcblx0d2lkdGg6IDUwJTtcclxufVxyXG5cclxuLmNvbW1lbnQtbmF2aWdhdGlvbiAubmF2LW5leHQsXHJcbi5wb3N0cy1uYXZpZ2F0aW9uIC5uYXYtbmV4dCxcclxuLnBvc3QtbmF2aWdhdGlvbiAubmF2LW5leHQge1xyXG5cdGZsb2F0OiByaWdodDtcclxuXHR0ZXh0LWFsaWduOiByaWdodDtcclxuXHR3aWR0aDogNTAlO1xyXG59XHJcbiIsIi8qIFRleHQgbWVhbnQgb25seSBmb3Igc2NyZWVuIHJlYWRlcnMuICovXG4uc2NyZWVuLXJlYWRlci10ZXh0IHtcblx0Y2xpcDogcmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO1xuXHRwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcblx0aGVpZ2h0OiAxcHg7XG5cdHdpZHRoOiAxcHg7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cblx0Jjpob3Zlcixcblx0JjphY3RpdmUsXG5cdCY6Zm9jdXMge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvcl9fYmFja2dyb3VuZC1zY3JlZW47XG5cdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdGJveC1zaGFkb3c6IDAgMCAycHggMnB4IHJnYmEoMCwgMCwgMCwgMC42KTtcblx0XHRjbGlwOiBhdXRvICFpbXBvcnRhbnQ7XG5cdFx0Y29sb3I6ICRjb2xvcl9fdGV4dC1zY3JlZW47XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0QGluY2x1ZGUgZm9udC1zaXplKDAuODc1KTtcblx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0bGVmdDogNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiBub3JtYWw7XG5cdFx0cGFkZGluZzogMTVweCAyM3B4IDE0cHg7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdHRvcDogNXB4O1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdHotaW5kZXg6IDEwMDAwMDsgLyogQWJvdmUgV1AgdG9vbGJhci4gKi9cblx0fVxufSIsIi5hbGlnbmxlZnQge1xuXHRkaXNwbGF5OiBpbmxpbmU7XG5cdGZsb2F0OiBsZWZ0O1xuXHRtYXJnaW4tcmlnaHQ6IDEuNWVtO1xufVxuXG4uYWxpZ25yaWdodCB7XG5cdGRpc3BsYXk6IGlubGluZTtcblx0ZmxvYXQ6IHJpZ2h0O1xuXHRtYXJnaW4tbGVmdDogMS41ZW07XG59XG5cbi5hbGlnbmNlbnRlciB7XG5cdEBpbmNsdWRlIGNlbnRlci1ibG9jaztcbn0iLCIuY2xlYXI6YmVmb3JlLFxuLmNsZWFyOmFmdGVyLFxuLmVudHJ5LWNvbnRlbnQ6YmVmb3JlLFxuLmVudHJ5LWNvbnRlbnQ6YWZ0ZXIsXG4uY29tbWVudC1jb250ZW50OmJlZm9yZSxcbi5jb21tZW50LWNvbnRlbnQ6YWZ0ZXIsXG4uc2l0ZS1oZWFkZXI6YmVmb3JlLFxuLnNpdGUtaGVhZGVyOmFmdGVyLFxuLnNpdGUtY29udGVudDpiZWZvcmUsXG4uc2l0ZS1jb250ZW50OmFmdGVyLFxuLnNpdGUtZm9vdGVyOmJlZm9yZSxcbi5zaXRlLWZvb3RlcjphZnRlciB7XG5cdEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4uY2xlYXI6YWZ0ZXIsXG4uZW50cnktY29udGVudDphZnRlcixcbi5jb21tZW50LWNvbnRlbnQ6YWZ0ZXIsXG4uc2l0ZS1oZWFkZXI6YWZ0ZXIsXG4uc2l0ZS1jb250ZW50OmFmdGVyLFxuLnNpdGUtZm9vdGVyOmFmdGVyIHtcblx0QGluY2x1ZGUgY2xlYXJmaXgtYWZ0ZXI7XG59IiwiLndpZGdldCB7XHJcblx0bWFyZ2luOiAwIDAgMS41ZW07XHJcblxyXG5cdC8qIE1ha2Ugc3VyZSBzZWxlY3QgZWxlbWVudHMgZml0IGluIHdpZGdldHMuICovXHJcblx0c2VsZWN0IHtcclxuXHRcdG1heC13aWR0aDogMTAwJTtcclxuXHR9XHJcbn1cclxuXHJcbi8qIFNlYXJjaCB3aWRnZXQuICovXHJcbi53aWRnZXRfc2VhcmNoIC5zZWFyY2gtc3VibWl0IHtcclxuXHRkaXNwbGF5OiBub25lO1xyXG59IiwiLnN0aWNreSB7XHJcblx0ZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi5oZW50cnkge1xyXG5cdG1hcmdpbjogMCAwIDEuNWVtO1xyXG59XHJcblxyXG4uYnlsaW5lLFxyXG4udXBkYXRlZDpub3QoLnB1Ymxpc2hlZCl7XHJcblx0ZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLnNpbmdsZSAuYnlsaW5lLFxyXG4uZ3JvdXAtYmxvZyAuYnlsaW5lIHtcclxuXHRkaXNwbGF5OiBpbmxpbmU7XHJcbn1cclxuXHJcbi5wYWdlLWNvbnRlbnQsXHJcbi5lbnRyeS1jb250ZW50LFxyXG4uZW50cnktc3VtbWFyeSB7XHJcblx0bWFyZ2luOiAxLjVlbSAwIDA7XHJcbn1cclxuXHJcbi5wYWdlLWxpbmtzIHtcclxuXHRjbGVhcjogYm90aDtcclxuXHRtYXJnaW46IDAgMCAxLjVlbTtcclxufSIsIi5ibG9nIC5mb3JtYXQtYXNpZGUgLmVudHJ5LXRpdGxlLFxyXG4uYXJjaGl2ZSAuZm9ybWF0LWFzaWRlIC5lbnRyeS10aXRsZSB7XHJcblx0ZGlzcGxheTogbm9uZTtcclxufSIsIi5jb21tZW50LWNvbnRlbnQgYSB7XHJcblx0d29yZC13cmFwOiBicmVhay13b3JkO1xyXG59XHJcbi5ieXBvc3RhdXRob3Ige1xyXG5cdGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcbiIsIi5zaXRlLWhlYWRlciB7XHJcbiAgICBwYWRkaW5nOiAuNWVtIDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyX19tYWpvcjtcclxufVxyXG4uc2l0ZS1icmFuZGluZyB7XHJcbn1cclxuLmhlYWRlci1sb2dvIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgd2lkdGg6IDcwJTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG59XHJcblxyXG5AaW5jbHVkZSBzdXN5LW1lZGlhKCRicmVha19fc21hbGwpIHtcclxuICAgIC5oZWFkZXItbG9nbyB7XHJcbiAgICAgICAgd2lkdGg6IDU1JTtcclxuICAgIH1cclxufVxyXG5cclxuQGluY2x1ZGUgc3VzeS1tZWRpYSgkYnJlYWtfX3NtYWxsLXBsdXMpIHtcclxuICAgIC5oZWFkZXItbG9nbyB7XHJcbiAgICAgICAgd2lkdGg6IDQwJTtcclxuICAgIH1cclxufVxyXG5cclxuQGluY2x1ZGUgc3VzeS1tZWRpYSgkYnJlYWtfX21lZGl1bSkge1xyXG4gICAgLmhlYWRlci1sb2dvIHtcclxuICAgICAgICB3aWR0aDogMzAlO1xyXG4gICAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBzdXN5LW1lZGlhKCRicmVha19fbGFyZ2UpIHtcclxuICAgIC5oZWFkZXItbG9nbyB7XHJcbiAgICAgICAgd2lkdGg6IDI1JTtcclxuICAgIH1cclxufVxyXG4iLCIkYm9yZGVyX19tYWpvcjogNnB4IHNvbGlkICRjb2xvcl9fYm9yZGVyLXRhYmxlOyIsImFydGljbGUuYmFycyB7XHJcbiAgICAuZW50cnktaGVhZGVyIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gICAgLmVudHJ5LWNvbnRlbnQge1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcbn1cclxuLmJhciB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcl9fYmFja2dyb3VuZC1zY3JlZW47XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcl9fbWFqb3I7XHJcbn1cclxuLmJhci1zdG9yeSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHBhZGRpbmc6IDFlbSAxZW0gMDtcclxuICAgIGNvbG9yOiAkY29sb3JfX3RleHQtaW52ZXJ0ZWQ7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcbi5iYXItbG9nbyB7XHJcbiAgICB3aWR0aDogMjAlO1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxufVxyXG4uYmFyLWJhc2VtZW50IC5iYXItbG9nbyB7XHJcbiAgICB3aWR0aDogMzAlO1xyXG59XHJcbi5iYXItc3Rhci1iYXIgLmJhci1sb2dvIHtcclxuICAgIHdpZHRoOiA3MCU7XHJcbn1cclxuLmJhci1mYWdhbnMgLmJhci1sb2dvIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbn1cclxuLmJhci1iYXJiYXJlbGxhcyAuYmFyLWxvZ28ge1xyXG4gICAgd2lkdGg6IDUwJTtcclxufVxyXG4uYmFyLWltYWdlIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaW1nIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxufVxyXG5cclxuQGluY2x1ZGUgc3VzeS1tZWRpYSgkYnJlYWtfX3NtYWxsLXBsdXMpIHtcclxuICAgIC5iYXItc3RvcnksIC5iYXItaW1hZ2Uge1xyXG4gICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICB9XHJcbiAgICAuYmFyLXN0b3J5IHAge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS45dnc7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgIH1cclxuICAgIC5iYXItaW1hZ2U6bnRoLWNoaWxkKDMpIHtcclxuICAgICAgICBjbGVhcjogbGVmdDtcclxuICAgIH1cclxufVxyXG4iLCJhcnRpY2xlLmV2ZW50cyB7XHJcbiAgICBAaW5jbHVkZSB0ZXh0LWFydGljbGU7XHJcbiAgICAuZW50cnktaGVhZGVyIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gICAgLm5nZy1nYWxsZXJ5LXRodW1ibmFpbCB7XHJcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgICAgICAtbW96LWJvcmRlci1pbWFnZTogdXJsKGltYWdlcy9ldmVudHMtZnJhbWUucG5nKSA0MiByb3VuZDtcclxuICAgICAgICAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKGltYWdlcy9ldmVudHMtZnJhbWUucG5nKSA0MiByb3VuZDtcclxuICAgICAgICAtby1ib3JkZXItaW1hZ2U6IHVybChpbWFnZXMvZXZlbnRzLWZyYW1lLnBuZykgNDIgcm91bmQ7XHJcbiAgICAgICAgYm9yZGVyLWltYWdlOiB1cmwoaW1hZ2VzL2V2ZW50cy1mcmFtZS5wbmcpIDQyIHJvdW5kO1xyXG4gICAgICAgIGJvcmRlci13aWR0aDogMjhweDtcclxuICAgIH1cclxufVxyXG4uZXZlbnRzLWxvZ28ge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVlbTtcclxuICAgIEBpbmNsdWRlIHByZSgyIG9mIDEyKTtcclxuICAgIEBpbmNsdWRlIHNwYW4oOCBvZiAxMik7XHJcbn1cclxuXHJcbkBpbmNsdWRlIHN1c3ktbWVkaWEoJGJyZWFrX19zbWFsbC1wbHVzKSB7XHJcbiAgICAuZXZlbnRzLWxvZ28ge1xyXG4gICAgICAgIEBpbmNsdWRlIHByZSgzIG9mIDEyKTtcclxuICAgICAgICBAaW5jbHVkZSBzcGFuKDYgb2YgMTIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBzdXN5LW1lZGlhKCRicmVha19fbWVkaXVtKSB7XHJcbiAgICAuZXZlbnRzLWxvZ28ge1xyXG4gICAgICAgIEBpbmNsdWRlIHByZSg0IG9mIDEyKTtcclxuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgb2YgMTIpO1xyXG4gICAgfVxyXG59XHJcbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICRwcmUsICRwb3N0O1xuICAkcHJlICAgICAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcXVpc2gsICRpbnNwZWN0Li4uKTtcbiAgQGluY2x1ZGUgcHJlKCRwcmUpO1xuICBAaW5jbHVkZSBwb3N0KCRwb3N0KTtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsImFydGljbGUudmlwLWJpcnRoZGF5cyB7XHJcbiAgICBAaW5jbHVkZSB0ZXh0LWFydGljbGU7XHJcbiAgICAuZW50cnktaGVhZGVyIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG59XHJcbi52aXAtYmlydGhkYXlzLWxvZ28ge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMS41ZW07XHJcbiAgICBAaW5jbHVkZSBwcmUoMyBvZiAxMik7XHJcbiAgICBAaW5jbHVkZSBzcGFuKDYgb2YgMTIpO1xyXG59XHJcbi52aXAtYmlydGhkYXlzLXBvc3RlciB7XHJcbiAgICBwYWRkaW5nOiAwIGd1dHRlcigpIGd1dHRlcigpO1xyXG59XHJcbkBpbmNsdWRlIHN1c3ktbWVkaWEoJGJyZWFrX19zbWFsbCkge1xyXG4gICAgLnZpcC1iaXJ0aGRheXMtcG9zdGVyIHtcclxuICAgICAgICBAaW5jbHVkZSBwcmUoMSBvZiAxMik7XHJcbiAgICAgICAgQGluY2x1ZGUgc3BhbigxMCBvZiAxMik7XHJcbiAgICB9XHJcbn1cclxuQGluY2x1ZGUgc3VzeS1tZWRpYSgkYnJlYWtfX3NtYWxsLXBsdXMpIHtcclxuICAgIC52aXAtYmlydGhkYXlzLWxvZ28ge1xyXG4gICAgICAgIEBpbmNsdWRlIHByZSg0IG9mIDEyKTtcclxuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgb2YgMTIpO1xyXG4gICAgfVxyXG4gICAgLnZpcC1iaXJ0aGRheXMtcG9zdGVyIHtcclxuICAgICAgICBAaW5jbHVkZSBwcmUoMiBvZiAxMik7XHJcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig4IG9mIDEyKTtcclxuICAgIH1cclxufVxyXG5AaW5jbHVkZSBzdXN5LW1lZGlhKCRicmVha19fbWVkaXVtKSB7XHJcbiAgICAudmlwLWJpcnRoZGF5cy1sb2dvIHtcclxuICAgICAgICBAaW5jbHVkZSBwcmUoNC41IG9mIDEyKTtcclxuICAgICAgICBAaW5jbHVkZSBzcGFuKDMgb2YgMTIpO1xyXG4gICAgfVxyXG4gICAgLnZpcC1iaXJ0aGRheXMtcG9zdGVyIHtcclxuICAgICAgICBAaW5jbHVkZSBwcmUoMyBvZiAxMik7XHJcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig2IG9mIDEyKTtcclxuICAgIH1cclxufVxyXG4iLCJhcnRpY2xlLnBob3RvcyB7XHJcbiAgICBAaW5jbHVkZSB0ZXh0LWFydGljbGU7XHJcbiAgICAuZW50cnktaGVhZGVyIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG59XHJcbi5waG90b3MtbG9nbyB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVlbTtcclxuICAgIEBpbmNsdWRlIHByZSgyIG9mIDEyKTtcclxuICAgIEBpbmNsdWRlIHNwYW4oOCBvZiAxMik7XHJcbn1cclxuQGluY2x1ZGUgc3VzeS1tZWRpYSgkYnJlYWtfX3NtYWxsLXBsdXMpIHtcclxuICAgIC5waG90b3MtbG9nbyB7XHJcbiAgICAgICAgQGluY2x1ZGUgcHJlKDMgb2YgMTIpO1xyXG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNiBvZiAxMik7XHJcbiAgICB9XHJcbn1cclxuQGluY2x1ZGUgc3VzeS1tZWRpYSgkYnJlYWtfX21lZGl1bSkge1xyXG4gICAgLnBob3Rvcy1sb2dvIHtcclxuICAgICAgICBAaW5jbHVkZSBwcmUoNCBvZiAxMik7XHJcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig0IG9mIDEyKTtcclxuICAgIH1cclxufVxyXG4iLCJhcnRpY2xlLm1lbWJlcnNoaXAge1xyXG4gICAgQGluY2x1ZGUgdGV4dC1hcnRpY2xlO1xyXG59XHJcbmRpdi5tZW1iZXJzaGlwIHtcclxuICAgIEBpbmNsdWRlIHRleHQtYmxvY2s7XHJcbn1cclxuQGluY2x1ZGUgc3VzeS1tZWRpYSgkYnJlYWtfX21lZGl1bSkge1xyXG4gICAgZGl2Lm1lbWJlcnNoaXAge1xyXG4gICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNiBvZiAxMik7XHJcbiAgICB9XHJcbn0iLCJhcnRpY2xlLmluZm9ybWF0aW9uIHtcclxuICAgIEBpbmNsdWRlIHRleHQtYXJ0aWNsZTtcclxufVxyXG4uZmFxIHtcclxuICAgIEBpbmNsdWRlIHRleHQtYmxvY2s7XHJcbn1cclxuLmZhcS1mb290bm90ZSB7XHJcbiAgICBjbGVhcjogYm90aDtcclxufVxyXG5AaW5jbHVkZSBzdXN5LW1lZGlhKCRicmVha19fbWVkaXVtKSB7XHJcbiAgICAuZmFxIHtcclxuICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDYgb2YgMTIpO1xyXG4gICAgfVxyXG59XHJcbkBpbmNsdWRlIHN1c3ktbWVkaWEoJGJyZWFrX19sYXJnZSkge1xyXG4gICAgLmZhcSB7XHJcbiAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSg0IG9mIDEyKTtcclxuICAgIH1cclxufVxyXG4iLCJhcnRpY2xlLmNvbnRhY3Qge1xyXG4gICAgQGluY2x1ZGUgdGV4dC1hcnRpY2xlO1xyXG59XHJcbmRpdi5jb250YWN0IHtcclxuICAgIEBpbmNsdWRlIHRleHQtYmxvY2s7XHJcbn1cclxuLmNvbnRhY3Qtc2lnbiB7XHJcbiAgICB3aWR0aDogNTAlO1xyXG4gICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgcGFkZGluZy1sZWZ0OiBndXR0ZXIoKTtcclxuICAgIHBhZGRpbmctYm90dG9tOiBndXR0ZXIoKTtcclxufVxyXG5cclxuQGluY2x1ZGUgc3VzeS1tZWRpYSg0NTBweCl7XHJcbiAgICAuY29udGFjdC1hZGRyZXNzIHtcclxuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgb2YgMTIpO1xyXG4gICAgfVxyXG4gICAgLmNvbnRhY3QtdGVsZWNvbW1zIHtcclxuICAgICAgICBAaW5jbHVkZSBzcGFuKGxhc3QgOCBvZiAxMik7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIHN1c3ktbWVkaWEoNzAwcHgpIHtcclxuICAgIC5jb250YWN0LWNvbDEge1xyXG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNiBvZiAxMik7XHJcbiAgICB9XHJcbiAgICAuY29udGFjdC1hZGRyZXNzLCAuY29udGFjdC10ZWxlY29tbXMgIHtcclxuICAgICAgICBAaW5jbHVkZSBzcGFuKGZ1bGwpO1xyXG4gICAgICAgIGZsb2F0OiBub25lO1xyXG4gICAgfVxyXG4gICAgLmNvbnRhY3QtbWFwIHtcclxuICAgICAgICBAaW5jbHVkZSBzcGFuKGxhc3QgNiBvZiAxMik7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIHN1c3ktbWVkaWEoOTAwcHgpIHtcclxuICAgIC5jb250YWN0LWFkZHJlc3Mge1xyXG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNCBvZiAxMik7XHJcbiAgICB9XHJcbiAgICAuY29udGFjdC10ZWxlY29tbXMge1xyXG4gICAgICAgIEBpbmNsdWRlIHNwYW4obGFzdCA4IG9mIDEyKTtcclxuICAgIH1cclxufVxyXG4iLCIuc2l0ZS1mb290ZXIge1xyXG4gICAgZm9udC1zaXplOiAuOGVtO1xyXG4gICAgbWFyZ2luOiAwIDFlbSAxLjVlbTtcclxufVxyXG5cclxuQGluY2x1ZGUgc3VzeS1tZWRpYSgkYnJlYWtfX21lZGl1bSkge1xyXG4gICAgLnNpdGUtZm9vdGVyIHtcclxuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5kcmluay1yZXNwb25zaWJseSB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICBhIHtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB9XHJcbn0iLCIvKiBHbG9iYWxseSBoaWRkZW4gZWxlbWVudHMgd2hlbiBJbmZpbml0ZSBTY3JvbGwgaXMgc3VwcG9ydGVkIGFuZCBpbiB1c2UuICovXG4uaW5maW5pdGUtc2Nyb2xsIC5wb3N0cy1uYXZpZ2F0aW9uLCAvKiBPbGRlciAvIE5ld2VyIFBvc3RzIE5hdmlnYXRpb24gKGFsd2F5cyBoaWRkZW4pICovXG4uaW5maW5pdGUtc2Nyb2xsLm5ldmVyZW5kaW5nIC5zaXRlLWZvb3RlciB7IC8qIFRoZW1lIEZvb3RlciAod2hlbiBzZXQgdG8gc2Nyb2xsaW5nKSAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4vKiBXaGVuIEluZmluaXRlIFNjcm9sbCBoYXMgcmVhY2hlZCBpdHMgZW5kIHdlIG5lZWQgdG8gcmUtZGlzcGxheSBlbGVtZW50cyB0aGF0IHdlcmUgaGlkZGVuICh2aWEgLm5ldmVyZW5kaW5nKSBiZWZvcmUuICovXG4uaW5maW5pdHktZW5kLm5ldmVyZW5kaW5nIC5zaXRlLWZvb3RlciB7XG5cdGRpc3BsYXk6IGJsb2NrO1xufSIsIi5wYWdlLWNvbnRlbnQgLndwLXNtaWxleSxcclxuLmVudHJ5LWNvbnRlbnQgLndwLXNtaWxleSxcclxuLmNvbW1lbnQtY29udGVudCAud3Atc21pbGV5IHtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRtYXJnaW4tdG9wOiAwO1xyXG5cdHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbi8qIE1ha2Ugc3VyZSBlbWJlZHMgYW5kIGlmcmFtZXMgZml0IHRoZWlyIGNvbnRhaW5lcnMuICovXHJcbmVtYmVkLFxyXG5pZnJhbWUsXHJcbm9iamVjdCB7XHJcblx0bWF4LXdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbjEyLjEgQ2FwdGlvbnNcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5AaW1wb3J0IFwiY2FwdGlvbnNcIjtcclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuMTIuMiBHYWxsZXJpZXNcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5AaW1wb3J0IFwiZ2FsbGVyaWVzXCI7IiwiLndwLWNhcHRpb24ge1xyXG5cdG1hcmdpbi1ib3R0b206IDEuNWVtO1xyXG5cdG1heC13aWR0aDogMTAwJTtcclxuXHJcblx0aW1nW2NsYXNzKj1cIndwLWltYWdlLVwiXSB7XHJcblx0XHRAaW5jbHVkZSBjZW50ZXItYmxvY2s7XHJcblx0fVxyXG5cclxuXHQud3AtY2FwdGlvbi10ZXh0IHtcclxuXHRcdG1hcmdpbjogMC44MDc1ZW0gMDtcclxuXHR9XHJcbn1cclxuXHJcbi53cC1jYXB0aW9uLXRleHQge1xyXG5cdHRleHQtYWxpZ246IGNlbnRlcjtcclxufSIsIi5nYWxsZXJ5IHtcclxuXHRtYXJnaW4tYm90dG9tOiAxLjVlbTtcclxufVxyXG5cclxuLmdhbGxlcnktaXRlbSB7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uZ2FsbGVyeS1jb2x1bW5zLTIgLmdhbGxlcnktaXRlbSB7XHJcblx0bWF4LXdpZHRoOiA1MCU7XHJcbn1cclxuXHJcbi5nYWxsZXJ5LWNvbHVtbnMtMyAuZ2FsbGVyeS1pdGVtIHtcclxuXHRtYXgtd2lkdGg6IDMzLjMzJTtcclxufVxyXG5cclxuLmdhbGxlcnktY29sdW1ucy00IC5nYWxsZXJ5LWl0ZW0ge1xyXG5cdG1heC13aWR0aDogMjUlO1xyXG59XHJcblxyXG4uZ2FsbGVyeS1jb2x1bW5zLTUgLmdhbGxlcnktaXRlbSB7XHJcblx0bWF4LXdpZHRoOiAyMCU7XHJcbn1cclxuXHJcbi5nYWxsZXJ5LWNvbHVtbnMtNiAuZ2FsbGVyeS1pdGVtIHtcclxuXHRtYXgtd2lkdGg6IDE2LjY2JTtcclxufVxyXG5cclxuLmdhbGxlcnktY29sdW1ucy03IC5nYWxsZXJ5LWl0ZW0ge1xyXG5cdG1heC13aWR0aDogMTQuMjglO1xyXG59XHJcblxyXG4uZ2FsbGVyeS1jb2x1bW5zLTggLmdhbGxlcnktaXRlbSB7XHJcblx0bWF4LXdpZHRoOiAxMi41JTtcclxufVxyXG5cclxuLmdhbGxlcnktY29sdW1ucy05IC5nYWxsZXJ5LWl0ZW0ge1xyXG5cdG1heC13aWR0aDogMTEuMTElO1xyXG59XHJcblxyXG4uZ2FsbGVyeS1jYXB0aW9uIHtcclxuXHRkaXNwbGF5OiBibG9jaztcclxufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */