/**
 * Settings - Animations
 * Standard sets of animation variables and mappings to be of use across the site, for consistency and accuracy.
 *
 * - 01 - Transitions
 */
/*------------------------------------*\
  01 - Transitions
\*------------------------------------*/
/**
 * Settings - Breakpoints
 * - 01 - Mapping
 */
/*------------------------------------*\
  01 - Mapping
  Default mapping of grid breakpoints, which is used in the function and mixin breakpoint files. An example of using
  breakpoints in a file is by using the mixin with the name of a breakpoint: `@include bp-min(small) {}`.

  These breakpoints may be altered depending on the theme needs.
\*------------------------------------*/
/**
 * Settings - Color
 * Standard sets of color variables and mappings to be of use across the site, for consistency and accuracy.
 *
 * - 01 - Theme Colors
 * - 02 - Grayscale
 * - 03 - Utilities
 * - 04 - Mapping
 */
/*------------------------------------*\
  01 - Theme Colors
\*------------------------------------*/
/*------------------------------------*\
  02 - Grayscale
\*------------------------------------*/
/*------------------------------------*\
  03 - Utilities
\*------------------------------------*/
/*------------------------------------*\
  04 - Mapping
\*------------------------------------*/
/**
 * Settings - Layout
 * Standard sets of layout variables and mappings to be of use across the site, for consistency and accuracy.
 *
 * - 01 - Grid
 * - 02 - Widths
 * - 03 - Layers
 */
/*------------------------------------*\
  01 - Grid
\*------------------------------------*/
/*------------------------------------*\
  01 - Widths
  // 'xxlarge':  1920px,
  // 'xlarge':   1440px,
  // 'large':    1280px,
  // 'medium':   960px,
  // 'small':    768px,
  // 'xsmall':   640px,
  // 'xxsmall':  480px,
\*------------------------------------*/
/*------------------------------------*\
  03 - Layers
\*------------------------------------*/
/**
 * Settings - Typography
 * Standard sets of typographical variables and mappings to be of use across the site, for consistency and accuracy.
 *
 * - 01 - Heading Sizes
 * - 02 - Line Heights
 */
/*------------------------------------*\
  01 - Heading Sizes
\*------------------------------------*/
/*------------------------------------*\
  01 - Line Heights
\*------------------------------------*/
/**
 * Partials Combined
 * Partials can be imported into theme files either one by one, or by using this combined Partials file. To use this
 * file as the import statement, `@use '[path]/partials/partials' as *`.
 *
 * - 01 - Settings
 * - 02 - Functions
 * - 03 - Mixins
 */
/*------------------------------------*\
  01 - Settings
\*------------------------------------*/
/**
 * Functions - Animations
 * Simple functions to help developers easily grab pre-defined animation values from mapping lists.
 *
 * - 01 - Imports
 * - 02 - Transition
 */
/*------------------------------------*\
  01 - Imports
\*------------------------------------*/
/*------------------------------------*\
  02 - Transition
  Easy to use function to quickly define a transition with the ability to reference a library mapping of bezier-curve
  animations, as defined in `partials/settings/_animations.scss`.
  - @param $argument: Style arguments that this transition should be applied to.
  - @param $duration: The length of time the transition should take place.
  - @param $style: The style of transition, as defined in `partials/settings/_animations.scss`
  - @example = transition: transition(all, 0.6s, easeInOutSine)
\*------------------------------------*/
/**
 * Functions - Breakpoints
 * Breakpoint viewport sizes and media queries. Breakpoints are defined as a map of (name: minimum width), order from
 * xsmall to xlarge: (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px). The map defined in the `$grid-breakpoints`
 * global variable is used as the `$breakpoints` argument by default.
 *
 * - 01 - Breakpoint Next
 * - 02 - Breakpoint Minimum
 * - 03 - Breakpoint Maximum
 * - 04 - Breakpoint Infix
 */
/*------------------------------------*\
  01 - Breakpoint Next
  Name of the next breakpoint, or null for the last breakpoint.
  - @param $name: Selected breakpoint name as defined in partials/settings/_breakpoints.scss
  - @param $breakpoints: Breakpoints mapping values as defined in partials/settings/_breakpoints.scss
  - @param $breakpoint-names: Breakpoints mapping names as defined in partials/settings/_breakpoints.scss
\*------------------------------------*/
/*------------------------------------*\
  02 - Breakpoint Minimum
  Minimum breakpoint width. Null for the smallest (first) breakpoint.
  - @param $name: Selected breakpoint name as defined in partials/settings/_breakpoints.scss
  - @param $breakpoints: Breakpoints mapping values as defined in partials/settings/_breakpoints.scss
\*------------------------------------*/
/*------------------------------------*\
  03 - Breakpoint Maximum
  The maximum value is reduced by 0.02px to work around the limitations of `min-` and `max-` prefixes and viewports
  with fractional widths. See https://www.w3.org/TR/mediaqueries-4/#mq-min-max. Uses 0.02px rather than 0.01px to work
  around a current rounding bug in Safari. See https://bugs.webkit.org/show_bug.cgi?id=178261
  - @param $name: Selected breakpoint name as defined in partials/settings/_breakpoints.scss
  - @param $breakpoints: Breakpoints mapping values as defined in partials/settings/_breakpoints.scss
\*------------------------------------*/
/*------------------------------------*\
  04 - Breakpoint Infix
  Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front. Useful for making
  responsive utilities.
  - @param $name: Selected breakpoint name as defined in partials/settings/_breakpoints.scss
  - @param $breakpoints: Breakpoints mapping values as defined in partials/settings/_breakpoints.scss
\*------------------------------------*/
/**
 * Functions - Calculations
 * Simple functions to help developers calculate different values from percentages to sizing such as REMs.
 *
 * - 01 - Imports
 * - 02 - Target/Container Percentage
 * - 03 - REMs
 */
/*------------------------------------*\
  01 - Imports
\*------------------------------------*/
/*------------------------------------*\
  02 - Target/Container Percentage
  Calculate the percentage of a target size compared to a container size.
  - @param $target: Size of an element needing a calculated percentage.
  - @param $container: Size of the target's container, needed to calculate percentage.
  - @example = width: calc-percent(250, 1000);
\*------------------------------------*/
/*------------------------------------*\
  03 - REMs
  Calculate a size into REM units -- mostly used for font size rendering.
  - @param $size: Size of an element needing a calculated size into REMs.
  - @param $base: Base font size of the site -- defaults to 16px.
  - @example = font-size: calc-rem(24px);
\*------------------------------------*/
/**
 * Functions - Color
 * Simple functions to help developers easily grab pre-defined color values from mapping lists.
 *
 * - 01 - Imports
 * - 02 - Color
 */
/*------------------------------------*\
  01 - Imports
\*------------------------------------*/
/*------------------------------------*\
  02 - Color
  Main function for getting a pre-defined color from a list of values, as defined in 'partials/settings/_colors.scss.
  - @param $color: The selected color.
  - @example = background-color: color(primary);
\*------------------------------------*/
/**
 * Functions - Layout
 * Simple functions to help developers easily grab pre-defined layout values from mapping lists.
 *
 * - 01 - Imports
 * - 02 - Widths
 * - 03 - Z-index
 */
/*------------------------------------*\
  01 - Imports
\*------------------------------------*/
/*------------------------------------*\
  02 - Widths
  Main function for getting a pre-defined width from a list of values, as defined in 'partials/settings/_layout.scss.
  - @param $width: The selected width size.
  - @example: width: width(large);
\*------------------------------------*/
/*------------------------------------*\
  03 - Z-index
  Main function for getting a pre-defined z-index from a list of values, as defined in 'partials/settings/_layout.scss.
  - @param $key: The selected layer type.
  - @example = z-index: z-index(bottomless-pit)
\*------------------------------------*/
/**
 * Functions - Typography
 * Simple functions to help developers easily grab pre-defined typographical values from mapping lists.
 *
 * - 01 - Imports
 * - 02 - Line Height
 */
/*------------------------------------*\
  01 - Imports
\*------------------------------------*/
/*------------------------------------*\
  02 - Line Height
  Main function for getting a pre-defined Line Height from a list of values, as defined in
  `partials/settings/_typography.scss`.
  - @param $size: The selected Line Height type.
  - @example: line-height: line-height(heading);
\*------------------------------------*/
/**
 * Mixins - Breakpoints
 * Use these mixins mainly when defining media breakpoint specifications in theme files. Both settings and functions
 * are imported here to supplement the mixins themselves.
 *
 * - 01 - Imports
 * - 02 - Minimum Breakpoint
 * - 03 - Maximum Breakpoint
 * - 04 - Between Breakpoint
 * - 05 - Only Breakpoint
 */
/*------------------------------------*\
  01 - Imports
\*------------------------------------*/
/*------------------------------------*\
  02 - Minimum Breakpoint
  Media/screen-size of at least the minimum breakpoint width -- apply to screen-sizes above the breakpoint specified.
  - @param $name: Selected breakpoint name as defined in partials/settings/_breakpoints.scss
  - @param $breakpoints: Breakpoints mapping values as defined in partials/settings/_breakpoints.scss
  - @example = @include bp-min(large) {}
\*------------------------------------*/
/*------------------------------------*\
  03 - Maximum Breakpoint
  Media/screen-size of at most the maximum breakpoint width -- apply to screen-sizes below the breakpoint specified.
  - @param $name: Selected breakpoint name as defined in partials/settings/_breakpoints.scss
  - @param $breakpoints: Breakpoints mapping values as defined in partials/settings/_breakpoints.scss
  - @example = @include bp-max(large) {}
\*------------------------------------*/
/*------------------------------------*\
  04 - Between Breakpoint
  Media/screen-size that spans multiple breakpoint widths -- apply to screen-sizes between the breakpoints specified.
  - @param $lower: Selected minimum breakpoint name as defined in partials/settings/_breakpoints.scss
  - @param $upper: Selected maximum breakpoint name as defined in partials/settings/_breakpoints.scss
  - @param $breakpoints: Breakpoints mapping values as defined in partials/settings/_breakpoints.scss
  - @example = @include bp-between(xsmall, large) {}
\*------------------------------------*/
/*------------------------------------*\
  05 - Only Breakpoint
  Media/screen-size between the breakpoint's minimum and maximum widths -- No minimum for the smallest breakpoint, and
  no maximum for the largest one.
  - @param $name: Selected breakpoint name as defined in partials/settings/_breakpoints.scss
  - @param $breakpoints: Breakpoints mapping values as defined in partials/settings/_breakpoints.scss
  - @example = @include bp-only(large) {}
\*------------------------------------*/
/**
 * Mixins - Lists
 * Use these mixins when needing to easily define lists styles.
 *
 * - 01 - Base
 * - 02 - Bullets
 * - 03 - Numbered
 * - 04 - No Bullets
 * - 05 - Inline
 * - 06 - Ruled
 */
/*------------------------------------*\
  01 - Base
\*------------------------------------*/
/*------------------------------------*\
  02 - Bullets
\*------------------------------------*/
/*------------------------------------*\
  03 - Numbered
\*------------------------------------*/
/*------------------------------------*\
  04 - No Bullets
\*------------------------------------*/
/*------------------------------------*\
  05 - Inline
\*------------------------------------*/
/*------------------------------------*\
  06 - Ruled
\*------------------------------------*/
/*------------------------------------*\
  03 - Mixins
\*------------------------------------*/
/**
 * Mixins - Typography
 * Use these mixins when needing to easily define typography styles, such as sizes and typographical layout.
 *
 * - 01 - Imports
 * - 02 - Heading Size
 */
/*------------------------------------*\
  01 - Imports
\*------------------------------------*/
/*------------------------------------*\
  02 - Heading Size
  Meant for responsive heading sizes and is based upon breakpoints and a mapping of heading sizes. Breakpoints are
  defined in the `partials/settings/_breakpoints.scss` file and are utilized with a mixin, as defined in
  `partials/mixins/_breakpoints.scss`.
  - @param $setting: Selected heading to apply responsive sizing to.
\*------------------------------------*/
/** API
Animation
- transition-speed (F, S)
- transition-ease

Logo
- width
- inset

Menu Button
- icon size
- Inset
- transition speed
- background color
- button (fill) color
- border
- size
- width

Button
- font-size
- color-text (H, F, A, D)
- color-background (H, F, A, D)
- color-border (H, F, A, D)
- color-glow
- color-shadow
- size-icon
- size-border
- size-radius
- space-inset

Label
- font-family
- font-weight
- font-size
- color-text (D, E)
- space-gap

Input
- font-family
- font-weight
- font-size
- color-text (D, E)
- space-gap
- space-inset
- size-radius
- size-icon

Form-Item
- space-gap

**/
:root {
  /**
    Boolean inputs such as checkboxs and radios
    as well as select options when styling is available.
  **/
  --options-space-gap-y: 0.75em;
  --options-space-gap-x: 0.25em;
  --option-line-height: var(--font-line-height-tight, 1.2);
  --option-font-size: 16px;
  --option-font-weight: 400;
  --option-space-gap-x: 0.75em;
  --option-space-gap-y: 0.25em;
  --option-input-size: 0.75em;
}

label,
legend {
  color: var(--color-black);
  font-size: var(--font-size-body-16);
  line-height: var(--font-line-height-body-16);
  font-weight: var(--font-weight-semibold);
  display: block;
  margin-bottom: 0;
}

textarea {
  display: block;
  width: 100%;
}

input[type=text],
input[type=password],
input[type=date],
input[type=email],
input[type=number],
input[type=tel] {
  color: var(--color-black);
  border-radius: 0.25rem;
  border: 0.0625rem solid var(--color-dark-gray);
  padding: 0.34375rem 1rem;
  font-size: var(--font-size-body-16);
  line-height: var(--font-line-height-body-16);
  font-weight: var(--font-weight-regular);
  height: auto;
  width: 100%;
  max-width: 36.25rem;
}
input[type=text]:focus,
input[type=password]:focus,
input[type=date]:focus,
input[type=email]:focus,
input[type=number]:focus,
input[type=tel]:focus {
  outline-color: var(--color-black);
  outline-offset: 0px;
  outline-style: solid;
  outline-width: 2px;
  border-color: transparent;
}

input[type=file] {
  height: inherit;
}

input[type=radio] {
  background-color: var(--color-white);
  width: 1.5rem;
  height: 1.5rem;
  border: none;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  position: relative;
  cursor: pointer;
}
input[type=radio]::after {
  content: "";
  background-image: url("../../../../images/icons/radio.svg");
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  display: block;
  width: 1.5rem;
  height: 1.5rem;
  top: 0;
  left: 0;
  position: absolute;
}
input[type=radio]:active, input[type=radio]:focus {
  -webkit-box-shadow: 0px 0px 0px 2px #3cf;
          box-shadow: 0px 0px 0px 2px #3cf;
  border-radius: 500%;
}
input[type=radio]:checked:after {
  background-image: url("../../../../images/icons/radio-selected.svg");
}

input[type=checkbox] {
  background-color: var(--color-white);
  width: 1.5rem;
  height: 1.5rem;
  border: none;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  position: relative;
  cursor: pointer;
}
input[type=checkbox]::after {
  content: "";
  background-image: url("../../../../images/icons/checkbox.svg");
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  display: block;
  width: 1.5rem;
  height: 1.5rem;
  top: 0;
  left: 0;
  position: absolute;
}
input[type=checkbox]:checked:after {
  background-image: url("../../../../images/icons/checkbox-selected.svg");
}

input[type=radio]:focus,
input[type=checkbox]:focus {
  -webkit-box-shadow: 0px 0px 0px 2px var(--color-black);
          box-shadow: 0px 0px 0px 2px var(--color-black);
}

input[type=submit]:not(#edit-reset) {
  cursor: pointer;
  color: var(--color-primary-button-text);
  border: none;
  background-color: var(--color-primary-button);
  border-color: var(--color-primary-button);
  border-radius: 2rem;
  -webkit-box-align: center;
          align-items: center;
  display: -webkit-inline-box;
  display: inline-flex;
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-semibold);
  line-height: var(--font-line-height-lg);
  text-decoration: none;
  -webkit-transition: color 350ms cubic-bezier(0.4, 0, 0.2, 1), background-color 350ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: color 350ms cubic-bezier(0.4, 0, 0.2, 1), background-color 350ms cubic-bezier(0.4, 0, 0.2, 1);
  padding: 0.25rem 1rem;
}
@media (min-width: 1024px) {
  input[type=submit]:not(#edit-reset) {
    padding: 0.5rem 2rem;
  }
}
input[type=submit]:not(#edit-reset):hover {
  color: var(--color-white);
  background-color: var(--color-primary-button-hover);
  text-decoration: underline;
  -webkit-transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1), background-color 150ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1), background-color 150ms cubic-bezier(0.4, 0, 0.2, 1);
}
input[type=submit]:not(#edit-reset):focus {
  color: var(--color-white);
  outline-offset: 0.1875rem;
  background-color: var(--color-primary-button-hover);
  outline: 0.0625rem solid var(--color-black);
  text-decoration: underline;
  -webkit-transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1), background-color 150ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1), background-color 150ms cubic-bezier(0.4, 0, 0.2, 1);
}

textarea::-webkit-input-placeholder, input::-webkit-input-placeholder {
  color: var(--color-medium-gray);
  font-size: var(--font-size-body-16);
  line-height: var(--font-line-height-body-16);
  font-weight: var(--font-weight-regular);
}

textarea::-moz-placeholder, input::-moz-placeholder {
  color: var(--color-medium-gray);
  font-size: var(--font-size-body-16);
  line-height: var(--font-line-height-body-16);
  font-weight: var(--font-weight-regular);
}

textarea:-ms-input-placeholder, input:-ms-input-placeholder {
  color: var(--color-medium-gray);
  font-size: var(--font-size-body-16);
  line-height: var(--font-line-height-body-16);
  font-weight: var(--font-weight-regular);
}

textarea::-ms-input-placeholder, input::-ms-input-placeholder {
  color: var(--color-medium-gray);
  font-size: var(--font-size-body-16);
  line-height: var(--font-line-height-body-16);
  font-weight: var(--font-weight-regular);
}

textarea::placeholder,
input::placeholder {
  color: var(--color-medium-gray);
  font-size: var(--font-size-body-16);
  line-height: var(--font-line-height-body-16);
  font-weight: var(--font-weight-regular);
}

textarea {
  border-radius: 0.25rem;
  border: 0.0625rem solid var(--color-dark-gray);
  padding: 0.5rem 1rem;
  font-size: var(--font-size-body-16);
  line-height: var(--font-line-height-body-16);
  font-weight: var(--font-weight-regular);
}

select {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  text-indent: 0.01px;
  text-overflow: "";
  border-radius: 0.25rem;
  border: 0.0625rem solid var(--color-dark-gray);
  padding: 0.25rem 1rem;
  font-size: var(--font-size-body-16);
  line-height: var(--font-line-height-body-16);
  font-weight: var(--font-weight-regular);
  background-color: var(--color-white);
  background-image: url("../../../../images/icons/chevron-down.svg");
  background-repeat: no-repeat;
  background-position: center right 1rem;
  background-size: 1.25rem 1.25rem;
  color: var(--color-black);
}
select option {
  color: var(--color-black);
}

select::-ms-expand {
  display: none;
}

.form-item > * + * {
  margin-top: 0.25rem;
}

.form-item + .form-item {
  margin-top: 2rem;
}

.form-wrapper {
  border: none;
  padding: 0;
  margin: 2rem 0 0 0;
}

.form-wrapper .fieldset-wrapper {
  display: grid;
  grid-template-columns: 1fr;
  grid-row-gap: 1.875rem;
  row-gap: 1.875rem;
  grid-column-gap: 1.25rem;
  -webkit-column-gap: 1.25rem;
     -moz-column-gap: 1.25rem;
          column-gap: 1.25rem;
}
@media (min-width: 1024px) {
  .form-wrapper .fieldset-wrapper {
    grid-template-columns: repeat(2, 1fr);
  }
}
.form-wrapper .fieldset-wrapper .form-item {
  margin: 0;
}

.form-type-boolean + .form-type-boolean {
  margin-top: 0.75em;
  margin-top: var(--options-space-gap-y);
}

.form-type-boolean {
  padding-left: calc(0.75em + 0.75em);
  padding-left: calc(var(--option-space-gap-x) + var(--option-input-size));
  font-size: 16px;
  font-size: var(--option-font-size);
}
.form-type-boolean input[type=checkbox],
.form-type-boolean input[type=radio] {
  display: inline-block;
  font-size: inherit;
  left: calc((0.75em + 0.75em) * -1);
  left: calc((var(--option-space-gap-x) + var(--option-input-size)) * -1);
  margin-right: calc((0.75em) * -1);
  margin-right: calc((var(--option-input-size)) * -1);
  position: relative;
}
.form-type-boolean input[type=checkbox] + label,
.form-type-boolean input[type=radio] + label {
  font-size: inherit;
}
@supports (display: grid) {
  .form-type-boolean {
    display: grid;
    -webkit-box-align: center;
            align-items: center;
    grid-template-columns: 1.5rem 1fr;
    grid-column-gap: 0.25rem;
    -webkit-column-gap: 0.25rem;
       -moz-column-gap: 0.25rem;
            column-gap: 0.25rem;
    grid-row-gap: 0.25rem;
    row-gap: 0.25rem;
    padding-left: 0;
  }
  .form-type-boolean > * {
    grid-column: 2;
  }
  .form-type-boolean input[type=checkbox],
  .form-type-boolean input[type=radio] {
    grid-column: 1;
    left: auto;
    margin: calc((1em - 0.75em) / 1.2) 0 0;
    margin: calc((1em - var(--option-input-size)) / var(--option-line-height)) 0 0;
    position: relative;
  }
  .form-type-boolean input[type=checkbox] + *,
  .form-type-boolean input[type=radio] + * {
    margin-top: 0;
    margin-left: 0.25rem;
  }
}

.description {
  font-size: var(--font-size-description);
  font-family: var(--font-family-interface);
}

.filter-wrapper {
  margin-top: 0;
}

.filter-guidelines,
.filter-help {
  font-size: var(--font-size-description);
  font-family: var(--font-family-interface);
}

.filter-guidelines ul {
  margin-top: 0;
}

/** Password **/
.form-item-password-confirm {
  width: var(--size-form-narrow);
  max-width: 100%;
}

.password-strength__meter {
  background-color: var(--color-feedback-background);
}

.password-strength__indicator.is-fair {
  background-color: var(--color-feedback-fair);
}
.password-strength__indicator.is-strong {
  background-color: var(--color-feedback-strong);
}
.password-strength__indicator.is-good {
  background-color: var(--color-feedback-good);
}
.password-strength__indicator.is-weak {
  background-color: var(--color-feedback-weak);
}

.password-confirm,
.password-strength__title {
  font-size: var(--font-size-description);
  font-family: var(--font-family-interface);
}

.password-strength__text {
  font-weight: var(--font-weight-bold);
}

.password-confirm > span {
  font-weight: var(--font-weight-bold);
}
.password-confirm > span.error {
  color: var(--color-feedback-error);
}
.password-confirm > span.ok {
  color: var(--color-feedback-good);
}

.password-suggestions {
  font-size: var(--font-size-description);
  font-family: var(--font-family-interface);
  font-weight: var(--font-weight-bold);
}
.password-suggestions > ul {
  font-weight: var(--font-weight-regular);
}

#block-hcwh-content .user-login-form {
  padding: 1.5rem 0 5rem 0;
  position: relative;
}
@media (min-width: 768px) {
  #block-hcwh-content .user-login-form {
    padding: 2.625rem 0 5.5rem 0;
  }
}
@media (min-width: 1024px) {
  #block-hcwh-content .user-login-form {
    padding: 2.625rem 0 7.5rem 0;
  }
}
@media (min-width: 1440px) {
  #block-hcwh-content .user-login-form {
    padding: 5.125rem 0 7.5rem 0;
  }
}

input[type=submit]#edit-reset {
  cursor: pointer;
  color: var(--color-black);
  border: none;
  background: transparent;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border-radius: 0;
  -webkit-box-align: center;
          align-items: center;
  display: -webkit-inline-box;
  display: inline-flex;
  font-size: var(--font-size-body-14);
  line-height: var(--font-line-height-body-14);
  font-weight: var(--font-weight-regular);
  text-decoration: underline;
}
input[type=submit]#edit-reset:hover {
  text-decoration: none;
}

.secondary-region .form-actions.form-wrapper {
  display: -webkit-box;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
          flex-direction: column;
  -webkit-box-align: start;
          align-items: flex-start;
  gap: 2rem;
}
.secondary-region .form-actions.form-wrapper .js-form-submit {
  width: auto;
  margin-right: 2rem;
}

input::-webkit-input-placeholder {
  color: var(--color-black);
}

input::-moz-placeholder {
  color: var(--color-black);
}

input:-ms-input-placeholder {
  color: var(--color-black);
}

input::-ms-input-placeholder {
  color: var(--color-black);
}

input::placeholder {
  color: var(--color-black);
}

#views-exposed-form-recent-content-news-list {
  display: -webkit-box;
  display: flex;
  -webkit-box-align: end;
          align-items: flex-end;
  gap: 32px;
  flex-wrap: wrap;
  margin: 0 0 2.5rem 0;
}
#views-exposed-form-recent-content-news-list .form-wrapper {
  margin: 0;
}

body.page-node-type-resource .ui-dialog {
  background-color: var(--color-white);
  border-radius: 0;
  z-index: 100;
}
body.page-node-type-resource .ui-dialog .ui-dialog-titlebar {
  color: var(--color-white);
  border-radius: 0;
  background-color: var(--color-main);
  padding: 1.25rem 4.375rem 1.25rem 2.5rem;
}
body.page-node-type-resource .ui-dialog .ui-dialog-titlebar-close > .ui-icon-closethick {
  width: 100%;
  height: 100%;
  top: 0;
  margin: 0;
  -webkit-transform: none;
      -ms-transform: none;
          transform: none;
  background: #fff;
  -webkit-mask-image: url("/themes/contrib/gin/dist/media/sprite.svg#close-view");
          mask-image: url("/themes/contrib/gin/dist/media/sprite.svg#close-view");
  -webkit-mask-size: 20px 20px;
          mask-size: 20px 20px;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center center;
          mask-position: center center;
}
body.page-node-type-resource .ui-dialog .ui-dialog-titlebar-close {
  width: 2.75rem;
  height: 2.75rem;
  opacity: 1;
}
body.page-node-type-resource .ui-dialog .messages {
  margin-bottom: 2.5rem;
}
body.page-node-type-resource .ui-dialog .ui-dialog-content {
  padding-top: 2.5rem;
  padding-left: 2.5rem;
  padding-right: 2.5rem;
}
body.page-node-type-resource .ui-dialog .component.c-webform .form-item-markup p {
  font-weight: var(--font-weight-semibold);
  line-height: var(--font-line-height-body-18);
  font-size: var(--font-size-body-18);
  margin: 0 0 1.875rem 0;
}
body.page-node-type-resource .ui-dialog button.button--primary {
  cursor: pointer;
  color: var(--color-primary-button-text);
  border: none;
  background-color: var(--color-primary-button);
  border-color: var(--color-primary-button);
  border-radius: 2rem;
  -webkit-box-align: center;
          align-items: center;
  display: -webkit-inline-box;
  display: inline-flex;
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-semibold);
  line-height: var(--font-line-height-lg);
  text-decoration: none;
  -webkit-transition: color 350ms cubic-bezier(0.4, 0, 0.2, 1), background-color 350ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: color 350ms cubic-bezier(0.4, 0, 0.2, 1), background-color 350ms cubic-bezier(0.4, 0, 0.2, 1);
  padding: 0.25rem 1rem;
}
@media (min-width: 1024px) {
  body.page-node-type-resource .ui-dialog button.button--primary {
    padding: 0.5rem 2rem;
  }
}
body.page-node-type-resource .ui-dialog button.button--primary:hover {
  color: var(--color-white);
  background-color: var(--color-primary-button-hover);
  text-decoration: underline;
  -webkit-transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1), background-color 150ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1), background-color 150ms cubic-bezier(0.4, 0, 0.2, 1);
}
body.page-node-type-resource .ui-dialog button.button--primary:focus {
  color: var(--color-white);
  outline-offset: 0.1875rem;
  background-color: var(--color-primary-button-hover);
  outline: 0.0625rem solid var(--color-black);
  text-decoration: underline;
  -webkit-transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1), background-color 150ms cubic-bezier(0.4, 0, 0.2, 1);
  transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1), background-color 150ms cubic-bezier(0.4, 0, 0.2, 1);
}
body.page-node-type-resource .ui-dialog .ui-widget-content.ui-dialog-buttonpane {
  border: 0;
  background: transparent;
  border-radius: 0;
  display: -webkit-box;
  display: flex;
  margin: 0;
  padding: 2.5rem;
}
body.page-node-type-resource .ui-dialog .select2-selection {
  background-image: url("../../../../images/icons/chevron-down.svg");
  background-repeat: no-repeat;
  background-position: center right 1rem;
  background-size: 1.25rem 1.25rem;
  background-color: transparent;
}
body.page-node-type-resource .ui-dialog .form-actions.webform-actions.form-wrapper {
  display: none;
}

.user-login-form a {
  color: var(--color-black);
  font-size: 0.875rem;
  font-style: normal;
  font-weight: 400;
  line-height: 22px;
  text-decoration-line: underline;
}
.user-login-form a:hover {
  text-decoration-line: none;
}
.user-login-form .form-item--error-message {
  color: var(--color-dark-gray);
  font-size: 0.875rem;
  font-style: italic;
  font-weight: 400;
  line-height: 22px;
}

body.path-user .messages {
  margin-top: 2.5rem;
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnRpYWxzL3NldHRpbmdzL19hbmltYXRpb25zLnNjc3MiLCJwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2NzcyIsInBhcnRpYWxzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsInBhcnRpYWxzL3NldHRpbmdzL19sYXlvdXQuc2NzcyIsInBhcnRpYWxzL3NldHRpbmdzL190eXBvZ3JhcGh5LnNjc3MiLCJwYXJ0aWFscy9fcGFydGlhbHMuc2NzcyIsInBhcnRpYWxzL2Z1bmN0aW9ucy9fYW5pbWF0aW9ucy5zY3NzIiwicGFydGlhbHMvZnVuY3Rpb25zL19icmVha3BvaW50cy5zY3NzIiwicGFydGlhbHMvZnVuY3Rpb25zL19jYWxjdWxhdGlvbnMuc2NzcyIsInBhcnRpYWxzL2Z1bmN0aW9ucy9fY29sb3JzLnNjc3MiLCJwYXJ0aWFscy9mdW5jdGlvbnMvX2xheW91dC5zY3NzIiwicGFydGlhbHMvZnVuY3Rpb25zL190eXBvZ3JhcGh5LnNjc3MiLCJwYXJ0aWFscy9taXhpbnMvX2JyZWFrcG9pbnRzLnNjc3MiLCJwYXJ0aWFscy9taXhpbnMvX2xpc3RzLnNjc3MiLCJwYXJ0aWFscy9taXhpbnMvX3R5cG9ncmFwaHkuc2NzcyIsImdsb2JhbC9iYXNlL2Zvcm1zLnNjc3MiLCJnbG9iYWwvYmFzZS9mb3Jtcy5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0VBQUE7QUFRQTs7dUNBQUE7QUNSQTs7O0VBQUE7QUFLQTs7Ozs7O3VDQUFBO0FDTEE7Ozs7Ozs7O0VBQUE7QUFXQTs7dUNBQUE7QUFrQkE7O3VDQUFBO0FBbUJBOzt1Q0FBQTtBQWdCQTs7dUNBQUE7QUNoRUE7Ozs7Ozs7RUFBQTtBQVNBOzt1Q0FBQTtBQU9BOzs7Ozs7Ozs7dUNBQUE7QUF5QkE7O3VDQUFBO0FDekNBOzs7Ozs7RUFBQTtBQVNBOzt1Q0FBQTtBQWtEQTs7dUNBQUE7QUMzREE7Ozs7Ozs7O0VBQUE7QUFVQTs7dUNBQUE7QUNWQTs7Ozs7O0VBQUE7QUFTQTs7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QUE7RUFBQSx5R0FBQTtBQ3VTTjtBRGxTRTtFQUNFLFNBQUE7RUFDQSx1QkFBQTtFQUNBLGdCQUFBO0VBQ0Esb0JBQUE7RUFBQSxhQUFBO0VBQ0EsU0FBQTtFQUNBLGVBQUE7QUNvU0o7QURqU0U7RUFDRSxrRUFBQTtFQUNBLDRCQUFBO0VBQ0Esc0NBQUE7RUFDQSxnQ0FBQTtFQUNBLDZCQUFBO0FDbVNKO0FEaFNFO0VBQ0UsYUFBQTtBQ2tTSjs7QUQ3UkU7RUFDRSx5QkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsK0JBQUE7QUNnU0o7QUQvUkk7RUFDRSwwQkFBQTtBQ2lTTjtBRDlSRTtFQUNFLDZCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7QUNnU0o7O0FEM1JFO0VBQ0Usa0JBQUE7QUM4UkoiLCJmaWxlIjoiZ2xvYmFsL2Jhc2UvZm9ybXMuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXR0aW5ncyAtIEFuaW1hdGlvbnNcbiAqIFN0YW5kYXJkIHNldHMgb2YgYW5pbWF0aW9uIHZhcmlhYmxlcyBhbmQgbWFwcGluZ3MgdG8gYmUgb2YgdXNlIGFjcm9zcyB0aGUgc2l0ZSwgZm9yIGNvbnNpc3RlbmN5IGFuZCBhY2N1cmFjeS5cbiAqXG4gKiAtIDAxIC0gVHJhbnNpdGlvbnNcbiAqL1xuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAxIC0gVHJhbnNpdGlvbnNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiR0cmFuc2l0aW9uczogKFxuICAnZWFzZUluJzogICAgICAgICBlYXNlLWluLFxuICAnZWFzZU91dCc6ICAgICAgICBlYXNlLW91dCxcbiAgJ2Vhc2VJbk91dCc6ICAgICAgZWFzZS1pbi1vdXQsXG5cbiAgJ2Vhc2VJblNpbmUnOiAgICAgY3ViaWMtYmV6aWVyKDAuMTIsIDAsIDAuMzksIDApLCAvLyBodHRwczovL2Vhc2luZ3MubmV0LyNlYXNlSW5TaW5lXG4gICdlYXNlT3V0U2luZSc6ICAgIGN1YmljLWJlemllcigwLjYxLCAxLCAwLjg4LCAxKSwgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZU91dFNpbmVcbiAgJ2Vhc2VJbk91dFNpbmUnOiAgY3ViaWMtYmV6aWVyKDAuMzcsIDAsIDAuNjMsIDEpLCAvLyBodHRwczovL2Vhc2luZ3MubmV0LyNlYXNlSW5PdXRTaW5lXG5cbiAgJ2Vhc2VJblF1YWQnOiAgICAgY3ViaWMtYmV6aWVyKDAuMTEsIDAsIDAuNSwgMCksIC8vIGh0dHBzOi8vZWFzaW5ncy5uZXQvI2Vhc2VJblF1YWRcbiAgJ2Vhc2VPdXRRdWFkJzogICAgY3ViaWMtYmV6aWVyKDAuNSwgMSwgMC44OSwgMSksIC8vIGh0dHBzOi8vZWFzaW5ncy5uZXQvI2Vhc2VPdXRRdWFkXG4gICdlYXNlSW5PdXRRdWFkJzogIGN1YmljLWJlemllcigwLjQ1LCAwLCAwLjU1LCAxKSwgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZUluT3V0UXVhZFxuXG4gICdlYXNlSW5DdWJpYyc6ICAgIGN1YmljLWJlemllcigwLjMyLCAwLCAwLjY3LCAwKSwgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZUluQ3ViaWNcbiAgJ2Vhc2VPdXRDdWJpYyc6ICAgY3ViaWMtYmV6aWVyKDAuMzMsIDEsIDAuNjgsIDEpLCAvLyBodHRwczovL2Vhc2luZ3MubmV0LyNlYXNlT3V0Q3ViaWNcbiAgJ2Vhc2VJbk91dEN1YmljJzogY3ViaWMtYmV6aWVyKDAuNjUsIDAsIDAuMzUsIDEpLCAvLyBodHRwczovL2Vhc2luZ3MubmV0LyNlYXNlSW5PdXRDdWJpY1xuXG4gICdlYXNlSW5RdWFydCc6ICAgIGN1YmljLWJlemllcigwLjUsIDAsIDAuNzUsIDApLCAvLyBodHRwczovL2Vhc2luZ3MubmV0LyNlYXNlSW5RdWFydFxuICAnZWFzZU91dFF1YXJ0JzogICBjdWJpYy1iZXppZXIoMC4yNSwgMSwgMC41LCAxKSwgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZU91dFF1YXJ0XG4gICdlYXNlSW5PdXRRdWFydCc6IGN1YmljLWJlemllcigwLjc2LCAwLCAwLjI0LCAxKSwgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZUluT3V0UXVhcnRcblxuICAnZWFzZUluUXVpbnQnOiAgICBjdWJpYy1iZXppZXIoMC42NCwgMCwgMC43OCwgMCksIC8vIGh0dHBzOi8vZWFzaW5ncy5uZXQvI2Vhc2VJblF1aW50XG4gICdlYXNlT3V0UXVpbnQnOiAgIGN1YmljLWJlemllcigwLjIyLCAxLCAwLjM2LCAxKSwgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZU91dFF1aW50XG4gICdlYXNlSW5PdXRRdWludCc6IGN1YmljLWJlemllcigwLjgzLCAwLCAwLjE3LCAxKSwgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZUluT3V0UXVpbnRcblxuICAnZWFzZUluRXhwbyc6ICAgICBjdWJpYy1iZXppZXIoMC43LCAwLCAwLjg0LCAwKSwgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZUluRXhwb1xuICAnZWFzZU91dEV4cG8nOiAgICBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSwgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZU91dEV4cG9cbiAgJ2Vhc2VJbk91dEV4cG8nOiAgY3ViaWMtYmV6aWVyKDAuODcsIDAsIDAuMTMsIDEpLCAvLyBodHRwczovL2Vhc2luZ3MubmV0LyNlYXNlSW5PdXRFeHBvXG5cbiAgJ2Vhc2VJbkNpcmMnOiAgICAgY3ViaWMtYmV6aWVyKDAuNTUsIDAsIDEsIDAuNDUpLCAvLyBodHRwczovL2Vhc2luZ3MubmV0LyNlYXNlSW5DaXJjXG4gICdlYXNlT3V0Q2lyYyc6ICAgIGN1YmljLWJlemllcigwLCAwLjU1LCAwLjQ1LCAxKSwgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZU91dENpcmNcbiAgJ2Vhc2VJbk91dENpcmMnOiAgY3ViaWMtYmV6aWVyKDAuODUsIDAsIDAuMTUsIDEpLCAvLyBodHRwczovL2Vhc2luZ3MubmV0LyNlYXNlSW5PdXRDaXJjXG5cbiAgJ2Vhc2VJbkJhY2snOiAgICAgY3ViaWMtYmV6aWVyKDAuMzYsIDAsIDAuNjYsIC0wLjU2KSwgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZUluQmFja1xuICAnZWFzZU91dEJhY2snOiAgICBjdWJpYy1iZXppZXIoMC4zNCwgMS41NiwgMC42NCwgMSksIC8vIGh0dHBzOi8vZWFzaW5ncy5uZXQvI2Vhc2VPdXRCYWNrXG4gICdlYXNlSW5PdXRCYWNrJzogIGN1YmljLWJlemllcigwLjY4LCAtMC42LCAwLjMyLCAxLjYpLCAvLyBodHRwczovL2Vhc2luZ3MubmV0LyNlYXNlSW5PdXRCYWNrXG4pO1xuIiwiLyoqXG4gKiBTZXR0aW5ncyAtIEJyZWFrcG9pbnRzXG4gKiAtIDAxIC0gTWFwcGluZ1xuICovXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAxIC0gTWFwcGluZ1xuICBEZWZhdWx0IG1hcHBpbmcgb2YgZ3JpZCBicmVha3BvaW50cywgd2hpY2ggaXMgdXNlZCBpbiB0aGUgZnVuY3Rpb24gYW5kIG1peGluIGJyZWFrcG9pbnQgZmlsZXMuIEFuIGV4YW1wbGUgb2YgdXNpbmdcbiAgYnJlYWtwb2ludHMgaW4gYSBmaWxlIGlzIGJ5IHVzaW5nIHRoZSBtaXhpbiB3aXRoIHRoZSBuYW1lIG9mIGEgYnJlYWtwb2ludDogYEBpbmNsdWRlIGJwLW1pbihzbWFsbCkge31gLlxuXG4gIFRoZXNlIGJyZWFrcG9pbnRzIG1heSBiZSBhbHRlcmVkIGRlcGVuZGluZyBvbiB0aGUgdGhlbWUgbmVlZHMuXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4kZ3JpZC1icmVha3BvaW50czogKFxuICB4c21hbGw6IDBweCxcbiAgc21hbGw6IDM3NnB4LFxuICB4bWVkaXVtOiA2MDBweCxcbiAgbWVkaXVtOiA3NjhweCxcbiAgbWVkaXVtMjogOTQycHgsXG4gIGxhcmdlOiAxMDI0cHgsXG4gIGxhcmdlMjogMTE5NXB4LFxuICBsYXJnZXI6IDEzMjBweCxcbiAgeGxhcmdlOiAxNDQwcHgsXG4gIHh4bGFyZ2U6IDE1NjBweCxcbiAgeHh4bGFyZ2U6IDE2MDBweCxcbik7XG4iLCIvKipcbiAqIFNldHRpbmdzIC0gQ29sb3JcbiAqIFN0YW5kYXJkIHNldHMgb2YgY29sb3IgdmFyaWFibGVzIGFuZCBtYXBwaW5ncyB0byBiZSBvZiB1c2UgYWNyb3NzIHRoZSBzaXRlLCBmb3IgY29uc2lzdGVuY3kgYW5kIGFjY3VyYWN5LlxuICpcbiAqIC0gMDEgLSBUaGVtZSBDb2xvcnNcbiAqIC0gMDIgLSBHcmF5c2NhbGVcbiAqIC0gMDMgLSBVdGlsaXRpZXNcbiAqIC0gMDQgLSBNYXBwaW5nXG4gKi9cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIFRoZW1lIENvbG9yc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuJGNvbG9yLWJsdWU6ICAgICAgIzBENkVGRDtcbiRjb2xvci1pbmRpZ286ICAgICM2NjEwRjI7XG4kY29sb3ItcHVycGxlOiAgICAjNkY0MkMxO1xuJGNvbG9yLXBpbms6ICAgICAgI0Q2MzM4NDtcbiRjb2xvci1yZWQ6ICAgICAgICNEQzM1NDU7XG4kY29sb3Itb3JhbmdlOiAgICAjRkQ3RTE0O1xuJGNvbG9yLXllbGxvdzogICAgI0ZGQzEwNztcbiRjb2xvci1ncmVlbjogICAgICMxOTg3NTQ7XG4kY29sb3ItdGVhbDogICAgICAjMjBDOTk3O1xuJGNvbG9yLWN5YW46ICAgICAgIzBEQ0FGMDtcblxuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDIgLSBHcmF5c2NhbGVcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiRjb2xvci13aGl0ZTogICAgICNGRkZGRkY7XG4kY29sb3ItZ3JheS0xMDA6ICAjRjhGOUZBO1xuJGNvbG9yLWdyYXktMjAwOiAgI0U5RUNFRjtcbiRjb2xvci1ncmF5LTMwMDogICNERUUyRTY7XG4kY29sb3ItZ3JheS00MDA6ICAjQ0VENERBO1xuJGNvbG9yLWdyYXktNTAwOiAgI0FEQjVCRDtcbiRjb2xvci1ncmF5LTYwMDogICM2Qzc1N0Q7XG4kY29sb3ItZ3JheS03MDA6ICAjNDk1MDU3O1xuJGNvbG9yLWdyYXktODAwOiAgIzM0M0E0MDtcbiRjb2xvci1ncmF5LTkwMDogICMyMTI1Mjk7XG4kY29sb3ItYmxhY2s6ICAgICAjMDAwMDAwO1xuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMyAtIFV0aWxpdGllc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuJGNvbG9yLXByaW1hcnk6ICAgJGNvbG9yLWJsdWU7XG4kY29sb3Itc2Vjb25kYXJ5OiAkY29sb3ItZ3JheS02MDA7XG4kY29sb3Itc3VjY2VzczogICAkY29sb3ItZ3JlZW47XG4kY29sb3ItaW5mbzogICAgICAkY29sb3ItY3lhbjtcbiRjb2xvci13YXJuaW5nOiAgICRjb2xvci15ZWxsb3c7XG4kY29sb3ItZGFuZ2VyOiAgICAkY29sb3ItcmVkO1xuJGNvbG9yLWxpZ2h0OiAgICAgJGNvbG9yLWdyYXktMTAwO1xuJGNvbG9yLWRhcms6ICAgICAgJGNvbG9yLWdyYXktOTAwO1xuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwNCAtIE1hcHBpbmdcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiRjb2xvcnM6IChcbiAgJ2JsdWUnOiAgICAgICAgICRjb2xvci1ibHVlLFxuICAnaW5kaWdvJzogICAgICAgJGNvbG9yLWluZGlnbyxcbiAgJ3B1cnBsZSc6ICAgICAgICRjb2xvci1wdXJwbGUsXG4gICdwaW5rJzogICAgICAgICAkY29sb3ItcGluayxcbiAgJ3JlZCc6ICAgICAgICAgICRjb2xvci1yZWQsXG4gICdvcmFuZ2UnOiAgICAgICAkY29sb3Itb3JhbmdlLFxuICAneWVsbG93JzogICAgICAgJGNvbG9yLXllbGxvdyxcbiAgJ2dyZWVuJzogICAgICAgICRjb2xvci1ncmVlbixcbiAgJ3RlYWwnOiAgICAgICAgICRjb2xvci10ZWFsLFxuICAnY3lhbic6ICAgICAgICAgJGNvbG9yLWN5YW4sXG5cbiAgJ3doaXRlJzogICAgICAgICRjb2xvci13aGl0ZSxcbiAgJ2dyYXktMTAwJzogICAgICRjb2xvci1ncmF5LTEwMCxcbiAgJ2dyYXktMjAwJzogICAgICRjb2xvci1ncmF5LTIwMCxcbiAgJ2dyYXktMzAwJzogICAgICRjb2xvci1ncmF5LTMwMCxcbiAgJ2dyYXktNDAwJzogICAgICRjb2xvci1ncmF5LTQwMCxcbiAgJ2dyYXktNTAwJzogICAgICRjb2xvci1ncmF5LTUwMCxcbiAgJ2dyYXktNjAwJzogICAgICRjb2xvci1ncmF5LTYwMCxcbiAgJ2dyYXktNzAwJzogICAgICRjb2xvci1ncmF5LTcwMCxcbiAgJ2dyYXktODAwJzogICAgICRjb2xvci1ncmF5LTgwMCxcbiAgJ2dyYXktOTAwJzogICAgICRjb2xvci1ncmF5LTkwMCxcbiAgJ2JsYWNrJzogICAgICAgICRjb2xvci1ibGFjayxcblxuICAncHJpbWFyeSc6ICAgICAgJGNvbG9yLXByaW1hcnksXG4gICdzZWNvbmRhcnknOiAgICAkY29sb3Itc2Vjb25kYXJ5LFxuICAnc3VjY2Vzcyc6ICAgICAgJGNvbG9yLXN1Y2Nlc3MsXG4gICdpbmZvJzogICAgICAgICAkY29sb3ItaW5mbyxcbiAgJ3dhcm5pbmcnOiAgICAgICRjb2xvci13YXJuaW5nLFxuICAnZGFuZ2VyJzogICAgICAgJGNvbG9yLWRhbmdlcixcbiAgJ2xpZ2h0JzogICAgICAgICRjb2xvci1saWdodCxcbiAgJ2RhcmsnOiAgICAgICAgICRjb2xvci1kYXJrLFxuKTtcbiIsIi8qKlxuICogU2V0dGluZ3MgLSBMYXlvdXRcbiAqIFN0YW5kYXJkIHNldHMgb2YgbGF5b3V0IHZhcmlhYmxlcyBhbmQgbWFwcGluZ3MgdG8gYmUgb2YgdXNlIGFjcm9zcyB0aGUgc2l0ZSwgZm9yIGNvbnNpc3RlbmN5IGFuZCBhY2N1cmFjeS5cbiAqXG4gKiAtIDAxIC0gR3JpZFxuICogLSAwMiAtIFdpZHRoc1xuICogLSAwMyAtIExheWVyc1xuICovXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAxIC0gR3JpZFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuJGNvbHVtbi1nYXAtbGFyZ2U6IDQwcHg7XG4kY29sdW1uLWdhcC1zbWFsbDogMjRweDtcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDEgLSBXaWR0aHNcbiAgLy8gJ3h4bGFyZ2UnOiAgMTkyMHB4LFxuICAvLyAneGxhcmdlJzogICAxNDQwcHgsXG4gIC8vICdsYXJnZSc6ICAgIDEyODBweCxcbiAgLy8gJ21lZGl1bSc6ICAgOTYwcHgsXG4gIC8vICdzbWFsbCc6ICAgIDc2OHB4LFxuICAvLyAneHNtYWxsJzogICA2NDBweCxcbiAgLy8gJ3h4c21hbGwnOiAgNDgwcHgsXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4kd2lkdGhzOiAoXG4gIFwieHNtYWxsXCI6IDBweCxcbiAgXCJzbWFsbFwiOiAzNzZweCxcbiAgXCJ4bWVkaXVtXCI6IDYwMHB4LFxuICBcIm1lZGl1bVwiOiA3NjhweCxcbiAgXCJtZWRpdW0yXCI6IDk0MnB4LFxuICBcImxhcmdlXCI6IDEwMjRweCxcbiAgXCJsYXJnZTJcIjogMTE5NXB4LFxuICBcImxhcmdlclwiOiAxMzIwcHgsXG4gIFwieGxhcmdlXCI6IDE0NDBweCxcbiAgXCJ4eGxhcmdlXCI6IDE1NjBweCxcbiAgXCJ4eHhsYXJnZVwiOiAxNjAwcHgsXG4pO1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMyAtIExheWVyc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuJHotbGF5ZXJzOiAoXG4gIFwic3VwZXJcIjogMTAwLFxuICBcInRvcFwiOiA5MCxcbiAgXCJvdmVyXCI6IDEwLFxuICBcImRlZmF1bHRcIjogMSxcbiAgXCJ1bmRlclwiOiAtMSxcbiAgXCJib3R0b21sZXNzLXBpdFwiOiAtOTk5OSxcbik7XG4iLCIvKipcbiAqIFNldHRpbmdzIC0gVHlwb2dyYXBoeVxuICogU3RhbmRhcmQgc2V0cyBvZiB0eXBvZ3JhcGhpY2FsIHZhcmlhYmxlcyBhbmQgbWFwcGluZ3MgdG8gYmUgb2YgdXNlIGFjcm9zcyB0aGUgc2l0ZSwgZm9yIGNvbnNpc3RlbmN5IGFuZCBhY2N1cmFjeS5cbiAqXG4gKiAtIDAxIC0gSGVhZGluZyBTaXplc1xuICogLSAwMiAtIExpbmUgSGVpZ2h0c1xuICovXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDEgLSBIZWFkaW5nIFNpemVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4kaGVhZGluZy1zaXplczogKFxuICB4c21hbGw6IChcbiAgICAnaDEnOiAoXG4gICAgICAnZm9udC1zaXplJzogNTZweCxcbiAgICApLFxuICAgICdoMic6IChcbiAgICAgICdmb250LXNpemUnOiA0MHB4LFxuICAgICksXG4gICAgJ2gzJzogKFxuICAgICAgJ2ZvbnQtc2l6ZSc6IDMycHgsXG4gICAgKSxcbiAgICAnaDQnOiAoXG4gICAgICAnZm9udC1zaXplJzogMjBweCxcbiAgICApLFxuICAgICdoNSc6IChcbiAgICAgICdmb250LXNpemUnOiAxOHB4LFxuICAgICksXG4gICAgJ2g2JzogKFxuICAgICAgJ2ZvbnQtc2l6ZSc6IDE2cHgsXG4gICAgKSxcbiAgKSxcbiAgbWVkaXVtOiAoXG4gICAgJ2gxJzogKFxuICAgICAgJ2ZvbnQtc2l6ZSc6IDcycHgsXG4gICAgKSxcbiAgICAnaDInOiAoXG4gICAgICAnZm9udC1zaXplJzogNTZweCxcbiAgICApLFxuICAgICdoMyc6IChcbiAgICAgICdmb250LXNpemUnOiA0MHB4LFxuICAgICksXG4gICAgJ2g0JzogKFxuICAgICAgJ2ZvbnQtc2l6ZSc6IDMycHgsXG4gICAgKSxcbiAgICAnaDUnOiAoXG4gICAgICAnZm9udC1zaXplJzogMjRweCxcbiAgICApLFxuICAgICdoNic6IChcbiAgICAgICdmb250LXNpemUnOiAxOHB4LFxuICAgICksXG4gICksXG4pO1xuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIExpbmUgSGVpZ2h0c1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuJGxpbmUtaGVpZ2h0czogKFxuICAnaGVhZGluZyc6IDEuMixcbiAgJ2JvZHknOiAxLjYsXG4pOyIsIi8qKlxuICogUGFydGlhbHMgQ29tYmluZWRcbiAqIFBhcnRpYWxzIGNhbiBiZSBpbXBvcnRlZCBpbnRvIHRoZW1lIGZpbGVzIGVpdGhlciBvbmUgYnkgb25lLCBvciBieSB1c2luZyB0aGlzIGNvbWJpbmVkIFBhcnRpYWxzIGZpbGUuIFRvIHVzZSB0aGlzXG4gKiBmaWxlIGFzIHRoZSBpbXBvcnQgc3RhdGVtZW50LCBgQHVzZSAnW3BhdGhdL3BhcnRpYWxzL3BhcnRpYWxzJyBhcyAqYC5cbiAqXG4gKiAtIDAxIC0gU2V0dGluZ3NcbiAqIC0gMDIgLSBGdW5jdGlvbnNcbiAqIC0gMDMgLSBNaXhpbnNcbiAqL1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIFNldHRpbmdzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5AZm9yd2FyZCBcInNldHRpbmdzL2FuaW1hdGlvbnNcIjtcbkBmb3J3YXJkIFwic2V0dGluZ3MvYnJlYWtwb2ludHNcIjtcbkBmb3J3YXJkIFwic2V0dGluZ3MvY29sb3JzXCI7XG5AZm9yd2FyZCBcInNldHRpbmdzL2xheW91dFwiO1xuQGZvcndhcmQgXCJzZXR0aW5ncy90eXBvZ3JhcGh5XCI7XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAyIC0gRnVuY3Rpb25zXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5AZm9yd2FyZCBcImZ1bmN0aW9ucy9hbmltYXRpb25zXCI7XG5AZm9yd2FyZCBcImZ1bmN0aW9ucy9icmVha3BvaW50c1wiO1xuQGZvcndhcmQgXCJmdW5jdGlvbnMvY2FsY3VsYXRpb25zXCI7XG5AZm9yd2FyZCBcImZ1bmN0aW9ucy9jb2xvcnNcIjtcbkBmb3J3YXJkIFwiZnVuY3Rpb25zL2xheW91dFwiO1xuQGZvcndhcmQgXCJmdW5jdGlvbnMvdHlwb2dyYXBoeVwiO1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMyAtIE1peGluc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuQGZvcndhcmQgXCJtaXhpbnMvYnJlYWtwb2ludHNcIjtcbkBmb3J3YXJkIFwibWl4aW5zL2xpc3RzXCI7XG5AZm9yd2FyZCBcIm1peGlucy90eXBvZ3JhcGh5XCI7XG4iLCIvKipcbiAqIEZ1bmN0aW9ucyAtIEFuaW1hdGlvbnNcbiAqIFNpbXBsZSBmdW5jdGlvbnMgdG8gaGVscCBkZXZlbG9wZXJzIGVhc2lseSBncmFiIHByZS1kZWZpbmVkIGFuaW1hdGlvbiB2YWx1ZXMgZnJvbSBtYXBwaW5nIGxpc3RzLlxuICpcbiAqIC0gMDEgLSBJbXBvcnRzXG4gKiAtIDAyIC0gVHJhbnNpdGlvblxuICovXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDEgLSBJbXBvcnRzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5AdXNlICcuLi9zZXR0aW5ncy9hbmltYXRpb25zJyBhcyBhbmltYXRpb25zO1xuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMiAtIFRyYW5zaXRpb25cbiAgRWFzeSB0byB1c2UgZnVuY3Rpb24gdG8gcXVpY2tseSBkZWZpbmUgYSB0cmFuc2l0aW9uIHdpdGggdGhlIGFiaWxpdHkgdG8gcmVmZXJlbmNlIGEgbGlicmFyeSBtYXBwaW5nIG9mIGJlemllci1jdXJ2ZVxuICBhbmltYXRpb25zLCBhcyBkZWZpbmVkIGluIGBwYXJ0aWFscy9zZXR0aW5ncy9fYW5pbWF0aW9ucy5zY3NzYC5cbiAgLSBAcGFyYW0gJGFyZ3VtZW50OiBTdHlsZSBhcmd1bWVudHMgdGhhdCB0aGlzIHRyYW5zaXRpb24gc2hvdWxkIGJlIGFwcGxpZWQgdG8uXG4gIC0gQHBhcmFtICRkdXJhdGlvbjogVGhlIGxlbmd0aCBvZiB0aW1lIHRoZSB0cmFuc2l0aW9uIHNob3VsZCB0YWtlIHBsYWNlLlxuICAtIEBwYXJhbSAkc3R5bGU6IFRoZSBzdHlsZSBvZiB0cmFuc2l0aW9uLCBhcyBkZWZpbmVkIGluIGBwYXJ0aWFscy9zZXR0aW5ncy9fYW5pbWF0aW9ucy5zY3NzYFxuICAtIEBleGFtcGxlID0gdHJhbnNpdGlvbjogdHJhbnNpdGlvbihhbGwsIDAuNnMsIGVhc2VJbk91dFNpbmUpXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5AZnVuY3Rpb24gdHJhbnNpdGlvbigkYXJndW1lbnQ6IGFsbCwgJGR1cmF0aW9uOiAwLjM1cywgJHN0eWxlOiBlYXNlSW5PdXQpIHtcbiAgQGlmIG1hcC1oYXMta2V5KGFuaW1hdGlvbnMuJHRyYW5zaXRpb25zLCAkc3R5bGUpIHtcbiAgICBAcmV0dXJuICRhcmd1bWVudCAkZHVyYXRpb24gbWFwLWdldChhbmltYXRpb25zLiR0cmFuc2l0aW9ucywgJHN0eWxlKTtcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIk5vIHZhbHVlIGNvdWxkIGJlIHJldHJpZXZlZCBmb3IgYCN7JHN0eWxlfWAuIFwiXG4gICAgKyBcIlBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVmaW5lZCBpbiBgJGFuaW1hdGlvbnNgIG1hcC5cIjtcbiAgfVxufSIsIi8qKlxuICogRnVuY3Rpb25zIC0gQnJlYWtwb2ludHNcbiAqIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbVxuICogeHNtYWxsIHRvIHhsYXJnZTogKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KS4gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgXG4gKiBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cbiAqXG4gKiAtIDAxIC0gQnJlYWtwb2ludCBOZXh0XG4gKiAtIDAyIC0gQnJlYWtwb2ludCBNaW5pbXVtXG4gKiAtIDAzIC0gQnJlYWtwb2ludCBNYXhpbXVtXG4gKiAtIDA0IC0gQnJlYWtwb2ludCBJbmZpeFxuICovXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDEgLSBCcmVha3BvaW50IE5leHRcbiAgTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuICAtIEBwYXJhbSAkbmFtZTogU2VsZWN0ZWQgYnJlYWtwb2ludCBuYW1lIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3NcbiAgLSBAcGFyYW0gJGJyZWFrcG9pbnRzOiBCcmVha3BvaW50cyBtYXBwaW5nIHZhbHVlcyBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG4gIC0gQHBhcmFtICRicmVha3BvaW50LW5hbWVzOiBCcmVha3BvaW50cyBtYXBwaW5nIG5hbWVzIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3NcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAaWYgbm90ICRuIHtcbiAgICBAZXJyb3IgXCJicmVha3BvaW50IGAjeyRuYW1lfWAgbm90IGZvdW5kIGluIGAjeyRicmVha3BvaW50c31gXCI7XG4gIH1cbiAgQHJldHVybiBpZigkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAyIC0gQnJlYWtwb2ludCBNaW5pbXVtXG4gIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbiAgLSBAcGFyYW0gJG5hbWU6IFNlbGVjdGVkIGJyZWFrcG9pbnQgbmFtZSBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG4gIC0gQHBhcmFtICRicmVha3BvaW50czogQnJlYWtwb2ludHMgbWFwcGluZyB2YWx1ZXMgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDMgLSBCcmVha3BvaW50IE1heGltdW1cbiAgVGhlIG1heGltdW0gdmFsdWUgaXMgcmVkdWNlZCBieSAwLjAycHggdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHNcbiAgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy4gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heC4gVXNlcyAwLjAycHggcmF0aGVyIHRoYW4gMC4wMXB4IHRvIHdvcmtcbiAgYXJvdW5kIGEgY3VycmVudCByb3VuZGluZyBidWcgaW4gU2FmYXJpLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuICAtIEBwYXJhbSAkbmFtZTogU2VsZWN0ZWQgYnJlYWtwb2ludCBuYW1lIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3NcbiAgLSBAcGFyYW0gJGJyZWFrcG9pbnRzOiBCcmVha3BvaW50cyBtYXBwaW5nIHZhbHVlcyBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWF4IGFuZCAkbWF4ID4gMCwgJG1heCAtIC4wMiwgbnVsbCk7XG59XG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDA0IC0gQnJlYWtwb2ludCBJbmZpeFxuICBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250LiBVc2VmdWwgZm9yIG1ha2luZ1xuICByZXNwb25zaXZlIHV0aWxpdGllcy5cbiAgLSBAcGFyYW0gJG5hbWU6IFNlbGVjdGVkIGJyZWFrcG9pbnQgbmFtZSBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG4gIC0gQHBhcmFtICRicmVha3BvaW50czogQnJlYWtwb2ludHMgbWFwcGluZyB2YWx1ZXMgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cbiIsIi8qKlxuICogRnVuY3Rpb25zIC0gQ2FsY3VsYXRpb25zXG4gKiBTaW1wbGUgZnVuY3Rpb25zIHRvIGhlbHAgZGV2ZWxvcGVycyBjYWxjdWxhdGUgZGlmZmVyZW50IHZhbHVlcyBmcm9tIHBlcmNlbnRhZ2VzIHRvIHNpemluZyBzdWNoIGFzIFJFTXMuXG4gKlxuICogLSAwMSAtIEltcG9ydHNcbiAqIC0gMDIgLSBUYXJnZXQvQ29udGFpbmVyIFBlcmNlbnRhZ2VcbiAqIC0gMDMgLSBSRU1zXG4gKi9cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIEltcG9ydHNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkB1c2UgJ3Nhc3M6bWF0aCc7XG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAyIC0gVGFyZ2V0L0NvbnRhaW5lciBQZXJjZW50YWdlXG4gIENhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSBvZiBhIHRhcmdldCBzaXplIGNvbXBhcmVkIHRvIGEgY29udGFpbmVyIHNpemUuXG4gIC0gQHBhcmFtICR0YXJnZXQ6IFNpemUgb2YgYW4gZWxlbWVudCBuZWVkaW5nIGEgY2FsY3VsYXRlZCBwZXJjZW50YWdlLlxuICAtIEBwYXJhbSAkY29udGFpbmVyOiBTaXplIG9mIHRoZSB0YXJnZXQncyBjb250YWluZXIsIG5lZWRlZCB0byBjYWxjdWxhdGUgcGVyY2VudGFnZS5cbiAgLSBAZXhhbXBsZSA9IHdpZHRoOiBjYWxjLXBlcmNlbnQoMjUwLCAxMDAwKTtcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkBmdW5jdGlvbiBjYWxjLXBlcmNlbnQoJHRhcmdldCwgJGNvbnRhaW5lcikge1xuICBAcmV0dXJuICgkdGFyZ2V0IC8gJGNvbnRhaW5lcikgKiAxMDAlO1xufVxuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMyAtIFJFTXNcbiAgQ2FsY3VsYXRlIGEgc2l6ZSBpbnRvIFJFTSB1bml0cyAtLSBtb3N0bHkgdXNlZCBmb3IgZm9udCBzaXplIHJlbmRlcmluZy5cbiAgLSBAcGFyYW0gJHNpemU6IFNpemUgb2YgYW4gZWxlbWVudCBuZWVkaW5nIGEgY2FsY3VsYXRlZCBzaXplIGludG8gUkVNcy5cbiAgLSBAcGFyYW0gJGJhc2U6IEJhc2UgZm9udCBzaXplIG9mIHRoZSBzaXRlIC0tIGRlZmF1bHRzIHRvIDE2cHguXG4gIC0gQGV4YW1wbGUgPSBmb250LXNpemU6IGNhbGMtcmVtKDI0cHgpO1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuJGJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gcmVtKCRzaXplLCAkYmFzZTogJGJhc2UtZm9udC1zaXplKSB7XG4gICRyZW0tc2l6ZTogbWF0aC5kaXYoJHNpemUsICRiYXNlKTtcbiAgQHJldHVybiAjeyRyZW0tc2l6ZX1yZW07XG59XG4iLCIvKipcbiAqIEZ1bmN0aW9ucyAtIENvbG9yXG4gKiBTaW1wbGUgZnVuY3Rpb25zIHRvIGhlbHAgZGV2ZWxvcGVycyBlYXNpbHkgZ3JhYiBwcmUtZGVmaW5lZCBjb2xvciB2YWx1ZXMgZnJvbSBtYXBwaW5nIGxpc3RzLlxuICpcbiAqIC0gMDEgLSBJbXBvcnRzXG4gKiAtIDAyIC0gQ29sb3JcbiAqL1xuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAxIC0gSW1wb3J0c1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuQHVzZSAnLi4vc2V0dGluZ3MvY29sb3JzJyBhcyBjb2xvcnM7XG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAyIC0gQ29sb3JcbiAgTWFpbiBmdW5jdGlvbiBmb3IgZ2V0dGluZyBhIHByZS1kZWZpbmVkIGNvbG9yIGZyb20gYSBsaXN0IG9mIHZhbHVlcywgYXMgZGVmaW5lZCBpbiAncGFydGlhbHMvc2V0dGluZ3MvX2NvbG9ycy5zY3NzLlxuICAtIEBwYXJhbSAkY29sb3I6IFRoZSBzZWxlY3RlZCBjb2xvci5cbiAgLSBAZXhhbXBsZSA9IGJhY2tncm91bmQtY29sb3I6IGNvbG9yKHByaW1hcnkpO1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuQGZ1bmN0aW9uIGNvbG9yKCRjb2xvcikge1xuICBAaWYgbWFwLWhhcy1rZXkoY29sb3JzLiRjb2xvcnMsICRjb2xvcikge1xuICAgIEByZXR1cm4gbWFwLWdldChjb2xvcnMuJGNvbG9ycywgJGNvbG9yKTtcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiAnTm8gdmFsdWUgY291bGQgYmUgcmV0cmlldmVkIGZvciBgI3skY29sb3J9YC4nXG4gICAgKyAnUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIGluIGAkY29sb3JzYCBtYXAuJztcbiAgfVxufVxuIiwiLyoqXG4gKiBGdW5jdGlvbnMgLSBMYXlvdXRcbiAqIFNpbXBsZSBmdW5jdGlvbnMgdG8gaGVscCBkZXZlbG9wZXJzIGVhc2lseSBncmFiIHByZS1kZWZpbmVkIGxheW91dCB2YWx1ZXMgZnJvbSBtYXBwaW5nIGxpc3RzLlxuICpcbiAqIC0gMDEgLSBJbXBvcnRzXG4gKiAtIDAyIC0gV2lkdGhzXG4gKiAtIDAzIC0gWi1pbmRleFxuICovXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDEgLSBJbXBvcnRzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5AdXNlICcuLi9zZXR0aW5ncy9sYXlvdXQnIGFzIGxheW91dDtcblxuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDIgLSBXaWR0aHNcbiAgTWFpbiBmdW5jdGlvbiBmb3IgZ2V0dGluZyBhIHByZS1kZWZpbmVkIHdpZHRoIGZyb20gYSBsaXN0IG9mIHZhbHVlcywgYXMgZGVmaW5lZCBpbiAncGFydGlhbHMvc2V0dGluZ3MvX2xheW91dC5zY3NzLlxuICAtIEBwYXJhbSAkd2lkdGg6IFRoZSBzZWxlY3RlZCB3aWR0aCBzaXplLlxuICAtIEBleGFtcGxlOiB3aWR0aDogd2lkdGgobGFyZ2UpO1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuQGZ1bmN0aW9uIHdpZHRoKCRzaXplKSB7XG4gIEBpZiBtYXAtaGFzLWtleShsYXlvdXQuJHdpZHRocywgJHNpemUpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQobGF5b3V0LiR3aWR0aHMsICRzaXplKTtcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiAnTm8gdmFsdWUgY291bGQgYmUgcmV0cmlldmVkIGZvciBgI3skc2l6ZX1gLidcbiAgICArICdQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQgaW4gYCR6LWxheWVyc2AgbWFwLic7XG4gIH1cbn1cblxuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDMgLSBaLWluZGV4XG4gIE1haW4gZnVuY3Rpb24gZm9yIGdldHRpbmcgYSBwcmUtZGVmaW5lZCB6LWluZGV4IGZyb20gYSBsaXN0IG9mIHZhbHVlcywgYXMgZGVmaW5lZCBpbiAncGFydGlhbHMvc2V0dGluZ3MvX2xheW91dC5zY3NzLlxuICAtIEBwYXJhbSAka2V5OiBUaGUgc2VsZWN0ZWQgbGF5ZXIgdHlwZS5cbiAgLSBAZXhhbXBsZSA9IHotaW5kZXg6IHotaW5kZXgoYm90dG9tbGVzcy1waXQpXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5AZnVuY3Rpb24gei1pbmRleCgka2V5KSB7XG4gIEBpZiBtYXAtaGFzLWtleShsYXlvdXQuJHotbGF5ZXJzLCAka2V5KSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KGxheW91dC4kei1sYXllcnMsICRrZXkpO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuICdObyB2YWx1ZSBjb3VsZCBiZSByZXRyaWV2ZWQgZm9yIGAjeyRrZXl9YC4nXG4gICAgKyAnUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIGluIGAkei1sYXllcnNgIG1hcC4nO1xuICB9XG59XG4iLCIvKipcbiAqIEZ1bmN0aW9ucyAtIFR5cG9ncmFwaHlcbiAqIFNpbXBsZSBmdW5jdGlvbnMgdG8gaGVscCBkZXZlbG9wZXJzIGVhc2lseSBncmFiIHByZS1kZWZpbmVkIHR5cG9ncmFwaGljYWwgdmFsdWVzIGZyb20gbWFwcGluZyBsaXN0cy5cbiAqXG4gKiAtIDAxIC0gSW1wb3J0c1xuICogLSAwMiAtIExpbmUgSGVpZ2h0XG4gKi9cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIEltcG9ydHNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkB1c2UgJy4uL3NldHRpbmdzL3R5cG9ncmFwaHknIGFzIHR5cG9ncmFwaHk7XG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAyIC0gTGluZSBIZWlnaHRcbiAgTWFpbiBmdW5jdGlvbiBmb3IgZ2V0dGluZyBhIHByZS1kZWZpbmVkIExpbmUgSGVpZ2h0IGZyb20gYSBsaXN0IG9mIHZhbHVlcywgYXMgZGVmaW5lZCBpblxuICBgcGFydGlhbHMvc2V0dGluZ3MvX3R5cG9ncmFwaHkuc2Nzc2AuXG4gIC0gQHBhcmFtICRzaXplOiBUaGUgc2VsZWN0ZWQgTGluZSBIZWlnaHQgdHlwZS5cbiAgLSBAZXhhbXBsZTogbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0KGhlYWRpbmcpO1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuQGZ1bmN0aW9uIGxpbmUtaGVpZ2h0KCRzaXplKSB7XG4gIEBpZiBtYXAtaGFzLWtleSh0eXBvZ3JhcGh5LiRsaW5lLWhlaWdodHMsICRzaXplKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KHR5cG9ncmFwaHkuJGxpbmUtaGVpZ2h0cywgJHNpemUpO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiTm8gdmFsdWUgY291bGQgYmUgcmV0cmlldmVkIGZvciBgI3skc2l6ZX1gLiBcIlxuICAgICsgXCJQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQgaW4gYCRsaW5lLWhlaWdodHNgIG1hcC5cIjtcbiAgfVxufVxuIiwiLyoqXG4gKiBNaXhpbnMgLSBCcmVha3BvaW50c1xuICogVXNlIHRoZXNlIG1peGlucyBtYWlubHkgd2hlbiBkZWZpbmluZyBtZWRpYSBicmVha3BvaW50IHNwZWNpZmljYXRpb25zIGluIHRoZW1lIGZpbGVzLiBCb3RoIHNldHRpbmdzIGFuZCBmdW5jdGlvbnNcbiAqIGFyZSBpbXBvcnRlZCBoZXJlIHRvIHN1cHBsZW1lbnQgdGhlIG1peGlucyB0aGVtc2VsdmVzLlxuICpcbiAqIC0gMDEgLSBJbXBvcnRzXG4gKiAtIDAyIC0gTWluaW11bSBCcmVha3BvaW50XG4gKiAtIDAzIC0gTWF4aW11bSBCcmVha3BvaW50XG4gKiAtIDA0IC0gQmV0d2VlbiBCcmVha3BvaW50XG4gKiAtIDA1IC0gT25seSBCcmVha3BvaW50XG4gKi9cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIEltcG9ydHNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkB1c2UgJy4uL3NldHRpbmdzL2JyZWFrcG9pbnRzJyBhcyBicC1zZXR0aW5ncztcbkB1c2UgJy4uL2Z1bmN0aW9ucy9icmVha3BvaW50cycgYXMgYnAtZnVuY3Rpb25zO1xuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMiAtIE1pbmltdW0gQnJlYWtwb2ludFxuICBNZWRpYS9zY3JlZW4tc2l6ZSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoIC0tIGFwcGx5IHRvIHNjcmVlbi1zaXplcyBhYm92ZSB0aGUgYnJlYWtwb2ludCBzcGVjaWZpZWQuXG4gIC0gQHBhcmFtICRuYW1lOiBTZWxlY3RlZCBicmVha3BvaW50IG5hbWUgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuICAtIEBwYXJhbSAkYnJlYWtwb2ludHM6IEJyZWFrcG9pbnRzIG1hcHBpbmcgdmFsdWVzIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3NcbiAgLSBAZXhhbXBsZSA9IEBpbmNsdWRlIGJwLW1pbihsYXJnZSkge31cblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkBtaXhpbiBicC1taW4oJG5hbWUsICRicmVha3BvaW50czogYnAtc2V0dGluZ3MuJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnAtZnVuY3Rpb25zLmJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDMgLSBNYXhpbXVtIEJyZWFrcG9pbnRcbiAgTWVkaWEvc2NyZWVuLXNpemUgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoIC0tIGFwcGx5IHRvIHNjcmVlbi1zaXplcyBiZWxvdyB0aGUgYnJlYWtwb2ludCBzcGVjaWZpZWQuXG4gIC0gQHBhcmFtICRuYW1lOiBTZWxlY3RlZCBicmVha3BvaW50IG5hbWUgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuICAtIEBwYXJhbSAkYnJlYWtwb2ludHM6IEJyZWFrcG9pbnRzIG1hcHBpbmcgdmFsdWVzIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3NcbiAgLSBAZXhhbXBsZSA9IEBpbmNsdWRlIGJwLW1heChsYXJnZSkge31cblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkBtaXhpbiBicC1tYXgoJG5hbWUsICRicmVha3BvaW50czogYnAtc2V0dGluZ3MuJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnAtZnVuY3Rpb25zLmJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDQgLSBCZXR3ZWVuIEJyZWFrcG9pbnRcbiAgTWVkaWEvc2NyZWVuLXNpemUgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocyAtLSBhcHBseSB0byBzY3JlZW4tc2l6ZXMgYmV0d2VlbiB0aGUgYnJlYWtwb2ludHMgc3BlY2lmaWVkLlxuICAtIEBwYXJhbSAkbG93ZXI6IFNlbGVjdGVkIG1pbmltdW0gYnJlYWtwb2ludCBuYW1lIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3NcbiAgLSBAcGFyYW0gJHVwcGVyOiBTZWxlY3RlZCBtYXhpbXVtIGJyZWFrcG9pbnQgbmFtZSBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG4gIC0gQHBhcmFtICRicmVha3BvaW50czogQnJlYWtwb2ludHMgbWFwcGluZyB2YWx1ZXMgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuICAtIEBleGFtcGxlID0gQGluY2x1ZGUgYnAtYmV0d2Vlbih4c21hbGwsIGxhcmdlKSB7fVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuQG1peGluIGJwLWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogYnAtc2V0dGluZ3MuJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnAtZnVuY3Rpb25zLmJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnAtZnVuY3Rpb25zLmJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgYnAtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBicC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwNSAtIE9ubHkgQnJlYWtwb2ludFxuICBNZWRpYS9zY3JlZW4tc2l6ZSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMgLS0gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZFxuICBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4gIC0gQHBhcmFtICRuYW1lOiBTZWxlY3RlZCBicmVha3BvaW50IG5hbWUgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuICAtIEBwYXJhbSAkYnJlYWtwb2ludHM6IEJyZWFrcG9pbnRzIG1hcHBpbmcgdmFsdWVzIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3NcbiAgLSBAZXhhbXBsZSA9IEBpbmNsdWRlIGJwLW9ubHkobGFyZ2UpIHt9XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5AbWl4aW4gYnAtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiBicC1zZXR0aW5ncy4kZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicC1mdW5jdGlvbnMuYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJwLWZ1bmN0aW9ucy5icmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgYnAtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIGJwLW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogTWl4aW5zIC0gTGlzdHNcbiAqIFVzZSB0aGVzZSBtaXhpbnMgd2hlbiBuZWVkaW5nIHRvIGVhc2lseSBkZWZpbmUgbGlzdHMgc3R5bGVzLlxuICpcbiAqIC0gMDEgLSBCYXNlXG4gKiAtIDAyIC0gQnVsbGV0c1xuICogLSAwMyAtIE51bWJlcmVkXG4gKiAtIDA0IC0gTm8gQnVsbGV0c1xuICogLSAwNSAtIElubGluZVxuICogLSAwNiAtIFJ1bGVkXG4gKi9cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIEJhc2VcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkBtaXhpbiBsaXN0LS1yZXNldCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAyIC0gQnVsbGV0c1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuQG1peGluIGxpc3QtLWJ1bGxldHMoJGl0ZW0tc2VsZWN0b3I6IGxpKSB7XG4gIEBpbmNsdWRlIGxpc3QtLXJlc2V0O1xuXG4gID4gI3skaXRlbS1zZWxlY3Rvcn06YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcMjAyMlwiO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgfVxuXG4gIHVsIHtcbiAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjZS1pbmRlbnQpO1xuICB9XG59XG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAzIC0gTnVtYmVyZWRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkBtaXhpbiBsaXN0LS1udW1iZXJlZCgkaXRlbS1zZWxlY3RvcjogbGkpIHtcbiAgQGluY2x1ZGUgbGlzdC0tcmVzZXQ7XG4gIGNvdW50ZXItcmVzZXQ6IG51bWJlcjtcblxuICA+ICN7JGl0ZW0tc2VsZWN0b3J9OmJlZm9yZSB7XG4gICAgY29udGVudDogY291bnRlcnMobnVtYmVyLCBcIi5cIikgXCIuXCI7XG4gICAgY291bnRlci1pbmNyZW1lbnQ6IG51bWJlcjtcbiAgfVxuXG4gIC8vIFNlY29uZCBMZXZlbFxuICBvbCB7XG4gICAgbWFyZ2luLXRvcDogNnB4O1xuICAgIHBhZGRpbmctbGVmdDogMzBweDtcblxuICAgID4gI3skaXRlbS1zZWxlY3Rvcn0ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgdGV4dC1pbmRlbnQ6IC0zMHB4O1xuXG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAuNWVtO1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwNCAtIE5vIEJ1bGxldHNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkBtaXhpbiBsaXN0LS1uby1idWxsZXRzKCRpdGVtLXNlbGVjdG9yOiBsaSkge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG5cbiAgPiAjeyRpdGVtLXNlbGVjdG9yfSB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgfVxufVxuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwNSAtIElubGluZVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuQG1peGluIGxpc3QtLWlubGluZSgkaXRlbS1zZWxlY3RvcjogbGkpIHtcbiAgPiAjeyRpdGVtLXNlbGVjdG9yfSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDA2IC0gUnVsZWRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkBtaXhpbiBsaXN0LS1ydWxlZCAoXG4gICRzcGFjaW5nOiAyZW0sXG4gICRzdHlsZTogXCJpbm5lclwiLFxuICAkYm9yZGVyLWNvbG9yOiB2YXIoLS1ib3JkZXItY29sb3IpLFxuICAkYm9yZGVyLXNpemU6IDFweCxcbiAgJGJvcmRlci1zdHlsZTogc29saWQsXG4gICRpdGVtLXNlbGVjdG9yOiBsaVxuKSB7XG4gIEBpbmNsdWRlIGxpc3QtLW5vLWJ1bGxldHM7XG5cbiAgQGlmICgkc3R5bGUgPT0gaW5uZXIgb3IgJHN0eWxlID09IGFib3ZlKSB7XG4gICAgPiAjeyRpdGVtLXNlbGVjdG9yfSB7XG4gICAgICBib3JkZXItdG9wOiAkYm9yZGVyLXNpemUgJGJvcmRlci1zdHlsZSAkYm9yZGVyLWNvbG9yO1xuICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmc7XG4gICAgICBwYWRkaW5nLXRvcDogJHNwYWNpbmc7XG4gICAgfVxuXG4gICAgQGlmICgkc3R5bGUgPT0gaW5uZXIpIHtcbiAgICAgID4gI3skaXRlbS1zZWxlY3Rvcn06Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgPiAjeyRpdGVtLXNlbGVjdG9yfTpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICgkc3R5bGUgPT0gb3V0ZXIgb3IgJHN0eWxlID09IGJlbG93KSB7XG4gICAgPiAjeyRpdGVtLXNlbGVjdG9yfSB7XG4gICAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyLXNpemUgJGJvcmRlci1zdHlsZSAkYm9yZGVyLWNvbG9yO1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuXG4gICAgQGlmICgkc3R5bGUgPT0gb3V0ZXIpIHtcbiAgICAgID4gI3skaXRlbS1zZWxlY3Rvcn06Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wOiAkYm9yZGVyLXNpemUgJGJvcmRlci1zdHlsZSAkYm9yZGVyLWNvbG9yO1xuICAgICAgICBwYWRkaW5nLXRvcDogJHNwYWNpbmc7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgID4gI3skaXRlbS1zZWxlY3Rvcn06bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIE1peGlucyAtIFR5cG9ncmFwaHlcbiAqIFVzZSB0aGVzZSBtaXhpbnMgd2hlbiBuZWVkaW5nIHRvIGVhc2lseSBkZWZpbmUgdHlwb2dyYXBoeSBzdHlsZXMsIHN1Y2ggYXMgc2l6ZXMgYW5kIHR5cG9ncmFwaGljYWwgbGF5b3V0LlxuICpcbiAqIC0gMDEgLSBJbXBvcnRzXG4gKiAtIDAyIC0gSGVhZGluZyBTaXplXG4gKi9cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIEltcG9ydHNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkB1c2UgJ2JyZWFrcG9pbnRzJyBhcyBicmVha3BvaW50cztcbkB1c2UgJy4uL2Z1bmN0aW9ucy9jYWxjdWxhdGlvbnMnIGFzIGNhbGN1bGF0aW9ucztcbkB1c2UgJy4uL3NldHRpbmdzL3R5cG9ncmFwaHknIGFzIHR5cG9ncmFwaHk7XG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAyIC0gSGVhZGluZyBTaXplXG4gIE1lYW50IGZvciByZXNwb25zaXZlIGhlYWRpbmcgc2l6ZXMgYW5kIGlzIGJhc2VkIHVwb24gYnJlYWtwb2ludHMgYW5kIGEgbWFwcGluZyBvZiBoZWFkaW5nIHNpemVzLiBCcmVha3BvaW50cyBhcmVcbiAgZGVmaW5lZCBpbiB0aGUgYHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzYCBmaWxlIGFuZCBhcmUgdXRpbGl6ZWQgd2l0aCBhIG1peGluLCBhcyBkZWZpbmVkIGluXG4gIGBwYXJ0aWFscy9taXhpbnMvX2JyZWFrcG9pbnRzLnNjc3NgLlxuICAtIEBwYXJhbSAkc2V0dGluZzogU2VsZWN0ZWQgaGVhZGluZyB0byBhcHBseSByZXNwb25zaXZlIHNpemluZyB0by5cblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbkBtaXhpbiBoZWFkaW5nLXNpemUoJHNldHRpbmcpIHtcbiAgQGVhY2ggJHNpemUsICRlbGVtZW50cyBpbiB0eXBvZ3JhcGh5LiRoZWFkaW5nLXNpemVzIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50cy5icC1taW4oJHNpemUpIHtcbiAgICAgIGZvbnQtc2l6ZTogY2FsY3VsYXRpb25zLnJlbShtYXAtZ2V0KG1hcC1nZXQoJGVsZW1lbnRzLCAkc2V0dGluZyksICdmb250LXNpemUnKSk7XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0IFwiX3BhcnRpYWxzXCI7XG5cbi8qKiBBUElcbkFuaW1hdGlvblxuLSB0cmFuc2l0aW9uLXNwZWVkIChGLCBTKVxuLSB0cmFuc2l0aW9uLWVhc2VcblxuTG9nb1xuLSB3aWR0aFxuLSBpbnNldFxuXG5NZW51IEJ1dHRvblxuLSBpY29uIHNpemVcbi0gSW5zZXRcbi0gdHJhbnNpdGlvbiBzcGVlZFxuLSBiYWNrZ3JvdW5kIGNvbG9yXG4tIGJ1dHRvbiAoZmlsbCkgY29sb3Jcbi0gYm9yZGVyXG4tIHNpemVcbi0gd2lkdGhcblxuQnV0dG9uXG4tIGZvbnQtc2l6ZVxuLSBjb2xvci10ZXh0IChILCBGLCBBLCBEKVxuLSBjb2xvci1iYWNrZ3JvdW5kIChILCBGLCBBLCBEKVxuLSBjb2xvci1ib3JkZXIgKEgsIEYsIEEsIEQpXG4tIGNvbG9yLWdsb3dcbi0gY29sb3Itc2hhZG93XG4tIHNpemUtaWNvblxuLSBzaXplLWJvcmRlclxuLSBzaXplLXJhZGl1c1xuLSBzcGFjZS1pbnNldFxuXG5MYWJlbFxuLSBmb250LWZhbWlseVxuLSBmb250LXdlaWdodFxuLSBmb250LXNpemVcbi0gY29sb3ItdGV4dCAoRCwgRSlcbi0gc3BhY2UtZ2FwXG5cbklucHV0XG4tIGZvbnQtZmFtaWx5XG4tIGZvbnQtd2VpZ2h0XG4tIGZvbnQtc2l6ZVxuLSBjb2xvci10ZXh0IChELCBFKVxuLSBzcGFjZS1nYXBcbi0gc3BhY2UtaW5zZXRcbi0gc2l6ZS1yYWRpdXNcbi0gc2l6ZS1pY29uXG5cbkZvcm0tSXRlbVxuLSBzcGFjZS1nYXBcblxuKiovXG5cbjpyb290IHtcbiAgLyoqXG4gICAgQm9vbGVhbiBpbnB1dHMgc3VjaCBhcyBjaGVja2JveHMgYW5kIHJhZGlvc1xuICAgIGFzIHdlbGwgYXMgc2VsZWN0IG9wdGlvbnMgd2hlbiBzdHlsaW5nIGlzIGF2YWlsYWJsZS5cbiAgKiovXG4gIC0tb3B0aW9ucy1zcGFjZS1nYXAteTogMC43NWVtO1xuICAtLW9wdGlvbnMtc3BhY2UtZ2FwLXg6IDAuMjVlbTtcblxuICAtLW9wdGlvbi1saW5lLWhlaWdodDogdmFyKC0tZm9udC1saW5lLWhlaWdodC10aWdodCwgMS4yKTtcbiAgLS1vcHRpb24tZm9udC1zaXplOiAxNnB4O1xuICAtLW9wdGlvbi1mb250LXdlaWdodDogNDAwO1xuICAtLW9wdGlvbi1zcGFjZS1nYXAteDogMC43NWVtO1xuICAtLW9wdGlvbi1zcGFjZS1nYXAteTogMC4yNWVtO1xuICAtLW9wdGlvbi1pbnB1dC1zaXplOiAwLjc1ZW07XG59XG5cbmZvcm0gPiAqICsgKiB7XG4gIC8vIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLWdhcC15KTtcbn1cblxubGFiZWwsXG5sZWdlbmQge1xuICBjb2xvcjogdmFyKC0tY29sb3ItYmxhY2spO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1ib2R5LTE2KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtYm9keS0xNik7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG50ZXh0YXJlYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cblxuaW5wdXRbdHlwZT1cInRleHRcIl0sXG5pbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXG5pbnB1dFt0eXBlPVwiZGF0ZVwiXSxcbmlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbmlucHV0W3R5cGU9XCJudW1iZXJcIl0sXG5pbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWJsYWNrKTtcbiAgYm9yZGVyLXJhZGl1czogcmVtKDRweCk7XG4gIGJvcmRlcjogcmVtKDFweCkgc29saWQgdmFyKC0tY29sb3ItZGFyay1ncmF5KTtcbiAgcGFkZGluZzogcmVtKDUuNXB4KSByZW0oMTZweCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJvZHktMTYpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tZm9udC1saW5lLWhlaWdodC1ib2R5LTE2KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXJlZ3VsYXIpO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IHJlbSg1ODBweCk7XG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLWNvbG9yLWJsYWNrKTtcbiAgICBvdXRsaW5lLW9mZnNldDogMHB4O1xuICAgIG91dGxpbmUtc3R5bGU6IHNvbGlkO1xuICAgIG91dGxpbmUtd2lkdGg6IDJweDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG59XG5cbmlucHV0W3R5cGU9XCJmaWxlXCJdIHtcbiAgaGVpZ2h0OiBpbmhlcml0O1xufVxuXG4vLyBSYWRpb1xuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xuICB3aWR0aDogcmVtKDI0cHgpO1xuICBoZWlnaHQ6IHJlbSgyNHB4KTtcbiAgYm9yZGVyOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vaW1hZ2VzL2ljb25zL3JhZGlvLnN2Z1wiKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogcmVtKDI0cHgpO1xuICAgIGhlaWdodDogcmVtKDI0cHgpO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMnB4ICMzY2Y7XG4gICAgLy8gb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiA1MDAlO1xuICB9XG4gICY6aG92ZXIge1xuICAgIC8vIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDJweCByZ2JhKDUxLCAyMDQsIDI1NSwgMC41KTtcbiAgfVxuICAmOmZvY3VzIHtcbiAgICAvLyBib3gtc2hhZG93OiAwcHggMHB4IDBweCAycHggIzNjZjtcbiAgfVxuICAmOmNoZWNrZWQ6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2ltYWdlcy9pY29ucy9yYWRpby1zZWxlY3RlZC5zdmdcIik7XG4gIH1cbn1cblxuLy8gQ2hlY2tib3hcbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlKTtcbiAgd2lkdGg6IHJlbSgyNHB4KTtcbiAgaGVpZ2h0OiByZW0oMjRweCk7XG4gIGJvcmRlcjogbm9uZTtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2ltYWdlcy9pY29ucy9jaGVja2JveC5zdmdcIik7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IHJlbSgyNHB4KTtcbiAgICBoZWlnaHQ6IHJlbSgyNHB4KTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cbiAgJjpjaGVja2VkOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi8uLi9pbWFnZXMvaWNvbnMvY2hlY2tib3gtc2VsZWN0ZWQuc3ZnXCIpO1xuICB9XG59XG5cbmlucHV0W3R5cGU9XCJyYWRpb1wiXTpmb2N1cyxcbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDJweCB2YXIoLS1jb2xvci1ibGFjayk7XG59XG5cbi8vIFN1Ym1pdCBCdXR0b25cbmlucHV0W3R5cGU9XCJzdWJtaXRcIl06bm90KCNlZGl0LXJlc2V0KSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uLXRleHQpO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbik7XG4gIGJvcmRlci1yYWRpdXM6IHJlbSgzMnB4KTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtbGcpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGNvbG9yIDM1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksXG4gICAgYmFja2dyb3VuZC1jb2xvciAzNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICBwYWRkaW5nOiByZW0oNHB4KSByZW0oMTZweCk7XG4gIEBpbmNsdWRlIGJwLW1pbihsYXJnZSkge1xuICAgIHBhZGRpbmc6IHJlbSg4cHgpIHJlbSgzMnB4KTtcbiAgfVxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uLWhvdmVyKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAxNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLFxuICAgICAgYmFja2dyb3VuZC1jb2xvciAxNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICB9XG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSk7XG4gICAgb3V0bGluZS1vZmZzZXQ6IHJlbSgzcHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uLWhvdmVyKTtcbiAgICBvdXRsaW5lOiByZW0oMXB4KSBzb2xpZCB2YXIoLS1jb2xvci1ibGFjayk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMTUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSxcbiAgICAgIGJhY2tncm91bmQtY29sb3IgMTUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgfVxufVxuXG50ZXh0YXJlYTo6cGxhY2Vob2xkZXIsXG5pbnB1dDo6cGxhY2Vob2xkZXIge1xuICBjb2xvcjogdmFyKC0tY29sb3ItbWVkaXVtLWdyYXkpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1ib2R5LTE2KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtYm9keS0xNik7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1yZWd1bGFyKTtcbn1cblxudGV4dGFyZWEge1xuICBib3JkZXItcmFkaXVzOiByZW0oNHB4KTtcbiAgYm9yZGVyOiByZW0oMXB4KSBzb2xpZCB2YXIoLS1jb2xvci1kYXJrLWdyYXkpO1xuICBwYWRkaW5nOiByZW0oOHB4KSByZW0oMTZweCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJvZHktMTYpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tZm9udC1saW5lLWhlaWdodC1ib2R5LTE2KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXJlZ3VsYXIpO1xufVxuXG5zZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICB0ZXh0LWluZGVudDogMC4wMXB4O1xuICB0ZXh0LW92ZXJmbG93OiBcIlwiO1xuICBib3JkZXItcmFkaXVzOiByZW0oNHB4KTtcbiAgYm9yZGVyOiByZW0oMXB4KSBzb2xpZCB2YXIoLS1jb2xvci1kYXJrLWdyYXkpO1xuICBwYWRkaW5nOiByZW0oNHB4KSByZW0oMTZweCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJvZHktMTYpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tZm9udC1saW5lLWhlaWdodC1ib2R5LTE2KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXJlZ3VsYXIpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2ltYWdlcy9pY29ucy9jaGV2cm9uLWRvd24uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgcmlnaHQgcmVtKDE2cHgpO1xuICBiYWNrZ3JvdW5kLXNpemU6IHJlbSgyMHB4KSByZW0oMjBweCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibGFjayk7XG4gIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWJsYWNrKTtcbiAgfVxufVxuXG4vLyBSZW1vdmUgZGVmYXVsdCBJRSBhcnJvd1xuc2VsZWN0OjotbXMtZXhwYW5kIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLy8gRm9ybSBJdGVtIFdyYXBwZXJcbi5mb3JtLWl0ZW0ge1xuICA+ICogKyAqIHtcbiAgICAvLyBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS1nYXAteS1taW5pbWFsKTtcbiAgICBtYXJnaW4tdG9wOiByZW0oNHB4KTtcbiAgfVxufVxuXG4uZm9ybS1pdGVtICsgLmZvcm0taXRlbSB7XG4gIC8vIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLWdhcC15KTtcbiAgbWFyZ2luLXRvcDogcmVtKDMycHgpO1xufVxuXG4uZm9ybS13cmFwcGVyIHtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IHJlbSgzMnB4KSAwIDAgMDtcbn1cblxuLmZvcm0td3JhcHBlciAuZmllbGRzZXQtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICByb3ctZ2FwOiByZW0oMzBweCk7XG4gIGNvbHVtbi1nYXA6IHJlbSgyMHB4KTtcbiAgQGluY2x1ZGUgYnAtbWluKGxhcmdlKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgfVxuICAuZm9ybS1pdGVtIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLmZvcm0tdHlwZS1ib29sZWFuICsgLmZvcm0tdHlwZS1ib29sZWFuIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tb3B0aW9ucy1zcGFjZS1nYXAteSk7XG59XG5cbi5mb3JtLXR5cGUtYm9vbGVhbiB7XG4gIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1vcHRpb24tc3BhY2UtZ2FwLXgpICsgdmFyKC0tb3B0aW9uLWlucHV0LXNpemUpKTtcbiAgZm9udC1zaXplOiB2YXIoLS1vcHRpb24tZm9udC1zaXplKTtcblxuICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG4gIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsZWZ0OiBjYWxjKCh2YXIoLS1vcHRpb24tc3BhY2UtZ2FwLXgpICsgdmFyKC0tb3B0aW9uLWlucHV0LXNpemUpKSAqIC0xKTtcbiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoKHZhcigtLW9wdGlvbi1pbnB1dC1zaXplKSkgKiAtMSk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJiArIGxhYmVsIHtcbiAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICB9XG4gIH1cblxuICBAc3VwcG9ydHMgKGRpc3BsYXk6IGdyaWQpIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZW0oMjRweCkgMWZyO1xuICAgIGNvbHVtbi1nYXA6IHJlbSg0cHgpO1xuICAgIHJvdy1nYXA6IHJlbSg0cHgpO1xuICAgIHBhZGRpbmctbGVmdDogMDtcblxuICAgID4gKiB7XG4gICAgICBncmlkLWNvbHVtbjogMjtcbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG4gICAgaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgICAgIGdyaWQtY29sdW1uOiAxO1xuICAgICAgbGVmdDogYXV0bztcbiAgICAgIG1hcmdpbjogY2FsYygoMWVtIC0gdmFyKC0tb3B0aW9uLWlucHV0LXNpemUpKSAvIHZhcigtLW9wdGlvbi1saW5lLWhlaWdodCkpXG4gICAgICAgIDAgMDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgJiArICoge1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogcmVtKDRweCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5kZXNjcmlwdGlvbiB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWRlc2NyaXB0aW9uKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LWludGVyZmFjZSk7XG59XG5cbi5maWx0ZXItd3JhcHBlciB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi5maWx0ZXItZ3VpZGVsaW5lcyxcbi5maWx0ZXItaGVscCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWRlc2NyaXB0aW9uKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtZmFtaWx5LWludGVyZmFjZSk7XG59XG5cbi5maWx0ZXItZ3VpZGVsaW5lcyB1bCB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi8qKiBQYXNzd29yZCAqKi9cbi5mb3JtLWl0ZW0tcGFzc3dvcmQtY29uZmlybSB7XG4gIHdpZHRoOiB2YXIoLS1zaXplLWZvcm0tbmFycm93KTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4ucGFzc3dvcmQtc3RyZW5ndGhfX21ldGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZmVlZGJhY2stYmFja2dyb3VuZCk7XG59XG5cbi5wYXNzd29yZC1zdHJlbmd0aF9faW5kaWNhdG9yIHtcbiAgJi5pcy1mYWlyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1mZWVkYmFjay1mYWlyKTtcbiAgfVxuICAmLmlzLXN0cm9uZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZmVlZGJhY2stc3Ryb25nKTtcbiAgfVxuICAmLmlzLWdvb2Qge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWZlZWRiYWNrLWdvb2QpO1xuICB9XG4gICYuaXMtd2VhayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZmVlZGJhY2std2Vhayk7XG4gIH1cbn1cblxuLnBhc3N3b3JkLWNvbmZpcm0sXG4ucGFzc3dvcmQtc3RyZW5ndGhfX3RpdGxlIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtZGVzY3JpcHRpb24pO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktaW50ZXJmYWNlKTtcbn1cblxuLnBhc3N3b3JkLXN0cmVuZ3RoX190ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xufVxuXG4ucGFzc3dvcmQtY29uZmlybSA+IHNwYW4ge1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG5cbiAgJi5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWZlZWRiYWNrLWVycm9yKTtcbiAgfVxuXG4gICYub2sge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1mZWVkYmFjay1nb29kKTtcbiAgfVxufVxuXG4ucGFzc3dvcmQtc3VnZ2VzdGlvbnMge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1kZXNjcmlwdGlvbik7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1pbnRlcmZhY2UpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG5cbiAgPiB1bCB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXJlZ3VsYXIpO1xuICB9XG59XG5cbi8vIFVzZXIgTG9naW5cbiNibG9jay1oY3doLWNvbnRlbnQgLnVzZXItbG9naW4tZm9ybSB7XG4gIHBhZGRpbmc6IHJlbSgyNHB4KSAwIHJlbSg4MHB4KSAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIGJwLW1pbihtZWRpdW0pIHtcbiAgICBwYWRkaW5nOiByZW0oNDJweCkgMCByZW0oODhweCkgMDtcbiAgfVxuICBAaW5jbHVkZSBicC1taW4obGFyZ2UpIHtcbiAgICBwYWRkaW5nOiByZW0oNDJweCkgMCByZW0oMTIwcHgpIDA7XG4gIH1cbiAgQGluY2x1ZGUgYnAtbWluKHhsYXJnZSkge1xuICAgIHBhZGRpbmc6IHJlbSg4MnB4KSAwIHJlbSgxMjBweCkgMDtcbiAgfVxufVxuXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdI2VkaXQtcmVzZXQge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibGFjayk7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1ib2R5LTE0KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtYm9keS0xNCk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1yZWd1bGFyKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxufVxuXG4uc2Vjb25kYXJ5LXJlZ2lvbiAuZm9ybS1hY3Rpb25zLmZvcm0td3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBnYXA6IHJlbSgzMnB4KTtcbiAgLmpzLWZvcm0tc3VibWl0IHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IHJlbSgzMnB4KTtcbiAgfVxufVxuXG5pbnB1dDo6cGxhY2Vob2xkZXIge1xuICBjb2xvcjogdmFyKC0tY29sb3ItYmxhY2spO1xufVxuXG4vLyBMYXRlc3QgTmV3cyAodmlld3Mgd2lkZ2V0KVxuI3ZpZXdzLWV4cG9zZWQtZm9ybS1yZWNlbnQtY29udGVudC1uZXdzLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIGdhcDogMzJweDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXJnaW46IDAgMCByZW0oNDBweCkgMDtcbiAgLmZvcm0td3JhcHBlciB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIFJlc291cmNlIEZvcm1cbmJvZHkucGFnZS1ub2RlLXR5cGUtcmVzb3VyY2UgLnVpLWRpYWxvZyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlKTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgei1pbmRleDogMTAwO1xuICAvLyBUb3AgYmFyXG4gIC51aS1kaWFsb2ctdGl0bGViYXIge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSk7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1tYWluKTtcbiAgICBwYWRkaW5nOiByZW0oMjBweCkgcmVtKDcwcHgpIHJlbSgyMHB4KSByZW0oNDBweCk7XG4gIH1cbiAgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSA+IC51aS1pY29uLWNsb3NldGhpY2sge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIG1hc2staW1hZ2U6IHVybChcIi90aGVtZXMvY29udHJpYi9naW4vZGlzdC9tZWRpYS9zcHJpdGUuc3ZnI2Nsb3NlLXZpZXdcIik7XG4gICAgbWFzay1zaXplOiAyMHB4IDIwcHg7XG4gICAgLXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgbWFzay1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgfVxuICAvLyAgQ2xvc2UgYnV0dG9uXG4gIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2Uge1xuICAgIHdpZHRoOiByZW0oNDRweCk7XG4gICAgaGVpZ2h0OiByZW0oNDRweCk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICAvLyBEcnVwYWwgTWVzc2FnZVxuICAubWVzc2FnZXMge1xuICAgIG1hcmdpbi1ib3R0b206IHJlbSg0MHB4KTtcbiAgfVxuICAvLyBDb250ZW50XG4gIC51aS1kaWFsb2ctY29udGVudCB7XG4gICAgcGFkZGluZy10b3A6IHJlbSg0MHB4KTtcbiAgICBwYWRkaW5nLWxlZnQ6IHJlbSg0MHB4KTtcbiAgICBwYWRkaW5nLXJpZ2h0OiByZW0oNDBweCk7XG4gIH1cbiAgLy8gTWFya3VwXG4gIC5jb21wb25lbnQuYy13ZWJmb3JtIC5mb3JtLWl0ZW0tbWFya3VwIHAge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtYm9keS0xOCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYm9keS0xOCk7XG4gICAgbWFyZ2luOiAwIDAgcmVtKDMwcHgpIDA7XG4gIH1cblxuICBidXR0b24uYnV0dG9uLS1wcmltYXJ5IHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uLXRleHQpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbik7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbik7XG4gICAgYm9yZGVyLXJhZGl1czogcmVtKDMycHgpO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtbGcpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAzNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLFxuICAgICAgYmFja2dyb3VuZC1jb2xvciAzNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIHBhZGRpbmc6IHJlbSg0cHgpIHJlbSgxNnB4KTtcbiAgICBAaW5jbHVkZSBicC1taW4obGFyZ2UpIHtcbiAgICAgIHBhZGRpbmc6IHJlbSg4cHgpIHJlbSgzMnB4KTtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24taG92ZXIpO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB0cmFuc2l0aW9uOiBjb2xvciAxNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIDE1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgfVxuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlKTtcbiAgICAgIG91dGxpbmUtb2Zmc2V0OiByZW0oM3B4KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uLWhvdmVyKTtcbiAgICAgIG91dGxpbmU6IHJlbSgxcHgpIHNvbGlkIHZhcigtLWNvbG9yLWJsYWNrKTtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMTUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSxcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvciAxNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC51aS13aWRnZXQtY29udGVudC51aS1kaWFsb2ctYnV0dG9ucGFuZSB7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogcmVtKDQwcHgpO1xuICB9XG5cbiAgLnNlbGVjdDItc2VsZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi8uLi9pbWFnZXMvaWNvbnMvY2hldnJvbi1kb3duLnN2Z1wiKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciByaWdodCByZW0oMTZweCk7XG4gICAgYmFja2dyb3VuZC1zaXplOiByZW0oMjBweCkgcmVtKDIwcHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG5cbiAgLmZvcm0tYWN0aW9ucy53ZWJmb3JtLWFjdGlvbnMuZm9ybS13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi51c2VyLWxvZ2luLWZvcm0ge1xuICBhIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYmxhY2spO1xuICAgIGZvbnQtc2l6ZTogcmVtKDE0cHgpO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiB1bmRlcmxpbmU7XG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTtcbiAgICB9XG4gIH1cbiAgLmZvcm0taXRlbS0tZXJyb3ItbWVzc2FnZSB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWRhcmstZ3JheSk7XG4gICAgZm9udC1zaXplOiByZW0oMTRweCk7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIH1cbn1cblxuYm9keS5wYXRoLXVzZXIge1xuICAubWVzc2FnZXMge1xuICAgIG1hcmdpbi10b3A6IHJlbSg0MHB4KTtcbiAgfVxufVxuIiwiLyoqXG4gKiBTZXR0aW5ncyAtIEFuaW1hdGlvbnNcbiAqIFN0YW5kYXJkIHNldHMgb2YgYW5pbWF0aW9uIHZhcmlhYmxlcyBhbmQgbWFwcGluZ3MgdG8gYmUgb2YgdXNlIGFjcm9zcyB0aGUgc2l0ZSwgZm9yIGNvbnNpc3RlbmN5IGFuZCBhY2N1cmFjeS5cbiAqXG4gKiAtIDAxIC0gVHJhbnNpdGlvbnNcbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDEgLSBUcmFuc2l0aW9uc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogU2V0dGluZ3MgLSBCcmVha3BvaW50c1xuICogLSAwMSAtIE1hcHBpbmdcbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDEgLSBNYXBwaW5nXG4gIERlZmF1bHQgbWFwcGluZyBvZiBncmlkIGJyZWFrcG9pbnRzLCB3aGljaCBpcyB1c2VkIGluIHRoZSBmdW5jdGlvbiBhbmQgbWl4aW4gYnJlYWtwb2ludCBmaWxlcy4gQW4gZXhhbXBsZSBvZiB1c2luZ1xuICBicmVha3BvaW50cyBpbiBhIGZpbGUgaXMgYnkgdXNpbmcgdGhlIG1peGluIHdpdGggdGhlIG5hbWUgb2YgYSBicmVha3BvaW50OiBgQGluY2x1ZGUgYnAtbWluKHNtYWxsKSB7fWAuXG5cbiAgVGhlc2UgYnJlYWtwb2ludHMgbWF5IGJlIGFsdGVyZWQgZGVwZW5kaW5nIG9uIHRoZSB0aGVtZSBuZWVkcy5cblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFNldHRpbmdzIC0gQ29sb3JcbiAqIFN0YW5kYXJkIHNldHMgb2YgY29sb3IgdmFyaWFibGVzIGFuZCBtYXBwaW5ncyB0byBiZSBvZiB1c2UgYWNyb3NzIHRoZSBzaXRlLCBmb3IgY29uc2lzdGVuY3kgYW5kIGFjY3VyYWN5LlxuICpcbiAqIC0gMDEgLSBUaGVtZSBDb2xvcnNcbiAqIC0gMDIgLSBHcmF5c2NhbGVcbiAqIC0gMDMgLSBVdGlsaXRpZXNcbiAqIC0gMDQgLSBNYXBwaW5nXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAxIC0gVGhlbWUgQ29sb3JzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDIgLSBHcmF5c2NhbGVcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMyAtIFV0aWxpdGllc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDA0IC0gTWFwcGluZ1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogU2V0dGluZ3MgLSBMYXlvdXRcbiAqIFN0YW5kYXJkIHNldHMgb2YgbGF5b3V0IHZhcmlhYmxlcyBhbmQgbWFwcGluZ3MgdG8gYmUgb2YgdXNlIGFjcm9zcyB0aGUgc2l0ZSwgZm9yIGNvbnNpc3RlbmN5IGFuZCBhY2N1cmFjeS5cbiAqXG4gKiAtIDAxIC0gR3JpZFxuICogLSAwMiAtIFdpZHRoc1xuICogLSAwMyAtIExheWVyc1xuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIEdyaWRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIFdpZHRoc1xuICAvLyAneHhsYXJnZSc6ICAxOTIwcHgsXG4gIC8vICd4bGFyZ2UnOiAgIDE0NDBweCxcbiAgLy8gJ2xhcmdlJzogICAgMTI4MHB4LFxuICAvLyAnbWVkaXVtJzogICA5NjBweCxcbiAgLy8gJ3NtYWxsJzogICAgNzY4cHgsXG4gIC8vICd4c21hbGwnOiAgIDY0MHB4LFxuICAvLyAneHhzbWFsbCc6ICA0ODBweCxcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMyAtIExheWVyc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogU2V0dGluZ3MgLSBUeXBvZ3JhcGh5XG4gKiBTdGFuZGFyZCBzZXRzIG9mIHR5cG9ncmFwaGljYWwgdmFyaWFibGVzIGFuZCBtYXBwaW5ncyB0byBiZSBvZiB1c2UgYWNyb3NzIHRoZSBzaXRlLCBmb3IgY29uc2lzdGVuY3kgYW5kIGFjY3VyYWN5LlxuICpcbiAqIC0gMDEgLSBIZWFkaW5nIFNpemVzXG4gKiAtIDAyIC0gTGluZSBIZWlnaHRzXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAxIC0gSGVhZGluZyBTaXplc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAxIC0gTGluZSBIZWlnaHRzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBQYXJ0aWFscyBDb21iaW5lZFxuICogUGFydGlhbHMgY2FuIGJlIGltcG9ydGVkIGludG8gdGhlbWUgZmlsZXMgZWl0aGVyIG9uZSBieSBvbmUsIG9yIGJ5IHVzaW5nIHRoaXMgY29tYmluZWQgUGFydGlhbHMgZmlsZS4gVG8gdXNlIHRoaXNcbiAqIGZpbGUgYXMgdGhlIGltcG9ydCBzdGF0ZW1lbnQsIGBAdXNlICdbcGF0aF0vcGFydGlhbHMvcGFydGlhbHMnIGFzICpgLlxuICpcbiAqIC0gMDEgLSBTZXR0aW5nc1xuICogLSAwMiAtIEZ1bmN0aW9uc1xuICogLSAwMyAtIE1peGluc1xuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIFNldHRpbmdzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBGdW5jdGlvbnMgLSBBbmltYXRpb25zXG4gKiBTaW1wbGUgZnVuY3Rpb25zIHRvIGhlbHAgZGV2ZWxvcGVycyBlYXNpbHkgZ3JhYiBwcmUtZGVmaW5lZCBhbmltYXRpb24gdmFsdWVzIGZyb20gbWFwcGluZyBsaXN0cy5cbiAqXG4gKiAtIDAxIC0gSW1wb3J0c1xuICogLSAwMiAtIFRyYW5zaXRpb25cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDEgLSBJbXBvcnRzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDIgLSBUcmFuc2l0aW9uXG4gIEVhc3kgdG8gdXNlIGZ1bmN0aW9uIHRvIHF1aWNrbHkgZGVmaW5lIGEgdHJhbnNpdGlvbiB3aXRoIHRoZSBhYmlsaXR5IHRvIHJlZmVyZW5jZSBhIGxpYnJhcnkgbWFwcGluZyBvZiBiZXppZXItY3VydmVcbiAgYW5pbWF0aW9ucywgYXMgZGVmaW5lZCBpbiBgcGFydGlhbHMvc2V0dGluZ3MvX2FuaW1hdGlvbnMuc2Nzc2AuXG4gIC0gQHBhcmFtICRhcmd1bWVudDogU3R5bGUgYXJndW1lbnRzIHRoYXQgdGhpcyB0cmFuc2l0aW9uIHNob3VsZCBiZSBhcHBsaWVkIHRvLlxuICAtIEBwYXJhbSAkZHVyYXRpb246IFRoZSBsZW5ndGggb2YgdGltZSB0aGUgdHJhbnNpdGlvbiBzaG91bGQgdGFrZSBwbGFjZS5cbiAgLSBAcGFyYW0gJHN0eWxlOiBUaGUgc3R5bGUgb2YgdHJhbnNpdGlvbiwgYXMgZGVmaW5lZCBpbiBgcGFydGlhbHMvc2V0dGluZ3MvX2FuaW1hdGlvbnMuc2Nzc2BcbiAgLSBAZXhhbXBsZSA9IHRyYW5zaXRpb246IHRyYW5zaXRpb24oYWxsLCAwLjZzLCBlYXNlSW5PdXRTaW5lKVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogRnVuY3Rpb25zIC0gQnJlYWtwb2ludHNcbiAqIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbVxuICogeHNtYWxsIHRvIHhsYXJnZTogKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KS4gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgXG4gKiBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cbiAqXG4gKiAtIDAxIC0gQnJlYWtwb2ludCBOZXh0XG4gKiAtIDAyIC0gQnJlYWtwb2ludCBNaW5pbXVtXG4gKiAtIDAzIC0gQnJlYWtwb2ludCBNYXhpbXVtXG4gKiAtIDA0IC0gQnJlYWtwb2ludCBJbmZpeFxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIEJyZWFrcG9pbnQgTmV4dFxuICBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4gIC0gQHBhcmFtICRuYW1lOiBTZWxlY3RlZCBicmVha3BvaW50IG5hbWUgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuICAtIEBwYXJhbSAkYnJlYWtwb2ludHM6IEJyZWFrcG9pbnRzIG1hcHBpbmcgdmFsdWVzIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3NcbiAgLSBAcGFyYW0gJGJyZWFrcG9pbnQtbmFtZXM6IEJyZWFrcG9pbnRzIG1hcHBpbmcgbmFtZXMgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAyIC0gQnJlYWtwb2ludCBNaW5pbXVtXG4gIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbiAgLSBAcGFyYW0gJG5hbWU6IFNlbGVjdGVkIGJyZWFrcG9pbnQgbmFtZSBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG4gIC0gQHBhcmFtICRicmVha3BvaW50czogQnJlYWtwb2ludHMgbWFwcGluZyB2YWx1ZXMgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAzIC0gQnJlYWtwb2ludCBNYXhpbXVtXG4gIFRoZSBtYXhpbXVtIHZhbHVlIGlzIHJlZHVjZWQgYnkgMC4wMnB4IHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzXG4gIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXguIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrXG4gIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcbiAgLSBAcGFyYW0gJG5hbWU6IFNlbGVjdGVkIGJyZWFrcG9pbnQgbmFtZSBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG4gIC0gQHBhcmFtICRicmVha3BvaW50czogQnJlYWtwb2ludHMgbWFwcGluZyB2YWx1ZXMgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDA0IC0gQnJlYWtwb2ludCBJbmZpeFxuICBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250LiBVc2VmdWwgZm9yIG1ha2luZ1xuICByZXNwb25zaXZlIHV0aWxpdGllcy5cbiAgLSBAcGFyYW0gJG5hbWU6IFNlbGVjdGVkIGJyZWFrcG9pbnQgbmFtZSBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG4gIC0gQHBhcmFtICRicmVha3BvaW50czogQnJlYWtwb2ludHMgbWFwcGluZyB2YWx1ZXMgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogRnVuY3Rpb25zIC0gQ2FsY3VsYXRpb25zXG4gKiBTaW1wbGUgZnVuY3Rpb25zIHRvIGhlbHAgZGV2ZWxvcGVycyBjYWxjdWxhdGUgZGlmZmVyZW50IHZhbHVlcyBmcm9tIHBlcmNlbnRhZ2VzIHRvIHNpemluZyBzdWNoIGFzIFJFTXMuXG4gKlxuICogLSAwMSAtIEltcG9ydHNcbiAqIC0gMDIgLSBUYXJnZXQvQ29udGFpbmVyIFBlcmNlbnRhZ2VcbiAqIC0gMDMgLSBSRU1zXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAxIC0gSW1wb3J0c1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAyIC0gVGFyZ2V0L0NvbnRhaW5lciBQZXJjZW50YWdlXG4gIENhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSBvZiBhIHRhcmdldCBzaXplIGNvbXBhcmVkIHRvIGEgY29udGFpbmVyIHNpemUuXG4gIC0gQHBhcmFtICR0YXJnZXQ6IFNpemUgb2YgYW4gZWxlbWVudCBuZWVkaW5nIGEgY2FsY3VsYXRlZCBwZXJjZW50YWdlLlxuICAtIEBwYXJhbSAkY29udGFpbmVyOiBTaXplIG9mIHRoZSB0YXJnZXQncyBjb250YWluZXIsIG5lZWRlZCB0byBjYWxjdWxhdGUgcGVyY2VudGFnZS5cbiAgLSBAZXhhbXBsZSA9IHdpZHRoOiBjYWxjLXBlcmNlbnQoMjUwLCAxMDAwKTtcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMyAtIFJFTXNcbiAgQ2FsY3VsYXRlIGEgc2l6ZSBpbnRvIFJFTSB1bml0cyAtLSBtb3N0bHkgdXNlZCBmb3IgZm9udCBzaXplIHJlbmRlcmluZy5cbiAgLSBAcGFyYW0gJHNpemU6IFNpemUgb2YgYW4gZWxlbWVudCBuZWVkaW5nIGEgY2FsY3VsYXRlZCBzaXplIGludG8gUkVNcy5cbiAgLSBAcGFyYW0gJGJhc2U6IEJhc2UgZm9udCBzaXplIG9mIHRoZSBzaXRlIC0tIGRlZmF1bHRzIHRvIDE2cHguXG4gIC0gQGV4YW1wbGUgPSBmb250LXNpemU6IGNhbGMtcmVtKDI0cHgpO1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogRnVuY3Rpb25zIC0gQ29sb3JcbiAqIFNpbXBsZSBmdW5jdGlvbnMgdG8gaGVscCBkZXZlbG9wZXJzIGVhc2lseSBncmFiIHByZS1kZWZpbmVkIGNvbG9yIHZhbHVlcyBmcm9tIG1hcHBpbmcgbGlzdHMuXG4gKlxuICogLSAwMSAtIEltcG9ydHNcbiAqIC0gMDIgLSBDb2xvclxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIEltcG9ydHNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMiAtIENvbG9yXG4gIE1haW4gZnVuY3Rpb24gZm9yIGdldHRpbmcgYSBwcmUtZGVmaW5lZCBjb2xvciBmcm9tIGEgbGlzdCBvZiB2YWx1ZXMsIGFzIGRlZmluZWQgaW4gJ3BhcnRpYWxzL3NldHRpbmdzL19jb2xvcnMuc2Nzcy5cbiAgLSBAcGFyYW0gJGNvbG9yOiBUaGUgc2VsZWN0ZWQgY29sb3IuXG4gIC0gQGV4YW1wbGUgPSBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihwcmltYXJ5KTtcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEZ1bmN0aW9ucyAtIExheW91dFxuICogU2ltcGxlIGZ1bmN0aW9ucyB0byBoZWxwIGRldmVsb3BlcnMgZWFzaWx5IGdyYWIgcHJlLWRlZmluZWQgbGF5b3V0IHZhbHVlcyBmcm9tIG1hcHBpbmcgbGlzdHMuXG4gKlxuICogLSAwMSAtIEltcG9ydHNcbiAqIC0gMDIgLSBXaWR0aHNcbiAqIC0gMDMgLSBaLWluZGV4XG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAxIC0gSW1wb3J0c1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAyIC0gV2lkdGhzXG4gIE1haW4gZnVuY3Rpb24gZm9yIGdldHRpbmcgYSBwcmUtZGVmaW5lZCB3aWR0aCBmcm9tIGEgbGlzdCBvZiB2YWx1ZXMsIGFzIGRlZmluZWQgaW4gJ3BhcnRpYWxzL3NldHRpbmdzL19sYXlvdXQuc2Nzcy5cbiAgLSBAcGFyYW0gJHdpZHRoOiBUaGUgc2VsZWN0ZWQgd2lkdGggc2l6ZS5cbiAgLSBAZXhhbXBsZTogd2lkdGg6IHdpZHRoKGxhcmdlKTtcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMyAtIFotaW5kZXhcbiAgTWFpbiBmdW5jdGlvbiBmb3IgZ2V0dGluZyBhIHByZS1kZWZpbmVkIHotaW5kZXggZnJvbSBhIGxpc3Qgb2YgdmFsdWVzLCBhcyBkZWZpbmVkIGluICdwYXJ0aWFscy9zZXR0aW5ncy9fbGF5b3V0LnNjc3MuXG4gIC0gQHBhcmFtICRrZXk6IFRoZSBzZWxlY3RlZCBsYXllciB0eXBlLlxuICAtIEBleGFtcGxlID0gei1pbmRleDogei1pbmRleChib3R0b21sZXNzLXBpdClcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEZ1bmN0aW9ucyAtIFR5cG9ncmFwaHlcbiAqIFNpbXBsZSBmdW5jdGlvbnMgdG8gaGVscCBkZXZlbG9wZXJzIGVhc2lseSBncmFiIHByZS1kZWZpbmVkIHR5cG9ncmFwaGljYWwgdmFsdWVzIGZyb20gbWFwcGluZyBsaXN0cy5cbiAqXG4gKiAtIDAxIC0gSW1wb3J0c1xuICogLSAwMiAtIExpbmUgSGVpZ2h0XG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAxIC0gSW1wb3J0c1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAyIC0gTGluZSBIZWlnaHRcbiAgTWFpbiBmdW5jdGlvbiBmb3IgZ2V0dGluZyBhIHByZS1kZWZpbmVkIExpbmUgSGVpZ2h0IGZyb20gYSBsaXN0IG9mIHZhbHVlcywgYXMgZGVmaW5lZCBpblxuICBgcGFydGlhbHMvc2V0dGluZ3MvX3R5cG9ncmFwaHkuc2Nzc2AuXG4gIC0gQHBhcmFtICRzaXplOiBUaGUgc2VsZWN0ZWQgTGluZSBIZWlnaHQgdHlwZS5cbiAgLSBAZXhhbXBsZTogbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0KGhlYWRpbmcpO1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogTWl4aW5zIC0gQnJlYWtwb2ludHNcbiAqIFVzZSB0aGVzZSBtaXhpbnMgbWFpbmx5IHdoZW4gZGVmaW5pbmcgbWVkaWEgYnJlYWtwb2ludCBzcGVjaWZpY2F0aW9ucyBpbiB0aGVtZSBmaWxlcy4gQm90aCBzZXR0aW5ncyBhbmQgZnVuY3Rpb25zXG4gKiBhcmUgaW1wb3J0ZWQgaGVyZSB0byBzdXBwbGVtZW50IHRoZSBtaXhpbnMgdGhlbXNlbHZlcy5cbiAqXG4gKiAtIDAxIC0gSW1wb3J0c1xuICogLSAwMiAtIE1pbmltdW0gQnJlYWtwb2ludFxuICogLSAwMyAtIE1heGltdW0gQnJlYWtwb2ludFxuICogLSAwNCAtIEJldHdlZW4gQnJlYWtwb2ludFxuICogLSAwNSAtIE9ubHkgQnJlYWtwb2ludFxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIEltcG9ydHNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMiAtIE1pbmltdW0gQnJlYWtwb2ludFxuICBNZWRpYS9zY3JlZW4tc2l6ZSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoIC0tIGFwcGx5IHRvIHNjcmVlbi1zaXplcyBhYm92ZSB0aGUgYnJlYWtwb2ludCBzcGVjaWZpZWQuXG4gIC0gQHBhcmFtICRuYW1lOiBTZWxlY3RlZCBicmVha3BvaW50IG5hbWUgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuICAtIEBwYXJhbSAkYnJlYWtwb2ludHM6IEJyZWFrcG9pbnRzIG1hcHBpbmcgdmFsdWVzIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3NcbiAgLSBAZXhhbXBsZSA9IEBpbmNsdWRlIGJwLW1pbihsYXJnZSkge31cblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMyAtIE1heGltdW0gQnJlYWtwb2ludFxuICBNZWRpYS9zY3JlZW4tc2l6ZSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGggLS0gYXBwbHkgdG8gc2NyZWVuLXNpemVzIGJlbG93IHRoZSBicmVha3BvaW50IHNwZWNpZmllZC5cbiAgLSBAcGFyYW0gJG5hbWU6IFNlbGVjdGVkIGJyZWFrcG9pbnQgbmFtZSBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG4gIC0gQHBhcmFtICRicmVha3BvaW50czogQnJlYWtwb2ludHMgbWFwcGluZyB2YWx1ZXMgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuICAtIEBleGFtcGxlID0gQGluY2x1ZGUgYnAtbWF4KGxhcmdlKSB7fVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDA0IC0gQmV0d2VlbiBCcmVha3BvaW50XG4gIE1lZGlhL3NjcmVlbi1zaXplIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMgLS0gYXBwbHkgdG8gc2NyZWVuLXNpemVzIGJldHdlZW4gdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cbiAgLSBAcGFyYW0gJGxvd2VyOiBTZWxlY3RlZCBtaW5pbXVtIGJyZWFrcG9pbnQgbmFtZSBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG4gIC0gQHBhcmFtICR1cHBlcjogU2VsZWN0ZWQgbWF4aW11bSBicmVha3BvaW50IG5hbWUgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuICAtIEBwYXJhbSAkYnJlYWtwb2ludHM6IEJyZWFrcG9pbnRzIG1hcHBpbmcgdmFsdWVzIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3NcbiAgLSBAZXhhbXBsZSA9IEBpbmNsdWRlIGJwLWJldHdlZW4oeHNtYWxsLCBsYXJnZSkge31cblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwNSAtIE9ubHkgQnJlYWtwb2ludFxuICBNZWRpYS9zY3JlZW4tc2l6ZSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMgLS0gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZFxuICBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4gIC0gQHBhcmFtICRuYW1lOiBTZWxlY3RlZCBicmVha3BvaW50IG5hbWUgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuICAtIEBwYXJhbSAkYnJlYWtwb2ludHM6IEJyZWFrcG9pbnRzIG1hcHBpbmcgdmFsdWVzIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3NcbiAgLSBAZXhhbXBsZSA9IEBpbmNsdWRlIGJwLW9ubHkobGFyZ2UpIHt9XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBNaXhpbnMgLSBMaXN0c1xuICogVXNlIHRoZXNlIG1peGlucyB3aGVuIG5lZWRpbmcgdG8gZWFzaWx5IGRlZmluZSBsaXN0cyBzdHlsZXMuXG4gKlxuICogLSAwMSAtIEJhc2VcbiAqIC0gMDIgLSBCdWxsZXRzXG4gKiAtIDAzIC0gTnVtYmVyZWRcbiAqIC0gMDQgLSBObyBCdWxsZXRzXG4gKiAtIDA1IC0gSW5saW5lXG4gKiAtIDA2IC0gUnVsZWRcbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDEgLSBCYXNlXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDIgLSBCdWxsZXRzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDMgLSBOdW1iZXJlZFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDA0IC0gTm8gQnVsbGV0c1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDA1IC0gSW5saW5lXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgMDYgLSBSdWxlZFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gIDAzIC0gTWl4aW5zXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBNaXhpbnMgLSBUeXBvZ3JhcGh5XG4gKiBVc2UgdGhlc2UgbWl4aW5zIHdoZW4gbmVlZGluZyB0byBlYXNpbHkgZGVmaW5lIHR5cG9ncmFwaHkgc3R5bGVzLCBzdWNoIGFzIHNpemVzIGFuZCB0eXBvZ3JhcGhpY2FsIGxheW91dC5cbiAqXG4gKiAtIDAxIC0gSW1wb3J0c1xuICogLSAwMiAtIEhlYWRpbmcgU2l6ZVxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMSAtIEltcG9ydHNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAwMiAtIEhlYWRpbmcgU2l6ZVxuICBNZWFudCBmb3IgcmVzcG9uc2l2ZSBoZWFkaW5nIHNpemVzIGFuZCBpcyBiYXNlZCB1cG9uIGJyZWFrcG9pbnRzIGFuZCBhIG1hcHBpbmcgb2YgaGVhZGluZyBzaXplcy4gQnJlYWtwb2ludHMgYXJlXG4gIGRlZmluZWQgaW4gdGhlIGBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc2AgZmlsZSBhbmQgYXJlIHV0aWxpemVkIHdpdGggYSBtaXhpbiwgYXMgZGVmaW5lZCBpblxuICBgcGFydGlhbHMvbWl4aW5zL19icmVha3BvaW50cy5zY3NzYC5cbiAgLSBAcGFyYW0gJHNldHRpbmc6IFNlbGVjdGVkIGhlYWRpbmcgdG8gYXBwbHkgcmVzcG9uc2l2ZSBzaXppbmcgdG8uXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqIEFQSVxuQW5pbWF0aW9uXG4tIHRyYW5zaXRpb24tc3BlZWQgKEYsIFMpXG4tIHRyYW5zaXRpb24tZWFzZVxuXG5Mb2dvXG4tIHdpZHRoXG4tIGluc2V0XG5cbk1lbnUgQnV0dG9uXG4tIGljb24gc2l6ZVxuLSBJbnNldFxuLSB0cmFuc2l0aW9uIHNwZWVkXG4tIGJhY2tncm91bmQgY29sb3Jcbi0gYnV0dG9uIChmaWxsKSBjb2xvclxuLSBib3JkZXJcbi0gc2l6ZVxuLSB3aWR0aFxuXG5CdXR0b25cbi0gZm9udC1zaXplXG4tIGNvbG9yLXRleHQgKEgsIEYsIEEsIEQpXG4tIGNvbG9yLWJhY2tncm91bmQgKEgsIEYsIEEsIEQpXG4tIGNvbG9yLWJvcmRlciAoSCwgRiwgQSwgRClcbi0gY29sb3ItZ2xvd1xuLSBjb2xvci1zaGFkb3dcbi0gc2l6ZS1pY29uXG4tIHNpemUtYm9yZGVyXG4tIHNpemUtcmFkaXVzXG4tIHNwYWNlLWluc2V0XG5cbkxhYmVsXG4tIGZvbnQtZmFtaWx5XG4tIGZvbnQtd2VpZ2h0XG4tIGZvbnQtc2l6ZVxuLSBjb2xvci10ZXh0IChELCBFKVxuLSBzcGFjZS1nYXBcblxuSW5wdXRcbi0gZm9udC1mYW1pbHlcbi0gZm9udC13ZWlnaHRcbi0gZm9udC1zaXplXG4tIGNvbG9yLXRleHQgKEQsIEUpXG4tIHNwYWNlLWdhcFxuLSBzcGFjZS1pbnNldFxuLSBzaXplLXJhZGl1c1xuLSBzaXplLWljb25cblxuRm9ybS1JdGVtXG4tIHNwYWNlLWdhcFxuXG4qKi9cbjpyb290IHtcbiAgLyoqXG4gICAgQm9vbGVhbiBpbnB1dHMgc3VjaCBhcyBjaGVja2JveHMgYW5kIHJhZGlvc1xuICAgIGFzIHdlbGwgYXMgc2VsZWN0IG9wdGlvbnMgd2hlbiBzdHlsaW5nIGlzIGF2YWlsYWJsZS5cbiAgKiovXG4gIC0tb3B0aW9ucy1zcGFjZS1nYXAteTogMC43NWVtO1xuICAtLW9wdGlvbnMtc3BhY2UtZ2FwLXg6IDAuMjVlbTtcbiAgLS1vcHRpb24tbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtdGlnaHQsIDEuMik7XG4gIC0tb3B0aW9uLWZvbnQtc2l6ZTogMTZweDtcbiAgLS1vcHRpb24tZm9udC13ZWlnaHQ6IDQwMDtcbiAgLS1vcHRpb24tc3BhY2UtZ2FwLXg6IDAuNzVlbTtcbiAgLS1vcHRpb24tc3BhY2UtZ2FwLXk6IDAuMjVlbTtcbiAgLS1vcHRpb24taW5wdXQtc2l6ZTogMC43NWVtO1xufVxuXG5sYWJlbCxcbmxlZ2VuZCB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibGFjayk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJvZHktMTYpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tZm9udC1saW5lLWhlaWdodC1ib2R5LTE2KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbnRleHRhcmVhIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG5pbnB1dFt0eXBlPXRleHRdLFxuaW5wdXRbdHlwZT1wYXNzd29yZF0sXG5pbnB1dFt0eXBlPWRhdGVdLFxuaW5wdXRbdHlwZT1lbWFpbF0sXG5pbnB1dFt0eXBlPW51bWJlcl0sXG5pbnB1dFt0eXBlPXRlbF0ge1xuICBjb2xvcjogdmFyKC0tY29sb3ItYmxhY2spO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuICBib3JkZXI6IDAuMDYyNXJlbSBzb2xpZCB2YXIoLS1jb2xvci1kYXJrLWdyYXkpO1xuICBwYWRkaW5nOiAwLjM0Mzc1cmVtIDFyZW07XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJvZHktMTYpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tZm9udC1saW5lLWhlaWdodC1ib2R5LTE2KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXJlZ3VsYXIpO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDM2LjI1cmVtO1xufVxuaW5wdXRbdHlwZT10ZXh0XTpmb2N1cyxcbmlucHV0W3R5cGU9cGFzc3dvcmRdOmZvY3VzLFxuaW5wdXRbdHlwZT1kYXRlXTpmb2N1cyxcbmlucHV0W3R5cGU9ZW1haWxdOmZvY3VzLFxuaW5wdXRbdHlwZT1udW1iZXJdOmZvY3VzLFxuaW5wdXRbdHlwZT10ZWxdOmZvY3VzIHtcbiAgb3V0bGluZS1jb2xvcjogdmFyKC0tY29sb3ItYmxhY2spO1xuICBvdXRsaW5lLW9mZnNldDogMHB4O1xuICBvdXRsaW5lLXN0eWxlOiBzb2xpZDtcbiAgb3V0bGluZS13aWR0aDogMnB4O1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5pbnB1dFt0eXBlPWZpbGVdIHtcbiAgaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5pbnB1dFt0eXBlPXJhZGlvXSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlKTtcbiAgd2lkdGg6IDEuNXJlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIGJvcmRlcjogbm9uZTtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5pbnB1dFt0eXBlPXJhZGlvXTo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi8uLi9pbWFnZXMvaWNvbnMvcmFkaW8uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEuNXJlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuaW5wdXRbdHlwZT1yYWRpb106YWN0aXZlLCBpbnB1dFt0eXBlPXJhZGlvXTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDJweCAjM2NmO1xuICBib3JkZXItcmFkaXVzOiA1MDAlO1xufVxuaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDphZnRlciB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2ltYWdlcy9pY29ucy9yYWRpby1zZWxlY3RlZC5zdmdcIik7XG59XG5cbmlucHV0W3R5cGU9Y2hlY2tib3hdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xuICB3aWR0aDogMS41cmVtO1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgYm9yZGVyOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbmlucHV0W3R5cGU9Y2hlY2tib3hdOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uLy4uLy4uL2ltYWdlcy9pY29ucy9jaGVja2JveC5zdmdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMS41cmVtO1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5pbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vaW1hZ2VzL2ljb25zL2NoZWNrYm94LXNlbGVjdGVkLnN2Z1wiKTtcbn1cblxuaW5wdXRbdHlwZT1yYWRpb106Zm9jdXMsXG5pbnB1dFt0eXBlPWNoZWNrYm94XTpmb2N1cyB7XG4gIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDJweCB2YXIoLS1jb2xvci1ibGFjayk7XG59XG5cbmlucHV0W3R5cGU9c3VibWl0XTpub3QoI2VkaXQtcmVzZXQpIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24tdGV4dCk7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uKTtcbiAgYm9yZGVyLXJhZGl1czogMnJlbTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtbGcpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGNvbG9yIDM1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIGJhY2tncm91bmQtY29sb3IgMzUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgcGFkZGluZzogMC4yNXJlbSAxcmVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICBpbnB1dFt0eXBlPXN1Ym1pdF06bm90KCNlZGl0LXJlc2V0KSB7XG4gICAgcGFkZGluZzogMC41cmVtIDJyZW07XG4gIH1cbn1cbmlucHV0W3R5cGU9c3VibWl0XTpub3QoI2VkaXQtcmVzZXQpOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24taG92ZXIpO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMTUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgYmFja2dyb3VuZC1jb2xvciAxNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xufVxuaW5wdXRbdHlwZT1zdWJtaXRdOm5vdCgjZWRpdC1yZXNldCk6Zm9jdXMge1xuICBjb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xuICBvdXRsaW5lLW9mZnNldDogMC4xODc1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1ob3Zlcik7XG4gIG91dGxpbmU6IDAuMDYyNXJlbSBzb2xpZCB2YXIoLS1jb2xvci1ibGFjayk7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0cmFuc2l0aW9uOiBjb2xvciAxNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLCBiYWNrZ3JvdW5kLWNvbG9yIDE1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG59XG5cbnRleHRhcmVhOjpwbGFjZWhvbGRlcixcbmlucHV0OjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1tZWRpdW0tZ3JheSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJvZHktMTYpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tZm9udC1saW5lLWhlaWdodC1ib2R5LTE2KTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXJlZ3VsYXIpO1xufVxuXG50ZXh0YXJlYSB7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG4gIGJvcmRlcjogMC4wNjI1cmVtIHNvbGlkIHZhcigtLWNvbG9yLWRhcmstZ3JheSk7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1ib2R5LTE2KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtYm9keS0xNik7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1yZWd1bGFyKTtcbn1cblxuc2VsZWN0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgdGV4dC1pbmRlbnQ6IDAuMDFweDtcbiAgdGV4dC1vdmVyZmxvdzogXCJcIjtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgYm9yZGVyOiAwLjA2MjVyZW0gc29saWQgdmFyKC0tY29sb3ItZGFyay1ncmF5KTtcbiAgcGFkZGluZzogMC4yNXJlbSAxcmVtO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1ib2R5LTE2KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtYm9keS0xNik7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1yZWd1bGFyKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi8uLi9pbWFnZXMvaWNvbnMvY2hldnJvbi1kb3duLnN2Z1wiKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIHJpZ2h0IDFyZW07XG4gIGJhY2tncm91bmQtc2l6ZTogMS4yNXJlbSAxLjI1cmVtO1xuICBjb2xvcjogdmFyKC0tY29sb3ItYmxhY2spO1xufVxuc2VsZWN0IG9wdGlvbiB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibGFjayk7XG59XG5cbnNlbGVjdDo6LW1zLWV4cGFuZCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5mb3JtLWl0ZW0gPiAqICsgKiB7XG4gIG1hcmdpbi10b3A6IDAuMjVyZW07XG59XG5cbi5mb3JtLWl0ZW0gKyAuZm9ybS1pdGVtIHtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbn1cblxuLmZvcm0td3JhcHBlciB7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAycmVtIDAgMCAwO1xufVxuXG4uZm9ybS13cmFwcGVyIC5maWVsZHNldC13cmFwcGVyIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIHJvdy1nYXA6IDEuODc1cmVtO1xuICBjb2x1bW4tZ2FwOiAxLjI1cmVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuZm9ybS13cmFwcGVyIC5maWVsZHNldC13cmFwcGVyIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICB9XG59XG4uZm9ybS13cmFwcGVyIC5maWVsZHNldC13cmFwcGVyIC5mb3JtLWl0ZW0ge1xuICBtYXJnaW46IDA7XG59XG5cbi5mb3JtLXR5cGUtYm9vbGVhbiArIC5mb3JtLXR5cGUtYm9vbGVhbiB7XG4gIG1hcmdpbi10b3A6IHZhcigtLW9wdGlvbnMtc3BhY2UtZ2FwLXkpO1xufVxuXG4uZm9ybS10eXBlLWJvb2xlYW4ge1xuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tb3B0aW9uLXNwYWNlLWdhcC14KSArIHZhcigtLW9wdGlvbi1pbnB1dC1zaXplKSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tb3B0aW9uLWZvbnQtc2l6ZSk7XG59XG4uZm9ybS10eXBlLWJvb2xlYW4gaW5wdXRbdHlwZT1jaGVja2JveF0sXG4uZm9ybS10eXBlLWJvb2xlYW4gaW5wdXRbdHlwZT1yYWRpb10ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgbGVmdDogY2FsYygodmFyKC0tb3B0aW9uLXNwYWNlLWdhcC14KSArIHZhcigtLW9wdGlvbi1pbnB1dC1zaXplKSkgKiAtMSk7XG4gIG1hcmdpbi1yaWdodDogY2FsYygodmFyKC0tb3B0aW9uLWlucHV0LXNpemUpKSAqIC0xKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmZvcm0tdHlwZS1ib29sZWFuIGlucHV0W3R5cGU9Y2hlY2tib3hdICsgbGFiZWwsXG4uZm9ybS10eXBlLWJvb2xlYW4gaW5wdXRbdHlwZT1yYWRpb10gKyBsYWJlbCB7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbn1cbkBzdXBwb3J0cyAoZGlzcGxheTogZ3JpZCkge1xuICAuZm9ybS10eXBlLWJvb2xlYW4ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEuNXJlbSAxZnI7XG4gICAgY29sdW1uLWdhcDogMC4yNXJlbTtcbiAgICByb3ctZ2FwOiAwLjI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxuICAuZm9ybS10eXBlLWJvb2xlYW4gPiAqIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgfVxuICAuZm9ybS10eXBlLWJvb2xlYW4gaW5wdXRbdHlwZT1jaGVja2JveF0sXG4gIC5mb3JtLXR5cGUtYm9vbGVhbiBpbnB1dFt0eXBlPXJhZGlvXSB7XG4gICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgbGVmdDogYXV0bztcbiAgICBtYXJnaW46IGNhbGMoKDFlbSAtIHZhcigtLW9wdGlvbi1pbnB1dC1zaXplKSkgLyB2YXIoLS1vcHRpb24tbGluZS1oZWlnaHQpKSAwIDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG4gIC5mb3JtLXR5cGUtYm9vbGVhbiBpbnB1dFt0eXBlPWNoZWNrYm94XSArICosXG4gIC5mb3JtLXR5cGUtYm9vbGVhbiBpbnB1dFt0eXBlPXJhZGlvXSArICoge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW07XG4gIH1cbn1cblxuLmRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtZGVzY3JpcHRpb24pO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktaW50ZXJmYWNlKTtcbn1cblxuLmZpbHRlci13cmFwcGVyIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cblxuLmZpbHRlci1ndWlkZWxpbmVzLFxuLmZpbHRlci1oZWxwIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtZGVzY3JpcHRpb24pO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktaW50ZXJmYWNlKTtcbn1cblxuLmZpbHRlci1ndWlkZWxpbmVzIHVsIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cblxuLyoqIFBhc3N3b3JkICoqL1xuLmZvcm0taXRlbS1wYXNzd29yZC1jb25maXJtIHtcbiAgd2lkdGg6IHZhcigtLXNpemUtZm9ybS1uYXJyb3cpO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi5wYXNzd29yZC1zdHJlbmd0aF9fbWV0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1mZWVkYmFjay1iYWNrZ3JvdW5kKTtcbn1cblxuLnBhc3N3b3JkLXN0cmVuZ3RoX19pbmRpY2F0b3IuaXMtZmFpciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWZlZWRiYWNrLWZhaXIpO1xufVxuLnBhc3N3b3JkLXN0cmVuZ3RoX19pbmRpY2F0b3IuaXMtc3Ryb25nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZmVlZGJhY2stc3Ryb25nKTtcbn1cbi5wYXNzd29yZC1zdHJlbmd0aF9faW5kaWNhdG9yLmlzLWdvb2Qge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1mZWVkYmFjay1nb29kKTtcbn1cbi5wYXNzd29yZC1zdHJlbmd0aF9faW5kaWNhdG9yLmlzLXdlYWsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1mZWVkYmFjay13ZWFrKTtcbn1cblxuLnBhc3N3b3JkLWNvbmZpcm0sXG4ucGFzc3dvcmQtc3RyZW5ndGhfX3RpdGxlIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtZGVzY3JpcHRpb24pO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktaW50ZXJmYWNlKTtcbn1cblxuLnBhc3N3b3JkLXN0cmVuZ3RoX190ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xufVxuXG4ucGFzc3dvcmQtY29uZmlybSA+IHNwYW4ge1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG59XG4ucGFzc3dvcmQtY29uZmlybSA+IHNwYW4uZXJyb3Ige1xuICBjb2xvcjogdmFyKC0tY29sb3ItZmVlZGJhY2stZXJyb3IpO1xufVxuLnBhc3N3b3JkLWNvbmZpcm0gPiBzcGFuLm9rIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWZlZWRiYWNrLWdvb2QpO1xufVxuXG4ucGFzc3dvcmQtc3VnZ2VzdGlvbnMge1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1kZXNjcmlwdGlvbik7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseS1pbnRlcmZhY2UpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG59XG4ucGFzc3dvcmQtc3VnZ2VzdGlvbnMgPiB1bCB7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1yZWd1bGFyKTtcbn1cblxuI2Jsb2NrLWhjd2gtY29udGVudCAudXNlci1sb2dpbi1mb3JtIHtcbiAgcGFkZGluZzogMS41cmVtIDAgNXJlbSAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgI2Jsb2NrLWhjd2gtY29udGVudCAudXNlci1sb2dpbi1mb3JtIHtcbiAgICBwYWRkaW5nOiAyLjYyNXJlbSAwIDUuNXJlbSAwO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gICNibG9jay1oY3doLWNvbnRlbnQgLnVzZXItbG9naW4tZm9ybSB7XG4gICAgcGFkZGluZzogMi42MjVyZW0gMCA3LjVyZW0gMDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDE0NDBweCkge1xuICAjYmxvY2staGN3aC1jb250ZW50IC51c2VyLWxvZ2luLWZvcm0ge1xuICAgIHBhZGRpbmc6IDUuMTI1cmVtIDAgNy41cmVtIDA7XG4gIH1cbn1cblxuaW5wdXRbdHlwZT1zdWJtaXRdI2VkaXQtcmVzZXQge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ibGFjayk7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1ib2R5LTE0KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtYm9keS0xNCk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1yZWd1bGFyKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5pbnB1dFt0eXBlPXN1Ym1pdF0jZWRpdC1yZXNldDpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLnNlY29uZGFyeS1yZWdpb24gLmZvcm0tYWN0aW9ucy5mb3JtLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgZ2FwOiAycmVtO1xufVxuLnNlY29uZGFyeS1yZWdpb24gLmZvcm0tYWN0aW9ucy5mb3JtLXdyYXBwZXIgLmpzLWZvcm0tc3VibWl0IHtcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogMnJlbTtcbn1cblxuaW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWJsYWNrKTtcbn1cblxuI3ZpZXdzLWV4cG9zZWQtZm9ybS1yZWNlbnQtY29udGVudC1uZXdzLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIGdhcDogMzJweDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXJnaW46IDAgMCAyLjVyZW0gMDtcbn1cbiN2aWV3cy1leHBvc2VkLWZvcm0tcmVjZW50LWNvbnRlbnQtbmV3cy1saXN0IC5mb3JtLXdyYXBwZXIge1xuICBtYXJnaW46IDA7XG59XG5cbmJvZHkucGFnZS1ub2RlLXR5cGUtcmVzb3VyY2UgLnVpLWRpYWxvZyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlKTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgei1pbmRleDogMTAwO1xufVxuYm9keS5wYWdlLW5vZGUtdHlwZS1yZXNvdXJjZSAudWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXIge1xuICBjb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1tYWluKTtcbiAgcGFkZGluZzogMS4yNXJlbSA0LjM3NXJlbSAxLjI1cmVtIDIuNXJlbTtcbn1cbmJvZHkucGFnZS1ub2RlLXR5cGUtcmVzb3VyY2UgLnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlID4gLnVpLWljb24tY2xvc2V0aGljayB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRvcDogMDtcbiAgbWFyZ2luOiAwO1xuICB0cmFuc2Zvcm06IG5vbmU7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIG1hc2staW1hZ2U6IHVybChcIi90aGVtZXMvY29udHJpYi9naW4vZGlzdC9tZWRpYS9zcHJpdGUuc3ZnI2Nsb3NlLXZpZXdcIik7XG4gIG1hc2stc2l6ZTogMjBweCAyMHB4O1xuICAtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG59XG5ib2R5LnBhZ2Utbm9kZS10eXBlLXJlc291cmNlIC51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB7XG4gIHdpZHRoOiAyLjc1cmVtO1xuICBoZWlnaHQ6IDIuNzVyZW07XG4gIG9wYWNpdHk6IDE7XG59XG5ib2R5LnBhZ2Utbm9kZS10eXBlLXJlc291cmNlIC51aS1kaWFsb2cgLm1lc3NhZ2VzIHtcbiAgbWFyZ2luLWJvdHRvbTogMi41cmVtO1xufVxuYm9keS5wYWdlLW5vZGUtdHlwZS1yZXNvdXJjZSAudWktZGlhbG9nIC51aS1kaWFsb2ctY29udGVudCB7XG4gIHBhZGRpbmctdG9wOiAyLjVyZW07XG4gIHBhZGRpbmctbGVmdDogMi41cmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07XG59XG5ib2R5LnBhZ2Utbm9kZS10eXBlLXJlc291cmNlIC51aS1kaWFsb2cgLmNvbXBvbmVudC5jLXdlYmZvcm0gLmZvcm0taXRlbS1tYXJrdXAgcCB7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1mb250LWxpbmUtaGVpZ2h0LWJvZHktMTgpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1ib2R5LTE4KTtcbiAgbWFyZ2luOiAwIDAgMS44NzVyZW0gMDtcbn1cbmJvZHkucGFnZS1ub2RlLXR5cGUtcmVzb3VyY2UgLnVpLWRpYWxvZyBidXR0b24uYnV0dG9uLS1wcmltYXJ5IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24tdGV4dCk7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24pO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYnV0dG9uKTtcbiAgYm9yZGVyLXJhZGl1czogMnJlbTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWZvbnQtbGluZS1oZWlnaHQtbGcpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGNvbG9yIDM1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIGJhY2tncm91bmQtY29sb3IgMzUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgcGFkZGluZzogMC4yNXJlbSAxcmVtO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICBib2R5LnBhZ2Utbm9kZS10eXBlLXJlc291cmNlIC51aS1kaWFsb2cgYnV0dG9uLmJ1dHRvbi0tcHJpbWFyeSB7XG4gICAgcGFkZGluZzogMC41cmVtIDJyZW07XG4gIH1cbn1cbmJvZHkucGFnZS1ub2RlLXR5cGUtcmVzb3VyY2UgLnVpLWRpYWxvZyBidXR0b24uYnV0dG9uLS1wcmltYXJ5OmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1idXR0b24taG92ZXIpO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMTUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgYmFja2dyb3VuZC1jb2xvciAxNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xufVxuYm9keS5wYWdlLW5vZGUtdHlwZS1yZXNvdXJjZSAudWktZGlhbG9nIGJ1dHRvbi5idXR0b24tLXByaW1hcnk6Zm9jdXMge1xuICBjb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xuICBvdXRsaW5lLW9mZnNldDogMC4xODc1cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJ1dHRvbi1ob3Zlcik7XG4gIG91dGxpbmU6IDAuMDYyNXJlbSBzb2xpZCB2YXIoLS1jb2xvci1ibGFjayk7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0cmFuc2l0aW9uOiBjb2xvciAxNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLCBiYWNrZ3JvdW5kLWNvbG9yIDE1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG59XG5ib2R5LnBhZ2Utbm9kZS10eXBlLXJlc291cmNlIC51aS1kaWFsb2cgLnVpLXdpZGdldC1jb250ZW50LnVpLWRpYWxvZy1idXR0b25wYW5lIHtcbiAgYm9yZGVyOiAwO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAyLjVyZW07XG59XG5ib2R5LnBhZ2Utbm9kZS10eXBlLXJlc291cmNlIC51aS1kaWFsb2cgLnNlbGVjdDItc2VsZWN0aW9uIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vLi4vaW1hZ2VzL2ljb25zL2NoZXZyb24tZG93bi5zdmdcIik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciByaWdodCAxcmVtO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEuMjVyZW0gMS4yNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5ib2R5LnBhZ2Utbm9kZS10eXBlLXJlc291cmNlIC51aS1kaWFsb2cgLmZvcm0tYWN0aW9ucy53ZWJmb3JtLWFjdGlvbnMuZm9ybS13cmFwcGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnVzZXItbG9naW4tZm9ybSBhIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWJsYWNrKTtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMjJweDtcbiAgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IHVuZGVybGluZTtcbn1cbi51c2VyLWxvZ2luLWZvcm0gYTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lO1xufVxuLnVzZXItbG9naW4tZm9ybSAuZm9ybS1pdGVtLS1lcnJvci1tZXNzYWdlIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWRhcmstZ3JheSk7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDIycHg7XG59XG5cbmJvZHkucGF0aC11c2VyIC5tZXNzYWdlcyB7XG4gIG1hcmdpbi10b3A6IDIuNXJlbTtcbn0iXX0= */
