/* z-indexes are large due to the fact that things might change
 * in the future. In order to account for scalability, this gives
 * room to make changes and not break the entire site, meaning 
 * we won't have to go in and refactor a lot of our code.
 */
/*  ----------------------------------------------------
    INPUTS
  ----------------------------------------------------- */
/*  ----------------------------------------------------
    CONTAINERS
  ----------------------------------------------------- */
/* -------------------
	Base result styles
-------------------- */
/* -------------------
	Variations
-------------------- */
/* -----------------------------------------------------
  Base styling
----------------------------------------------------- */
/* -----------------------------------------------------
  With secondary section
----------------------------------------------------- */
/* -----------------------------------------------------
  Checkbox tags
----------------------------------------------------- */
/* -----------------------------------------------------
  States
----------------------------------------------------- */
search-bar {
  --font-size: 16px;
  display: flex;
  align-items: center;
  position: relative;
  width: 100%;
}
search-bar input[type=search] {
  padding-left: calc(var(--gap) * 3);
  padding-right: calc(var(--gap) * 2);
}
search-bar::after {
  --size: 12px;
  content: "";
  position: absolute;
  top: calc(50% - var(--size) / 2);
  left: calc(50% - var(--size) / 2);
  opacity: 0;
  width: var(--size);
  height: var(--size);
  border-radius: 50%;
  border: 2px solid var(--loader-colour, #969695);
  border-top-color: transparent;
  border-bottom-color: transparent;
  animation-name: loader-rotate;
  animation-duration: 0.5s;
  animation-iteration-count: infinite;
  transition: opacity 0.2s cubic-bezier(0.42, 0, 0.58, 1);
  animation-play-state: paused;
}
@keyframes loader-rotate {
  from {
    transform: rotate(180deg);
  }
  to {
    transform: rotate(0deg);
  }
}
search-bar::after {
  left: auto;
  right: var(--gap);
}
search-bar.loading::after {
  opacity: 1;
  animation-play-state: running;
}
search-bar:not(.showing-suggestions) ul.results {
  display: none;
}
search-bar.showing-suggestions input[type=search] {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
search-bar svg {
  color: #6A6A6A;
  width: var(--font-size);
  height: var(--font-size);
  position: absolute;
  left: var(--gap);
}
search-bar ul.results {
  width: 100%;
  position: absolute;
  top: calc(100% - 1px);
  left: 0;
  overflow-x: hidden;
  overflow-y: auto;
  border-top: 1px dashed #dcdcdc;
  max-height: 305px;
}
search-bar ul.results li {
  background-color: white;
  transition: background-color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
  cursor: pointer;
  position: relative;
}
search-bar ul.results li + li {
  border-top: 1px solid #F4F4F4;
}
search-bar ul.results li mark {
  background-color: initial;
  color: inherit;
  border-radius: initial;
  padding: initial;
  transition: initial;
  color: #0095FF;
}
search-bar ul.results li a {
  text-decoration: none;
  padding: calc(var(--gap) * 0.5) var(--gap);
  display: block;
  text-align: left;
  font-size: 0.75em;
  line-height: 1.2;
}
search-bar ul.results li a:focus {
  outline: none;
}
search-bar ul.results li.focus a {
  background-color: #10124d;
}
search-bar ul.results li.focus a .type, search-bar ul.results li.focus a {
  color: white;
}
search-bar ul.results li .type {
  display: block;
  color: #969695;
  font-size: 0.7em;
  order: 1;
  transition: color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
search-bar ul.results li.no-result {
  background-color: #DF3035;
  margin-top: -1px;
}
search-bar ul.results li.no-result a {
  color: white;
}
search-bar ul.results li:nth-of-type(even) {
  background-color: #F4F4F4;
}
@media (hover: hover) {
  search-bar ul.results li:not(.no-result):hover {
    background-color: #dcdcdc;
  }
}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl92YXJpYWJsZXMvei1pbmRleC5zY3NzIiwiX2VsZW1lbnRzL2Zvcm0uc2NzcyIsIl9lbGVtZW50cy9yZXN1bHQtaXRlbS5zY3NzIiwiX2VsZW1lbnRzL3RhZy5zY3NzIiwiY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoLWJhci5zY3NzIiwiY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoLWJhci5jc3MiLCJfbGliL2NyZWF0ZS9fdW5pdHMuc2NzcyIsIl9lbGVtZW50cy9sb2FkZXIuc2NzcyIsIl92YXJpYWJsZXMvY29sb3Vycy5zY3NzIiwiX2VsZW1lbnRzL21hcmsuc2NzcyIsIl9saWIvY29sbGVjdGlvbnMvc3R5bGluZy9faG92ZXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztFQUFBO0FDYUE7O3lEQUFBO0FBbURBOzt5REFBQTtBQzVEQTs7c0JBQUE7QUFzRUE7O3NCQUFBO0FDekRBOzt1REFBQTtBQStCQTs7dURBQUE7QUF5QkE7O3VEQUFBO0FBMkJBOzt1REFBQTtBQ2xHQTtFQUVFLGlCQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0FDMkJGO0FEekJFO0VBQ0Usa0NFMENJO0VGekNKLG1DRXdDSTtBRGJSO0FEeEJFO0VHVkEsWUFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLGdDQUFBO0VBQ0EsaUNBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsK0NBQUE7RUFDQSw2QkFBQTtFQUNBLGdDQUFBO0VBQ0EsNkJBQUE7RUFDQSx3QkFBQTtFQUNBLG1DQUFBO0VBQ0EsdURBQUE7RUFDQSw0QkFBQTtBRnFDRjtBRXBDRTtFQUNFO0lBQU0seUJBQUE7RUZ1Q1I7RUV0Q0U7SUFBSSx1QkFBQTtFRnlDTjtBQUNGO0FEbkRFO0VBRUUsVUFBQTtFQUFXLGlCRWtDUDtBRG1CUjtBRGxERTtFR1VBLFVBQUE7RUFDQSw2QkFBQTtBRjJDRjtBRGpESTtFQUFhLGFBQUE7QUNvRGpCO0FEakRFO0VBQ0UsNEJBQUE7RUFDRSw2QkFBQTtBQ21ETjtBRGhERTtFQUNFLGNJUGdCO0VKUWhCLHVCQUFBO0VBQ0Esd0JBQUE7RUFDQSxrQkFBQTtFQUNBLGdCRWFJO0FEcUNSO0FEL0NFO0VBQ0UsV0FBQTtFQUNBLGtCQUFBO0VBQ0EscUJBQUE7RUFDQSxPQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLDhCQUFBO0VBR0EsaUJBQUE7QUMrQ0o7QUQ5Q0k7RUFDRSx1QkFBQTtFQUNBLDhJQUFBO0VBQ0EsZUFBQTtFQUNBLGtCQUFBO0FDZ0ROO0FEOUNNO0VBQ0UsNkJBQUE7QUNnRFI7QUQ3Q007RUtuREoseUJBQUE7RUFDQSxjQUFBO0VBQ0Esc0JBQUE7RUFDQSxnQkFBQTtFQUNBLG1CQUFBO0VMaURNLGNJMUNZO0FINkZwQjtBRGpETTtFQUNFLHFCQUFBO0VBQ0EsMENBQUE7RUFDQSxjQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0FDbURSO0FEbERRO0VBQ0UsYUFBQTtBQ29EVjtBRGpETTtFQUNFLHlCSXpEWTtBSDRHcEI7QURsRFE7RUFBVyxZQUFBO0FDcURuQjtBRG5ETTtFQUNFLGNBQUE7RUFDQSxjSXpEWTtFSjBEWixnQkFBQTtFQUNBLFFBQUE7RUFDQSxtSUFBQTtBQ3FEUjtBRG5ETTtFQUNFLHlCSWpFWTtFSmtFWixnQkFBQTtBQ3FEUjtBRHBEUTtFQUNFLFlBQUE7QUNzRFY7QURuRE07RUFDRSx5QklwRVk7QUh5SHBCO0FLaEpFO0VBQ0U7SU44Rk0seUJJdkVVO0VINEhsQjtBQUNGIiwiZmlsZSI6ImNvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1iYXIuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogei1pbmRleGVzIGFyZSBsYXJnZSBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGluZ3MgbWlnaHQgY2hhbmdlXG4gKiBpbiB0aGUgZnV0dXJlLiBJbiBvcmRlciB0byBhY2NvdW50IGZvciBzY2FsYWJpbGl0eSwgdGhpcyBnaXZlc1xuICogcm9vbSB0byBtYWtlIGNoYW5nZXMgYW5kIG5vdCBicmVhayB0aGUgZW50aXJlIHNpdGUsIG1lYW5pbmcgXG4gKiB3ZSB3b24ndCBoYXZlIHRvIGdvIGluIGFuZCByZWZhY3RvciBhIGxvdCBvZiBvdXIgY29kZS5cbiAqL1xuXG4kcGFnZS1iYWNrZ3JvdW5kICAgICAgICAgIDogNTAwO1xuXG4kbmF2aWdhdGlvbi1iYXIgICAgICAgICAgIDogMTUwMDtcbiRuYXZpZ2F0aW9uLWJhci1jb250YWluZXIgOiAkbmF2aWdhdGlvbi1iYXI7XG4kZ2xvYmFsLXNlYXJjaC1tb2JpbGUgICAgIDogLTE7XG5cbiRzY3JvbGwtYmFyICAgICAgICAgICAgICAgOiAxMTAwO1xuXG4kbWFpbiAgICAgICAgICAgICAgICAgICAgIDogMTAwMDtcbiRoZWFkZXIgICAgICAgICAgICAgICAgICAgOiAxMDAwO1xuJHNpZGUtYmFyICAgICAgICAgICAgICAgICA6IDE3NTA7XG5cbiRtb2RhbCAgICAgICAgICAgICAgICAgICAgOiAxMDAwMDsiLCJAdXNlICcuLi9fdmFyaWFibGVzJyBhcyAqO1xuQHVzZSAnbW9kdWxlcy9jb2xvdXIvZW5jb2RlJyBhcyBjb2xvdXI7XG5AdXNlIFwiZm9udFwiO1xuQHVzZSAnLi4vX2hlbHBlcnMvbWlzYy5zY3NzJyBhcyAqO1xuXG4kYmFzZS1pbnB1dC1wYWRkaW5nOiAkZ2FwO1xuXG5cbkBtaXhpbiBhcnJvdy1kb3duLWltYWdlKCRzdHJva2UgOiB2YXIoLS1mb250LWNvbG91cikpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxNy40JyBoZWlnaHQ9JzEwLjEnJTNFJTNDcGF0aCBkPSdNMTYuNy43bC04IDgtOC04JyBmaWxsPSdub25lJyBzdHJva2U9J1wiK2NvbG91ci5lbmNvZGUoJHN0cm9rZSkrXCInIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJy8lM0UlM0Mvc3ZnJTNFXCIpO1xufVxuXG5cbi8qICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgSU5QVVRTXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbkBtaXhpbiBjaGFyYWN0ZXItaW5wdXRzKCkge1xuICBpbnB1dFt0eXBlPVwidGV4dFwiXSwgaW5wdXRbdHlwZT1cImVtYWlsXCJdLCBpbnB1dFt0eXBlPVwibnVtYmVyXCJdLCBpbnB1dFt0eXBlPVwic2VhcmNoXCJdLCBzZWxlY3QsIHRleHRhcmVhIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gYWxsLWlucHV0cygpIHtcbiAgaW5wdXRbdHlwZT1cInRleHRcIl0sXG4gIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbiAgaW5wdXRbdHlwZT1cIm51bWJlclwiXSxcbiAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXSxcbiAgc2VsZWN0LFxuICB0ZXh0YXJlYSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGNoYXJhY3Rlci1pbnB1dCgpIHtcbiAgLS1mb250LWNvbG91ciAgICAgICA6ICN7JGZvbnQtY29sb3VyfTtcbiAgLS1iYWNrZ3JvdW5kLWNvbG91ciA6ICN7JHdoaXRlfTtcbiAgLS1wYWRkaW5nICAgICAgICAgICA6IGNhbGMoI3skYmFzZS1pbnB1dC1wYWRkaW5nfSAvIDEuNSkgI3skYmFzZS1pbnB1dC1wYWRkaW5nfTtcbiAgLS1ib3JkZXItY29sb3VyICAgICA6ICN7JGdyZXk3fTtcbiAgLS1ib3JkZXItcmFkaXVzICAgICA6IDA7XG5cbiAgb3V0bGluZTogMDtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG91cik7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1czsgIC8qIE9wZXJhIDEwLjUsIElFIDksIFNhZmFyaSA1LCBDaHJvbWUsIEZpcmVmb3ggNCwgaU9TIDQsIEFuZHJvaWQgMi4xKyAqL1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7ICAvKiBTYWZhcmkgMy00LCBpT1MgMS0zLjIsIEFuZHJvaWQgMS42LSAqLyAgICBcbiAgLW1vei1ib3JkZXItcmFkaXVzOiAwOyAgLyogRmlyZWZveCAxLTMuNiAqLyAgICAgXG5cbiAgY29sb3I6IHZhcigtLWZvbnQtY29sb3VyKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1jb2xvdXIpO1xuICBwYWRkaW5nOiB2YXIoLS1wYWRkaW5nKTtcbiAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAkdHJhbnNpdGlvbjtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMHB4IHRyYW5zcGFyZW50O1xuXG4gICY6OnBsYWNlaG9sZGVyIHsgdHJhbnNpdGlvbjogY29sb3IgJHRyYW5zaXRpb24gfVxuXG4gIC8vICY6bm90KDplbXB0eSkge1xuICAvLyAgICY6OnBsYWNlaG9sZGVyIHsgY29sb3I6ICR0cmFuc3BhcmVudCB9XG4gIC8vIH1cbn1cblxuXG4vKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENPTlRBSU5FUlNcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuQG1peGluIGNvbnRhaW5lcigpIHtcbiAgLS1sYWJlbC1jb2xvdXIgICAgICAgIDogdmFyKC0tZm9udC1jb2xvdXIpO1xuICAtLWxhYmVsLWFjdGl2ZS1jb2xvdXIgOiB2YXIoLS10aGVtZS1hY2NlbnQpO1xuXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtZ2FwOiAxcmVtO1xuXG4gIGxhYmVsIHtcbiAgICBjb2xvcjogdmFyKC0tbGFiZWwtY29sb3VyKTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAkdHJhbnNpdGlvbjtcbiAgfVxufVxuXG5AbWl4aW4gdGV4dC1jb250YWluZXIoKSB7XG4gIEBpbmNsdWRlIGNvbnRhaW5lcigpO1xuICBncmlkLWF1dG8tZmxvdzogcm93O1xufVxuXG5cbkBtaXhpbiByYWRpby1jaGVja2JveC1jb250YWluZXIoKSB7XG4gIEBpbmNsdWRlIGNvbnRhaW5lcigpO1xuICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xuXG4gIC0taW5wdXQtd2lkdGg6IDEuMmVtO1xuICAtLWlucHV0LWJvcmRlci10aGlja25lc3M6IDFweDtcbiAgLS1pbnB1dC1hY3RpdmUtY29sb3VyOiAjeyRyZWR9O1xuXG4gIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XG4gICAgZ3JpZC1nYXA6ICRnYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG5cbiAgICAmOjpiZWZvcmUsICY6OmFmdGVyIHtcbiAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBzcXVhcmUodmFyKC0taW5wdXQtd2lkdGgpKTtcbiAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICAgIGJvcmRlcjogdmFyKC0taW5wdXQtYm9yZGVyLXRoaWNrbmVzcywgMXB4KSBzb2xpZCAkZ3JleTtcbiAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbjtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBzcXVhcmUoY2FsYyh2YXIoLS1pbnB1dC13aWR0aCkgLSB2YXIoLS1pbnB1dC1ib3JkZXItdGhpY2tuZXNzKSAqIDYpKTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlucHV0LWFjdGl2ZS1jb2xvdXIpO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIGxlZnQ6IC0xMHB4O1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkdHJhbnNpdGlvbiwgdHJhbnNmb3JtICR0cmFuc2l0aW9uO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIC0tbGFiZWwtY29sb3VyOiB2YXIoLS1sYWJlbC1hY3RpdmUtY29sb3VyKTtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pbnB1dC1hY3RpdmUtY29sb3VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbnB1dCB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICY6Y2hlY2tlZCB7XG4gICAgICArIGxhYmVsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWxhYmVsLWFjdGl2ZS1jb2xvdXIpO1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcmFkaW8tY29udGFpbmVyKCkge1xuICBsYWJlbCB7XG4gICAgJjo6YmVmb3JlLCAmOjphZnRlciB7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtdWx0aS1pbnB1dCgpIHtcbiAgLS1pbnB1dC1zcGFjaW5nOiAwO1xuICBcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiB2YXIoLS1pbnB1dC1zcGFjaW5nKTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC13cmFwOiBub3dyYXA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuXG4gIEBpbmNsdWRlIGNoYXJhY3Rlci1pbnB1dHMoKSB7XG4gICAgJjpub3Qoc2VsZWN0KSB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3VyKTtcbiAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICB9XG4gIH1cblxuICA+ICo6bm90KHNlbGVjdCwgYnV0dG9uLCBhKSB7XG4gICAgZmxleDogMTtcbiAgfVxuICBcbiAgc2VsZWN0LCBidXR0b24sIGEge1xuICAgIC0tZm9udC1jb2xvdXI6ICN7JHdoaXRlfTtcbiAgICAtLWJhY2tncm91bmQtY29sb3VyOiAjeyRyZWR9O1xuXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvdXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3VyKTtcbiAgICBjb2xvcjogdmFyKC0tZm9udC1jb2xvdXIpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIH1cblxuICBzZWxlY3QgeyBAaW5jbHVkZSBhcnJvdy1kb3duLWltYWdlKCR3aGl0ZSkgfTtcbn1cblxuQG1peGluIGJhc2UtcmVxdWlyZWQoKSB7XG4gIHJlcXVpcmVkLW5vdGljZSB7XG4gICAgLS1ub3RpY2UtY29sb3VyOiAjeyRyZWR9O1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMTBweDtcbiAgICBjb2xvcjogdmFyKC0tbm90aWNlLWNvbG91cik7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcblxuICAgIHNwYW4ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcmlnaHQ6IC0xMDAlO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHJhZGlvLXRhYnMoKSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgcmFkaW8tdGFiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHBhZGRpbmctYm90dG9tOiAkZ2FwMDtcbiAgICBcbiAgICBpbnB1dCB7IFxuICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgJjpjaGVja2VkICsgbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10aGVtZS1hY2NlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICY6bm90KDpjaGVja2VkKSB7XG4gICAgICAgICsgbGFiZWw6aG92ZXI6OmFmdGVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10aGVtZS1hY2NlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFiZWwge1xuICAgICAgY29sb3I6IHZhcigtLWZvbnQtY29sb3VyKTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDNweDtcbiAgICAgICAgYmFja2dyb3VuZDogJHRyYW5zcGFyZW50O1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kICR0cmFuc2l0aW9uO1xuICAgICAgfVxuICAgICAgXG5cbiAgICB9XG5cbiAgfVxufVxuXG5cbkBtaXhpbiBpbnB1dC1mb2N1cygpIHtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAxcHggMXB4IHJnYmEoJHJlZCwgMC4zKTtcbn0iLCJAdXNlICcuLi9fdmFyaWFibGVzLycgYXMgKjtcbkB1c2UgJy4uL19oZWxwZXJzLycgYXMgKjtcblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cdEJhc2UgcmVzdWx0IHN0eWxlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXG5AbWl4aW4gYmFzZSgpIHtcblxuICAtLWhlYWRpbmctY29sb3VyICAgIDogI3skYmx1ZX07XG5cbiAgLS1ib3JkZXItdGhpY2tuZXNzICA6IDFweDtcbiAgLS1ib3JkZXItcmFkaXVzICAgICA6IDBweDtcbiAgLS1iYWNrZ3JvdW5kLWNvbG91ciA6IHdoaXRlO1xuXG4gIC0tcGFkZGluZyAgICAgICAgICAgOiAycmVtO1xuXG4gIC0tcGFkZGluZy1sZWZ0ICAgICAgOiB2YXIoLS1wYWRkaW5nKTtcbiAgLS1wYWRkaW5nLXJpZ2h0ICAgICA6IHZhcigtLXBhZGRpbmcpO1xuICAtLXBhZGRpbmctdG9wICAgICAgIDogdmFyKC0tcGFkZGluZyk7XG4gIC0tcGFkZGluZy1ib3R0b20gICAgOiB2YXIoLS1wYWRkaW5nKTtcblxuICAtLWltYWdlLXdpZHRoICAgICAgIDogMTAwcHg7XG4gIC0taW1hZ2UtaGVpZ2h0ICAgICAgOiAxMDBweDtcblxuICAtLWdyaWQtZ2FwICAgICAgICAgIDogI3skZ2FwfTtcblxuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogdmFyKC0tcGFkZGluZy10b3ApIHZhcigtLXBhZGRpbmctcmlnaHQpIHZhcigtLXBhZGRpbmctYm90dG9tKSB2YXIoLS1wYWRkaW5nLWxlZnQpO1xuICBib3JkZXI6IHZhcigtLWJvcmRlci10aGlja25lc3MpIHNvbGlkICR0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3VyKTtcbiAgLy8gYm94LXNoYWRvdzogMHB4IDBweCA1cHggMXB4IHJnYmEoJGdyZXksIDAuMSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgdHJhbnNpdGlvbjogYm9yZGVyICR0cmFuc2l0aW9uO1xuXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtZ2FwOiB2YXIoLS1ncmlkLWdhcCkgdmFyKC0tZ3JpZC1nYXApO1xuICAvLyBwbGFjZS1jb250ZW50OiBzdGFydDtcblxuICAucmVzdWx0LWltYWdlIHtcbiAgICBncmlkLWFyZWE6IGltYWdlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgcGljdHVyZSB7XG4gICAgICBoZWlnaHQ6IHZhcigtLWltYWdlLWhlaWdodCk7XG4gICAgICBcbiAgICAgIGltZyB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1pbWFnZS1oZWlnaHQpO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLWltYWdlLXdpZHRoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAucmVzdWx0LXRpdGxlIHtcbiAgICBncmlkLWFyZWE6IHRpdGxlO1xuICAgIGNvbG9yOiB2YXIoLS1oZWFkaW5nLWNvbG91cik7XG4gICAgYSB7IGNvbG9yOiB2YXIoLS1oZWFkaW5nLWNvbG91cikgfVxuICB9XG5cbiAgLnJlc3VsdC1zdWJ0aXRsZSB7IGdyaWQtYXJlYTogc3VidGl0bGUgfVxuICAucmVzdWx0LWJvZHkgICAgIHsgZ3JpZC1hcmVhOiBib2R5IH1cblxuICAmLmJsb2cgICAgeyBAaW5jbHVkZSBibG9nKCkgfVxuICAmLm1hcmtldC1zZWN0b3IgICAgeyBAaW5jbHVkZSBtYXJrZXQtc2VjdG9yKCkgfVxuICAmLnByb2R1Y3QgeyBAaW5jbHVkZSBwcm9kdWN0KCkgfVxuICAmLnBhZ2UgICAgeyBAaW5jbHVkZSBwYWdlKCkgfVxufVxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS1cblx0VmFyaWF0aW9uc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuQG1peGluIG1hcmtldC1zZWN0b3IoKSB7XG5cbiAgLS1iYWNrZ3JvdW5kLWNvbG91cjp0cmFuc3BhcmVudDsgXG4gIC0tZm9udC1jb2xvdXI6d2hpdGU7IFxuICAtLWhlYWRpbmctY29sb3VyIDogd2hpdGU7IFxuXG4gIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcGFkZGluZzowIDAgJGd1dHRlcjAgMCA7IFxuICBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1yZXN1bHQtaXRlbS1ib3JkZXItYm90dG9tLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikpO1xuXG4gIC5yZXN1bHQtaW1hZ2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogY2xhbXAoMTQwcHgsIDQwdncsIDE4MHB4KTtcbiAgICBvdXRsaW5lOiAxcHggc29saWQgdmFyKC0taW1hZ2Utb3V0bGluZS1jb2xvdXIsIHRyYW5zcGFyZW50KTtcbiAgICBvdXRsaW5lLW9mZnNldDogdmFyKC0taW1hZ2Utb3V0bGluZS1vZmZzZXQsIDAuMWVtKTsgXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IG91dGxpbmUtY29sb3IgJHRyYW5zaXRpb24sIG91dGxpbmUtb2Zmc2V0ICR0cmFuc2l0aW9uO1xuICAgIGltZyB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIH1cblxuICB9XG5cbiAgJjpob3ZlciB7IFxuICAgIC0taW1hZ2Utb3V0bGluZS1jb2xvdXIgOiAje3JnYmEod2hpdGUsIDAuMil9O1xuICAgIC0taW1hZ2Utb3V0bGluZS1vZmZzZXQgOiAwLjNlbTtcbiAgICAucmVzdWx0LXRpdGxlIGEgeyBjb2xvcjokcmVkOyB9XG4gIH1cblxuICAucmVzdWx0LXRpdGxlIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG5cbiAgICBhIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgJjo6YWZ0ZXIgeyBcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICBpbnNldDowOyBcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB6LWluZGV4OjE7IFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBhdC1yb290IGJvZHlbZGF0YS10aGVtZT0nd2hpdGUnXSAmIHtcbiAgICAtLXJlc3VsdC1pdGVtLWJvcmRlci1ib3R0b20gOiAje3JnYmEoJGJsdWUsIDAuMil9O1xuICAgIC0tZm9udC1jb2xvdXI6I3skYmx1ZX07IFxuICAgIC0taGVhZGluZy1jb2xvdXIgOiAjeyRibHVlfTsgXG4gICAgJjpob3ZlciB7IFxuICAgICAgLS1pbWFnZS1vdXRsaW5lLWNvbG91ciA6ICN7cmdiYSgkYmx1ZSwgMC4yKX07XG4gICAgfVxuICB9XG5cbiAgQGF0LXJvb3QgYm9keSNtYXJrZXQtc2VjdG9ycyB7XG4gICAgJiB7XG4gICAgICAvLyBpc29sYXRpb246IGluaXRpYWw7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBjb250YWluZXItdHlwZTogaW5saW5lLXNpemU7XG4gICAgICBjb250YWluZXItbmFtZSA6IG1hcmtldC1zZWN0b3I7XG4gICAgICAucmVzdWx0LWl0ZW0ge1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICR0cmFuc2l0aW9uO1xuICAgICAgICBhLmRldGFpbHM6aG92ZXIge1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmOmhvdmVyIC5yZXN1bHQtaW1hZ2Uge1xuICAgICAgICAtLWltYWdlLW91dGxpbmUtY29sb3VyIDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgLS1pbWFnZS1vdXRsaW5lLW9mZnNldCA6MCAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLmRldGFpbHMge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZS1kYXJrO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIHBhZGRpbmc6MDtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMjIwcHg7XG4gICAgICAgIHdpZHRoOnZhcigtLW1hcmtldC1zZWN0b3ItYXJ0aWNsZS13aWR0aCwgY2FsYygyMDAlICsgI3skZ3V0dGVyfSArIDJweCkpO1xuXG4gICAgICAgIC8vIERpc2NyZXRlIGFuaW1hdGlvbiBzZXR1cFxuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIG9wYWNpdHkgJHRyYW5zaXRpb24sXG4gICAgICAgICAgZGlzcGxheSAkdHJhbnNpdGlvbiBhbGxvdy1kaXNjcmV0ZTtcbiAgICAgICAgLmRldGFpbHMtdGV4dCB7XG4gICAgICAgICAgcGFkZGluZzokZ3V0dGVyO1xuICAgICAgICB9XG4gICAgICAgIC5kZXRhaWxzLWhlYWRpbmcge1xuICAgICAgICAgIGNvbG9yOiRyZWQ7XG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICBAaW5jbHVkZSBoZWFkaW5nLWgyO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206MWVtO1xuICAgICAgICB9XG4gICAgICAgIC5kZXRhaWxzLWltYWdlIHtcbiAgICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMCUgMTAwJSwgMzUlIDAlLCAxMDAlIDAlLCAxMDAlIDEwMCUpO1xuICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5kZXRhaWxzLWxpbmsge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5kZXRhaWxzLWxpbmsge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBib3R0b206MDtcbiAgICAgICAgICByaWdodDowO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuZGV0YWlscyB7XG4gICAgICAgIEBjb250YWluZXIgbWFya2V0LXNlY3RvciAoIHdpZHRoIDwgNDIwcHgpIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAuZGV0YWlscy1pbWFnZSB7XG4gICAgICAgICAgICBjbGlwLXBhdGg6IGluaXRpYWw7XG4gICAgICAgICAgICBoZWlnaHQ6MTAwcHg7XG4gICAgICAgICAgICAuZGV0YWlscy1saW5rIHtcbiAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgICAmIC5yZXN1bHQtaXRlbTppcyg6aG92ZXIsIDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIC5kZXRhaWxzIHtcbiAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBtZWRpYSAoIHdpZHRoID4gMjA1MHB4KSB7XG4gICAgICAgICAgd2lkdGg6MTAwJTsgXG5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhcnRpY2xlLWdyaWQ6aGFzKC5yZXN1bHQtaXRlbTppcyg6aG92ZXIsIDpmb2N1cy12aXNpYmxlKSkge1xuICAgICAgLnJlc3VsdC1pdGVtOm5vdCg6aXMoOmhvdmVyLCA6Zm9jdXMtdmlzaWJsZSkpIHsgb3BhY2l0eTogMC41ICFpbXBvcnRhbnQ7fVxuICAgIH1cblxuICAgIEBjb250YWluZXIgbWFpbiAoIHdpZHRoIDwgNjYwcHgpIHtcbiAgICAgIGFydGljbGUtZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7XG4gICAgICAgIC0tbWFya2V0LXNlY3Rvci1hcnRpY2xlLXdpZHRoIDogMTAwJTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhcnRpY2xlLWdyaWQge1xuICAgICAgQGNvbnRhaW5lciBtYWluICg2NjBweCA8IHdpZHRoIDwgOTY0cHgpICB7XG4gICAgICAgIC5yZXN1bHQtaXRlbTpudGgtY2hpbGQoMm4pIC5kZXRhaWxzIHtcbiAgICAgICAgICAgIGxlZnQ6IGluaXRpYWw7XG4gICAgICAgICAgICByaWdodDowO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAY29udGFpbmVyIG1haW4gKCB3aWR0aCA+IDk2NHB4KSAge1xuICAgICAgICAucmVzdWx0LWl0ZW06bnRoLWNoaWxkKDNuKSAuZGV0YWlscyB7XG4gICAgICAgICAgICBsZWZ0OiBpbml0aWFsO1xuICAgICAgICAgICAgcmlnaHQ6MDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYmxvZygpIHtcbiAgLS1wYWRkaW5nICAgICAgICAgIDogNHJlbTtcbiAgLS1ib3JkZXItdGhpY2tuZXNzIDogMDtcbiAgLS1ib3JkZXItcmFkaXVzICAgIDogMDtcbiAgLy8gLS1iYWNrZ3JvdW5kLWNvbG91ciA6IHRyYW5zcGFyZW50O1xuXG4gIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgXCJzdWJ0aXRsZVwiXG4gICAgXCJ0aXRsZVwiXG4gICAgXCJib2R5XCI7XG5cbiAgLnJlc3VsdC1pbWFnZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICBpbWcge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTIwZGVnLCByZ2JhKHdoaXRlLCAxKSA0NSUsIHRyYW5zcGFyZW50IDEyMCUpO1xuICAgIH1cbiAgfVxuXG4gIC5yZXN1bHQtdGl0bGUsIC5yZXN1bHQtc3VidGl0bGUgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlIH1cblxuICAucmVzdWx0LXRpdGxlIHsgICAgIFxuICAgIEBpbmNsdWRlIGhlYWRpbmctaDI7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgfVxuXG4gIC5yZXN1bHQtc3VidGl0bGUge1xuICAgIC0taGVhZGluZy1jb2xvdXI6ICN7JHJlZH07XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBoNCwgdGltZSB7XG4gICAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgdGltZSB7XG4gICAgICBjb2xvcjogJGdyZXk7XG4gICAgfVxuICB9XG5cbiAgLnJlc3VsdC1ib2R5IHsgLS1mb250LWNvbG91cjogI3skYmxhY2t9OyB9XG5cbiAgJi5mZWF0dXJlZCB7XG4gICAgLS1wYWRkaW5nLXJpZ2h0OiA1cmVtO1xuXG4gICAgZ3JpZC1jb2x1bW46IDEgLyBzcGFuIDI7XG5cbiAgICAucmVzdWx0LXRpdGxlIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICBmb250LXNpemU6ICRmb250LXNpemUtaDI7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICdGRUFUVVJFRCc7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlZC1iYWRnZSgpO1xuICAgICAgbGVmdDogMTAwJTtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICB9XG5cbiAgLnJlc3VsdC10aXRsZSwgLnJlc3VsdC1zdWJ0aXRsZSwgLnJlc3VsdC1ib2R5IHtcbiAgICB6LWluZGV4OiAyO1xuICB9XG59XG5cblxuXG5AbWl4aW4gcGFnZSgpIHtcbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgXCJpbWFnZSB0aXRsZVwiXG4gIFwiaW1hZ2UgYm9keVwiXG4gIFwiaW1hZ2UgYm9keVwiXG4gIFwiaW1hZ2UgYm9keVwiO1xuXG4gIC5yZXN1bHQtaW1hZ2Uge1xuICAgIGltZyB7XG4gICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICB9XG4gIH1cbn1cblxuXG5cbkBtaXhpbiBwcm9kdWN0KCkge1xuICAtLWJhZGdlLXNwYWNpbmcgOiAzcmVtO1xuXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0taW1hZ2Utd2lkdGgpIGF1dG87XG5cbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICBcImltYWdlIHRpdGxlXCJcbiAgICBcImltYWdlIHRpdGxlXCJcbiAgICBcImltYWdlIGRhdGFcIlxuICAgIFwiaW1hZ2UgZGF0YVwiO1xuXG4gIC8vIC5yZXN1bHQtdGl0bGUge1xuICAvLyAgIG1hcmdpbi10b3A6ICRnYXA7XG4gIC8vIH1cblxuICAucmVzdWx0LXRpdGxlLCAucmVzdWx0LWJvZHkge1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0tYmFkZ2Utc3BhY2luZykgKiAyKTtcbiAgfVxuXG4gIC5wcm9kdWN0LWRhdGEge1xuICAgIGdyaWQtYXJlYTogZGF0YTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdyaWQtZ2FwOiBjYWxjKCRnYXAgLyAyKSAkZ2FwO1xuICB9XG5cbiAgLnJlc3VsdC1pbWFnZSB7XG4gICAgaW1nIHtcbiAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgfVxuICB9XG5cblxuICBAaW5jbHVkZSBicmVhay1pbig0NTApIHtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgIFwiaW1hZ2UgXCJcbiAgICBcInRpdGxlXCJcbiAgICBcImRhdGFcIjtcblxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdW5zZXQ7XG5cbiAgICAucHJvZHVjdC1kYXRhIHtcbiAgICAgIC8vIG1hcmdpbi10b3A6ICRnYXAtO1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG5cbiAgICAvLyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuXG4gICAgLnJlc3VsdC10aXRsZSwgLnJlc3VsdC1ib2R5IHsgcGFkZGluZy1yaWdodDogMCB9XG4gICAgLy8gLnJlc3VsdC10aXRsZSB7IGFsaWduLXNlbGY6IGNlbnRlciB9XG4gIH1cblxuXG4gICYuaW4tc3RvY2s6OmJlZm9yZSB7XG4gICAgLS1wYWRkaW5nLXkgOiAwLjJlbTtcbiAgICAtLXBhZGRpbmcteCA6IDEwZW07XG5cbiAgICBjb250ZW50OiAnaW4gc3RvY2snO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoMWVtICsgdmFyKC0tcGFkZGluZy15KSk7XG4gICAgcmlnaHQ6IGNhbGMoLTEgKiB2YXIoLS1wYWRkaW5nLXgpKTtcbiAgICBwYWRkaW5nOiAwLjVlbSB2YXIoLS1wYWRkaW5nLXgpO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRibHVlO1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gIH1cbn0iLCJAdXNlICcuLi9fdmFyaWFibGVzJyBhcyAqO1xuQHVzZSAnLi4vX2hlbHBlcnMvbWlzYy5zY3NzJyBhcyAqO1xuXG5AbWl4aW4gdGFnKCkge1xuICAmW2Rpc2FibGVkXSB7IEBpbmNsdWRlIGRpc2FibGVkKCkgfVxuICAmLmNhdGVnb3J5IHtcbiAgICBAaW5jbHVkZSB0YWctYmFzZSgpO1xuICAgIC0tYm9yZGVyLWNvbG91cjogI3skcmVkfTtcbiAgICBAaW5jbHVkZSB0YWctd2l0aC1zZWNvbmRhcnkoKTtcbiAgICAudGFnLXNlY29uZGFyeTpob3ZlciB7IEBpbmNsdWRlIHNlY29uZGFyeS1ob3ZlcigpIH1cbiAgfVxuXG4gICYuY2hlY2tib3gge1xuICAgIEBpbmNsdWRlIHRhZy1jaGVja2JveCgpO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIEJhc2Ugc3R5bGluZ1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbkBtaXhpbiB0YWctYmFzZSgpIHtcbiAgLS1ib3JkZXItcmFkaXVzICAgICAgIDogMHB4O1xuICAtLWZvbnQtY29sb3VyICAgICAgICAgOiAjeyRyZWR9O1xuICAtLWJnLWNvbG91ciAgICAgICAgICAgOiB3aGl0ZTtcbiAgLS1zZWNvbmRhcnktd2lkdGggICAgIDogM2NoO1xuICAtLXNlY29uZGFyeS1wYWRkaW5nLXggOiAzcHg7XG4gIC0tYm9yZGVyLWNvbG91ciAgICAgICA6IHRyYW5zcGFyZW50O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3VyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG4gIGNvbG9yOiB2YXIoLS1mb250LWNvbG91cik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWNvbG91cik7XG4gIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICBmb250LXNpemU6IDEzcHg7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXG4gIC50YWctbGFiZWwge1xuICAgIHBhZGRpbmc6IDNweCAkZ2FwIDNweCAkZ2FwO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIFdpdGggc2Vjb25kYXJ5IHNlY3Rpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5AbWl4aW4gdGFnLXdpdGgtc2Vjb25kYXJ5KCkge1xuICAtLXN5bWJvbC1jb2xvdXIgOiAjeyRyZWR9O1xuXG4gIC50YWctc2Vjb25kYXJ5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zZWNvbmRhcnktcGFkZGluZy14KTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXk0O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2lkdGg6IDNjaDtcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcblxuICAgIHN2ZyB7XG4gICAgICB3aWR0aDogNTAlO1xuICAgICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XG4gICAgfVxuICB9XG59XG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgQ2hlY2tib3ggdGFnc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbkBtaXhpbiB0YWctY2hlY2tib3goKSB7XG4gIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICYgfiBsYWJlbCB7XG4gICAgICBAaW5jbHVkZSB0YWctYmFzZSgpO1xuICAgICAgQGluY2x1ZGUgdGFnLXdpdGgtc2Vjb25kYXJ5KCk7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICAtLWJvcmRlci1jb2xvdXI6ICN7JHJlZH07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmNoZWNrZWQgfiBsYWJlbCB7XG4gICAgICAtLWZvbnQtY29sb3VyOiB3aGl0ZTtcbiAgICAgIC0tYmctY29sb3VyOiAjeyRyZWR9O1xuXG4gICAgICAudGFnLXNlY29uZGFyeSB7IEBpbmNsdWRlIHNlY29uZGFyeS1ob3ZlcihyZ2JhKHdoaXRlLCAwLjMpKSB9XG4gICAgfVxuICB9XG59XG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgU3RhdGVzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuQG1peGluIHNlY29uZGFyeS1ob3ZlcigkY29sb3VyIDogJHJlZCkge1xuICAtLXN5bWJvbC1jb2xvdXI6IHdoaXRlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3VyO1xufSIsIkB1c2UgJ19tb2R1bGVzJyBhcyAqO1xuXG5zZWFyY2gtYmFyIHtcblxuICAtLWZvbnQtc2l6ZSA6IDE2cHg7IFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIGlucHV0W3R5cGU9c2VhcmNoXXtcbiAgICBwYWRkaW5nLWxlZnQ6ICRnYXAzO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRnYXAyO1xuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGxvYWRlcjtcbiAgICBsZWZ0OmF1dG87IHJpZ2h0OiRnYXA7IFxuICB9XG4gIFxuICAmLmxvYWRpbmc6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBsb2FkZXItYW5pbWF0aW9uO1xuICB9XG5cbiAgJjpub3QoLnNob3dpbmctc3VnZ2VzdGlvbnMpIHtcbiAgICB1bC5yZXN1bHRzIHsgZGlzcGxheTpub25lO31cbiAgfVxuXG4gICYuc2hvd2luZy1zdWdnZXN0aW9ucyBpbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gIH1cblxuICBzdmcge1xuICAgIGNvbG9yOiRmb250LWNvbG91cjsgXG4gICAgd2lkdGg6dmFyKC0tZm9udC1zaXplKTtcbiAgICBoZWlnaHQ6dmFyKC0tZm9udC1zaXplKTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogJGdhcDtcbiAgfVxuXG4gIHVsLnJlc3VsdHMge1xuICAgIHdpZHRoOjEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDpjYWxjKDEwMCUgLSAxcHgpO1xuICAgIGxlZnQ6MDtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBib3JkZXItdG9wOjFweCBkYXNoZWQgJGdyZXk0O1xuICAgIC8vIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICAgIC8vIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcbiAgICBtYXgtaGVpZ2h0OiAzMDVweDtcbiAgICBsaSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb247XG4gICAgICBjdXJzb3I6cG9pbnRlcjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgIFxuICAgICAgKyBsaSB7XG4gICAgICAgIGJvcmRlci10b3A6MXB4IHNvbGlkICRncmV5MztcblxuICAgICAgfVxuICAgICAgbWFyayB7XG4gICAgICAgIEBpbmNsdWRlIG1hcmstcmVzZXQoKTtcbiAgICAgICAgY29sb3I6JGJsdWU1O1xuICAgICAgfVxuICAgICAgYSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgcGFkZGluZzokZ2FwMCAkZ2FwO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdGV4dC1hbGlnbjpsZWZ0O1xuICAgICAgICBmb250LXNpemU6Zm9udC1zaXplKDEyKTsgXG4gICAgICAgIGxpbmUtaGVpZ2h0OjEuMjtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgb3V0bGluZTpub25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLmZvY3VzIGEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZTQ7XG4gICAgICAgIC50eXBlLCAmIHsgY29sb3I6d2hpdGU7IH1cbiAgICAgIH1cbiAgICAgIC50eXBlIHtcbiAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgY29sb3I6JGdyZXk7XG4gICAgICAgIGZvbnQtc2l6ZTowLjdlbTtcbiAgICAgICAgb3JkZXI6MTtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgJHRyYW5zaXRpb247XG4gICAgICB9XG4gICAgICAmLm5vLXJlc3VsdCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6JHJlZDtcbiAgICAgICAgbWFyZ2luLXRvcDotMXB4O1xuICAgICAgICBhIHtcbiAgICAgICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZShldmVuKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5MztcbiAgICAgIH1cbiAgICAgICY6bm90KC5uby1yZXN1bHQpIHtcbiAgICAgICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5NDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIi8qIHotaW5kZXhlcyBhcmUgbGFyZ2UgZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhpbmdzIG1pZ2h0IGNoYW5nZVxuICogaW4gdGhlIGZ1dHVyZS4gSW4gb3JkZXIgdG8gYWNjb3VudCBmb3Igc2NhbGFiaWxpdHksIHRoaXMgZ2l2ZXNcbiAqIHJvb20gdG8gbWFrZSBjaGFuZ2VzIGFuZCBub3QgYnJlYWsgdGhlIGVudGlyZSBzaXRlLCBtZWFuaW5nIFxuICogd2Ugd29uJ3QgaGF2ZSB0byBnbyBpbiBhbmQgcmVmYWN0b3IgYSBsb3Qgb2Ygb3VyIGNvZGUuXG4gKi9cbi8qICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgSU5QVVRTXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENPTlRBSU5FUlNcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS1cblx0QmFzZSByZXN1bHQgc3R5bGVzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRWYXJpYXRpb25zXG4tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgQmFzZSBzdHlsaW5nXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgV2l0aCBzZWNvbmRhcnkgc2VjdGlvblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIENoZWNrYm94IHRhZ3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBTdGF0ZXNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5zZWFyY2gtYmFyIHtcbiAgLS1mb250LXNpemU6IDE2cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5zZWFyY2gtYmFyIGlucHV0W3R5cGU9c2VhcmNoXSB7XG4gIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1nYXApICogMyk7XG4gIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0tZ2FwKSAqIDIpO1xufVxuc2VhcmNoLWJhcjo6YWZ0ZXIge1xuICAtLXNpemU6IDEycHg7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiBjYWxjKDUwJSAtIHZhcigtLXNpemUpIC8gMik7XG4gIGxlZnQ6IGNhbGMoNTAlIC0gdmFyKC0tc2l6ZSkgLyAyKTtcbiAgb3BhY2l0eTogMDtcbiAgd2lkdGg6IHZhcigtLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXNpemUpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWxvYWRlci1jb2xvdXIsICM5Njk2OTUpO1xuICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBsb2FkZXItcm90YXRlO1xuICBhbmltYXRpb24tZHVyYXRpb246IDAuNXM7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpO1xuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkO1xufVxuQGtleWZyYW1lcyBsb2FkZXItcm90YXRlIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbn1cbnNlYXJjaC1iYXI6OmFmdGVyIHtcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IHZhcigtLWdhcCk7XG59XG5zZWFyY2gtYmFyLmxvYWRpbmc6OmFmdGVyIHtcbiAgb3BhY2l0eTogMTtcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XG59XG5zZWFyY2gtYmFyOm5vdCguc2hvd2luZy1zdWdnZXN0aW9ucykgdWwucmVzdWx0cyB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5zZWFyY2gtYmFyLnNob3dpbmctc3VnZ2VzdGlvbnMgaW5wdXRbdHlwZT1zZWFyY2hdIHtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG59XG5zZWFyY2gtYmFyIHN2ZyB7XG4gIGNvbG9yOiAjNkE2QTZBO1xuICB3aWR0aDogdmFyKC0tZm9udC1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS1mb250LXNpemUpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IHZhcigtLWdhcCk7XG59XG5zZWFyY2gtYmFyIHVsLnJlc3VsdHMge1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IGNhbGMoMTAwJSAtIDFweCk7XG4gIGxlZnQ6IDA7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCAjZGNkY2RjO1xuICBtYXgtaGVpZ2h0OiAzMDVweDtcbn1cbnNlYXJjaC1iYXIgdWwucmVzdWx0cyBsaSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMnMpIHZhcigtLXRyYW5zaXRpb24tZWFzZSwgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpKSB2YXIoLS10cmFuc2l0aW9uLWRlbGF5LCApO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbnNlYXJjaC1iYXIgdWwucmVzdWx0cyBsaSArIGxpIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGNEY0RjQ7XG59XG5zZWFyY2gtYmFyIHVsLnJlc3VsdHMgbGkgbWFyayB7XG4gIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBib3JkZXItcmFkaXVzOiBpbml0aWFsO1xuICBwYWRkaW5nOiBpbml0aWFsO1xuICB0cmFuc2l0aW9uOiBpbml0aWFsO1xuICBjb2xvcjogIzAwOTVGRjtcbn1cbnNlYXJjaC1iYXIgdWwucmVzdWx0cyBsaSBhIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBwYWRkaW5nOiBjYWxjKHZhcigtLWdhcCkgKiAwLjUpIHZhcigtLWdhcCk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXNpemU6IDAuNzVlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cbnNlYXJjaC1iYXIgdWwucmVzdWx0cyBsaSBhOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cbnNlYXJjaC1iYXIgdWwucmVzdWx0cyBsaS5mb2N1cyBhIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzEwMTI0ZDtcbn1cbnNlYXJjaC1iYXIgdWwucmVzdWx0cyBsaS5mb2N1cyBhIC50eXBlLCBzZWFyY2gtYmFyIHVsLnJlc3VsdHMgbGkuZm9jdXMgYSB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbnNlYXJjaC1iYXIgdWwucmVzdWx0cyBsaSAudHlwZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb2xvcjogIzk2OTY5NTtcbiAgZm9udC1zaXplOiAwLjdlbTtcbiAgb3JkZXI6IDE7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMnMpIHZhcigtLXRyYW5zaXRpb24tZWFzZSwgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpKSB2YXIoLS10cmFuc2l0aW9uLWRlbGF5LCApO1xufVxuc2VhcmNoLWJhciB1bC5yZXN1bHRzIGxpLm5vLXJlc3VsdCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNERjMwMzU7XG4gIG1hcmdpbi10b3A6IC0xcHg7XG59XG5zZWFyY2gtYmFyIHVsLnJlc3VsdHMgbGkubm8tcmVzdWx0IGEge1xuICBjb2xvcjogd2hpdGU7XG59XG5zZWFyY2gtYmFyIHVsLnJlc3VsdHMgbGk6bnRoLW9mLXR5cGUoZXZlbikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNEY0O1xufVxuQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgc2VhcmNoLWJhciB1bC5yZXN1bHRzIGxpOm5vdCgubm8tcmVzdWx0KTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RjZGNkYztcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBVbml0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQHVzZSBcInNhc3M6bWF0aFwiO1xuQHVzZSAnc2FzczpzdHJpbmcnO1xuQHVzZSAnc2FzczptZXRhJztcblxuLy8gVGhpcyB1bml0cyBjcmVhdG9yIHdpbGwgcmVuZGVyIHNpeCBwb3NpdGl2ZSBhbmQgc2l4IG5lZ2F0aXZlIHNhc3MgdmFyaWFibGVzIGZvciBcbi8vIGdhcHMsIHNwYWNlcnMsIGFuZCBndXR0ZXJzIHJlbGF0aXZlIHRvIHRoZSBiYXNldiB2YWx1ZXMgZGVmaW5lZCBiZWxvdy5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCYXNlIFZhbHVlcyBcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vLyBAc2VlIGh0dHBzOi8vY29kZXBlbi5pby9tYXJrbm90dG9uL3Blbi9FeFBiTkdlXG5cbi8vIFRoZXNlIHRocmVlIHZhbHVlcyB3aWxsIGFjdCBhIGNvbnN0YW50IGJhc2VsaW5lIGZvciBhbGwgZm9sbG93aW5nIHVuaXQgZGVsY2FyYXRpb25zLlxuXG4vLyBHYXBzIG11c3QgdXNlIGFuIGFic29sdXRlIGFuZCBzdGF0aWMgJ3B4JyB1bml0LiBJdCBzaG91bGQgbm90IGJlIHJlbGF0aXZlIHRvIGFueVxuLy8gcGFyZW50IGNvbnRhaW5lciBhbmQgaXMgbm90IGludGVuZGVkIGZvciBmb250IHNpemVzLCBzbyB5b3Ugc2hvdWxkIG5vdCB1c2UgJ3JlbScgb3IgJ2VtJy4gXG4kZ2FwIDogMTZweCAhZGVmYXVsdDtcbiRiYXNlLWdhcCA6ICRnYXA7XG5cbi8vIFNwYWNlcnMgbXVzdCB1c2UgYSAndmgnIHVuaXQgc28gdGhleSBhcmUgcmVsYXRpdmUgdG8gdGhlIHVzZXJzIHZpZXdwb3J0IGhlaWdodC13aXNlLlxuLy8gVGhleSBzaG91bGQgcHJpbWFyaWx5IGJlIHVzZWQgZm9yIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIG9uIGEgY29tcG9uZW50IGxldmVsLlxuJHNwYWNlciA6IDR2aCAhZGVmYXVsdDsgXG4kYmFzZS1zcGFjZXIgOiAkc3BhY2VyOyBcblxuLy8gR3V0dGVycyBtdXN0IHVzZSBhICd2dycgdW5pdCBzbyB0aGV5IGFyZSByZWxhdGl2ZSB0byB0aGUgdXNlcnMgdmlld3BvcnQgd2lkdGgtd2lzZS4gXG4vLyBUaGV5IHNob3VsZCBwcmltYXJpbHkgYmUgdXNlZCBmb3IgdGhlIGxlZnQgYW5kIHJpZ2h0IHBhZGRpbmcgb3IgbWFyZ2luIG9uIGEgcGFyZW50IGxldmVsLlxuLy8gQXMgYSBzdWdnZXN0aW9uLCB0aGlzIGd1dHRlciBjb25zdGFudCBzaG91bGQgYmUgaGFsZiB0aGUgc2l6ZSBvZiB0aGUgc3BhY2VyIHZhbHVlLlxuJGd1dHRlciA6IDN2dyAhZGVmYXVsdDtcbiRiYXNlLWd1dHRlciA6ICRndXR0ZXI7IFxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXNib2x1dGUgVW5pdHMgXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBHYXBzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gR2FwcyBhcmUgYW4gYWJzb2x1dGUgdW5pdCAocHgpIGludGVuZGVkIHRvIGJlIHVzZWQgb24gaW5kaXZpZHVhbCBlbGVtZW50cyB3aXRoaW4gYSBjb21wb25lbnRlZC4gXG4vLyBUaGUgYWltIGlzIHRvIHJldGFpbiBjb25zaXN0YW50IHNwYWNpbmcgYW1vbmdzdCBibG9jaywgaW5saW5lLCB0YWJsZSBhbmQgZ3JvdXAgaHRtbCBlbGVtZW50cy5cblxuQGZ1bmN0aW9uIGdhcCgkYW1vdW50IDogMSkge1xuICBAaWYgKCAkYW1vdW50ID09IDEgKSB7IFxuICAgIEByZXR1cm4gdmFyKC0tZ2FwKTsgXG4gIH0gQGVsc2UgeyBcbiAgICBAcmV0dXJuIGNhbGModmFyKC0tZ2FwKSAqICN7JGFtb3VudH0pOyBcbiAgfVxufVxuXG4kZ2FwMCA6IGdhcCgwLjUpOyAkZ2FwMC0gOiBnYXAoLTAuNSk7XG4kZ2FwICA6IGdhcCgxKTsgICAkZ2FwLSAgOiBnYXAoLTEpO1xuJGdhcDIgOiBnYXAoMik7ICAgJGdhcDItIDogZ2FwKC0yKTtcbiRnYXAzIDogZ2FwKDMpOyAgICRnYXAzLSA6IGdhcCgtMyk7XG4kZ2FwNCA6IGdhcCg0KTsgICAkZ2FwNC0gOiBnYXAoLTQpO1xuJGdhcDUgOiBnYXAoNSk7ICAgJGdhcDUtIDogZ2FwKC01KTtcbiRnYXA2IDogZ2FwKDYpOyAgICRnYXA2LSA6IGdhcCgtNik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSZWxhdGl2ZSBVbml0cyBcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBmdW5jdGlvbiBfZHluYW1pYy11bml0KCRjdXN0b20tcHJvcGVydHksICRhbW91bnQsICRtaW4sICRtYXgsICR1c2UtbmVnYXRpdmUgOiBmYWxzZSwgJHVzZS1jbGFtcCA6IHRydWUpIHtcblxuICAvLyBDYWxjIE1ldGhvZFxuICAkcmVzdWx0IDogY2FsYygoI3skY3VzdG9tLXByb3BlcnR5fSAqICN7JGFtb3VudH0pICsgI3tpZihzYXNzKCRtaW4gPT0gMCk6IDBweDsgZWxzZTogJG1pbil9KTtcbiAgXG4gIC8vIENsYW1wIE1ldGhvZFxuICBAaWYgKCAkdXNlLWNsYW1wICkge1xuICAgIEBpZiAoICRhbW91bnQgPT0gMCApIHtcbiAgICAgICRyZXN1bHQgOiBjbGFtcCgje21hdGguZGl2KCRtaW4sIDIpfSwgI3skY3VzdG9tLXByb3BlcnR5fSAqIDAuNSwgI3skbWF4fSk7XG4gICAgfSBAZWxzZSBpZiAoICRhbW91bnQgPT0gMSApIHtcbiAgICAgICRyZXN1bHQgOiBjbGFtcCgjeyRtaW59LCAjeyRjdXN0b20tcHJvcGVydHl9LCAjeyRtYXh9KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXN1bHQgOiBjbGFtcCgjeyRtaW59LCAjeyRjdXN0b20tcHJvcGVydHl9ICogI3skYW1vdW50fSwgI3skbWF4fSk7XG4gICAgfVxuICB9IFxuXG4gIEBpZiAoICR1c2UtbmVnYXRpdmUgKSB7XG4gICAgJHJlc3VsdCA6IGNhbGMoLTEgKiAjeyRyZXN1bHR9KTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlc3VsdDtcblxufSBcblxuLy8gU3BhY2VycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNwYWNlcnMgYXJlIGEgcmVsYXRpdmUgdmlld3BvcnQgaGVpZ2h0ICh2aCkgdW5pdCBpbnRlbmRlZCB0byBiZSB1c2VkIG9uIGEgY29tcG9uZW50ZWQgbGV2ZWwuXG4vLyBUaGUgYWltIGlzIHRvIHJldGFpbiBjb25zaXN0YW50IHRvcCBhbmQgYm90dG9tIHNwYWNpbmcgYW1vbmdzdCAnc2VjdGlvbicgYW5kICdjdXN0b20nIGVsZW1lbnRzLlxuLy8gU3BhY2VycyB3aWxsIGVxdWF0ZSB0byBzb21ldGhpbmcgbGlrZTogYCgkc3BhY2VyICogeCkgKyAkZ2FwYC4gXG4vLyBUaGUgJyRnYXAnIGlzIGFkZGVkIHNvIHRoYXQgdmggc3BhY2luZyB3aWxsIG5ldmVyIHNjYWxlIHRvbyBjbG9zZSB0byAwcHguIFxuXG5AZnVuY3Rpb24gc3BhY2VyKCRhbW91bnQgOiAxLCAkbWluIDogJGJhc2UtZ2FwLCAkbWF4IDogbnVsbCwgJHVzZS1uZWdhdGl2ZSA6IGZhbHNlLCAkdXNlLWNsYW1wIDogdHJ1ZSkge1xuICBAaWYgKCAkYW1vdW50ID09IDApIHsgJGFtb3VudCA6IDAuNTsgJG1pbiA6IG1hdGguZGl2KCRtaW4sIDIpOyB9XG4gIEBpZiAoIG1ldGEudHlwZS1vZigkbWF4KSA9PSAnbnVsbCcgKSB7IFxuICAgIEBpZiAoIG1ldGEudHlwZS1vZigkbWluKSA9PSAnc3RyaW5nJyBhbmQgc3RyaW5nLmluZGV4KCRtaW4sICd2YXInKSApIHtcbiAgICAgICRtYXggOiBjYWxjKCN7JG1pbn0gKiAjeyRhbW91bnQgKyAxfSk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgJG1heCA6ICN7JG1pbiAqICgkYW1vdW50ICsgMSl9OyBcbiAgICB9XG4gIH1cbiAgQHJldHVybiBfZHluYW1pYy11bml0KHZhcigtLXNwYWNlciksICRhbW91bnQsICRtaW4sICRtYXgsICR1c2UtbmVnYXRpdmUsICR1c2UtY2xhbXApO1xufVxuXG4kc3BhY2VyMCA6IHZhcigtLXNwYWNlcjApOyAkc3BhY2VyMC0gOiB2YXIoLS1zcGFjZXIwLSk7XG4kc3BhY2VyICA6IHZhcigtLXNwYWNlcjEpOyAkc3BhY2VyLSAgOiB2YXIoLS1zcGFjZXIxLSk7XG4kc3BhY2VyMiA6IHZhcigtLXNwYWNlcjIpOyAkc3BhY2VyMi0gOiB2YXIoLS1zcGFjZXIyLSk7XG4kc3BhY2VyMyA6IHZhcigtLXNwYWNlcjMpOyAkc3BhY2VyMy0gOiB2YXIoLS1zcGFjZXIzLSk7XG4kc3BhY2VyNCA6IHZhcigtLXNwYWNlcjQpOyAkc3BhY2VyNC0gOiB2YXIoLS1zcGFjZXI0LSk7XG4kc3BhY2VyNSA6IHZhcigtLXNwYWNlcjUpOyAkc3BhY2VyNS0gOiB2YXIoLS1zcGFjZXI1LSk7XG4kc3BhY2VyNiA6IHZhcigtLXNwYWNlcjYpOyAkc3BhY2VyNi0gOiB2YXIoLS1zcGFjZXI2LSk7XG5cbi8vIEd1dHRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBHdXR0ZXJzIGFyZSBhIHJlbGF0aXZlIHZpZXdwb3J0IHdpZHRoICh2dykgdW5pdCBpbnRlbmRlZCB0byBiZSB1c2VkIG9uIGEgcGFyZW50IGxldmVsO1xuLy8gZm9yIGV4YW1wbGUsIGEgd3JhcHBlciBjb250YWluZXIgb3IgYm9keSB3aXRoIG5lc3RlZCBjb21wb25lbnRzLiBcbi8vIFRoZSBhaW0gaXMgdG8gcmV0YWluIGNvbnNpc3RhbnQgbGVmdCBhbmQgcmlnaHQgc3BhY2luZyBhbW9uZ3N0ICdzZWN0aW9uJyBhbmQgJ2N1c3RvbScgZWxlbWVudHMuXG4vLyBHdXR0ZXJzIHdpbGwgZXF1YXRlIHRvIHNvbWV0aGluZyBsaWtlOiBgKCRndXR0ZXIgKiB4KSArICRnYXBgLiBcbi8vIFRoZSAnJGdhcCcgaXMgYWRkZWQgc28gdGhhdCB2dyBzcGFjaW5nIHdpbGwgbmV2ZXIgc2NhbGUgdG9vIGNsb3NlIHRvIDBweC4gXG5cbkBmdW5jdGlvbiBndXR0ZXIoJGFtb3VudCA6IDEsICRtaW4gOiAkYmFzZS1nYXAsICRtYXggOiBudWxsLCAkdXNlLW5lZ2F0aXZlIDogZmFsc2UsICR1c2UtY2xhbXAgOiB0cnVlKSB7XG4gIEBpZiAoICRhbW91bnQgPT0gMCkgeyAkYW1vdW50IDogMC41OyAkbWluIDogbWF0aC5kaXYoJG1pbiwgMik7IH1cbiAgQGlmICggbWV0YS50eXBlLW9mKCRtYXgpID09ICdudWxsJyApIHsgXG4gICAgQGlmICggbWV0YS50eXBlLW9mKCRtaW4pID09ICdzdHJpbmcnIGFuZCBzdHJpbmcuaW5kZXgoJG1pbiwgJ3ZhcicpICkge1xuICAgICAgJG1heCA6IGNhbGMoI3skbWlufSAqICN7JGFtb3VudCArIDF9KTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICAkbWF4IDogI3skbWluICogKCRhbW91bnQgKyAxKX07IFxuICAgIH1cbiAgfVxuICBAcmV0dXJuIF9keW5hbWljLXVuaXQodmFyKC0tZ3V0dGVyKSwgJGFtb3VudCwgJG1pbiwgJG1heCwgJHVzZS1uZWdhdGl2ZSwgJHVzZS1jbGFtcCk7XG59XG5cbiRndXR0ZXIwIDogdmFyKC0tZ3V0dGVyMCk7ICRndXR0ZXIwLSA6IHZhcigtLWd1dHRlcjAtKTtcbiRndXR0ZXIgIDogdmFyKC0tZ3V0dGVyMSk7ICRndXR0ZXItICA6IHZhcigtLWd1dHRlcjEtKTtcbiRndXR0ZXIyIDogdmFyKC0tZ3V0dGVyMik7ICRndXR0ZXIyLSA6IHZhcigtLWd1dHRlcjItKTtcbiRndXR0ZXIzIDogdmFyKC0tZ3V0dGVyMyk7ICRndXR0ZXIzLSA6IHZhcigtLWd1dHRlcjMtKTtcbiRndXR0ZXI0IDogdmFyKC0tZ3V0dGVyNCk7ICRndXR0ZXI0LSA6IHZhcigtLWd1dHRlcjQtKTtcbiRndXR0ZXI1IDogdmFyKC0tZ3V0dGVyNSk7ICRndXR0ZXI1LSA6IHZhcigtLWd1dHRlcjUtKTtcbiRndXR0ZXI2IDogdmFyKC0tZ3V0dGVyNik7ICRndXR0ZXI2LSA6IHZhcigtLWd1dHRlcjYtKTtcbiIsIkB1c2UgJy4uL192YXJpYWJsZXMnIGFzICo7XG5AdXNlICdtb2R1bGVzL2NvbG91ci9lbmNvZGUnIGFzIGNvbG91cjtcblxuXG5AbWl4aW4gbG9hZGVyKCRzaXplIDogMTJweCwgJGJvcmRlci10aGlja25lc3MgOiAycHgsICRjb2xvdXIgOiAkZ3JleSkge1xuICAtLXNpemUgOiAjeyRzaXplfTsgXG4gIGNvbnRlbnQ6XCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6Y2FsYyg1MCUgLSAodmFyKC0tc2l6ZSkgLyAyKSk7IFxuICBsZWZ0OmNhbGMoNTAlIC0gKHZhcigtLXNpemUpIC8gMikpOyBcbiAgb3BhY2l0eTogMDtcbiAgd2lkdGg6dmFyKC0tc2l6ZSk7IFxuICBoZWlnaHQ6dmFyKC0tc2l6ZSk7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiRib3JkZXItdGhpY2tuZXNzIHNvbGlkIHZhcigtLWxvYWRlci1jb2xvdXIsICRjb2xvdXIpO1xuICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBsb2FkZXItcm90YXRlO1xuICBhbmltYXRpb24tZHVyYXRpb246IDAuNXM7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgJGVhc2UtaW4tb3V0O1xuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkO1xuICBAa2V5ZnJhbWVzIGxvYWRlci1yb3RhdGUge1xuICAgIGZyb20ge3RyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH1cbiAgICB0byB7dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgfVxuICBAY29udGVudDtcbn1cblxuQG1peGluIGxvYWRlci1hbmltYXRpb24geyBcbiAgb3BhY2l0eToxOyBcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XG4gIEBjb250ZW50O1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvdXJzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8gRXhwbGljaXQgQ29sb3VycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8vIEV4cGxpY2l0IGNvbG91cnMgYXJlIGEgd2hhdCB0aGV5IGFyZS4gR3JlZW4gaXMgZ3JlZW4sIGJsdWUgaXMgYmx1ZS4uLiBubyBvYnNjdXJpdHkuXG4vLy8gV2Ugc3VmZml4IG51bWJlcnMgdG8gZGVmaW5lIHZhcmlhdGlvbnMgb2YgY29sb3VycyBpbiBubyBwYXJ0aWN1bGFyIG9yZGVyIG9mIHNoYWRlLiBcbi8vLyBFeGFtcGxlOiBncmVlbjEsIGdyZWVuMiwgZ3JlZW4zLCBncmVlbjQuIFRoaXMgaXMgc28gd2UgY2FuIGltbWlkaWF0ZWx5IHNlZSBob3cgXG4vLy8gbWFueSBvcHRpb25zIHdlIGhhdmUgZm9yIGEgc2luZ2xlIGNvbG91ciBhdCBhIGdsYW5jZS4gSWYgeW91IHNlZSAkZ3JlZW40LCB5b3Uga25vdyB0aGlzXG4vLy8gcHJvamVjdCBpcyB1c2luZyBmb3VyIHZhcmlhdGlvbnMgb2YgZ3JlZW4uIFRoaXMgaXMgYWxzbyBvZnRlbiB1c2VmdWwgYmVjYXVzZSBtYW55IGRldmVsb3BtZW50IFxuLy8vIHRvb2xzIHdpbGwgYXV0by1zdWdnZXN0IGNvbG91cnMgd2l0aCBhY3R1YWwgZXhhbXBsZXMgb2YgdGhlIGNvbG91ci4gXG4vLy8gVGhlIFBhbGxldGVzIG1vZHVsZSAoYXQgdGhlIGJvdHRvbSBvZiB0aGlzIGZpbGUpIHdpbGwgb3V0cHV0IHNoYWRlZCBuYW1lZCB2YXJpYXRpb25zLCBcbi8vLy8gPGNvbG91cj4tZGFyayBhbmQgPGNvbG91cj4tbGlnaHQuIElmIHlvdSBuZWVkIGFkZGl0aW9uYWwgc2hhZGVzIHBsZWFzZSByZWZyYWltIGZyb20gZ29pbmcgZG93biBcbi8vLyB0aGUgJ2xpZ2h0ZXInLCAnbGlnaHRlc3QnLCAnZGFya2VyJywgJ2Rhcmtlc3QnIGNvbnZlbnRpb24uIFRoZXNlIGFyZSBub3QgcGFydGljdWFybHkgbGVnaWFibGUgXG4vLy8gYW5kIHRoZXkgYXJlIGxpbWl0ZWQgYnkgaG93IGNyZWF0aXZlIChjb25mdXNpbmcpIHlvdXIgd29yZGluZyBjYW4gYmUuIFxuLy8vIEl0IGlzIGJldHRlciB0byBkZWZpbmUgYSBuZXcgZXhwbGNpdCBjb2xvdXIgZW50aXJlbHkuIFxuLy8vIEBzZWUgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS93aGF0LWRvLXlvdS1uYW1lLWNvbG9yLXZhcmlhYmxlcy9cblxuJGJsdWUgICAgICAgICAgICAgOiAjMTMxZjZiOyAvLyBQcmltYXJ5XG4kYmx1ZTIgICAgICAgICAgICA6ICMyOTJCNjg7IC8vIE5ha2VkIExpbmtcbiRibHVlMyAgICAgICAgICAgIDogIzNkM2Y3ZjsgLy8gTGlnbnQgR3JhZGllbnRcbiRibHVlNCAgICAgICAgICAgIDogIzEwMTI0ZDsgLy8gRGFyayBHcmFkaWVudFxuJGJsdWU1ICAgICAgICAgICAgOiAjMDA5NUZGOyAvLyBOYXZpZ2F0aW9uIGxpbmsgaG92ZXIgXG5cbiRyZWQgICAgICAgICAgICAgIDogI0RGMzAzNTsgLy8gU2Vjb25kYXJ5IC0gVGhpcyBwYXNzZXMgdGhlIGNvbnRyYXN0IHJhdGlvIGFjY2Vzc2liaWxpdHkgdGVzdCBpbiBHb29nbGVzIExpZ2h0aG91c2UgXG5cbiRncmV5ICAgICAgICAgICAgIDogIzk2OTY5NTtcbiRncmV5MiAgICAgICAgICAgIDogIzZBNkE2QTsgLy8gRm9udFxuJGdyZXkzICAgICAgICAgICAgOiAjRjRGNEY0OyAvLyBMaWdodGVyIEdyZXkgQmFja2dyb3VuZFxuJGdyZXk0ICAgICAgICAgICAgOiAjZGNkY2RjO1xuJGdyZXk1ICAgICAgICAgICAgOiAjQjFCMUIxOyAvLyBTcGFjZXJzIDxocj5cbiRncmV5NiAgICAgICAgICAgIDogIzMzMzIzNjsgLy8gTmF2aWdhdGlvbiBsaW5rIGhvdmVyICBcbiRncmV5NyAgICAgICAgICAgIDogI2U5ZTllOTtcbiRncmVlbiAgICAgICAgICAgIDogIzUwQkMwODtcbiR5ZWxsb3cgICAgICAgICAgIDogI0Y2RjREQjsgLy8gRGlzY2xhaW1lciBCYWNrZ3JvdW5kXG4keWVsbG93MiAgICAgICAgICA6ICNGQ0IwMDI7XG4kYmxhY2sgICAgICAgICAgICA6ICMxRTFBMUE7XG4kd2hpdGUgICAgICAgICAgICA6ICNGRkZGRkY7XG5cbiRvcmFuZ2UgICAgICAgICAgIDogI2VkNjIyNDtcblxuXG4kdHJhbnNwYXJlbnQgICAgICA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7XG4kbWFyayAgICAgICAgICAgICA6ICRibHVlNTsgLy8gYmFja2dyb3VuZCBjb2xvdXIgZm9yIDxtYXJrPiB0YWdzXG5cbiRkZWZhdWx0LWdyYWRpZW50IDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSByaWdodCwgJGJsdWUgNSUsICRibGFjayA2NiUpO1xuJHJldmVyc2UtZ3JhZGllbnQgOiBsaW5lYXItZ3JhZGllbnQoMTIwZGVnLCAjMTAxMjRkIDAlLCAkYmx1ZSA4MCUpO1xuJGxpZ2h0LWdyYWRpZW50ICAgOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGJvdHRvbSwgIzEwMTI0ZCA1NSUsICMxNzI1ODIgMTAwJSk7XG5cblxuLy8vXG4kcHJpbWFyeTogJGJsdWU7XG4vLy9cblxuXG5cblxuLy8vIFRoZW1lcyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJHRoZW1lLWRlZmF1bHQtcGFnZS1iYWNrZ3JvdW5kICAgIDogJGRlZmF1bHQtZ3JhZGllbnQ7XG4kdGhlbWUtZGVmYXVsdC1jb250ZW50LWJhY2tncm91bmQgOiAkdHJhbnNwYXJlbnQ7XG4kdGhlbWUtZGVmYXVsdC1uYXYtYmFja2dyb3VuZCAgICAgOiAkdHJhbnNwYXJlbnQ7XG4kdGhlbWUtZGVmYXVsdC1uYXYtYmFja2dyb3VuZC1tb2IgOiAkd2hpdGU7XG4kdGhlbWUtZGVmYXVsdC1uYXYtZm9udCAgICAgICAgICAgOiAkd2hpdGU7XG4kdGhlbWUtZGVmYXVsdC1uYXYtZm9udC1tb2IgICAgICAgOiAkYmx1ZTtcbiR0aGVtZS1kZWZhdWx0LW5hdi1zcGFjaW5nLWNvbG91ciA6IHJnYmEoJGJsdWUsIDAuMyk7XG4kdGhlbWUtZGVmYXVsdC1mb250ICAgICAgICAgICAgICAgOiAkd2hpdGU7XG4kdGhlbWUtZGVmYXVsdC1oZWFkaW5nICAgICAgICAgICAgOiAkd2hpdGU7XG4kdGhlbWUtZGVmYXVsdC1hY2NlbnRcdFx0XHRcdFx0ICAgIDogJHJlZDtcbiR0aGVtZS1kZWZhdWx0LWxvZ28gICAgICAgICAgICAgICA6ICR3aGl0ZTtcblxuJHRoZW1lLXdoaXRlLXBhZ2UtYmFja2dyb3VuZCAgICAgIDogJGxpZ2h0LWdyYWRpZW50O1xuJHRoZW1lLXdoaXRlLWNvbnRlbnQtYmFja2dyb3VuZCAgIDogI2Y4ZjhmODtcbiR0aGVtZS13aGl0ZS1uYXYtYmFja2dyb3VuZCAgICAgICA6ICR0cmFuc3BhcmVudDtcbiR0aGVtZS13aGl0ZS1uYXYtYmFja2dyb3VuZC1tb2IgICA6ICRibHVlO1xuJHRoZW1lLXdoaXRlLW5hdi1mb250ICAgICAgICAgICAgIDogJHdoaXRlO1xuJHRoZW1lLXdoaXRlLW5hdi1mb250LW1vYiAgICAgICAgIDogJHdoaXRlO1xuJHRoZW1lLXdoaXRlLW5hdi1zcGFjaW5nLWNvbG91ciAgIDogcmdiYSgkd2hpdGUsIDAuMyk7XG4kdGhlbWUtd2hpdGUtZm9udCAgICAgICAgICAgICAgICAgOiAkYmxhY2s7XG4kdGhlbWUtd2hpdGUtaGVhZGluZyAgICAgICAgICAgICAgOiAkYmx1ZTtcbiR0aGVtZS13aGl0ZS1hY2NlbnRcdFx0XHRcdFx0ICAgICAgOiAkdGhlbWUtZGVmYXVsdC1hY2NlbnQ7XG4kdGhlbWUtd2hpdGUtbG9nbyAgICAgICAgICAgICAgICAgOiAkd2hpdGU7XG5cbiR0aGVtZS1ibGFjay1wYWdlLWJhY2tncm91bmQgICAgICA6ICRkZWZhdWx0LWdyYWRpZW50O1xuJHRoZW1lLWJsYWNrLWNvbnRlbnQtYmFja2dyb3VuZCAgIDogJGJsYWNrO1xuJHRoZW1lLWJsYWNrLW5hdi1iYWNrZ3JvdW5kICAgICAgIDogJHdoaXRlO1xuJHRoZW1lLWJsYWNrLW5hdi1iYWNrZ3JvdW5kLW1vYiAgIDogJHdoaXRlO1xuJHRoZW1lLWJsYWNrLW5hdi1mb250ICAgICAgICAgICAgIDogJGJsdWU7XG4kdGhlbWUtYmxhY2stbmF2LWZvbnQtbW9iICAgICAgICAgOiAkYmx1ZTtcbiR0aGVtZS1ibGFjay1uYXYtc3BhY2luZy1jb2xvdXIgICA6IHJnYmEoJGJsdWUsIDAuMyk7XG4kdGhlbWUtYmxhY2stZm9udCAgICAgICAgICAgICAgICAgOiAkd2hpdGU7XG4kdGhlbWUtYmxhY2staGVhZGluZyAgICAgICAgICAgICAgOiAkd2hpdGU7XG4kdGhlbWUtYmxhY2stYWNjZW50XHRcdFx0XHRcdCAgICAgIDogJHRoZW1lLWRlZmF1bHQtYWNjZW50O1xuJHRoZW1lLWJsYWNrLWxvZ28gICAgICAgICAgICAgICAgIDogJGJsdWU7XG5cbi8vLyBQYWxldHRlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLy8gQnkgbG9hZGluZyBjb25maWd1cmF0aW9ucyBpbnRvIHRoaXMgJ3BhbGxldGUnIG1vZHVsZSwgd2Ugd2lsbCBiZSBhYmxlXG4vLy8gdG8gZGVjbGFyZSB2YXJpYW50cyBvZiBhIGZldyBjb21tb24gY29sb3Vycy4gWW91IGNhbiBhbHNvIGFkanVzdCB0aGUgbGlnaHRuZXNzXG4vLy8gb3IgZGFya25lc3Mgb2YgZWFjaCB2YXJpYW50IGJ5IHBhc3NpbmcgaW4gdGhlIHJlbGV2YW50IHByaXZhdGUgcnVsZXMuIFxuLy8vIFBhbGV0dGUgd2lsbCBhbHNvIGV4cG9zZSBwb3B1bGFyIHNvY2lhbCBtZWRpYSBjb2xvdXJzIGFuZCB0aGUgWWVsbG8gYnJhbmQgY29sb3VyLlxuLy8vIEBzZWUgaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vYXQtcnVsZXMvZm9yd2FyZCNjb25maWd1cmluZy1tb2R1bGVzXG4vLy8gQG91dHB1dCAkZ3JlZW4gOiAjMDI5MjlBOyAkZ3JlZW4tZGFyayA6ICMyNTY1Njk7ICRncmVlbi1saWdodDogIzA0YjljNDtcblxuQGZvcndhcmQgJ2NyZWF0ZS9wYWxldHRlJ3dpdGggKCRibHVlIDogJGJsdWUsXG5cdCRyZWQgOiAkcmVkLFxuXHQkZ3JleSA6ICRncmV5LFxuXHQkeWVsbG93IDogJHllbGxvdyxcblx0JGdyZWVuIDogJGdyZWVuLFxuXHQkYmxhY2sgOiAkYmxhY2spO1xuXG4kY29tcG9uZW50LXRoZW1lcyA6IChcInJlZFwiOiAkcmVkLCBcImJsdWVcIjogJGJsdWUsIFwiZ3JleVwiOiAkZ3JleTMsIFwid2hpdGVcIiA6ICR3aGl0ZSk7IiwiQHVzZSAnLi4vX3ZhcmlhYmxlcycgYXMgKjtcblxuQG1peGluIG1hcmsoKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvdXJzLW1hcms7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czogY2FsYygjeyRib3JkZXItcmFkaXVzfSAvIDIpO1xuICBwYWRkaW5nOjAgNXB4O1xuICB0cmFuc2l0aW9uOiBjb2xvciAkdHJhbnNpdGlvbiwgYmFja2dyb3VuZC1jb2xvciAkdHJhbnNpdGlvbjtcbn1cblxuQG1peGluIG1hcmstcmVzZXQoKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBib3JkZXItcmFkaXVzOiBpbml0aWFsO1xuICBwYWRkaW5nOmluaXRpYWw7XG4gIHRyYW5zaXRpb246IGluaXRpYWw7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLyBIb3ZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2hvdmVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gaG92ZXIoJHNlbGVjdG9yIDogbnVsbCkge1xuICBAbWVkaWEgKCBob3ZlciA6IGhvdmVyICkge1xuICAgICY6aG92ZXIge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzZWxlY3RvciB7XG4gICAgJiN7JHNlbGVjdG9yfSB7IFxuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn0iXX0= */