/*Import Foundation so its available to use includes in SCSS */
/**
 * Foundation for Sites by ZURB
 * Version 6.4.1
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
@import url("https://fonts.googleapis.com/css?family=Nunito:300,300i,400,400i,600,600i,700,700i");
/*Page SCSS*/
.schneiderText {
  font-family: 'Nunito', sans-serif;
  font-size: 1rem;
  color: #4f4f4f;
}

.schneiderText h1 {
  font-family: 'Nunito', sans-serif;
  font-size: 2.8rem;
}

.schneiderText h2 {
  font-family: 'Nunito', sans-serif;
  font-size: 22px;
}

.schneiderText h3 {
  font-family: 'Nunito', sans-serif;
  font-size: 1.7rem;
  line-height: 1.8rem;
  margin-bottom: 0.5rem;
  margin-top: 0.9375rem;
}

.noTopMargin {
  margin-top: 0px !important;
}

/*.pageWrapper h1.greyText, .pageWrapper h2.greyText, .pageWrapper h3.greyText, .pageWrapper p.greyText, .pageWrapper ul.greyText, .pageWrapper li.greyText, .pageWrapper a.greyText, .pageWrapper span.greyText, .pageWrapper div.greyText {
    color: #666;
}

.pageWrapper h1.smaller, .pageWrapper h2.smaller, .pageWrapper h3.smaller {
    font-size: 14px;
    margin: 2px;
}

.pageWrapper h3.smallH3 {
    font-size: 15px;
}*/
.HeaderWrapper {
  display: block;
  position: relative;
  width: 100%;
  overflow: hidden;
  margin-bottom: 1rem;
}

.HeaderContent {
  position: relative;
  width: 100%;
  padding: 20px;
  background: black;
}

@media print, screen and (min-width: 64em) {
  .HeaderContent {
    position: absolute;
    bottom: 0;
    background: rgba(0, 0, 0, 0.5);
  }
}

@media screen and (min-width: 75em) {
  .HeaderContent {
    max-width: 360px;
    display: inline-block;
    top: 30px;
    left: 30px;
    bottom: auto;
    background: rgba(0, 0, 0, 0.5);
  }
}

.HeaderContent h1 {
  color: #fff;
  margin: 0;
  font-size: 2.5em;
  line-height: 1.3em;
  margin-bottom: 10px;
  display: inline-block;
  font-weight: 400;
}

.HeaderContent h2 {
  margin: 0;
  font-size: 1.1em;
  line-height: 1.6em;
  color: #fff;
  font-weight: normal;
}

.HeaderContent.productPage {
  background: rgba(0, 0, 0, 0);
}

@media print, screen and (min-width: 64em) {
  .HeaderContent.productPage {
    position: absolute;
    max-width: 360px;
    display: inline-block;
    top: 30px;
    left: 30px;
    bottom: auto;
  }
}

.HeaderContent.productPage h1 {
  color: #000;
}

.HeaderContent.productPage h2 {
  color: #3dcd58;
}

.pageWrapper .lightGreenText {
  color: #3dcd58;
}

.pageWrapper a .lightGreenText:hover {
  text-decoration: underline;
  -webkit-text-decoration-color: #3dcd58;
  text-decoration-color: #3dcd58;
}

.blueText {
  color: #42b4e6;
}

a.blackText:hover {
  color: #42b4e6;
}

a.blackText h2:hover, a.blackText h3:hover {
  color: #42b4e6;
}

.schneiderButtonBlue {
  background: #42b4e6 none repeat scroll 0 0;
  border-color: #fff;
  border-radius: 0;
  border-style: solid;
  border-width: 0;
  color: #fff;
  display: block;
  font-weight: normal;
  margin-top: 20px;
  padding: .5em .5em;
  text-align: center;
  bottom: 0;
}

.schneiderButtonBlue:hover {
  background-color: #42b4e6;
  background-image: -moz-linear-gradient(to bottom, #59bde9 0, #42b4e6 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff59bde9',endColorstr='#ff42b4e6',GradientType=0);
  -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff59bde9',endColorstr='#ff42b4e6',GradientType=0);
  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #59bde9), to(#42b4e6));
  background-image: linear-gradient(to bottom, #59bde9 0, #42b4e6 100%);
  background-image: -webkit-linear-gradient(to bottom, #59bde9 0, #42b4e6 100%);
  color: #fff;
}

.schneiderNav {
  background: #3dcd58;
  width: 100%;
  border-bottom: 4px solid #009530;
  padding: 3px 28px;
  position: relative;
}

.schneiderNav .se-logo {
  display: inline-block;
}

@media print, screen and (min-width: 64em) {
  .schneiderNav .se-logo {
    display: block;
  }
}

@media screen and (min-width: 75em) {
  .schneiderNav .se-logo {
    display: inline-block;
  }
}

.schneiderNav .se-logo img {
  margin: 0 auto;
  display: inline-block;
}

@media print, screen and (min-width: 64em) {
  .schneiderNav .se-logo img {
    display: block;
  }
}

@media screen and (min-width: 75em) {
  .schneiderNav .se-logo img {
    display: inline-block;
  }
}

.schneiderNav .se-menu-toggle {
  display: inline-block;
  width: 40px;
  height: 40px;
  position: absolute;
  right: 30px;
}

.schneiderNav .se-menu-toggle:hover {
  cursor: pointer;
}

.schneiderNav .se-menu-toggle .se-menu-icon {
  height: 2px;
  width: 100%;
  background-color: #fff;
  position: absolute;
  top: 18px;
  left: 0;
  -webkit-transition: ease-in-out .3s all;
  transition: ease-in-out .3s all;
  opacity: 1;
}

.schneiderNav .se-menu-toggle .se-menu-icon.active {
  -webkit-transform: rotate(135deg);
          transform: rotate(135deg);
}

.schneiderNav .se-menu-toggle .se-menu-icon.active:before {
  -webkit-transform: translateY(10px) rotate(90deg);
          transform: translateY(10px) rotate(90deg);
}

.schneiderNav .se-menu-toggle .se-menu-icon.active:after {
  -webkit-transform: translateY(-10px);
          transform: translateY(-10px);
  opacity: 0;
}

.schneiderNav .se-menu-toggle .se-menu-icon:before {
  content: '';
  height: 2px;
  width: 100%;
  background-color: #fff;
  position: absolute;
  top: -10px;
  left: 0;
  -webkit-transition: ease-in-out .3s transform;
  transition: ease-in-out .3s transform;
}

.schneiderNav .se-menu-toggle .se-menu-icon:after {
  content: '';
  height: 2px;
  width: 100%;
  background-color: #fff;
  position: absolute;
  bottom: -10px;
  left: 0;
  -webkit-transition: ease-in-out .3s transform;
  transition: ease-in-out .3s transform;
}

@media print, screen and (min-width: 64em) {
  .schneiderNav .se-menu-toggle {
    display: none;
  }
}

@media screen and (max-width: 63.9375em) {
  .schneiderNav .se-menu-toggle + ul {
    max-height: 0px;
    overflow: hidden;
    position: absolute;
    top: 50px;
    right: 0;
    z-index: 1;
    background-color: #009530;
    width: 100%;
    -webkit-transition: ease-in-out .3s max-height;
    transition: ease-in-out .3s max-height;
  }
  .schneiderNav .se-menu-toggle + ul.active {
    max-height: 100vh;
  }
}

@media print, screen and (min-width: 64em) {
  .schneiderNav .se-menu-toggle + ul {
    display: inline-block;
  }
}

.schneiderNav > ul {
  display: inline-block;
  width: 100%;
  margin: 0 auto;
}

@media screen and (min-width: 75em) {
  .schneiderNav > ul {
    width: calc(100% - 200px);
  }
}

.schneiderNav > ul > li > a {
  text-transform: uppercase;
}

@media screen and (max-width: 63.9375em) {
  .schneiderNav > ul > li > a {
    font-size: 18px !important;
  }
}

.schneiderNav ul {
  font-family: 'Nunito', sans-serif;
  margin: 0px;
}

@media print, screen and (min-width: 64em) {
  .schneiderNav ul {
    text-align: center;
  }
}

@media screen and (min-width: 75em) {
  .schneiderNav ul {
    text-align: left;
  }
}

.schneiderNav ul li {
  display: inline-block;
  position: relative;
  padding: 10px;
  vertical-align: top;
}

@media print, screen and (min-width: 64em) {
  .schneiderNav ul li {
    vertical-align: middle;
  }
}

.schneiderNav ul li a {
  font-size: 16px;
  color: #fff;
}

.schneiderNav ul li img {
  padding-top: 4px;
}

.schneiderNav ul li:hover ul {
  display: block;
}

.schneiderNav ul li ul {
  border-left: 1px solid #fff;
  margin-left: 10px;
}

@media print, screen and (min-width: 64em) {
  .schneiderNav ul li ul {
    border: 0;
    display: none;
    position: absolute;
    top: 22px;
    left: 0;
    width: 260px;
    background: #fff;
    z-index: 10000;
    margin-top: 12px;
    margin-left: 0;
    padding: 10px;
    -webkit-box-shadow: 4px 7px 29px -11px rgba(0, 0, 0, 0.76);
            box-shadow: 4px 7px 29px -11px rgba(0, 0, 0, 0.76);
    border-radius: 2px;
  }
}

.schneiderNav ul li ul li {
  display: block;
}

@media print, screen and (min-width: 64em) {
  .schneiderNav ul li ul li {
    margin: 4px 0;
    padding: 0px;
  }
}

@media print, screen and (min-width: 64em) {
  .schneiderNav ul li ul li a {
    color: #000;
    font-size: 15px;
    font-weight: bold;
  }
}

@media print, screen and (min-width: 64em) {
  .schneiderNav ul li ul li a:hover {
    color: #42b4e6;
  }
}

@media print, screen and (min-width: 64em) {
  .schneiderNav ul li ul li a:after {
    content: " >";
    padding-left: 3px;
  }
}

.schneiderNav ul li ul:hover {
  display: block;
}

.row {
  max-width: 1080px;
}

@media screen and (min-width: 75em) {
  .se-wrap {
    padding: 0 45px;
  }
}

.se-wrap .iframe-wrap {
  position: relative;
  padding-bottom: 56.25%;
  overflow: hidden;
}

.se-wrap .iframe-wrap iframe {
  position: absolute;
  width: 100%;
  height: 100%;
}

.se-wrap p {
  line-height: 1.6;
}

.se-wrap ul {
  margin-left: 35px;
}

.se-wrap img {
  display: block;
  margin: 0 auto;
}

.se-wrap .smallH3 {
  color: #000;
  font-size: 15px;
  line-height: 22px;
}

.se-wrap .column.padding,
.se-wrap .columns.padding {
  padding: 0 1rem;
}

.se-wrap .margin-top {
  margin-top: 1rem;
}

.se-wrap .margin-top2 {
  margin-top: 5rem;
}

.se-wrap .clear {
  clear: both;
}

@media print, screen and (min-width: 64em) {
  .se-wrap .clear {
    clear: none;
  }
}

.se-wrap h1.smaller,
.se-wrap h2.smaller,
.se-wrap h3.smaller {
  font-size: 14px;
}

.se-wrap .charging-type-wrap .charging-type-labels {
  display: none;
}

@media print, screen and (min-width: 64em) {
  .se-wrap .charging-type-wrap .charging-type-labels {
    display: block;
  }
}

.se-wrap .charging-type-wrap .greyText:before {
  color: #3dcd58;
  display: block;
}

@media print, screen and (min-width: 64em) {
  .se-wrap .charging-type-wrap .greyText:before {
    content: none !important;
  }
}

.se-wrap .charging-type-wrap .greyText:nth-child(1):before {
  content: 'Max. power (single-phase) ';
}

.se-wrap .charging-type-wrap .greyText:nth-child(2):before {
  content: 'Max. power (three-phase) ';
}

.se-wrap .charging-type-wrap .greyText:nth-child(3):before {
  content: 'Max. current ';
}

hr.lightGrey {
  border: 0;
  height: 0;
  border-top: 1px solid rgba(0, 0, 0, 0.1);
  border-bottom: 1px solid rgba(255, 255, 255, 0.3);
}

.pageWrapper .padding {
  padding: 1em;
}

.se-images-wrap {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
}

@media print, screen and (min-width: 64em) {
  .se-images-wrap {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
  }
}

.se-images-wrap .se-image {
  margin: 5px 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}

@media print, screen and (min-width: 64em) {
  .se-images-wrap .se-image {
    margin: 0 5px;
  }
}

.se-images-wrap .se-image .se-image-inner {
  width: 100%;
  max-width: 230px;
}

.se-images-wrap .se-image .se-image-inner p {
  width: 100%;
  margin-top: 10px;
}

.se-images-wrap .se-image .se-image-inner a {
  display: block;
  margin: 0 auto;
}

.se-images-wrap .se-image .se-image-inner img {
  display: block;
  margin: 0 auto;
}

.subForm input, .subForm select, .subForm textarea {
  display: block;
  width: 100%;
}

.subForm input[type=checkbox], .subForm input[type=radio] {
  display: inline-block;
  margin: 0 0 1.14286rem;
  margin-right: .57143rem;
  width: auto;
}

.subForm label {
  display: block !important;
  margin-top: 5px;
}

@media print, screen and (min-width: 40em) {
  .subForm .columns {
    width: 45%;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaG5laWRlci1lbGVjdHJpYy5zY3NzIiwiLi4vLi4vdGhpcmQtcGFydHkvZm91bmRhdGlvbl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3VuZGF0aW9uLnNjc3MiLCJzY2huZWlkZXItZWxlY3RyaWMuY3NzIiwiLi4vLi4vdGhpcmQtcGFydHkvZm91bmRhdGlvbl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191bml0LnNjc3MiLCIuLi8uLi90aGlyZC1wYXJ0eS9mb3VuZGF0aW9uX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2JyZWFrcG9pbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4REFBQTtBQ0FBOzs7OztFQ01FO0FGSEYsaUdBQVk7QUFFWixZQUFBO0FBRUE7RUFDSSxpQ0FBaUM7RUFDakMsZUFBZTtFQUNmLGNBQWM7QUVHbEI7O0FGTkE7RUFNUSxpQ0FBaUM7RUFDakMsaUJBQWlCO0FFSXpCOztBRlhBO0VBV1EsaUNBQWlDO0VBQ2pDLGVBQWU7QUVJdkI7O0FGaEJBO0VBZ0JRLGlDQUFpQztFQUNqQyxpQkFBaUI7RUFDakIsbUJBQW1CO0VBQ25CLHFCRzhEaUQ7RUg3RGpELHFCRzZEaUQ7QUR6RHpEOztBRkFBO0VBQ0ksMEJBQTBCO0FFRzlCOztBRkFBOzs7Ozs7Ozs7OztFRWFFO0FGRUY7RUFDSSxjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxnQkFBZ0I7RUFDaEIsbUJBQW1CO0FFQXZCOztBRkdBO0VBQ0ksa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxhQUFhO0VBQ2IsaUJBQXlCO0FFQTdCOztBRWlHTTtFSnJHTjtJQU9RLGtCQUFrQjtJQUNsQixTQUFTO0lBQ1QsOEJBQTJCO0VFRWpDO0FBQ0Y7O0FFOEZNO0VKMUdOO0lBYVEsZ0JBQWdCO0lBQ2hCLHFCQUFxQjtJQUNyQixTQUFTO0lBQ1QsVUFBVTtJQUNWLFlBQVk7SUFDWiw4QkFBMkI7RUVJakM7QUFDRjs7QUZ2QkE7RUFzQlEsV0FBVztFQUNYLFNBQVM7RUFDVCxnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLG1CQUFtQjtFQUNuQixxQkFBcUI7RUFDckIsZ0JBQWdCO0FFS3hCOztBRmpDQTtFQWdDUSxTQUFTO0VBQ1QsZ0JBQWdCO0VBQ2hCLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsbUJBQW1CO0FFSzNCOztBRnpDQTtFQXdDUSw0QkFBeUI7QUVLakM7O0FFd0RNO0VKckdOO0lBMkNZLGtCQUFrQjtJQUNsQixnQkFBZ0I7SUFDaEIscUJBQXFCO0lBQ3JCLFNBQVM7SUFDVCxVQUFVO0lBQ1YsWUFBWTtFRU90QjtBQUNGOztBRnhEQTtFQW9EWSxXQUFXO0FFUXZCOztBRjVEQTtFQXdEWSxjQUFjO0FFUTFCOztBRkhBO0VBQ0ksY0FBYztBRU1sQjs7QUZIQTtFQUNJLDBCQUEwQjtFQUMxQixzQ0FBc0M7RUFDdEMsOEJBQThCO0FFTWxDOztBRkhBO0VBQ0ksY0FBYztBRU1sQjs7QUZIQTtFQUNJLGNBQWM7QUVNbEI7O0FGRkE7RUFDSSxjQUFjO0FFS2xCOztBRkZBO0VBQ0ksMENBQTBDO0VBQzFDLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFDaEIsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixXQUFXO0VBQ1gsY0FBYztFQUNkLG1CQUFtQjtFQUNuQixnQkFBZ0I7RUFDaEIsa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixTQUFTO0FFS2I7O0FGakJBO0VBZVEseUJBQXlCO0VBQ3pCLDBFQUF3RTtFQUN4RSxvSEFBb0g7RUFDcEgsd0hBQXdIO0VBQ3hILHNHQUFtRTtFQUFuRSxxRUFBbUU7RUFDbkUsNkVBQTJFO0VBQzNFLFdBQVc7QUVNbkI7O0FGREE7RUFDSSxtQkFBbUI7RUFDbkIsV0FBVztFQUNYLGdDQUFnQztFQUNoQyxpQkFBaUI7RUFDakIsa0JBQWtCO0FFSXRCOztBRlRBO0VBUVEscUJBQXFCO0FFSzdCOztBRXRCTTtFSlNOO0lBV1ksY0FBYztFRU94QjtBQUNGOztBRXZCTTtFSklOO0lBZVkscUJBQXFCO0VFUy9CO0FBQ0Y7O0FGekJBO0VBbUJZLGNBQWM7RUFDZCxxQkFBcUI7QUVVakM7O0FFdkNNO0VKU047SUF1QmdCLGNBQWM7RUVZNUI7QUFDRjs7QUV4Q007RUpJTjtJQTJCZ0IscUJBQXFCO0VFY25DO0FBQ0Y7O0FGMUNBO0VBaUNRLHFCQUFxQjtFQUNyQixXQUFXO0VBQ1gsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixXQUFXO0FFYW5COztBRmxEQTtFQXdDWSxlQUFlO0FFYzNCOztBRnREQTtFQTRDWSxXQUFXO0VBQ1gsV0FBVztFQUNYLHNCQUFzQjtFQUN0QixrQkFBa0I7RUFDbEIsU0FBUztFQUNULE9BQU87RUFDUCx1Q0FBK0I7RUFBL0IsK0JBQStCO0VBQy9CLFVBQVU7QUVjdEI7O0FGakVBO0VBc0RnQixpQ0FBeUI7VUFBekIseUJBQXlCO0FFZXpDOztBRnJFQTtFQXlEb0IsaURBQXlDO1VBQXpDLHlDQUF5QztBRWdCN0Q7O0FGekVBO0VBNkRvQixvQ0FBNEI7VUFBNUIsNEJBQTRCO0VBQzVCLFVBQVU7QUVnQjlCOztBRjlFQTtFQW1FZ0IsV0FBVztFQUNYLFdBQVc7RUFDWCxXQUFXO0VBQ1gsc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQixVQUFVO0VBQ1YsT0FBTztFQUNQLDZDQUFxQztFQUFyQyxxQ0FBcUM7QUVlckQ7O0FGekZBO0VBOEVnQixXQUFXO0VBQ1gsV0FBVztFQUNYLFdBQVc7RUFDWCxzQkFBc0I7RUFDdEIsa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixPQUFPO0VBQ1AsNkNBQXFDO0VBQXJDLHFDQUFxQztBRWVyRDs7QUU3R007RUpTTjtJQTBGWSxhQUFhO0VFZXZCO0FBQ0Y7O0FFOUdNO0VKSU47SUFnR2dCLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLFNBQVM7SUFDVCxRQUFRO0lBQ1IsVUFBVTtJQUNWLHlCQUF5QjtJQUN6QixXQUFXO0lBQ1gsOENBQXNDO0lBQXRDLHNDQUFzQztFRWVwRDtFRnZIRjtJQTJHb0IsaUJBQWlCO0VFZW5DO0FBQ0Y7O0FFcElNO0VKU047SUFnSGdCLHFCQUFxQjtFRWdCbkM7QUFDRjs7QUZqSUE7RUFzSFEscUJBQXFCO0VBQ3JCLFdBQVc7RUFDWCxjQUFjO0FFZXRCOztBRTNJTTtFSklOO0lBMkhZLHlCQUF5QjtFRWlCbkM7QUFDRjs7QUY3SUE7RUFpSWdCLHlCQUF5QjtBRWdCekM7O0FFckpNO0VKSU47SUFvSW9CLDBCQUEwQjtFRWtCNUM7QUFDRjs7QUZ2SkE7RUEySVEsaUNBQWlDO0VBQ2pDLFdBQVc7QUVnQm5COztBRXJLTTtFSlNOO0lBK0lZLGtCQUFrQjtFRWtCNUI7QUFDRjs7QUV0S007RUpJTjtJQW1KWSxnQkFBZ0I7RUVvQjFCO0FBQ0Y7O0FGeEtBO0VBdUpZLHFCQUFxQjtFQUNyQixrQkFBa0I7RUFDbEIsYUFBYTtFQUNiLG1CQUFtQjtBRXFCL0I7O0FFeExNO0VKU047SUE2SmdCLHNCQUFzQjtFRXVCcEM7QUFDRjs7QUZyTEE7RUFpS2dCLGVBQWU7RUFDZixXQUFXO0FFd0IzQjs7QUYxTEE7RUFzS2dCLGdCQUNKO0FFdUJaOztBRjlMQTtFQTJLb0IsY0FBYztBRXVCbEM7O0FGbE1BO0VBZ0xnQiwyQkFBMkI7RUFDM0IsaUJBQWlCO0FFc0JqQzs7QUVoTk07RUpTTjtJQW9Mb0IsU0FBUztJQUNULGFBQWE7SUFDYixrQkFBa0I7SUFDbEIsU0FBUztJQUNULE9BQU87SUFDUCxZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGFBQWE7SUFDYiwwREFBK0M7WUFBL0Msa0RBQStDO0lBQy9DLGtCQUFrQjtFRXdCcEM7QUFDRjs7QUZ6TkE7RUFvTW9CLGNBQWM7QUV5QmxDOztBRXRPTTtFSlNOO0lBdU13QixhQUFhO0lBQ2IsWUFBWTtFRTJCbEM7QUFDRjs7QUU3T007RUpTTjtJQTZNNEIsV0FBVztJQUNYLGVBQWU7SUFDZixpQkFBaUI7RUU0QjNDO0FBQ0Y7O0FFclBNO0VKU047SUFvTmdDLGNBQWM7RUU2QjVDO0FBQ0Y7O0FFM1BNO0VKU047SUEwTmdDLGFBQWE7SUFDYixpQkFBaUI7RUU2Qi9DO0FBQ0Y7O0FGelBBO0VBa09vQixjQUFjO0FFMkJsQzs7QUZwQkE7RUFDSSxpQkFBaUI7QUV1QnJCOztBRXJRTTtFSmlQTjtJQUVRLGVBQWU7RUV1QnJCO0FBQ0Y7O0FGMUJBO0VBTVEsa0JBQWtCO0VBQ2xCLHNCQUFzQjtFQUN0QixnQkFBZ0I7QUV3QnhCOztBRmhDQTtFQVdZLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtBRXlCeEI7O0FGdENBO0VBa0JRLGdCQUFnQjtBRXdCeEI7O0FGMUNBO0VBc0JRLGlCQUFpQjtBRXdCekI7O0FGOUNBO0VBMEJRLGNBQWM7RUFDZCxjQUFjO0FFd0J0Qjs7QUZuREE7RUErQlEsV0FBVztFQUNYLGVBQWU7RUFDZixpQkFBaUI7QUV3QnpCOztBRnpEQTs7RUFzQ1EsZUFBZTtBRXdCdkI7O0FGOURBO0VBMENRLGdCQUFnQjtBRXdCeEI7O0FGbEVBO0VBOENRLGdCQUFnQjtBRXdCeEI7O0FGdEVBO0VBa0RRLFdBQVc7QUV3Qm5COztBRWhVTTtFSnNQTjtJQXFEWSxXQUFXO0VFMEJyQjtBQUNGOztBRmhGQTs7O0VBNERRLGVBQWU7QUUwQnZCOztBRnRGQTtFQWlFWSxhQUFhO0FFeUJ6Qjs7QUVoVk07RUpzUE47SUFvRWdCLGNBQWM7RUUyQjVCO0FBQ0Y7O0FGaEdBO0VBMEVnQixjQUFjO0VBQ2QsY0FBYztBRTBCOUI7O0FFM1ZNO0VKc1BOO0lBOEVvQix3QkFBd0I7RUU0QjFDO0FBQ0Y7O0FGM0dBO0VBb0ZvQixxQ0FBcUM7QUUyQnpEOztBRi9HQTtFQTBGb0Isb0NBQW9DO0FFeUJ4RDs7QUZuSEE7RUFnR29CLHdCQUF3QjtBRXVCNUM7O0FGaEJBO0VBQ0ksU0FBUztFQUNULFNBQVM7RUFDVCx3Q0FBd0M7RUFDeEMsaURBQWlEO0FFbUJyRDs7QUZoQkE7RUFDSSxZQUFZO0FFbUJoQjs7QUZoQkE7RUFDSSxvQkFBYTtFQUFiLG9CQUFhO0VBQWIsYUFBYTtFQUNiLDRCQUFzQjtFQUF0Qiw2QkFBc0I7TUFBdEIsMEJBQXNCO1VBQXRCLHNCQUFzQjtFQUN0Qix5QkFBbUI7TUFBbkIsc0JBQW1CO1VBQW5CLG1CQUFtQjtFQUNuQix5QkFBOEI7TUFBOUIsc0JBQThCO1VBQTlCLDhCQUE4QjtBRW1CbEM7O0FFL1hNO0VKd1dOO0lBT1EsOEJBQW1CO0lBQW5CLDZCQUFtQjtRQUFuQix1QkFBbUI7WUFBbkIsbUJBQW1CO0lBQ25CLHdCQUF1QjtRQUF2QixxQkFBdUI7WUFBdkIsdUJBQXVCO0VFcUI3QjtBQUNGOztBRjlCQTtFQVlRLGFBQWE7RUFDYixvQkFBYTtFQUFiLG9CQUFhO0VBQWIsYUFBYTtBRXNCckI7O0FFM1lNO0VKd1dOO0lBZ0JZLGFBQWE7RUV3QnZCO0FBQ0Y7O0FGekNBO0VBb0JZLFdBQVc7RUFDWCxnQkFBZ0I7QUV5QjVCOztBRjlDQTtFQXlCZ0IsV0FBVztFQUNYLGdCQUFnQjtBRXlCaEM7O0FGbkRBO0VBOEJnQixjQUFjO0VBQ2QsY0FBYztBRXlCOUI7O0FGeERBO0VBbUNnQixjQUFjO0VBQ2QsY0FBYztBRXlCOUI7O0FGbkJBO0VBQ0ksY0FBYztFQUNkLFdBQVc7QUVzQmY7O0FGbkJBO0VBQ0kscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsV0FBVztBRXNCZjs7QUZuQkE7RUFDSSx5QkFBeUI7RUFDekIsZUFBZTtBRXNCbkI7O0FFdGJNO0VKb2FOO0lBR1EsVUFBVTtFRW9CaEI7QUFDRiIsImZpbGUiOiJzY2huZWlkZXItZWxlY3RyaWMuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLypJbXBvcnQgRm91bmRhdGlvbiBzbyBpdHMgYXZhaWxhYmxlIHRvIHVzZSBpbmNsdWRlcyBpbiBTQ1NTICovXG5AaW1wb3J0ICd3d3dyb290L3NyYy9jc3MvdGhpcmQtcGFydHkvZm91bmRhdGlvbl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3VuZGF0aW9uJztcbkBpbXBvcnQgJ3d3d3Jvb3Qvc3JjL2Nzcy90aGlyZC1wYXJ0eS9mb3VuZGF0aW9uX2NvbXBvbmVudHMvbW90aW9uLXVpL3NyYy9tb3Rpb24tdWknO1xuQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1OdW5pdG86MzAwLDMwMGksNDAwLDQwMGksNjAwLDYwMGksNzAwLDcwMGknKTtcblxuLypQYWdlIFNDU1MqL1xuXG4uc2NobmVpZGVyVGV4dCB7XG4gICAgZm9udC1mYW1pbHk6ICdOdW5pdG8nLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBjb2xvcjogIzRmNGY0ZjtcblxuICAgIGgxIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdOdW5pdG8nLCBzYW5zLXNlcmlmO1xuICAgICAgICBmb250LXNpemU6IDIuOHJlbTtcbiAgICB9XG5cbiAgICBoMiB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnTnVuaXRvJywgc2Fucy1zZXJpZjtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdOdW5pdG8nLCBzYW5zLXNlcmlmO1xuICAgICAgICBmb250LXNpemU6IDEuN3JlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuOHJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoOCk7XG4gICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDE1KTtcbiAgICB9XG59XG5cbi5ub1RvcE1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qLnBhZ2VXcmFwcGVyIGgxLmdyZXlUZXh0LCAucGFnZVdyYXBwZXIgaDIuZ3JleVRleHQsIC5wYWdlV3JhcHBlciBoMy5ncmV5VGV4dCwgLnBhZ2VXcmFwcGVyIHAuZ3JleVRleHQsIC5wYWdlV3JhcHBlciB1bC5ncmV5VGV4dCwgLnBhZ2VXcmFwcGVyIGxpLmdyZXlUZXh0LCAucGFnZVdyYXBwZXIgYS5ncmV5VGV4dCwgLnBhZ2VXcmFwcGVyIHNwYW4uZ3JleVRleHQsIC5wYWdlV3JhcHBlciBkaXYuZ3JleVRleHQge1xuICAgIGNvbG9yOiAjNjY2O1xufVxuXG4ucGFnZVdyYXBwZXIgaDEuc21hbGxlciwgLnBhZ2VXcmFwcGVyIGgyLnNtYWxsZXIsIC5wYWdlV3JhcHBlciBoMy5zbWFsbGVyIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbWFyZ2luOiAycHg7XG59XG5cbi5wYWdlV3JhcHBlciBoMy5zbWFsbEgzIHtcbiAgICBmb250LXNpemU6IDE1cHg7XG59Ki9cblxuXG5cbi5IZWFkZXJXcmFwcGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4uSGVhZGVyQ29udGVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwxKTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC41KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHhsYXJnZSkge1xuICAgICAgICBtYXgtd2lkdGg6IDM2MHB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHRvcDogMzBweDtcbiAgICAgICAgbGVmdDogMzBweDtcbiAgICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuNSk7XG4gICAgfVxuXG4gICAgaDEge1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDIuNWVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICB9XG5cbiAgICBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxLjFlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICB9XG5cbiAgICAmLnByb2R1Y3RQYWdlIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwKTtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDM2MHB4O1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgdG9wOiAzMHB4O1xuICAgICAgICAgICAgbGVmdDogMzBweDtcbiAgICAgICAgICAgIGJvdHRvbTogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIGNvbG9yOiAjMDAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgY29sb3I6ICMzZGNkNTg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wYWdlV3JhcHBlciAubGlnaHRHcmVlblRleHQge1xuICAgIGNvbG9yOiAjM2RjZDU4O1xufVxuXG4ucGFnZVdyYXBwZXIgYSAubGlnaHRHcmVlblRleHQ6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAjM2RjZDU4O1xuICAgIHRleHQtZGVjb3JhdGlvbi1jb2xvcjogIzNkY2Q1ODtcbn1cblxuLmJsdWVUZXh0IHtcbiAgICBjb2xvcjogIzQyYjRlNjtcbn1cblxuYS5ibGFja1RleHQ6aG92ZXIge1xuICAgIGNvbG9yOiAjNDJiNGU2O1xufVxuXG5cbmEuYmxhY2tUZXh0IGgyOmhvdmVyLCBhLmJsYWNrVGV4dCBoMzpob3ZlciB7XG4gICAgY29sb3I6ICM0MmI0ZTY7XG59XG5cbi5zY2huZWlkZXJCdXR0b25CbHVlIHtcbiAgICBiYWNrZ3JvdW5kOiAjNDJiNGU2IG5vbmUgcmVwZWF0IHNjcm9sbCAwIDA7XG4gICAgYm9yZGVyLWNvbG9yOiAjZmZmO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6IDA7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIHBhZGRpbmc6IC41ZW0gLjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm90dG9tOiAwO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmI0ZTY7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjNTliZGU5IDAsIzQyYjRlNiAxMDAlKTtcbiAgICAgICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmNTliZGU5JyxlbmRDb2xvcnN0cj0nI2ZmNDJiNGU2JyxHcmFkaWVudFR5cGU9MCk7XG4gICAgICAgIC1tcy1maWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmY1OWJkZTknLGVuZENvbG9yc3RyPScjZmY0MmI0ZTYnLEdyYWRpZW50VHlwZT0wKTtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjNTliZGU5IDAsIzQyYjRlNiAxMDAlKTtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCM1OWJkZTkgMCwjNDJiNGU2IDEwMCUpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICB9XG59XG5cblxuLnNjaG5laWRlck5hdiB7XG4gICAgYmFja2dyb3VuZDogIzNkY2Q1ODtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItYm90dG9tOiA0cHggc29saWQgIzAwOTUzMDtcbiAgICBwYWRkaW5nOiAzcHggMjhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAuc2UtbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGxhcmdlKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCh4bGFyZ2UpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2UtbWVudS10b2dnbGUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDMwcHg7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuc2UtbWVudS1pY29uIHtcbiAgICAgICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAxOHB4O1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGVhc2UtaW4tb3V0IC4zcyBhbGw7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuXG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTtcblxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpIHJvdGF0ZSg5MGRlZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAtMTBweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGVhc2UtaW4tb3V0IC4zcyB0cmFuc2Zvcm07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGJvdHRvbTogLTEwcHg7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBlYXNlLWluLW91dCAuM3MgdHJhbnNmb3JtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYgKyB1bCB7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pIHtcbiAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiAwcHg7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiA1MHB4O1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTUzMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBlYXNlLWluLW91dCAuM3MgbWF4LWhlaWdodDtcblxuICAgICAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgPiB1bCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGxhcmdlKSB7XG4gICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjAwcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgPiBsaSB7XG5cbiAgICAgICAgICAgID4gYSB7XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdWwge1xuICAgICAgICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7XG4gICAgICAgIG1hcmdpbjogMHB4O1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGxhcmdlKSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDRweFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2ZmZjtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI2MHB4O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAxMDAwMDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDRweCA3cHggMjlweCAtMTFweCByZ2JhKDAsMCwwLDAuNzYpO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDRweCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMwMDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNDJiNGU2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIiA+XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogM3B4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5yb3cge1xuICAgIG1heC13aWR0aDogMTA4MHB4O1xufVxuXG4uc2Utd3JhcCB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCh4bGFyZ2UpIHtcbiAgICAgICAgcGFkZGluZzogMCA0NXB4O1xuICAgIH1cblxuICAgIC5pZnJhbWUtd3JhcCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDU2LjI1JTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICBpZnJhbWUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAzNXB4O1xuICAgIH1cblxuICAgIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG5cbiAgICAuc21hbGxIMyB7XG4gICAgICAgIGNvbG9yOiAjMDAwO1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICAgIH1cblxuICAgIC5jb2x1bW4ucGFkZGluZyxcbiAgICAuY29sdW1ucy5wYWRkaW5nIHtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgIH1cblxuICAgIC5tYXJnaW4tdG9wIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICB9XG5cbiAgICAubWFyZ2luLXRvcDIge1xuICAgICAgICBtYXJnaW4tdG9wOiA1cmVtO1xuICAgIH1cblxuICAgIC5jbGVhciB7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIGNsZWFyOiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaDEuc21hbGxlcixcbiAgICBoMi5zbWFsbGVyLFxuICAgIGgzLnNtYWxsZXIge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgfVxuXG4gICAgLmNoYXJnaW5nLXR5cGUtd3JhcCB7XG4gICAgICAgIC5jaGFyZ2luZy10eXBlLWxhYmVscyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZ3JleVRleHQge1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjM2RjZDU4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOm50aC1jaGlsZCgxKSB7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnTWF4LiBwb3dlciAoc2luZ2xlLXBoYXNlKSAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ01heC4gcG93ZXIgKHRocmVlLXBoYXNlKSAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpudGgtY2hpbGQoMykge1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ01heC4gY3VycmVudCAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuaHIubGlnaHRHcmV5IHtcbiAgICBib3JkZXI6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcbn1cblxuLnBhZ2VXcmFwcGVyIC5wYWRkaW5nIHtcbiAgICBwYWRkaW5nOiAxZW07XG59XG5cbi5zZS1pbWFnZXMtd3JhcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICB9XG5cbiAgICAuc2UtaW1hZ2Uge1xuICAgICAgICBtYXJnaW46IDVweCAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCA1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAuc2UtaW1hZ2UtaW5uZXIge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDIzMHB4O1xuXG4gICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAvL2Rpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zdWJGb3JtIGlucHV0LCAuc3ViRm9ybSBzZWxlY3QsIC5zdWJGb3JtIHRleHRhcmVhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLnN1YkZvcm0gaW5wdXRbdHlwZT1jaGVja2JveF0sIC5zdWJGb3JtIGlucHV0W3R5cGU9cmFkaW9dIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luOiAwIDAgMS4xNDI4NnJlbTtcbiAgICBtYXJnaW4tcmlnaHQ6IC41NzE0M3JlbTtcbiAgICB3aWR0aDogYXV0bztcbn1cblxuLnN1YkZvcm0gbGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xufVxuXG5cbi5zdWJGb3JtIC5jb2x1bW5zIHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIHdpZHRoOiA0NSU7XG4gICAgfVxufSIsIi8qKlxuICogRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuICogVmVyc2lvbiA2LjQuMVxuICogZm91bmRhdGlvbi56dXJiLmNvbVxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG4gKi9cblxuLy8gRGVwZW5kZW5jaWVzXG5AaW1wb3J0ICcuLi9fdmVuZG9yL25vcm1hbGl6ZS1zY3NzL3Nhc3Mvbm9ybWFsaXplJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy9taXNzaW5nLWRlcGVuZGVuY2llcyc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvdHJ1ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9wdXJnZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9yZW1vdmUnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcmVwbGFjZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy90by1saXN0JztcblxuLy8gU2V0dGluZ3Ncbi8vIGltcG9ydCB5b3VyIG93biBgc2V0dGluZ3NgIGhlcmUgb3Jcbi8vIGltcG9ydCBhbmQgbW9kaWZ5IHRoZSBkZWZhdWx0IHNldHRpbmdzIHRocm91Z2hcbi8vIEBpbXBvcnQgJ3NldHRpbmdzL3NldHRpbmdzJztcblxuLy8gU2FzcyB1dGlsaXRpZXNcbkBpbXBvcnQgJ3V0aWwvdXRpbCc7XG5cbi8vIEdsb2JhbCB2YXJpYWJsZXMgYW5kIHN0eWxlc1xuQGltcG9ydCAnZ2xvYmFsJztcblxuLy8gQ29tcG9uZW50c1xuQGltcG9ydCAnZ3JpZC9ncmlkJztcbkBpbXBvcnQgJ3h5LWdyaWQveHktZ3JpZCc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQGltcG9ydCAnZm9ybXMvZm9ybXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy92aXNpYmlsaXR5JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxvYXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24tZ3JvdXAnO1xuQGltcG9ydCAnY29tcG9uZW50cy9hY2NvcmRpb24tbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2FjY29yZGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2JhZGdlJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jYWxsb3V0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2FyZCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Nsb3NlLWJ1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2RyaWxsZG93bic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Ryb3Bkb3duLW1lbnUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcm9wZG93bic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2ZsZXgnO1xuQGltcG9ydCAnY29tcG9uZW50cy9yZXNwb25zaXZlLWVtYmVkJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbGFiZWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZWRpYS1vYmplY3QnO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZW51JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudS1pY29uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb2ZmLWNhbnZhcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL29yYml0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcGFnaW5hdGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Byb2dyZXNzLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3JldmVhbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3NsaWRlcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N0aWNreSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N3aXRjaCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RhYmxlJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFicyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RpdGxlLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RvcC1iYXInO1xuQGltcG9ydCAnY29tcG9uZW50cy90aHVtYm5haWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy90b29sdGlwJztcbkBpbXBvcnQgJ3Byb3RvdHlwZS9wcm90b3R5cGUnO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1ldmVyeXRoaW5nKFxuICAkZmxleDogdHJ1ZSxcbiAgJHByb3RvdHlwZTogZmFsc2Vcbikge1xuICBAaWYgJGZsZXgge1xuICAgICRnbG9iYWwtZmxleGJveDogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1nbG9iYWwtc3R5bGVzO1xuICBAaWYgbm90ICRmbGV4IHtcbiAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdyaWQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkeHktZ3JpZCB7XG4gICAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLXh5LWdyaWQtY2xhc3NlcztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWdyaWQ7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJhZGdlO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJ1dHRvbi1ncm91cDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jYWxsb3V0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNhcmQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudS1pY29uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyaWxsZG93bi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1sYWJlbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZWRpYS1vYmplY3Q7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tb2ZmLWNhbnZhcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vcmJpdDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wYWdpbmF0aW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb2dyZXNzLWJhcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zbGlkZXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc3RpY2t5O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXJldmVhbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zd2l0Y2g7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGFibGU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGFicztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aHVtYm5haWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGl0bGUtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRvb2x0aXA7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9wLWJhcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxvYXQtY2xhc3NlcztcblxuICBAaWYgJGZsZXgge1xuICAgIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzO1xuICB9XG5cbiAgQGlmICRwcm90b3R5cGUge1xuICAgIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWNsYXNzZXM7XG4gIH1cbn1cbiIsIi8qSW1wb3J0IEZvdW5kYXRpb24gc28gaXRzIGF2YWlsYWJsZSB0byB1c2UgaW5jbHVkZXMgaW4gU0NTUyAqL1xuLyoqXG4gKiBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4gKiBWZXJzaW9uIDYuNC4xXG4gKiBmb3VuZGF0aW9uLnp1cmIuY29tXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcbiAqL1xuQGltcG9ydCB1cmwoXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9TnVuaXRvOjMwMCwzMDBpLDQwMCw0MDBpLDYwMCw2MDBpLDcwMCw3MDBpXCIpO1xuLypQYWdlIFNDU1MqL1xuLnNjaG5laWRlclRleHQge1xuICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgY29sb3I6ICM0ZjRmNGY7XG59XG5cbi5zY2huZWlkZXJUZXh0IGgxIHtcbiAgZm9udC1mYW1pbHk6ICdOdW5pdG8nLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDIuOHJlbTtcbn1cblxuLnNjaG5laWRlclRleHQgaDIge1xuICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMjJweDtcbn1cblxuLnNjaG5laWRlclRleHQgaDMge1xuICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMS43cmVtO1xuICBsaW5lLWhlaWdodDogMS44cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIG1hcmdpbi10b3A6IDAuOTM3NXJlbTtcbn1cblxuLm5vVG9wTWFyZ2luIHtcbiAgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qLnBhZ2VXcmFwcGVyIGgxLmdyZXlUZXh0LCAucGFnZVdyYXBwZXIgaDIuZ3JleVRleHQsIC5wYWdlV3JhcHBlciBoMy5ncmV5VGV4dCwgLnBhZ2VXcmFwcGVyIHAuZ3JleVRleHQsIC5wYWdlV3JhcHBlciB1bC5ncmV5VGV4dCwgLnBhZ2VXcmFwcGVyIGxpLmdyZXlUZXh0LCAucGFnZVdyYXBwZXIgYS5ncmV5VGV4dCwgLnBhZ2VXcmFwcGVyIHNwYW4uZ3JleVRleHQsIC5wYWdlV3JhcHBlciBkaXYuZ3JleVRleHQge1xuICAgIGNvbG9yOiAjNjY2O1xufVxuXG4ucGFnZVdyYXBwZXIgaDEuc21hbGxlciwgLnBhZ2VXcmFwcGVyIGgyLnNtYWxsZXIsIC5wYWdlV3JhcHBlciBoMy5zbWFsbGVyIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbWFyZ2luOiAycHg7XG59XG5cbi5wYWdlV3JhcHBlciBoMy5zbWFsbEgzIHtcbiAgICBmb250LXNpemU6IDE1cHg7XG59Ki9cbi5IZWFkZXJXcmFwcGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5IZWFkZXJDb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMjBweDtcbiAgYmFja2dyb3VuZDogYmxhY2s7XG59XG5cbkBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5IZWFkZXJDb250ZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NWVtKSB7XG4gIC5IZWFkZXJDb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDM2MHB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0b3A6IDMwcHg7XG4gICAgbGVmdDogMzBweDtcbiAgICBib3R0b206IGF1dG87XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICB9XG59XG5cbi5IZWFkZXJDb250ZW50IGgxIHtcbiAgY29sb3I6ICNmZmY7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAyLjVlbTtcbiAgbGluZS1oZWlnaHQ6IDEuM2VtO1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi5IZWFkZXJDb250ZW50IGgyIHtcbiAgbWFyZ2luOiAwO1xuICBmb250LXNpemU6IDEuMWVtO1xuICBsaW5lLWhlaWdodDogMS42ZW07XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4uSGVhZGVyQ29udGVudC5wcm9kdWN0UGFnZSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XG59XG5cbkBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5IZWFkZXJDb250ZW50LnByb2R1Y3RQYWdlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWF4LXdpZHRoOiAzNjBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdG9wOiAzMHB4O1xuICAgIGxlZnQ6IDMwcHg7XG4gICAgYm90dG9tOiBhdXRvO1xuICB9XG59XG5cbi5IZWFkZXJDb250ZW50LnByb2R1Y3RQYWdlIGgxIHtcbiAgY29sb3I6ICMwMDA7XG59XG5cbi5IZWFkZXJDb250ZW50LnByb2R1Y3RQYWdlIGgyIHtcbiAgY29sb3I6ICMzZGNkNTg7XG59XG5cbi5wYWdlV3JhcHBlciAubGlnaHRHcmVlblRleHQge1xuICBjb2xvcjogIzNkY2Q1ODtcbn1cblxuLnBhZ2VXcmFwcGVyIGEgLmxpZ2h0R3JlZW5UZXh0OmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAjM2RjZDU4O1xuICB0ZXh0LWRlY29yYXRpb24tY29sb3I6ICMzZGNkNTg7XG59XG5cbi5ibHVlVGV4dCB7XG4gIGNvbG9yOiAjNDJiNGU2O1xufVxuXG5hLmJsYWNrVGV4dDpob3ZlciB7XG4gIGNvbG9yOiAjNDJiNGU2O1xufVxuXG5hLmJsYWNrVGV4dCBoMjpob3ZlciwgYS5ibGFja1RleHQgaDM6aG92ZXIge1xuICBjb2xvcjogIzQyYjRlNjtcbn1cblxuLnNjaG5laWRlckJ1dHRvbkJsdWUge1xuICBiYWNrZ3JvdW5kOiAjNDJiNGU2IG5vbmUgcmVwZWF0IHNjcm9sbCAwIDA7XG4gIGJvcmRlci1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAwO1xuICBjb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIG1hcmdpbi10b3A6IDIwcHg7XG4gIHBhZGRpbmc6IC41ZW0gLjVlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3R0b206IDA7XG59XG5cbi5zY2huZWlkZXJCdXR0b25CbHVlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYjRlNjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNTliZGU5IDAsICM0MmI0ZTYgMTAwJSk7XG4gIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjU5YmRlOScsZW5kQ29sb3JzdHI9JyNmZjQyYjRlNicsR3JhZGllbnRUeXBlPTApO1xuICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmNTliZGU5JyxlbmRDb2xvcnN0cj0nI2ZmNDJiNGU2JyxHcmFkaWVudFR5cGU9MCk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM1OWJkZTkgMCwgIzQyYjRlNiAxMDAlKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNTliZGU5IDAsICM0MmI0ZTYgMTAwJSk7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4uc2NobmVpZGVyTmF2IHtcbiAgYmFja2dyb3VuZDogIzNkY2Q1ODtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1ib3R0b206IDRweCBzb2xpZCAjMDA5NTMwO1xuICBwYWRkaW5nOiAzcHggMjhweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uc2NobmVpZGVyTmF2IC5zZS1sb2dvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG5AbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAuc2NobmVpZGVyTmF2IC5zZS1sb2dvIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NWVtKSB7XG4gIC5zY2huZWlkZXJOYXYgLnNlLWxvZ28ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxufVxuXG4uc2NobmVpZGVyTmF2IC5zZS1sb2dvIGltZyB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbkBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5zY2huZWlkZXJOYXYgLnNlLWxvZ28gaW1nIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NWVtKSB7XG4gIC5zY2huZWlkZXJOYXYgLnNlLWxvZ28gaW1nIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbn1cblxuLnNjaG5laWRlck5hdiAuc2UtbWVudS10b2dnbGUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDMwcHg7XG59XG5cbi5zY2huZWlkZXJOYXYgLnNlLW1lbnUtdG9nZ2xlOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uc2NobmVpZGVyTmF2IC5zZS1tZW51LXRvZ2dsZSAuc2UtbWVudS1pY29uIHtcbiAgaGVpZ2h0OiAycHg7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMThweDtcbiAgbGVmdDogMDtcbiAgdHJhbnNpdGlvbjogZWFzZS1pbi1vdXQgLjNzIGFsbDtcbiAgb3BhY2l0eTogMTtcbn1cblxuLnNjaG5laWRlck5hdiAuc2UtbWVudS10b2dnbGUgLnNlLW1lbnUtaWNvbi5hY3RpdmUge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpO1xufVxuXG4uc2NobmVpZGVyTmF2IC5zZS1tZW51LXRvZ2dsZSAuc2UtbWVudS1pY29uLmFjdGl2ZTpiZWZvcmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCkgcm90YXRlKDkwZGVnKTtcbn1cblxuLnNjaG5laWRlck5hdiAuc2UtbWVudS10b2dnbGUgLnNlLW1lbnUtaWNvbi5hY3RpdmU6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICBvcGFjaXR5OiAwO1xufVxuXG4uc2NobmVpZGVyTmF2IC5zZS1tZW51LXRvZ2dsZSAuc2UtbWVudS1pY29uOmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBoZWlnaHQ6IDJweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMTBweDtcbiAgbGVmdDogMDtcbiAgdHJhbnNpdGlvbjogZWFzZS1pbi1vdXQgLjNzIHRyYW5zZm9ybTtcbn1cblxuLnNjaG5laWRlck5hdiAuc2UtbWVudS10b2dnbGUgLnNlLW1lbnUtaWNvbjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBoZWlnaHQ6IDJweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAtMTBweDtcbiAgbGVmdDogMDtcbiAgdHJhbnNpdGlvbjogZWFzZS1pbi1vdXQgLjNzIHRyYW5zZm9ybTtcbn1cblxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnNjaG5laWRlck5hdiAuc2UtbWVudS10b2dnbGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjMuOTM3NWVtKSB7XG4gIC5zY2huZWlkZXJOYXYgLnNlLW1lbnUtdG9nZ2xlICsgdWwge1xuICAgIG1heC1oZWlnaHQ6IDBweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwcHg7XG4gICAgcmlnaHQ6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5NTMwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRyYW5zaXRpb246IGVhc2UtaW4tb3V0IC4zcyBtYXgtaGVpZ2h0O1xuICB9XG4gIC5zY2huZWlkZXJOYXYgLnNlLW1lbnUtdG9nZ2xlICsgdWwuYWN0aXZlIHtcbiAgICBtYXgtaGVpZ2h0OiAxMDB2aDtcbiAgfVxufVxuXG5AbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAuc2NobmVpZGVyTmF2IC5zZS1tZW51LXRvZ2dsZSArIHVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbn1cblxuLnNjaG5laWRlck5hdiA+IHVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc1ZW0pIHtcbiAgLnNjaG5laWRlck5hdiA+IHVsIHtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gMjAwcHgpO1xuICB9XG59XG5cbi5zY2huZWlkZXJOYXYgPiB1bCA+IGxpID4gYSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSkge1xuICAuc2NobmVpZGVyTmF2ID4gdWwgPiBsaSA+IGEge1xuICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5zY2huZWlkZXJOYXYgdWwge1xuICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7XG4gIG1hcmdpbjogMHB4O1xufVxuXG5AbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAuc2NobmVpZGVyTmF2IHVsIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzVlbSkge1xuICAuc2NobmVpZGVyTmF2IHVsIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG59XG5cbi5zY2huZWlkZXJOYXYgdWwgbGkge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMTBweDtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnNjaG5laWRlck5hdiB1bCBsaSB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxufVxuXG4uc2NobmVpZGVyTmF2IHVsIGxpIGEge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4uc2NobmVpZGVyTmF2IHVsIGxpIGltZyB7XG4gIHBhZGRpbmctdG9wOiA0cHg7XG59XG5cbi5zY2huZWlkZXJOYXYgdWwgbGk6aG92ZXIgdWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnNjaG5laWRlck5hdiB1bCBsaSB1bCB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2ZmZjtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59XG5cbkBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5zY2huZWlkZXJOYXYgdWwgbGkgdWwge1xuICAgIGJvcmRlcjogMDtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDIycHg7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMjYwcHg7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICB6LWluZGV4OiAxMDAwMDtcbiAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgYm94LXNoYWRvdzogNHB4IDdweCAyOXB4IC0xMXB4IHJnYmEoMCwgMCwgMCwgMC43Nik7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICB9XG59XG5cbi5zY2huZWlkZXJOYXYgdWwgbGkgdWwgbGkge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnNjaG5laWRlck5hdiB1bCBsaSB1bCBsaSB7XG4gICAgbWFyZ2luOiA0cHggMDtcbiAgICBwYWRkaW5nOiAwcHg7XG4gIH1cbn1cblxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnNjaG5laWRlck5hdiB1bCBsaSB1bCBsaSBhIHtcbiAgICBjb2xvcjogIzAwMDtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnNjaG5laWRlck5hdiB1bCBsaSB1bCBsaSBhOmhvdmVyIHtcbiAgICBjb2xvcjogIzQyYjRlNjtcbiAgfVxufVxuXG5AbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAuc2NobmVpZGVyTmF2IHVsIGxpIHVsIGxpIGE6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiID5cIjtcbiAgICBwYWRkaW5nLWxlZnQ6IDNweDtcbiAgfVxufVxuXG4uc2NobmVpZGVyTmF2IHVsIGxpIHVsOmhvdmVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5yb3cge1xuICBtYXgtd2lkdGg6IDEwODBweDtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzVlbSkge1xuICAuc2Utd3JhcCB7XG4gICAgcGFkZGluZzogMCA0NXB4O1xuICB9XG59XG5cbi5zZS13cmFwIC5pZnJhbWUtd3JhcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1ib3R0b206IDU2LjI1JTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnNlLXdyYXAgLmlmcmFtZS13cmFwIGlmcmFtZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLnNlLXdyYXAgcCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi5zZS13cmFwIHVsIHtcbiAgbWFyZ2luLWxlZnQ6IDM1cHg7XG59XG5cbi5zZS13cmFwIGltZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuLnNlLXdyYXAgLnNtYWxsSDMge1xuICBjb2xvcjogIzAwMDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBsaW5lLWhlaWdodDogMjJweDtcbn1cblxuLnNlLXdyYXAgLmNvbHVtbi5wYWRkaW5nLFxuLnNlLXdyYXAgLmNvbHVtbnMucGFkZGluZyB7XG4gIHBhZGRpbmc6IDAgMXJlbTtcbn1cblxuLnNlLXdyYXAgLm1hcmdpbi10b3Age1xuICBtYXJnaW4tdG9wOiAxcmVtO1xufVxuXG4uc2Utd3JhcCAubWFyZ2luLXRvcDIge1xuICBtYXJnaW4tdG9wOiA1cmVtO1xufVxuXG4uc2Utd3JhcCAuY2xlYXIge1xuICBjbGVhcjogYm90aDtcbn1cblxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnNlLXdyYXAgLmNsZWFyIHtcbiAgICBjbGVhcjogbm9uZTtcbiAgfVxufVxuXG4uc2Utd3JhcCBoMS5zbWFsbGVyLFxuLnNlLXdyYXAgaDIuc21hbGxlcixcbi5zZS13cmFwIGgzLnNtYWxsZXIge1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5zZS13cmFwIC5jaGFyZ2luZy10eXBlLXdyYXAgLmNoYXJnaW5nLXR5cGUtbGFiZWxzIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnNlLXdyYXAgLmNoYXJnaW5nLXR5cGUtd3JhcCAuY2hhcmdpbmctdHlwZS1sYWJlbHMge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi5zZS13cmFwIC5jaGFyZ2luZy10eXBlLXdyYXAgLmdyZXlUZXh0OmJlZm9yZSB7XG4gIGNvbG9yOiAjM2RjZDU4O1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnNlLXdyYXAgLmNoYXJnaW5nLXR5cGUtd3JhcCAuZ3JleVRleHQ6YmVmb3JlIHtcbiAgICBjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLnNlLXdyYXAgLmNoYXJnaW5nLXR5cGUtd3JhcCAuZ3JleVRleHQ6bnRoLWNoaWxkKDEpOmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdNYXguIHBvd2VyIChzaW5nbGUtcGhhc2UpICc7XG59XG5cbi5zZS13cmFwIC5jaGFyZ2luZy10eXBlLXdyYXAgLmdyZXlUZXh0Om50aC1jaGlsZCgyKTpiZWZvcmUge1xuICBjb250ZW50OiAnTWF4LiBwb3dlciAodGhyZWUtcGhhc2UpICc7XG59XG5cbi5zZS13cmFwIC5jaGFyZ2luZy10eXBlLXdyYXAgLmdyZXlUZXh0Om50aC1jaGlsZCgzKTpiZWZvcmUge1xuICBjb250ZW50OiAnTWF4LiBjdXJyZW50ICc7XG59XG5cbmhyLmxpZ2h0R3JleSB7XG4gIGJvcmRlcjogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xufVxuXG4ucGFnZVdyYXBwZXIgLnBhZGRpbmcge1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5zZS1pbWFnZXMtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnNlLWltYWdlcy13cmFwIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICB9XG59XG5cbi5zZS1pbWFnZXMtd3JhcCAuc2UtaW1hZ2Uge1xuICBtYXJnaW46IDVweCAwO1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG5AbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAuc2UtaW1hZ2VzLXdyYXAgLnNlLWltYWdlIHtcbiAgICBtYXJnaW46IDAgNXB4O1xuICB9XG59XG5cbi5zZS1pbWFnZXMtd3JhcCAuc2UtaW1hZ2UgLnNlLWltYWdlLWlubmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMjMwcHg7XG59XG5cbi5zZS1pbWFnZXMtd3JhcCAuc2UtaW1hZ2UgLnNlLWltYWdlLWlubmVyIHAge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMTBweDtcbn1cblxuLnNlLWltYWdlcy13cmFwIC5zZS1pbWFnZSAuc2UtaW1hZ2UtaW5uZXIgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuLnNlLWltYWdlcy13cmFwIC5zZS1pbWFnZSAuc2UtaW1hZ2UtaW5uZXIgaW1nIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG4uc3ViRm9ybSBpbnB1dCwgLnN1YkZvcm0gc2VsZWN0LCAuc3ViRm9ybSB0ZXh0YXJlYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnN1YkZvcm0gaW5wdXRbdHlwZT1jaGVja2JveF0sIC5zdWJGb3JtIGlucHV0W3R5cGU9cmFkaW9dIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDAgMCAxLjE0Mjg2cmVtO1xuICBtYXJnaW4tcmlnaHQ6IC41NzE0M3JlbTtcbiAgd2lkdGg6IGF1dG87XG59XG5cbi5zdWJGb3JtIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgbWFyZ2luLXRvcDogNXB4O1xufVxuXG5AbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkge1xuICAuc3ViRm9ybSAuY29sdW1ucyB7XG4gICAgd2lkdGg6IDQ1JTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gUmVtb3ZlcyB0aGUgdW5pdCAoZS5nLiBweCwgZW0sIHJlbSkgZnJvbSBhIHZhbHVlLCByZXR1cm5pbmcgdGhlIG51bWJlciBvbmx5LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW0gLSBOdW1iZXIgdG8gc3RyaXAgdW5pdCBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHNhbWUgbnVtYmVyLCBzYW5zIHVuaXQuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkbnVtKSB7XG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xufVxuXG4vLy8gQ29udmVydHMgb25lIG9yIG1vcmUgcGl4ZWwgdmFsdWVzIGludG8gbWF0Y2hpbmcgcmVtIHZhbHVlcy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR2YWx1ZXMgLSBPbmUgb3IgbW9yZSB2YWx1ZXMgdG8gY29udmVydC4gQmUgc3VyZSB0byBzZXBhcmF0ZSB0aGVtIHdpdGggc3BhY2VzIGFuZCBub3QgY29tbWFzLiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHdyYXAgdGhlIGxpc3QgaW4gcGFyZW50aGVzZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIFRoZSBiYXNlIHZhbHVlIHRvIHVzZSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBgcmVtYC4gSWYgeW91J3JlIHVzaW5nIEZvdW5kYXRpb24gb3V0IG9mIHRoZSBib3gsIHRoaXMgaXMgMTZweC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgYG51bGxgLCB0aGUgZnVuY3Rpb24gd2lsbCByZWZlcmVuY2UgdGhlIGAkYmFzZS1mb250LXNpemVgIHZhcmlhYmxlIGFzIHRoZSBiYXNlLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IEEgbGlzdCBvZiBjb252ZXJ0ZWQgdmFsdWVzLlxuQGZ1bmN0aW9uIHJlbS1jYWxjKCR2YWx1ZXMsICRiYXNlOiBudWxsKSB7XG4gICRyZW0tdmFsdWVzOiAoKTtcbiAgJGNvdW50OiBsZW5ndGgoJHZhbHVlcyk7XG5cbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XG4gIC8vIFRoaXMgaXMgYmVjYXVzZSAxMDAlIGZvbnQgc2l6ZSA9IDE2cHggaW4gbW9zdCBhbGwgYnJvd3NlcnNcbiAgQGlmIHVuaXQoJGJhc2UpID09ICclJyB7XG4gICAgJGJhc2U6ICgkYmFzZSAvIDEwMCUpICogMTZweDtcbiAgfVxuXG4gIC8vIFVzaW5nIHJlbSBhcyBiYXNlIGFsbG93cyBjb3JyZWN0IHNjYWxpbmdcbiAgQGlmIHVuaXQoJGJhc2UpID09ICdyZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmICRjb3VudCA9PSAxIHtcbiAgICBAcmV0dXJuIC16Zi10by1yZW0oJHZhbHVlcywgJGJhc2UpO1xuICB9XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkY291bnQge1xuICAgICRyZW0tdmFsdWVzOiBhcHBlbmQoJHJlbS12YWx1ZXMsIC16Zi10by1yZW0obnRoKCR2YWx1ZXMsICRpKSwgJGJhc2UpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlbS12YWx1ZXM7XG59XG5cbi8vIENvbnZlcnRzIGEgdW5pdGxlc3MsIHBpeGVsLCBvciByZW0gdmFsdWUgdG8gZW0sIGZvciB1c2UgaW4gYnJlYWtwb2ludHMuXG5AZnVuY3Rpb24gLXpmLWJwLXRvLWVtKCR2YWx1ZSkge1xuICAvLyBQaXhlbCBhbmQgdW5pdGxlc3MgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgdG8gcmVtc1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdweCcgb3IgdW5pdGxlc3MoJHZhbHVlKSB7XG4gICAgJHZhbHVlOiByZW0tY2FsYygkdmFsdWUsICRiYXNlOiAxNnB4KTtcbiAgfVxuXG4gIC8vIFRoZW4gdGhlIHZhbHVlIGlzIGNvbnZlcnRlZCB0byBlbXNcbiAgQHJldHVybiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxZW07XG59XG5cbi8vLyBDb252ZXJ0cyBhIHBpeGVsIHZhbHVlIHRvIG1hdGNoaW5nIHJlbSB2YWx1ZS4gKkFueSogdmFsdWUgcGFzc2VkLCByZWdhcmRsZXNzIG9mIHVuaXQsIGlzIGFzc3VtZWQgdG8gYmUgYSBwaXhlbCB2YWx1ZS4gQnkgZGVmYXVsdCwgdGhlIGJhc2UgcGl4ZWwgdmFsdWUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHJlbSB2YWx1ZSBpcyB0YWtlbiBmcm9tIHRoZSBgJGdsb2JhbC1mb250LXNpemVgIHZhcmlhYmxlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFBpeGVsIHZhbHVlIHRvIGNvbnZlcnQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIEJhc2UgZm9yIHBpeGVsIGNvbnZlcnNpb24uXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBBIG51bWJlciBpbiByZW1zLCBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBnaXZlbiB2YWx1ZSBhbmQgdGhlIGJhc2UgcGl4ZWwgdmFsdWUuIHJlbSB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGFzIGlzLlxuQGZ1bmN0aW9uIC16Zi10by1yZW0oJHZhbHVlLCAkYmFzZTogbnVsbCkge1xuICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnbnVtYmVyJyB7XG4gICAgQHdhcm4gaW5zcGVjdCgkdmFsdWUpICsgJyB3YXMgcGFzc2VkIHRvIHJlbS1jYWxjKCksIHdoaWNoIGlzIG5vdCBhIG51bWJlci4nO1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG5cbiAgLy8gVHJhbnNmb3JtIGVtIGludG8gcmVtIGlmIHNvbWVvbmUgaGFuZHMgb3ZlciAnZW0nc1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogMXJlbTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSByZW0gaWYgdW5pdHMgZm9yICR2YWx1ZSBpcyBub3QgcmVtIG9yIGVtXG4gIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ3JlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZSkgKiAxcmVtO1xuICB9XG5cbiAgLy8gVHVybiAwcmVtIGludG8gMFxuICBAaWYgJHZhbHVlID09IDByZW0ge1xuICAgICR2YWx1ZTogMDtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG4vLy8gQ29udmVydHMgYSBwaXhlbCwgcGVyY2VudGFnZSwgcmVtIG9yIGVtIHZhbHVlIHRvIGEgdW5pdGxlc3MgdmFsdWUgYmFzZWQgb24gYSBnaXZlbiBmb250IHNpemUuIElkZWFsIGZvciB3b3JraW5nIG91dCB1bml0bGVzcyBsaW5lIGhlaWdodHMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gY29udmVydCB0byBhIHVuaXRsZXNzIGxpbmUgaGVpZ2h0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIC0gVGhlIGZvbnQgc2l6ZSB0byB1c2UgdG8gd29yayBvdXQgdGhlIGxpbmUgaGVpZ2h0IC0gZGVmYXVsdHMgdG8gJGdsb2JhbC1mb250LXNpemVcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gLSBVbml0bGVzcyBudW1iZXJcbkBmdW5jdGlvbiB1bml0bGVzcy1jYWxjKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcblxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBGaXJzdCwgbGV0cyBjb252ZXJ0IG91ciAkYmFzZSB0byBwaXhlbHNcblxuICAvLyBJZiB0aGUgYmFzZSBmb250IHNpemUgaXMgYSAlLCB0aGVuIG11bHRpcGx5IGl0IGJ5IDE2cHhcbiAgQGlmIHVuaXQoJGJhc2UpID09ICclJyB7XG4gICAgJGJhc2U6ICgkYmFzZSAvIDEwMCUpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgLy8gTm93IGxldHMgY29udmVydCBvdXIgdmFsdWUgdG8gcGl4ZWxzIHRvb1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICclJyB7XG4gICAgJHZhbHVlOiAoJHZhbHVlIC8gMTAwJSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3JlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICAvLyAncHgnXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyB7XG4gICAgQHJldHVybiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlKTtcbiAgfVxuXG4gIC8vIGFzc3VtZSB0aGF0IGxpbmUtaGVpZ2h0cyBncmVhdGVybiB0aGVuIDEwIGFyZSBtZWFudCB0byBiZSBhYnNvbHV0ZSBpbiAncHgnXG4gIEBpZiB1bml0bGVzcygkdmFsdWUpIGFuZCAoJHZhbHVlID4gMTApIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIHN0cmlwLXVuaXQoJGJhc2UpO1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVha3BvaW50c1xuLy8vL1xuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzLlxuLy8vIEB0eXBlIE1hcFxuJGJyZWFrcG9pbnRzOiAoXG4gIHNtYWxsOiAwLFxuICBtZWRpdW06IDY0MHB4LFxuICBsYXJnZTogMTAyNHB4LFxuICB4bGFyZ2U6IDEyMDBweCxcbiAgeHhsYXJnZTogMTQ0MHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIFRoZSBsYXJnZXN0IG5hbWVkIGJyZWFrcG9pbnQgaW4gd2hpY2ggdG8gaW5jbHVkZSBwcmludCBhcyBhIG1lZGlhIHR5cGVcbi8vLyBAdHlwZSBLZXl3b3JkXG4kcHJpbnQtYnJlYWtwb2ludDogbGFyZ2UgIWRlZmF1bHQ7XG5cbiQtemYtemVyby1icmVha3BvaW50OiBzbWFsbCAhZGVmYXVsdDtcblxuJC16Zi1icmVha3BvaW50cy1rZXlzOiBtYXAtdG8tbGlzdCgkYnJlYWtwb2ludHMsICdrZXlzJyk7XG5cbkBpZiBudGgobWFwLXZhbHVlcygkYnJlYWtwb2ludHMpLCAxKSAhPSAwIHtcbiAgQGVycm9yICdZb3VyIHNtYWxsZXN0IGJyZWFrcG9pbnQgKGRlZmluZWQgaW4gJGJyZWFrcG9pbnRzKSBtdXN0IGJlIHNldCB0byBcIjBcIi4nO1xufVxuQGVsc2Uge1xuICAkLXpmLXplcm8tYnJlYWtwb2ludDogbnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksIDEpO1xufVxuXG4vLy8gQWxsIG9mIHRoZSBuYW1lcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBvdXRwdXQgYXMgY2xhc3NlcyBpbiB5b3VyIENTUywgbGlrZSBgLnNtYWxsLTEyYCwgYC5tZWRpdW0tNmAsIGFuZCBzbyBvbi4gRWFjaCB2YWx1ZSBpbiB0aGlzIGxpc3QgbXVzdCBhbHNvIGJlIGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAuXG4vLy8gQHR5cGUgTGlzdFxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSkgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGlucHV0IHZhbHVlLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHNlZSB3aGF0IHRoZSBwb3NzaWJsZSBpbnB1dHMgYXJlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbCBbc21hbGxdIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHZhbDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgLy8gU2l6ZSBvciBrZXl3b3JkXG4gICRicDogbnRoKCR2YWwsIDEpO1xuICAvLyBWYWx1ZSBmb3IgbWF4LXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1heDogMDtcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XG4gIC8vIEV2ZW50dWFsIG91dHB1dFxuICAkc3RyOiAnJztcbiAgLy8gSXMgaXQgYSBuYW1lZCBtZWRpYSBxdWVyeT9cbiAgJG5hbWVkOiBmYWxzZTtcblxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XG4gIH1cbiAgQGVsc2UgaWYgJGJwID09ICdyZXRpbmEnIHtcbiAgICBAcmV0dXJuICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJztcbiAgfVxuXG4gIC8vIFRyeSB0byBwdWxsIGEgbmFtZWQgYnJlYWtwb2ludCBvdXQgb2YgdGhlICRicmVha3BvaW50cyBtYXBcbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XG4gICAgICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xuICAgICAgICAkYnAtbWF4OiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkYnApO1xuICAgICAgfVxuXG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnApO1xuICAgICAgJG5hbWVkOiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkYnA6IDA7XG4gICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBcIiN7JHZhbH1cIiBpcyBub3QgZGVmaW5lZCBpbiB5b3VyICRicmVha3BvaW50cyBzZXR0aW5nLic7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29udmVydCBhbnkgcGl4ZWwsIHJlbSwgb3IgdW5pdGxlc3MgdmFsdWUgdG8gZW1cbiAgJGJwOiAtemYtYnAtdG8tZW0oJGJwKTtcbiAgQGlmICRicC1tYXgge1xuICAgICRicC1tYXg6IC16Zi1icC10by1lbSgkYnAtbWF4KSAtICgxLzE2KTtcbiAgfVxuXG4gIC8vIENvbmRpdGlvbnMgdG8gc2tpcCBtZWRpYSBxdWVyeSBjcmVhdGlvblxuICAvLyAtIEl0J3MgYSBuYW1lZCBicmVha3BvaW50IHRoYXQgcmVzb2x2ZWQgdG8gXCIwIGRvd25cIiBvciBcIjAgdXBcIlxuICAvLyAtIEl0J3MgYSBudW1lcmljIGJyZWFrcG9pbnQgdGhhdCByZXNvbHZlZCB0byBcIjAgXCIgKyBhbnl0aGluZ1xuICBAaWYgJGJwID4gMGVtIG9yICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAvLyBgb25seWAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWluLXdpZHRoOiBuKSBhbmQgKG1heC13aWR0aDogbilgXG4gICAgQGlmICRkaXIgPT0gJ29ubHknIHtcbiAgICAgIC8vIE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBcIm9ubHlcIiByYW5nZVxuICAgICAgQGlmICRuYW1lZCA9PSB0cnVlIHtcbiAgICAgICAgLy8gT25seSB1c2UgXCJtaW4td2lkdGhcIiBpZiB0aGUgZmxvb3IgaXMgZ3JlYXRlciB0aGFuIDBcbiAgICAgICAgQGlmICRicCA+IDBlbSB7XG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWluLXdpZHRoOiAjeyRicH0pJztcblxuICAgICAgICAgIC8vIE9ubHkgYWRkIFwiYW5kXCIgdG8gdGhlIG1lZGlhIHF1ZXJ5IGlmIHRoZXJlJ3MgYSBjZWlsaW5nXG4gICAgICAgICAgQGlmICRicC1tYXggIT0gbnVsbCB7XG4gICAgICAgICAgICAkc3RyOiAkc3RyICsgJyBhbmQgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbmx5IHVzZSBcIm1heC13aWR0aFwiIGlmIHRoZXJlJ3MgYSBjZWlsaW5nXG4gICAgICAgIEBpZiAkYnAtbWF4ICE9IG51bGwge1xuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1heC13aWR0aDogI3skYnAtbWF4fSknO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBgb25seWAgcmFuZ2UuJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBgZG93bmAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWF4LXdpZHRoOiBuKWBcbiAgICBAZWxzZSBpZiAkZGlyID09ICdkb3duJyB7XG4gICAgICAkbWF4OiBpZigkbmFtZWQsICRicC1tYXgsICRicCk7XG5cbiAgICAgIC8vIFNraXAgbWVkaWEgcXVlcnkgY3JlYXRpb24gaWYgaW5wdXQgdmFsdWUgaXMgZXhhY3RseSBcIjAgZG93blwiLFxuICAgICAgLy8gdW5sZXNzIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkIGFzIFwic21hbGwgZG93blwiLCBpbiB3aGljaCBjYXNlIGl0J3MganVzdCBcInNtYWxsIG9ubHlcIlxuICAgICAgQGlmICRuYW1lZCBvciAkYnAgPiAwZW0ge1xuICAgICAgICBAaWYgJG1heCAhPSBudWxsIHtcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtYXgtd2lkdGg6ICN7JG1heH0pJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGB1cGAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWluLXdpZHRoOiBuKWBcbiAgICBAZWxzZSBpZiAkYnAgPiAwZW0ge1xuICAgICAgJHN0cjogJHN0ciArICcobWluLXdpZHRoOiAjeyRicH0pJztcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdHI7XG59XG5cbi8vLyBXcmFwcyBhIG1lZGlhIHF1ZXJ5IGFyb3VuZCB0aGUgY29udGVudCB5b3UgcHV0IGluc2lkZSB0aGUgbWl4aW4uIFRoaXMgbWl4aW4gYWNjZXB0cyBhIG51bWJlciBvZiB2YWx1ZXM6XG4vLy8gIC0gSWYgYSBzdHJpbmcgaXMgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBsb29rIGZvciBpdCBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLCBhbmQgdXNlIGEgbWVkaWEgcXVlcnkgdGhlcmUuXG4vLy8gIC0gSWYgYSBwaXhlbCB2YWx1ZSBpcyBwYXNzZWQsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGVtIHZhbHVlIHVzaW5nIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgYXMgdGhlIGJhc2UuXG4vLy8gIC0gSWYgYSByZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdW5pdCB3aWxsIGJlIGNoYW5nZWQgdG8gZW0uXG4vLy8gIC0gSWYgYW4gZW0gdmFsdWUgaXMgcGFzc2VkLCB0aGUgdmFsdWUgd2lsbCBiZSB1c2VkIGFzLWlzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbHVlIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuLy8vXG4vLy8gQG91dHB1dCBJZiB0aGUgYnJlYWtwb2ludCBpcyBcIjBweCBhbmQgbGFyZ2VyXCIsIG91dHB1dHMgdGhlIGNvbnRlbnQgYXMtaXMuIE90aGVyd2lzZSwgb3V0cHV0cyB0aGUgY29udGVudCB3cmFwcGVkIGluIGEgbWVkaWEgcXVlcnkuXG5AbWl4aW4gYnJlYWtwb2ludCgkdmFsdWUpIHtcbiAgJHN0cjogYnJlYWtwb2ludCgkdmFsdWUpO1xuICAkYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgJHZhbHVlKTtcbiAgJHBicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCAkcHJpbnQtYnJlYWtwb2ludCk7XG5cbiAgLy8gTWFrZSBicmVha3BvaW50IHNpemUgYXZhaWxhYmxlIGFzIGEgdmFyaWFibGVcbiAgJG9sZC16Zi1zaXplOiAkLXpmLXplcm8tYnJlYWtwb2ludDtcbiAgJC16Zi1zaXplOiBudGgoJHZhbHVlLCAxKSAhZ2xvYmFsOyAvLyBnZXQgdGhlIGZpcnN0IHZhbHVlIHRvIGFjY291bnQgZm9yIGBvbmx5YCBhbmQgYGRvd25gIGtleXdvcmRzXG5cbiAgLy8gSWYgJHN0ciBpcyBzdGlsbCBhbiBlbXB0eSBzdHJpbmcsIG5vIG1lZGlhIHF1ZXJ5IGlzIG5lZWRlZFxuICBAaWYgJHN0ciA9PSAnJyB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNvbnRlbnQgaW4gYSBtZWRpYSBxdWVyeVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAkcHJpbnQtYnJlYWtwb2ludCwgYWRkIHByaW50IHRvIHRoZSBtZWRpYSB0eXBlc1xuICAgIEBpZiAkYnAgIT0gbnVsbCBhbmQgJGJwIDw9ICRwYnAge1xuICAgICAgQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHRoZSBvbGQgYnJlYWtwb2ludCBzaXplXG4gICQtemYtc2l6ZTogJG9sZC16Zi1zaXplICFnbG9iYWw7XG59XG5cbi8vLyBDb252ZXJzIHRoZSBicmVha3BvaW50cyBtYXAgdG8gYSBVUkwtZW5jb2RlZCBzdHJpbmcsIGxpa2UgdGhpczogYGtleTE9dmFsdWUxJmtleTI9dmFsdWUyYC4gVGhlIHZhbHVlIGlzIHRoZW4gZHJvcHBlZCBpbnRvIHRoZSBDU1MgZm9yIGEgc3BlY2lhbCBgPG1ldGE+YCB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdC4gVGhpcyBpcyBob3cgd2UgdHJhbnNmZXIgdmFsdWVzIGZyb20gU2FzcyB0byBKYXZhU2NyaXB0LCBzbyB0aGV5IGNhbiBiZSBkZWZpbmVkIGluIG9uZSBwbGFjZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIGNvbnZlcnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBBIHN0cmluZyBjb250YWluaW5nIHRoZSBtYXAncyBjb250ZW50cy5cbkBmdW5jdGlvbiAtemYtYnAtc2VyaWFsaXplKCRtYXApIHtcbiAgJHN0cjogJyc7XG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICAkc3RyOiAkc3RyICsgJGtleSArICc9JyArIC16Zi1icC10by1lbSgkdmFsdWUpICsgJyYnO1xuICB9XG4gICRzdHI6IHN0ci1zbGljZSgkc3RyLCAxLCAtMik7XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBrZXkgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm9yIHRoZSBrZXkgYWZ0ZXIgYCRrZXlgLCBpZiBgJGtleWAgd2FzIGZvdW5kLiBJZiBgJGtleWAgd2FzIG5vdCBmb3VuZCwgb3IgYCRrZXlgIHdhcyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQoJG1hcCwgJGtleSkge1xuXG4gIC8vIFN0b3JlIHRoZSBrZXlzIG9mIHRoZSBtYXAgYXMgYSBsaXN0XG4gICR2YWx1ZXM6IG1hcC1rZXlzKCRtYXApO1xuXG4gICRpOiAwO1xuXG4gIC8vIElmIHRoZSBLZXkgRXhpc3RzLCBHZXQgdGhlIGluZGV4IG9mIHRoZSBrZXkgd2l0aGluIHRoZSBtYXAgYW5kIGFkZCAxIHRvIGl0IGZvciB0aGUgbmV4dCBicmVha3BvaW50IGluIHRoZSBtYXBcbiAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICRpOiBpbmRleCgkdmFsdWVzLCAka2V5KSArIDE7XG4gIH1cblxuICAvLyBJZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QsIG9yIGl0J3MgdGhlIGxhc3Qga2V5IGluIHRoZSBtYXAsIHJldHVybiBudWxsXG4gIEBpZiAoJGkgPiBsZW5ndGgoJG1hcCkgb3IgJGkgPT0gMCkge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgdmFsdWVcbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCBudGgoJHZhbHVlcywgJGkpKTtcbiAgfVxuXG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcbiAgJGxpc3Q6ICgpO1xuICAkZm91bmRfa2V5OiBmYWxzZTtcblxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xuICAgIEBpZiAoJG5hbWUgPT0gJGtleSkge1xuICAgICAgJGZvdW5kX2tleTogdHJ1ZTtcbiAgICB9XG4gICAgQGlmIG5vdCAkZm91bmRfa2V5IHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbmcgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW5nLlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgJGxhc3Q6ICQtemYtemVyby1icmVha3BvaW50O1xuICAkZm91bmQ6IGZhbHNlO1xuXG4gICR2YWx1ZTogdW5pdGxlc3MtY2FsYygkYnJlYWtwb2ludCwgMXB4KTtcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgIEBpZiB1bml0bGVzcy1jYWxjKCR2YWwpID4gJHZhbHVlIHtcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRsYXN0OiAka2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxhc3Q7XG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgc21hbGwpIHtcbiAgJHNtYWxsLXVwOiBzY3JlZW47XG4gICRzbWFsbC1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChzbWFsbCBvbmx5KX0nKTtcbn1cblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbWVkaXVtKSB7XG4gICRtZWRpdW0tdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSl9Jyk7XG4gICRtZWRpdW0tb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtIG9ubHkpfScpO1xufVxuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBsYXJnZSkge1xuICAkbGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KGxhcmdlKX0nKTtcbiAgJGxhcmdlLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KGxhcmdlIG9ubHkpfScpO1xufVxuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4bGFyZ2UpIHtcbiAgJHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlKX0nKTtcbiAgJHhsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9Jyk7XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHh4bGFyZ2UpIHtcbiAgJHh4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHh4bGFyZ2UpfScpO1xufVxuIl19 */
