#header #logo h3, #header #navbar .panel-activation, #footer p { position: relative; top: 50%; transform: translateY(-50%); }

.button, .button-secondary { display: inline-block; padding: 7px 20px; }

.button-small.button, .button-small.button-secondary { padding: 3px 10px; font-size: 0.9rem; }

html, body { height: 100%; }

body { background: #fff; color: #444; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

a { color: #1BB3E9; }

a:hover { color: #0e6e90; }

b, strong, label, th { font-weight: 600; }

#container { min-height: 100%; position: relative; }

.fullwidth #body { padding-left: 0; padding-right: 0; }

#body { background: #fff; padding-top: 8rem; padding-bottom: 11rem; }

.left { float: left; }

.right { float: right; }

/* montserrat-regular - latin */
@font-face { font-family: 'Montserrat'; font-style: normal; font-weight: 400; src: url("../fonts/montserrat-v25-latin-regular.eot"); /* IE9 Compat Modes */ src: local(""), url("../fonts/montserrat-v25-latin-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/montserrat-v25-latin-regular.woff2") format("woff2"), url("../fonts/montserrat-v25-latin-regular.woff") format("woff"), url("../fonts/montserrat-v25-latin-regular.ttf") format("truetype"), url("../fonts/montserrat-v25-latin-regular.svg#Montserrat") format("svg"); /* Legacy iOS */ }

.default-animation, #body, #header, #header #logo h3, #header #navbar ul.navigation, .modular .showcase .button { transition: all 0.5s ease; }

.padding-horiz, .fullwidth #header, .fullwidth #breadcrumbs, .fullwidth .blog-header, .fullwidth .blog-content-item, .fullwidth .content-wrapper, .fullwidth ul.pagination, .fullwidth #body > .modular-row, #body, #header, #footer { padding-left: 7rem; padding-right: 7rem; }

@media only all and (max-width: 59.938em) { .padding-horiz, .fullwidth #header, .fullwidth #breadcrumbs, .fullwidth .blog-header, .fullwidth .blog-content-item, .fullwidth .content-wrapper, .fullwidth ul.pagination, .fullwidth #body > .modular-row, #body, #header, #footer { padding-left: 4rem; padding-right: 4rem; } }

@media only all and (max-width: 47.938em) { .padding-horiz, .fullwidth #header, .fullwidth #breadcrumbs, .fullwidth .blog-header, .fullwidth .blog-content-item, .fullwidth .content-wrapper, .fullwidth ul.pagination, .fullwidth #body > .modular-row, #body, #header, #footer { padding-left: 1rem; padding-right: 1rem; } }

.padding-vert { padding-top: 3rem; padding-bottom: 3rem; }

#header { position: fixed; z-index: 10; width: 100%; height: 5rem; background-color: rgba(255, 255, 255, 0.9); box-shadow: 0 0.05rem 1rem rgba(0, 0, 0, 0.15); }

#header.scrolled { height: 3rem; background-color: rgba(255, 255, 255, 0.9) !important; box-shadow: 0 0.05rem 1rem rgba(0, 0, 0, 0.15) !important; }

#header.scrolled #logo h3 { color: #444 !important; font-size: 1.6rem !important; }

#header.scrolled #logo a, #header.scrolled #navbar span { color: #444 !important; }

#header.scrolled #navbar a { color: #1BB3E9 !important; }

#header.scrolled #navbar a:hover { color: #0e6e90 !important; }

#header.scrolled #navbar a:before, #header.scrolled #navbar a:after { background-color: #1BB3E9 !important; }

#header.scrolled .navigation { margin-top: 0.5rem !important; }

#header > .grid, #header #logo, #header #navbar { height: 100%; }

#header #logo { float: left; }

#header #logo h3 { font-size: 2rem; line-height: 2rem; margin: 0; text-transform: uppercase; }

#header #logo h3 a { color: #444; }

#header #navbar { font-size: 0.9rem; /* Child Indicator */ }

#header #navbar .has-children > a > span { display: inline-block; padding-right: 8px; }

#header #navbar .has-children > a > span:after { font-family: FontAwesome; content: '\f107'; position: absolute; display: inline-block; right: 8px; top: 4px; }

#header #navbar .has-children > a:after, #header #navbar .has-children > a:before { display: none; }

#header #navbar .has-children .has-children > a > span:after { content: '\f105'; }

#header #navbar .navigation > .has-children:hover > a { background: #f6f6f6; border: 1px solid #ececec; border-bottom-color: #f6f6f6; margin: -1px -1px 0 -1px; z-index: 1000; position: relative; padding-bottom: 1px; }

#header #navbar ul { margin: 0; padding: 0; list-style: none; }

#header #navbar ul.navigation { display: inline-block; float: right; margin-top: 1.4rem; }

#header #navbar ul.navigation li { float: left; position: relative; /*Active dropdown nav item */ /* Dropdown CSS */ /* Active on Hover */ }

#header #navbar ul.navigation li a { font-family: "Montserrat", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; display: inline-block; padding: 0.3rem 0.8rem; -webkit-backface-visibility: hidden; }

#header #navbar ul.navigation li a:before, #header #navbar ul.navigation li a:after { content: ""; position: absolute; width: 100%; height: 1px; bottom: 0; left: 0; background-color: #1BB3E9; visibility: hidden; transform: scaleX(0); transition: all 0.2s ease; }

#header #navbar ul.navigation li a:hover:before { visibility: visible; transform: scaleX(0.75); }

#header #navbar ul.navigation li a.active:after { top: 0; visibility: visible; transform: scaleX(0.75); }

#header #navbar ul.navigation li.active a:after { top: 0; visibility: visible; transform: scaleX(0.75); }

#header #navbar ul.navigation li ul { position: absolute; background-color: #f6f6f6; border: 1px solid #ececec; border-top: 0; min-width: 12rem; text-align: left; z-index: 999; left: -1px; display: none; }

#header #navbar ul.navigation li ul li { display: block; float: none; /* Active Dropdown nav item */ }

#header #navbar ul.navigation li ul li.active > a { background-color: #ececec; color: #1BB3E9; }

#header #navbar ul.navigation li ul li:hover > a { background-color: #1BB3E9; color: #fff; }

#header #navbar ul.navigation li ul li a { display: block; margin: 0 -1px; }

#header #navbar ul.navigation li ul li a:after, #header #navbar ul.navigation li ul li a:before { display: none; }

#header #navbar ul.navigation li ul ul { left: 100%; top: 0px; }

#header #navbar ul.navigation li:hover > ul { display: block; }

@media only all and (max-width: 59.938em) { #header #navbar ul.navigation { display: none; } }

#header #navbar .panel-activation { padding: 1rem; display: none; font-size: 1.8rem; cursor: pointer; float: right; }

@media only all and (max-width: 59.938em) { #header #navbar .panel-activation { display: inline-block; } }

.header-image.fullwidth #body { padding-left: 0; padding-right: 0; }

.header-image.fullwidth #body > .listing-row { padding-left: 7rem; padding-right: 7rem; }

.header-image .listing-row:last-child { margin-bottom: 2rem; }

.header-image #body .flush-top { margin-top: -9.5rem; padding-top: 9rem; }

.header-image #breadcrumbs { margin-top: 1rem; }

.header-image #header { background-color: rgba(255, 255, 255, 0); box-shadow: none; }

.header-image #header .navigation .has-children:hover a { color: #1BB3E9; }

.header-image #header #logo h3, .header-image #header #logo a { color: #FFFFFF; }

.header-image #header a, .header-image #header .menu-btn { color: #FFFFFF; }

.header-image #header a:before, .header-image #header a:after { background-color: rgba(255, 255, 255, 0.7) !important; }

#footer { position: absolute; background: #333; height: 6rem; right: 0; bottom: 0; left: 0; color: #999; text-align: center; }

#footer a:hover { color: #fff; }

#footer .totop { position: absolute; bottom: 5rem; text-align: center; left: 0; right: 0; }

#footer .totop span { font-size: 1.7rem; line-height: 2.5rem; background: #333; width: 3rem; height: 2rem; border-radius: 3px; display: inline-block; text-align: top; }

#footer p { margin: 0; }

#footer p .fa { color: #fff; }

html, body, button, input, select, textarea, .pure-g, .pure-g [class*="pure-u"] { font-family: "Raleway", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; font-weight: 400; }

h1, h2, h3, h4, h5, h6 { font-family: "Montserrat", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; font-weight: 400; text-rendering: optimizeLegibility; letter-spacing: -0px; }

h1 { font-size: 3.2rem; }

@media only all and (max-width: 47.938em) { h1 { font-size: 2.5rem; line-height: 1.2; margin-bottom: 2.5rem; } }

@media only all and (min-width: 48em) and (max-width: 59.938em) { h2 { font-size: 2.1rem; } }

@media only all and (max-width: 47.938em) { h2 { font-size: 2rem; } }

@media only all and (min-width: 48em) and (max-width: 59.938em) { h3 { font-size: 1.7rem; } }

@media only all and (max-width: 47.938em) { h3 { font-size: 1.6rem; } }

@media only all and (min-width: 48em) and (max-width: 59.938em) { h4 { font-size: 1.35rem; } }

@media only all and (max-width: 47.938em) { h4 { font-size: 1.25rem; } }

h1 { text-align: center; letter-spacing: -3px; }

h2 { letter-spacing: -2px; }

h3 { letter-spacing: -1px; }

h1 + h2 { margin: -2rem 0 2rem 0; font-size: 2rem; line-height: 1; text-align: center; font-family: "Raleway", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; font-weight: 300; }

@media only all and (min-width: 48em) and (max-width: 59.938em) { h1 + h2 { font-size: 1.6rem; } }

@media only all and (max-width: 47.938em) { h1 + h2 { font-size: 1.5rem; } }

h2 + h3 { margin: 0.5rem 0 2rem 0; font-size: 2rem; line-height: 1; text-align: center; font-family: "Raleway", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; font-weight: 300; }

@media only all and (min-width: 48em) and (max-width: 59.938em) { h2 + h3 { font-size: 1.6rem; } }

@media only all and (max-width: 47.938em) { h2 + h3 { font-size: 1.5rem; } }

blockquote { border-left: 10px solid #F0F2F4; }

blockquote p { font-size: 1.1rem; color: #999; }

blockquote cite { display: block; text-align: right; color: #666; font-size: 1.2rem; }

blockquote > blockquote > blockquote { margin: 0; }

blockquote > blockquote > blockquote p { padding: 15px; display: block; font-size: 1rem; margin-top: 0rem; margin-bottom: 0rem; }

blockquote > blockquote > blockquote > p { margin-left: -71px; border-left: 10px solid #F0AD4E; background: #FCF8F2; color: #df8a13; }

blockquote > blockquote > blockquote > p a { color: #b06d0f; }

blockquote > blockquote > blockquote > p a:hover { color: #f2b866; }

blockquote > blockquote > blockquote > blockquote > p { margin-left: -94px; border-left: 10px solid #D9534F; background: #FDF7F7; color: #b52b27; }

blockquote > blockquote > blockquote > blockquote > p a { color: #8b211e; }

blockquote > blockquote > blockquote > blockquote > p a:hover { color: #de6764; }

blockquote > blockquote > blockquote > blockquote > blockquote > p { margin-left: -118px; border-left: 10px solid #5BC0DE; background: #F4F8FA; color: #28a1c5; }

blockquote > blockquote > blockquote > blockquote > blockquote > p a { color: #1f7e9a; }

blockquote > blockquote > blockquote > blockquote > blockquote > p a:hover { color: #70c8e2; }

blockquote > blockquote > blockquote > blockquote > blockquote > blockquote > p { margin-left: -142px; border-left: 10px solid #5CB85C; background: #F1F9F1; color: #3d8b3d; }

blockquote > blockquote > blockquote > blockquote > blockquote > blockquote > p a { color: #2d672d; }

blockquote > blockquote > blockquote > blockquote > blockquote > blockquote > p a:hover { color: #6ec06e; }

code, kbd, pre, samp { font-family: "Inconsolata", monospace; }

code { background: #f9f2f4; color: #9c1d3d; }

pre { padding: 2rem; background: #f0f0f0; border: 1px solid #ddd; border-radius: 3px; }

pre code { color: #237794; background: inherit; }

hr { border-bottom: 4px solid #F0F2F4; }

.page-title { margin-top: -25px; padding: 25px; float: left; clear: both; background: #1BB3E9; color: #fff; }

.label { vertical-align: middle; background: #1BB3E9; border-radius: 100%; color: #fff; height: 1rem; min-width: 1rem; line-height: 1rem; display: inline-block; text-align: center; font-size: 0.7rem; font-family: "Montserrat", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; margin-right: 0.75rem; }

fieldset { border: 1px solid #ddd; }

textarea, input[type="email"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="url"], input[type="color"], input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="month"], input[type="time"], input[type="week"], select[multiple=multiple] { background-color: white; border: 1px solid #ddd; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.06); }

textarea:hover, input[type="email"]:hover, input[type="number"]:hover, input[type="password"]:hover, input[type="search"]:hover, input[type="tel"]:hover, input[type="text"]:hover, input[type="url"]:hover, input[type="color"]:hover, input[type="date"]:hover, input[type="datetime"]:hover, input[type="datetime-local"]:hover, input[type="month"]:hover, input[type="time"]:hover, input[type="week"]:hover, select[multiple=multiple]:hover { border-color: #c4c3c3; }

textarea:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="color"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, select[multiple=multiple]:focus { border-color: #1BB3E9; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.06), 0 0 5px rgba(21, 163, 214, 0.7); }

.form-field .required { color: #F3443F; font-size: 3rem; line-height: 3rem; vertical-align: top; height: 1.5rem; display: inline-block; }

form .buttons { text-align: center; }

form input { font-weight: 400; }

table { border: 1px solid #eaeaea; table-layout: auto; }

th { background: #f7f6f6; padding: 0.5rem; }

td { padding: 0.5rem; border: 1px solid #eaeaea; }

.button { background: #fff; color: #1BB3E9; border: 1px solid #1BB3E9; border-radius: 3px; }

.button:hover { background: #1BB3E9; color: #fff; }

.button:active { box-shadow: 0 1px 0 #118ab5; }

.button-secondary { background: #fff; color: #F6635E; border: 1px solid #F6635E; border-radius: 3px; }

.button-secondary:hover { background: #F6635E; color: #fff; }

.button-secondary:active { box-shadow: 0 1px 0 #f32b24; }

.bullets { margin: 1.7rem 0; margin-left: -0.85rem; margin-right: -0.85rem; overflow: auto; }

.bullet { float: left; padding: 0 0.85rem; }

.two-column-bullet { width: 50%; }

@media only all and (max-width: 47.938em) { .two-column-bullet { width: 100%; } }

.three-column-bullet { width: 33.3333333333%; }

@media only all and (max-width: 47.938em) { .three-column-bullet { width: 100%; } }

.four-column-bullet { width: 25%; }

@media only all and (max-width: 47.938em) { .four-column-bullet { width: 100%; } }

.bullet-icon { float: left; background: #1BB3E9; padding: 0.875rem; width: 3.5rem; height: 3.5rem; border-radius: 50%; color: #fff; font-size: 1.75rem; text-align: center; }

.bullet-icon-1 { background: #1BB3E9; }

.bullet-icon-2 { background: #1be9da; }

.bullet-icon-3 { background: #d5e91b; }

.bullet-content { margin-left: 4.55rem; }

.sb-slidebar { background-color: #333 !important; }

#panel { padding-top: 1rem; color: #ddd; }

#panel .navigation { list-style: none; padding: 0; }

#panel .navigation li { border-bottom: 1px solid #3d3d3d; }

#panel .navigation li a { color: #ddd; display: block; padding: 0.5rem 1rem; font-weight: 600; }

#panel .navigation li a:hover { color: white; background-color: #262626; }

#panel .navigation li a:last-child { border-bottom: 0; }

#panel .navigation li.active > a { background: #fff; color: #444; }

#panel .navigation li.active > a:hover { color: #444; }

#panel .navigation li:first-child { border-top: 1px solid #3d3d3d; }

#panel .navigation li ul { list-style: none; padding: 0; }

#panel .navigation li ul li { border: 0 !important; }

#panel .navigation li ul li a { color: #c4c3c3; padding: 0.2rem 1rem 0.2rem 2rem; font-size: 0.9rem; }

#panel .navigation li ul li li a { padding-left: 3rem; }

#panel .navigation li ul li li a li a { padding-left: 4rem; }

#panel .navigation li ul li.active > a { background: #ccc; }

.blog-header { padding-top: 2rem; padding-bottom: 2rem; }

.blog-header.blog-header-image { background-size: cover; background-position: center; }

.blog-header.blog-header-image h1, .blog-header.blog-header-image h2 { color: #FFFFFF; }

.blog-header h1 { font-size: 4rem; margin-top: 0; }

@media only all and (min-width: 48em) and (max-width: 59.938em) { .blog-header h1 { font-size: 3rem; } }

@media only all and (max-width: 47.938em) { .blog-header h1 { font-size: 2.5rem; line-height: 1.2; margin-bottom: 2.5rem; } }

.blog-header + .blog-content { padding-top: 3rem; }

.list-item { border-bottom: 1px solid #EEEEEE; margin-bottom: 3rem; }

.list-item:last-child { border-bottom: 0; }

.list-item .list-blog-header { position: relative; }

.list-item .list-blog-header h4 { margin-bottom: 0.5rem; }

.list-item .list-blog-header h4 a { color: #444; }

.list-item .list-blog-header h4 a:hover { color: #1BB3E9; }

.list-item .list-blog-header img { display: block; margin-top: 1rem; border-radius: 3px; }

.list-item .list-blog-date { float: right; text-align: center; }

.list-item .list-blog-date span { display: block; font-size: 1.75rem; font-weight: 600; line-height: 110%; }

.list-item .list-blog-date em { display: block; border-top: 1px solid #EEEEEE; font-style: normal; text-transform: uppercase; }

.blog-content-item .list-blog-padding > p:nth-child(2) { font-size: 1.2rem; }

.tags a { display: inline-block; font-size: 0.8rem; border: 1px solid #1BB3E9; border-radius: 3px; padding: 0.1rem 0.4rem; margin-bottom: 0.2rem; text-transform: uppercase; }

.archives, .related-pages { padding: 0; list-style: none; }

.archives li, .related-pages li { border-bottom: 1px solid #EEEEEE; line-height: 2rem; }

.archives li:last-child, .related-pages li:last-child { border-bottom: 0; }

.related-pages li a { display: block; }

.related-pages .score { display: block; float: right; color: #999; font-size: 85%; }

.syndicate a { margin-bottom: 1rem; }

div#breadcrumbs { padding-left: 0; }

@media only all and (max-width: 47.938em) { div#breadcrumbs { display: none; } }

#sidebar { padding-left: 3rem; }

@media only all and (max-width: 47.938em) { #sidebar { padding-left: 0; } }

#sidebar .sidebar-content { margin-bottom: 3rem; }

#sidebar .sidebar-content h4 { margin-bottom: 1rem; }

#sidebar .sidebar-content p, #sidebar .sidebar-content ul { margin-top: 1rem; }

ul.pagination { margin: 0 0 3rem; text-align: center; }

.prev-next { margin-top: 5rem; text-align: center; }

#error { text-align: center; display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; -ms-flex-pack: center; justify-content: center; height: 100%; padding-bottom: 6rem; }

#error h1 { font-size: 5rem; }

#error p { margin: 1rem 0; }

.simplesearch h1 { margin-bottom: 0; }

.simplesearch .center { text-align: center; }

.simplesearch input { display: inline-block; max-width: 30rem; font-size: 2rem; }

.simplesearch .search-image { margin-top: 1rem; }

.simplesearch .search-image img { border-radius: 4px; }

@media only all and (max-width: 47.938em) { .simplesearch .search-image img { display: none; } }

@media only all and (max-width: 47.938em) { .simplesearch .search-item { margin-left: 0; } }

.simplesearch .search-wrapper .search-submit { height: 52px; padding: 0 10px; }

.simplesearch .search-wrapper .search-submit img { width: 30px; }

.simplesearch .search-details { float: right; margin-top: -2.5rem; font-weight: bold; font-size: 1rem; color: #777777; }

@media only all and (max-width: 47.938em) { .simplesearch .search-details { float: none; margin-top: -0.2rem; margin-bottom: 1rem; } }

.simplesearch hr { border-bottom: 1px solid #eee; }

.grav-lightslider .lSSlideOuter .lSPager.lSpg > li a { z-index: 1; }

#body > script:first-child + .grav-lightslider { margin-top: -3rem; }

.modular.header-image #header { background-color: rgba(255, 255, 255, 0); box-shadow: none; }

.modular.header-image #header #logo h3 { color: #FFFFFF; }

.modular.header-image #header #navbar a { color: #FFFFFF; }

.modular .showcase { padding-top: 4rem; padding-bottom: 4rem; background-color: #666; background-size: cover; background-position: center; text-align: center; color: #FFFFFF; }

.modular .showcase h1 { font-size: 4rem; margin-top: 0; }

@media only all and (min-width: 48em) and (max-width: 59.938em) { .modular .showcase h1 { font-size: 3rem; } }

@media only all and (max-width: 47.938em) { .modular .showcase h1 { font-size: 2.5rem; line-height: 1.2; margin-bottom: 2.5rem; } }

.modular .showcase .button { color: #FFFFFF; padding: 0.7rem 2rem; margin-top: 2rem; background: rgba(255, 255, 255, 0); border: 1px solid #FFFFFF; border-radius: 3px; box-shadow: none; font-size: 1.3rem; }

.modular .showcase .button:hover { background: rgba(255, 255, 255, 0.2); }

.modular .features { padding: 6rem 0; text-align: center; }

.modular .features:after { content: ""; display: table; clear: both; }

.modular .features h2 { margin: 0; line-height: 100%; }

.modular .features p { margin: 1rem 0; font-size: 1.2rem; }

@media only all and (max-width: 47.938em) { .modular .features p { font-size: 1rem; } }

.modular .features .feature-items { margin-top: 2rem; }

@supports not (flex-wrap: wrap) { .modular .features .feature-items { overflow: hidden; } }

.modular .features .feature { display: block; float: left; width: 25%; vertical-align: top; margin-top: 2rem; margin-bottom: 1rem; }

@media only all and (min-width: 30.063em) and (max-width: 47.938em) { .modular .features .feature { margin-top: 1rem; width: 50%; } }

@media only all and (max-width: 30em) { .modular .features .feature { margin-top: 1rem; width: 100%; } }

.modular .features .feature i.fa { font-size: 2rem; color: #1BB3E9; }

.modular .features .feature h4 { margin: 0; font-size: 1.1rem; }

.modular .features .feature p { display: inline-block; font-size: 1rem; margin: 0.2rem 0 1rem; }

.modular .features.big { text-align: center; }

.modular .features.big .feature { width: 50%; }

@media only all and (max-width: 30em) { .modular .features.big .feature { margin-top: 1rem; width: 100%; } }

.modular .features.big i.fa { font-size: 3rem; float: left; }

.modular .features.big .feature-content { padding-right: 2rem; }

.modular .features.big .feature-content.icon-offset { margin-left: 5rem; }

.modular .features.big .feature-content h4 { font-size: 1.3rem; text-align: left; }

.modular .features.big .feature-content p { padding: 0; text-align: left; }

.callout { background: #f6f6f6; padding: 6rem 0.938rem; }

@media only all and (max-width: 59.938em) { .callout { text-align: center; } }

.callout .align-left { float: left; margin-right: 2rem; }

@media only all and (max-width: 59.938em) { .callout .align-left { float: none; margin-right: 0; } }

.callout .align-right { float: right; margin-left: 2rem; }

@media only all and (max-width: 59.938em) { .callout .align-right { float: none; margin-left: 0; } }

.callout img { border-radius: 3px; }

.modular .modular-row:last-child { margin-bottom: 2rem; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuY3NzIiwic291cmNlcyI6WyJ0ZW1wbGF0ZS5zY3NzIiwidmVuZG9yL2JvdXJib24vX2JvdXJib24uc2NzcyIsInZlbmRvci9ib3VyYm9uL3NldHRpbmdzL19wcmVmaXhlci5zY3NzIiwidmVuZG9yL2JvdXJib24vc2V0dGluZ3MvX3B4LXRvLWVtLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9oZWxwZXJzL19jb252ZXJ0LXVuaXRzLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9oZWxwZXJzL19ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9oZWxwZXJzL19pcy1udW0uc2NzcyIsInZlbmRvci9ib3VyYm9uL2hlbHBlcnMvX2xpbmVhci1hbmdsZS1wYXJzZXIuc2NzcyIsInZlbmRvci9ib3VyYm9uL2hlbHBlcnMvX2xpbmVhci1ncmFkaWVudC1wYXJzZXIuc2NzcyIsInZlbmRvci9ib3VyYm9uL2hlbHBlcnMvX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9oZWxwZXJzL19saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9oZWxwZXJzL19yYWRpYWwtYXJnLXBhcnNlci5zY3NzIiwidmVuZG9yL2JvdXJib24vaGVscGVycy9fcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsInZlbmRvci9ib3VyYm9uL2hlbHBlcnMvX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIuc2NzcyIsInZlbmRvci9ib3VyYm9uL2hlbHBlcnMvX3JlbmRlci1ncmFkaWVudHMuc2NzcyIsInZlbmRvci9ib3VyYm9uL2hlbHBlcnMvX3NoYXBlLXNpemUtc3RyaXBwZXIuc2NzcyIsInZlbmRvci9ib3VyYm9uL2hlbHBlcnMvX3N0ci10by1udW0uc2NzcyIsInZlbmRvci9ib3VyYm9uL2Z1bmN0aW9ucy9fYXNzaWduLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9mdW5jdGlvbnMvX2NvbG9yLWxpZ2h0bmVzcy5zY3NzIiwidmVuZG9yL2JvdXJib24vZnVuY3Rpb25zL19mbGV4LWdyaWQuc2NzcyIsInZlbmRvci9ib3VyYm9uL2Z1bmN0aW9ucy9fZ29sZGVuLXJhdGlvLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9mdW5jdGlvbnMvX2dyaWQtd2lkdGguc2NzcyIsInZlbmRvci9ib3VyYm9uL2Z1bmN0aW9ucy9fbW9kdWxhci1zY2FsZS5zY3NzIiwidmVuZG9yL2JvdXJib24vZnVuY3Rpb25zL19weC10by1lbS5zY3NzIiwidmVuZG9yL2JvdXJib24vZnVuY3Rpb25zL19weC10by1yZW0uc2NzcyIsInZlbmRvci9ib3VyYm9uL2Z1bmN0aW9ucy9fc3RyaXAtdW5pdHMuc2NzcyIsInZlbmRvci9ib3VyYm9uL2Z1bmN0aW9ucy9fdGludC1zaGFkZS5zY3NzIiwidmVuZG9yL2JvdXJib24vZnVuY3Rpb25zL190cmFuc2l0aW9uLXByb3BlcnR5LW5hbWUuc2NzcyIsInZlbmRvci9ib3VyYm9uL2Z1bmN0aW9ucy9fdW5wYWNrLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9jc3MzL19hbmltYXRpb24uc2NzcyIsInZlbmRvci9ib3VyYm9uL2NzczMvX2FwcGVhcmFuY2Uuc2NzcyIsInZlbmRvci9ib3VyYm9uL2NzczMvX2JhY2tmYWNlLXZpc2liaWxpdHkuc2NzcyIsInZlbmRvci9ib3VyYm9uL2NzczMvX2JhY2tncm91bmQuc2NzcyIsInZlbmRvci9ib3VyYm9uL2NzczMvX2JhY2tncm91bmQtaW1hZ2Uuc2NzcyIsInZlbmRvci9ib3VyYm9uL2NzczMvX2JvcmRlci1pbWFnZS5zY3NzIiwidmVuZG9yL2JvdXJib24vY3NzMy9fYm9yZGVyLXJhZGl1cy5zY3NzIiwidmVuZG9yL2JvdXJib24vY3NzMy9fYm94LXNpemluZy5zY3NzIiwidmVuZG9yL2JvdXJib24vY3NzMy9fY2FsYy5zY3NzIiwidmVuZG9yL2JvdXJib24vY3NzMy9fY29sdW1ucy5zY3NzIiwidmVuZG9yL2JvdXJib24vY3NzMy9fZmlsdGVyLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9jc3MzL19mbGV4LWJveC5zY3NzIiwidmVuZG9yL2JvdXJib24vY3NzMy9fZm9udC1mYWNlLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9jc3MzL19oeXBoZW5zLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9jc3MzL19oaWRwaS1tZWRpYS1xdWVyeS5zY3NzIiwidmVuZG9yL2JvdXJib24vY3NzMy9faW1hZ2UtcmVuZGVyaW5nLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9jc3MzL19rZXlmcmFtZXMuc2NzcyIsInZlbmRvci9ib3VyYm9uL2NzczMvX2xpbmVhci1ncmFkaWVudC5zY3NzIiwidmVuZG9yL2JvdXJib24vY3NzMy9fcGVyc3BlY3RpdmUuc2NzcyIsInZlbmRvci9ib3VyYm9uL2NzczMvX3JhZGlhbC1ncmFkaWVudC5zY3NzIiwidmVuZG9yL2JvdXJib24vY3NzMy9fdHJhbnNmb3JtLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9jc3MzL190cmFuc2l0aW9uLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9jc3MzL191c2VyLXNlbGVjdC5zY3NzIiwidmVuZG9yL2JvdXJib24vY3NzMy9fcGxhY2Vob2xkZXIuc2NzcyIsInZlbmRvci9ib3VyYm9uL2FkZG9ucy9fYnV0dG9uLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9hZGRvbnMvX2NsZWFyZml4LnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9hZGRvbnMvX2RpcmVjdGlvbmFsLXZhbHVlcy5zY3NzIiwidmVuZG9yL2JvdXJib24vYWRkb25zL19lbGxpcHNpcy5zY3NzIiwidmVuZG9yL2JvdXJib24vYWRkb25zL19mb250LWZhbWlseS5zY3NzIiwidmVuZG9yL2JvdXJib24vYWRkb25zL19oaWRlLXRleHQuc2NzcyIsInZlbmRvci9ib3VyYm9uL2FkZG9ucy9faHRtbDUtaW5wdXQtdHlwZXMuc2NzcyIsInZlbmRvci9ib3VyYm9uL2FkZG9ucy9fcG9zaXRpb24uc2NzcyIsInZlbmRvci9ib3VyYm9uL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsInZlbmRvci9ib3VyYm9uL2FkZG9ucy9fcmV0aW5hLWltYWdlLnNjc3MiLCJ2ZW5kb3IvYm91cmJvbi9hZGRvbnMvX3NpemUuc2NzcyIsInZlbmRvci9ib3VyYm9uL2FkZG9ucy9fdGltaW5nLWZ1bmN0aW9ucy5zY3NzIiwidmVuZG9yL2JvdXJib24vYWRkb25zL190cmlhbmdsZS5zY3NzIiwidmVuZG9yL2JvdXJib24vYWRkb25zL193b3JkLXdyYXAuc2NzcyIsInZlbmRvci9ib3VyYm9uL19ib3VyYm9uLWRlcHJlY2F0ZWQtdXBjb21pbmcuc2NzcyIsImNvbmZpZ3VyYXRpb24vbnVjbGV1cy9fYmFzZS5zY3NzIiwiY29uZmlndXJhdGlvbi9udWNsZXVzL19jb3JlLnNjc3MiLCJjb25maWd1cmF0aW9uL251Y2xldXMvX2JyZWFrcG9pbnRzLnNjc3MiLCJjb25maWd1cmF0aW9uL251Y2xldXMvX2xheW91dC5zY3NzIiwiY29uZmlndXJhdGlvbi9udWNsZXVzL190eXBvZ3JhcGh5LnNjc3MiLCJjb25maWd1cmF0aW9uL251Y2xldXMvX25hdi5zY3NzIiwiY29uZmlndXJhdGlvbi90ZW1wbGF0ZS9fYmFzZS5zY3NzIiwiY29uZmlndXJhdGlvbi90ZW1wbGF0ZS9fY29sb3JzLnNjc3MiLCJjb25maWd1cmF0aW9uL3RlbXBsYXRlL190eXBvZ3JhcGh5LnNjc3MiLCJjb25maWd1cmF0aW9uL3RlbXBsYXRlL19idWxsZXRzLnNjc3MiLCJjb25maWd1cmF0aW9uL3RlbXBsYXRlL192YXJpYWJsZXMuc2NzcyIsIm51Y2xldXMvZnVuY3Rpb25zL19iYXNlLnNjc3MiLCJudWNsZXVzL2Z1bmN0aW9ucy9fZGlyZWN0aW9uLnNjc3MiLCJudWNsZXVzL2Z1bmN0aW9ucy9fcmFuZ2Uuc2NzcyIsIm51Y2xldXMvbWl4aW5zL19iYXNlLnNjc3MiLCJudWNsZXVzL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyIsIm51Y2xldXMvbWl4aW5zL191dGlsaXRpZXMuc2NzcyIsInRlbXBsYXRlL21vZHVsZXMvX2Jhc2Uuc2NzcyIsInRlbXBsYXRlL21vZHVsZXMvX2J1dHRvbnMuc2NzcyIsInRlbXBsYXRlL19jb3JlLnNjc3MiLCJ0ZW1wbGF0ZS9fZm9udHMuc2NzcyIsInRlbXBsYXRlL19leHRlbnNpb25zLnNjc3MiLCJ0ZW1wbGF0ZS9faGVhZGVyLnNjc3MiLCJ0ZW1wbGF0ZS9fZm9vdGVyLnNjc3MiLCJ0ZW1wbGF0ZS9fdHlwb2dyYXBoeS5zY3NzIiwidGVtcGxhdGUvX2Zvcm1zLnNjc3MiLCJ0ZW1wbGF0ZS9fdGFibGVzLnNjc3MiLCJ0ZW1wbGF0ZS9fYnV0dG9ucy5zY3NzIiwidGVtcGxhdGUvX2J1bGxldHMuc2NzcyIsInRlbXBsYXRlL19wYW5lbC5zY3NzIiwidGVtcGxhdGUvX2Jsb2cuc2NzcyIsInRlbXBsYXRlL19lcnJvcnMuc2NzcyIsInRlbXBsYXRlL19zaW1wbGVzZWFyY2guc2NzcyIsInRlbXBsYXRlL19jdXN0b20uc2NzcyIsInRlbXBsYXRlL21vZHVsYXIvX2FsbC5zY3NzIiwidGVtcGxhdGUvbW9kdWxhci9fc2hvd2Nhc2Uuc2NzcyIsInRlbXBsYXRlL21vZHVsYXIvX2ZlYXR1cmVzLnNjc3MiLCJ0ZW1wbGF0ZS9tb2R1bGFyL190ZXh0LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUkVRVUlSRUQgREVQRU5ERU5DSUVTIC0gRE8gTk9UIENIQU5HRVxuXG4vLyBMb2FkIFRoaXJkIFBhcnR5IExpYnJhcmllc1xuQGltcG9ydCBcInZlbmRvci9ib3VyYm9uL2JvdXJib25cIjtcblxuLy8gTG9hZCBOdWNsZXVzIENvbmZpZ3VyYXRpb25cbkBpbXBvcnQgXCJjb25maWd1cmF0aW9uL251Y2xldXMvYmFzZVwiO1xuXG4vLyBMb2FkIFRlbXBsYXRlIENvbmZpZ3VyYXRpb25cbkBpbXBvcnQgXCJjb25maWd1cmF0aW9uL3RlbXBsYXRlL2Jhc2VcIjtcblxuLy8gTG9hZCBOdWNsZXVzIE1peGlucyBhbmQgRnVuY3Rpb25zXG5AaW1wb3J0IFwibnVjbGV1cy9mdW5jdGlvbnMvYmFzZVwiO1xuQGltcG9ydCBcIm51Y2xldXMvbWl4aW5zL2Jhc2VcIjtcblxuLy8gTG9hZCBUZW1wbGF0ZSBMaWJyYXJ5XG5AaW1wb3J0IFwidGVtcGxhdGUvbW9kdWxlcy9iYXNlXCI7XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBURU1QTEFURSBDT01QT05FTlRTXG5cbi8vIENvcmVcbkBpbXBvcnQgXCJ0ZW1wbGF0ZS9jb3JlXCI7XG5AaW1wb3J0IFwidGVtcGxhdGUvZm9udHNcIjtcblxuLy8gRXh0ZW5zaW9uc1xuQGltcG9ydCBcInRlbXBsYXRlL2V4dGVuc2lvbnNcIjtcblxuLy8gSGVhZGVyXG5AaW1wb3J0IFwidGVtcGxhdGUvaGVhZGVyXCI7XG5cbi8vIEZvb3RlclxuQGltcG9ydCBcInRlbXBsYXRlL2Zvb3RlclwiO1xuXG4vLyBUeXBvZ3JhcGh5XG5AaW1wb3J0IFwidGVtcGxhdGUvdHlwb2dyYXBoeVwiO1xuXG4vLyBGb3Jtc1xuQGltcG9ydCBcInRlbXBsYXRlL2Zvcm1zXCI7XG5cbi8vIFRhYmxlc1xuQGltcG9ydCBcInRlbXBsYXRlL3RhYmxlc1wiO1xuXG4vLyBCdXR0b25zXG5AaW1wb3J0IFwidGVtcGxhdGUvYnV0dG9uc1wiO1xuXG4vLyBCdWxsZXRzXG5AaW1wb3J0IFwidGVtcGxhdGUvYnVsbGV0c1wiO1xuXG4vLyBQdXNoeSBQYW5lbFxuQGltcG9ydCBcInRlbXBsYXRlL3BhbmVsXCI7XG5cbi8vIEJsb2dcbkBpbXBvcnQgXCJ0ZW1wbGF0ZS9ibG9nXCI7XG5cbi8vIEVycm9yc1xuQGltcG9ydCBcInRlbXBsYXRlL2Vycm9yc1wiO1xuXG4vLyBTaW1wbGVTZWFyY2hcbkBpbXBvcnQgXCJ0ZW1wbGF0ZS9zaW1wbGVzZWFyY2hcIjtcblxuLy8gQ3VzdG9tXG5AaW1wb3J0IFwidGVtcGxhdGUvY3VzdG9tXCI7XG5cbi8vIE1vZHVsYXJcbkBpbXBvcnQgXCJ0ZW1wbGF0ZS9tb2R1bGFyL2FsbFwiO1xuIiwiLy8gU2V0dGluZ3NcbkBpbXBvcnQgXCJzZXR0aW5ncy9wcmVmaXhlclwiO1xuQGltcG9ydCBcInNldHRpbmdzL3B4LXRvLWVtXCI7XG5cbi8vIEN1c3RvbSBIZWxwZXJzXG5AaW1wb3J0IFwiaGVscGVycy9jb252ZXJ0LXVuaXRzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9pcy1udW1cIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1hbmdsZS1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1ncmFkaWVudC1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtYXJnLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1ncmFkaWVudC1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JlbmRlci1ncmFkaWVudHNcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3NoYXBlLXNpemUtc3RyaXBwZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3N0ci10by1udW1cIjtcblxuLy8gQ3VzdG9tIEZ1bmN0aW9uc1xuQGltcG9ydCBcImZ1bmN0aW9ucy9hc3NpZ25cIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29sb3ItbGlnaHRuZXNzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2ZsZXgtZ3JpZFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9nb2xkZW4tcmF0aW9cIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZ3JpZC13aWR0aFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9tb2R1bGFyLXNjYWxlXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3B4LXRvLWVtXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3B4LXRvLXJlbVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9zdHJpcC11bml0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy90aW50LXNoYWRlXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3RyYW5zaXRpb24tcHJvcGVydHktbmFtZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy91bnBhY2tcIjtcblxuLy8gQ1NTMyBNaXhpbnNcbkBpbXBvcnQgXCJjc3MzL2FuaW1hdGlvblwiO1xuQGltcG9ydCBcImNzczMvYXBwZWFyYW5jZVwiO1xuQGltcG9ydCBcImNzczMvYmFja2ZhY2UtdmlzaWJpbGl0eVwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvYm9yZGVyLWltYWdlXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3JkZXItcmFkaXVzXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwiY3NzMy9jYWxjXCI7XG5AaW1wb3J0IFwiY3NzMy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9maWx0ZXJcIjtcbkBpbXBvcnQgXCJjc3MzL2ZsZXgtYm94XCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2h5cGhlbnNcIjtcbkBpbXBvcnQgXCJjc3MzL2hpZHBpLW1lZGlhLXF1ZXJ5XCI7XG5AaW1wb3J0IFwiY3NzMy9pbWFnZS1yZW5kZXJpbmdcIjtcbkBpbXBvcnQgXCJjc3MzL2tleWZyYW1lc1wiO1xuQGltcG9ydCBcImNzczMvbGluZWFyLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy9wZXJzcGVjdGl2ZVwiO1xuQGltcG9ydCBcImNzczMvcmFkaWFsLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2Zvcm1cIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zaXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL3VzZXItc2VsZWN0XCI7XG5AaW1wb3J0IFwiY3NzMy9wbGFjZWhvbGRlclwiO1xuXG4vLyBBZGRvbnMgJiBvdGhlciBtaXhpbnNcbkBpbXBvcnQgXCJhZGRvbnMvYnV0dG9uXCI7XG5AaW1wb3J0IFwiYWRkb25zL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiYWRkb25zL2RpcmVjdGlvbmFsLXZhbHVlc1wiO1xuQGltcG9ydCBcImFkZG9ucy9lbGxpcHNpc1wiO1xuQGltcG9ydCBcImFkZG9ucy9mb250LWZhbWlseVwiO1xuQGltcG9ydCBcImFkZG9ucy9oaWRlLXRleHRcIjtcbkBpbXBvcnQgXCJhZGRvbnMvaHRtbDUtaW5wdXQtdHlwZXNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcG9zaXRpb25cIjtcbkBpbXBvcnQgXCJhZGRvbnMvcHJlZml4ZXJcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcmV0aW5hLWltYWdlXCI7XG5AaW1wb3J0IFwiYWRkb25zL3NpemVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdGltaW5nLWZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcImFkZG9ucy90cmlhbmdsZVwiO1xuQGltcG9ydCBcImFkZG9ucy93b3JkLXdyYXBcIjtcblxuLy8gU29vbiB0byBiZSBkZXByZWNhdGVkIE1peGluc1xuQGltcG9ydCBcImJvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZ1wiO1xuIiwiLy8gVmFyaWFibGUgc2V0dGluZ3MgZm9yIC9hZGRvbnMvcHJlZml4ZXIuc2Nzc1xuJHByZWZpeC1mb3Itd2Via2l0OiAgICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3ItbW96aWxsYTogICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3Itb3BlcmE6ICAgICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3Itc3BlYzogICAgICB0cnVlICFkZWZhdWx0OyAvLyByZXF1aXJlZCBmb3Iga2V5ZnJhbWUgbWl4aW5cbiIsIiRlbS1iYXNlOiAxNnB4ICFkZWZhdWx0O1xuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBzdHItdG8tbnVtIGZuLlxuLy8gU291cmNlOiBodHRwOi8vc2Fzc21laXN0ZXIuY29tL2dpc3QvOTY0NzQwOFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQGZ1bmN0aW9uIF9jb252ZXJ0LXVuaXRzKCRudW1iZXIsICR1bml0KSB7XG4gICRzdHJpbmdzOiAncHgnICdjbScgJ21tJyAnJScgJ2NoJyAncGljYScgJ2luJyAnZW0nICdyZW0nICdwdCcgJ3BjJyAnZXgnICd2dycgJ3ZoJyAndm1pbicgJ3ZtYXgnLCAnZGVnJywgJ3JhZCcsICdncmFkJywgJ3R1cm4nO1xuICAkdW5pdHM6ICAgMXB4ICAxY20gIDFtbSAgMSUgIDFjaCAgMXBpY2EgIDFpbiAgMWVtICAxcmVtICAxcHQgIDFwYyAgMWV4ICAxdncgIDF2aCAgMXZtaW4gIDF2bWF4LCAgMWRlZywgIDFyYWQsICAxZ3JhZCwgMXR1cm47XG4gICRpbmRleDogaW5kZXgoJHN0cmluZ3MsICR1bml0KTtcblxuICBAaWYgbm90ICRpbmRleCB7XG4gICAgQHdhcm4gXCJVbmtub3duIHVuaXQgYCN7JHVuaXR9YC5cIjtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEByZXR1cm4gJG51bWJlciAqIG50aCgkdW5pdHMsICRpbmRleCk7XG59XG4iLCJAZnVuY3Rpb24gX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXR5cGUsICRncmFkaWVudC1wb3NpdGlvbnMpIHtcbiAgQGlmICRncmFkaWVudC1wb3NpdGlvbnNcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIpXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcbiAgfVxuICBAZWxzZSBpZiAkZ3JhZGllbnQtcG9zaXRpb25zXG4gIGFuZCAoJGdyYWRpZW50LXR5cGUgPT0gcmFkaWFsKVxuICBhbmQgKHR5cGUtb2YoJGdyYWRpZW50LXBvc2l0aW9ucykgIT0gY29sb3IpIHtcbiAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvc2l0aW9ucyk7XG4gIH1cbiAgQHJldHVybiAkZ3JhZGllbnQtcG9zaXRpb25zO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gSGVscGVyIGZvciBsaW5lYXItZ3JhZGllbnQtcGFyc2VyXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gX2lzLW51bSgkY2hhcikge1xuICAkdmFsdWVzOiAnMCcgJzEnICcyJyAnMycgJzQnICc1JyAnNicgJzcnICc4JyAnOScgMCAxIDIgMyA0IDUgNiA3IDggOTtcbiAgJGluZGV4OiBpbmRleCgkdmFsdWVzLCAkY2hhcik7XG4gIEByZXR1cm4gaWYoJGluZGV4LCB0cnVlLCBmYWxzZSk7XG59XG4iLCIvLyBQcml2YXRlIGZ1bmN0aW9uIGZvciBsaW5lYXItZ3JhZGllbnQtcGFyc2VyXG5AZnVuY3Rpb24gX2xpbmVhci1hbmdsZS1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4KSB7XG4gICRvZmZzZXQ6IG51bGw7XG4gICR1bml0LXNob3J0OiAgc3RyLXNsaWNlKCRmaXJzdC12YWwsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkgLSAyLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcbiAgJHVuaXQtbG9uZzogICBzdHItc2xpY2UoJGZpcnN0LXZhbCwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSAtIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuXG4gIEBpZiAoJHVuaXQtbG9uZyA9PSBcImdyYWRcIikgb3JcbiAgICAgICgkdW5pdC1sb25nID09IFwidHVyblwiKSB7XG4gICAgJG9mZnNldDogaWYoJHVuaXQtbG9uZyA9PSBcImdyYWRcIiwgLTEwMGdyYWQgKiAzLCAtMC43NXR1cm4pO1xuICB9XG5cbiAgQGVsc2UgaWYgKCR1bml0LXNob3J0ID09IFwiZGVnXCIpIG9yXG4gICAgICAgICAgICgkdW5pdC1zaG9ydCA9PSBcInJhZFwiKSB7XG4gICAgJG9mZnNldDogaWYoJHVuaXQtc2hvcnQgPT0gXCJkZWdcIiwgLTkwICogMywgMS42cmFkKTtcbiAgfVxuXG4gIEBpZiAkb2Zmc2V0IHtcbiAgICAkbnVtOiBfc3RyLXRvLW51bSgkZmlyc3QtdmFsKTtcblxuICAgIEByZXR1cm4gKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAoJG9mZnNldCAtICRudW0pICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpIHtcbiAgJGltYWdlOiB1bnF1b3RlKCRpbWFnZSk7XG4gICRncmFkaWVudHM6ICgpO1xuICAkc3RhcnQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiKFwiKTtcbiAgJGVuZDogc3RyLWluZGV4KCRpbWFnZSwgXCIsXCIpO1xuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XG5cbiAgJHByZWZpeDogc3RyLXNsaWNlKCRpbWFnZSwgMCwgJHN0YXJ0KTtcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcblxuICAkaGFzLW11bHRpcGxlLXZhbHM6IHN0ci1pbmRleCgkZmlyc3QtdmFsLCBcIiBcIik7XG4gICRoYXMtc2luZ2xlLXBvc2l0aW9uOiB1bnF1b3RlKF9wb3NpdGlvbi1mbGlwcGVyKCRmaXJzdC12YWwpICsgXCJcIik7XG4gICRoYXMtYW5nbGU6IF9pcy1udW0oc3RyLXNsaWNlKCRmaXJzdC12YWwsIDAsIDApKTtcblxuICBAaWYgJGhhcy1tdWx0aXBsZS12YWxzIHtcbiAgICAkZ3JhZGllbnRzOiBfbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgsICRoYXMtbXVsdGlwbGUtdmFscyk7XG4gIH1cblxuICBAZWxzZSBpZiAkaGFzLXNpbmdsZS1wb3NpdGlvbiAhPSBcIlwiIHtcbiAgICAkcG9zOiB1bnF1b3RlKCRoYXMtc2luZ2xlLXBvc2l0aW9uICsgXCJcIik7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJHByZWZpeCArIFwidG8gXCIgKyAkcG9zICsgJHN1ZmZpeFxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiAkaGFzLWFuZ2xlIHtcbiAgICAvLyBSb3RhdGUgZGVncmVlIGZvciB3ZWJraXRcbiAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWFuZ2xlLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgpO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgQHJldHVybiAkZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkcG9zKSB7XG4gICR0eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XG4gICRzcGVjOiBudWxsO1xuICAkZGVncmVlOiBudWxsO1xuICAkc2lkZTogbnVsbDtcbiAgJGNvcm5lcjogbnVsbDtcbiAgJGxlbmd0aDogbGVuZ3RoKCRwb3MpO1xuICAvLyBQYXJzZSBTaWRlIGFuZCBjb3JuZXIgcG9zaXRpb25zXG4gIEBpZiAoJGxlbmd0aCA+IDEpIHtcbiAgICBAaWYgbnRoKCRwb3MsIDEpID09IFwidG9cIiB7IC8vIE5ld2VyIHN5bnRheFxuICAgICAgJHNpZGU6IG50aCgkcG9zLCAyKTtcblxuICAgICAgQGlmICRsZW5ndGggPT0gMiB7IC8vIGVnLiB0byB0b3BcbiAgICAgICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHlcbiAgICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDIpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7IC8vIGVnLiB0byB0b3AgbGVmdFxuICAgICAgICAkY29ybmVyOiBudGgoJHBvcywgMyk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMiB7IC8vIE9sZGVyIHN5bnRheCAoXCJ0b3AgbGVmdFwiKVxuICAgICAgJHNpZGU6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAxKSk7XG4gICAgICAkY29ybmVyOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xuICAgIH1cblxuICAgIEBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgbGVmdFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgcmlnaHRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJyaWdodCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIHJpZ2h0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwibGVmdCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIGxlZnRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICAkc3BlYzogdG8gJHNpZGUgJGNvcm5lcjtcbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDEge1xuICAgIC8vIFN3YXAgZm9yIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5XG4gICAgQGlmICR0eXBlID09IHN0cmluZyB7XG4gICAgICAkZGVncmVlOiAkcG9zO1xuICAgICAgJHNwZWM6IHRvIF9wb3NpdGlvbi1mbGlwcGVyKCRwb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkZGVncmVlOiAtMjcwIC0gJHBvczsgLy9yb3RhdGUgdGhlIGdyYWRpZW50IG9wcG9zaXRlIGZyb20gc3BlY1xuICAgICAgJHNwZWM6ICRwb3M7XG4gICAgfVxuICB9XG4gICRkZWdyZWU6IHVucXVvdGUoJGRlZ3JlZSArIFwiLFwiKTtcbiAgJHNwZWM6ICAgdW5xdW90ZSgkc3BlYyArIFwiLFwiKTtcbiAgQHJldHVybiAkZGVncmVlICRzcGVjO1xufVxuXG5AZnVuY3Rpb24gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcykge1xuIEByZXR1cm4gaWYoJHBvcyA9PSBsZWZ0LCByaWdodCwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gcmlnaHQsIGxlZnQsIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IHRvcCwgYm90dG9tLCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSBib3R0b20sIHRvcCwgbnVsbCk7XG59XG4iLCIvLyBQcml2YXRlIGZ1bmN0aW9uIGZvciBsaW5lYXItZ3JhZGllbnQtcGFyc2VyXG5AZnVuY3Rpb24gX2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4LCAkaGFzLW11bHRpcGxlLXZhbHMpIHtcbiAgJHZhbC0xOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgMCwgJGhhcy1tdWx0aXBsZS12YWxzIC0gMSApO1xuICAkdmFsLTI6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAkaGFzLW11bHRpcGxlLXZhbHMgKyAxLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcbiAgJHZhbC0zOiBudWxsO1xuICAkaGFzLXZhbC0zOiBzdHItaW5kZXgoJHZhbC0yLCBcIiBcIik7XG5cbiAgQGlmICRoYXMtdmFsLTMge1xuICAgICR2YWwtMzogc3RyLXNsaWNlKCR2YWwtMiwgJGhhcy12YWwtMyArIDEsIHN0ci1sZW5ndGgoJHZhbC0yKSk7XG4gICAgJHZhbC0yOiBzdHItc2xpY2UoJHZhbC0yLCAwLCAkaGFzLXZhbC0zIC0gMSk7XG4gIH1cblxuICAkcG9zOiBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTEpIF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMikgX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0zKTtcbiAgJHBvczogdW5xdW90ZSgkcG9zICsgXCJcIik7XG5cbiAgLy8gVXNlIG9sZCBzcGVjIGZvciB3ZWJraXRcbiAgQGlmICR2YWwtMSA9PSBcInRvXCIge1xuICAgIEByZXR1cm4gKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICAvLyBCcmluZyB0aGUgY29kZSB1cCB0byBzcGVjXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkcHJlZml4ICsgXCJ0byBcIiArICRwb3MgKyAkc3VmZml4XG4gICAgKTtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtYXJnLXBhcnNlcigkRzEsICRHMiwgJHBvcywgJHNoYXBlLXNpemUpIHtcbiAgQGVhY2ggJHZhbHVlIGluICRHMSwgJEcyIHtcbiAgICAkZmlyc3QtdmFsOiBudGgoJHZhbHVlLCAxKTtcbiAgICAkcG9zLXR5cGU6ICB0eXBlLW9mKCRmaXJzdC12YWwpO1xuICAgICRzcGVjLWF0LWluZGV4OiBudWxsO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHNwZWMgd2FzIHBhc3NlZCB0byBtaXhpblxuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbGlzdCB7XG4gICAgICAkc3BlYy1hdC1pbmRleDogaWYoaW5kZXgoJHZhbHVlLCBhdCksIGluZGV4KCR2YWx1ZSwgYXQpLCBmYWxzZSk7XG4gICAgfVxuICAgIEBpZiAkc3BlYy1hdC1pbmRleCB7XG4gICAgICBAaWYgJHNwZWMtYXQtaW5kZXggPiAxIHtcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAoJHNwZWMtYXQtaW5kZXggLSAxKSB7XG4gICAgICAgICAgJHNoYXBlLXNpemU6ICRzaGFwZS1zaXplIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgICBAZm9yICRpIGZyb20gKCRzcGVjLWF0LWluZGV4ICsgMSkgdGhyb3VnaCBsZW5ndGgoJHZhbHVlKSB7XG4gICAgICAgICAgJHBvczogJHBvcyBudGgoJHZhbHVlLCAkaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRzcGVjLWF0LWluZGV4ID09IDEge1xuICAgICAgICBAZm9yICRpIGZyb20gKCRzcGVjLWF0LWluZGV4ICsgMSkgdGhyb3VnaCBsZW5ndGgoJHZhbHVlKSB7XG4gICAgICAgICAgJHBvczogJHBvcyBudGgoJHZhbHVlLCAkaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRHMTogbnVsbDtcbiAgICB9XG5cbiAgICAvLyBJZiBub3Qgc3BlYyBjYWxjdWxhdGUgY29ycmVjdCB2YWx1ZXNcbiAgICBAZWxzZSB7XG4gICAgICBAaWYgKCRwb3MtdHlwZSAhPSBjb2xvcikgb3IgKCRmaXJzdC12YWwgIT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgICAgIEBpZiAoJHBvcy10eXBlID09IG51bWJlcilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjZW50ZXJcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJ0b3BcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJyaWdodFwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImJvdHRvbVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImxlZnRcIikge1xuXG4gICAgICAgICAgJHBvczogJHZhbHVlO1xuXG4gICAgICAgICAgQGlmICRwb3MgPT0gJEcxIHtcbiAgICAgICAgICAgICRHMTogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAZWxzZSBpZlxuICAgICAgICAgICAoJGZpcnN0LXZhbCA9PSBcImVsbGlwc2VcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjaXJjbGVcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjbG9zZXN0LXNpZGVcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjbG9zZXN0LWNvcm5lclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImZhcnRoZXN0LXNpZGVcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJmYXJ0aGVzdC1jb3JuZXJcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb250YWluXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY292ZXJcIikge1xuXG4gICAgICAgICAgJHNoYXBlLXNpemU6ICR2YWx1ZTtcblxuICAgICAgICAgIEBpZiAkdmFsdWUgPT0gJEcxIHtcbiAgICAgICAgICAgICRHMTogbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAZWxzZSBpZiAkdmFsdWUgPT0gJEcyIHtcbiAgICAgICAgICAgICRHMjogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiAkRzEsICRHMiwgJHBvcywgJHNoYXBlLXNpemU7XG59XG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC1wb3MpIHtcbiAgJHNoYXBlLXNpemU6IG50aCgkZ3JhZGllbnQtcG9zLCAxKTtcbiAgJHBvczogICAgICAgIG50aCgkZ3JhZGllbnQtcG9zLCAyKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xuXG4gICRwcmUtc3BlYzogdW5xdW90ZShpZigkcG9zLCBcIiN7JHBvc30sIFwiLCBudWxsKSlcbiAgICAgICAgICAgICB1bnF1b3RlKGlmKCRzaGFwZS1zaXplLCBcIiN7JHNoYXBlLXNpemV9LFwiLCBudWxsKSk7XG4gICRwb3Mtc3BlYzogaWYoJHBvcywgXCJhdCAjeyRwb3N9XCIsIG51bGwpO1xuXG4gICRzcGVjOiBcIiN7JHNoYXBlLXNpemUtc3BlY30gI3skcG9zLXNwZWN9XCI7XG5cbiAgLy8gQWRkIGNvbW1hXG4gIEBpZiAoJHNwZWMgIT0gJyAgJykge1xuICAgICRzcGVjOiBcIiN7JHNwZWN9LFwiXG4gIH1cblxuICBAcmV0dXJuICRwcmUtc3BlYyAkc3BlYztcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpIHtcbiAgJGltYWdlOiB1bnF1b3RlKCRpbWFnZSk7XG4gICRncmFkaWVudHM6ICgpO1xuICAkc3RhcnQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiKFwiKTtcbiAgJGVuZDogc3RyLWluZGV4KCRpbWFnZSwgXCIsXCIpO1xuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XG5cbiAgJHByZWZpeDogc3RyLXNsaWNlKCRpbWFnZSwgMCwgJHN0YXJ0KTtcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcblxuICAkaXMtc3BlYy1zeW50YXg6IHN0ci1pbmRleCgkZmlyc3QtdmFsLCBcImF0XCIpO1xuXG4gIEBpZiAkaXMtc3BlYy1zeW50YXggYW5kICRpcy1zcGVjLXN5bnRheCA+IDEge1xuICAgICRrZXl3b3JkOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgJGlzLXNwZWMtc3ludGF4IC0gMik7XG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuICAgICRwb3M6IGFwcGVuZCgkcG9zLCAka2V5d29yZCwgY29tbWEpO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgIClcbiAgfVxuXG4gIEBlbHNlIGlmICRpcy1zcGVjLXN5bnRheCA9PSAxIHtcbiAgICAkcG9zOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGlzLXNwZWMtc3ludGF4ICsgMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKVxuICB9XG5cbiAgQGVsc2UgaWYgc3RyLWluZGV4KCRpbWFnZSwgXCJjb3ZlclwiKSBvciBzdHItaW5kZXgoJGltYWdlLCBcImNvbnRhaW5cIikge1xuICAgIEB3YXJuIFwiUmFkaWFsLWdyYWRpZW50IG5lZWRzIHRvIGJlIHVwZGF0ZWQgdG8gY29uZm9ybSB0byBsYXRlc3Qgc3BlYy5cIjtcblxuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogbnVsbCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgIClcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKVxuICB9XG5cbiAgQHJldHVybiAkZ3JhZGllbnRzO1xufVxuIiwiLy8gVXNlciBmb3IgbGluZWFyIGFuZCByYWRpYWwgZ3JhZGllbnRzIHdpdGhpbiBiYWNrZ3JvdW5kLWltYWdlIG9yIGJvcmRlci1pbWFnZSBwcm9wZXJ0aWVzXG5cbkBmdW5jdGlvbiBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnRzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcjogZmFsc2UpIHtcbiAgJHByZS1zcGVjOiBudWxsO1xuICAkc3BlYzogbnVsbDtcbiAgJHZlbmRvci1ncmFkaWVudHM6IG51bGw7XG4gIEBpZiAkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIge1xuICAgIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zIHtcbiAgICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IHJhZGlhbCB7XG4gICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XG4gICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gIH1cblxuICBAaWYgJHZlbmRvciB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IC0jeyR2ZW5kb3J9LSN7JGdyYWRpZW50LXR5cGV9LWdyYWRpZW50KCN7JHByZS1zcGVjfSAkZ3JhZGllbnRzKTtcbiAgfVxuICBAZWxzZSBpZiAkdmVuZG9yID09IGZhbHNlIHtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogXCIjeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRzcGVjfSAjeyRncmFkaWVudHN9KVwiO1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiB1bnF1b3RlKCR2ZW5kb3ItZ3JhZGllbnRzKTtcbiAgfVxuICBAcmV0dXJuICR2ZW5kb3ItZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9zaGFwZS1zaXplLXN0cmlwcGVyKCRzaGFwZS1zaXplKSB7XG4gICRzaGFwZS1zaXplLXNwZWM6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkc2hhcGUtc2l6ZSB7XG4gICAgQGlmICgkdmFsdWUgPT0gXCJjb3ZlclwiKSBvciAoJHZhbHVlID09IFwiY29udGFpblwiKSB7XG4gICAgICAkdmFsdWU6IG51bGw7XG4gICAgfVxuICAgICRzaGFwZS1zaXplLXNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyR2YWx1ZX1cIjtcbiAgfVxuICBAcmV0dXJuICRzaGFwZS1zaXplLXNwZWM7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGxpbmVhci9yYWRpYWwtZ3JhZGllbnQtcGFyc2Vycy5cbi8vIFNvdXJjZTogaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0Lzk2NDc0MDhcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBmdW5jdGlvbiBfc3RyLXRvLW51bSgkc3RyaW5nKSB7XG4gIC8vIE1hdHJpY2VzXG4gICRzdHJpbmdzOiAnMCcgJzEnICcyJyAnMycgJzQnICc1JyAnNicgJzcnICc4JyAnOSc7XG4gICRudW1iZXJzOiAgMCAgIDEgICAyICAgMyAgIDQgICA1ICAgNiAgIDcgICA4ICAgOTtcblxuICAvLyBSZXN1bHRcbiAgJHJlc3VsdDogMDtcbiAgJGRpdmlkZXI6IDA7XG4gICRtaW51czogZmFsc2U7XG5cbiAgLy8gTG9vcGluZyB0aHJvdWdoIGFsbCBjaGFyYWN0ZXJzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyLWxlbmd0aCgkc3RyaW5nKSB7XG4gICAgJGNoYXJhY3Rlcjogc3RyLXNsaWNlKCRzdHJpbmcsICRpLCAkaSk7XG4gICAgJGluZGV4OiBpbmRleCgkc3RyaW5ncywgJGNoYXJhY3Rlcik7XG5cbiAgICBAaWYgJGNoYXJhY3RlciA9PSAnLScge1xuICAgICAgJG1pbnVzOiB0cnVlO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRjaGFyYWN0ZXIgPT0gJy4nIHtcbiAgICAgICRkaXZpZGVyOiAxO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBub3QgJGluZGV4IHtcbiAgICAgICAgJHJlc3VsdDogaWYoJG1pbnVzLCAkcmVzdWx0ICogLTEsICRyZXN1bHQpO1xuICAgICAgICBAcmV0dXJuIF9jb252ZXJ0LXVuaXRzKCRyZXN1bHQsIHN0ci1zbGljZSgkc3RyaW5nLCAkaSkpO1xuICAgICAgfVxuXG4gICAgICAkbnVtYmVyOiBudGgoJG51bWJlcnMsICRpbmRleCk7XG5cbiAgICAgIEBpZiAkZGl2aWRlciA9PSAwIHtcbiAgICAgICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSB7XG4gICAgICAgIC8vIE1vdmUgdGhlIGRlY2ltYWwgZG90IHRvIHRoZSBsZWZ0XG4gICAgICAgICRkaXZpZGVyOiAkZGl2aWRlciAqIDEwO1xuICAgICAgICAkbnVtYmVyOiAkbnVtYmVyIC8gJGRpdmlkZXI7XG4gICAgICB9XG5cbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyAkbnVtYmVyO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGlmKCRtaW51cywgJHJlc3VsdCAqIC0xLCAkcmVzdWx0KTtcbn1cbiIsIkBmdW5jdGlvbiBhc3NpZ24taW5wdXRzKCRpbnB1dHMsICRwc2V1ZG86IG51bGwpIHtcbiAgJGxpc3QgOiAoKTtcblxuICBAZWFjaCAkaW5wdXQgaW4gJGlucHV0cyB7XG4gICAgJGlucHV0OiB1bnF1b3RlKCRpbnB1dCk7XG4gICAgJGlucHV0OiBpZigkcHNldWRvLCAkaW5wdXQgKyBcIjpcIiArICRwc2V1ZG8sICRpbnB1dCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGlucHV0LCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufSIsIi8vIFByb2dyYW1hdGljYWxseSBkZXRlcm1pbmVzIHdoZXRoZXIgYSBjb2xvciBpcyBsaWdodCBvciBkYXJrXG4vLyBSZXR1cm5zIGEgYm9vbGVhblxuLy8gTW9yZSBkZXRhaWxzIGhlcmUgaHR0cDovL3JvYm90cy50aG91Z2h0Ym90LmNvbS9jbG9zZXItbG9vay1jb2xvci1saWdodG5lc3NcblxuQGZ1bmN0aW9uIGlzLWxpZ2h0KCRoZXgtY29sb3IpIHtcbiAgJC1sb2NhbC1yZWQ6IHJlZChyZ2JhKCRoZXgtY29sb3IsIDEuMCkpO1xuICAkLWxvY2FsLWdyZWVuOiBncmVlbihyZ2JhKCRoZXgtY29sb3IsIDEuMCkpO1xuICAkLWxvY2FsLWJsdWU6IGJsdWUocmdiYSgkaGV4LWNvbG9yLCAxLjApKTtcblxuICAkLWxvY2FsLWxpZ2h0bmVzczogKCQtbG9jYWwtcmVkICogMC4yMTI2ICsgJC1sb2NhbC1ncmVlbiAqIDAuNzE1MiArICQtbG9jYWwtYmx1ZSAqIDAuMDcyMikgLyAyNTU7XG5cbiAgQHJldHVybiAkLWxvY2FsLWxpZ2h0bmVzcyA+IC42O1xufVxuIiwiLy8gRmxleGlibGUgZ3JpZFxuQGZ1bmN0aW9uIGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMpIHtcbiAgJHdpZHRoOiAkY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJHdpZHRoIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbi8vIEZsZXhpYmxlIGd1dHRlclxuQGZ1bmN0aW9uIGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zLCAkZ3V0dGVyOiAkZmctZ3V0dGVyKSB7XG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJGd1dHRlciAvICRjb250YWluZXItd2lkdGgpO1xufVxuXG4vLyBUaGUgJGZnLWNvbHVtbiwgJGZnLWd1dHRlciBhbmQgJGZnLW1heC1jb2x1bW5zIHZhcmlhYmxlcyBtdXN0IGJlIGRlZmluZWQgaW4geW91ciBiYXNlIHN0eWxlc2hlZXQgdG8gcHJvcGVybHkgdXNlIHRoZSBmbGV4LWdyaWQgZnVuY3Rpb24uXG4vLyBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBmbHVpZCBncmlkIGVxdWF0aW9uICh0YXJnZXQgLyBjb250ZXh0ID0gcmVzdWx0KSBhbmQgdXNlcyBjb2x1bW5zIHRvIGhlbHAgZGVmaW5lIGVhY2guXG4vL1xuLy8gVGhlIGNhbGN1bGF0aW9uIHByZXN1bWVzIHRoYXQgeW91ciBjb2x1bW4gc3RydWN0dXJlIHdpbGwgYmUgbWlzc2luZyB0aGUgbGFzdCBndXR0ZXI6XG4vL1xuLy8gICAtLSBjb2x1bW4gLS0gZ3V0dGVyIC0tIGNvbHVtbiAtLSBndXR0ZXIgLS0gY29sdW1uXG4vL1xuLy8gICRmZy1jb2x1bW46IDYwcHg7ICAgICAgICAgICAgIC8vIENvbHVtbiBXaWR0aFxuLy8gICRmZy1ndXR0ZXI6IDI1cHg7ICAgICAgICAgICAgIC8vIEd1dHRlciBXaWR0aFxuLy8gICRmZy1tYXgtY29sdW1uczogMTI7ICAgICAgICAgIC8vIFRvdGFsIENvbHVtbnMgRm9yIE1haW4gQ29udGFpbmVyXG4vL1xuLy8gIGRpdiB7XG4vLyAgICB3aWR0aDogZmxleC1ncmlkKDQpOyAgICAgICAgLy8gcmV0dXJucyAoMzE1cHggLyA5OTVweCkgPSAzMS42NTgyOSU7XG4vLyAgICBtYXJnaW4tbGVmdDogZmxleC1ndXR0ZXIoKTsgLy8gcmV0dXJucyAoMjVweCAvIDk5NXB4KSA9IDIuNTEyNTYlO1xuLy9cbi8vICAgIHAge1xuLy8gICAgICB3aWR0aDogZmxleC1ncmlkKDIsIDQpOyAgLy8gcmV0dXJucyAoMTQ1cHggLyAzMTVweCkgPSA0Ni4wMzE3NDYlO1xuLy8gICAgICBmbG9hdDogbGVmdDtcbi8vICAgICAgbWFyZ2luOiBmbGV4LWd1dHRlcig0KTsgIC8vIHJldHVybnMgKDI1cHggLyAzMTVweCkgPSA3LjkzNjUwOCU7XG4vLyAgICB9XG4vL1xuLy8gICAgYmxvY2txdW90ZSB7XG4vLyAgICAgIGZsb2F0OiBsZWZ0O1xuLy8gICAgICB3aWR0aDogZmxleC1ncmlkKDIsIDQpOyAvLyByZXR1cm5zICgxNDVweCAvIDMxNXB4KSA9IDQ2LjAzMTc0NiU7XG4vLyAgICB9XG4vLyAgfSIsIkBmdW5jdGlvbiBnb2xkZW4tcmF0aW8oJHZhbHVlLCAkaW5jcmVtZW50KSB7XG4gIEByZXR1cm4gbW9kdWxhci1zY2FsZSgkdmFsdWUsICRpbmNyZW1lbnQsICRnb2xkZW4pXG59XG4iLCJAZnVuY3Rpb24gZ3JpZC13aWR0aCgkbikge1xuICBAcmV0dXJuICRuICogJGd3LWNvbHVtbiArICgkbiAtIDEpICogJGd3LWd1dHRlcjtcbn1cblxuLy8gVGhlICRndy1jb2x1bW4gYW5kICRndy1ndXR0ZXIgdmFyaWFibGVzIG11c3QgYmUgZGVmaW5lZCBpbiB5b3VyIGJhc2Ugc3R5bGVzaGVldCB0byBwcm9wZXJseSB1c2UgdGhlIGdyaWQtd2lkdGggZnVuY3Rpb24uXG4vL1xuLy8gICRndy1jb2x1bW46IDEwMHB4OyAgICAgICAgIC8vIENvbHVtbiBXaWR0aFxuLy8gICRndy1ndXR0ZXI6IDQwcHg7ICAgICAgICAgIC8vIEd1dHRlciBXaWR0aFxuLy9cbi8vICBkaXYge1xuLy8gICAgd2lkdGg6IGdyaWQtd2lkdGgoNCk7ICAgIC8vIHJldHVybnMgNTIwcHg7XG4vLyAgICBtYXJnaW4tbGVmdDogJGd3LWd1dHRlcjsgLy8gcmV0dXJucyA0MHB4O1xuLy8gIH1cbiIsIi8vIFNjYWxpbmcgVmFyaWFibGVzXG4kZ29sZGVuOiAgICAgICAgICAgMS42MTg7XG4kbWlub3Itc2Vjb25kOiAgICAgMS4wNjc7XG4kbWFqb3Itc2Vjb25kOiAgICAgMS4xMjU7XG4kbWlub3ItdGhpcmQ6ICAgICAgMS4yO1xuJG1ham9yLXRoaXJkOiAgICAgIDEuMjU7XG4kcGVyZmVjdC1mb3VydGg6ICAgMS4zMzM7XG4kYXVnbWVudGVkLWZvdXJ0aDogMS40MTQ7XG4kcGVyZmVjdC1maWZ0aDogICAgMS41O1xuJG1pbm9yLXNpeHRoOiAgICAgIDEuNjtcbiRtYWpvci1zaXh0aDogICAgICAxLjY2NztcbiRtaW5vci1zZXZlbnRoOiAgICAxLjc3ODtcbiRtYWpvci1zZXZlbnRoOiAgICAxLjg3NTtcbiRvY3RhdmU6ICAgICAgICAgICAyO1xuJG1ham9yLXRlbnRoOiAgICAgIDIuNTtcbiRtYWpvci1lbGV2ZW50aDogICAyLjY2NztcbiRtYWpvci10d2VsZnRoOiAgICAzO1xuJGRvdWJsZS1vY3RhdmU6ICAgIDQ7XG5cbkBmdW5jdGlvbiBtb2R1bGFyLXNjYWxlKCR2YWx1ZSwgJGluY3JlbWVudCwgJHJhdGlvKSB7XG4gICR2MTogbnRoKCR2YWx1ZSwgMSk7XG4gICR2MjogbnRoKCR2YWx1ZSwgbGVuZ3RoKCR2YWx1ZSkpO1xuICAkdmFsdWU6ICR2MTtcblxuICAvLyBzY2FsZSAkdjIgdG8ganVzdCBhYm92ZSAkdjFcbiAgQHdoaWxlICR2MiA+ICR2MSB7XG4gICAgJHYyOiAoJHYyIC8gJHJhdGlvKTsgLy8gd2lsbCBiZSBvZmYtYnktMVxuICB9XG4gIEB3aGlsZSAkdjIgPCAkdjEge1xuICAgICR2MjogKCR2MiAqICRyYXRpbyk7IC8vIHdpbGwgZml4IG9mZi1ieS0xXG4gIH1cblxuICAvLyBjaGVjayBBRlRFUiBzY2FsaW5nICR2MiB0byBwcmV2ZW50IGRvdWJsZS1jb3VudGluZyBjb3JuZXItY2FzZVxuICAkZG91YmxlLXN0cmFuZGVkOiAkdjIgPiAkdjE7XG5cbiAgQGlmICRpbmNyZW1lbnQgPiAwIHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRpbmNyZW1lbnQge1xuICAgICAgQGlmICRkb3VibGUtc3RyYW5kZWQgYW5kICgkdjEgKiAkcmF0aW8pID4gJHYyIHtcbiAgICAgICAgJHZhbHVlOiAkdjI7XG4gICAgICAgICR2MjogKCR2MiAqICRyYXRpbyk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHYxOiAoJHYxICogJHJhdGlvKTtcbiAgICAgICAgJHZhbHVlOiAkdjE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRpbmNyZW1lbnQgPCAwIHtcbiAgICAvLyBhZGp1c3QgJHYyIHRvIGp1c3QgYmVsb3cgJHYxXG4gICAgQGlmICRkb3VibGUtc3RyYW5kZWQge1xuICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcbiAgICB9XG5cbiAgICBAZm9yICRpIGZyb20gJGluY3JlbWVudCB0aHJvdWdoIC0xIHtcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxIC8gJHJhdGlvKSA8ICR2MiB7XG4gICAgICAgICR2YWx1ZTogJHYyO1xuICAgICAgICAkdjI6ICgkdjIgLyAkcmF0aW8pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR2MTogKCR2MSAvICRyYXRpbyk7XG4gICAgICAgICR2YWx1ZTogJHYxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLyBlZy4gZm9yIGEgcmVsYXRpb25hbCB2YWx1ZSBvZiAxMnB4IHdyaXRlIGVtKDEyKSB3aGVuIHRoZSBwYXJlbnQgaXMgMTZweFxuLy8gaWYgdGhlIHBhcmVudCBpcyBhbm90aGVyIHZhbHVlIHNheSAyNHB4IHdyaXRlIGVtKDEyLCAyNClcblxuQGZ1bmN0aW9uIGVtKCRweHZhbCwgJGJhc2U6ICRlbS1iYXNlKSB7XG4gIEBpZiBub3QgdW5pdGxlc3MoJHB4dmFsKSB7XG4gICAgICAkcHh2YWw6IHN0cmlwLXVuaXRzKCRweHZhbCk7XG4gIH1cbiAgQGlmIG5vdCB1bml0bGVzcygkYmFzZSkge1xuICAgICAgJGJhc2U6IHN0cmlwLXVuaXRzKCRiYXNlKTtcbiAgfVxuICBAcmV0dXJuICgkcHh2YWwgLyAkYmFzZSkgKiAxZW07XG59XG4iLCIvLyBDb252ZXJ0IHBpeGVscyB0byByZW1zXG4vLyBlZy4gZm9yIGEgcmVsYXRpb25hbCB2YWx1ZSBvZiAxMnB4IHdyaXRlIHJlbSgxMilcbi8vIEFzc3VtZXMgJGVtLWJhc2UgaXMgdGhlIGZvbnQtc2l6ZSBvZiA8aHRtbD5cblxuQGZ1bmN0aW9uIHJlbSgkcHh2YWwpIHtcbiAgQGlmIG5vdCB1bml0bGVzcygkcHh2YWwpIHtcbiAgICAgICRweHZhbDogc3RyaXAtdW5pdHMoJHB4dmFsKTtcbiAgfVxuXG4gICRiYXNlOiAkZW0tYmFzZTtcbiAgQGlmIG5vdCB1bml0bGVzcygkYmFzZSkge1xuICAgICAgJGJhc2U6IHN0cmlwLXVuaXRzKCRiYXNlKTtcbiAgfVxuICBAcmV0dXJuICgkcHh2YWwgLyAkYmFzZSkgKiAxcmVtO1xufVxuIiwiLy8gU3J0aXBzIHRoZSB1bml0cyBmcm9tIGEgdmFsdWUuIGUuZy4gMTJweCAtPiAxMlxuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdHMoJHZhbCkge1xuICBAcmV0dXJuICgkdmFsIC8gKCR2YWwgKiAwICsgMSkpO1xufVxuIiwiLy8gQWRkIHBlcmNlbnRhZ2Ugb2Ygd2hpdGUgdG8gYSBjb2xvclxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudCl7XG4gIEByZXR1cm4gbWl4KHdoaXRlLCAkY29sb3IsICRwZXJjZW50KTtcbn1cblxuLy8gQWRkIHBlcmNlbnRhZ2Ugb2YgYmxhY2sgdG8gYSBjb2xvclxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnQpe1xuICBAcmV0dXJuIG1peChibGFjaywgJGNvbG9yLCAkcGVyY2VudCk7XG59XG4iLCIvLyBSZXR1cm4gdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5IG5hbWVzIGlmIGFwcHJvcHJpYXRlXG4vLyBFeGFtcGxlOiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCh0cmFuc2Zvcm0sIGNvbG9yLCBiYWNrZ3JvdW5kKSwgbW96KSAtPiAtbW96LXRyYW5zZm9ybSwgY29sb3IsIGJhY2tncm91bmRcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBmdW5jdGlvbiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wcywgJHZlbmRvcjogZmFsc2UpIHtcblx0JG5ldy1wcm9wczogKCk7XG5cdFxuXHRAZWFjaCAkcHJvcCBpbiAkcHJvcHMge1xuXHRcdCRuZXctcHJvcHM6IGFwcGVuZCgkbmV3LXByb3BzLCB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWUoJHByb3AsICR2ZW5kb3IpLCBjb21tYSk7XG5cdH1cblxuXHRAcmV0dXJuICRuZXctcHJvcHM7XG59XG5cbkBmdW5jdGlvbiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWUoJHByb3AsICR2ZW5kb3I6IGZhbHNlKSB7XG5cdC8vIHB1dCBvdGhlciBwcm9wZXJ0aWVzIHRoYXQgbmVlZCB0byBiZSBwcmVmaXhlZCBoZXJlIGFzd2VsbFxuXHRAaWYgJHZlbmRvciBhbmQgJHByb3AgPT0gdHJhbnNmb3JtIHtcblx0XHRAcmV0dXJuIHVucXVvdGUoJy0nKyR2ZW5kb3IrJy0nKyRwcm9wKTtcblx0fVxuXHRAZWxzZSB7XG5cdFx0QHJldHVybiAkcHJvcDtcblx0fVxufSIsIi8vIENvbnZlcnQgc2hvcnRoYW5kIHRvIHRoZSA0LXZhbHVlIHN5bnRheFxuXG5AZnVuY3Rpb24gdW5wYWNrKCRzaG9ydGhhbmQpIHtcbiAgQGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAxIHtcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMiB7XG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMik7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDMge1xuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAyKSBudGgoJHNob3J0aGFuZCwgMykgbnRoKCRzaG9ydGhhbmQsIDIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRzaG9ydGhhbmQ7XG4gIH1cbn1cblxuIiwiLy8gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1hbmltYXRpb25zLyN0aGUtYW5pbWF0aW9uLW5hbWUtcHJvcGVydHktXG4vLyBFYWNoIG9mIHRoZXNlIG1peGlucyBzdXBwb3J0IGNvbW1hIHNlcGFyYXRlZCBsaXN0cyBvZiB2YWx1ZXMsIHdoaWNoIGFsbG93cyBkaWZmZXJlbnQgdHJhbnNpdGlvbnMgZm9yIGluZGl2aWR1YWwgcHJvcGVydGllcyB0byBiZSBkZXNjcmliZWQgaW4gYSBzaW5nbGUgc3R5bGUgcnVsZS4gRWFjaCB2YWx1ZSBpbiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgdmFsdWUgYXQgdGhhdCBzYW1lIHBvc2l0aW9uIGluIHRoZSBvdGhlciBwcm9wZXJ0aWVzLlxuXG4vLyBPZmZpY2lhbCBhbmltYXRpb24gc2hvcnRoYW5kIHByb3BlcnR5LlxuQG1peGluIGFuaW1hdGlvbiAoJGFuaW1hdGlvbnMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLCAkYW5pbWF0aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gSW5kaXZpZHVhbCBBbmltYXRpb24gUHJvcGVydGllc1xuQG1peGluIGFuaW1hdGlvbi1uYW1lICgkbmFtZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLW5hbWUsICRuYW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLWR1cmF0aW9uICgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWR1cmF0aW9uLCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cblxuQG1peGluIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24gKCRtb3Rpb25zLi4uKSB7XG4vLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cblxuQG1peGluIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQgKCR2YWx1ZXMuLi4pIHtcbi8vIGluZmluaXRlIHwgPG51bWJlcj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgJHZhbHVlcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLWRpcmVjdGlvbiAoJGRpcmVjdGlvbnMuLi4pIHtcbi8vIG5vcm1hbCB8IGFsdGVybmF0ZVxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZGlyZWN0aW9uLCAkZGlyZWN0aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLXBsYXktc3RhdGUgKCRzdGF0ZXMuLi4pIHtcbi8vIHJ1bm5pbmcgfCBwYXVzZWRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXBsYXktc3RhdGUsICRzdGF0ZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cblxuQG1peGluIGFuaW1hdGlvbi1kZWxheSAoJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5cbkBtaXhpbiBhbmltYXRpb24tZmlsbC1tb2RlICgkbW9kZXMuLi4pIHtcbi8vIG5vbmUgfCBmb3J3YXJkcyB8IGJhY2t3YXJkcyB8IGJvdGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWZpbGwtbW9kZSwgJG1vZGVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIGFwcGVhcmFuY2UgKCR2YWx1ZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhcHBlYXJhbmNlLCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tmYWNlLXZpc2liaWxpdHkgbWl4aW5cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBtaXhpbiBiYWNrZmFjZS12aXNpYmlsaXR5KCR2aXNpYmlsaXR5KSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJhY2tmYWNlLXZpc2liaWxpdHksICR2aXNpYmlsaXR5LCB3ZWJraXQgc3BlYyk7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBCYWNrZ3JvdW5kIHByb3BlcnR5IGZvciBhZGRpbmcgbXVsdGlwbGUgYmFja2dyb3VuZHMgdXNpbmcgc2hvcnRoYW5kXG4vLyBub3RhdGlvbi5cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cblxuQG1peGluIGJhY2tncm91bmQoJGJhY2tncm91bmRzLi4uKSB7XG4gICR3ZWJraXQtYmFja2dyb3VuZHM6ICgpO1xuICAkc3BlYy1iYWNrZ3JvdW5kczogKCk7XG5cbiAgQGVhY2ggJGJhY2tncm91bmQgaW4gJGJhY2tncm91bmRzIHtcbiAgICAkd2Via2l0LWJhY2tncm91bmQ6ICgpO1xuICAgICRzcGVjLWJhY2tncm91bmQ6ICgpO1xuICAgICRiYWNrZ3JvdW5kLXR5cGU6IHR5cGUtb2YoJGJhY2tncm91bmQpO1xuXG4gICAgQGlmICRiYWNrZ3JvdW5kLXR5cGUgPT0gc3RyaW5nIG9yIGxpc3Qge1xuICAgICAgJGJhY2tncm91bmQtc3RyOiBpZigkYmFja2dyb3VuZC10eXBlID09IGxpc3QsIG50aCgkYmFja2dyb3VuZCwgMSksICRiYWNrZ3JvdW5kKTtcblxuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDAsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDAsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcihcIiN7JGJhY2tncm91bmR9XCIpO1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcInJhZGlhbFwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIoXCIjeyRiYWNrZ3JvdW5kfVwiKTtcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2Uge1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICR3ZWJraXQtYmFja2dyb3VuZHM6IGFwcGVuZCgkd2Via2l0LWJhY2tncm91bmRzLCAkd2Via2l0LWJhY2tncm91bmQsIGNvbW1hKTtcbiAgICAkc3BlYy1iYWNrZ3JvdW5kczogICBhcHBlbmQoJHNwZWMtYmFja2dyb3VuZHMsICAgJHNwZWMtYmFja2dyb3VuZCwgICBjb21tYSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kOiAkd2Via2l0LWJhY2tncm91bmRzO1xuICBiYWNrZ3JvdW5kOiAkc3BlYy1iYWNrZ3JvdW5kcztcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kIGltYWdlcyB3aXRoXG4vLyBncmFkaWVudHMsIG9yIGZvciBzdHJpbmdpbmcgbXVsdGlwbGUgZ3JhZGllbnRzIHRvZ2V0aGVyLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2VzLi4uKSB7XG4gICR3ZWJraXQtaW1hZ2VzOiAoKTtcbiAgJHNwZWMtaW1hZ2VzOiAoKTtcblxuICBAZWFjaCAkaW1hZ2UgaW4gJGltYWdlcyB7XG4gICAgJHdlYmtpdC1pbWFnZTogKCk7XG4gICAgJHNwZWMtaW1hZ2U6ICgpO1xuXG4gICAgQGlmICh0eXBlLW9mKCRpbWFnZSkgPT0gc3RyaW5nKSB7XG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRpbWFnZSwgMCwgMyk7XG4gICAgICAkZ3JhZGllbnQtdHlwZTogc3RyLXNsaWNlKCRpbWFnZSwgMCwgNik7XG5cbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogJGltYWdlO1xuICAgICAgICAgICRzcGVjLWltYWdlOiAkaW1hZ2U7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpO1xuICAgICAgICAkd2Via2l0LWltYWdlOiAgbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1pbWFnZTogICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSk7XG4gICAgICAgICR3ZWJraXQtaW1hZ2U6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkd2Via2l0LWltYWdlczogYXBwZW5kKCR3ZWJraXQtaW1hZ2VzLCAkd2Via2l0LWltYWdlLCBjb21tYSk7XG4gICAgJHNwZWMtaW1hZ2VzOiAgIGFwcGVuZCgkc3BlYy1pbWFnZXMsICAgJHNwZWMtaW1hZ2UsICAgY29tbWEpO1xuICB9XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogJHdlYmtpdC1pbWFnZXM7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRzcGVjLWltYWdlcztcbn1cbiIsIkBtaXhpbiBib3JkZXItaW1hZ2UoJGJvcmRlcnMuLi4pIHtcbiAgJHdlYmtpdC1ib3JkZXJzOiAoKTtcbiAgJHNwZWMtYm9yZGVyczogKCk7XG5cbiAgQGVhY2ggJGJvcmRlciBpbiAkYm9yZGVycyB7XG4gICAgJHdlYmtpdC1ib3JkZXI6ICgpO1xuICAgICRzcGVjLWJvcmRlcjogKCk7XG4gICAgJGJvcmRlci10eXBlOiB0eXBlLW9mKCRib3JkZXIpO1xuXG4gICAgQGlmICRib3JkZXItdHlwZSA9PSBzdHJpbmcgb3IgbGlzdCB7XG4gICAgICAkYm9yZGVyLXN0cjogaWYoJGJvcmRlci10eXBlID09IGxpc3QsIG50aCgkYm9yZGVyLCAxKSwgJGJvcmRlcik7XG5cbiAgICAgICR1cmwtc3RyOiAgICAgICBzdHItc2xpY2UoJGJvcmRlci1zdHIsIDAsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYm9yZGVyLXN0ciwgMCwgNik7XG5cbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XG4gICAgICAgICAgJHNwZWMtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoXCIjeyRib3JkZXJ9XCIpO1xuICAgICAgICAkd2Via2l0LWJvcmRlcjogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XG4gICAgICAgICAgJHNwZWMtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICRib3JkZXI7XG4gICAgfVxuXG4gICAgJHdlYmtpdC1ib3JkZXJzOiBhcHBlbmQoJHdlYmtpdC1ib3JkZXJzLCAkd2Via2l0LWJvcmRlciwgY29tbWEpO1xuICAgICRzcGVjLWJvcmRlcnM6ICAgYXBwZW5kKCRzcGVjLWJvcmRlcnMsICAgJHNwZWMtYm9yZGVyLCAgIGNvbW1hKTtcbiAgfVxuXG4gIC13ZWJraXQtYm9yZGVyLWltYWdlOiAkd2Via2l0LWJvcmRlcnM7XG4gICAgICAgICAgYm9yZGVyLWltYWdlOiAkc3BlYy1ib3JkZXJzO1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG59XG5cbi8vRXhhbXBsZXM6XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZSh1cmwoXCJpbWFnZS5wbmdcIikgMjAgc3RyZXRjaCk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UobGluZWFyLWdyYWRpZW50KDQ1ZGVnLCBvcmFuZ2UsIHllbGxvdykpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIDIwIDMwIDQwIDUwIHN0cmV0Y2ggcm91bmQpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHJhZGlhbC1ncmFkaWVudCh0b3AsIGNvdmVyLCBvcmFuZ2UsIHllbGxvdywgb3JhbmdlKSk7XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBTaG9ydGhhbmQgQm9yZGVyLXJhZGl1cyBtaXhpbnNcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaWkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaWkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGlpKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci10b3AtbGVmdC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpaSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3JkZXItdG9wLXJpZ2h0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG4iLCJAbWl4aW4gYm94LXNpemluZyAoJGJveCkge1xuLy8gIGNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCB8IGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXNpemluZywgJGJveCwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiBjYWxjKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICN7JHByb3BlcnR5fTogLXdlYmtpdC1jYWxjKCN7JHZhbHVlfSk7XG4gICN7JHByb3BlcnR5fTogICAgICAgICBjYWxjKCN7JHZhbHVlfSk7XG59XG4iLCJAbWl4aW4gY29sdW1ucygkYXJnOiBhdXRvKSB7XG4vLyA8Y29sdW1uLWNvdW50PiB8fCA8Y29sdW1uLXdpZHRoPlxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW5zLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLWNvdW50KCRpbnQ6IGF1dG8pIHtcbi8vIGF1dG8gfHwgaW50ZWdlclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tY291bnQsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZ2FwKCRsZW5ndGg6IG5vcm1hbCkge1xuLy8gbm9ybWFsIHx8IGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tZ2FwLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLWZpbGwoJGFyZzogYXV0bykge1xuLy8gYXV0byB8fCBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLWZpbGwsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZSgkYXJnKSB7XG4vLyA8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS1zdHlsZSgkc3R5bGU6IG5vbmUpIHtcbi8vIG5vbmUgfCBoaWRkZW4gfCBkYXNoZWQgfCBkb3R0ZWQgfCBkb3VibGUgfCBncm9vdmUgfCBpbnNldCB8IGluc2V0IHwgb3V0c2V0IHwgcmlkZ2UgfCBzb2xpZFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1zdHlsZSwgJHN0eWxlLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtd2lkdGggKCR3aWR0aDogbm9uZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXNwYW4oJGFyZzogbm9uZSkge1xuLy8gbm9uZSB8fCBhbGxcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXNwYW4sICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4td2lkdGgoJGxlbmd0aDogYXV0bykge1xuLy8gYXV0byB8fCBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXdpZHRoLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIGZpbHRlcigkZnVuY3Rpb246IG5vbmUpIHtcbiAgLy8gPGZpbHRlci1mdW5jdGlvbj4gWzxmaWx0ZXItZnVuY3Rpb25dKiB8IG5vbmVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmlsdGVyLCAkZnVuY3Rpb24sIHdlYmtpdCBzcGVjKTtcbn1cblxuIiwiLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG5cbi8vIEN1c3RvbSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIGZsZXhib3hcbkBtaXhpbiBib3goJG9yaWVudDogaW5saW5lLWF4aXMsICRwYWNrOiBzdGFydCwgJGFsaWduOiBzdHJldGNoKSB7XG4gIEBpbmNsdWRlIGRpc3BsYXktYm94O1xuICBAaW5jbHVkZSBib3gtb3JpZW50KCRvcmllbnQpO1xuICBAaW5jbHVkZSBib3gtcGFjaygkcGFjayk7XG4gIEBpbmNsdWRlIGJveC1hbGlnbigkYWxpZ24pO1xufVxuXG5AbWl4aW4gZGlzcGxheS1ib3gge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1vei1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyBJRSAxMFxuICBkaXNwbGF5OiBib3g7XG59XG5cbkBtaXhpbiBib3gtb3JpZW50KCRvcmllbnQ6IGlubGluZS1heGlzKSB7XG4vLyBob3Jpem9udGFsfHZlcnRpY2FsfGlubGluZS1heGlzfGJsb2NrLWF4aXN8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkb3JpZW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LXBhY2soJHBhY2s6IHN0YXJ0KSB7XG4vLyBzdGFydHxlbmR8Y2VudGVyfGp1c3RpZnlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRwYWNrLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1wYWNrOiAkcGFjazsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1hbGlnbigkYWxpZ246IHN0cmV0Y2gpIHtcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8YmFzZWxpbmV8c3RyZXRjaFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbGlnbiwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtYWxpZ246ICRhbGlnbjsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1kaXJlY3Rpb24oJGRpcmVjdGlvbjogbm9ybWFsKSB7XG4vLyBub3JtYWx8cmV2ZXJzZXxpbmhlcml0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1kaXJlY3Rpb24sICRkaXJlY3Rpb24sIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1saW5lcygkbGluZXM6IHNpbmdsZSkge1xuLy8gc2luZ2xlfG11bHRpcGxlXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1saW5lcywgJGxpbmVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LW9yZGluYWwtZ3JvdXAoJGludDogMSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtb3JkZXI6ICRpbnQ7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZmxleCgkdmFsdWU6IDAuMCkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleDogJHZhbHVlOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgtZ3JvdXAoJGludDogMSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG4vLyBVbmlmaWVkIGF0dHJpYnV0ZXMgZm9yIDIwMDksIDIwMTEsIGFuZCAyMDEyIGZsYXZvdXJzLlxuXG4vLyAyMDA5IC0gZGlzcGxheSAoYm94IHwgaW5saW5lLWJveClcbi8vIDIwMTEgLSBkaXNwbGF5IChmbGV4Ym94IHwgaW5saW5lLWZsZXhib3gpXG4vLyAyMDEyIC0gZGlzcGxheSAoZmxleCB8IGlubGluZS1mbGV4KVxuQG1peGluIGRpc3BsYXkoJHZhbHVlKSB7XG4vLyAgZmxleCB8IGlubGluZS1mbGV4XG4gICAgQGlmICR2YWx1ZSA9PSBcImZsZXhcIiB7XG4gICAgICAgIC8vIDIwMDlcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIGRpc3BsYXk6IC1tb3otYm94O1xuICAgICAgICBkaXNwbGF5OiBib3g7XG5cbiAgICAgICAgLy8gMjAxMlxuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gICAgICAgIGRpc3BsYXk6IC1tb3otZmxleDtcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIDIwMTEgKElFIDEwKVxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwiaW5saW5lLWZsZXhcIiB7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgICAgICAgZGlzcGxheTogLW1vei1pbmxpbmUtYm94O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYm94O1xuXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7XG4gICAgICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLWZsZXg7XG4gICAgICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgICBkaXNwbGF5OiAkdmFsdWU7XG4gICAgfVxufVxuXG4vLyAyMDA5IC0gYm94LWZsZXggKGludGVnZXIpXG4vLyAyMDExIC0gZmxleCAoZGVjaW1hbCB8IHdpZHRoIGRlY2ltYWwpXG4vLyAyMDEyIC0gZmxleCAoaW50ZWdlciBpbnRlZ2VyIHdpZHRoKVxuQG1peGluIGZsZXgoJHZhbHVlKSB7XG5cbiAgICAvLyBHcmFiIGZsZXgtZ3JvdyBmb3Igb2xkZXIgYnJvd3NlcnMuXG4gICAgJGZsZXgtZ3JvdzogbnRoKCR2YWx1ZSwgMSk7XG5cbiAgICAvLyAyMDA5XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICRmbGV4LWdyb3csIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDExIChJRSAxMCksIDIwMTJcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JpZW50ICggaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzKVxuLy8gICAgICAtIGJveC1kaXJlY3Rpb24gKG5vcm1hbCB8IHJldmVyc2UpICAgICAgXG4vLyAyMDExIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJHZhbHVlOiByb3cpIHtcblxuICAgIC8vIEFsdCB2YWx1ZXMuXG4gICAgJHZhbHVlLTIwMDk6ICR2YWx1ZTtcbiAgICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICAgICRkaXJlY3Rpb246IFwibm9ybWFsXCI7XG5cbiAgICBAaWYgJHZhbHVlID09IHJvdyB7XG4gICAgICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwicm93LXJldmVyc2VcIiB7XG4gICAgICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICAgICAgICAkZGlyZWN0aW9uOiByZXZlcnNlO1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IGNvbHVtbiB7XG4gICAgICAgICR2YWx1ZS0yMDA5OiB2ZXJ0aWNhbDtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcImNvbHVtbi1yZXZlcnNlXCIge1xuICAgICAgICAkdmFsdWUtMjAwOTogdmVydGljYWw7XG4gICAgICAgICRkaXJlY3Rpb246IHJldmVyc2U7XG4gICAgfVxuXG4gICAgLy8gMjAwOVxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICR2YWx1ZS0yMDA5LCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IFwicmV2ZXJzZVwiIHtcbiAgICAgICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcbiAgICB9XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1kaXJlY3Rpb24sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAgIC8vIDIwMTEgKElFIDEwKVxuICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogJHZhbHVlO1xufVxuXG4vLyAyMDA5IC0gYm94LWxpbmVzIChzaW5nbGUgfCBtdWx0aXBsZSlcbi8vIDIwMTEgLSBmbGV4LXdyYXAgKG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxuQG1peGluIGZsZXgtd3JhcCgkdmFsdWU6IG5vd3JhcCkge1xuXG4gICAgLy8gQWx0IHZhbHVlcy5cbiAgICAkYWx0LXZhbHVlOiAkdmFsdWU7XG4gICAgQGlmICR2YWx1ZSA9PSBub3dyYXAge1xuICAgICAgICAkYWx0LXZhbHVlOiBzaW5nbGU7XG4gICAgfVxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gd3JhcCB7XG4gICAgICAgICRhbHQtdmFsdWU6IG11bHRpcGxlO1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwid3JhcC1yZXZlcnNlXCIge1xuICAgICAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC13cmFwLCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBUT0RPOiBwYXJzZSB2YWx1ZXMgaW50byBmbGV4LWRpcmVjdGlvbi9mbGV4LXdyYXBcbi8vIDIwMTEgLSBUT0RPOiBwYXJzZSB2YWx1ZXMgaW50byBmbGV4LWRpcmVjdGlvbi9mbGV4LXdyYXBcbi8vIDIwMTIgLSBmbGV4LWZsb3cgKGZsZXgtZGlyZWN0aW9uIHx8IGZsZXgtd3JhcClcbkBtaXhpbiBmbGV4LWZsb3coJHZhbHVlKSB7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1mbG93LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JkaW5hbC1ncm91cCAoaW50ZWdlcilcbi8vIDIwMTEgLSBmbGV4LW9yZGVyIChpbnRlZ2VyKVxuLy8gMjAxMiAtIG9yZGVyIChpbnRlZ2VyKVxuQG1peGluIG9yZGVyKCRpbnQ6IDApIHtcbiAgICAvLyAyMDA5XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yZGluYWwtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIob3JkZXIsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDExIChJRSAxMClcbiAgICAtbXMtZmxleC1vcmRlcjogJGludDtcbn1cblxuLy8gMjAxMiAtIGZsZXgtZ3JvdyAobnVtYmVyKVxuQG1peGluIGZsZXgtZ3JvdygkbnVtYmVyOiAwKSB7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1ncm93LCAkbnVtYmVyLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1zaHJpbmsgKG51bWJlcilcbkBtaXhpbiBmbGV4LXNocmluaygkbnVtYmVyOiAxKSB7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1zaHJpbmssICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgLW1zLWZsZXgtbmVnYXRpdmU6ICRudW1iZXI7XG59XG5cbi8vIDIwMTIgLSBmbGV4LWJhc2lzIChudW1iZXIpXG5AbWl4aW4gZmxleC1iYXNpcygkd2lkdGg6IGF1dG8pIHtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWJhc2lzLCAkd2lkdGgsIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6ICR3aWR0aDtcbn1cblxuLy8gMjAwOSAtIGJveC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDExIC0gZmxleC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDEyIC0ganVzdGlmeS1jb250ZW50IChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kKVxuQG1peGluIGp1c3RpZnktY29udGVudCAoJHZhbHVlOiBmbGV4LXN0YXJ0KSB7XG5cbiAgICAvLyBBbHQgdmFsdWVzLlxuICAgICRhbHQtdmFsdWU6ICR2YWx1ZTtcbiAgICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gICAgfVxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogZW5kO1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcbiAgICAgICAgJGFsdC12YWx1ZToganVzdGlmeTtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogY2VudGVyO1xuICAgIH1cblxuICAgIC8vIDIwMDlcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJGFsdC12YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAgIC8vIDIwMTJcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihqdXN0aWZ5LWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xuXG4gICAgLy8gMjAxMSAoSUUgMTApXG4gICAgLW1zLWZsZXgtcGFjazogJGFsdC12YWx1ZTtcbn1cblxuLy8gMjAwOSAtIGJveC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDExIC0gZmxleC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24taXRlbXMgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1pdGVtcygkdmFsdWU6IHN0cmV0Y2gpIHtcblxuICAgICRhbHQtdmFsdWU6ICR2YWx1ZTtcblxuICAgIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICAgICAkYWx0LXZhbHVlOiBzdGFydDtcbiAgICB9ICAgIFxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogZW5kO1xuICAgIH1cblxuICAgIC8vIDIwMDlcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24taXRlbXMsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xuICAgIFxuICAgIC8vIDIwMTEgKElFIDEwKVxuICAgIC1tcy1mbGV4LWFsaWduOiAkYWx0LXZhbHVlOyAgICBcbn1cblxuLy8gMjAxMSAtIGZsZXgtaXRlbS1hbGlnbiAoYXV0byB8IHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLXNlbGYgKGF1dG8gfCBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG5AbWl4aW4gYWxpZ24tc2VsZigkdmFsdWU6IGF1dG8pIHtcblxuICAgICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gICAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgICAgICR2YWx1ZS0yMDExOiBzdGFydDtcbiAgICB9ICAgIFxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAgICAgJHZhbHVlLTIwMTE6IGVuZDtcbiAgICB9XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tc2VsZiwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMSAoSUUgMTApXG4gICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogJHZhbHVlLTIwMTE7XG59XG5cbi8vIDIwMTEgLSBmbGV4LWxpbmUtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgZGlzdHJpYnV0ZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24tY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2gpXG5AbWl4aW4gYWxpZ24tY29udGVudCgkdmFsdWU6IHN0cmV0Y2gpIHtcblxuICAgICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gICAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgICAgICR2YWx1ZS0yMDExOiBzdGFydDtcbiAgICB9ICAgIFxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAgICAgJHZhbHVlLTIwMTE6IGVuZDtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcInNwYWNlLWJldHdlZW5cIiB7XG4gICAgICAgICR2YWx1ZS0yMDExOiBqdXN0aWZ5O1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwic3BhY2UtYXJvdW5kXCIge1xuICAgICAgICAkdmFsdWUtMjAxMTogZGlzdHJpYnV0ZTtcbiAgICB9XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tY29udGVudCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMSAoSUUgMTApXG4gICAgLW1zLWZsZXgtbGluZS1wYWNrOiAkdmFsdWUtMjAxMTtcbn1cblxuIiwiLy8gT3JkZXIgb2YgdGhlIGluY2x1ZGVzIG1hdHRlcnMsIGFuZCBpdCBpczogbm9ybWFsLCBib2xkLCBpdGFsaWMsIGJvbGQraXRhbGljLlxuXG5AbWl4aW4gZm9udC1mYWNlKCRmb250LWZhbWlseSwgJGZpbGUtcGF0aCwgJHdlaWdodDogbm9ybWFsLCAkc3R5bGU6IG5vcm1hbCwgJGFzc2V0LXBpcGVsaW5lOiBmYWxzZSApIHtcbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgJGFzc2V0LXBpcGVsaW5lID09IHRydWUge1xuICAgICAgc3JjOiBmb250LXVybCgnI3skZmlsZS1wYXRofS5lb3QnKTtcbiAgICAgIHNyYzogZm9udC11cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpICAgICAgICAgIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICAgICAgICAgZm9udC11cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpICAgICAgICAgICAgICAgIGZvcm1hdCgnd29mZicpLFxuICAgICAgICAgICBmb250LXVybCgnI3skZmlsZS1wYXRofS50dGYnKSAgICAgICAgICAgICAgICAgZm9ybWF0KCd0cnVldHlwZScpLFxuICAgICAgICAgICBmb250LXVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIHNyYzogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpICAgICAgICAgICAgICAgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgICAgICB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgICAgIHVybCgnI3skZmlsZS1wYXRofS50dGYnKSAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgICAgIHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgICAgICBmb3JtYXQoJ3N2ZycpO1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIGh5cGhlbnMoJGh5cGhlbmF0aW9uOiBub25lKSB7XG4vLyBub25lIHwgbWFudWFsIHwgYXV0b1xuICBAaW5jbHVkZSBwcmVmaXhlcihoeXBoZW5zLCAkaHlwaGVuYXRpb24sIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59IiwiLy8gSGlEUEkgbWl4aW4uIERlZmF1bHQgdmFsdWUgc2V0IHRvIDEuMyB0byB0YXJnZXQgR29vZ2xlIE5leHVzIDcgKGh0dHA6Ly9iamFuZ28uY29tL2FydGljbGVzL21pbi1kZXZpY2UtcGl4ZWwtcmF0aW8vKVxuQG1peGluIGhpZHBpKCRyYXRpbzogMS4zKSB7XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gIG9ubHkgc2NyZWVuIGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogI3skcmF0aW99LzEpLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAje3JvdW5kKCRyYXRpbyo5Nil9ZHBpKSxcbiAgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogI3skcmF0aW99ZHBweCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCJAbWl4aW4gaW1hZ2UtcmVuZGVyaW5nICgkbW9kZTphdXRvKSB7XG5cbiAgQGlmICgkbW9kZSA9PSBjcmlzcC1lZGdlcykge1xuICAgICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogbmVhcmVzdC1uZWlnaGJvcjsgLy8gSUU4K1xuICAgICAgaW1hZ2UtcmVuZGVyaW5nOiAtbW96LWNyaXNwLWVkZ2VzO1xuICAgICAgaW1hZ2UtcmVuZGVyaW5nOiAtby1jcmlzcC1lZGdlcztcbiAgICAgIGltYWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdDtcbiAgICAgIGltYWdlLXJlbmRlcmluZzogY3Jpc3AtZWRnZXM7XG4gIH1cblxuICBAZWxzZSB7XG4gICAgICBpbWFnZS1yZW5kZXJpbmc6ICRtb2RlO1xuICB9XG59XG4iLCIvLyBBZGRzIGtleWZyYW1lcyBibG9ja3MgZm9yIHN1cHBvcnRlZCBwcmVmaXhlcywgcmVtb3ZpbmcgcmVkdW5kYW50IHByZWZpeGVzIGluIHRoZSBibG9jaydzIGNvbnRlbnRcbkBtaXhpbiBrZXlmcmFtZXMoJG5hbWUpIHtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0OiAgICAkcHJlZml4LWZvci13ZWJraXQ7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGE6ICAgJHByZWZpeC1mb3ItbW96aWxsYTtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3ItbWljcm9zb2Z0OiAkcHJlZml4LWZvci1taWNyb3NvZnQ7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhOiAgICAgJHByZWZpeC1mb3Itb3BlcmE7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWM6ICAgICAgJHByZWZpeC1mb3Itc3BlYztcblxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0IHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3Itd2Via2l0OiB0cnVlICFnbG9iYWw7XG4gICAgQC13ZWJraXQta2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYSB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpO1xuICAgICRwcmVmaXgtZm9yLW1vemlsbGE6IHRydWUgIWdsb2JhbDtcbiAgICBALW1vei1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgJHByZWZpeC1mb3Itd2Via2l0OiAgICAkb3JpZ2luYWwtcHJlZml4LWZvci13ZWJraXQgICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbW96aWxsYTogICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiAkb3JpZ2luYWwtcHJlZml4LWZvci1taWNyb3NvZnQgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itb3BlcmE6ICAgICAkb3JpZ2luYWwtcHJlZml4LWZvci1vcGVyYSAgICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itc3BlYzogICAgICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjICAgICAgIWdsb2JhbDtcblxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3Itc3BlYyB7XG4gICAgQGtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBsaW5lYXItZ3JhZGllbnQoJHBvcywgJEcxLCAkRzI6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRHMzogbnVsbCwgJEc0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzU6IG51bGwsICRHNjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJEc3OiBudWxsLCAkRzg6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRHOTogbnVsbCwgJEcxMDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGZhbGxiYWNrOiBudWxsKSB7XG4gIC8vIERldGVjdCB3aGF0IHR5cGUgb2YgdmFsdWUgZXhpc3RzIGluICRwb3NcbiAgJHBvcy10eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XG4gICRwb3Mtc3BlYzogbnVsbDtcbiAgJHBvcy1kZWdyZWU6IG51bGw7XG5cbiAgLy8gSWYgJHBvcyBpcyBtaXNzaW5nIGZyb20gbWl4aW4sIHJlYXNzaWduIHZhcnMgYW5kIGFkZCBkZWZhdWx0IHBvc2l0aW9uXG4gIEBpZiAoJHBvcy10eXBlID09IGNvbG9yKSBvciAobnRoKCRwb3MsIDEpID09IFwidHJhbnNwYXJlbnRcIikgIHtcbiAgICAkRzEwOiAkRzk7ICRHOTogJEc4OyAkRzg6ICRHNzsgJEc3OiAkRzY7ICRHNjogJEc1O1xuICAgICAkRzU6ICRHNDsgJEc0OiAkRzM7ICRHMzogJEcyOyAkRzI6ICRHMTsgJEcxOiAkcG9zO1xuICAgICAkcG9zOiBudWxsO1xuICB9XG5cbiAgQGlmICRwb3Mge1xuICAgICRwb3NpdGlvbnM6IF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkcG9zKTtcbiAgICAkcG9zLWRlZ3JlZTogbnRoKCRwb3NpdGlvbnMsIDEpO1xuICAgICRwb3Mtc3BlYzogICBudGgoJHBvc2l0aW9ucywgMik7XG4gIH1cblxuICAkZnVsbDogJEcxLCAkRzIsICRHMywgJEc0LCAkRzUsICRHNiwgJEc3LCAkRzgsICRHOSwgJEcxMDtcblxuICAvLyBTZXQgJEcxIGFzIHRoZSBkZWZhdWx0IGZhbGxiYWNrIGNvbG9yXG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRHMSwgMSk7XG5cbiAgLy8gSWYgJGZhbGxiYWNrIGlzIGEgY29sb3IgdXNlIHRoYXQgY29sb3IgYXMgdGhlIGZhbGxiYWNrIGNvbG9yXG4gIEBpZiAodHlwZS1vZigkZmFsbGJhY2spID09IGNvbG9yKSBvciAoJGZhbGxiYWNrID09IFwidHJhbnNwYXJlbnRcIikge1xuICAgICRmYWxsYmFjay1jb2xvcjogJGZhbGxiYWNrO1xuICB9XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGZhbGxiYWNrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgkcG9zLWRlZ3JlZSAkZnVsbCk7IC8vIFNhZmFyaSA1LjErLCBDaHJvbWVcbiAgYmFja2dyb3VuZC1pbWFnZTogdW5xdW90ZShcImxpbmVhci1ncmFkaWVudCgjeyRwb3Mtc3BlY30jeyRmdWxsfSlcIik7XG59XG4iLCJAbWl4aW4gcGVyc3BlY3RpdmUoJGRlcHRoOiBub25lKSB7XG4gIC8vIG5vbmUgfCA8bGVuZ3RoPlxuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZSwgJGRlcHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gcGVyc3BlY3RpdmUtb3JpZ2luKCR2YWx1ZTogNTAlIDUwJSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZS1vcmlnaW4sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIi8vIFJlcXVpcmVzIFNhc3MgMy4xK1xuQG1peGluIHJhZGlhbC1ncmFkaWVudCgkRzEsICAgICAgICAkRzIsXG4gICAgICAgICAgICAgICAgICAgICAgICRHMzogbnVsbCwgJEc0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzU6IG51bGwsICRHNjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJEc3OiBudWxsLCAkRzg6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRHOTogbnVsbCwgJEcxMDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJHBvczogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJHNoYXBlLXNpemU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRmYWxsYmFjazogbnVsbCkge1xuXG4gICRkYXRhOiBfcmFkaWFsLWFyZy1wYXJzZXIoJEcxLCAkRzIsICRwb3MsICRzaGFwZS1zaXplKTtcbiAgJEcxOiAgbnRoKCRkYXRhLCAxKTtcbiAgJEcyOiAgbnRoKCRkYXRhLCAyKTtcbiAgJHBvczogbnRoKCRkYXRhLCAzKTtcbiAgJHNoYXBlLXNpemU6IG50aCgkZGF0YSwgNCk7XG5cbiAgJGZ1bGw6ICRHMSwgJEcyLCAkRzMsICRHNCwgJEc1LCAkRzYsICRHNywgJEc4LCAkRzksICRHMTA7XG5cbiAgLy8gU3RyaXAgZGVwcmVjYXRlZCBjb3Zlci9jb250YWluIGZvciBzcGVjXG4gICRzaGFwZS1zaXplLXNwZWM6IF9zaGFwZS1zaXplLXN0cmlwcGVyKCRzaGFwZS1zaXplKTtcblxuICAvLyBTZXQgJEcxIGFzIHRoZSBkZWZhdWx0IGZhbGxiYWNrIGNvbG9yXG4gICRmaXJzdC1jb2xvcjogbnRoKCRmdWxsLCAxKTtcbiAgJGZhbGxiYWNrLWNvbG9yOiBudGgoJGZpcnN0LWNvbG9yLCAxKTtcblxuICBAaWYgKHR5cGUtb2YoJGZhbGxiYWNrKSA9PSBjb2xvcikgb3IgKCRmYWxsYmFjayA9PSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAkZmFsbGJhY2stY29sb3I6ICRmYWxsYmFjaztcbiAgfVxuXG4gIC8vIEFkZCBDb21tYXMgYW5kIHNwYWNlc1xuICAkc2hhcGUtc2l6ZTogaWYoJHNoYXBlLXNpemUsICcjeyRzaGFwZS1zaXplfSwgJywgbnVsbCk7XG4gICRwb3M6ICAgICAgICBpZigkcG9zLCAnI3skcG9zfSwgJywgbnVsbCk7XG4gICRwb3Mtc3BlYzogICBpZigkcG9zLCAnYXQgI3skcG9zfScsIG51bGwpO1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBpZigoJHNoYXBlLXNpemUtc3BlYyAhPSAnICcpIGFuZCAoJHBvcyA9PSBudWxsKSwgJyN7JHNoYXBlLXNpemUtc3BlY30sICcsICcjeyRzaGFwZS1zaXplLXNwZWN9ICcpO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICAkZmFsbGJhY2stY29sb3I7XG4gIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KHVucXVvdGUoI3skcG9zfSN7JHNoYXBlLXNpemV9I3skZnVsbH0pKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogdW5xdW90ZShcInJhZGlhbC1ncmFkaWVudCgjeyRzaGFwZS1zaXplLXNwZWN9I3skcG9zLXNwZWN9I3skZnVsbH0pXCIpO1xufVxuIiwiQG1peGluIHRyYW5zZm9ybSgkcHJvcGVydHk6IG5vbmUpIHtcbi8vICBub25lIHwgPHRyYW5zZm9ybS1mdW5jdGlvbj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLCAkcHJvcGVydHksIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cblxuQG1peGluIHRyYW5zZm9ybS1vcmlnaW4oJGF4ZXM6IDUwJSkge1xuLy8geC1heGlzIC0gbGVmdCB8IGNlbnRlciB8IHJpZ2h0ICB8IGxlbmd0aCB8ICVcbi8vIHktYXhpcyAtIHRvcCAgfCBjZW50ZXIgfCBib3R0b20gfCBsZW5ndGggfCAlXG4vLyB6LWF4aXMgLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybS1vcmlnaW4sICRheGVzLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0tc3R5bGUgKCRzdHlsZTogZmxhdCkge1xuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0tc3R5bGUsICRzdHlsZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuIiwiLy8gU2hvcnRoYW5kIG1peGluLiBTdXBwb3J0cyBtdWx0aXBsZSBwYXJlbnRoZXNlcy1kZWxpbWluYXRlZCB2YWx1ZXMgZm9yIGVhY2ggdmFyaWFibGUuXG4vLyBFeGFtcGxlOiBAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMnMgZWFzZS1pbi1vdXQpO1xuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbiAob3BhY2l0eSAxcyBlYXNlLWluIDJzLCB3aWR0aCAycyBlYXNlLW91dCk7XG4vLyAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uLXByb3BlcnR5ICh0cmFuc2Zvcm0sIG9wYWNpdHkpO1xuXG5AbWl4aW4gdHJhbnNpdGlvbiAoJHByb3BlcnRpZXMuLi4pIHtcbiAgLy8gRml4IGZvciB2ZW5kb3ItcHJlZml4IHRyYW5zZm9ybSBwcm9wZXJ0eVxuICAkbmVlZHMtcHJlZml4ZXM6IGZhbHNlO1xuICAkd2Via2l0OiAoKTtcbiAgJG1vejogKCk7XG4gICRzcGVjOiAoKTtcblxuICAvLyBDcmVhdGUgbGlzdHMgZm9yIHZlbmRvci1wcmVmaXhlZCB0cmFuc2Zvcm1cbiAgQGVhY2ggJGxpc3QgaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiBudGgoJGxpc3QsIDEpID09IFwidHJhbnNmb3JtXCIge1xuICAgICAgJG5lZWRzLXByZWZpeGVzOiB0cnVlO1xuICAgICAgJGxpc3QxOiAtd2Via2l0LXRyYW5zZm9ybTtcbiAgICAgICRsaXN0MjogLW1vei10cmFuc2Zvcm07XG4gICAgICAkbGlzdDM6ICgpO1xuXG4gICAgICBAZWFjaCAkdmFyIGluICRsaXN0IHtcbiAgICAgICAgJGxpc3QzOiBqb2luKCRsaXN0MywgJHZhcik7XG5cbiAgICAgICAgQGlmICR2YXIgIT0gXCJ0cmFuc2Zvcm1cIiB7XG4gICAgICAgICAgJGxpc3QxOiBqb2luKCRsaXN0MSwgJHZhcik7XG4gICAgICAgICAgJGxpc3QyOiBqb2luKCRsaXN0MiwgJHZhcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHdlYmtpdDogYXBwZW5kKCR3ZWJraXQsICRsaXN0MSk7XG4gICAgICAgICAkbW96OiBhcHBlbmQoJG1veiwgICAgJGxpc3QyKTtcbiAgICAgICAgJHNwZWM6IGFwcGVuZCgkc3BlYywgICAkbGlzdDMpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBsaXN0cyBmb3Igbm9uLXByZWZpeGVkIHRyYW5zaXRpb24gcHJvcGVydGllc1xuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6ICBhcHBlbmQoJHdlYmtpdCwgJGxpc3QsIGNvbW1hKTtcbiAgICAgICRtb3o6ICAgICBhcHBlbmQoJG1veiwgICAgJGxpc3QsIGNvbW1hKTtcbiAgICAgICRzcGVjOiAgICBhcHBlbmQoJHNwZWMsICAgJGxpc3QsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBAaWYgJG5lZWRzLXByZWZpeGVzIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246ICR3ZWJraXQ7XG4gICAgICAgLW1vei10cmFuc2l0aW9uOiAkbW96O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogJHNwZWM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBsZW5ndGgoJHByb3BlcnRpZXMpID49IDEge1xuICAgICAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbiwgJHByb3BlcnRpZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgJHByb3BlcnRpZXM6IGFsbCAwLjE1cyBlYXNlLW91dCAwcztcbiAgICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSAoJHByb3BlcnRpZXMuLi4pIHtcbiAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcGVydGllcywgJ3dlYmtpdCcpO1xuICAgICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCAnbW96Jyk7XG4gICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIGZhbHNlKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24tZHVyYXRpb24gKCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWR1cmF0aW9uLCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiAoJG1vdGlvbnMuLi4pIHtcbi8vIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dCB8IGN1YmljLWJlemllcigpXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkbW90aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24tZGVsYXkgKCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gdXNlci1zZWxlY3QoJGFyZzogbm9uZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcih1c2VyLXNlbGVjdCwgJGFyZywgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cbiIsIkBtaXhpbiBwbGFjZWhvbGRlciB7XG4gICRwbGFjZWhvbGRlcnM6IFwiOi13ZWJraXQtaW5wdXRcIiBcIjotbW96XCIgXCItbW96XCIgXCItbXMtaW5wdXRcIjtcbiAgQGVhY2ggJHBsYWNlaG9sZGVyIGluICRwbGFjZWhvbGRlcnMge1xuICAgICY6I3skcGxhY2Vob2xkZXJ9LXBsYWNlaG9sZGVyIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIGJ1dHRvbiAoJHN0eWxlOiBzaW1wbGUsICRiYXNlLWNvbG9yOiAjNDI5NGYwLCAkdGV4dC1zaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IHN0cmluZyBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gY29sb3Ige1xuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gc3RyaW5nIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBudW1iZXIge1xuICAgICRwYWRkaW5nOiAkdGV4dC1zaXplO1xuICAgICR0ZXh0LXNpemU6ICRiYXNlLWNvbG9yO1xuICAgICRiYXNlLWNvbG9yOiAjNDI5NGYwO1xuXG4gICAgQGlmICRwYWRkaW5nID09IGluaGVyaXQge1xuICAgICAgJHBhZGRpbmc6IDdweCAxOHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gY29sb3IgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IGNvbG9yIHtcbiAgICAkYmFzZS1jb2xvcjogJHN0eWxlO1xuICAgICRzdHlsZTogc2ltcGxlO1xuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gY29sb3IgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IG51bWJlciB7XG4gICAgJHBhZGRpbmc6ICR0ZXh0LXNpemU7XG4gICAgJHRleHQtc2l6ZTogJGJhc2UtY29sb3I7XG4gICAgJGJhc2UtY29sb3I6ICRzdHlsZTtcbiAgICAkc3R5bGU6IHNpbXBsZTtcblxuICAgIEBpZiAkcGFkZGluZyA9PSBpbmhlcml0IHtcbiAgICAgICRwYWRkaW5nOiA3cHggMThweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IG51bWJlciB7XG4gICAgJHBhZGRpbmc6ICRiYXNlLWNvbG9yO1xuICAgICR0ZXh0LXNpemU6ICRzdHlsZTtcbiAgICAkYmFzZS1jb2xvcjogIzQyOTRmMDtcbiAgICAkc3R5bGU6IHNpbXBsZTtcblxuICAgIEBpZiAkcGFkZGluZyA9PSAjNDI5NGYwIHtcbiAgICAgICRwYWRkaW5nOiA3cHggMThweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxufVxuXG5cbi8vIFNlbGVjdG9yIFN0eWxlIEJ1dHRvblxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQG1peGluIGJ1dHRvbnN0eWxlKCR0eXBlLCAkYi1jb2xvciwgJHQtc2l6ZSwgJHBhZCkge1xuICAvLyBHcmF5c2NhbGUgYnV0dG9uXG4gIEBpZiAkdHlwZSA9PSBzaW1wbGUgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xuICAgIEBpbmNsdWRlIHNpbXBsZSgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gc2hpbnkgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xuICAgIEBpbmNsdWRlIHNoaW55KCRiLWNvbG9yLCB0cnVlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBpZiAkdHlwZSA9PSBwaWxsIGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBwaWxsKCRiLWNvbG9yLCB0cnVlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBpZiAkdHlwZSA9PSBmbGF0IGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBmbGF0KCRiLWNvbG9yLCB0cnVlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIC8vIENvbG9yZWQgYnV0dG9uXG4gIEBpZiAkdHlwZSA9PSBzaW1wbGUge1xuICAgIEBpbmNsdWRlIHNpbXBsZSgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gc2hpbnkge1xuICAgIEBpbmNsdWRlIHNoaW55KCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAZWxzZSBpZiAkdHlwZSA9PSBwaWxsIHtcbiAgICBAaW5jbHVkZSBwaWxsKCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAZWxzZSBpZiAkdHlwZSA9PSBmbGF0IHtcbiAgICBAaW5jbHVkZSBmbGF0KCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cbn1cblxuXG4vLyBTaW1wbGUgQnV0dG9uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AbWl4aW4gc2ltcGxlKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlcjogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xNCUpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTglLCAgJGxpZ2h0bmVzczogIDE1JSk7XG4gICRzdG9wLWdyYWRpZW50OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgOSUsICAkbGlnaHRuZXNzOiAtMTElKTtcbiAgJHRleHQtc2hhZG93OiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICAxNSUsICRsaWdodG5lc3M6IC0xOCUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gIH1cblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMCAkdGV4dC1zaGFkb3c7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcbiAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTclLCAkbGlnaHRuZXNzOiAgNSUpO1xuICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgOCUsICRsaWdodG5lc3M6IC0xNCUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWhvdmVyKTtcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICB9XG5cbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdy1ob3ZlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvci1ob3ZlciwgJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xuICB9XG5cbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xuICAgICRib3JkZXItYWN0aXZlOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA5JSwgJGxpZ2h0bmVzczogLTE0JSk7XG4gICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDclLCAkbGlnaHRuZXNzOiAtMTclKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJvcmRlci1hY3RpdmU6ICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWFjdGl2ZSk7XG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctYWN0aXZlKTtcbiAgICB9XG5cbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWFjdGl2ZTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgOHB4IDRweCAkaW5zZXQtc2hhZG93LWFjdGl2ZSwgaW5zZXQgMCAwIDhweCA0cHggJGluc2V0LXNoYWRvdy1hY3RpdmU7XG4gIH1cbn1cblxuXG4vLyBTaGlueSBCdXR0b25cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBtaXhpbiBzaGlueSgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UsICR0ZXh0c2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XG4gICRjb2xvcjogICAgICAgICBoc2woMCwgMCwgMTAwJSk7XG4gICRib3JkZXI6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMTcsICRncmVlbjogLTExMSwgJGJsdWU6IC04MSk7XG4gICRib3JkZXItYm90dG9tOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMjYsICRncmVlbjogLTEyNywgJGJsdWU6IC0xMjIpO1xuICAkZm91cnRoLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNzksICAkZ3JlZW46IC03MCwgICRibHVlOiAtNDYpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAgMzcsICAkZ3JlZW46ICAyOSwgICRibHVlOiAgMTIpO1xuICAkc2Vjb25kLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNTYsICAkZ3JlZW46IC01MCwgICRibHVlOiAtMzMpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTQwLCAkZ3JlZW46IC0xNDEsICRibHVlOiAtMTE0KTtcbiAgJHRoaXJkLXN0b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAgJGdyZWVuOiAtNzUsICAkYmx1ZTogLTQ4KTtcblxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xuICAgICR0ZXh0LXNoYWRvdzogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogMTAlLCAkbGlnaHRuZXNzOiA0JSk7XG4gIH1cblxuICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAkYm9yZGVyOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXIpO1xuICAgICRib3JkZXItYm90dG9tOiBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xuICAgICRmb3VydGgtc3RvcDogICBncmF5c2NhbGUoJGZvdXJ0aC1zdG9wKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzZWNvbmQtc3RvcDogICBncmF5c2NhbGUoJHNlY29uZC1zdG9wKTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gICAgJHRoaXJkLXN0b3A6ICAgIGdyYXlzY2FsZSgkdGhpcmQtc3RvcCk7XG4gIH1cblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQodG9wLCAkYmFzZS1jb2xvciAwJSwgJHNlY29uZC1zdG9wIDUwJSwgJHRoaXJkLXN0b3AgNTAlLCAkZm91cnRoLXN0b3AgMTAwJSk7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICRmaXJzdC1zdG9wLWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTMsICRncmVlbjogLTE1LCAkYmx1ZTogLTE4KTtcbiAgICAkc2Vjb25kLXN0b3AtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTY2LCAkZ3JlZW46IC02MiwgJGJsdWU6IC01MSk7XG4gICAgJHRoaXJkLXN0b3AtaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC05MywgJGdyZWVuOiAtODUsICRibHVlOiAtNjYpO1xuICAgICRmb3VydGgtc3RvcC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtODYsICRncmVlbjogLTgwLCAkYmx1ZTogLTYzKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGZpcnN0LXN0b3AtaG92ZXI6ICBncmF5c2NhbGUoJGZpcnN0LXN0b3AtaG92ZXIpO1xuICAgICAgJHNlY29uZC1zdG9wLWhvdmVyOiBncmF5c2NhbGUoJHNlY29uZC1zdG9wLWhvdmVyKTtcbiAgICAgICR0aGlyZC1zdG9wLWhvdmVyOiAgZ3JheXNjYWxlKCR0aGlyZC1zdG9wLWhvdmVyKTtcbiAgICAgICRmb3VydGgtc3RvcC1ob3ZlcjogZ3JheXNjYWxlKCRmb3VydGgtc3RvcC1ob3Zlcik7XG4gICAgfVxuXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRmaXJzdC1zdG9wLWhvdmVyICAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2Vjb25kLXN0b3AtaG92ZXIgNTAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlyZC1zdG9wLWhvdmVyICA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyIDEwMCUpO1xuICB9XG5cbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMTEsICRncmVlbjogLTExNiwgJGJsdWU6IC0xMjIpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctYWN0aXZlKTtcbiAgICB9XG5cbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMjBweCAwICRpbnNldC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG5cblxuLy8gUGlsbCBCdXR0b25cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBtaXhpbiBwaWxsKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAtMTElLCAkbGlnaHRuZXNzOiAtMjYlKTtcbiAgJGJvcmRlci1zaWRlczogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMjElLCAkbGlnaHRuZXNzOiAtMjElKTtcbiAgJGJvcmRlci10b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMzAlLCAkbGlnaHRuZXNzOiAtMTUlKTtcbiAgJGluc2V0LXNoYWRvdzogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMSUsICAkbGlnaHRuZXNzOiAgNyUpO1xuICAkc3RvcC1ncmFkaWVudDogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246ICAxNCUsICRsaWdodG5lc3M6IC0xMCUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNSwgJHNhdHVyYXRpb246IC0xOSUsICRsaWdodG5lc3M6IC0xNSUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXItYm90dG9tOiBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xuICAgICRib3JkZXItc2lkZXM6ICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XG4gICAgJGJvcmRlci10b3A6ICAgIGdyYXlzY2FsZSgkYm9yZGVyLXRvcCk7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gIH1cblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLXRvcDtcbiAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLXRvcCAkYm9yZGVyLXNpZGVzICRib3JkZXItYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdztcbiAgY29sb3I6ICRjb2xvcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6ICR0ZXh0c2l6ZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3IsICRzdG9wLWdyYWRpZW50KTtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3c7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaWdodG5lc3M6IC00LjUlKTtcbiAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246ICAxMy41JSwgJGxpZ2h0bmVzczogLTMyJSk7XG4gICAgJGJvcmRlci1zaWRlczogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMiUsICAgICRsaWdodG5lc3M6IC0yNyUpO1xuICAgICRib3JkZXItdG9wOiAgICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IC0xLCAkc2F0dXJhdGlvbjogLTE3JSwgICAkbGlnaHRuZXNzOiAtMjElKTtcbiAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgJHNhdHVyYXRpb246IC0xJSwgICAgJGxpZ2h0bmVzczogIDMlKTtcbiAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246IC00JSwgICAgJGxpZ2h0bmVzczogLTE1LjUlKTtcbiAgICAkdGV4dC1zaGFkb3ctaG92ZXI6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNSwgJHNhdHVyYXRpb246IC01JSwgICAgJGxpZ2h0bmVzczogLTIyJSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgICAgJGJvcmRlci1ib3R0b206ICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItc2lkZXMpO1xuICAgICAgJGJvcmRlci10b3A6ICAgICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLXRvcCk7XG4gICAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctaG92ZXIpO1xuICAgICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG4gICAgICAkdGV4dC1zaGFkb3ctaG92ZXI6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdy1ob3Zlcik7XG4gICAgfVxuXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci10b3A7XG4gICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLXRvcCAkYm9yZGVyLXNpZGVzICRib3JkZXItYm90dG9tO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93LWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLWhvdmVyLCAkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWhvdmVyO1xuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XG4gICAgJGFjdGl2ZS1jb2xvcjogICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDQsICAkc2F0dXJhdGlvbjogLTEyJSwgICRsaWdodG5lc3M6IC0xMCUpO1xuICAgICRib3JkZXItYWN0aXZlOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA2LCAgJHNhdHVyYXRpb246IC0yLjUlLCAkbGlnaHRuZXNzOiAtMzAlKTtcbiAgICAkYm9yZGVyLWJvdHRvbS1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogMTEsICRzYXR1cmF0aW9uOiAgNiUsICAgJGxpZ2h0bmVzczogLTMxJSk7XG4gICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDksICAkc2F0dXJhdGlvbjogIDIlLCAgICRsaWdodG5lc3M6IC0yMS41JSk7XG4gICAgJHRleHQtc2hhZG93LWFjdGl2ZTogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDUsICAkc2F0dXJhdGlvbjogLTEyJSwgICRsaWdodG5lc3M6IC0yMS41JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRhY3RpdmUtY29sb3I6ICAgICAgICAgZ3JheXNjYWxlKCRhY3RpdmUtY29sb3IpO1xuICAgICAgJGJvcmRlci1hY3RpdmU6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xuICAgICAgJGJvcmRlci1ib3R0b20tYWN0aXZlOiBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20tYWN0aXZlKTtcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctYWN0aXZlKTtcbiAgICAgICR0ZXh0LXNoYWRvdy1hY3RpdmU6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdy1hY3RpdmUpO1xuICAgIH1cblxuICAgIGJhY2tncm91bmQ6ICRhY3RpdmUtY29sb3I7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1hY3RpdmU7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItYm90dG9tLWFjdGl2ZTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgNnB4IDNweCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG5cblxuXG4vLyBGbGF0IEJ1dHRvblxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQG1peGluIGZsYXQoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgcGFkZGluZzogN3B4IDE4cHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe1xuICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA0JSwgJGxpZ2h0bmVzczogNSUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYmFzZS1jb2xvci1ob3ZlcjogZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWhvdmVyKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvci1ob3ZlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XG4gICAgJGJhc2UtY29sb3ItYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNCUsICRsaWdodG5lc3M6IC01JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWFjdGl2ZTogZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhc2UtY29sb3ItYWN0aXZlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuIiwiLy8gTW9kZXJuIG1pY3JvIGNsZWFyZml4IHByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGNvbnRhaW4gZmxvYXRzIHdpdGhvdXQgYWRkaW5nIGFkZGl0aW9uYWwgbWFya3VwLlxuLy9cbi8vIEV4YW1wbGUgdXNhZ2U6XG4vL1xuLy8gICAgLy8gQ29udGFpbiBhbGwgZmxvYXRzIHdpdGhpbiAud3JhcHBlclxuLy8gICAgLndyYXBwZXIge1xuLy8gICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbi8vICAgICAgLmNvbnRlbnQsXG4vLyAgICAgIC5zaWRlYmFyIHtcbi8vICAgICAgICBmbG9hdCA6IGxlZnQ7XG4vLyAgICAgIH1cbi8vICAgIH1cblxuQG1peGluIGNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDpcIlwiO1xuICAgIGRpc3BsYXk6dGFibGU7XG4gICAgY2xlYXI6Ym90aDtcbiAgfVxufVxuXG4vLyBBY2tub3dsZWRnZW1lbnRzXG4vLyBCZWF0ICp0aGF0KiBjbGVhcmZpeDogW1RoaWVycnkgS29ibGVudHpdKGh0dHA6Ly93d3cuY3NzLTEwMS5vcmcvYXJ0aWNsZXMvY2xlYXJmaXgvbGF0ZXN0LW5ldy1jbGVhcmZpeC1zby1mYXIucGhwKVxuIiwiLy8gZGlyZWN0aW9uYWwtcHJvcGVydHkgbWl4aW5zIGFyZSBzaG9ydGhhbmRzXG4vLyBmb3Igd3JpdGluZyBwcm9wZXJ0aWVzIGxpa2UgdGhlIGZvbGxvd2luZ1xuLy9cbi8vIEBpbmNsdWRlIG1hcmdpbihudWxsIDAgMTBweCk7XG4vLyAtLS0tLS1cbi8vIG1hcmdpbi1yaWdodDogMDtcbi8vIG1hcmdpbi1ib3R0b206IDEwcHg7XG4vLyBtYXJnaW4tbGVmdDogMDtcbi8vXG4vLyAtIG9yIC1cbi8vXG4vLyBAaW5jbHVkZSBib3JkZXItc3R5bGUoZG90dGVkIG51bGwpO1xuLy8gLS0tLS0tXG4vLyBib3JkZXItdG9wLXN0eWxlOiBkb3R0ZWQ7XG4vLyBib3JkZXItYm90dG9tLXN0eWxlOiBkb3R0ZWQ7XG4vL1xuLy8gLS0tLS0tXG4vL1xuLy8gTm90ZTogWW91IGNhbiBhbHNvIHVzZSBmYWxzZSBpbnN0ZWFkIG9mIG51bGxcblxuQGZ1bmN0aW9uIGNvbGxhcHNlLWRpcmVjdGlvbmFscygkdmFscykge1xuICAkb3V0cHV0OiBudWxsO1xuXG4gICRBOiBudGgoICR2YWxzLCAxICk7XG4gICRCOiBpZiggbGVuZ3RoKCR2YWxzKSA8IDIsICRBLCBudGgoJHZhbHMsIDIpKTtcbiAgJEM6IGlmKCBsZW5ndGgoJHZhbHMpIDwgMywgJEEsIG50aCgkdmFscywgMykpO1xuICAkRDogaWYoIGxlbmd0aCgkdmFscykgPCAyLCAkQSwgbnRoKCR2YWxzLCBpZiggbGVuZ3RoKCR2YWxzKSA8IDQsIDIsIDQpICkpO1xuXG4gIEBpZiAkQSA9PSAwIHsgJEE6IDAgfVxuICBAaWYgJEIgPT0gMCB7ICRCOiAwIH1cbiAgQGlmICRDID09IDAgeyAkQzogMCB9XG4gIEBpZiAkRCA9PSAwIHsgJEQ6IDAgfVxuXG4gIEBpZiAkQSA9PSAkQiBhbmQgJEEgPT0gJEMgYW5kICRBID09ICREIHsgJG91dHB1dDogJEEgICAgICAgICAgfVxuICBAZWxzZSBpZiAkQSA9PSAkQyBhbmQgJEIgPT0gJEQgICAgICAgICB7ICRvdXRwdXQ6ICRBICRCICAgICAgIH1cbiAgQGVsc2UgaWYgJEIgPT0gJEQgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkQSAkQiAkQyAgICB9XG4gIEBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJG91dHB1dDogJEEgJEIgJEMgJEQgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuQGZ1bmN0aW9uIGNvbnRhaW5zLWZhbHN5KCRsaXN0KSB7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgbm90ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG5AbWl4aW4gZGlyZWN0aW9uYWwtcHJvcGVydHkoJHByZSwgJHN1ZiwgJHZhbHMpIHtcbiAgLy8gUHJvcGVydHkgTmFtZXNcbiAgJHRvcDogICAgJHByZSArIFwiLXRvcFwiICAgICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcbiAgJGJvdHRvbTogJHByZSArIFwiLWJvdHRvbVwiICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcbiAgJGxlZnQ6ICAgJHByZSArIFwiLWxlZnRcIiAgICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcbiAgJHJpZ2h0OiAgJHByZSArIFwiLXJpZ2h0XCIgICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcbiAgJGFsbDogICAgJHByZSArICAgICAgICAgICAgIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG5cbiAgJHZhbHM6IGNvbGxhcHNlLWRpcmVjdGlvbmFscygkdmFscyk7XG5cbiAgQGlmIGNvbnRhaW5zLWZhbHN5KCR2YWxzKSB7XG4gICAgQGlmIG50aCgkdmFscywgMSkgeyAjeyR0b3B9OiBudGgoJHZhbHMsIDEpOyB9XG5cbiAgICBAaWYgbGVuZ3RoKCR2YWxzKSA9PSAxIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skcmlnaHR9OiBudGgoJHZhbHMsIDEpOyB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAyKSB7ICN7JHJpZ2h0fTogbnRoKCR2YWxzLCAyKTsgfVxuICAgIH1cblxuICAgIC8vIHByb3A6IHRvcC9ib3R0b20gcmlnaHQvbGVmdFxuICAgIEBpZiBsZW5ndGgoJHZhbHMpID09IDIge1xuICAgICAgQGlmIG50aCgkdmFscywgMSkgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDEpOyB9XG4gICAgICBAaWYgbnRoKCR2YWxzLCAyKSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgMik7IH1cblxuICAgIC8vIHByb3A6IHRvcCByaWdodC9sZWZ0IGJvdHRvbVxuICAgIH0gQGVsc2UgaWYgbGVuZ3RoKCR2YWxzKSA9PSAzIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDMpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAzKTsgfVxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDIpOyB9XG5cbiAgICAvLyBwcm9wOiB0b3AgcmlnaHQgYm90dG9tIGxlZnRcbiAgICB9IEBlbHNlIGlmIGxlbmd0aCgkdmFscykgPT0gNCB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMyk7IH1cbiAgICAgIEBpZiBudGgoJHZhbHMsIDQpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCA0KTsgfVxuICAgIH1cblxuICAvLyBwcm9wOiB0b3AvcmlnaHQvYm90dG9tL2xlZnRcbiAgfSBAZWxzZSB7XG4gICAgI3skYWxsfTogJHZhbHM7XG4gIH1cbn1cblxuQG1peGluIG1hcmdpbigkdmFscy4uLikge1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShtYXJnaW4sIGZhbHNlLCAkdmFscy4uLik7XG59XG5cbkBtaXhpbiBwYWRkaW5nKCR2YWxzLi4uKSB7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KHBhZGRpbmcsIGZhbHNlLCAkdmFscy4uLik7XG59XG5cbkBtaXhpbiBib3JkZXItc3R5bGUoJHZhbHMuLi4pIHtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCBzdHlsZSwgJHZhbHMuLi4pO1xufVxuXG5AbWl4aW4gYm9yZGVyLWNvbG9yKCR2YWxzLi4uKSB7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgY29sb3IsICR2YWxzLi4uKTtcbn1cblxuQG1peGluIGJvcmRlci13aWR0aCgkdmFscy4uLikge1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIHdpZHRoLCAkdmFscy4uLik7XG59XG4iLCJAbWl4aW4gZWxsaXBzaXMoJHdpZHRoOiAxMDAlKSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAkd2lkdGg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuIiwiJGdlb3JnaWE6IEdlb3JnaWEsIENhbWJyaWEsIFwiVGltZXMgTmV3IFJvbWFuXCIsIFRpbWVzLCBzZXJpZjtcbiRoZWx2ZXRpY2E6IFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBSb2JvdG8sIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGx1Y2lkYS1ncmFuZGU6IFwiTHVjaWRhIEdyYW5kZVwiLCBUYWhvbWEsIFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJG1vbm9zcGFjZTogXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgQ29uc29sYXMsIENvdXJpZXIsIG1vbm9zcGFjZTtcbiR2ZXJkYW5hOiBWZXJkYW5hLCBHZW5ldmEsIHNhbnMtc2VyaWY7XG4iLCJAbWl4aW4gaGlkZS10ZXh0IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEdlbmVyYXRlIGEgdmFyaWFibGUgKCRhbGwtdGV4dC1pbnB1dHMpIHdpdGggYSBsaXN0IG9mIGFsbCBodG1sNVxuLy8gaW5wdXQgdHlwZXMgdGhhdCBoYXZlIGEgdGV4dC1iYXNlZCBpbnB1dCwgZXhjbHVkaW5nIHRleHRhcmVhLlxuLy8gaHR0cDovL2RpdmVpbnRvaHRtbDUub3JnL2Zvcm1zLmh0bWxcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbiRpbnB1dHMtbGlzdDogJ2lucHV0W3R5cGU9XCJlbWFpbFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibnVtYmVyXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJwYXNzd29yZFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwic2VhcmNoXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0ZWxcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRleHRcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInVybFwiXScsXG5cbiAgICAgICAgICAgICAgLy8gV2Via2l0ICYgR2Vja28gbWF5IGNoYW5nZSB0aGUgZGlzcGxheSBvZiB0aGVzZSBpbiB0aGUgZnV0dXJlXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiY29sb3JcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGVcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibW9udGhcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRpbWVcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIndlZWtcIl0nO1xuXG4vLyBCYXJlIGlucHV0c1xuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuJGFsbC10ZXh0LWlucHV0czogYXNzaWduLWlucHV0cygkaW5wdXRzLWxpc3QpO1xuXG4vLyBIb3ZlciBQc2V1ZG8tY2xhc3Ncbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbiRhbGwtdGV4dC1pbnB1dHMtaG92ZXI6IGFzc2lnbi1pbnB1dHMoJGlucHV0cy1saXN0LCBob3Zlcik7XG5cbi8vIEZvY3VzIFBzZXVkby1jbGFzc1xuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuJGFsbC10ZXh0LWlucHV0cy1mb2N1czogYXNzaWduLWlucHV0cygkaW5wdXRzLWxpc3QsIGZvY3VzKTtcblxuXG5cbi8vIFlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTpcbi8vICN7JGFsbC10ZXh0LWlucHV0c31cbi8vICN7JGFsbC10ZXh0LWlucHV0cy1ob3Zlcn1cbi8vICN7JGFsbC10ZXh0LWlucHV0cy1mb2N1c31cblxuLy8gRXhhbXBsZVxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gICAjeyRhbGwtdGV4dC1pbnB1dHN9LCB0ZXh0YXJlYSB7XG4vLyAgICAgYm9yZGVyOiAxcHggc29saWQgcmVkO1xuLy8gICB9XG5cblxuXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBHZW5lcmF0ZSBhIHZhcmlhYmxlICgkYWxsLWJ1dHRvbi1pbnB1dHMpIHdpdGggYSBsaXN0IG9mIGFsbCBodG1sNVxuLy8gaW5wdXQgdHlwZXMgdGhhdCBoYXZlIGEgYnV0dG9uLWJhc2VkIGlucHV0LCBleGNsdWRpbmcgYnV0dG9uLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuJGlucHV0cy1idXR0b24tbGlzdDogJ2lucHV0W3R5cGU9XCJidXR0b25cIl0nLFxuICAgICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJyZXNldFwiXScsXG4gICAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSc7XG5cbi8vIEJhcmUgaW5wdXRzXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4kYWxsLWJ1dHRvbi1pbnB1dHM6IGFzc2lnbi1pbnB1dHMoJGlucHV0cy1idXR0b24tbGlzdCk7XG5cbi8vIEhvdmVyIFBzZXVkby1jbGFzc1xuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuJGFsbC1idXR0b24taW5wdXRzLWhvdmVyOiBhc3NpZ24taW5wdXRzKCRpbnB1dHMtYnV0dG9uLWxpc3QsIGhvdmVyKTtcblxuLy8gRm9jdXMgUHNldWRvLWNsYXNzXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4kYWxsLWJ1dHRvbi1pbnB1dHMtZm9jdXM6IGFzc2lnbi1pbnB1dHMoJGlucHV0cy1idXR0b24tbGlzdCwgZm9jdXMpO1xuXG4vLyBBY3RpdmUgUHNldWRvLWNsYXNzXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4kYWxsLWJ1dHRvbi1pbnB1dHMtYWN0aXZlOiBhc3NpZ24taW5wdXRzKCRpbnB1dHMtYnV0dG9uLWxpc3QsIGFjdGl2ZSk7XG5cblxuXG4vLyBZb3UgbXVzdCB1c2UgaW50ZXJwb2xhdGlvbiBvbiB0aGUgdmFyaWFibGU6XG4vLyAjeyRhbGwtYnV0dG9uLWlucHV0c31cbi8vICN7JGFsbC1idXR0b24taW5wdXRzLWhvdmVyfVxuLy8gI3skYWxsLWJ1dHRvbi1pbnB1dHMtZm9jdXN9XG4vLyAjeyRhbGwtYnV0dG9uLWlucHV0cy1hY3RpdmV9XG5cbi8vIEV4YW1wbGVcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vICAgI3skYWxsLWJ1dHRvbi1pbnB1dHN9LCBidXR0b24ge1xuLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcbi8vICAgfVxuIiwiQG1peGluIHBvc2l0aW9uICgkcG9zaXRpb246IHJlbGF0aXZlLCAkY29vcmRpbmF0ZXM6IG51bGwgbnVsbCBudWxsIG51bGwpIHtcblxuICBAaWYgdHlwZS1vZigkcG9zaXRpb24pID09IGxpc3Qge1xuICAgICRjb29yZGluYXRlczogJHBvc2l0aW9uO1xuICAgICRwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAkY29vcmRpbmF0ZXM6IHVucGFjaygkY29vcmRpbmF0ZXMpO1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XG5cbiAgQGlmICgkdG9wIGFuZCAkdG9wID09IGF1dG8pIG9yICh0eXBlLW9mKCR0b3ApID09IG51bWJlcikge1xuICAgIHRvcDogJHRvcDtcbiAgfVxuXG4gIEBpZiAoJHJpZ2h0IGFuZCAkcmlnaHQgPT0gYXV0bykgb3IgKHR5cGUtb2YoJHJpZ2h0KSA9PSBudW1iZXIpIHtcbiAgICByaWdodDogJHJpZ2h0O1xuICB9XG5cbiAgQGlmICgkYm90dG9tIGFuZCAkYm90dG9tID09IGF1dG8pIG9yICh0eXBlLW9mKCRib3R0b20pID09IG51bWJlcikge1xuICAgIGJvdHRvbTogJGJvdHRvbTtcbiAgfVxuXG4gIEBpZiAoJGxlZnQgYW5kICRsZWZ0ID09IGF1dG8pIG9yICh0eXBlLW9mKCRsZWZ0KSA9PSBudW1iZXIpIHtcbiAgICBsZWZ0OiAkbGVmdDtcbiAgfVxufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gRXhhbXBsZTogQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXJhZGl1cywgJHJhZGlpLCB3ZWJraXQgbXMgc3BlYyk7XG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBWYXJpYWJsZXMgbG9jYXRlZCBpbiAvc2V0dGluZ3MvX3ByZWZpeGVyLnNjc3NcblxuQG1peGluIHByZWZpeGVyICgkcHJvcGVydHksICR2YWx1ZSwgJHByZWZpeGVzKSB7XG4gIEBlYWNoICRwcmVmaXggaW4gJHByZWZpeGVzIHtcbiAgICBAaWYgJHByZWZpeCA9PSB3ZWJraXQge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRwcmVmaXggPT0gbW96IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICAgICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3ItbWljcm9zb2Z0IHtcbiAgICAgICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkcHJlZml4ID09IG8ge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW9wZXJhIHtcbiAgICAgICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRwcmVmaXggPT0gc3BlYyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itc3BlYyB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSAge1xuICAgICAgQHdhcm4gXCJVbnJlY29nbml6ZWQgcHJlZml4OiAjeyRwcmVmaXh9XCI7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCkge1xuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1vemlsbGE6ICAgZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLXNwZWM6ICAgICAgZmFsc2UgIWdsb2JhbDtcbn1cbiIsIkBtaXhpbiByZXRpbmEtaW1hZ2UoJGZpbGVuYW1lLCAkYmFja2dyb3VuZC1zaXplLCAkZXh0ZW5zaW9uOiBwbmcsICRyZXRpbmEtZmlsZW5hbWU6IG51bGwsICRyZXRpbmEtc3VmZml4OiBfMngsICRhc3NldC1waXBlbGluZTogZmFsc2UpIHtcbiAgQGlmICRhc3NldC1waXBlbGluZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgIHVybChcIiN7JGZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICB9XG5cbiAgQGluY2x1ZGUgaGlkcGkge1xuICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUge1xuICAgICAgQGlmICRyZXRpbmEtZmlsZW5hbWUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRyZXRpbmEtZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JGZpbGVuYW1lfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRyZXRpbmEtZmlsZW5hbWUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIjeyRyZXRpbmEtZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JGZpbGVuYW1lfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZC1zaXplOiAkYmFja2dyb3VuZC1zaXplO1xuXG4gIH1cbn1cbiIsIkBtaXhpbiBzaXplKCRzaXplKSB7XG4gICRoZWlnaHQ6IG50aCgkc2l6ZSwgMSk7XG4gICR3aWR0aDogJGhlaWdodDtcblxuICBAaWYgbGVuZ3RoKCRzaXplKSA+IDEge1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCA9PSBhdXRvIG9yICh0eXBlLW9mKCRoZWlnaHQpID09IG51bWJlciBhbmQgbm90IHVuaXRsZXNzKCRoZWlnaHQpKSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbiAgQGlmICR3aWR0aCA9PSBhdXRvIG9yICh0eXBlLW9mKCRoZWlnaHQpID09IG51bWJlciBhbmQgbm90IHVuaXRsZXNzKCR3aWR0aCkpIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICB9XG59XG4iLCIvLyBDU1MgY3ViaWMtYmV6aWVyIHRpbWluZyBmdW5jdGlvbnMuIFRpbWluZyBmdW5jdGlvbnMgY291cnRlc3kgb2YganF1ZXJ5LmVhc2llIChnaXRodWIuY29tL2phdWtpYS9lYXNpZSlcbi8vIFRpbWluZyBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGRlbW8nZWQgaGVyZTogaHR0cDovL2pxdWVyeXVpLmNvbS9kZW1vcy9lZmZlY3QvZWFzaW5nLmh0bWxcblxuLy8gRUFTRSBJTlxuJGVhc2UtaW4tcXVhZDogICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA4NSwgMC42ODAsIDAuNTMwKTtcbiRlYXNlLWluLWN1YmljOiAgICAgY3ViaWMtYmV6aWVyKDAuNTUwLCAgMC4wNTUsIDAuNjc1LCAwLjE5MCk7XG4kZWFzZS1pbi1xdWFydDogICAgIGN1YmljLWJlemllcigwLjg5NSwgIDAuMDMwLCAwLjY4NSwgMC4yMjApO1xuJGVhc2UtaW4tcXVpbnQ6ICAgICBjdWJpYy1iZXppZXIoMC43NTUsICAwLjA1MCwgMC44NTUsIDAuMDYwKTtcbiRlYXNlLWluLXNpbmU6ICAgICAgY3ViaWMtYmV6aWVyKDAuNDcwLCAgMC4wMDAsIDAuNzQ1LCAwLjcxNSk7XG4kZWFzZS1pbi1leHBvOiAgICAgIGN1YmljLWJlemllcigwLjk1MCwgIDAuMDUwLCAwLjc5NSwgMC4wMzUpO1xuJGVhc2UtaW4tY2lyYzogICAgICBjdWJpYy1iZXppZXIoMC42MDAsICAwLjA0MCwgMC45ODAsIDAuMzM1KTtcbiRlYXNlLWluLWJhY2s6ICAgICAgY3ViaWMtYmV6aWVyKDAuNjAwLCAtMC4yODAsIDAuNzM1LCAwLjA0NSk7XG5cbi8vIEVBU0UgT1VUXG4kZWFzZS1vdXQtcXVhZDogICAgIGN1YmljLWJlemllcigwLjI1MCwgIDAuNDYwLCAwLjQ1MCwgMC45NDApO1xuJGVhc2Utb3V0LWN1YmljOiAgICBjdWJpYy1iZXppZXIoMC4yMTUsICAwLjYxMCwgMC4zNTUsIDEuMDAwKTtcbiRlYXNlLW91dC1xdWFydDogICAgY3ViaWMtYmV6aWVyKDAuMTY1LCAgMC44NDAsIDAuNDQwLCAxLjAwMCk7XG4kZWFzZS1vdXQtcXVpbnQ6ICAgIGN1YmljLWJlemllcigwLjIzMCwgIDEuMDAwLCAwLjMyMCwgMS4wMDApO1xuJGVhc2Utb3V0LXNpbmU6ICAgICBjdWJpYy1iZXppZXIoMC4zOTAsICAwLjU3NSwgMC41NjUsIDEuMDAwKTtcbiRlYXNlLW91dC1leHBvOiAgICAgY3ViaWMtYmV6aWVyKDAuMTkwLCAgMS4wMDAsIDAuMjIwLCAxLjAwMCk7XG4kZWFzZS1vdXQtY2lyYzogICAgIGN1YmljLWJlemllcigwLjA3NSwgIDAuODIwLCAwLjE2NSwgMS4wMDApO1xuJGVhc2Utb3V0LWJhY2s6ICAgICBjdWJpYy1iZXppZXIoMC4xNzUsICAwLjg4NSwgMC4zMjAsIDEuMjc1KTtcblxuLy8gRUFTRSBJTiBPVVRcbiRlYXNlLWluLW91dC1xdWFkOiAgY3ViaWMtYmV6aWVyKDAuNDU1LCAgMC4wMzAsIDAuNTE1LCAwLjk1NSk7XG4kZWFzZS1pbi1vdXQtY3ViaWM6IGN1YmljLWJlemllcigwLjY0NSwgIDAuMDQ1LCAwLjM1NSwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXF1YXJ0OiBjdWJpYy1iZXppZXIoMC43NzAsICAwLjAwMCwgMC4xNzUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWludDogY3ViaWMtYmV6aWVyKDAuODYwLCAgMC4wMDAsIDAuMDcwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtc2luZTogIGN1YmljLWJlemllcigwLjQ0NSwgIDAuMDUwLCAwLjU1MCwgMC45NTApO1xuJGVhc2UtaW4tb3V0LWV4cG86ICBjdWJpYy1iZXppZXIoMS4wMDAsICAwLjAwMCwgMC4wMDAsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1jaXJjOiAgY3ViaWMtYmV6aWVyKDAuNzg1LCAgMC4xMzUsIDAuMTUwLCAwLjg2MCk7XG4kZWFzZS1pbi1vdXQtYmFjazogIGN1YmljLWJlemllcigwLjY4MCwgLTAuNTUwLCAwLjI2NSwgMS41NTApO1xuIiwiQG1peGluIHRyaWFuZ2xlICgkc2l6ZSwgJGNvbG9yLCAkZGlyZWN0aW9uKSB7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG5cbiAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAkaGVpZ2h0OiBudGgoJHNpemUsIGxlbmd0aCgkc2l6ZSkpO1xuXG4gICRmb3JlZ3JvdW5kLWNvbG9yOiBudGgoJGNvbG9yLCAxKTtcbiAgJGJhY2tncm91bmQtY29sb3I6IGlmKGxlbmd0aCgkY29sb3IpID09IDIsIG50aCgkY29sb3IsIDIpLCB0cmFuc3BhcmVudCk7XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuXG4gICAgJHdpZHRoOiAkd2lkdGggLyAyO1xuICAgICRoZWlnaHQ6IGlmKGxlbmd0aCgkc2l6ZSkgPiAxLCAkaGVpZ2h0LCAkaGVpZ2h0LzIpO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcblxuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItbGVmdDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcblxuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci10b3A6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG5cbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQ6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdXAtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHVwLWxlZnQpIHtcbiAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQ6ICAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG5cbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdXAtbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQpIHtcbiAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gZG93bi1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdDogICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcblxuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtdXApIHtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgJHdpZHRoO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LWRvd24pIHtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgJHdpZHRoO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiAkZm9yZWdyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LXJpZ2h0KSB7XG4gICAgYm9yZGVyLXdpZHRoOiAkd2lkdGggJGhlaWdodDtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1sZWZ0KSB7XG4gICAgYm9yZGVyLXdpZHRoOiAkd2lkdGggJGhlaWdodDtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3I7XG4gIH1cbn1cbiIsIkBtaXhpbiB3b3JkLXdyYXAoJHdyYXA6IGJyZWFrLXdvcmQpIHtcbiAgd29yZC13cmFwOiAkd3JhcDtcblxuICBAaWYgJHdyYXAgPT0gYnJlYWstd29yZCB7XG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gIH1cbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIFRoZXNlIG1peGlucy9mdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWRcbi8vIFRoZXkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IE1BSk9SIHZlcnNpb24gcmVsZWFzZVxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQG1peGluIGlubGluZS1ibG9jayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgQHdhcm4gXCJpbmxpbmUtYmxvY2sgbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xufVxuIiwiLy8gQ29yZVxuQGltcG9ydCBcImNvcmVcIjtcblxuLy8gQnJlYWtwb2ludHNcbkBpbXBvcnQgXCJicmVha3BvaW50c1wiO1xuXG4vLyBMYXlvdXRcbkBpbXBvcnQgXCJsYXlvdXRcIjtcblxuLy8gVHlwb2dyYXBoeVxuQGltcG9ydCBcInR5cG9ncmFwaHlcIjtcblxuLy8gTmF2XG5AaW1wb3J0IFwibmF2XCI7IiwiLy8gQm9yZGVyIFJhZGl1c1xuJGNvcmUtYm9yZGVyLXJhZGl1czpcdFx0XHRyZW0oMykgIWRlZmF1bHQ7IiwiLy8gTWVkaWEgRGV2aWNlIEJyZWFrcG9pbnRzXG4kbGFyZ2UtZGVza3RvcC1jb250YWluZXI6XHRcdDc1LjAwMGVtICFkZWZhdWx0O1xuJGRlc2t0b3AtY29udGFpbmVyOlx0XHRcdFx0NjAuMDAwZW0gIWRlZmF1bHQ7XG4kdGFibGV0LWNvbnRhaW5lcjpcdFx0XHRcdDQ4LjAwMGVtICFkZWZhdWx0O1xuJGxhcmdlLW1vYmlsZS1jb250YWluZXI6XHRcdDMwLjAwMGVtICFkZWZhdWx0O1xuJG1vYmlsZS1jb250YWluZXI6XHRcdFx0XHQxMDAlICFkZWZhdWx0O1xuXG4vLyBCcmVha3BvaW50IFZhcmlhYmxlcyBGb3IgUGFydGljbGVzXG4kbWVkaWE6IFwiYWxsXCIgIWRlZmF1bHQ7XG4kbW9iaWxlLW9ubHk6IFwiI3skbWVkaWF9IGFuZCAobWF4LXdpZHRoOiN7JHRhYmxldC1jb250YWluZXIgLSAwLjA2Mn0pXCIgIWRlZmF1bHQ7XG4kbm8tbW9iaWxlOiBcIiN7JG1lZGlhfSBhbmQgKG1pbi13aWR0aDojeyR0YWJsZXQtY29udGFpbmVyfSlcIiAhZGVmYXVsdDtcbiRzbWFsbC1tb2JpbGUtcmFuZ2U6IFwiI3skbWVkaWF9IGFuZCAobWF4LXdpZHRoOiN7JGxhcmdlLW1vYmlsZS1jb250YWluZXJ9KVwiICFkZWZhdWx0O1xuJGxhcmdlLW1vYmlsZS1yYW5nZTogXCIjeyRtZWRpYX0gYW5kIChtaW4td2lkdGg6I3skbGFyZ2UtbW9iaWxlLWNvbnRhaW5lciArIDAuMDYzfSkgYW5kIChtYXgtd2lkdGg6I3skdGFibGV0LWNvbnRhaW5lciAtIDAuMDYyfSlcIiAhZGVmYXVsdDtcbiR0YWJsZXQtcmFuZ2U6IFwiI3skbWVkaWF9IGFuZCAobWluLXdpZHRoOiN7JHRhYmxldC1jb250YWluZXJ9KSBhbmQgKG1heC13aWR0aDojeyRkZXNrdG9wLWNvbnRhaW5lciAtIDAuMDYyfSlcIiAhZGVmYXVsdDtcbiRkZXNrdG9wLXJhbmdlOiBcIiN7JG1lZGlhfSBhbmQgKG1pbi13aWR0aDojeyRkZXNrdG9wLWNvbnRhaW5lcn0pIGFuZCAobWF4LXdpZHRoOiN7JGxhcmdlLWRlc2t0b3AtY29udGFpbmVyIC0gMC4wNjJ9KVwiICFkZWZhdWx0O1xuJGxhcmdlLWRlc2t0b3AtcmFuZ2U6IFwiI3skbWVkaWF9IGFuZCAobWluLXdpZHRoOiN7JGxhcmdlLWRlc2t0b3AtY29udGFpbmVyfSlcIiAhZGVmYXVsdDtcbiIsIi8vIENvbnRlbnQgQmxvY2sgU3BhY2luZyBWYXJpYWJsZXNcbiRjb250ZW50LW1hcmdpbjpcdFx0XHRcdDAuNjI1cmVtICFkZWZhdWx0O1xuJGNvbnRlbnQtcGFkZGluZzpcdFx0XHRcdDAuOTM4cmVtICFkZWZhdWx0O1xuXG4vLyBGaXhlZCBCbG9jayBWYXJpYWJsZXNcbiRmaXhlZC1ibG9jay1mdWxsOlx0XHRcdFx0cGVyY2VudGFnZSgxLzQpICFkZWZhdWx0O1xuJGZpeGVkLWJsb2NrLWRlc2t0b3A6XHRcdFx0cGVyY2VudGFnZSgxLzMpICFkZWZhdWx0O1xuJGZpeGVkLWJsb2NrLXRhYmxldDpcdFx0XHRwZXJjZW50YWdlKDEvMikgIWRlZmF1bHQ7IiwiLy8gQmFzZSBTaXplc1xuJGNvcmUtZm9udC1zaXplOlx0XHRcdFx0MXJlbSAhZGVmYXVsdDtcbiRjb3JlLWxpbmUtaGVpZ2h0Olx0XHRcdFx0MS43ICFkZWZhdWx0O1xuXG4vLyBIZWFkaW5nIFNpemVzXG4kaDEtZm9udC1zaXplOlx0XHRcdFx0XHQkY29yZS1mb250LXNpemUgKyAyLjIwICFkZWZhdWx0O1xuJGgyLWZvbnQtc2l6ZTpcdFx0XHRcdFx0JGNvcmUtZm9udC1zaXplICsgMS41MCAhZGVmYXVsdDtcbiRoMy1mb250LXNpemU6XHRcdFx0XHRcdCRjb3JlLWZvbnQtc2l6ZSArIDEuMTAgIWRlZmF1bHQ7XG4kaDQtZm9udC1zaXplOlx0XHRcdFx0XHQkY29yZS1mb250LXNpemUgKyAwLjc1ICFkZWZhdWx0O1xuJGg1LWZvbnQtc2l6ZTpcdFx0XHRcdFx0JGNvcmUtZm9udC1zaXplICsgMC4zNSAhZGVmYXVsdDtcbiRoNi1mb250LXNpemU6XHRcdFx0XHRcdCRjb3JlLWZvbnQtc2l6ZSAtIDAuMTUgIWRlZmF1bHQ7XG5cbi8vIFNwYWNpbmdcbiRsZWFkaW5nLW1hcmdpbjpcdFx0XHRcdCRjb3JlLWxpbmUtaGVpZ2h0ICogMXJlbSAhZGVmYXVsdDtcbiIsIi8vIERyb3Bkb3duc1xuJGRyb3Bkb3duLXdpZHRoOlx0XHRcdFx0MTQwcHggIWRlZmF1bHQ7XG4kZmx5b3V0LXdpZHRoOlx0XHRcdFx0XHQxNDBweCAhZGVmYXVsdDsiLCIvLyBDb2xvcnNcbkBpbXBvcnQgXCJjb2xvcnNcIjtcblxuLy8gVHlwb2dyYXBoeVxuQGltcG9ydCBcInR5cG9ncmFwaHlcIjtcblxuLy8gVHlwb2dyYXBoeVxuQGltcG9ydCBcImJ1bGxldHNcIjtcblxuLy8gVmFyaWFibGVzXG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG4iLCIvLyBDb3JlXG4kY29yZS10ZXh0Olx0XHRcdFx0XHRcdCM0NDQ7XG4kY29yZS1hY2NlbnQ6XHRcdFx0XHRcdCMxQkIzRTk7XG4kc2Vjb25kYXJ5LWxpbms6XHRcdFx0XHQjRjY2MzVFO1xuJHdoaXRlOlx0XHRcdFx0XHRcdFx0I2ZmZjtcbiRibGFjazpcdFx0XHRcdFx0XHRcdCMwMDA7XG4kbGlnaHQtZ3JheTpcdFx0XHRcdFx0I2RkZDtcbiRib3JkZXItY29sb3I6IFx0XHRcdFx0XHQjRUVFRUVFO1xuXG4vLyBCb3JkZXJzXG4kY29yZS1ib3JkZXItY29sb3I6XHRcdFx0XHQkbGlnaHQtZ3JheTtcbiRjb3JlLWJvcmRlci1jb2xvci1ob3ZlcjogXHRcdGRhcmtlbigkY29yZS1ib3JkZXItY29sb3IsIDEwKTtcbiRjb3JlLWJvcmRlci1jb2xvci1mb2N1czogXHRcdCRjb3JlLWFjY2VudDtcblxuLy8gU2hhZG93c1xuJGNvcmUtYm94LXNoYWRvdzogXHRcdFx0XHRpbnNldCAwIDFweCAzcHggaHNsYSgwLCAwJSwgMCUsIDAuMDYpO1xuJGNvcmUtYm94LXNoYWRvdy1mb2N1czogXHRcdCRjb3JlLWJveC1zaGFkb3csIDAgMCA1cHggcmdiYShkYXJrZW4oJGNvcmUtYm9yZGVyLWNvbG9yLWZvY3VzLCA1KSwgMC43KTtcblxuLy8gQmFja2dyb3VuZFxuJHBhZ2UtYmc6XHRcdFx0XHRcdFx0I2ZmZjtcblxuLy8gSGVhZGVyXG4kaGVhZGVyLXRleHQ6IFx0XHRcdFx0XHQjRkZGRkZGO1xuXG4vLyBOYXZcbiRuYXZiYXItdGV4dDogXHRcdFx0XHRcdCM3NTg3OUE7XG4kbmF2YmFyLWJnOiBcdFx0XHRcdFx0I0ZGRkZGRjtcblxuLy8gU2hvd2Nhc2VcbiRzaG93Y2FzZS1iZzpcdFx0XHRcdFx0bGlnaHRlbigkY29yZS1hY2NlbnQsIDYlKTtcbiRzaG93Y2FzZS10ZXh0Olx0XHRcdFx0XHQjZmZmO1xuXG4vLyBGZWF0dXJlXG4kZmVhdHVyZS1iZzpcdFx0XHRcdFx0I2ZmZjtcblxuLy8gTWFpbiBCb2R5XG4kbWFpbi1iZzpcdFx0XHRcdFx0XHQjZjdmN2Y3O1xuJGJvZHktYm9yZGVyOlx0XHRcdFx0XHRkYXJrZW4oJG1haW4tYmcsIDUlKTtcblxuLy8gU2lkZWJhclxuJHNpZGViYXItdGV4dDpcdFx0XHRcdFx0I2FhYTtcblxuLy8gQm90dG9tXG4kYm90dG9tLWJnOlx0XHRcdFx0XHRcdCNmN2Y3Zjc7XG4kYm90dG9tLXRleHQ6XHRcdFx0XHRcdCRjb3JlLXRleHQ7XG5cbi8vIEZvb3RlclxuJGZvb3Rlci1iZzpcdFx0XHRcdFx0XHQjMzMzO1xuJGZvb3Rlci10ZXh0Olx0XHRcdFx0XHQjOTk5O1xuXG4kcnVsZS1jb2xvcjogXHRcdFx0XHRcdCNGMEYyRjQ7XG4kY29kZS10ZXh0Olx0XHRcdFx0XHRcdCNjNzI1NGU7XG4kY29kZS1iZzpcdFx0XHRcdFx0XHQjZjlmMmY0O1xuJHByZS10ZXh0Olx0XHRcdFx0XHRcdCMyMzc3OTQ7XG4kcHJlLWJnOlx0XHRcdFx0XHRcdCNmMGYwZjA7XG5cbi8vIERhcmsgQ29udHJhc3QgdmFyaWF0aW9uXG4kZGFyay1uYXZiYXItdGV4dDpcdFx0XHRcdCM5OTk7XG4kZGFyay1zaWRlYmFyOlx0XHRcdFx0XHQjMjIyO1xuJGRhcmstc2lkZWJhci10ZXh0Olx0XHRcdFx0Izk5OTtcbiRkYXJrLW1haW4tYmc6XHRcdFx0XHRcdCMzMzM7XG4kZGFyay1ib2R5LWJvcmRlcjpcdFx0XHRcdCM2NjY7XG5cbi8vIEluZm8gLSBZZWxsb3dcbiRub3Rlcy1pbmZvLWJvcmRlcjogICAgICNGMEFENEU7XG4kbm90ZXMtaW5mby1iZzogICAgICAgICAjRkNGOEYyO1xuLy8gV2FybmluZyAtIFJlZFxuJG5vdGVzLXdhcm5pbmctYm9yZGVyOiAgI0Q5NTM0RjtcbiRub3Rlcy13YXJuaW5nLWJnOiAgICAgICNGREY3Rjc7XG4vLyBOb3RlIC0gQmx1ZVxuJG5vdGVzLW5vdGUtYm9yZGVyOiAgICAgIzVCQzBERTtcbiRub3Rlcy1ub3RlLWJnOiAgICAgICAgICNGNEY4RkE7XG4vLyBTdWNjZXNzIC0gR3JlZW5cbiRub3Rlcy1zdWNjZXNzLWJvcmRlcjogICM1Q0I4NUM7XG4kbm90ZXMtc3VjY2Vzcy1iZzogICAgICAjRjFGOUYxO1xuIiwiLy8gRm9udCBGYW1pbHlcbiRmb250LWZhbWlseS1kZWZhdWx0OiAgXHRcdFx0XCJSYWxld2F5XCIsIFwiSGVsdmV0aWNhXCIsIFwiVGFob21hXCIsIFwiR2VuZXZhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiRmb250LWZhbWlseS1oZWFkZXI6ICBcdFx0XHRcIk1vbnRzZXJyYXRcIiwgXCJIZWx2ZXRpY2FcIiwgXCJUYWhvbWFcIiwgXCJHZW5ldmFcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuJGZvbnQtZmFtaWx5LW1vbm86IFx0XHRcdFx0XCJJbmNvbnNvbGF0YVwiLCBtb25vc3BhY2U7XG4kZm9udC1mYW1pbHktc2VyaWY6XHRcdFx0XHRcIkdlb3JnaWFcIiwgXCJUaW1lc1wiLCBcIlRpbWVzIE5ldyBSb21hblwiLCBzZXJpZjtcblxuJGljb25zOiBcdFx0XHRcdFx0XHRcIkZvbnRBd2Vzb21lXCI7XG4iLCIkYnVsbGV0LWljb24tc2l6ZTpcdFx0XHRcdDMuNXJlbTtcblxuJGJ1bGxldC1pY29uLWNvbG9yLTE6XHRcdFx0JGNvcmUtYWNjZW50O1xuJGJ1bGxldC1pY29uLWNvbG9yLTI6XHRcdFx0YWRqdXN0LWh1ZSgkY29yZS1hY2NlbnQsIC0yMCk7XG4kYnVsbGV0LWljb24tY29sb3ItMzpcdFx0XHRhZGp1c3QtaHVlKCRjb3JlLWFjY2VudCwgLTEzMCk7IiwiLy8gU2l6ZXNcbiRoZWFkZXItaGVpZ2h0OiA1cmVtO1xuJGZvb3Rlci1oZWlnaHQ6IDZyZW07XG4kYm9yZGVyLXJhZGl1czogM3B4O1xuXG4vLyBGb250IFdlaWdodHNcbiRmb250LXdlaWdodC1ib2xkOiA2MDA7XG4kZm9udC13ZWlnaHQtcmVndWxhcjogNDAwO1xuJGZvbnQtd2VpZ2h0LWxpZ2h0OjMwMDtcblxuLy8gR2xvYmFsIFBhZGRpbmdzXG4kcGFkZGluZy1ob3JpejogN3JlbTtcbiRwYWRkaW5nLXZlcnQ6IDNyZW07XG4iLCJAaW1wb3J0IFwiZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwicmFuZ2VcIjsiLCJAZnVuY3Rpb24gb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXIpIHtcblx0QGlmICRkaXIgPT0gJ2xlZnQnIHtcblx0XHRAcmV0dXJuIHJpZ2h0O1xuXHR9XG5cdEBlbHNlIGlmICAkZGlyID09ICdyaWdodCcge1xuXHRcdEByZXR1cm4gbGVmdDtcblx0fVxuXHRAZWxzZSBpZiAkZGlyID09ICdsdHInIHtcblx0XHRAcmV0dXJuIHJ0bDtcblx0fVxuXHRAZWxzZSBpZiAkZGlyID09ICdydGwnIHtcblx0XHRAcmV0dXJuIGx0cjtcblx0fVxuXHRAZWxzZSBpZiAkZGlyID09ICd0b3AnIHtcblx0XHRAcmV0dXJuIGJvdHRvbTtcblx0fVxuXHRAZWxzZSBpZiAkZGlyID09ICdib3R0b20nIHtcblx0XHRAcmV0dXJuIHRvcDtcblx0fVxuXHRAZWxzZSB7XG5cdFx0QHdhcm4gXCIjeyRkaXJ9IGlzIG5vdCBhIGRpcmVjdGlvbiEgTWFrZSBzdXJlIHlvdXIgZGlyZWN0aW9uIGlzIGFsbCBsb3dlcmNhc2UhXCI7XG5cdFx0QHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5AZnVuY3Rpb24gbmFtZWQtZGlyZWN0aW9uKCRkaXIpIHtcblx0QGlmICRkaXIgPT0gJ2x0cicge1xuXHRcdEByZXR1cm4gbGVmdDtcblx0fVxuXHRAZWxzZSBpZiAkZGlyID09ICdydGwnIHtcblx0XHRAcmV0dXJuIHJpZ2h0O1xuXHR9XG5cdEBlbHNlIHtcblx0XHRAd2FybiBcIiN7JGRpcn0gaXMgbm90IGEgdmFsaWQgSFRNTCBkaXJlY3Rpb24hIE1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIGEgdmFsaWQgSFRNTCBkaXJlY3Rpb25cIjtcblx0XHRAcmV0dXJuIGZhbHNlO1xuXHR9XG59IiwiQGZ1bmN0aW9uIGxvd2VyLWJvdW5kKCRyYW5nZSl7XG5cdEBpZiBsZW5ndGgoJHJhbmdlKSA8PSAwIHtcblx0XHRAcmV0dXJuIDA7XG5cdH1cblx0QHJldHVybiBudGgoJHJhbmdlLDEpO1xufVxuXG5AZnVuY3Rpb24gdXBwZXItYm91bmQoJHJhbmdlKSB7XG5cdEBpZiBsZW5ndGgoJHJhbmdlKSA8IDIge1xuXHRcdEByZXR1cm4gOTk5OTk5OTk5OTk5O1xuXHR9XG5cdEByZXR1cm4gbnRoKCRyYW5nZSwgMik7XG59IiwiQGltcG9ydCBcImJyZWFrcG9pbnRzXCI7XG5AaW1wb3J0IFwidXRpbGl0aWVzXCI7IiwiLy8gQnJlYWtwb2ludHNcbkBtaXhpbiBicmVha3BvaW50KCRicmVha3BvaW50cywgJG1lZGlhOiBhbGwpIHtcbiAgICBAZWFjaCAkYnJlYWtwb2ludCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgICBAaWYgJGJyZWFrcG9pbnQgPT0gbGFyZ2UtZGVza3RvcC1yYW5nZSB7XG4gICAgICAgICAgICBAbWVkaWEgb25seSAjeyRtZWRpYX0gYW5kIChtaW4td2lkdGg6ICRsYXJnZS1kZXNrdG9wLWNvbnRhaW5lcikgeyBAY29udGVudDsgfVxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIGlmICRicmVha3BvaW50ID09IGRlc2t0b3AtcmFuZ2Uge1xuICAgICAgICAgICAgQG1lZGlhIG9ubHkgI3skbWVkaWF9IGFuZCAobWluLXdpZHRoOiAkZGVza3RvcC1jb250YWluZXIpIGFuZCAobWF4LXdpZHRoOiAkbGFyZ2UtZGVza3RvcC1jb250YWluZXIgLSAwLjA2MikgeyBAY29udGVudDsgfVxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIGlmICRicmVha3BvaW50ID09IHRhYmxldC1yYW5nZSB7XG4gICAgICAgICAgICBAbWVkaWEgb25seSAjeyRtZWRpYX0gYW5kIChtaW4td2lkdGg6ICR0YWJsZXQtY29udGFpbmVyKSBhbmQgKG1heC13aWR0aDogJGRlc2t0b3AtY29udGFpbmVyIC0gMC4wNjIpIHsgQGNvbnRlbnQ7IH1cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSBpZiAkYnJlYWtwb2ludCA9PSBsYXJnZS1tb2JpbGUtcmFuZ2Uge1xuICAgICAgICAgICAgQG1lZGlhIG9ubHkgI3skbWVkaWF9IGFuZCAobWluLXdpZHRoOiAkbGFyZ2UtbW9iaWxlLWNvbnRhaW5lciArIDAuMDYzKSBhbmQgKG1heC13aWR0aDogJHRhYmxldC1jb250YWluZXIgLSAwLjA2MikgeyBAY29udGVudDsgfVxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIGlmICRicmVha3BvaW50ID09IHNtYWxsLW1vYmlsZS1yYW5nZSB7XG4gICAgICAgICAgICBAbWVkaWEgb25seSAjeyRtZWRpYX0gYW5kIChtYXgtd2lkdGg6ICRsYXJnZS1tb2JpbGUtY29udGFpbmVyKSB7IEBjb250ZW50OyB9XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgaWYgJGJyZWFrcG9pbnQgPT0gbm8tbW9iaWxlIHtcbiAgICAgICAgICAgIEBtZWRpYSBvbmx5ICN7JG1lZGlhfSBhbmQgKG1pbi13aWR0aDogJHRhYmxldC1jb250YWluZXIpIHsgQGNvbnRlbnQ7IH1cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSBpZiAkYnJlYWtwb2ludCA9PSBtb2JpbGUtb25seSB7XG4gICAgICAgICAgICBAbWVkaWEgb25seSAjeyRtZWRpYX0gYW5kIChtYXgtd2lkdGg6ICR0YWJsZXQtY29udGFpbmVyIC0gMC4wNjIpIHsgQGNvbnRlbnQ7IH1cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSBpZiAkYnJlYWtwb2ludCA9PSBkZXNrdG9wLW9ubHkge1xuICAgICAgICAgICAgQG1lZGlhIG9ubHkgI3skbWVkaWF9IGFuZCAobWF4LXdpZHRoOiAkZGVza3RvcC1jb250YWluZXIgLSAwLjA2MikgeyBAY29udGVudDsgfVxuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCJcblxuLy8gTGlzdCBSZXNldFxuJWxpc3QtcmVzZXQge1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDA7XG5cdGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi8vIFZlcnRpY2FsIENlbnRlcmluZ1xuJXZlcnRpY2FsLWFsaWduIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR0b3A6IDUwJTtcblx0LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHQtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLy8gQ29sdW1uc1xuQG1peGluIGNvbHVtbnMoJGNvbHVtbnMpIHtcblx0d2lkdGg6IHBlcmNlbnRhZ2UoMS8kY29sdW1ucyk7XG59XG5cbi8vIEZsb2F0IHdpdGggbWFyZ2luIHZhcmlhYmxlXG5AbWl4aW4gZmxvYXQoJGRpcmVjdGlvbiwgJG1hcmdpbjogMCkge1xuXHRmbG9hdDogJGRpcmVjdGlvbjtcblx0bWFyZ2luLSN7b3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pfTogJG1hcmdpbjtcbn1cbiIsIi8vIEJ1dHRvbnNcbkBpbXBvcnQgXCJidXR0b25zXCI7IiwiJWJ1dHRvbiB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0cGFkZGluZzogN3B4IDIwcHg7XG5cbiAgICAmLmJ1dHRvbi1zbWFsbCB7XG4gICAgICAgIHBhZGRpbmc6IDNweCAxMHB4O1xuICAgICAgICBmb250LXNpemU6ICRjb3JlLWZvbnQtc2l6ZSAtIDAuMXJlbTtcbiAgICB9XG5cbn1cblxuQG1peGluIGJ1dHRvbi1jb2xvcigkY29sb3IpIHtcblx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHRjb2xvcjogJGNvbG9yO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkY29sb3I7XG5cdGJvcmRlci1yYWRpdXM6IDNweDtcblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZDogJGNvbG9yO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdH1cblx0JjphY3RpdmUge1xuXHRcdGJveC1zaGFkb3c6IDAgMXB4IDAgZGFya2VuKCRjb2xvciwgMTIlKTtcblx0fVxufVxuIiwiaHRtbCwgYm9keSB7XG5cdGhlaWdodDogMTAwJTsgLy8gdXNlICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgc2xpZGViYXJzLm1pbi5jc3Ncbn1cblxuYm9keSB7XG5cdGJhY2tncm91bmQ6ICRwYWdlLWJnO1xuXHRjb2xvcjogJGNvcmUtdGV4dDtcblx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIFx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuYSB7XG5cdGNvbG9yOiAkY29yZS1hY2NlbnQ7XG5cdCY6aG92ZXIge1xuXHRcdGNvbG9yOiBkYXJrZW4oJGNvcmUtYWNjZW50LCAyMCUpO1xuXHR9XG59XG5cbmIsIHN0cm9uZyB7XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZFxufVxuXG4vLyBHbG9iYWwgQ29udGFpbmVyXG4jY29udGFpbmVyIHtcbiBcdG1pbi1oZWlnaHQ6IDEwMCU7XG4gIFx0cG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vLyBGdWxsd2lkdGggc3R5bGVzXG4uZnVsbHdpZHRoIHtcblx0I2JvZHkge1xuXHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHR9XG5cdCNoZWFkZXIsICNicmVhZGNydW1icywgLmJsb2ctaGVhZGVyLCAuYmxvZy1jb250ZW50LWl0ZW0sIC5jb250ZW50LXdyYXBwZXIsIHVsLnBhZ2luYXRpb24sICNib2R5ID4gLm1vZHVsYXItcm93IHtcblx0XHRAZXh0ZW5kIC5wYWRkaW5nLWhvcml6O1xuXHR9XG59XG5cbi8vIEdsb2JhbCBib2R5IHN0eWxpbmdcbiNib2R5IHtcblx0QGV4dGVuZCAuZGVmYXVsdC1hbmltYXRpb247XG5cdEBleHRlbmQgLnBhZGRpbmctaG9yaXo7XG5cdFxuXHRiYWNrZ3JvdW5kOiAkcGFnZS1iZztcblx0cGFkZGluZy10b3A6ICRoZWFkZXItaGVpZ2h0ICsgJHBhZGRpbmctdmVydDtcblx0cGFkZGluZy1ib3R0b206ICRmb290ZXItaGVpZ2h0ICsgJHBhZGRpbmctdmVydCArIDJyZW07XG59XG5cbi8vIEFsaWdubWVudFxuLmxlZnQge1xuICBmbG9hdDogbGVmdDtcbn1cblxuLnJpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuXG4iLCIvLyBJbXBvcnQgR29vZ2xlIFdlYiBGb250c1xuLy8gQGltcG9ydCB1cmwoLy9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PU1vbnRzZXJyYXQ6NDAwfFJhbGV3YXk6MzAwLDQwMCw2MDB8SW5jb25zb2xhdGEpO1xuLyogbW9udHNlcnJhdC1yZWd1bGFyIC0gbGF0aW4gKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogdXJsKCcuLi9mb250cy9tb250c2VycmF0LXYyNS1sYXRpbi1yZWd1bGFyLmVvdCcpOyAvKiBJRTkgQ29tcGF0IE1vZGVzICovXG4gIHNyYzogbG9jYWwoJycpLFxuICAgICAgIHVybCgnLi4vZm9udHMvbW9udHNlcnJhdC12MjUtbGF0aW4tcmVndWxhci5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLCAvKiBJRTYtSUU4ICovXG4gICAgICAgdXJsKCcuLi9mb250cy9tb250c2VycmF0LXYyNS1sYXRpbi1yZWd1bGFyLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCAvKiBTdXBlciBNb2Rlcm4gQnJvd3NlcnMgKi9cbiAgICAgICB1cmwoJy4uL2ZvbnRzL21vbnRzZXJyYXQtdjI1LWxhdGluLXJlZ3VsYXIud29mZicpIGZvcm1hdCgnd29mZicpLCAvKiBNb2Rlcm4gQnJvd3NlcnMgKi9cbiAgICAgICB1cmwoJy4uL2ZvbnRzL21vbnRzZXJyYXQtdjI1LWxhdGluLXJlZ3VsYXIudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLCAvKiBTYWZhcmksIEFuZHJvaWQsIGlPUyAqL1xuICAgICAgIHVybCgnLi4vZm9udHMvbW9udHNlcnJhdC12MjUtbGF0aW4tcmVndWxhci5zdmcjTW9udHNlcnJhdCcpIGZvcm1hdCgnc3ZnJyk7IC8qIExlZ2FjeSBpT1MgKi9cbn1cbiIsIi5kZWZhdWx0LWFuaW1hdGlvbiB7XG5cdEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsIDAuNXMgZWFzZSk7XG59XG5cbi5wYWRkaW5nLWhvcml6IHtcblx0cGFkZGluZy1sZWZ0OiAkcGFkZGluZy1ob3Jpejtcblx0cGFkZGluZy1yaWdodDogJHBhZGRpbmctaG9yaXo7XG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQoZGVza3RvcC1vbmx5KSB7XG5cdFx0cGFkZGluZy1sZWZ0OiAkcGFkZGluZy1ob3JpeiAtIDNyZW07XG5cdFx0cGFkZGluZy1yaWdodDogJHBhZGRpbmctaG9yaXogLSAzcmVtO1xuXHR9XG5cblx0QGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUtb25seSkge1xuXHRcdHBhZGRpbmctbGVmdDogJHBhZGRpbmctaG9yaXogLSA2cmVtO1xuXHRcdHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLWhvcml6IC0gNnJlbTtcblx0fVxufVxuXG4ucGFkZGluZy12ZXJ0IHtcblx0cGFkZGluZy10b3A6ICRwYWRkaW5nLXZlcnQ7XG5cdHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy12ZXJ0O1xufVxuIiwiLy8gSGVhZGVyIHN0eWxpbmdcbiRkcm9wZG93bi1jb2xvcjogI2Y2ZjZmNjtcblxuI2hlYWRlciB7XG5cdEBleHRlbmQgLmRlZmF1bHQtYW5pbWF0aW9uO1xuXHRAZXh0ZW5kIC5wYWRkaW5nLWhvcml6O1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdHotaW5kZXg6IDEwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAkaGVhZGVyLWhlaWdodDtcblx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjkwKTtcblx0Ym94LXNoYWRvdzogMCAwLjA1cmVtIDFyZW0gcmdiYSgwLDAsMCwgMC4xNSk7XG5cblx0Ly8gc2Nyb2xsIGJhc2VkIGNoYW5nZXNcblx0Ji5zY3JvbGxlZCB7XG5cdFx0aGVpZ2h0OiAkaGVhZGVyLWhlaWdodCAtIDJyZW07XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjkwKSAhaW1wb3J0YW50O1xuXHRcdGJveC1zaGFkb3c6IDAgMC4wNXJlbSAxcmVtIHJnYmEoMCwwLDAsIDAuMTUpICFpbXBvcnRhbnQ7XG5cblx0XHQjbG9nbyBoMyB7XG5cdFx0XHRjb2xvcjogJGNvcmUtdGV4dCAhaW1wb3J0YW50O1xuXHRcdFx0Zm9udC1zaXplOiAxLjZyZW0gIWltcG9ydGFudDtcblx0XHR9XG5cdFx0I2xvZ28gYSwgI25hdmJhciBzcGFuIHtcblx0XHRcdGNvbG9yOiAkY29yZS10ZXh0ICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHRcdCNuYXZiYXIgYSB7XG5cdFx0XHRjb2xvcjogJGNvcmUtYWNjZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogZGFya2VuKCRjb3JlLWFjY2VudCwgMjAlKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuXHRcdH1cblx0XHQjbmF2YmFyIGE6YmVmb3JlLCAjbmF2YmFyIGE6YWZ0ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvcmUtYWNjZW50ICFpbXBvcnRhbnQ7XG5cdFx0fVxuXG5cdFx0Lm5hdmlnYXRpb24ge1xuXHRcdFx0bWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG5cblx0Ly8gc2V0IGhlaWdodHMgZm9yIHZlcnRpY2FsIGNlbnRlcmluZ1xuXHQ+IC5ncmlkLCAjbG9nbywgI25hdmJhciB7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHR9XG5cblx0I2xvZ28ge1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdGgzIHtcblx0XHRcdEBleHRlbmQgLmRlZmF1bHQtYW5pbWF0aW9uO1xuXHRcdFx0QGV4dGVuZCAldmVydGljYWwtYWxpZ247XG5cdFx0XHRmb250LXNpemU6IDJyZW07XG5cdFx0XHRsaW5lLWhlaWdodDogMnJlbTtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRhIHtcblx0XHRcdFx0Y29sb3I6ICRjb3JlLXRleHQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0I25hdmJhciB7XG5cdFx0Zm9udC1zaXplOiAkY29yZS1mb250LXNpemUgLSAwLjFyZW07XG5cblx0XHQvKiBDaGlsZCBJbmRpY2F0b3IgKi9cblx0XHQuaGFzLWNoaWxkcmVuIHtcblxuXHRcdFx0JiA+IGEge1xuXHRcdFx0XHQmID4gc3BhbiB7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdHBhZGRpbmctcmlnaHQ6IDhweDtcblxuXHRcdFx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRcdFx0Zm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lO1xuXHRcdFx0XHRcdFx0Y29udGVudDogJ1xcZjEwNyc7XG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdFx0XHRyaWdodDogOHB4O1xuXHRcdFx0XHRcdFx0dG9wOiA0cHg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdCY6YWZ0ZXIsICY6YmVmb3JlIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdCYgLmhhcy1jaGlsZHJlbiA+IGEgPiBzcGFuOmFmdGVyIHtcblx0XHRcdFx0Y29udGVudDogJ1xcZjEwNSc7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lm5hdmlnYXRpb24gPiAuaGFzLWNoaWxkcmVuOmhvdmVyID4gYSB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkZHJvcGRvd24tY29sb3I7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCBkYXJrZW4oJGRyb3Bkb3duLWNvbG9yLCA0JSk7XG5cdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiAkZHJvcGRvd24tY29sb3I7XG5cdFx0XHRtYXJnaW46IC0xcHggLTFweCAwIC0xcHg7XG5cdFx0XHR6LWluZGV4OiAxMDAwO1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDFweDtcblx0XHR9XG5cblx0XHR1bCB7XG5cblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRsaXN0LXN0eWxlOiBub25lO1xuXG5cdFx0XHQmLm5hdmlnYXRpb24ge1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdGZsb2F0OiByaWdodDtcblx0XHRcdFx0QGV4dGVuZCAuZGVmYXVsdC1hbmltYXRpb247XG5cblx0XHRcdFx0bWFyZ2luLXRvcDogMS40cmVtO1xuXG5cdFx0XHRcdGxpIHtcblx0XHRcdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRcdFx0XHRhIHtcblx0XHRcdFx0XHRcdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktaGVhZGVyO1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdFx0cGFkZGluZzogMC4zcmVtIDAuOHJlbTtcblxuXHRcdFx0XHRcdFx0LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cblxuXHRcdFx0XHRcdFx0JjpiZWZvcmUsICY6YWZ0ZXIge1xuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRcdFx0XHRoZWlnaHQ6IDFweDtcblx0XHRcdFx0XHRcdFx0Ym90dG9tOiAwO1xuXHRcdFx0XHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29yZS1hY2NlbnQ7XG5cdFx0XHRcdFx0XHRcdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHRcdFx0XHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHNjYWxlWCgwKSk7XG5cdFx0XHRcdFx0XHRcdEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsIDAuMnMgZWFzZSk7XG5cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Jjpob3ZlcjpiZWZvcmUge1xuXHRcdFx0XHRcdFx0XHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRcdFx0XHRcdFx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0oc2NhbGVYKDAuNzUpKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ji5hY3RpdmU6YWZ0ZXIge1xuXHRcdFx0XHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdFx0XHRcdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdFx0XHRcdFx0XHRcdEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZVgoMC43NSkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCYuYWN0aXZlIHtcblx0XHRcdFx0XHRcdGE6YWZ0ZXIge1xuXHRcdFx0XHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdFx0XHRcdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdFx0XHRcdFx0XHRcdEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZVgoMC43NSkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8qQWN0aXZlIGRyb3Bkb3duIG5hdiBpdGVtICovXG5cdFx0XHRcdFx0dWwge1xuXHRcdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWNvbG9yO1xuXHRcdFx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgZGFya2VuKCRkcm9wZG93bi1jb2xvciwgNCUpO1xuXHRcdFx0XHRcdFx0Ym9yZGVyLXRvcDogMDtcblx0XHRcdFx0XHRcdG1pbi13aWR0aDogMTJyZW07XG5cdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0XHRcdFx0ei1pbmRleDogOTk5O1xuXHRcdFx0XHRcdFx0bGVmdDogLTFweDtcblx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dWwgbGkge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0XHRmbG9hdDogbm9uZTtcblxuXHRcdFx0XHRcdFx0LyogQWN0aXZlIERyb3Bkb3duIG5hdiBpdGVtICovXG5cdFx0XHRcdFx0XHQmLmFjdGl2ZSA+IGEge1xuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGRyb3Bkb3duLWNvbG9yLCA0JSk7XG5cdFx0XHRcdFx0XHRcdGNvbG9yOiAkY29yZS1hY2NlbnQ7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdCY6aG92ZXIgPiBhIHtcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvcmUtYWNjZW50O1xuXHRcdFx0XHRcdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRhIHtcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0XHRcdG1hcmdpbjogMCAtMXB4O1xuXG5cdFx0XHRcdFx0XHRcdCY6YWZ0ZXIsICY6YmVmb3JlIHtcblx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0LyogRHJvcGRvd24gQ1NTICovXG5cdFx0XHRcdFx0dWwgdWwge1xuXHRcdFx0XHRcdFx0bGVmdDogMTAwJTtcblx0XHRcdFx0XHRcdHRvcDogMHB4O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8qIEFjdGl2ZSBvbiBIb3ZlciAqL1xuXHRcdFx0XHRcdCY6aG92ZXIgPiB1bCB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fVxuXHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KGRlc2t0b3Atb25seSkge1xuXHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdH1cblx0XHRcdH1cdFxuXHRcdH1cblxuXHRcdC5wYW5lbC1hY3RpdmF0aW9uIHtcblx0XHRcdEBleHRlbmQgJXZlcnRpY2FsLWFsaWduO1xuICAgICAgICAgICAgcGFkZGluZzogMXJlbTtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRmb250LXNpemU6IDEuOHJlbTtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdGZsb2F0OiByaWdodDtcblx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoZGVza3RvcC1vbmx5KSB7XG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdH1cblx0XHR9XG5cblx0fVxuXG59XG5cbi8vIEhlYWRlciBJbWFnZVxuLmhlYWRlci1pbWFnZSB7XG4gICAgJi5mdWxsd2lkdGgge1xuICAgICAgICAjYm9keSB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuXG4gICAgICAgICAgICA+Lmxpc3Rpbmctcm93IHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWhvcml6O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLWhvcml6O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5saXN0aW5nLXJvdzpsYXN0LWNoaWxkIHtcbiAgICBcdG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgfVxuXG4gICAgI2JvZHkge1xuICAgICAgICAuZmx1c2gtdG9wIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0gJGhlYWRlci1oZWlnaHQgLSAkcGFkZGluZy12ZXJ0IC0gMS41cmVtO1xuICAgICAgICAgICAgcGFkZGluZy10b3A6ICRoZWFkZXItaGVpZ2h0ICsgNHJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNicmVhZGNydW1icyB7XG4gICAgXHRtYXJnaW4tdG9wOiAxcmVtO1xuICAgIH1cblxuICAgICNoZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRoZWFkZXItdGV4dCwwKTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcblxuXHRcdC5uYXZpZ2F0aW9uIC5oYXMtY2hpbGRyZW46aG92ZXIgYSB7XG5cdFx0XHRjb2xvcjogJGNvcmUtYWNjZW50O1xuXHRcdH1cblxuICAgICAgICAjbG9nbyBoMywgI2xvZ28gYSB7XG4gICAgICAgICAgICBjb2xvcjogJGhlYWRlci10ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGEsIC5tZW51LWJ0biB7XG4gICAgICAgICAgICBjb2xvcjogJGhlYWRlci10ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGE6YmVmb3JlLCBhOmFmdGVyIHtcbiAgICAgICAgXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRoZWFkZXItdGV4dCwwLjcpICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgIH1cbn1cbiIsIi8vIEZvb3RlciBzdHlsaW5nXG4jZm9vdGVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRiYWNrZ3JvdW5kOiAkZm9vdGVyLWJnO1xuXHRoZWlnaHQ6ICRmb290ZXItaGVpZ2h0O1xuXHRyaWdodDogMDtcblx0Ym90dG9tOiAwO1xuXHRsZWZ0OiAwO1xuXHRAZXh0ZW5kIC5wYWRkaW5nLWhvcml6O1xuXHRjb2xvcjogJGZvb3Rlci10ZXh0O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0YTpob3ZlciB7XG5cdFx0Y29sb3I6ICNmZmY7XG5cdH1cblxuXHQudG90b3Age1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRib3R0b206ICRmb290ZXItaGVpZ2h0IC0gMXJlbTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHRzcGFuIHtcblx0XHRcdGZvbnQtc2l6ZTogMS43cmVtO1xuXHRcdFx0bGluZS1oZWlnaHQ6IDIuNXJlbTtcblx0XHRcdGJhY2tncm91bmQ6ICRmb290ZXItYmc7XG5cdFx0XHR3aWR0aDogM3JlbTtcblx0XHRcdGhlaWdodDogMnJlbTtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0dGV4dC1hbGlnbjogdG9wO1xuXHRcdH1cblx0fVxuXG5cdHAge1xuXHRcdEBleHRlbmQgJXZlcnRpY2FsLWFsaWduO1xuXHRcdG1hcmdpbjogMDtcblx0XHQuZmEge1xuXHRcdFx0Y29sb3I6ICNmZmY7XG5cdFx0fVxuXHR9XG59XG4iLCIvLyBCb2R5IEJhc2Vcbmh0bWwsIGJvZHksIGJ1dHRvbiwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIC5wdXJlLWcsIC5wdXJlLWcgW2NsYXNzICo9IFwicHVyZS11XCJdIHtcblx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1kZWZhdWx0O1xuXHRmb250LXdlaWdodDogNDAwO1xufVxuXG4vLyBIZWFkaW5nc1xuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG5cdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktaGVhZGVyO1xuXHRmb250LXdlaWdodDogNDAwO1xuXHR0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuXHRsZXR0ZXItc3BhY2luZzogLTBweDtcbn1cblxuaDEge1xuXHRmb250LXNpemU6ICRoMS1mb250LXNpemU7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUtb25seSkge1xuICAgICAgICBmb250LXNpemU6IDIuNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMi41cmVtO1xuICAgIH1cbn1cblxuaDIge1xuXHRAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldC1yYW5nZSkge1xuXHRcdGZvbnQtc2l6ZTogJGgyLWZvbnQtc2l6ZSAtIC40MDtcblx0fVxuXHRAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZS1vbmx5KSB7XG5cdFx0Zm9udC1zaXplOiAkaDItZm9udC1zaXplIC0gLjUwO1xuXHR9XG59XG5cbmgzIHtcblx0QGluY2x1ZGUgYnJlYWtwb2ludCh0YWJsZXQtcmFuZ2UpIHtcblx0XHRmb250LXNpemU6ICRoMy1mb250LXNpemUgLSAuNDA7XG5cdH1cblx0QGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUtb25seSkge1xuXHRcdGZvbnQtc2l6ZTogJGgzLWZvbnQtc2l6ZSAtIC41MDtcblx0fVxufVxuXG5oNCB7XG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQodGFibGV0LXJhbmdlKSB7XG5cdFx0Zm9udC1zaXplOiAkaDQtZm9udC1zaXplIC0gLjQwO1xuXHR9XG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlLW9ubHkpIHtcblx0XHRmb250LXNpemU6ICRoNC1mb250LXNpemUgLSAuNTA7XG5cdH1cbn1cblxuaDEge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdGxldHRlci1zcGFjaW5nOiAtM3B4O1xufVxuXG5oMiB7XG5cdGxldHRlci1zcGFjaW5nOiAtMnB4O1xufVxuXG5oMyB7XG5cdGxldHRlci1zcGFjaW5nOiAtMXB4O1xufVxuXG5oMSArIGgyIHtcblx0bWFyZ2luOiAtMnJlbSAwIDJyZW0gMDtcblx0Zm9udC1zaXplOiAycmVtO1xuXHRAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldC1yYW5nZSkge1xuXHRcdGZvbnQtc2l6ZTogMS42cmVtO1xuXHR9XG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlLW9ubHkpIHtcblx0XHRmb250LXNpemU6IDEuNXJlbTtcblx0fVxuXHRsaW5lLWhlaWdodDogMTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWRlZmF1bHQ7XG5cdGZvbnQtd2VpZ2h0OiAzMDA7XG59XG5cbmgyICsgaDMge1xuXHRtYXJnaW46IDAuNXJlbSAwIDJyZW0gMDtcblx0Zm9udC1zaXplOiAycmVtO1xuXHRAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldC1yYW5nZSkge1xuXHRcdGZvbnQtc2l6ZTogMS42cmVtO1xuXHR9XG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlLW9ubHkpIHtcblx0XHRmb250LXNpemU6IDEuNXJlbTtcblx0fVxuXHRsaW5lLWhlaWdodDogMTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWRlZmF1bHQ7XG5cdGZvbnQtd2VpZ2h0OiAzMDA7XG59XG5cblxuLy8gQmxvY2txdW90ZVxuYmxvY2txdW90ZSB7XG5cdGJvcmRlci1sZWZ0OiAxMHB4IHNvbGlkICRydWxlLWNvbG9yO1xuXHRwIHtcblx0XHRmb250LXNpemU6IDEuMXJlbTtcblx0XHRjb2xvcjogIzk5OTtcblx0fVxuXHRjaXRlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRjb2xvcjogIzY2Njtcblx0XHRmb250LXNpemU6IDEuMnJlbTtcblx0fVxufVxuXG4vLyBOT1RFUyEhISFcbmJsb2NrcXVvdGUgPiBibG9ja3F1b3RlID4gYmxvY2txdW90ZSB7XG5cblx0bWFyZ2luOiAwO1xuXG5cdHAge1xuXG5cdFx0cGFkZGluZzogMTVweDtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmb250LXNpemU6IDFyZW07XG5cdFx0bWFyZ2luLXRvcDogMHJlbTtcblx0XHRtYXJnaW4tYm90dG9tOiAwcmVtO1xuXHR9XG5cblx0PiBwIHtcblx0XHQvLyBZZWxsb3dcblx0XHRtYXJnaW4tbGVmdDogLTcxcHg7XG5cdFx0Ym9yZGVyLWxlZnQ6IDEwcHggc29saWQgJG5vdGVzLWluZm8tYm9yZGVyO1xuXHRcdGJhY2tncm91bmQ6ICRub3Rlcy1pbmZvLWJnO1xuXHRcdGNvbG9yOiBkYXJrZW4oJG5vdGVzLWluZm8tYm9yZGVyLDE1JSk7XG5cdFx0YSB7XG5cdFx0XHRjb2xvcjogZGFya2VuKCRub3Rlcy1pbmZvLWJvcmRlciwyNSUpO1xuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGNvbG9yOiBsaWdodGVuKCRub3Rlcy1pbmZvLWJvcmRlciw1JSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0PiBibG9ja3F1b3RlID4gcCB7XG5cdFx0Ly8gUmVkXG5cdFx0bWFyZ2luLWxlZnQ6IC05NHB4O1xuXHRcdGJvcmRlci1sZWZ0OiAxMHB4IHNvbGlkICRub3Rlcy13YXJuaW5nLWJvcmRlcjtcblx0XHRiYWNrZ3JvdW5kOiAkbm90ZXMtd2FybmluZy1iZztcblx0XHRjb2xvcjogZGFya2VuKCRub3Rlcy13YXJuaW5nLWJvcmRlciwxNSUpO1xuXHRcdGEge1xuXHRcdFx0Y29sb3I6IGRhcmtlbigkbm90ZXMtd2FybmluZy1ib3JkZXIsMjUlKTtcblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogbGlnaHRlbigkbm90ZXMtd2FybmluZy1ib3JkZXIsNSUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdD4gYmxvY2txdW90ZSA+IGJsb2NrcXVvdGUgPiBwIHtcblx0XHQvLyBCbHVlXG5cdFx0bWFyZ2luLWxlZnQ6IC0xMThweDtcblx0XHRib3JkZXItbGVmdDogMTBweCBzb2xpZCAkbm90ZXMtbm90ZS1ib3JkZXI7XG5cdFx0YmFja2dyb3VuZDogJG5vdGVzLW5vdGUtYmc7XG5cdFx0Y29sb3I6IGRhcmtlbigkbm90ZXMtbm90ZS1ib3JkZXIsMTUlKTtcblx0XHRhIHtcblx0XHRcdGNvbG9yOiBkYXJrZW4oJG5vdGVzLW5vdGUtYm9yZGVyLDI1JSk7XG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Y29sb3I6IGxpZ2h0ZW4oJG5vdGVzLW5vdGUtYm9yZGVyLDUlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQ+IGJsb2NrcXVvdGUgPiBibG9ja3F1b3RlID4gYmxvY2txdW90ZSA+IHAge1xuXHRcdC8vIEdyZWVuXG5cdFx0bWFyZ2luLWxlZnQ6IC0xNDJweDtcblx0XHRib3JkZXItbGVmdDogMTBweCBzb2xpZCAkbm90ZXMtc3VjY2Vzcy1ib3JkZXI7XG5cdFx0YmFja2dyb3VuZDogJG5vdGVzLXN1Y2Nlc3MtYmc7XG5cdFx0Y29sb3I6IGRhcmtlbigkbm90ZXMtc3VjY2Vzcy1ib3JkZXIsMTUlKTtcblx0XHRhIHtcblx0XHRcdGNvbG9yOiBkYXJrZW4oJG5vdGVzLXN1Y2Nlc3MtYm9yZGVyLDI1JSk7XG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Y29sb3I6IGxpZ2h0ZW4oJG5vdGVzLXN1Y2Nlc3MtYm9yZGVyLDUlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxufVxuXG4vLyBJbmxpbmUgYW5kIENvZGVcbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcblx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1tb25vO1xufVxuXG5jb2RlIHtcblx0YmFja2dyb3VuZDogJGNvZGUtYmc7XG5cdGNvbG9yOiBkYXJrZW4oJGNvZGUtdGV4dCwxMCUpO1xufVxuXG5wcmUge1xuXHRwYWRkaW5nOiAycmVtO1xuXHRiYWNrZ3JvdW5kOiAkcHJlLWJnO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkY29yZS1ib3JkZXItY29sb3I7XG5cdGJvcmRlci1yYWRpdXM6IDNweDtcblx0Y29kZSB7XG5cdFx0Y29sb3I6ICRwcmUtdGV4dDtcblx0XHRiYWNrZ3JvdW5kOiBpbmhlcml0O1xuXHR9XG59XG5cbi8vIEV4dHJhc1xuaHIge1xuXHRib3JkZXItYm90dG9tOiA0cHggc29saWQgJHJ1bGUtY29sb3I7XG59XG5cbi8vIFBhZ2UgVGl0bGVcbi5wYWdlLXRpdGxlIHtcblx0bWFyZ2luLXRvcDogLTI1cHg7XG5cdHBhZGRpbmc6IDI1cHg7XG5cdGZsb2F0OiBsZWZ0O1xuXHRjbGVhcjogYm90aDtcblx0YmFja2dyb3VuZDogJGNvcmUtYWNjZW50O1xuXHRjb2xvcjogJHdoaXRlO1xufVxuXG4vLyBMYWJlbFxuLmxhYmVsIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGJhY2tncm91bmQ6ICRjb3JlLWFjY2VudDtcbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgaGVpZ2h0OiAxcmVtO1xuICAgIG1pbi13aWR0aDogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMXJlbTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogJGNvcmUtZm9udC1zaXplIC0gMC4zcmVtO1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktaGVhZGVyO1xuICAgIG1hcmdpbi1yaWdodDogMC43NXJlbTtcbn1cblxuIiwiZmllbGRzZXQge1xuXHRib3JkZXI6IDFweCBzb2xpZCAkY29yZS1ib3JkZXItY29sb3I7XG59XG5cbnRleHRhcmVhLCAjeyRhbGwtdGV4dC1pbnB1dHN9LCBzZWxlY3RbbXVsdGlwbGU9bXVsdGlwbGVdIHtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRjb3JlLWJvcmRlci1jb2xvcjtcblx0Ym94LXNoYWRvdzogJGNvcmUtYm94LXNoYWRvdztcblxuXHQmOmhvdmVyIHtcblx0XHRib3JkZXItY29sb3I6ICRjb3JlLWJvcmRlci1jb2xvci1ob3Zlcjtcblx0fVxuXG5cdCY6Zm9jdXMge1xuXHRcdGJvcmRlci1jb2xvcjogJGNvcmUtYm9yZGVyLWNvbG9yLWZvY3VzO1xuXHRcdGJveC1zaGFkb3c6ICRjb3JlLWJveC1zaGFkb3ctZm9jdXM7XG5cdH1cbn1cblxubGFiZWwge1xuXHRAZXh0ZW5kIHN0cm9uZztcbn1cblxuLy8gRm9ybXNcbi5mb3JtLWZpZWxkIHtcblx0LnJlcXVpcmVkIHtcblx0XHRjb2xvcjogI0YzNDQzRjtcblx0XHRmb250LXNpemU6ICRjb3JlLWZvbnQtc2l6ZSArIDJyZW07XG5cdFx0bGluZS1oZWlnaHQ6ICRjb3JlLWZvbnQtc2l6ZSArIDJyZW07XG5cdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0XHRoZWlnaHQ6IDEuNXJlbTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdH1cbn1cblxuZm9ybSB7XG5cdC5idXR0b25zIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblx0aW5wdXQge1xuXHRcdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdH1cbn1cbiIsInRhYmxlIHtcblx0Ym9yZGVyOiAxcHggc29saWQgbGlnaHRlbigkY29yZS1ib3JkZXItY29sb3IsNSUpO1xuXHR0YWJsZS1sYXlvdXQ6IGF1dG87XG59XG5cbnRoIHtcblx0QGV4dGVuZCBzdHJvbmc7XG5cdGJhY2tncm91bmQ6IGxpZ2h0ZW4oJGNvcmUtYm9yZGVyLWNvbG9yLDEwJSk7XG5cdHBhZGRpbmc6IDAuNXJlbTtcbn1cblxudGQge1xuXHRwYWRkaW5nOiAwLjVyZW07XG5cdGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0ZW4oJGNvcmUtYm9yZGVyLWNvbG9yLDUlKTsgXG59XG4iLCIuYnV0dG9uIHtcblx0QGV4dGVuZCAlYnV0dG9uO1xuXHRAaW5jbHVkZSBidXR0b24tY29sb3IoJGNvcmUtYWNjZW50KTtcbn1cblxuLmJ1dHRvbi1zZWNvbmRhcnkge1xuXHRAZXh0ZW5kICVidXR0b247XG5cdEBpbmNsdWRlIGJ1dHRvbi1jb2xvcigkc2Vjb25kYXJ5LWxpbmspO1xufSIsIi5idWxsZXRzIHtcblx0bWFyZ2luOiAkbGVhZGluZy1tYXJnaW4gMDtcblx0bWFyZ2luLWxlZnQ6IC0kbGVhZGluZy1tYXJnaW4gLyAyO1xuXHRtYXJnaW4tcmlnaHQ6IC0kbGVhZGluZy1tYXJnaW4gLyAyO1xuXHRvdmVyZmxvdzogYXV0bztcbn1cblxuLmJ1bGxldCB7XG5cdGZsb2F0OiBsZWZ0O1xuXHRwYWRkaW5nOiAwICRsZWFkaW5nLW1hcmdpbiAvIDI7XG59XG5cbi50d28tY29sdW1uLWJ1bGxldCB7XG5cdEBpbmNsdWRlIGNvbHVtbnMoMik7XG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlLW9ubHkpIHtcblx0XHRAaW5jbHVkZSBjb2x1bW5zKDEpO1xuXHR9XG59XG5cbi50aHJlZS1jb2x1bW4tYnVsbGV0IHtcblx0QGluY2x1ZGUgY29sdW1ucygzKTtcblx0QGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUtb25seSkge1xuXHRcdEBpbmNsdWRlIGNvbHVtbnMoMSk7XG5cdH1cbn1cblxuLmZvdXItY29sdW1uLWJ1bGxldCB7XG5cdEBpbmNsdWRlIGNvbHVtbnMoNCk7XG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlLW9ubHkpIHtcblx0XHRAaW5jbHVkZSBjb2x1bW5zKDEpO1xuXHR9XG59XG5cbi5idWxsZXQtaWNvbiB7XG5cdGZsb2F0OiBsZWZ0O1xuXHRiYWNrZ3JvdW5kOiAkYnVsbGV0LWljb24tY29sb3ItMTtcblx0cGFkZGluZzogJGJ1bGxldC1pY29uLXNpemUgLyA0O1xuXHR3aWR0aDogJGJ1bGxldC1pY29uLXNpemU7XG5cdGhlaWdodDogJGJ1bGxldC1pY29uLXNpemU7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0Y29sb3I6ICR3aGl0ZTtcblx0Zm9udC1zaXplOiAkYnVsbGV0LWljb24tc2l6ZSAvIDI7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmJ1bGxldC1pY29uLTEge1xuXHRiYWNrZ3JvdW5kOiAkYnVsbGV0LWljb24tY29sb3ItMTtcbn1cblxuLmJ1bGxldC1pY29uLTIge1xuXHRiYWNrZ3JvdW5kOiAkYnVsbGV0LWljb24tY29sb3ItMjtcbn1cblxuLmJ1bGxldC1pY29uLTMge1xuXHRiYWNrZ3JvdW5kOiAkYnVsbGV0LWljb24tY29sb3ItMztcbn1cblxuLmJ1bGxldC1jb250ZW50IHtcblx0bWFyZ2luLWxlZnQ6ICRidWxsZXQtaWNvbi1zaXplICogMS4zO1xufSIsIiRzaWRlYmFyLWNvbG9yOiAgICAgIzMzMztcbiRwYW5lbC1wYWRkaW5nOiAgICAgMXJlbTtcbiRwYW5lbC10ZXh0OiAgICAgICAgI2RkZDtcblxuLnNiLXNsaWRlYmFyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2lkZWJhci1jb2xvciAhaW1wb3J0YW50O1xufVxuXG4jcGFuZWwge1xuICAgIHBhZGRpbmctdG9wOiAkcGFuZWwtcGFkZGluZztcbiAgICBjb2xvcjogJHBhbmVsLXRleHQ7XG4gICAgLm5hdmlnYXRpb24ge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkcGFuZWwtdGV4dDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBsaWdodGVuKCRwYW5lbC10ZXh0LDIwJSk7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkc2lkZWJhci1jb2xvciw1JSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAmID4gYSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29yZS10ZXh0O1xuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29yZS10ZXh0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGxpZ2h0ZW4oJHNpZGViYXItY29sb3IsNCUpO1xuICAgICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgbGlnaHRlbigkc2lkZWJhci1jb2xvciw0JSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBkYXJrZW4oJHBhbmVsLXRleHQsIDEwJSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjJyZW0gMXJlbSAwLjJyZW0gMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxpIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGkgYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA0cmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICYgPiBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjY2NjO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4iLCIuYmxvZy1oZWFkZXIge1xuXG4gICAgcGFkZGluZy10b3A6IDJyZW07XG4gICAgcGFkZGluZy1ib3R0b206IDJyZW07XG5cbiAgICAmLmJsb2ctaGVhZGVyLWltYWdlIHtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuXG4gICAgICAgIGgxLCBoMiB7XG4gICAgICAgICAgICBjb2xvcjogJGhlYWRlci10ZXh0O1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBoMSB7XG4gICAgICAgIGZvbnQtc2l6ZTogNHJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCh0YWJsZXQtcmFuZ2UpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZS1vbmx5KSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDIuNXJlbTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmICsgLmJsb2ctY29udGVudCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy12ZXJ0O1xuICAgIH1cbn1cblxuLy8gTGlzdCBCbG9nIEl0ZW1cbi5saXN0LWl0ZW0ge1xuXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgbWFyZ2luLWJvdHRvbTogJHBhZGRpbmctdmVydDtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLmxpc3QtYmxvZy1oZWFkZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGg0IHtcblxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb3JlLXRleHQ7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29yZS1hY2NlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmxpc3QtYmxvZy1kYXRlIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTEwJTtcbiAgICAgICAgfVxuICAgICAgICBlbSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gQmlnZ2VyIGZpcnN0IHBhcmFcbi5ibG9nLWNvbnRlbnQtaXRlbSB7XG4gICAgLmxpc3QtYmxvZy1wYWRkaW5nID4gcDpudGgtY2hpbGQoMikge1xuICAgICAgICBmb250LXNpemU6ICRjb3JlLWZvbnQtc2l6ZSArIDAuMnJlbTtcbiAgICB9XG59XG5cbi8vIFRhZ3Ncbi50YWdzIHtcbiAgICBhIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBmb250LXNpemU6ICRjb3JlLWZvbnQtc2l6ZSAtIDAuMnJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvcmUtYWNjZW50O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcbiAgICAgICAgcGFkZGluZzogMC4xcmVtIDAuNHJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4ycmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cbn1cblxuLy8gQXJjaGl2ZXMgJiBSZWxhdGVkLVBhZ2VzXG4uYXJjaGl2ZXMsIC5yZWxhdGVkLXBhZ2VzIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgbGkge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRjb3JlLWZvbnQtc2l6ZSArIDFyZW07XG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucmVsYXRlZC1wYWdlcyB7XG4gICAgbGkge1xuICAgICAgICBhIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5zY29yZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIGNvbG9yOiAjOTk5O1xuICAgICAgICBmb250LXNpemU6IDg1JVxuICAgIH1cbn1cblxuLy8gU3luZGljYXRlXG4uc3luZGljYXRlIHtcbiAgICBhIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICB9XG59XG5cbi8vIEJyZWFkY3J1bWJzXG5kaXYjYnJlYWRjcnVtYnMge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZS1vbmx5KSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vLyBTaWRlYmFyXG4jc2lkZWJhciB7XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlLW9ubHkpIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cbiAgICAuc2lkZWJhci1jb250ZW50IHtcbiAgICAgICAgaDQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgICAgfVxuICAgICAgICBwLCB1bCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgICAgICB9XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRwYWRkaW5nLXZlcnQ7XG4gICAgfVxufVxuXG4vLyBQYWdpbmF0aW9uXG51bC5wYWdpbmF0aW9uIHtcbiAgICBtYXJnaW46IDAgMCAkcGFkZGluZy12ZXJ0O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLy8gUHJldiAvIE5leHRcbi5wcmV2LW5leHQge1xuICAgIG1hcmdpbi10b3A6IDVyZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIiwiLy8gRXJyb3Igc3BlY2lmaWMgc3R5bGluZ1xuI2Vycm9yIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0aGVpZ2h0OiAxMDAlO1xuXHRwYWRkaW5nLWJvdHRvbTogNnJlbTtcblxuXHRoMSB7XG5cdFx0Zm9udC1zaXplOiAkY29yZS1mb250LXNpemUgKyA0LjByZW07XG5cdH1cblxuXHRwIHtcblx0XHRtYXJnaW46IDFyZW0gMDtcblx0fVxufVxuIiwiLnNpbXBsZXNlYXJjaCB7XG5cbiAgICBoMSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLmNlbnRlciB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cblxuICAgIGlucHV0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXgtd2lkdGg6IDMwcmVtO1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pbWFnZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1vYmlsZS1vbmx5KSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbSB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlLW9ubHkpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNlYXJjaC13cmFwcGVyIHtcbiAgICAgICAgLnNlYXJjaC1zdWJtaXQge1xuICAgICAgICAgICAgaGVpZ2h0OiA1MnB4O1xuICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4O1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLnNlYXJjaC1kZXRhaWxzIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBtYXJnaW4tdG9wOiAtMi41cmVtO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBjb2xvcjogbGlnaHRlbigkY29yZS10ZXh0LDIwJSk7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtb2JpbGUtb25seSkge1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAtMC4ycmVtO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhyIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7XG4gICAgfVxuXG59XG4iLCIvLyBZb3VyIGN1c3RvbSBTQ1NTIHNob3VsZCBiZSB3cml0dGVuIGhlcmUuLi5cblxuLmdyYXYtbGlnaHRzbGlkZXIge1xuICAgIC5sU1NsaWRlT3V0ZXIge1xuICAgICAgICAubFNQYWdlci5sU3BnIHtcbiAgICAgICAgICAgID4gbGkgYSB7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuI2JvZHkgPiBzY3JpcHQ6Zmlyc3QtY2hpbGQgKyAuZ3Jhdi1saWdodHNsaWRlciB7XG4gIG1hcmdpbi10b3A6IC0zcmVtO1xufSIsIkBpbXBvcnQgXCJzaG93Y2FzZVwiO1xuQGltcG9ydCBcImZlYXR1cmVzXCI7XG5AaW1wb3J0IFwidGV4dFwiO1xuXG4ubW9kdWxhciB7XG4gICAgLm1vZHVsYXItcm93Omxhc3QtY2hpbGQge1xuICAgIFx0bWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgICB9XG59XG4iLCIvLyBNb2R1bGFyIFNob3djYXNlIHN0eWxpbmdcbi5tb2R1bGFyIHtcblxuICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgaGVhZGVyXG4gICAgJi5oZWFkZXItaW1hZ2Uge1xuXG4gICAgICAgICNoZWFkZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwKTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG5cbiAgICAgICAgICAgICNsb2dvIGgzIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGhlYWRlci10ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgI25hdmJhciBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGhlYWRlci10ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNob3djYXNlIHtcblxuICAgICAgICBwYWRkaW5nLXRvcDogNHJlbTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDRyZW07XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM2NjY7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcblxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiAkaGVhZGVyLXRleHQ7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogNHJlbTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldC1yYW5nZSkge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlLW9ubHkpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuNXJlbTtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIuNXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgQGV4dGVuZCAuZGVmYXVsdC1hbmltYXRpb247XG4gICAgICAgICAgICBjb2xvcjogJGhlYWRlci10ZXh0O1xuICAgICAgICAgICAgcGFkZGluZzogMC43cmVtIDJyZW07XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAycmVtO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwKTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRoZWFkZXItdGV4dDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGNvcmUtZm9udC1zaXplICsgMC4zcmVtO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiIsIi8vIE1vZHVsYXIgU2hvd2Nhc2Ugc3R5bGluZ1xuLm1vZHVsYXIge1xuICAgIC5mZWF0dXJlcyB7XG4gICAgICAgIHBhZGRpbmc6IDZyZW0gMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcblxuICAgICAgICBoMiB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgbWFyZ2luOiAxcmVtIDA7XG4gICAgICAgICAgICBmb250LXNpemU6ICRjb3JlLWZvbnQtc2l6ZSArIDAuMnJlbTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobW9iaWxlLW9ubHkpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRjb3JlLWZvbnQtc2l6ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5mZWF0dXJlLWl0ZW1zIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDJyZW07XG4gICAgICAgICAgICBAc3VwcG9ydHMgbm90IChmbGV4LXdyYXA6IHdyYXApIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZlYXR1cmUge1xuICAgICAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgd2lkdGg6IDI1JTtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAycmVtO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UtbW9iaWxlLXJhbmdlKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICAgICAgICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbC1tb2JpbGUtcmFuZ2UpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpLmZhIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb3JlLWFjY2VudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaDQge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGNvcmUtZm9udC1zaXplO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMC4ycmVtIDAgMXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuYmlnIHtcblxuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICAgICAuZmVhdHVyZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsLW1vYmlsZS1yYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGkuZmEge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmZlYXR1cmUtY29udGVudCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMnJlbTtcblxuICAgICAgICAgICAgICAgICYuaWNvbi1vZmZzZXQge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNXJlbTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBoNCB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG4iLCIvLyB2YXJpYWJsZXNcbiR0ZXh0LWJnOiAgICAgICAgI2Y2ZjZmNjtcbiR0ZXh0LXBhZGRpbmc6ICAgNnJlbTtcbiRpbWFnZS1tYXJnaW46ICAgICAgMnJlbTtcblxuXG4vLyBzdHlsaW5nXG4uY2FsbG91dCB7XG4gICAgYmFja2dyb3VuZDogJHRleHQtYmc7XG4gICAgcGFkZGluZzogJHRleHQtcGFkZGluZyAkY29udGVudC1wYWRkaW5nO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoZGVza3RvcC1vbmx5KSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYWxpZ24tbGVmdCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRpbWFnZS1tYXJnaW47XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoZGVza3RvcC1vbmx5KSB7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hbGlnbi1yaWdodCB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRpbWFnZS1tYXJnaW47XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoZGVza3RvcC1vbmx5KSB7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIGltZyB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQTBGR0EsQU5PQSxPTVBPLENBMkNOLEtBQUssQ0FFSixFQUFFLEVBN0NKLE9BQU8sQ0EwRE4sT0FBTyxDQTJKTixpQkFBaUIsRUN2Tm5CLE9BQU8sQ0FpQ04sQ0FBQyxDUHhCYyxFQUNmLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLEdBQUcsRUFBRSxHQUFHLEVBQ1IsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQ25DLGNBQWMsRUFBRSxnQkFBZ0IsRUFDaEMsWUFBWSxFQUFFLGdCQUFnQixFQUM5QixhQUFhLEVBQUUsZ0JBQWdCLEVBQy9CLFNBQVMsRUFBRSxnQkFBZ0IsR0FDM0I7O0FXbEJELEFUQUEsT1NBTyxFQUtQLGlCQUFpQixDVExULEVBQ1AsT0FBTyxFQUFFLFlBQVksRUFDckIsT0FBTyxFQUFFLFFBQVEsR0FPakI7O0FBTEksQUFBRCxhQUFjLEFTSmxCLE9BQU8sRVRJRixhQUFhLEFTQ2xCLGlCQUFpQixDVERFLEVBQ1gsT0FBTyxFQUFFLFFBQVEsRUFDakIsU0FBUyxFQUFFLE1BQXdCLEdBQ3RDOztBQ1BMLEFBQUEsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUNWLE1BQU0sRUFBRSxJQUFJLEdBQ1o7O0FBRUQsQUFBQSxJQUFJLENBQUMsRUFDSixVQUFVLEVaY0ksSUFBSSxFWWJsQixLQUFLLEVaTFcsSUFBSSxFWU1wQixzQkFBc0IsRUFBRSxX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 */
