@font-face {
  font-family: 'Vinque';
  src: url("../../fonts/vinque.woff2") format('woff2');
}
* {
  margin: 0;
  padding: 0;
  font: inherit;
  box-sizing: border-box;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: rgba(0,0,0,0);
  -webkit-focus-ring-color: rgba(255,255,255,0);
  cursor: default;
}
body {
  font-size: 100%;
  line-height: 1;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
}
a {
  background: transparent;
}
*:focus,
*:active,
*:hover {
  outline: none;
}
hr {
  box-sizing: content-box;
  height: 0;
}
ol,
ul {
  list-style: none;
}
pre {
  tab-size: 4;
  white-space: pre-wrap;
}
q {
  quotes: '\201C' '\201D' '\2018' '\2019';
}
img {
  border: none;
}
svg:not(:root) {
  overflow: hidden;
}
button,
input {
  line-height: normal;
}
button,
select {
  text-transform: none;
}
button {
  overflow: visible;
}
button,
html input[type='button'],
input[type='reset'],
input[type='submit'] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
input[type='checkbox'],
input[type='radio'] {
  box-sizing: border-box;
}
input[type='number']::-webkit-inner-spin-button,
input[type='number']::-webkit-outer-spin-button {
  height: auto;
}
input[type='search'] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type='search']::-webkit-search-cancel-button,
input[type='search']::-webkit-search-decoration {
  -webkit-appearance: none;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: none;
  padding: 0;
}
textarea {
  overflow: auto;
  vertical-align: top;
}
button,
input,
select[multiple],
textarea {
  background-image: none;
}
input,
select,
textarea {
  border-radius: 0;
  box-shadow: none;
}
input,
textarea {
  resize: none;
  -webkit-user-select: text;
      -ms-user-select: text;
          user-select: text;
}
[placeholder]:focus:-ms-input-placeholder {
  color: transparent;
}
[placeholder]:focus::placeholder {
  color: transparent;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
.promo {
  background: url("/images/promo-bg.jpg") no-repeat top center;
  background-size: cover;
  position: relative;
  padding: 7.8125vw 2.604166666666667vw 3.90625vw;
  font-family: 'Vinque', sans-serif;
  height: 100vh;
}
@media only screen and (max-width: 768px) {
  .promo {
    background-image: url("/images/promo-bg-mobile.jpg");
    padding: 101.44927536231884vw 0vw 3.623188405797102vw;
    height: auto;
    min-height: 100vh;
  }
}
.promo__wrap {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: column;
      flex-flow: column;
  -ms-flex-pack: justify;
      justify-content: space-between;
  -ms-flex-align: center;
      align-items: center;
  width: 50%;
  height: 100%;
}
@media only screen and (max-width: 768px) {
  .promo__wrap {
    width: 100%;
    height: 50%;
    padding-bottom: 6.038647342995169vw;
  }
}
.promo__content {
  text-align: center;
}
.promo__title {
  font-size: 4.479166666666667vw;
  line-height: 3.75vw;
  color: #ff2929;
  margin: 0;
}
@media only screen and (max-width: 768px) {
  .promo__title {
    font-size: 8.695652173913043vw;
    line-height: 9.178743961352657vw;
  }
}
.promo__text {
  font-size: 1.25vw;
  line-height: 1.5625vw;
  color: #ffd8ab;
  padding: 2.604166666666667vw 4.166666666666667vw 2.604166666666667vw;
}
@media only screen and (max-width: 768px) {
  .promo__text {
    font-size: 3.140096618357488vw;
    line-height: 3.864734299516908vw;
    padding: 3.623188405797102vw 3.864734299516908vw 3.623188405797102vw;
    text-align: center;
  }
}
.promo__info {
  font-size: 1.666666666666667vw;
  line-height: 1.5625vw;
  color: #ffd8ab;
}
@media only screen and (max-width: 768px) {
  .promo__info {
    font-size: 3.140096618357488vw;
    line-height: 3.864734299516908vw;
    padding-bottom: 2.415458937198068vw;
  }
}
.promo__img {
  position: absolute;
  left: 1.40625vw;
  bottom: 1.09375vw;
  width: 3.645833333333333vw;
  height: 3.645833333333333vw;
}
@media only screen and (max-width: 768px) {
  .promo__img {
    width: 11.594202898550725vw;
    height: 12.560386473429952vw;
    left: 1.932367149758454vw;
    bottom: 1.932367149758454vw;
  }
}
.promo__img img {
  width: 100%;
}
.promo__arrow {
  position: absolute;
  left: 50%;
  bottom: 3.90625vw;
  color: #cf2920;
  transform: translateX(-50%);
  width: 1.354166666666667vw;
  cursor: pointer;
  transition: opacity 0.3;
}
@media only screen and (max-width: 768px) {
  .promo__arrow {
    bottom: 7.246376811594203vw;
    width: 4.830917874396135vw;
  }
}
.promo__arrow img {
  width: 100%;
}
.promo__arrow:hover {
  opacity: 0.7;
}
.promo__sharing {
  margin-top: 0.78125vw;
}
@media only screen and (max-width: 736px) {
  .promo__sharing {
    margin-top: 1.207729468599034vw;
    margin-left: 60.38647342995169vw;
  }
}
.result {
  background: url("/images/result-bg.jpg") no-repeat center;
  background-size: cover;
  position: relative;
  padding: 3.385416666666667vw 0.78125vw 0.78125vw;
  height: 100vh;
  font-family: 'Vinque', sans-serif;
}
@media only screen and (max-width: 768px) {
  .result {
    background-image: url("/images/result-bg-mobile.jpg");
    padding: 14.492753623188406vw 7.246376811594203vw 24.154589371980677vw;
    height: auto;
    min-height: 100vh;
  }
}
.result__title {
  text-align: center;
  font-size: 2.291666666666667vw;
  line-height: 2.916666666666667vw;
  text-transform: uppercase;
  color: #fff2e2;
}
@media only screen and (max-width: 768px) {
  .result__title {
    line-height: 8.695652173913043vw;
    font-size: 7.246376811594203vw;
  }
}
.result__output {
  padding-top: 7.291666666666667vw;
  margin: 0 auto;
  width: 55%;
  text-align: center;
}
@media only screen and (max-width: 768px) {
  .result__output {
    padding-top: 21.73913043478261vw;
    width: 73.67149758454106vw;
  }
}
.result__answer {
  font-size: 2.604166666666667vw;
  line-height: 1;
  width: 100%;
  color: #ff2929;
}
@media only screen and (max-width: 768px) {
  .result__answer {
    font-size: 5.797101449275362vw;
    line-height: 6.521739130434782vw;
  }
}
.result__text {
  padding: 2.604166666666667vw 3.125vw 0vw;
  font-size: 1.302083333333333vw;
  line-height: 1.5625vw;
  color: #550001;
}
@media only screen and (max-width: 768px) {
  .result__text {
    padding: 4.830917874396135vw 0vw 0vw;
    font-size: 4.347826086956522vw;
    line-height: 5.072463768115942vw;
  }
}
.result__text span {
  color: #ff2929;
}
.result__img {
  position: absolute;
  left: 1.40625vw;
  bottom: 1.09375vw;
  width: 3.645833333333333vw;
  height: 3.645833333333333vw;
}
@media only screen and (max-width: 768px) {
  .result__img {
    width: 0vw;
    height: 0vw;
  }
}
.result__img img {
  width: 100%;
}
.result__sharing {
  margin-top: 2.604166666666667vw;
}
@media only screen and (max-width: 768px) {
  .result__sharing {
    margin-top: 3.623188405797102vw;
  }
}
.result__actions {
  text-align: center;
  margin-top: 1.041666666666667vw;
}
@media only screen and (max-width: 768px) {
  .result__actions {
    margin-top: 2.415458937198068vw;
  }
}
.result__btn {
  font-size: 1.25vw;
  background-color: #cf2920;
  color: #fff;
  border-radius: 1.041666666666667vw;
  padding: 0.364583333333333vw 0.520833333333333vw 0.520833333333333vw;
  border: 0;
  text-transform: lowercase;
  text-decoration: none;
  transition: color 0.3s, background-color 0.3s;
}
.result__btn:hover {
  background-color: #fff;
  color: #cf2920;
}
@media only screen and (max-width: 768px) {
  .result__btn {
    font-size: 3.864734299516908vw;
    border-radius: 4.830917874396135vw;
    padding: 1.690821256038647vw 2.415458937198068vw 2.415458937198068vw;
  }
}
.sharing__title {
  margin-bottom: 0.78125vw;
  font-family: 'Vinque', sans-serif;
  font-style: normal;
  font-weight: normal;
  font-size: 1.5625vw;
  line-height: 1.25vw;
  text-align: center;
  color: #cf2920;
}
@media only screen and (max-width: 768px) {
  .sharing__title {
    font-size: 4.830917874396135vw;
    line-height: 5.797101449275362vw;
  }
}
.sharing__list {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: row nowrap;
      flex-flow: row nowrap;
  -ms-flex-pack: center;
      justify-content: center;
  -ms-flex-align: center;
      align-items: center;
}
.sharing__item {
  display: inline-block;
  margin-right: 0.520833333333333vw;
  position: relative;
  width: 2.604166666666667vw;
  height: 2.604166666666667vw;
  background: #cf2920;
  border-radius: 50%;
  transition: opacity 0.3s;
}
@media only screen and (max-width: 768px) {
  .sharing__item {
    width: 6.038647342995169vw;
    height: 6.038647342995169vw;
  }
}
.sharing__item:hover {
  opacity: 0.7;
}
.sharing__item:last-child {
  margin-right: 0;
}
.sharing__link {
  display: inline-block;
  height: 100%;
  width: 100%;
  border-radius: 50%;
}
.sharing__icon {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
.sharing__icon_fb {
  width: 0.520833333333333vw;
}
@media only screen and (max-width: 768px) {
  .sharing__icon_fb {
    width: 1.207729468599034vw;
  }
}
.sharing__icon_vk {
  width: 0.677083333333333vw;
}
@media only screen and (max-width: 768px) {
  .sharing__icon_vk {
    width: 1.449275362318841vw;
  }
}
.sharing__icon_tw {
  width: 0.885416666666667vw;
}
@media only screen and (max-width: 768px) {
  .sharing__icon_tw {
    width: 1.932367149758454vw;
  }
}
.sharing__icon_od {
  width: 0.572916666666667vw;
}
@media only screen and (max-width: 768px) {
  .sharing__icon_od {
    width: 1.449275362318841vw;
  }
}
.test {
  position: relative;
  background: url("/images/test-bg1.jpg") no-repeat center;
  background-size: cover;
  padding: 4.427083333333333vw 21.875vw 6.510416666666667vw 24.739583333333332vw;
  width: 100%;
  height: 100vh;
}
@media only screen and (max-width: 768px) {
  .test {
    padding: 0vw 4.830917874396135vw 0vw;
    background-image: url("/images/test-bg1-mobile.jpg") 0 0/100% no-repeat;
    width: 100%;
    background-size: cover;
    height: auto;
    min-height: 100vh;
  }
}
.test__img {
  position: absolute;
  left: 1.40625vw;
  bottom: 1.09375vw;
  width: 3.645833333333333vw;
  height: 3.645833333333333vw;
}
@media only screen and (max-width: 768px) {
  .test__img {
    width: 11.594202898550725vw;
    height: 12.560386473429952vw;
    left: 1.932367149758454vw;
    bottom: 1.932367149758454vw;
  }
}
.test__img img {
  width: 100%;
}
.test__wrap {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: column;
      flex-flow: column;
  -ms-flex-align: stretch;
      align-items: stretch;
  -ms-flex-pack: justify;
      justify-content: space-between;
}
@media only screen and (max-width: 768px) {
  .test__wrap {
    -ms-flex-pack: start;
        justify-content: flex-start;
    padding: 7.246376811594203vw 0vw 14.492753623188406vw;
  }
}
.test__head {
  position: relative;
  margin-bottom: 2.083333333333333vw;
}
.test__counter {
  margin: 0 auto;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: row nowrap;
      flex-flow: row nowrap;
  -ms-flex-pack: center;
      justify-content: center;
  -ms-flex-align: center;
      align-items: center;
  margin-bottom: 2.604166666666667vw;
}
@media only screen and (max-width: 768px) {
  .test__counter {
    margin-bottom: 9.66183574879227vw;
  }
}
.test__counter-text {
  position: relative;
  font-family: 'Vinque', sans-serif;
  font-style: normal;
  font-weight: normal;
  font-size: 2.8125vw;
  line-height: 2.916666666666667vw;
  text-align: center;
  color: #cf2920;
}
@media only screen and (max-width: 768px) {
  .test__counter-text {
    font-size: 4.830917874396135vw;
    line-height: 5.797101449275362vw;
  }
}
.test__title {
  font-family: 'Vinque', sans-serif;
  font-style: normal;
  font-weight: normal;
  font-size: 4.479166666666667vw;
  line-height: 3.75vw;
  text-align: center;
  color: #ff2929;
}
@media only screen and (max-width: 768px) {
  .test__title {
    font-size: 6.280193236714976vw;
    line-height: 9.66183574879227vw;
  }
}
.test__item {
  position: relative;
  padding: 0.625vw 0.260416666666667vw 0.625vw 5.729166666666667vw;
  margin-bottom: 1.302083333333333vw;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: row nowrap;
      flex-flow: row nowrap;
  -ms-flex-pack: start;
      justify-content: flex-start;
  -ms-flex-align: center;
      align-items: center;
  cursor: pointer;
}
.test__item:hover .test__sign {
  background-image: url("/images/heart.png");
  top: 30%;
  width: 6.510416666666667vw;
  height: 5.729166666666667vw;
}
@media only screen and (max-width: 768px) {
  .test__item:hover .test__sign {
    width: 12.077294685990339vw;
    height: 12.077294685990339vw;
  }
}
.test__item:last-child {
  margin-bottom: 0;
}
.test__sign {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 3.645833333333333vw;
  height: 3.645833333333333vw;
  background: url("/images/ellipse.png") no-repeat center;
  background-size: 100%;
  margin-right: 1.822916666666667vw;
  -ms-flex-negative: 0;
      flex-shrink: 0;
}
@media only screen and (max-width: 768px) {
  .test__sign {
    width: 7.246376811594203vw;
    height: 7.246376811594203vw;
  }
}
.test__sign-text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-family: 'Vinque', sans-serif;
  font-size: 1.354166666666667vw;
  color: #fff;
}
@media only screen and (max-width: 768px) {
  .test__sign-text {
    font-size: 4.830917874396135vw;
  }
}
.test__answer {
  padding: 0.260416666666667vw 1.5625vw;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: row nowrap;
      flex-flow: row nowrap;
  -ms-flex-pack: start;
      justify-content: flex-start;
  -ms-flex-align: center;
      align-items: center;
  width: 100%;
}
@media only screen and (max-width: 768px) {
  .test__answer {
    padding: 3.623188405797102vw 4.830917874396135vw;
    border-radius: 7.246376811594203vw;
  }
}
.test__answer-text {
  font-family: 'Vinque', sans-serif;
  font-style: normal;
  font-weight: normal;
  font-size: 1.5625vw;
  line-height: 1.875vw;
  letter-spacing: 0.05em;
  color: #ffd8ab;
}
@media only screen and (max-width: 768px) {
  .test__answer-text {
    font-size: 3.381642512077295vw;
    line-height: 5.314009661835748vw;
  }
}
body #result {
  display: none;
}
body.show-test .test {
  display: block;
}
body.show-result #result {
  display: block;
}
.cache {
  display: none;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhlbHBlcnMvZm9udHMuc3R5bCIsImhlbHBlcnMvb3B0aW1pemUuc3R5bCIsIi4uL2Jsb2Nrcy9wcm9tby9wcm9tby5zdHlsIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3J1cHR1cmUvcnVwdHVyZS9pbmRleC5zdHlsIiwiLi4vYmxvY2tzL3Jlc3VsdC9yZXN1bHQuc3R5bCIsIi4uL2Jsb2Nrcy9zaGFyaW5nL3NoYXJpbmcuc3R5bCIsIi4uL2Jsb2Nrcy90ZXN0L3Rlc3Quc3R5bCIsImFwcC5zdHlsIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Msc0JBQUE7RUFDQSxxREFBQTs7QUNHRDtFQUNDLFVBQUE7RUFDQSxXQUFBO0VBQ0EsY0FBQTtFQUNBLHVCQUFBOztBQU1EOzs7Ozs7Ozs7Ozs7RUFZQyxlQUFBOztBQUlEOzs7O0VBSUMsc0JBQUE7RUFDQSx5QkFBQTs7QUFJRDtFQUNDLGNBQUE7RUFDQSxVQUFBOztBQUlEOztFQUVDLGNBQUE7O0FBU0Q7RUFDQyx3QkFBQTtFQUNBLDJCQUFBO0VBQ0EsK0JBQUE7RUFDQSwyQ0FBQTtFQUNBLDhDQUFBO0VBQ0EsZ0JBQUE7O0FBR0Q7RUFDQyxnQkFBQTtFQUNBLGVBQUE7RUFDQSxtQ0FBQTtFQUNBLG9DQUFBOztBQU1EO0VBQ0Msd0JBQUE7O0FBR0Q7OztFQUNDLGNBQUE7O0FBTUQ7RUFDQyx3QkFBQTtFQUNBLFVBQUE7O0FBR0Q7O0VBRUMsaUJBQUE7O0FBR0Q7RUFDQyxZQUFBO0VBQ0Esc0JBQUE7O0FBR0Q7RUFDQyx3Q0FBQTs7QUFNRDtFQUNDLGFBQUE7O0FBR0Q7RUFDQyxpQkFBQTs7QUFNRDs7RUFFQyxvQkFBQTs7QUFNRDs7RUFFQyxxQkFBQTs7QUFHRDtFQUNDLGtCQUFBOztBQUtEOzs7O0VBSUMsMkJBQUE7RUFDQSxnQkFBQTs7QUFHRDs7RUFFQyxnQkFBQTs7QUFHRDs7RUFFQyx1QkFBQTs7QUFLRDs7RUFFQyxhQUFBOztBQUlEO0VBQ0MsOEJBQUE7RUFDQSx3QkFBQTs7QUFHRDs7RUFF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QUFBLHNCQUFBO0VBQ0EscUJBQUE7TUFBQSw0QkFBQTtFQUNBLHVCQUFBO01BQUEsb0JBQUE7RUFDQSxnQkFBQTs7QUFFSTtFQUNJLDJDQUFBO0VBQ0EsU0FBQTtFQUNBLDJCQUFBO0VBQ0EsNEJBQUE7O0FIbURMO0VBQUE7SUdoRFMsNEJBQUE7SUFDQSw2QkFBQTs7O0FBR1o7RUFDSSxpQkFBQTs7QUFFUjtFQUNJLG1CQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSw0QkFBQTtFQUNBLDJCQUFBO0VBQ0EsNEJBQUE7RUFDQSx3REFBQTtFQUNBLHNCQUFBO0VBQ0Esa0NBQUE7RUFDQSxxQkFBQTtNQUFBLGVBQUE7O0FIK0JHO0VBQUE7SUc3QkMsMkJBQUE7SUFDQSw0QkFBQTs7O0FBRVI7RUFDSSxtQkFBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0VBQ0EsaUNBQUE7RUFDQSxrQ0FBQTtFQUNBLCtCQUFBO0VBQ0EsWUFBQTs7QUhtQkc7RUFBQTtJR2pCQywrQkFBQTs7O0FBRVI7RUFDSSxzQ0FBQTtFQUNBLHFCQUFBO0VBQUEsY0FBQTtFQUNBLDBCQUFBO01BQUEsc0JBQUE7RUFDQSxxQkFBQTtNQUFBLDRCQUFBO0VBQ0EsdUJBQUE7TUFBQSxvQkFBQTtFQUNBLFlBQUE7O0FIU0c7RUFBQTtJR1BDLGlEQUFBO0lBQ0EsbUNBQUE7OztBQUVSO0VBQ0ksa0NBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RUFDQSxxQkFBQTtFQUNBLHVCQUFBO0VBQ0EsZUFBQTs7QUhIRztFQUFBO0lHS0MsK0JBQUE7SUFDQSxpQ0FBQTs7O0FDM0lSO0VBQ0ksY0FBQTs7QUFFSjtFQUNJLGVBQUE7O0FBRUo7RUFDSSxlQUFBOztBQUVSO0VBQ0ksY0FBQSIsImZpbGUiOiJhcHAubWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBmb250LWZhY2Vcblx0Zm9udC1mYW1pbHkgJ1ZpbnF1ZSdcblx0c3JjIHVybCgnLi4vLi4vZm9udHMvdmlucXVlLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpIiwiXG4vLyBSZXNldFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmVzZXQgZGVmYXVsdCBzdHlsZXMuXG4qIC8vIEBzdHlsaW50IGlnbm9yZVxuXHRtYXJnaW4gMFxuXHRwYWRkaW5nIDBcblx0Zm9udCBpbmhlcml0XG5cdGJveC1zaXppbmcgYm9yZGVyLWJveFxuXG4vLyBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuXG5hcnRpY2xlXG5hc2lkZVxuZGV0YWlsc1xuZmlnY2FwdGlvblxuZmlndXJlXG5mb290ZXJcbmhlYWRlclxuaGdyb3VwXG5tYWluXG5uYXZcbnNlY3Rpb25cbnN1bW1hcnlcblx0ZGlzcGxheSBibG9ja1xuXG4vLyAxLiBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LlxuLy8gMi4gTm9ybWFsaXplIHZlcnRpY2FsIGFsaWdubWVudCBvZiBgcHJvZ3Jlc3NgIGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuYXVkaW9cbmNhbnZhc1xucHJvZ3Jlc3NcbnZpZGVvXG5cdGRpc3BsYXkgaW5saW5lLWJsb2NrICAgIC8vIDFcblx0dmVydGljYWwtYWxpZ24gYmFzZWxpbmUgLy8gMlxuXG4vLyBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuLy8gUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbmF1ZGlvOm5vdChbY29udHJvbHNdKVxuXHRkaXNwbGF5IG5vbmVcblx0aGVpZ2h0IDBcblxuLy8gQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LlxuLy8gSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFLCBTYWZhcmksIGFuZCBGaXJlZm94IDwgMjIuXG5baGlkZGVuXVxudGVtcGxhdGVcblx0ZGlzcGxheSBub25lXG5cbi8vIEJhc2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIDEuIFNldCBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuXG4vLyAyLiBQcmV2ZW50IGlPUyB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZSwgd2l0aG91dCBkaXNhYmxpbmcgdXNlciB6b29tLlxuLy8gMy4gUmVtb3ZlIGhpZ2hsaXRlIG9uIG1vYmlsZSBkZXZpY2VzLlxuLy8gNC4gU2V0IGRlZmF1bHQgY3Vyc29yLlxuaHRtbFxuXHRmb250LWZhbWlseSBzYW5zLXNlcmlmICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxXG5cdC1tcy10ZXh0LXNpemUtYWRqdXN0IDEwMCUgICAgICAgICAgICAgICAgICAgICAgIC8vIDJcblx0LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0IDEwMCUgICAgICAgICAgICAgICAgICAgLy8gMlxuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IgcmdiYSgwLCAwLCAwLCAwKSAgICAvLyAzXG5cdC13ZWJraXQtZm9jdXMtcmluZy1jb2xvciByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIC8vIDNcblx0Y3Vyc29yIGRlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNFxuXG4vLyBTZXQgMTAwJSBsaW5lLWhlaWdodFxuYm9keVxuXHRmb250LXNpemUgMTAwJVxuXHRsaW5lLWhlaWdodCAxXG5cdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nIGdyYXlzY2FsZVxuXHQtd2Via2l0LWZvbnQtc21vb3RoaW5nIGFudGlhbGlhc2VkXG5cbi8vIExpbmtzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBjb2xvciBmcm9tIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbmFcblx0YmFja2dyb3VuZCB0cmFuc3BhcmVudFxuXG4vLyBJbXByb3ZlIHJlYWRhYmlsaXR5IHdoZW4gZm9jdXNlZCBhbmQgYWxzbyBtb3VzZSBob3ZlcmVkIGluIGFsbCBicm93c2Vycy5cbio6Zm9jdXMsICo6YWN0aXZlLCAqOmhvdmVyIC8vIEBzdHlsaW50IGlnbm9yZVxuXHRvdXRsaW5lIG5vbmVcblxuLy8gVHlwb2dyYXBoeVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxuaHJcblx0Ym94LXNpemluZyBjb250ZW50LWJveFxuXHRoZWlnaHQgMFxuXG4vLyBSZW1vdmUgZGVmYXVsdCBzdHlsZVxub2xcbnVsXG5cdGxpc3Qtc3R5bGUgbm9uZVxuXG4vLyBJbXByb3ZlIHJlYWRhYmlsaXR5IG9mIHByZS1mb3JtYXR0ZWQgdGV4dCBpbiBhbGwgYnJvd3NlcnMuXG5wcmVcblx0dGFiLXNpemUgNFxuXHR3aGl0ZS1zcGFjZSBwcmUtd3JhcFxuXG4vLyBTZXQgY29uc2lzdGVudCBxdW90ZSB0eXBlcy5cbnFcblx0cXVvdGVzICdcXDIwMUMnICdcXDIwMUQnICdcXDIwMTgnICdcXDIwMTknXG5cbi8vIEVtYmVkZGVkIGNvbnRlbnRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxuaW1nXG5cdGJvcmRlciBub25lXG5cbi8vIENvcnJlY3Qgb3ZlcmZsb3cgZGlzcGxheWVkIG9kZGx5IGluIElFIDkuXG5zdmc6bm90KDpyb290KVxuXHRvdmVyZmxvdyBoaWRkZW5cblxuLy8gRm9ybXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEFkZHJlc3MgRmlyZWZveCA0KyBzZXR0aW5nIGBsaW5lLWhlaWdodGAgb24gYGlucHV0YCB1c2luZyBgIWltcG9ydGFudGAgaW4gdGhlIFVBIHN0eWxlc2hlZXQuXG5idXR0b25cbmlucHV0XG5cdGxpbmUtaGVpZ2h0IG5vcm1hbFxuXG4vLyBBZGRyZXNzIGluY29uc2lzdGVudCBgdGV4dC10cmFuc2Zvcm1gIGluaGVyaXRhbmNlIGZvciBgYnV0dG9uYCBhbmQgYHNlbGVjdGAuXG4vLyBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLlxuLy8gQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBDaHJvbWUsIFNhZmFyaSA1KywgYW5kIElFIDgrLlxuLy8gQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94IDQrIGFuZCBPcGVyYS5cbmJ1dHRvblxuc2VsZWN0XG5cdHRleHQtdHJhbnNmb3JtIG5vbmVcblxuLy8gQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAuXG5idXR0b25cblx0b3ZlcmZsb3cgdmlzaWJsZVxuXG4vLyAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYCBhbmQgYHZpZGVvYCBjb250cm9scy5cbi8vIDIuIENvcnJlY3QgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cbi8vIDMuIEltcHJvdmUgdXNhYmlsaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiBjdXJzb3Igc3R5bGUgYmV0d2VlbiBpbWFnZS10eXBlIGBpbnB1dGAgYW5kIG90aGVycy5cbmJ1dHRvblxuaHRtbCBpbnB1dFt0eXBlPSdidXR0b24nXSAgIC8vIDFcbmlucHV0W3R5cGU9J3Jlc2V0J11cbmlucHV0W3R5cGU9J3N1Ym1pdCddXG5cdC13ZWJraXQtYXBwZWFyYW5jZSBidXR0b24gLy8gMlxuXHRjdXJzb3IgcG9pbnRlciAgICAgICAgICAgIC8vIDNcblxuLy8gUmUtc2V0IGRlZmF1bHQgY3Vyc29yIGZvciBkaXNhYmxlZCBlbGVtZW50cy5cbmJ1dHRvbltkaXNhYmxlZF1cbmh0bWwgaW5wdXRbZGlzYWJsZWRdXG5cdGN1cnNvciBkZWZhdWx0XG5cbi8vIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkuXG5pbnB1dFt0eXBlPSdjaGVja2JveCddXG5pbnB1dFt0eXBlPSdyYWRpbyddXG5cdGJveC1zaXppbmcgYm9yZGVyLWJveFxuXG4vLyBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxuLy8gYGZvbnQtc2l6ZWAgdmFsdWVzIG9mIHRoZSBgaW5wdXRgLCBpdCBjYXVzZXMgdGhlIGN1cnNvciBzdHlsZSBvZiB0aGVcbi8vIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cbmlucHV0W3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uXG5pbnB1dFt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvblxuXHRoZWlnaHQgYXV0b1xuXG4vLyAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lLlxuLy8gMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lIChpbmNsdWRlIGAtbW96YCB0byBmdXR1cmUtcHJvb2YpLlxuaW5wdXRbdHlwZT0nc2VhcmNoJ11cblx0LXdlYmtpdC1hcHBlYXJhbmNlIHRleHRmaWVsZCAvLyAxXG5cdGJveC1zaXppbmcgY29udGVudC1ib3hcblxuLy8gUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSA1IGFuZCBDaHJvbWUgb24gT1MgWC5cbmlucHV0W3R5cGU9J3NlYXJjaCddOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uXG5pbnB1dFt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvblxuXHQtd2Via2l0LWFwcGVhcmFuY2Ugbm9uZVxuXG4vLyBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXJcbmlucHV0OjotbW96LWZvY3VzLWlubmVyXG5cdGJvcmRlciBub25lXG5cdHBhZGRpbmcgMFxuXG4vLyAxLiBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LlxuLy8gMi4gSW1wcm92ZSByZWFkYWJpbGl0eSBhbmQgYWxpZ25tZW50IGluIGFsbCBicm93c2Vycy5cbnRleHRhcmVhXG5cdG92ZXJmbG93IGF1dG8gICAgICAvLyAxXG5cdHZlcnRpY2FsLWFsaWduIHRvcCAvLyAyXG5cbi8vIFJlc2V0IHVudXN1YWwgRmlyZWZveC1vbi1BbmRyb2lkIGRlZmF1bHQgc3R5bGUuXG5idXR0b25cbmlucHV0XG5zZWxlY3RbbXVsdGlwbGVdXG50ZXh0YXJlYVxuXHRiYWNrZ3JvdW5kLWltYWdlIG5vbmVcblxuLy8gMS4gUmVtb3ZlIGBib3JkZXItcmFkaXVzYCBpbiBpT1MuXG4vLyAyLiBSZW1vdmUgYGJveC1zaGFkb3dgIGluIGlPUy5cbmlucHV0XG5zZWxlY3RcbnRleHRhcmVhXG5cdGJvcmRlci1yYWRpdXMgMCAvLyAxXG5cdGJveC1zaGFkb3cgbm9uZSAvLyAyXG5cbi8vIDEuIERpc2FibGUgcmVzaXplLlxuLy8gMi4gQWxsb3cgdXNlciBzZWxlY3QuXG5pbnB1dFxudGV4dGFyZWFcblx0cmVzaXplIG5vbmUgICAgICAvLyAxXG5cdHVzZXItc2VsZWN0IHRleHQgLy8gMlxuXG4vLyBIaWRlIHBsYWNlaG9sZGVyIG9uIGZvY3VzLlxuW3BsYWNlaG9sZGVyXTpmb2N1czo6cGxhY2Vob2xkZXJcblx0Y29sb3IgdHJhbnNwYXJlbnRcblxuLy8gVGFibGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuXG50YWJsZVxuXHRib3JkZXItY29sbGFwc2UgY29sbGFwc2Vcblx0Ym9yZGVyLXNwYWNpbmcgMFxuIiwiLnByb21vXG4gICAgYmFja2dyb3VuZCB1cmwoJy9pbWFnZXMvcHJvbW8tYmcuanBnJykgbm8tcmVwZWF0IHRvcCBjZW50ZXJcbiAgICBiYWNrZ3JvdW5kLXNpemUgY292ZXJcbiAgICBwb3NpdGlvbiByZWxhdGl2ZVxuICAgIHBhZGRpbmcgdygxNTApIHcoNTApIHcoNzUpXG4gICAgZm9udC1mYW1pbHkgJGZmLXZpbnF1ZVxuICAgIGhlaWdodCAxMDB2aFxuICAgICtiZWxvdyg3NjhweClcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZSB1cmwoJy9pbWFnZXMvcHJvbW8tYmctbW9iaWxlLmpwZycpXG4gICAgICAgIHBhZGRpbmcgd20oNDIwKSB3bSgwKSB3bSgxNSlcbiAgICAgICAgaGVpZ2h0IGF1dG9cbiAgICAgICAgbWluLWhlaWdodCAxMDB2aFxuICAgIFxuICAgICZfX3dyYXBcbiAgICAgICAgZGlzcGxheSBmbGV4XG4gICAgICAgIGZsZXgtZmxvdyBjb2x1bW5cbiAgICAgICAganVzdGlmeS1jb250ZW50IHNwYWNlLWJldHdlZW5cbiAgICAgICAgYWxpZ24taXRlbXMgY2VudGVyXG4gICAgICAgIHdpZHRoIDUwJVxuICAgICAgICBoZWlnaHQgMTAwJVxuICAgICAgICArYmVsb3coNzY4cHgpXG4gICAgICAgICAgICB3aWR0aCAxMDAlXG4gICAgICAgICAgICBoZWlnaHQgNTAlXG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbSB3bSgyNSlcblxuICAgICZfX2NvbnRlbnRcbiAgICAgICAgdGV4dC1hbGlnbiBjZW50ZXJcbiAgICAgICAgXG4gICAgJl9fdGl0bGVcbiAgICAgICAgZm9udC1zaXplIHcoODYpXG4gICAgICAgIGxpbmUtaGVpZ2h0IHcoNzIpXG4gICAgICAgIGNvbG9yICNGRjI5MjlcbiAgICAgICAgbWFyZ2luIDBcbiAgICAgICAgK2JlbG93KDc2OHB4KVxuICAgICAgICAgICAgZm9udC1zaXplIHdtKDM2KVxuICAgICAgICAgICAgbGluZS1oZWlnaHQgd20oMzgpXG5cbiAgICAmX190ZXh0XG4gICAgICAgIGZvbnQtc2l6ZSB3KDI0KVxuICAgICAgICBsaW5lLWhlaWdodCB3KDMwKVxuICAgICAgICBjb2xvciAjRkZEOEFCXG4gICAgICAgIHBhZGRpbmcgdyg1MCkgdyg4MCkgdyg1MClcbiAgICAgICAgK2JlbG93KDc2OHB4KVxuICAgICAgICAgICAgZm9udC1zaXplIHdtKDEzKVxuICAgICAgICAgICAgbGluZS1oZWlnaHQgd20oMTYpXG4gICAgICAgICAgICBwYWRkaW5nIHdtKDE1KSB3bSgxNikgd20oMTUpXG4gICAgICAgICAgICB0ZXh0LWFsaWduIGNlbnRlclxuXG4gICAgJl9faW5mb1xuICAgICAgICBmb250LXNpemUgdygzMilcbiAgICAgICAgbGluZS1oZWlnaHQgdygzMClcbiAgICAgICAgY29sb3IgI0ZGRDhBQlxuICAgICAgICArYmVsb3coNzY4cHgpXG4gICAgICAgICAgICBmb250LXNpemUgd20oMTMpXG4gICAgICAgICAgICBsaW5lLWhlaWdodCB3bSgxNilcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tIHdtKDEwKVxuXG4gICAgJl9faW1nXG4gICAgICAgIHBvc2l0aW9uIGFic29sdXRlXG4gICAgICAgIGxlZnQgdygyNylcbiAgICAgICAgYm90dG9tIHcoMjFweClcbiAgICAgICAgd2lkdGggdyg3MHB4KVxuICAgICAgICBoZWlnaHQgdyg3MHB4KVxuICAgICAgICArYmVsb3coNzY4cHgpXG4gICAgICAgICAgICB3aWR0aCB3bSg0OClcbiAgICAgICAgICAgIGhlaWdodCB3bSg1MilcbiAgICAgICAgICAgIGxlZnQgd20oOClcbiAgICAgICAgICAgIGJvdHRvbSB3bSg4KVxuXG4gICAgICAgIGltZ1xuICAgICAgICAgICAgd2lkdGggMTAwJVxuXG4gICAgJl9fYXJyb3dcbiAgICAgICAgcG9zaXRpb24gYWJzb2x1dGVcbiAgICAgICAgbGVmdCA1MCVcbiAgICAgICAgYm90dG9tIHcoNzUpXG4gICAgICAgIGNvbG9yICNDRjI5MjBcbiAgICAgICAgdHJhbnNmb3JtIHRyYW5zbGF0ZVgoLTUwJSlcbiAgICAgICAgd2lkdGggdygyNilcbiAgICAgICAgY3Vyc29yIHBvaW50ZXJcbiAgICAgICAgdHJhbnNpdGlvbiBvcGFjaXR5IC4zXG4gICAgICAgICtiZWxvdyg3NjhweClcbiAgICAgICAgICAgIGJvdHRvbSB3bSgzMClcbiAgICAgICAgICAgIHdpZHRoIHdtKDIwKVxuXG5cbiAgICAgICAgaW1nXG4gICAgICAgICAgICB3aWR0aCAxMDAlXG5cbiAgICAgICAgJjpob3ZlclxuICAgICAgICAgICAgb3BhY2l0eSAuN1xuICAgIFxuICAgICZfX3NoYXJpbmdcbiAgICAgICAgbWFyZ2luLXRvcCB3KDE1KVxuICAgICAgICArYmVsb3coNzM2cHgpXG4gICAgICAgICAgICBtYXJnaW4tdG9wIHdtKDUpXG4gICAgICAgICAgICBtYXJnaW4tbGVmdCB3bSgyNTApXG4iLCJiYXNlLWZvbnQtc2l6ZSA/PSAxNnB4XG5yYXN0ZXJpc2UtbWVkaWEtcXVlcmllcyA/PSBmYWxzZVxuXG5ydXB0dXJlID0ge1xuICByYXN0ZXJpc2UtbWVkaWEtcXVlcmllczogcmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXNcbiAgbW9iaWxlLWN1dG9mZjogNDAwcHhcbiAgZGVza3RvcC1jdXRvZmY6IDEwNTBweFxuICBoZC1jdXRvZmY6IDE4MDBweFxuICBlbmFibGUtZW0tYnJlYWtwb2ludHM6IGZhbHNlXG4gIGJhc2UtZm9udC1zaXplOiBiYXNlLWZvbnQtc2l6ZVxuICBhbnRpLW92ZXJsYXA6IGZhbHNlXG4gIGRlbnNpdHktcXVlcmllczogJ2RwcHgnICd3ZWJraXQnICdtb3onICdkcGknXG4gIHJldGluYS1kZW5zaXR5OiAxLjVcbiAgdXNlLWRldmljZS13aWR0aDogZmFsc2Vcbn1cbnJ1cHR1cmUuc2NhbGUgPSAwIChydXB0dXJlLm1vYmlsZS1jdXRvZmYpIDYwMHB4IDgwMHB4IChydXB0dXJlLmRlc2t0b3AtY3V0b2ZmKSAocnVwdHVyZS5oZC1jdXRvZmYpXG5ydXB0dXJlLnNjYWxlLW5hbWVzID0gJ3hzJyAncycgJ20nICdsJyAneGwnICdoZCdcblxuLWlzLXN0cmluZyh2YWwpXG4gIGlmIHR5cGVvZih2YWwpIGlzIG5vdCAndW5pdCdcbiAgICBpZiB2YWwgaXMgYSAnc3RyaW5nJyBvciB2YWwgaXMgYSAnaWRlbnQnXG4gICAgICB0cnVlXG4gICAgZWxzZVxuICAgICAgZmFsc2VcbiAgZWxzZVxuICAgIGZhbHNlXG5cbi1nZXQtc2NhbGUtbnVtYmVyKHNjYWxlLW5hbWUpXG4gIGZvciBsaXN0LWl0ZW0sIGkgaW4gcnVwdHVyZS5zY2FsZS1uYW1lc1xuICAgIGlmIGxpc3QtaXRlbSBpcyBzY2FsZS1uYW1lXG4gICAgICByZXR1cm4gaSArIDFcbiAgcmV0dXJuIGZhbHNlXG5cbi1jb252ZXJ0LXRvKHRvLXVuaXQsIHZhbHVlLCBjb250ZXh0ID0gcnVwdHVyZS5iYXNlLWZvbnQtc2l6ZSlcbiAgZnJvbS11bml0ID0gdW5pdCh2YWx1ZSlcbiAgcmV0dXJuIHZhbHVlIGlmIHRvLXVuaXQgaXMgZnJvbS11bml0XG4gIGlmIHRvLXVuaXQgaW4gKCdlbScgJ3JlbScpXG4gICAgcmV0dXJuIHZhbHVlIGlmIGZyb20tdW5pdCBpbiAoJ2VtJyAncmVtJylcbiAgICByZXR1cm4gdW5pdCgodmFsdWUgLyBjb250ZXh0KSwgdG8tdW5pdClcbiAgaWYgdG8tdW5pdCBpcyAncHgnXG4gICAgcmV0dXJuIHVuaXQoKHZhbHVlICogY29udGV4dCksICdweCcpXG5cbi1vbi1zY2FsZShuKVxuICByZXR1cm4gdW5pdChuKSBpcyAnJ1xuXG4tbGFyZ2VyLXRoYW4tc2NhbGUobilcbiAgcmV0dXJuIChuID4gKGxlbmd0aChydXB0dXJlLnNjYWxlKSAtIDEpKSBhbmQgLW9uLXNjYWxlKG4pXG5cbi1pcy16ZXJvKG4pXG4gIHJldHVybiBuIGlzIDBcblxuLW92ZXJsYXAtc2hpZnQoYW50aS1vdmVybGFwLCBuKVxuICBzaGlmdC11bml0ID0gdW5pdChuKVxuICBhbnRpLW92ZXJsYXAgPSAwcHggdW5sZXNzIGFudGktb3ZlcmxhcFxuICBhbnRpLW92ZXJsYXAgPSAxcHggaWYgYW50aS1vdmVybGFwIGlzIHRydWVcbiAgaWYgbGVuZ3RoKGFudGktb3ZlcmxhcCkgaXMgMVxuICAgIHJldHVybiAtY29udmVydC10byhzaGlmdC11bml0LCBhbnRpLW92ZXJsYXApXG4gIGZvciB2YWwgaW4gYW50aS1vdmVybGFwXG4gICAgcmV0dXJuIHZhbCBpZiB1bml0KHZhbCkgaXMgc2hpZnQtdW5pdFxuXG4tYWRqdXN0LW92ZXJsYXAoYW50aS1vdmVybGFwLCBuLCBzaWRlID0gJ21pbicpXG4gIC1zaGlmdCA9IC1vdmVybGFwLXNoaWZ0KGFudGktb3ZlcmxhcCwgbilcbiAgaWYgKHNpZGUgaXMgJ21pbicgYW5kIC1zaGlmdCA+IDApIG9yIChzaWRlIGlzICdtYXgnIGFuZCAtc2hpZnQgPCAwKVxuICAgIG4gPSBuICsgLXNoaWZ0XG4gIHJldHVybiBuXG5cbi1pcy1wb3NpdGl2ZShuKVxuICByZXR1cm4gbiA+PSAwXG5cbi1kZW5zaXR5LXF1ZXJpZXMoZGVuc2l0eSlcbiAgaWYgdHlwZW9mKGRlbnNpdHkpIGlzIG5vdCAndW5pdCdcbiAgICBpZiBub3QgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgICAgZGVuc2l0eSA9ICclcycgJSBkZW5zaXR5XG4gIGRlbnNpdHkgPSBydXB0dXJlLnJldGluYS1kZW5zaXR5IGlmIGRlbnNpdHkgaXMgJ3JldGluYSdcbiAgcXVlcmllcyA9ICgpXG4gIGZvciBxdWVyeSBpbiBydXB0dXJlLmRlbnNpdHktcXVlcmllc1xuICAgIGlmIHF1ZXJ5IGlzICd3ZWJraXQnXG4gICAgICBwdXNoKHF1ZXJpZXMsICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAlcyknICUgKGRlbnNpdHkpKVxuICAgIGVsc2UgaWYgcXVlcnkgaXMgJ21veidcbiAgICAgIHB1c2gocXVlcmllcywgJyhtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICVzKScgJSAoZGVuc2l0eSkpXG4gICAgZWxzZSBpZiBxdWVyeSBpcyAnbydcbiAgICAgIHB1c2gocXVlcmllcywgJygtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAlcy8xKScgJSAoZGVuc2l0eSkpXG4gICAgZWxzZSBpZiBxdWVyeSBpcyAncmF0aW8nXG4gICAgICBwdXNoKHF1ZXJpZXMsICcobWluLWRldmljZS1waXhlbC1yYXRpbzogJXMpJyAlIChkZW5zaXR5KSlcbiAgICBlbHNlIGlmIHF1ZXJ5IGlzICdkcGknXG4gICAgICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgICAgIGRlbnNpdHk9Y29udmVydChkZW5zaXR5KVxuICAgICAgcHVzaChxdWVyaWVzLCAnKG1pbi1yZXNvbHV0aW9uOiAlc2RwaSknICUgKHJvdW5kKGRlbnNpdHkgKiA5NiwgMSkpKVxuICAgIGVsc2UgaWYgcXVlcnkgaXMgJ2RwcHgnXG4gICAgICBwdXNoKHF1ZXJpZXMsICcobWluLXJlc29sdXRpb246ICVzZHBweCknICUgKGRlbnNpdHkpKVxuICByZXR1cm4gcXVlcmllc1xuXG5jcmVhdGUtZmFsbGJhY2stY2xhc3Moc2VsZWN0ZWQsIGNsYXNzKVxuICAveycnICsgY2xhc3MgKyAnICcgKyBzZWxlY3RlZH1cbiAgICB7YmxvY2t9XG5cbi8vICtiZXR3ZWVuKG1pbiwgbWF4KVxuLy8gdXNhZ2UgKHNjYWxlIGNhbiBiZSBtaXhlZCB3aXRoIGN1c3RvbSB2YWx1ZXMpOlxuLy8gICAtICtiZXR3ZWVuKDEsIDMpIHNjYWxlOnNjYWxlXG4vLyAgIC0gK2JldHdlZW4oMCwgMykgMCB3aWR0aDpzY2FsZVxuLy8gICAtICtiZXR3ZWVuKDIwMHB4LCA1MDBweCkgY3VzdG9tOmN1c3RvbVxuLy8gICAtICtiZXR3ZWVuKDAsIDMwMHB4KSAwIHdpZHRoOmN1c3RvbVxuLy8gICAtICtiZXR3ZWVuKDEsIDMwMHB4KSBzY2FsZTpjdXN0b21cbi8vICAgLSArYmV0d2VlbigyMDBweCwgNCkgY3VzdG9tOnNjYWxlXG5cbmJldHdlZW4obWluLCBtYXgsIGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIHNlbGVjdGVkID0gc2VsZWN0b3IoKVxuXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgaWYgLWlzLXN0cmluZyhtaW4pXG4gICAgbWluID0gLWdldC1zY2FsZS1udW1iZXIobWluKVxuICBpZiAtaXMtc3RyaW5nKG1heClcbiAgICBtYXggPSAtZ2V0LXNjYWxlLW51bWJlcihtYXgpXG5cbiAgLW1pbiA9IHJ1cHR1cmUuc2NhbGVbbWluIC0gMV0gdW5sZXNzIC1pcy16ZXJvKG1pbikgb3IgKG5vdCAtb24tc2NhbGUobWluKSlcbiAgLW1heCA9IHJ1cHR1cmUuc2NhbGVbbWF4XSB1bmxlc3Mgbm90IC1vbi1zY2FsZShtYXgpXG4gIC1taW4gPz0gbWluXG4gIC1tYXggPz0gbWF4XG5cbiAgaWYgKHJ1cHR1cmUucmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXMpXG4gICAgaWYgbm90IChkZW5zaXR5IG9yIC1tYXggb3Igb3JpZW50YXRpb24pXG4gICAgICB7YmxvY2t9XG4gIGVsc2VcbiAgICBjb25kaXRpb24gPSAnb25seSBzY3JlZW4nXG4gICAgdXNlLWRldmljZS13aWR0aCA9IHVzZS1kZXZpY2Utd2lkdGggPyAnZGV2aWNlLScgOiAnJ1xuICAgIHVubGVzcyAtbWluIGlzIDBcbiAgICAgIC1taW4gPSAtY29udmVydC10bygnZW0nLCAtbWluKSBpZiBydXB0dXJlLmVuYWJsZS1lbS1icmVha3BvaW50c1xuICAgICAgLW1pbiA9IC1hZGp1c3Qtb3ZlcmxhcChhbnRpLW92ZXJsYXAsIC1taW4sIHNpZGU6ICdtaW4nKVxuICAgICAgY29uZGl0aW9uID0gY29uZGl0aW9uICsgJyBhbmQgKG1pbi0nICsgdXNlLWRldmljZS13aWR0aCArICd3aWR0aDogJXMpJyAlICgtbWluKVxuICAgIHVubGVzcyAtbGFyZ2VyLXRoYW4tc2NhbGUobWF4KVxuICAgICAgLW1heCA9IC1jb252ZXJ0LXRvKCdlbScsIC1tYXgpIGlmIHJ1cHR1cmUuZW5hYmxlLWVtLWJyZWFrcG9pbnRzXG4gICAgICAtbWF4ID0gLWFkanVzdC1vdmVybGFwKGFudGktb3ZlcmxhcCwgLW1heCwgc2lkZTogJ21heCcpXG4gICAgICBjb25kaXRpb24gPSBjb25kaXRpb24gKyAnIGFuZCAobWF4LScgKyB1c2UtZGV2aWNlLXdpZHRoICsgJ3dpZHRoOiAlcyknICUgKC1tYXgpXG4gICAgaWYgb3JpZW50YXRpb25cbiAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbiArICcgYW5kIChvcmllbnRhdGlvbjogJXMpJyAlIChvcmllbnRhdGlvbilcbiAgICBpZiBkZW5zaXR5XG4gICAgICBjb25kaXRpb25zID0gKClcbiAgICAgIGZvciBxdWVyeSBpbiAtZGVuc2l0eS1xdWVyaWVzKGRlbnNpdHkpXG4gICAgICAgIHB1c2goY29uZGl0aW9ucywgY29uZGl0aW9uICsgJyBhbmQgJXMnICUgKHF1ZXJ5KSlcbiAgICAgIGNvbmRpdGlvbiA9IGpvaW4oJywgJywgY29uZGl0aW9ucylcbiAgICBAbWVkaWEgY29uZGl0aW9uXG4gICAgICB7YmxvY2t9XG4gIGlmIGZhbGxiYWNrLWNsYXNzXG4gICAgK2NyZWF0ZS1mYWxsYmFjay1jbGFzcyhzZWxlY3RlZCwgZmFsbGJhY2stY2xhc3MpXG4gICAgICB7YmxvY2t9XG5cbmF0KHNjYWxlLXBvaW50LCBhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICtiZXR3ZWVuKHNjYWxlLXBvaW50LCBzY2FsZS1wb2ludCwgYW50aS1vdmVybGFwLCBkZW5zaXR5LCBvcmllbnRhdGlvbiwgdXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG5mcm9tLXdpZHRoKHNjYWxlLXBvaW50LCBhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICtiZXR3ZWVuKHNjYWxlLXBvaW50LCBsZW5ndGgocnVwdHVyZS5zY2FsZSksIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxuYWJvdmUgPSBmcm9tLXdpZHRoXG5cbnRvLXdpZHRoKHNjYWxlLXBvaW50LCBhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICtiZXR3ZWVuKDEsIHNjYWxlLXBvaW50LCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmJlbG93ID0gdG8td2lkdGhcblxubW9iaWxlKGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2JlbG93KHJ1cHR1cmUubW9iaWxlLWN1dG9mZiwgYW50aS1vdmVybGFwLCBkZW5zaXR5LCBvcmllbnRhdGlvbiwgdXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG50YWJsZXQoYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICArYmV0d2VlbihydXB0dXJlLm1vYmlsZS1jdXRvZmYsIHJ1cHR1cmUuZGVza3RvcC1jdXRvZmYsIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxuZGVza3RvcChhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICthYm92ZShydXB0dXJlLmRlc2t0b3AtY3V0b2ZmLCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmhkKGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2Fib3ZlKHJ1cHR1cmUuaGQtY3V0b2ZmLCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmRlbnNpdHkoZGVuc2l0eSwgb3JpZW50YXRpb24gPSBudWxsLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIHNlbGVjdGVkID0gc2VsZWN0b3IoKVxuICBpZiBub3QgKHJ1cHR1cmUucmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXMpXG4gICAgY29uZGl0aW9ucyA9ICgpXG4gICAgZm9yIHF1ZXJ5IGluIC1kZW5zaXR5LXF1ZXJpZXMoZGVuc2l0eSlcbiAgICAgIGNvbmRpdGlvbiA9ICdvbmx5IHNjcmVlbiBhbmQgJXMnICUgKHF1ZXJ5KVxuICAgICAgaWYgb3JpZW50YXRpb25cbiAgICAgICAgY29uZGl0aW9uID0gY29uZGl0aW9uICsgJyBhbmQgKG9yaWVudGF0aW9uOiAlcyknICUgKG9yaWVudGF0aW9uKVxuICAgICAgcHVzaChjb25kaXRpb25zLCBjb25kaXRpb24pXG4gICAgY29uZGl0aW9uID0gam9pbignLCAnLCBjb25kaXRpb25zKVxuICAgIEBtZWRpYSBjb25kaXRpb25cbiAgICAgIHtibG9ja31cbiAgICBpZiBmYWxsYmFjay1jbGFzc1xuICAgICAgK2NyZWF0ZS1mYWxsYmFjay1jbGFzcyhzZWxlY3RlZCwgZmFsbGJhY2stY2xhc3MpXG4gICAgICAgIHtibG9ja31cblxucGl4ZWwtcmF0aW8gPSBkZW5zaXR5XG5cbnJldGluYShvcmllbnRhdGlvbiA9IG51bGwsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgK2RlbnNpdHkoJ3JldGluYScsIG9yaWVudGF0aW9uLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmxhbmRzY2FwZShkZW5zaXR5ID0gbnVsbCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBzZWxlY3RlZCA9IHNlbGVjdG9yKClcbiAgaWYgbm90IChydXB0dXJlLnJhc3RlcmlzZS1tZWRpYS1xdWVyaWVzKVxuICAgIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICAgaWYgZGVuc2l0eVxuICAgICAgK3BpeGVsLXJhdGlvKGRlbnNpdHksIG9yaWVudGF0aW9uOiBsYW5kc2NhcGUsIGZhbGxiYWNrLWNsYXNzKVxuICAgICAgICB7YmxvY2t9XG4gICAgZWxzZVxuICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSlcbiAgICAgICAge2Jsb2NrfVxuICAgICAgaWYgZmFsbGJhY2stY2xhc3NcbiAgICAgICAgK2NyZWF0ZS1mYWxsYmFjay1jbGFzcyhzZWxlY3RlZCwgZmFsbGJhY2stY2xhc3MpXG4gICAgICAgICAge2Jsb2NrfVxuXG5wb3J0cmFpdChkZW5zaXR5ID0gbnVsbCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBzZWxlY3RlZCA9IHNlbGVjdG9yKClcbiAgaWYgbm90IChydXB0dXJlLnJhc3RlcmlzZS1tZWRpYS1xdWVyaWVzKVxuICAgIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICAgaWYgZGVuc2l0eVxuICAgICAgK3BpeGVsLXJhdGlvKGRlbnNpdHksIG9yaWVudGF0aW9uOiBwb3J0cmFpdCwgZmFsbGJhY2stY2xhc3MpXG4gICAgICAgIHtibG9ja31cbiAgICBlbHNlXG4gICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpXG4gICAgICAgIHtibG9ja31cbiAgICAgIGlmIGZhbGxiYWNrLWNsYXNzXG4gICAgICAgICtjcmVhdGUtZmFsbGJhY2stY2xhc3Moc2VsZWN0ZWQsIGZhbGxiYWNrLWNsYXNzKVxuICAgICAgICAgIHtibG9ja31cbiIsIi5yZXN1bHRcclxuICAgIGJhY2tncm91bmQgdXJsKCcvaW1hZ2VzL3Jlc3VsdC1iZy5qcGcnKSBuby1yZXBlYXQgY2VudGVyXHJcbiAgICBiYWNrZ3JvdW5kLXNpemUgY292ZXJcclxuICAgIHBvc2l0aW9uIHJlbGF0aXZlXHJcbiAgICBwYWRkaW5nIHcoNjUpIHcoMTUpIHcoMTUpXHJcbiAgICBoZWlnaHQgMTAwdmhcclxuICAgIGZvbnQtZmFtaWx5ICRmZi12aW5xdWVcclxuICAgICtiZWxvdyg3NjhweClcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlIHVybCgnL2ltYWdlcy9yZXN1bHQtYmctbW9iaWxlLmpwZycpXHJcbiAgICAgICAgcGFkZGluZyB3bSg2MCkgd20oMzApIHdtKDEwMClcclxuICAgICAgICBoZWlnaHQgYXV0b1xyXG4gICAgICAgIG1pbi1oZWlnaHQgMTAwdmhcclxuICAgICAgICBcclxuXHJcbiAgICAmX190aXRsZVxyXG4gICAgICAgIHRleHQtYWxpZ24gY2VudGVyXHJcbiAgICAgICAgZm9udC1zaXplIHcoNDQpXHJcbiAgICAgICAgbGluZS1oZWlnaHQgdyg1NilcclxuICAgICAgICB0ZXh0LXRyYW5zZm9ybSB1cHBlcmNhc2VcclxuICAgICAgICBjb2xvciAjRkZGMkUyXHJcbiAgICAgICAgK2JlbG93KDc2OHB4KVxyXG4gICAgICAgICAgICBsaW5lLWhlaWdodCB3bSgzNilcclxuICAgICAgICAgICAgZm9udC1zaXplIHdtKDMwKVxyXG5cclxuICAgICZfX291dHB1dFxyXG4gICAgICAgIHBhZGRpbmctdG9wIHcoMTQwKVxyXG4gICAgICAgIG1hcmdpbiAwIGF1dG9cclxuICAgICAgICB3aWR0aCA1NSVcclxuICAgICAgICB0ZXh0LWFsaWduIGNlbnRlclxyXG4gICAgICAgICtiZWxvdyg3NjhweClcclxuICAgICAgICAgICAgcGFkZGluZy10b3Agd20oOTApXHJcbiAgICAgICAgICAgIHdpZHRoIHdtKDMwNSlcclxuICAgICAgIFxyXG4gICAgICAgICAgICBcclxuXHJcbiAgICAmX19hbnN3ZXJcclxuICAgICAgICBmb250LXNpemUgdyg1MClcclxuICAgICAgICBsaW5lLWhlaWdodCAxXHJcbiAgICAgICAgd2lkdGg6IDEwMCVcclxuICAgICAgICBjb2xvciAjRkYyOTI5XHJcbiAgICAgICAgK2JlbG93KDc2OHB4KVxyXG4gICAgICAgICAgICBmb250LXNpemUgd20oMjQpXHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0IHdtKDI3KVxyXG5cclxuICAgICZfX3RleHRcclxuICAgICAgICBwYWRkaW5nIHcoNTApIHcoNjApIHcoMClcclxuICAgICAgICBmb250LXNpemUgdygyNSlcclxuICAgICAgICBsaW5lLWhlaWdodCB3KDMwKVxyXG4gICAgICAgIGNvbG9yICM1NTAwMDFcclxuICAgICAgICArYmVsb3coNzY4cHgpXHJcbiAgICAgICAgICAgIHBhZGRpbmcgd20oMjApIHdtKDApIHdtKDApXHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZSB3bSgxOClcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQgd20oMjEpXHJcblxyXG4gICAgJl9fdGV4dCBzcGFuXHJcbiAgICAgICAgY29sb3IgI0ZGMjkyOVxyXG5cclxuICAgICZfX2ltZ1xyXG4gICAgICAgIHBvc2l0aW9uIGFic29sdXRlXHJcbiAgICAgICAgbGVmdCB3KDI3KVxyXG4gICAgICAgIGJvdHRvbSB3KDIxKVxyXG4gICAgICAgIHdpZHRoIHcoNzApXHJcbiAgICAgICAgaGVpZ2h0IHcoNzApXHJcbiAgICAgICAgK2JlbG93KDc2OHB4KVxyXG4gICAgICAgICAgICB3aWR0aCB3bSgwKVxyXG4gICAgICAgICAgICBoZWlnaHQgd20oMClcclxuICAgICAgICBcclxuICAgICAgICBpbWdcclxuICAgICAgICAgICAgd2lkdGggMTAwJVxyXG4gICAgXHJcbiAgICAmX19zaGFyaW5nXHJcbiAgICAgICAgbWFyZ2luLXRvcCB3KDUwKVxyXG4gICAgICAgICtiZWxvdyg3NjhweClcclxuICAgICAgICAgICAgbWFyZ2luLXRvcCB3bSgxNSlcclxuXHJcbiAgICAmX19hY3Rpb25zXHJcbiAgICAgICAgdGV4dC1hbGlnbiBjZW50ZXJcclxuICAgICAgICBtYXJnaW4tdG9wIHcoMjApXHJcblxyXG4gICAgICAgICtiZWxvdyg3NjhweClcclxuICAgICAgICAgICAgbWFyZ2luLXRvcCB3bSgxMClcclxuICAgIFxyXG4gICAgJl9fYnRuXHJcbiAgICAgICAgZm9udC1zaXplIHcoMjQpXHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvciAjY2YyOTIwXHJcbiAgICAgICAgY29sb3IgI2ZmZlxyXG4gICAgICAgIGJvcmRlci1yYWRpdXMgdygyMClcclxuICAgICAgICBwYWRkaW5nIHcoNykgdygxMCkgdygxMClcclxuICAgICAgICBib3JkZXIgMFxyXG4gICAgICAgIHRleHQtdHJhbnNmb3JtIGxvd2VyY2FzZVxyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbiBub25lXHJcbiAgICAgICAgdHJhbnNpdGlvbiBjb2xvciAuM3MsIGJhY2tncm91bmQtY29sb3IgLjNzXHJcblxyXG4gICAgICAgICY6aG92ZXJcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciAjZmZmXHJcbiAgICAgICAgICAgIGNvbG9yICNjZjI5MjBcclxuICAgICAgICBcclxuICAgICAgICArYmVsb3coNzY4cHgpXHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZSB3bSgxNilcclxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1cyB3bSgyMClcclxuICAgICAgICAgICAgcGFkZGluZyB3bSg3KSB3bSgxMCkgd20oMTApXHJcbiIsIi5zaGFyaW5nXG5cbiAgICAmX190aXRsZVxuICAgICAgICBtYXJnaW4tYm90dG9tIHcoMTUpXG4gICAgICAgIGZvbnQtZmFtaWx5ICRmZi12aW5xdWVcbiAgICAgICAgZm9udC1zdHlsZSBub3JtYWxcbiAgICAgICAgZm9udC13ZWlnaHQgbm9ybWFsXG4gICAgICAgIGZvbnQtc2l6ZSB3KDMwKVxuICAgICAgICBsaW5lLWhlaWdodCB3KDI0KVxuICAgICAgICB0ZXh0LWFsaWduIGNlbnRlclxuICAgICAgICBjb2xvciAjQ0YyOTIwXG4gICAgICAgICtiZWxvdyg3NjhweClcbiAgICAgICAgICAgIGZvbnQtc2l6ZSB3bSgyMClcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0IHdtKDI0KVxuXG4gICAgJl9fbGlzdFxuICAgICAgICBkaXNwbGF5IGZsZXhcbiAgICAgICAgZmxleC1mbG93IHJvdyBub3dyYXBcbiAgICAgICAganVzdGlmeS1jb250ZW50IGNlbnRlclxuICAgICAgICBhbGlnbi1pdGVtcyBjZW50ZXJcblxuICAgICZfX2l0ZW1cbiAgICAgICAgZGlzcGxheSBpbmxpbmUtYmxvY2tcbiAgICAgICAgbWFyZ2luLXJpZ2h0IHcoMTApXG4gICAgICAgIHBvc2l0aW9uIHJlbGF0aXZlXG4gICAgICAgIHdpZHRoIHcoNTApIFxuICAgICAgICBoZWlnaHQgdyg1MClcbiAgICAgICAgYmFja2dyb3VuZCAjQ0YyOTIwXG4gICAgICAgIGJvcmRlci1yYWRpdXMgNTAlXG4gICAgICAgIHRyYW5zaXRpb24gb3BhY2l0eSAuM3NcbiAgICAgICAgK2JlbG93KDc2OHB4KVxuICAgICAgICAgICAgd2lkdGggd20oMjUpXG4gICAgICAgICAgICBoZWlnaHQgd20oMjUpXG5cbiAgICAgICAgJjpob3ZlclxuICAgICAgICAgICAgb3BhY2l0eSAuN1xuICAgIFxuICAgICAgICAmOmxhc3QtY2hpbGRcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodCAwXG5cbiAgICAmX19saW5rXG4gICAgICAgIGRpc3BsYXkgaW5saW5lLWJsb2NrXG4gICAgICAgIGhlaWdodCAxMDAlXG4gICAgICAgIHdpZHRoIDEwMCVcbiAgICAgICAgYm9yZGVyLXJhZGl1cyA1MCVcblxuICAgICZfX2ljb25cbiAgICAgICAgcG9zaXRpb24gYWJzb2x1dGVcbiAgICAgICAgdG9wOiA1MCVcbiAgICAgICAgbGVmdDogNTAlXG4gICAgICAgIHRyYW5zZm9ybSB0cmFuc2xhdGUoLTUwJSwtNTAlKVxuXG4gICAgICAgICZfZmJcbiAgICAgICAgICAgIHdpZHRoIHcoMTApXG4gICAgICAgICAgICArYmVsb3coNzY4cHgpXG4gICAgICAgICAgICAgICAgd2lkdGggd20oNSlcbiAgICAgICAgJl92a1xuICAgICAgICAgICAgd2lkdGggdygxMylcbiAgICAgICAgICAgICtiZWxvdyg3NjhweClcbiAgICAgICAgICAgICAgICB3aWR0aCB3bSg2KVxuICAgICAgICBcbiAgICAgICAgJl90d1xuICAgICAgICAgICAgd2lkdGggdygxNylcbiAgICAgICAgICAgICtiZWxvdyg3NjhweClcbiAgICAgICAgICAgICAgICB3aWR0aCB3bSg4KVxuXG4gICAgICAgICZfb2RcbiAgICAgICAgICAgIHdpZHRoIHcoMTEpXG4gICAgICAgICAgICArYmVsb3coNzY4cHgpXG4gICAgICAgICAgICAgICAgd2lkdGggd20oNikiLCIudGVzdFxuICAgIHBvc2l0aW9uIHJlbGF0aXZlXG4gICAgYmFja2dyb3VuZCB1cmwoJy9pbWFnZXMvdGVzdC1iZzEuanBnJykgbm8tcmVwZWF0IGNlbnRlclxuICAgIGJhY2tncm91bmQtc2l6ZSBjb3ZlclxuICAgIHBhZGRpbmcgdyg4NSkgdyg0MjApIHcoMTI1KSB3KDQ3NSlcbiAgICB3aWR0aCAxMDAlXG4gICAgaGVpZ2h0IDEwMHZoXG4gICAgK2JlbG93KDc2OHB4KVxuICAgICAgICBwYWRkaW5nIHdtKDApIHdtKDIwKSB3bSgwKVxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlIHVybCgnL2ltYWdlcy90ZXN0LWJnMS1tb2JpbGUuanBnJykgMCAwLzEwMCUgbm8tcmVwZWF0XG4gICAgICAgIHdpZHRoIDEwMCVcbiAgICAgICAgYmFja2dyb3VuZC1zaXplIGNvdmVyXG4gICAgICAgIGhlaWdodCBhdXRvXG4gICAgICAgIG1pbi1oZWlnaHQgMTAwdmhcblxuICAgICZfX2ltZ1xuICAgICAgICBwb3NpdGlvbiBhYnNvbHV0ZVxuICAgICAgICBsZWZ0IHcoMjcpXG4gICAgICAgIGJvdHRvbSB3KDIxKVxuICAgICAgICB3aWR0aCB3KDcwKVxuICAgICAgICBoZWlnaHQgdyg3MClcbiAgICAgICAgK2JlbG93KDc2OHB4KVxuICAgICAgICAgICAgd2lkdGggd20oNDgpXG4gICAgICAgICAgICBoZWlnaHQgd20oNTIpXG4gICAgICAgICAgICBsZWZ0IHdtKDgpXG4gICAgICAgICAgICBib3R0b20gd20oOClcblxuICAgICAgICBpbWdcbiAgICAgICAgICAgIHdpZHRoIDEwMCVcblxuICAgICZfX3dyYXBcbiAgICAgICAgZGlzcGxheSBmbGV4XG4gICAgICAgIGZsZXgtZmxvdyBjb2x1bW5cbiAgICAgICAgYWxpZ24taXRlbXMgc3RyZXRjaFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQgc3BhY2UtYmV0d2VlblxuICAgICAgICArYmVsb3coNzY4cHgpXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQgZmxleC1zdGFydFxuICAgICAgICAgICAgcGFkZGluZyB3bSgzMCkgd20oMCkgd20oNjApXG5cbiAgICAmX19oZWFkXG4gICAgICAgIHBvc2l0aW9uIHJlbGF0aXZlXG4gICAgICAgIG1hcmdpbi1ib3R0b20gdyg0MClcblxuICAgICZfX2NvdW50ZXJcbiAgICAgICAgbWFyZ2luIDAgYXV0b1xuICAgICAgICBkaXNwbGF5IGZsZXhcbiAgICAgICAgZmxleC1mbG93IHJvdyBub3dyYXBcbiAgICAgICAganVzdGlmeS1jb250ZW50IGNlbnRlclxuICAgICAgICBhbGlnbi1pdGVtcyBjZW50ZXJcbiAgICAgICAgbWFyZ2luLWJvdHRvbSB3KDUwKVxuICAgICAgICArYmVsb3coNzY4cHgpXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tIHdtKDQwKVxuXG4gICAgJl9fY291bnRlci10ZXh0XG4gICAgICAgIHBvc2l0aW9uIHJlbGF0aXZlXG4gICAgICAgIGZvbnQtZmFtaWx5ICRmZi12aW5xdWVcbiAgICAgICAgZm9udC1zdHlsZSBub3JtYWxcbiAgICAgICAgZm9udC13ZWlnaHQgbm9ybWFsXG4gICAgICAgIGZvbnQtc2l6ZSB3KDU0KVxuICAgICAgICBsaW5lLWhlaWdodCB3KDU2KVxuICAgICAgICB0ZXh0LWFsaWduIGNlbnRlclxuICAgICAgICBjb2xvciAjQ0YyOTIwXG4gICAgICAgICtiZWxvdyg3NjhweClcbiAgICAgICAgICAgIGZvbnQtc2l6ZSB3bSgyMClcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0IHdtKDI0KVxuXG4gICAgJl9fdGl0bGVcbiAgICAgICAgZm9udC1mYW1pbHkgJGZmLXZpbnF1ZVxuICAgICAgICBmb250LXN0eWxlIG5vcm1hbFxuICAgICAgICBmb250LXdlaWdodCBub3JtYWxcbiAgICAgICAgZm9udC1zaXplIHcoODYpXG4gICAgICAgIGxpbmUtaGVpZ2h0IHcoNzIpXG4gICAgICAgIHRleHQtYWxpZ24gY2VudGVyXG4gICAgICAgIGNvbG9yICNGRjI5MjlcbiAgICAgICAgK2JlbG93KDc2OHB4KVxuICAgICAgICAgICAgZm9udC1zaXplIHdtKDI2KVxuICAgICAgICAgICAgbGluZS1oZWlnaHQgd20oNDApXG5cbiAgICAmX19pdGVtXG4gICAgICAgIHBvc2l0aW9uIHJlbGF0aXZlXG4gICAgICAgIHBhZGRpbmcgdygxMikgdyg1KSB3KDEyKSB3KDExMClcbiAgICAgICAgbWFyZ2luLWJvdHRvbSB3KDI1KVxuICAgICAgICBkaXNwbGF5IGZsZXhcbiAgICAgICAgZmxleC1mbG93IHJvdyBub3dyYXBcbiAgICAgICAganVzdGlmeS1jb250ZW50IGZsZXgtc3RhcnRcbiAgICAgICAgYWxpZ24taXRlbXMgY2VudGVyXG4gICAgICAgIGN1cnNvciBwb2ludGVyXG4gICAgICAgICY6aG92ZXIgXG4gICAgICAgICAgICAudGVzdF9fc2lnblxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2UgdXJsKCcvaW1hZ2VzL2hlYXJ0LnBuZycpXG4gICAgICAgICAgICAgICAgdG9wIDMwJVxuICAgICAgICAgICAgICAgIHdpZHRoIHcoMTI1KVxuICAgICAgICAgICAgICAgIGhlaWdodCB3KDExMClcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICtiZWxvdyg3NjhweClcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggd20oNTApXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCB3bSg1MClcblxuXG4gICAgICAgICY6bGFzdC1jaGlsZFxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbSAwXG5cbiAgICAmX19zaWduXG4gICAgICAgIHBvc2l0aW9uIGFic29sdXRlXG4gICAgICAgIGxlZnQgMFxuICAgICAgICB0b3AgNTAlXG4gICAgICAgIHRyYW5zZm9ybSB0cmFuc2xhdGVZKC01MCUpXG4gICAgICAgIHdpZHRoIHcoNzApXG4gICAgICAgIGhlaWdodCB3KDcwKVxuICAgICAgICBiYWNrZ3JvdW5kIHVybCgnL2ltYWdlcy9lbGxpcHNlLnBuZycpIG5vLXJlcGVhdCBjZW50ZXJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplIDEwMCVcbiAgICAgICAgbWFyZ2luLXJpZ2h0IHcoMzUpXG4gICAgICAgIGZsZXgtc2hyaW5rIDBcbiAgICAgICAgK2JlbG93KDc2OHB4KVxuICAgICAgICAgICAgd2lkdGggd20oMzApXG4gICAgICAgICAgICBoZWlnaHQgd20oMzApXG5cbiAgICAmX19zaWduLXRleHRcbiAgICAgICAgcG9zaXRpb24gYWJzb2x1dGVcbiAgICAgICAgdG9wIDUwJVxuICAgICAgICBsZWZ0IDUwJVxuICAgICAgICB0cmFuc2Zvcm0gdHJhbnNsYXRlKC01MCUsIC01MCUpXG4gICAgICAgIGZvbnQtZmFtaWx5ICRmZi12aW5xdWVcbiAgICAgICAgZm9udC1zaXplIHcoMjYpXG4gICAgICAgIGNvbG9yIHdoaXRlXG4gICAgICAgICtiZWxvdyg3NjhweClcbiAgICAgICAgICAgIGZvbnQtc2l6ZSB3bSgyMClcblxuICAgICZfX2Fuc3dlclxuICAgICAgICBwYWRkaW5nIHcoNSkgdygzMClcbiAgICAgICAgZGlzcGxheSBmbGV4XG4gICAgICAgIGZsZXgtZmxvdyByb3cgbm93cmFwXG4gICAgICAgIGp1c3RpZnktY29udGVudCBmbGV4LXN0YXJ0XG4gICAgICAgIGFsaWduLWl0ZW1zIGNlbnRlclxuICAgICAgICB3aWR0aCAxMDAlXG4gICAgICAgICtiZWxvdyg3NjhweClcbiAgICAgICAgICAgIHBhZGRpbmcgd20oMTUpIHdtKDIwKVxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1cyB3bSgzMClcblxuICAgICZfX2Fuc3dlci10ZXh0XG4gICAgICAgIGZvbnQtZmFtaWx5ICRmZi12aW5xdWVcbiAgICAgICAgZm9udC1zdHlsZSBub3JtYWxcbiAgICAgICAgZm9udC13ZWlnaHQgbm9ybWFsXG4gICAgICAgIGZvbnQtc2l6ZSB3KDMwKVxuICAgICAgICBsaW5lLWhlaWdodCB3KDM2KVxuICAgICAgICBsZXR0ZXItc3BhY2luZyAwLjA1ZW1cbiAgICAgICAgY29sb3IgI0ZGRDhBQlxuICAgICAgICArYmVsb3coNzY4cHgpXG4gICAgICAgICAgICBmb250LXNpemUgd20oMTQpXG4gICAgICAgICAgICBsaW5lLWhlaWdodCB3bSgyMikiLCJpbXBvcnQoJ3Nwcml0ZXMvKicpXG5pbXBvcnQoJ2hlbHBlcnMvc3ZnLXNpemUnKVxuQGltcG9ydCAnaGVscGVycy92YXJpYWJsZXMnXG5AaW1wb3J0ICdoZWxwZXJzL21peGlucydcbkBpbXBvcnQgJ2hlbHBlcnMvZm9udHMnXG5AaW1wb3J0ICdoZWxwZXJzL29wdGltaXplJ1xuXG5pbXBvcnQoJy4uL2Jsb2Nrcy8qKi8qJylcblxuYm9keVxuICAgICNyZXN1bHRcbiAgICAgICAgZGlzcGxheSBub25lXG4gICAgXG4gICAgJi5zaG93LXRlc3QgLnRlc3RcbiAgICAgICAgZGlzcGxheSBibG9ja1xuXG4gICAgJi5zaG93LXJlc3VsdCAjcmVzdWx0XG4gICAgICAgIGRpc3BsYXkgYmxvY2tcblxuLmNhY2hlXG4gICAgZGlzcGxheSBub25lIl19 */
