/*
---
name: .stretch
category: Shared/Helpers
tag:
 - helpers
---

`.stretch` Define an element which stretches to the size of its parent

```html
<div class="rel" style="height: 55px;">
   <div class="stretch styleguide-grid-unit"> I'm stretched to the size of my parent</div>
</div>
```
*/
.stretch {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
/*
---
name: .abs
category: Shared/Helpers
tag:
 - helpers
---

`.abs` Set the element position to absolute
*/
.abs {
  position: absolute;
}
/*
---
name: .rel
category: Shared/Helpers
tag:
 - helpers
---

`.rel` Set the element position to relative
*/
.rel {
  position: relative;
}
/*
---
name: .vcenter
category: Shared/Helpers
tag:
 - helpers
---

`.vcenter` Sets vertical-align to middle
*/
.vcenter {
  vertical-align: middle;
}
/*
---
name: .hcenter
category: Shared/Helpers
tag:
 - helpers
---

`.hcenter` Sets text-align to center
*/
.hcenter {
  text-align: center;
}
/*
---
name: .floatleft
category: Shared/Helpers
tag:
 - helpers
---

`.floatleft` Sets float to left
*/
.floatleft {
  float: left;
}
/*
---
name: .floatright
category: Shared/Helpers
tag:
 - helpers
---

`.floatright` Sets float to right
*/
.floatright {
  float: right;
}
/*
---
name: .hidden
category: Shared/Helpers
tag:
 - helpers
---

`.hidden` Sets display to none.
*/
.hidden {
  display: none;
}
/*
---
name: rem( pixels )
category: Shared/Mixins
template: mixin
tag:
 - mixin
parameters:
 - name: pixels
   description: The pixel value to convert into rem based on the 16px root font-size
   optional: false
---

This less function turns a pixel value into a rem value based on the root font-size set to 16px.

An example usage looks like this:

```less
.example {
	padding: rem( 15px ) rem( 12px )
}
```
*/
/*
---
name: .for( @array, @code )
category: Shared/Mixins
template: mixin
tag:
 - mixin
parameters:
 - name: array
   description: The array of values to loop over
   optional: false
 - name: code
   description: The code that is executed on every value. You can access the index with `@i` and the value with `@value`
   optional: false
---

This mixin allows to execute code over an array

An example usage looks like this:
```less
@colors: #1abc9c, #2ecc71, #3498db, #9b59b6;

.for(@colors, {
    .color-@{i} {
        color: @value;
    }
});
```

This generates:
```css
.color-1 {
  color: #1abc9c;
}
.color-2 {
  color: #2ecc71;
}
.color-3 {
  color: #3498db;
}
.color-4 {
  color: #9b59b6;
}
```
*/
/*
---
name: Global Reset
category: Shared
---

The lernetz css library has a set of reset style to have the same behaviour on every browser.
Furthermore this reset sets some global variables like:
 * body font-families
 * body line-height
 * body text-rendering
 * :root font-size for proper rem conversion
*/
html,
body,
div,
span,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
abbr,
address,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
samp,
small,
strong,
sub,
sup,
var,
b,
i,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section,
summary,
time,
mark,
audio,
video {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-size: inherit;
  vertical-align: baseline;
}
:root {
  font-size: 16px;
}
html {
  font-size: 100%;
}
body {
  line-height: 1.5rem;
  color: #3F3F40;
  font-family: 'Helvetica', sans-serif;
  text-rendering: optimizeLegibility;
  background-color: #FFF;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
  display: block;
}
select {
  vertical-align: middle;
}
textarea {
  width: 100%;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
/*
 * Normalize the behaviour of all browsers
 *
 * Instead of setting box-sizing fix on all elements we only set it on the root element
 * and tell all elements to inherit it's property from the parent
 * That way it's possible to overwrite the box-sizing anywhere while keeping proper inheritance
 */
html {
  box-sizing: border-box;
}
*,
*:before,
*:after {
  box-sizing: inherit;
}
a {
  text-decoration: none;
  color: #EC6449;
}
a > * {
  display: block;
}
/*
---
name: Colors
category: Shared/Variables
template: colors
tag:
 - variables
 - colors
colors:
 - variable: "@text-color"
   description: "The default text color on the body"
   value: "#3F3F40"
 - variable: "@text-inverted-color"
   description: "The default inverted text color on the body"
   value: "#FFF"
 - variable: "@action-color"
   description: "The main action color used for links and buttons"
   value: "#EC6449"
 - variable: "@body-color"
   description: "The main background color"
   value: "#FFF"
---

The color variables that are used throughout the library. 
*/
/*
---
name: Global settings
category: Shared/Variables
template: variables
tag:
 - variables
variables:
 - name: "@text-line-height"
   description: "The line height of the body"
   default: "1.5rem"
 - name: "@font-family"
   description: "The font-family of the body"
   default: "'Helvetica', sans-serif"
 - name: "@text-rendering"
   description: "The text-rendering of the body"
   default: "optimizeLegibility"
 - name: "@transition-duration"
   description: "The duration of the slide transitions"
   default: "0.4s"
---

These variables setups some global text formatting and styling.
*/
/*
---
name: Size settings
category: Shared/Variables
template: variables
tag:
 - variables
 - grid
variables:
 - name: "@grid-gutter"
   description: "The space between the grid children"
   default: "rem( 30px )"
 - name: "@grid-break-points"
   description: "The screensize when the grid should break."
   default: "rem(600px), rem(1024px)"
 - name: "@grid-break-labels"
   description: "The breakpoint label corresponding to the entie in the `@grid-break-points` list"
   default: "medium, large"
 - name: "@page-padding"
   description: "The padding for the .page-fluid component"
   default: "rem( 60px )"
---

These variables setups some global sizes mainly for the grid.
*/
/*
---
name: .button-default
category: Buttons/Default
tag:
 - component
 - button
---

The default button sets some basic properties so it is working as a `button` or `a` tag.

An example for a button:
```jade
button.button-default My Button
```

An example for a link:
```jade
a.button-default My Link
```
*/
.button-default {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background: transparent;
  border: none;
  display: inline-block;
  cursor: pointer;
  outline: none;
}
/*
---
name: .grid
category: Layout/Grid
tag:
 - component
 - responsive
compile: true
---

A simple grid system that wraps children nodes based on the viewport width.

## Simple side by side rendering

The easiest use case is to use simple `.col-1`, `.col-1-2`, `.col-1-3`, `.col-1-4` for a side-by-side rendering.
The default value for all child elements of a `.grid` is equivalent to `.col-1`, so for only one child it will span the full width.

```jade
div.grid
	div.col-1-2 
		div.aigis-debug col-1-2
	div.col-1-2
		div.aigis-debug col-1-2
```
```jade
div.grid
	div.col-1-4 
		div.aigis-debug col-1-4
	div.col-3-4
		div.aigis-debug col-3-4
```

## Layouts on different devices

The breakpoints for different screen sizes are specified in the `@grid-break-points`, `@grid-break-labels` variables.
The default values define two breakpoints with labels: `.medium-X-X` and `.large-X-X`.
So an example grid with two breakpoints looks like this:

```jade
div.grid
	div.medium-1-2.large-1-4.xlarge-1-2
		div.aigis-debug col-1 medium-1-2 large-1-4
	div.medium-1-2.large-1-4.xlarge-1-2
		div.aigis-debug col-1 medium-1-2 large-1-4
	div.col-1-2.medium-1-2.large-1-4.xlarge-1-2
		div.aigis-debug col-1-2 medium-1-2 large-1-4
	div.col-1-2.medium-1-2.large-1-4.xlarge-1-2
		div.aigis-debug col-1-2 medium-1-2 large-1-4
```

**Note:** The `col-1` classes are not present on the first two nodes, since this is the default behaviour.


## Reverse order

To reverse the order in which the columns are displayed, you can add the modifier class `.-reverse` to your grid.
The columns will be in DOM order when viewport switches to small layout.

```jade
div.grid.-reverse
	div.col-1-4
		div.aigis-debug First column in DOM
	div.col-1-4
		div.aigis-debug Second column in DOM
	div.col-1-4
		div.aigis-debug Third column in DOM
	div.col-1-4
		div.aigis-debug Fourth column in DOM
```
## No gutter

If you dont need a spacing/gutter between the grid columns you can use the modifier `.-nogutter`.

```jade
div.grid.-nogutter
	div.col-1-4
		div.aigis-debug First column in DOM
	div.col-1-4
		div.aigis-debug Second column in DOM
	div.col-1-4
		div.aigis-debug Third column in DOM
	div.col-1-4
		div.aigis-debug Fourth column in DOM
```
*/
.grid {
  margin: 0 -0.9375rem;
  /**
	 * Generate all media breakpoints based on the @grid-break-points, @grid-break-labels variables.
	 */
}
.grid:after {
  content: "";
  display: table;
  clear: both;
}
.grid > * {
  float: left;
  position: relative;
  width: 100%;
  padding: 0 0.9375rem;
}
.grid.-reverse > * {
  float: right;
}
.grid.-nogutter {
  margin: 0;
}
.grid.-nogutter > * {
  padding: 0;
}
.grid .col-1 {
  width: 100%;
}
.grid .col-1-2 {
  width: 50%;
}
.grid .col-1-3 {
  width: 33.33333333%;
}
.grid .col-2-3 {
  width: 66.66666667%;
}
.grid .col-1-4 {
  width: 25%;
}
.grid .col-3-4 {
  width: 75%;
}
@media all and (min-width: 37.5rem) {
  .grid > .medium-1 {
    width: 100%;
  }
  .grid > .medium-1-2 {
    width: 50%;
  }
  .grid > .medium-1-3 {
    width: 33.33333333%;
  }
  .grid > .medium-2-3 {
    width: 66.66666667%;
  }
  .grid > .medium-1-4 {
    width: 25%;
  }
  .grid > .medium-3-4 {
    width: 75%;
  }
}
@media all and (min-width: 64rem) {
  .grid > .large-1 {
    width: 100%;
  }
  .grid > .large-1-2 {
    width: 50%;
  }
  .grid > .large-1-3 {
    width: 33.33333333%;
  }
  .grid > .large-2-3 {
    width: 66.66666667%;
  }
  .grid > .large-1-4 {
    width: 25%;
  }
  .grid > .large-3-4 {
    width: 75%;
  }
}
/*
---
name: img.responsive
category: Layout/Image
tag:
 - responsive
compile: true
---

This class makes the image scaling to its max width.

```jade
img.responsive(src='http://www.byui.edu/images/agriculture-life-sciences/flower.jpg')
```
*/
img.responsive {
  max-width: 100%;
  height: auto;
}
/*
---
name: .media-responsive
category: Layout/Media
tag:
 - responsive
compile: true
---

`.media-responsive` - This makes a the `.media-responsive` div a container for any media element (iframe, video, ... ) that responsive scales with a fix ratio.
The media element ( child ) needs the class `.stretch` to fully fill out the parents size.

The `.media-responsive` component has to predefined modifiers: `.-media-4-3`, `.-media-16-9` that define a fix ratio.

```jade
div.media-responsive.-media-16-9
	iframe.stretch(src="https://www.youtube.com/watch?v=TCd6PfxOy0Y")
```
*/
.media-responsive {
  width: 100%;
  position: relative;
  padding-bottom: 50%;
}
.media-responsive.-media-4-3 {
  padding-bottom: 75%;
}
.media-responsive.-media-16-9 {
  padding-bottom: 56.26%;
}
/*
---
name: .page-fluid
category: Page/Fluid
tag:
 - responsive
compile: true
---

`.page-fluid` centers the page content and adds a padding so the page sticks not to the browser viewport.
Furthermore it has a max-width based on the last `@grid-break-points` value.

```jade
div.page-fluid
	div.aigis-debug Some page content
```

## Max-width page

To broaden the width of the page you can add the modifier `.-unlimited`. Thsi will span the page to the full width.

```jade
div.page-fluid.-unlimited
	div.aigis-debug Some page content
```
*/
.page-fluid {
  max-width: 71.5rem;
  margin: auto;
  padding: 0 3.75rem;
}
.page-fluid.-unlimited {
  max-width: none;
}
/*
---
name: .row
category: Layout/Row
tag:
 - component
compile: true
---

This styling allow to place containers in a row. They will **not** break as the `.grid` but resize them accordingly.
Some benefits of the `.row` approach is the easy vertical centering and the usage of the `.col-auto` class.

## Basic row with vertical centering

You can use the sizing classes `.col-X-X` to define the width of a column as the following example shows. 

```jade
div.row
	div.col-1-4.aigis-debug col-1-4 with a lot of text that spans the column.
	div.col-3-4.aigis-debug col-3-4 content.
```

## Fixed row

There is a `.-fixed` modifier where each column has the same width.

```jade
div.row.-fixed
	div.aigis-debug evenly spreadout column
	div.aigis-debug evenly spreadout column with more content
	div.aigis-debug evenly spreadout column
	div.aigis-debug evenly spreadout column with much more content than the other
	div.aigis-debug.vcenter evenly spreadout column with .vcenter
```


## Auto sized column width and vcenter

There is a special `.col-auto` class that resizes the column to the size of its content.
This is usefull for example if you have a fixed size logo and the rest of the header has to resize.

```jade
div.row.-center
	div.col-auto.aigis-debug
		img(src="http://placehold.it/100x100")
	div.col-1.aigis-debug The rest
	div.col-auto.aigis-debug
		img(src="http://placehold.it/200x100")
```
*/
.row {
  display: table;
  width: 100%;
}
.row.-fixed {
  table-layout: fixed;
}
.row.-center > * {
  vertical-align: middle;
}
.row.-bottom > * {
  vertical-align: bottom;
}
.row.-padded > * + * {
  padding-left: 1.875rem;
}
.row > * {
  display: table-cell;
}
.row > *.col-1 {
  width: 100%;
}
.row > *.col-1-2,
.row > *.col-2-4 {
  width: 50%;
}
.row > *.col-1-3 {
  width: 33.33333333%;
}
.row > *.col-2-3 {
  width: 66.66666667%;
}
.row > *.col-1-4 {
  width: 25%;
}
.row > *.col-3-4 {
  width: 75%;
}
.row > *.col-auto {
  width: auto;
  white-space: nowrap;
}
.btn {
  background-color: white;
  color: black;
  border: 1px solid #E0E0E0;
  border-radius: 0;
  padding: 12px 16px;
  cursor: pointer;
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  white-space: nowrap;
  margin: 0;
  box-shadow: 2px 2px 3px 0 rgba(187, 187, 187, 0.3);
}
.btn:hover {
  background-color: white;
  border: 1px solid #006699;
  color: #006699;
}
.btn:hover.btn--icon .icon {
  border-color: #006699;
}
.btn:focus {
  background-color: white;
  border: 1px solid #006699;
  color: #006699;
  padding-bottom: 11px;
}
.btn.active {
  border-bottom: 2px solid #002233;
  padding-bottom: 11px;
}
.btn.btn--menu-item {
  margin: 0;
  box-shadow: none;
  border: none;
  display: block;
}
.btn.btn--menu-item:hover {
  background-color: #E0E0E0;
}
.btn.hidden {
  display: none;
}
html,
body {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  min-height: 100vh;
}
#kc-locale {
  display: none;
}
.header-logo {
  width: 165px;
  margin: 10px 25px;
}
body > .container {
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1;
}
body > .container.login {
  position: relative;
  width: 100%;
  min-height: 550px;
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
  max-width: initial;
  z-index: 10;
}
.login-title {
  padding: 35px 0 0 45px;
  text-transform: uppercase;
  font-weight: 700;
  font-size: 48px;
  line-height: 55px;
}
.login-container {
  position: relative;
  top: 25px;
  left: 50%;
  width: 45%;
  padding: 25px 50px;
  background-color: #fff;
}
@media (max-width: 756px) {
  .login-container {
    left: 5%;
    width: 90%;
  }
}
.login-container h3 {
  text-transform: uppercase;
  margin-bottom: 25px;
}
.login-container p {
  margin-top: 10px;
}
.login-container .checkbox input[type="checkbox"] {
  position: relative;
  margin-left: 0px;
  width: auto;
}
.login-container .checkbox label {
  font-weight: 600;
  padding-left: 0px;
}
.login-container .checkbox label input {
  margin-right: 5px;
}
.login-container .kc-container {
  margin-top: 15px;
}
.login-container .kc-container .alert {
  margin: 10px 0;
}
.login-container .kc-container .alert.alert-error {
  color: #e2001a;
}
.login-container .kc-input-wrapper {
  border: 1px solid #eee;
  margin-bottom: 20px;
}
.login-container .kc-input-wrapper.row {
  margin-left: 0;
  margin-right: 0;
}
.login-container .kc-input-wrapper input {
  border: none;
  height: 48px;
  padding-left: 10px;
}
.login-container .input-icon {
  width: 45px;
  height: 45px;
  background-color: #eee;
  padding: 15px;
}
.login-container .input-icon .icon {
  width: 14px;
  height: 14px;
  fill: grey;
  -webkit-transform: rotate(180deg);
          transform: rotate(180deg);
}
.login-container input {
  width: 100%;
  background-color: #fff;
}
.login-container .re-login {
  padding: 20px 0;
}
.login-container .social-login {
  margin-top: 25px;
}
.login-container .social-login .zocial {
  margin-top: 10px;
  margin-right: 10px;
  float: left;
}
.login-container .social-login ul {
  list-style-type: none;
}
.login-container .social-login > ul > li > a > * {
  display: inline-block;
}
.login-footer {
  padding: 20px;
  width: 100%;
  background-color: #25262A;
  color: #4a4a4a;
}
.login-footer .logo-container {
  text-align: center;
}
.login-footer .logo-container .logo {
  margin: 10px;
}
.login-footer p {
  line-height: 1.5rem;
}
.kc-locale.menu {
  position: absolute;
  right: 20px;
  top: 20px;
}
.menu {
  position: relative;
}
.menu .menu-items {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  list-style: none;
  background-color: #fff;
  background-clip: padding-box;
  display: none;
}
.menu .menu-items li {
  border-bottom: 1px solid #E0E0E0;
}
.menu .menu-items li:last {
  border: none;
}
.menu.open .menu-items {
  display: block;
}
.container {
  padding-left: 0px;
  padding-right: 0px;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uY3NzIiwiY3NzLWxpYi9sZXNzL3NoYXJlZC9oZWxwZXJzLmxlc3MiLCJjc3MtbGliL2xlc3Mvc2hhcmVkL3Jlc2V0Lmxlc3MiLCJjc3MtbGliL2xlc3MvY29tcG9uZW50cy9jb3JlL2J1dHRvbi5sZXNzIiwiY3NzLWxpYi9sZXNzL2NvbXBvbmVudHMvY29yZS9yZXNwb25zaXZlL2dyaWQubGVzcyIsImNzcy1saWIvbGVzcy9jb21wb25lbnRzL2NvcmUvcmVzcG9uc2l2ZS9pbWFnZS5sZXNzIiwiY3NzLWxpYi9sZXNzL2NvbXBvbmVudHMvY29yZS9yZXNwb25zaXZlL21lZGlhLmxlc3MiLCJjc3MtbGliL2xlc3MvY29tcG9uZW50cy9jb3JlL3Jlc3BvbnNpdmUvcGFnZS5sZXNzIiwiY3NzLWxpYi9sZXNzL2NvbXBvbmVudHMvY29yZS9yb3cubGVzcyIsImxlcm5ldHotdGhlbWUvYnV0dG9uLmxlc3MiLCJsZXJuZXR6LXRoZW1lL2xvZ2luLmxlc3MiLCJsZXJuZXR6LXRoZW1lL21lbnUubGVzcyIsIm1haW4ubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0VBZUU7QUNDRjtFQUNDLG1CQUFBO0VBQ0EsT0FBQTtFQUNBLFFBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtDRENBO0FBQ0Q7Ozs7Ozs7OztFQVNFO0FDR0Y7RUFDQyxtQkFBQTtDRERBO0FBQ0Q7Ozs7Ozs7OztFQVNFO0FDS0Y7RUFDQyxtQkFBQTtDREhBO0FBQ0Q7Ozs7Ozs7OztFQVNFO0FDT0Y7RUFDQyx1QkFBQTtDRExBO0FBQ0Q7Ozs7Ozs7OztFQVNFO0FDU0Y7RUFDQyxtQkFBQTtDRFBBO0FBQ0Q7Ozs7Ozs7OztFQVNFO0FDV0Y7RUFDQyxZQUFBO0NEVEE7QUFDRDs7Ozs7Ozs7O0VBU0U7QUNZRjtFQUNDLGFBQUE7Q0RWQTtBQUNEOzs7Ozs7Ozs7RUFTRTtBQ2FGO0VBQ0MsY0FBQTtDRFhBO0FBQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFzQkU7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LHVCQUFBO0VBQ0EsY0FBQTtDVjB5QkQ7QVVyM0JEO0VBOEVHLFlBQUE7RUFDQSxhQUFBO0VBQ0EsV0FBQTtFQUNBLGtDQUFBO1VBQUEsMEJBQUE7Q1YweUJGO0FVMzNCRDtFQXNGRSxZQUFBO0VBQ0EsdUJBQUE7Q1Z3eUJEO0FVLzNCRDtFQTJGRSxnQkFBQTtDVnV5QkQ7QVVsNEJEO0VBZ0dFLGlCQUFBO0NWcXlCRDtBVXI0QkQ7RUFtR0csaUJBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7Q1ZxeUJGO0FVMTRCRDtFQXlHRyxzQkFBQTtDVm95QkY7QVU3NEJEO0VBNkdHLHNCQUFBO0NWbXlCRjtBVTV4QkQ7RUFFQyxjQUFBO0VBQ0EsWUFBQTtFQUVBLDBCQUFBO0VBQ0EsZUFBQTtDVjR4QkE7QVVseUJEO0VBVUUsbUJBQUE7Q1YyeEJEO0FVcnlCRDtFQWFHLGFBQUE7Q1YyeEJGO0FVeHlCRDtFQW1CRSxvQkFBQTtDVnd4QkQ7QVVweEJEO0VBQ0MsbUJBQUE7RUFDQSxZQUFBO0VBQ0EsVUFBQTtDVnN4QkE7QVcvOEJEO0VBQ0MsbUJBQUE7Q1hpOUJBO0FXbDlCRDtFQUlFLG1CQUFBO0VBQ0EsVUFBQTtFQUNBLFFBQUE7RUFDQSxjQUFBO0VBQ0EsaUJBQUE7RUFDQSx1QkFBQTtFQUNBLDZCQUFBO0VBQ0EsY0FBQTtDWGk5QkQ7QVc1OUJEO0VBY0csaUNBQUE7Q1hpOUJGO0FXLzhCRTtFQUNDLGFBQUE7Q1hpOUJIO0FXNThCQTtFQUVFLGVBQUE7Q1g2OEJGO0FZNzlCRDtFQUNDLGtCQUFBO0VBQ0EsbUJBQUE7Q1orOUJBIiwiZmlsZSI6Imxlcm5ldHouY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbi0tLVxubmFtZTogLnN0cmV0Y2hcbmNhdGVnb3J5OiBTaGFyZWQvSGVscGVyc1xudGFnOlxuIC0gaGVscGVyc1xuLS0tXG5cbmAuc3RyZXRjaGAgRGVmaW5lIGFuIGVsZW1lbnQgd2hpY2ggc3RyZXRjaGVzIHRvIHRoZSBzaXplIG9mIGl0cyBwYXJlbnRcblxuYGBgaHRtbFxuPGRpdiBjbGFzcz1cInJlbFwiIHN0eWxlPVwiaGVpZ2h0OiA1NXB4O1wiPlxuICAgPGRpdiBjbGFzcz1cInN0cmV0Y2ggc3R5bGVndWlkZS1ncmlkLXVuaXRcIj4gSSdtIHN0cmV0Y2hlZCB0byB0aGUgc2l6ZSBvZiBteSBwYXJlbnQ8L2Rpdj5cbjwvZGl2PlxuYGBgXG4qL1xuLnN0cmV0Y2gge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbi8qXG4tLS1cbm5hbWU6IC5hYnNcbmNhdGVnb3J5OiBTaGFyZWQvSGVscGVyc1xudGFnOlxuIC0gaGVscGVyc1xuLS0tXG5cbmAuYWJzYCBTZXQgdGhlIGVsZW1lbnQgcG9zaXRpb24gdG8gYWJzb2x1dGVcbiovXG4uYWJzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuLypcbi0tLVxubmFtZTogLnJlbFxuY2F0ZWdvcnk6IFNoYXJlZC9IZWxwZXJzXG50YWc6XG4gLSBoZWxwZXJzXG4tLS1cblxuYC5yZWxgIFNldCB0aGUgZWxlbWVudCBwb3NpdGlvbiB0byByZWxhdGl2ZVxuKi9cbi5yZWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4vKlxuLS0tXG5uYW1lOiAudmNlbnRlclxuY2F0ZWdvcnk6IFNoYXJlZC9IZWxwZXJzXG50YWc6XG4gLSBoZWxwZXJzXG4tLS1cblxuYC52Y2VudGVyYCBTZXRzIHZlcnRpY2FsLWFsaWduIHRvIG1pZGRsZVxuKi9cbi52Y2VudGVyIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi8qXG4tLS1cbm5hbWU6IC5oY2VudGVyXG5jYXRlZ29yeTogU2hhcmVkL0hlbHBlcnNcbnRhZzpcbiAtIGhlbHBlcnNcbi0tLVxuXG5gLmhjZW50ZXJgIFNldHMgdGV4dC1hbGlnbiB0byBjZW50ZXJcbiovXG4uaGNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi8qXG4tLS1cbm5hbWU6IC5mbG9hdGxlZnRcbmNhdGVnb3J5OiBTaGFyZWQvSGVscGVyc1xudGFnOlxuIC0gaGVscGVyc1xuLS0tXG5cbmAuZmxvYXRsZWZ0YCBTZXRzIGZsb2F0IHRvIGxlZnRcbiovXG4uZmxvYXRsZWZ0IHtcbiAgZmxvYXQ6IGxlZnQ7XG59XG4vKlxuLS0tXG5uYW1lOiAuZmxvYXRyaWdodFxuY2F0ZWdvcnk6IFNoYXJlZC9IZWxwZXJzXG50YWc6XG4gLSBoZWxwZXJzXG4tLS1cblxuYC5mbG9hdHJpZ2h0YCBTZXRzIGZsb2F0IHRvIHJpZ2h0XG4qL1xuLmZsb2F0cmlnaHQge1xuICBmbG9hdDogcmlnaHQ7XG59XG4vKlxuLS0tXG5uYW1lOiAuaGlkZGVuXG5jYXRlZ29yeTogU2hhcmVkL0hlbHBlcnNcbnRhZzpcbiAtIGhlbHBlcnNcbi0tLVxuXG5gLmhpZGRlbmAgU2V0cyBkaXNwbGF5IHRvIG5vbmUuXG4qL1xuLmhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKlxuLS0tXG5uYW1lOiByZW0oIHBpeGVscyApXG5jYXRlZ29yeTogU2hhcmVkL01peGluc1xudGVtcGxhdGU6IG1peGluXG50YWc6XG4gLSBtaXhpblxucGFyYW1ldGVyczpcbiAtIG5hbWU6IHBpeGVsc1xuICAgZGVzY3JpcHRpb246IFRoZSBwaXhlbCB2YWx1ZSB0byBjb252ZXJ0IGludG8gcmVtIGJhc2VkIG9uIHRoZSAxNnB4IHJvb3QgZm9udC1zaXplXG4gICBvcHRpb25hbDogZmFsc2Vcbi0tLVxuXG5UaGlzIGxlc3MgZnVuY3Rpb24gdHVybnMgYSBwaXhlbCB2YWx1ZSBpbnRvIGEgcmVtIHZhbHVlIGJhc2VkIG9uIHRoZSByb290IGZvbnQtc2l6ZSBzZXQgdG8gMTZweC5cblxuQW4gZXhhbXBsZSB1c2FnZSBsb29rcyBsaWtlIHRoaXM6XG5cbmBgYGxlc3Ncbi5leGFtcGxlIHtcblx0cGFkZGluZzogcmVtKCAxNXB4ICkgcmVtKCAxMnB4IClcbn1cbmBgYFxuKi9cbi8qXG4tLS1cbm5hbWU6IC5mb3IoIEBhcnJheSwgQGNvZGUgKVxuY2F0ZWdvcnk6IFNoYXJlZC9NaXhpbnNcbnRlbXBsYXRlOiBtaXhpblxudGFnOlxuIC0gbWl4aW5cbnBhcmFtZXRlcnM6XG4gLSBuYW1lOiBhcnJheVxuICAgZGVzY3JpcHRpb246IFRoZSBhcnJheSBvZiB2YWx1ZXMgdG8gbG9vcCBvdmVyXG4gICBvcHRpb25hbDogZmFsc2VcbiAtIG5hbWU6IGNvZGVcbiAgIGRlc2NyaXB0aW9uOiBUaGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIG9uIGV2ZXJ5IHZhbHVlLiBZb3UgY2FuIGFjY2VzcyB0aGUgaW5kZXggd2l0aCBgQGlgIGFuZCB0aGUgdmFsdWUgd2l0aCBgQHZhbHVlYFxuICAgb3B0aW9uYWw6IGZhbHNlXG4tLS1cblxuVGhpcyBtaXhpbiBhbGxvd3MgdG8gZXhlY3V0ZSBjb2RlIG92ZXIgYW4gYXJyYXlcblxuQW4gZXhhbXBsZSB1c2FnZSBsb29rcyBsaWtlIHRoaXM6XG5gYGBsZXNzXG5AY29sb3JzOiAjMWFiYzljLCAjMmVjYzcxLCAjMzQ5OGRiLCAjOWI1OWI2O1xuXG4uZm9yKEBjb2xvcnMsIHtcbiAgICAuY29sb3ItQHtpfSB7XG4gICAgICAgIGNvbG9yOiBAdmFsdWU7XG4gICAgfVxufSk7XG5gYGBcblxuVGhpcyBnZW5lcmF0ZXM6XG5gYGBjc3Ncbi5jb2xvci0xIHtcbiAgY29sb3I6ICMxYWJjOWM7XG59XG4uY29sb3ItMiB7XG4gIGNvbG9yOiAjMmVjYzcxO1xufVxuLmNvbG9yLTMge1xuICBjb2xvcjogIzM0OThkYjtcbn1cbi5jb2xvci00IHtcbiAgY29sb3I6ICM5YjU5YjY7XG59XG5gYGBcbiovXG4vKlxuLS0tXG5uYW1lOiBHbG9iYWwgUmVzZXRcbmNhdGVnb3J5OiBTaGFyZWRcbi0tLVxuXG5UaGUgbGVybmV0eiBjc3MgbGlicmFyeSBoYXMgYSBzZXQgb2YgcmVzZXQgc3R5bGUgdG8gaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIgb24gZXZlcnkgYnJvd3Nlci5cbkZ1cnRoZXJtb3JlIHRoaXMgcmVzZXQgc2V0cyBzb21lIGdsb2JhbCB2YXJpYWJsZXMgbGlrZTpcbiAqIGJvZHkgZm9udC1mYW1pbGllc1xuICogYm9keSBsaW5lLWhlaWdodFxuICogYm9keSB0ZXh0LXJlbmRlcmluZ1xuICogOnJvb3QgZm9udC1zaXplIGZvciBwcm9wZXIgcmVtIGNvbnZlcnNpb25cbiovXG5odG1sLFxuYm9keSxcbmRpdixcbnNwYW4sXG5vYmplY3QsXG5pZnJhbWUsXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYsXG5wLFxuYmxvY2txdW90ZSxcbnByZSxcbmFiYnIsXG5hZGRyZXNzLFxuY2l0ZSxcbmNvZGUsXG5kZWwsXG5kZm4sXG5lbSxcbmltZyxcbmlucyxcbmtiZCxcbnEsXG5zYW1wLFxuc21hbGwsXG5zdHJvbmcsXG5zdWIsXG5zdXAsXG52YXIsXG5iLFxuaSxcbmRsLFxuZHQsXG5kZCxcbm9sLFxudWwsXG5saSxcbmZpZWxkc2V0LFxuZm9ybSxcbmxhYmVsLFxubGVnZW5kLFxudGFibGUsXG5jYXB0aW9uLFxudGJvZHksXG50Zm9vdCxcbnRoZWFkLFxudHIsXG50aCxcbnRkLFxuYXJ0aWNsZSxcbmFzaWRlLFxuY2FudmFzLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tZW51LFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnksXG50aW1lLFxubWFyayxcbmF1ZGlvLFxudmlkZW8ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgb3V0bGluZTogMDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG46cm9vdCB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbmh0bWwge1xuICBmb250LXNpemU6IDEwMCU7XG59XG5ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgY29sb3I6ICMzRjNGNDA7XG4gIGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhJywgc2Fucy1zZXJpZjtcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbn1cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWVudSxcbm5hdixcbnNlY3Rpb24ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbnNlbGVjdCB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG50ZXh0YXJlYSB7XG4gIHdpZHRoOiAxMDAlO1xufVxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBmb250OiBpbmhlcml0O1xuICBtYXJnaW46IDA7XG59XG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbn1cbi8qXG4gKiBOb3JtYWxpemUgdGhlIGJlaGF2aW91ciBvZiBhbGwgYnJvd3NlcnNcbiAqXG4gKiBJbnN0ZWFkIG9mIHNldHRpbmcgYm94LXNpemluZyBmaXggb24gYWxsIGVsZW1lbnRzIHdlIG9ubHkgc2V0IGl0IG9uIHRoZSByb290IGVsZW1lbnRcbiAqIGFuZCB0ZWxsIGFsbCBlbGVtZW50cyB0byBpbmhlcml0IGl0J3MgcHJvcGVydHkgZnJvbSB0aGUgcGFyZW50XG4gKiBUaGF0IHdheSBpdCdzIHBvc3NpYmxlIHRvIG92ZXJ3cml0ZSB0aGUgYm94LXNpemluZyBhbnl3aGVyZSB3aGlsZSBrZWVwaW5nIHByb3BlciBpbmhlcml0YW5jZVxuICovXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbiosXG4qOmJlZm9yZSxcbio6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICNFQzY0NDk7XG59XG5hID4gKiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLypcbi0tLVxubmFtZTogQ29sb3JzXG5jYXRlZ29yeTogU2hhcmVkL1ZhcmlhYmxlc1xudGVtcGxhdGU6IGNvbG9yc1xudGFnOlxuIC0gdmFyaWFibGVzXG4gLSBjb2xvcnNcbmNvbG9yczpcbiAtIHZhcmlhYmxlOiBcIkB0ZXh0LWNvbG9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IHRleHQgY29sb3Igb24gdGhlIGJvZHlcIlxuICAgdmFsdWU6IFwiIzNGM0Y0MFwiXG4gLSB2YXJpYWJsZTogXCJAdGV4dC1pbnZlcnRlZC1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgZGVmYXVsdCBpbnZlcnRlZCB0ZXh0IGNvbG9yIG9uIHRoZSBib2R5XCJcbiAgIHZhbHVlOiBcIiNGRkZcIlxuIC0gdmFyaWFibGU6IFwiQGFjdGlvbi1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbWFpbiBhY3Rpb24gY29sb3IgdXNlZCBmb3IgbGlua3MgYW5kIGJ1dHRvbnNcIlxuICAgdmFsdWU6IFwiI0VDNjQ0OVwiXG4gLSB2YXJpYWJsZTogXCJAYm9keS1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbWFpbiBiYWNrZ3JvdW5kIGNvbG9yXCJcbiAgIHZhbHVlOiBcIiNGRkZcIlxuLS0tXG5cblRoZSBjb2xvciB2YXJpYWJsZXMgdGhhdCBhcmUgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWJyYXJ5LiBcbiovXG4vKlxuLS0tXG5uYW1lOiBHbG9iYWwgc2V0dGluZ3NcbmNhdGVnb3J5OiBTaGFyZWQvVmFyaWFibGVzXG50ZW1wbGF0ZTogdmFyaWFibGVzXG50YWc6XG4gLSB2YXJpYWJsZXNcbnZhcmlhYmxlczpcbiAtIG5hbWU6IFwiQHRleHQtbGluZS1oZWlnaHRcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGxpbmUgaGVpZ2h0IG9mIHRoZSBib2R5XCJcbiAgIGRlZmF1bHQ6IFwiMS41cmVtXCJcbiAtIG5hbWU6IFwiQGZvbnQtZmFtaWx5XCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBmb250LWZhbWlseSBvZiB0aGUgYm9keVwiXG4gICBkZWZhdWx0OiBcIidIZWx2ZXRpY2EnLCBzYW5zLXNlcmlmXCJcbiAtIG5hbWU6IFwiQHRleHQtcmVuZGVyaW5nXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSB0ZXh0LXJlbmRlcmluZyBvZiB0aGUgYm9keVwiXG4gICBkZWZhdWx0OiBcIm9wdGltaXplTGVnaWJpbGl0eVwiXG4gLSBuYW1lOiBcIkB0cmFuc2l0aW9uLWR1cmF0aW9uXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkdXJhdGlvbiBvZiB0aGUgc2xpZGUgdHJhbnNpdGlvbnNcIlxuICAgZGVmYXVsdDogXCIwLjRzXCJcbi0tLVxuXG5UaGVzZSB2YXJpYWJsZXMgc2V0dXBzIHNvbWUgZ2xvYmFsIHRleHQgZm9ybWF0dGluZyBhbmQgc3R5bGluZy5cbiovXG4vKlxuLS0tXG5uYW1lOiBTaXplIHNldHRpbmdzXG5jYXRlZ29yeTogU2hhcmVkL1ZhcmlhYmxlc1xudGVtcGxhdGU6IHZhcmlhYmxlc1xudGFnOlxuIC0gdmFyaWFibGVzXG4gLSBncmlkXG52YXJpYWJsZXM6XG4gLSBuYW1lOiBcIkBncmlkLWd1dHRlclwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgc3BhY2UgYmV0d2VlbiB0aGUgZ3JpZCBjaGlsZHJlblwiXG4gICBkZWZhdWx0OiBcInJlbSggMzBweCApXCJcbiAtIG5hbWU6IFwiQGdyaWQtYnJlYWstcG9pbnRzXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBzY3JlZW5zaXplIHdoZW4gdGhlIGdyaWQgc2hvdWxkIGJyZWFrLlwiXG4gICBkZWZhdWx0OiBcInJlbSg2MDBweCksIHJlbSgxMDI0cHgpXCJcbiAtIG5hbWU6IFwiQGdyaWQtYnJlYWstbGFiZWxzXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBicmVha3BvaW50IGxhYmVsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVudGllIGluIHRoZSBgQGdyaWQtYnJlYWstcG9pbnRzYCBsaXN0XCJcbiAgIGRlZmF1bHQ6IFwibWVkaXVtLCBsYXJnZVwiXG4gLSBuYW1lOiBcIkBwYWdlLXBhZGRpbmdcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIHBhZGRpbmcgZm9yIHRoZSAucGFnZS1mbHVpZCBjb21wb25lbnRcIlxuICAgZGVmYXVsdDogXCJyZW0oIDYwcHggKVwiXG4tLS1cblxuVGhlc2UgdmFyaWFibGVzIHNldHVwcyBzb21lIGdsb2JhbCBzaXplcyBtYWlubHkgZm9yIHRoZSBncmlkLlxuKi9cbi8qXG4tLS1cbm5hbWU6IC5idXR0b24tZGVmYXVsdFxuY2F0ZWdvcnk6IEJ1dHRvbnMvRGVmYXVsdFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBidXR0b25cbi0tLVxuXG5UaGUgZGVmYXVsdCBidXR0b24gc2V0cyBzb21lIGJhc2ljIHByb3BlcnRpZXMgc28gaXQgaXMgd29ya2luZyBhcyBhIGBidXR0b25gIG9yIGBhYCB0YWcuXG5cbkFuIGV4YW1wbGUgZm9yIGEgYnV0dG9uOlxuYGBgamFkZVxuYnV0dG9uLmJ1dHRvbi1kZWZhdWx0IE15IEJ1dHRvblxuYGBgXG5cbkFuIGV4YW1wbGUgZm9yIGEgbGluazpcbmBgYGphZGVcbmEuYnV0dG9uLWRlZmF1bHQgTXkgTGlua1xuYGBgXG4qL1xuLmJ1dHRvbi1kZWZhdWx0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG91dGxpbmU6IG5vbmU7XG59XG4vKlxuLS0tXG5uYW1lOiAuZ3JpZFxuY2F0ZWdvcnk6IExheW91dC9HcmlkXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHJlc3BvbnNpdmVcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIHNpbXBsZSBncmlkIHN5c3RlbSB0aGF0IHdyYXBzIGNoaWxkcmVuIG5vZGVzIGJhc2VkIG9uIHRoZSB2aWV3cG9ydCB3aWR0aC5cblxuIyMgU2ltcGxlIHNpZGUgYnkgc2lkZSByZW5kZXJpbmdcblxuVGhlIGVhc2llc3QgdXNlIGNhc2UgaXMgdG8gdXNlIHNpbXBsZSBgLmNvbC0xYCwgYC5jb2wtMS0yYCwgYC5jb2wtMS0zYCwgYC5jb2wtMS00YCBmb3IgYSBzaWRlLWJ5LXNpZGUgcmVuZGVyaW5nLlxuVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGFsbCBjaGlsZCBlbGVtZW50cyBvZiBhIGAuZ3JpZGAgaXMgZXF1aXZhbGVudCB0byBgLmNvbC0xYCwgc28gZm9yIG9ubHkgb25lIGNoaWxkIGl0IHdpbGwgc3BhbiB0aGUgZnVsbCB3aWR0aC5cblxuYGBgamFkZVxuZGl2LmdyaWRcblx0ZGl2LmNvbC0xLTIgXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNvbC0xLTJcblx0ZGl2LmNvbC0xLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sLTEtMlxuYGBgXG5gYGBqYWRlXG5kaXYuZ3JpZFxuXHRkaXYuY29sLTEtNCBcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sLTEtNFxuXHRkaXYuY29sLTMtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wtMy00XG5gYGBcblxuIyMgTGF5b3V0cyBvbiBkaWZmZXJlbnQgZGV2aWNlc1xuXG5UaGUgYnJlYWtwb2ludHMgZm9yIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgYXJlIHNwZWNpZmllZCBpbiB0aGUgYEBncmlkLWJyZWFrLXBvaW50c2AsIGBAZ3JpZC1icmVhay1sYWJlbHNgIHZhcmlhYmxlcy5cblRoZSBkZWZhdWx0IHZhbHVlcyBkZWZpbmUgdHdvIGJyZWFrcG9pbnRzIHdpdGggbGFiZWxzOiBgLm1lZGl1bS1YLVhgIGFuZCBgLmxhcmdlLVgtWGAuXG5TbyBhbiBleGFtcGxlIGdyaWQgd2l0aCB0d28gYnJlYWtwb2ludHMgbG9va3MgbGlrZSB0aGlzOlxuXG5gYGBqYWRlXG5kaXYuZ3JpZFxuXHRkaXYubWVkaXVtLTEtMi5sYXJnZS0xLTQueGxhcmdlLTEtMlxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wtMSBtZWRpdW0tMS0yIGxhcmdlLTEtNFxuXHRkaXYubWVkaXVtLTEtMi5sYXJnZS0xLTQueGxhcmdlLTEtMlxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wtMSBtZWRpdW0tMS0yIGxhcmdlLTEtNFxuXHRkaXYuY29sLTEtMi5tZWRpdW0tMS0yLmxhcmdlLTEtNC54bGFyZ2UtMS0yXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNvbC0xLTIgbWVkaXVtLTEtMiBsYXJnZS0xLTRcblx0ZGl2LmNvbC0xLTIubWVkaXVtLTEtMi5sYXJnZS0xLTQueGxhcmdlLTEtMlxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wtMS0yIG1lZGl1bS0xLTIgbGFyZ2UtMS00XG5gYGBcblxuKipOb3RlOioqIFRoZSBgY29sLTFgIGNsYXNzZXMgYXJlIG5vdCBwcmVzZW50IG9uIHRoZSBmaXJzdCB0d28gbm9kZXMsIHNpbmNlIHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLlxuXG5cbiMjIFJldmVyc2Ugb3JkZXJcblxuVG8gcmV2ZXJzZSB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGNvbHVtbnMgYXJlIGRpc3BsYXllZCwgeW91IGNhbiBhZGQgdGhlIG1vZGlmaWVyIGNsYXNzIGAuLXJldmVyc2VgIHRvIHlvdXIgZ3JpZC5cblRoZSBjb2x1bW5zIHdpbGwgYmUgaW4gRE9NIG9yZGVyIHdoZW4gdmlld3BvcnQgc3dpdGNoZXMgdG8gc21hbGwgbGF5b3V0LlxuXG5gYGBqYWRlXG5kaXYuZ3JpZC4tcmV2ZXJzZVxuXHRkaXYuY29sLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBGaXJzdCBjb2x1bW4gaW4gRE9NXG5cdGRpdi5jb2wtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIFNlY29uZCBjb2x1bW4gaW4gRE9NXG5cdGRpdi5jb2wtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIFRoaXJkIGNvbHVtbiBpbiBET01cblx0ZGl2LmNvbC0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgRm91cnRoIGNvbHVtbiBpbiBET01cbmBgYFxuIyMgTm8gZ3V0dGVyXG5cbklmIHlvdSBkb250IG5lZWQgYSBzcGFjaW5nL2d1dHRlciBiZXR3ZWVuIHRoZSBncmlkIGNvbHVtbnMgeW91IGNhbiB1c2UgdGhlIG1vZGlmaWVyIGAuLW5vZ3V0dGVyYC5cblxuYGBgamFkZVxuZGl2LmdyaWQuLW5vZ3V0dGVyXG5cdGRpdi5jb2wtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIEZpcnN0IGNvbHVtbiBpbiBET01cblx0ZGl2LmNvbC0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgU2Vjb25kIGNvbHVtbiBpbiBET01cblx0ZGl2LmNvbC0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgVGhpcmQgY29sdW1uIGluIERPTVxuXHRkaXYuY29sLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBGb3VydGggY29sdW1uIGluIERPTVxuYGBgXG4qL1xuLmdyaWQge1xuICBtYXJnaW46IDAgLTAuOTM3NXJlbTtcbiAgLyoqXG5cdCAqIEdlbmVyYXRlIGFsbCBtZWRpYSBicmVha3BvaW50cyBiYXNlZCBvbiB0aGUgQGdyaWQtYnJlYWstcG9pbnRzLCBAZ3JpZC1icmVhay1sYWJlbHMgdmFyaWFibGVzLlxuXHQgKi9cbn1cbi5ncmlkOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogdGFibGU7XG4gIGNsZWFyOiBib3RoO1xufVxuLmdyaWQgPiAqIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAgMC45Mzc1cmVtO1xufVxuLmdyaWQuLXJldmVyc2UgPiAqIHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuLmdyaWQuLW5vZ3V0dGVyIHtcbiAgbWFyZ2luOiAwO1xufVxuLmdyaWQuLW5vZ3V0dGVyID4gKiB7XG4gIHBhZGRpbmc6IDA7XG59XG4uZ3JpZCAuY29sLTEge1xuICB3aWR0aDogMTAwJTtcbn1cbi5ncmlkIC5jb2wtMS0yIHtcbiAgd2lkdGg6IDUwJTtcbn1cbi5ncmlkIC5jb2wtMS0zIHtcbiAgd2lkdGg6IDMzLjMzMzMzMzMzJTtcbn1cbi5ncmlkIC5jb2wtMi0zIHtcbiAgd2lkdGg6IDY2LjY2NjY2NjY3JTtcbn1cbi5ncmlkIC5jb2wtMS00IHtcbiAgd2lkdGg6IDI1JTtcbn1cbi5ncmlkIC5jb2wtMy00IHtcbiAgd2lkdGg6IDc1JTtcbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDM3LjVyZW0pIHtcbiAgLmdyaWQgPiAubWVkaXVtLTEge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG4gIC5ncmlkID4gLm1lZGl1bS0xLTIge1xuICAgIHdpZHRoOiA1MCU7XG4gIH1cbiAgLmdyaWQgPiAubWVkaXVtLTEtMyB7XG4gICAgd2lkdGg6IDMzLjMzMzMzMzMzJTtcbiAgfVxuICAuZ3JpZCA+IC5tZWRpdW0tMi0zIHtcbiAgICB3aWR0aDogNjYuNjY2NjY2NjclO1xuICB9XG4gIC5ncmlkID4gLm1lZGl1bS0xLTQge1xuICAgIHdpZHRoOiAyNSU7XG4gIH1cbiAgLmdyaWQgPiAubWVkaXVtLTMtNCB7XG4gICAgd2lkdGg6IDc1JTtcbiAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjRyZW0pIHtcbiAgLmdyaWQgPiAubGFyZ2UtMSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmdyaWQgPiAubGFyZ2UtMS0yIHtcbiAgICB3aWR0aDogNTAlO1xuICB9XG4gIC5ncmlkID4gLmxhcmdlLTEtMyB7XG4gICAgd2lkdGg6IDMzLjMzMzMzMzMzJTtcbiAgfVxuICAuZ3JpZCA+IC5sYXJnZS0yLTMge1xuICAgIHdpZHRoOiA2Ni42NjY2NjY2NyU7XG4gIH1cbiAgLmdyaWQgPiAubGFyZ2UtMS00IHtcbiAgICB3aWR0aDogMjUlO1xuICB9XG4gIC5ncmlkID4gLmxhcmdlLTMtNCB7XG4gICAgd2lkdGg6IDc1JTtcbiAgfVxufVxuLypcbi0tLVxubmFtZTogaW1nLnJlc3BvbnNpdmVcbmNhdGVnb3J5OiBMYXlvdXQvSW1hZ2VcbnRhZzpcbiAtIHJlc3BvbnNpdmVcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIGNsYXNzIG1ha2VzIHRoZSBpbWFnZSBzY2FsaW5nIHRvIGl0cyBtYXggd2lkdGguXG5cbmBgYGphZGVcbmltZy5yZXNwb25zaXZlKHNyYz0naHR0cDovL3d3dy5ieXVpLmVkdS9pbWFnZXMvYWdyaWN1bHR1cmUtbGlmZS1zY2llbmNlcy9mbG93ZXIuanBnJylcbmBgYFxuKi9cbmltZy5yZXNwb25zaXZlIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG59XG4vKlxuLS0tXG5uYW1lOiAubWVkaWEtcmVzcG9uc2l2ZVxuY2F0ZWdvcnk6IExheW91dC9NZWRpYVxudGFnOlxuIC0gcmVzcG9uc2l2ZVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbmAubWVkaWEtcmVzcG9uc2l2ZWAgLSBUaGlzIG1ha2VzIGEgdGhlIGAubWVkaWEtcmVzcG9uc2l2ZWAgZGl2IGEgY29udGFpbmVyIGZvciBhbnkgbWVkaWEgZWxlbWVudCAoaWZyYW1lLCB2aWRlbywgLi4uICkgdGhhdCByZXNwb25zaXZlIHNjYWxlcyB3aXRoIGEgZml4IHJhdGlvLlxuVGhlIG1lZGlhIGVsZW1lbnQgKCBjaGlsZCApIG5lZWRzIHRoZSBjbGFzcyBgLnN0cmV0Y2hgIHRvIGZ1bGx5IGZpbGwgb3V0IHRoZSBwYXJlbnRzIHNpemUuXG5cblRoZSBgLm1lZGlhLXJlc3BvbnNpdmVgIGNvbXBvbmVudCBoYXMgdG8gcHJlZGVmaW5lZCBtb2RpZmllcnM6IGAuLW1lZGlhLTQtM2AsIGAuLW1lZGlhLTE2LTlgIHRoYXQgZGVmaW5lIGEgZml4IHJhdGlvLlxuXG5gYGBqYWRlXG5kaXYubWVkaWEtcmVzcG9uc2l2ZS4tbWVkaWEtMTYtOVxuXHRpZnJhbWUuc3RyZXRjaChzcmM9XCJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVRDZDZQZnhPeTBZXCIpXG5gYGBcbiovXG4ubWVkaWEtcmVzcG9uc2l2ZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmctYm90dG9tOiA1MCU7XG59XG4ubWVkaWEtcmVzcG9uc2l2ZS4tbWVkaWEtNC0zIHtcbiAgcGFkZGluZy1ib3R0b206IDc1JTtcbn1cbi5tZWRpYS1yZXNwb25zaXZlLi1tZWRpYS0xNi05IHtcbiAgcGFkZGluZy1ib3R0b206IDU2LjI2JTtcbn1cbi8qXG4tLS1cbm5hbWU6IC5wYWdlLWZsdWlkXG5jYXRlZ29yeTogUGFnZS9GbHVpZFxudGFnOlxuIC0gcmVzcG9uc2l2ZVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbmAucGFnZS1mbHVpZGAgY2VudGVycyB0aGUgcGFnZSBjb250ZW50IGFuZCBhZGRzIGEgcGFkZGluZyBzbyB0aGUgcGFnZSBzdGlja3Mgbm90IHRvIHRoZSBicm93c2VyIHZpZXdwb3J0LlxuRnVydGhlcm1vcmUgaXQgaGFzIGEgbWF4LXdpZHRoIGJhc2VkIG9uIHRoZSBsYXN0IGBAZ3JpZC1icmVhay1wb2ludHNgIHZhbHVlLlxuXG5gYGBqYWRlXG5kaXYucGFnZS1mbHVpZFxuXHRkaXYuYWlnaXMtZGVidWcgU29tZSBwYWdlIGNvbnRlbnRcbmBgYFxuXG4jIyBNYXgtd2lkdGggcGFnZVxuXG5UbyBicm9hZGVuIHRoZSB3aWR0aCBvZiB0aGUgcGFnZSB5b3UgY2FuIGFkZCB0aGUgbW9kaWZpZXIgYC4tdW5saW1pdGVkYC4gVGhzaSB3aWxsIHNwYW4gdGhlIHBhZ2UgdG8gdGhlIGZ1bGwgd2lkdGguXG5cbmBgYGphZGVcbmRpdi5wYWdlLWZsdWlkLi11bmxpbWl0ZWRcblx0ZGl2LmFpZ2lzLWRlYnVnIFNvbWUgcGFnZSBjb250ZW50XG5gYGBcbiovXG4ucGFnZS1mbHVpZCB7XG4gIG1heC13aWR0aDogNzEuNXJlbTtcbiAgbWFyZ2luOiBhdXRvO1xuICBwYWRkaW5nOiAwIDMuNzVyZW07XG59XG4ucGFnZS1mbHVpZC4tdW5saW1pdGVkIHtcbiAgbWF4LXdpZHRoOiBub25lO1xufVxuLypcbi0tLVxubmFtZTogLnJvd1xuY2F0ZWdvcnk6IExheW91dC9Sb3dcbnRhZzpcbiAtIGNvbXBvbmVudFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cblRoaXMgc3R5bGluZyBhbGxvdyB0byBwbGFjZSBjb250YWluZXJzIGluIGEgcm93LiBUaGV5IHdpbGwgKipub3QqKiBicmVhayBhcyB0aGUgYC5ncmlkYCBidXQgcmVzaXplIHRoZW0gYWNjb3JkaW5nbHkuXG5Tb21lIGJlbmVmaXRzIG9mIHRoZSBgLnJvd2AgYXBwcm9hY2ggaXMgdGhlIGVhc3kgdmVydGljYWwgY2VudGVyaW5nIGFuZCB0aGUgdXNhZ2Ugb2YgdGhlIGAuY29sLWF1dG9gIGNsYXNzLlxuXG4jIyBCYXNpYyByb3cgd2l0aCB2ZXJ0aWNhbCBjZW50ZXJpbmdcblxuWW91IGNhbiB1c2UgdGhlIHNpemluZyBjbGFzc2VzIGAuY29sLVgtWGAgdG8gZGVmaW5lIHRoZSB3aWR0aCBvZiBhIGNvbHVtbiBhcyB0aGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MuIFxuXG5gYGBqYWRlXG5kaXYucm93XG5cdGRpdi5jb2wtMS00LmFpZ2lzLWRlYnVnIGNvbC0xLTQgd2l0aCBhIGxvdCBvZiB0ZXh0IHRoYXQgc3BhbnMgdGhlIGNvbHVtbi5cblx0ZGl2LmNvbC0zLTQuYWlnaXMtZGVidWcgY29sLTMtNCBjb250ZW50LlxuYGBgXG5cbiMjIEZpeGVkIHJvd1xuXG5UaGVyZSBpcyBhIGAuLWZpeGVkYCBtb2RpZmllciB3aGVyZSBlYWNoIGNvbHVtbiBoYXMgdGhlIHNhbWUgd2lkdGguXG5cbmBgYGphZGVcbmRpdi5yb3cuLWZpeGVkXG5cdGRpdi5haWdpcy1kZWJ1ZyBldmVubHkgc3ByZWFkb3V0IGNvbHVtblxuXHRkaXYuYWlnaXMtZGVidWcgZXZlbmx5IHNwcmVhZG91dCBjb2x1bW4gd2l0aCBtb3JlIGNvbnRlbnRcblx0ZGl2LmFpZ2lzLWRlYnVnIGV2ZW5seSBzcHJlYWRvdXQgY29sdW1uXG5cdGRpdi5haWdpcy1kZWJ1ZyBldmVubHkgc3ByZWFkb3V0IGNvbHVtbiB3aXRoIG11Y2ggbW9yZSBjb250ZW50IHRoYW4gdGhlIG90aGVyXG5cdGRpdi5haWdpcy1kZWJ1Zy52Y2VudGVyIGV2ZW5seSBzcHJlYWRvdXQgY29sdW1uIHdpdGggLnZjZW50ZXJcbmBgYFxuXG5cbiMjIEF1dG8gc2l6ZWQgY29sdW1uIHdpZHRoIGFuZCB2Y2VudGVyXG5cblRoZXJlIGlzIGEgc3BlY2lhbCBgLmNvbC1hdXRvYCBjbGFzcyB0aGF0IHJlc2l6ZXMgdGhlIGNvbHVtbiB0byB0aGUgc2l6ZSBvZiBpdHMgY29udGVudC5cblRoaXMgaXMgdXNlZnVsbCBmb3IgZXhhbXBsZSBpZiB5b3UgaGF2ZSBhIGZpeGVkIHNpemUgbG9nbyBhbmQgdGhlIHJlc3Qgb2YgdGhlIGhlYWRlciBoYXMgdG8gcmVzaXplLlxuXG5gYGBqYWRlXG5kaXYucm93Li1jZW50ZXJcblx0ZGl2LmNvbC1hdXRvLmFpZ2lzLWRlYnVnXG5cdFx0aW1nKHNyYz1cImh0dHA6Ly9wbGFjZWhvbGQuaXQvMTAweDEwMFwiKVxuXHRkaXYuY29sLTEuYWlnaXMtZGVidWcgVGhlIHJlc3Rcblx0ZGl2LmNvbC1hdXRvLmFpZ2lzLWRlYnVnXG5cdFx0aW1nKHNyYz1cImh0dHA6Ly9wbGFjZWhvbGQuaXQvMjAweDEwMFwiKVxuYGBgXG4qL1xuLnJvdyB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICB3aWR0aDogMTAwJTtcbn1cbi5yb3cuLWZpeGVkIHtcbiAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cbi5yb3cuLWNlbnRlciA+ICoge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLnJvdy4tYm90dG9tID4gKiB7XG4gIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG59XG4ucm93Li1wYWRkZWQgPiAqICsgKiB7XG4gIHBhZGRpbmctbGVmdDogMS44NzVyZW07XG59XG4ucm93ID4gKiB7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG59XG4ucm93ID4gKi5jb2wtMSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnJvdyA+ICouY29sLTEtMixcbi5yb3cgPiAqLmNvbC0yLTQge1xuICB3aWR0aDogNTAlO1xufVxuLnJvdyA+ICouY29sLTEtMyB7XG4gIHdpZHRoOiAzMy4zMzMzMzMzMyU7XG59XG4ucm93ID4gKi5jb2wtMi0zIHtcbiAgd2lkdGg6IDY2LjY2NjY2NjY3JTtcbn1cbi5yb3cgPiAqLmNvbC0xLTQge1xuICB3aWR0aDogMjUlO1xufVxuLnJvdyA+ICouY29sLTMtNCB7XG4gIHdpZHRoOiA3NSU7XG59XG4ucm93ID4gKi5jb2wtYXV0byB7XG4gIHdpZHRoOiBhdXRvO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLmJ0biB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBjb2xvcjogYmxhY2s7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNFMEUwRTA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHBhZGRpbmc6IDEycHggMTZweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDEycHg7XG4gIGxldHRlci1zcGFjaW5nOiAxLjVweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbWFyZ2luOiAwO1xuICBib3gtc2hhZG93OiAycHggMnB4IDNweCAwIHJnYmEoMTg3LCAxODcsIDE4NywgMC4zKTtcbn1cbi5idG46aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwNjY5OTtcbiAgY29sb3I6ICMwMDY2OTk7XG59XG4uYnRuOmhvdmVyLmJ0bi0taWNvbiAuaWNvbiB7XG4gIGJvcmRlci1jb2xvcjogIzAwNjY5OTtcbn1cbi5idG46Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwNjY5OTtcbiAgY29sb3I6ICMwMDY2OTk7XG4gIHBhZGRpbmctYm90dG9tOiAxMXB4O1xufVxuLmJ0bi5hY3RpdmUge1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzAwMjIzMztcbiAgcGFkZGluZy1ib3R0b206IDExcHg7XG59XG4uYnRuLmJ0bi0tbWVudS1pdGVtIHtcbiAgbWFyZ2luOiAwO1xuICBib3gtc2hhZG93OiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLmJ0bi5idG4tLW1lbnUtaXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNFMEUwRTA7XG59XG4uYnRuLmhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5odG1sLFxuYm9keSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xufVxuI2tjLWxvY2FsZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uaGVhZGVyLWxvZ28ge1xuICB3aWR0aDogMTY1cHg7XG4gIG1hcmdpbjogMTBweCAyNXB4O1xufVxuYm9keSA+IC5jb250YWluZXIge1xuICBmbGV4OiAxO1xufVxuYm9keSA+IC5jb250YWluZXIubG9naW4ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiA1NTBweDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBtYXgtd2lkdGg6IGluaXRpYWw7XG4gIHotaW5kZXg6IDEwO1xufVxuLmxvZ2luLXRpdGxlIHtcbiAgcGFkZGluZzogMzVweCAwIDAgNDVweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiA0OHB4O1xuICBsaW5lLWhlaWdodDogNTVweDtcbn1cbi5sb2dpbi1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogMjVweDtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogNDUlO1xuICBwYWRkaW5nOiAyNXB4IDUwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5AbWVkaWEgKG1heC13aWR0aDogNzU2cHgpIHtcbiAgLmxvZ2luLWNvbnRhaW5lciB7XG4gICAgbGVmdDogNSU7XG4gICAgd2lkdGg6IDkwJTtcbiAgfVxufVxuLmxvZ2luLWNvbnRhaW5lciBoMyB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG4ubG9naW4tY29udGFpbmVyIHAge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuLmxvZ2luLWNvbnRhaW5lciAuY2hlY2tib3ggaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tbGVmdDogMHB4O1xuICB3aWR0aDogYXV0bztcbn1cbi5sb2dpbi1jb250YWluZXIgLmNoZWNrYm94IGxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgcGFkZGluZy1sZWZ0OiAwcHg7XG59XG4ubG9naW4tY29udGFpbmVyIC5jaGVja2JveCBsYWJlbCBpbnB1dCB7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xufVxuLmxvZ2luLWNvbnRhaW5lciAua2MtY29udGFpbmVyIHtcbiAgbWFyZ2luLXRvcDogMTVweDtcbn1cbi5sb2dpbi1jb250YWluZXIgLmtjLWNvbnRhaW5lciAuYWxlcnQge1xuICBtYXJnaW46IDEwcHggMDtcbn1cbi5sb2dpbi1jb250YWluZXIgLmtjLWNvbnRhaW5lciAuYWxlcnQuYWxlcnQtZXJyb3Ige1xuICBjb2xvcjogI2UyMDAxYTtcbn1cbi5sb2dpbi1jb250YWluZXIgLmtjLWlucHV0LXdyYXBwZXIge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZWVlO1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuLmxvZ2luLWNvbnRhaW5lciAua2MtaW5wdXQtd3JhcHBlci5yb3cge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuLmxvZ2luLWNvbnRhaW5lciAua2MtaW5wdXQtd3JhcHBlciBpbnB1dCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgaGVpZ2h0OiA0OHB4O1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG4ubG9naW4tY29udGFpbmVyIC5pbnB1dC1pY29uIHtcbiAgd2lkdGg6IDQ1cHg7XG4gIGhlaWdodDogNDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcbiAgcGFkZGluZzogMTVweDtcbn1cbi5sb2dpbi1jb250YWluZXIgLmlucHV0LWljb24gLmljb24ge1xuICB3aWR0aDogMTRweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICBmaWxsOiBncmV5O1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufVxuLmxvZ2luLWNvbnRhaW5lciBpbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLmxvZ2luLWNvbnRhaW5lciAucmUtbG9naW4ge1xuICBwYWRkaW5nOiAyMHB4IDA7XG59XG4ubG9naW4tY29udGFpbmVyIC5zb2NpYWwtbG9naW4ge1xuICBtYXJnaW4tdG9wOiAyNXB4O1xufVxuLmxvZ2luLWNvbnRhaW5lciAuc29jaWFsLWxvZ2luIC56b2NpYWwge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIGZsb2F0OiBsZWZ0O1xufVxuLmxvZ2luLWNvbnRhaW5lciAuc29jaWFsLWxvZ2luIHVsIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuLmxvZ2luLWNvbnRhaW5lciAuc29jaWFsLWxvZ2luID4gdWwgPiBsaSA+IGEgPiAqIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmxvZ2luLWZvb3RlciB7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjUyNjJBO1xuICBjb2xvcjogIzRhNGE0YTtcbn1cbi5sb2dpbi1mb290ZXIgLmxvZ28tY29udGFpbmVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmxvZ2luLWZvb3RlciAubG9nby1jb250YWluZXIgLmxvZ28ge1xuICBtYXJnaW46IDEwcHg7XG59XG4ubG9naW4tZm9vdGVyIHAge1xuICBsaW5lLWhlaWdodDogMS41cmVtO1xufVxuLmtjLWxvY2FsZS5tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjBweDtcbiAgdG9wOiAyMHB4O1xufVxuLm1lbnUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubWVudSAubWVudS1pdGVtcyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMDAlO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxMDAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBkaXNwbGF5OiBub25lO1xufVxuLm1lbnUgLm1lbnUtaXRlbXMgbGkge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0UwRTBFMDtcbn1cbi5tZW51IC5tZW51LWl0ZW1zIGxpOmxhc3Qge1xuICBib3JkZXI6IG5vbmU7XG59XG4ubWVudS5vcGVuIC5tZW51LWl0ZW1zIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uY29udGFpbmVyIHtcbiAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDBweDtcbn1cbiIsIi8qXG4tLS1cbm5hbWU6IC5zdHJldGNoXG5jYXRlZ29yeTogU2hhcmVkL0hlbHBlcnNcbnRhZzpcbiAtIGhlbHBlcnNcbi0tLVxuXG5gLnN0cmV0Y2hgIERlZmluZSBhbiBlbGVtZW50IHdoaWNoIHN0cmV0Y2hlcyB0byB0aGUgc2l6ZSBvZiBpdHMgcGFyZW50XG5cbmBgYGh0bWxcbjxkaXYgY2xhc3M9XCJyZWxcIiBzdHlsZT1cImhlaWdodDogNTVweDtcIj5cbiAgIDxkaXYgY2xhc3M9XCJzdHJldGNoIHN0eWxlZ3VpZGUtZ3JpZC11bml0XCI+IEknbSBzdHJldGNoZWQgdG8gdGhlIHNpemUgb2YgbXkgcGFyZW50PC9kaXY+XG48L2Rpdj5cbmBgYFxuKi9cbi5zdHJldGNoIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG59XG5cblxuLypcbi0tLVxubmFtZTogLmFic1xuY2F0ZWdvcnk6IFNoYXJlZC9IZWxwZXJzXG50YWc6XG4gLSBoZWxwZXJzXG4tLS1cblxuYC5hYnNgIFNldCB0aGUgZWxlbWVudCBwb3NpdGlvbiB0byBhYnNvbHV0ZVxuKi9cbi5hYnMge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cblxuLypcbi0tLVxubmFtZTogLnJlbFxuY2F0ZWdvcnk6IFNoYXJlZC9IZWxwZXJzXG50YWc6XG4gLSBoZWxwZXJzXG4tLS1cblxuYC5yZWxgIFNldCB0aGUgZWxlbWVudCBwb3NpdGlvbiB0byByZWxhdGl2ZVxuKi9cbi5yZWwge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cblxuLypcbi0tLVxubmFtZTogLnZjZW50ZXJcbmNhdGVnb3J5OiBTaGFyZWQvSGVscGVyc1xudGFnOlxuIC0gaGVscGVyc1xuLS0tXG5cbmAudmNlbnRlcmAgU2V0cyB2ZXJ0aWNhbC1hbGlnbiB0byBtaWRkbGVcbiovXG4udmNlbnRlciB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cblxuLypcbi0tLVxubmFtZTogLmhjZW50ZXJcbmNhdGVnb3J5OiBTaGFyZWQvSGVscGVyc1xudGFnOlxuIC0gaGVscGVyc1xuLS0tXG5cbmAuaGNlbnRlcmAgU2V0cyB0ZXh0LWFsaWduIHRvIGNlbnRlclxuKi9cbi5oY2VudGVyIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5cbi8qXG4tLS1cbm5hbWU6IC5mbG9hdGxlZnRcbmNhdGVnb3J5OiBTaGFyZWQvSGVscGVyc1xudGFnOlxuIC0gaGVscGVyc1xuLS0tXG5cbmAuZmxvYXRsZWZ0YCBTZXRzIGZsb2F0IHRvIGxlZnRcbiovXG4uZmxvYXRsZWZ0IHtcblx0ZmxvYXQ6IGxlZnQ7XG59XG5cbi8qXG4tLS1cbm5hbWU6IC5mbG9hdHJpZ2h0XG5jYXRlZ29yeTogU2hhcmVkL0hlbHBlcnNcbnRhZzpcbiAtIGhlbHBlcnNcbi0tLVxuXG5gLmZsb2F0cmlnaHRgIFNldHMgZmxvYXQgdG8gcmlnaHRcbiovXG4uZmxvYXRyaWdodCB7XG5cdGZsb2F0OiByaWdodDtcbn1cblxuLypcbi0tLVxubmFtZTogLmhpZGRlblxuY2F0ZWdvcnk6IFNoYXJlZC9IZWxwZXJzXG50YWc6XG4gLSBoZWxwZXJzXG4tLS1cblxuYC5oaWRkZW5gIFNldHMgZGlzcGxheSB0byBub25lLlxuKi9cbi5oaWRkZW4ge1xuXHRkaXNwbGF5OiBub25lO1xufSIsIi8qXG4tLS1cbm5hbWU6IEdsb2JhbCBSZXNldFxuY2F0ZWdvcnk6IFNoYXJlZFxuLS0tXG5cblRoZSBsZXJuZXR6IGNzcyBsaWJyYXJ5IGhhcyBhIHNldCBvZiByZXNldCBzdHlsZSB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW91ciBvbiBldmVyeSBicm93c2VyLlxuRnVydGhlcm1vcmUgdGhpcyByZXNldCBzZXRzIHNvbWUgZ2xvYmFsIHZhcmlhYmxlcyBsaWtlOlxuICogYm9keSBmb250LWZhbWlsaWVzXG4gKiBib2R5IGxpbmUtaGVpZ2h0XG4gKiBib2R5IHRleHQtcmVuZGVyaW5nXG4gKiA6cm9vdCBmb250LXNpemUgZm9yIHByb3BlciByZW0gY29udmVyc2lvblxuKi9cblxuXG5cbmh0bWwsIGJvZHksIGRpdiwgc3Bhbiwgb2JqZWN0LCBpZnJhbWUsXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG5hYmJyLCBhZGRyZXNzLCBjaXRlLCBjb2RlLFxuZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzYW1wLFxuc21hbGwsIHN0cm9uZywgc3ViLCBzdXAsIHZhcixcbmIsIGksXG5kbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG50YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbmFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSxcbmZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgc2VjdGlvbiwgc3VtbWFyeSxcbnRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG5cdG1hcmdpbjowO1xuXHRwYWRkaW5nOjA7XG5cdGJvcmRlcjowO1xuXHRvdXRsaW5lOjA7XG5cdGZvbnQtc2l6ZTppbmhlcml0O1xuXHR2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtcbn1cblxuOnJvb3Qge1xuXHRmb250LXNpemU6IDE2cHg7XG59XG5cbmh0bWwge1xuXHRmb250LXNpemU6IDEwMCU7XG59XG5cbmJvZHkge1xuXHRsaW5lLWhlaWdodDogQHRleHQtbGluZS1oZWlnaHQ7XG5cdGNvbG9yOiBAdGV4dC1jb2xvcjtcblx0Zm9udC1mYW1pbHk6IEBmb250LWZhbWlseTtcblx0dGV4dC1yZW5kZXJpbmc6IEB0ZXh0LXJlbmRlcmluZztcblx0YmFja2dyb3VuZC1jb2xvcjogQGJvZHktY29sb3I7XG59XG5cbmFydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9uLGZpZ3VyZSxcbmZvb3RlcixoZWFkZXIsaGdyb3VwLG1lbnUsbmF2LHNlY3Rpb24ge1xuXHRkaXNwbGF5OmJsb2NrO1xufVxuXG5cbnNlbGVjdCB7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbn1cblxudGV4dGFyZWEge1xuXHR3aWR0aDoxMDAlO1xufVxuXG50YWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcblx0Ym9yZGVyLXNwYWNpbmc6MDtcbn1cblxuLy9cbi8vIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC5cbi8vICAgIEtub3duIGlzc3VlOiBhZmZlY3RzIGNvbG9yIG9mIGRpc2FibGVkIGVsZW1lbnRzLlxuLy8gMi4gQ29ycmVjdCBmb250IHByb3BlcnRpZXMgbm90IGJlaW5nIGluaGVyaXRlZC5cbi8vIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuLy9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7IC8vIDFcbiAgZm9udDogaW5oZXJpdDsgLy8gMlxuICBtYXJnaW46IDA7IC8vIDNcbn1cblxuXG4vL1xuLy8gUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLlxuLy9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cblxuXG4vKlxuICogTm9ybWFsaXplIHRoZSBiZWhhdmlvdXIgb2YgYWxsIGJyb3dzZXJzXG4gKlxuICogSW5zdGVhZCBvZiBzZXR0aW5nIGJveC1zaXppbmcgZml4IG9uIGFsbCBlbGVtZW50cyB3ZSBvbmx5IHNldCBpdCBvbiB0aGUgcm9vdCBlbGVtZW50XG4gKiBhbmQgdGVsbCBhbGwgZWxlbWVudHMgdG8gaW5oZXJpdCBpdCdzIHByb3BlcnR5IGZyb20gdGhlIHBhcmVudFxuICogVGhhdCB3YXkgaXQncyBwb3NzaWJsZSB0byBvdmVyd3JpdGUgdGhlIGJveC1zaXppbmcgYW55d2hlcmUgd2hpbGUga2VlcGluZyBwcm9wZXIgaW5oZXJpdGFuY2VcbiAqL1xuaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG59XG5cbmEge1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdGNvbG9yOiBAYWN0aW9uLWNvbG9yO1xuXG5cdD4gKiB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cbn1cbiIsIi8qXG4tLS1cbm5hbWU6IC5idXR0b24tZGVmYXVsdFxuY2F0ZWdvcnk6IEJ1dHRvbnMvRGVmYXVsdFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBidXR0b25cbi0tLVxuXG5UaGUgZGVmYXVsdCBidXR0b24gc2V0cyBzb21lIGJhc2ljIHByb3BlcnRpZXMgc28gaXQgaXMgd29ya2luZyBhcyBhIGBidXR0b25gIG9yIGBhYCB0YWcuXG5cbkFuIGV4YW1wbGUgZm9yIGEgYnV0dG9uOlxuYGBgamFkZVxuYnV0dG9uLmJ1dHRvbi1kZWZhdWx0IE15IEJ1dHRvblxuYGBgXG5cbkFuIGV4YW1wbGUgZm9yIGEgbGluazpcbmBgYGphZGVcbmEuYnV0dG9uLWRlZmF1bHQgTXkgTGlua1xuYGBgXG4qL1xuLmJ1dHRvbi1kZWZhdWx0IHtcblx0YXBwZWFyYW5jZTogbm9uZTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdGJvcmRlcjogbm9uZTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdG91dGxpbmU6IG5vbmU7XG59IiwiLypcbi0tLVxubmFtZTogLmdyaWRcbmNhdGVnb3J5OiBMYXlvdXQvR3JpZFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSByZXNwb25zaXZlXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBzaW1wbGUgZ3JpZCBzeXN0ZW0gdGhhdCB3cmFwcyBjaGlsZHJlbiBub2RlcyBiYXNlZCBvbiB0aGUgdmlld3BvcnQgd2lkdGguXG5cbiMjIFNpbXBsZSBzaWRlIGJ5IHNpZGUgcmVuZGVyaW5nXG5cblRoZSBlYXNpZXN0IHVzZSBjYXNlIGlzIHRvIHVzZSBzaW1wbGUgYC5jb2wtMWAsIGAuY29sLTEtMmAsIGAuY29sLTEtM2AsIGAuY29sLTEtNGAgZm9yIGEgc2lkZS1ieS1zaWRlIHJlbmRlcmluZy5cblRoZSBkZWZhdWx0IHZhbHVlIGZvciBhbGwgY2hpbGQgZWxlbWVudHMgb2YgYSBgLmdyaWRgIGlzIGVxdWl2YWxlbnQgdG8gYC5jb2wtMWAsIHNvIGZvciBvbmx5IG9uZSBjaGlsZCBpdCB3aWxsIHNwYW4gdGhlIGZ1bGwgd2lkdGguXG5cbmBgYGphZGVcbmRpdi5ncmlkXG5cdGRpdi5jb2wtMS0yIFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wtMS0yXG5cdGRpdi5jb2wtMS0yXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNvbC0xLTJcbmBgYFxuYGBgamFkZVxuZGl2LmdyaWRcblx0ZGl2LmNvbC0xLTQgXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNvbC0xLTRcblx0ZGl2LmNvbC0zLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sLTMtNFxuYGBgXG5cbiMjIExheW91dHMgb24gZGlmZmVyZW50IGRldmljZXNcblxuVGhlIGJyZWFrcG9pbnRzIGZvciBkaWZmZXJlbnQgc2NyZWVuIHNpemVzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIGBAZ3JpZC1icmVhay1wb2ludHNgLCBgQGdyaWQtYnJlYWstbGFiZWxzYCB2YXJpYWJsZXMuXG5UaGUgZGVmYXVsdCB2YWx1ZXMgZGVmaW5lIHR3byBicmVha3BvaW50cyB3aXRoIGxhYmVsczogYC5tZWRpdW0tWC1YYCBhbmQgYC5sYXJnZS1YLVhgLlxuU28gYW4gZXhhbXBsZSBncmlkIHdpdGggdHdvIGJyZWFrcG9pbnRzIGxvb2tzIGxpa2UgdGhpczpcblxuYGBgamFkZVxuZGl2LmdyaWRcblx0ZGl2Lm1lZGl1bS0xLTIubGFyZ2UtMS00LnhsYXJnZS0xLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sLTEgbWVkaXVtLTEtMiBsYXJnZS0xLTRcblx0ZGl2Lm1lZGl1bS0xLTIubGFyZ2UtMS00LnhsYXJnZS0xLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sLTEgbWVkaXVtLTEtMiBsYXJnZS0xLTRcblx0ZGl2LmNvbC0xLTIubWVkaXVtLTEtMi5sYXJnZS0xLTQueGxhcmdlLTEtMlxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wtMS0yIG1lZGl1bS0xLTIgbGFyZ2UtMS00XG5cdGRpdi5jb2wtMS0yLm1lZGl1bS0xLTIubGFyZ2UtMS00LnhsYXJnZS0xLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sLTEtMiBtZWRpdW0tMS0yIGxhcmdlLTEtNFxuYGBgXG5cbioqTm90ZToqKiBUaGUgYGNvbC0xYCBjbGFzc2VzIGFyZSBub3QgcHJlc2VudCBvbiB0aGUgZmlyc3QgdHdvIG5vZGVzLCBzaW5jZSB0aGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW91ci5cblxuXG4jIyBSZXZlcnNlIG9yZGVyXG5cblRvIHJldmVyc2UgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBjb2x1bW5zIGFyZSBkaXNwbGF5ZWQsIHlvdSBjYW4gYWRkIHRoZSBtb2RpZmllciBjbGFzcyBgLi1yZXZlcnNlYCB0byB5b3VyIGdyaWQuXG5UaGUgY29sdW1ucyB3aWxsIGJlIGluIERPTSBvcmRlciB3aGVuIHZpZXdwb3J0IHN3aXRjaGVzIHRvIHNtYWxsIGxheW91dC5cblxuYGBgamFkZVxuZGl2LmdyaWQuLXJldmVyc2Vcblx0ZGl2LmNvbC0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgRmlyc3QgY29sdW1uIGluIERPTVxuXHRkaXYuY29sLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBTZWNvbmQgY29sdW1uIGluIERPTVxuXHRkaXYuY29sLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBUaGlyZCBjb2x1bW4gaW4gRE9NXG5cdGRpdi5jb2wtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIEZvdXJ0aCBjb2x1bW4gaW4gRE9NXG5gYGBcbiMjIE5vIGd1dHRlclxuXG5JZiB5b3UgZG9udCBuZWVkIGEgc3BhY2luZy9ndXR0ZXIgYmV0d2VlbiB0aGUgZ3JpZCBjb2x1bW5zIHlvdSBjYW4gdXNlIHRoZSBtb2RpZmllciBgLi1ub2d1dHRlcmAuXG5cbmBgYGphZGVcbmRpdi5ncmlkLi1ub2d1dHRlclxuXHRkaXYuY29sLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBGaXJzdCBjb2x1bW4gaW4gRE9NXG5cdGRpdi5jb2wtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIFNlY29uZCBjb2x1bW4gaW4gRE9NXG5cdGRpdi5jb2wtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIFRoaXJkIGNvbHVtbiBpbiBET01cblx0ZGl2LmNvbC0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgRm91cnRoIGNvbHVtbiBpbiBET01cbmBgYFxuKi9cblxuLmdyaWQge1xuXG5cdG1hcmdpbjogMCAtQGdyaWQtZ3V0dGVyLzI7XG5cblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRkaXNwbGF5OiB0YWJsZTtcblx0XHRjbGVhcjogYm90aDtcblx0fVxuXG5cdD4gKiB7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHdpZHRoOjEwMCU7XG5cdFx0cGFkZGluZzogMCBAZ3JpZC1ndXR0ZXIvMjtcblx0fVxuXG5cdCYuLXJldmVyc2UgPiAqIHtcblx0XHRmbG9hdDpyaWdodDtcblx0fVxuXG5cblx0Ji4tbm9ndXR0ZXIge1xuXHRcdG1hcmdpbjogMDtcblxuXHRcdD4gKiB7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdH1cblx0fVxuXG5cblx0LmNvbC0xIHtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxuXHQuY29sLTEtMiB7XG5cdFx0d2lkdGg6IDEwMCUvMjtcblx0fVxuXHQuY29sLTEtMyB7XG5cdFx0d2lkdGg6IDEwMCUvMyoxO1xuXHR9XG5cdC5jb2wtMi0zIHtcblx0XHR3aWR0aDogMTAwJS8zKjI7XG5cdH1cblx0LmNvbC0xLTQge1xuXHRcdHdpZHRoOiAxMDAlLzQqMTtcblx0fVxuXHQuY29sLTMtNCB7XG5cdFx0d2lkdGg6IDEwMCUvNCozO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlIGFsbCBtZWRpYSBicmVha3BvaW50cyBiYXNlZCBvbiB0aGUgQGdyaWQtYnJlYWstcG9pbnRzLCBAZ3JpZC1icmVhay1sYWJlbHMgdmFyaWFibGVzLlxuXHQgKi9cblx0LmZvciggQGdyaWQtYnJlYWstcG9pbnRzLCB7XG5cblx0XHRAbGFiZWw6IGV4dHJhY3QoIEBncmlkLWJyZWFrLWxhYmVscywgQGkgKTtcblxuXHRcdEBtZWRpYSBhbGwgYW5kICggbWluLXdpZHRoOiBAdmFsdWUgKSB7XG5cblx0XHRcdD4gLkB7bGFiZWx9LTEge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdH1cblxuXHRcdFx0PiAuQHtsYWJlbH0tMS0yIHtcblx0XHRcdFx0d2lkdGg6IDEwMCUvMjtcblx0XHRcdH1cblxuXHRcdFx0PiAuQHtsYWJlbH0tMS0zIHtcblx0XHRcdFx0d2lkdGg6IDEwMCUvMyoxO1xuXHRcdFx0fVxuXG5cdFx0XHQ+IC5Ae2xhYmVsfS0yLTMge1xuXHRcdFx0XHR3aWR0aDogMTAwJS8zKjI7XG5cdFx0XHR9XG5cblx0XHRcdD4gLkB7bGFiZWx9LTEtNCB7XG5cdFx0XHRcdHdpZHRoOiAxMDAlLzQqMTtcblx0XHRcdH1cblxuXHRcdFx0PiAuQHtsYWJlbH0tMy00IHtcblx0XHRcdFx0d2lkdGg6IDEwMCUvNCozO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59IiwiLypcbi0tLVxubmFtZTogaW1nLnJlc3BvbnNpdmVcbmNhdGVnb3J5OiBMYXlvdXQvSW1hZ2VcbnRhZzpcbiAtIHJlc3BvbnNpdmVcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIGNsYXNzIG1ha2VzIHRoZSBpbWFnZSBzY2FsaW5nIHRvIGl0cyBtYXggd2lkdGguXG5cbmBgYGphZGVcbmltZy5yZXNwb25zaXZlKHNyYz0naHR0cDovL3d3dy5ieXVpLmVkdS9pbWFnZXMvYWdyaWN1bHR1cmUtbGlmZS1zY2llbmNlcy9mbG93ZXIuanBnJylcbmBgYFxuKi9cbmltZy5yZXNwb25zaXZlIHtcblx0bWF4LXdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IGF1dG87XG59XG4iLCIvKlxuLS0tXG5uYW1lOiAubWVkaWEtcmVzcG9uc2l2ZVxuY2F0ZWdvcnk6IExheW91dC9NZWRpYVxudGFnOlxuIC0gcmVzcG9uc2l2ZVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbmAubWVkaWEtcmVzcG9uc2l2ZWAgLSBUaGlzIG1ha2VzIGEgdGhlIGAubWVkaWEtcmVzcG9uc2l2ZWAgZGl2IGEgY29udGFpbmVyIGZvciBhbnkgbWVkaWEgZWxlbWVudCAoaWZyYW1lLCB2aWRlbywgLi4uICkgdGhhdCByZXNwb25zaXZlIHNjYWxlcyB3aXRoIGEgZml4IHJhdGlvLlxuVGhlIG1lZGlhIGVsZW1lbnQgKCBjaGlsZCApIG5lZWRzIHRoZSBjbGFzcyBgLnN0cmV0Y2hgIHRvIGZ1bGx5IGZpbGwgb3V0IHRoZSBwYXJlbnRzIHNpemUuXG5cblRoZSBgLm1lZGlhLXJlc3BvbnNpdmVgIGNvbXBvbmVudCBoYXMgdG8gcHJlZGVmaW5lZCBtb2RpZmllcnM6IGAuLW1lZGlhLTQtM2AsIGAuLW1lZGlhLTE2LTlgIHRoYXQgZGVmaW5lIGEgZml4IHJhdGlvLlxuXG5gYGBqYWRlXG5kaXYubWVkaWEtcmVzcG9uc2l2ZS4tbWVkaWEtMTYtOVxuXHRpZnJhbWUuc3RyZXRjaChzcmM9XCJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVRDZDZQZnhPeTBZXCIpXG5gYGBcbiovXG4ubWVkaWEtcmVzcG9uc2l2ZSB7XG5cdHdpZHRoOiAxMDAlO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHBhZGRpbmctYm90dG9tOiA1MCU7XG5cblx0Ji4tbWVkaWEtNC0zIHtcblx0XHRwYWRkaW5nLWJvdHRvbTogNzUlO1xuXHR9XG5cblx0Ji4tbWVkaWEtMTYtOSB7XG5cdFx0cGFkZGluZy1ib3R0b206IDU2LjI2JVxuXHR9XG59XG4iLCIvKlxuLS0tXG5uYW1lOiAucGFnZS1mbHVpZFxuY2F0ZWdvcnk6IFBhZ2UvRmx1aWRcbnRhZzpcbiAtIHJlc3BvbnNpdmVcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5gLnBhZ2UtZmx1aWRgIGNlbnRlcnMgdGhlIHBhZ2UgY29udGVudCBhbmQgYWRkcyBhIHBhZGRpbmcgc28gdGhlIHBhZ2Ugc3RpY2tzIG5vdCB0byB0aGUgYnJvd3NlciB2aWV3cG9ydC5cbkZ1cnRoZXJtb3JlIGl0IGhhcyBhIG1heC13aWR0aCBiYXNlZCBvbiB0aGUgbGFzdCBgQGdyaWQtYnJlYWstcG9pbnRzYCB2YWx1ZS5cblxuYGBgamFkZVxuZGl2LnBhZ2UtZmx1aWRcblx0ZGl2LmFpZ2lzLWRlYnVnIFNvbWUgcGFnZSBjb250ZW50XG5gYGBcblxuIyMgTWF4LXdpZHRoIHBhZ2VcblxuVG8gYnJvYWRlbiB0aGUgd2lkdGggb2YgdGhlIHBhZ2UgeW91IGNhbiBhZGQgdGhlIG1vZGlmaWVyIGAuLXVubGltaXRlZGAuIFRoc2kgd2lsbCBzcGFuIHRoZSBwYWdlIHRvIHRoZSBmdWxsIHdpZHRoLlxuXG5gYGBqYWRlXG5kaXYucGFnZS1mbHVpZC4tdW5saW1pdGVkXG5cdGRpdi5haWdpcy1kZWJ1ZyBTb21lIHBhZ2UgY29udGVudFxuYGBgXG4qL1xuLnBhZ2UtZmx1aWQge1xuXG5cdEBtYXgtd2lkdGgtcG9pbnQ6IGV4dHJhY3QoIEBncmlkLWJyZWFrLXBvaW50cywgbGVuZ3RoKCBAZ3JpZC1icmVhay1wb2ludHMgKSApO1xuXHRcblx0bWF4LXdpZHRoOiBAbWF4LXdpZHRoLXBvaW50ICsgMiAqIGV4dHJhY3QoIEBwYWdlLXBhZGRpbmcsIDIgKTtcblx0bWFyZ2luOiBhdXRvO1xuXHRwYWRkaW5nOiBAcGFnZS1wYWRkaW5nO1xuXG5cdCYuLXVubGltaXRlZCB7XG5cdFx0bWF4LXdpZHRoOiBub25lO1xuXHR9XG59XG4iLCIvKlxuLS0tXG5uYW1lOiAucm93XG5jYXRlZ29yeTogTGF5b3V0L1Jvd1xudGFnOlxuIC0gY29tcG9uZW50XG5jb21waWxlOiB0cnVlXG4tLS1cblxuVGhpcyBzdHlsaW5nIGFsbG93IHRvIHBsYWNlIGNvbnRhaW5lcnMgaW4gYSByb3cuIFRoZXkgd2lsbCAqKm5vdCoqIGJyZWFrIGFzIHRoZSBgLmdyaWRgIGJ1dCByZXNpemUgdGhlbSBhY2NvcmRpbmdseS5cblNvbWUgYmVuZWZpdHMgb2YgdGhlIGAucm93YCBhcHByb2FjaCBpcyB0aGUgZWFzeSB2ZXJ0aWNhbCBjZW50ZXJpbmcgYW5kIHRoZSB1c2FnZSBvZiB0aGUgYC5jb2wtYXV0b2AgY2xhc3MuXG5cbiMjIEJhc2ljIHJvdyB3aXRoIHZlcnRpY2FsIGNlbnRlcmluZ1xuXG5Zb3UgY2FuIHVzZSB0aGUgc2l6aW5nIGNsYXNzZXMgYC5jb2wtWC1YYCB0byBkZWZpbmUgdGhlIHdpZHRoIG9mIGEgY29sdW1uIGFzIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cy4gXG5cbmBgYGphZGVcbmRpdi5yb3dcblx0ZGl2LmNvbC0xLTQuYWlnaXMtZGVidWcgY29sLTEtNCB3aXRoIGEgbG90IG9mIHRleHQgdGhhdCBzcGFucyB0aGUgY29sdW1uLlxuXHRkaXYuY29sLTMtNC5haWdpcy1kZWJ1ZyBjb2wtMy00IGNvbnRlbnQuXG5gYGBcblxuIyMgRml4ZWQgcm93XG5cblRoZXJlIGlzIGEgYC4tZml4ZWRgIG1vZGlmaWVyIHdoZXJlIGVhY2ggY29sdW1uIGhhcyB0aGUgc2FtZSB3aWR0aC5cblxuYGBgamFkZVxuZGl2LnJvdy4tZml4ZWRcblx0ZGl2LmFpZ2lzLWRlYnVnIGV2ZW5seSBzcHJlYWRvdXQgY29sdW1uXG5cdGRpdi5haWdpcy1kZWJ1ZyBldmVubHkgc3ByZWFkb3V0IGNvbHVtbiB3aXRoIG1vcmUgY29udGVudFxuXHRkaXYuYWlnaXMtZGVidWcgZXZlbmx5IHNwcmVhZG91dCBjb2x1bW5cblx0ZGl2LmFpZ2lzLWRlYnVnIGV2ZW5seSBzcHJlYWRvdXQgY29sdW1uIHdpdGggbXVjaCBtb3JlIGNvbnRlbnQgdGhhbiB0aGUgb3RoZXJcblx0ZGl2LmFpZ2lzLWRlYnVnLnZjZW50ZXIgZXZlbmx5IHNwcmVhZG91dCBjb2x1bW4gd2l0aCAudmNlbnRlclxuYGBgXG5cblxuIyMgQXV0byBzaXplZCBjb2x1bW4gd2lkdGggYW5kIHZjZW50ZXJcblxuVGhlcmUgaXMgYSBzcGVjaWFsIGAuY29sLWF1dG9gIGNsYXNzIHRoYXQgcmVzaXplcyB0aGUgY29sdW1uIHRvIHRoZSBzaXplIG9mIGl0cyBjb250ZW50LlxuVGhpcyBpcyB1c2VmdWxsIGZvciBleGFtcGxlIGlmIHlvdSBoYXZlIGEgZml4ZWQgc2l6ZSBsb2dvIGFuZCB0aGUgcmVzdCBvZiB0aGUgaGVhZGVyIGhhcyB0byByZXNpemUuXG5cbmBgYGphZGVcbmRpdi5yb3cuLWNlbnRlclxuXHRkaXYuY29sLWF1dG8uYWlnaXMtZGVidWdcblx0XHRpbWcoc3JjPVwiaHR0cDovL3BsYWNlaG9sZC5pdC8xMDB4MTAwXCIpXG5cdGRpdi5jb2wtMS5haWdpcy1kZWJ1ZyBUaGUgcmVzdFxuXHRkaXYuY29sLWF1dG8uYWlnaXMtZGVidWdcblx0XHRpbWcoc3JjPVwiaHR0cDovL3BsYWNlaG9sZC5pdC8yMDB4MTAwXCIpXG5gYGBcbiovXG4ucm93IHtcblx0ZGlzcGxheTogdGFibGU7XG5cdHdpZHRoOiAxMDAlO1xuXG5cdCYuLWZpeGVkIHtcbiAgICBcdHRhYmxlLWxheW91dDogZml4ZWQ7XG5cdH1cblxuXHQmLi1jZW50ZXIge1xuXHRcdD4gKiB7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdH1cblx0fVxuXG5cdCYuLWJvdHRvbSB7XG5cdFx0PiAqIHtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiBib3R0b207XG5cdFx0fVxuXHR9XG5cblx0Ji4tcGFkZGVkIHtcblx0XHQ+ICogKyAqIHtcblx0XHRcdHBhZGRpbmctbGVmdDogQHJvdy1ndXR0ZXI7XG5cdFx0fVxuXHR9XG5cdFxuXHQ+ICoge1xuXHRcdGRpc3BsYXk6IHRhYmxlLWNlbGw7XG5cdFx0XG5cdFx0Ji5jb2wtMSB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdFx0Ji5jb2wtMS0yLFxuXHRcdCYuY29sLTItNCB7XG5cdFx0XHR3aWR0aDogMTAwJS8yO1xuXHRcdH1cblx0XHQmLmNvbC0xLTMge1xuXHRcdFx0d2lkdGg6IDEwMCUvMyoxO1xuXHRcdH1cblx0XHQmLmNvbC0yLTMge1xuXHRcdFx0d2lkdGg6IDEwMCUvMyoyO1xuXHRcdH1cblx0XHQmLmNvbC0xLTQge1xuXHRcdFx0d2lkdGg6IDEwMCUvNCoxO1xuXHRcdH1cblx0XHQmLmNvbC0zLTQge1xuXHRcdFx0d2lkdGg6IDEwMCUvNCozO1xuXHRcdH1cblx0XHRcblx0XHQmLmNvbC1hdXRvIHtcblx0XHRcdHdpZHRoOmF1dG87XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblx0fVxufVxuXG5cbiIsIlxuXG4uYnRuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGNvbG9yOiBibGFjaztcbiAgYm9yZGVyOiAxcHggc29saWQgQGJvcmRlci1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgcGFkZGluZzogMTJweCAxNnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsZXR0ZXItc3BhY2luZzogMS41cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG1hcmdpbjogMDtcbiAgYm94LXNoYWRvdzogMnB4IDJweCAzcHggMCByZ2JhKDE4NywxODcsMTg3LDAuMyk7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgQHNlbGVjdGVkLWNvbG9yO1xuICAgIGNvbG9yOiBAc2VsZWN0ZWQtY29sb3I7XG5cbiAgICAmLmJ0bi0taWNvbiAuaWNvbiB7XG4gICAgICBib3JkZXItY29sb3I6IEBzZWxlY3RlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCBAc2VsZWN0ZWQtY29sb3I7XG4gICAgY29sb3I6IEBzZWxlY3RlZC1jb2xvcjtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTFweDtcbiAgfVxuXG4gICYuYWN0aXZlIHtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgZGFya2VuKCBAc2VsZWN0ZWQtY29sb3IsIDIwJSApO1xuICAgIHBhZGRpbmctYm90dG9tOiAxMXB4O1xuICB9XG5cbiAgJi5idG4tLW1lbnUtaXRlbSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBib3JkZXItY29sb3I7XG4gICAgfVxuICB9XG5cblxuICAmLmhpZGRlbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIiwiaHRtbCwgYm9keSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdG1pbi1oZWlnaHQ6IDEwMHZoO1xufVxuXG4ja2MtbG9jYWxlIHtcblx0ZGlzcGxheTpub25lO1xufVxuXG4uaGVhZGVyLWxvZ28ge1xuXHR3aWR0aDoxNjVweDtcblx0bWFyZ2luOiAxMHB4IDI1cHg7XG59XG5cbiAgXG5cblxuYm9keSA+IC5jb250YWluZXJ7XG5cdGZsZXg6IDE7XG5cblx0Ji5sb2dpbntcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWluLWhlaWdodDogNTUwcHg7XG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG5cdFx0YmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcblx0XHQvL21hcmdpbjogMzVweCAwIDAgMDtcblx0XHRtYXgtd2lkdGg6IGluaXRpYWw7XG5cdFx0ei1pbmRleDoxMDtcblx0fVxufVxuXG4ubG9naW4tdGl0bGV7XG5cdHBhZGRpbmc6IDM1cHggMCAwIDQ1cHg7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdGZvbnQtc2l6ZTogNDhweDtcblx0bGluZS1oZWlnaHQ6IDU1cHg7XG5cbn1cblxuLmxvZ2luLWNvbnRhaW5lcntcblxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHRvcDogMjVweDtcblxuXHRAbWVkaWEoIG1heC13aWR0aDpAYnJlYWtwb2ludC10YWJsZXQgKXtcblx0XHRsZWZ0OiA1JTtcblx0XHR3aWR0aDogOTAlO1xuXHR9XG5cblx0bGVmdDogNTAlO1xuXHR3aWR0aDogNDUlO1xuXHRwYWRkaW5nOiAyNXB4IDUwcHg7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cblx0aDN7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRtYXJnaW4tYm90dG9tOiAyNXB4O1xuXHR9XG5cblx0cCB7XG5cdFx0bWFyZ2luLXRvcDogMTBweDtcblx0fVxuXHQuY2hlY2tib3ggaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0bWFyZ2luLWxlZnQ6IDBweDtcblx0XHR3aWR0aDogYXV0bztcblx0fVxuXHQuY2hlY2tib3ggbGFiZWwge1xuXHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0cGFkZGluZy1sZWZ0OiAwcHg7XG5cdFx0aW5wdXQge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OjVweDtcblx0XHR9XG5cdFx0Lm5ld3NsZXR0ZXIge1xuXHRcdFx0Ly9wYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdFx0fVxuXHR9XG5cblx0LmtjLWNvbnRhaW5lcntcblx0XHRtYXJnaW4tdG9wOiAxNXB4O1xuXG5cdFx0LmFsZXJ0e1xuXHRcdFx0bWFyZ2luOiAxMHB4IDA7XG5cblx0XHRcdCYuYWxlcnQtZXJyb3J7XG5cdFx0XHRcdGNvbG9yOiBAYWxlcnQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmtjLWxhYmVsLXdyYXBwZXJ7XG5cdFx0Ly9tYXJnaW46IDAgMCAyMHB4IDA7XG5cdH1cblxuXHQua2MtaW5wdXQtd3JhcHBlcntcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjZWVlO1xuXHRcdG1hcmdpbi1ib3R0b206IDIwcHg7XG5cdFx0XG5cdFx0Ji5yb3cge1xuXHRcdFx0bWFyZ2luLWxlZnQ6MDtcblx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHR9XG5cblx0XHRpbnB1dHtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGhlaWdodDogNDhweDtcblx0XHRcdHBhZGRpbmctbGVmdDogMTBweDtcblx0XHR9XG5cdH1cblxuXHQuaW5wdXQtaWNvbntcblx0XHR3aWR0aDogNDVweDtcblx0XHRoZWlnaHQ6IDQ1cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2VlZTtcblx0XHRwYWRkaW5nOiAxNXB4O1xuXG5cdFx0Lmljb24ge1xuXHRcdFx0d2lkdGg6IDE0cHg7XG5cdFx0XHRoZWlnaHQ6IDE0cHg7XG5cdFx0XHRmaWxsOmdyZXk7XG5cdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuXHRcdH1cblx0fVxuXG5cdGlucHV0e1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdH1cblxuXHQucmUtbG9naW57XG5cdFx0cGFkZGluZzogMjBweCAwO1xuXHR9XG5cblx0LnNvY2lhbC1sb2dpbiB7XG5cdFx0XG5cdFx0bWFyZ2luLXRvcDogMjVweDtcblxuXHRcdC56b2NpYWwge1xuXHRcdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcblx0XHRcdGZsb2F0OmxlZnQ7XG5cdFx0fVxuXG5cdFx0dWwge1xuXHRcdFx0bGlzdC1zdHlsZS10eXBlOiBub25lO1xuXHRcdH1cblxuXHRcdD51bCA+bGk+IGEgPiAqIHtcblx0XHRcdGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuXHRcdH1cblxuXHR9XG59XG5cblxuLmxvZ2luLWZvb3Rlcntcblx0Ly8gbWluLWhlaWdodDogMTQwcHg7XG5cdHBhZGRpbmc6IDIwcHg7XG5cdHdpZHRoOiAxMDAlO1xuXHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCAyNDUsIDI0NSwgMjQ1LCAxICk7XG5cdGJhY2tncm91bmQtY29sb3I6ICMyNTI2MkE7XG5cdGNvbG9yOiByZ2JhKCA3NCwgNzQsIDc0LCAxICk7XG5cdFxuXHQubG9nby1jb250YWluZXIge1xuXG5cdFx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cblx0XHQubG9nbyB7XG5cdFx0XHRtYXJnaW46IDEwcHg7XG5cdFx0XHQvLyBtYXgtaGVpZ2h0OiA5MHB4O1xuXHRcdH1cblx0fVxuICAgIFxuXHRwe1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjVyZW07XG5cdH1cbn1cblxuLmtjLWxvY2FsZS5tZW51e1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHJpZ2h0OiAyMHB4O1xuXHR0b3A6IDIwcHg7XG59XG4iLCIubWVudSB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQubWVudS1pdGVtcyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMTAwJTtcblx0XHRsZWZ0OiAwO1xuXHRcdHotaW5kZXg6IDEwMDA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRcdGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG5cdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdGxpIHtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBAYm9yZGVyLWNvbG9yO1xuXG5cdFx0XHQmOmxhc3Qge1xuXHRcdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHR9IFxuXHRcdH1cblx0fVxuXG5cdCYub3BlbiB7XG5cdFx0Lm1lbnUtaXRlbXMge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVxuXHR9XG5cblxufVxuIiwiQGltcG9ydCBcImNzcy1saWIvbGVzcy9zaGFyZWQvKiovKi5sZXNzXCI7XG5AaW1wb3J0IFwiY3NzLWxpYi9sZXNzL2NvbXBvbmVudHMvY29yZS8qKi8qLmxlc3NcIjtcblxuQGltcG9ydCBcImxlcm5ldHotdGhlbWUvc2hhcmVkLyoubGVzc1wiO1xuQGltcG9ydCBcImxlcm5ldHotdGhlbWUvKi5sZXNzXCI7XG5cblxuLy8gcmVzZXQgY29udGFpbmVyIGJvcmRlciBvZiBwYXR0ZXJuZmx5LmNzc1xuLmNvbnRhaW5lciB7XG5cdHBhZGRpbmctbGVmdDogMHB4O1xuXHRwYWRkaW5nLXJpZ2h0OiAwcHg7XG59XG5cbiJdfQ== */
