.text--large{font-size:24px;font-size:1.4117647059rem;line-height:1.5}.text--large{font-size:24px;line-height:34px}.text--medium{font-size:16px;line-height:29px}.text--tiny{font-size:13px;line-height:25px}.text--small{font-size:14px;line-height:26px}.text--initial{text-transform:initial}.heading-0{font-size:55px;line-height:64px;font-family:"RocGroteskBold",sans-serif;color:#000;font-weight:600;letter-spacing:-0.02rem;margin-bottom:20px}@media screen and (min-width: 1024px){.heading-0{font-size:120px;line-height:140px}}.heading-1-alt{font-size:55px;line-height:64px;font-family:"Roboto",sans-serif;color:#000;font-weight:500;letter-spacing:-0.03rem;margin-bottom:20px}@media screen and (min-width: 1024px){.heading-1-alt{font-size:90px;line-height:100px}}.heading-2-alt{font-size:48px;line-height:58px;font-family:"RocGroteskBold",sans-serif;color:#000;font-weight:600;letter-spacing:-0.03rem;margin-bottom:20px}.heading-1,.heading-2,.heading-3,.heading-4,.heading-5,.heading-6{display:block}.mod_breadcrumb ol{list-style:none;margin:0;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px}.mod_breadcrumb li{margin:0;padding:0;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mod_breadcrumb li:before{content:"»";margin-right:10px;color:#9e9e9e}.mod_breadcrumb li:first-child:before{display:none}.mod_breadcrumb li a{text-decoration:underline;color:#252424}
.text--large{font-size:24px;font-size:1.4117647059rem;line-height:1.5}.text--large{font-size:24px;line-height:34px}.text--medium{font-size:16px;line-height:29px}.text--tiny{font-size:13px;line-height:25px}.text--small{font-size:14px;line-height:26px}.text--initial{text-transform:initial}.heading-0{font-size:55px;line-height:64px;font-family:"RocGroteskBold",sans-serif;color:#000;font-weight:600;letter-spacing:-0.02rem;margin-bottom:20px}@media screen and (min-width: 1024px){.heading-0{font-size:120px;line-height:140px}}.heading-1-alt{font-size:55px;line-height:64px;font-family:"Roboto",sans-serif;color:#000;font-weight:500;letter-spacing:-0.03rem;margin-bottom:20px}@media screen and (min-width: 1024px){.heading-1-alt{font-size:90px;line-height:100px}}.heading-2-alt{font-size:48px;line-height:58px;font-family:"RocGroteskBold",sans-serif;color:#000;font-weight:600;letter-spacing:-0.03rem;margin-bottom:20px}.heading-1,.heading-2,.heading-3,.heading-4,.heading-5,.heading-6{display:block}.section{position:relative;z-index:1;padding:60px 0}@media screen and (min-width: 721px){.section{padding:150px 0}}.section--bottom-none{padding-bottom:0}.section--top-none{padding-top:0}.section--bottom-small{padding-bottom:65px}.section--top-small{padding-top:65px}.section--bottom-double{padding-bottom:105px}@media screen and (min-width: 1024px){.section--bottom-double{padding-bottom:210px}}.section--top-double{padding-top:105px}@media screen and (min-width: 1024px){.section--top-double{padding-top:210px}}.section--gradient1{background:linear-gradient(45deg, rgb(0, 181, 226) 0%, rgb(0, 181, 226) 20%, rgb(191, 223, 38) 80%, rgb(191, 223, 38) 100%)}.section--gradient1 h1,.section--gradient1 h2,.section--gradient1 h3,.section--gradient1 h4,.section--gradient1 h5,.section--gradient1 h6,.section--gradient1 p{color:#fff}.section--grey7{background:#f1f3f2}.section--grey7 .heading-2-alt{color:#252424}.section--map{background-position:center;background-size:contain}@media screen and (min-width: 1024px){.section--map{background-size:1170px auto}}.section--extend-top,.section--extend-bottom{z-index:0}.section--extend-top{margin-top:-150px;padding-top:210px}@media screen and (min-width: 721px){.section--extend-top{padding-top:300px}}.section--extend-top.secion--top-none{padding-top:90px}@media screen and (min-width: 721px){.section--extend-top.secion--top-none{padding-top:150px}}.section--extend-top.secion--top-small{padding-top:155px}@media screen and (min-width: 721px){.section--extend-top.secion--top-small{padding-top:215px}}.section--extend-top.secion--top-double{padding-top:300px}@media screen and (min-width: 721px){.section--extend-top.secion--top-double{padding-top:360px}}.section--extend-bottom{margin-bottom:-150px;padding-bottom:210px}@media screen and (min-width: 721px){.section--extend-bottom{padding-bottom:300px}}.section--extend-bottom.secion--bottom-none{padding-bottom:90px}@media screen and (min-width: 721px){.section--extend-bottom.secion--bottom-none{padding-bottom:150px}}.section--extend-bottom.secion--bottom-small{padding-bottom:155px}@media screen and (min-width: 721px){.section--extend-bottom.secion--bottom-small{padding-bottom:215px}}.section--extend-bottom.secion--bottom-double{padding-bottom:300px}@media screen and (min-width: 721px){.section--extend-bottom.secion--bottom-double{padding-bottom:360px}}.section__image{max-width:500px;margin-left:auto}@media screen and (min-width: 1024px){.section__image{position:absolute;right:0;width:50%;max-width:none}.section__image--top{top:0}.section__image--center{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.section__image--bottom{bottom:0}}.section__image .content-image{margin:0}.section__image .content-image img{display:block;margin-left:auto}
@charset "UTF-8";
/**
 * basicss overrides
 *
 * any defaults in basicss/basicss/_settings.scss
 * may be overridden...
 *
 * e.g. $prototyping: true;
 */
/**
 * basicss.scss
 *
 * Author: Marian Friedmann
 *
 */
/* ====================================================
   Reset, Defaults, Mixins
   ==================================================== */
/**
 * Reset, Default settings
 */
/**
 * _settings.scss
 *
 * Author: Marian Friedmann
 */
/**
* Variables Mode
*/
/**
* Default colors
*/
/**
 * Default objects
 */
/**
 * Default helper
 */
/**
 * Default fonts
 */
/**
 * Default font size
 */
/**
 * Default headings
 */
/**
 *  Default spacing
 */
/**
 * Default breakpoints
 */
/**
 * Default spaces
 */
/**
 * Default constrains
 */
/**
 * Arrows
 */
/**
 * Global Variables
 */
/**
 * Mixins
 */
/**
 * _media.scss
 *
 * Author: Marius Scheel
 *
 * Usage:
 * @include media(300px);
 * or @include media(300px, false);
 * or @include media(max-width 300px);
 * or @include media(100px max-width 300px);
 * or @include media(max-width 100px max-width 300px);
 * or @include media(max-width 100px max-width 300px, true);
 *
 */
/**
 * _hdpi.scss
 *
 * Author: Marius Scheel
 *
 * defaults to 1.3 to include Google Nexus 7
 * adapted from bourbon:
 * https://github.com/thoughtbot/bourbon/blob/master/app/assets/stylesheets/css3/_hidpi-media-query.scss
 * 
 * Usage:
 * @include hdpi {
 *  // your css for hdpi displays
 * };
 *
 * you can use a custom ratio, if you like:
 * @include hdpi(1.5) {
 *  // your css
 * };
 */
/**
 * _retina-image.scss
 *
 * Author: Marius Scheel
 *
 * Usage:
 * .hero {
 *  @include retina-image("../path/to/hero", 200px 400px);
 * }
 *
 * to use a specific filename:
 * .hero {
 *  @include retina-image("../path/to/hero", 200px 400px, "../path/to/retina-hero"); 
 * } 
 *
 * modified version of bourbon's retina-image mixin.
 * The mixin uses a @2x.png retina filename by default.
 * https://github.com/thoughtbot/bourbon/blob/master/app/assets/stylesheets/addons/_retina-image.scss
 */
/**
 * _font-size.scss
 *
 * Author: Marian Friedmann
 *
 */
/**
 * _px-to-rem.scss
 *
 * Author: Marian Friedmann
 *
 * Usage:
 * .element {
 *   @include px-to-rem(padding, 0 24px)
 * }
 *
 * Output:
 * .element {
 *   padding: 0 24px;
 *   padding: 0 1.5rem;
 * }
 *
 */
/**
 * _clearfix.scss
 *
 * Author: Marian Friedmann
 *
 * Usage:
 * .element {
 *   @include clearfix;
 * }
 *
 */
/**
 * _ellipsis.scss
 *
 * Author: Marian Friedmann
 *
 * ellipsis mixin 
 *
 */
/* ====================================================
   Base Styles
   ==================================================== */
/**
 * _main.scss
 *
 * Author: Marian Friedmann
 *
 */
/**
 * _baseline.scss
 *
 * Author: Marian Friedmann
 *
 */
/**
 * _typo.scss
 *
 * Author: Marian Friedmann
 *
 */
.guides__title {
  font-size: 20px;
  font-size: 1.1764705882rem;
  line-height: 1.1;
  font-family: RocGroteskBold, sans-serif;
  color: #000000;
  font-weight: 700;
  letter-spacing: -0.02rem;
}

/**
 * _links.scss
 *
 * Author: Marian Friedmann
 *
 */
/**
 * media-src.scss
 *
 * Author: Marian Friedmann
 *
 */
/* ====================================================
   Objects
   ==================================================== */
/**
 * _grid.scss
 *
 * Author: Marian Friedmann
 *
 * Usage:
 * <div class="grid">
 *   <div class="grid__item  width--1of1  width-tab--1of3  width-desk--1of4">
 *       ...
 *   </div><!--
 *--><div class="grid__item  width--1of1  width-tab--2of3  width-desk--3of4">
 *     <div class="grid">
 *       <div class="grid__item  width--1of1  width-tab--1of2">
 *           ...
 *       </div><!--
 *    --><div class="grid__item  width--1of1  width-tab--1of2">
 *           ...
 *       </div>
 *     </div>
 *   </div>
 * </div>
 *
 * the example above combines the grid items with the widths from helper/_width.scss
 */
/**
 * Reverse the order of grid items
 */
/**
 * adds a seperator line to the grid
 */
/**
 * Grid items without gutters
 */
/**
 * Grid size variations
 */
/**
 * _btn.scss
 *
 * Author: Marian Friedmann
 *
 * Usage:
 * <a class="btn [btn--secondary]" href="#">btn</a>
 * <input type="text" class="btn">
 * <button class="btn">btn</button>
 */
/* Button disguised as a link. */
/**
 * _constrain.scss
 *
 * Author: Marius Scheel
 *
 */
/**
 * _nav.scss
 *
 * Author: Marian Friedmann
 *
 * source: Nav abstraction from csswizardry.com/2011/09/the-nav-abstraction
 *
 * Can be used on an `ol` or `ul` and displays the list items horizontally.
 * Extend it with the following subclasses:
 *
 * - nav--stacked    // displays the list items vertically
 * - nav--banner     // centres the list
 * - nav--block      // expands list items clickable areas
 * - nav--fit        // forces the list to occupy the full width of its parent
 * - nav--keywords   // display as a list of keywords
 * - nav--breadcrumb // display as breadcrumbs
 * - nav--parallel   // display nav items with parallel separator
 *
 * Markup:
 *
 * <ul class="nav">
 *   <li><a href=#>Home</a></li>
 *   <li><a href=#>About</a></li>
 *   <li><a href=#>Portfolio</a></li>
 *   <li><a href=#>Contact</a></li>
 * </ul>
 */
/**
 * 'nav-stacked' displays the list items vertically
 */
/**
 * 'nav-banner' centres the list
 */
/**
 * 'nav--block' expands list items clickable areas with padding
 */
/**
 * 'nav--fit' forces the list to occupy the full width of its parent
 */
/**
 * 'nav--keywords' display as a list of keywords
 */
/**
 * 'nav--breadcrumbs' display as breadcrumbs
 */
/**
 * 'nav--parallel' display with parallel separator
 */
/**
 * _box.scss
 *
 * modified version of:
 * https://github.com/inuitcss/objects.box/blob/master/_objects.box.scss
 *
 */
/**
 * _media.scss
 *
 * displays image and text side by side
 *
 * Example markup:
 *
    <div class="media media--small">
      <div class="media__img"></div>
      <div class="media__body"></div>
    </div>
 *
 * use the `.media--rev` modifier to reverse the the image location and put it to the right
 * use the `.media--small` modifier, to decrease the gutter width between image and content
 *
 * for more information have a look at:
 * stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code
 *
 */
/**
 * _bare-list.scss
 *
 */
/**
 * _ui-list.scss
 *
 * based on Harry Roberts ui-list object:
 * https://github.com/inuitcss/objects.ui-list/blob/master/_objects.ui-list.scss
 *
 * creates blocky items, can be used with lists or the corresponding markup:
 *
 * <div class="ui-list">
 *  <div class="ui-list__item"></div>
 *  <div class="ui-list__item"></div>
 *  <div class="ui-list__item"></div>
 * </div>
 *
 * or:
 *
 * <ul class="ui-list ui-list--small">
 *  <li></li>
 *  <li></li>
 *  <li></li>
 * </ul>
 *
 * can optionally be used with --separator and --border, where --separator
 * adds borders to the list element and --border to the list itself
 *
 * comes with different size modifiers
 *
 */
/**
 * Modifiers for sizing the list
 */
/**
 * _arrow.scss
 *
 * Author: Marian Friedmann
 *
 * Usage:
 * <div class="arrow arrow--top-left">
 *  ...
 * </div>
 *
 */
/**
 * Arrow Top
 */
/**
 * Arrow Bottom
 */
/**
 * Arrow Left
 */
/**
 * Arrow Right
 */
/**
 * _icon.scss
 *
 * Author: Marian Friedmann
 *
 * Usage:
 * <i class="icon [icon--nav-toggle]"></i>
 *
 */
/**
 * Alle icons werden als .svg exportiert unter
 * /assets/images/icons abgelegt und von grunt-svgmin
 * und grunt-grunticon weiterverarbeitet.
 *
 * Output unter /assets/images/icons/grunticon
 */
/**
 * Beispiel für ein Icon
 *
 * .icon--mobile-nav-toggle {
 *   @include background-svg("../images/nav-toggle");
 * }
 */
/* ====================================================
   Helper Classes
   ==================================================== */
/**
 * _spacing.scss
 *
 * Author: Marian Friedmann
 *
 * Usage:
 * <div class="space--top  space-tab--top-double">
 *   ...
 * </div>
 *
 */
/**
 * Basic & spacing
 */
/**
 * _width.scss
 *
 * Author: Marian Friedmann
 *
 * Usage:
 * <div class="grid">
 *   <div class="grid__item  width--1of1  width-tab--1of3  width-desk--1of4">
 *     ...
 *   </div>
 *   <div class="grid__item  width--1of1  width-tab--2of3  width-desk--3of4">
 *     ...
 *   </div>
 * </div>
 *
 */
/**
 * _typo.scss
 *
 * Author: Marian Friedmann
 *
 * Alt Text Styles.
 *
 * ## alignment
 * - text--left
 * - text--right
 * - text--center
 *
 * ## utilities
 * - text--secondary
 * - text--inherit-color
 * - text--no-wrap
 * - text--large
 *
 * Usage:
 * <div class="text--large">
 *   <h1>Lorem Ipsum</h1>
 *   <p>Lorem ipsum</p>
 * </div>
 *
 */
/**
 * Prevent text from wrapping
 */
/**
 * Display text in secondary font
 */
/**
 * Display larger text
 */
.text--large {
  font-size: 24px;
  font-size: 1.4117647059rem;
  line-height: 1.5;
}

/**
* _color.scss
*/
.text--large {
  font-size: 24px;
  line-height: 34px;
}

.text--medium {
  font-size: 16px;
  line-height: 29px;
}

.text--tiny {
  font-size: 13px;
  line-height: 25px;
}

.text--small {
  font-size: 14px;
  line-height: 26px;
}

.text--initial {
  text-transform: initial;
}

.heading-0 {
  font-size: 55px;
  line-height: 64px;
  font-family: "RocGroteskBold", sans-serif;
  color: #000000;
  font-weight: 600;
  letter-spacing: -0.02rem;
  margin-bottom: 20px;
}
@media screen and (min-width: 1024px) {
  .heading-0 {
    font-size: 120px;
    line-height: 140px;
  }
}

.heading-1-alt {
  font-size: 55px;
  line-height: 64px;
  font-family: "Roboto", sans-serif;
  color: #000000;
  font-weight: 500;
  letter-spacing: -0.03rem;
  margin-bottom: 20px;
}
@media screen and (min-width: 1024px) {
  .heading-1-alt {
    font-size: 90px;
    line-height: 100px;
  }
}

.heading-2-alt {
  font-size: 48px;
  line-height: 58px;
  font-family: "RocGroteskBold", sans-serif;
  color: #000000;
  font-weight: 600;
  letter-spacing: -0.03rem;
  margin-bottom: 20px;
}

.heading-1,
.heading-2,
.heading-3,
.heading-4,
.heading-5,
.heading-6 {
  display: block;
}

.guides__item {
  height: 100%;
  width: 100%;
  background-color: #ffffff;
  border-radius: 6px;
  -webkit-box-shadow: 0px 18px 35px 0px rgba(0, 0, 0, 0.09);
          box-shadow: 0px 18px 35px 0px rgba(0, 0, 0, 0.09);
  display: block;
  overflow: hidden;
}
.guides__item:hover {
  text-decoration: none;
}
.guides__image figure {
  margin: 0;
}
.guides__image img {
  display: block;
  margin: 0 auto;
  max-width: 100%;
}
.guides__content {
  padding: 30px 30px 45px;
}
.guides__title {
  margin-bottom: 15px;
}
.guides__text {
  font-size: 16px;
  color: #616161;
}
.guides--slider .guides__item {
  margin-bottom: 30px;
  -webkit-box-shadow: none;
          box-shadow: none;
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImd1aWRlcy5jc3MiLCJfc2V0dGluZ3Muc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL19iYXNpY3NzLXZhcmlhYmxlcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jhc2ljc3MvYmFzaWNzcy9fc2V0dGluZ3Muc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3MvbWl4aW5zL19tZWRpYS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jhc2ljc3MvYmFzaWNzcy9taXhpbnMvX2hkcGkuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3MvbWl4aW5zL19yZXRpbmEtaW1hZ2Uuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3MvbWl4aW5zL19mb250LXNpemUuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3MvbWl4aW5zL19weC10by1yZW0uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3MvbWl4aW5zL19jbGVhcmZpeC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jhc2ljc3MvYmFzaWNzcy9taXhpbnMvX2VsbGlwc2lzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFzaWNzcy9iYXNpY3NzL2Jhc2UvX21haW4uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3MvYmFzZS9fYmFzZWxpbmUuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3MvYmFzZS9fdHlwby5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jhc2ljc3MvYmFzaWNzcy9iYXNlL19saW5rcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jhc2ljc3MvYmFzaWNzcy9iYXNlL19tZWRpYS1zcmMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3Mvb2JqZWN0cy9fZ3JpZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jhc2ljc3MvYmFzaWNzcy9vYmplY3RzL19idG4uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3Mvb2JqZWN0cy9fY29uc3RyYWluLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFzaWNzcy9iYXNpY3NzL29iamVjdHMvX25hdi5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jhc2ljc3MvYmFzaWNzcy9vYmplY3RzL19ib3guc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3Mvb2JqZWN0cy9fbWVkaWEuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3Mvb2JqZWN0cy9fYmFyZS1saXN0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFzaWNzcy9iYXNpY3NzL29iamVjdHMvX3VpLWxpc3Quc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3Mvb2JqZWN0cy9fYXJyb3cuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3Mvb2JqZWN0cy9faWNvbi5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jhc2ljc3MvYmFzaWNzcy9oZWxwZXIvX3NwYWNpbmcuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3MvaGVscGVyL193aWR0aC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jhc2ljc3MvYmFzaWNzcy9oZWxwZXIvX3R5cG8uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYXNpY3NzL2Jhc2ljc3MvaGVscGVyL19jb2xvci5zY3NzIiwiX3R5cG8uc2NzcyIsImd1aWRlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQ0FoQjs7Ozs7OztFQUFBO0FDQUE7Ozs7O0VBQUE7QUFPQTs7eURBQUE7QUFNQTs7RUFBQTtBQ2JBOzs7O0VBQUE7QUFNQTs7Q0FBQTtBQUtBOztDQUFBO0FBYUE7O0VBQUE7QUFjQTs7RUFBQTtBQVVBOztFQUFBO0FBT0E7O0VBQUE7QUFPQTs7RUFBQTtBQWdDQTs7RUFBQTtBQU9BOztFQUFBO0FBV0M7O0VBQUE7QUFlRDs7RUFBQTtBQVdBOztFQUFBO0FBTUE7O0VBQUE7QUQ3SEE7O0VBQUE7QUVuQkE7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQ0FBOzs7OztFQUFBO0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQ0FBOzs7Ozs7Ozs7O0VBQUE7QUNBQTs7Ozs7OztFQUFBO0FSaUNBOzt5REFBQTtBU2pDQTs7Ozs7RUFBQTtBQ0FBOzs7OztFQUFBO0FDQ0E7Ozs7O0VBQUE7QUEyQ0U7RU5wQ0UsZU5zQ087RU1yQ1AsMEJBQUE7RU13QkksZ0JBQUE7RUFLRix1Q0FBQTtFQUFBLGNBQUE7RUFBQSxnQkFBQTtFQUFBLHdCQUFBO0FieUpOOztBYy9MQTs7Ozs7RUFBQTtBQ0FBOzs7OztFQUFBO0FiMkNBOzt5REFBQTtBY21CQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQTRDQTs7RUFBQTtBQVdBOztFQUFBO0FBMENBOztFQUFBO0FBV0E7O0VBQUE7QUMxS0E7Ozs7Ozs7OztFQUFBO0FBNkNBLGdDQUFBO0FDNUNBOzs7OztFQUFBO0FDREE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUF5Q0E7O0VBQUE7QUFhQTs7RUFBQTtBQVFBOztFQUFBO0FBcUJBOztFQUFBO0FBZ0JBOztFQUFBO0FBZUE7O0VBQUE7QUFlQTs7RUFBQTtBQ2hJQTs7Ozs7O0VBQUE7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUNBQTs7O0VBQUE7QUNEQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUFrRUE7O0VBQUE7QUNqRUE7Ozs7Ozs7Ozs7RUFBQTtBQXVCQTs7RUFBQTtBQTJDQTs7RUFBQTtBQTJDQTs7RUFBQTtBQTJDQTs7RUFBQTtBQ3pKQTs7Ozs7Ozs7RUFBQTtBQVVBOzs7Ozs7RUFBQTtBQXFCQTs7Ozs7O0VBQUE7QXZCMkJBOzt5REFBQTtBd0JoQkE7Ozs7Ozs7Ozs7RUFBQTtBQVlBOztFQUFBO0FDZ0ZBOzs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQ3pIQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUEwQkE7O0VBQUE7QUFPQTs7RUFBQTtBQU9BOztFQUFBO0FBR0E7RXJCaERJLGVKNkRXO0VJNURYLDBCQUFBO0VxQmlERixnQkFBQTtBNUI2YUY7O0E2QnJjQTs7Q0FBQTtBQ2xDQTtFQUNFLGVBQUE7RUFDQSxpQkFBQTtBOUI2ZUY7O0E4QjNlQTtFQUNFLGVBQUE7RUFDQSxpQjdCbUNlO0FEMmNqQjs7QThCNWVBO0VBQ0UsZUFBQTtFQUNBLGlCQUFBO0E5QitlRjs7QThCN2VBO0VBQ0UsZUFBQTtFQUNBLGlCQUFBO0E5QmdmRjs7QThCOWVBO0VBQ0UsdUJBQUE7QTlCaWZGOztBOEIvZUE7RUFDRSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSx5QzdCZ0JjO0U2QmZkLGNBQUE7RUFDQSxnQkFBQTtFQUNBLHdCQUFBO0VBQ0EsbUJBQUE7QTlCa2ZGO0FJeGZJO0UwQkRKO0lBU0ksZ0JBQUE7SUFDQSxrQkFBQTtFOUJvZkY7QUFDRjs7QThCbGZBO0VBQ0UsZUFBQTtFQUNBLGlCQUFBO0VBQ0EsaUM3QkVZO0U2QkRaLGNBQUE7RUFDQSxnQkFBQTtFQUNBLHdCQUFBO0VBQ0EsbUJBQUE7QTlCcWZGO0FJeGdCSTtFMEJZSjtJQVNJLGVBQUE7SUFDQSxrQkFBQTtFOUJ1ZkY7QUFDRjs7QThCcmZBO0VBQ0UsZUFBQTtFQUNBLGlCQUFBO0VBQ0EseUM3QlZjO0U2QldkLGNBQUE7RUFDQSxnQkFBQTtFQUNBLHdCQUFBO0VBQ0EsbUJBQUE7QTlCd2ZGOztBOEI1ZEE7Ozs7OztFQU1FLGNBQUE7QTlCK2RGOztBK0JsakJFO0VBQ0UsWUFBQTtFQUNBLFdBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EseURBQUE7VUFBQSxpREFBQTtFQUNBLGNBQUE7RUFDQSxnQkFBQTtBL0JxakJKO0ErQnBqQkk7RUFDRSxxQkFBQTtBL0JzakJOO0ErQmxqQkk7RUFDRSxTQUFBO0EvQm9qQk47QStCbGpCSTtFQUNFLGNBQUE7RUFDQSxjQUFBO0VBQ0EsZUFBQTtBL0JvakJOO0ErQmpqQkU7RUFDRSx1QkFBQTtBL0JtakJKO0ErQmpqQkU7RUFFRSxtQkFBQTtBL0JrakJKO0ErQmhqQkU7RUFDRSxlQUFBO0VBQ0EsY0FBQTtBL0JrakJKO0ErQi9pQkk7RUFDRSxtQjlCTUs7RThCTEwsd0JBQUE7VUFBQSxnQkFBQTtBL0JpakJOIiwiZmlsZSI6Imd1aWRlcy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAY2hhcnNldCBcIlVURi04XCI7XG4vKipcbiAqIGJhc2ljc3Mgb3ZlcnJpZGVzXG4gKlxuICogYW55IGRlZmF1bHRzIGluIGJhc2ljc3MvYmFzaWNzcy9fc2V0dGluZ3Muc2Nzc1xuICogbWF5IGJlIG92ZXJyaWRkZW4uLi5cbiAqXG4gKiBlLmcuICRwcm90b3R5cGluZzogdHJ1ZTtcbiAqL1xuLyoqXG4gKiBiYXNpY3NzLnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcmlhbiBGcmllZG1hbm5cbiAqXG4gKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFJlc2V0LCBEZWZhdWx0cywgTWl4aW5zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlc2V0LCBEZWZhdWx0IHNldHRpbmdzXG4gKi9cbi8qKlxuICogX3NldHRpbmdzLnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcmlhbiBGcmllZG1hbm5cbiAqL1xuLyoqXG4qIFZhcmlhYmxlcyBNb2RlXG4qL1xuLyoqXG4qIERlZmF1bHQgY29sb3JzXG4qL1xuLyoqXG4gKiBEZWZhdWx0IG9iamVjdHNcbiAqL1xuLyoqXG4gKiBEZWZhdWx0IGhlbHBlclxuICovXG4vKipcbiAqIERlZmF1bHQgZm9udHNcbiAqL1xuLyoqXG4gKiBEZWZhdWx0IGZvbnQgc2l6ZVxuICovXG4vKipcbiAqIERlZmF1bHQgaGVhZGluZ3NcbiAqL1xuLyoqXG4gKiAgRGVmYXVsdCBzcGFjaW5nXG4gKi9cbi8qKlxuICogRGVmYXVsdCBicmVha3BvaW50c1xuICovXG4vKipcbiAqIERlZmF1bHQgc3BhY2VzXG4gKi9cbi8qKlxuICogRGVmYXVsdCBjb25zdHJhaW5zXG4gKi9cbi8qKlxuICogQXJyb3dzXG4gKi9cbi8qKlxuICogR2xvYmFsIFZhcmlhYmxlc1xuICovXG4vKipcbiAqIE1peGluc1xuICovXG4vKipcbiAqIF9tZWRpYS5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpdXMgU2NoZWVsXG4gKlxuICogVXNhZ2U6XG4gKiBAaW5jbHVkZSBtZWRpYSgzMDBweCk7XG4gKiBvciBAaW5jbHVkZSBtZWRpYSgzMDBweCwgZmFsc2UpO1xuICogb3IgQGluY2x1ZGUgbWVkaWEobWF4LXdpZHRoIDMwMHB4KTtcbiAqIG9yIEBpbmNsdWRlIG1lZGlhKDEwMHB4IG1heC13aWR0aCAzMDBweCk7XG4gKiBvciBAaW5jbHVkZSBtZWRpYShtYXgtd2lkdGggMTAwcHggbWF4LXdpZHRoIDMwMHB4KTtcbiAqIG9yIEBpbmNsdWRlIG1lZGlhKG1heC13aWR0aCAxMDBweCBtYXgtd2lkdGggMzAwcHgsIHRydWUpO1xuICpcbiAqL1xuLyoqXG4gKiBfaGRwaS5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpdXMgU2NoZWVsXG4gKlxuICogZGVmYXVsdHMgdG8gMS4zIHRvIGluY2x1ZGUgR29vZ2xlIE5leHVzIDdcbiAqIGFkYXB0ZWQgZnJvbSBib3VyYm9uOlxuICogaHR0cHM6Ly9naXRodWIuY29tL3Rob3VnaHRib3QvYm91cmJvbi9ibG9iL21hc3Rlci9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2hpZHBpLW1lZGlhLXF1ZXJ5LnNjc3NcbiAqIFxuICogVXNhZ2U6XG4gKiBAaW5jbHVkZSBoZHBpIHtcbiAqICAvLyB5b3VyIGNzcyBmb3IgaGRwaSBkaXNwbGF5c1xuICogfTtcbiAqXG4gKiB5b3UgY2FuIHVzZSBhIGN1c3RvbSByYXRpbywgaWYgeW91IGxpa2U6XG4gKiBAaW5jbHVkZSBoZHBpKDEuNSkge1xuICogIC8vIHlvdXIgY3NzXG4gKiB9O1xuICovXG4vKipcbiAqIF9yZXRpbmEtaW1hZ2Uuc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaXVzIFNjaGVlbFxuICpcbiAqIFVzYWdlOlxuICogLmhlcm8ge1xuICogIEBpbmNsdWRlIHJldGluYS1pbWFnZShcIi4uL3BhdGgvdG8vaGVyb1wiLCAyMDBweCA0MDBweCk7XG4gKiB9XG4gKlxuICogdG8gdXNlIGEgc3BlY2lmaWMgZmlsZW5hbWU6XG4gKiAuaGVybyB7XG4gKiAgQGluY2x1ZGUgcmV0aW5hLWltYWdlKFwiLi4vcGF0aC90by9oZXJvXCIsIDIwMHB4IDQwMHB4LCBcIi4uL3BhdGgvdG8vcmV0aW5hLWhlcm9cIik7IFxuICogfSBcbiAqXG4gKiBtb2RpZmllZCB2ZXJzaW9uIG9mIGJvdXJib24ncyByZXRpbmEtaW1hZ2UgbWl4aW4uXG4gKiBUaGUgbWl4aW4gdXNlcyBhIEAyeC5wbmcgcmV0aW5hIGZpbGVuYW1lIGJ5IGRlZmF1bHQuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdGhvdWdodGJvdC9ib3VyYm9uL2Jsb2IvbWFzdGVyL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19yZXRpbmEtaW1hZ2Uuc2Nzc1xuICovXG4vKipcbiAqIF9mb250LXNpemUuc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqL1xuLyoqXG4gKiBfcHgtdG8tcmVtLnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcmlhbiBGcmllZG1hbm5cbiAqXG4gKiBVc2FnZTpcbiAqIC5lbGVtZW50IHtcbiAqICAgQGluY2x1ZGUgcHgtdG8tcmVtKHBhZGRpbmcsIDAgMjRweClcbiAqIH1cbiAqXG4gKiBPdXRwdXQ6XG4gKiAuZWxlbWVudCB7XG4gKiAgIHBhZGRpbmc6IDAgMjRweDtcbiAqICAgcGFkZGluZzogMCAxLjVyZW07XG4gKiB9XG4gKlxuICovXG4vKipcbiAqIF9jbGVhcmZpeC5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpYW4gRnJpZWRtYW5uXG4gKlxuICogVXNhZ2U6XG4gKiAuZWxlbWVudCB7XG4gKiAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICogfVxuICpcbiAqL1xuLyoqXG4gKiBfZWxsaXBzaXMuc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqIGVsbGlwc2lzIG1peGluIFxuICpcbiAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQmFzZSBTdHlsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogX21haW4uc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqL1xuLyoqXG4gKiBfYmFzZWxpbmUuc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqL1xuLyoqXG4gKiBfdHlwby5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpYW4gRnJpZWRtYW5uXG4gKlxuICovXG4uZ3VpZGVzX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC1zaXplOiAxLjE3NjQ3MDU4ODJyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjE7XG4gIGZvbnQtZmFtaWx5OiBSb2NHcm90ZXNrQm9sZCwgc2Fucy1zZXJpZjtcbiAgY29sb3I6ICMwMDAwMDA7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMnJlbTtcbn1cblxuLyoqXG4gKiBfbGlua3Muc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqL1xuLyoqXG4gKiBtZWRpYS1zcmMuc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgT2JqZWN0c1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBfZ3JpZC5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpYW4gRnJpZWRtYW5uXG4gKlxuICogVXNhZ2U6XG4gKiA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxuICogICA8ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbSAgd2lkdGgtLTFvZjEgIHdpZHRoLXRhYi0tMW9mMyAgd2lkdGgtZGVzay0tMW9mNFwiPlxuICogICAgICAgLi4uXG4gKiAgIDwvZGl2PjwhLS1cbiAqLS0+PGRpdiBjbGFzcz1cImdyaWRfX2l0ZW0gIHdpZHRoLS0xb2YxICB3aWR0aC10YWItLTJvZjMgIHdpZHRoLWRlc2stLTNvZjRcIj5cbiAqICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxuICogICAgICAgPGRpdiBjbGFzcz1cImdyaWRfX2l0ZW0gIHdpZHRoLS0xb2YxICB3aWR0aC10YWItLTFvZjJcIj5cbiAqICAgICAgICAgICAuLi5cbiAqICAgICAgIDwvZGl2PjwhLS1cbiAqICAgIC0tPjxkaXYgY2xhc3M9XCJncmlkX19pdGVtICB3aWR0aC0tMW9mMSAgd2lkdGgtdGFiLS0xb2YyXCI+XG4gKiAgICAgICAgICAgLi4uXG4gKiAgICAgICA8L2Rpdj5cbiAqICAgICA8L2Rpdj5cbiAqICAgPC9kaXY+XG4gKiA8L2Rpdj5cbiAqXG4gKiB0aGUgZXhhbXBsZSBhYm92ZSBjb21iaW5lcyB0aGUgZ3JpZCBpdGVtcyB3aXRoIHRoZSB3aWR0aHMgZnJvbSBoZWxwZXIvX3dpZHRoLnNjc3NcbiAqL1xuLyoqXG4gKiBSZXZlcnNlIHRoZSBvcmRlciBvZiBncmlkIGl0ZW1zXG4gKi9cbi8qKlxuICogYWRkcyBhIHNlcGVyYXRvciBsaW5lIHRvIHRoZSBncmlkXG4gKi9cbi8qKlxuICogR3JpZCBpdGVtcyB3aXRob3V0IGd1dHRlcnNcbiAqL1xuLyoqXG4gKiBHcmlkIHNpemUgdmFyaWF0aW9uc1xuICovXG4vKipcbiAqIF9idG4uc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqIFVzYWdlOlxuICogPGEgY2xhc3M9XCJidG4gW2J0bi0tc2Vjb25kYXJ5XVwiIGhyZWY9XCIjXCI+YnRuPC9hPlxuICogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJidG5cIj5cbiAqIDxidXR0b24gY2xhc3M9XCJidG5cIj5idG48L2J1dHRvbj5cbiAqL1xuLyogQnV0dG9uIGRpc2d1aXNlZCBhcyBhIGxpbmsuICovXG4vKipcbiAqIF9jb25zdHJhaW4uc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaXVzIFNjaGVlbFxuICpcbiAqL1xuLyoqXG4gKiBfbmF2LnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcmlhbiBGcmllZG1hbm5cbiAqXG4gKiBzb3VyY2U6IE5hdiBhYnN0cmFjdGlvbiBmcm9tIGNzc3dpemFyZHJ5LmNvbS8yMDExLzA5L3RoZS1uYXYtYWJzdHJhY3Rpb25cbiAqXG4gKiBDYW4gYmUgdXNlZCBvbiBhbiBgb2xgIG9yIGB1bGAgYW5kIGRpc3BsYXlzIHRoZSBsaXN0IGl0ZW1zIGhvcml6b250YWxseS5cbiAqIEV4dGVuZCBpdCB3aXRoIHRoZSBmb2xsb3dpbmcgc3ViY2xhc3NlczpcbiAqXG4gKiAtIG5hdi0tc3RhY2tlZCAgICAvLyBkaXNwbGF5cyB0aGUgbGlzdCBpdGVtcyB2ZXJ0aWNhbGx5XG4gKiAtIG5hdi0tYmFubmVyICAgICAvLyBjZW50cmVzIHRoZSBsaXN0XG4gKiAtIG5hdi0tYmxvY2sgICAgICAvLyBleHBhbmRzIGxpc3QgaXRlbXMgY2xpY2thYmxlIGFyZWFzXG4gKiAtIG5hdi0tZml0ICAgICAgICAvLyBmb3JjZXMgdGhlIGxpc3QgdG8gb2NjdXB5IHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBwYXJlbnRcbiAqIC0gbmF2LS1rZXl3b3JkcyAgIC8vIGRpc3BsYXkgYXMgYSBsaXN0IG9mIGtleXdvcmRzXG4gKiAtIG5hdi0tYnJlYWRjcnVtYiAvLyBkaXNwbGF5IGFzIGJyZWFkY3J1bWJzXG4gKiAtIG5hdi0tcGFyYWxsZWwgICAvLyBkaXNwbGF5IG5hdiBpdGVtcyB3aXRoIHBhcmFsbGVsIHNlcGFyYXRvclxuICpcbiAqIE1hcmt1cDpcbiAqXG4gKiA8dWwgY2xhc3M9XCJuYXZcIj5cbiAqICAgPGxpPjxhIGhyZWY9Iz5Ib21lPC9hPjwvbGk+XG4gKiAgIDxsaT48YSBocmVmPSM+QWJvdXQ8L2E+PC9saT5cbiAqICAgPGxpPjxhIGhyZWY9Iz5Qb3J0Zm9saW88L2E+PC9saT5cbiAqICAgPGxpPjxhIGhyZWY9Iz5Db250YWN0PC9hPjwvbGk+XG4gKiA8L3VsPlxuICovXG4vKipcbiAqICduYXYtc3RhY2tlZCcgZGlzcGxheXMgdGhlIGxpc3QgaXRlbXMgdmVydGljYWxseVxuICovXG4vKipcbiAqICduYXYtYmFubmVyJyBjZW50cmVzIHRoZSBsaXN0XG4gKi9cbi8qKlxuICogJ25hdi0tYmxvY2snIGV4cGFuZHMgbGlzdCBpdGVtcyBjbGlja2FibGUgYXJlYXMgd2l0aCBwYWRkaW5nXG4gKi9cbi8qKlxuICogJ25hdi0tZml0JyBmb3JjZXMgdGhlIGxpc3QgdG8gb2NjdXB5IHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBwYXJlbnRcbiAqL1xuLyoqXG4gKiAnbmF2LS1rZXl3b3JkcycgZGlzcGxheSBhcyBhIGxpc3Qgb2Yga2V5d29yZHNcbiAqL1xuLyoqXG4gKiAnbmF2LS1icmVhZGNydW1icycgZGlzcGxheSBhcyBicmVhZGNydW1ic1xuICovXG4vKipcbiAqICduYXYtLXBhcmFsbGVsJyBkaXNwbGF5IHdpdGggcGFyYWxsZWwgc2VwYXJhdG9yXG4gKi9cbi8qKlxuICogX2JveC5zY3NzXG4gKlxuICogbW9kaWZpZWQgdmVyc2lvbiBvZjpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnVpdGNzcy9vYmplY3RzLmJveC9ibG9iL21hc3Rlci9fb2JqZWN0cy5ib3guc2Nzc1xuICpcbiAqL1xuLyoqXG4gKiBfbWVkaWEuc2Nzc1xuICpcbiAqIGRpc3BsYXlzIGltYWdlIGFuZCB0ZXh0IHNpZGUgYnkgc2lkZVxuICpcbiAqIEV4YW1wbGUgbWFya3VwOlxuICpcbiAgICA8ZGl2IGNsYXNzPVwibWVkaWEgbWVkaWEtLXNtYWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWVkaWFfX2ltZ1wiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1lZGlhX19ib2R5XCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gKlxuICogdXNlIHRoZSBgLm1lZGlhLS1yZXZgIG1vZGlmaWVyIHRvIHJldmVyc2UgdGhlIHRoZSBpbWFnZSBsb2NhdGlvbiBhbmQgcHV0IGl0IHRvIHRoZSByaWdodFxuICogdXNlIHRoZSBgLm1lZGlhLS1zbWFsbGAgbW9kaWZpZXIsIHRvIGRlY3JlYXNlIHRoZSBndXR0ZXIgd2lkdGggYmV0d2VlbiBpbWFnZSBhbmQgY29udGVudFxuICpcbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIGhhdmUgYSBsb29rIGF0OlxuICogc3R1YmJvcm5lbGxhLm9yZy9jb250ZW50LzIwMTAvMDYvMjUvdGhlLW1lZGlhLW9iamVjdC1zYXZlcy1odW5kcmVkcy1vZi1saW5lcy1vZi1jb2RlXG4gKlxuICovXG4vKipcbiAqIF9iYXJlLWxpc3Quc2Nzc1xuICpcbiAqL1xuLyoqXG4gKiBfdWktbGlzdC5zY3NzXG4gKlxuICogYmFzZWQgb24gSGFycnkgUm9iZXJ0cyB1aS1saXN0IG9iamVjdDpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnVpdGNzcy9vYmplY3RzLnVpLWxpc3QvYmxvYi9tYXN0ZXIvX29iamVjdHMudWktbGlzdC5zY3NzXG4gKlxuICogY3JlYXRlcyBibG9ja3kgaXRlbXMsIGNhbiBiZSB1c2VkIHdpdGggbGlzdHMgb3IgdGhlIGNvcnJlc3BvbmRpbmcgbWFya3VwOlxuICpcbiAqIDxkaXYgY2xhc3M9XCJ1aS1saXN0XCI+XG4gKiAgPGRpdiBjbGFzcz1cInVpLWxpc3RfX2l0ZW1cIj48L2Rpdj5cbiAqICA8ZGl2IGNsYXNzPVwidWktbGlzdF9faXRlbVwiPjwvZGl2PlxuICogIDxkaXYgY2xhc3M9XCJ1aS1saXN0X19pdGVtXCI+PC9kaXY+XG4gKiA8L2Rpdj5cbiAqXG4gKiBvcjpcbiAqXG4gKiA8dWwgY2xhc3M9XCJ1aS1saXN0IHVpLWxpc3QtLXNtYWxsXCI+XG4gKiAgPGxpPjwvbGk+XG4gKiAgPGxpPjwvbGk+XG4gKiAgPGxpPjwvbGk+XG4gKiA8L3VsPlxuICpcbiAqIGNhbiBvcHRpb25hbGx5IGJlIHVzZWQgd2l0aCAtLXNlcGFyYXRvciBhbmQgLS1ib3JkZXIsIHdoZXJlIC0tc2VwYXJhdG9yXG4gKiBhZGRzIGJvcmRlcnMgdG8gdGhlIGxpc3QgZWxlbWVudCBhbmQgLS1ib3JkZXIgdG8gdGhlIGxpc3QgaXRzZWxmXG4gKlxuICogY29tZXMgd2l0aCBkaWZmZXJlbnQgc2l6ZSBtb2RpZmllcnNcbiAqXG4gKi9cbi8qKlxuICogTW9kaWZpZXJzIGZvciBzaXppbmcgdGhlIGxpc3RcbiAqL1xuLyoqXG4gKiBfYXJyb3cuc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqIFVzYWdlOlxuICogPGRpdiBjbGFzcz1cImFycm93IGFycm93LS10b3AtbGVmdFwiPlxuICogIC4uLlxuICogPC9kaXY+XG4gKlxuICovXG4vKipcbiAqIEFycm93IFRvcFxuICovXG4vKipcbiAqIEFycm93IEJvdHRvbVxuICovXG4vKipcbiAqIEFycm93IExlZnRcbiAqL1xuLyoqXG4gKiBBcnJvdyBSaWdodFxuICovXG4vKipcbiAqIF9pY29uLnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcmlhbiBGcmllZG1hbm5cbiAqXG4gKiBVc2FnZTpcbiAqIDxpIGNsYXNzPVwiaWNvbiBbaWNvbi0tbmF2LXRvZ2dsZV1cIj48L2k+XG4gKlxuICovXG4vKipcbiAqIEFsbGUgaWNvbnMgd2VyZGVuIGFscyAuc3ZnIGV4cG9ydGllcnQgdW50ZXJcbiAqIC9hc3NldHMvaW1hZ2VzL2ljb25zIGFiZ2VsZWd0IHVuZCB2b24gZ3J1bnQtc3ZnbWluXG4gKiB1bmQgZ3J1bnQtZ3J1bnRpY29uIHdlaXRlcnZlcmFyYmVpdGV0LlxuICpcbiAqIE91dHB1dCB1bnRlciAvYXNzZXRzL2ltYWdlcy9pY29ucy9ncnVudGljb25cbiAqL1xuLyoqXG4gKiBCZWlzcGllbCBmw7xyIGVpbiBJY29uXG4gKlxuICogLmljb24tLW1vYmlsZS1uYXYtdG9nZ2xlIHtcbiAqICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zdmcoXCIuLi9pbWFnZXMvbmF2LXRvZ2dsZVwiKTtcbiAqIH1cbiAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSGVscGVyIENsYXNzZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogX3NwYWNpbmcuc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqIFVzYWdlOlxuICogPGRpdiBjbGFzcz1cInNwYWNlLS10b3AgIHNwYWNlLXRhYi0tdG9wLWRvdWJsZVwiPlxuICogICAuLi5cbiAqIDwvZGl2PlxuICpcbiAqL1xuLyoqXG4gKiBCYXNpYyAmIHNwYWNpbmdcbiAqL1xuLyoqXG4gKiBfd2lkdGguc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqIFVzYWdlOlxuICogPGRpdiBjbGFzcz1cImdyaWRcIj5cbiAqICAgPGRpdiBjbGFzcz1cImdyaWRfX2l0ZW0gIHdpZHRoLS0xb2YxICB3aWR0aC10YWItLTFvZjMgIHdpZHRoLWRlc2stLTFvZjRcIj5cbiAqICAgICAuLi5cbiAqICAgPC9kaXY+XG4gKiAgIDxkaXYgY2xhc3M9XCJncmlkX19pdGVtICB3aWR0aC0tMW9mMSAgd2lkdGgtdGFiLS0yb2YzICB3aWR0aC1kZXNrLS0zb2Y0XCI+XG4gKiAgICAgLi4uXG4gKiAgIDwvZGl2PlxuICogPC9kaXY+XG4gKlxuICovXG4vKipcbiAqIF90eXBvLnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcmlhbiBGcmllZG1hbm5cbiAqXG4gKiBBbHQgVGV4dCBTdHlsZXMuXG4gKlxuICogIyMgYWxpZ25tZW50XG4gKiAtIHRleHQtLWxlZnRcbiAqIC0gdGV4dC0tcmlnaHRcbiAqIC0gdGV4dC0tY2VudGVyXG4gKlxuICogIyMgdXRpbGl0aWVzXG4gKiAtIHRleHQtLXNlY29uZGFyeVxuICogLSB0ZXh0LS1pbmhlcml0LWNvbG9yXG4gKiAtIHRleHQtLW5vLXdyYXBcbiAqIC0gdGV4dC0tbGFyZ2VcbiAqXG4gKiBVc2FnZTpcbiAqIDxkaXYgY2xhc3M9XCJ0ZXh0LS1sYXJnZVwiPlxuICogICA8aDE+TG9yZW0gSXBzdW08L2gxPlxuICogICA8cD5Mb3JlbSBpcHN1bTwvcD5cbiAqIDwvZGl2PlxuICpcbiAqL1xuLyoqXG4gKiBQcmV2ZW50IHRleHQgZnJvbSB3cmFwcGluZ1xuICovXG4vKipcbiAqIERpc3BsYXkgdGV4dCBpbiBzZWNvbmRhcnkgZm9udFxuICovXG4vKipcbiAqIERpc3BsYXkgbGFyZ2VyIHRleHRcbiAqL1xuLnRleHQtLWxhcmdlIHtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXNpemU6IDEuNDExNzY0NzA1OXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLyoqXG4qIF9jb2xvci5zY3NzXG4qL1xuLnRleHQtLWxhcmdlIHtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBsaW5lLWhlaWdodDogMzRweDtcbn1cblxuLnRleHQtLW1lZGl1bSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI5cHg7XG59XG5cbi50ZXh0LS10aW55IHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBsaW5lLWhlaWdodDogMjVweDtcbn1cblxuLnRleHQtLXNtYWxsIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjZweDtcbn1cblxuLnRleHQtLWluaXRpYWwge1xuICB0ZXh0LXRyYW5zZm9ybTogaW5pdGlhbDtcbn1cblxuLmhlYWRpbmctMCB7XG4gIGZvbnQtc2l6ZTogNTVweDtcbiAgbGluZS1oZWlnaHQ6IDY0cHg7XG4gIGZvbnQtZmFtaWx5OiBcIlJvY0dyb3Rlc2tCb2xkXCIsIHNhbnMtc2VyaWY7XG4gIGNvbG9yOiAjMDAwMDAwO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDJyZW07XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmhlYWRpbmctMCB7XG4gICAgZm9udC1zaXplOiAxMjBweDtcbiAgICBsaW5lLWhlaWdodDogMTQwcHg7XG4gIH1cbn1cblxuLmhlYWRpbmctMS1hbHQge1xuICBmb250LXNpemU6IDU1cHg7XG4gIGxpbmUtaGVpZ2h0OiA2NHB4O1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgc2Fucy1zZXJpZjtcbiAgY29sb3I6ICMwMDAwMDA7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wM3JlbTtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuaGVhZGluZy0xLWFsdCB7XG4gICAgZm9udC1zaXplOiA5MHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxMDBweDtcbiAgfVxufVxuXG4uaGVhZGluZy0yLWFsdCB7XG4gIGZvbnQtc2l6ZTogNDhweDtcbiAgbGluZS1oZWlnaHQ6IDU4cHg7XG4gIGZvbnQtZmFtaWx5OiBcIlJvY0dyb3Rlc2tCb2xkXCIsIHNhbnMtc2VyaWY7XG4gIGNvbG9yOiAjMDAwMDAwO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDNyZW07XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5oZWFkaW5nLTEsXG4uaGVhZGluZy0yLFxuLmhlYWRpbmctMyxcbi5oZWFkaW5nLTQsXG4uaGVhZGluZy01LFxuLmhlYWRpbmctNiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZ3VpZGVzX19pdGVtIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBib3gtc2hhZG93OiAwcHggMThweCAzNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMDkpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5ndWlkZXNfX2l0ZW06aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4uZ3VpZGVzX19pbWFnZSBmaWd1cmUge1xuICBtYXJnaW46IDA7XG59XG4uZ3VpZGVzX19pbWFnZSBpbWcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbi5ndWlkZXNfX2NvbnRlbnQge1xuICBwYWRkaW5nOiAzMHB4IDMwcHggNDVweDtcbn1cbi5ndWlkZXNfX3RpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cbi5ndWlkZXNfX3RleHQge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAjNjE2MTYxO1xufVxuLmd1aWRlcy0tc2xpZGVyIC5ndWlkZXNfX2l0ZW0ge1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICBib3gtc2hhZG93OiBub25lO1xufSIsIi8qKlxuICogYmFzaWNzcyBvdmVycmlkZXNcbiAqXG4gKiBhbnkgZGVmYXVsdHMgaW4gYmFzaWNzcy9iYXNpY3NzL19zZXR0aW5ncy5zY3NzXG4gKiBtYXkgYmUgb3ZlcnJpZGRlbi4uLlxuICpcbiAqIGUuZy4gJHByb3RvdHlwaW5nOiB0cnVlO1xuICovXG5cblxuICRjb2xvcnMgOiAoXG4gICdwcmltYXJ5JzogIzMyNzZkMixcbiAgJ3NlY29uZGFyeSc6ICNiZmRmMjYsXG4gICdncmFkaWVudDEnOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMCwxODEsMjI2LDEpIDAlLCByZ2JhKDAsMTgxLDIyNiwxKSAyMCUsIHJnYmEoMTkxLDIyMywzOCwxKSA4MCUsIHJnYmEoMTkxLDIyMywzOCwxKSAxMDAlKSxcbiAgJ2dyYWRpZW50MUhvdmVyJzogbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCByZ2JhKDAsMTgxLDIyNiwxKSAwJSwgcmdiYSgwLDE4MSwyMjYsMSkgMzAlLCByZ2JhKDE5MSwyMjMsMzgsMSkgNzAlLCByZ2JhKDE5MSwyMjMsMzgsMSkgMTAwJSksXG4gICdncmFkaWVudDInOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgcmdiYSgwLDE4MSwyMjYsMSkgMCUsIHJnYmEoMCwxODEsMjI2LDEpIDIwJSwgcmdiYSgxOTEsMjIzLDM4LDEpIDgwJSwgcmdiYSgxOTEsMjIzLDM4LDEpIDEwMCUpLFxuXG4gICdibGFjayc6ICMwMDAwMDAsXG4gICd3aGl0ZSc6ICNmZmZmZmYsXG4gIFxuICAnZ3JleTAnOiAjMjUyNDI0LFxuICAnZ3JleTEnOiAjNTA1MDUwLFxuICAnZ3JleTInOiAjNjE2MTYxLFxuICAnZ3JleTMnOiAjOWU5ZTllLFxuICAnZ3JleTQnOiAjYzZjN2M3LFxuICAnZ3JleTUnOiAjZDFkM2QzLFxuICAnZ3JleTYnOiAjZDRkMmRkLFxuICAnZ3JleTcnOiAjZjFmM2YyLFxuICAnZ3JleTgnOiAjZjJmMmYyLFxuXG4gICdncmV5X2ZvbnQnOiAjNDQ0NDQ0LFxuKTtcblxuJGdyaWRPYmplY3Q6IHRydWU7XG4kY29uc3RyYWluT2JqZWN0OiB0cnVlO1xuJG1lZGlhT2JqZWN0OiB0cnVlO1xuXG4kZm9udFByaW1hcnk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmO1xuJGZvbnRTZWNvbmRhcnk6ICdSb2NHcm90ZXNrQm9sZCcsIHNhbnMtc2VyaWY7XG5cbiRiYXNlRm9udFNpemU6IDE3cHg7XG4kYmFzZUxpbmVIZWlnaHQ6IDI5cHg7XG5cblxuJGJhc2VVbml0OiAzMHB4O1xuXG4kaGVhZGluZ3M6IChcbiAgJzEnOiAoXG4gICAgJ2ZvbnQtc2l6ZSc6IDU1cHgsXG4gICAgJ2xpbmUtaGVpZ2h0JzogNjRweCxcbiAgICAnZm9udC1mYW1pbHknOiAkZm9udFNlY29uZGFyeSxcbiAgICAnY29sb3InOiBtYXAtZ2V0KCRjb2xvcnMsICdibGFjaycpLFxuICAgICdmb250LXdlaWdodCc6IDcwMCxcbiAgICAnbGV0dGVyLXNwYWNpbmcnOiAtIDAuMDJyZW0sXG4gICksXG4gICcyJzogKFxuICAgICdmb250LXNpemUnOiA0MHB4LFxuICAgICdsaW5lLWhlaWdodCc6IDUwcHgsXG4gICAgJ2ZvbnQtZmFtaWx5JzogJGZvbnRTZWNvbmRhcnksXG4gICAgJ2NvbG9yJzogbWFwLWdldCgkY29sb3JzLCAnYmxhY2snKSxcbiAgICAnZm9udC13ZWlnaHQnOiA3MDAsXG4gICAgJ2xldHRlci1zcGFjaW5nJzogLSAwLjAzcmVtLFxuICAgICdtYXJnaW4tYm90dG9tJzogMjBweCxcbiAgKSxcbiAgJzMnOiAoXG4gICAgJ2ZvbnQtc2l6ZSc6IDQwcHgsXG4gICAgJ2xpbmUtaGVpZ2h0JzogNDlweCxcbiAgICAnZm9udC1mYW1pbHknOiAkZm9udFNlY29uZGFyeSxcbiAgICAnY29sb3InOiBtYXAtZ2V0KCRjb2xvcnMsICdibGFjaycpLFxuICAgICdmb250LXdlaWdodCc6IDcwMCxcbiAgICAnbGV0dGVyLXNwYWNpbmcnOiAtIDAuMDJyZW0sXG4gICksXG4gICc0JzogKFxuICAgICdmb250LXNpemUnOiAzMHB4LFxuICAgICdsaW5lLWhlaWdodCc6IDM5cHgsXG4gICAgJ2ZvbnQtZmFtaWx5JzogJGZvbnRTZWNvbmRhcnksXG4gICAgJ2NvbG9yJzogbWFwLWdldCgkY29sb3JzLCAnYmxhY2snKSxcbiAgICAnZm9udC13ZWlnaHQnOiA3MDAsXG4gICAgJ2xldHRlci1zcGFjaW5nJzogLSAwLjAycmVtLFxuICApLFxuICAnNSc6IChcbiAgICAnZm9udC1zaXplJzogMjBweCxcbiAgICAnbGluZS1oZWlnaHQnOiAyMnB4LFxuICAgICdmb250LWZhbWlseSc6ICRmb250U2Vjb25kYXJ5LFxuICAgICdjb2xvcic6IG1hcC1nZXQoJGNvbG9ycywgJ2JsYWNrJyksXG4gICAgJ2ZvbnQtd2VpZ2h0JzogNzAwLFxuICAgICdsZXR0ZXItc3BhY2luZyc6IC0gMC4wMnJlbSxcbiAgKSxcbiAgJzYnOiAoXG4gICAgJ2ZvbnQtc2l6ZSc6IDE2cHgsXG4gICAgJ2xpbmUtaGVpZ2h0JzogMjBweCxcbiAgICAnZm9udC1mYW1pbHknOiAkZm9udFNlY29uZGFyeSxcbiAgICAnY29sb3InOiBtYXAtZ2V0KCRjb2xvcnMsICdibGFjaycpLFxuICAgICdmb250LXdlaWdodCc6IDcwMCxcbiAgICAndGV4dC10cmFuc2Zvcm0nOiAndXBwZXJjYXNlJyxcbiAgICAnbGV0dGVyLXNwYWNpbmcnOiAtIDAuMDJyZW0sXG4gICksXG4pO1xuXG5cbiRicmVha3M6IChcbiAgdGFiOiA0ODFweCxcbiAgbGFwOiA3MjFweCxcbiAgZGVzazogMTAyNHB4LFxuICBkZXNrLXdpZGU6IDEyMDBweCxcbiAgZGVzay1tYXg6IDE2MjBweCxcbik7XG5cbiRjb25zdHJhaW46IChcbiAgc21hbGw6IDYwMHB4LFxuICBtZWRpdW06IDcwMHB4LFxuICBsYXJnZTogMTE3MHB4LFxuICBzaGFkb3c6IDEzNzBweCxcbiAgaHVnZTogMTYyMHB4LFxuICBtYXg6IDE5MjBweCxcbik7IiwiLyoqXG4gKiBiYXNpY3NzLnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcmlhbiBGcmllZG1hbm5cbiAqXG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUmVzZXQsIERlZmF1bHRzLCBNaXhpbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuJGFkZENzczogZmFsc2U7XG5cbi8qKlxuICogUmVzZXQsIERlZmF1bHQgc2V0dGluZ3NcbiAqL1xuXG5AaW1wb3J0IFwiYmFzaWNzcy9zZXR0aW5nc1wiO1xuXG4vKipcbiAqIE1peGluc1xuICovXG5cbkBpbXBvcnQgXCJiYXNpY3NzL21peGlucy9jb2xvclwiO1xuQGltcG9ydCBcImJhc2ljc3MvbWl4aW5zL2JyZWFrXCI7XG5AaW1wb3J0IFwiYmFzaWNzcy9taXhpbnMvbWVkaWFcIjtcbkBpbXBvcnQgXCJiYXNpY3NzL21peGlucy9oZHBpXCI7XG5AaW1wb3J0IFwiYmFzaWNzcy9taXhpbnMvcmV0aW5hLWltYWdlXCI7XG5AaW1wb3J0IFwiYmFzaWNzcy9taXhpbnMvZm9udC1zaXplXCI7XG5AaW1wb3J0IFwiYmFzaWNzcy9taXhpbnMvcHgtdG8tcmVtXCI7XG5AaW1wb3J0IFwiYmFzaWNzcy9taXhpbnMvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJiYXNpY3NzL21peGlucy9lbGxpcHNpc1wiO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCYXNlIFN0eWxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AaW1wb3J0IFwiYmFzaWNzcy9iYXNlL21haW5cIjtcbkBpbXBvcnQgXCJiYXNpY3NzL2Jhc2UvYmFzZWxpbmVcIjtcbkBpbXBvcnQgXCJiYXNpY3NzL2Jhc2UvdHlwb1wiO1xuQGltcG9ydCBcImJhc2ljc3MvYmFzZS9saW5rc1wiO1xuQGltcG9ydCBcImJhc2ljc3MvYmFzZS9tZWRpYS1zcmNcIjtcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgT2JqZWN0c1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AaW1wb3J0IFwiYmFzaWNzcy9vYmplY3RzL2dyaWRcIjtcbkBpbXBvcnQgXCJiYXNpY3NzL29iamVjdHMvYnRuXCI7XG5AaW1wb3J0IFwiYmFzaWNzcy9vYmplY3RzL2NvbnN0cmFpblwiO1xuQGltcG9ydCBcImJhc2ljc3Mvb2JqZWN0cy9uYXZcIjtcbkBpbXBvcnQgXCJiYXNpY3NzL29iamVjdHMvYm94XCI7XG5AaW1wb3J0IFwiYmFzaWNzcy9vYmplY3RzL21lZGlhXCI7XG5AaW1wb3J0IFwiYmFzaWNzcy9vYmplY3RzL2JhcmUtbGlzdFwiO1xuQGltcG9ydCBcImJhc2ljc3Mvb2JqZWN0cy91aS1saXN0XCI7XG5AaW1wb3J0IFwiYmFzaWNzcy9vYmplY3RzL2Fycm93XCI7XG5AaW1wb3J0IFwiYmFzaWNzcy9vYmplY3RzL2ljb25cIjtcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSGVscGVyIENsYXNzZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQGltcG9ydCBcImJhc2ljc3MvaGVscGVyL3NwYWNpbmdcIjtcbkBpbXBvcnQgXCJiYXNpY3NzL2hlbHBlci93aWR0aFwiO1xuQGltcG9ydCBcImJhc2ljc3MvaGVscGVyL3R5cG9cIjtcbkBpbXBvcnQgXCJiYXNpY3NzL2hlbHBlci9sYXlvdXRcIjtcbkBpbXBvcnQgXCJiYXNpY3NzL2hlbHBlci9jb2xvclwiO1xuIiwiLyoqXG4gKiBfc2V0dGluZ3Muc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICovXG5cbi8qKlxuKiBWYXJpYWJsZXMgTW9kZVxuKi9cbiRhZGRDc3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8qKlxuKiBEZWZhdWx0IGNvbG9yc1xuKi9cbiRfbGluazogIzAwNzRkOTtcbiRfaG92ZXI6IGRhcmtlbigkX2xpbmssIDEwJSk7XG4kX2JvcmRlcjogI0NDQztcblxuJGNvbG9yczogKFxuICBcImxpbmtcIjogJF9saW5rLFxuICBcImhvdmVyXCI6ICRfaG92ZXIsXG4gIFwiYm9yZGVyXCI6ICRfYm9yZGVyXG4pIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmYXVsdCBvYmplY3RzXG4gKi9cblxuJGFycm93T2JqZWN0OiBmYWxzZSFkZWZhdWx0O1xuJGJveE9iamVjdDogZmFsc2UhZGVmYXVsdDtcbiRuYXZPYmplY3Q6IGZhbHNlIWRlZmF1bHQ7XG4kZ3JpZE9iamVjdDogZmFsc2UhZGVmYXVsdDtcbiRidXR0b25PYmplY3Q6IGZhbHNlIWRlZmF1bHQ7XG4kY29uc3RyYWluT2JqZWN0OiBmYWxzZSFkZWZhdWx0O1xuJG1lZGlhT2JqZWN0OiBmYWxzZSFkZWZhdWx0O1xuJGJhcmVMaXN0T2JqZWN0OiBmYWxzZSFkZWZhdWx0O1xuJHVpTGlzdE9iamVjdDogZmFsc2UhZGVmYXVsdDtcblxuLyoqXG4gKiBEZWZhdWx0IGhlbHBlclxuICovXG5cbiRzcGFjaW5nSGVscGVyOiB0cnVlIWRlZmF1bHQ7XG4kdHlwb0hlbHBlcjogdHJ1ZSFkZWZhdWx0O1xuJHdpZHRoSGVscGVyOiB0cnVlIWRlZmF1bHQ7XG4kbGF5b3V0SGVscGVyOiB0cnVlIWRlZmF1bHQ7XG4kY29sb3JIZWxwZXI6IHRydWUhZGVmYXVsdDtcblxuLyoqXG4gKiBEZWZhdWx0IGZvbnRzXG4gKi9cblxuJGZvbnRQcmltYXJ5OiBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWYhZGVmYXVsdDtcbiRmb250U2Vjb25kYXJ5OiBHZW9yZ2lhLCBzZXJpZiFkZWZhdWx0O1xuXG4vKipcbiAqIERlZmF1bHQgZm9udCBzaXplXG4gKi9cblxuJGJhc2VGb250U2l6ZTogMTZweCFkZWZhdWx0O1xuJGJhc2VMaW5lSGVpZ2h0OiAyNHB4IWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmYXVsdCBoZWFkaW5nc1xuICovXG5cbiRoZWFkaW5nU2l6ZTE6IDQ4cHghZGVmYXVsdDtcbiRoZWFkaW5nU2l6ZTI6IDM2cHghZGVmYXVsdDtcbiRoZWFkaW5nU2l6ZTM6IDMycHghZGVmYXVsdDtcbiRoZWFkaW5nU2l6ZTQ6IDI0cHghZGVmYXVsdDtcbiRoZWFkaW5nU2l6ZTU6IDE4cHghZGVmYXVsdDtcbiRoZWFkaW5nU2l6ZTY6IDE2cHghZGVmYXVsdDtcblxuJGhlYWRpbmdzOiAoXG4gICcxJzogKFxuICAgICdmb250LXNpemUnOiAkaGVhZGluZ1NpemUxXG4gICksXG4gICcyJzogKFxuICAgICdmb250LXNpemUnOiAkaGVhZGluZ1NpemUyXG4gICksXG4gICczJzogKFxuICAgICdmb250LXNpemUnOiAkaGVhZGluZ1NpemUzXG4gICksXG4gICc0JzogKFxuICAgICdmb250LXNpemUnOiAkaGVhZGluZ1NpemU0XG4gICksXG4gICc1JzogKFxuICAgICdmb250LXNpemUnOiAkaGVhZGluZ1NpemU1XG4gICksXG4gICc2JzogKFxuICAgICdmb250LXNpemUnOiAkaGVhZGluZ1NpemU2XG4gICksXG4pIWRlZmF1bHQ7XG5cbi8qKlxuICogIERlZmF1bHQgc3BhY2luZ1xuICovXG5cbiRiYXNlVW5pdDogJGJhc2VMaW5lSGVpZ2h0IWRlZmF1bHQ7XG4kbGluZUhlaWdodFJhdGlvOiBjYWxjKCRiYXNlTGluZUhlaWdodCAvICRiYXNlRm9udFNpemUpO1xuXG4vKipcbiAqIERlZmF1bHQgYnJlYWtwb2ludHNcbiAqL1xuXG4gJGJyZWFrczogKFxuICAgdGFiOiA0ODFweCxcbiAgIGxhcDogNzIxcHgsXG4gICBkZXNrOiAxMDI0cHgsXG4gICBkZXNrLXdpZGU6IDEyMDBweFxuICkhZGVmYXVsdDtcblxuIC8qKlxuICAqIERlZmF1bHQgc3BhY2VzXG4gICovXG5cbiRzcGFjZTogKFxuICBub25lOiAgMCxcbiAgcXVhcnRlcjogLjI1LFxuICB0aGlyZDogLjMzMzMzMzMzMzMzLFxuICBoYWxmOiAuNSxcbiAgZGVmYXVsdDogMSxcbiAgZG91YmxlOiAyLFxuICB0cmlwbGU6IDMsXG4gIHF1YWQ6IDRcbikhZGVmYXVsdDtcblxuLyoqXG4gKiBEZWZhdWx0IGNvbnN0cmFpbnNcbiAqL1xuXG4gJGNvbnN0cmFpbjogKFxuICAgc21hbGw6ICAgMzgwcHgsXG4gICBtZWRpdW06ICA0ODBweCxcbiAgIGxhcmdlOiAgIDcyMHB4LFxuICAgbWF4OiAgICAgOTgwcHhcbiApIWRlZmF1bHQ7XG5cbi8qKlxuICogQXJyb3dzXG4gKi9cblxuJGFycm93U2l6ZTogMTBweCFkZWZhdWx0O1xuXG4vKipcbiAqIEdsb2JhbCBWYXJpYWJsZXNcbiAqL1xuXG4kYm9yZGVyUmFkaXVzOiA0cHghZGVmYXVsdDtcbiIsIi8qKlxuICogX21lZGlhLnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcml1cyBTY2hlZWxcbiAqXG4gKiBVc2FnZTpcbiAqIEBpbmNsdWRlIG1lZGlhKDMwMHB4KTtcbiAqIG9yIEBpbmNsdWRlIG1lZGlhKDMwMHB4LCBmYWxzZSk7XG4gKiBvciBAaW5jbHVkZSBtZWRpYShtYXgtd2lkdGggMzAwcHgpO1xuICogb3IgQGluY2x1ZGUgbWVkaWEoMTAwcHggbWF4LXdpZHRoIDMwMHB4KTtcbiAqIG9yIEBpbmNsdWRlIG1lZGlhKG1heC13aWR0aCAxMDBweCBtYXgtd2lkdGggMzAwcHgpO1xuICogb3IgQGluY2x1ZGUgbWVkaWEobWF4LXdpZHRoIDEwMHB4IG1heC13aWR0aCAzMDBweCwgdHJ1ZSk7XG4gKlxuICovXG5cbiRkZWZhdWx0LWZlYXR1cmU6IG1pbi13aWR0aDtcblxuQG1peGluIG1lZGlhKCRxdWVyeTokZmVhdHVyZSAkdmFsdWUsICRzZXJ2ZVRvT2xkSUU6IGZhbHNlKSB7XG5cbiAgQGlmIGxlbmd0aCgkcXVlcnkpID09IDEge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kICgkZGVmYXVsdC1mZWF0dXJlOiBudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMyB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKCRkZWZhdWx0LWZlYXR1cmU6IG50aCgkcXVlcnksIDEpKSBhbmQgKG50aCgkcXVlcnksIDIpOiBudGgoJHF1ZXJ5LCAzKSkgIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDQge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIGFuZCAobnRoKCRxdWVyeSwgMyk6IG50aCgkcXVlcnksIDQpKSAge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzZXJ2ZVRvT2xkSUUge1xuICAgIC5sdC1pZTkgJiB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogX2hkcGkuc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaXVzIFNjaGVlbFxuICpcbiAqIGRlZmF1bHRzIHRvIDEuMyB0byBpbmNsdWRlIEdvb2dsZSBOZXh1cyA3XG4gKiBhZGFwdGVkIGZyb20gYm91cmJvbjpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS90aG91Z2h0Ym90L2JvdXJib24vYmxvYi9tYXN0ZXIvYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19oaWRwaS1tZWRpYS1xdWVyeS5zY3NzXG4gKiBcbiAqIFVzYWdlOlxuICogQGluY2x1ZGUgaGRwaSB7XG4gKiAgLy8geW91ciBjc3MgZm9yIGhkcGkgZGlzcGxheXNcbiAqIH07XG4gKlxuICogeW91IGNhbiB1c2UgYSBjdXN0b20gcmF0aW8sIGlmIHlvdSBsaWtlOlxuICogQGluY2x1ZGUgaGRwaSgxLjUpIHtcbiAqICAvLyB5b3VyIGNzc1xuICogfTtcbiAqL1xuXG5AbWl4aW4gaGRwaSgkcmF0aW86IDEuMykge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHJhdGlvfS8xKSxcbiAgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogI3tyb3VuZCgkcmF0aW8qOTYpfWRwaSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICN7JHJhdGlvfWRwcHgpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLyoqXG4gKiBfcmV0aW5hLWltYWdlLnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcml1cyBTY2hlZWxcbiAqXG4gKiBVc2FnZTpcbiAqIC5oZXJvIHtcbiAqICBAaW5jbHVkZSByZXRpbmEtaW1hZ2UoXCIuLi9wYXRoL3RvL2hlcm9cIiwgMjAwcHggNDAwcHgpO1xuICogfVxuICpcbiAqIHRvIHVzZSBhIHNwZWNpZmljIGZpbGVuYW1lOlxuICogLmhlcm8ge1xuICogIEBpbmNsdWRlIHJldGluYS1pbWFnZShcIi4uL3BhdGgvdG8vaGVyb1wiLCAyMDBweCA0MDBweCwgXCIuLi9wYXRoL3RvL3JldGluYS1oZXJvXCIpOyBcbiAqIH0gXG4gKlxuICogbW9kaWZpZWQgdmVyc2lvbiBvZiBib3VyYm9uJ3MgcmV0aW5hLWltYWdlIG1peGluLlxuICogVGhlIG1peGluIHVzZXMgYSBAMngucG5nIHJldGluYSBmaWxlbmFtZSBieSBkZWZhdWx0LlxuICogaHR0cHM6Ly9naXRodWIuY29tL3Rob3VnaHRib3QvYm91cmJvbi9ibG9iL21hc3Rlci9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcmV0aW5hLWltYWdlLnNjc3NcbiAqL1xuXG5AbWl4aW4gcmV0aW5hLWltYWdlKCRmaWxlbmFtZSwgJGJhY2tncm91bmQtc2l6ZSwgJGV4dGVuc2lvbjogcG5nLCAkcmV0aW5hLWZpbGVuYW1lOiBudWxsKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JGZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuXG4gIEBpbmNsdWRlIGhkcGkge1xuICAgIEBpZiAkcmV0aW5hLWZpbGVuYW1lIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skZmlsZW5hbWV9QDJ4LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZC1zaXplOiAkYmFja2dyb3VuZC1zaXplO1xuICB9XG59XG4iLCIvKipcbiAqIF9mb250LXNpemUuc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqL1xuXG5AbWl4aW4gZm9udC1zaXplKCRmb250U2l6ZSwgJGxpbmVIZWlnaHQ6dHJ1ZSl7XG4gICAgZm9udC1zaXplOiRmb250U2l6ZTtcbiAgICBmb250LXNpemU6IGNhbGMoJGZvbnRTaXplIC8gJGJhc2VGb250U2l6ZSkqMXJlbTtcbiAgICBAaWYgJGxpbmVIZWlnaHQgPT0gdHJ1ZSB7XG4gICAgICBsaW5lLWhlaWdodDpjZWlsKGNhbGMoJGZvbnRTaXplIC8gJGJhc2VMaW5lSGVpZ2h0KSkgKiBjYWxjKCRiYXNlTGluZUhlaWdodCAvICRmb250U2l6ZSk7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBfcHgtdG8tcmVtLnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcmlhbiBGcmllZG1hbm5cbiAqXG4gKiBVc2FnZTpcbiAqIC5lbGVtZW50IHtcbiAqICAgQGluY2x1ZGUgcHgtdG8tcmVtKHBhZGRpbmcsIDAgMjRweClcbiAqIH1cbiAqXG4gKiBPdXRwdXQ6XG4gKiAuZWxlbWVudCB7XG4gKiAgIHBhZGRpbmc6IDAgMjRweDtcbiAqICAgcGFkZGluZzogMCAxLjVyZW07XG4gKiB9XG4gKlxuICovXG5cbkBmdW5jdGlvbiB0b1JlbSgkcHgpIHtcbiAgJHJlbTogY2FsYygkcHggLyAkYmFzZUZvbnRTaXplKTtcbiAgQHJldHVybiAjeyRyZW19cmVtO1xufVxuXG5AbWl4aW4gcHgtdG8tcmVtKCRwcm9wLCAkdmFsdWVzKSB7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuICAgIEBpZiAkdmFsdWUgIT0gMCB7XG4gICAgICAkdmFsdWU6IHRvUmVtKCR2YWx1ZSk7XG4gICAgfVxuICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkdmFsdWUpO1xuICB9XG5cbiAgI3skcHJvcH06ICR2YWx1ZXM7IC8vIEZhbGxiYWNrXG4gICN7JHByb3B9OiAkb3V0cHV0O1xufVxuIiwiLyoqXG4gKiBfY2xlYXJmaXguc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqIFVzYWdlOlxuICogLmVsZW1lbnQge1xuICogICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAqIH1cbiAqXG4gKi9cblxuQG1peGluIGNsZWFyZml4IHtcbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICB9XG5cbiAgJjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxuICAvKipcbiAgICogRm9yIElFIDYvNyBvbmx5XG4gICAqIEluY2x1ZGUgdGhpcyBydWxlIHRvIHRyaWdnZXIgaGFzTGF5b3V0IGFuZCBjb250YWluIGZsb2F0cy5cbiAgICovXG4gICp6b29tOiAxO1xufVxuXG4iLCIvKipcbiAqIF9lbGxpcHNpcy5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpYW4gRnJpZWRtYW5uXG4gKlxuICogZWxsaXBzaXMgbWl4aW4gXG4gKlxuICovXG5cbkBtaXhpbiBlbGxpcHNpcyB7XG4gIHdpZHRoOiBhdXRvO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cbiIsIi8qKlxuICogX21haW4uc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqL1xuXG5AaWYgJGFkZENzcyB7XG4gICoge1xuICAgICYsXG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cbiAgfVxuXG4gIGJvZHkge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbiVpbnZpc2libGUge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBvcGFjaXR5OiAwO1xufVxuXG5AaWYgJGFkZENzcyB7XG4gIC5pbnZpc2libGUge1xuICAgIEBleHRlbmQgJWludmlzaWJsZTtcbiAgfVxufSIsIi8qKlxuICogX2Jhc2VsaW5lLnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcmlhbiBGcmllZG1hbm5cbiAqXG4gKi9cblxuQGlmICRhZGRDc3Mge1xuICBib2R5LFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LFxuICBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGRsLCBkZCwgb2wsIHVsLFxuICBmb3JtLCBmaWVsZHNldCwgbGVnZW5kLFxuICB0YWJsZSwgdGgsIHRkLCBjYXB0aW9uLFxuICBociB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LFxuICB1bCwgb2wsIGRsLFxuICBibG9ja3F1b3RlLCBwLCBhZGRyZXNzLFxuICB0YWJsZSxcbiAgZmllbGRzZXQsIGZpZ3VyZSxcbiAgcHJlIHtcbiAgICBAaW5jbHVkZSBweC10by1yZW0obWFyZ2luLCAwIDAgJGJhc2VVbml0KTtcbiAgfVxuXG4gIHVsLCBvbCwgZGQge1xuICAgIEBpbmNsdWRlIHB4LXRvLXJlbShtYXJnaW4tbGVmdCwgJGJhc2VVbml0KTtcbiAgfVxuXG4gIGxpID4gdWwsXG4gIGxpID4gb2wge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn0iLCJAdXNlICdzYXNzOm1hdGgnO1xuLyoqXG4gKiBfdHlwby5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpYW4gRnJpZWRtYW5uXG4gKlxuICovXG5cbkBpZiAkYWRkQ3NzIHtcbiAgaHRtbCB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250UHJpbWFyeTtcbiAgICBmb250LXNpemU6IGNhbGMoJGJhc2VGb250U2l6ZSAvIDE2cHgpICogMWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGluZUhlaWdodFJhdGlvO1xuICB9XG59XG5cbkBtaXhpbiBoZWFkaW5nQXR0cmlidXRlcygkYXR0cmlidXRlcyl7XG4gIEBlYWNoICRhdHROYW1lLCRhdHRWYWx1ZSBpbiAkYXR0cmlidXRlcyB7XG4gICAgQGlmICRhdHROYW1lID09IHJlc3BvbnNpdmUge1xuICAgICAgQGVhY2ggJG1lZGlhLCRhdHRzIGluICRhdHRWYWx1ZSB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKGJyZWFrKCRtZWRpYSkpe1xuICAgICAgICAgIEBpbmNsdWRlIGhlYWRpbmdBdHRyaWJ1dGVzKCRhdHRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1AZWxzZSBpZiAkYXR0TmFtZSA9PSBmb250LXNpemUge1xuICAgICAgQGlmIG1hcC1oYXMta2V5KCRhdHRyaWJ1dGVzLCdsaW5lLWhlaWdodCcpIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKCRhdHRWYWx1ZSxmYWxzZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKCRhdHRWYWx1ZSx0cnVlKTtcbiAgICAgIH1cbiAgICB9QGVsc2UgaWYgJGF0dE5hbWUgPT0gbGluZS1oZWlnaHQge1xuICAgICAgQGlmIG1hcC1oYXMta2V5KCRhdHRyaWJ1dGVzLCdmb250LXNpemUnKSB7XG4gICAgICAgIC8vIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYXR0VmFsdWUsZmFsc2UpO1xuICAgICAgICAjeyRhdHROYW1lfTogbWF0aC5kaXYoJGF0dFZhbHVlLG1hcC1nZXQoJGF0dHJpYnV0ZXMsJ2ZvbnQtc2l6ZScpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAjeyRhdHROYW1lfTogI3skYXR0VmFsdWV9O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgI3skYXR0TmFtZX06ICN7JGF0dFZhbHVlfTtcbiAgICB9XG4gIH1cbn1cblxuQGVhY2ggJGtleSwkYXR0cmlidXRlcyBpbiAkaGVhZGluZ3Mge1xuICAlaGVhZGluZy0jeyRrZXl9IHtcbiAgICBAaW5jbHVkZSBoZWFkaW5nQXR0cmlidXRlcygkYXR0cmlidXRlcyk7XG4gIH1cbiAgQGlmICRhZGRDc3Mge1xuICAgIGgjeyRrZXl9LFxuICAgIC5oZWFkaW5nLSN7JGtleX0ge1xuICAgICAgQGV4dGVuZCAlaGVhZGluZy0jeyRrZXl9O1xuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiBfbGlua3Muc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqL1xuXG5AaWYgJGFkZENzcyB7XG4gIGEge1xuICAgIGNvbG9yOiBjb2xvcignbGluaycpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gIGE6aG92ZXIge1xuICAgIGNvbG9yOiBjb2xvcignaG92ZXInKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgfVxuXG4gIGE6Zm9jdXMgeyBvdXRsaW5lOiB0aGluIGRvdHRlZDsgfVxuXG4gIGE6aG92ZXIsIGE6YWN0aXZlIHsgb3V0bGluZTogMDsgfVxufVxuIiwiLyoqXG4gKiBtZWRpYS1zcmMuc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqL1xuXG5AaWYgJGFkZENzcyB7XG4gIG9iamVjdCxcbiAgZW1iZWQsXG4gIHZpZGVvLFxuICBpbWcge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cblxuICAvKipcbiAgKiB0ZXh0IHN0eWxlcyB0byBvZmZzZXQgYWx0IHRleHRcbiAgKi9cbiAgaW1nIHtcbiAgICBjb2xvcjogI2MwMDtcbiAgfVxuXG4gIC8qKlxuICAqIG5vIGZsdWlkIGltYWdlcywgd2hlbiB3aWR0aCBvciBoZWlnaHQgYXJlIHNldFxuICAqL1xuICBpbWdbd2lkdGhdLFxuICBpbWdbaGVpZ2h0XSB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICB9XG59IiwiQG1peGluIGdyaWRfbW9kaWZpZXJzKCRzY29wZTogJycpIHtcbiAgQGlmICRzY29wZSAhPSAnJyB7ICRzY29wZTogLSN7JHNjb3BlfTsgfVxuXG4gICRtb2RpZmllci1zZXBlcmF0b3I6ICctLSc7XG5cbiAgJWdyaWQjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9c3RhcnQge1xuICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0O1xuICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgfVxuICAlZ3JpZCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn1lbmQge1xuICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDtcbiAgICAtbXMtZmxleC1wYWNrOiBlbmQ7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgfVxuICAlZ3JpZCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn1jZW50ZXIge1xuICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcbiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbiAgJWdyaWQjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9YmV0d2VlbiB7XG4gICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTtcbiAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxuICAlZ3JpZCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn1hcm91bmQge1xuICAgIC1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGU7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gIH1cbiAgJWdyaWQjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9dG9wIHtcbiAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7XG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICB9XG4gICVncmlkI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfW1pZGRsZSB7XG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgJWdyaWQjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Ym90dG9tIHtcbiAgICAtbXMtZmxleC1hbGlnbjogZW5kO1xuICAgIC13ZWJraXQtYm94LWFsaWduOiBlbmQ7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICB9XG4gICVncmlkI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfXN0cmV0Y2gge1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICB9XG5cbiAgQGlmICRhZGRDc3MgYW5kICRncmlkT2JqZWN0IHtcbiAgICAuZ3JpZCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn1zdGFydCB7QGV4dGVuZCAlZ3JpZCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn1zdGFydDt9XG4gICAgLmdyaWQjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9ZW5kIHtAZXh0ZW5kICVncmlkI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfWVuZDt9XG4gICAgLmdyaWQjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Y2VudGVyIHtAZXh0ZW5kICVncmlkI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfWNlbnRlcjt9XG4gICAgLmdyaWQjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9YmV0d2VlbiB7QGV4dGVuZCAlZ3JpZCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn1iZXR3ZWVuO31cbiAgICAuZ3JpZCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn1hcm91bmQge0BleHRlbmQgJWdyaWQjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9YXJvdW5kO31cbiAgICAuZ3JpZCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn10b3Age0BleHRlbmQgJWdyaWQjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9dG9wO31cbiAgICAuZ3JpZCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn1taWRkbGUge0BleHRlbmQgJWdyaWQjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9bWlkZGxlO31cbiAgICAuZ3JpZCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn1ib3R0b20ge0BleHRlbmQgJWdyaWQjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Ym90dG9tO31cbiAgICAuZ3JpZCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn1zdHJldGNoIHtAZXh0ZW5kICVncmlkI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfXN0cmV0Y2g7fVxuICB9XG59XG5cbiR3aWR0aEhlbHBlcjogdHJ1ZTtcbi8qKlxuICogX2dyaWQuc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqIFVzYWdlOlxuICogPGRpdiBjbGFzcz1cImdyaWRcIj5cbiAqICAgPGRpdiBjbGFzcz1cImdyaWRfX2l0ZW0gIHdpZHRoLS0xb2YxICB3aWR0aC10YWItLTFvZjMgIHdpZHRoLWRlc2stLTFvZjRcIj5cbiAqICAgICAgIC4uLlxuICogICA8L2Rpdj48IS0tXG4gKi0tPjxkaXYgY2xhc3M9XCJncmlkX19pdGVtICB3aWR0aC0tMW9mMSAgd2lkdGgtdGFiLS0yb2YzICB3aWR0aC1kZXNrLS0zb2Y0XCI+XG4gKiAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cbiAqICAgICAgIDxkaXYgY2xhc3M9XCJncmlkX19pdGVtICB3aWR0aC0tMW9mMSAgd2lkdGgtdGFiLS0xb2YyXCI+XG4gKiAgICAgICAgICAgLi4uXG4gKiAgICAgICA8L2Rpdj48IS0tXG4gKiAgICAtLT48ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbSAgd2lkdGgtLTFvZjEgIHdpZHRoLXRhYi0tMW9mMlwiPlxuICogICAgICAgICAgIC4uLlxuICogICAgICAgPC9kaXY+XG4gKiAgICAgPC9kaXY+XG4gKiAgIDwvZGl2PlxuICogPC9kaXY+XG4gKlxuICogdGhlIGV4YW1wbGUgYWJvdmUgY29tYmluZXMgdGhlIGdyaWQgaXRlbXMgd2l0aCB0aGUgd2lkdGhzIGZyb20gaGVscGVyL193aWR0aC5zY3NzXG4gKi9cblxuJWdyaWQge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC1tcy1mbGV4LXdyYXA6IHdyYXA7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luOiAwO1xuICBAaW5jbHVkZSBweC10by1yZW0obWFyZ2luLWxlZnQsIC0kYmFzZVVuaXQpO1xuXG59XG4lZ3JpZF9faXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDFweDtcbiAgLXdlYmtpdC1ib3gtZmxleDogMDtcbiAgQGluY2x1ZGUgcHgtdG8tcmVtKHBhZGRpbmctbGVmdCwgJGJhc2VVbml0KTtcblxufVxuXG4vKipcbiAqIFJldmVyc2UgdGhlIG9yZGVyIG9mIGdyaWQgaXRlbXNcbiAqL1xuJWdyaWQtLXJldmVyc2VkIHtcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xuICAtd2Via2l0LWJveC1kaXJlY3Rpb246IHJldmVyc2U7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbn1cblxuXG4vKipcbiAqIGFkZHMgYSBzZXBlcmF0b3IgbGluZSB0byB0aGUgZ3JpZFxuICovXG4gJWdyaWQtLXNlcGVyYXRvciB7XG4gICBAZXh0ZW5kICVncmlkLS1zdHJldGNoO1xuICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgID4gLmdyaWRfX2l0ZW0ge1xuICAgICAmOmFmdGVyIHtcbiAgICAgICBjb250ZW50OiAnJztcbiAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgdG9wOiAwO1xuICAgICAgIHdpZHRoOiAxcHg7XG4gICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgIHJpZ2h0OiBjYWxjKCRiYXNlVW5pdC8yKSAqIC0xO1xuICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCdib3JkZXInKTtcbiAgICAgfVxuICAgfVxuICAgJi5ncmlkLS1mbHVzaCB7XG4gICAgPiAuZ3JpZF9faXRlbTphZnRlciB7XG4gICAgICByaWdodDogMFxuICAgIH1cbiAgIH1cbiAgICYuZ3JpZC0tc21hbGwge1xuICAgID4gLmdyaWRfX2l0ZW06YWZ0ZXIge1xuICAgICAgcmlnaHQ6IGNhbGMoJGJhc2VVbml0LzQpICogLTE7XG4gICAgfVxuICAgfVxuICAgJi5ncmlkLS1sYXJnZSB7XG4gICAgPiAuZ3JpZF9faXRlbTphZnRlciB7XG4gICAgICByaWdodDogJGJhc2VVbml0ICogLTE7XG4gICAgfVxuICAgfVxuICAgJi5ncmlkLS1odWdlIHtcbiAgICA+IC5ncmlkX19pdGVtOmFmdGVyIHtcbiAgICAgIHJpZ2h0OiAkYmFzZVVuaXQgKiAtMS41O1xuICAgIH1cbiAgIH1cbiB9XG5cblxuXG4vKipcbiAqIEdyaWQgaXRlbXMgd2l0aG91dCBndXR0ZXJzXG4gKi9cbiVncmlkLS1mbHVzaCB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gID4gLmdyaWRfX2l0ZW0ge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuXG4vKipcbiAqIEdyaWQgc2l6ZSB2YXJpYXRpb25zXG4gKi9cbiVncmlkLS1zbWFsbCB7XG4gIEBpbmNsdWRlIHB4LXRvLXJlbShtYXJnaW4tbGVmdCwgLShjYWxjKCRiYXNlVW5pdC8yKSkpO1xuICA+IC5ncmlkX19pdGVtIHtcbiAgICBAaW5jbHVkZSBweC10by1yZW0ocGFkZGluZy1sZWZ0LCBjYWxjKCRiYXNlVW5pdC8yKSk7XG4gIH1cbn1cblxuJWdyaWQtLWxhcmdlIHtcbiAgQGluY2x1ZGUgcHgtdG8tcmVtKG1hcmdpbi1sZWZ0LCAoLSgkYmFzZVVuaXQqMikpKTtcblxuICA+IC5ncmlkX19pdGVtLFxuICA+ICVncmlkX19pdGVtIHtcbiAgICBAaW5jbHVkZSBweC10by1yZW0ocGFkZGluZy1sZWZ0LCAkYmFzZVVuaXQqMik7XG4gIH1cbn1cblxuJWdyaWQtLWh1Z2Uge1xuICBAaW5jbHVkZSBweC10by1yZW0obWFyZ2luLWxlZnQsICgtKCRiYXNlVW5pdCozKSkpO1xuICA+IC5ncmlkX19pdGVtLFxuICA+ICVncmlkX19pdGVtIHtcbiAgICBAaW5jbHVkZSBweC10by1yZW0ocGFkZGluZy1sZWZ0LCAkYmFzZVVuaXQqMyk7XG4gIH1cbn1cblxuXG5AaW5jbHVkZSBncmlkX21vZGlmaWVycygpO1xuXG5AZWFjaCAka2V5LCRicmVhayBpbiAkYnJlYWtzIHtcbiAgQGluY2x1ZGUgbWVkaWEoJGJyZWFrKSB7XG4gICAgQGluY2x1ZGUgZ3JpZF9tb2RpZmllcnMoJGtleSk7XG4gIH1cbn1cbkBpZiAkYWRkQ3NzIGFuZCAkZ3JpZE9iamVjdCB7XG4gIC5ncmlkIHtAZXh0ZW5kICVncmlkO31cbiAgLmdyaWRfX2l0ZW0ge0BleHRlbmQgJWdyaWRfX2l0ZW07fVxuICAuZ3JpZC0tcmV2ZXJzZWQge0BleHRlbmQgJWdyaWQtLXJldmVyc2VkO31cbiAgLmdyaWQtLXNlcGVyYXRvciB7QGV4dGVuZCAlZ3JpZC0tc2VwZXJhdG9yO31cbiAgLmdyaWQtLWZsdXNoIHtAZXh0ZW5kICVncmlkLS1mbHVzaDt9XG4gIC5ncmlkLS1zbWFsbCB7QGV4dGVuZCAlZ3JpZC0tc21hbGw7fVxuICAuZ3JpZC0tbGFyZ2Uge0BleHRlbmQgJWdyaWQtLWxhcmdlO31cbiAgLmdyaWQtLWh1Z2Uge0BleHRlbmQgJWdyaWQtLWh1Z2U7fVxufS8vQGlmXG4iLCIvKipcbiAqIF9idG4uc2Nzc1xuICpcbiAqIEF1dGhvcjogTWFyaWFuIEZyaWVkbWFublxuICpcbiAqIFVzYWdlOlxuICogPGEgY2xhc3M9XCJidG4gW2J0bi0tc2Vjb25kYXJ5XVwiIGhyZWY9XCIjXCI+YnRuPC9hPlxuICogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJidG5cIj5cbiAqIDxidXR0b24gY2xhc3M9XCJidG5cIj5idG48L2J1dHRvbj5cbiAqL1xuXG4lYnRuIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm9yZGVyOiBub25lO1xuICBsaW5lLWhlaWdodDogJGJhc2VMaW5lSGVpZ2h0KjI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAwO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAvKiBDb3NtZXRpY3MgKi9cbiAgcGFkZGluZzogMGVtICRiYXNlVW5pdDtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcignbGluaycpO1xuICAmOmhvdmVye1xuICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCdob3ZlcicpO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxufVxuXG4lYnRuLS1yb3VuZCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3JkZXJSYWRpdXM7XG59XG5cbiVidG4tLXBpbGwge1xuICBib3JkZXItcmFkaXVzOiA0NGVtO1xufVxuXG4lYnRuLS1mdWxsIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi8qIEJ1dHRvbiBkaXNndWlzZWQgYXMgYSBsaW5rLiAqL1xuXG4lYnRuLS1saW5rIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiBjb2xvcignbGluaycpO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBsaW5lLWhlaWdodDogMTtcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6IGNvbG9yKCdsaW5rJyk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxufVxuQGlmICRhZGRDc3MgYW5kICRidXR0b25PYmplY3Qge1xuICAuYnRuIHtAZXh0ZW5kICVidG59O1xuICAuYnRuLS1yb3VuZCB7QGV4dGVuZCAlYnRuLS1yb3VuZH07XG4gIC5idG4tLXBpbGwge0BleHRlbmQgJWJ0bi0tcGlsbH07XG4gIC5idG4tLWZ1bGwge0BleHRlbmQgJWJ0bi0tZnVsbH07XG4gIC5idG4tLWxpbmsge0BleHRlbmQgJWJ0bi0tbGlua307XG59Ly9AaWZcbiIsIlxuLyoqXG4gKiBfY29uc3RyYWluLnNjc3NcbiAqXG4gKiBBdXRob3I6IE1hcml1cyBTY2hlZWxcbiAqXG4gKi9cblxuJWNvbnN0cmFpbiB7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG5AZWFjaCAkaywkYyBpbiAkY29uc3RyYWluIHtcbiAgJWNvbnN0cmFpbi0tI3ska30ge1xuICAgIEBpbmNsdWRlIHB4LXRvLXJlbShtYXgtd2lkdGgsICRjKTtcbiAgfVxufVxuQGlmICRhZGRDc3MgYW5kICRjb25zdHJhaW5PYmplY3Qge1xuICAuY29uc3RyYWluIHtcbiAgICBAZXh0ZW5kICVjb25zdHJhaW47XG4gIH1cbiAgQGVhY2ggJGssJGMgaW4gJGNvbnN0cmFpbiB7XG4gICAgLmNvbnN0cmFpbi0tI3ska30ge1xuICAgICAgQGV4dGVuZCAlY29uc3RyYWluLS0jeyRrfTtcbiAgICB9XG4gIH1cbn0gLy8gZW5kaWZcbiIsIi8qKlxuICogX25hdi5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpYW4gRnJpZWRtYW5uXG4gKlxuICogc291cmNlOiBOYXYgYWJzdHJhY3Rpb24gZnJvbSBjc3N3aXphcmRyeS5jb20vMjAxMS8wOS90aGUtbmF2LWFic3RyYWN0aW9uXG4gKlxuICogQ2FuIGJlIHVzZWQgb24gYW4gYG9sYCBvciBgdWxgIGFuZCBkaXNwbGF5cyB0aGUgbGlzdCBpdGVtcyBob3Jpem9udGFsbHkuXG4gKiBFeHRlbmQgaXQgd2l0aCB0aGUgZm9sbG93aW5nIHN1YmNsYXNzZXM6XG4gKlxuICogLSBuYXYtLXN0YWNrZWQgICAgLy8gZGlzcGxheXMgdGhlIGxpc3QgaXRlbXMgdmVydGljYWxseVxuICogLSBuYXYtLWJhbm5lciAgICAgLy8gY2VudHJlcyB0aGUgbGlzdFxuICogLSBuYXYtLWJsb2NrICAgICAgLy8gZXhwYW5kcyBsaXN0IGl0ZW1zIGNsaWNrYWJsZSBhcmVhc1xuICogLSBuYXYtLWZpdCAgICAgICAgLy8gZm9yY2VzIHRoZSBsaXN0IHRvIG9jY3VweSB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgcGFyZW50XG4gKiAtIG5hdi0ta2V5d29yZHMgICAvLyBkaXNwbGF5IGFzIGEgbGlzdCBvZiBrZXl3b3Jkc1xuICogLSBuYXYtLWJyZWFkY3J1bWIgLy8gZGlzcGxheSBhcyBicmVhZGNydW1ic1xuICogLSBuYXYtLXBhcmFsbGVsICAgLy8gZGlzcGxheSBuYXYgaXRlbXMgd2l0aCBwYXJhbGxlbCBzZXBhcmF0b3JcbiAqXG4gKiBNYXJrdXA6XG4gKlxuICogPHVsIGNsYXNzPVwibmF2XCI+XG4gKiAgIDxsaT48YSBocmVmPSM+SG9tZTwvYT48L2xpPlxuICogICA8bGk+PGEgaHJlZj0jPkFib3V0PC9hPjwvbGk+XG4gKiAgIDxsaT48YSBocmVmPSM+UG9ydGZvbGlvPC9hPjwvbGk+XG4gKiAgIDxsaT48YSBocmVmPSM+Q29udGFjdDwvYT48L2xpPlxuICogPC91bD5cbiAqL1xuXG4lbmF2IHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgQGluY2x1ZGUgcHgtdG8tcmVtKG1hcmdpbiwgMCAwICRiYXNlVW5pdCAwKTtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gID4gbGkge1xuICAgICYsXG4gICAgPiBhIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiAnbmF2LXN0YWNrZWQnIGRpc3BsYXlzIHRoZSBsaXN0IGl0ZW1zIHZlcnRpY2FsbHlcbiAqL1xuXG4lbmF2LS1zdGFja2VkIHtcbiAgPiBsaSB7XG4gICAgZGlzcGxheTogbGlzdC1pdGVtO1xuICAgID4gYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiAnbmF2LWJhbm5lcicgY2VudHJlcyB0aGUgbGlzdFxuICovXG5cbiVuYXYtLWJhbm5lciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLyoqXG4gKiAnbmF2LS1ibG9jaycgZXhwYW5kcyBsaXN0IGl0ZW1zIGNsaWNrYWJsZSBhcmVhcyB3aXRoIHBhZGRpbmdcbiAqL1xuXG4lbmF2LS1ibG9jayB7XG4gIC8vbGluZS1oZWlnaHQ6MTtcbiAgLyogcmVtb3ZlcyB1bm5lY2Vzc2FyeSB3aGl0ZXNwYWNlICovXG4gIGxldHRlci1zcGFjaW5nOiAtMC4zMWVtO1xuICB3b3JkLXNwYWNpbmc6IC0wLjQzZW07XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gID4gbGkge1xuICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gICAgd29yZC1zcGFjaW5nOiBub3JtYWw7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgID4gYSB7XG4gICAgICBwYWRkaW5nOiAuNzVlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiAnbmF2LS1maXQnIGZvcmNlcyB0aGUgbGlzdCB0byBvY2N1cHkgdGhlIGZ1bGwgd2lkdGggb2YgaXRzIHBhcmVudFxuICovXG5cbiVuYXYtLWZpdCB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICB3aWR0aDogMTAwJTtcbiAgPiBsaSB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgPiBhIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqICduYXYtLWtleXdvcmRzJyBkaXNwbGF5IGFzIGEgbGlzdCBvZiBrZXl3b3Jkc1xuICovXG5cbiVuYXYtLWtleXdvcmRzIHtcbiAgPiBsaSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlxcMDAyQ1wiIFwiXFwwMEEwXCI7XG4gICAgfVxuICAgICY6bGFzdC1jaGlsZDphZnRlciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqICduYXYtLWJyZWFkY3J1bWJzJyBkaXNwbGF5IGFzIGJyZWFkY3J1bWJzXG4gKi9cblxuJW5hdi0tYnJlYWRjcnVtYnMge1xuICA+IGxpIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXFwyN0U5XCIgXCJcXDAwQTBcIjtcbiAgICB9XG4gICAgJjpmaXJzdC1jaGlsZDpiZWZvcmV7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqICduYXYtLXBhcmFsbGVsJyBkaXNwbGF5IHdpdGggcGFyYWxsZWwgc2VwYXJhdG9yXG4gKi9cblxuJW5hdi0tcGFyYWxsZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgPiBsaSB7XG4gICAgQGluY2x1ZGUgcHgtdG8tcmVtKHBhZGRpbmctbGVmdCwgY2FsYygkYmFzZVVuaXQvNCkpO1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJcXDAwN0NcIjtcbiAgICAgIEBpbmNsdWRlIHB4LXRvLXJlbShtYXJnaW4tcmlnaHQsIGNhbGMoJGJhc2VVbml0LzQpKTtcbiAgICB9XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbkBpZiAkYWRkQ3NzIGFuZCAkbmF2T2JqZWN0IHtcbiAgLm5hdiB7QGV4dGVuZCAlbmF2O31cbiAgLm5hdi0tc3RhY2tlZCB7QGV4dGVuZCAlbmF2LS1zdGFja2VkO31cbiAgLm5hdi0tYmFubmVyIHtAZXh0ZW5kICVuYXYtLWJhbm5lcjt9XG4gIC5uYXYtLWJsb2NrIHtAZXh0ZW5kICVuYXYtLWJsb2NrO31cbiAgLm5hdi0tZml0IHtAZXh0ZW5kICVuYXYtLWZpdDt9XG4gIC5uYXYtLWtleXdvcmRzIHtAZXh0ZW5kICVuYXYtLWtleXdvcmRzO31cbiAgLm5hdi0tYnJlYWRjcnVtYnMge0BleHRlbmQgJW5hdi0tYnJlYWRjcnVtYnM7fVxuICAubmF2LS1wYXJhbGxlbCB7QGV4dGVuZCAlbmF2LS1wYXJhbGxlbDt9XG59Ly9AaWZcbiIsIlxuLyoqXG4gKiBfYm94LnNjc3NcbiAqXG4gKiBtb2RpZmllZCB2ZXJzaW9uIG9mOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2ludWl0Y3NzL29iamVjdHMuYm94L2Jsb2IvbWFzdGVyL19vYmplY3RzLmJveC5zY3NzXG4gKlxuICovXG5cbiVib3gge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIEBpbmNsdWRlIHB4LXRvLXJlbShwYWRkaW5nLCBjYWxjKCRiYXNlVW5pdC8yKSk7XG5cbiAgPiAqOmxhc3QtY2hpbGQsXG4gID4gKjpsYXN0LWNoaWxkID4gKjpsYXN0LWNoaWxkLFxuICA+ICo6bGFzdC1jaGlsZCA+ICo6bGFzdC1jaGlsZCA+ICo6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4lYm94LS1zbWFsbCB7XG4gIEBpbmNsdWRlIHB4LXRvLXJlbShwYWRkaW5nLCBjYWxjKCRiYXNlVW5pdC80KSk7XG59XG5cbiVib3gtLWxhcmdlIHtcbiAgQGluY2x1ZGUgcHgtdG8tcmVtKHBhZGRpbmcsICRiYXNlVW5pdCk7XG59XG5cbkBpZiAkYWRkQ3NzIGFuZCAkYm94T2JqZWN0IHtcbiAgLmJveCB7QGV4dGVuZCAlYm94O31cbiAgLmJveC0tc21hbGwge0BleHRlbmQgJWJveC0tc21hbGw7fVxuICAuYm94LS1sYXJnZSB7QGV4dGVuZCAlYm94LS1sYXJnZTt9XG59Ly9AaWYgJGJveE9iamVjdFxuIiwiXG4vKipcbiAqIF9tZWRpYS5zY3NzXG4gKlxuICogZGlzcGxheXMgaW1hZ2UgYW5kIHRleHQgc2lkZSBieSBzaWRlXG4gKlxuICogRXhhbXBsZSBtYXJrdXA6XG4gKlxuICAgIDxkaXYgY2xhc3M9XCJtZWRpYSBtZWRpYS0tc21hbGxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZWRpYV9faW1nXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWVkaWFfX2JvZHlcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAqXG4gKiB1c2UgdGhlIGAubWVkaWEtLXJldmAgbW9kaWZpZXIgdG8gcmV2ZXJzZSB0aGUgdGhlIGltYWdlIGxvY2F0aW9uIGFuZCBwdXQgaXQgdG8gdGhlIHJpZ2h0XG4gKiB1c2UgdGhlIGAubWVkaWEtLXNtYWxsYCBtb2RpZmllciwgdG8gZGVjcmVhc2UgdGhlIGd1dHRlciB3aWR0aCBiZXR3ZWVuIGltYWdlIGFuZCBjb250ZW50XG4gKlxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gaGF2ZSBhIGxvb2sgYXQ6XG4gKiBzdHViYm9ybmVsbGEub3JnL2NvbnRlbnQvMjAxMC8wNi8yNS90aGUtbWVkaWEtb2JqZWN0LXNhdmVzLWh1bmRyZWRzLW9mLWxpbmVzLW9mLWNvZGVcbiAqXG4gKi9cblxuJW1lZGlhIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIEBlYWNoICRrZXksJGJyZWFrIGluICRicmVha3Mge1xuICAgICYtLSN7JGtleX17XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgQGluY2x1ZGUgbWVkaWEoJGJyZWFrKXtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuJW1lZGlhX19pbWcge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIEBpbmNsdWRlIHB4LXRvLXJlbShtYXJnaW4tcmlnaHQsICRiYXNlVW5pdCk7XG4gIC5tZWRpYV9fYm9keSArICZ7XG4gICAgQGluY2x1ZGUgcHgtdG8tcmVtKG1hcmdpbi1sZWZ0LCAkYmFzZVVuaXQpO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxuICBAZWFjaCAka2V5LCRicmVhayBpbiAkYnJlYWtzIHtcbiAgICAubWVkaWEtLSN7JGtleX0gJiB7XG4gICAgICBAaW5jbHVkZSBtZWRpYShtYXgtd2lkdGggJGJyZWFrIC0gMSl7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cbiAgPiBpbWcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbiVtZWRpYV9fYm9keSB7XG4gIGZsZXg6IDE7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG5cbiVtZWRpYS0tc21hbGwge1xuICAubWVkaWFfX2ltZyB7XG4gICAgQGluY2x1ZGUgcHgtdG8tcmVtKG1hcmdpbi1yaWdodCwgY2FsYygkYmFzZVVuaXQvMikpO1xuICB9XG59XG4lbWVkaWEtLWJpZyB7XG4gIC5tZWRpYV9faW1nIHtcbiAgICBAaW5jbHVkZSBweC10by1yZW0obWFyZ2luLXJpZ2h0LCAkYmFzZVVuaXQqMik7XG4gIH1cbn1cbkBpZiAkYWRkQ3NzIGFuZCAkbWVkaWFPYmplY3Qge1xuICAubWVkaWEge0BleHRlbmQgJW1lZGlhO31cbiAgQGVhY2ggJGtleSwkYnJlYWsgaW4gJGJyZWFrcyB7XG4gICAgLm1lZGlhLS0jeyRrZXl9e1xuICAgICAgQGV4dGVuZCAlbWVkaWEtLSN7JGtleX07XG4gICAgfVxuICB9XG4gIC5tZWRpYV9faW1nIHtAZXh0ZW5kICVtZWRpYV9faW1nO31cbiAgLm1lZGlhX19ib2R5IHtAZXh0ZW5kICVtZWRpYV9fYm9keTt9XG4gIC5tZWRpYS0tc21hbGwge0BleHRlbmQgJW1lZGlhLS1zbWFsbDt9XG4gIC5tZWRpYS0tYmlnIHtAZXh0ZW5kICVtZWRpYS0tYmlnO31cbn1cbiIsIlxuLyoqXG4gKiBfYmFyZS1saXN0LnNjc3NcbiAqXG4gKi9cblxuJWJhcmUtbGlzdCB7XG4gIG1hcmdpbjogIDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbkBpZiAkYWRkQ3NzIGFuZCAkYmFyZUxpc3RPYmplY3Qge1xuICAuYmFyZS1saXN0IHtcbiAgICBAZXh0ZW5kICViYXJlLWxpc3Q7XG4gIH1cbn1cbiIsIi8qKlxuICogX3VpLWxpc3Quc2Nzc1xuICpcbiAqIGJhc2VkIG9uIEhhcnJ5IFJvYmVydHMgdWktbGlzdCBvYmplY3Q6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vaW51aXRjc3Mvb2JqZWN0cy51aS1saXN0L2Jsb2IvbWFzdGVyL19vYmplY3RzLnVpLWxpc3Quc2Nzc1xuICpcbiAqIGNyZWF0ZXMgYmxvY2t5IGl0ZW1zLCBjYW4gYmUgdXNlZCB3aXRoIGxpc3RzIG9yIHRoZSBjb3JyZXNwb25kaW5nIG1hcmt1cDpcbiAqXG4gKiA8ZGl2IGNsYXNzPVwidWktbGlzdFwiPlxuICogIDxkaXYgY2xhc3M9XCJ1aS1saXN0X19pdGVtXCI+PC9kaXY+XG4gKiAgPGRpdiBjbGFzcz1cInVpLWxpc3RfX2l0ZW1cIj48L2Rpdj5cbiAqICA8ZGl2IGNsYXNzPVwidWktbGlzdF9faXRlbVwiPjwvZGl2PlxuICogPC9kaXY+XG4gKlxuICogb3I6XG4gKlxuICogPHVsIGNsYXNzPVwidWktbGlzdCB1aS1saXN0LS1zbWFsbFwiPlxuICogIDxsaT48L2xpPlxuICogIDxsaT48L2xpPlxuICogIDxsaT48L2xpPlxuICogPC91bD5cbiAqXG4gKiBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHdpdGggLS1zZXBhcmF0b3IgYW5kIC0tYm9yZGVyLCB3aGVyZSAtLXNlcGFyYXRvclxuICogYWRkcyBib3JkZXJzIHRvIHRoZSBsaXN0IGVsZW1lbnQgYW5kIC0tYm9yZGVyIHRvIHRoZSBsaXN0IGl0c2VsZlxuICpcbiAqIGNvbWVzIHdpdGggZGlmZmVyZW50IHNpemUgbW9kaWZpZXJzXG4gKlxuICovXG5cbiV1aS1saXN0IHtcbiAgbWFyZ2luOiAgMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICA+IGxpIHtcbiAgICBAZXh0ZW5kICV1aS1saXN0X19pdGVtO1xuICB9XG59XG5cbiAgJXVpLWxpc3RfX2l0ZW0ge1xuICAgIEBpbmNsdWRlIHB4LXRvLXJlbShwYWRkaW5nLCBjYWxjKCRiYXNlVW5pdC8yKSk7XG4gIH1cblxuJXVpLWxpc3QtLXNlcGFyYXRvcixcbiAgJXVpLWxpc3RfX2l0ZW0ge1xuICAgIGJvcmRlcjogMCBzb2xpZCBjb2xvcignYm9yZGVyJyk7XG4gIH1cblxuJXVpLWxpc3QtLXNlcGFyYXRvciB7XG4gID4gbGksXG4gID4gLnVpLWxpc3RfX2l0ZW0ge1xuICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDtcbiAgfVxuXG4gID4gbGk6Zmlyc3QtY2hpbGQsXG4gID4gLnVpLWxpc3RfX2l0ZW06Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gIH1cbn1cblxuXG4ldWktbGlzdC0tYm9yZGVyIHtcbiAgYm9yZGVyLXRvcC13aWR0aDogMXB4O1xuICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XG59XG5cbi8qKlxuICogTW9kaWZpZXJzIGZvciBzaXppbmcgdGhlIGxpc3RcbiAqL1xuJXVpLWxpc3QtLXNtYWxsIHtcbiAgPiAudWktbGlzdF9faXRlbSB7XG4gICAgQGluY2x1ZGUgcHgtdG8tcmVtKHBhZGRpbmcsIGNhbGMoJGJhc2VVbml0LzQpKTtcbiAgfVxufVxuXG4ldWktbGlzdC0tbGFyZ2Uge1xuICA+IC51aS1saXN0X19pdGVtIHtcbiAgICBAaW5jbHVkZSBweC10by1yZW0ocGFkZGluZywgJGJhc2VVbml0KTtcbiAgfVxufVxuQGlmICRhZGRDc3MgYW5kICR1aUxpc3RPYmplY3Qge1xuICAudWktbGlzdCB7QGV4dGVuZCAldWktbGlzdDt9XG4gIC51aS1saXN0X19pdGVtIHtAZXh0ZW5kICV1aS1saXN0X19pdGVtO31cbiAgLnVpLWxpc3QtLXNlcGFyYXRvciB7QGV4dGVuZCAldWktbGlzdC0tc2VwYXJhdG9yO31cbiAgLnVpLWxpc3QtLWJvcmRlcntAZXh0ZW5kICV1aS1saXN0LS1ib3JkZXI7fVxuICAudWktbGlzdC0tc21hbGx7QGV4dGVuZCAldWktbGlzdC0tc21hbGw7fVxuICAudWktbGlzdC0tbGFyZ2V7QGV4dGVuZCAldWktbGlzdC0tbGFyZ2U7fVxufVxuIiwiXG4vKipcbiAqIF9hcnJvdy5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpYW4gRnJpZWRtYW5uXG4gKlxuICogVXNhZ2U6XG4gKiA8ZGl2IGNsYXNzPVwiYXJyb3cgYXJyb3ctLXRvcC1sZWZ0XCI+XG4gKiAgLi4uXG4gKiA8L2Rpdj5cbiAqXG4gKi9cblxuJWFycm93IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAmOmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG4vKipcbiAqIEFycm93IFRvcFxuICovXG5cbiVhcnJvdy0tdG9wLFxuJWFycm93LS10b3AtbGVmdCxcbiVhcnJvdy0tdG9wLXJpZ2h0IHtcbiAgJjpiZWZvcmUge1xuICAgIGJvcmRlci1sZWZ0OiAkYXJyb3dTaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yaWdodDogJGFycm93U2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tOiAkYXJyb3dTaXplIHNvbGlkICNmZmY7XG4gICAgdG9wOiAtJGFycm93U2l6ZTtcbiAgfVxuICBAZWFjaCAka2V5LCRjb2xvciBpbiAkY29sb3Jze1xuICAgICYuYXJyb3ctLWNvbG9yLSN7JGtleX0ge1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiVhcnJvdy0tdG9wIHtcbiAgJjpiZWZvcmUge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogLSRhcnJvd1NpemU7XG4gIH1cbn1cblxuJWFycm93LS10b3AtbGVmdCB7XG4gICY6YmVmb3JlIHtcbiAgICBsZWZ0OiAkYmFzZVVuaXQ7XG4gICAgbGVmdDogdG9SZW0oJGJhc2VVbml0KTtcbiAgfVxufVxuXG4lYXJyb3ctLXRvcC1yaWdodCB7XG4gICY6YmVmb3JlIHtcbiAgICByaWdodDogJGJhc2VVbml0O1xuICAgIHJpZ2h0OiB0b1JlbSgkYmFzZVVuaXQpO1xuICB9XG59XG5cbi8qKlxuICogQXJyb3cgQm90dG9tXG4gKi9cblxuJWFycm93LS1ib3R0b20sXG4lYXJyb3ctLWJvdHRvbS1sZWZ0LFxuJWFycm93LS1ib3R0b20tcmlnaHQge1xuICAmOmJlZm9yZSB7XG4gICAgYm9yZGVyLWxlZnQ6ICRhcnJvd1NpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJpZ2h0OiAkYXJyb3dTaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci10b3A6ICRhcnJvd1NpemUgc29saWQgI2ZmZjtcbiAgICBib3R0b206IC0kYXJyb3dTaXplO1xuICB9XG4gIEBlYWNoICRrZXksJGNvbG9yIGluICRjb2xvcnN7XG4gICAgJi5hcnJvdy0tY29sb3ItI3ska2V5fSB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuJWFycm93LS1ib3R0b20ge1xuICAmOmJlZm9yZSB7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAtJGFycm93U2l6ZTtcbiAgfVxufVxuXG4lYXJyb3ctLWJvdHRvbS1sZWZ0IHtcbiAgJjpiZWZvcmUge1xuICAgIGxlZnQ6ICRiYXNlVW5pdDtcbiAgICBsZWZ0OiB0b1JlbSgkYmFzZVVuaXQpO1xuICB9XG59XG5cbiVhcnJvdy0tYm90dG9tLXJpZ2h0IHtcbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAkYmFzZVVuaXQ7XG4gICAgcmlnaHQ6IHRvUmVtKCRiYXNlVW5pdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBcnJvdyBMZWZ0XG4gKi9cblxuJWFycm93LS1sZWZ0LFxuJWFycm93LS1sZWZ0LXRvcCxcbiVhcnJvdy0tbGVmdC1ib3R0b20ge1xuICAmOmJlZm9yZSB7XG4gICAgYm9yZGVyLXRvcDogJGFycm93U2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tOiAkYXJyb3dTaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yaWdodDogJGFycm93U2l6ZSBzb2xpZCAjZmZmO1xuICAgIGxlZnQ6IC0kYXJyb3dTaXplO1xuICB9XG4gIEBlYWNoICRrZXksJGNvbG9yIGluICRjb2xvcnN7XG4gICAgJi5hcnJvdy0tY29sb3ItI3ska2V5fSB7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4lYXJyb3ctLWxlZnQge1xuICAmOmJlZm9yZSB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogLSRhcnJvd1NpemU7XG4gIH1cbn1cblxuJWFycm93LS1sZWZ0LXRvcCB7XG4gICY6YmVmb3JlIHtcbiAgICB0b3A6ICRiYXNlVW5pdDtcbiAgICB0b3A6IHRvUmVtKCRiYXNlVW5pdCk7XG4gIH1cbn1cblxuJWFycm93LS1sZWZ0LWJvdHRvbSB7XG4gICY6YmVmb3JlIHtcbiAgICBib3R0b206ICRiYXNlVW5pdDtcbiAgICBib3R0b206IHRvUmVtKCRiYXNlVW5pdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBBcnJvdyBSaWdodFxuICovXG5cbiVhcnJvdy0tcmlnaHQsXG4lYXJyb3ctLXJpZ2h0LXRvcCxcbiVhcnJvdy0tcmlnaHQtYm90dG9tIHtcbiAgJjpiZWZvcmUge1xuICAgIGJvcmRlci10b3A6ICRhcnJvd1NpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbTogJGFycm93U2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItbGVmdDogJGFycm93U2l6ZSBzb2xpZCAjZmZmO1xuICAgIHJpZ2h0OiAtJGFycm93U2l6ZTtcbiAgfVxuICBAZWFjaCAka2V5LCRjb2xvciBpbiAkY29sb3Jze1xuICAgICYuYXJyb3ctLWNvbG9yLSN7JGtleX0ge1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4lYXJyb3ctLXJpZ2h0IHtcbiAgJjpiZWZvcmUge1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IC0kYXJyb3dTaXplO1xuICB9XG59XG5cbiVhcnJvdy0tcmlnaHQtdG9wIHtcbiAgJjpiZWZvcmUge1xuICAgIHRvcDogJGJhc2VVbml0O1xuICAgIHRvcDogdG9SZW0oJGJhc2VVbml0KTtcbiAgfVxufVxuXG4lYXJyb3ctLXJpZ2h0LWJvdHRvbSB7XG4gICY6YmVmb3JlIHtcbiAgICBib3R0b206ICRiYXNlVW5pdDtcbiAgICBib3R0b206IHRvUmVtKCRiYXNlVW5pdCk7XG4gIH1cbn1cbkBpZiAkYWRkQ3NzIGFuZCAkYXJyb3dPYmplY3Qge1xuICAuYXJyb3cge0BleHRlbmQgJWFycm93O31cblxuICAuYXJyb3ctLXRvcCB7QGV4dGVuZCAlYXJyb3ctLXRvcDt9XG4gIC5hcnJvdy0tdG9wLWxlZnQge0BleHRlbmQgJWFycm93LS10b3AtbGVmdDt9XG4gIC5hcnJvdy0tdG9wLXJpZ2h0IHtAZXh0ZW5kICVhcnJvdy0tdG9wLXJpZ2h0O31cblxuICAuYXJyb3ctLWJvdHRvbSB7QGV4dGVuZCAlYXJyb3ctLWJvdHRvbTt9XG4gIC5hcnJvdy0tYm90dG9tLWxlZnQge0BleHRlbmQgJWFycm93LS1ib3R0b20tbGVmdDt9XG4gIC5hcnJvdy0tYm90dG9tLXJpZ2h0IHtAZXh0ZW5kICVhcnJvdy0tYm90dG9tLXJpZ2h0O31cblxuICAuYXJyb3ctLWxlZnQge0BleHRlbmQgJWFycm93LS1sZWZ0O31cbiAgLmFycm93LS1sZWZ0LXRvcCB7QGV4dGVuZCAlYXJyb3ctLWxlZnQtdG9wO31cbiAgLmFycm93LS1sZWZ0LWJvdHRvbSB7QGV4dGVuZCAlYXJyb3ctLWxlZnQtYm90dG9tO31cblxuICAuYXJyb3ctLXJpZ2h0IHtAZXh0ZW5kICVhcnJvdy0tcmlnaHQ7fVxuICAuYXJyb3ctLXJpZ2h0LXRvcCB7QGV4dGVuZCAlYXJyb3ctLXJpZ2h0LXRvcDt9XG4gIC5hcnJvdy0tcmlnaHQtYm90dG9tIHtAZXh0ZW5kICVhcnJvdy0tcmlnaHQtYm90dG9tO31cbn0vL0BpZlxuIiwiLyoqXG4gKiBfaWNvbi5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpYW4gRnJpZWRtYW5uXG4gKlxuICogVXNhZ2U6XG4gKiA8aSBjbGFzcz1cImljb24gW2ljb24tLW5hdi10b2dnbGVdXCI+PC9pPlxuICpcbiAqL1xuXG4vKipcbiAqIEFsbGUgaWNvbnMgd2VyZGVuIGFscyAuc3ZnIGV4cG9ydGllcnQgdW50ZXJcbiAqIC9hc3NldHMvaW1hZ2VzL2ljb25zIGFiZ2VsZWd0IHVuZCB2b24gZ3J1bnQtc3ZnbWluXG4gKiB1bmQgZ3J1bnQtZ3J1bnRpY29uIHdlaXRlcnZlcmFyYmVpdGV0LlxuICpcbiAqIE91dHB1dCB1bnRlciAvYXNzZXRzL2ltYWdlcy9pY29ucy9ncnVudGljb25cbiAqL1xuXG4laWNvbiB7XG4gIHdpZHRoOiAkYmFzZVVuaXQ7XG4gIGhlaWdodDogJGJhc2VVbml0O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbkBpZiAkYWRkQ3NzIHtcbiAgLmljb24ge1xuICAgIEBleHRlbmQgJWljb247XG4gIH1cbn1cblxuLyoqXG4gKiBCZWlzcGllbCBmw7xyIGVpbiBJY29uXG4gKlxuICogLmljb24tLW1vYmlsZS1uYXYtdG9nZ2xlIHtcbiAqICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zdmcoXCIuLi9pbWFnZXMvbmF2LXRvZ2dsZVwiKTtcbiAqIH1cbiAqL1xuIiwiQG1peGluIHNwYWNlKCRtdWx0aXBsaWVyOiAxLCAkbmFtZTogJycsICRzY29wZTogJycpIHtcbiAgQGlmICRuYW1lID09ICdkZWZhdWx0JyB7JG5hbWU6ICcnfVxuXG4gIEBpZiAkc2NvcGUgIT0gJycgeyAkc2NvcGU6IC0jeyRzY29wZX07IH1cbiAgQGlmICRuYW1lICAhPSAnJyB7ICRuYW1lOiAtI3skbmFtZX07IH1cblxuICAlc3BhY2UjeyRzY29wZX0tLXRvcCN7JG5hbWV9IHtcbiAgICBtYXJnaW4tdG9wOiAkYmFzZVVuaXQgKiAkbXVsdGlwbGllciAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi10b3A6IHRvUmVtKCRiYXNlVW5pdCAqICRtdWx0aXBsaWVyKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgJXNwYWNlI3skc2NvcGV9LS1sZWZ0I3skbmFtZX0ge1xuICAgIG1hcmdpbi1sZWZ0OiAkYmFzZVVuaXQgKiAkbXVsdGlwbGllciAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1sZWZ0OiB0b1JlbSgkYmFzZVVuaXQgKiAkbXVsdGlwbGllcikgIWltcG9ydGFudDtcbiAgfVxuXG4gICVzcGFjZSN7JHNjb3BlfS0tcmlnaHQjeyRuYW1lfSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAkYmFzZVVuaXQgKiAkbXVsdGlwbGllciAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1yaWdodDogdG9SZW0oJGJhc2VVbml0ICogJG11bHRpcGxpZXIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAlc3BhY2UjeyRzY29wZX0tLWJvdHRvbSN7JG5hbWV9IHtcbiAgICBtYXJnaW4tYm90dG9tOiAkYmFzZVVuaXQgKiAkbXVsdGlwbGllciAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1ib3R0b206IHRvUmVtKCRiYXNlVW5pdCAqICRtdWx0aXBsaWVyKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgQGlmICRhZGRDc3MgYW5kICRzcGFjaW5nSGVscGVyIHtcbiAgICAuc3BhY2UjeyRzY29wZX0tLXRvcCN7JG5hbWV9IHtcbiAgICAgIEBleHRlbmQgJXNwYWNlI3skc2NvcGV9LS10b3AjeyRuYW1lfTtcbiAgICB9XG4gICAgLnNwYWNlI3skc2NvcGV9LS1sZWZ0I3skbmFtZX0ge1xuICAgICAgQGV4dGVuZCAlc3BhY2UjeyRzY29wZX0tLWxlZnQjeyRuYW1lfTtcbiAgICB9XG4gICAgLnNwYWNlI3skc2NvcGV9LS1yaWdodCN7JG5hbWV9IHtcbiAgICAgIEBleHRlbmQgJXNwYWNlI3skc2NvcGV9LS1yaWdodCN7JG5hbWV9O1xuICAgIH1cbiAgICAuc3BhY2UjeyRzY29wZX0tLWJvdHRvbSN7JG5hbWV9IHtcbiAgICAgIEBleHRlbmQgJXNwYWNlI3skc2NvcGV9LS1ib3R0b20jeyRuYW1lfTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBfc3BhY2luZy5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpYW4gRnJpZWRtYW5uXG4gKlxuICogVXNhZ2U6XG4gKiA8ZGl2IGNsYXNzPVwic3BhY2UtLXRvcCAgc3BhY2UtdGFiLS10b3AtZG91YmxlXCI+XG4gKiAgIC4uLlxuICogPC9kaXY+XG4gKlxuICovXG5cbi8qKlxuICogQmFzaWMgJiBzcGFjaW5nXG4gKi9cblxuQGVhY2ggJGssJHMgaW4gJHNwYWNlIHtcbiAgQGluY2x1ZGUgc3BhY2UoJHMsJGspO1xufVxuQGVhY2ggJGtleSwkYnJlYWsgaW4gJGJyZWFrcyB7XG4gIEBpbmNsdWRlIG1lZGlhKCRicmVhaykge1xuICAgIEBlYWNoICRrLCRzIGluICRzcGFjZSB7XG4gICAgICBAaW5jbHVkZSBzcGFjZSgkcywkaywka2V5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiB3aWR0aHMoJHNjb3BlOiAnJykge1xuICBAaWYgJHNjb3BlICE9ICcnIHsgJHNjb3BlOiAtI3skc2NvcGV9OyB9XG5cbiAgJG1vZGlmaWVyLXNlcGVyYXRvcjogJy0tJztcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTAgICAgICAgICAgeyBtYXgtd2lkdGg6IDAlICFpbXBvcnRhbnQ7IGRpc3BsYXk6IG5vbmU7IC1tcy1mbGV4OiAwJTsgZmxleDogMCU7fVxuXG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xb2YxLFxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Mm9mMixcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTNvZjMsXG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn00b2Y0LFxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NW9mNSxcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTZvZjYsICAgICAgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiAxMDAlOyBmbGV4OiAxMDAlO31cblxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MW9mMixcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTJvZjQsXG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0zb2Y2LFxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NG9mOCxcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTVvZjEwLFxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Nm9mMTIgICAgICB7IG1heC13aWR0aDogNTAlICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrOyAtbXMtZmxleDogNTAlOyBmbGV4OiA1MCU7fVxuXG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xb2YzLFxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Mm9mNixcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTNvZjksXG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn00b2YxMiAgICAgIHsgbWF4LXdpZHRoOiAzMy4zMzMzMyUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiAzMy4zMzMzMyU7IGZsZXg6IDMzLjMzMzMzJTt9XG5cbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTJvZjMsXG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn00b2Y2LFxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Nm9mOSxcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfThvZjEyICAgICAgeyBtYXgtd2lkdGg6IDY2LjY2NjY2JSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jazsgLW1zLWZsZXg6IDY2LjY2NjY2JTsgZmxleDogNjYuNjY2NjYlO31cblxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MW9mNCxcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTJvZjgsXG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0zb2YxMiAgICAgIHsgbWF4LXdpZHRoOiAyNSUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiAyNSU7IGZsZXg6IDI1JTt9XG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0zb2Y0LFxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Nm9mOCxcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTlvZjEyICAgICAgeyBtYXgtd2lkdGg6IDc1JSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jazsgLW1zLWZsZXg6IDc1JTsgZmxleDogNzUlO31cblxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MW9mNSxcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTJvZjEwICAgICAgeyBtYXgtd2lkdGg6IDIwJSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jazsgLW1zLWZsZXg6IDIwJTsgZmxleDogMjAlO31cbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTJvZjUsXG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn00b2YxMCAgICAgIHsgbWF4LXdpZHRoOiA0MCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiA0MCU7IGZsZXg6IDQwJTt9XG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0zb2Y1LFxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Nm9mMTAgICAgICB7IG1heC13aWR0aDogNjAlICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrOyAtbXMtZmxleDogNjAlOyBmbGV4OiA2MCU7fVxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NG9mNSxcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfThvZjEwICAgICAgeyBtYXgtd2lkdGg6IDgwJSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jazsgLW1zLWZsZXg6IDgwJTsgZmxleDogODAlO31cblxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MW9mNixcbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTJvZjEyICAgICAgeyBtYXgtd2lkdGg6IDE2LjY2NjY2JSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jazsgLW1zLWZsZXg6IDE2LjY2NjY2JTsgZmxleDogMTYuNjY2NjYlO31cbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTVvZjYsXG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xMG9mMTIgICAgIHsgbWF4LXdpZHRoOiA4My4zMzMzMyUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiA4My4zMzMzMyU7IGZsZXg6IDgzLjMzMzMzJTt9XG5cbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTFvZjggICAgICAgeyBtYXgtd2lkdGg6IDEyLjUlICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrOyAtbXMtZmxleDogMTIuNSU7IGZsZXg6IDEyLjUlO31cbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTNvZjggICAgICAgeyBtYXgtd2lkdGg6IDM3LjUlICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrOyAtbXMtZmxleDogMzcuNSU7IGZsZXg6IDM3LjUlO31cbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTVvZjggICAgICAgeyBtYXgtd2lkdGg6IDYyLjUlICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrOyAtbXMtZmxleDogNjIuNSU7IGZsZXg6IDYyLjUlO31cbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTdvZjggICAgICAgeyBtYXgtd2lkdGg6IDg3LjUlICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrOyAtbXMtZmxleDogODcuNSU7IGZsZXg6IDg3LjUlO31cblxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MW9mOSAgICAgICB7IG1heC13aWR0aDogMTEuMTExMTExMSUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiAxMS4xMTExMTExJTsgZmxleDogMTEuMTExMTExMSU7fVxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Mm9mOSAgICAgICB7IG1heC13aWR0aDogMjIuMjIyMjIyMiUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiAyMi4yMjIyMjIyJTsgZmxleDogMjIuMjIyMjIyMiU7fVxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NG9mOSAgICAgICB7IG1heC13aWR0aDogNDQuNDQ0NDQ0NCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiA0NC40NDQ0NDQ0JTsgZmxleDogNDQuNDQ0NDQ0NCU7fVxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NW9mOSAgICAgICB7IG1heC13aWR0aDogNTUuNTU1NTU1NSUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiA1NS41NTU1NTU1JTsgZmxleDogNTUuNTU1NTU1NSU7fVxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9N29mOSAgICAgICB7IG1heC13aWR0aDogNzcuNzc3Nzc3NyUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiA3Ny43Nzc3Nzc3JTsgZmxleDogNzcuNzc3Nzc3NyU7fVxuICAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9OG9mOSAgICAgICB7IG1heC13aWR0aDogODguODg4ODg4OCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiA4OC44ODg4ODg4JTsgZmxleDogODguODg4ODg4OCU7fVxuXG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xb2YxMCAgICAgIHsgbWF4LXdpZHRoOiAxMCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiAxMCU7IGZsZXg6IDEwJTt9XG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0zb2YxMCAgICAgIHsgbWF4LXdpZHRoOiAzMCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiAzMCU7IGZsZXg6IDMwJTt9XG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn03b2YxMCAgICAgIHsgbWF4LXdpZHRoOiA3MCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiA3MCU7IGZsZXg6IDcwJTt9XG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn05b2YxMCAgICAgIHsgbWF4LXdpZHRoOiA5MCUgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2s7IC1tcy1mbGV4OiA5MCU7IGZsZXg6IDkwJTt9XG5cbiAgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTFvZjEyICAgICAgeyBtYXgtd2lkdGg6ICA4LjMzMzMzMzMlICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrOyAtbXMtZmxleDogOC4zMzMzMzMzJTsgZmxleDogOC4zMzMzMzMzJTt9XG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn01b2YxMiAgICAgIHsgbWF4LXdpZHRoOiA0MS42NjY2NjY2JSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jazsgLW1zLWZsZXg6IDQxLjY2NjY2NjYlOyBmbGV4OiA0MS42NjY2NjY2JTt9XG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn03b2YxMiAgICAgIHsgbWF4LXdpZHRoOiA1OC4zMzMzMzMzJSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jazsgLW1zLWZsZXg6IDU4LjMzMzMzMzMlOyBmbGV4OiA1OC4zMzMzMzMzJTt9XG4gICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xMW9mMTIgICAgIHsgbWF4LXdpZHRoOiA5MS42NjY2NjY2JSAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jazsgLW1zLWZsZXg6IDkxLjY2NjY2NjYlOyBmbGV4OiA5MS42NjY2NjY2JTt9XG5cbiAgQGlmICRhZGRDc3MgYW5kICR3aWR0aEhlbHBlciB7XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTAge0BleHRlbmQgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTA7fVxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xb2YxLFxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0yb2YyLFxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0zb2YzLFxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn00b2Y0LFxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn01b2Y1LFxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn02b2Y2IHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xb2YxO31cbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MW9mMixcbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Mm9mNCxcbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9M29mNixcbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NG9mOCxcbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NW9mMTAsXG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTZvZjEyIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xb2YyO31cbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MW9mMyxcbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Mm9mNixcbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9M29mOSxcbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NG9mMTIge0BleHRlbmQgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTFvZjM7fVxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0yb2YzLFxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn00b2Y2LFxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn02b2Y5LFxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn04b2YxMiB7QGV4dGVuZCAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Mm9mMzt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTFvZjQsXG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTJvZjgsXG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTNvZjEyIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xb2Y0O31cbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9M29mNCxcbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Nm9mOCxcbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9OW9mMTIge0BleHRlbmQgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTNvZjQ7fVxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xb2Y1LFxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0yb2YxMCB7QGV4dGVuZCAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MW9mNTt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTJvZjUsXG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTRvZjEwIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0yb2Y1O31cbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9M29mNSxcbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9Nm9mMTAge0BleHRlbmQgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTNvZjU7fVxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn00b2Y1LFxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn04b2YxMCB7QGV4dGVuZCAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NG9mNTt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTFvZjYsXG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTJvZjEyIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xb2Y2O31cbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NW9mNixcbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MTBvZjEyIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn01b2Y2O31cbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MW9mOCB7QGV4dGVuZCAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MW9mODt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTNvZjgge0BleHRlbmQgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTNvZjg7fVxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn01b2Y4IHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn01b2Y4O31cbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9N29mOCB7QGV4dGVuZCAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9N29mODt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTFvZjkge0BleHRlbmQgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTFvZjk7fVxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0yb2Y5IHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0yb2Y5O31cbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NG9mOSB7QGV4dGVuZCAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9NG9mOTt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTVvZjkge0BleHRlbmQgJXdpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTVvZjk7fVxuICAgIC53aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn03b2Y5IHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn03b2Y5O31cbiAgICAud2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9OG9mOSB7QGV4dGVuZCAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9OG9mOTt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTFvZjEwIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xb2YxMDt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTNvZjEwIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0zb2YxMDt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTdvZjEwIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn03b2YxMDt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTlvZjEwIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn05b2YxMDt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTFvZjEyIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn0xb2YxMjt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTVvZjEyIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn01b2YxMjt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTdvZjEyIHtAZXh0ZW5kICV3aWR0aCN7JHNjb3BlfSN7JG1vZGlmaWVyLXNlcGVyYXRvcn03b2YxMjt9XG4gICAgLndpZHRoI3skc2NvcGV9I3skbW9kaWZpZXItc2VwZXJhdG9yfTExb2YxMiB7QGV4dGVuZCAld2lkdGgjeyRzY29wZX0jeyRtb2RpZmllci1zZXBlcmF0b3J9MTFvZjEyO31cbiAgfVxufVxuXG4vKipcbiAqIF93aWR0aC5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpYW4gRnJpZWRtYW5uXG4gKlxuICogVXNhZ2U6XG4gKiA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxuICogICA8ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbSAgd2lkdGgtLTFvZjEgIHdpZHRoLXRhYi0tMW9mMyAgd2lkdGgtZGVzay0tMW9mNFwiPlxuICogICAgIC4uLlxuICogICA8L2Rpdj5cbiAqICAgPGRpdiBjbGFzcz1cImdyaWRfX2l0ZW0gIHdpZHRoLS0xb2YxICB3aWR0aC10YWItLTJvZjMgIHdpZHRoLWRlc2stLTNvZjRcIj5cbiAqICAgICAuLi5cbiAqICAgPC9kaXY+XG4gKiA8L2Rpdj5cbiAqXG4gKi9cblxuQGluY2x1ZGUgd2lkdGhzKCk7XG5cbkBlYWNoICRrZXksJGJyZWFrIGluICRicmVha3Mge1xuICBAaW5jbHVkZSBtZWRpYSgkYnJlYWspIHtcbiAgICBAaW5jbHVkZSB3aWR0aHMoJGtleSk7XG4gIH1cbn1cbiIsIkBtaXhpbiB0ZXh0KCRzY29wZTogJycpIHtcbiAgQGlmICRzY29wZSAhPSAnJyB7ICRzY29wZTogLSN7JHNjb3BlfTsgfVxuXG4gICV0ZXh0I3skc2NvcGV9LS1sZWZ0ICAgeyB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gICV0ZXh0I3skc2NvcGV9LS1yaWdodCAgeyB0ZXh0LWFsaWduOiByaWdodDsgfVxuICAldGV4dCN7JHNjb3BlfS0tY2VudGVyIHsgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIEBpZiAkYWRkQ3NzIGFuZCAkdHlwb0hlbHBlciB7XG4gICAgLnRleHQjeyRzY29wZX0tLWxlZnQgICB7IEBleHRlbmQgJXRleHQjeyRzY29wZX0tLWxlZnQ7IH1cbiAgICAudGV4dCN7JHNjb3BlfS0tcmlnaHQgIHsgQGV4dGVuZCAldGV4dCN7JHNjb3BlfS0tcmlnaHQ7IH1cbiAgICAudGV4dCN7JHNjb3BlfS0tY2VudGVyIHsgQGV4dGVuZCAldGV4dCN7JHNjb3BlfS0tY2VudGVyOyB9XG4gIH1cbn1cblxuLyoqXG4gKiBfdHlwby5zY3NzXG4gKlxuICogQXV0aG9yOiBNYXJpYW4gRnJpZWRtYW5uXG4gKlxuICogQWx0IFRleHQgU3R5bGVzLlxuICpcbiAqICMjIGFsaWdubWVudFxuICogLSB0ZXh0LS1sZWZ0XG4gKiAtIHRleHQtLXJpZ2h0XG4gKiAtIHRleHQtLWNlbnRlclxuICpcbiAqICMjIHV0aWxpdGllc1xuICogLSB0ZXh0LS1zZWNvbmRhcnlcbiAqIC0gdGV4dC0taW5oZXJpdC1jb2xvclxuICogLSB0ZXh0LS1uby13cmFwXG4gKiAtIHRleHQtLWxhcmdlXG4gKlxuICogVXNhZ2U6XG4gKiA8ZGl2IGNsYXNzPVwidGV4dC0tbGFyZ2VcIj5cbiAqICAgPGgxPkxvcmVtIElwc3VtPC9oMT5cbiAqICAgPHA+TG9yZW0gaXBzdW08L3A+XG4gKiA8L2Rpdj5cbiAqXG4gKi9cblxuLyoqXG4gKiBQcmV2ZW50IHRleHQgZnJvbSB3cmFwcGluZ1xuICovXG4ldGV4dC0tbm8td3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbn1cblxuLyoqXG4gKiBEaXNwbGF5IHRleHQgaW4gc2Vjb25kYXJ5IGZvbnRcbiAqL1xuJXRleHQtLXNlY29uZGFyeSB7XG4gIGZvbnQtZmFtaWx5OiAkZm9udFNlY29uZGFyeSAhaW1wb3J0YW50O1xufVxuXG4vKipcbiAqIERpc3BsYXkgbGFyZ2VyIHRleHRcbiAqL1xuJXRleHQtLWxhcmdlIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoZWFkaW5nU2l6ZTQsIGZhbHNlKTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cbkBpZiAkYWRkQ3NzIGFuZCAkdHlwb0hlbHBlciB7XG4gIC50ZXh0LS1uby13cmFwIHtcbiAgICBAZXh0ZW5kICV0ZXh0LS1uby13cmFwO1xuICB9XG4gIC50ZXh0LS1zZWNvbmRhcnkge1xuICAgIEBleHRlbmQgJXRleHQtLXNlY29uZGFyeTtcbiAgfVxuICAudGV4dC0tbGFyZ2Uge1xuICAgIEBleHRlbmQgJXRleHQtLWxhcmdlO1xuICB9XG59XG5cbkBpbmNsdWRlIHRleHQoKTtcbkBlYWNoICRrZXksJGJyZWFrIGluICRicmVha3Mge1xuICBAaW5jbHVkZSBtZWRpYSgkYnJlYWspIHtcbiAgICBAaW5jbHVkZSB0ZXh0KCRrZXkpO1xuICB9XG59XG4iLCJAbWl4aW4gY29sb3JDbGFzcygkc2NvcGU6ICcnKSB7XG4gIEBpZiAkc2NvcGUgIT0gJycgeyAkc2NvcGU6IC0jeyRzY29wZX07IH1cbiAgQGVhY2ggJGtleSwkY29sb3IgaW4gJGNvbG9yc3tcbiAgICAlYyN7JHNjb3BlfS0tI3ska2V5fSB7XG4gICAgICBjb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICAlYmcjeyRzY29wZX0tLSN7JGtleX0ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAaWYgJGFkZENzcyBhbmQgJGNvbG9ySGVscGVyIHtcbiAgICAgIC5jI3skc2NvcGV9LS0jeyRrZXl9IHtcbiAgICAgICAgQGV4dGVuZCAlYyN7JHNjb3BlfS0tI3ska2V5fTtcbiAgICAgIH1cbiAgICAgIC5iZyN7JHNjb3BlfS0tI3ska2V5fSB7XG4gICAgICAgIEBleHRlbmQgJWJnI3skc2NvcGV9LS0jeyRrZXl9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAlYyN7JHNjb3BlfS0taW5oZXJpdCB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gIH1cbiAgJWJnI3skc2NvcGV9LS1pbmhlcml0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICB9XG4gIEBpZiAkYWRkQ3NzIGFuZCAkY29sb3JIZWxwZXIge1xuICAgIC5jI3skc2NvcGV9LS1pbmhlcml0IHtcbiAgICAgIEBleHRlbmQgJWMjeyRzY29wZX0tLWluaGVyaXQ7XG4gICAgfVxuICAgIC5iZyN7JHNjb3BlfS0taW5oZXJpdCB7XG4gICAgICBAZXh0ZW5kICViZyN7JHNjb3BlfS0taW5oZXJpdDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4qIF9jb2xvci5zY3NzXG4qL1xuXG5AaWYgJGFkZENzcyBhbmQgJGNvbG9ySGVscGVyIHtcbiAgOnJvb3Qge1xuICAgIEBlYWNoICRrZXksJGNvbG9yIGluICRjb2xvcnN7XG4gICAgICAtLSN7JGtleX06ICN7JGNvbG9yfTtcbiAgICB9XG4gIH1cbn1cbkBpbmNsdWRlIGNvbG9yQ2xhc3MoKTtcblxuQGVhY2ggJGtleSwkYnJlYWsgaW4gJGJyZWFrcyB7XG4gIEBpbmNsdWRlIG1lZGlhKCRicmVhaykge1xuICAgIEBpbmNsdWRlIGNvbG9yQ2xhc3MoJGtleSk7XG4gIH1cbn1cblxuIiwiJXRleHQtLWxhcmdle1xuICBmb250LXNpemU6IDI0cHg7XG4gIGxpbmUtaGVpZ2h0OiAzNHB4O1xufVxuJXRleHQtLW1lZGl1bXtcbiAgZm9udC1zaXplOiAkYmFzZUZvbnRTaXplIC0gMTtcbiAgbGluZS1oZWlnaHQ6ICRiYXNlTGluZUhlaWdodDtcbn1cbiV0ZXh0LS10aW55e1xuICBmb250LXNpemU6ICRiYXNlRm9udFNpemUgLSA0O1xuICBsaW5lLWhlaWdodDogJGJhc2VMaW5lSGVpZ2h0IC0gNDtcbn1cbiV0ZXh0LS1zbWFsbHtcbiAgZm9udC1zaXplOiAkYmFzZUZvbnRTaXplIC0gMztcbiAgbGluZS1oZWlnaHQ6ICRiYXNlTGluZUhlaWdodCAtIDM7XG59XG4ldGV4dC0taW5pdGlhbHtcbiAgdGV4dC10cmFuc2Zvcm06IGluaXRpYWw7XG59XG4laGVhZGluZy0we1xuICBmb250LXNpemU6IDU1cHg7XG4gIGxpbmUtaGVpZ2h0OiA2NHB4O1xuICBmb250LWZhbWlseTogJGZvbnRTZWNvbmRhcnk7XG4gIGNvbG9yOiBjb2xvcignYmxhY2snKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC0gMC4wMnJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgQGluY2x1ZGUgbWVkaWEoYnJlYWsoJ2Rlc2snKSl7XG4gICAgZm9udC1zaXplOiAxMjBweDtcbiAgICBsaW5lLWhlaWdodDogMTQwcHg7XG4gIH1cbn1cbiVoZWFkaW5nLTEtYWx0e1xuICBmb250LXNpemU6IDU1cHg7XG4gIGxpbmUtaGVpZ2h0OiA2NHB4O1xuICBmb250LWZhbWlseTogJGZvbnRQcmltYXJ5O1xuICBjb2xvcjogY29sb3IoJ2JsYWNrJyk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxldHRlci1zcGFjaW5nOiAtIDAuMDNyZW07XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIEBpbmNsdWRlIG1lZGlhKGJyZWFrKCdkZXNrJykpe1xuICAgIGZvbnQtc2l6ZTogOTBweDtcbiAgICBsaW5lLWhlaWdodDogMTAwcHg7XG4gIH1cbn1cbiVoZWFkaW5nLTItYWx0e1xuICBmb250LXNpemU6IDQ4cHg7XG4gIGxpbmUtaGVpZ2h0OiA1OHB4O1xuICBmb250LWZhbWlseTogJGZvbnRTZWNvbmRhcnk7XG4gIGNvbG9yOiBjb2xvcignYmxhY2snKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC0gMC4wM3JlbTtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuLnRleHQtLWxhcmdle1xuICBAZXh0ZW5kICV0ZXh0LS1sYXJnZTtcbn1cbi50ZXh0LS1tZWRpdW17XG4gIEBleHRlbmQgJXRleHQtLW1lZGl1bTtcbn1cbi50ZXh0LS1zbWFsbHtcbiAgQGV4dGVuZCAldGV4dC0tc21hbGw7XG59XG4udGV4dC0tdGlueXtcbiAgQGV4dGVuZCAldGV4dC0tdGlueTtcbn1cbi50ZXh0LS1pbml0aWFse1xuICBAZXh0ZW5kICV0ZXh0LS1pbml0aWFsO1xufVxuLmhlYWRpbmctMHtcbiAgQGV4dGVuZCAlaGVhZGluZy0wO1xufVxuLmhlYWRpbmctMS1hbHR7XG4gIEBleHRlbmQgJWhlYWRpbmctMS1hbHQ7XG59XG4uaGVhZGluZy0yLWFsdHtcbiAgQGV4dGVuZCAlaGVhZGluZy0yLWFsdDtcbn1cblxuLmhlYWRpbmctMSxcbi5oZWFkaW5nLTIsXG4uaGVhZGluZy0zLFxuLmhlYWRpbmctNCxcbi5oZWFkaW5nLTUsXG4uaGVhZGluZy02IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbiIsIkBpbXBvcnQgJ2Jhc2UnO1xuXG4uZ3VpZGVzIHtcbiAgJl9faXRlbSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCd3aGl0ZScpO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBib3gtc2hhZG93OiAwcHggMThweCAzNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMDkpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG4gICZfX2ltYWdlIHtcbiAgICBmaWd1cmUge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgICBpbWcge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cbiAgJl9fY29udGVudCB7XG4gICAgcGFkZGluZzogJGJhc2VVbml0ICRiYXNlVW5pdCAkYmFzZVVuaXQqMS41O1xuICB9XG4gICZfX3RpdGxlIHtcbiAgICBAZXh0ZW5kICVoZWFkaW5nLTU7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJhc2VVbml0Ki41O1xuICB9XG4gICZfX3RleHQge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBjb2xvcjogY29sb3IoJ2dyZXkyJyk7XG4gIH1cbiAgJi0tc2xpZGVyIHtcbiAgICAuZ3VpZGVzX19pdGVtIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRiYXNlVW5pdDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuICB9XG59Il19 */

.text--large{font-size:24px;font-size:1.4117647059rem;line-height:1.5}.text--large{font-size:24px;line-height:34px}.text--medium{font-size:16px;line-height:29px}.text--tiny{font-size:13px;line-height:25px}.text--small{font-size:14px;line-height:26px}.text--initial{text-transform:initial}.heading-0{font-size:55px;line-height:64px;font-family:"RocGroteskBold",sans-serif;color:#000;font-weight:600;letter-spacing:-0.02rem;margin-bottom:20px}@media screen and (min-width: 1024px){.heading-0{font-size:120px;line-height:140px}}.heading-1-alt{font-size:55px;line-height:64px;font-family:"Roboto",sans-serif;color:#000;font-weight:500;letter-spacing:-0.03rem;margin-bottom:20px}@media screen and (min-width: 1024px){.heading-1-alt{font-size:90px;line-height:100px}}.heading-2-alt{font-size:48px;line-height:58px;font-family:"RocGroteskBold",sans-serif;color:#000;font-weight:600;letter-spacing:-0.03rem;margin-bottom:20px}.heading-1,.heading-2,.heading-3,.heading-4,.heading-5,.heading-6{display:block}.teaser-breakout,.teaser{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:40px 20px;background:linear-gradient(45deg, rgb(0, 181, 226) 0%, rgb(0, 181, 226) 20%, rgb(191, 223, 38) 80%, rgb(191, 223, 38) 100%);max-width:1370px;margin:0 auto;border-radius:15px;position:relative;margin-top:123px}@media screen and (min-width: 721px){.teaser-breakout,.teaser{margin-top:0;border-radius:20px}}@media screen and (min-width: 1024px){.teaser-breakout,.teaser{margin-top:123px;padding:68px 40px;border-radius:25px}}@media screen and (min-width: 1200px){.teaser-breakout,.teaser{padding:40px 100px 40px;border-radius:30px}}.teaser-breakout__inner,.teaser__inner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;position:relative;z-index:2;gap:30px}@media screen and (min-width: 721px){.teaser-breakout__inner,.teaser__inner{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.teaser-breakout__content,.teaser__content{max-width:492px}@media screen and (min-width: 721px){.teaser-breakout__content,.teaser__content{width:45%}}@media screen and (min-width: 1024px){.teaser-breakout__content,.teaser__content{width:50%}}.teaser-breakout__image,.teaser__image{max-width:320px;margin:-120px auto 0}@media screen and (min-width: 721px){.teaser-breakout__image,.teaser__image{max-width:515px;margin:0;width:45%}}@media screen and (min-width: 1024px){.teaser-breakout__image,.teaser__image{margin-top:-160px;width:50%}}.teaser-breakout__image .content-image,.teaser-breakout__image figure,.teaser__image .content-image,.teaser__image figure{display:block;margin-bottom:0}.teaser-breakout__image .content-image img,.teaser-breakout__image figure img,.teaser__image .content-image img,.teaser__image figure img{display:block}.teaser-breakout__headline,.teaser__headline{margin-bottom:8px;color:#fff}.teaser-breakout__text,.teaser__text{display:block;color:#fff;margin-bottom:40px}.teaser-breakout__deco,.teaser__deco{display:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;pointer-events:none}@media screen and (min-width: 1024px){.teaser-breakout__deco,.teaser__deco{display:block}}.teaser-breakout__deco__item,.teaser__deco__item{position:absolute;top:0;left:0;width:1px;height:100px;background:-webkit-gradient(linear, left top, left bottom, from(rgb(0, 127, 158)), to(rgb(246, 244, 254)));background:linear-gradient(180deg, rgb(0, 127, 158) 0%, rgb(246, 244, 254) 100%);z-index:-1;opacity:.4}.teaser-breakout__deco__item:nth-child(1),.teaser__deco__item:nth-child(1){top:10px;left:100px}.teaser-breakout__deco__item:nth-child(2),.teaser__deco__item:nth-child(2){top:auto;bottom:10px;left:20%}.teaser-breakout__deco__item:nth-child(3),.teaser__deco__item:nth-child(3){top:13%;left:36%}.teaser-breakout__deco__item:nth-child(4),.teaser__deco__item:nth-child(4){top:55%;left:50%}.teaser-breakout__deco__item:nth-child(5),.teaser__deco__item:nth-child(5){top:auto;bottom:20px;left:auto;right:34%}.teaser-breakout__deco__item:nth-child(6),.teaser__deco__item:nth-child(6){top:13%;left:auto;right:80px}
