/* Web
------------------------- */
/* stylelint-disable declaration-no-important */
/* stylelint-disable selector-max-compound-selectors, selector-max-universal */
/* stylelint-enable selector-max-compound-selectors, selector-max-universal */
/* Components
------------------------- */
.cmp-formbuilder {
  max-width: 45rem;
  margin: 5rem auto; }
  .cmp-formbuilder .grecaptcha-badge {
    visibility: hidden; }
  .cmp-formbuilder .cmp-form-text__label,
  .cmp-formbuilder .cmp-form-options__legend,
  .cmp-formbuilder .cmp-form-options__legend--required,
  .cmp-formbuilder .cmp-form-options__label {
    font-size: 0.75rem;
    color: #727272;
    margin-bottom: 0; }
  .cmp-formbuilder .cmp-form-options__legend,
  .cmp-formbuilder .cmp-form-options__legend--required {
    margin-bottom: 0.9375rem; }
  .cmp-formbuilder .cmp-form-text__text {
    font-size: 1rem;
    padding: 0.5rem 0.625rem;
    color: #000000; }
  .cmp-formbuilder .cmp-form-text,
  .cmp-formbuilder .cmp-form-options {
    margin-bottom: 1.5625rem; }
  .cmp-formbuilder .cmp-form-options--checkbox .cmp-form-option,
  .cmp-formbuilder .cmp-form-options--radio .cmp-form-option {
    margin-left: 1.25rem; }
  .cmp-formbuilder .cmp-form-text__label {
    margin-bottom: 0.625rem; }
  .cmp-formbuilder .cmp-form-options__field--drop-down {
    color: #000000; }
  .cmp-formbuilder .cmp-form-text__textarea {
    min-height: 11.875rem; }
  .cmp-formbuilder .cmp-form-text__help-block,
  .cmp-formbuilder .cmp-form-options__help-block,
  .cmp-formbuilder .cmp-form-text__error-block,
  .cmp-formbuilder .cmp-form-options__error-block,
  .cmp-formbuilder .cmp-form-text__error-invalid {
    font-size: 0.875rem;
    padding-left: 0.6875rem;
    display: none; }
  .cmp-formbuilder .form-builder__divider {
    background-color: #F2F2F2;
    border-color: #D6D6D6;
    border: 1px solid;
    margin: 0.625rem 0;
    padding: 0.625rem;
    display: block; }
  .cmp-formbuilder .wider-par {
    width: 102%; }
  .cmp-formbuilder .cmp-marketing-permission .cmp-form-option {
    margin-left: 0; }
  .cmp-formbuilder .cmp-marketing-permission .icon-info {
    text-decoration: none;
    background: #0068B4;
    color: #FFFFFF;
    border-radius: 0.625rem;
    padding: 0 0 0 0.5rem;
    width: 1.25rem;
    height: 1.25rem;
    font-family: "Book Antiqua", serif;
    font-size: 0.875rem; }
  .cmp-formbuilder .cmp-form-text__error-invalid {
    color: #DD0028; }

/* eslint-disable */
.cmp-form-text__validation-error .cmp-form-text__error-block,
.cmp-form-text__validation-error .cmp-form-options__error-block {
  display: block; }

.cmp-form-text__validation-error .cmp-form-option label::before {
  border: 1px solid #DD0028; }

.cmp-form-text__validation-error .cmp-form-text__textarea {
  border-color: #DD0028; }

.cmp-form-text__validation-error .cmp-form-options__field {
  background-image: url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E %3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' width='128px' height='79px' viewBox='0 0 128 78.9' fill='%23DD0028' stroke='none'%3E %3Cpolygon points='128,14.9 64,78.9 0,14.9 14.9,0 64,49.1 113.1,0 '/%3E %3C/svg%3E");
  border-bottom-color: #DD0028; }

.cmp-form-text__format-error .cmp-form-text__error-invalid {
  display: block; }

.cmp-form-text__format-error.cmp-form-text--underline .cmp-form-text__text,
.cmp-form-text__format-error.cmp-form-text--underline .cmp-form-options__field,
.cmp-form-text__validation-error.cmp-form-text--underline .cmp-form-text__text,
.cmp-form-text__validation-error.cmp-form-text--underline .cmp-form-options__field {
  border-bottom-color: #DD0028; }

/* eslint-enable */
.cmp-marketing-permission--overlay {
  padding: 1.875rem;
  height: 90vh;
  width: calc(100vw - 30px); }

.cmp-marketing-permission--overlay-iframe {
  overflow: hidden;
  height: 80vh;
  width: 100vh; }
  .cmp-marketing-permission--overlay-iframe iframe {
    border: 0;
    height: 90vh;
    width: calc(100vw - 40px); }

/* Component - Overlay HTML
------------------------- */
.cmp-overlay-html {
  padding: 0.625rem 1.25rem; }

/* stylelint-disable declaration-no-important, max-nesting-depth, selector-no-qualifying-type, selector-max-compound-selectors, selector-max-class */
.cmp-marketo-form {
  max-width: 45rem;
  margin: 5rem auto; }
  .cmp-marketo-form.is-loading {
    min-height: 6rem;
    position: relative; }
    .cmp-marketo-form.is-loading::after {
      z-index: 10;
      background: url("data:image/svg+xml;charset=utf-8,%3Csvg width='200px' height='200px' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='xMidYMid' class='lds-liquid' style='background: none;'%3E %3Ccircle cx='50' cy='50' fill='%23FFFFFF' r='40' stroke='%23DEDEDE' stroke-width='5'/%3E %3Cpath d='M 15 50 Q 32.5 54.2049 50 50 Q 67.5 45.7951 85 50 A 35 35 0 0 1 15 50' fill='%23C9C9C9'%3E %3Canimate attributeName='d' calcMode='spline' values='M15 50 Q32.5 40 50 50 Q67.5 60 85 50 A35 35 0 0 1 15 50;M15 50 Q32.5 60 50 50 Q67.5 40 85 50 A35 35 0 0 1 15 50;M15 50 Q32.5 40 50 50 Q67.5 60 85 50 A35 35 0 0 1 15 50' keyTimes='0;0.5;1' dur='1.9' keySplines='0.5 0 0.5 1;0.5 0 0.5 1' begin='0s' repeatCount='indefinite'/%3E %3C/path%3E %3C/svg%3E") center center/4rem no-repeat;
      background-color: rgba(255, 255, 255, 0.7);
      -webkit-box-sizing: border-box;
              box-sizing: border-box;
      content: "";
      display: block;
      height: 100%;
      left: 0;
      position: absolute;
      top: 0;
      width: 100%; }
  .cmp-marketo-form .mktoForm {
    width: 100% !important;
    padding: 0.9375rem; }
    .cmp-marketo-form .mktoForm .mktoField {
      width: 100% !important;
      float: none;
      font-size: 1rem;
      line-height: 1.5;
      /* stylelint-disable selector-max-specificity */ }
      .cmp-marketo-form .mktoForm .mktoField.mktoTextField, .cmp-marketo-form .mktoForm .mktoField.mktoEmailField, .cmp-marketo-form .mktoForm .mktoField.mktoNumberField {
        border: 1px solid #C9C9C9;
        background-color: transparent;
        border-left-color: transparent;
        border-right-color: transparent;
        border-top-color: transparent;
        padding: 0.5rem 0.625rem; }
        .cmp-marketo-form .mktoForm .mktoField.mktoTextField:focus, .cmp-marketo-form .mktoForm .mktoField.mktoEmailField:focus, .cmp-marketo-form .mktoForm .mktoField.mktoNumberField:focus {
          z-index: 1;
          border-bottom-color: #0068B4;
          outline: none; }
    .cmp-marketo-form .mktoForm .mktoAsterix {
      color: #727272; }
    .cmp-marketo-form .mktoForm textarea.mktoField {
      border: 1px solid #C9C9C9;
      min-height: 11.875rem;
      padding: 0.5rem 0.625rem; }
      .cmp-marketo-form .mktoForm textarea.mktoField:focus {
        z-index: 1;
        border-color: #0068B4;
        outline: none; }
    .cmp-marketo-form .mktoForm select.mktoField {
      padding: 0.625rem 0.1875rem;
      border: 1px solid #C9C9C9;
      border-left-color: transparent;
      border-right-color: transparent;
      border-top-color: transparent; }
      .cmp-marketo-form .mktoForm select.mktoField:focus {
        z-index: 1;
        border-bottom-color: #0068B4;
        outline: none; }
    .cmp-marketo-form .mktoForm .mktoFormCol {
      margin-bottom: 1.5625rem !important; }
    .cmp-marketo-form .mktoForm .mktoLabel {
      width: auto !important;
      font-weight: normal !important;
      font-size: 0.75rem;
      color: #727272;
      margin: 0 0 0.625rem;
      padding: 0 1rem 0 0;
      font-family: "Grundfos", Lucida Grande, Tahoma, Geneva, Verdana, sans-serif; }
    .cmp-marketo-form .mktoForm .mktoFieldWrap,
    .cmp-marketo-form .mktoForm .mktoGutter,
    .cmp-marketo-form .mktoForm .mktoFormCol {
      float: none; }
    .cmp-marketo-form .mktoForm .mktoButtonWrap {
      margin-left: 0 !important; }
      .cmp-marketo-form .mktoForm .mktoButtonWrap .mktoButton {
        font-size: 1rem;
        line-height: 1.375;
        margin-bottom: 1.25rem;
        -webkit-appearance: none;
           -moz-appearance: none;
                appearance: none;
        background-color: #0068B4;
        border: 1px solid transparent;
        border-radius: 0;
        color: #FFFFFF;
        display: -webkit-inline-box;
        display: -ms-inline-flexbox;
        display: inline-flex;
        font-weight: bold;
        -webkit-box-pack: center;
            -ms-flex-pack: center;
                justify-content: center;
        letter-spacing: 0.025em;
        min-width: 11.25rem;
        padding: 0.9375rem;
        position: relative;
        text-transform: uppercase;
        text-decoration: none;
        -webkit-transition: background-color 0.3s ease;
        transition: background-color 0.3s ease;
        -webkit-font-smoothing: antialiased;
        background-image: none; }
        .cmp-marketo-form .mktoForm .mktoButtonWrap .mktoButton::after {
          background-color: rgba(255, 255, 255, 0.1);
          content: "";
          height: 100%;
          left: 0;
          position: absolute;
          top: 0;
          width: 100%;
          -webkit-transform: scaleX(0);
                  transform: scaleX(0);
          -webkit-transform-origin: left center;
                  transform-origin: left center;
          -webkit-transition: -webkit-transform 0.2s ease-out;
          transition: -webkit-transform 0.2s ease-out;
          transition: transform 0.2s ease-out;
          transition: transform 0.2s ease-out, -webkit-transform 0.2s ease-out;
          will-change: transform; }
        .cmp-marketo-form .mktoForm .mktoButtonWrap .mktoButton:active {
          background-color: #0068B4;
          background-image: none; }
  .cmp-marketo-form.cmp-overlay__body {
    margin: 0.9375rem 0; }

/* styleline-enable */
/* <Tooltip> */
/* Added stylint-disable to bypass checking temporarily, enable again at end */
/* stylelint-disable */
.tooltip {
  border-bottom: 1px dotted blue;
  cursor: pointer; }

.tooltip-popup, .tooltip-arrow {
  -webkit-box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.09), 0 2px 4px 0 rgba(0, 0, 0, 0.12);
  box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.09), 0 2px 4px 0 rgba(0, 0, 0, 0.12); }

.tooltip-popup, .tooltip-arrow, .tooltip-popup:before {
  background: #FFF; }

.tooltip-popup {
  position: absolute;
  -webkit-hyphens: auto;
      -ms-hyphens: auto;
          hyphens: auto;
  word-break: break-word;
  word-wrap: break-word;
  color: #333333;
  font-weight: normal;
  letter-spacing: 0;
  padding: 10px;
  min-width: 200px;
  max-width: 300px;
  text-transform: none;
  -webkit-transition: visibility 0.3s ease, opacity 0.3s ease;
  transition: visibility 0.3s ease, opacity 0.3s ease;
  opacity: 0;
  margin: 8px 5px;
  visibility: hidden;
  z-index: 1000; }

.tooltip-popup.show {
  opacity: 1;
  visibility: visible; }

.tooltip-arrow {
  content: ' ';
  display: block;
  -webkit-transform: rotate(45deg);
          transform: rotate(45deg);
  position: absolute;
  left: 50%;
  height: 10px;
  width: 10px;
  margin-left: -5px;
  top: -5px;
  z-index: 15; }

.tooltip-popup:before {
  content: ' ';
  display: block;
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 10px;
  z-index: 20; }

/* </Tooltip> */
/* stylelint-enable */
@media only screen and (min-width: 360px) {
    .cmp-marketing-permission--overlay {
      height: 80vh; }
    .cmp-marketing-permission--overlay-iframe {
      height: 80vh; }
      .cmp-marketing-permission--overlay-iframe iframe {
        height: 80vh;
        width: 100%; } }
@media only screen and (min-width: 480px) {
    .cmp-marketing-permission--overlay {
      height: 80vh; }
      .cmp-marketo-form.cmp-overlay__body .mktoForm {
        width: 28.125rem !important; } }
@media only screen and (min-width: 768px) {
    .cmp-marketing-permission--overlay {
      height: 80vh;
      width: 640px; }
          .cmp-marketo-form .mktoForm .mktoButtonWrap .mktoButton {
            font-size: 1rem;
            line-height: 1.375; }
      .cmp-marketo-form.cmp-overlay__body .mktoForm {
        width: 34.375rem !important; } }
@media only screen and (min-width: 1024px) {
    .cmp-marketing-permission--overlay {
      height: 80vh;
      width: 768px; }
          .cmp-marketo-form .mktoForm .mktoButtonWrap .mktoButton {
            font-size: 1rem;
            line-height: 1.5; } }
@media only screen and (min-width: 1200px) {
    .cmp-marketing-permission--overlay {
      height: 80vh;
      width: 1024px; } }


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVJlbGVhc2UtVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tUmVsZWFzZS1UZXN0L21hcmtldGluZ2F1dG9tYXRpb24tdWkvY2xpZW50L3N0eWxlcy9tYXJrZXRpbmdhdXRvbWF0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVJlbGVhc2UtVGVzdC9ub2RlX21vZHVsZXMvZ3J1bmRmb3MtYWVtLWJhc2UvYWVtLWJhc2UtdWkvY2xpZW50L3N0eWxlcy90b29scy9fdC1oZWxwZXJzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVJlbGVhc2UtVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvY29tcG9uZW50cy9fY29tcG9uZW50cy5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tUmVsZWFzZS1UZXN0L21hcmtldGluZ2F1dG9tYXRpb24tdWkvY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL2NvbXBvbmVudHMvX2NtcC1mb3JtYnVpbGRlci5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tUmVsZWFzZS1UZXN0L21hcmtldGluZ2F1dG9tYXRpb24tdWkvY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3Qvbm9kZV9tb2R1bGVzL2dydW5kZm9zLWFlbS1iYXNlL2FlbS1iYXNlLXVpL2NsaWVudC9zdHlsZXMvc2V0dGluZ3MvX3MtY29sb3JzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVJlbGVhc2UtVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvY29tcG9uZW50cy9fY21wLW92ZXJsYXktaHRtbC5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tUmVsZWFzZS1UZXN0L21hcmtldGluZ2F1dG9tYXRpb24tdWkvY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL2NvbXBvbmVudHMvX2NtcC1tYXJrZXRvLWZvcm0uc2NzcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVJlbGVhc2UtVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tUmVsZWFzZS1UZXN0L25vZGVfbW9kdWxlcy9ncnVuZGZvcy1hZW0tYmFzZS9hZW0tYmFzZS11aS9jbGllbnQvc3R5bGVzL3Rvb2xzL190LWRlY29yYXRpb24uc2NzcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVJlbGVhc2UtVGVzdC9tYXJrZXRpbmdhdXRvbWF0aW9uLXVpL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tUmVsZWFzZS1UZXN0L25vZGVfbW9kdWxlcy9ncnVuZGZvcy1hZW0tYmFzZS9hZW0tYmFzZS11aS9jbGllbnQvc3R5bGVzL3Rvb2xzL190LWxheW91dC5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tUmVsZWFzZS1UZXN0L21hcmtldGluZ2F1dG9tYXRpb24tdWkvY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3Qvbm9kZV9tb2R1bGVzL2dydW5kZm9zLWFlbS1iYXNlL2FlbS1iYXNlLXVpL2NsaWVudC9zdHlsZXMvc2V0dGluZ3MvX3MtbGF5b3V0LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVJlbGVhc2UtVGVzdC9ub2RlX21vZHVsZXMvZ3J1bmRmb3MtYWVtLWJhc2UvYWVtLWJhc2UtdWkvY2xpZW50L3N0eWxlcy90b29scy9fdC10eXBvZ3JhcGh5LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVJlbGVhc2UtVGVzdC9ub2RlX21vZHVsZXMvZ3J1bmRmb3MtYWVtLWJhc2UvYWVtLWJhc2UtdWkvY2xpZW50L3N0eWxlcy9zZXR0aW5ncy9fcy10eXBvZ3JhcGh5LnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL0M6L0plbmtpbnMvd29ya3NwYWNlL1VYX1N0YWdpbmcvd29ya3NwYWNlL1dDTS1NYXJrZXRpbmdBdXRvbWF0aW9uLVJlbGVhc2UtVGVzdC9ub2RlX21vZHVsZXMvZ3J1bmRmb3MtYWVtLWJhc2UvYWVtLWJhc2UtdWkvY2xpZW50L3N0eWxlcy9zZXR0aW5ncy9fcy10cmFuc2l0aW9ucy5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tUmVsZWFzZS1UZXN0L21hcmtldGluZ2F1dG9tYXRpb24tdWkvY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3QvbWFya2V0aW5nYXV0b21hdGlvbi11aS9jbGllbnQvc3R5bGVzL2NvbXBvbmVudHMvX2NtcC10b29sLXRpcC5zY3NzIiwid2VicGFjazovLy8uL2NsaWVudC9zdHlsZXMvQzovSmVua2lucy93b3Jrc3BhY2UvVVhfU3RhZ2luZy93b3Jrc3BhY2UvV0NNLU1hcmtldGluZ0F1dG9tYXRpb24tUmVsZWFzZS1UZXN0L21hcmtldGluZ2F1dG9tYXRpb24tdWkvY2xpZW50L3N0eWxlcy9DOi9KZW5raW5zL3dvcmtzcGFjZS9VWF9TdGFnaW5nL3dvcmtzcGFjZS9XQ00tTWFya2V0aW5nQXV0b21hdGlvbi1SZWxlYXNlLVRlc3Qvbm9kZV9tb2R1bGVzL2dydW5kZm9zLWFlbS1iYXNlL2FlbS1iYXNlLXVpL2NsaWVudC9zdHlsZXMv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QlQzQzhDO1lTNEM5QyxtQkMwQ2lCLEVMZWQ7TUFuSUo7UUE0SUksNEJBQTZCLEVBSzlCLEVIZUY7QVcxSEE7SVgrRkQ7TUFtQkUsYUFBWTtNQUNaLGFBQVksRUFPYjtVR2hLRDtZSXlFQyxnQlQzQzhDO1lTNEM5QyxpQkM4Q2lCLEVMV2QsRUg2Qkg7QVcxSEE7SVgrRkQ7TUF3QkUsYUFBWTtNQUNaLGNBQWEsRUFFZCIsImZpbGUiOiJ0YXJnZXRcXHZhdWx0LXdvcmtcXGpjcl9yb290XFxhcHBzXFxzZXR0aW5nc1xcd2NtXFxkZXNpZ25cXG1hcmtldGluZ2F1dG9tYXRpb25cXGFzc2V0c1xcbWFya2V0aW5nYXV0b21hdGlvbi11aS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcblx0XHRcdFx0XHRcdFx0XHQkcy1iYXNlLXJlc291cmNlLXBhdGg6IFwiZXRjLmNsaWVudGxpYnMvc2V0dGluZ3Mvd2NtL2Rlc2lnbi9hZW1iYXNlL2hlYWQvcmVzb3VyY2VzXCI7XG5cdFx0XHRcdFx0XHRcdFx0JHMtbWFya2V0aW5nYXV0b21hdGlvbi11aS1yZXNvdXJjZS1wYXRoOiBcImV0Yy5jbGllbnRsaWJzL3NldHRpbmdzL3djbS9kZXNpZ24vbWFya2V0aW5nYXV0b21hdGlvbi9oZWFkL3Jlc291cmNlc1wiO1xuXHRcdFx0XHRcdFx0XHRcclxuLyogV2ViXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbkBpbXBvcnQgXCJ+Z3J1bmRmb3MtYWVtLWJhc2UvYWVtLWJhc2UtdWkvY2xpZW50L3N0eWxlcy9leHRlbnNpb25zXCI7XG5AaW1wb3J0IFwifmdydW5kZm9zLWFlbS1iYXNlL2FlbS1iYXNlLXVpL2NsaWVudC9zdHlsZXMvc2V0dGluZ3Mvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJ+Z3J1bmRmb3MtYWVtLWJhc2UvYWVtLWJhc2UtdWkvY2xpZW50L3N0eWxlcy90b29scy90b29sc1wiO1xuXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2V0dGluZ3NcIjtcbi8vQGltcG9ydCBcImVsZW1lbnRzL2VsZW1lbnRzXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy9jb21wb25lbnRzXCI7XG4vL0BpbXBvcnQgXCJtb2R1bGVzL21vZHVsZXNcIjtcbiIsIi8qIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudCAqL1xuLy8gVG9vbHMgLSBIZWxwZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy8gQGZ1bmN0aW9uIHQtcmVtXG4vLy8gR2V0cyBhIHNpbmdsZSBvciBzZXJpZXMgb2YgdmFsdWVzIHJlcHJlc2VudGVkIGFzIHJlbSB1bml0KHMpLlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlc1x0LSBBIHNpbmdsZSwgb3Igc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgTnVtYmVycyBzcGVjaWZpZWQgdXNpbmcgYW55IHZhbGlkIHVuaXQgdHlwZS5cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gVGhlIG9yaWdpbmFsIHZhbHVlKHMpIGNvbnZlcnRlZCBpbnRvIHJlbSB1bml0KHMpLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyB0LXJlbSgyZW0gMjBweCAycmVtIDIwcHgpO1xuQGZ1bmN0aW9uIHQtcmVtKCR2YWx1ZXMpIHtcblxuXHRAaWYgdHlwZS1vZigkdmFsdWVzKSA9PSBcImxpc3RcIiB7XG5cdFx0JHJlbXM6ICgpO1xuXG5cdFx0QGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuXHRcdFx0JHJlbXM6IGFwcGVuZCgkcmVtcywgdC1yZW0oJHZhbHVlKSk7XG5cdFx0fVxuXG5cdFx0QHJldHVybiAkcmVtcztcblx0fVxuXG5cdEBpZiB0eXBlLW9mKCR2YWx1ZXMpID09IFwibnVtYmVyXCIge1xuXHRcdEBpZiAkdmFsdWVzID09IDAge1xuXHRcdFx0QHJldHVybiAkdmFsdWVzO1xuXHRcdH1cblx0XHRAZWxzZSBpZiB1bml0KCR2YWx1ZXMpID09IHB4IHtcblx0XHRcdEByZXR1cm4gKCR2YWx1ZXMgLyAkcy1iYXNlLWZvbnQtc2l6ZSkgKiAxcmVtO1xuXHRcdH1cblx0fVxuXG5cdEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gTWl4aW5zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vLyBAbWl4aW4gdC1tYWludGFpbi1hc3BlY3QtcmF0aW9cbi8vLyBDcmVhdGVzIGEgbG9ja2VkIHJhdGlvIGNvbnRhaW5lciBpbiB3aGljaCB0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSBwb3NpdGlvbmVkIGFjY29yZGluZyB0byB0aGUgJGFsaWduLXggYW5kICRhbGlnbi15IGFyZ3VtZW50cyBpZiBwcm92aWRlZC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFRoZSByZWxhdGl2ZSB3aWR0aCBvZiB0aGUgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IC0gVGhlIHJlbGF0aXZlIGhlaWdodCBvZiB0aGUgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYWxpZ24teCAtIChPcHRpb25hbCkgVGhlIHJlbGF0aXZlIHggcG9zaXRpb24gd2l0aGluIHRoZSBjb250YWluZXIgb2YgdGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQsIHNob3VsZCBiZSBiZXR3ZWVuIDAgYW5kIDEuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRhbGlnbi15IC0gKE9wdGlvbmFsKSBUaGUgcmVsYXRpdmUgeSBwb3NpdGlvbiB3aXRoaW4gdGhlIGNvbnRhaW5lciBvZiB0aGUgZmlyc3QgY2hpbGQgZWxlbWVudCwgc2hvdWxkIGJlIGJldHdlZW4gMCBhbmQgMS5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gQGluY2x1ZGUgdC1tYWludGFpbi1hc3BlY3QtcmF0aW8oMTYsIDkpO1xuQG1peGluIHQtbWFpbnRhaW4tYXNwZWN0LXJhdGlvKCR3aWR0aCwgJGhlaWdodCwgJGFsaWduLXg6IG51bGwsICRhbGlnbi15OiBudWxsKSB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQmOjpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0cGFkZGluZy10b3A6ICgkaGVpZ2h0IC8gJHdpZHRoKSAqIDEwMCU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cblxuXHRAaWYgKCRhbGlnbi14ICE9IG51bGwgYW5kICRhbGlnbi15ICE9IG51bGwpIHtcblxuXHRcdD4gOmZpcnN0LWNoaWxkIHtcblx0XHRcdCR4OiAkYWxpZ24teCAqIDEwMDtcblx0XHRcdCR5OiAkYWxpZ24teSAqIDEwMDtcblxuXHRcdFx0bGVmdDogJHggKiAxJTtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogJHkgKiAxJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKCR4ICogLTElLCAkeSAqIC0xJSk7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdH1cbn1cblxuLy8vIEBtaXhpbiB0LWFjdGl2ZVxuLy8vIFNldHMgc3RhbmRhcmRpc2VkIHBzZXVkbyBzdGF0ZXMgZm9yIGFjY2Vzc2liaWxpdHkuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1hY3RpdmU7XG5AbWl4aW4gdC1hY3RpdmUge1xuXG5cdCY6aG92ZXIsXG5cdCY6Zm9jdXMsXG5cdCY6YWN0aXZlIHtcblx0XHRAY29udGVudDtcblx0fVxufVxuXG4vLy8gQG1peGluIHQtZmxleC1pbWFnZVxuLy8vIFNldHMgYmFzaWMgcmVzcG9uc2l2ZSBpbWFnZSBzdHlsaW5nLlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy9cdEBpbmNsdWRlIHQtZmxleC1pbWFnZTtcbkBtaXhpbiB0LWZsZXgtaW1hZ2Uge1xuXHRkaXNwbGF5OiBibG9jaztcblx0bWF4LXdpZHRoOiAxMDAlO1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLy8vIEBtaXhpbiB0LWhpZGRlblxuLy8vIFNldHMgaGlkZGVuIHN0eWxlcyB3aXRob3V0IHJlbW92aW5nIHRoZSB0YXJnZXQgZWxlbWVudCBmcm9tIHRoZSByZW5kZXIgdHJlZS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vXHRAaW5jbHVkZSB0LWhpZGRlbjtcbkBtaXhpbiB0LWhpZGRlbiB7XG5cdGJvcmRlcjogMDtcblx0Y2xpcDogcmVjdCgwIDAgMCAwKTtcblx0aGVpZ2h0OiAxcHg7XG5cdG1hcmdpbjogLTFweDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR3aWR0aDogMXB4O1xufVxuXG4vLy8gQG1peGluIHQtaGlkZGVuLW1vYmlsZVxuLy8vIFNldHMgaGlkZGVuIHN0eWxlcyB3aXRob3V0IHJlbW92aW5nIHRoZSB0YXJnZXQgZWxlbWVudCBmcm9tIHRoZSByZW5kZXIgdHJlZSBmb3IgbW9iaWxlIG9ubHkuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1oaWRkZW47XG5AbWl4aW4gdC1oaWRkZW4tbW9iaWxlIHtcblxuXHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tbWF4KGxhcmdlKSB7XG5cdFx0QGluY2x1ZGUgdC1oaWRkZW47XG5cdH1cbn1cblxuLy8vIEBtaXhpbiB0LWhpZGRlbi10ZXh0XG4vLy8gU2V0cyBoaWRkZW4gdGV4dCBzdHlsZXMgd2l0aG91dCByZW1vdmluZyB0aGUgdGFyZ2V0IGVsZW1lbnQgZnJvbSB0aGUgcmVuZGVyIHRyZWUuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1oaWRkZW4tdGV4dDtcbkBtaXhpbiB0LWhpZGRlbi10ZXh0IHtcblx0Zm9udC1zaXplOiAwIWltcG9ydGFudDsgLy9OT1NPTkFSXG5cdGxpbmUtaGVpZ2h0OiAwIWltcG9ydGFudDsgLy9OT1NPTkFSXG59XG5cbkBtaXhpbiB0LWFic29sdXRlLWNlbnRlcigkdXNlM2Q6IGZhbHNlKSB7XG5cdGxlZnQ6IDUwJTtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDUwJTtcblxuXHRAaWYgKCR1c2UzZCA9PSB0cnVlKSB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAtNTAlLCAwKTtcblx0fVxuXHRAZWxzZSB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cdH1cbn1cblxuQG1peGluIHQtZmlsbCB7XG5cdGhlaWdodDogMTAwJTtcblx0bGVmdDogMDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdHdpZHRoOiAxMDAlO1xufVxuXG5AbWl4aW4gdC1jZW50ZXItZmlsbCB7XG5cdEBpbmNsdWRlIHQtZWRpdC1tb2RlLXBvc2l0aW9uLXJlc2V0O1xuXHRAaW5jbHVkZSB0LWZpbGw7XG5cdEBpbmNsdWRlIHQtbGF5ZXIoMSwgMSk7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG5AbWl4aW4gdC1oaWRlLW5vLWpzIHtcblxuXHQubm8tanMgJiB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufVxuXG5AbWl4aW4gdC13cmFwLXRleHQge1xuXHRoeXBoZW5zOiBhdXRvO1xuXHR3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuXHR3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IC8vTk9TT05BUlxufVxuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1tYXgtY29tcG91bmQtc2VsZWN0b3JzLCBzZWxlY3Rvci1tYXgtdW5pdmVyc2FsICovXG5AbWl4aW4gdC1mbGF0dGVuLWNoaWxkcmVuIHtcblxuXHQ+ICo6Zmlyc3QtY2hpbGQgeyAvL05PU09OQVJcblx0XHRtYXJnaW4tdG9wOiAwIWltcG9ydGFudDsgLy9OT1NPTkFSXG5cblx0XHQ+IFtkYXRhLWNvbXBvbmVudC1yb290XSA+ICogeyAvL05PU09OQVJcblx0XHRcdG1hcmdpbi10b3A6IDAhaW1wb3J0YW50OyAvL05PU09OQVJcblx0XHR9XG5cdH1cblxuXHQ+ICo6bGFzdC1jaGlsZCB7IC8vTk9TT05BUlxuXHRcdG1hcmdpbi1ib3R0b206IDAhaW1wb3J0YW50OyAvL05PU09OQVJcblxuXHRcdD4gW2RhdGEtY29tcG9uZW50LXJvb3RdID4gKiB7IC8vTk9TT05BUlxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMCFpbXBvcnRhbnQ7IC8vTk9TT05BUlxuXHRcdH1cblx0fVxufVxuLyogc3R5bGVsaW50LWVuYWJsZSBzZWxlY3Rvci1tYXgtY29tcG91bmQtc2VsZWN0b3JzLCBzZWxlY3Rvci1tYXgtdW5pdmVyc2FsICovXG5cbi8vIEJyb3dzZXIgU3BlY2lmaWNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiB0LWllIHtcblxuXHRAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSksICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSkge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbi8vIEFFTSBFZGl0IE1vZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiB0LWVkaXQtbW9kZSB7XG5cblx0LmItZWRpdC1tb2RlICYge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbkBtaXhpbiB0LWVkaXQtbW9kZS1wb3NpdGlvbi1yZXNldCB7XG5cblx0QGluY2x1ZGUgdC1lZGl0LW1vZGUge1xuXHRcdGJvdHRvbTogYXV0bztcblx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0bGVmdDogYXV0bztcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHJpZ2h0OiBhdXRvO1xuXHRcdHRvcDogYXV0bztcblx0XHR0cmFuc2Zvcm06IG5vbmU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbn1cblxuLy8gUXVhbnRpdHkgUXVlcmllc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHQtbGFzdC1zaW1wbGUtc2VsZWN0b3IoJHNlbGVjdG9yKSB7XG5cdCRwYXJzZWQ6IHNlbGVjdG9yLXBhcnNlKCRzZWxlY3Rvcik7XG5cblx0QGlmIGxlbmd0aCgkcGFyc2VkKSA+IDEge1xuXHRcdEBlcnJvciBcImAjeyRzZWxlY3Rvcn1gIGNvbnRhaW5zICN7bGVuZ3RoKCRwYXJzZWQpfSBzZWxlY3RvcnMgYW5kIHRoZSBgdC1sYXN0LXNpbXBsZS1zZWxlY3RvcigpYGZ1bmN0aW9uIGFjY2VwdHMgb25seSAxLlwiO1xuXHR9XG5cdCRsYXN0LXNpbXBsZS1zZWxlY3RvcjogbnRoKG50aCgkcGFyc2VkLCAxKSwgLTEpO1xuXG5cdEByZXR1cm4gJGxhc3Qtc2ltcGxlLXNlbGVjdG9yO1xufVxuXG5AZnVuY3Rpb24gdC1idWlsZC1xdWFudGl0eS1zZWxlY3Rvcigkc2VsZWN0b3ItYXBwZW5kLCAkbGFzdC1zZWxlY3Rvcikge1xuXHQkcXVhbnRpdHktc2VsZWN0b3I6ICgpO1xuXG5cdEBlYWNoICRzIGluICYgeyAvL05PU09OQVJcblx0XHQkbGFzdC1zaW1wbGUtc2VsZWN0b3I6IFwiflwiICsgaWYoJGxhc3Qtc2VsZWN0b3IsICRsYXN0LXNlbGVjdG9yLCB0LWxhc3Qtc2ltcGxlLXNlbGVjdG9yKCRzKSk7XG5cdFx0JHNlbDogc2VsZWN0b3ItYXBwZW5kKCRzLCAkc2VsZWN0b3ItYXBwZW5kKTtcblx0XHQkc2VsMjogc2VsZWN0b3ItbmVzdCgkc2VsLCAkbGFzdC1zaW1wbGUtc2VsZWN0b3IpO1xuXHRcdCRxdWFudGl0eS1zZWxlY3RvcjogYXBwZW5kKCRxdWFudGl0eS1zZWxlY3RvciwgJHNlbCwgXCJjb21tYVwiKTtcblx0XHQkcXVhbnRpdHktc2VsZWN0b3I6IGFwcGVuZCgkcXVhbnRpdHktc2VsZWN0b3IsICRzZWwyLCBcImNvbW1hXCIpO1xuXHR9XG5cblx0QHJldHVybiAkcXVhbnRpdHktc2VsZWN0b3I7XG59XG5cbkBtaXhpbiB0LWF0LWxlYXN0KCRjb3VudCwgJHNlbGVjdG9yOiBudWxsKSB7XG5cdCRzZWxlY3Rvci1hcHBlbmQ6IFwiOm50aC1sYXN0LWNoaWxkKG4rI3skY291bnR9KVwiO1xuXG5cdEBpZiB0eXBlLW9mKCRjb3VudCkgIT0gXCJudW1iZXJcIiBvciBub3QgdW5pdGxlc3MoJGNvdW50KSBvciAkY291bnQgPCAxIHtcblx0XHRAZXJyb3IgXCJgI3skY291bnR9YCBpcyBub3QgYSB2YWxpZCBudW1iZXIgZm9yIGBhdC1sZWFzdGBcIjtcblx0fVxuXG5cdEBpZiAkc2VsZWN0b3IgIT0gbnVsbCBhbmQgKHR5cGUtb2YoJHNlbGVjdG9yKSAhPSBcInN0cmluZ1wiIG9yIGxlbmd0aCgkc2VsZWN0b3IpID4gMSkge1xuXHRcdEBlcnJvciBcImAjeyRzZWxlY3Rvcn1gIGlzIG5vdCBhIHZhbGlkIHNlbGVjdG9yIGZvciBgYXQtbGVhc3RgXCI7XG5cdH1cblxuXHQkYXQtbGVhc3Qtc2VsZWN0b3I6IHQtYnVpbGQtcXVhbnRpdHktc2VsZWN0b3IoJHNlbGVjdG9yLWFwcGVuZCwgJHNlbGVjdG9yKTtcblxuXHRAYXQtcm9vdCAjeyRhdC1sZWFzdC1zZWxlY3Rvcn0ge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbkBtaXhpbiB0LWF0LW1vc3QoJGNvdW50LCAkc2VsZWN0b3I6IG51bGwpIHtcblx0JHNlbGVjdG9yLWFwcGVuZDogXCI6bnRoLWxhc3QtY2hpbGQoLW4rI3skY291bnR9KTpmaXJzdC1jaGlsZFwiO1xuXG5cdEBpZiB0eXBlLW9mKCRjb3VudCkgIT0gXCJudW1iZXJcIiBvciBub3QgdW5pdGxlc3MoJGNvdW50KSBvciAkY291bnQgPCAxIHtcblx0XHRAZXJyb3IgXCJgI3skY291bnR9YCBpcyBub3QgYSB2YWxpZCBudW1iZXIgZm9yIGBhdC1tb3N0YC5cIjtcblx0fVxuXG5cdEBpZiAkc2VsZWN0b3IgIT0gbnVsbCBhbmQgKHR5cGUtb2YoJHNlbGVjdG9yKSAhPSBcInN0cmluZ1wiIG9yIGxlbmd0aCgkc2VsZWN0b3IpID4gMSkge1xuXHRcdEBlcnJvciBcImAjeyRzZWxlY3Rvcn1gIGlzIG5vdCBhIHZhbGlkIHNlbGVjdG9yIGZvciBgYXQtbW9zdGBcIjtcblx0fVxuXG5cdCRhdC1tb3N0LXNlbGVjdG9yOiB0LWJ1aWxkLXF1YW50aXR5LXNlbGVjdG9yKCRzZWxlY3Rvci1hcHBlbmQsICRzZWxlY3Rvcik7XG5cblx0QGF0LXJvb3QgI3skYXQtbW9zdC1zZWxlY3Rvcn0ge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbkBtaXhpbiB0LWJldHdlZW4oJGZpcnN0LCAkbGFzdCwgJHNlbGVjdG9yOiBudWxsKSB7XG5cdCRzZWxlY3Rvci1hcHBlbmQ6IFwiOm50aC1sYXN0LWNoaWxkKG4rI3skZmlyc3R9KTpudGgtbGFzdC1jaGlsZCgtbisjeyRsYXN0fSk6Zmlyc3QtY2hpbGRcIjtcblxuXHRAaWYgdHlwZS1vZigkZmlyc3QpICE9IFwibnVtYmVyXCIgb3Igbm90IHVuaXRsZXNzKCRmaXJzdCkgb3IgJGZpcnN0IDwgMSB7XG5cdFx0QGVycm9yIFwiYCN7JGZpcnN0fWAgaXMgbm90IGEgdmFsaWQgbnVtYmVyIGZvciBgYmV0d2VlbmBcIjtcblx0fVxuXG5cdEBpZiB0eXBlLW9mKCRsYXN0KSAhPSBcIm51bWJlclwiIG9yIG5vdCB1bml0bGVzcygkbGFzdCkgb3IgJGxhc3QgPCAxIHtcblx0XHRAZXJyb3IgXCJgI3skbGFzdH1gIGlzIG5vdCBhIHZhbGlkIG51bWJlciBmb3IgYGJldHdlZW5gXCI7XG5cdH1cblxuXHRAaWYgJGZpcnN0ID4gJGxhc3Qge1xuXHRcdEBlcnJvciBcIiN7JGZpcnN0fSBjYW7CtHQgYmUgbGFyZ2VyIHRoYXQgI3skbGFzdH0gZm9yIGBiZXR3ZWVuYFwiO1xuXHR9XG5cblx0QGlmICRzZWxlY3RvciAhPSBudWxsIGFuZCAodHlwZS1vZigkc2VsZWN0b3IpICE9IFwic3RyaW5nXCIgb3IgbGVuZ3RoKCRzZWxlY3RvcikgPiAxKSB7XG5cdFx0QGVycm9yIFwiYCN7JHNlbGVjdG9yfWAgaXMgbm90IGEgdmFsaWQgc2VsZWN0b3IgZm9yIGBiZXR3ZWVuYFwiO1xuXHR9XG5cblx0JGJldHdlZW4tc2VsZWN0b3I6IHQtYnVpbGQtcXVhbnRpdHktc2VsZWN0b3IoJHNlbGVjdG9yLWFwcGVuZCwgJHNlbGVjdG9yKTtcblxuXHRAYXQtcm9vdCAjeyRiZXR3ZWVuLXNlbGVjdG9yfSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cbn1cblxuQG1peGluIHQtZXhhY3RseSgkY291bnQsICRzZWxlY3RvcjogbnVsbCkge1xuXHQkc2VsZWN0b3ItYXBwZW5kOiBcIjpudGgtbGFzdC1jaGlsZCgjeyRjb3VudH0pOmZpcnN0LWNoaWxkXCI7XG5cblx0QGlmIHR5cGUtb2YoJGNvdW50KSAhPSBcIm51bWJlclwiIG9yIG5vdCB1bml0bGVzcygkY291bnQpIG9yICRjb3VudCA8IDEge1xuXHRcdEBlcnJvciBcImAjeyRjb3VudH1gIGlzIG5vdCBhIHZhbGlkIG51bWJlciBmb3IgYGV4YWN0bHlgXCI7XG5cdH1cblxuXHRAaWYgJHNlbGVjdG9yICE9IG51bGwgYW5kICh0eXBlLW9mKCRzZWxlY3RvcikgIT0gXCJzdHJpbmdcIiBvciBsZW5ndGgoJHNlbGVjdG9yKSA+IDEpIHtcblx0XHRAZXJyb3IgXCJgI3skc2VsZWN0b3J9YCBpcyBub3QgYSB2YWxpZCBzZWxlY3RvciBmb3IgYGV4YWN0bHlgXCI7XG5cdH1cblxuXHQkZXhhY3RseS1zZWxlY3RvcjogdC1idWlsZC1xdWFudGl0eS1zZWxlY3Rvcigkc2VsZWN0b3ItYXBwZW5kLCAkc2VsZWN0b3IpO1xuXG5cdEBhdC1yb290ICN7JGV4YWN0bHktc2VsZWN0b3J9IHtcblx0XHRAY29udGVudDtcblx0fVxufVxuIiwiLyogQ29tcG9uZW50c1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5AaW1wb3J0IFwiY21wLWZvcm1idWlsZGVyXCI7XG5AaW1wb3J0IFwiY21wLW92ZXJsYXktaHRtbFwiO1xuQGltcG9ydCBcImNtcC1tYXJrZXRvLWZvcm1cIjtcbkBpbXBvcnQgXCJjbXAtdG9vbC10aXBcIjtcblxuIiwiLmNtcC1mb3JtYnVpbGRlciB7XG5cdG1heC13aWR0aDogdC1yZW0oNzIwcHgpO1xuXHRtYXJnaW46IHQtcmVtKDgwcHggYXV0byk7XG5cblx0LmdyZWNhcHRjaGEtYmFkZ2Uge1xuXHRcdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0fVxuXG5cdC5jbXAtZm9ybS10ZXh0X19sYWJlbCxcblx0LmNtcC1mb3JtLW9wdGlvbnNfX2xlZ2VuZCxcblx0LmNtcC1mb3JtLW9wdGlvbnNfX2xlZ2VuZC0tcmVxdWlyZWQsXG5cdC5jbXAtZm9ybS1vcHRpb25zX19sYWJlbCB7XG5cdFx0Zm9udC1zaXplOiB0LXJlbSgxMnB4KTtcblx0XHRjb2xvcjogdC1jb2xvcihncmV5LCBzZWNvbmRhcnkpO1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cblxuXHQuY21wLWZvcm0tb3B0aW9uc19fbGVnZW5kLFxuXHQuY21wLWZvcm0tb3B0aW9uc19fbGVnZW5kLS1yZXF1aXJlZCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogdC1yZW0oMTVweCk7XG5cdH1cblxuXHQuY21wLWZvcm0tdGV4dF9fdGV4dCB7XG5cdFx0Zm9udC1zaXplOiB0LXJlbSgxNnB4KTtcblx0XHRwYWRkaW5nOiB0LXJlbSg4cHggMTBweCk7XG5cdFx0Y29sb3I6IHQtY29sb3IoYmxhY2spO1xuXHR9XG5cblx0LmNtcC1mb3JtLXRleHQsXG5cdC5jbXAtZm9ybS1vcHRpb25zIHtcblx0XHRtYXJnaW4tYm90dG9tOiB0LXJlbSgyNXB4KTtcblx0fVxuXG5cdC5jbXAtZm9ybS1vcHRpb25zLS1jaGVja2JveCAuY21wLWZvcm0tb3B0aW9uLFxuXHQuY21wLWZvcm0tb3B0aW9ucy0tcmFkaW8gLmNtcC1mb3JtLW9wdGlvbntcblx0XHRtYXJnaW4tbGVmdDogdC1yZW0oMjBweCk7XG5cdH1cblxuXHQuY21wLWZvcm0tdGV4dF9fbGFiZWwge1xuXHRcdG1hcmdpbi1ib3R0b206IHQtcmVtKDEwcHgpO1xuXHR9XG5cblx0LmNtcC1mb3JtLW9wdGlvbnNfX2ZpZWxkLS1kcm9wLWRvd24ge1xuXHRcdGNvbG9yOiB0LWNvbG9yKGJsYWNrKTtcblx0fVxuXG5cdC5jbXAtZm9ybS10ZXh0X190ZXh0YXJlYSB7XG5cdFx0bWluLWhlaWdodDogdC1yZW0oMTkwcHgpO1xuXHR9XG5cblx0LmNtcC1mb3JtLXRleHRfX2hlbHAtYmxvY2ssXG5cdC5jbXAtZm9ybS1vcHRpb25zX19oZWxwLWJsb2NrLFxuXHQuY21wLWZvcm0tdGV4dF9fZXJyb3ItYmxvY2ssXG5cdC5jbXAtZm9ybS1vcHRpb25zX19lcnJvci1ibG9jayxcblx0LmNtcC1mb3JtLXRleHRfX2Vycm9yLWludmFsaWQge1xuXHRcdGZvbnQtc2l6ZTogdC1yZW0oMTRweCk7XG5cdFx0cGFkZGluZy1sZWZ0OiB0LXJlbSgxMXB4KTtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0LmZvcm0tYnVpbGRlcl9fZGl2aWRlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdC1jb2xvcihncmV5LCBzZXB0ZW5hcnkpO1xuXHRcdGJvcmRlci1jb2xvcjogdC1jb2xvcihncmV5LCBxdWluYXJ5KTtcblx0XHRib3JkZXI6IDFweCBzb2xpZDtcblx0XHRtYXJnaW46IHQtcmVtKDEwcHggMCk7XG5cdFx0cGFkZGluZzogdC1yZW0oMTBweCk7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQud2lkZXItcGFyIHtcblx0XHR3aWR0aDogMTAyJTtcblx0fVxuXG5cdC5jbXAtbWFya2V0aW5nLXBlcm1pc3Npb24ge1xuXHRcdC5jbXAtZm9ybS1vcHRpb24ge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0fVxuXG5cdFx0Lmljb24taW5mbyB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRiYWNrZ3JvdW5kOiB0LWNvbG9yKGJsdWUpO1xuXHRcdFx0Y29sb3I6IHQtY29sb3Iod2hpdGUpO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogdC1yZW0oMTBweCk7XG5cdFx0XHRwYWRkaW5nOiB0LXJlbSgwIDAgMCA4cHgpO1xuXHRcdFx0d2lkdGg6IHQtcmVtKDIwcHgpO1xuXHRcdFx0aGVpZ2h0OiB0LXJlbSgyMHB4KTtcblx0XHRcdGZvbnQtZmFtaWx5OiBcIkJvb2sgQW50aXF1YVwiLCBzZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogdC1yZW0oMTRweCk7XG5cdFx0fVxuXHR9XG5cblx0LmNtcC1mb3JtLXRleHRfX2Vycm9yLWludmFsaWQge1xuXHRcdGNvbG9yOiB0LWNvbG9yKHJlZCk7XG5cdH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgKi9cblxuLmNtcC1mb3JtLXRleHRfX3ZhbGlkYXRpb24tZXJyb3Ige1xuXHQuY21wLWZvcm0tdGV4dF9fZXJyb3ItYmxvY2ssXG5cdC5jbXAtZm9ybS1vcHRpb25zX19lcnJvci1ibG9jayB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQuY21wLWZvcm0tb3B0aW9uIHtcblx0XHRsYWJlbDo6YmVmb3JlIHtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICB0LWNvbG9yKHJlZCk7XG5cdFx0fVxuXHR9XG5cblx0LmNtcC1mb3JtLXRleHRfX3RleHRhcmVhIHtcblx0XHRib3JkZXItY29sb3I6IHQtY29sb3IocmVkKTtcblx0fVxuXG5cdC5jbXAtZm9ybS1vcHRpb25zX19maWVsZCB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDP3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCc/JTNFICUzQ3N2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeD0nMHB4JyB5PScwcHgnIHdpZHRoPScxMjhweCcgaGVpZ2h0PSc3OXB4JyB2aWV3Qm94PScwIDAgMTI4IDc4LjknIGZpbGw9JyUyM0REMDAyOCcgc3Ryb2tlPSdub25lJyUzRSAlM0Nwb2x5Z29uIHBvaW50cz0nMTI4LDE0LjkgNjQsNzguOSAwLDE0LjkgMTQuOSwwIDY0LDQ5LjEgMTEzLjEsMCAnLyUzRSAlM0Mvc3ZnJTNFXCIpO1xuXHRcdGJvcmRlci1ib3R0b20tY29sb3I6IHQtY29sb3IocmVkKTtcblx0fVxufVxuXG4uY21wLWZvcm0tdGV4dF9fZm9ybWF0LWVycm9yIHtcblx0LmNtcC1mb3JtLXRleHRfX2Vycm9yLWludmFsaWQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG59XG5cbi5jbXAtZm9ybS10ZXh0X19mb3JtYXQtZXJyb3IuY21wLWZvcm0tdGV4dC0tdW5kZXJsaW5lLFxuLmNtcC1mb3JtLXRleHRfX3ZhbGlkYXRpb24tZXJyb3IuY21wLWZvcm0tdGV4dC0tdW5kZXJsaW5lIHtcblx0LmNtcC1mb3JtLXRleHRfX3RleHQsXG5cdC5jbXAtZm9ybS1vcHRpb25zX19maWVsZCB7XG5cdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogdC1jb2xvcihyZWQpO1xuXHR9XG59XG5cbi8qIGVzbGludC1lbmFibGUgKi9cblxuLmNtcC1tYXJrZXRpbmctcGVybWlzc2lvbi0tb3ZlcmxheSB7XG5cdHBhZGRpbmc6IHQtcmVtKDMwcHgpO1xuXHRoZWlnaHQ6IDkwdmg7XG5cdHdpZHRoOiBjYWxjKDEwMHZ3IC0gMzBweCk7XG5cblx0QGluY2x1ZGUgdC1yZXNwb25kLXRvLW1pbihzbWFsbCkge1xuXHRcdGhlaWdodDogODB2aDtcblx0fVxuXG5cdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4obWVkaXVtKSB7XG5cdFx0aGVpZ2h0OiA4MHZoO1xuXHR9XG5cblx0QGluY2x1ZGUgdC1yZXNwb25kLXRvLW1pbihsYXJnZSkge1xuXHRcdGhlaWdodDogODB2aDtcblx0XHR3aWR0aDogNjQwcHg7XG5cdH1cblxuXHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tbWluKHhsYXJnZSkge1xuXHRcdGhlaWdodDogODB2aDtcblx0XHR3aWR0aDogNzY4cHg7XG5cdH1cblxuXHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tbWluKHh4bGFyZ2UpIHtcblx0XHRoZWlnaHQ6IDgwdmg7XG5cdFx0d2lkdGg6IDEwMjRweDtcblx0fVxufVxuXG4uY21wLW1hcmtldGluZy1wZXJtaXNzaW9uLS1vdmVybGF5LWlmcmFtZSB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGhlaWdodDogODB2aDtcblx0d2lkdGg6IDEwMHZoO1xuXG5cdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4oc21hbGwpIHtcblx0XHRoZWlnaHQ6IDgwdmg7XG5cdH1cblxuXHRpZnJhbWUge1xuXHRcdGJvcmRlcjogMDtcblx0XHRoZWlnaHQ6IDkwdmg7XG5cdFx0d2lkdGg6IGNhbGMoMTAwdncgLSA0MHB4KTtcblxuXHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4oc21hbGwpIHtcblx0XHRcdGhlaWdodDogODB2aDtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdH1cblx0fVxufVxuIiwiLy8gU2V0dGluZ3MgLSBDb2xvcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8vICRzLWNvbG9yc1xuLy8vIEVzdGFibGlzaGVzIGEgbWFwIGNvbnRhaW5pbmcgY29sb3IgdmFsdWVzIGFuZCBhbnkgY29ycmVzcG9uZGluZyB0b25lcy5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gJHMtY29sb3JzOiAoXG4vLy8gICAgIGJsYWNrOiAoXG4vLy8gXHRcdHByaW1hcnk6ICMwMDAwMDBcbi8vLyAgICAgKSxcbi8vLyAgICAgd2hpdGU6IChcbi8vLyBcdFx0cHJpbWFyeTogI0ZGRkZGRlxuLy8vICAgICApXG4vLy8gKTtcbiRzLWNvbG9yczogKFxuXHRibHVlOiAoXG5cdFx0cHJpbWFyeTogIzAwNjhCNCxcblx0XHRzZWNvbmRhcnk6ICMwQTJDNEEsXG5cdFx0dGVydGlhcnk6ICMxMTQ5N0IsXG5cdFx0cXVhdGVybmFyeTogIzM0NjQ4Rixcblx0XHRxdWluYXJ5OiAjMDA5RUUzLFxuXHRcdHNlbmFyeTogIzZCOUJDMlxuXHQpLFxuXHRncmVlbjogKFxuXHRcdHByaW1hcnk6ICM0QUEyMkNcblx0KSxcblx0cmVkOiAoXG5cdFx0cHJpbWFyeTogI0REMDAyOFxuXHQpLFxuXHRvcmFuZ2U6IChcblx0XHRwcmltYXJ5OiAjRjQ5NTAwXG5cdCksXG5cdGdyZXk6IChcblx0XHRwcmltYXJ5OiAjMzMzMzMzLFxuXHRcdHNlY29uZGFyeTogIzcyNzI3Mixcblx0XHR0ZXJ0aWFyeTogIzk5OTk5OSxcblx0XHRxdWF0ZXJuYXJ5OiAjQzlDOUM5LFxuXHRcdHF1aW5hcnk6ICNENkQ2RDYsXG5cdFx0c2VuYXJ5OiAjREVERURFLFxuXHRcdHNlcHRlbmFyeTogI0YyRjJGMixcblx0XHRvY3RvbmFyeTogI0Y5RjlGOVxuXHQpLFxuXHRibGFjazogKFxuXHRcdHByaW1hcnk6ICMwMDAwMDBcblx0KSxcblx0d2hpdGU6IChcblx0XHRwcmltYXJ5OiAjRkZGRkZGXG5cdClcbik7XG5cbi8vIFJvbGUgQ29sb3JzXG4kcy1jb2xvcnMtYmFja2dyb3VuZDogKFxuXHRkZWZhdWx0OiBtYXAtdmFsdWUoJHMtY29sb3JzLCAod2hpdGUsIHByaW1hcnkpKSxcblx0ZGFyazogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHByaW1hcnkpKSxcblx0c3VidGxlOiAoXG5cdFx0cHJpbWFyeTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHNlcHRlbmFyeSkpLFxuXHRcdGxpZ2h0OiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoZ3JleSwgb2N0b25hcnkpKSxcblx0XHRkYXJrOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoZ3JleSwgc2VuYXJ5KSlcblx0KVxuKTtcblxuJHMtY29sb3JzLWJvcmRlcjogKFxuXHRkZWZhdWx0OiAoXG5cdFx0cHJpbWFyeTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGJsdWUsIHByaW1hcnkpKSxcblx0XHRkYXJrOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoYmx1ZSwgdGVydGlhcnkpKVxuXHQpLFxuXHRuZWdhdGl2ZTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKHJlZCwgcHJpbWFyeSkpLFxuXHRwb3NpdGl2ZTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZWVuLCBwcmltYXJ5KSksXG5cdHN1YnRsZTogKFxuXHRcdHByaW1hcnk6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBxdWluYXJ5KSksXG5cdFx0ZGFyazogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHRlcnRpYXJ5KSksXG5cdFx0bGlnaHQ6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBzZW5hcnkpKVxuXHQpLFxuXHRkYXJrOiAoXG5cdFx0cHJpbWFyeTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHByaW1hcnkpKVxuXHQpLFxuXHRsaWdodDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKHdoaXRlLCBwcmltYXJ5KSksXG5cdGZvcm06IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBxdWF0ZXJuYXJ5KSlcbik7XG5cbiRzLWNvbG9ycy1idXR0b246IChcblx0ZGVmYXVsdDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGJsdWUsIHByaW1hcnkpKSxcblx0bmVnYXRpdmU6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChyZWQsIHByaW1hcnkpKSxcblx0cG9zaXRpdmU6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmVlbiwgcHJpbWFyeSkpLFxuXHRsaWdodDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKHdoaXRlLCBwcmltYXJ5KSksXG5cdGRpc2FibGVkOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoZ3JleSwgdGVydGlhcnkpKVxuKTtcblxuJHMtY29sb3JzLWxpbms6IChcblx0ZGVmYXVsdDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGJsdWUsIHByaW1hcnkpKSxcblx0YWN0aXZlOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoYmxhY2ssIHByaW1hcnkpKSxcblx0bGlnaHQ6IG1hcC12YWx1ZSgkcy1jb2xvcnMsICh3aGl0ZSwgcHJpbWFyeSkpLFxuXHRzdWJ0bGU6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBzZWNvbmRhcnkpKSxcblx0ZGlzYWJsZWQ6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBxdWF0ZXJuYXJ5KSlcbik7XG5cbiRzLWNvbG9ycy10ZXh0OiAoXG5cdGRlZmF1bHQ6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChncmV5LCBwcmltYXJ5KSksXG5cdG5lZ2F0aXZlOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAocmVkLCBwcmltYXJ5KSksXG5cdHBvc2l0aXZlOiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoZ3JlZW4sIHByaW1hcnkpKSxcblx0c3VidGxlOiAoXG5cdFx0cHJpbWFyeTogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHNlY29uZGFyeSkpLFxuXHRcdGxpZ2h0OiBtYXAtdmFsdWUoJHMtY29sb3JzLCAoZ3JleSwgdGVydGlhcnkpKVxuXHQpLFxuXHRsaWdodDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKHdoaXRlLCBwcmltYXJ5KSksXG5cdGRhcms6IG1hcC12YWx1ZSgkcy1jb2xvcnMsIChibGFjaywgcHJpbWFyeSkpLFxuXHRkaXNhYmxlZDogbWFwLXZhbHVlKCRzLWNvbG9ycywgKGdyZXksIHF1YXRlcm5hcnkpKVxuKTtcbiIsIi8qIENvbXBvbmVudCAtIE92ZXJsYXkgSFRNTFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uY21wLW92ZXJsYXktaHRtbCB7XG5cdHBhZGRpbmc6IHQtcmVtKDEwcHggMjBweCk7XG59XG4iLCJcbi8qIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudCwgbWF4LW5lc3RpbmctZGVwdGgsIHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZSwgc2VsZWN0b3ItbWF4LWNvbXBvdW5kLXNlbGVjdG9ycywgc2VsZWN0b3ItbWF4LWNsYXNzICovXG5cbi5jbXAtbWFya2V0by1mb3JtIHtcblxuXHQmI3sgJHMtbG9hZGluZy1zZWxlY3RvciB9IHtcblx0XHRAaW5jbHVkZSB0LWxvYWRlcih0cnVlKTtcblx0fVxuXG5cdG1heC13aWR0aDogdC1yZW0oNzIwcHgpO1xuXHRtYXJnaW46IHQtcmVtKDgwcHggYXV0byk7XG5cblx0Lm1rdG9Gb3JtIHtcblx0XHR3aWR0aDogMTAwJSFpbXBvcnRhbnQ7XG5cdFx0cGFkZGluZzogdC1yZW0oMTVweCk7XG5cblx0XHQubWt0b0ZpZWxkIHtcblx0XHRcdHdpZHRoOiAxMDAlIWltcG9ydGFudDtcblx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0Zm9udC1zaXplOiB0LXJlbSgxNnB4KTtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cblx0XHRcdC8qIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW1heC1zcGVjaWZpY2l0eSAqL1xuXG5cdFx0XHQmLm1rdG9UZXh0RmllbGQsXG5cdFx0XHQmLm1rdG9FbWFpbEZpZWxkLFxuXHRcdFx0Ji5ta3RvTnVtYmVyRmllbGQge1xuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCB0LWNvbG9yLWJvcmRlcihmb3JtKTtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0XHRcdGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRcdFx0Ym9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRcdFx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0XHRcdHBhZGRpbmc6IHQtcmVtKDhweCAxMHB4KTtcblxuXHRcdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0XHRAaW5jbHVkZSB0LWxheWVyKDEpO1xuXHRcdFx0XHRcdGJvcmRlci1ib3R0b20tY29sb3I6IHQtY29sb3ItYm9yZGVyKGRlZmF1bHQsIHByaW1hcnkpO1xuXHRcdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQubWt0b0FzdGVyaXgge1xuXHRcdFx0Y29sb3I6IHQtY29sb3IoZ3JleSwgc2Vjb25kYXJ5KTtcblx0XHR9XG5cblx0XHR0ZXh0YXJlYS5ta3RvRmllbGQge1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgdC1jb2xvci1ib3JkZXIoZm9ybSk7XG5cdFx0XHRtaW4taGVpZ2h0OiB0LXJlbSgxOTBweCk7XG5cdFx0XHRwYWRkaW5nOiB0LXJlbSg4cHggMTBweCk7XG5cblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRAaW5jbHVkZSB0LWxheWVyKDEpO1xuXHRcdFx0XHRib3JkZXItY29sb3I6IHQtY29sb3ItYm9yZGVyKGRlZmF1bHQsIHByaW1hcnkpO1xuXHRcdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHNlbGVjdC5ta3RvRmllbGQge1xuXHRcdFx0cGFkZGluZzogdC1yZW0oMTBweCAzcHgpO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgdC1jb2xvci1ib3JkZXIoZm9ybSk7XG5cdFx0XHRib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0XHRib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdFx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRAaW5jbHVkZSB0LWxheWVyKDEpO1xuXHRcdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiB0LWNvbG9yLWJvcmRlcihkZWZhdWx0LCBwcmltYXJ5KTtcblx0XHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQubWt0b0Zvcm1Db2wge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogdC1yZW0oMjVweCkhaW1wb3J0YW50O1xuXHRcdH1cblxuXHRcdC5ta3RvTGFiZWwge1xuXHRcdFx0d2lkdGg6IGF1dG8haW1wb3J0YW50O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbCFpbXBvcnRhbnQ7XG5cdFx0XHRmb250LXNpemU6IHQtcmVtKDEycHgpO1xuXHRcdFx0Y29sb3I6IHQtY29sb3IoZ3JleSwgc2Vjb25kYXJ5KTtcblx0XHRcdG1hcmdpbjogdC1yZW0oMCAwIDEwcHgpO1xuXHRcdFx0cGFkZGluZzogdC1yZW0oMCAxNnB4IDAgMCk7XG5cdFx0XHRAaW5jbHVkZSB0LWZvbnQoZ3J1bmRmb3MpO1xuXHRcdH1cblxuXHRcdC5ta3RvRmllbGRXcmFwLFxuXHRcdC5ta3RvR3V0dGVyLFxuXHRcdC5ta3RvRm9ybUNvbCB7XG5cdFx0XHRmbG9hdDogbm9uZTtcblx0XHR9XG5cblx0XHQubWt0b0J1dHRvbldyYXAge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDAhaW1wb3J0YW50O1xuXG5cdFx0XHQubWt0b0J1dHRvbiB7XG5cdFx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uc2l2ZS10eXBlLXNpemUobWVkaXVtKTtcblx0XHRcdFx0QGluY2x1ZGUgdC1yZXNwb25zaXZlLXZlcnRpY2FsLXNwYWNpbmcobGFyZ2UsIG1hcmdpbi1ib3R0b20pO1xuXHRcdFx0XHRhcHBlYXJhbmNlOiBub25lOyAvL05PU09OQVJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdC1jb2xvci1idXR0b24oZGVmYXVsdCk7XG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAwO1xuXHRcdFx0XHRjb2xvcjogdC1jb2xvcih3aGl0ZSk7XG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuXHRcdFx0XHRtaW4td2lkdGg6IHQtcmVtKDE4MHB4KTtcblx0XHRcdFx0cGFkZGluZzogdC1yZW0oMTVweCk7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIG1hcC1nZXQoJHMtdHJhbnNpdGlvbnMsIGFjdGl2ZSk7XG5cdFx0XHRcdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuXG5cdFx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHQtY29sb3Iod2hpdGUpLCAwLjEpO1xuXHRcdFx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0XHRcdGxlZnQ6IDA7XG5cdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRcdHRvcDogMDtcblx0XHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlWCgwKTtcblx0XHRcdFx0XHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjtcblx0XHRcdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gbWFwLWdldCgkcy10cmFuc2l0aW9ucywgaG92ZXIpO1xuXHRcdFx0XHRcdHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOmFjdGl2ZXtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0LWNvbG9yLWJ1dHRvbihkZWZhdWx0KTtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ji5jbXAtb3ZlcmxheV9fYm9keSB7XG5cdFx0bWFyZ2luOiB0LXJlbSgxNXB4IDApO1xuXG5cdFx0Lm1rdG9Gb3JtIHtcblx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4obGFyZ2UpIHtcblx0XHRcdFx0d2lkdGg6IHQtcmVtKDU1MHB4KSFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cdFx0XHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tbWluKG1lZGl1bSkge1xuXHRcdFx0XHR3aWR0aDogdC1yZW0oNDUwcHgpIWltcG9ydGFudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyogc3R5bGVsaW5lLWVuYWJsZSAqL1xuIiwiLy8gVG9vbHMgLSBEZWNvcmF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AZnVuY3Rpb24gdC1pY29uKCRuYW1lLCAkZmlsbDogIzAwMCwgJHN0cm9rZTogbm9uZSkge1xuXHRAcmV0dXJuIHN2Zy1sb2FkKFwiaWNvbnMvXCIgKyAkbmFtZSArIFwiLnN2Z1wiLCBmaWxsPSRmaWxsLCBzdHJva2U9JHN0cm9rZSk7XG59XG5cbi8vIE1peGluc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AbWl4aW4gdC1pY29uICgkbmFtZSwgJGZpbGw6ICMwMDAsICRzdHJva2U6IG5vbmUsICRzaXplOiBzbWFsbCwgJHBvczogYWZ0ZXIpIHtcblx0JHJlc29sdmVkLXNpemU6IGlmKG1hcC1oYXMta2V5KCRzLXNpemVzLWljb25zLCAkc2l6ZSksIHQtcmVtKG1hcC1nZXQoJHMtc2l6ZXMtaWNvbnMsICRzaXplKSksIHQtcmVtKCRzaXplKSk7XG5cblx0Lyogc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItcHNldWRvLWVsZW1lbnQtbm8tdW5rbm93biAqL1xuXHQmOjojeyAkcG9zIH0ge1xuXHRcdGJhY2tncm91bmQ6IHQtaWNvbigkbmFtZSwgJGZpbGwsICRzdHJva2UpIGNlbnRlciBjZW50ZXIgLyBjb250YWluIG5vLXJlcGVhdDtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRoZWlnaHQ6ICRyZXNvbHZlZC1zaXplO1xuXHRcdHdpZHRoOiAkcmVzb2x2ZWQtc2l6ZTtcblxuXHRcdEBjb250ZW50O1xuXHR9XG5cdC8qIHN0eWxlbGludC1lbmFibGUgc2VsZWN0b3ItcHNldWRvLWVsZW1lbnQtbm8tdW5rbm93biAqL1xufVxuXG5AbWl4aW4gdC1wb2ludGVyICgkZGlyLCAkc2l6ZSwgJGNvbG9yLCAkYm9yZGVyLWNvbG9yOiAkY29sb3IpIHtcblx0JGJvcmRlci1zdHlsZTogdC1yZW0oJHNpemUpIHNvbGlkICRib3JkZXItY29sb3I7XG5cdCR0cmFucy1zdHlsZTogdC1yZW0oJHNpemUpIHNvbGlkIHRyYW5zcGFyZW50O1xuXHQkZmlsbC1zdHlsZTogdC1yZW0oJHNpemUpIHNvbGlkICRjb2xvcjtcblxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0Jjo6YmVmb3JlLFxuXHQmOjphZnRlciB7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRoZWlnaHQ6IDA7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHdpZHRoOiAwO1xuXG5cdFx0QGlmICRkaXIgPT0gdXAge1xuXHRcdFx0Ym9yZGVyLWxlZnQ6ICR0cmFucy1zdHlsZTtcblx0XHRcdGJvcmRlci1yaWdodDogJHRyYW5zLXN0eWxlO1xuXHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTEwMCUpO1xuXHRcdH1cblxuXHRcdEBpZiAkZGlyID09IHJpZ2h0IHtcblx0XHRcdGJvcmRlci1ib3R0b206ICR0cmFucy1zdHlsZTtcblx0XHRcdGJvcmRlci10b3A6ICR0cmFucy1zdHlsZTtcblx0XHRcdHJpZ2h0OiAwO1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAlLCAtNTAlKTtcblx0XHR9XG5cblx0XHRAaWYgJGRpciA9PSBkb3duIHtcblx0XHRcdGJvcmRlci1sZWZ0OiAkdHJhbnMtc3R5bGU7XG5cdFx0XHRib3JkZXItcmlnaHQ6ICR0cmFucy1zdHlsZTtcblx0XHRcdGJvdHRvbTogMDtcblx0XHRcdGxlZnQ6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDEwMCUpO1xuXHRcdH1cblxuXHRcdEBpZiAkZGlyID09IGxlZnQge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogJHRyYW5zLXN0eWxlO1xuXHRcdFx0Ym9yZGVyLXRvcDogJHRyYW5zLXN0eWxlO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwMCUsIC01MCUpO1xuXHRcdH1cblx0fVxuXG5cdCY6OmFmdGVyIHtcblxuXHRcdEBpZiAkZGlyID09IHVwIHtcblx0XHRcdGJvcmRlci1ib3R0b206ICRmaWxsLXN0eWxlO1xuXHRcdH1cblxuXHRcdEBpZiAkZGlyID09IHJpZ2h0IHtcblx0XHRcdGJvcmRlci1sZWZ0OiAkZmlsbC1zdHlsZTtcblx0XHR9XG5cblx0XHRAaWYgJGRpciA9PSBkb3duIHtcblx0XHRcdGJvcmRlci10b3A6ICRmaWxsLXN0eWxlO1xuXHRcdH1cblxuXHRcdEBpZiAkZGlyID09IGxlZnQge1xuXHRcdFx0Ym9yZGVyLXJpZ2h0OiAkZmlsbC1zdHlsZTtcblx0XHR9XG5cdH1cblxuXHQmOjpiZWZvcmUge1xuXG5cdFx0QGlmICRkaXIgPT0gdXAge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogJGJvcmRlci1zdHlsZTtcblx0XHR9XG5cblx0XHRAaWYgJGRpciA9PSByaWdodCB7XG5cdFx0XHRib3JkZXItbGVmdDogJGJvcmRlci1zdHlsZTtcblx0XHR9XG5cblx0XHRAaWYgJGRpciA9PSBkb3duIHtcblx0XHRcdGJvcmRlci10b3A6ICRib3JkZXItc3R5bGU7XG5cdFx0fVxuXG5cdFx0QGlmICRkaXIgPT0gbGVmdCB7XG5cdFx0XHRib3JkZXItcmlnaHQ6ICRib3JkZXItc3R5bGU7XG5cdFx0fVxuXHR9XG59XG5cbkBtaXhpbiB0LWxvYWRlcigkZmlsbDogZmFsc2UpIHtcblx0bWluLWhlaWdodDogdC1yZW0obWFwLWdldCgkcy1zaXplcy1pY29ucywgeGxhcmdlKSArICgkcy1iYXNlLWd1dHRlciAqIDIpKTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdCY6OmFmdGVyIHtcblx0XHRAaW5jbHVkZSB0LWxheWVyKDIpO1xuXHRcdGJhY2tncm91bmQ6IHN2Zy1sb2FkKFwiZ3J1bmRmb3MvbG9hZGVyLnN2Z1wiKSBjZW50ZXIgY2VudGVyIC8gdC1yZW0obWFwLWdldCgkcy1zaXplcy1pY29ucywgeGxhcmdlKSkgbm8tcmVwZWF0O1xuXG5cdFx0QGlmICgkZmlsbCkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSh0LWNvbG9yKHdoaXRlKSwgMC43KTtcblx0XHR9XG5cblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGxlZnQ6IDA7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxufVxuXG5AbWl4aW4gdC1zaGFkb3coJHN1YnRsZTogZmFsc2UsICRhcHBseS1ob3ZlcjogZmFsc2UpIHtcblx0JHNoYWRvdy1zdWJ0bGU6IHQtcmVtKDAgMCAycHggMCkgcmdiYSgwLDAsMCwwLjA2KSwgdC1yZW0oMCAycHggMnB4IDApIHJnYmEoMCwwLDAsMC4wOSk7XG5cdCRzaGFkb3ctc3VidGxlLWhvdmVyOiB0LXJlbSgwIDAgMnB4IDApIHJnYmEoMCwwLDAsMC4wOSksIHQtcmVtKDAgMnB4IDZweCAxcHgpIHJnYmEoMCwwLDAsMC4yNCk7XG5cblx0JHNoYWRvdy1ub3JtYWw6IHQtcmVtKDAgMCAycHggMCkgcmdiYSgwLDAsMCwwLjA5KSwgdC1yZW0oMCAycHggNHB4IDApIHJnYmEoMCwwLDAsMC4xMik7XG5cdCRzaGFkb3ctbm9ybWFsLWhvdmVyOiB0LXJlbSgwIDAgMnB4IDApIHJnYmEoMCwwLDAsMC4xMiksIHQtcmVtKDAgMnB4IDhweCAxcHgpIHJnYmEoMCwwLDAsMC4yNCk7XG5cblx0JHNoYWRvdy1yZXN1bHQ6IGlmKCRzdWJ0bGUsICRzaGFkb3ctc3VidGxlLCAkc2hhZG93LW5vcm1hbCk7XG5cdCRzaGFkb3ctcmVzdWx0LWhvdmVyOiBpZigkc3VidGxlLCAkc2hhZG93LXN1YnRsZS1ob3ZlciwgJHNoYWRvdy1ub3JtYWwtaG92ZXIpO1xuXG5cdGJveC1zaGFkb3c6ICRzaGFkb3ctcmVzdWx0O1xuXG5cdEBpZiAoJGFwcGx5LWhvdmVyKSB7XG5cdFx0dHJhbnNpdGlvbjogYm94LXNoYWRvdyBtYXAtZ2V0KCRzLXRyYW5zaXRpb25zLCBob3Zlcik7XG5cdFx0d2lsbC1jaGFuZ2U6IGJveC1zaGFkb3c7XG5cblx0XHRAaW5jbHVkZSB0LWFjdGl2ZSB7XG5cdFx0XHRib3gtc2hhZG93OiAkc2hhZG93LXJlc3VsdC1ob3Zlcjtcblx0XHR9XG5cdH1cbn1cblxuQG1peGluIHQtcHN1ZWRvLXNoYWRvdygkZGlyZWN0aW9uOiB0b3AsICRzdWJ0bGU6IGZhbHNlKSB7XG5cdCRzaXplOiA1cHg7XG5cblx0Jjo6YWZ0ZXIge1xuXHRcdEBpbmNsdWRlIHQtbGF5ZXIoMSk7XG5cdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvICRkaXJlY3Rpb24sIHJnYmEoMCwwLDAsMCkgMCxyZ2JhKDAsMCwwLDAuMikgMTAwJSk7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0I3sgJGRpcmVjdGlvbiB9OiAwO1xuXG5cdFx0QGlmICgkZGlyZWN0aW9uID09IGxlZnQgb3IgJGRpcmVjdGlvbiA9PSByaWdodCkge1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0d2lkdGg6IHQtcmVtKCRzaXplKTtcblx0XHR9XG5cdFx0QGVsc2Uge1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdGhlaWdodDogdC1yZW0oJHNpemUpO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXG5cdFx0QGNvbnRlbnQ7XG5cdH1cbn1cblxuQG1peGluIHQtYWN0aXZlLXVuZGVybGluZSgkYXBwbHktaG92ZXI6IGZhbHNlKSB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQmOm5vdChbZGlzYWJsZWRdKTo6YWZ0ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHQtY29sb3IoYmx1ZSk7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0aGVpZ2h0OiB0LXJlbSgzcHgpO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0cmFuc2Zvcm06IHNjYWxlWCgwKTtcblx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gbWFwLWdldCgkcy10cmFuc2l0aW9ucywgaG92ZXIpO1xuXHRcdHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgY2VudGVyO1xuXHRcdHJpZ2h0OiAwO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG5cdH1cblxuXHRAaWYgKCRhcHBseS1ob3Zlcikge1xuXG5cdFx0QGluY2x1ZGUgdC1hY3RpdmUge1xuXG5cdFx0XHQmOm5vdChbZGlzYWJsZWRdKTo6YWZ0ZXIge1xuXHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlWCgxKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQmOm5vdChbZGlzYWJsZWRdKVthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSxcblx0Jjpub3QoW2Rpc2FibGVkXSkjeyAkcy1hY3RpdmUtc2VsZWN0b3IgfSB7XG5cblx0XHQmOjphZnRlciB7XG5cdFx0XHR0cmFuc2Zvcm06IHNjYWxlWCgxKTtcblx0XHR9XG5cdH1cbn1cbiIsIi8vIFRvb2xzIC0gTGF5b3V0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIE1peGluc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy8gQG1peGluIHQtdmVydGljYWwtc3BhY2luZ1xuLy8vIFNldHMgdGhlIHZhbHVlcyBvZiBhIGdpdmVuIHNldCBvZiBwcm9wZXJ0aWVzIGZvciBhIGdpdmVuICRzcGFjaW5nLWtleSBmb3Igb25lIHNwZWNpZmljICRicmVha3BvaW50LWtleS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzcGFjaW5nLWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBzcGFjaW5nIGxhYmVsIGluIHRoZSAkcy12ZXJ0aWNhbC1zcGFjaW5nIG1hcC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRwcm9wcyAtIEEgTGlzdCBvZiBDU1MgcHJvcGVydGllcyBpbiB3aGljaCB0byBhcHBseSB0aGUgcmVzdWx0aW5nIHVuaXRzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludC1rZXkgLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgYnJlYWtwb2ludCBsYWJlbCBpbiB0aGUgJHMtYnJlYWtwb2ludHMgbWFwIGluIHdoaWNoIHRvIHJlZmVyZW5jZSB0aGUgY29ycmVjdCByZXN1bHQuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHQtdmVydGljYWwtc3BhY2luZyhzbWFsbCwgKG1hcmdpbi10b3AsIG1hcmdpbi1ib3R0b20pLCBtZWRpdW0pO1xuQG1peGluIHQtdmVydGljYWwtc3BhY2luZygkc3BhY2luZy1rZXksICRwcm9wcywgJGJyZWFrcG9pbnQta2V5OiAkcy1taW4tYnJlYWtwb2ludC1rZXkpIHtcblxuXHRAaWYgKHR5cGUtb2YoJHMtYnJlYWtwb2ludHMpICE9IG1hcCBvciB0eXBlLW9mKCRzLXZlcnRpY2FsLXNwYWNpbmcpICE9IG1hcCkge1xuXHRcdEBlcnJvciBcIiRzLWJyZWFrcG9pbnRzIGFuZCAkcy12ZXJ0aWNhbC1zcGFjaW5nIG11c3QgYmUgdmFsaWQgbWFwcy5cIjtcblx0fVxuXG5cdEBpZiAobWFwLWhhcy1rZXkoJHMtYnJlYWtwb2ludHMsICRicmVha3BvaW50LWtleSkpIHtcblx0XHQkc3BhY2luZy1tYXA6IG1hcC1nZXQoJHMtdmVydGljYWwtc3BhY2luZywgJHNwYWNpbmcta2V5KTtcblx0XHQkc3BhY2luZzogbWFwLWdldCgkc3BhY2luZy1tYXAsICRicmVha3BvaW50LWtleSk7XG5cblx0XHRAaWYgKCRzcGFjaW5nICE9IG51bGwpIHtcblxuXHRcdFx0QGVhY2ggJHByb3AgaW4gJHByb3BzIHtcblx0XHRcdFx0I3sgJHByb3AgfTogdC1yZW0oJHNwYWNpbmcpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQG1peGluIHQtaG9yaXpvbnRhbC1zcGFjaW5nXG4vLy8gU2V0cyB0aGUgdmFsdWVzIG9mIGEgZ2l2ZW4gc2V0IG9mIHByb3BlcnRpZXMgZm9yIGEgZ2l2ZW4gJHNwYWNpbmcta2V5IGZvciBvbmUgc3BlY2lmaWMgJGJyZWFrcG9pbnQta2V5LlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNwYWNpbmcta2V5IC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIHNwYWNpbmcgbGFiZWwgaW4gdGhlICRzLWhvcml6b250YWwtc3BhY2luZyBtYXAuXG4vLy8gQHBhcmFtIHtMaXN0fSAkcHJvcHMgLSBBIExpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgaW4gd2hpY2ggdG8gYXBwbHkgdGhlIHJlc3VsdGluZyB1bml0cy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQta2V5IC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGJyZWFrcG9pbnQgbGFiZWwgaW4gdGhlICRzLWJyZWFrcG9pbnRzIG1hcCBpbiB3aGljaCB0byByZWZlcmVuY2UgdGhlIGNvcnJlY3QgcmVzdWx0LlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyB0LWhvcml6b250YWwtc3BhY2luZyhzbWFsbCwgKG1hcmdpbi1sZWZ0LCBtYXJnaW4tcmlnaHQpLCBtZWRpdW0pO1xuQG1peGluIHQtaG9yaXpvbnRhbC1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkYnJlYWtwb2ludC1rZXk6ICRzLW1pbi1icmVha3BvaW50LWtleSkge1xuXG5cdEBpZiAodHlwZS1vZigkcy1icmVha3BvaW50cykgIT0gbWFwIG9yIHR5cGUtb2YoJHMtaG9yaXpvbnRhbC1zcGFjaW5nKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy1icmVha3BvaW50cyBhbmQgJHMtaG9yaXpvbnRhbC1zcGFjaW5nIG11c3QgYmUgdmFsaWQgbWFwcy5cIjtcblx0fVxuXG5cdEBpZiAobWFwLWhhcy1rZXkoJHMtYnJlYWtwb2ludHMsICRicmVha3BvaW50LWtleSkpIHtcblx0XHQkc3BhY2luZy1tYXA6IG1hcC1nZXQoJHMtaG9yaXpvbnRhbC1zcGFjaW5nLCAkc3BhY2luZy1rZXkpO1xuXHRcdCRzcGFjaW5nOiBtYXAtZ2V0KCRzcGFjaW5nLW1hcCwgJGJyZWFrcG9pbnQta2V5KTtcblxuXHRcdEBpZiAoJHNwYWNpbmcgIT0gbnVsbCkge1xuXG5cdFx0XHRAZWFjaCAkcHJvcCBpbiAkcHJvcHMge1xuXHRcdFx0XHQjeyAkcHJvcCB9OiB0LXJlbSgkc3BhY2luZyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vLyBAbWl4aW4gdC1yZXNwb25zaXZlLXZlcnRpY2FsLXNwYWNpbmdcbi8vLyBTZXRzIHRoZSB2YWx1ZXMgb2YgYSBnaXZlbiBzZXQgb2YgcHJvcGVydGllcyBmb3IgYSBnaXZlbiAkc3BhY2luZy1rZXkgZm9yIGFsbCBicmVha3BvaW50cyB3aXRoIGFuIG9wdGlvbmFsICR0eXBlLXNpemUgc3BlY2lmaWNhdGlvbiB0byBzdWJ0cmFjdCB0aGVcbi8vLyBhcHByb3hpbWF0ZSBzcGFjZSBiZXR3ZWVuIHRoZSB0ZXh0IC8gbGluZSBoZWlnaHQuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3BhY2luZy1rZXkgLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgc3BhY2luZyBsYWJlbCBpbiB0aGUgJHMtdmVydGljYWwtc3BhY2luZyBtYXAuXG4vLy8gQHBhcmFtIHtMaXN0fSAkcHJvcHMgLSBBIExpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgaW4gd2hpY2ggdG8gYXBwbHkgdGhlIHJlc3VsdGluZyB1bml0cy5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy9cdEBpbmNsdWRlIHQtcmVzcG9uc2l2ZS12ZXJ0aWNhbC1zcGFjaW5nKHNtYWxsLCAobWFyZ2luLXRvcCwgbWFyZ2luLWJvdHRvbSkpO1xuQG1peGluIHQtcmVzcG9uc2l2ZS12ZXJ0aWNhbC1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzKSB7XG5cblx0QGlmICh0eXBlLW9mKCRzLXZlcnRpY2FsLXNwYWNpbmcpICE9IG1hcCkge1xuXHRcdEBlcnJvciBcIiRzLXZlcnRpY2FsLXNwYWNpbmcgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdEBpbmNsdWRlIHQtdmVydGljYWwtc3BhY2luZygkc3BhY2luZy1rZXksICRwcm9wcywgJHMtbWluLWJyZWFrcG9pbnQta2V5KTtcblxuXHRAZWFjaCAkYnJlYWtwb2ludC1rZXkgaW4gbWFwLWtleXMobWFwLWdldCgkcy12ZXJ0aWNhbC1zcGFjaW5nLCAkc3BhY2luZy1rZXkpKSB7XG5cblx0XHRAaWYgKCRicmVha3BvaW50LWtleSAhPSAkcy1taW4tYnJlYWtwb2ludC1rZXkpIHtcblxuXHRcdFx0QGluY2x1ZGUgdC1yZXNwb25kLXRvLW1pbigkYnJlYWtwb2ludC1rZXkpIHtcblx0XHRcdFx0QGluY2x1ZGUgdC12ZXJ0aWNhbC1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkYnJlYWtwb2ludC1rZXkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQG1peGluIHQtcmVzcG9uc2l2ZS1ob3Jpem9udGFsLXNwYWNpbmdcbi8vLyBTZXRzIHRoZSB2YWx1ZXMgb2YgYSBnaXZlbiBzZXQgb2YgcHJvcGVydGllcyBmb3IgYSBnaXZlbiAkc3BhY2luZy1rZXkgZm9yIGFsbCBicmVha3BvaW50cy5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzcGFjaW5nLWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBzcGFjaW5nIGxhYmVsIGluIHRoZSAkcy1ob3Jpem9udGFsLXNwYWNpbmcgbWFwLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHByb3BzIC0gQSBMaXN0IG9mIENTUyBwcm9wZXJ0aWVzIGluIHdoaWNoIHRvIGFwcGx5IHRoZSByZXN1bHRpbmcgdW5pdHMuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vXHRAaW5jbHVkZSB0LXJlc3BvbnNpdmUtaG9yaXpvbnRhbC1zcGFjaW5nKHNtYWxsLCAobWFyZ2luLWxlZnQsIG1hcmdpbi1yaWdodCkpO1xuQG1peGluIHQtcmVzcG9uc2l2ZS1ob3Jpem9udGFsLXNwYWNpbmcoJHNwYWNpbmcta2V5LCAkcHJvcHMpIHtcblxuXHRAaWYgKHR5cGUtb2YoJHMtaG9yaXpvbnRhbC1zcGFjaW5nKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy1ob3Jpem9udGFsLXNwYWNpbmcgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdEBpbmNsdWRlIHQtaG9yaXpvbnRhbC1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkcy1taW4tYnJlYWtwb2ludC1rZXkpO1xuXG5cdEBlYWNoICRicmVha3BvaW50LWtleSBpbiBtYXAta2V5cyhtYXAtZ2V0KCRzLWhvcml6b250YWwtc3BhY2luZywgJHNwYWNpbmcta2V5KSkge1xuXG5cdFx0QGlmICgkYnJlYWtwb2ludC1rZXkgIT0gJHMtbWluLWJyZWFrcG9pbnQta2V5KSB7XG5cblx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4oJGJyZWFrcG9pbnQta2V5KSB7XG5cdFx0XHRcdEBpbmNsdWRlIHQtaG9yaXpvbnRhbC1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkYnJlYWtwb2ludC1rZXkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQG1peGluIHQtbGF5ZXJcbi8vLyBTZXRzIHRoZSBjb3JyZWN0IGdsb2JhbCB6LWluZGV4IGdpdmVuIGEgbGV2ZWwgcGFyYW1ldGVyIGFuZCBvcHRpb25hbCBtb2RpZmllci5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZXZlbCAtIEEga2V5IHdoaWNoIGlkZW50aWZpZXMgdGhlIGJhc2Ugei1pbmRleC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1vZGlmaWVyIC0gQW4gb3B0aW9uYWwgbW9kaWZpZXIgdG8gaW5jcmVhc2UgdGhlIGJhc2Ugei1pbmRleCBsZXZlbCBieSB0aGUgZ2l2ZW4gbnVtYmVyLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBAaW5jbHVkZSB0LWxheWVyKDIsIDEpO1xuQG1peGluIHQtbGF5ZXIoJGxldmVsOiAwLCAkbW9kaWZpZXI6IDApIHtcblxuXHRAaWYgKHR5cGUtb2YoJHMtbGF5ZXJzKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy1sYXllcnMgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdHotaW5kZXg6IG1hcC1nZXQoJHMtbGF5ZXJzLCAkbGV2ZWwpICsgJG1vZGlmaWVyO1xufVxuXG5AbWl4aW4gdC1jb250YWluZXIge1xuXHQkZGVmYXVsdC1ndXR0ZXI6IG1hcC1nZXQoJHMtbGF5b3V0LWdyaWQtZ3V0dGVycywgJHMtbWluLWJyZWFrcG9pbnQta2V5KTtcblxuXHRtYXJnaW46IDAgYXV0bztcblx0bWF4LXdpZHRoOiB0LXJlbSgkcy1zaXRlLXdpZHRoIC0gKCRkZWZhdWx0LWd1dHRlciAqIDIpKTtcblx0cGFkZGluZy1sZWZ0OiB0LXJlbSgkZGVmYXVsdC1ndXR0ZXIpO1xuXHRwYWRkaW5nLXJpZ2h0OiB0LXJlbSgkZGVmYXVsdC1ndXR0ZXIpO1xuXHR3aWR0aDogMTAwJTtcblxuXHRAZWFjaCAkYnJlYWtwb2ludC1rZXkgaW4gbWFwLWtleXMoJHMtbGF5b3V0LWdyaWQtZ3V0dGVycykge1xuXG5cdFx0QGlmICgkYnJlYWtwb2ludC1rZXkgIT0gJHMtbWluLWJyZWFrcG9pbnQta2V5KSB7XG5cblx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4oJGJyZWFrcG9pbnQta2V5KSB7XG5cdFx0XHRcdCRndXR0ZXI6IG1hcC1nZXQoJHMtbGF5b3V0LWdyaWQtZ3V0dGVycywgJGJyZWFrcG9pbnQta2V5KTtcblxuXHRcdFx0XHRtYXgtd2lkdGg6IHQtcmVtKCRzLXNpdGUtd2lkdGggLSAoJGd1dHRlciAqIDIpKTtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiB0LXJlbSgkZ3V0dGVyKTtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogdC1yZW0oJGd1dHRlcik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbkBtaXhpbiB0LWZ1bGwtd2lkdGgge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGxlZnQ6IDUwJTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG5cdHdpZHRoOiB2YXIoLS1iLXZpZXdwb3J0LXdpZHRoKTtcblxuXHRAbWVkaWEgcHJpbnQge1xuXHRcdGxlZnQ6IGF1dG87XG5cdFx0dHJhbnNmb3JtOiBub25lO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbkBtaXhpbiB0LWRlY2stcGFkZGluZyB7XG5cdEBpbmNsdWRlIHQtdmVydGljYWwtc3BhY2luZyh4eHhsYXJnZSwgcGFkZGluZy1ib3R0b20pO1xuXHRAaW5jbHVkZSB0LXZlcnRpY2FsLXNwYWNpbmcoeHhsYXJnZSwgcGFkZGluZy10b3ApO1xuXG5cdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4obGFyZ2UpIHtcblx0XHRAaW5jbHVkZSB0LXZlcnRpY2FsLXNwYWNpbmcoeHh4eGxhcmdlLCBwYWRkaW5nLWJvdHRvbSk7XG5cdFx0QGluY2x1ZGUgdC12ZXJ0aWNhbC1zcGFjaW5nKHh4eGxhcmdlLCBwYWRkaW5nLXRvcCk7XG5cdH1cbn1cbiIsIi8vIFNldHRpbmdzIC0gTGF5b3V0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRzLWJhc2UtZ3V0dGVyOiAxNnB4O1xuJHMtYmFzZS1taW4taGVpZ2h0czogKFxuXHRzbWFsbDogMjgwcHgsXG5cdG1lZGl1bTogMzYwcHgsXG5cdGxhcmdlOiA0NDBweFxuKTtcblxuJHMtd2lkZS1ndXR0ZXI6IDcwcHg7XG5cbiRzLWhlYWRlci1tb2JpbGUtcGVlazogNTBweDtcbiRzLWhlYWRlci1tb2JpbGUtbWF4LXdpZHRoOiA0MjVweDtcblxuJHMtbGF5b3V0LWdyaWQtZGl2aXNpb25zOiAxMjtcbiRzLWxheW91dC1ncmlkLWd1dHRlcnM6IChcblx0c21hbGw6IDE2cHhcbik7XG5cbiRzLXNpdGUtd2lkdGg6IDEyMDBweDtcblxuLy8vICRzLXZlcnRpY2FsLXNwYWNpbmdcbi8vLyBFc3RhYmxpc2hlcyBhIG1hcCBjb250YWluaW5nIHZlcnRpY2FsIGxheW91dCBzcGFjaW5nIHZhbHVlcyBhdCBlYWNoIGRlZmluZWQgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gJHMtdmVydGljYWwtc3BhY2luZzogKFxuLy8vIFx0c21hbGw6IChcbi8vLyBcdFx0c21hbGw6IDEwcHgsXG4vLy8gXHRcdG1lZGl1bTogMjBweFxuLy8vIFx0KSxcbi8vLyBcdG1lZGl1bTogKFxuLy8vIFx0XHRzbWFsbDogMjBweCxcbi8vLyBcdFx0bWVkaXVtOiA0MHB4XG4vLy8gXHQpLFxuLy8vIFx0bGFyZ2U6IChcbi8vLyBcdFx0c21hbGw6IDMwcHgsXG4vLy8gXHRcdG1lZGl1bTogNjBweFxuLy8vIFx0KVxuLy8vICk7XG4kcy12ZXJ0aWNhbC1zcGFjaW5nOiAoXG5cdHhzbWFsbDogKFxuXHRcdHNtYWxsOiA4cHhcblx0KSxcblx0c21hbGw6IChcblx0XHRzbWFsbDogMTBweFxuXHQpLFxuXHRtZWRpdW06IChcblx0XHRzbWFsbDogMTZweFxuXHQpLFxuXHRsYXJnZTogKFxuXHRcdHNtYWxsOiAyMHB4XG5cdCksXG5cdHhsYXJnZTogKFxuXHRcdHNtYWxsOiAzMHB4XG5cdCksXG5cdHh4bGFyZ2U6IChcblx0XHRzbWFsbDogNDBweFxuXHQpLFxuXHR4eHhsYXJnZTogKFxuXHRcdHNtYWxsOiA2MHB4XG5cdCksXG5cdHh4eHhsYXJnZTogKFxuXHRcdHNtYWxsOiA4MHB4XG5cdClcbik7XG5cbi8vLyAkcy1ob3Jpem9udGFsLXNwYWNpbmdcbi8vLyBFc3RhYmxpc2hlcyBhIG1hcCBjb250YWluaW5nIGhvcml6b250YWwgbGF5b3V0IHNwYWNpbmcgdmFsdWVzIGF0IGVhY2ggZGVmaW5lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAkcy1ob3Jpem9udGFsLXNwYWNpbmc6IChcbi8vLyBcdHNtYWxsOiAoXG4vLy8gXHRcdHNtYWxsOiAxMHB4LFxuLy8vIFx0XHRtZWRpdW06IDIwcHhcbi8vLyBcdCksXG4vLy8gXHRtZWRpdW06IChcbi8vLyBcdFx0c21hbGw6IDIwcHgsXG4vLy8gXHRcdG1lZGl1bTogNDBweFxuLy8vIFx0KSxcbi8vLyBcdGxhcmdlOiAoXG4vLy8gXHRcdHNtYWxsOiAzMHB4LFxuLy8vIFx0XHRtZWRpdW06IDYwcHhcbi8vLyBcdClcbi8vLyApO1xuJHMtaG9yaXpvbnRhbC1zcGFjaW5nOiAoXG5cdHhzbWFsbDogKFxuXHRcdHNtYWxsOiA4cHgsXG5cdFx0bWVkaXVtOiAxNnB4LFxuXHRcdGxhcmdlOiAyMHB4XG5cdCksXG5cdHNtYWxsOiAoXG5cdFx0c21hbGw6IDE2cHgsXG5cdFx0bWVkaXVtOiAyMHB4LFxuXHRcdGxhcmdlOiAzMHB4XG5cdCksXG5cdG1lZGl1bTogKFxuXHRcdHNtYWxsOiAyMHB4LFxuXHRcdG1lZGl1bTogMzBweCxcblx0XHRsYXJnZTogNDBweFxuXHQpLFxuXHRsYXJnZTogKFxuXHRcdHNtYWxsOiAzMHB4LFxuXHRcdG1lZGl1bTogNDBweCxcblx0XHRsYXJnZTogNjBweFxuXHQpXG4pO1xuXG4vLy8gJHMtbGF5ZXJzXG4vLy8gRXN0YWJsaXNoZXMgYSBtYXAgY29udGFpbmluZyB6LWluZGV4IGxheWVycy5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gJHMtbGF5ZXJzOiAoXG4vLy8gXHQwOiAwLFxuLy8vIFx0MTogMSxcbi8vLyBcdDI6IDEwLFxuLy8vIFx0MzogMTAwLFxuLy8vIFx0NDogMTAwMFxuLy8vICk7XG4kcy1sYXllcnM6IChcblx0MDogMCxcblx0MTogMSxcblx0MjogMTAsXG5cdDM6IDEwMCxcblx0NDogMTAwMFxuKTtcbiIsIi8vIFRvb2xzIC0gVHlwb2dyYXBoeVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBGdW5jdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8vIEBmdW5jdGlvbiB0LWdldC10eXBlLXNwYWNpbmctdHlwZS1hZGp1c3Rcbi8vLyBHZXRzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGZvbnQtc2l6ZSBhbmQgbGluZS1oZWlnaHQgZm9yIGEgZ2l2ZW4gYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlLXNpemUgLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgdHlwZSBzaXplIGxhYmVsIGluIHRoZSAkcy10eXBlLXNpemluZyBtYXAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50LWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBicmVha3BvaW50IGxhYmVsIG9mIHRoZSBnaXZlICR0eXBlLXNpemUgd2l0aGluIHRoZSAkcy10eXBlLXNpemluZyBtYXAuXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZm9udC1zaXplIGFuZCBsaW5lLWhlaWdodCBleHByZXNzZWQgaW4gdGhlIGFwcHJvcHJpYXRlIHVuaXQuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHQtZ2V0LXR5cGUtc3BhY2luZy10eXBlLWFkanVzdChzbWFsbCwgbWVkaXVtKTtcbkBmdW5jdGlvbiB0LWdldC10eXBlLXNwYWNpbmctdHlwZS1hZGp1c3QoJHR5cGUtc2l6ZSwgJGJyZWFrcG9pbnQta2V5KSB7XG5cblx0QGlmICh0eXBlLW9mKCRzLXR5cGUtc2l6aW5nKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy10eXBlLXNpemluZyBtdXN0IGJlIGEgdmFsaWQgbWFwLlwiO1xuXHR9XG5cblx0JHR5cGUtc2l6ZS1tYXA6IG1hcC1nZXQoJHMtdHlwZS1zaXppbmcsICR0eXBlLXNpemUpO1xuXG5cdEBpZiAobWFwLWhhcy1rZXkoJHR5cGUtc2l6ZS1tYXAsICRicmVha3BvaW50LWtleSkpIHtcblx0XHQkdHlwZS1icmVha3BvaW50LW1hcDogbWFwLWdldCgkdHlwZS1zaXplLW1hcCwgJGJyZWFrcG9pbnQta2V5KTtcblx0XHQkZm9udC1zaXplOiBtYXAtZ2V0KCR0eXBlLWJyZWFrcG9pbnQtbWFwLCBmb250LXNpemUpO1xuXHRcdCRsaW5lLWhlaWdodDogbWFwLWdldCgkdHlwZS1icmVha3BvaW50LW1hcCwgbGluZS1oZWlnaHQpO1xuXG5cdFx0QGlmICgkZm9udC1zaXplICE9IG51bGwgYW5kICRsaW5lLWhlaWdodCAhPSBudWxsKSB7XG5cblx0XHRcdEBpZiAodW5pdGxlc3MoJGxpbmUtaGVpZ2h0KSkge1xuXHRcdFx0XHQkbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodCAqICRmb250LXNpemU7XG5cdFx0XHR9XG5cblx0XHRcdEByZXR1cm4gKCRsaW5lLWhlaWdodCAtICRmb250LXNpemUpIC8gMjtcblx0XHR9XG5cdH1cblxuXHRAcmV0dXJuIDA7XG59XG5cbi8vIE1peGluc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy8gQG1peGluIHQtZm9udFxuLy8vIFNldHMgdGhlIHVucXVvdGVkIGZvbnQtZmFtaWx5IHN0YWNrIGZyb20gdGhlICRzLWZvbnQtZmFtaWxpZXMgbWFwLlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtbmFtZSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBrZXkgaW4gdGhlICRzLWZvbnQtZmFtaWxpZXMgbWFwLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1mb250KCdGb250TmFtZScpO1xuQG1peGluIHQtZm9udCgkZm9udC1uYW1lKSB7XG5cdCRmb250LWZhbWlseTogbWFwLWdldCgkcy1mb250LWZhbWlsaWVzLCAkZm9udC1uYW1lKTtcblxuXHRAaWYgKCRmb250LWZhbWlseSE9IG51bGwpIHtcblx0XHRmb250LWZhbWlseTogdW5xdW90ZSgkZm9udC1mYW1pbHkpO1xuXHR9XG59XG5cbi8vLyBAbWl4aW4gdC10eXBlLXNpemVcbi8vLyBTZXRzIHRoZSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0cyBmb3IgYSBnaXZlbiAkdHlwZS1zaXplIGZvciBvbmUgc3BlY2lmaWMgJGJyZWFrcG9pbnQta2V5LlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUtc2l6ZSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSB0eXBlLXNpemUga2V5IGluIHRoZSAkcy10eXBlLXNpemluZyBtYXAgc3BlY2lmeWluZyB0aGUgcmVxdWlyZWQgdHlwZSBzaXplLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludC1rZXkgLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgYnJlYWtwb2ludCBrZXkgaW4gdGhlICRzLWJyZWFrcG9pbnRzIG1hcCBzcGVjaWZ5aW5nIHRoZSByZXF1aXJlZCBicmVha3BvaW50IHNpemUuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vXHRAaW5jbHVkZSB0LXR5cGUtc2l6ZShzbWFsbCwgbWVkaXVtKTtcbkBtaXhpbiB0LXR5cGUtc2l6ZSgkdHlwZS1zaXplLCAkYnJlYWtwb2ludC1rZXk6ICRzLW1pbi1icmVha3BvaW50LWtleSkge1xuXG5cdEBpZiAodHlwZS1vZigkcy10eXBlLXNpemluZykgIT0gbWFwKSB7XG5cdFx0QGVycm9yIFwiJHMtdHlwZS1zaXppbmcgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdGZvbnQtc2l6ZTogdC1yZW0obWFwLXZhbHVlKCRzLXR5cGUtc2l6aW5nLCAoJHR5cGUtc2l6ZSwgJGJyZWFrcG9pbnQta2V5LCBmb250LXNpemUpKSk7XG5cdGxpbmUtaGVpZ2h0OiB0LXJlbShtYXAtdmFsdWUoJHMtdHlwZS1zaXppbmcsICgkdHlwZS1zaXplLCAkYnJlYWtwb2ludC1rZXksIGxpbmUtaGVpZ2h0KSkpO1xufVxuXG4vLy8gQG1peGluIHQtcmVzcG9uc2l2ZS10eXBlLXNpemVcbi8vLyBTZXRzIHRoZSBmb250LXNpemUgYW5kIGxpbmUtaGVpZ2h0cyBmb3IgYSBnaXZlbiAkdHlwZS1zaXplIGZvciBhbGwgYnJlYWtwb2ludHMuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHlwZS1zaXplIC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIHR5cGUtc2l6ZSBrZXkgaW4gdGhlICRzLXR5cGUtc2l6aW5nIG1hcCBzcGVjaWZ5aW5nIHRoZSByZXF1aXJlZCB0eXBlIHNpemUuXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1yZXNwb25zaXZlLXR5cGUtc2l6ZShtZWRpdW0pO1xuQG1peGluIHQtcmVzcG9uc2l2ZS10eXBlLXNpemUoJHR5cGUtc2l6ZSkge1xuXG5cdEBpZiAodHlwZS1vZigkcy10eXBlLXNpemluZykgIT0gbWFwKSB7XG5cdFx0QGVycm9yIFwiJHMtdHlwZS1zaXppbmcgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdEBpbmNsdWRlIHQtdHlwZS1zaXplKCR0eXBlLXNpemUpO1xuXG5cdEBlYWNoICRicmVha3BvaW50LWtleSBpbiBtYXAta2V5cyhtYXAtZ2V0KCRzLXR5cGUtc2l6aW5nLCAkdHlwZS1zaXplKSkge1xuXG5cdFx0QGlmICgkYnJlYWtwb2ludC1rZXkgIT0gJHMtbWluLWJyZWFrcG9pbnQta2V5KSB7XG5cblx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4obWFwLWdldCgkcy1icmVha3BvaW50cywgJGJyZWFrcG9pbnQta2V5KSkge1xuXHRcdFx0XHRAaW5jbHVkZSB0LXR5cGUtc2l6ZSgkdHlwZS1zaXplLCAkYnJlYWtwb2ludC1rZXkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQG1peGluIHQtdHlwZS1zcGFjaW5nXG4vLy8gU2V0cyB0aGUgdmFsdWVzIG9mIGEgZ2l2ZW4gc2V0IG9mIHByb3BlcnRpZXMgZm9yIGEgZ2l2ZW4gJHNwYWNpbmcta2V5IGZvciBvbmUgc3BlY2lmaWMgJGJyZWFrcG9pbnQta2V5IHdpdGggYW4gb3B0aW9uYWwgJHR5cGUtc2l6ZSBzcGVjaWZpY2F0aW9uIHRvXG4vLy8gc3VidHJhY3QgdGhlIGFwcHJveGltYXRlIHNwYWNlIGJldHdlZW4gdGhlIHRleHQgLyBsaW5lIGhlaWdodC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzcGFjaW5nLWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBzcGFjaW5nIGxhYmVsIGluIHRoZSAkcy10eXBlLXNwYWNpbmcgbWFwLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHByb3BzIC0gQSBMaXN0IG9mIENTUyBwcm9wZXJ0aWVzIGluIHdoaWNoIHRvIGFwcGx5IHRoZSByZXN1bHRpbmcgdW5pdHMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50LWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBicmVha3BvaW50IGxhYmVsIGluIHRoZSAkcy1icmVha3BvaW50cyBtYXAgaW4gd2hpY2ggdG8gcmVmZXJlbmNlIHRoZSBjb3JyZWN0IHJlc3VsdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUtc2l6ZSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSB0eXBlIHNpemUgbGFiZWwgaW4gdGhlICRzLXR5cGUtc2l6aW5nIG1hcC4gKE9wdGlvbmFsKVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyB0LXR5cGUtc3BhY2luZyhzbWFsbCwgKG1hcmdpbi10b3AsIG1hcmdpbi1ib3R0b20pLCBtZWRpdW0pO1xuQG1peGluIHQtdHlwZS1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkYnJlYWtwb2ludC1rZXk6ICRzLW1pbi1icmVha3BvaW50LWtleSwgJHR5cGUtc2l6ZTogbnVsbCkge1xuXG5cdEBpZiAodHlwZS1vZigkcy1icmVha3BvaW50cykgIT0gbWFwIG9yIHR5cGUtb2YoJHMtdHlwZS1zcGFjaW5nKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy1icmVha3BvaW50cyBhbmQgJHMtdHlwZS1zcGFjaW5nIG11c3QgYmUgdmFsaWQgbWFwcy5cIjtcblx0fVxuXG5cdEBpZiAobWFwLWhhcy1rZXkoJHMtYnJlYWtwb2ludHMsICRicmVha3BvaW50LWtleSkpIHtcblx0XHQkc3BhY2luZy1tYXA6IG1hcC1nZXQoJHMtdHlwZS1zcGFjaW5nLCAkc3BhY2luZy1rZXkpO1xuXHRcdCRzcGFjaW5nOiBtYXAtZ2V0KCRzcGFjaW5nLW1hcCwgJGJyZWFrcG9pbnQta2V5KTtcblx0XHQkYWRqdXN0OiAwO1xuXG5cdFx0QGlmICgkc3BhY2luZyAhPSBudWxsKSB7XG5cblx0XHRcdEBpZiAoJHR5cGUtc2l6ZSAhPSBudWxsKSB7XG5cdFx0XHRcdCRhZGp1c3Q6IHQtZ2V0LXR5cGUtc3BhY2luZy10eXBlLWFkanVzdCgkdHlwZS1zaXplLCAkYnJlYWtwb2ludC1rZXkpO1xuXHRcdFx0fVxuXG5cdFx0XHRAZWFjaCAkcHJvcCBpbiAkcHJvcHMge1xuXHRcdFx0XHQjeyAkcHJvcCB9OiB0LXJlbSgkc3BhY2luZyAtICRhZGp1c3QpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLy8gQG1peGluIHQtcmVzcG9uc2l2ZS10eXBlLXNwYWNpbmdcbi8vLyBTZXRzIHRoZSB2YWx1ZXMgb2YgYSBnaXZlbiBzZXQgb2YgcHJvcGVydGllcyBmb3IgYSBnaXZlbiAkc3BhY2luZy1rZXkgZm9yIGFsbCBicmVha3BvaW50cy5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzcGFjaW5nLWtleSAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBzcGFjaW5nIGxhYmVsIGluIHRoZSAkcy10eXBlLXNwYWNpbmcgbWFwLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHByb3BzIC0gQSBMaXN0IG9mIENTUyBwcm9wZXJ0aWVzIGluIHdoaWNoIHRvIGFwcGx5IHRoZSByZXN1bHRpbmcgdW5pdHMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlLXNpemUgLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgdHlwZSBzaXplIGxhYmVsIGluIHRoZSAkcy10eXBlLXNpemluZyBtYXAuIChPcHRpb25hbClcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy9cdEBpbmNsdWRlIHQtcmVzcG9uc2l2ZS10eXBlLXNwYWNpbmcoc21hbGwsIChtYXJnaW4tYm90dG9tLCBwYWRkaW5nLWJvdHRvbSkpO1xuQG1peGluIHQtcmVzcG9uc2l2ZS10eXBlLXNwYWNpbmcoJHNwYWNpbmcta2V5LCAkcHJvcHMsICR0eXBlLXNpemU6IG51bGwpIHtcblxuXHRAaWYgKHR5cGUtb2YoJHMtdHlwZS1zcGFjaW5nKSAhPSBtYXApIHtcblx0XHRAZXJyb3IgXCIkcy10eXBlLXNwYWNpbmcgbXVzdCBiZSBhIHZhbGlkIG1hcC5cIjtcblx0fVxuXG5cdEBpbmNsdWRlIHQtdHlwZS1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkcy1taW4tYnJlYWtwb2ludC1rZXksICR0eXBlLXNpemUpO1xuXG5cdEBlYWNoICRicmVha3BvaW50LWtleSBpbiBtYXAta2V5cyhtYXAtZ2V0KCRzLXR5cGUtc3BhY2luZywgJHNwYWNpbmcta2V5KSkge1xuXG5cdFx0QGlmICgkYnJlYWtwb2ludC1rZXkgIT0gJHMtbWluLWJyZWFrcG9pbnQta2V5KSB7XG5cblx0XHRcdEBpbmNsdWRlIHQtcmVzcG9uZC10by1taW4oJGJyZWFrcG9pbnQta2V5KSB7XG5cdFx0XHRcdEBpbmNsdWRlIHQtdHlwZS1zcGFjaW5nKCRzcGFjaW5nLWtleSwgJHByb3BzLCAkYnJlYWtwb2ludC1rZXksICR0eXBlLXNpemUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5AbWl4aW4gdC1saW5rIHtcblx0QGluY2x1ZGUgdC13cmFwLXRleHQ7XG5cdGFwcGVhcmFuY2U6IG5vbmU7IC8vIE5PU09OQVJcblx0YmFja2dyb3VuZDogbm9uZTtcblx0Ym9yZGVyOiAwO1xuXHRjb2xvcjogdC1jb2xvci1saW5rKGRlZmF1bHQpO1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuXHRwYWRkaW5nOiAwO1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0dHJhbnNpdGlvbjogbWFwLWdldCgkcy10cmFuc2l0aW9ucywgYWN0aXZlKSBjb2xvcjtcblxuXHQvLyBUT0RPOiBBY3RpdmUgc3RhdGVzLi4uXG5cdEBpbmNsdWRlIHQtYWN0aXZlIHtcblx0XHRjb2xvcjogdC1jb2xvcihibHVlLCBxdWluYXJ5KTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdH1cblxuXHQvLyBUT0RPOiBWaXNpdGVkIHN0YXRlLi4uXG5cdC8vICY6dmlzaXRlZCB7fVxufVxuXG5AbWl4aW4gdC10cnVuY2F0ZSB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuIiwiLy8gU2V0dGluZ3MgLSBUeXBvZ3JhcGh5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vLyAkcy1mb250c1xuLy8vIEVzdGFibGlzaGVzIGEgbWFwIGNvbnRhaW5pbmcgYSBzZXJpZXMgb2YgZm9udCBmaWxlcyBsb2NhdGVkIGluIHRoZSBzcGVjaWZpZWQgZm9udHMgZGlyZWN0b3J5LlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAkcy1mb250czogKFxuLy8vIFx0XCJGb250TmFtZVwiOiAoXG4vLy9cdFx0XHRkaXNwbGF5OiBzd2FwLFxuLy8vIFx0XHRmaWxlOiBcImZvbnQtZmlsZS1uYW1lXCIsXG4vLy9cdFx0XHRuYW1lOiBcIkZvbnQgTmFtZVwiLFxuLy8vXHRcdFx0c3R5bGU6IG5vcm1hbCxcbi8vLyBcdFx0d2VpZ2h0OiA0MDBcbi8vLyBcdClcbi8vLyApO1xuJHMtZm9udHM6IChcblx0XCJHcnVuZGZvc1RoZVNhbnM1UlwiOiAoXG5cdFx0ZGlzcGxheTogc3dhcCxcblx0XHRmaWxlOiBcIkdydW5kZm9zVGhlU2Fuc1YyXzVfXCIsXG5cdFx0bmFtZTogXCJHcnVuZGZvc1wiLFxuXHRcdHN0eWxlOiBub3JtYWwsXG5cdFx0d2VpZ2h0OiA0MDBcblx0KSxcblx0XCJHcnVuZGZvc1RoZVNhbnM1SVwiOiAoXG5cdFx0ZGlzcGxheTogc3dhcCxcblx0XHRmaWxlOiBcIkdydW5kZm9zVGhlU2Fuc1YyXzVpX1wiLFxuXHRcdG5hbWU6IFwiR3J1bmRmb3NcIixcblx0XHRzdHlsZTogaXRhbGljLFxuXHRcdHdlaWdodDogNDAwXG5cdCksXG5cdFwiR3J1bmRmb3NUaGVTYW5zN0JcIjogKFxuXHRcdGRpc3BsYXk6IHN3YXAsXG5cdFx0ZmlsZTogXCJHcnVuZGZvc1RoZVNhbnNWMl83X1wiLFxuXHRcdG5hbWU6IFwiR3J1bmRmb3NcIixcblx0XHRzdHlsZTogbm9ybWFsLFxuXHRcdHdlaWdodDogNzAwXG5cdCksXG5cdFwiR3J1bmRmb3NUaGVTYW5zN0JJXCI6IChcblx0XHRkaXNwbGF5OiBzd2FwLFxuXHRcdGZpbGU6IFwiR3J1bmRmb3NUaGVTYW5zVjJfN2lfXCIsXG5cdFx0bmFtZTogXCJHcnVuZGZvc1wiLFxuXHRcdHN0eWxlOiBpdGFsaWMsXG5cdFx0d2VpZ2h0OiA3MDBcblx0KVxuKTtcblxuJHMtZm9udC1mYW1pbGllczogKFxuXHRcImdydW5kZm9zXCI6ICdcIkdydW5kZm9zXCIsIEx1Y2lkYSBHcmFuZGUsIFRhaG9tYSwgR2VuZXZhLCBWZXJkYW5hLCBzYW5zLXNlcmlmJyxcblx0XCJub3RvXCI6ICdcIk5vdG8gU2Fuc1wiLCBMdWNpZGEgR3JhbmRlLCBUYWhvbWEsIEdlbmV2YSwgVmVyZGFuYSwgc2Fucy1zZXJpZicsXG5cdFwic3lzdGVtXCI6IFwiTHVjaWRhIEdyYW5kZSwgVGFob21hLCBHZW5ldmEsIFZlcmRhbmEsIHNhbnMtc2VyaWZcIlxuKTtcblxuLy8vICRzLXR5cGUtc2l6aW5nXG4vLy8gRXN0YWJsaXNoZXMgYSBtYXAgY29udGFpbmluZyBhYnN0cmFjdCB0eXBlIHNpemluZyBkZWZpbml0aW9ucyB3aXRoIG1hdGNoaW5nIGJyZWFrcG9pbnQgc3BlY2lmaWNhdGlvbnMuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vICRzLXR5cGUtc2l6aW5nOiAoXG4vLy8gXHRzbWFsbDogKFxuLy8vIFx0XHRzbWFsbDogKFxuLy8vIFx0XHRcdGZvbnQtc2l6ZTogMTBweCxcbi8vLyBcdFx0XHRsaW5lLWhlaWdodDogMS41XG4vLy8gXHRcdCksXG4vLy8gXHRcdG1lZGl1bTogKFxuLy8vIFx0XHRcdGZvbnQtc2l6ZTogMjBweCxcbi8vLyBcdFx0XHRsaW5lLWhlaWdodDogMlxuLy8vIFx0XHQpXG4vLy8gXHQpXG4vLy8gKTtcbiRzLXR5cGUtc2l6aW5nOiAoXG5cdHh4c21hbGw6IChcblx0XHRzbWFsbDogKFxuXHRcdFx0Zm9udC1zaXplOiA4cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMTAvOFxuXHRcdCksXG5cdFx0bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogOHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDEwLzhcblx0XHQpLFxuXHRcdHhsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiA4cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMTAvOFxuXHRcdClcblx0KSxcblx0eHNtYWxsOiAoXG5cdFx0c21hbGw6IChcblx0XHRcdGZvbnQtc2l6ZTogMTJweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiAxOC8xMlxuXHRcdCksXG5cdFx0bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogMTJweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiAxOC8xMlxuXHRcdCksXG5cdFx0eGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDEycHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMTgvMTJcblx0XHQpXG5cdCksXG5cdHNtYWxsOiAoXG5cdFx0c21hbGw6IChcblx0XHRcdGZvbnQtc2l6ZTogMTRweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiAyMC8xNFxuXHRcdCksXG5cdFx0bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogMTRweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiAyMS8xNFxuXHRcdCksXG5cdFx0eGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDE0cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjEvMTRcblx0XHQpXG5cdCksXG5cdG1lZGl1bTogKFxuXHRcdHNtYWxsOiAoXG5cdFx0XHRmb250LXNpemU6IDE2cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjIvMTZcblx0XHQpLFxuXHRcdGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDE2cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjIvMTZcblx0XHQpLFxuXHRcdHhsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAxNnB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDI0LzE2XG5cdFx0KVxuXHQpLFxuXHRsYXJnZTogKFxuXHRcdHNtYWxsOiAoXG5cdFx0XHRmb250LXNpemU6IDE4cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjQvMThcblx0XHQpLFxuXHRcdGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDE4cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjcvMThcblx0XHQpLFxuXHRcdHhsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAxOHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDI3LzE4XG5cdFx0KVxuXHQpLFxuXHR4bGFyZ2U6IChcblx0XHRzbWFsbDogKFxuXHRcdFx0Zm9udC1zaXplOiAxOHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDI0LzE4XG5cdFx0KSxcblx0XHRsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAyMHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDI3LzIwXG5cdFx0KSxcblx0XHR4bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogMjBweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiAyOC8yMFxuXHRcdClcblx0KSxcblx0eHhsYXJnZTogKFxuXHRcdHNtYWxsOiAoXG5cdFx0XHRmb250LXNpemU6IDIxcHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjYvMjFcblx0XHQpLFxuXHRcdGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDIycHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjgvMjJcblx0XHQpLFxuXHRcdHhsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAyM3B4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDMwLzIzXG5cdFx0KVxuXHQpLFxuXHR4eHhsYXJnZTogKFxuXHRcdHNtYWxsOiAoXG5cdFx0XHRmb250LXNpemU6IDI0cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMjkvMjRcblx0XHQpLFxuXHRcdGxhcmdlOiAoXG5cdFx0XHRmb250LXNpemU6IDI3cHgsXG5cdFx0XHRsaW5lLWhlaWdodDogMzQvMjdcblx0XHQpLFxuXHRcdHhsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAzMHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDM5LzMwXG5cdFx0KVxuXHQpLFxuXHR4eHh4bGFyZ2U6IChcblx0XHRzbWFsbDogKFxuXHRcdFx0Zm9udC1zaXplOiAzMHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDM2LzMwXG5cdFx0KSxcblx0XHRsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiAzNXB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDQyLzM1XG5cdFx0KSxcblx0XHR4bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogNDBweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiA0OC80MFxuXHRcdCksXG5cdCksXG5cdHh4eHh4bGFyZ2U6IChcblx0XHRzbWFsbDogKFxuXHRcdFx0Zm9udC1zaXplOiA0MHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDQ2LzQwXG5cdFx0KSxcblx0XHRsYXJnZTogKFxuXHRcdFx0Zm9udC1zaXplOiA1MHB4LFxuXHRcdFx0bGluZS1oZWlnaHQ6IDU4LzUwXG5cdFx0KSxcblx0XHR4bGFyZ2U6IChcblx0XHRcdGZvbnQtc2l6ZTogNjBweCxcblx0XHRcdGxpbmUtaGVpZ2h0OiA3MC82MFxuXHRcdClcblx0KVxuKTtcblxuLy8vICRzLXR5cGUtc3BhY2luZ1xuLy8vIEVzdGFibGlzaGVzIGEgbWFwIGNvbnRhaW5pbmcgdmVydGljYWwgdHlwZSBzcGFjaW5nIHZhbHVlcyBhdCBlYWNoIGRlZmluZWQgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gJHMtdHlwZS1zcGFjaW5nOiAoXG4vLy8gXHRzbWFsbDogKFxuLy8vIFx0XHRzbWFsbDogMTBweCxcbi8vLyBcdFx0bWVkaXVtOiAyMHB4XG4vLy8gXHQpLFxuLy8vIFx0bWVkaXVtOiAoXG4vLy8gXHRcdHNtYWxsOiAyMHB4LFxuLy8vIFx0XHRtZWRpdW06IDQwcHhcbi8vLyBcdCksXG4vLy8gXHRsYXJnZTogKFxuLy8vIFx0XHRzbWFsbDogMzBweCxcbi8vLyBcdFx0bWVkaXVtOiA2MHB4XG4vLy8gXHQpXG4vLy8gKTtcbiRzLXR5cGUtc3BhY2luZzogKFxuXHR4c21hbGw6IChcblx0XHRzbWFsbDogOHB4LFxuXHRcdGxhcmdlOiA4cHhcblx0KSxcblx0c21hbGw6IChcblx0XHRzbWFsbDogMTZweCxcblx0XHRsYXJnZTogMTZweFxuXHQpLFxuXHRtZWRpdW06IChcblx0XHRzbWFsbDogMjBweCxcblx0XHRsYXJnZTogMjFweFxuXHQpLFxuXHRsYXJnZTogKFxuXHRcdHNtYWxsOiAyMnB4LFxuXHRcdGxhcmdlOiAyNHB4XG5cdCksXG5cdHhsYXJnZTogKFxuXHRcdHNtYWxsOiAyNHB4LFxuXHRcdGxhcmdlOiAyN3B4XG5cdCksXG5cdHh4bGFyZ2U6IChcblx0XHRzbWFsbDogMzJweCxcblx0XHRsYXJnZTogMzJweFxuXHQpXG4pO1xuXG4kcy1iYXNlLWZvbnQtc2l6ZTogMTZweDtcbiRzLWJhc2UtbGluZS1oZWlnaHQ6IDE7XG4iLCIvLyBTZXR0aW5ncyAtIFRyYW5zaXRpb25zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vLyAkcy1zdHJhbnNpdGlvbnNcbi8vLyBFc3RhYmxpc2hlcyBhIG1hcCBjb250YWluaW5nIGdsb2JhbCB0cmFuc2l0aW9uIHNldHRpbmdzLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAkcy1icmVha3BvaW50czogKFxuLy8vXHRcdHNsaWRlOiAwLjVzIGVhc2UtaW5cbi8vLyApO1xuJHMtdHJhbnNpdGlvbnM6IChcblx0YWN0aXZlOiAwLjNzIGVhc2UsXG5cdGZhZGU6IDAuM3MgZWFzZSxcblx0aG92ZXI6IDAuMnMgZWFzZS1vdXQsXG5cdG92ZXJsYXk6IDAuMnMgZWFzZS1vdXQsXG5cdHNsaWRlOiAwLjNzIGVhc2Vcbik7XG4iLCIvKiA8VG9vbHRpcD4gKi9cbi8qIEFkZGVkIHN0eWxpbnQtZGlzYWJsZSB0byBieXBhc3MgY2hlY2tpbmcgdGVtcG9yYXJpbHksIGVuYWJsZSBhZ2FpbiBhdCBlbmQgKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlICovXG4udG9vbHRpcCB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgYmx1ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnRvb2x0aXAtcG9wdXAsIC50b29sdGlwLWFycm93IHtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMnB4IDAgcmdiYSgwLCAwLCAwLCAuMDkpLCAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIC4xMik7XG4gIGJveC1zaGFkb3c6IDAgMCAycHggMCByZ2JhKDAsIDAsIDAsIC4wOSksIDAgMnB4IDRweCAwIHJnYmEoMCwgMCwgMCwgLjEyKTtcbn1cbi50b29sdGlwLXBvcHVwLCAudG9vbHRpcC1hcnJvdywgLnRvb2x0aXAtcG9wdXA6YmVmb3JlIHtcbiAgYmFja2dyb3VuZDojRkZGO1xufVxuLnRvb2x0aXAtcG9wdXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGh5cGhlbnM6IGF1dG87XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgY29sb3I6ICMzMzMzMzM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxldHRlci1zcGFjaW5nOiAwO1xuICBwYWRkaW5nOiAxMHB4O1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICBtYXgtd2lkdGg6IDMwMHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAwLjNzIGVhc2UsIG9wYWNpdHkgMC4zcyBlYXNlO1xuICBvcGFjaXR5OiAwO1xuICBtYXJnaW46IDhweCA1cHg7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgei1pbmRleDogMTAwMDtcbn1cbi50b29sdGlwLXBvcHVwLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLnRvb2x0aXAtYXJyb3cge1xuICBjb250ZW50OiAnICc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICBoZWlnaHQ6IDEwcHg7XG4gIHdpZHRoOiAxMHB4O1xuICBtYXJnaW4tbGVmdDogLTVweDtcbiAgdG9wOiAtNXB4O1xuICB6LWluZGV4OiAxNTtcbn1cbi50b29sdGlwLXBvcHVwOmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcgJztcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMHB4O1xuICB6LWluZGV4OiAyMDtcbn1cbi8qIDwvVG9vbHRpcD4gKi9cbi8qIHN0eWxlbGludC1lbmFibGUgKi8iLCIvLyBUb29scyAtIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy8gQGZ1bmN0aW9uIHQtZ2V0LWJyZWFrcG9pbnQtd2lkdGhcbi8vLyBHZXRzIGEgYnJlYWtwb2ludCB3aWR0aCBtYXRjaGluZyBhIGJyZWFrcG9pbnQga2V5LlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHdpZHRoXHQtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBicmVha3BvaW50IGtleSBpbiB0aGUgJHMtYnJlYWtwb2ludHMgbWFwIG9yIGEgTnVtYmVyICh3aXRoIG9yIHdpdGhvdXQgYSB1bml0KS5cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gQSBOdW1iZXIgcmVwcmVzZW50aW5nIHRoZSBtYXAgdmFsdWUgb3IgdGhlIG9yaWdpbmFsIHZhbHVlLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyB0LWdldC1icmVha3BvaW50LXdpZHRoKCdzbWFsbCcpO1xuQGZ1bmN0aW9uIHQtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHdpZHRoKSB7XG5cblx0QGlmIHR5cGUtb2YoJHdpZHRoKSAhPSBcIm51bWJlclwiIHtcblx0XHRAcmV0dXJuIG1hcC1nZXQoJHMtYnJlYWtwb2ludHMsICR3aWR0aCk7XG5cdH1cblxuXHRAcmV0dXJuICR3aWR0aDtcbn1cblxuXG4vLyBNaXhpbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8vIEBtaXhpbiB0LXJlc3BvbmQtdG8tbWluXG4vLy8gTWVkaWEgcXVlcnkgaW5qZWN0aW9uIHJlc3BvbmRpbmcgdG8gYSBtaW5pbXVtIHdpZHRoIHdpdGggQGNvbnRlbnQuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkd2lkdGggLSBBIFN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgYnJlYWtwb2ludCBrZXkgaW4gdGhlICRzLWJyZWFrcG9pbnRzIG1hcCBvciBhIE51bWJlciAod2l0aCBvciB3aXRob3V0IGEgdW5pdCkuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vXHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tbWluKHNtYWxsKSB7XG4vLy8gXHQvLyBAY29udGVudC4uLlxuLy8vIH1cbkBtaXhpbiB0LXJlc3BvbmQtdG8tbWluKCR3aWR0aCkge1xuXHQkd2lkdGg6IHQtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHdpZHRoKTtcblxuXHRAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR3aWR0aCkge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbi8vLyBAbWl4aW4gdC1yZXNwb25kLXRvLW1heFxuLy8vIE1lZGlhIHF1ZXJ5IGluamVjdGlvbiByZXNwb25kaW5nIHRvIGEgbWF4aW11bSB3aWR0aCB3aXRoIEBjb250ZW50LlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHdpZHRoIC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGJyZWFrcG9pbnQga2V5IGluIHRoZSAkcy1icmVha3BvaW50cyBtYXAgb3IgYSBOdW1iZXIgKHdpdGggb3Igd2l0aG91dCBhIHVuaXQpLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1yZXNwb25kLXRvLW1heChzbWFsbCkge1xuLy8vIFx0Ly8gQGNvbnRlbnQuLi5cbi8vLyB9XG5AbWl4aW4gdC1yZXNwb25kLXRvLW1heCgkd2lkdGgpIHtcblx0JHdpZHRoOiB0LWdldC1icmVha3BvaW50LXdpZHRoKCR3aWR0aCk7XG5cblx0Lyogc3R5bGVsaW50LWRpc2FibGUgbWVkaWEtZmVhdHVyZS1uby1taXNzaW5nLXB1bmN0dWF0aW9uICovXG5cdEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogJHdpZHRoIC0gMXB4KSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cblxuXHQvKiBzdHlsZWxpbnQtZW5hYmxlIG1lZGlhLWZlYXR1cmUtbm8tbWlzc2luZy1wdW5jdHVhdGlvbiAqL1xufVxuXG4vLy8gQG1peGluIHQtcmVzcG9uZC10by1taW4tbWF4XG4vLy8gTWVkaWEgcXVlcnkgaW5qZWN0aW9uIHJlc3BvbmRpbmcgdG8gYSB3aWR0aCByYW5nZSBzcGVjaWZpZWQgYnkgYSBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRoIHdpdGggQGNvbnRlbnQuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkbWluLXdpZHRoIC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGJyZWFrcG9pbnQga2V5IGluIHRoZSAkcy1icmVha3BvaW50cyBtYXAgb3IgYSBOdW1iZXIgKHdpdGggb3Igd2l0aG91dCBhIHVuaXQpLlxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkbWF4LXdpZHRoIC0gQSBTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGJyZWFrcG9pbnQga2V5IGluIHRoZSAkcy1icmVha3BvaW50cyBtYXAgb3IgYSBOdW1iZXIgKHdpdGggb3Igd2l0aG91dCBhIHVuaXQpLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1yZXNwb25kLXRvLW1heChzbWFsbCwgbGFyZ2UpIHtcbi8vLyBcdC8vIEBjb250ZW50Li4uXG4vLy8gfVxuQG1peGluIHQtcmVzcG9uZC10by1taW4tbWF4KCRtaW4td2lkdGgsICRtYXgtd2lkdGgpIHtcblx0JG1pbi13aWR0aDogdC1nZXQtYnJlYWtwb2ludC13aWR0aCgkbWluLXdpZHRoKTtcblx0JG1heC13aWR0aDogdC1nZXQtYnJlYWtwb2ludC13aWR0aCgkbWF4LXdpZHRoKTtcblxuXHRAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4td2lkdGgpIGFuZCAobWF4LXdpZHRoOiAkbWF4LXdpZHRoIC0gMXB4KSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cbn1cblxuLy8vIEBtaXhpbiB0LXJlc3BvbmQtdG8tcmVzXG4vLy8gTWVkaWEgcXVlcnkgaW5qZWN0aW9uIHJlc3BvbmRpbmcgdG8gYSBzcGVjaWZpZWQgZGlzcGxheSByZXNvbHV0aW9uIHdpdGggQGNvbnRlbnQuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZHAgLSBBIE51bWJlciB3aGljaCByZXByZXNlbnRzIHRoZSB0YXJnZXQgZGV2aWNlIHBpeGVsIHJhdGlvIG11bHRpcGxpZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyZXMgLSBBIE51bWJlciB3aGljaCByZXByZXNlbnRzIHRoZSB0YXJnZXQgcmVzb2x1dGlvbiBkZW5zaXR5LlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1yZXNwb25kLXRvLXJlcygyLCAxOTJkcHB4KSB7XG4vLy8gXHQvLyBAY29udGVudC4uLlxuLy8vIH1cbkBtaXhpbiB0LXJlc3BvbmQtdG8tcmVzKCRyZXM6IDJkcHB4KSB7XG5cblx0Lyogc3R5bGVsaW50LWRpc2FibGUgbWVkaWEtZmVhdHVyZS1uYW1lLW5vLXZlbmRvci1wcmVmaXggKi9cblx0QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICRyZXMpIHtcblx0XHRAY29udGVudDtcblx0fVxuXG5cdC8qIHN0eWxlbGludC1lbmFibGUgbWVkaWEtZmVhdHVyZS1uYW1lLW5vLXZlbmRvci1wcmVmaXggKi9cbn1cblxuLy8vIEBtaXhpbiB0LXJlc3BvbmQtdG8tb3JpZW50YXRpb25cbi8vLyBNZWRpYSBxdWVyeSBpbmplY3Rpb24gcmVzcG9uZGluZyB0byBhIHNwZWNpZmllZCBkZXZpY2Ugb3JpZW50YXRpb24gd2l0aCBAY29udGVudC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcmllbnRhdGlvbiAtIEEgU3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgdGhlIHRhcmdldCBkZXZpY2Ugb3JpZW50YXRpb24uXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vXHRAaW5jbHVkZSB0LXJlc3BvbmQtdG8tb3JpZW50YXRpb24ocG9ydHJhaXQpIHtcbi8vLyBcdC8vIEBjb250ZW50Li4uXG4vLy8gfVxuQG1peGluIHQtcmVzcG9uZC10by1vcmllbnRhdGlvbigkb3JpZW50YXRpb24pIHtcblxuXHRAbWVkaWEgb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogJG9yaWVudGF0aW9uKSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cbn1cblxuLy8vIEBtaXhpbiB0LXByaW50XG4vLy8gTWVkaWEgcXVlcnkgaW5qZWN0aW9uIGZvciBwcmludCBzcGVjaWZpYyBzdHlsZXMuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vL1x0QGluY2x1ZGUgdC1wcmludCB7XG4vLy8gXHQvLyBAY29udGVudC4uLlxuLy8vIH1cbkBtaXhpbiB0LXByaW50IHtcblxuXHRAbWVkaWEgcHJpbnQge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9*/