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

/*
    Variable: fontsize-root
    'px' font size on root (html) element (with units removed).  Browser default is 16px.  Used to determine sizes for rem function.

    -@ based on http://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/
    */
/*
    Mixin: rem (https://github.com/tobymackenzie/html-boilerplate/blob/master/web/_/styles/src/mixins/_units.scss)
    Output a property with pixel values for non 'rem' supporting browsers followed by the 'rem' equivalent for rem support browsers.  Can't currently accept values with comma separation, like multiple backgrounds or the like.

    -@ based on http://hugogiraudel.com/2013/03/18/ultimate-rem-mixin/
    */
/*
    Mixin: stripUnit
    Strip the unit from a value that has a unit

    -@ based on http://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/
    */
article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary {
  display: block; }

audio, canvas, video {
  display: inline-block; }

audio:not([controls]) {
  display: none;
  height: 0; }

[hidden], template {
  display: none; }

html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%; }

body {
  margin: 0; }

*, *:before, *:after {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box; }

a {
  background: transparent; }

a:focus {
  outline: thin dotted; }

a:active, a:hover {
  outline: 0; }

h1 {
  font-size: 2em;
  margin: 0.67em 0; }

abbr[title] {
  border-bottom: 1px dotted; }

b, strong {
  font-weight: bold; }

dfn {
  font-style: italic; }

hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  height: 0; }

mark {
  background: #ff0;
  color: #000; }

code, kbd, pre, samp {
  font-family: monospace, serif;
  font-size: 1em; }

pre {
  white-space: pre-wrap; }

q {
  quotes: "\201C" "\201D" "\2018" "\2019"; }

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, iframe, video {
  max-width: 100%; }

img {
  height: auto;
  border: 0;
  vertical-align: middle; }

svg:not(:root) {
  overflow: hidden; }

figure {
  margin: 0; }

fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

legend {
  border: 0;
  padding: 0; }

button, input, select, textarea {
  font-family: inherit;
  font-size: 100%;
  margin: 0; }

button, input {
  line-height: normal; }

button, select {
  text-transform: none; }

button, html input[type="button"], input[type="reset"], input[type="submit"] {
  border: 0;
  -webkit-appearance: button;
  cursor: pointer; }

button[disabled], html input[disabled] {
  cursor: default; }

input[type="checkbox"], input[type="radio"] {
  box-sizing: border-box;
  padding: 0; }

input[type="search"] {
  -webkit-appearance: textfield; }

input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

button::-moz-focus-inner, input::-moz-focus-inner {
  border: 0;
  padding: 0; }

textarea {
  overflow: auto;
  vertical-align: top; }

textarea, input {
  outline: none; }

table {
  border-collapse: collapse;
  border-spacing: 0; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans_gdi.eot');
  src: url('webfonts/OpenSans_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans_gdi.woff') format('woff'), url('webfonts/OpenSans_gdi.ttf') format('truetype'), url('webfonts/OpenSans_gdi.svg#OpenSans-Regular') format('svg');
  font-weight: 400;
  font-style: normal;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-Italic_gdi.eot');
  src: url('webfonts/OpenSans-Italic_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-Italic_gdi.woff') format('woff'), url('webfonts/OpenSans-Italic_gdi.ttf') format('truetype'), url('webfonts/OpenSans-Italic_gdi.svg#OpenSans-Italic') format('svg');
  font-weight: 400;
  font-style: italic;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-Light_gdi.eot');
  src: url('webfonts/OpenSans-Light_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-Light_gdi.woff') format('woff'), url('webfonts/OpenSans-Light_gdi.ttf') format('truetype'), url('webfonts/OpenSans-Light_gdi.svg#OpenSans-Light') format('svg');
  font-weight: 300;
  font-style: normal;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSansLight-Italic_gdi.eot');
  src: url('webfonts/OpenSansLight-Italic_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSansLight-Italic_gdi.woff') format('woff'), url('webfonts/OpenSansLight-Italic_gdi.ttf') format('truetype'), url('webfonts/OpenSansLight-Italic_gdi.svg#OpenSansLight-Italic') format('svg');
  font-weight: 300;
  font-style: italic;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-Semibold_gdi.eot');
  src: url('webfonts/OpenSans-Semibold_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-Semibold_gdi.woff') format('woff'), url('webfonts/OpenSans-Semibold_gdi.ttf') format('truetype'), url('webfonts/OpenSans-Semibold_gdi.svg#OpenSans-Semibold') format('svg');
  font-weight: 600;
  font-style: normal;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-SemiboldItalic_gdi.eot');
  src: url('webfonts/OpenSans-SemiboldItalic_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-SemiboldItalic_gdi.woff') format('woff'), url('webfonts/OpenSans-SemiboldItalic_gdi.ttf') format('truetype'), url('webfonts/OpenSans-SemiboldItalic_gdi.svg#OpenSans-SemiboldItalic') format('svg');
  font-weight: 600;
  font-style: italic;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

html, body {
  font-family: 'Open Sans', sans-serif;
  color: #333333;
  font-weight: 400;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden; }

h1, h2, h3, h4, h5, h6 {
  font-weight: 400; }

h1, .h1 {
  text-align: center;
  font-size: 36px; }

h2 {
  font-size: 22px; }

a {
  text-decoration: none;
  color: #cc0000; }
  a:hover {
    text-decoration: underline; }

dt {
  font-weight: 400; }

blockquote {
  border-left: 5px solid #666666;
  padding: 20px;
  background: #ffffff; }
  blockquote p:first-child {
    margin-top: 0; }

@font-face {
  font-family: 'icomoon';
  src: url('fonts/icomoon.eot?n0wbn8');
  src: url('fonts/icomoon.eot?#iefixn0wbn8') format('embedded-opentype'), url('fonts/icomoon.woff?n0wbn8') format('woff'), url('fonts/icomoon.ttf?n0wbn8') format('truetype'), url('fonts/icomoon.svg?n0wbn8#icomoon') format('svg');
  font-weight: normal;
  font-style: normal; }

[class^="icon-"], [class*=" icon-"] {
  font-family: 'icomoon';
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.icon-legal:before {
  content: "\e900"; }

.icon-services:before {
  content: "\e901"; }

.icon-content-copy:before {
  content: "\e61a"; }

.icon-pencil:before {
  content: "\e617"; }

.icon-stack:before {
  content: "\e61b"; }

.icon-user:before {
  content: "\e605"; }

.icon-spinner:before {
  content: "\e606"; }

.icon-search:before {
  content: "\e616"; }

.icon-cog:before {
  content: "\e607"; }

.icon-leaf:before {
  content: "\e608"; }

.icon-switch:before {
  content: "\e609"; }

.icon-menu:before {
  content: "\e60a"; }

.icon-globe:before {
  content: "\e60b"; }

.icon-earth:before {
  content: "\e60c"; }

.icon-info:before {
  content: "\e60d"; }

.icon-cancel-circle:before {
  content: "\e60e"; }

.icon-checkmark-circle:before {
  content: "\e60f"; }

.icon-spam:before {
  content: "\e610"; }

.icon-close:before {
  content: "\e611"; }

.icon-checkmark:before {
  content: "\e612"; }

.icon-minus:before {
  content: "\e613"; }

.icon-plus:before {
  content: "\e614"; }

.icon-share:before {
  content: "\e615"; }

.icon-facebook:before {
  content: "\e601"; }

.icon-instagram:before {
  content: "\e602"; }

.icon-twitter:before {
  content: "\e603"; }

.icon-youtube:before {
  content: "\e604"; }

.icon-file-pdf:before {
  content: "\e61c"; }

.icon-file-word:before {
  content: "\e61d"; }

.icon-file-excel:before {
  content: "\e61e"; }

.icon-file-powerpoint:before {
  content: "\e61f"; }

.icon-chevron-right:before {
  content: "\e618"; }

.icon-chevron-left:before {
  content: "\e619"; }

.icon-linkedin:before {
  content: "\e600"; }

.styleguide {
  /*

	Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/

	*/ }
  .styleguide h1 {
    text-align: left; }
  .styleguide .color-swatches {
    margin: 0;
    padding: 0;
    color: #fff;
    list-style: none;
    display: -webkit-box;
    display: -moz-box;
    display: box;
    display: -webkit-flex;
    display: -moz-flex;
    display: -ms-flexbox;
    display: flex; }
    .styleguide .color-swatches li {
      padding: 2em 0;
      width: 6em;
      margin: 5px;
      text-align: center; }
    .styleguide .color-swatches .invert {
      color: #000; }
    .styleguide .color-swatches .border {
      border: 1px solid #c3c3c3; }
    .styleguide .color-swatches .c-cc0000 {
      background: #cc0000; }
    .styleguide .color-swatches .c-000000 {
      background: #000000; }
    .styleguide .color-swatches .c-ffffff {
      background: #ffffff; }
    .styleguide .color-swatches .c-f2f2f2 {
      background: #f2f2f2; }
    .styleguide .color-swatches .c-cccccc {
      background: #cccccc; }
    .styleguide .color-swatches .c-666666 {
      background: #666666; }
    .styleguide .color-swatches .c-333333 {
      background: #333333; }
    .styleguide .color-swatches .c-990000 {
      background: #990000; }
    .styleguide .color-swatches .c-d14905 {
      background: #d14905; }
    .styleguide .color-swatches .c-fdd726 {
      background: #fdd726; }
    .styleguide .color-swatches .c-7d8c1f {
      background: #7d8c1f; }
    .styleguide .color-swatches .c-427e93 {
      background: #427e93; }
    .styleguide .color-swatches .c-4156a1 {
      background: #4156a1; }
  .styleguide .toggle-code-block {
    display: inline-block;
    margin-bottom: 5px; }
  .styleguide code {
    height: 0;
    padding: 0 !important;
    background: #000;
    overflow: hidden;
    width: 100%; }
    .styleguide code.show {
      padding: 20px !important;
      height: auto;
      display: block;
      border-radius: 10px; }
  .styleguide .page-title {
    display: none; }
  .styleguide .component-title {
    color: #333333; }
  .styleguide .code-container {
    background: #cccccc;
    padding: 20px; }
  .styleguide .hljs {
    display: inline-block;
    padding: 0.5em;
    background: #23241f; }
  .styleguide .hljs, .styleguide .hljs-tag, .styleguide .css .hljs-rules, .styleguide .css .hljs-value, .styleguide .css .hljs-function .hljs-preprocessor, .styleguide .hljs-pragma {
    color: #f8f8f2; }
  .styleguide .hljs-strongemphasis, .styleguide .hljs-strong, .styleguide .hljs-emphasis {
    color: #a8a8a2; }
  .styleguide .hljs-bullet, .styleguide .hljs-blockquote, .styleguide .hljs-horizontal_rule, .styleguide .hljs-number, .styleguide .hljs-regexp, .styleguide .alias .hljs-keyword, .styleguide .hljs-literal, .styleguide .hljs-hexcolor {
    color: #ae81ff; }
  .styleguide .hljs-tag .hljs-value, .styleguide .hljs-code, .styleguide .hljs-title, .styleguide .css .hljs-class, .styleguide .hljs-class .hljs-title:last-child {
    color: #a6e22e; }
  .styleguide .hljs-link_url {
    font-size: 80%; }
  .styleguide .hljs-strong, .styleguide .hljs-strongemphasis {
    font-weight: bold; }
  .styleguide .hljs-emphasis, .styleguide .hljs-strongemphasis, .styleguide .hljs-class .hljs-title:last-child {
    font-style: italic; }
  .styleguide .hljs-keyword, .styleguide .hljs-function, .styleguide .hljs-change, .styleguide .hljs-winutils, .styleguide .hljs-flow, .styleguide .lisp .hljs-title, .styleguide .clojure .hljs-built_in, .styleguide .nginx .hljs-title, .styleguide .tex .hljs-special, .styleguide .hljs-header, .styleguide .hljs-attribute, .styleguide .hljs-symbol, .styleguide .hljs-symbol .hljs-string, .styleguide .hljs-tag .hljs-title, .styleguide .hljs-value, .styleguide .alias .hljs-keyword:first-child, .styleguide .css .hljs-tag, .styleguide .css .unit, .styleguide .css .hljs-important {
    color: #f92672; }
  .styleguide .hljs-function .hljs-keyword, .styleguide .hljs-class .hljs-keyword:first-child, .styleguide .hljs-constant, .styleguide .css .hljs-attribute {
    color: #66d9ef; }
  .styleguide .hljs-variable, .styleguide .hljs-params, .styleguide .hljs-class .hljs-title {
    color: #f8f8f2; }
  .styleguide .hljs-string, .styleguide .css .hljs-id, .styleguide .hljs-subst, .styleguide .haskell .hljs-type, .styleguide .ruby .hljs-class .hljs-parent, .styleguide .hljs-built_in, .styleguide .django .hljs-template_tag, .styleguide .django .hljs-variable, .styleguide .smalltalk .hljs-class, .styleguide .django .hljs-filter .hljs-argument, .styleguide .smalltalk .hljs-localvars, .styleguide .smalltalk .hljs-array, .styleguide .hljs-attr_selector, .styleguide .hljs-pseudo, .styleguide .hljs-addition, .styleguide .hljs-stream, .styleguide .hljs-envvar, .styleguide .apache .hljs-tag, .styleguide .apache .hljs-cbracket, .styleguide .tex .hljs-command, .styleguide .hljs-prompt, .styleguide .hljs-link_label, .styleguide .hljs-link_url {
    color: #e6db74; }
  .styleguide .hljs-comment, .styleguide .hljs-javadoc, .styleguide .java .hljs-annotation, .styleguide .python .hljs-decorator, .styleguide .hljs-template_comment, .styleguide .hljs-pi, .styleguide .hljs-doctype, .styleguide .hljs-deletion, .styleguide .hljs-shebang, .styleguide .apache .hljs-sqbracket, .styleguide .tex .hljs-formula {
    color: #75715e; }
  .styleguide .coffeescript .javascript, .styleguide .javascript .xml, .styleguide .tex .hljs-formula, .styleguide .xml .javascript, .styleguide .xml .vbscript, .styleguide .xml .css, .styleguide .xml .hljs-cdata, .styleguide .xml .php, .styleguide .php .xml {
    opacity: 0.5; }

body {
  -webkit-overflow-scrolling: touch;
  background: #f2f2f2; }

.header-container .wrapper, .content-container .wrapper, .footer-container .wrapper {
  max-width: 68em;
  margin-left: auto;
  margin-right: auto;
  padding: 0 10px; }
  .header-container .wrapper:after, .content-container .wrapper:after, .footer-container .wrapper:after {
    content: "";
    display: table;
    clear: both; }

.content-container {
  margin-bottom: 60px; }
  .content-container h1 {
    margin: 40px 0; }
    .content-container h1 sup {
      font-size: 18px;
      font-weight: 300;
      top: -0.9em; }
  .page-template-page-secondary-php .content-container {
    padding-top: 10px; }

.header-container {
  background: #fff;
  left: 0;
  right: 0;
  z-index: 300;
  -webkit-transition: all 0.2s linear;
  -moz-transition: all 0.2s linear;
  transition: all 0.2s linear; }
  .header-container .logo {
    float: left;
    font-size: 0;
    margin-top: 10px; }
    .header-container .logo a {
      display: inline-block; }
      .header-container .logo a img {
        -webkit-transition: all 0.2s linear;
        -moz-transition: all 0.2s linear;
        transition: all 0.2s linear;
        padding: 20px; }
      .header-container .logo a:first-child img {
        display: inline-block;
        padding-left: 0;
        border-right: 1px solid #000; }
  .header-container nav.primary {
    width: 55%;
    float: right;
    margin-right: 50px;
    margin-top: 30px;
    -webkit-transition: margin 0.2s linear;
    -moz-transition: margin 0.2s linear;
    transition: margin 0.2s linear; }
    .header-container nav.primary button {
      -webkit-transition: all 0.2s linear;
      -moz-transition: all 0.2s linear;
      transition: all 0.2s linear;
      display: none;
      background: #cc0000;
      height: 45px;
      width: 48px;
      top: 25px;
      right: 20px;
      overflow: hidden;
      position: absolute;
      cursor: pointer;
      outline: none;
      text-indent: -9999px; }
      .header-container nav.primary button:after {
        content: '';
        position: absolute;
        width: 68%;
        height: 5px;
        background: #ffffff;
        top: 10px;
        left: 16%;
        box-shadow: 0 10px 0 #ffffff, 0 20px 0 #ffffff; }
    @media screen and (max-width: 960px)  {
      .header-container nav.primary {
        position: fixed;
        width: 100%;
        top: 0;
        margin-top: 0;
        right: 0;
        z-index: 100; }
        .header-container nav.primary button {
          display: block; }
        .header-container nav.primary > ul {
          -webkit-transition: all 0.3s linear;
          -moz-transition: all 0.3s linear;
          transition: all 0.3s linear;
          background: #f2f2f2;
          overflow: hidden;
          max-height: 0;
          position: absolute;
          right: -50px;
          width: 100%;
          top: 100px;
          padding: 0;
          text-align: center; } }
  .header-container .share {
    position: absolute;
    right: 0;
    z-index: 500; }
  .header-container header {
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear;
    position: relative;
    overflow: hidden;
    height: 100px;
    padding: 0 10px; }
    .page-template-page-secondary-php .header-container header {
      height: 140px; }

body.headroom--unpinned .header-container {
  position: fixed; }
  body.headroom--unpinned .header-container header {
    height: 70px; }
    body.headroom--unpinned .header-container header .logo {
      margin-top: 10px; }
      body.headroom--unpinned .header-container header .logo img {
        padding-top: 5px;
        padding-bottom: 5px; }
  @media screen and (min-width: 960px) {
    body.headroom--unpinned .header-container nav.primary {
      margin-top: 15px; } }
  body.headroom--unpinned .header-container nav.primary > ul {
    top: 70px; }
    body.headroom--unpinned .header-container nav.primary > ul .sub-menu {
      top: 70px; }
  body.headroom--unpinned .header-container nav.primary button {
    top: 10px; }
body.headroom--unpinned.page-template-page-secondary-php .content-container {
  padding-top: 140px; }
body.headroom--unpinned.page-template-page-secondary-php .header-container header {
  height: 70px; }

.content-container {
  padding-top: 40px; }
  .headroom--unpinned .content-container {
    padding-top: 130px; }
  .content-container .sub-nav {
    position: fixed;
    left: 0;
    z-index: 301;
    color: #ffffff;
    padding: 13.5px 10px;
    top: 100px;
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear; }
    @media screen and (max-width: 960px)  {
      .content-container .sub-nav {
        display: none; } }
    .headroom--unpinned .content-container .sub-nav {
      top: 70px; }
    .content-container .sub-nav span {
      margin-right: 10px; }
  .content-container .alignleft {
    float: left;
    margin-right: 20px; }
  .content-container .lcp_paginator {
    background: #333333;
    color: #ffffff;
    display: inline-block;
    float: right;
    margin: 0;
    padding: 0; }
    .content-container .lcp_paginator li {
      border: none; }
      .content-container .lcp_paginator li span {
        display: inline-block;
        padding: 10px 20px; }
      .content-container .lcp_paginator li a {
        display: inline-block;
        padding: 10px 20px;
        color: #cccccc; }
        .content-container .lcp_paginator li a:hover {
          color: #ffffff; }
  .content-container .lcp_catlist {
    margin: 0;
    padding: 0; }

.footer-container {
  margin-top: 20px;
  background: #000000;
  color: #ffffff;
  padding-bottom: 50px; }
  .footer-container .credits {
    background: #cc0000; }
    .footer-container .credits ul {
      margin: 0;
      padding: 0;
      list-style: none; }
      .footer-container .credits ul li {
        padding: 30px 0;
        text-align: center; }
        @media screen and (min-width: 768px) {
          .footer-container .credits ul li {
            width: 27%;
            float: left;
            text-align: left;
            display: inline-block; }
            .footer-container .credits ul li:first-child {
              width: 46%; }
            .footer-container .credits ul li:last-child {
              padding: 27px 0;
              text-align: right; } }
  .footer-container a {
    color: #fff; }
  .footer-container footer {
    margin-top: 20px; }
    .footer-container footer h2 {
      font-size: 24px;
      font-weight: 400; }
    @media screen and (min-width: 960px) {
      .footer-container footer > div {
        float: left;
        width: 27%; }
        .footer-container footer > div:first-child {
          width: 46%;
          padding-right: 30px; } }
    @media screen and (min-width: 960px) {
      .footer-container footer .social-bar h2 {
        min-height: 70px; } }
    .footer-container footer .social-bar ul {
      display: inline-block;
      list-style: none;
      margin: 0;
      padding: 0; }
      .footer-container footer .social-bar ul li {
        display: inline-block;
        border: 1px solid #ffffff;
        border-right: none;
        float: left;
        width: 48px;
        height: 48px;
        position: relative; }
        .footer-container footer .social-bar ul li:last-child {
          border-right: 1px solid #ffffff; }
        .footer-container footer .social-bar ul li a {
          position: absolute;
          width: 100%;
          top: 0;
          bottom: 0;
          font-size: 1.5em;
          text-decoration: none; }
          .footer-container footer .social-bar ul li a span {
            position: absolute;
            top: 50%;
            left: 50%;
            -webkit-transform: translate(-50%, -50%);
            -moz-transform: translate(-50%, -50%);
            -ms-transform: translate(-50%, -50%);
            -o-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%); }

input[type="submit"], button, a.button {
  padding: 10px 20px;
  padding: 0.625rem 1.25rem;
  margin: 0 0 10px;
  margin: 0 0 0.625rem;
  background-color: #cc0000;
  color: white;
  -webkit-transition: all 300ms ease-in-out;
  -moz-transition: all 300ms ease-in-out;
  transition: all 300ms ease-in-out; }
  input[type="submit"]:hover, button:hover, a.button:hover {
    background-color: #990000; }

label {
  display: block; }

input[type="text"], input[type="email"] {
  background-color: #fff;
  border: 1px solid #cc0000;
  padding: 8px 10px;
  padding: 0.5rem 0.625rem;
  -webkit-transition: all 300 ease-in-out;
  -moz-transition: all 300 ease-in-out;
  transition: all 300 ease-in-out; }
input[type="checkbox"] + label, input[type="radio"] + label {
  display: inline-block;
  cursor: pointer;
  position: relative;
  padding-left: 25px;
  margin-right: 15px;
  font-size: 13px; }
  input[type="checkbox"] + label:before, input[type="radio"] + label:before {
    content: "";
    display: inline-block;
    width: 16px;
    height: 16px;
    margin-right: 10px;
    position: absolute;
    left: 0;
    bottom: 1px;
    background-color: #f2f2f2; }
input[type="checkbox"] + label:before {
  border: 1px solid #a5a5a5; }
input[type="radio"] + label:before {
  border-radius: 8px;
  border: 1px solid #a5a5a5; }
input[type="checkbox"], input[type="radio"] {
  display: none; }
input[type="radio"]:checked + label:before {
  background-color: #cc0000;
  color: #f3f3f3;
  font-size: 32px;
  text-align: center;
  line-height: 14px;
  border: 1px solid #660000; }
input[type="radio"]:checked + label:after {
  background-color: #fff;
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 4px;
  position: absolute;
  left: 4px;
  top: 5px; }
input[type="checkbox"]:checked + label:before {
  background-color: #cc0000;
  color: #f3f3f3;
  font-size: 32px;
  text-align: center;
  line-height: 14px;
  border: 1px solid #660000; }
input[type="checkbox"]:checked + label:after {
  content: "";
  display: inline-block;
  width: 7px;
  height: 12px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  transform: rotate(45deg);
  position: absolute;
  left: 5px;
  top: 1px;
  border-right: 3px solid #fff;
  border-bottom: 3px solid #fff; }
input[type="search"]::-ms-clear {
  display: none; }

textarea {
  background-color: #fff;
  border: 1px solid #cc0000;
  padding: 8px 10px;
  padding: 0.5rem 0.625rem;
  -webkit-transition: all 300 ease-in-out;
  -moz-transition: all 300 ease-in-out;
  transition: all 300 ease-in-out; }

nav.primary ul {
  margin: 0;
  padding: 0; }
nav.primary > ul > li.current-menu-item > a {
  font-weight: 700; }

.flex-container {
  margin: 0;
  padding: 0;
  list-style: none; }
  .flex-containerul {
    font-size: 0; }
  .flex-container li {
    display: inline-block;
    font-size: 14px; }
    @media screen and (min-width: 1088px) { }
    .flex-container li a {
      color: #333;
      text-decoration: none;
      float: left;
      padding: 0.5em; }
  .flex-container .sub-menu {
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear;
    display: none;
    position: fixed;
    top: 100px;
    left: 0;
    right: 0;
    list-style: none;
    background: #333333;
    font-size: 0; }
    .flex-container .sub-menu li {
      display: inline-block;
      text-align: left; }
      .flex-container .sub-menu li a {
        font-size: 14px;
        font-weight: 400;
        padding: 13.5px 20px;
        color: #ffffff;
        line-height: 24px; }
  .flex-container .current_page_item .sub-menu, .flex-container .current_page_ancestor .sub-menu {
    display: block;
    text-align: right; }
    @media screen and (max-width: 960px)  {
      .flex-container .current_page_item .sub-menu, .flex-container .current_page_ancestor .sub-menu {
        display: none; } }
  .flex-container .current-menu-item, .flex-container .current-menu-ancestor {
    font-weight: 600; }
    .flex-container .current-menu-item ul li, .flex-container .current-menu-ancestor ul li {
      font-weight: 300; }
      .flex-container .current-menu-item ul li.current-menu-item, .flex-container .current-menu-ancestor ul li.current-menu-item {
        font-weight: 400; }
  .styleguide .flex-container {
    background: #fff; }
  .flex-container.secondary li a {
    padding: 0.5em;
    line-height: 3em; }

.right {
  text-align: right; }

.no-scroll {
  overflow: hidden; }

.flyout-menu {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  overflow: hidden;
  background: rgba(0, 0, 0, 0);
  z-index: -1; }
  .flyout-menu.active {
    background: rgba(0, 0, 0, 0.5);
    z-index: 500; }
    .flyout-menu.active ul, .flyout-menu.active div {
      display: block; }
  .flyout-menu h3 {
    height: 70px;
    padding: 20px;
    margin: 0; }
  .flyout-menu h4 {
    margin: 0;
    padding: 10px 20px; }
  .flyout-menu ul, .flyout-menu div {
    display: none; }
  .flyout-menu [data-level] {
    display: block;
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    min-width: 300px;
    background: #f2f2f2;
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear;
    -webkit-transform: translateX(300px);
    -moz-transform: translateX(300px);
    -ms-transform: translateX(300px);
    -o-transform: translateX(300px);
    transform: translateX(300px);
    border-left: 3px solid #cc0000; }
    .flyout-menu [data-level].active {
      -webkit-transform: translateX(0px);
      -moz-transform: translateX(0px);
      -ms-transform: translateX(0px);
      -o-transform: translateX(0px);
      transform: translateX(0px);
      z-index: 501; }
  .flyout-menu[data-level-active="2"] [data-level="1"] {
    margin-right: 40px; }
    .flyout-menu[data-level-active="2"] [data-level="1"] > ul > .close-btn {
      background: rgba(0, 0, 0, 0.5);
      top: 0;
      right: 0;
      left: 0;
      bottom: 0;
      cursor: pointer; }
  .flyout-menu[data-level-active="2"] [data-level="2"] {
    -webkit-transform: translateX(40px);
    -moz-transform: translateX(40px);
    -ms-transform: translateX(40px);
    -o-transform: translateX(40px);
    transform: translateX(40px); }
  .flyout-menu[data-level-active="3"] [data-level="1"] {
    margin-right: 80px; }
  .flyout-menu[data-level-active="3"] [data-level="2"] {
    -webkit-transform: translateX(40px);
    -moz-transform: translateX(40px);
    -ms-transform: translateX(40px);
    -o-transform: translateX(40px);
    transform: translateX(40px); }
    .flyout-menu[data-level-active="3"] [data-level="2"] > ul > .close-btn {
      background: rgba(0, 0, 0, 0.5);
      top: 0;
      right: 0;
      left: 0;
      bottom: 0;
      cursor: pointer; }
  .flyout-menu[data-level-active="3"] [data-level="3"] {
    -webkit-transform: translateX(40px);
    -moz-transform: translateX(40px);
    -ms-transform: translateX(40px);
    -o-transform: translateX(40px);
    transform: translateX(40px); }
  .flyout-menu[data-level-active="3"] [data-level="1"] > ul > .close-btn {
    background: rgba(0, 0, 0, 0.5);
    top: 0;
    right: 0;
    left: 0;
    bottom: 0;
    cursor: pointer; }
  .flyout-menu nav ul {
    margin: 0;
    padding: 0;
    list-style: none; }
    .flyout-menu nav ul li {
      display: block;
      border-bottom: 1px solid #333; }
  .flyout-menu nav a {
    text-decoration: none;
    padding: 10px 20px;
    display: block;
    color: #000; }
    .flyout-menu nav a:hover {
      background: #a8a8a8; }
  .flyout-menu .close-btn {
    position: absolute;
    top: 20px;
    right: 10px;
    border: none; }
    .flyout-menu .close-btn button {
      position: relative;
      width: 25px;
      height: 25px;
      float: right;
      background: transparent; }
      .flyout-menu .close-btn button:before {
        content: '';
        position: absolute;
        width: 100%;
        top: 50%;
        height: 1px;
        left: 0;
        background: #000;
        -webkit-transform: rotate(45deg);
        -moz-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
        -o-transform: rotate(45deg);
        transform: rotate(45deg); }
      .flyout-menu .close-btn button:after {
        content: '';
        position: absolute;
        width: 100%;
        top: 50%;
        height: 1px;
        background: #000;
        left: 0;
        -webkit-transform: rotate(-45deg);
        -moz-transform: rotate(-45deg);
        -ms-transform: rotate(-45deg);
        -o-transform: rotate(-45deg);
        transform: rotate(-45deg); }
  .flyout-menu h4 {
    color: #fff;
    background: #cc0000; }

.share {
  -webkit-transition: all 0.2s ease-in-out;
  -moz-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  height: 100px;
  width: 50px;
  background: #333333;
  overflow: hidden; }
  .share ul {
    margin: 0;
    padding: 0;
    list-style: none;
    -webkit-transition: all 0.2s ease-in-out;
    -moz-transition: all 0.2s ease-in-out;
    transition: all 0.2s ease-in-out;
    -webkit-transform: translateY(-50px);
    -moz-transform: translateY(-50px);
    -ms-transform: translateY(-50px);
    -o-transform: translateY(-50px);
    transform: translateY(-50px); }
    .share ul li a {
      display: inline-block;
      width: 50px;
      height: 50px;
      text-indent: -9999px;
      white-space: nowrap; }
    .share ul li .toggle {
      background: #333333 url(../img/social-share.png) no-repeat center; }
    .share ul li .fb {
      background: #3b5998 url(../img/social-fb.png) no-repeat center; }
    .share ul li .twitter {
      background: #00aced url(../img/social-twitter.png) no-repeat center; }
  .headroom--not-top .share {
    height: 70px; }
    .headroom--not-top .share ul {
      width: 190px;
      -webkit-transform: translateY(0px);
      -moz-transform: translateY(0px);
      -ms-transform: translateY(0px);
      -o-transform: translateY(0px);
      transform: translateY(0px); }
      .headroom--not-top .share ul li {
        float: left; }
        .headroom--not-top .share ul li a {
          width: 70px;
          height: 70px; }
        .headroom--not-top .share ul li:first-child a {
          width: 50px; }
    .headroom--not-top .share:hover, .headroom--not-top .share:focus {
      width: 190px; }

body.home .content-container {
  padding-top: 0; }
body.home.headroom--unpinned .content-container {
  padding-top: 100px; }

.search-container {
  background: #cc0000;
  color: #ffffff;
  display: inline-block;
  width: 100%; }
  .search-container .search-zip {
    text-align: center; }
  .search-container h2 {
    display: inline-block;
    text-align: center;
    font-weight: 400;
    padding: 20px 0;
    margin: 20px 0;
    border-bottom: 1px solid #ffffff; }
    @media screen and (min-width: 960px) {
      .search-container h2 {
        padding-right: 40px;
        border: none;
        border-right: 1px solid #ffffff;
        text-align: right;
        width: 50%;
        float: left; } }
  .search-container form {
    font-size: 0;
    text-align: center; }
    @media screen and (min-width: 960px) {
      .search-container form {
        float: left;
        width: 50%;
        padding: 20px 0;
        text-align: left; } }
    .search-container form .input {
      position: relative;
      margin-bottom: 40px;
      display: inline-block;
      font-size: 18px; }
      @media screen and (min-width: 960px) {
        .search-container form .input {
          margin: 0;
          padding: 13px 0;
          margin-left: 40px; } }
      .search-container form .input label {
        padding: 10px 0;
        padding-right: 10px;
        float: left; }
      .search-container form .input input[type=text] {
        float: left;
        border: none;
        text-shadow: none;
        box-shadow: none;
        padding: 10px;
        padding-left: 30px;
        display: inline-block;
        max-width: 190px;
        text-align: center;
        background: #ffffff url(../img/search-globe-icon.png) no-repeat 10px center; }
      .search-container form .input input[type=submit] {
        float: left;
        background: #660000;
        color: #ffffff;
        padding: 10px;
        display: inline-block;
        min-width: 110px; }
      .search-container form .input .error {
        position: absolute;
        display: none;
        top: 40px;
        width: 100%;
        text-align: center; }
        .search-container form .input .error.active {
          display: block; }

#chart_div {
  min-height: 880px;
  overflow: hidden; }

#chart_div path {
  stroke: #fff; }
  #chart_div path:hover {
    stroke: #fdd726;
    fill: #fdd726;
    cursor: pointer; }

.tooltip {
  width: 200px; }
  .tooltip h3 {
    color: #cc0000;
    padding-bottom: 0;
    margin-bottom: 5px; }

.google-visualization-tooltip-item:first-child {
  display: none; }

.map-container {
  position: relative;
  overflow: hidden; }
  .map-container #chart_div {
    display: none; }
    @media screen and (min-width: 960px) {
      .map-container #chart_div {
        display: block;
        margin-left: 30px;
        margin-right: -30px; } }
  .map-container h2 {
    font-size: 32px;
    text-align: center;
    font-weight: 400;
    margin: 40px 0;
    margin-bottom: 0; }
  .map-container .cta-buttons {
    display: none;
    position: absolute;
    right: 50px;
    bottom: 60px; }
    @media screen and (min-width: 960px) {
      .map-container .cta-buttons {
        display: block; } }
    .map-container .cta-buttons ul {
      margin: 0;
      padding: 0 0 5px;
      list-style: none; }
      .map-container .cta-buttons ul:after {
        content: "";
        display: table;
        clear: both; }
      .map-container .cta-buttons ul li {
        display: inline-block;
        float: left;
        margin-left: 5px; }
        .map-container .cta-buttons ul li a {
          display: inline-block;
          vertical-align: middle;
          border: 1px solid #cccccc;
          padding: 5px 10px;
          background: #ffffff;
          color: #666666; }
          .map-container .cta-buttons ul li a .cta-icon {
            display: inline-block;
            text-align: center;
            vertical-align: middle;
            color: #ffffff;
            border-radius: 50%;
            background: #666666;
            font-weight: 700;
            width: 48px;
            height: 48px;
            line-height: 48px;
            font-size: 24px;
            margin-right: 5px; }
          .map-container .cta-buttons ul li a img {
            margin-right: 5px; }
          .map-container .cta-buttons ul li a span {
            display: inline-block;
            vertical-align: middle; }
          .map-container .cta-buttons ul li a [class^="icon-"], .map-container .cta-buttons ul li a [class*=" icon-"] {
            color: #cccccc;
            padding-left: 20px;
            line-height: 48px;
            vertical-align: middle; }
          .map-container .cta-buttons ul li a:hover {
            text-decoration: none;
            background: #f2f2f2; }
  .map-container .mobile-list {
    margin-top: 30px; }
    @media screen and (min-width: 960px) {
      .map-container .mobile-list {
        display: none; } }
    .map-container .mobile-list ul {
      margin: 0;
      padding: 0;
      list-style: none;
      max-width: 68em;
      margin-left: auto;
      margin-right: auto; }
      .map-container .mobile-list ul:after {
        content: "";
        display: table;
        clear: both; }
      .map-container .mobile-list ul li {
        background: #333333;
        color: #ffffff; }
        .map-container .mobile-list ul li.tablet-header, .map-container .mobile-list ul li:first-child {
          padding: 10px 20px; }
        .map-container .mobile-list ul li span:last-child {
          float: right;
          width: 40px;
          text-align: center; }
        .map-container .mobile-list ul li a {
          padding: 10px 20px;
          display: inline-block;
          width: 100%; }
          .map-container .mobile-list ul li a span:last-child {
            color: #666666; }
        .map-container .mobile-list ul li:nth-child(2n+3) {
          background: #efefef; }
        .map-container .mobile-list ul li:nth-child(2n+4) {
          background: #ffffff; }
        @media screen and (max-width: 640px)  {
          .map-container .mobile-list ul li.tablet-header {
            display: none; } }
        @media screen and (min-width: 640px) {
          .map-container .mobile-list ul li {
            float: left;
            display: block;
            margin-right: 4.82916%;
            width: 47.58542%; }
            .map-container .mobile-list ul li:nth-child(4n+3), .map-container .mobile-list ul li:nth-child(4n+4) {
              background: #efefef; }
            .map-container .mobile-list ul li:nth-child(4n+5), .map-container .mobile-list ul li:nth-child(4n+6) {
              background: #ffffff; }
            .map-container .mobile-list ul li:last-child {
              margin-right: 0; }
            .map-container .mobile-list ul li:nth-child(2n) {
              margin-right: 0; }
            .map-container .mobile-list ul li:nth-child(2n+1) {
              clear: left; } }

.sponsor-container {
  background: #fff; }

.sponsors-list {
  padding: 0;
  margin: 0;
  list-style: none; }
  @media screen and (min-width: 640px) {
    .sponsors-list {
      -webkit-box-align: center;
      -moz-box-align: center;
      box-align: center;
      -webkit-align-items: center;
      -moz-align-items: center;
      -ms-align-items: center;
      -o-align-items: center;
      align-items: center;
      -ms-flex-align: center;
      display: -webkit-box;
      display: -moz-box;
      display: box;
      display: -webkit-flex;
      display: -moz-flex;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-orient: horizontal;
      -moz-box-orient: horizontal;
      box-orient: horizontal;
      -webkit-flex-direction: row;
      -moz-flex-direction: row;
      flex-direction: row;
      -ms-flex-direction: row;
      -webkit-box-pack: center;
      -moz-box-pack: center;
      box-pack: center;
      -webkit-justify-content: center;
      -moz-justify-content: center;
      -ms-justify-content: center;
      -o-justify-content: center;
      justify-content: center;
      -ms-flex-pack: center; } }
  .sponsors-list .sponsor {
    width: 250px;
    padding: 20px;
    margin: 0 auto; }
    @media screen and (min-width: 640px) {
      .sponsors-list .sponsor {
        display: inline-block;
        float: left;
        margin: 0; } }

.ir {
  display: block;
  overflow: hidden;
  border: 0;
  background-color: transparent;
  background-repeat: no-repeat;
  text-align: left;
  text-indent: -999em;
  direction: ltr;
  *line-height: 0; }
  .ir br {
    display: none; }

.hidden {
  display: none !important;
  visibility: hidden; }

.visuallyhidden {
  position: absolute;
  overflow: hidden;
  clip: rect(0 0 0 0);
  margin: -1px;
  padding: 0;
  width: 1px;
  height: 1px;
  border: 0; }
  .visuallyhidden.focusable:active, .visuallyhidden.focusable:focus {
    position: static;
    overflow: visible;
    clip: auto;
    margin: 0;
    width: auto;
    height: auto; }

.invisible {
  visibility: hidden; }

.group {
  *zoom: 1; }
  .group:before, .group:after {
    display: table;
    content: ""; }
  .group:after {
    clear: both; }

img[src*="googleadservices.com"] {
  position: absolute;
  top: 0;
  left: -9000em; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyJjc3Mvc2Nzcy9zdHlsZS5zY3NzIiwiY3NzL3Njc3MvdXRpbGl0aWVzL19pbXBvcnRzLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9fYm91cmJvbi5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvX25lYXQuc2NzcyIsImNzcy9zY3NzL3V0aWxpdGllcy9fZnVuY3Rpb25zLnNjc3MiLCJjc3Mvc2Nzcy91dGlsaXRpZXMvX3NldHRpbmdzLnNjc3MiLCJjc3Mvc2Nzcy9iYXNlL19ub3JtYWxpemUuc2NzcyIsImNzcy9zY3NzL2Jhc2UvX3R5cG9ncmFwaHkuc2NzcyIsImNzcy9zY3NzL2Jhc2UvX3N0eWxlZ3VpZGUuc2NzcyIsImNzcy9zY3NzL2xheW91dHMvX2dsb2JhbC5zY3NzIiwiY3NzL3Njc3MvbGF5b3V0cy9faGVhZGVyLnNjc3MiLCJjc3Mvc2Nzcy9sYXlvdXRzL19jb250ZW50LnNjc3MiLCJjc3Mvc2Nzcy9sYXlvdXRzL19mb290ZXIuc2NzcyIsImNzcy9zY3NzL2NvbXBvbmVudHMvX2FsZXJ0cy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fYW5pbWF0aW9ucy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9ucy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fZm9ybXMuc2NzcyIsImNzcy9zY3NzL2NvbXBvbmVudHMvX21lZGlhLnNjc3MiLCJjc3Mvc2Nzcy9jb21wb25lbnRzL19uYXZpZ2F0aW9ucy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fcGFuZWxzLnNjc3MiLCJjc3Mvc2Nzcy9jb21wb25lbnRzL19zZWFyY2gtZm9ybS5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fc2VhcmNoLXJlc3VsdHMuc2NzcyIsImNzcy9zY3NzL2NvbXBvbmVudHMvX3RhYmxlcy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fc29jaWFsLWhlYWRlci5zY3NzIiwiY3NzL3Njc3MvcGFnZXMvX2Vycm9yLTQwNC5zY3NzIiwiY3NzL3Njc3MvcGFnZXMvX2hvbWUuc2NzcyIsImNzcy9zY3NzL3V0aWxpdGllcy9faGVscGVycy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3ByZWZpeGVyLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fcHgtdG8tZW0uc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yYWRpYWwtYXJnLXBhcnNlci5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3JlbmRlci1ncmFkaWVudHMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3NoYXBlLXNpemUtc3RyaXBwZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fZmxleC1ncmlkLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2dyaWQtd2lkdGguc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fZ29sZGVuLXJhdGlvLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2xpbmVhci1ncmFkaWVudC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19tb2R1bGFyLXNjYWxlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3B4LXRvLWVtLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3JhZGlhbC1ncmFkaWVudC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19zdHJpcC11bml0cy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL190aW50LXNoYWRlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3RyYW5zaXRpb24tcHJvcGVydHktbmFtZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fYW5pbWF0aW9uLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19hcHBlYXJhbmNlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZmFjZS12aXNpYmlsaXR5LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZ3JvdW5kLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZ3JvdW5kLWltYWdlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19ib3JkZXItaW1hZ2Uuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JvcmRlci1yYWRpdXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JveC1zaXppbmcuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2NvbHVtbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ZsZXgtYm94LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19mb250LWZhY2Uuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2h5cGhlbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2hpZHBpLW1lZGlhLXF1ZXJ5LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19pbWFnZS1yZW5kZXJpbmcuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2lubGluZS1ibG9jay5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fa2V5ZnJhbWVzLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19saW5lYXItZ3JhZGllbnQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3BlcnNwZWN0aXZlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19yYWRpYWwtZ3JhZGllbnQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3RyYW5zZm9ybS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdHJhbnNpdGlvbi5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdXNlci1zZWxlY3Quc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3BsYWNlaG9sZGVyLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2J1dHRvbi5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19jbGVhcmZpeC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19mb250LWZhbWlseS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19oaWRlLXRleHQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9faHRtbDUtaW5wdXQtdHlwZXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcG9zaXRpb24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcmV0aW5hLWltYWdlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3NpemUuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fdGltaW5nLWZ1bmN0aW9ucy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL190cmlhbmdsZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvX2JvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvX25lYXQtaGVscGVycy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcHJpdmF0ZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcmVzZXQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX2dyaWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX29tZWdhLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1uZWF0L2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19vdXRlci1jb250YWluZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX3NwYW4tY29sdW1ucy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcm93LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1uZWF0L2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19zaGlmdC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcGFkLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1uZWF0L2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19maWxsLXBhcmVudC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fbWVkaWEuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX3RvLWRlcHJlY2F0ZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fdmlzdWFsLWdyaWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcHJpdmF0ZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19uZXctYnJlYWtwb2ludC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL3NldHRpbmdzL192aXN1YWwtZ3JpZC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBbUZBQTtFVFNRLG9CU1BnQjtFVFloQixpQlNaZ0I7RVQyQmhCLFlTM0JnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QTdFRnhCLFNBQVMsT0FBTyxTQUFTLFlBQVksUUFBUSxRQUFRLFFBQVEsUUFBUSxNQUFNLEtBQUssU0FBUztFQVNVLFNBQVM7O0FBQzVHLE9BQU8sUUFBUTtFQUFRLFNBQVM7O0FBQ2hDLEtBQUssS0FBSztFQUFjLFNBQVM7RUFBTSxRQUFROztBQUMvQyxV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RUFBWCxNQUFNLFNBQVMsTUFBTTtJQUdiLFNBQVM7SUFDVCxTQUFTO0VBQ2pCLE1BQU07SUFFRSxPQUFPOztBQUlmLEdBQUc7RUFFQyxVQUFVO0VBQ1YsS0FBSztFQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2xvYmFsIFN0eWxlc2hlZXQgKEluY2x1ZGVzIG1lZGlhIHF1ZXJpZXMpXG4vLyBTdHlsZXMgdGhhdCB1c2VzIG1lZGlhIHF1ZXJpZXMgZm9yIG1vZGVybiBicm93c2VyIHN1cHBvcnRcbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEltcG9ydCBDb25maWd1cmF0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbkBpbXBvcnQgXCJ1dGlsaXRpZXMvaW1wb3J0c1wiOyIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHbG9iYWwgSW1wb3J0c1xuLy8gQ29uZmlndXJlZCBjb21wb25lbnQgaW1wb3J0cyBmb3IgdGhlIHNpdGUvYXBwbGljYXRpb25cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBJbXBvcnRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cdC8vIDEuIEltcG9ydCBDb25maWd1cmF0aW9uc1x0XHRcdFx0XHRcdFx0ICAoUmVxdWlyZWQpXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0QGltcG9ydCBcImJvdXJib25cIjtcblx0QGltcG9ydCBcIm5lYXRcIjtcblx0XG5cblx0Ly8gMi4gSW1wb3J0IEdyaWQsIEZ1bmN0aW9ucyAmIFNldHRpbmdzXHRcdFx0XHQgIChSZXF1aXJlZClcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRAaW1wb3J0IFwidXRpbGl0aWVzL2Z1bmN0aW9uc1wiO1xuXHRAaW1wb3J0IFwidXRpbGl0aWVzL3NldHRpbmdzXCI7XG5cblxuXHQvLyAzLiBJbXBvcnQgQmFzZSBcdFx0XHRcdFx0XHRcdFx0XHQgIChSZXF1aXJlZClcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRAaW1wb3J0IFwiYmFzZS9ub3JtYWxpemVcIjtcblx0QGltcG9ydCBcImJhc2UvdHlwb2dyYXBoeVwiO1xuXG5cdEBpbXBvcnQgXCJiYXNlL3N0eWxlZ3VpZGVcIjtcblxuXG5cdC8vIDQuIEltcG9ydCBMYXlvdXRzXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0QGltcG9ydCBcImxheW91dHMvZ2xvYmFsXCI7XG5cdEBpbXBvcnQgXCJsYXlvdXRzL2hlYWRlclwiO1xuXHRAaW1wb3J0IFwibGF5b3V0cy9jb250ZW50XCI7XG5cdEBpbXBvcnQgXCJsYXlvdXRzL2Zvb3RlclwiO1xuXG5cblx0Ly8gNS4gSW1wb3J0IENvbXBvbmVudHNcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9hbGVydHNcIjtcblx0QGltcG9ydCBcImNvbXBvbmVudHMvYW5pbWF0aW9uc1wiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9idXR0b25zXCI7XG5cdEBpbXBvcnQgXCJjb21wb25lbnRzL2Zvcm1zXCI7XG5cdEBpbXBvcnQgXCJjb21wb25lbnRzL21lZGlhXCI7XG5cdEBpbXBvcnQgXCJjb21wb25lbnRzL25hdmlnYXRpb25zXCI7XG5cdEBpbXBvcnQgXCJjb21wb25lbnRzL3BhbmVsc1wiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9zZWFyY2gtZm9ybVwiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9zZWFyY2gtcmVzdWx0c1wiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy90YWJsZXNcIjtcblx0QGltcG9ydCBcImNvbXBvbmVudHMvc29jaWFsLWhlYWRlclwiO1xuXHRcblx0XG5cdC8vIDYuIEltcG9ydCBQYWdlc1xuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdEBpbXBvcnQgXCJwYWdlcy9lcnJvci00MDRcIjtcblx0QGltcG9ydCBcInBhZ2VzL2hvbWVcIjtcblx0XG5cblx0Ly8gNy4gSW1wb3J0IFZlbmRvcnNcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLyBAaW1wb3J0IFwidmVuZG9ycy9wYXJ0aWFsLW5hbWVcIjtcblxuXG5cdC8vIDguIEltcG9ydCBBZGRpdGlvbmFsIFV0aWxpdGllc1xuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdEBpbXBvcnQgXCJ1dGlsaXRpZXMvaGVscGVyc1wiOyIsIi8vIFNldHRpbmdzXG5AaW1wb3J0IFwic2V0dGluZ3MvcHJlZml4ZXJcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9weC10by1lbVwiO1xuXG4vLyBDdXN0b20gSGVscGVyc1xuQGltcG9ydCBcImhlbHBlcnMvZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLXBvc2l0aW9ucy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1hcmctcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmVuZGVyLWdyYWRpZW50c1wiO1xuQGltcG9ydCBcImhlbHBlcnMvc2hhcGUtc2l6ZS1zdHJpcHBlclwiO1xuXG4vLyBDdXN0b20gRnVuY3Rpb25zXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2ZsZXgtZ3JpZFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9ncmlkLXdpZHRoXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2dvbGRlbi1yYXRpb1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9saW5lYXItZ3JhZGllbnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvbW9kdWxhci1zY2FsZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9weC10by1lbVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9yYWRpYWwtZ3JhZGllbnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvc3RyaXAtdW5pdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdGludC1zaGFkZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy90cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVcIjtcblxuLy8gQ1NTMyBNaXhpbnNcbkBpbXBvcnQgXCJjc3MzL2FuaW1hdGlvblwiO1xuQGltcG9ydCBcImNzczMvYXBwZWFyYW5jZVwiO1xuQGltcG9ydCBcImNzczMvYmFja2ZhY2UtdmlzaWJpbGl0eVwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvYm9yZGVyLWltYWdlXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3JkZXItcmFkaXVzXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwiY3NzMy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9mbGV4LWJveFwiO1xuQGltcG9ydCBcImNzczMvZm9udC1mYWNlXCI7XG5AaW1wb3J0IFwiY3NzMy9oeXBoZW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9oaWRwaS1tZWRpYS1xdWVyeVwiO1xuQGltcG9ydCBcImNzczMvaW1hZ2UtcmVuZGVyaW5nXCI7XG5AaW1wb3J0IFwiY3NzMy9pbmxpbmUtYmxvY2tcIjtcbkBpbXBvcnQgXCJjc3MzL2tleWZyYW1lc1wiO1xuQGltcG9ydCBcImNzczMvbGluZWFyLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy9wZXJzcGVjdGl2ZVwiO1xuQGltcG9ydCBcImNzczMvcmFkaWFsLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2Zvcm1cIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zaXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL3VzZXItc2VsZWN0XCI7XG5AaW1wb3J0IFwiY3NzMy9wbGFjZWhvbGRlclwiO1xuXG4vLyBBZGRvbnMgJiBvdGhlciBtaXhpbnNcbkBpbXBvcnQgXCJhZGRvbnMvYnV0dG9uXCI7XG5AaW1wb3J0IFwiYWRkb25zL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiYWRkb25zL2ZvbnQtZmFtaWx5XCI7XG5AaW1wb3J0IFwiYWRkb25zL2hpZGUtdGV4dFwiO1xuQGltcG9ydCBcImFkZG9ucy9odG1sNS1pbnB1dC10eXBlc1wiO1xuQGltcG9ydCBcImFkZG9ucy9wb3NpdGlvblwiO1xuQGltcG9ydCBcImFkZG9ucy9wcmVmaXhlclwiO1xuQGltcG9ydCBcImFkZG9ucy9yZXRpbmEtaW1hZ2VcIjtcbkBpbXBvcnQgXCJhZGRvbnMvc2l6ZVwiO1xuQGltcG9ydCBcImFkZG9ucy90aW1pbmctZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwiYWRkb25zL3RyaWFuZ2xlXCI7XG5cbi8vIFNvb24gdG8gYmUgZGVwcmVjYXRlZCBNaXhpbnNcbkBpbXBvcnQgXCJib3VyYm9uLWRlcHJlY2F0ZWQtdXBjb21pbmdcIjtcbiIsIi8vIEJvdXJib24gTmVhdCAxLjYuMC5wcmVcbi8vIE1JVCBMaWNlbnNlZFxuLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgdGhvdWdodGJvdCwgaW5jLlxuXG4vLyBIZWxwZXJzXG5AaW1wb3J0IFwibmVhdC1oZWxwZXJzXCI7XG5cbi8vIEdyaWRcbkBpbXBvcnQgXCJncmlkL3ByaXZhdGVcIjtcbkBpbXBvcnQgXCJncmlkL3Jlc2V0XCI7XG5AaW1wb3J0IFwiZ3JpZC9ncmlkXCI7XG5AaW1wb3J0IFwiZ3JpZC9vbWVnYVwiO1xuQGltcG9ydCBcImdyaWQvb3V0ZXItY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZ3JpZC9zcGFuLWNvbHVtbnNcIjtcbkBpbXBvcnQgXCJncmlkL3Jvd1wiO1xuQGltcG9ydCBcImdyaWQvc2hpZnRcIjtcbkBpbXBvcnQgXCJncmlkL3BhZFwiO1xuQGltcG9ydCBcImdyaWQvZmlsbC1wYXJlbnRcIjtcbkBpbXBvcnQgXCJncmlkL21lZGlhXCI7XG5AaW1wb3J0IFwiZ3JpZC90by1kZXByZWNhdGVcIjtcbkBpbXBvcnQgXCJncmlkL3Zpc3VhbC1ncmlkXCI7XG4iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRnVuY3Rpb25zIGFuZCBNaXhpbnNcbi8vIE9yZ2FuaXplcyBTVEFNUCBhbmQgY3VzdG9tIFNhc3MgbWl4aW5zIGZvciB0aGUgcHJvamVjdC5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09L1xuXG5cbi8vIENvbnZlcnQgUHggdG8gUmVtXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS9cblxuXHQvKlxuICAgIFZhcmlhYmxlOiBmb250c2l6ZS1yb290XG4gICAgJ3B4JyBmb250IHNpemUgb24gcm9vdCAoaHRtbCkgZWxlbWVudCAod2l0aCB1bml0cyByZW1vdmVkKS4gIEJyb3dzZXIgZGVmYXVsdCBpcyAxNnB4LiAgVXNlZCB0byBkZXRlcm1pbmUgc2l6ZXMgZm9yIHJlbSBmdW5jdGlvbi5cblxuICAgIC1AIGJhc2VkIG9uIGh0dHA6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9jc3MvbGVzcy1taXhpbi1mb3ItcmVtLWZvbnQtc2l6aW5nL1xuICAgICovXG4gICAgJGZvbnRzaXplLXJvb3Q6IDE2ICFkZWZhdWx0O1xuXG4gICAgLypcbiAgICBNaXhpbjogcmVtIChodHRwczovL2dpdGh1Yi5jb20vdG9ieW1hY2tlbnppZS9odG1sLWJvaWxlcnBsYXRlL2Jsb2IvbWFzdGVyL3dlYi9fL3N0eWxlcy9zcmMvbWl4aW5zL191bml0cy5zY3NzKVxuICAgIE91dHB1dCBhIHByb3BlcnR5IHdpdGggcGl4ZWwgdmFsdWVzIGZvciBub24gJ3JlbScgc3VwcG9ydGluZyBicm93c2VycyBmb2xsb3dlZCBieSB0aGUgJ3JlbScgZXF1aXZhbGVudCBmb3IgcmVtIHN1cHBvcnQgYnJvd3NlcnMuICBDYW4ndCBjdXJyZW50bHkgYWNjZXB0IHZhbHVlcyB3aXRoIGNvbW1hIHNlcGFyYXRpb24sIGxpa2UgbXVsdGlwbGUgYmFja2dyb3VuZHMgb3IgdGhlIGxpa2UuXG5cbiAgICAtQCBiYXNlZCBvbiBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDEzLzAzLzE4L3VsdGltYXRlLXJlbS1taXhpbi9cbiAgICAqL1xuXG4gICAgQG1peGluIHJlbSgkcHJvcGVydHksICR2YWx1ZXMpIHtcbiAgICAgICAgJHB4OiAoKTtcbiAgICAgICAgJHJlbTogKCk7XG5cbiAgICAgICAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXN7XG4gICAgICAgICAgICAvLy0tZ2V0IHVuaXQgb3IgJ25hbicgaWYgdGhlIHZhbHVlIGlzbid0IGEgbnVtYmVyXG4gICAgICAgICAgICAvLyAkdW5pdDogaWYodHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInLCB1bml0KCR2YWx1ZSksICduYW4nKTtcbiAgICAgICAgICAgICR1bml0OiAnbmFuJztcbiAgICAgICAgICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcid7XG4gICAgICAgICAgICAgICAgQGlmIHVuaXRsZXNzKCR2YWx1ZSl7XG4gICAgICAgICAgICAgICAgICAgICR1bml0OiAndW5pdGxlc3MnO1xuICAgICAgICAgICAgICAgIH1AZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgJHVuaXQ6IHVuaXQoJHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vLS11bml0bGVzcyBudW1iZXJzIGFyZSBhZGRlZCBhcyBpZiB0aGV5IGFyZSBpbiBwaXhcbiAgICAgICAgICAgIEBpZiAkdW5pdCA9PSAndW5pdGxlc3MnIGFuZCAkdmFsdWUgIT0gMHtcbiAgICAgICAgICAgICAgICAkcHggOiBhcHBlbmQoJHB4LCAkdmFsdWUgKyBweCk7XG4gICAgICAgICAgICAgICAgJHJlbTogYXBwZW5kKCRyZW0sICgkdmFsdWUgLyAkZm9udHNpemUtcm9vdCArIHJlbSkpO1xuICAgICAgICAgICAgLy8tLXB4IG9yIHJlbSBnZXQgYWRkZWQgdG8gdGhlaXIgbGlzdCBhbmQgdGhlbiBjb252ZXJ0ZWQgdG8gdGhlIG90aGVyIHVuaXRcbiAgICAgICAgICAgIH1AZWxzZSBpZiAkdW5pdCA9PSAncHgnIG9yICR1bml0ID09ICdyZW0ne1xuICAgICAgICAgICAgICAgICR1bml0bGVzc1ZhbDogc3RyaXBVbml0KCR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgQGlmICR1bml0ID09ICdweCd7XG4gICAgICAgICAgICAgICAgICAgICRweCA6IGFwcGVuZCgkcHgsICR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICRyZW06IGFwcGVuZCgkcmVtLCAoJHVuaXRsZXNzVmFsIC8gJGZvbnRzaXplLXJvb3QgKyByZW0pKTtcbiAgICAgICAgICAgICAgICB9QGVsc2UgaWYgJHVuaXQgPT0gJ3JlbSd7XG4gICAgICAgICAgICAgICAgICAgICRweCA6IGFwcGVuZCgkcHgsKCR1bml0bGVzc1ZhbCAqICRmb250c2l6ZS1yb290ICsgcHgpKTtcbiAgICAgICAgICAgICAgICAgICAgJHJlbTogYXBwZW5kKCRyZW0sICR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8tLWFsbCBvdGhlciB1bml0cyBnZXQgYXBwZW5kZWQgZGlyZWN0bHlcbiAgICAgICAgICAgIH1AZWxzZXtcbiAgICAgICAgICAgICAgICAkcHggOiBhcHBlbmQoJHB4ICwgJHZhbHVlKTtcbiAgICAgICAgICAgICAgICAkcmVtOiBhcHBlbmQoJHJlbSwgJHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkcHggPT0gJHJlbSB7XG4gICAgICAgICAgICAjeyRwcm9wZXJ0eX06ICRweDtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAjeyRwcm9wZXJ0eX06ICRweDtcbiAgICAgICAgICAgICN7JHByb3BlcnR5fTogJHJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qXG4gICAgTWl4aW46IHN0cmlwVW5pdFxuICAgIFN0cmlwIHRoZSB1bml0IGZyb20gYSB2YWx1ZSB0aGF0IGhhcyBhIHVuaXRcblxuICAgIC1AIGJhc2VkIG9uIGh0dHA6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9jc3MvbGVzcy1taXhpbi1mb3ItcmVtLWZvbnQtc2l6aW5nL1xuICAgICovXG4gICAgQGZ1bmN0aW9uIHN0cmlwVW5pdCgkbnVtKSB7XG4gICAgICAgIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xuICAgIH1cblxuXHQvLyBGb250LWZhY2UgTWl4aW5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdEBtaXhpbiBkZWNsYXJlLWZvbnQtZmFjZSgkZm9udC1mYW1pbHksICRmb250LWZpbGVuYW1lLCAkZm9udC13ZWlnaHQgOiBub3JtYWwsICRmb250LXN0eWxlIDpub3JtYWwsICRmb250LXN0cmV0Y2ggOiBub3JtYWwpIHtcblx0XHRAZm9udC1mYWNlIHtcblx0XHRcdGZvbnQtZmFtaWx5OiAnI3skZm9udC1mYW1pbHl9Jztcblx0XHRcdFx0c3JjOiB1cmwoJy4uL2ZvbnRzLyN7JGZvbnQtZmlsZW5hbWV9LmVvdCcpO1xuXHRcdFx0XHRzcmM6IHVybCgnLi4vZm9udHMvI3skZm9udC1maWxlbmFtZX0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcblx0XHRcdFx0dXJsKCcuLi9mb250cy8jeyRmb250LWZpbGVuYW1lfS53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG5cdFx0XHRcdHVybCgnLi4vZm9udHMvI3skZm9udC1maWxlbmFtZX0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpLFxuXHRcdFx0XHR1cmwoJy4uL2ZvbnRzLyN7JGZvbnQtZmlsZW5hbWV9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodDtcblx0XHRcdGZvbnQtc3R5bGU6ICRmb250LXN0eWxlO1xuXHRcdFx0Zm9udC1zdHJldGNoOiAkZm9udC1zdHJldGNoO1xuXHRcdH1cblx0fVxuXG5cblxuLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG5cbi8vIEN1c3RvbSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIGZsZXhib3hcbkBtaXhpbiBib3goJG9yaWVudDogaW5saW5lLWF4aXMsICRwYWNrOiBzdGFydCwgJGFsaWduOiBzdHJldGNoKSB7XG4gIEBpbmNsdWRlIGRpc3BsYXktYm94O1xuICBAaW5jbHVkZSBib3gtb3JpZW50KCRvcmllbnQpO1xuICBAaW5jbHVkZSBib3gtcGFjaygkcGFjayk7XG4gIEBpbmNsdWRlIGJveC1hbGlnbigkYWxpZ24pO1xufVxuXG5AbWl4aW4gZGlzcGxheS1ib3gge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1vei1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyBJRSAxMFxuICBkaXNwbGF5OiBib3g7XG59XG5cbkBtaXhpbiBib3gtb3JpZW50KCRvcmllbnQ6IGlubGluZS1heGlzKSB7XG4vLyBob3Jpem9udGFsfHZlcnRpY2FsfGlubGluZS1heGlzfGJsb2NrLWF4aXN8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkb3JpZW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LXBhY2soJHBhY2s6IHN0YXJ0KSB7XG4vLyBzdGFydHxlbmR8Y2VudGVyfGp1c3RpZnlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRwYWNrLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1wYWNrOiAkcGFjazsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1hbGlnbigkYWxpZ246IHN0cmV0Y2gpIHtcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8YmFzZWxpbmV8c3RyZXRjaFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbGlnbiwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtYWxpZ246ICRhbGlnbjsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1kaXJlY3Rpb24oJGRpcmVjdGlvbjogbm9ybWFsKSB7XG4vLyBub3JtYWx8cmV2ZXJzZXxpbmhlcml0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1kaXJlY3Rpb24sICRkaXJlY3Rpb24sIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1saW5lcygkbGluZXM6IHNpbmdsZSkge1xuLy8gc2luZ2xlfG11bHRpcGxlXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1saW5lcywgJGxpbmVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LW9yZGluYWwtZ3JvdXAoJGludDogMSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtb3JkZXI6ICRpbnQ7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZmxleCgkdmFsdWU6IDAuMCkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleDogJHZhbHVlOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgtZ3JvdXAoJGludDogMSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG4vLyBVbmlmaWVkIGF0dHJpYnV0ZXMgZm9yIDIwMDksIDIwMTEsIGFuZCAyMDEyIGZsYXZvdXJzLlxuXG4vLyAyMDA5IC0gZGlzcGxheSAoYm94IHwgaW5saW5lLWJveClcbi8vIDIwMTEgLSBkaXNwbGF5IChmbGV4Ym94IHwgaW5saW5lLWZsZXhib3gpXG4vLyAyMDEyIC0gZGlzcGxheSAoZmxleCB8IGlubGluZS1mbGV4KVxuQG1peGluIGRpc3BsYXkoJHZhbHVlKSB7XG4vLyAgZmxleCB8IGlubGluZS1mbGV4XG4gICAgQGlmICR2YWx1ZSA9PSBcImZsZXhcIiB7XG4gICAgICAgIC8vIDIwMDlcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIGRpc3BsYXk6IC1tb3otYm94O1xuICAgICAgICBkaXNwbGF5OiBib3g7XG5cbiAgICAgICAgLy8gMjAxMlxuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gICAgICAgIGRpc3BsYXk6IC1tb3otZmxleDtcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIDIwMTEgKElFIDEwKVxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwiaW5saW5lLWZsZXhcIiB7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgICAgICAgZGlzcGxheTogLW1vei1pbmxpbmUtYm94O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYm94O1xuXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7XG4gICAgICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLWZsZXg7XG4gICAgICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgICBkaXNwbGF5OiAkdmFsdWU7XG4gICAgfVxufVxuXG4vLyAyMDA5IC0gYm94LWZsZXggKGludGVnZXIpXG4vLyAyMDExIC0gZmxleCAoZGVjaW1hbCB8IHdpZHRoIGRlY2ltYWwpXG4vLyAyMDEyIC0gZmxleCAoaW50ZWdlciBpbnRlZ2VyIHdpZHRoKVxuQG1peGluIGZsZXgoJHZhbHVlKSB7XG5cbiAgICAvLyBHcmFiIGZsZXgtZ3JvdyBmb3Igb2xkZXIgYnJvd3NlcnMuXG4gICAgJGZsZXgtZ3JvdzogbnRoKCR2YWx1ZSwgMSk7XG5cbiAgICAvLyAyMDA5XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICRmbGV4LWdyb3csIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDExIChJRSAxMCksIDIwMTJcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JpZW50ICggaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzKVxuLy8gICAgICAtIGJveC1kaXJlY3Rpb24gKG5vcm1hbCB8IHJldmVyc2UpICAgICAgXG4vLyAyMDExIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJHZhbHVlOiByb3cpIHtcblxuICAgIC8vIEFsdCB2YWx1ZXMuXG4gICAgJHZhbHVlLTIwMDk6ICR2YWx1ZTtcbiAgICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICAgICRkaXJlY3Rpb246IFwibm9ybWFsXCI7XG5cbiAgICBAaWYgJHZhbHVlID09IHJvdyB7XG4gICAgICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwicm93LXJldmVyc2VcIiB7XG4gICAgICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICAgICAgICAkZGlyZWN0aW9uOiByZXZlcnNlO1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IGNvbHVtbiB7XG4gICAgICAgICR2YWx1ZS0yMDA5OiB2ZXJ0aWNhbDtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcImNvbHVtbi1yZXZlcnNlXCIge1xuICAgICAgICAkdmFsdWUtMjAwOTogdmVydGljYWw7XG4gICAgICAgICRkaXJlY3Rpb246IHJldmVyc2U7XG4gICAgfVxuXG4gICAgLy8gMjAwOVxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICR2YWx1ZS0yMDA5LCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IFwicmV2ZXJzZVwiIHtcbiAgICAgICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcbiAgICB9XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1kaXJlY3Rpb24sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAgIC8vIDIwMTEgKElFIDEwKVxuICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogJHZhbHVlO1xufVxuXG4vLyAyMDA5IC0gYm94LWxpbmVzIChzaW5nbGUgfCBtdWx0aXBsZSlcbi8vIDIwMTEgLSBmbGV4LXdyYXAgKG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxuQG1peGluIGZsZXgtd3JhcCgkdmFsdWU6IG5vd3JhcCkge1xuXG4gICAgLy8gQWx0IHZhbHVlcy5cbiAgICAkYWx0LXZhbHVlOiAkdmFsdWU7XG4gICAgQGlmICR2YWx1ZSA9PSBub3dyYXAge1xuICAgICAgICAkYWx0LXZhbHVlOiBzaW5nbGU7XG4gICAgfVxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gd3JhcCB7XG4gICAgICAgICRhbHQtdmFsdWU6IG11bHRpcGxlO1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwid3JhcC1yZXZlcnNlXCIge1xuICAgICAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC13cmFwLCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBUT0RPOiBwYXJzZSB2YWx1ZXMgaW50byBmbGV4LWRpcmVjdGlvbi9mbGV4LXdyYXBcbi8vIDIwMTEgLSBUT0RPOiBwYXJzZSB2YWx1ZXMgaW50byBmbGV4LWRpcmVjdGlvbi9mbGV4LXdyYXBcbi8vIDIwMTIgLSBmbGV4LWZsb3cgKGZsZXgtZGlyZWN0aW9uIHx8IGZsZXgtd3JhcClcbkBtaXhpbiBmbGV4LWZsb3coJHZhbHVlKSB7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1mbG93LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JkaW5hbC1ncm91cCAoaW50ZWdlcilcbi8vIDIwMTEgLSBmbGV4LW9yZGVyIChpbnRlZ2VyKVxuLy8gMjAxMiAtIG9yZGVyIChpbnRlZ2VyKVxuQG1peGluIG9yZGVyKCRpbnQ6IDApIHtcbiAgICAvLyAyMDA5XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yZGluYWwtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIob3JkZXIsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDExIChJRSAxMClcbiAgICAtbXMtZmxleC1vcmRlcjogJGludDtcbn1cblxuLy8gMjAxMiAtIGZsZXgtZ3JvdyAobnVtYmVyKVxuQG1peGluIGZsZXgtZ3JvdygkbnVtYmVyOiAwKSB7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1ncm93LCAkbnVtYmVyLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1zaHJpbmsgKG51bWJlcilcbkBtaXhpbiBmbGV4LXNocmluaygkbnVtYmVyOiAxKSB7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1zaHJpbmssICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgLW1zLWZsZXgtbmVnYXRpdmU6ICRudW1iZXI7XG59XG5cbi8vIDIwMTIgLSBmbGV4LWJhc2lzIChudW1iZXIpXG5AbWl4aW4gZmxleC1iYXNpcygkd2lkdGg6IGF1dG8pIHtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWJhc2lzLCAkd2lkdGgsIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6ICR3aWR0aDtcbn1cblxuLy8gMjAwOSAtIGJveC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDExIC0gZmxleC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDEyIC0ganVzdGlmeS1jb250ZW50IChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kKVxuQG1peGluIGp1c3RpZnktY29udGVudCAoJHZhbHVlOiBmbGV4LXN0YXJ0KSB7XG5cbiAgICAvLyBBbHQgdmFsdWVzLlxuICAgICRhbHQtdmFsdWU6ICR2YWx1ZTtcbiAgICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gICAgfVxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogZW5kO1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcbiAgICAgICAgJGFsdC12YWx1ZToganVzdGlmeTtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogY2VudGVyO1xuICAgIH1cblxuICAgIC8vIDIwMDlcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJGFsdC12YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAgIC8vIDIwMTJcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihqdXN0aWZ5LWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xuXG4gICAgLy8gMjAxMSAoSUUgMTApXG4gICAgLW1zLWZsZXgtcGFjazogJGFsdC12YWx1ZTtcbn1cblxuLy8gMjAwOSAtIGJveC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDExIC0gZmxleC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24taXRlbXMgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1pdGVtcygkdmFsdWU6IHN0cmV0Y2gpIHtcblxuICAgICRhbHQtdmFsdWU6ICR2YWx1ZTtcblxuICAgIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICAgICAkYWx0LXZhbHVlOiBzdGFydDtcbiAgICB9ICAgIFxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogZW5kO1xuICAgIH1cblxuICAgIC8vIDIwMDlcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24taXRlbXMsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xuICAgIFxuICAgIC8vIDIwMTEgKElFIDEwKVxuICAgIC1tcy1mbGV4LWFsaWduOiAkYWx0LXZhbHVlOyAgICBcbn1cblxuLy8gMjAxMSAtIGZsZXgtaXRlbS1hbGlnbiAoYXV0byB8IHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLXNlbGYgKGF1dG8gfCBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG5AbWl4aW4gYWxpZ24tc2VsZigkdmFsdWU6IGF1dG8pIHtcblxuICAgICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gICAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgICAgICR2YWx1ZS0yMDExOiBzdGFydDtcbiAgICB9ICAgIFxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAgICAgJHZhbHVlLTIwMTE6IGVuZDtcbiAgICB9XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tc2VsZiwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMSAoSUUgMTApXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogJHZhbHVlLTIwMTE7XG59XG5cbi8vIDIwMTEgLSBmbGV4LWxpbmUtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgZGlzdHJpYnV0ZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24tY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2gpXG5AbWl4aW4gYWxpZ24tY29udGVudCgkdmFsdWU6IHN0cmV0Y2gpIHtcblxuICAgICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gICAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgICAgICR2YWx1ZS0yMDExOiBzdGFydDtcbiAgICB9ICAgIFxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAgICAgJHZhbHVlLTIwMTE6IGVuZDtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcInNwYWNlLWJldHdlZW5cIiB7XG4gICAgICAgICR2YWx1ZS0yMDExOiBqdXN0aWZ5O1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwic3BhY2UtYXJvdW5kXCIge1xuICAgICAgICAkdmFsdWUtMjAxMTogZGlzdHJpYnV0ZTtcbiAgICB9XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tY29udGVudCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMSAoSUUgMTApXG4gICAgLW1zLWZsZXgtbGluZS1wYWNrOiAkdmFsdWUtMjAxMTtcbn1cblxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBPbWVnYSBSZXNldCBmb3IgQm91cmJvbiBOZWF0XG4vL1xuLy8gaHR0cDovL2pvc2hmcnkubWUvbm90ZXMvb21lZ2EtcmVzZXQtZm9yLWJvdXJib24tbmVhdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AbWl4aW4gb21lZ2EtcmVzZXQoJG50aCkge1xuICAmOm50aC1jaGlsZCgjeyRudGh9KSB7IG1hcmdpbi1yaWdodDogZmxleC1ndXR0ZXIoJGdyaWQtY29sdW1ucywgJGd1dHRlcik7IH1cbiAgJjpudGgtY2hpbGQoI3skbnRofSsxKSB7IGNsZWFyOiBub25lIH1cbn1cbiIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHbG9iYWwgU2V0dGluZ3Ncbi8vIENlbnRyYWwgbG9jYXRpb24gZm9yIHByb2plY3QtbGV2ZWwgdmFyaWFibGVzLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBMYXlvdXQgU2V0dGluZ3Ncbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXHQvLyBNZWRpYSBRdWVyaWVzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQkcGhvbmU6IDMyMHB4O1x0XHRcdFx0XHRcdC8vIG1pbi13aWR0aCAzMjBweFxuXHQkdGFibGV0OiA2NDBweDtcdFx0XHRcdFx0XHQvLyBtaW4td2lkdGggNjQwcHhcblx0JGRlc2t0b3A6IDk2MHB4O1x0XHRcdFx0XHRcdC8vIG1pbi13aWR0aCA5NjBweFxuXG5cdC8vJGNvbnRhaW5lcl9taW5fd2lkdGg6ICRwaG9uZTtcblx0Ly8kY29udGFpbmVyX21heF93aWR0aDogOTYwcHg7XG5cblxuXHQvLyBHcmlkc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kY29sdW1uczogMTI7XG5cdC8vJGNvbHVtbl93aWR0aDogNjBweDtcblx0Ly8kZ3V0dGVyX3dpZHRoOiAyMHB4O1xuXG5cblx0Ly8gQm9yZGVyIFJhZGl1c1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kYm9yZGVyX3JhZGl1czogM3B4O1x0XHRcdFx0XHQvLyBzZXQgdG8gMCBmb3Igbm9uZVxuXG5cblxuLy8gQ29sb3IgU2V0dGluZ3Ncbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXHQvLyBCcmFuZCBTcGVjaWZpY1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0JGNvbG9yX3ByaW1hcnk6ICNjYzAwMDA7XG5cdCRjb2xvcl9zZWNvbmRhcnk6ICMwMDAwMDA7XG5cdCRjb2xvcl90ZXJ0aWFyeTogI2ZmZmZmZjtcblxuXHQkY29sb3JfNDogI2YyZjJmMjtcblx0JGNvbG9yXzU6ICNjY2NjY2M7XG5cdCRjb2xvcl82OiAjNjY2NjY2O1xuXHQkY29sb3JfNzogIzMzMzMzMztcblxuXHQkY29sb3JfODogIzk5MDAwMDtcblx0JGNvbG9yXzk6ICNkMTQ5MDU7XG5cdCRjb2xvcl8xMDogI2ZkZDcyNjtcblx0JGNvbG9yXzExOiAjN2Q4YzFmO1xuXHQkY29sb3JfMTI6ICM0MjdlOTM7XG5cdCRjb2xvcl8xMzogIzQxNTZhMTtcblxuXG5cblx0Ly8gSW5mb3JtYXRpb24gYW5kIFZhbGlkYXRpb25cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJGJyYW5kX2luZm86ICM0MjhiY2E7XG5cdC8vJGJyYW5kX2Vycm9yOiAjZDk1MzRmO1xuXHQvLyRicmFuZF9zdWNjZXNzOiAjNWNiODVjO1xuXG5cblx0Ly8gVGV4dCBhbmQgTGlua3Ncblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJHRleHRfY29sb3I6ICMzMzM7XG5cdC8vJGxpbmtfY29sb3I6ICRicmFuZF9pbmZvO1xuXHQvLyRsaW5rX2NvbG9yX2hvdmVyOiBkYXJrZW4oJGxpbmtfY29sb3IsIDE1JSk7XG5cblxuXG4vLyBUeXBvZ3JhcGh5IFNldHRpbmdzXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblx0Ly8gQmFzZSBTaXplIChtdXN0IHVzZSBweCB2YWx1ZSlcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJGJhc2VfZm9udF9zaXplOiAxNnB4O1xuXHQvLyRiYXNlX2xpbmVfaGVpZ2h0OiAxLjU7XG5cblxuXHQvLyBIZWFkaW5nc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kaGVhZGVyX2ZvbnRfZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlXCIsIFwiSGVsdmV0aWNhXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG5cdC8vJGhlYWRlcl9mb250X3dlaWdodDogYm9sZDtcblx0Ly8kaGVhZGVyX2ZvbnRfc3R5bGU6IG5vcm1hbDtcblx0Ly8kaGVhZGVyX2xpbmVfaGVpZ2h0OiAxLjM7XG5cdC8vJGhlYWRlcl90b3BfbWFyZ2luOiA1cHg7XG5cdC8vJGhlYWRlcl9ib3R0b21fbWFyZ2luOiAyMHB4O1xuXHQvLyRoZWFkZXJfdGV4dF9yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcblxuXHQvLyRoMV9mb250X3NpemU6IDQ0cHg7XG5cdC8vJGgyX2ZvbnRfc2l6ZTogMzdweDtcblx0Ly8kaDNfZm9udF9zaXplOiAyN3B4O1xuXHQvLyRoNF9mb250X3NpemU6IDIzcHg7XG5cdC8vJGg1X2ZvbnRfc2l6ZTogMThweDtcblx0Ly8kaDZfZm9udF9zaXplOiAxNnB4O1xuXG5cblx0Ly8gUGFyYWdyYXBoc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kcGFyYWdyYXBoX2ZvbnRfZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlXCIsIFwiSGVsdmV0aWNhXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG5cdC8vJHBhcmFncmFwaF9mb250X3dlaWdodDogbm9ybWFsO1xuXHQvLyRwYXJhZ3JhcGhfZm9udF9zaXplOiAkYmFzZV9mb250X3NpemU7XG5cdC8vJHBhcmFncmFwaF9saW5lX2hlaWdodDogMS41O1xuXHQvLyRwYXJhZ3JhcGhfbWFyZ2luX2JvdHRvbTogMjBweDtcblx0Ly8kcGFyYWdyYXBoX3RleHRfcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG5cblxuXHQvLyBMaW5rc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kbGlua190ZXh0X2RlY29yYXRpb246IG5vbmU7XG5cblxuXHQvLyBCbG9ja3F1b3Rlc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kYmxvY2txdW90ZV9wYWRkaW5nOiAxMHB4IDIwcHg7XG5cdC8vJGJsb2NrcXVvdGVfbWFyZ2luOiAwIDAgMjBweDtcblxuXG5cbi8vIEFsZXJ0cyBTZXR0aW5nc1xuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cdC8vJGFsZXJ0Ym94X2ZvbnRfY29sb3I6ICNmZmY7XG5cdC8vJGFsZXJ0Ym94X21hcmdpbjogMTZweDtcblxuXG5cbi8vIE1lZGlhIFNldHRpbmdzXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblx0Ly8kZmlndXJlX2JhY2tncm91bmQ6ICMwMDA7XG5cdC8vJGZpZ3VyZV9tYXJnaW46IDAgMCAxNnB4O1xuXHQvLyRmaWd1cmVfb3BhY2l0eTogLjk7XG5cdC8vJGZpZ3VyZV9vcGFjaXR5X2hvdmVyOiAxO1xuXG5cblxuLy8gRm9ybXMgU2V0dGluZ3Ncbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXHQvLyRmb3JtX21hcmdpbjogMCAwIDE2cHg7XG5cblx0Ly8kaW5wdXRfZm9jdXNfYm9yZGVyX2NvbG9yOiAkYnJhbmRfdGVydGlhcnk7XG5cdC8vJGlucHV0X2ZvY3VzX2JvcmRlcl93aWR0aDogMnB4O1xuXHQvLyRpbnB1dF9mb2N1c19iYWNrZ3JvdW5kOiBsaWdodGVuKCRicmFuZF90ZXJ0aWFyeSwgMzUlKTtcblxuXG5cbi8vIEJ1dHRvbnMgU2V0dGluZ3Ncbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXHQvLyRidXR0b25fcGFkZGluZzogMTBweCAyMHB4O1xuXHQvLyRidXR0b25fYmFja2dyb3VuZDogJGJyYW5kX3ByaW1hcnk7XG5cdC8vJGJ1dHRvbl90ZXh0X2NvbG9yOiAjZmZmO1xuXG5cblxuLy8gVGFibGUgU2V0dGluZ3Ncbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXHQvLyR0YWJsZV9jZWxsX3BhZGRpbmc6IDhweDtcblx0Ly8kdGFibGVfY2VsbF9ib3JkZXJfd2lkdGg6IDFweDtcblx0Ly8kdGFibGVfY2VsbF9ib3JkZXJfc3R5bGU6IHNvbGlkO1xuXHQvLyR0YWJsZV9jZWxsX2JvcmRlcl9jb2xvcjogI2ZmZjtcblxuXG5cdC8vIEhlYWRlclxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kdGFibGVfaGVhZGVyX2JhY2tncm91bmQ6ICRicmFuZF9wcmltYXJ5O1xuXHQvLyR0YWJsZV9oZWFkZXJfY29sb3I6ICNmZmY7XG5cblxuXHQvLyBaZWJyYSBTdHJpcGVzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyR0YWJsZV9hbHRfcm93X2JhY2tncm91bmQ6IGxpZ2h0ZW4oJGJyYW5kX3ByaW1hcnksIDcwJSk7XG5cblxuXHQvLyBGb290ZXJcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJHRhYmxlX2Zvb3Rlcl9iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0Ly8kdGFibGVfZm9vdGVyX2JvcmRlcl93aWR0aDogMnB4O1xuXHQvLyR0YWJsZV9mb290ZXJfYm9yZGVyX3N0eWxlOiBzb2xpZDtcblx0Ly8kdGFibGVfZm9vdGVyX2JvcmRlcl9jb2xvcjogJGJyYW5kX3RlcnRpYXJ5OyIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOb3JtYWxpemUgUGFydGlhbFxuLy8gTWFrZXMgYnJvd3NlcnMgcmVuZGVyIGFsbCBlbGVtZW50cyBtb3JlIGNvbnNpc3RlbnRseS5cbi8vIG5vcm1hbGl6ZS5jc3MgdjIuMS4zIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5hcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtYWluLCBuYXYsIHNlY3Rpb24sIHN1bW1hcnkgeyBkaXNwbGF5OiBibG9jazsgfVxuYXVkaW8sIGNhbnZhcywgdmlkZW8geyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7IGRpc3BsYXk6IG5vbmU7IGhlaWdodDogMDsgfVxuW2hpZGRlbl0sIHRlbXBsYXRlIHsgZGlzcGxheTogbm9uZTsgfVxuXG5cbi8vIEJhc2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5odG1sIHsgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IH1cbmJvZHkgeyBtYXJnaW46IDA7IH1cbiosICo6YmVmb3JlLCAqOmFmdGVyIHsgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OyAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuXG4vLyBMaW5rc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmEgeyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuYTpmb2N1cyB7IG91dGxpbmU6IHRoaW4gZG90dGVkOyB9XG5hOmFjdGl2ZSwgYTpob3ZlciB7IG91dGxpbmU6IDA7IH1cblxuXG4vLyBUeXBvZ3JhcGh5XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuaDEgeyBmb250LXNpemU6IDJlbTsgbWFyZ2luOiAwLjY3ZW0gMDsgfVxuYWJiclt0aXRsZV0geyBib3JkZXItYm90dG9tOiAxcHggZG90dGVkOyB9XG5iLCBzdHJvbmcgeyBmb250LXdlaWdodDogYm9sZDsgfVxuZGZuIHsgZm9udC1zdHlsZTogaXRhbGljOyB9XG5ociB7IC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7IGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDA7IH1cbm1hcmsgeyBiYWNrZ3JvdW5kOiAjZmYwOyBjb2xvcjogIzAwMDsgfVxuY29kZSwga2JkLCBwcmUsIHNhbXAgeyBmb250LWZhbWlseTogbW9ub3NwYWNlLCBzZXJpZjsgZm9udC1zaXplOiAxZW07IH1cbnByZSB7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgfVxucSB7IHF1b3RlczogXCJcXDIwMUNcIiBcIlxcMjAxRFwiIFwiXFwyMDE4XCIgXCJcXDIwMTlcIjsgfVxuc21hbGwgeyBmb250LXNpemU6IDgwJTsgfVxuc3ViLCBzdXAgeyBmb250LXNpemU6IDc1JTsgbGluZS1oZWlnaHQ6IDA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5zdXAgeyB0b3A6IC0wLjVlbTsgfVxuc3ViIHsgYm90dG9tOiAtMC4yNWVtOyB9XG5cblxuLy8gRW1iZWRkZWQgY29udGVudFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmltZywgaWZyYW1lLCB2aWRlbyB7IG1heC13aWR0aDogMTAwJTsgfVxuaW1nIHsgaGVpZ2h0OiBhdXRvOyBib3JkZXI6IDA7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbnN2Zzpub3QoOnJvb3QpIHsgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG5cbi8vIEZpZ3VyZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5maWd1cmUgeyBtYXJnaW46IDA7IH1cblxuXG4vLyBGb3Jtc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmZpZWxkc2V0IHsgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDsgbWFyZ2luOiAwIDJweDsgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtOyB9XG5sZWdlbmQgeyBib3JkZXI6IDA7IHBhZGRpbmc6IDA7IH1cbmJ1dHRvbiwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEgeyBmb250LWZhbWlseTogaW5oZXJpdDsgZm9udC1zaXplOiAxMDAlOyBtYXJnaW46IDA7IH1cbmJ1dHRvbiwgaW5wdXQgeyBsaW5lLWhlaWdodDogbm9ybWFsOyB9XG5idXR0b24sIHNlbGVjdCB7IHRleHQtdHJhbnNmb3JtOiBub25lOyB9XG5idXR0b24sXG5odG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIGlucHV0W3R5cGU9XCJyZXNldFwiXSwgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7IGJvcmRlcjogMDsgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IGN1cnNvcjogcG9pbnRlcjsgfVxuYnV0dG9uW2Rpc2FibGVkXSwgaHRtbCBpbnB1dFtkaXNhYmxlZF0geyBjdXJzb3I6IGRlZmF1bHQ7IH1cbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSwgaW5wdXRbdHlwZT1cInJhZGlvXCJdIHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGluZzogMDsgfVxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7IC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyB9XG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLCBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHsgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9XG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsIGlucHV0OjotbW96LWZvY3VzLWlubmVyIHsgYm9yZGVyOiAwOyBwYWRkaW5nOiAwOyB9XG50ZXh0YXJlYSB7IG92ZXJmbG93OiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB9XG50ZXh0YXJlYSwgaW5wdXQgeyBvdXRsaW5lOiBub25lOyB9XG5cblxuLy8gVGFibGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxudGFibGUgeyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBib3JkZXItc3BhY2luZzogMDsgfSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUeXBvZ3JhcGh5IFBhcnRpYWxcbi8vIFN0eWxlcyBmb3Igb3ZlcmFsbCB0eXBvZ3JhcGh5IGFuZCBtaXNjLiBjb250ZW50IGNvbXBvbmVudHMuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIEN1c3RvbSBGb250c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEBpbmNsdWRlIGRlY2xhcmUtZm9udC1mYWNlKCdGb250IE5hbWUnLCAnZm9udC1sb2NhdGlvbi1yZWxhdGl2ZS10by1mb250cy1mb2xkZXInKTtcbi8vIEBpbXBvcnQgdXJsKC8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcGVuK1NhbnM6MzAwaXRhbGljLDYwMGl0YWxpYywzMDAsNDAwLDYwMCk7XG5cbkBmb250LWZhY2Uge1xuXHRmb250LWZhbWlseTonT3BlbiBTYW5zJztcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zX2dkaS5lb3QnKTtcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zX2dkaS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnNfZ2RpLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zX2dkaS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fuc19nZGkuc3ZnI09wZW5TYW5zLVJlZ3VsYXInKSBmb3JtYXQoJ3N2ZycpO1xuXHRmb250LXdlaWdodDogNDAwO1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG5cdGZvbnQtc3RyZXRjaDogbm9ybWFsO1xuXHR1bmljb2RlLXJhbmdlOiBVKzAwMjAtMjVDQTtcbn1cblxuQGZvbnQtZmFjZSB7XG5cdGZvbnQtZmFtaWx5OidPcGVuIFNhbnMnO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnMtSXRhbGljX2dkaS5lb3QnKTtcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLUl0YWxpY19nZGkuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLUl0YWxpY19nZGkud29mZicpIGZvcm1hdCgnd29mZicpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtSXRhbGljX2dkaS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1JdGFsaWNfZ2RpLnN2ZyNPcGVuU2Fucy1JdGFsaWMnKSBmb3JtYXQoJ3N2ZycpO1xuXHRmb250LXdlaWdodDogNDAwO1xuXHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdGZvbnQtc3RyZXRjaDogbm9ybWFsO1xuXHR1bmljb2RlLXJhbmdlOiBVKzAwMjAtMjVDQTtcbn1cblxuQGZvbnQtZmFjZSB7XG5cdGZvbnQtZmFtaWx5OidPcGVuIFNhbnMnO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnMtTGlnaHRfZ2RpLmVvdCcpO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnMtTGlnaHRfZ2RpLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1MaWdodF9nZGkud29mZicpIGZvcm1hdCgnd29mZicpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtTGlnaHRfZ2RpLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLUxpZ2h0X2dkaS5zdmcjT3BlblNhbnMtTGlnaHQnKSBmb3JtYXQoJ3N2ZycpO1xuXHRmb250LXdlaWdodDogMzAwO1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG5cdGZvbnQtc3RyZXRjaDogbm9ybWFsO1xuXHR1bmljb2RlLXJhbmdlOiBVKzAwMjAtMjVDQTtcbn1cblxuQGZvbnQtZmFjZSB7XG5cdGZvbnQtZmFtaWx5OidPcGVuIFNhbnMnO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnNMaWdodC1JdGFsaWNfZ2RpLmVvdCcpO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnNMaWdodC1JdGFsaWNfZ2RpLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fuc0xpZ2h0LUl0YWxpY19nZGkud29mZicpIGZvcm1hdCgnd29mZicpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnNMaWdodC1JdGFsaWNfZ2RpLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zTGlnaHQtSXRhbGljX2dkaS5zdmcjT3BlblNhbnNMaWdodC1JdGFsaWMnKSBmb3JtYXQoJ3N2ZycpO1xuXHRmb250LXdlaWdodDogMzAwO1xuXHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdGZvbnQtc3RyZXRjaDogbm9ybWFsO1xuXHR1bmljb2RlLXJhbmdlOiBVKzAwMjAtMjVDQTtcbn1cblxuQGZvbnQtZmFjZSB7XG5cdGZvbnQtZmFtaWx5OidPcGVuIFNhbnMnO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnMtU2VtaWJvbGRfZ2RpLmVvdCcpO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnMtU2VtaWJvbGRfZ2RpLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1TZW1pYm9sZF9nZGkud29mZicpIGZvcm1hdCgnd29mZicpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtU2VtaWJvbGRfZ2RpLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLVNlbWlib2xkX2dkaS5zdmcjT3BlblNhbnMtU2VtaWJvbGQnKSBmb3JtYXQoJ3N2ZycpO1xuXHRmb250LXdlaWdodDogNjAwO1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG5cdGZvbnQtc3RyZXRjaDogbm9ybWFsO1xuXHR1bmljb2RlLXJhbmdlOiBVKzAwMjAtMjVDQTtcbn1cbkBmb250LWZhY2Uge1xuXHRmb250LWZhbWlseTonT3BlbiBTYW5zJztcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLVNlbWlib2xkSXRhbGljX2dkaS5lb3QnKTtcblx0c3JjOiB1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLVNlbWlib2xkSXRhbGljX2dkaS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtU2VtaWJvbGRJdGFsaWNfZ2RpLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLVNlbWlib2xkSXRhbGljX2dkaS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1TZW1pYm9sZEl0YWxpY19nZGkuc3ZnI09wZW5TYW5zLVNlbWlib2xkSXRhbGljJykgZm9ybWF0KCdzdmcnKTtcblx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRmb250LXN0cmV0Y2g6IG5vcm1hbDtcblx0dW5pY29kZS1yYW5nZTogVSswMDIwLTI1Q0E7XG59XG5cblxuLy8gR2xvYmFsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuaHRtbCwgYm9keSB7XG5cdGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgc2Fucy1zZXJpZjtcblx0Y29sb3I6ICRjb2xvcl83O1xuXHRmb250LXdlaWdodDo0MDA7XG5cblx0LyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXG5cdEBpbmNsdWRlIGJhY2tmYWNlLXZpc2liaWxpdHkoaGlkZGVuKTtcbn1cbmhyIHt9XG5cblxuLy8gSGVhZGluZ3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcblx0Zm9udC13ZWlnaHQ6NDAwO1xuXG59XG5oMSwgLmgxIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRmb250LXNpemU6IDM2cHg7XG59XG5oMiB7XG5cdGZvbnQtc2l6ZTogMjJweDtcbn1cblxuLy8gUGFyYWdyYXBoc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbnAge31cbnN0cm9uZyB7fVxuXG5cbi8vIExpbmtzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuYSB7IFxuXHR0ZXh0LWRlY29yYXRpb246bm9uZTsgXG5cdGNvbG9yOiAkY29sb3JfcHJpbWFyeTtcblx0Jjpob3ZlciB7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtcblx0fVxufVxuXG5cbi8vIExpc3RzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxudWwsIG9sLCBkbCB7fVxuXG5cblx0Ly8gVW5vcmRlcmVkXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0dWwge31cblx0dWwgbGkge31cblxuXG5cdC8vIE9yZGVyZWRcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRvbCB7fVxuXHRvbCBsaSB7fVxuXG5cblx0Ly8gRGVmaW5pdGlvblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdGRsIHt9XG5cdGR0IHsgZm9udC13ZWlnaHQ6NDAwOyB9XG5cdGRkIHt9XG5cblxuLy8gQmxvY2txdW90ZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5ibG9ja3F1b3RlIHtcblx0Ym9yZGVyLWxlZnQ6IDVweCBzb2xpZCAkY29sb3JfNjtcblx0cGFkZGluZzogMjBweDtcblx0YmFja2dyb3VuZDogJGNvbG9yX3RlcnRpYXJ5O1xuXHRwOmZpcnN0LWNoaWxkIHtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHR9XG59XG5cbi8vIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbkBmb250LWZhY2Uge1xuXHRmb250LWZhbWlseTogJ2ljb21vb24nO1xuXHRzcmM6dXJsKCdmb250cy9pY29tb29uLmVvdD9uMHdibjgnKTtcblx0c3JjOnVybCgnZm9udHMvaWNvbW9vbi5lb3Q/I2llZml4bjB3Ym44JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuXHRcdHVybCgnZm9udHMvaWNvbW9vbi53b2ZmP24wd2JuOCcpIGZvcm1hdCgnd29mZicpLFxuXHRcdHVybCgnZm9udHMvaWNvbW9vbi50dGY/bjB3Ym44JykgZm9ybWF0KCd0cnVldHlwZScpLFxuXHRcdHVybCgnZm9udHMvaWNvbW9vbi5zdmc/bjB3Ym44I2ljb21vb24nKSBmb3JtYXQoJ3N2ZycpO1xuXHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbltjbGFzc149XCJpY29uLVwiXSwgW2NsYXNzKj1cIiBpY29uLVwiXSB7XG5cdGZvbnQtZmFtaWx5OiAnaWNvbW9vbic7XG5cdHNwZWFrOiBub25lO1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdGZvbnQtdmFyaWFudDogbm9ybWFsO1xuXHR0ZXh0LXRyYW5zZm9ybTogbm9uZTtcblx0bGluZS1oZWlnaHQ6IDE7XG5cblx0LyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4uaWNvbi1sZWdhbDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTAwXCI7XG59XG4uaWNvbi1zZXJ2aWNlczpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTAxXCI7XG59XG4uaWNvbi1jb250ZW50LWNvcHk6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYxYVwiO1xufVxuLmljb24tcGVuY2lsOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MTdcIjtcbn1cbi5pY29uLXN0YWNrOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MWJcIjtcbn1cbi5pY29uLXVzZXI6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYwNVwiO1xufVxuLmljb24tc3Bpbm5lcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjA2XCI7XG59XG4uaWNvbi1zZWFyY2g6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYxNlwiO1xufVxuLmljb24tY29nOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MDdcIjtcbn1cbi5pY29uLWxlYWY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYwOFwiO1xufVxuLmljb24tc3dpdGNoOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MDlcIjtcbn1cbi5pY29uLW1lbnU6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYwYVwiO1xufVxuLmljb24tZ2xvYmU6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYwYlwiO1xufVxuLmljb24tZWFydGg6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYwY1wiO1xufVxuLmljb24taW5mbzpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjBkXCI7XG59XG4uaWNvbi1jYW5jZWwtY2lyY2xlOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MGVcIjtcbn1cbi5pY29uLWNoZWNrbWFyay1jaXJjbGU6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYwZlwiO1xufVxuLmljb24tc3BhbTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjEwXCI7XG59XG4uaWNvbi1jbG9zZTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjExXCI7XG59XG4uaWNvbi1jaGVja21hcms6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYxMlwiO1xufVxuLmljb24tbWludXM6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYxM1wiO1xufVxuLmljb24tcGx1czpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjE0XCI7XG59XG4uaWNvbi1zaGFyZTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjE1XCI7XG59XG4uaWNvbi1mYWNlYm9vazpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjAxXCI7XG59XG4uaWNvbi1pbnN0YWdyYW06YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYwMlwiO1xufVxuLmljb24tdHdpdHRlcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjAzXCI7XG59XG4uaWNvbi15b3V0dWJlOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MDRcIjtcbn1cbi5pY29uLWZpbGUtcGRmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MWNcIjtcbn1cbi5pY29uLWZpbGUtd29yZDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjFkXCI7XG59XG4uaWNvbi1maWxlLWV4Y2VsOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MWVcIjtcbn1cbi5pY29uLWZpbGUtcG93ZXJwb2ludDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjFmXCI7XG59XG4uaWNvbi1jaGV2cm9uLXJpZ2h0OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MThcIjtcbn1cbi5pY29uLWNoZXZyb24tbGVmdDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjE5XCI7XG59XG4uaWNvbi1saW5rZWRpbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjAwXCI7XG59XG5cbiIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTdHlsZSBndWlkZSBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIHNwZWNpZmljIGNvbXBvbmVudHMgb24gdGhlIHN0eWxlZ3VpZC5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zdHlsZWd1aWRlIHtcblx0aDEge1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdH1cblx0LmNvbG9yLXN3YXRjaGVzIHtcblx0XHRtYXJnaW46MDtcblx0XHRwYWRkaW5nOjA7XG5cdFx0Y29sb3I6ICNmZmY7XG5cdFx0bGlzdC1zdHlsZTpub25lO1xuXHRcdEBpbmNsdWRlIGRpc3BsYXkoZmxleCk7XG5cdFx0bGkge1xuXHRcdFx0Ly8gZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0cGFkZGluZzoyZW0gMDtcblx0XHRcdHdpZHRoOjZlbTtcblx0XHRcdG1hcmdpbjogNXB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdH1cblx0XHQuaW52ZXJ0IHtcblx0XHRcdGNvbG9yOiAjMDAwO1xuXHRcdH1cblx0XHQuYm9yZGVyIHtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNjM2MzYzM7XG5cdFx0fVxuXHRcdFxuXHRcdC5jLWNjMDAwMCB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfcHJpbWFyeTtcblx0XHR9XG5cdFx0LmMtMDAwMDAwIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl9zZWNvbmRhcnk7XG5cdFx0fVxuXHRcdC5jLWZmZmZmZiB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfdGVydGlhcnk7XG5cdFx0fVxuXHRcdC5jLWYyZjJmMiB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfNDtcblx0XHR9XG5cdFx0LmMtY2NjY2NjIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl81O1xuXHRcdH1cblx0XHQuYy02NjY2NjYge1xuXHRcdFx0YmFja2dyb3VuZDogJGNvbG9yXzY7XG5cdFx0fVxuXHRcdC5jLTMzMzMzMyB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfNztcblx0XHR9XG5cdFx0LmMtOTkwMDAwIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl84O1xuXHRcdH1cblx0XHQuYy1kMTQ5MDUge1xuXHRcdFx0YmFja2dyb3VuZDogJGNvbG9yXzk7XG5cdFx0fVxuXHRcdC5jLWZkZDcyNiB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfMTA7XG5cdFx0fVxuXHRcdC5jLTdkOGMxZiB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfMTE7XG5cdFx0fVxuXHRcdC5jLTQyN2U5MyB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfMTI7XG5cdFx0fVxuXHRcdC5jLTQxNTZhMSB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfMTM7XG5cdFx0fVxuXHR9XG5cblx0Ly8gY29kZSBzeXRheCBwbHVnaW4oYnkgRGF2ZSBEZWtrZXIpXG5cdC5jb2RlLWJsb2NrIHtcblx0ICAgIC8vIHdpZHRoOiA5NiU7XG5cdH1cblxuXHQudG9nZ2xlLWNvZGUtYmxvY2sge1xuXHQgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0ICBtYXJnaW4tYm90dG9tOiA1cHg7XG5cdH1cblxuXHRjb2RlIHtcblx0ICBoZWlnaHQ6IDA7XG5cdCAgcGFkZGluZzogMCAhaW1wb3J0YW50OyAvLyBvdmVycmlkZSBzeW50YXggcGx1Z2luIHN0eWxlc1xuXHQgIGJhY2tncm91bmQ6ICMwMDA7XG5cdCAgb3ZlcmZsb3c6IGhpZGRlbjtcblx0ICB3aWR0aDogMTAwJTtcblx0ICBcblx0ICAmLnNob3cge1xuXHQgICAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50OyAvLyBvdmVycmlkZSBzeW50YXggcGx1Z2luIHN0eWxlc1xuXHQgICAgaGVpZ2h0OiBhdXRvO1xuXHQgICAgZGlzcGxheTogYmxvY2s7XG5cdCAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuXHQgIH1cblx0fVxuXHQucGFnZS10aXRsZSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXHQuY29tcG9uZW50LXRpdGxlIHtcblx0XHRjb2xvcjokY29sb3JfNztcblx0fVxuXHQuY29kZS1jb250YWluZXIge1xuXHRcdGJhY2tncm91bmQ6JGNvbG9yXzU7XG5cdFx0cGFkZGluZzoyMHB4O1xuXHR9XG5cblx0Ly8gU3VibGltZSBUaGVtZVxuXHQvKlxuXG5cdE1vbm9rYWkgU3VibGltZSBzdHlsZS4gRGVyaXZlZCBmcm9tIE1vbm9rYWkgYnkgbm9mb3Jtbm9jb250ZW50IGh0dHA6Ly9ubi5taXQtbGljZW5zZS5vcmcvXG5cblx0Ki9cblxuXHQuaGxqcyB7XG5cdCAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHQgIHBhZGRpbmc6IDAuNWVtO1xuXHQgIGJhY2tncm91bmQ6ICMyMzI0MWY7XG5cdH1cblxuXHQuaGxqcyxcblx0LmhsanMtdGFnLFxuXHQuY3NzIC5obGpzLXJ1bGVzLFxuXHQuY3NzIC5obGpzLXZhbHVlLFxuXHQuY3NzIC5obGpzLWZ1bmN0aW9uXG5cdC5obGpzLXByZXByb2Nlc3Nvcixcblx0LmhsanMtcHJhZ21hIHtcblx0ICBjb2xvcjogI2Y4ZjhmMjtcblx0fVxuXG5cdC5obGpzLXN0cm9uZ2VtcGhhc2lzLFxuXHQuaGxqcy1zdHJvbmcsXG5cdC5obGpzLWVtcGhhc2lzIHtcblx0ICBjb2xvcjogI2E4YThhMjtcblx0fVxuXG5cdC5obGpzLWJ1bGxldCxcblx0LmhsanMtYmxvY2txdW90ZSxcblx0LmhsanMtaG9yaXpvbnRhbF9ydWxlLFxuXHQuaGxqcy1udW1iZXIsXG5cdC5obGpzLXJlZ2V4cCxcblx0LmFsaWFzIC5obGpzLWtleXdvcmQsXG5cdC5obGpzLWxpdGVyYWwsXG5cdC5obGpzLWhleGNvbG9yIHtcblx0ICBjb2xvcjogI2FlODFmZjtcblx0fVxuXG5cdC5obGpzLXRhZyAuaGxqcy12YWx1ZSxcblx0LmhsanMtY29kZSxcblx0LmhsanMtdGl0bGUsXG5cdC5jc3MgLmhsanMtY2xhc3MsXG5cdC5obGpzLWNsYXNzIC5obGpzLXRpdGxlOmxhc3QtY2hpbGQge1xuXHQgIGNvbG9yOiAjYTZlMjJlO1xuXHR9XG5cblx0LmhsanMtbGlua191cmwge1xuXHQgIGZvbnQtc2l6ZTogODAlO1xuXHR9XG5cblx0LmhsanMtc3Ryb25nLFxuXHQuaGxqcy1zdHJvbmdlbXBoYXNpcyB7XG5cdCAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cdH1cblxuXHQuaGxqcy1lbXBoYXNpcyxcblx0LmhsanMtc3Ryb25nZW1waGFzaXMsXG5cdC5obGpzLWNsYXNzIC5obGpzLXRpdGxlOmxhc3QtY2hpbGQge1xuXHQgIGZvbnQtc3R5bGU6IGl0YWxpYztcblx0fVxuXG5cdC5obGpzLWtleXdvcmQsXG5cdC5obGpzLWZ1bmN0aW9uLFxuXHQuaGxqcy1jaGFuZ2UsXG5cdC5obGpzLXdpbnV0aWxzLFxuXHQuaGxqcy1mbG93LFxuXHQubGlzcCAuaGxqcy10aXRsZSxcblx0LmNsb2p1cmUgLmhsanMtYnVpbHRfaW4sXG5cdC5uZ2lueCAuaGxqcy10aXRsZSxcblx0LnRleCAuaGxqcy1zcGVjaWFsLFxuXHQuaGxqcy1oZWFkZXIsXG5cdC5obGpzLWF0dHJpYnV0ZSxcblx0LmhsanMtc3ltYm9sLFxuXHQuaGxqcy1zeW1ib2wgLmhsanMtc3RyaW5nLFxuXHQuaGxqcy10YWcgLmhsanMtdGl0bGUsXG5cdC5obGpzLXZhbHVlLFxuXHQuYWxpYXMgLmhsanMta2V5d29yZDpmaXJzdC1jaGlsZCxcblx0LmNzcyAuaGxqcy10YWcsXG5cdC5jc3MgLnVuaXQsXG5cdC5jc3MgLmhsanMtaW1wb3J0YW50IHtcblx0ICBjb2xvcjogI2Y5MjY3Mjtcblx0fVxuXG5cdC5obGpzLWZ1bmN0aW9uIC5obGpzLWtleXdvcmQsXG5cdC5obGpzLWNsYXNzIC5obGpzLWtleXdvcmQ6Zmlyc3QtY2hpbGQsXG5cdC5obGpzLWNvbnN0YW50LFxuXHQuY3NzIC5obGpzLWF0dHJpYnV0ZSB7XG5cdCAgY29sb3I6ICM2NmQ5ZWY7XG5cdH1cblxuXHQuaGxqcy12YXJpYWJsZSxcblx0LmhsanMtcGFyYW1zLFxuXHQuaGxqcy1jbGFzcyAuaGxqcy10aXRsZSB7XG5cdCAgY29sb3I6ICNmOGY4ZjI7XG5cdH1cblxuXHQuaGxqcy1zdHJpbmcsXG5cdC5jc3MgLmhsanMtaWQsXG5cdC5obGpzLXN1YnN0LFxuXHQuaGFza2VsbCAuaGxqcy10eXBlLFxuXHQucnVieSAuaGxqcy1jbGFzcyAuaGxqcy1wYXJlbnQsXG5cdC5obGpzLWJ1aWx0X2luLFxuXHQuZGphbmdvIC5obGpzLXRlbXBsYXRlX3RhZyxcblx0LmRqYW5nbyAuaGxqcy12YXJpYWJsZSxcblx0LnNtYWxsdGFsayAuaGxqcy1jbGFzcyxcblx0LmRqYW5nbyAuaGxqcy1maWx0ZXIgLmhsanMtYXJndW1lbnQsXG5cdC5zbWFsbHRhbGsgLmhsanMtbG9jYWx2YXJzLFxuXHQuc21hbGx0YWxrIC5obGpzLWFycmF5LFxuXHQuaGxqcy1hdHRyX3NlbGVjdG9yLFxuXHQuaGxqcy1wc2V1ZG8sXG5cdC5obGpzLWFkZGl0aW9uLFxuXHQuaGxqcy1zdHJlYW0sXG5cdC5obGpzLWVudnZhcixcblx0LmFwYWNoZSAuaGxqcy10YWcsXG5cdC5hcGFjaGUgLmhsanMtY2JyYWNrZXQsXG5cdC50ZXggLmhsanMtY29tbWFuZCxcblx0LmhsanMtcHJvbXB0LFxuXHQuaGxqcy1saW5rX2xhYmVsLFxuXHQuaGxqcy1saW5rX3VybCB7XG5cdCAgY29sb3I6ICNlNmRiNzQ7XG5cdH1cblxuXHQuaGxqcy1jb21tZW50LFxuXHQuaGxqcy1qYXZhZG9jLFxuXHQuamF2YSAuaGxqcy1hbm5vdGF0aW9uLFxuXHQucHl0aG9uIC5obGpzLWRlY29yYXRvcixcblx0LmhsanMtdGVtcGxhdGVfY29tbWVudCxcblx0LmhsanMtcGksXG5cdC5obGpzLWRvY3R5cGUsXG5cdC5obGpzLWRlbGV0aW9uLFxuXHQuaGxqcy1zaGViYW5nLFxuXHQuYXBhY2hlIC5obGpzLXNxYnJhY2tldCxcblx0LnRleCAuaGxqcy1mb3JtdWxhIHtcblx0ICBjb2xvcjogIzc1NzE1ZTtcblx0fVxuXG5cdC5jb2ZmZWVzY3JpcHQgLmphdmFzY3JpcHQsXG5cdC5qYXZhc2NyaXB0IC54bWwsXG5cdC50ZXggLmhsanMtZm9ybXVsYSxcblx0LnhtbCAuamF2YXNjcmlwdCxcblx0LnhtbCAudmJzY3JpcHQsXG5cdC54bWwgLmNzcyxcblx0LnhtbCAuaGxqcy1jZGF0YSxcblx0LnhtbCAucGhwLFxuXHQucGhwIC54bWwge1xuXHQgIG9wYWNpdHk6IDAuNTtcblx0fVxuXG59XG4iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2xvYmFsIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgZ2xvYmFsIGxheW91dC5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBMYXlvdXRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5ib2R5IHtcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXHRiYWNrZ3JvdW5kOiAjZjJmMmYyO1xuXG5cbn1cblxuLmhlYWRlci1jb250YWluZXIsXG4uY29udGVudC1jb250YWluZXIsXG4uZm9vdGVyLWNvbnRhaW5lciB7XG5cblx0LndyYXBwZXIge1xuXHRcdEBpbmNsdWRlIG91dGVyLWNvbnRhaW5lcjtcblx0XHRwYWRkaW5nOiAwIDEwcHg7XG5cdH1cblx0XG59XG5cbi5jb250ZW50LWNvbnRhaW5lciB7XG5cdC8vIHBhZGRpbmctdG9wOjEwMHB4O1xuXHRoMSB7XG5cdFx0bWFyZ2luOiA0MHB4IDA7XG5cdFx0c3VwIHtcblx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAzMDA7XG5cdFx0XHR0b3A6IC0wLjllbTtcblx0XHR9XG5cdH1cblx0LnBhZ2UtdGVtcGxhdGUtcGFnZS1zZWNvbmRhcnktcGhwICYge1xuXHRcdHBhZGRpbmctdG9wOjEwcHg7XG5cdH1cblx0bWFyZ2luLWJvdHRvbTo2MHB4O1xufVxuXG4ud3JhcHBlciB7fSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIZWFkZXIgUGFydGlhbFxuLy8gU3R5bGVzIGZvciBoZWFkZXIgbGF5b3V0LlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSGVhZGVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJGhlYWRlckhlaWdodDogMTAwcHg7XG5cbiRidXR0b25QcmltYXJ5OiAkY29sb3JfcHJpbWFyeTtcbiRidXR0b25TZWNvbmRhcnk6ICRjb2xvcl90ZXJ0aWFyeTtcbi5oZWFkZXItY29udGFpbmVyIHtcblx0YmFja2dyb3VuZDogI2ZmZjtcblx0bGVmdDowO1xuXHRyaWdodDowO1xuXHR6LWluZGV4OiAzMDA7XG5cdEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAwLjJzIGxpbmVhcik7XG5cdC5sb2dvIHtcblx0XHRmbG9hdDpsZWZ0O1xuXHRcdGZvbnQtc2l6ZTogMDtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRcdGEge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0aW1nIHtcblx0XHRcdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDAuMnMgbGluZWFyKTtcblx0XHRcdFx0cGFkZGluZzoyMHB4O1xuXHRcdFx0fVxuXHRcdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDowO1xuXHRcdFx0XHRcdGJvcmRlci1yaWdodDogMXB4IHNvbGlkICMwMDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0XG5cdG5hdi5wcmltYXJ5IHsgXG5cdFx0d2lkdGg6NTUlOyBcblx0XHRmbG9hdDpyaWdodDsgXG5cdFx0bWFyZ2luLXJpZ2h0OjUwcHg7XG5cdFx0bWFyZ2luLXRvcDozMHB4O1xuXHRcdEBpbmNsdWRlIHRyYW5zaXRpb24gKG1hcmdpbiAwLjJzIGxpbmVhcik7XG5cblx0XHRidXR0b24ge1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDAuMnMgbGluZWFyKTtcblx0XHRcdGRpc3BsYXk6bm9uZTtcblx0XHRcdGJhY2tncm91bmQ6JGJ1dHRvblByaW1hcnk7XG5cdFx0XHRoZWlnaHQ6NDVweDtcblx0XHRcdHdpZHRoOiA0OHB4O1xuXHRcdFx0dG9wOiAyNXB4O1xuXHRcdFx0cmlnaHQ6IDIwcHg7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdHRleHQtaW5kZW50OiAtOTk5OXB4O1xuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHdpZHRoOiA2OCU7XG5cdFx0XHRcdGhlaWdodDogNXB4O1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAkYnV0dG9uU2Vjb25kYXJ5O1xuXHRcdFx0XHR0b3A6IDEwcHg7XG5cdFx0XHRcdGxlZnQ6IDE2JTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAxMHB4IDAgJGJ1dHRvblNlY29uZGFyeSwgMCAyMHB4IDAgJGJ1dHRvblNlY29uZGFyeTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRAaW5jbHVkZSBtZWRpYShtYXgtd2lkdGggOTYwcHgpIHtcblx0XHRcdHBvc2l0aW9uOmZpeGVkO1xuXHRcdFx0d2lkdGg6MTAwJTtcblx0XHRcdHRvcDogMDtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0XHRyaWdodDogMDtcblx0XHRcdHotaW5kZXg6IDEwMDtcblxuXHRcdFx0YnV0dG9uIHtcblx0XHRcdFx0ZGlzcGxheTpibG9jaztcblx0XHRcdH1cblx0XHRcdD4gdWwge1xuXHRcdFx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMC4zcyBsaW5lYXIpO1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiRjb2xvcl80O1xuXHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHRtYXgtaGVpZ2h0OjA7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0cmlnaHQ6IC01MHB4O1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0dG9wOjEwMHB4O1xuXHRcdFx0XHRwYWRkaW5nOjA7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0LnNoYXJlIHsgXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHJpZ2h0OjA7XG5cdFx0ei1pbmRleDogNTAwO1xuXHR9XG5cdFxuXHRoZWFkZXIge1xuXHRcdEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAwLjJzIGxpbmVhcik7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0aGVpZ2h0OiAkaGVhZGVySGVpZ2h0O1xuXHRcdHBhZGRpbmc6IDAgMTBweDtcblx0XHQucGFnZS10ZW1wbGF0ZS1wYWdlLXNlY29uZGFyeS1waHAgJiB7XG5cdFx0XHRoZWlnaHQ6ICRoZWFkZXJIZWlnaHQrNDBweDtcblx0XHR9XG5cdH1cbn1cblxuXG5cbi5oZWFkcm9vbSB7XG4gICAgXG4gICBcbn1cbi5oZWFkcm9vbS0tcGlubmVkIHtcbiAgICAvLyBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgwJSkpO1xuXG59XG5ib2R5LmhlYWRyb29tLS11bnBpbm5lZCB7XG4gICAgLy8gQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTEwMCUpKTtcblxuICAgXG4gICAgLmhlYWRlci1jb250YWluZXIge1xuXHRcdHBvc2l0aW9uOmZpeGVkO1xuXHRcdGhlYWRlciB7XG5cdFx0XHRoZWlnaHQ6NzBweDtcblx0XHRcdC5sb2dvIHtcblx0XHRcdFx0bWFyZ2luLXRvcDogMTBweDtcblxuXHRcdFx0XHRpbWcge1xuXHRcdFx0XHRcdHBhZGRpbmctdG9wOjVweDtcblx0XHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogNXB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHRcdG5hdi5wcmltYXJ5IHsgXG5cdFx0XHRAaW5jbHVkZSBtZWRpYSg5NjBweCkge1xuXHRcdFx0XHRtYXJnaW4tdG9wOjE1cHg7XG5cdFx0XHR9XG5cdFx0XHQ+IHVsIHtcblx0XHRcdFx0dG9wOjcwcHg7XG5cdFx0XHRcdC5zdWItbWVudSB7XG5cdFx0XHRcdFx0dG9wOjcwcHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YnV0dG9uIHtcblx0XHRcdFx0dG9wOiAxMHB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQmLnBhZ2UtdGVtcGxhdGUtcGFnZS1zZWNvbmRhcnktcGhwICB7XG5cdFx0LmNvbnRlbnQtY29udGFpbmVyIHtcblx0XHRcdHBhZGRpbmctdG9wOiAkaGVhZGVySGVpZ2h0ICsgNDBweDs7XG4gICAgXHR9XG4gICAgXHQuaGVhZGVyLWNvbnRhaW5lciBoZWFkZXIge1xuICAgIFx0XHRoZWlnaHQ6NzBweDtcblx0XHR9XG5cdH1cblx0XG59XG4uaGVhZHJvb20tLW5vdC10b3Age1xuXG5cdFxuXHRcblx0XG59IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRlbnQgUGFydGlhbFxuLy8gU3R5bGVzIGZvciBjb250ZW50IGxheW91dC5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRlbnRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4uY29udGVudC1jb250YWluZXIge1xuXHRwYWRkaW5nLXRvcDogNDBweDtcblx0LmhlYWRyb29tLS11bnBpbm5lZCAmIHtcblx0XHRwYWRkaW5nLXRvcDogMTMwcHg7XG4gICAgfVxuXG5cdC5zdWItbmF2IHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0QGluY2x1ZGUgbWVkaWEobWF4LXdpZHRoIDk2MHB4KSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0XHRsZWZ0OiAwO1xuXHRcdHotaW5kZXg6IDMwMTtcblx0XHRjb2xvcjokY29sb3JfdGVydGlhcnk7XG5cdFx0cGFkZGluZzogMTMuNXB4IDEwcHg7XG5cdFx0dG9wOjEwMHB4O1xuXHRcdEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAwLjJzIGxpbmVhcik7XG5cdFx0LmhlYWRyb29tLS11bnBpbm5lZCAmIHtcblx0XHRcdHRvcDo3MHB4O1xuXHRcdH1cblxuXHRcdHNwYW4ge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xuXHRcdH1cblx0fVxuXHQuY29udGVudC13cmFwcGVyIHt9XG5cblx0LmNvbnRlbnQge31cblx0LmFzaWRlIHt9XG5cdFxuXHQuYWxpZ25sZWZ0IHtcblx0XHRmbG9hdDogbGVmdDtcblx0XHRtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cdH1cblxuXHQubGNwX3BhZ2luYXRvciB7XG5cdFx0YmFja2dyb3VuZDogJGNvbG9yXzc7XG5cdFx0Y29sb3I6JGNvbG9yX3RlcnRpYXJ5O1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6MDtcblx0XHRsaSB7XG5cdFx0XHRib3JkZXI6bm9uZTtcblx0XHRcdHNwYW4ge1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdHBhZGRpbmc6MTBweCAyMHB4O1xuXHRcdFx0fVxuXHRcdFx0YSB7XG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdFx0cGFkZGluZzoxMHB4IDIwcHg7XG5cdFx0XHRcdGNvbG9yOiRjb2xvcl81O1xuXG5cdFx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRcdGNvbG9yOiRjb2xvcl90ZXJ0aWFyeTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQubGNwX2NhdGxpc3Qge1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOjA7XG5cdH1cbn0iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRm9vdGVyIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgZm9vdGVyIGxheW91dC5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEZvb3RlclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi5mb290ZXItY29udGFpbmVyIHtcblx0bWFyZ2luLXRvcDogMjBweDtcblx0YmFja2dyb3VuZDogJGNvbG9yX3NlY29uZGFyeTtcblx0Y29sb3I6ICRjb2xvcl90ZXJ0aWFyeTtcblx0cGFkZGluZy1ib3R0b206NTBweDtcblxuXHQuY3JlZGl0cyB7XG5cdFx0YmFja2dyb3VuZDogJGNvbG9yX3ByaW1hcnk7XG5cdFx0XG5cdFx0dWwge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFx0XHRsaSB7XG5cdFx0XHRcdHBhZGRpbmc6IDMwcHggMDtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRAaW5jbHVkZSBtZWRpYSg3NjhweCkge1xuXHRcdFx0XHRcdHdpZHRoOjI3JTtcblx0XHRcdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdFx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0XHRcdHdpZHRoOjQ2JTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRcdHBhZGRpbmc6MjdweCAwO1xuXHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGEge1xuXHRcdGNvbG9yOiNmZmY7XG5cdH1cblx0Zm9vdGVyIHtcblx0XHRtYXJnaW4tdG9wOiAyMHB4O1xuXHRcdGgyIHtcblx0XHRcdGZvbnQtc2l6ZTogMjRweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdFx0fVxuXHRcdCY+ZGl2IHtcblx0XHRcdEBpbmNsdWRlIG1lZGlhKDk2MHB4KSB7XG5cdFx0ICAgXG5cdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHR3aWR0aDoyNyU7XG5cdFx0XHRcdFxuXHRcdFx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0XHR3aWR0aDogNDYlO1xuXHRcdFx0XHRcdHBhZGRpbmctcmlnaHQ6IDMwcHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0LnNvY2lhbC1iYXIge1xuXHRcdFx0aDIge1xuXHRcdFx0XHRAaW5jbHVkZSBtZWRpYSg5NjBweCkge1xuXHRcdFx0XHRcdG1pbi1oZWlnaHQ6IDcwcHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHVsIHtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRsaXN0LXN0eWxlOiBub25lO1xuXHRcdFx0XHRtYXJnaW46MDtcblx0XHRcdFx0cGFkZGluZzowO1xuXHRcdFx0XHRsaSB7XG5cdFx0XHRcdFx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG5cdFx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHRcdGJvcmRlci1yaWdodDpub25lO1xuXHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHRcdHdpZHRoOiA0OHB4O1xuXHRcdFx0XHRcdGhlaWdodDogNDhweDtcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRcdGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjb2xvcl90ZXJ0aWFyeTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0XHQvLyB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdFx0XHR3aWR0aDoxMDAlO1xuXHRcdFx0XHRcdFx0dG9wOiAwO1xuXHRcdFx0XHRcdFx0Ym90dG9tOiAwO1xuXHRcdFx0XHRcdFx0Ly8gcGFkZGluZzogMTBweDtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMS41ZW07XG5cdFx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0dG9wOiA1MCU7XG5cdCAgXHRcdFx0XHRcdFx0bGVmdDogNTAlO1xuXHQgIFx0XHRcdFx0XHRcdEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUoLTUwJSwtNTAlKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRcblxuXHRcdH1cblx0fVxufSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBbGVydHMgUGFydGlhbFxuLy8gU3R5bGVzIHRoYXQgaGVscCBjb21tdW5pY2F0ZSBzdWNjZXNzLCB3YXJuaW5ncywgZmFpbHVyZXMsIGV0Yy5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIENocm9tZSBGcmFtZSAtIGZvciB1bnN1cHBvcnRlZCB2ZXJzaW9ucyBvZiBJRVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi5jaHJvbWVmcmFtZSB7XG5cblx0YSB7fVxuXG59XG5cblxuLy8gQWxlcnRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLmFsZXJ0LWJveCB7XG5cblx0Ji5pbmZvIHt9XG5cdCYuZXJyb3Ige31cblx0Ji5zdWNjZXNzIHt9XG5cbn0iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQW5pbWF0aW9ucyBQYXJ0aWFsXG4vLyBDdXN0b20ga2V5ZnJhbWVkIGFuaW1hdGlvbnMgdG8gYmUgdXNlZCBpbiB0aGUgc2l0ZS9hcHBsaWNhdGlvblxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCdXR0b25zIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdmFyaW91cyB0cmFkaXRpb25hbCBhY3Rpb25zLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBWYXJpYWJsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQnV0dG9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSwgYnV0dG9uLCBhLmJ1dHRvbiB7XG5cdEBpbmNsdWRlIHJlbShwYWRkaW5nLCAxMHB4IDIwcHgpO1xuXHRAaW5jbHVkZSByZW0obWFyZ2luLCAwIDAgMTBweCk7XG5cdGJhY2tncm91bmQtY29sb3I6ICRjb2xvcl9wcmltYXJ5O1xuXHRjb2xvcjogcmdiYSgjZmZmLCAxKTtcblx0QGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMzAwbXMgZWFzZS1pbi1vdXQpO1xuXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkY29sb3JfcHJpbWFyeSwgMTAlKTtcblx0fVxufSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGb3JtcyBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIHZhcmlvdXMgZm9ybXMgYW5kIGZvcm0gZWxlbWVudHMuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBWYXJpYWJsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gV3JhcHBlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5mb3JtIHt9XG5cblxuXHQvLyBMZWdlbmRcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRsZWdlbmQge31cblxuXG5cdC8vIEZpZWxkc2V0cyAvIFdyYXBwZXJzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0ZmllbGRzZXQge31cblxuXHRcdC5maWVsZCwgLmZpZWxkcGFpciwgLmZpZWxkZ3JvdXAge31cblx0XHQuZmllbGRwYWlyLCAuZmllbGRncm91cCB7fVxuXG5cdFx0Ly8gRmllbGQgUGFpclxuXHRcdC5maWVsZHBhaXIgPiAuZmllbGQge31cblx0XHQuZmllbGRwYWlyID4gLmZpZWxkOmZpcnN0LWNoaWxkIHt9XG5cblx0XHQvLyBGaWVsZCBHcm91cFxuXHRcdC5maWVsZGdyb3VwIC5maWVsZCB7fVxuXG5cblx0Ly8gQ2hlY2tib3hlcyAmIFJhZGlvc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC5jaGVja2JveGVzLCAucmFkaW9zIHtcblxuXHRcdHVsIHt9XG5cdFx0aW5wdXQgKyBsYWJlbCB7fVxuXG5cdH1cblxuXG5cdC8vIExhYmVsc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdGxhYmVsIHt9XG5cblx0XHQvLyBGaWVsZGdyb3VwIExhYmVsXG5cdFx0LmZpZWxkZ3JvdXAtbGFiZWwge31cblxuXHRcdC8vIENoZWNrYm94LCBSYWRpbyBMYWJlbHNcblx0XHQuZmllbGRncm91cC1sYWJlbCArIHVsLFxuXHRcdC5maWVsZGdyb3VwLWxhYmVsICsgb2wge31cblx0XHQuZmllbGRncm91cC1sYWJlbCArIHVsIGxpLFxuXHRcdC5maWVsZGdyb3VwLWxhYmVsICsgb2wgbGksXG5cdFx0LmZpZWxkZ3JvdXAtbGFiZWwgKyB1bCBsYWJlbCxcblx0XHQuZmllbGRncm91cC1sYWJsZSArIG9sIGxhYmVsIHt9XG5cdGxhYmVsIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG5cdC8vIEZpZWxkc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdGlucHV0IHtcblx0XHQmW3R5cGU9XCJ0ZXh0XCJdLFxuXHRcdCZbdHlwZT1cImVtYWlsXCJdIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlcjogMXB4IHNvbGlkICRjb2xvcl9wcmltYXJ5O1xuXHRcdFx0QGluY2x1ZGUgcmVtKHBhZGRpbmcsIDhweCAxMHB4KTtcblx0XHRcdEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsIDMwMCBlYXNlLWluLW91dCk7XG5cdFx0fVxuXHRcdC8vIENoZWNrYm94ICYgUmFkaW9cblx0XHQmW3R5cGU9XCJjaGVja2JveFwiXSArIGxhYmVsLFxuXHRcdCZbdHlwZT1cInJhZGlvXCJdICsgbGFiZWwge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAyNXB4O1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAxNXB4O1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cblx0XHRcdFx0d2lkdGg6IDE2cHg7XG5cdFx0XHRcdGhlaWdodDogMTZweDtcblxuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0bGVmdDogMDtcblx0XHRcdFx0Ym90dG9tOiAxcHg7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdCZbdHlwZT1cImNoZWNrYm94XCJdICsgbGFiZWwge1xuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHQvLyBib3JkZXItcmFkaXVzOiA4cHg7XG5cdFx0XHRcdGJvcmRlcjoxcHggc29saWQgZGFya2VuKCNmMmYyZjIsMzAlKTtcblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdCZbdHlwZT1cInJhZGlvXCJdICsgbGFiZWwge1xuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA4cHg7XG5cdFx0XHRcdGJvcmRlcjoxcHggc29saWQgZGFya2VuKCNmMmYyZjIsMzAlKTtcblx0XHRcdH1cblxuXHRcdH1cblx0XHQmW3R5cGU9XCJjaGVja2JveFwiXSxcblx0XHQmW3R5cGU9XCJyYWRpb1wiXSB7XG5cdFx0XHRcblx0XHRcdGRpc3BsYXk6IG5vbmU7ICBcblxuXHRcdH1cblxuXHRcdCZbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUge1xuXHRcdCAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2MwMDAwO1xuXHRcdCAgICBjb2xvcjogI2YzZjNmMztcblx0XHQgICAgZm9udC1zaXplOiAzMnB4O1xuXHRcdCAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0ICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuXHRcdCAgICBib3JkZXI6MXB4IHNvbGlkIGRhcmtlbigjY2MwMDAwLDIwJSk7XG5cdFx0fVxuXHRcdCZbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQgKyBsYWJlbDphZnRlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuXHRcdFx0d2lkdGg6IDhweDtcblx0XHRcdGhlaWdodDogOHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNHB4O1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogNHB4O1xuXHRcdFx0dG9wOiA1cHg7XG5cdFx0fVxuXG5cdFx0Jlt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7XG5cdFx0ICAgIGJhY2tncm91bmQtY29sb3I6ICNjYzAwMDA7XG5cdFx0ICAgIGNvbG9yOiAjZjNmM2YzO1xuXHRcdCAgICBmb250LXNpemU6IDMycHg7XG5cdFx0ICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHQgICAgbGluZS1oZWlnaHQ6IDE0cHg7XG5cdFx0ICAgIGJvcmRlcjoxcHggc29saWQgZGFya2VuKCNjYzAwMDAsMjAlKTtcblx0XHR9XG5cdFx0Jlt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHtcblx0XHRcdC8vIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG5cdFx0XHR3aWR0aDogN3B4O1xuXHRcdFx0aGVpZ2h0OiAxMnB4O1xuXHRcdFx0Ly8gYm9yZGVyLXJhZGl1czogNHB4O1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSg0NWRlZykpO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogNXB4O1xuXHRcdFx0dG9wOiAxcHg7XG5cdFx0XHRib3JkZXItcmlnaHQ6M3B4IHNvbGlkICNmZmY7XG5cdFx0XHRib3JkZXItYm90dG9tOjNweCBzb2xpZCAjZmZmO1xuXHRcdH1cblxuXHRcdCZbdHlwZT1cImNoZWNrYm94XCJdOmZvY3VzLCAmW3R5cGU9XCJyYWRpb1wiXTpmb2N1cyB7fVxuXHRcdFxuXG5cblxuXHRcdC8vIFNlYXJjaFxuXHRcdCZbdHlwZT1cInNlYXJjaFwiXSB7fVxuXHRcdCZbdHlwZT1cInNlYXJjaFwiXTo6LW1zLWNsZWFyIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0Ly8gRmlsZVxuXHRcdCZbdHlwZT1cImZpbGVcIl0ge31cblxuXHRcdC8vIEZvY3VzXG5cdFx0Jjpmb2N1cyB7fVxuXG5cdH1cblx0dGV4dGFyZWEge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlcjogMXB4IHNvbGlkICRjb2xvcl9wcmltYXJ5O1xuXHRcdEBpbmNsdWRlIHJlbShwYWRkaW5nLCA4cHggMTBweCk7XG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMzAwIGVhc2UtaW4tb3V0KTtcblx0fVxuXG5cdC8vIEN1c3RvbSBDaGVja2JveGVzICsgUmFkaW9zXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0OnJvb3Qge1xuXG5cdFx0Ly8gQ29tbW9uXG5cdFx0LnJhZGlvIGxhYmVsLFxuXHRcdC5jaGVja2JveCBsYWJlbCB7fVxuXHRcdC5jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG5cdFx0LnJhZGlvIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7fVxuXG5cdFx0Ly8gQ3VzdG9tIFJhZGlvc1xuXHRcdC5yYWRpbyBsYWJlbDpiZWZvcmUge31cblx0XHQucmFkaW8gaW5wdXRbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUge31cblx0XHQucmFkaW8gaW5wdXRbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQgKyBsYWJlbDphZnRlciB7fVxuXG5cdFx0Ly8gQ3VzdG9tIENoZWNrYm94XG5cdFx0LmNoZWNrYm94IGxhYmVsOmJlZm9yZSB7fVxuXHRcdC5jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7fVxuXG5cdH0iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVkaWEgUGFydGlhbFxuLy8gU3R5bGVzIGZvciB2YXJpb3VzIG11bHRpbWVkaWEgZWxlbWVudHMuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBGaWd1cmVzICYgSW1hZ2VzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZmlndXJlIHtcblxuXHRhIHt9XG5cdGEgPiBpbWcge31cblx0YTpob3ZlciA+IGltZyB7fVxuXG59XG5cblxuLy8gVmlkZW9zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxudmlkZW8ge31cblxuXG4vLyBpRnJhbWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuaWZyYW1lIHt9XG5cblxuLy8gRnJlc2NvIC0gQ3VzdG9taXphdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi5mci1jbG9zZSB7fVxuXG5cbi8vIEdvb2dsZSBNYXBzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLmdvb2dsZS1tYXAgaW1nIHt9IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5hdmlnYXRpb25zIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdmFyaW91cyB0eXBlcyBvZiBuYXZpZ2F0aW9uIGNvbXBvbmVuZXRzLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUHJpbWFyeSBOYXZpZ2F0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxubmF2LnByaW1hcnkge1xuXHQvLyBmb250LXdlaWdodDo0MDA7XG5cdHVsIHtcdFxuXHRcdG1hcmdpbjowO1xuXHRcdHBhZGRpbmc6MDtcblx0fVxuXG5cdFxuXHQ+IHVsIHtcblx0XHQvLyB0b3AgbGV2ZWwgbWFpbiBuYXYgaXRlbXNcblx0XHQ+IGxpIHtcblx0XHRcdCYuY3VycmVudC1tZW51LWl0ZW0ge1xuXHRcdFx0XHQ+IGEge1xuXHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxufVxuXG5cbi5mbGV4LWNvbnRhaW5lciB7XG5cdG1hcmdpbjowO1xuXHRwYWRkaW5nOjA7XG4gIFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XG5cdCZ1bCB7XG5cdFx0Zm9udC1zaXplOiAwO1xuXHR9XG5cblx0bGkge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0QGluY2x1ZGUgbWVkaWEoMTA4OHB4KSB7XG5cdFx0ICAgIC8vIGZvbnQtc2l6ZTogMWVtO1xuXHRcdH1cblx0ICBcdGEge1xuXHRcdFx0XG5cdFx0XHRjb2xvcjogIzMzMztcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0cGFkZGluZzowLjVlbTtcblx0XHRcdC8vIGxpbmUtaGVpZ2h0OjRlbTtcblx0XHRcdFxuXHRcdH1cblx0fVxuXHQuc3ViLW1lbnUge1xuXHRcdEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAwLjJzIGxpbmVhcik7XG5cdCAgICBkaXNwbGF5Om5vbmU7XG5cdCAgICBwb3NpdGlvbjpmaXhlZDtcblx0ICAgIHRvcDogMTAwcHg7XG5cdCAgICBsZWZ0OiAwO1xuXHQgICAgcmlnaHQ6IDA7XG5cdCAgICBsaXN0LXN0eWxlOm5vbmU7XG5cdCAgICBiYWNrZ3JvdW5kOiAkY29sb3JfNztcblx0ICAgIGZvbnQtc2l6ZTogMDtcblx0ICAgIGxpIHtcblx0ICAgIFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHQgICAgXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXG5cdCAgICBcdGEge1xuXHQgICAgXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0ICAgIFx0XHRmb250LXdlaWdodDogNDAwO1xuXHQgICAgXHRcdHBhZGRpbmc6IDEzLjVweCAyMHB4O1xuXHQgICAgXHRcdGNvbG9yOiRjb2xvcl90ZXJ0aWFyeTtcblx0ICAgIFx0XHRsaW5lLWhlaWdodDogMjRweDtcblx0ICAgIFx0fVxuXHQgICAgXG5cdCAgICB9XG5cdCAgLy8gICBAaW5jbHVkZSBtZWRpYShtYXgtd2lkdGggOTYwcHgpIHtcblx0XHRcdC8vIC8vIHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdC8vIGRpc3BsYXk6IG5vbmU7XG5cdCAgLy8gICB9XG5cdH1cbiAgXHQuY3VycmVudF9wYWdlX2l0ZW0sXG4gIFx0LmN1cnJlbnRfcGFnZV9hbmNlc3RvciB7XG5cdCAgXHQuc3ViLW1lbnUge1xuXHQgICAgXHRkaXNwbGF5OmJsb2NrO1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0XHRAaW5jbHVkZSBtZWRpYShtYXgtd2lkdGggOTYwcHgpIHtcblx0XHRcdFx0Ly8gcG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdCAgICB9XG5cdCAgICBcdGxpOmZpcnN0LWNoaWxkIHtcblx0ICAgIFx0XHQvLyB0ZXh0LWFsaWduOiBsZWZ0O1xuXHQgICAgXHRcdC8vIGZsb2F0OiBsZWZ0O1xuXHQgICAgXHRcdC8vIHBhZGRpbmctbGVmdDo0MHB4O1xuXHQgICAgXHR9XG5cdCAgXHR9XG5cdH1cblx0LmN1cnJlbnQtbWVudS1pdGVtLFxuXHQuY3VycmVudC1tZW51LWFuY2VzdG9yIHtcblx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdHVsIGxpIHtcblx0XHRcdGZvbnQtd2VpZ2h0OjMwMDtcblx0XHRcdCYuY3VycmVudC1tZW51LWl0ZW0ge1xuXHRcdFx0XHRmb250LXdlaWdodDogNDAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRcblx0LnN0eWxlZ3VpZGUgJiB7XG5cdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0fVxuXHQmLnNlY29uZGFyeSB7XG5cdFx0bGkgYSB7XG5cdFx0XHRwYWRkaW5nOjAuNWVtO1xuXHRcdFx0bGluZS1oZWlnaHQ6IDNlbTtcblx0XHR9XG5cdH1cbiAgXG59XG5cbi5yaWdodCB7XG5cdC8vIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChmbGV4LWVuZCk7XG5cdHRleHQtYWxpZ246cmlnaHQ7XG59IFxuLm5vLXNjcm9sbCB7XG5cdG92ZXJmbG93OmhpZGRlbjtcbn1cblxuLmZseW91dC1tZW51IHtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6MDtcblx0Ym90dG9tOjA7XG5cdGxlZnQ6MDtcblx0cmlnaHQ6MDtcblx0d2lkdGg6MTAwJTtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApO1xuXHR6LWluZGV4Oi0xO1xuXHQkcGFuZWxXaWR0aDozMDBweDtcblxuXHQmLmFjdGl2ZSB7XG5cdFx0YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7XG5cdFx0ei1pbmRleDogNTAwO1xuXHRcdHVsLCBkaXYge1xuXHRcdFx0ZGlzcGxheTpibG9jaztcblx0XHR9XG5cdH1cblx0aDMge1xuXHRcdGhlaWdodDo3MHB4O1xuXHRcdHBhZGRpbmc6MjBweDtcblx0XHRtYXJnaW46IDA7XG5cdH1cblx0aDQge1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOjEwcHggMjBweDtcblx0fVxuXHR1bCwgZGl2IHtcblx0XHRkaXNwbGF5Om5vbmU7XG5cdH1cblx0W2RhdGEtbGV2ZWxdIHtcblx0XHRkaXNwbGF5OmJsb2NrO1xuXHRcdHBvc2l0aW9uOmFic29sdXRlO1xuXHRcdHJpZ2h0OjA7XG5cdFx0dG9wOiAwO1xuXHRcdGJvdHRvbTowO1xuXHRcdG1pbi13aWR0aDogJHBhbmVsV2lkdGg7XG5cdFx0YmFja2dyb3VuZDokY29sb3JfNDtcblx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMC4ycyBsaW5lYXIpO1xuXHRcdEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKCRwYW5lbFdpZHRoKSk7XG5cdFx0Ym9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjY2MwMDAwO1xuXG5cdFx0Ji5hY3RpdmUge1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoMHB4KSk7XG5cdFx0XHR6LWluZGV4OiA1MDE7XG5cdFx0fVxuXHR9XG5cblx0JltkYXRhLWxldmVsLWFjdGl2ZT1cIjJcIl0ge1xuXHRcdFtkYXRhLWxldmVsPVwiMVwiXSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDQwcHg7XG5cdFx0XHQ+IHVsID4gLmNsb3NlLWJ0biB7XG5cdFx0XHRcdGJhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO1xuXHRcdFx0XHR0b3A6MDtcblx0XHRcdFx0cmlnaHQ6MDtcblx0XHRcdFx0bGVmdDowO1xuXHRcdFx0XHRib3R0b206MDtcblx0XHRcdFx0Y3Vyc29yOnBvaW50ZXI7XG5cdFx0XHR9XHRcdFx0XG5cdFx0fVxuXHRcdFtkYXRhLWxldmVsPVwiMlwiXSB7XG5cdFx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCg0MHB4KSk7XG5cdFx0fVxuXHR9XG5cdCZbZGF0YS1sZXZlbC1hY3RpdmU9XCIzXCJdIHtcblx0XHRbZGF0YS1sZXZlbD1cIjFcIl0ge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA4MHB4O1xuXHRcdH1cblx0XHRbZGF0YS1sZXZlbD1cIjJcIl0ge1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoNDBweCkpO1xuXHRcdFx0PiB1bCA+IC5jbG9zZS1idG4ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTtcblx0XHRcdFx0dG9wOjA7XG5cdFx0XHRcdHJpZ2h0OjA7XG5cdFx0XHRcdGxlZnQ6MDtcblx0XHRcdFx0Ym90dG9tOjA7XG5cdFx0XHRcdGN1cnNvcjpwb2ludGVyO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRbZGF0YS1sZXZlbD1cIjNcIl0ge1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoNDBweCkpO1xuXHRcdH1cblx0fVxuXHQmW2RhdGEtbGV2ZWwtYWN0aXZlPVwiM1wiXSB7XG5cdFx0W2RhdGEtbGV2ZWw9XCIxXCJdIHtcblx0XHRcdD4gdWwgPiAuY2xvc2UtYnRuIHtcblx0XHRcdFx0YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7XG5cdFx0XHRcdHRvcDowO1xuXHRcdFx0XHRyaWdodDowO1xuXHRcdFx0XHRsZWZ0OjA7XG5cdFx0XHRcdGJvdHRvbTowO1xuXHRcdFx0XHRjdXJzb3I6cG9pbnRlcjtcblx0XHRcdH1cdFxuXHRcdH1cblx0fVxuXHRuYXYge1xuXHRcdHVsIHtcblx0XHRcdG1hcmdpbjowO1xuXHRcdFx0cGFkZGluZzowO1xuXHRcdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRcdGxpIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdGJvcmRlci1ib3R0b206MXB4IHNvbGlkICMzMzM7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGEge1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0cGFkZGluZzoxMHB4IDIwcHg7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGNvbG9yOiAjMDAwO1xuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IGRhcmtlbigjYzFjMWMxLCAxMCUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQuY2xvc2UtYnRuIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOjIwcHg7XG5cdFx0cmlnaHQ6MTBweDtcblx0XHRib3JkZXI6bm9uZTtcblx0XHRcblx0XHRidXR0b24ge1xuXHRcdFx0cG9zaXRpb246cmVsYXRpdmU7XG5cdFx0XHR3aWR0aDogMjVweDtcblx0XHRcdGhlaWdodDogMjVweDtcblx0XHRcdGZsb2F0OiByaWdodDtcblx0XHRcdGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7XG5cblx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdHRvcDogNTAlO1xuXHRcdFx0XHRoZWlnaHQ6IDFweDtcblx0XHRcdFx0bGVmdDogMDtcblx0XHRcdFx0YmFja2dyb3VuZDogIzAwMDtcblx0XHRcdFx0Ly8gbGVmdDogLTNlbTtcblx0XHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSg0NWRlZykpO1xuXHRcdFx0fVxuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHR0b3A6IDUwJTtcblx0XHRcdFx0aGVpZ2h0OiAxcHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICMwMDA7XG5cdFx0XHRcdGxlZnQ6IDA7XG5cdFx0XHRcdEBpbmNsdWRlIHRyYW5zZm9ybShyb3RhdGUoLTQ1ZGVnKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHR9XG5cdGg0IHtcblx0XHRjb2xvcjogI2ZmZjtcblx0XHRiYWNrZ3JvdW5kOiNjYzAwMDA7XG5cdH1cblx0XG59XG5cblxuLy8gRm9vdGVyIE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5uYXYuZm9vdGVyIHt9XG5cblxuLy8gVXRpbGl0eSBOYXZpZ2F0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxubmF2LnV0aWxpdHkge31cblxuXG4vLyBCcmVhZGNydW1iIE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4uYnJlYWRjcnVtYnMge31cblxuXG4vLyBQYWdpbmF0aW9uIE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4ucGFnaW5hdGlvbiB7fVxuXG4ucGFnaW5hdGlvbiBzcGFuLCAucGFnaW5hdGlvbiBhIHt9XG4ucGFnaW5hdGlvbiBzcGFuOmZpcnN0LWNoaWxkIHt9XG4ucGFnaW5hdGlvbiBhOmhvdmVyIHt9XG4ucGFnaW5hdGlvbiAuY3VycmVudCB7fSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYW5lbHMgUGFydGlhbFxuLy8gU3R5bGVzIGZvciB2YXJpb3VzIHR5cGVzIG9mIHBhbmVsIGNvbXBvbmVuZXRzLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBQYW5lbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4ucGFuZWwge1xuXG5cblx0Ly8gSGVhZGluZ1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC5wYW5lbC1oZWFkaW5nIHtcblxuXHRcdC5wYW5lbC10aXRsZSB7fVxuXG5cdH1cblxuXHQvLyBDb250ZW50XG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0LnBhbmVsLWNvbnRlbnQge1xuXG5cdFx0JiA+ICo6bGFzdC1jaGlsZCB7fVxuXG5cdH1cblxufSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZWFyY2ggRm9ybSBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIHRoZSBzZWFyY2ggZm9ybS5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlYXJjaCBSZXN1bHRzIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdGhlIHNlYXJjaCByZXN1bHRzLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVGFibGVzIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdGFibGVzIGFuZCB0YWJsZSBjb21wb25lbmV0cy5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFZhcmlhYmxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBUYWJsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG50YWJsZSB7XG5cblx0Ly8gR2xvYmFsXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0dHIge31cblx0dGgsIHRkIHt9XG5cdHRoIHt9XG5cblxuXHQvLyBIZWFkZXIgQ2VsbHNcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHR0aGVhZCB7fVxuXHR0aGVhZCB0aCB7fVxuXG5cblx0Ly8gQm9keSBDZWxsc1xuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdHRib2R5IHRyOm50aC1jaGlsZChldmVuKSB7fVxuXG5cdFx0Ly8gSG92ZXJcblx0XHR0Ym9keSB0cjpob3ZlciB7fVxuXHRcdHRib2R5IHRyOm50aC1jaGlsZChldmVuKTpob3ZlciB7fVxuXG5cblx0Ly8gRm9vdGVyIENlbGxzXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0dGZvb3Qge31cblx0dGZvb3QgdGQge31cblxuXHRcdC8vIEhvdmVyXG5cdFx0dGZvb3QgdHI6aG92ZXIge31cblx0XHR0Zm9vdCB0cjpudGgtY2hpbGQoZXZlbik6aG92ZXIge31cblxuXG59IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNvY2lhbCBIZWFkZXIgUGFydGlhbFxuLy8gU3R5bGVzIGZvciBzb2NpYWwgc2hhcmUgYnV0dG9ucyBpbiBoZWFkZXIuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBWYXJpYWJsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4kZGVmYXVsdC1oZWlnaHQ6IDEwMHB4O1xuJGRlZmF1bHQtd2lkdGg6IDUwcHg7XG4kc21hbGwtaGVpZ2h0OiA3MHB4O1xuJHNtYWxsLXdpZHRoOiAkc21hbGwtaGVpZ2h0O1xuLy9jYWxjdWxhdGUgd2lkdGggYmFzZWQgb24gaG93IG1hbnkgaWNvbnMgYXJlIHVzZWQuXG4kZXhwYW5kZWQtd2lkdGg6ICRkZWZhdWx0LXdpZHRoICsgKCRzbWFsbC13aWR0aCAqIDIpO1xuXG4uc2hhcmUge1xuXHRAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMC4ycyBlYXNlLWluLW91dCk7XG5cdGhlaWdodDogJGRlZmF1bHQtaGVpZ2h0O1xuXHR3aWR0aDogJGRlZmF1bHQtd2lkdGg7XG5cblx0YmFja2dyb3VuZDogIzMzMzMzMztcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXG5cdHVsIHtcblx0XHRtYXJnaW46MDtcblx0XHRwYWRkaW5nOjA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMC4ycyBlYXNlLWluLW91dCk7XG5cdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoIC0oJGRlZmF1bHQtaGVpZ2h0IC8gMikgKSk7XG5cblx0XHRsaSB7XG5cdFx0XHRhIHtcblx0XHRcdFx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG5cdFx0XHRcdHdpZHRoOiAkZGVmYXVsdC13aWR0aDtcblx0XHRcdFx0aGVpZ2h0OiAkZGVmYXVsdC1oZWlnaHQgLyAyO1xuXHRcdFx0XHR0ZXh0LWluZGVudDogLTk5OTlweDtcblx0XHQgICAgXHR3aGl0ZS1zcGFjZTogbm93cmFwO1x0XHRcdFxuXHRcdCAgICB9XG5cdFx0ICAgIC50b2dnbGUge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiMzMzMzMzMgdXJsKC4uL2ltZy9zb2NpYWwtc2hhcmUucG5nKSBuby1yZXBlYXQgY2VudGVyO1xuXHRcdCAgICB9XG5cdFx0XHQuZmIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiMzYjU5OTggdXJsKC4uL2ltZy9zb2NpYWwtZmIucG5nKSBuby1yZXBlYXQgY2VudGVyO1xuXHRcdFx0fVxuXHRcdFx0LnR3aXR0ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiMwMGFjZWQgdXJsKC4uL2ltZy9zb2NpYWwtdHdpdHRlci5wbmcpIG5vLXJlcGVhdCBjZW50ZXI7XG5cdFx0XHR9XG5cdFx0fVx0XG5cdH1cblxuXHQuaGVhZHJvb20tLW5vdC10b3AgJiB7XG5cdFx0aGVpZ2h0OiAkc21hbGwtaGVpZ2h0O1xuXG5cdFx0dWwge1xuXHRcdFx0d2lkdGg6JGV4cGFuZGVkLXdpZHRoO1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMHB4KSk7XG5cdFx0XHRsaSB7XG5cdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHRhIHtcblx0XHRcdFx0XHR3aWR0aDokc21hbGwtaGVpZ2h0O1xuXHRcdFx0XHRcdGhlaWdodDokc21hbGwtaGVpZ2h0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRcdGEge1xuXHRcdFx0XHRcdFx0d2lkdGg6JGRlZmF1bHQtaGVpZ2h0IC8gMjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzIHtcblx0XHRcdHdpZHRoOiRleHBhbmRlZC13aWR0aDtcdFxuXHRcdH1cblx0fVxufVxuIiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDQwNCBQYWdlIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdGhlIDQwNCBFcnJvciBQYWdlLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gRXJyb3IgNDA0XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLmVycm9yNDA0IHt9IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhvbWUgUGFnZSBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIHRoZSBob21lIHBhZ2UuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5ib2R5LmhvbWUge1xuXHQuY29udGVudC1jb250YWluZXIge1xuXHRcdHBhZGRpbmctdG9wOjA7XG5cdH1cblx0Ji5oZWFkcm9vbS0tdW5waW5uZWQge1xuXHRcdC5jb250ZW50LWNvbnRhaW5lciB7XG5cdFx0XHRwYWRkaW5nLXRvcDogMTAwcHg7XG5cdFx0fVxuXHR9XG59XG5cbi5zZWFyY2gtY29udGFpbmVyIHtcblx0YmFja2dyb3VuZDogJGNvbG9yX3ByaW1hcnk7XG5cdGNvbG9yOiAkY29sb3JfdGVydGlhcnk7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6MTAwJTtcblx0LnNlYXJjaC16aXAge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0fVxuXHRoMiB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdC8vIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2KTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRwYWRkaW5nOiAyMHB4IDA7XG5cdFx0XG5cdFx0bWFyZ2luOiAyMHB4IDA7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvcl90ZXJ0aWFyeTtcblx0XHRAaW5jbHVkZSBtZWRpYSgkZGVza3RvcCkge1xuXHRcdFx0cGFkZGluZy1yaWdodDogNDBweDtcblx0XHRcdGJvcmRlcjpub25lO1xuXHRcdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0XHR3aWR0aDo1MCU7XG5cdFx0XHRmbG9hdDpsZWZ0O1xuXHRcdH1cblx0fVxuXHRmb3JtIHtcblx0XHRmb250LXNpemU6IDA7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdEBpbmNsdWRlIG1lZGlhKCRkZXNrdG9wKSB7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdHdpZHRoOiA1MCU7XG5cdFx0XHRwYWRkaW5nOiAyMHB4IDA7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdH1cblx0XHRcblx0XHQvLyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0LmlucHV0IHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdG1hcmdpbi1ib3R0b206NDBweDtcblx0XHRcdEBpbmNsdWRlIG1lZGlhKCRkZXNrdG9wKSB7XG5cdFx0XHRcdG1hcmdpbjowO1xuXHRcdFx0XHRwYWRkaW5nOiAxM3B4IDA7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiA0MHB4O1xuXHRcdFx0fVxuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0bGFiZWwge1xuXHRcdFx0XHRwYWRkaW5nOiAxMHB4IDA7XG5cdFx0XHRcdHBhZGRpbmctcmlnaHQ6MTBweDtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdFxuXHRcdFx0fVxuXHRcdFx0aW5wdXRbdHlwZT10ZXh0XSB7XG5cdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHRib3JkZXI6bm9uZTsgXG5cdFx0XHRcdHRleHQtc2hhZG93OiBub25lO1xuXHRcdFx0XHRib3gtc2hhZG93Om5vbmU7XG5cdFx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0XHRcdHBhZGRpbmctbGVmdDogMzBweDtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRtYXgtd2lkdGg6IDE5MHB4O1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl90ZXJ0aWFyeSB1cmwoLi4vaW1nL3NlYXJjaC1nbG9iZS1pY29uLnBuZykgbm8tcmVwZWF0IDEwcHggY2VudGVyO1xuXHRcdFx0fVxuXHRcdFx0aW5wdXRbdHlwZT1zdWJtaXRdIHtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdGJhY2tncm91bmQ6IGRhcmtlbigkY29sb3JfOCwxMCUpO1xuXHRcdFx0XHRjb2xvcjogJGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdG1pbi13aWR0aDogMTEwcHg7XG5cdFx0XHR9XG5cdFx0XHQuZXJyb3Ige1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdHRvcDogNDBweDtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0Ji5hY3RpdmUge1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9XG5cdFx0XG5cdH1cbn1cbiNjaGFydF9kaXYge1xuXHRtaW4taGVpZ2h0Ojg4MHB4O1xuXHRvdmVyZmxvdzpoaWRkZW47XG59XG4jY2hhcnRfZGl2IHBhdGgge1xuXHQvLyBzdHJva2Utd2lkdGg6MTsgXG5cdHN0cm9rZTojZmZmO1xuXG5cdCY6aG92ZXIge1xuXHRcdHN0cm9rZTojZmRkNzI2O1xuXHRcdGZpbGw6I2ZkZDcyNjtcblx0XHRjdXJzb3I6cG9pbnRlcjtcblx0fVxufVxuLnRvb2x0aXAge1xuXHRoMyB7XG5cdFx0Y29sb3I6JGNvbG9yX3ByaW1hcnk7XG5cdFx0cGFkZGluZy1ib3R0b206MDtcblx0XHRtYXJnaW4tYm90dG9tOjVweDtcblx0fVxuXHRcblx0d2lkdGg6IDIwMHB4O1xufVxuLmdvb2dsZS12aXN1YWxpemF0aW9uLXRvb2x0aXAtaXRlbTpmaXJzdC1jaGlsZCB7XG5cdGRpc3BsYXk6bm9uZTtcbn1cblxuLm1hcC1jb250YWluZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OmhpZGRlbjtcblxuXHQjY2hhcnRfZGl2IHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHRcdEBpbmNsdWRlIG1lZGlhKCRkZXNrdG9wKSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbi1sZWZ0OjMwcHg7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IC0zMHB4O1xuXHRcdH1cblx0fVxuXHRoMiB7XG5cdFx0Zm9udC1zaXplOiAzMnB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LXdlaWdodDogNDAwO1xuXHRcdG1hcmdpbjogNDBweCAwO1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cblx0LmN0YS1idXR0b25zIHtcblx0XHRkaXNwbGF5Om5vbmU7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJGRlc2t0b3ApIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdH1cblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0cmlnaHQ6IDUwcHg7XG5cdFx0Ym90dG9tOiA2MHB4O1xuXHRcdHVsIHtcblx0XHRcdEBpbmNsdWRlIGNsZWFyZml4O1xuXHRcdFx0bWFyZ2luOjA7XG5cdFx0XHRwYWRkaW5nOjAgMCA1cHg7XG5cdFx0XHRsaXN0LXN0eWxlOm5vbmU7XG5cblx0XHRcdGxpIHtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDVweDtcblxuXHRcdFx0XHRhIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkY29sb3JfNTtcblx0XHRcdFx0XHRwYWRkaW5nOjVweCAxMHB4O1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6JGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHRcdGNvbG9yOiAkY29sb3JfNjtcblx0XHRcdFx0XHQuY3RhLWljb24ge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRcdFx0XHRcdGNvbG9yOiAkY29sb3JfdGVydGlhcnk7XG5cdFx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiRjb2xvcl82O1xuXHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdFx0XHRcdHdpZHRoOjQ4cHg7XG5cdFx0XHRcdFx0XHRoZWlnaHQ6NDhweDtcblx0XHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiA0OHB4O1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA1cHg7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbWcge1xuXHRcdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA1cHg7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdFx0XHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFtjbGFzc149XCJpY29uLVwiXSwgW2NsYXNzKj1cIiBpY29uLVwiXSB7XG5cdFx0XHRcdFx0XHRjb2xvcjokY29sb3JfNTtcblx0XHRcdFx0XHRcdHBhZGRpbmctbGVmdDoyMHB4O1xuXHRcdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDQ4cHg7XG5cdFx0XHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0XHRcdGJhY2tncm91bmQ6JGNvbG9yXzQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC5tb2JpbGUtbGlzdCB7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJGRlc2t0b3ApIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHRcdG1hcmdpbi10b3A6IDMwcHg7XG5cdFx0dWwge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZzowO1xuXHRcdFx0bGlzdC1zdHlsZTpub25lO1xuXHRcdFx0QGluY2x1ZGUgb3V0ZXItY29udGFpbmVyO1xuXHRcdFx0bGkge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfNztcblx0XHRcdFx0Y29sb3I6ICRjb2xvcl90ZXJ0aWFyeTtcblxuXHRcdFx0XHQmLnRhYmxldC1oZWFkZXIsXG5cdFx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRcdHBhZGRpbmc6MTBweCAyMHB4O1xuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0XHRcdFx0d2lkdGg6IDQwcHg7XG5cdFx0XHRcdFx0XHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0cGFkZGluZzoxMHB4IDIwcHg7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRcdHNwYW4ge1xuXHRcdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRcdFx0Y29sb3I6JGNvbG9yXzY7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdCY6bnRoLWNoaWxkKDJuKzMpIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAjZWZlZmVmO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHQmOm50aC1jaGlsZCgybis0KSB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogJGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHR9XG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKG1heC13aWR0aCAkdGFibGV0KSB7XG5cdFx0XHRcdFx0Ly8gQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDIgb2YgMik7XG5cdFx0XHRcdFx0Ly8gQGluY2x1ZGUgb21lZ2EoMm4pO1xuXHRcdFx0XHRcdCYudGFibGV0LWhlYWRlciB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKCR0YWJsZXQpIHtcblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0biszKSxcblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0bis0KSB7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAjZWZlZmVmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0bis1KSxcblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0bis2KSB7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfdGVydGlhcnk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucygzIG9mIDYpO1xuXHRcdFx0XHRcdC8vIEBpbmNsdWRlIG9tZWdhLXJlc2V0KDJuKTtcblx0XHRcdFx0XHRAaW5jbHVkZSBvbWVnYSgybik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH1cblx0fVxufVxuXG4vLyBTcG9uc29ycyBMaXN0XG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi5zcG9uc29yLWNvbnRhaW5lciB7XG5cdGJhY2tncm91bmQ6ICNmZmY7XG59XG5cbi5zcG9uc29ycy1saXN0IHtcblx0cGFkZGluZzogMDtcblx0bWFyZ2luOiAwO1xuXHRsaXN0LXN0eWxlOiBub25lO1xuXHRcblx0QGluY2x1ZGUgbWVkaWEoJHRhYmxldCkge1xuXHRcdEBpbmNsdWRlIGFsaWduLWl0ZW1zKGNlbnRlcik7XG5cdFx0QGluY2x1ZGUgZGlzcGxheShmbGV4KTtcblx0XHRAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbihyb3cpO1xuXHRcdEBpbmNsdWRlIGp1c3RpZnktY29udGVudChjZW50ZXIpO1xuXHR9XG5cblx0LnNwb25zb3Ige1xuXHRcdHdpZHRoOiAyNTBweDtcblx0XHRwYWRkaW5nOiAyMHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdFxuXHRcdEBpbmNsdWRlIG1lZGlhKCR0YWJsZXQpIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGVscGVycyBQYXJ0aWFsXG4vLyBWYXJpb3VzIGNsYXNzZXMgdGhhdCB3aWxsIGhlbHAgY2xlYW4gdXAgbGF5b3V0cyBhbmQgc3R5bGVzXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uaXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0ZXh0LWluZGVudDogLTk5OWVtO1xuICAgIGRpcmVjdGlvbjogbHRyO1xuICAgICpsaW5lLWhlaWdodDogMDtcbiAgICBiciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4udmlzdWFsbHloaWRkZW4ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gICAgbWFyZ2luOiAtMXB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBib3JkZXI6IDA7XG4gICAgJi5mb2N1c2FibGUge1xuICAgICAgICAmOmFjdGl2ZSxcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICBjbGlwOiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5pbnZpc2libGUge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuLmdyb3VwIHtcbiAgICAqem9vbTogMTtcbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICB9XG59XG5cbi8vIFByZXZlbnQgbGF5b3V0IGJyZWFrIHdpdGggR29vZ2xlIEFkV29yZHNcbmltZ1tzcmMqPVwiZ29vZ2xlYWRzZXJ2aWNlcy5jb21cIl0ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTkwMDBlbTtcbn0iLCIvLyBWYXJpYWJsZSBzZXR0aW5ncyBmb3IgL2FkZG9ucy9wcmVmaXhlci5zY3NzXG4kcHJlZml4LWZvci13ZWJraXQ6ICAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1tb3ppbGxhOiAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1vcGVyYTogICAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1zcGVjOiAgICAgIHRydWUgIWRlZmF1bHQ7IC8vIHJlcXVpcmVkIGZvciBrZXlmcmFtZSBtaXhpblxuIiwiJGVtLWJhc2U6IDE2cHggIWRlZmF1bHQ7XG4iLCJAZnVuY3Rpb24gX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXR5cGUsICRncmFkaWVudC1wb3NpdGlvbnMpIHtcbiAgQGlmICRncmFkaWVudC1wb3NpdGlvbnNcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIpXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcbiAgfVxuICBAZWxzZSBpZiAkZ3JhZGllbnQtcG9zaXRpb25zXG4gIGFuZCAoJGdyYWRpZW50LXR5cGUgPT0gcmFkaWFsKVxuICBhbmQgKHR5cGUtb2YoJGdyYWRpZW50LXBvc2l0aW9ucykgIT0gY29sb3IpIHtcbiAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvc2l0aW9ucyk7XG4gIH1cbiAgQHJldHVybiAkZ3JhZGllbnQtcG9zaXRpb25zO1xufVxuIiwiQGZ1bmN0aW9uIF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkcG9zKSB7XG4gICR0eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XG4gICRzcGVjOiBudWxsO1xuICAkZGVncmVlOiBudWxsO1xuICAkc2lkZTogbnVsbDtcbiAgJGNvcm5lcjogbnVsbDtcbiAgJGxlbmd0aDogbGVuZ3RoKCRwb3MpO1xuICAvLyBQYXJzZSBTaWRlIGFuZCBjb3JuZXIgcG9zaXRpb25zXG4gIEBpZiAoJGxlbmd0aCA+IDEpIHtcbiAgICBAaWYgbnRoKCRwb3MsIDEpID09IFwidG9cIiB7IC8vIE5ld2VyIHN5bnRheFxuICAgICAgJHNpZGU6IG50aCgkcG9zLCAyKTtcblxuICAgICAgQGlmICRsZW5ndGggPT0gMiB7IC8vIGVnLiB0byB0b3BcbiAgICAgICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHlcbiAgICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDIpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7IC8vIGVnLiB0byB0b3AgbGVmdFxuICAgICAgICAkY29ybmVyOiBudGgoJHBvcywgMyk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMiB7IC8vIE9sZGVyIHN5bnRheCAoXCJ0b3AgbGVmdFwiKVxuICAgICAgJHNpZGU6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAxKSk7XG4gICAgICAkY29ybmVyOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xuICAgIH1cblxuICAgIEBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgbGVmdFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgcmlnaHRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJyaWdodCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIHJpZ2h0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwibGVmdCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIGxlZnRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICAkc3BlYzogdG8gJHNpZGUgJGNvcm5lcjtcbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDEge1xuICAgIC8vIFN3YXAgZm9yIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5XG4gICAgQGlmICR0eXBlID09IHN0cmluZyB7XG4gICAgICAkZGVncmVlOiAkcG9zO1xuICAgICAgJHNwZWM6IHRvIF9wb3NpdGlvbi1mbGlwcGVyKCRwb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkZGVncmVlOiAtMjcwIC0gJHBvczsgLy9yb3RhdGUgdGhlIGdyYWRpZW50IG9wcG9zaXRlIGZyb20gc3BlY1xuICAgICAgJHNwZWM6ICRwb3M7XG4gICAgfVxuICB9XG4gICRkZWdyZWU6IHVucXVvdGUoJGRlZ3JlZSArIFwiLFwiKTtcbiAgJHNwZWM6ICAgdW5xdW90ZSgkc3BlYyArIFwiLFwiKTtcbiAgQHJldHVybiAkZGVncmVlICRzcGVjO1xufVxuXG5AZnVuY3Rpb24gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcykge1xuIEByZXR1cm4gaWYoJHBvcyA9PSBsZWZ0LCByaWdodCwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gcmlnaHQsIGxlZnQsIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IHRvcCwgYm90dG9tLCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSBib3R0b20sIHRvcCwgbnVsbCk7XG59XG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1hcmctcGFyc2VyKCRHMSwgJEcyLCAkcG9zLCAkc2hhcGUtc2l6ZSkge1xuICBAZWFjaCAkdmFsdWUgaW4gJEcxLCAkRzIge1xuICAgICRmaXJzdC12YWw6IG50aCgkdmFsdWUsIDEpO1xuICAgICRwb3MtdHlwZTogIHR5cGUtb2YoJGZpcnN0LXZhbCk7XG4gICAgJHNwZWMtYXQtaW5kZXg6IG51bGw7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgc3BlYyB3YXMgcGFzc2VkIHRvIG1peGluXG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBsaXN0IHtcbiAgICAgICRzcGVjLWF0LWluZGV4OiBpZihpbmRleCgkdmFsdWUsIGF0KSwgaW5kZXgoJHZhbHVlLCBhdCksIGZhbHNlKTtcbiAgICB9XG4gICAgQGlmICRzcGVjLWF0LWluZGV4IHtcbiAgICAgIEBpZiAkc3BlYy1hdC1pbmRleCA+IDEge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkc3BlYy1hdC1pbmRleCAtIDEpIHtcbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHNoYXBlLXNpemUgbnRoKCR2YWx1ZSwgJGkpO1xuICAgICAgICB9XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHNwZWMtYXQtaW5kZXggPT0gMSB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJEcxOiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIG5vdCBzcGVjIGNhbGN1bGF0ZSBjb3JyZWN0IHZhbHVlc1xuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAoJHBvcy10eXBlICE9IGNvbG9yKSBvciAoJGZpcnN0LXZhbCAhPSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAgICAgQGlmICgkcG9zLXR5cGUgPT0gbnVtYmVyKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNlbnRlclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInRvcFwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInJpZ2h0XCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiYm90dG9tXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwibGVmdFwiKSB7XG5cbiAgICAgICAgICAkcG9zOiAkdmFsdWU7XG5cbiAgICAgICAgICBAaWYgJHBvcyA9PSAkRzEge1xuICAgICAgICAgICAgJEcxOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmXG4gICAgICAgICAgICgkZmlyc3QtdmFsID09IFwiZWxsaXBzZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNpcmNsZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3QtY29ybmVyXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiZmFydGhlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImZhcnRoZXN0LWNvcm5lclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvbnRhaW5cIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb3ZlclwiKSB7XG5cbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHZhbHVlO1xuXG4gICAgICAgICAgQGlmICR2YWx1ZSA9PSAkRzEge1xuICAgICAgICAgICAgJEcxOiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlbHNlIGlmICR2YWx1ZSA9PSAkRzIge1xuICAgICAgICAgICAgJEcyOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRHMSwgJEcyLCAkcG9zLCAkc2hhcGUtc2l6ZTtcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvcykge1xuICAkc2hhcGUtc2l6ZTogbnRoKCRncmFkaWVudC1wb3MsIDEpO1xuICAkcG9zOiAgICAgICAgbnRoKCRncmFkaWVudC1wb3MsIDIpO1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgJHByZS1zcGVjOiB1bnF1b3RlKGlmKCRwb3MsIFwiI3skcG9zfSwgXCIsIG51bGwpKVxuICAgICAgICAgICAgIHVucXVvdGUoaWYoJHNoYXBlLXNpemUsIFwiI3skc2hhcGUtc2l6ZX0sXCIsIG51bGwpKTtcbiAgJHBvcy1zcGVjOiBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XG5cbiAgJHNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyRwb3Mtc3BlY31cIjtcblxuICAvLyBBZGQgY29tbWFcbiAgQGlmICgkc3BlYyAhPSAnICAnKSB7XG4gICAgJHNwZWM6IFwiI3skc3BlY30sXCJcbiAgfVxuXG4gIEByZXR1cm4gJHByZS1zcGVjICRzcGVjO1xufVxuIiwiLy8gVXNlciBmb3IgbGluZWFyIGFuZCByYWRpYWwgZ3JhZGllbnRzIHdpdGhpbiBiYWNrZ3JvdW5kLWltYWdlIG9yIGJvcmRlci1pbWFnZSBwcm9wZXJ0aWVzXG5cbkBmdW5jdGlvbiBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnRzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcjogZmFsc2UpIHtcbiAgJHByZS1zcGVjOiBudWxsO1xuICAkc3BlYzogbnVsbDtcbiAgJHZlbmRvci1ncmFkaWVudHM6IG51bGw7XG4gIEBpZiAkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIge1xuICAgIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zIHtcbiAgICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IHJhZGlhbCB7XG4gICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XG4gICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gIH1cblxuICBAaWYgJHZlbmRvciB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IC0jeyR2ZW5kb3J9LSN7JGdyYWRpZW50LXR5cGV9LWdyYWRpZW50KCN7JHByZS1zcGVjfSAkZ3JhZGllbnRzKTtcbiAgfVxuICBAZWxzZSBpZiAkdmVuZG9yID09IGZhbHNlIHtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogXCIjeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRzcGVjfSAjeyRncmFkaWVudHN9KVwiO1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiB1bnF1b3RlKCR2ZW5kb3ItZ3JhZGllbnRzKTtcbiAgfVxuICBAcmV0dXJuICR2ZW5kb3ItZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9zaGFwZS1zaXplLXN0cmlwcGVyKCRzaGFwZS1zaXplKSB7XG4gICRzaGFwZS1zaXplLXNwZWM6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkc2hhcGUtc2l6ZSB7XG4gICAgQGlmICgkdmFsdWUgPT0gXCJjb3ZlclwiKSBvciAoJHZhbHVlID09IFwiY29udGFpblwiKSB7XG4gICAgICAkdmFsdWU6IG51bGw7XG4gICAgfVxuICAgICRzaGFwZS1zaXplLXNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyR2YWx1ZX1cIjtcbiAgfVxuICBAcmV0dXJuICRzaGFwZS1zaXplLXNwZWM7XG59XG4iLCIvLyBGbGV4aWJsZSBncmlkXG5AZnVuY3Rpb24gZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucykge1xuICAkd2lkdGg6ICRjb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkd2lkdGggLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuLy8gRmxleGlibGUgZ3V0dGVyXG5AZnVuY3Rpb24gZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMsICRndXR0ZXI6ICRmZy1ndXR0ZXIpIHtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkZ3V0dGVyIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbi8vIFRoZSAkZmctY29sdW1uLCAkZmctZ3V0dGVyIGFuZCAkZmctbWF4LWNvbHVtbnMgdmFyaWFibGVzIG11c3QgYmUgZGVmaW5lZCBpbiB5b3VyIGJhc2Ugc3R5bGVzaGVldCB0byBwcm9wZXJseSB1c2UgdGhlIGZsZXgtZ3JpZCBmdW5jdGlvbi5cbi8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGZsdWlkIGdyaWQgZXF1YXRpb24gKHRhcmdldCAvIGNvbnRleHQgPSByZXN1bHQpIGFuZCB1c2VzIGNvbHVtbnMgdG8gaGVscCBkZWZpbmUgZWFjaC5cbi8vXG4vLyBUaGUgY2FsY3VsYXRpb24gcHJlc3VtZXMgdGhhdCB5b3VyIGNvbHVtbiBzdHJ1Y3R1cmUgd2lsbCBiZSBtaXNzaW5nIHRoZSBsYXN0IGd1dHRlcjpcbi8vXG4vLyAgIC0tIGNvbHVtbiAtLSBndXR0ZXIgLS0gY29sdW1uIC0tIGd1dHRlciAtLSBjb2x1bW5cbi8vXG4vLyAgJGZnLWNvbHVtbjogNjBweDsgICAgICAgICAgICAgLy8gQ29sdW1uIFdpZHRoXG4vLyAgJGZnLWd1dHRlcjogMjVweDsgICAgICAgICAgICAgLy8gR3V0dGVyIFdpZHRoXG4vLyAgJGZnLW1heC1jb2x1bW5zOiAxMjsgICAgICAgICAgLy8gVG90YWwgQ29sdW1ucyBGb3IgTWFpbiBDb250YWluZXJcbi8vXG4vLyAgZGl2IHtcbi8vICAgIHdpZHRoOiBmbGV4LWdyaWQoNCk7ICAgICAgICAvLyByZXR1cm5zICgzMTVweCAvIDk5NXB4KSA9IDMxLjY1ODI5JTtcbi8vICAgIG1hcmdpbi1sZWZ0OiBmbGV4LWd1dHRlcigpOyAvLyByZXR1cm5zICgyNXB4IC8gOTk1cHgpID0gMi41MTI1NiU7XG4vL1xuLy8gICAgcCB7XG4vLyAgICAgIHdpZHRoOiBmbGV4LWdyaWQoMiwgNCk7ICAvLyByZXR1cm5zICgxNDVweCAvIDMxNXB4KSA9IDQ2LjAzMTc0NiU7XG4vLyAgICAgIGZsb2F0OiBsZWZ0O1xuLy8gICAgICBtYXJnaW46IGZsZXgtZ3V0dGVyKDQpOyAgLy8gcmV0dXJucyAoMjVweCAvIDMxNXB4KSA9IDcuOTM2NTA4JTtcbi8vICAgIH1cbi8vXG4vLyAgICBibG9ja3F1b3RlIHtcbi8vICAgICAgZmxvYXQ6IGxlZnQ7XG4vLyAgICAgIHdpZHRoOiBmbGV4LWdyaWQoMiwgNCk7IC8vIHJldHVybnMgKDE0NXB4IC8gMzE1cHgpID0gNDYuMDMxNzQ2JTtcbi8vICAgIH1cbi8vICB9IiwiQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG59XG5cbi8vIFRoZSAkZ3ctY29sdW1uIGFuZCAkZ3ctZ3V0dGVyIHZhcmlhYmxlcyBtdXN0IGJlIGRlZmluZWQgaW4geW91ciBiYXNlIHN0eWxlc2hlZXQgdG8gcHJvcGVybHkgdXNlIHRoZSBncmlkLXdpZHRoIGZ1bmN0aW9uLlxuLy9cbi8vICAkZ3ctY29sdW1uOiAxMDBweDsgICAgICAgICAvLyBDb2x1bW4gV2lkdGhcbi8vICAkZ3ctZ3V0dGVyOiA0MHB4OyAgICAgICAgICAvLyBHdXR0ZXIgV2lkdGhcbi8vXG4vLyAgZGl2IHtcbi8vICAgIHdpZHRoOiBncmlkLXdpZHRoKDQpOyAgICAvLyByZXR1cm5zIDUyMHB4O1xuLy8gICAgbWFyZ2luLWxlZnQ6ICRndy1ndXR0ZXI7IC8vIHJldHVybnMgNDBweDtcbi8vICB9XG4iLCJAZnVuY3Rpb24gZ29sZGVuLXJhdGlvKCR2YWx1ZSwgJGluY3JlbWVudCkge1xuICBAcmV0dXJuIG1vZHVsYXItc2NhbGUoJHZhbHVlLCAkaW5jcmVtZW50LCAkZ29sZGVuKVxufVxuIiwiQGZ1bmN0aW9uIGxpbmVhci1ncmFkaWVudCgkcG9zLCAkZ3JhZGllbnRzLi4uKSB7XG4gICR0eXBlOiBsaW5lYXI7XG4gICRwb3MtdHlwZTogdHlwZS1vZihudGgoJHBvcywgMSkpO1xuXG4gIC8vIGlmICRwb3MgZG9lc24ndCBleGlzdCwgZml4ICRncmFkaWVudFxuICBAaWYgKCRwb3MtdHlwZSA9PSBjb2xvcikgb3IgKG50aCgkcG9zLCAxKSA9PSBcInRyYW5zcGFyZW50XCIpICB7XG4gICAgJGdyYWRpZW50czogemlwKCRwb3MgJGdyYWRpZW50cyk7XG4gICAgJHBvczogZmFsc2U7XG4gIH1cblxuICAkdHlwZS1ncmFkaWVudDogJHR5cGUsICRwb3MsICRncmFkaWVudHM7XG4gIEByZXR1cm4gJHR5cGUtZ3JhZGllbnQ7XG59XG4iLCIvLyBTY2FsaW5nIFZhcmFpYmxlc1xuJGdvbGRlbjogICAgICAgICAgIDEuNjE4O1xuJG1pbm9yLXNlY29uZDogICAgIDEuMDY3O1xuJG1ham9yLXNlY29uZDogICAgIDEuMTI1O1xuJG1pbm9yLXRoaXJkOiAgICAgIDEuMjtcbiRtYWpvci10aGlyZDogICAgICAxLjI1O1xuJHBlcmZlY3QtZm91cnRoOiAgIDEuMzMzO1xuJGF1Z21lbnRlZC1mb3VydGg6IDEuNDE0O1xuJHBlcmZlY3QtZmlmdGg6ICAgIDEuNTtcbiRtaW5vci1zaXh0aDogICAgICAxLjY7XG4kbWFqb3Itc2l4dGg6ICAgICAgMS42Njc7XG4kbWlub3Itc2V2ZW50aDogICAgMS43Nzg7XG4kbWFqb3Itc2V2ZW50aDogICAgMS44NzU7XG4kb2N0YXZlOiAgICAgICAgICAgMjtcbiRtYWpvci10ZW50aDogICAgICAyLjU7XG4kbWFqb3ItZWxldmVudGg6ICAgMi42Njc7XG4kbWFqb3ItdHdlbGZ0aDogICAgMztcbiRkb3VibGUtb2N0YXZlOiAgICA0O1xuXG5AZnVuY3Rpb24gbW9kdWxhci1zY2FsZSgkdmFsdWUsICRpbmNyZW1lbnQsICRyYXRpbykge1xuICAkdjE6IG50aCgkdmFsdWUsIDEpO1xuICAkdjI6IG50aCgkdmFsdWUsIGxlbmd0aCgkdmFsdWUpKTtcbiAgJHZhbHVlOiAkdjE7XG5cbiAgLy8gc2NhbGUgJHYyIHRvIGp1c3QgYWJvdmUgJHYxXG4gIEB3aGlsZSAkdjIgPiAkdjEge1xuICAgICR2MjogKCR2MiAvICRyYXRpbyk7IC8vIHdpbGwgYmUgb2ZmLWJ5LTFcbiAgfVxuICBAd2hpbGUgJHYyIDwgJHYxIHtcbiAgICAkdjI6ICgkdjIgKiAkcmF0aW8pOyAvLyB3aWxsIGZpeCBvZmYtYnktMVxuICB9XG5cbiAgLy8gY2hlY2sgQUZURVIgc2NhbGluZyAkdjIgdG8gcHJldmVudCBkb3VibGUtY291bnRpbmcgY29ybmVyLWNhc2VcbiAgJGRvdWJsZS1zdHJhbmRlZDogJHYyID4gJHYxO1xuXG4gIEBpZiAkaW5jcmVtZW50ID4gMCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkaW5jcmVtZW50IHtcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxICogJHJhdGlvKSA+ICR2MiB7XG4gICAgICAgICR2YWx1ZTogJHYyO1xuICAgICAgICAkdjI6ICgkdjIgKiAkcmF0aW8pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR2MTogKCR2MSAqICRyYXRpbyk7XG4gICAgICAgICR2YWx1ZTogJHYxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkaW5jcmVtZW50IDwgMCB7XG4gICAgLy8gYWRqdXN0ICR2MiB0byBqdXN0IGJlbG93ICR2MVxuICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIHtcbiAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XG4gICAgfVxuXG4gICAgQGZvciAkaSBmcm9tICRpbmNyZW1lbnQgdGhyb3VnaCAtMSB7XG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAvICRyYXRpbykgPCAkdjIge1xuICAgICAgICAkdmFsdWU6ICR2MjtcbiAgICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdjE6ICgkdjEgLyAkcmF0aW8pO1xuICAgICAgICAkdmFsdWU6ICR2MTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8gZWcuIGZvciBhIHJlbGF0aW9uYWwgdmFsdWUgb2YgMTJweCB3cml0ZSBlbSgxMikgd2hlbiB0aGUgcGFyZW50IGlzIDE2cHhcbi8vIGlmIHRoZSBwYXJlbnQgaXMgYW5vdGhlciB2YWx1ZSBzYXkgMjRweCB3cml0ZSBlbSgxMiwgMjQpXG5cbkBmdW5jdGlvbiBlbSgkcHh2YWwsICRiYXNlOiAkZW0tYmFzZSkge1xuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xuICAgICAgJHB4dmFsOiBzdHJpcC11bml0cygkcHh2YWwpO1xuICB9XG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAgICRiYXNlOiBzdHJpcC11bml0cygkYmFzZSk7XG4gIH1cbiAgQHJldHVybiAoJHB4dmFsIC8gJGJhc2UpICogMWVtO1xufVxuIiwiLy8gVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBhbmQgdXNlZCBieSB0aGUgYmFja2dyb3VuZC1pbWFnZSBtaXhpbi5cbkBmdW5jdGlvbiByYWRpYWwtZ3JhZGllbnQoJEcxLCAgICAgICAgJEcyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkRzM6IG51bGwsICAkRzQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRHNTogbnVsbCwgICRHNjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJEc3OiBudWxsLCAgJEc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkRzk6IG51bGwsICAkRzEwOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkcG9zOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2hhcGUtc2l6ZTogbnVsbCkge1xuXG4gICRkYXRhOiBfcmFkaWFsLWFyZy1wYXJzZXIoJEcxLCAkRzIsICRwb3MsICRzaGFwZS1zaXplKTtcbiAgJEcxOiAgbnRoKCRkYXRhLCAxKTtcbiAgJEcyOiAgbnRoKCRkYXRhLCAyKTtcbiAgJHBvczogbnRoKCRkYXRhLCAzKTtcbiAgJHNoYXBlLXNpemU6IG50aCgkZGF0YSwgNCk7XG5cbiAgJHR5cGU6IHJhZGlhbDtcbiAgJGdyYWRpZW50OiAkRzEsICRHMiwgJEczLCAkRzQsICRHNSwgJEc2LCAkRzcsICRHOCwgJEc5LCAkRzEwO1xuXG4gICR0eXBlLWdyYWRpZW50OiAkdHlwZSwgJHNoYXBlLXNpemUgJHBvcywgJGdyYWRpZW50O1xuICBAcmV0dXJuICR0eXBlLWdyYWRpZW50O1xufVxuXG5cbiIsIi8vIFNydGlwcyB0aGUgdW5pdHMgZnJvbSBhIHZhbHVlLiBlLmcuIDEycHggLT4gMTJcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWwpIHtcbiAgQHJldHVybiAoJHZhbCAvICgkdmFsICogMCArIDEpKTtcbn1cbiIsIi8vIEFkZCBwZXJjZW50YWdlIG9mIHdoaXRlIHRvIGEgY29sb3JcbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnQpe1xuICBAcmV0dXJuIG1peCh3aGl0ZSwgJGNvbG9yLCAkcGVyY2VudCk7XG59XG5cbi8vIEFkZCBwZXJjZW50YWdlIG9mIGJsYWNrIHRvIGEgY29sb3JcbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50KXtcbiAgQHJldHVybiBtaXgoYmxhY2ssICRjb2xvciwgJHBlcmNlbnQpO1xufVxuIiwiLy8gUmV0dXJuIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSBuYW1lcyBpZiBhcHByb3ByaWF0ZVxuLy8gRXhhbXBsZTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygodHJhbnNmb3JtLCBjb2xvciwgYmFja2dyb3VuZCksIG1veikgLT4gLW1vei10cmFuc2Zvcm0sIGNvbG9yLCBiYWNrZ3JvdW5kXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcHMsICR2ZW5kb3I6IGZhbHNlKSB7XG5cdCRuZXctcHJvcHM6ICgpO1xuXHRcblx0QGVhY2ggJHByb3AgaW4gJHByb3BzIHtcblx0XHQkbmV3LXByb3BzOiBhcHBlbmQoJG5ldy1wcm9wcywgdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yKSwgY29tbWEpO1xuXHR9XG5cblx0QHJldHVybiAkbmV3LXByb3BzO1xufVxuXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yOiBmYWxzZSkge1xuXHQvLyBwdXQgb3RoZXIgcHJvcGVydGllcyB0aGF0IG5lZWQgdG8gYmUgcHJlZml4ZWQgaGVyZSBhc3dlbGxcblx0QGlmICR2ZW5kb3IgYW5kICRwcm9wID09IHRyYW5zZm9ybSB7XG5cdFx0QHJldHVybiB1bnF1b3RlKCctJyskdmVuZG9yKyctJyskcHJvcCk7XG5cdH1cblx0QGVsc2Uge1xuXHRcdEByZXR1cm4gJHByb3A7XG5cdH1cbn0iLCIvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1hdGlvbnMvI3RoZS1hbmltYXRpb24tbmFtZS1wcm9wZXJ0eS1cbi8vIEVhY2ggb2YgdGhlc2UgbWl4aW5zIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIGxpc3RzIG9mIHZhbHVlcywgd2hpY2ggYWxsb3dzIGRpZmZlcmVudCB0cmFuc2l0aW9ucyBmb3IgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIHRvIGJlIGRlc2NyaWJlZCBpbiBhIHNpbmdsZSBzdHlsZSBydWxlLiBFYWNoIHZhbHVlIGluIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSB2YWx1ZSBhdCB0aGF0IHNhbWUgcG9zaXRpb24gaW4gdGhlIG90aGVyIHByb3BlcnRpZXMuXG5cbi8vIE9mZmljaWFsIGFuaW1hdGlvbiBzaG9ydGhhbmQgcHJvcGVydHkuXG5AbWl4aW4gYW5pbWF0aW9uICgkYW5pbWF0aW9ucy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24sICRhbmltYXRpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG4vLyBJbmRpdmlkdWFsIEFuaW1hdGlvbiBQcm9wZXJ0aWVzXG5AbWl4aW4gYW5pbWF0aW9uLW5hbWUgKCRuYW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tbmFtZSwgJG5hbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5cbkBtaXhpbiBhbmltYXRpb24tZHVyYXRpb24gKCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZHVyYXRpb24sICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiAoJG1vdGlvbnMuLi4pIHtcbi8vIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkbW90aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCAoJHZhbHVlcy4uLikge1xuLy8gaW5maW5pdGUgfCA8bnVtYmVyPlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCAkdmFsdWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5cbkBtaXhpbiBhbmltYXRpb24tZGlyZWN0aW9uICgkZGlyZWN0aW9ucy4uLikge1xuLy8gbm9ybWFsIHwgYWx0ZXJuYXRlXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kaXJlY3Rpb24sICRkaXJlY3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5cbkBtaXhpbiBhbmltYXRpb24tcGxheS1zdGF0ZSAoJHN0YXRlcy4uLikge1xuLy8gcnVubmluZyB8IHBhdXNlZFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tcGxheS1zdGF0ZSwgJHN0YXRlcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLWRlbGF5ICgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cblxuQG1peGluIGFuaW1hdGlvbi1maWxsLW1vZGUgKCRtb2Rlcy4uLikge1xuLy8gbm9uZSB8IGZvcndhcmRzIHwgYmFja3dhcmRzIHwgYm90aFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gYXBwZWFyYW5jZSAoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFwcGVhcmFuY2UsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gQmFja2ZhY2UtdmlzaWJpbGl0eSBtaXhpblxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYmFja2ZhY2UtdmlzaWJpbGl0eSwgJHZpc2liaWxpdHksIHdlYmtpdCBzcGVjKTtcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kcyB1c2luZyBzaG9ydGhhbmRcbi8vIG5vdGF0aW9uLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZChcbiAgJGJhY2tncm91bmQtMSAgICAgICAsICRiYWNrZ3JvdW5kLTI6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTM6IG51bGwsICRiYWNrZ3JvdW5kLTQ6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTU6IG51bGwsICRiYWNrZ3JvdW5kLTY6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTc6IG51bGwsICRiYWNrZ3JvdW5kLTg6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTk6IG51bGwsICRiYWNrZ3JvdW5kLTEwOiBudWxsLFxuICAkZmFsbGJhY2s6IG51bGxcbikge1xuICAkYmFja2dyb3VuZHM6ICRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsXG4gICAgICAgICAgICAgICAgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCxcbiAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC01LCAkYmFja2dyb3VuZC02LFxuICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsXG4gICAgICAgICAgICAgICAgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTA7XG5cbiAgJGZhbGxiYWNrLWNvbG9yOiBmYWxzZTtcbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmYWxsYmFjay1jb2xvcjogX2V4dHJhY3QtYmFja2dyb3VuZC1jb2xvcigkYmFja2dyb3VuZHMpO1xuICB9XG5cbiAgQGlmICRmYWxsYmFjay1jb2xvciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZhbGxiYWNrLWNvbG9yO1xuICB9XG4gIGJhY2tncm91bmQ6IF9iYWNrZ3JvdW5kLWFkZC1wcmVmaXgoJGJhY2tncm91bmRzLCB3ZWJraXQpO1xuICBiYWNrZ3JvdW5kOiBfYmFja2dyb3VuZC1hZGQtcHJlZml4KCRiYWNrZ3JvdW5kcyk7XG59XG5cbkBmdW5jdGlvbiBfZXh0cmFjdC1iYWNrZ3JvdW5kLWNvbG9yKCRiYWNrZ3JvdW5kcykge1xuICAkZmluYWwtYmctbGF5ZXI6IG50aCgkYmFja2dyb3VuZHMsIGxlbmd0aCgkYmFja2dyb3VuZHMpKTtcbiAgQGlmIHR5cGUtb2YoJGZpbmFsLWJnLWxheWVyKSA9PSBsaXN0IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkZmluYWwtYmctbGF5ZXIpIHtcbiAgICAgICR2YWx1ZTogbnRoKCRmaW5hbC1iZy1sYXllciwgJGkpO1xuICAgICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBjb2xvciB7XG4gICAgICAgIEByZXR1cm4gJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG5AZnVuY3Rpb24gX2JhY2tncm91bmQtYWRkLXByZWZpeCgkYmFja2dyb3VuZHMsICR2ZW5kb3I6IGZhbHNlKSB7XG4gICRiYWNrZ3JvdW5kcy1wcmVmaXhlZDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGJhY2tncm91bmRzKSB7XG4gICAgJHNob3J0aGFuZDogbnRoKCRiYWNrZ3JvdW5kcywgJGkpOyAvLyBHZXQgbWVtYmVyIGZvciBjdXJyZW50IGluZGV4XG4gICAgJHR5cGU6IHR5cGUtb2YoJHNob3J0aGFuZCk7IC8vIEdldCB0eXBlIG9mIHZhcmlhYmxlIC0gTGlzdCAoZ3JhZGllbnQpIG9yIFN0cmluZyAoaW1hZ2UpXG5cbiAgICAvLyBJZiBzaG9ydGhhbmQgaXMgYSBsaXN0IChncmFkaWVudClcbiAgICBAaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgICAkZmlyc3QtbWVtYmVyOiBudGgoJHNob3J0aGFuZCwgMSk7IC8vIEdldCBmaXJzdCBtZW1iZXIgb2Ygc2hvcnRoYW5kXG5cbiAgICAgIC8vIExpbmVhciBHcmFkaWVudFxuICAgICAgQGlmIGluZGV4KGxpbmVhciByYWRpYWwsIG50aCgkZmlyc3QtbWVtYmVyLCAxKSkge1xuICAgICAgICAkZ3JhZGllbnQtdHlwZTogbnRoKCRmaXJzdC1tZW1iZXIsIDEpOyAvLyBsaW5lYXIgfHwgcmFkaWFsXG4gICAgICAgICRncmFkaWVudC1hcmdzOiAgICAgIGZhbHNlO1xuICAgICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBmYWxzZTtcbiAgICAgICAgJHNob3J0aGFuZC1zdGFydDogICAgZmFsc2U7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRmaXJzdC1tZW1iZXIpID09IGxpc3QgeyAvLyBMaW5lYXIgZ3JhZGllbnQgcGx1cyBhZGRpdGlvbmFsIHNob3J0aGFuZCB2YWx1ZXMgLSBsZyhyZWQsb3JhbmdlKXJlcGVhdCwuLi5cbiAgICAgICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBudGgoJGZpcnN0LW1lbWJlciwgMik7XG4gICAgICAgICAgJGdyYWRpZW50LWFyZ3M6ICAgICAgbnRoKCRmaXJzdC1tZW1iZXIsIDMpO1xuICAgICAgICAgICRzaG9ydGhhbmQtc3RhcnQ6IDI7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgeyAvLyBMaW5lYXIgZ3JhZGllbnQgb25seSAtIGxnKHJlZCxvcmFuZ2UpLC4uLlxuICAgICAgICAgICRncmFkaWVudC1wb3NpdGlvbnM6IG50aCgkc2hvcnRoYW5kLCAyKTtcbiAgICAgICAgICAkZ3JhZGllbnQtYXJnczogICAgICBudGgoJHNob3J0aGFuZCwgMyk7IC8vIEdldCBncmFkaWVudCAocmVkLCBibHVlKVxuICAgICAgICB9XG5cbiAgICAgICAgJGdyYWRpZW50LXBvc2l0aW9uczogX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXR5cGUsICRncmFkaWVudC1wb3NpdGlvbnMpO1xuICAgICAgICAkZ3JhZGllbnQ6IF9yZW5kZXItZ3JhZGllbnRzKCRncmFkaWVudC1wb3NpdGlvbnMsICRncmFkaWVudC1hcmdzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcik7XG5cbiAgICAgICAgLy8gQXBwZW5kIGFueSBhZGRpdGlvbmFsIHNob3J0aGFuZCBhcmdzIHRvIGdyYWRpZW50XG4gICAgICAgIEBpZiAkc2hvcnRoYW5kLXN0YXJ0IHtcbiAgICAgICAgICBAZm9yICRqIGZyb20gJHNob3J0aGFuZC1zdGFydCB0aHJvdWdoIGxlbmd0aCgkc2hvcnRoYW5kKSB7XG4gICAgICAgICAgICAkZ3JhZGllbnQ6IGpvaW4oJGdyYWRpZW50LCBudGgoJHNob3J0aGFuZCwgJGopLCBzcGFjZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICRiYWNrZ3JvdW5kcy1wcmVmaXhlZDogYXBwZW5kKCRiYWNrZ3JvdW5kcy1wcmVmaXhlZCwgJGdyYWRpZW50LCBjb21tYSk7XG4gICAgICB9XG4gICAgICAvLyBJbWFnZSB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllc1xuICAgICAgQGVsc2Uge1xuICAgICAgICAkYmFja2dyb3VuZHMtcHJlZml4ZWQ6IGFwcGVuZCgkYmFja2dyb3VuZHMtcHJlZml4ZWQsICRzaG9ydGhhbmQsIGNvbW1hKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgc2hvcnRoYW5kIGlzIGEgc2ltcGxlIHN0cmluZyAoY29sb3Igb3IgaW1hZ2UpXG4gICAgQGVsc2UgaWYgJHR5cGUgPT0gc3RyaW5nIHtcbiAgICAgICRiYWNrZ3JvdW5kcy1wcmVmaXhlZDogam9pbigkYmFja2dyb3VuZHMtcHJlZml4ZWQsICRzaG9ydGhhbmQsIGNvbW1hKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkYmFja2dyb3VuZHMtcHJlZml4ZWQ7XG59XG5cbi8vRXhhbXBsZXM6XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZChsaW5lYXItZ3JhZGllbnQodG9wLCBvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQocmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA0MCUgNDAlLCBvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQodXJsKFwiL2ltYWdlcy9hLnBuZ1wiKSBuby1yZXBlYXQsIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQodXJsKFwiaW1hZ2UucG5nXCIpIGNlbnRlciBjZW50ZXIsIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCksIHVybChcImltYWdlLnBuZ1wiKSk7XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBCYWNrZ3JvdW5kLWltYWdlIHByb3BlcnR5IGZvciBhZGRpbmcgbXVsdGlwbGUgYmFja2dyb3VuZCBpbWFnZXMgd2l0aFxuLy8gZ3JhZGllbnRzLCBvciBmb3Igc3RyaW5naW5nIG11bHRpcGxlIGdyYWRpZW50cyB0b2dldGhlci5cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cblxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlcy4uLikge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBfYWRkLXByZWZpeCgkaW1hZ2VzLCB3ZWJraXQpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBfYWRkLXByZWZpeCgkaW1hZ2VzKTtcbn1cblxuQGZ1bmN0aW9uIF9hZGQtcHJlZml4KCRpbWFnZXMsICR2ZW5kb3I6IGZhbHNlKSB7XG4gICRpbWFnZXMtcHJlZml4ZWQ6ICgpO1xuICAkZ3JhZGllbnQtcG9zaXRpb25zOiBmYWxzZTtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGltYWdlcykge1xuICAgICR0eXBlOiB0eXBlLW9mKG50aCgkaW1hZ2VzLCAkaSkpOyAvLyBHZXQgdHlwZSBvZiB2YXJpYWJsZSAtIExpc3Qgb3IgU3RyaW5nXG5cbiAgICAvLyBJZiB2YXJpYWJsZSBpcyBhIGxpc3QgLSBHcmFkaWVudFxuICAgIEBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAgICRncmFkaWVudC10eXBlOiBudGgobnRoKCRpbWFnZXMsICRpKSwgMSk7IC8vIGxpbmVhciBvciByYWRpYWxcbiAgICAgICRncmFkaWVudC1wb3M6IG51bGw7XG4gICAgICAkZ3JhZGllbnQtYXJnczogbnVsbDtcblxuICAgICAgQGlmICgkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIpIG9yICgkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwpIHtcbiAgICAgICAgJGdyYWRpZW50LXBvczogIG50aChudGgoJGltYWdlcywgJGkpLCAyKTsgLy8gR2V0IGdyYWRpZW50IHBvc2l0aW9uXG4gICAgICAgICRncmFkaWVudC1hcmdzOiBudGgobnRoKCRpbWFnZXMsICRpKSwgMyk7IC8vIEdldCBhY3R1YWwgZ3JhZGllbnQgKHJlZCwgYmx1ZSlcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGdyYWRpZW50LWFyZ3M6IG50aChudGgoJGltYWdlcywgJGkpLCAyKTsgLy8gR2V0IGFjdHVhbCBncmFkaWVudCAocmVkLCBibHVlKVxuICAgICAgfVxuXG4gICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvcyk7XG4gICAgICAkZ3JhZGllbnQ6IF9yZW5kZXItZ3JhZGllbnRzKCRncmFkaWVudC1wb3NpdGlvbnMsICRncmFkaWVudC1hcmdzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcik7XG4gICAgICAkaW1hZ2VzLXByZWZpeGVkOiBhcHBlbmQoJGltYWdlcy1wcmVmaXhlZCwgJGdyYWRpZW50LCBjb21tYSk7XG4gICAgfVxuICAgIC8vIElmIHZhcmlhYmxlIGlzIGEgc3RyaW5nIC0gSW1hZ2VcbiAgICBAZWxzZSBpZiAkdHlwZSA9PSBzdHJpbmcge1xuICAgICAgJGltYWdlcy1wcmVmaXhlZDogam9pbigkaW1hZ2VzLXByZWZpeGVkLCBudGgoJGltYWdlcywgJGkpLCBjb21tYSk7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGltYWdlcy1wcmVmaXhlZDtcbn1cblxuLy9FeGFtcGxlczpcbiAgLy9AaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKGxpbmVhci1ncmFkaWVudCh0b3AsIG9yYW5nZSwgcmVkKSk7XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShyYWRpYWwtZ3JhZGllbnQoNTAlIDUwJSwgY292ZXIgY2lyY2xlLCBvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UodXJsKFwiL2ltYWdlcy9hLnBuZ1wiKSwgbGluZWFyLWdyYWRpZW50KG9yYW5nZSwgcmVkKSk7XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSh1cmwoXCJpbWFnZS5wbmdcIiksIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCksIHVybChcImltYWdlLnBuZ1wiKSk7XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShsaW5lYXItZ3JhZGllbnQoaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjI1KSAwJSwgaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjA4KSA1MCUsIHRyYW5zcGFyZW50IDUwJSksIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCkpO1xuIiwiQG1peGluIGJvcmRlci1pbWFnZSgkaW1hZ2VzKSB7XG4gIC13ZWJraXQtYm9yZGVyLWltYWdlOiBfYm9yZGVyLWFkZC1wcmVmaXgoJGltYWdlcywgd2Via2l0KTtcbiAgICAgLW1vei1ib3JkZXItaW1hZ2U6IF9ib3JkZXItYWRkLXByZWZpeCgkaW1hZ2VzLCBtb3opO1xuICAgICAgIC1vLWJvcmRlci1pbWFnZTogX2JvcmRlci1hZGQtcHJlZml4KCRpbWFnZXMsIG8pO1xuICAgICAgICAgIGJvcmRlci1pbWFnZTogX2JvcmRlci1hZGQtcHJlZml4KCRpbWFnZXMpO1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG59XG5cbkBmdW5jdGlvbiBfYm9yZGVyLWFkZC1wcmVmaXgoJGltYWdlcywgJHZlbmRvcjogZmFsc2UpIHtcbiAgJGJvcmRlci1pbWFnZTogbnVsbDtcbiAgJGltYWdlcy10eXBlOiAgdHlwZS1vZihudGgoJGltYWdlcywgMSkpO1xuICAkZmlyc3QtdmFyOiAgICBudGgobnRoKCRpbWFnZXMsIDEpLCAxKTsgICAgICAgICAgLy8gR2V0IHR5cGUgb2YgR3JhZGllbnQgKExpbmVhciB8fCByYWRpYWwpXG5cbiAgLy8gSWYgaW5wdXQgaXMgYSBncmFkaWVudFxuICBAaWYgJGltYWdlcy10eXBlID09IHN0cmluZyB7XG4gICAgQGlmICgkZmlyc3QtdmFyID09IFwibGluZWFyXCIpIG9yICgkZmlyc3QtdmFyID09IFwicmFkaWFsXCIpIHtcbiAgICAgICRncmFkaWVudC10eXBlOiBudGgoJGltYWdlcywgMSk7ICAgICAgICAgICAvLyBHZXQgdHlwZSBvZiBncmFkaWVudCAobGluZWFyIHx8IHJhZGlhbClcbiAgICAgICRncmFkaWVudC1wb3M6ICBudGgoJGltYWdlcywgMik7ICAgICAgICAgICAvLyBHZXQgZ3JhZGllbnQgcG9zaXRpb25cbiAgICAgICRncmFkaWVudC1hcmdzOiBudGgoJGltYWdlcywgMyk7ICAgICAgICAgICAvLyBHZXQgYWN0dWFsIGdyYWRpZW50IChyZWQsIGJsdWUpXG4gICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvcyk7XG4gICAgICAkYm9yZGVyLWltYWdlOiAgX3JlbmRlci1ncmFkaWVudHMoJGdyYWRpZW50LXBvc2l0aW9ucywgJGdyYWRpZW50LWFyZ3MsICRncmFkaWVudC10eXBlLCAkdmVuZG9yKTtcbiAgICB9XG4gICAgLy8gSWYgaW5wdXQgaXMgYSBVUkxcbiAgICBAZWxzZSB7XG4gICAgICAkYm9yZGVyLWltYWdlOiAkaW1hZ2VzO1xuICAgIH1cbiAgfVxuICAvLyBJZiBpbnB1dCBpcyBncmFkaWVudCBvciB1cmwgKyBhZGRpdGlvbmFsIGFyZ3NcbiAgQGVsc2UgaWYgJGltYWdlcy10eXBlID09IGxpc3Qge1xuICAgICR0eXBlOiB0eXBlLW9mKG50aCgkaW1hZ2VzLCAxKSk7ICAgICAgICAgICAvLyBHZXQgdHlwZSBvZiB2YXJpYWJsZSAtIExpc3Qgb3IgU3RyaW5nXG5cbiAgICAvLyBJZiB2YXJpYWJsZSBpcyBhIGxpc3QgLSBHcmFkaWVudFxuICAgIEBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAgICRncmFkaWVudDogbnRoKCRpbWFnZXMsIDEpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IG50aCgkZ3JhZGllbnQsIDEpOyAgICAgICAgICAgLy8gR2V0IHR5cGUgb2YgZ3JhZGllbnQgKGxpbmVhciB8fCByYWRpYWwpXG4gICAgICAkZ3JhZGllbnQtcG9zOiAgbnRoKCRncmFkaWVudCwgMik7ICAgICAgICAgICAvLyBHZXQgZ3JhZGllbnQgcG9zaXRpb25cbiAgICAgICRncmFkaWVudC1hcmdzOiBudGgoJGdyYWRpZW50LCAzKTsgICAgICAgICAgIC8vIEdldCBhY3R1YWwgZ3JhZGllbnQgKHJlZCwgYmx1ZSlcbiAgICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC10eXBlLCAkZ3JhZGllbnQtcG9zKTtcbiAgICAgICRib3JkZXItaW1hZ2U6ICBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnQtYXJncywgJGdyYWRpZW50LXR5cGUsICR2ZW5kb3IpO1xuXG4gICAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkaW1hZ2VzKSB7XG4gICAgICAgICRib3JkZXItaW1hZ2U6IGFwcGVuZCgkYm9yZGVyLWltYWdlLCBudGgoJGltYWdlcywgJGkpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiAkYm9yZGVyLWltYWdlO1xufVxuXG4vL0V4YW1wbGVzOlxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHVybChcImltYWdlLnBuZ1wiKSk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpIDIwIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSBzdHJldGNoKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSAyMCAzMCA0MCA1MCBzdHJldGNoIHJvdW5kKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShyYWRpYWwtZ3JhZGllbnQodG9wLCBjb3Zlciwgb3JhbmdlLCB5ZWxsb3csIG9yYW5nZSkpO1xuXG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBTaG9ydGhhbmQgQm9yZGVyLXJhZGl1cyBtaXhpbnNcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaWkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaWkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGlpKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci10b3AtbGVmdC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpaSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3JkZXItdG9wLXJpZ2h0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG4iLCJAbWl4aW4gYm94LXNpemluZyAoJGJveCkge1xuLy8gIGNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCB8IGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXNpemluZywgJGJveCwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiBjb2x1bW5zKCRhcmc6IGF1dG8pIHtcbi8vIDxjb2x1bW4tY291bnQ+IHx8IDxjb2x1bW4td2lkdGg+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbnMsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tY291bnQoJGludDogYXV0bykge1xuLy8gYXV0byB8fCBpbnRlZ2VyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1jb3VudCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1nYXAoJGxlbmd0aDogbm9ybWFsKSB7XG4vLyBub3JtYWwgfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1nYXAsICRsZW5ndGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZmlsbCgkYXJnOiBhdXRvKSB7XG4vLyBhdXRvIHx8IGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW5zLWZpbGwsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZSgkYXJnKSB7XG4vLyA8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS1zdHlsZSgkc3R5bGU6IG5vbmUpIHtcbi8vIG5vbmUgfCBoaWRkZW4gfCBkYXNoZWQgfCBkb3R0ZWQgfCBkb3VibGUgfCBncm9vdmUgfCBpbnNldCB8IGluc2V0IHwgb3V0c2V0IHwgcmlkZ2UgfCBzb2xpZFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1zdHlsZSwgJHN0eWxlLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtd2lkdGggKCR3aWR0aDogbm9uZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXNwYW4oJGFyZzogbm9uZSkge1xuLy8gbm9uZSB8fCBhbGxcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXNwYW4sICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4td2lkdGgoJGxlbmd0aDogYXV0bykge1xuLy8gYXV0byB8fCBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXdpZHRoLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG5cbi8vIEN1c3RvbSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIGZsZXhib3hcbkBtaXhpbiBib3goJG9yaWVudDogaW5saW5lLWF4aXMsICRwYWNrOiBzdGFydCwgJGFsaWduOiBzdHJldGNoKSB7XG4gIEBpbmNsdWRlIGRpc3BsYXktYm94O1xuICBAaW5jbHVkZSBib3gtb3JpZW50KCRvcmllbnQpO1xuICBAaW5jbHVkZSBib3gtcGFjaygkcGFjayk7XG4gIEBpbmNsdWRlIGJveC1hbGlnbigkYWxpZ24pO1xufVxuXG5AbWl4aW4gZGlzcGxheS1ib3gge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1vei1ib3g7XG4gIGRpc3BsYXk6IGJveDtcbn1cblxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudDogaW5saW5lLWF4aXMpIHtcbi8vIGhvcml6b250YWx8dmVydGljYWx8aW5saW5lLWF4aXN8YmxvY2stYXhpc3xpbmhlcml0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICRvcmllbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtcGFjaygkcGFjazogc3RhcnQpIHtcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8anVzdGlmeVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJHBhY2ssIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtYWxpZ24oJGFsaWduOiBzdHJldGNoKSB7XG4vLyBzdGFydHxlbmR8Y2VudGVyfGJhc2VsaW5lfHN0cmV0Y2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWxpZ24sIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtZGlyZWN0aW9uKCRkaXJlY3Rpb246IG5vcm1hbCkge1xuLy8gbm9ybWFsfHJldmVyc2V8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LWxpbmVzKCRsaW5lczogc2luZ2xlKSB7XG4vLyBzaW5nbGV8bXVsdGlwbGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkbGluZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtb3JkaW5hbC1ncm91cCgkaW50OiAxKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LWZsZXgoJHZhbHVlOiAwLjApIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1mbGV4LWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCIvLyBPcmRlciBvZiB0aGUgaW5jbHVkZXMgbWF0dGVycywgYW5kIGl0IGlzOiBub3JtYWwsIGJvbGQsIGl0YWxpYywgYm9sZCtpdGFsaWMuXG5cbkBtaXhpbiBmb250LWZhY2UoJGZvbnQtZmFtaWx5LCAkZmlsZS1wYXRoLCAkd2VpZ2h0OiBub3JtYWwsICRzdHlsZTogbm9ybWFsLCAkYXNzZXQtcGlwZWxpbmU6IGZhbHNlICkge1xuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUgPT0gdHJ1ZSB7XG4gICAgICBzcmM6IGZvbnQtdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgICAgc3JjOiBmb250LXVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgICAgICAgICAgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgICAgICBmb250LXVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgICAgICAgICAgICAgICAgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgICAgIGZvbnQtdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpICAgICAgICAgICAgICAgICBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgICAgIGZvbnQtdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgICAgICAgICAgICAgICBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgICAgIHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICAgICAgdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICAgICAgICAgdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSAgICAgIGZvcm1hdCgnc3ZnJyk7XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gaHlwaGVucygkaHlwaGVuYXRpb246IG5vbmUpIHtcbi8vIG5vbmUgfCBtYW51YWwgfCBhdXRvXG4gIEBpbmNsdWRlIHByZWZpeGVyKGh5cGhlbnMsICRoeXBoZW5hdGlvbiwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn0iLCIvLyBIaURQSSBtaXhpbi4gRGVmYXVsdCB2YWx1ZSBzZXQgdG8gMS4zIHRvIHRhcmdldCBHb29nbGUgTmV4dXMgNyAoaHR0cDovL2JqYW5nby5jb20vYXJ0aWNsZXMvbWluLWRldmljZS1waXhlbC1yYXRpby8pXG5AbWl4aW4gaGlkcGkoJHJhdGlvOiAxLjMpIHtcbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRyYXRpb30vMSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICN7cm91bmQoJHJhdGlvKjk2KX1kcGkpLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAjeyRyYXRpb31kcHB4KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBtaXhpbiBpbWFnZS1yZW5kZXJpbmcgKCRtb2RlOm9wdGltaXplUXVhbGl0eSkge1xuXG4gIEBpZiAoJG1vZGUgPT0gb3B0aW1pemUtY29udHJhc3QpIHtcbiAgICAgIGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlcztcbiAgICAgIGltYWdlLXJlbmRlcmluZzogLW8tY3Jpc3AtZWRnZXM7XG4gICAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7XG4gICAgICBpbWFnZS1yZW5kZXJpbmc6IG9wdGltaXplLWNvbnRyYXN0O1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICAgaW1hZ2UtcmVuZGVyaW5nOiAkbW9kZTtcbiAgfVxufVxuIiwiLy8gTGVnYWN5IHN1cHBvcnQgZm9yIGlubGluZS1ibG9jayBpbiBJRTcgKG1heWJlIElFNilcbkBtaXhpbiBpbmxpbmUtYmxvY2sge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgem9vbTogMTtcbiAgKmRpc3BsYXk6IGlubGluZTtcbiAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xufVxuIiwiLy8gQWRkcyBrZXlmcmFtZXMgYmxvY2tzIGZvciBzdXBwb3J0ZWQgcHJlZml4ZXMsIHJlbW92aW5nIHJlZHVuZGFudCBwcmVmaXhlcyBpbiB0aGUgYmxvY2sncyBjb250ZW50XG5AbWl4aW4ga2V5ZnJhbWVzKCRuYW1lKSB7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdDogICAgJHByZWZpeC1mb3Itd2Via2l0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhOiAgICRwcmVmaXgtZm9yLW1vemlsbGE7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdDogJHByZWZpeC1mb3ItbWljcm9zb2Z0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1vcGVyYTogICAgICRwcmVmaXgtZm9yLW9wZXJhO1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjOiAgICAgICRwcmVmaXgtZm9yLXNwZWM7XG5cbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpO1xuICAgICRwcmVmaXgtZm9yLXdlYmtpdDogdHJ1ZTtcbiAgICBALXdlYmtpdC1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3ItbW96aWxsYTogdHJ1ZTtcbiAgICBALW1vei1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3Itc3BlYzogdHJ1ZTtcbiAgICBAa2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gICRwcmVmaXgtZm9yLXdlYmtpdDogICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0O1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGE7XG4gICRwcmVmaXgtZm9yLW1pY3Jvc29mdDogJG9yaWdpbmFsLXByZWZpeC1mb3ItbWljcm9zb2Z0O1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWM7XG59XG4iLCJAbWl4aW4gbGluZWFyLWdyYWRpZW50KCRwb3MsICRHMSwgJEcyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzM6IG51bGwsICRHNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJEc1OiBudWxsLCAkRzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRHNzogbnVsbCwgJEc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzk6IG51bGwsICRHMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRmYWxsYmFjazogbnVsbCkge1xuICAvLyBEZXRlY3Qgd2hhdCB0eXBlIG9mIHZhbHVlIGV4aXN0cyBpbiAkcG9zXG4gICRwb3MtdHlwZTogdHlwZS1vZihudGgoJHBvcywgMSkpO1xuICAkcG9zLXNwZWM6IG51bGw7XG4gICRwb3MtZGVncmVlOiBudWxsO1xuXG4gIC8vIElmICRwb3MgaXMgbWlzc2luZyBmcm9tIG1peGluLCByZWFzc2lnbiB2YXJzIGFuZCBhZGQgZGVmYXVsdCBwb3NpdGlvblxuICBAaWYgKCRwb3MtdHlwZSA9PSBjb2xvcikgb3IgKG50aCgkcG9zLCAxKSA9PSBcInRyYW5zcGFyZW50XCIpICB7XG4gICAgJEcxMDogJEc5OyAkRzk6ICRHODsgJEc4OiAkRzc7ICRHNzogJEc2OyAkRzY6ICRHNTtcbiAgICAgJEc1OiAkRzQ7ICRHNDogJEczOyAkRzM6ICRHMjsgJEcyOiAkRzE7ICRHMTogJHBvcztcbiAgICAgJHBvczogbnVsbDtcbiAgfVxuXG4gIEBpZiAkcG9zIHtcbiAgICAkcG9zaXRpb25zOiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcyk7XG4gICAgJHBvcy1kZWdyZWU6IG50aCgkcG9zaXRpb25zLCAxKTtcbiAgICAkcG9zLXNwZWM6ICAgbnRoKCRwb3NpdGlvbnMsIDIpO1xuICB9XG5cbiAgJGZ1bGw6ICRHMSwgJEcyLCAkRzMsICRHNCwgJEc1LCAkRzYsICRHNywgJEc4LCAkRzksICRHMTA7XG5cbiAgLy8gU2V0ICRHMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmFsbGJhY2stY29sb3I6IG50aCgkRzEsIDEpO1xuXG4gIC8vIElmICRmYWxsYmFjayBpcyBhIGNvbG9yIHVzZSB0aGF0IGNvbG9yIGFzIHRoZSBmYWxsYmFjayBjb2xvclxuICBAaWYgKHR5cGUtb2YoJGZhbGxiYWNrKSA9PSBjb2xvcikgb3IgKCRmYWxsYmFjayA9PSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAkZmFsbGJhY2stY29sb3I6ICRmYWxsYmFjaztcbiAgfVxuXG4gIGJhY2tncm91bmQtY29sb3I6ICRmYWxsYmFjay1jb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoJHBvcy1kZWdyZWUgJGZ1bGwpOyAvLyBTYWZhcmkgNS4xKywgQ2hyb21lXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVucXVvdGUoXCJsaW5lYXItZ3JhZGllbnQoI3skcG9zLXNwZWN9I3skZnVsbH0pXCIpO1xufVxuIiwiQG1peGluIHBlcnNwZWN0aXZlKCRkZXB0aDogbm9uZSkge1xuICAvLyBub25lIHwgPGxlbmd0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUsICRkZXB0aCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkdmFsdWU6IDUwJSA1MCUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUtb3JpZ2luLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCIvLyBSZXF1aXJlcyBTYXNzIDMuMStcbkBtaXhpbiByYWRpYWwtZ3JhZGllbnQoJEcxLCAgICAgICAgJEcyLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzM6IG51bGwsICRHNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJEc1OiBudWxsLCAkRzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRHNzogbnVsbCwgJEc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzk6IG51bGwsICRHMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRwb3M6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRzaGFwZS1zaXplOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcblxuICAkZGF0YTogX3JhZGlhbC1hcmctcGFyc2VyKCRHMSwgJEcyLCAkcG9zLCAkc2hhcGUtc2l6ZSk7XG4gICRHMTogIG50aCgkZGF0YSwgMSk7XG4gICRHMjogIG50aCgkZGF0YSwgMik7XG4gICRwb3M6IG50aCgkZGF0YSwgMyk7XG4gICRzaGFwZS1zaXplOiBudGgoJGRhdGEsIDQpO1xuXG4gICRmdWxsOiAkRzEsICRHMiwgJEczLCAkRzQsICRHNSwgJEc2LCAkRzcsICRHOCwgJEc5LCAkRzEwO1xuXG4gIC8vIFN0cmlwIGRlcHJlY2F0ZWQgY292ZXIvY29udGFpbiBmb3Igc3BlY1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgLy8gU2V0ICRHMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmlyc3QtY29sb3I6IG50aCgkZnVsbCwgMSk7XG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRmaXJzdC1jb2xvciwgMSk7XG5cbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cblxuICAvLyBBZGQgQ29tbWFzIGFuZCBzcGFjZXNcbiAgJHNoYXBlLXNpemU6IGlmKCRzaGFwZS1zaXplLCAnI3skc2hhcGUtc2l6ZX0sICcsIG51bGwpO1xuICAkcG9zOiAgICAgICAgaWYoJHBvcywgJyN7JHBvc30sICcsIG51bGwpO1xuICAkcG9zLXNwZWM6ICAgaWYoJHBvcywgJ2F0ICN7JHBvc30nLCBudWxsKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogaWYoKCRzaGFwZS1zaXplLXNwZWMgIT0gJyAnKSBhbmQgKCRwb3MgPT0gbnVsbCksICcjeyRzaGFwZS1zaXplLXNwZWN9LCAnLCAnI3skc2hhcGUtc2l6ZS1zcGVjfSAnKTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAgJGZhbGxiYWNrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudCh1bnF1b3RlKCN7JHBvc30jeyRzaGFwZS1zaXplfSN7JGZ1bGx9KSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVucXVvdGUoXCJyYWRpYWwtZ3JhZGllbnQoI3skc2hhcGUtc2l6ZS1zcGVjfSN7JHBvcy1zcGVjfSN7JGZ1bGx9KVwiKTtcbn1cbiIsIkBtaXhpbiB0cmFuc2Zvcm0oJHByb3BlcnR5OiBub25lKSB7XG4vLyAgbm9uZSB8IDx0cmFuc2Zvcm0tZnVuY3Rpb24+XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybSwgJHByb3BlcnR5LCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0tb3JpZ2luKCRheGVzOiA1MCUpIHtcbi8vIHgtYXhpcyAtIGxlZnQgfCBjZW50ZXIgfCByaWdodCAgfCBsZW5ndGggfCAlXG4vLyB5LWF4aXMgLSB0b3AgIHwgY2VudGVyIHwgYm90dG9tIHwgbGVuZ3RoIHwgJVxuLy8gei1heGlzIC0gICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0tb3JpZ2luLCAkYXhlcywgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtLXN0eWxlICgkc3R5bGU6IGZsYXQpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cbiIsIi8vIFNob3J0aGFuZCBtaXhpbi4gU3VwcG9ydHMgbXVsdGlwbGUgcGFyZW50aGVzZXMtZGVsaW1pbmF0ZWQgdmFsdWVzIGZvciBlYWNoIHZhcmlhYmxlLlxuLy8gRXhhbXBsZTogQGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDJzIGVhc2UtaW4tb3V0KTtcbi8vICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24gKG9wYWNpdHkgMXMgZWFzZS1pbiAycywgd2lkdGggMnMgZWFzZS1vdXQpO1xuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1wcm9wZXJ0eSAodHJhbnNmb3JtLCBvcGFjaXR5KTtcblxuQG1peGluIHRyYW5zaXRpb24gKCRwcm9wZXJ0aWVzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHByb3BlcnRpZXMpID49IDEge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICRwcm9wZXJ0aWVzOiBhbGwgMC4xNXMgZWFzZS1vdXQgMHM7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbiwgJHByb3BlcnRpZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24tcHJvcGVydHkgKCRwcm9wZXJ0aWVzLi4uKSB7XG4gICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsICd3ZWJraXQnKTtcbiAgICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcGVydGllcywgJ21veicpO1xuICAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBmYWxzZSk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uICgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24gKCRtb3Rpb25zLi4uKSB7XG4vLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoKVxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWRlbGF5ICgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIHVzZXItc2VsZWN0KCRhcmc6IG5vbmUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodXNlci1zZWxlY3QsICRhcmcsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCIkcGxhY2Vob2xkZXJzOiAnLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgICAnLW1vei1wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgICAnLW1zLWlucHV0LXBsYWNlaG9sZGVyJztcblxuQG1peGluIHBsYWNlaG9sZGVyIHtcbiAgQGVhY2ggJHBsYWNlaG9sZGVyIGluICRwbGFjZWhvbGRlcnMge1xuICAgIEBpZiAkcGxhY2Vob2xkZXIgPT0gXCItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyXCIge1xuICAgICAgJjo6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRwbGFjZWhvbGRlciA9PSBcIi1tb3otcGxhY2Vob2xkZXJcIiB7XG4gICAgICAvLyBGRiAxOC1cbiAgICAgICY6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIEZGIDE5K1xuICAgICAgJjo6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICY6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gYnV0dG9uICgkc3R5bGU6IHNpbXBsZSwgJGJhc2UtY29sb3I6ICM0Mjk0ZjApIHtcblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IGNvbG9yIHtcbiAgICAkYmFzZS1jb2xvcjogJHN0eWxlO1xuICAgICRzdHlsZTogc2ltcGxlO1xuICB9XG5cbiAgLy8gR3JheXNjYWxlIGJ1dHRvblxuICBAaWYgJGJhc2UtY29sb3IgPT0gZ3JheXNjYWxlKCRiYXNlLWNvbG9yKSB7XG4gICAgQGlmICRzdHlsZSA9PSBzaW1wbGUge1xuICAgICAgQGluY2x1ZGUgc2ltcGxlKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiB0cnVlKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkc3R5bGUgPT0gc2hpbnkge1xuICAgICAgQGluY2x1ZGUgc2hpbnkoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IHRydWUpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRzdHlsZSA9PSBwaWxsIHtcbiAgICAgIEBpbmNsdWRlIHBpbGwoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbG9yZWQgYnV0dG9uXG4gIEBlbHNlIHtcbiAgICBAaWYgJHN0eWxlID09IHNpbXBsZSB7XG4gICAgICBAaW5jbHVkZSBzaW1wbGUoJGJhc2UtY29sb3IpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRzdHlsZSA9PSBzaGlueSB7XG4gICAgICBAaW5jbHVkZSBzaGlueSgkYmFzZS1jb2xvcik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHN0eWxlID09IHBpbGwge1xuICAgICAgQGluY2x1ZGUgcGlsbCgkYmFzZS1jb2xvcik7XG4gICAgfVxuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cbn1cblxuXG4vLyBTaW1wbGUgQnV0dG9uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AbWl4aW4gc2ltcGxlKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDklLCAgJGxpZ2h0bmVzczogLTE0JSk7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtOCUsICAkbGlnaHRuZXNzOiAgMTUlKTtcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xMSUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDE1JSwgJGxpZ2h0bmVzczogLTE4JSk7XG5cbiAgQGlmIGxpZ2h0bmVzcygkYmFzZS1jb2xvcikgPiA3MCUge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gIH1cblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3IsICRzdG9wLWdyYWRpZW50KTtcbiAgcGFkZGluZzogN3B4IDE4cHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgJHRleHQtc2hhZG93O1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNCUsICRsaWdodG5lc3M6IC01JSk7XG4gICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC03JSwgJGxpZ2h0bmVzczogIDUlKTtcbiAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDglLCAkbGlnaHRuZXNzOiAtMTQlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctaG92ZXIpO1xuICAgICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG4gICAgfVxuXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogOSUsICRsaWdodG5lc3M6IC0xNCUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA3JSwgJGxpZ2h0bmVzczogLTE3JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDhweCA0cHggJGluc2V0LXNoYWRvdy1hY3RpdmUsIGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlLCAwIDFweCAxcHggMCAjZWVlO1xuICB9XG59XG5cblxuLy8gU2hpbnkgQnV0dG9uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AbWl4aW4gc2hpbnkoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlKSB7XG4gICRjb2xvcjogICAgICAgICBoc2woMCwgMCwgMTAwJSk7XG4gICRib3JkZXI6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMTcsICRncmVlbjogLTExMSwgJGJsdWU6IC04MSk7XG4gICRib3JkZXItYm90dG9tOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMjYsICRncmVlbjogLTEyNywgJGJsdWU6IC0xMjIpO1xuICAkZm91cnRoLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNzksICAkZ3JlZW46IC03MCwgICRibHVlOiAtNDYpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAgMzcsICAkZ3JlZW46ICAyOSwgICRibHVlOiAgMTIpO1xuICAkc2Vjb25kLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNTYsICAkZ3JlZW46IC01MCwgICRibHVlOiAtMzMpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTQwLCAkZ3JlZW46IC0xNDEsICRibHVlOiAtMTE0KTtcbiAgJHRoaXJkLXN0b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAgJGdyZWVuOiAtNzUsICAkYmx1ZTogLTQ4KTtcblxuICBAaWYgbGlnaHRuZXNzKCRiYXNlLWNvbG9yKSA+IDcwJSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcbiAgICAkYm9yZGVyLWJvdHRvbTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAkZm91cnRoLXN0b3A6ICAgZ3JheXNjYWxlKCRmb3VydGgtc3RvcCk7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc2Vjb25kLXN0b3A6ICAgZ3JheXNjYWxlKCRzZWNvbmQtc3RvcCk7XG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xuICAgICR0aGlyZC1zdG9wOiAgICBncmF5c2NhbGUoJHRoaXJkLXN0b3ApO1xuICB9XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRiYXNlLWNvbG9yIDAlLCAkc2Vjb25kLXN0b3AgNTAlLCAkdGhpcmQtc3RvcCA1MCUsICRmb3VydGgtc3RvcCAxMDAlKTtcbiAgcGFkZGluZzogOHB4IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3c7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgJGZpcnN0LXN0b3AtaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMywgJGdyZWVuOiAtMTUsICRibHVlOiAtMTgpO1xuICAgICRzZWNvbmQtc3RvcC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNjYsICRncmVlbjogLTYyLCAkYmx1ZTogLTUxKTtcbiAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTkzLCAkZ3JlZW46IC04NSwgJGJsdWU6IC02Nik7XG4gICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC04NiwgJGdyZWVuOiAtODAsICRibHVlOiAtNjMpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGdyYXlzY2FsZSgkZmlyc3Qtc3RvcC1ob3Zlcik7XG4gICAgICAkc2Vjb25kLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkc2Vjb25kLXN0b3AtaG92ZXIpO1xuICAgICAgJHRoaXJkLXN0b3AtaG92ZXI6ICBncmF5c2NhbGUoJHRoaXJkLXN0b3AtaG92ZXIpO1xuICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBncmF5c2NhbGUoJGZvdXJ0aC1zdG9wLWhvdmVyKTtcbiAgICB9XG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50KHRvcCwgJGZpcnN0LXN0b3AtaG92ZXIgIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWNvbmQtc3RvcC1ob3ZlciA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXJkLXN0b3AtaG92ZXIgIDUwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91cnRoLXN0b3AtaG92ZXIgMTAwJSk7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG4gICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExMSwgJGdyZWVuOiAtMTE2LCAkYmx1ZTogLTEyMik7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgIH1cblxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAyMHB4IDAgJGluc2V0LXNoYWRvdy1hY3RpdmUsIDAgMXB4IDAgI2ZmZjtcbiAgfVxufVxuXG5cbi8vIFBpbGwgQnV0dG9uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AbWl4aW4gcGlsbCgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAtMTElLCAkbGlnaHRuZXNzOiAtMjYlKTtcbiAgJGJvcmRlci1zaWRlczogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMjElLCAkbGlnaHRuZXNzOiAtMjElKTtcbiAgJGJvcmRlci10b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMzAlLCAkbGlnaHRuZXNzOiAtMTUlKTtcbiAgJGluc2V0LXNoYWRvdzogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMSUsICAkbGlnaHRuZXNzOiAgNyUpO1xuICAkc3RvcC1ncmFkaWVudDogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246ICAxNCUsICRsaWdodG5lc3M6IC0xMCUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNSwgJHNhdHVyYXRpb246IC0xOSUsICRsaWdodG5lc3M6IC0xNSUpO1xuXG4gIEBpZiBsaWdodG5lc3MoJGJhc2UtY29sb3IpID4gNzAlIHtcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xuICAgICR0ZXh0LXNoYWRvdzogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogMTAlLCAkbGlnaHRuZXNzOiA0JSk7XG4gIH1cblxuICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAkYm9yZGVyLWJvdHRvbTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgZ3JheXNjYWxlKCRib3JkZXItc2lkZXMpO1xuICAgICRib3JkZXItdG9wOiAgICBncmF5c2NhbGUoJGJvcmRlci10b3ApO1xuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XG4gICAgJHN0b3AtZ3JhZGllbnQ6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudCk7XG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xuICB9XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci10b3A7XG4gIGJvcmRlci1jb2xvcjogJGJvcmRlci10b3AgJGJvcmRlci1zaWRlcyAkYm9yZGVyLWJvdHRvbTtcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3csIDAgMXB4IDJweCAwICNiM2IzYjM7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMTtcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xuICBwYWRkaW5nOiA1cHggMTZweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpZ2h0bmVzczogLTQuNSUpO1xuICAgICRib3JkZXItYm90dG9tOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDEzLjUlLCAkbGlnaHRuZXNzOiAtMzIlKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yJSwgICAgJGxpZ2h0bmVzczogLTI3JSk7XG4gICAgJGJvcmRlci10b3A6ICAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMTclLCAgICRsaWdodG5lc3M6IC0yMSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICAgICAgICAgICAkc2F0dXJhdGlvbjogLTElLCAgICAkbGlnaHRuZXNzOiAgMyUpO1xuICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogLTQlLCAgICAkbGlnaHRuZXNzOiAtMTUuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTUlLCAgICAkbGlnaHRuZXNzOiAtMjIlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAgICRib3JkZXItc2lkZXM6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XG4gICAgICAkYm9yZGVyLXRvcDogICAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWhvdmVyKTtcbiAgICB9XG5cbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLXRvcDtcbiAgICBib3JkZXItY29sb3I6ICRib3JkZXItdG9wICRib3JkZXItc2lkZXMgJGJvcmRlci1ib3R0b207XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3ctaG92ZXI7XG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNCwgICRzYXR1cmF0aW9uOiAtMTIlLCAgJGxpZ2h0bmVzczogLTEwJSk7XG4gICAgJGJvcmRlci1hY3RpdmU6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDYsICAkc2F0dXJhdGlvbjogLTIuNSUsICRsaWdodG5lc3M6IC0zMCUpO1xuICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAxMSwgJHNhdHVyYXRpb246ICA2JSwgICAkbGlnaHRuZXNzOiAtMzElKTtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogOSwgICRzYXR1cmF0aW9uOiAgMiUsICAgJGxpZ2h0bmVzczogLTIxLjUlKTtcbiAgICAkdGV4dC1zaGFkb3ctYWN0aXZlOiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNSwgICRzYXR1cmF0aW9uOiAtMTIlLCAgJGxpZ2h0bmVzczogLTIxLjUlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGFjdGl2ZS1jb2xvcjogICAgICAgICBncmF5c2NhbGUoJGFjdGl2ZS1jb2xvcik7XG4gICAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWFjdGl2ZSk7XG4gICAgICAkYm9yZGVyLWJvdHRvbS1hY3RpdmU6IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbS1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgICAgJHRleHQtc2hhZG93LWFjdGl2ZTogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZDogJGFjdGl2ZS1jb2xvcjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWFjdGl2ZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1ib3R0b20tYWN0aXZlO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA2cHggM3B4ICRpbnNldC1zaGFkb3ctYWN0aXZlLCAwIDFweCAwIDAgI2ZmZjtcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG4iLCIvLyBNb2Rlcm4gbWljcm8gY2xlYXJmaXggcHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gY29udGFpbiBmbG9hdHMgd2l0aG91dCBhZGRpbmcgYWRkaXRpb25hbCBtYXJrdXAuXG4vL1xuLy8gRXhhbXBsZSB1c2FnZTpcbi8vXG4vLyAgICAvLyBDb250YWluIGFsbCBmbG9hdHMgd2l0aGluIC53cmFwcGVyXG4vLyAgICAud3JhcHBlciB7XG4vLyAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuLy8gICAgICAuY29udGVudCxcbi8vICAgICAgLnNpZGViYXIge1xuLy8gICAgICAgIGZsb2F0IDogbGVmdDtcbi8vICAgICAgfVxuLy8gICAgfVxuXG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OlwiXCI7XG4gICAgZGlzcGxheTp0YWJsZTtcbiAgICBjbGVhcjpib3RoO1xuICB9XG59XG5cbi8vIEFja25vd2xlZGdlbWVudHNcbi8vIEJlYXQgKnRoYXQqIGNsZWFyZml4OiBbVGhpZXJyeSBLb2JsZW50el0oaHR0cDovL3d3dy5jc3MtMTAxLm9yZy9hcnRpY2xlcy9jbGVhcmZpeC9sYXRlc3QtbmV3LWNsZWFyZml4LXNvLWZhci5waHApXG4iLCIkZ2VvcmdpYTogR2VvcmdpYSwgQ2FtYnJpYSwgXCJUaW1lcyBOZXcgUm9tYW5cIiwgVGltZXMsIHNlcmlmO1xuJGhlbHZldGljYTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGx1Y2lkYS1ncmFuZGU6IFwiTHVjaWRhIEdyYW5kZVwiLCBUYWhvbWEsIFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJG1vbm9zcGFjZTogXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgQ29uc29sYXMsIENvdXJpZXIsIG1vbm9zcGFjZTtcbiR2ZXJkYW5hOiBWZXJkYW5hLCBHZW5ldmEsIHNhbnMtc2VyaWY7XG4iLCJAbWl4aW4gaGlkZS10ZXh0IHtcbiAgY29sb3I6ICAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIGZvbnQ6ICAgICAgICAgICAgIDAvMCBhO1xuICB0ZXh0LXNoYWRvdzogICAgICBub25lO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gR2VuZXJhdGUgYSB2YXJpYWJsZSAoJGFsbC10ZXh0LWlucHV0cykgd2l0aCBhIGxpc3Qgb2YgYWxsIGh0bWw1XG4vLyBpbnB1dCB0eXBlcyB0aGF0IGhhdmUgYSB0ZXh0LWJhc2VkIGlucHV0LCBleGNsdWRpbmcgdGV4dGFyZWEuXG4vLyBodHRwOi8vZGl2ZWludG9odG1sNS5vcmcvZm9ybXMuaHRtbFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuJGlucHV0cy1saXN0OiAnaW5wdXRbdHlwZT1cImVtYWlsXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJudW1iZXJcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRlbFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGV4dFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidXJsXCJdJyxcblxuICAgICAgICAgICAgICAvLyBXZWJraXQgJiBHZWNrbyBtYXkgY2hhbmdlIHRoZSBkaXNwbGF5IG9mIHRoZXNlIGluIHRoZSBmdXR1cmVcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJjb2xvclwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZVwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJtb250aFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGltZVwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwid2Vla1wiXSc7XG5cbiR1bnF1b3RlZC1pbnB1dHMtbGlzdDogKCk7XG5AZWFjaCAkaW5wdXQtdHlwZSBpbiAkaW5wdXRzLWxpc3Qge1xuICAkdW5xdW90ZWQtaW5wdXRzLWxpc3Q6IGFwcGVuZCgkdW5xdW90ZWQtaW5wdXRzLWxpc3QsIHVucXVvdGUoJGlucHV0LXR5cGUpLCBjb21tYSk7XG59XG5cbiRhbGwtdGV4dC1pbnB1dHM6ICR1bnF1b3RlZC1pbnB1dHMtbGlzdDtcblxuXG4vLyBIb3ZlciBQc2V1ZG8tY2xhc3Ncbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbiRhbGwtdGV4dC1pbnB1dHMtaG92ZXI6ICgpO1xuQGVhY2ggJGlucHV0LXR5cGUgaW4gJHVucXVvdGVkLWlucHV0cy1saXN0IHtcbiAgICAgICRpbnB1dC10eXBlLWhvdmVyOiAkaW5wdXQtdHlwZSArIFwiOmhvdmVyXCI7XG4gICAgICAkYWxsLXRleHQtaW5wdXRzLWhvdmVyOiBhcHBlbmQoJGFsbC10ZXh0LWlucHV0cy1ob3ZlciwgJGlucHV0LXR5cGUtaG92ZXIsIGNvbW1hKTtcbn1cblxuLy8gRm9jdXMgUHNldWRvLWNsYXNzXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4kYWxsLXRleHQtaW5wdXRzLWZvY3VzOiAoKTtcbkBlYWNoICRpbnB1dC10eXBlIGluICR1bnF1b3RlZC1pbnB1dHMtbGlzdCB7XG4gICAgICAkaW5wdXQtdHlwZS1mb2N1czogJGlucHV0LXR5cGUgKyBcIjpmb2N1c1wiO1xuICAgICAgJGFsbC10ZXh0LWlucHV0cy1mb2N1czogYXBwZW5kKCRhbGwtdGV4dC1pbnB1dHMtZm9jdXMsICRpbnB1dC10eXBlLWZvY3VzLCBjb21tYSk7XG59XG5cbi8vIFlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTpcbi8vICN7JGFsbC10ZXh0LWlucHV0c31cbi8vICN7JGFsbC10ZXh0LWlucHV0cy1ob3Zlcn1cbi8vICN7JGFsbC10ZXh0LWlucHV0cy1mb2N1c31cblxuLy8gRXhhbXBsZVxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gICAjeyRhbGwtdGV4dC1pbnB1dHN9LCB0ZXh0YXJlYSB7XG4vLyAgICAgYm9yZGVyOiAxcHggc29saWQgcmVkO1xuLy8gICB9XG4iLCJAbWl4aW4gcG9zaXRpb24gKCRwb3NpdGlvbjogcmVsYXRpdmUsICRjb29yZGluYXRlczogMCAwIDAgMCkge1xuXG4gIEBpZiB0eXBlLW9mKCRwb3NpdGlvbikgPT0gbGlzdCB7XG4gICAgJGNvb3JkaW5hdGVzOiAkcG9zaXRpb247XG4gICAgJHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XG5cbiAgQGlmICR0b3AgPT0gYXV0byB7XG4gICAgdG9wOiAkdG9wO1xuICB9XG4gIEBlbHNlIGlmIG5vdCh1bml0bGVzcygkdG9wKSkge1xuICAgIHRvcDogJHRvcDtcbiAgfVxuXG4gIEBpZiAkcmlnaHQgPT0gYXV0byB7XG4gICAgcmlnaHQ6ICRyaWdodDtcbiAgfVxuICBAZWxzZSBpZiBub3QodW5pdGxlc3MoJHJpZ2h0KSkge1xuICAgIHJpZ2h0OiAkcmlnaHQ7XG4gIH1cblxuICBAaWYgJGJvdHRvbSA9PSBhdXRvIHtcbiAgICBib3R0b206ICRib3R0b207XG4gIH1cbiAgQGVsc2UgaWYgbm90KHVuaXRsZXNzKCRib3R0b20pKSB7XG4gICAgYm90dG9tOiAkYm90dG9tO1xuICB9XG5cbiAgQGlmICRsZWZ0ID09IGF1dG8ge1xuICAgIGxlZnQ6ICRsZWZ0O1xuICB9XG4gIEBlbHNlIGlmIG5vdCh1bml0bGVzcygkbGVmdCkpIHtcbiAgICBsZWZ0OiAkbGVmdDtcbiAgfVxufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gRXhhbXBsZTogQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXJhZGl1cywgJHJhZGlpLCB3ZWJraXQgbXMgc3BlYyk7XG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBWYXJpYWJsZXMgbG9jYXRlZCBpbiAvc2V0dGluZ3MvX3ByZWZpeGVyLnNjc3NcblxuQG1peGluIHByZWZpeGVyICgkcHJvcGVydHksICR2YWx1ZSwgJHByZWZpeGVzKSB7XG4gIEBlYWNoICRwcmVmaXggaW4gJHByZWZpeGVzIHtcbiAgICBAaWYgJHByZWZpeCA9PSB3ZWJraXQge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRwcmVmaXggPT0gbW96IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICAgICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3ItbWljcm9zb2Z0IHtcbiAgICAgICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkcHJlZml4ID09IG8ge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW9wZXJhIHtcbiAgICAgICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRwcmVmaXggPT0gc3BlYyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itc3BlYyB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSAge1xuICAgICAgQHdhcm4gXCJVbnJlY29nbml6ZWQgcHJlZml4OiAjeyRwcmVmaXh9XCI7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCkge1xuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgIGZhbHNlO1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgIGZhbHNlO1xuICAkcHJlZml4LWZvci1taWNyb3NvZnQ6IGZhbHNlO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgIGZhbHNlO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgIGZhbHNlO1xufVxuIiwiQG1peGluIHJldGluYS1pbWFnZSgkZmlsZW5hbWUsICRiYWNrZ3JvdW5kLXNpemUsICRleHRlbnNpb246IHBuZywgJHJldGluYS1maWxlbmFtZTogbnVsbCwgJHJldGluYS1zdWZmaXg6IF8yeCwgJGFzc2V0LXBpcGVsaW5lOiBmYWxzZSkge1xuICBAaWYgJGFzc2V0LXBpcGVsaW5lIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRmaWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gIH1cblxuICBAaW5jbHVkZSBoaWRwaSB7XG4gICAgQGlmICRhc3NldC1waXBlbGluZSB7XG4gICAgICBAaWYgJHJldGluYS1maWxlbmFtZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJHJldGluYS1maWxlbmFtZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRiYWNrZ3JvdW5kLXNpemU7XG5cbiAgfVxufVxuIiwiQG1peGluIHNpemUoJHNpemUpIHtcbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgQGlmICRzaXplID09IGF1dG8ge1xuICAgICAgd2lkdGg6ICAkc2l6ZTtcbiAgICAgIGhlaWdodDogJHNpemU7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgdW5pdGxlc3MoJHNpemUpIHtcbiAgICAgIHdpZHRoOiAgJHNpemUgKyBweDtcbiAgICAgIGhlaWdodDogJHNpemUgKyBweDtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiBub3QodW5pdGxlc3MoJHNpemUpKSB7XG4gICAgICB3aWR0aDogICRzaXplO1xuICAgICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB9XG4gIH1cblxuICAvLyBXaWR0aCB4IEhlaWdodFxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICAkd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG5cbiAgICBAaWYgJHdpZHRoID09IGF1dG8ge1xuICAgICAgd2lkdGg6ICR3aWR0aDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90KHVuaXRsZXNzKCR3aWR0aCkpIHtcbiAgICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgfVxuICAgIEBlbHNlIGlmIHVuaXRsZXNzKCR3aWR0aCkge1xuICAgICAgd2lkdGg6ICR3aWR0aCArIHB4O1xuICAgIH1cblxuICAgIEBpZiAkaGVpZ2h0ID09IGF1dG8ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QodW5pdGxlc3MoJGhlaWdodCkpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgQGVsc2UgaWYgdW5pdGxlc3MoJGhlaWdodCkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0ICsgcHg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBDU1MgY3ViaWMtYmV6aWVyIHRpbWluZyBmdW5jdGlvbnMuIFRpbWluZyBmdW5jdGlvbnMgY291cnRlc3kgb2YganF1ZXJ5LmVhc2llIChnaXRodWIuY29tL2phdWtpYS9lYXNpZSlcbi8vIFRpbWluZyBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGRlbW8nZWQgaGVyZTogaHR0cDovL2pxdWVyeXVpLmNvbS9kZW1vcy9lZmZlY3QvZWFzaW5nLmh0bWxcblxuLy8gRUFTRSBJTlxuJGVhc2UtaW4tcXVhZDogICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA4NSwgMC42ODAsIDAuNTMwKTtcbiRlYXNlLWluLWN1YmljOiAgICAgY3ViaWMtYmV6aWVyKDAuNTUwLCAgMC4wNTUsIDAuNjc1LCAwLjE5MCk7XG4kZWFzZS1pbi1xdWFydDogICAgIGN1YmljLWJlemllcigwLjg5NSwgIDAuMDMwLCAwLjY4NSwgMC4yMjApO1xuJGVhc2UtaW4tcXVpbnQ6ICAgICBjdWJpYy1iZXppZXIoMC43NTUsICAwLjA1MCwgMC44NTUsIDAuMDYwKTtcbiRlYXNlLWluLXNpbmU6ICAgICAgY3ViaWMtYmV6aWVyKDAuNDcwLCAgMC4wMDAsIDAuNzQ1LCAwLjcxNSk7XG4kZWFzZS1pbi1leHBvOiAgICAgIGN1YmljLWJlemllcigwLjk1MCwgIDAuMDUwLCAwLjc5NSwgMC4wMzUpO1xuJGVhc2UtaW4tY2lyYzogICAgICBjdWJpYy1iZXppZXIoMC42MDAsICAwLjA0MCwgMC45ODAsIDAuMzM1KTtcbiRlYXNlLWluLWJhY2s6ICAgICAgY3ViaWMtYmV6aWVyKDAuNjAwLCAtMC4yODAsIDAuNzM1LCAwLjA0NSk7XG5cbi8vIEVBU0UgT1VUXG4kZWFzZS1vdXQtcXVhZDogICAgIGN1YmljLWJlemllcigwLjI1MCwgIDAuNDYwLCAwLjQ1MCwgMC45NDApO1xuJGVhc2Utb3V0LWN1YmljOiAgICBjdWJpYy1iZXppZXIoMC4yMTUsICAwLjYxMCwgMC4zNTUsIDEuMDAwKTtcbiRlYXNlLW91dC1xdWFydDogICAgY3ViaWMtYmV6aWVyKDAuMTY1LCAgMC44NDAsIDAuNDQwLCAxLjAwMCk7XG4kZWFzZS1vdXQtcXVpbnQ6ICAgIGN1YmljLWJlemllcigwLjIzMCwgIDEuMDAwLCAwLjMyMCwgMS4wMDApO1xuJGVhc2Utb3V0LXNpbmU6ICAgICBjdWJpYy1iZXppZXIoMC4zOTAsICAwLjU3NSwgMC41NjUsIDEuMDAwKTtcbiRlYXNlLW91dC1leHBvOiAgICAgY3ViaWMtYmV6aWVyKDAuMTkwLCAgMS4wMDAsIDAuMjIwLCAxLjAwMCk7XG4kZWFzZS1vdXQtY2lyYzogICAgIGN1YmljLWJlemllcigwLjA3NSwgIDAuODIwLCAwLjE2NSwgMS4wMDApO1xuJGVhc2Utb3V0LWJhY2s6ICAgICBjdWJpYy1iZXppZXIoMC4xNzUsICAwLjg4NSwgMC4zMjAsIDEuMjc1KTtcblxuLy8gRUFTRSBJTiBPVVRcbiRlYXNlLWluLW91dC1xdWFkOiAgY3ViaWMtYmV6aWVyKDAuNDU1LCAgMC4wMzAsIDAuNTE1LCAwLjk1NSk7XG4kZWFzZS1pbi1vdXQtY3ViaWM6IGN1YmljLWJlemllcigwLjY0NSwgIDAuMDQ1LCAwLjM1NSwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXF1YXJ0OiBjdWJpYy1iZXppZXIoMC43NzAsICAwLjAwMCwgMC4xNzUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWludDogY3ViaWMtYmV6aWVyKDAuODYwLCAgMC4wMDAsIDAuMDcwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtc2luZTogIGN1YmljLWJlemllcigwLjQ0NSwgIDAuMDUwLCAwLjU1MCwgMC45NTApO1xuJGVhc2UtaW4tb3V0LWV4cG86ICBjdWJpYy1iZXppZXIoMS4wMDAsICAwLjAwMCwgMC4wMDAsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1jaXJjOiAgY3ViaWMtYmV6aWVyKDAuNzg1LCAgMC4xMzUsIDAuMTUwLCAwLjg2MCk7XG4kZWFzZS1pbi1vdXQtYmFjazogIGN1YmljLWJlemllcigwLjY4MCwgLTAuNTUwLCAwLjI2NSwgMS41NTApO1xuIiwiQG1peGluIHRyaWFuZ2xlICgkc2l6ZSwgJGNvbG9yLCAkZGlyZWN0aW9uKSB7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcblxuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogICAkY29sb3I7XG5cbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAgICAkY29sb3I7XG5cbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICAkY29sb3I7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdXAtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHVwLWxlZnQpIHtcbiAgICBib3JkZXItdG9wOiAkc2l6ZSBzb2xpZCAkY29sb3I7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdDogICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHVwLWxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQpIHtcbiAgICBib3JkZXItYm90dG9tOiAkc2l6ZSBzb2xpZCAkY29sb3I7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93bi1sZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBUaGVzZSBtaXhpbnMvZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkXG4vLyBUaGV5IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBNQUpPUiB2ZXJzaW9uIHJlbGVhc2Vcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBtaXhpbiBib3gtc2hhZG93ICgkc2hhZG93cy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtc2hhZG93LCAkc2hhZG93cywgc3BlYyk7XG4gIEB3YXJuIFwiYm94LXNoYWRvdyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLXNpemUgKCRsZW5ndGhzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJhY2tncm91bmQtc2l6ZSwgJGxlbmd0aHMsIHNwZWMpO1xuICBAd2FybiBcImJhY2tncm91bmQtc2l6ZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG4iLCIvLyBGdW5jdGlvbnNcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcHJpdmF0ZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9uZXctYnJlYWtwb2ludFwiO1xuXG4vLyBTZXR0aW5nc1xuQGltcG9ydCBcInNldHRpbmdzL2dyaWRcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy92aXN1YWwtZ3JpZFwiO1xuIiwiJHBhcmVudC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zICFkZWZhdWx0O1xuJGZnLWNvbHVtbjogJGNvbHVtbjtcbiRmZy1ndXR0ZXI6ICRndXR0ZXI7XG4kZmctbWF4LWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4kY29udGFpbmVyLWRpc3BsYXktdGFibGU6IGZhbHNlICFkZWZhdWx0O1xuJGxheW91dC1kaXJlY3Rpb246IG5pbCAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMpIHtcbiAgJHdpZHRoOiAkY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJHdpZHRoIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbkBmdW5jdGlvbiBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucywgJGd1dHRlcjogJGZnLWd1dHRlcikge1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCRndXR0ZXIgLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG59XG5cbkBmdW5jdGlvbiBnZXQtcGFyZW50LWNvbHVtbnMoJGNvbHVtbnMpIHtcbiAgQGlmICRjb2x1bW5zICE9ICRncmlkLWNvbHVtbnMge1xuICAgICRwYXJlbnQtY29sdW1uczogJGNvbHVtbnM7XG4gIH0gQGVsc2Uge1xuICAgICRwYXJlbnQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgfVxuXG4gIEByZXR1cm4gJHBhcmVudC1jb2x1bW5zO1xufVxuXG5AZnVuY3Rpb24gaXMtZGlzcGxheS10YWJsZSgkY29udGFpbmVyLWlzLWRpc3BsYXktdGFibGUsICRkaXNwbGF5KSB7XG4gICRkaXNwbGF5LXRhYmxlOiBmYWxzZTtcblxuICBAaWYgJGNvbnRhaW5lci1pcy1kaXNwbGF5LXRhYmxlID09IHRydWUge1xuICAgICRkaXNwbGF5LXRhYmxlOiB0cnVlO1xuICB9IEBlbHNlIGlmICRkaXNwbGF5ID09IHRhYmxlIHtcbiAgICAkZGlzcGxheS10YWJsZTogdHJ1ZTtcbiAgfVxuXG4gIEByZXR1cm4gJGRpc3BsYXktdGFibGU7XG59XG4iLCJAbWl4aW4gcmVzZXQtZGlzcGxheSB7XG4gICRjb250YWluZXItZGlzcGxheS10YWJsZTogZmFsc2U7XG59XG5cbkBtaXhpbiByZXNldC1sYXlvdXQtZGlyZWN0aW9uIHtcbiAgJGxheW91dC1kaXJlY3Rpb246ICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb247XG59XG5cbkBtaXhpbiByZXNldC1hbGwge1xuICBAaW5jbHVkZSByZXNldC1kaXNwbGF5O1xuICBAaW5jbHVkZSByZXNldC1sYXlvdXQtZGlyZWN0aW9uO1xufVxuIiwiQGlmICRib3JkZXItYm94LXNpemluZyA9PSB0cnVlIHtcbiAgKiB7XG4gICAgQGluY2x1ZGUgYm94LXNpemluZyhib3JkZXItYm94KTtcbiAgfVxufVxuIiwiLy8gUmVtb3ZlIGxhc3QgZWxlbWVudCBndXR0ZXJcbkBtaXhpbiBvbWVnYSgkcXVlcnk6IGJsb2NrLCAkZGlyZWN0aW9uOiBkZWZhdWx0KSB7XG4gICR0YWJsZTogaWYoYmVsb25ncy10byh0YWJsZSwgJHF1ZXJ5KSwgdHJ1ZSwgZmFsc2UpO1xuICAkYXV0bzogaWYoYmVsb25ncy10byhhdXRvLCAkcXVlcnkpLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGlmICRkaXJlY3Rpb24gIT0gZGVmYXVsdCB7XG4gICAgQHdhcm4gXCJUaGUgb21lZ2EgbWl4aW4gd2lsbCBubyBsb25nZXIgdGFrZSBhICRkaXJlY3Rpb24gYXJndW1lbnQuIFRvIGNoYW5nZSB0aGUgbGF5b3V0IGRpcmVjdGlvbiwgdXNlIHJvdygkZGlyZWN0aW9uKSBvciBzZXQgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbiBpbnN0ZWFkLlwiXG4gIH0gQGVsc2Uge1xuICAgICRkaXJlY3Rpb246IGdldC1kaXJlY3Rpb24oJGxheW91dC1kaXJlY3Rpb24sICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pO1xuICB9XG5cbiAgQGlmICR0YWJsZSB7XG4gICAgQHdhcm4gXCJUaGUgb21lZ2EgbWl4aW4gbm8gbG9uZ2VyIHJlbW92ZXMgcGFkZGluZyBpbiB0YWJsZSBsYXlvdXRzLlwiXG4gIH1cblxuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgQGlmICRhdXRvIHtcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmIGNvbnRhaW5zLWRpc3BsYXktdmFsdWUoJHF1ZXJ5KSBhbmQgJHRhYmxlID09IGZhbHNlIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIG50aC1jaGlsZCgkcXVlcnksICRkaXJlY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiAkYXV0byB7XG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBudGgtY2hpbGQobnRoKCRxdWVyeSwgMSksICRkaXJlY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlRvbyBtYW55IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIG9tZWdhKCkgbWl4aW4uXCJcbiAgfVxufVxuXG5AbWl4aW4gbnRoLWNoaWxkKCRxdWVyeSwgJGRpcmVjdGlvbikge1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pO1xuXG4gICY6bnRoLWNoaWxkKCN7JHF1ZXJ5fSkge1xuICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICY6bnRoLWNoaWxkKCN7JHF1ZXJ5fSsxKSB7XG4gICAgICBjbGVhcjogJG9wcG9zaXRlLWRpcmVjdGlvbjtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBvdXRlci1jb250YWluZXIge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICBtYXJnaW46IHtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG59XG4iLCJAbWl4aW4gc3Bhbi1jb2x1bW5zKCRzcGFuOiAkY29sdW1ucyBvZiAkY29udGFpbmVyLWNvbHVtbnMsICRkaXNwbGF5OiBibG9jaykge1xuICAkY29sdW1uczogbnRoKCRzcGFuLCAxKTtcbiAgJGNvbnRhaW5lci1jb2x1bW5zOiBjb250YWluZXItc3Bhbigkc3Bhbik7XG5cbiAgLy8gU2V0IG5lc3RpbmcgY29udGV4dCAodXNlZCBieSBzaGlmdCgpKVxuICAkcGFyZW50LWNvbHVtbnM6IGdldC1wYXJlbnQtY29sdW1ucygkY29udGFpbmVyLWNvbHVtbnMpO1xuXG4gICRkaXJlY3Rpb246IGdldC1kaXJlY3Rpb24oJGxheW91dC1kaXJlY3Rpb24sICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pO1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pO1xuXG4gICRkaXNwbGF5LXRhYmxlOiBpcy1kaXNwbGF5LXRhYmxlKCRjb250YWluZXItZGlzcGxheS10YWJsZSwgJGRpc3BsYXkpO1xuXG4gIEBpZiAkZGlzcGxheS10YWJsZSAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoJGNvbHVtbnMgLyAkY29udGFpbmVyLWNvbHVtbnMpO1xuICB9IEBlbHNlIHtcbiAgICBmbG9hdDogI3skb3Bwb3NpdGUtZGlyZWN0aW9ufTtcblxuICAgIEBpZiAkZGlzcGxheSAhPSBuby1kaXNwbGF5IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIEBpZiAkZGlzcGxheSA9PSBjb2xsYXBzZSB7XG4gICAgICBAd2FybiBcIlRoZSAnY29sbGFwc2UnIGFyZ3VtZW50IHdpbGwgYmUgZGVwcmVjYXRlZC4gVXNlICdibG9jay1jb2xsYXBzZScgaW5zdGVhZC5cIlxuICAgIH1cblxuICAgIEBpZiAkZGlzcGxheSA9PSBjb2xsYXBzZSBvciAkZGlzcGxheSA9PSBibG9jay1jb2xsYXBzZSB7XG4gICAgICB3aWR0aDogZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnMpICsgZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zKTtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zKTtcbiAgICAgIH1cblxuICAgIH0gQGVsc2Uge1xuICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1ucyk7XG4gICAgICB3aWR0aDogZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnMpO1xuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiByb3coJGRpc3BsYXk6IGJsb2NrLCAkZGlyZWN0aW9uOiAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICAkbGF5b3V0LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcblxuICBAaWYgJGRpc3BsYXkgPT0gdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIEBpbmNsdWRlIGZpbGwtcGFyZW50O1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiB0cnVlO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICRjb250YWluZXItZGlzcGxheS10YWJsZTogZmFsc2U7XG4gIH1cbn1cblxuIiwiQG1peGluIHNoaWZ0KCRuLWNvbHVtbnM6IDEpIHtcbiAgQGluY2x1ZGUgc2hpZnQtaW4tY29udGV4dCgkbi1jb2x1bW5zKTtcbn1cblxuQG1peGluIHNoaWZ0LWluLWNvbnRleHQoJHNoaWZ0OiAkY29sdW1ucyBvZiAkY29udGFpbmVyLWNvbHVtbnMpIHtcbiAgJG4tY29sdW1uczogbnRoKCRzaGlmdCwgMSk7XG4gICRwYXJlbnQtY29sdW1uczogY29udGFpbmVyLXNoaWZ0KCRzaGlmdCk7XG5cbiAgJGRpcmVjdGlvbjogZ2V0LWRpcmVjdGlvbigkbGF5b3V0LWRpcmVjdGlvbiwgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbik7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGdldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcmVjdGlvbik7XG5cbiAgbWFyZ2luLSN7JG9wcG9zaXRlLWRpcmVjdGlvbn06ICRuLWNvbHVtbnMgKiBmbGV4LWdyaWQoMSwgJHBhcmVudC1jb2x1bW5zKSArICRuLWNvbHVtbnMgKiBmbGV4LWd1dHRlcigkcGFyZW50LWNvbHVtbnMpO1xuXG4gIC8vIFJlc2V0IG5lc3RpbmcgY29udGV4dFxuICAkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG59XG4iLCJAbWl4aW4gcGFkKCRwYWRkaW5nOiBmbGV4LWd1dHRlcigpKSB7XG4gICRwYWRkaW5nLWxpc3Q6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkcGFkZGluZyB7XG4gICAgJHZhbHVlOiBpZigkdmFsdWUgPT0gJ2RlZmF1bHQnLCBmbGV4LWd1dHRlcigpLCAkdmFsdWUpO1xuICAgICRwYWRkaW5nLWxpc3Q6IGpvaW4oJHBhZGRpbmctbGlzdCwgJHZhbHVlKTtcbiAgfVxuICBwYWRkaW5nOiAkcGFkZGluZy1saXN0O1xufVxuIiwiQG1peGluIGZpbGwtcGFyZW50KCkge1xuICB3aWR0aDogMTAwJTtcblxuICBAaWYgJGJvcmRlci1ib3gtc2l6aW5nID09IGZhbHNlIHtcbiAgICBAaW5jbHVkZSBib3gtc2l6aW5nKGJvcmRlci1ib3gpO1xuICB9XG59XG4iLCJAbWl4aW4gbWVkaWEoJHF1ZXJ5OiRmZWF0dXJlICR2YWx1ZSAkY29sdW1ucywgJHRvdGFsLWNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgQGlmIGxlbmd0aCgkcXVlcnkpID09IDEge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kICgkZGVmYXVsdC1mZWF0dXJlOiBudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnM7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgJGxvb3BUbzogbGVuZ3RoKCRxdWVyeSk7XG4gICAgJG1lZGlhUXVlcnk6ICdzY3JlZW4gYW5kICc7XG4gICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuXG4gICAgQGlmIGxlbmd0aCgkcXVlcnkpICUgMiAhPSAwIHtcbiAgICAgICRncmlkLWNvbHVtbnM6IG50aCgkcXVlcnksICRsb29wVG8pO1xuICAgICAgJGxvb3BUbzogJGxvb3BUbyAtIDE7XG4gICAgfVxuXG4gICAgJGk6IDE7XG4gICAgQHdoaWxlICRpIDw9ICRsb29wVG8ge1xuICAgICAgJG1lZGlhUXVlcnk6ICRtZWRpYVF1ZXJ5ICsgJygnICsgbnRoKCRxdWVyeSwgJGkpICsgJzogJyArIG50aCgkcXVlcnksICRpICsgMSkgKyAnKSAnO1xuXG4gICAgICBAaWYgKCRpICsgMSkgIT0gJGxvb3BUbyB7XG4gICAgICAgICRtZWRpYVF1ZXJ5OiAkbWVkaWFRdWVyeSArICdhbmQgJztcbiAgICAgIH1cblxuICAgICAgJGk6ICRpICsgMjtcbiAgICB9XG5cbiAgICBAbWVkaWEgI3skbWVkaWFRdWVyeX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gYnJlYWtwb2ludCgkcXVlcnk6JGZlYXR1cmUgJHZhbHVlICRjb2x1bW5zLCAkdG90YWwtY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICBAd2FybiBcIlRoZSBicmVha3BvaW50KCkgbWl4aW4gd2FzIHJlbmFtZWQgdG8gbWVkaWEoKSBpbiBOZWF0IDEuMC4gUGxlYXNlIHVwZGF0ZSB5b3VyIHByb2plY3Qgd2l0aCB0aGUgbmV3IHN5bnRheCBiZWZvcmUgdGhlIG5leHQgdmVyc2lvbiBidW1wLlwiO1xuXG4gIEBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAxIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAoJGRlZmF1bHQtZmVhdHVyZTogbnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnM7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAzIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiBudGgoJHF1ZXJ5LCAzKTtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDQge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIGFuZCAobnRoKCRxdWVyeSwgMyk6IG50aCgkcXVlcnksIDQpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkdG90YWwtY29sdW1ucztcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDUge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIGFuZCAobnRoKCRxdWVyeSwgMyk6IG50aCgkcXVlcnksIDQpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiBudGgoJHF1ZXJ5LCA1KTtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGJyZWFrcG9pbnQoKS4gUmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLlwiO1xuICB9XG59XG5cbkBtaXhpbiBudGgtb21lZ2EoJG50aCwgJGRpc3BsYXk6IGJsb2NrLCAkZGlyZWN0aW9uOiBkZWZhdWx0KSB7XG4gIEB3YXJuIFwiVGhlIG50aC1vbWVnYSgpIG1peGluIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2Ugb21lZ2EoKSBpbnN0ZWFkLlwiO1xuICBAaW5jbHVkZSBvbWVnYSgkbnRoICRkaXNwbGF5LCAkZGlyZWN0aW9uKTtcbn1cbiIsIkBtaXhpbiBncmlkLWNvbHVtbi1ncmFkaWVudCgkdmFsdWVzLi4uKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGRlcHJlY2F0ZWQtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogIC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgLW1vei1saW5lYXItZ3JhZGllbnQobGVmdCwgJHZhbHVlcyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgLW1zLWxpbmVhci1ncmFkaWVudChsZWZ0LCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgLW8tbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1bnF1b3RlKFwibGluZWFyLWdyYWRpZW50KGxlZnQsICN7JHZhbHVlc30pXCIpO1xufVxuXG5AaWYgJHZpc3VhbC1ncmlkID09IHRydWUgb3IgJHZpc3VhbC1ncmlkID09IHllcyB7XG4gIGJvZHk6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3JhZGllbnQoZ3JhZGllbnQtc3RvcHMoJGdyaWQtY29sdW1ucykpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgICBvcGFjaXR5OiAkdmlzdWFsLWdyaWQtb3BhY2l0eTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICBAaWYgJHZpc3VhbC1ncmlkLWluZGV4ID09IGJhY2sge1xuICAgICAgei1pbmRleDogLTE7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHZpc3VhbC1ncmlkLWluZGV4ID09IGZyb250IHtcbiAgICAgIHotaW5kZXg6IDk5OTk7XG4gICAgfVxuXG4gICAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiAkYnJlYWtwb2ludCAhPSBuaWwge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkYnJlYWtwb2ludCkge1xuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLWdyYWRpZW50KGdyYWRpZW50LXN0b3BzKCRncmlkLWNvbHVtbnMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQ2hlY2tzIGlmIGEgbnVtYmVyIGlzIGV2ZW5cbkBmdW5jdGlvbiBpcy1ldmVuKCRpbnQpIHtcbiAgQGlmICRpbnQlMiA9PSAwICAge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vIENoZWNrcyBpZiBhbiBlbGVtZW50IGJlbG9uZ3MgdG8gYSBsaXN0XG5AZnVuY3Rpb24gYmVsb25ncy10bygkdGVzdGVkLWl0ZW0sICRsaXN0KSB7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgJGl0ZW0gPT0gJHRlc3RlZC1pdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBDb250YWlucyBkaXNwbGF5IHZhbHVlXG5AZnVuY3Rpb24gY29udGFpbnMtZGlzcGxheS12YWx1ZSgkcXVlcnkpIHtcbiAgQGlmIGJlbG9uZ3MtdG8odGFibGUsICRxdWVyeSkgb3IgYmVsb25ncy10byhibG9jaywgJHF1ZXJ5KSBvciBiZWxvbmdzLXRvKGlubGluZS1ibG9jaywgJHF1ZXJ5KSBvciBiZWxvbmdzLXRvKGlubGluZSwgJHF1ZXJ5KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8gUGFyc2VzIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBzcGFuLWNvbHVtbnMoKVxuQGZ1bmN0aW9uIGNvbnRhaW5lci1zcGFuKCRzcGFuOiAkc3Bhbikge1xuICBAaWYgbGVuZ3RoKCRzcGFuKSA9PSAzIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc3BhbiwgMyk7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNwYW4pID09IDIge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzcGFuLCAyKTtcbiAgICBAcmV0dXJuICRjb250YWluZXItY29sdW1ucztcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRncmlkLWNvbHVtbnM7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGNvbnRhaW5lci1zaGlmdCgkc2hpZnQ6ICRzaGlmdCkge1xuICAkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnMgIWRlZmF1bHQ7XG5cbiAgQGlmIGxlbmd0aCgkc2hpZnQpID09IDMge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzaGlmdCwgMyk7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNoaWZ0KSA9PSAyIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc2hpZnQsIDIpO1xuICAgIEByZXR1cm4gJGNvbnRhaW5lci1jb2x1bW5zO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHBhcmVudC1jb2x1bW5zO1xuICB9XG59XG5cbi8vIEdlbmVyYXRlcyBhIHN0cmlwZWQgYmFja2dyb3VuZFxuQGZ1bmN0aW9uIGdyYWRpZW50LXN0b3BzKCRncmlkLWNvbHVtbnMsICRjb2xvcjogJHZpc3VhbC1ncmlkLWNvbG9yKSB7XG4gICR0cmFuc3BhcmVudDogcmdiYSgwLDAsMCwwKTtcblxuICAkY29sdW1uLXdpZHRoOiBmbGV4LWdyaWQoMSwgJGdyaWQtY29sdW1ucyk7XG4gICRndXR0ZXItd2lkdGg6IGZsZXgtZ3V0dGVyKCRncmlkLWNvbHVtbnMpO1xuICAkY29sdW1uLW9mZnNldDogJGNvbHVtbi13aWR0aDtcblxuICAkdmFsdWVzOiAoJHRyYW5zcGFyZW50IDAsICRjb2xvciAwKTtcblxuICBAZm9yICRpIGZyb20gMSB0byAkZ3JpZC1jb2x1bW5zKjIge1xuICAgIEBpZiBpcy1ldmVuKCRpKSB7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJHRyYW5zcGFyZW50ICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJGNvbG9yICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkY29sdW1uLW9mZnNldDogJGNvbHVtbi1vZmZzZXQgKyAkY29sdW1uLXdpZHRoO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkY29sb3IgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkdHJhbnNwYXJlbnQgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICRjb2x1bW4tb2Zmc2V0OiAkY29sdW1uLW9mZnNldCArICRndXR0ZXItd2lkdGg7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBMYXlvdXQgZGlyZWN0aW9uXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbigkbGF5b3V0LCAkZGVmYXVsdCkge1xuICAkZGlyZWN0aW9uOiBuaWw7XG4gIFxuICBAaWYgJGxheW91dCA9PSBMVFIgb3IgJGxheW91dCA9PSBSVEwge1xuICAgICRkaXJlY3Rpb246IGRpcmVjdGlvbi1mcm9tLWxheW91dCgkbGF5b3V0KTtcbiAgfSBAZWxzZSB7XG4gICAgJGRpcmVjdGlvbjogZGlyZWN0aW9uLWZyb20tbGF5b3V0KCRkZWZhdWx0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGRpcmVjdGlvbjtcbn1cblxuQGZ1bmN0aW9uIGRpcmVjdGlvbi1mcm9tLWxheW91dCgkbGF5b3V0KSB7XG4gICRkaXJlY3Rpb246IG5pbDtcblxuICBAaWYgJGxheW91dCA9PSBMVFIge1xuICAgICRkaXJlY3Rpb246IHJpZ2h0O1xuICB9IEBlbHNlIHtcbiAgICAkZGlyZWN0aW9uOiBsZWZ0O1xuICB9XG5cbiAgQHJldHVybiAkZGlyZWN0aW9uO1xufVxuXG5AZnVuY3Rpb24gZ2V0LW9wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9uKSB7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGxlZnQ7XG5cbiAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgJG9wcG9zaXRlLWRpcmVjdGlvbjogcmlnaHQ7XG4gIH1cblxuICBAcmV0dXJuICRvcHBvc2l0ZS1kaXJlY3Rpb247XG59XG4iLCJAZnVuY3Rpb24gbmV3LWJyZWFrcG9pbnQoJHF1ZXJ5OiRmZWF0dXJlICR2YWx1ZSAkY29sdW1ucywgJHRvdGFsLWNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcblxuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgJHF1ZXJ5OiAkZGVmYXVsdC1mZWF0dXJlIG50aCgkcXVlcnksIDEpICR0b3RhbC1jb2x1bW5zO1xuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgJSAyID09IDAge1xuICAgICRxdWVyeTogYXBwZW5kKCRxdWVyeSwgJHRvdGFsLWNvbHVtbnMpO1xuICB9XG5cbiAgQGlmIG5vdCBiZWxvbmdzLXRvKCRxdWVyeSwgJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzKSB7XG4gICAgJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzOiBhcHBlbmQoJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzLCAkcXVlcnksIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiJGNvbHVtbjogZ29sZGVuLXJhdGlvKDFlbSwgMykgIWRlZmF1bHQ7IC8vIENvbHVtbiB3aWR0aFxuJGd1dHRlcjogZ29sZGVuLXJhdGlvKDFlbSwgMSkgIWRlZmF1bHQ7IC8vIEd1dHRlciBiZXR3ZWVuIGVhY2ggdHdvIGNvbHVtbnNcbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0OyAvLyBUb3RhbCBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZFxuJG1heC13aWR0aDogZW0oMTA4OCkgIWRlZmF1bHQ7IC8vIE1heC13aWR0aCBvZiB0aGUgb3V0ZXIgY29udGFpbmVyXG4kYm9yZGVyLWJveC1zaXppbmc6IHRydWUgIWRlZmF1bHQ7IC8vIE1ha2VzIGFsbCBlbGVtZW50cyBoYXZlIGEgYm9yZGVyLWJveCBsYXlvdXRcbiRkZWZhdWx0LWZlYXR1cmU6IG1pbi13aWR0aDsgLy8gRGVmYXVsdCBAbWVkaWEgZmVhdHVyZSBmb3IgdGhlIGJyZWFrcG9pbnQoKSBtaXhpblxuJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbjogTFRSICFkZWZhdWx0O1xuIiwiJHZpc3VhbC1ncmlkOiBmYWxzZSAhZGVmYXVsdDsgLy8gRGlzcGxheSB0aGUgYmFzZSBncmlkXG4kdmlzdWFsLWdyaWQtY29sb3I6ICNFRUUgIWRlZmF1bHQ7XG4kdmlzdWFsLWdyaWQtaW5kZXg6IGJhY2sgIWRlZmF1bHQ7IC8vIFNob3cgZ3JpZCBiZWhpbmQgY29udGVudCAoYmFjaykgb3Igb3ZlcmxheSBpdCBvdmVyIHRoZSBjb250ZW50IChmcm9udClcbiR2aXN1YWwtZ3JpZC1vcGFjaXR5OiAwLjQgIWRlZmF1bHQ7XG4kdmlzdWFsLWdyaWQtYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuIl19*/
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHbG9iYWwgU3R5bGVzaGVldCAoSW5jbHVkZXMgbWVkaWEgcXVlcmllcylcbi8vIFN0eWxlcyB0aGF0IHVzZXMgbWVkaWEgcXVlcmllcyBmb3IgbW9kZXJuIGJyb3dzZXIgc3VwcG9ydFxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IENvbmZpZ3VyYXRpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQGltcG9ydCBcInV0aWxpdGllcy9pbXBvcnRzXCI7Il0sImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */
