/* =================================================================== */
/* ! Core Brand Palette
/* =================================================================== */
/* Pale navy tint - settings headings, icon chips */
/* The brand purple. $purple is redefined below, so it does not compile to this */
/* The line colour of the nav's line icons (tasks, waitlist, imports, forms) and the copy-eye icon */
/* =================================================================== */
/* ! Theme Colors
/* =================================================================== */
/* Primary Action Color */
/* Used for 'Coming Soon' banner and CTA buttons. */
/* Success / Secondary Theme Color */
/* Accent / Tertiary Theme Color */
/* Eyes: right (OD) red and left (OS) blue, as eye charts and clinical records mark them */
/* Danger / Error Colors */
/* A failure counted in a report, rather than an error to act on */
/* Specific UI Colors */
/* For Admin note border */
/* For Nurse note border */
/* Pale teal tint - practice report icon chips, beside $navy-pale for personal ones */
/* =================================================================== */
/* ! Greys & Neutrals
/* =================================================================== */
/* Text */
/* Primary text on light backgrounds */
/* Subtitles and helper text */
/* Modal body text */
/* Borders & UI */
/* Form control borders */
/* btn-lost border */
/* Navigation component */
/* Rules inside a toolbar box - AI Assist, claimable items */
/* Backgrounds */
/* Alternate table color */
/* Disabled button background */
/* =================================================================== */
/* ! Dark Theme (Navy)
/* Used for website landing pages
/* =================================================================== */
/* Modal titles, processing text */
/* Modal backdrop */
/* Sticky header */
/* =================================================================== */
/* ! Transparent Whites
/* =================================================================== */
/* Card backgrounds */
/* Borders */
/* Body text on dark bg */
/* =================================================================== */
/* ! Transparent Blacks
/* =================================================================== */
/* =================================================================== */
/* ! Transparent Theme Colors
/* =================================================================== */
/* Cyan Tints */
/* Form focus shadow */
/* Green Tints */
/* Yellow Tints */
/* Red Tints */
/* Navy Tints */
/* Lavender Tints */
/* =================================================================== */
/* ! Practice leave
/* Slate rather than red, so the whole practice being closed reads
/* differently from one clinician's leave.
/* =================================================================== */
/* =================================================================== */
/* ! Warning Callout
/* =================================================================== */
/* =================================================================== */
/* ! Notification Urgency
/* One colour per urgency, shared by the banner, the notification modal
/* and the admin console so an urgency reads the same everywhere.
/* Backgrounds are opaque - the banner floats over page content.
/* =================================================================== */
/* =================================================================== */
/* ! Typography
/* =================================================================== */
/* Font Family */
/* Font Weights */
/* Font Sizes */
/* Line Heights */
/* =================================================================== */
/* ! Sizing & Layout
/* =================================================================== */
/* Border Radius */
/* =================================================================== */
/* ! Shadows
/* =================================================================== */
@font-face {
    font-family: 'Gordita Heavy Italic';
    src: url('./fonts/gorditablackitalic-webfont.woff2') format('woff2'), url('./fonts/gorditablackitalic-webfont.woff') format('woff'), url('./fonts/gorditablackitalic-webfont.ttf') format('truetype');
    font-weight: 900;
    font-style: italic;
}
.font-heavy-italic {
    font-family: 'Gordita Heavy Italic';
}
@font-face {
    font-family: 'Gordita Heavy';
    src: url('./fonts/gorditablack-webfont.woff2') format('woff2'), url('./fonts/gorditablack-webfont.woff') format('woff'), url('./fonts/gorditablack-webfont.ttf') format('truetype');
    font-weight: 900;
    font-style: normal;
}
.font-heavy {
    font-family: 'Gordita Heavy';
}
@font-face {
    font-family: 'Gordita Bold Italic';
    src: url('./fonts/gorditabolditalic-webfont.woff2') format('woff2'), url('./fonts/gorditabolditalic-webfont.woff') format('woff'), url('./fonts/gorditabolditalic-webfont.ttf') format('truetype');
    font-weight: 700;
    font-style: italic;
}
.font-bold-italic, .selected-doc-wrap .selected-doc-name, .retinopathy-popup .table-bordered th, .maculopathy-popup .table-bordered th {
    font-family: 'Gordita Bold Italic';
}
@font-face {
    font-family: 'Gordita Bold';
    src: url('./fonts/gorditabold-webfont.woff2') format('woff2'), url('./fonts/gorditabold-webfont.woff') format('woff'), url('./fonts/gorditabold-webfont.ttf') format('truetype');
    font-weight: 700;
    font-style: normal;
}
.font-bold, .form-impact .radio-flex-wrap .radio-inline .marker, .table-complete th, .question-wrap span, .terms h1, .btn-next, .blue-box .header .h4, .pre-op-header h3, .pre-op-header h4, .patients-empty h4, .menu-section h4, .menu-item h4, .patient-header h3, .patient-header h4, .patient-header h5, .operation-form label, .operation-note-header h3, .operation-note-header h4, .injection-block .injection-block-title {
    font-family: 'Gordita Bold';
}
@font-face {
    font-family: 'Gordita Medium Italic';
    src: url('./fonts/gorditamediumitalic-webfont.woff2') format('woff2'), url('./fonts/gorditamediumitalic-webfont.woff') format('woff'), url('./fonts/gorditamediumitalic-webfont.ttf') format('truetype');
    font-weight: 600;
    font-style: italic;
}
.font-medium-italic {
    font-family: 'Gordita Medium Italic';
}
@font-face {
    font-family: 'Gordita Medium';
    src: url('./fonts/gorditamedium-webfont.woff2') format('woff2'), url('./fonts/gorditamedium-webfont.woff') format('woff'), url('./fonts/gorditamedium-webfont.ttf') format('truetype');
    font-weight: 600;
    font-style: normal;
}
.font-medium, .form-impact .form-group-header .radio-flex-wrap .radio-inline, .popover h3.popover-title, .popover-normal h3.popover-title, .impact-review-wrap .impact-review-expired, .terms h3 {
    font-family: 'Gordita Medium';
}
@font-face {
    font-family: 'Gordita Regular Italic';
    src: url('./fonts/gorditaregularitalic-webfont.woff2') format('woff2'), url('./fonts/gorditaregularitalic-webfont.woff') format('woff'), url('./fonts/gorditaregularitalic-webfont.ttf') format('truetype');
    font-weight: 500;
    font-style: italic;
}
.font-regular-italic, .text-area-wrap .count-remaining, .retinopathy-popup td, .retinopathy-popup p, .maculopathy-popup td, .maculopathy-popup p, .table-incisions th, .table-incisions td {
    font-family: 'Gordita Regular Italic';
}
@font-face {
    font-family: 'Gordita Regular';
    src: url('./fonts/gorditaregular-webfont.woff2') format('woff2'), url('./fonts/gorditaregular-webfont.woff') format('woff'), url('./fonts/gorditaregular-webfont.ttf') format('truetype');
    font-weight: 500;
    font-style: normal;
}
.font-regular, .head-no-link, .search-form .form-group .form-control, .filter-select, .form-impact label.control-label, .popover .popover-content, .popover-normal .popover-content, .table-complete td:nth-child(1), .selected-doc-wrap .selected-doc-practice, .impact-review-wrap .impact-review-date, .form-exam, .form-exam select, .form-exam .form-control, .terms, .pre-op-form, .pre-op-form select, .pre-op-form .form-control, .pre-op-header .head-link, .popover-preop-wrap label, .popover-preop-wrap .form-control, .operation-form, .operation-form select, .operation-form .form-control, .operation-form .marker, .operation-note-header .head-link, .head-link {
    font-family: 'Gordita Regular';
}
@font-face {
    font-family: 'Gordita Light Italic';
    src: url('./fonts/gorditalightitalic-webfont.woff2') format('woff2'), url('./fonts/gorditalightitalic-webfont.woff') format('woff'), url('./fonts/gorditalightitalic-webfont.ttf') format('truetype');
    font-weight: 200;
    font-style: italic;
}
.font-light-italic, .optional {
    font-family: 'Gordita Light Italic';
}
@font-face {
    font-family: 'Gordita Light';
    src: url('./fonts/gorditalight-webfont.woff2') format('woff2'), url('./fonts/gorditalight-webfont.woff') format('woff'), url('./fonts/gorditalight-webfont.ttf') format('truetype');
    font-weight: 200;
    font-style: normal;
}
.font-light {
    font-family: 'Gordita Light';
}
html, body {
	height: 100%;
	font-size: 12px;
	-webkit-font-smoothing: unset !important;
	/*letter-spacing: 1px;*/
}
main {
	min-height: 100vh;
}
.bg-white {
	background: #ffffff;
}
.text-white {
	color: #ffffff;
}
.bg-navy {
	background: #0035d2;
}
.text-navy, .container-welcome-footer .footer-wrap ul a, .selected-doc-wrap .selected-doc-name, .terms h3, .blue-box .header, .pre-op-save-wrap .progression-wrap .save-progress, .table-medication, .pre-op-header h3, .pre-op-header h4, .patients-empty h4, .menu-section h4, .menu-item h4, .patient-header h3, .patient-header h4, .patient-header h5, .operation-note-save-wrap .progression-wrap .save-progress, .table-incisions, .operation-note-header h3, .operation-note-header h4, .operation-note-header h6, .injection-block .injection-block-title {
	color: #0035d2;
}
.bg-darkNavy {
	background: #2a307f;
}
.text-darkNavy {
	color: #2a307f;
}
.bg-cyan {
	background: #00bcd4;
}
.text-cyan {
	color: #00bcd4;
}
.bg-blue {
	background: #2072bb;
}
.text-blue {
	color: #2072bb;
}
.bg-purple {
	background: #9C27B0;
}
.text-purple, .optional {
	color: #9C27B0;
}
.bg-paleBlue {
	background: #f2f6fb;
}
.text-paleBlue {
	color: #f2f6fb;
}
.bg-navGrey {
	background: #e7e9e9;
}
.text-navGrey {
	color: #e7e9e9;
}
.bg-pageBackGround {
	background: #ebecea;
}
.text-pageBackGround {
	color: #ebecea;
}
.bg-textGrey {
	background: #343a40;
}
.text-textGrey, .form-impact label.control-label, .form-impact .form-group-header .radio-flex-wrap .radio-inline, .selected-doc-wrap .selected-doc-practice, .terms {
	color: #343a40;
}
.bg-logoutGrey {
	background: #404141;
}
.text-logoutGrey, .terms h1 {
	color: #404141;
}
.text-red {
	color: #a94442 !important;
}
.text-bright-red {
	color: red;
}
.outline {
	outline: 1px dotted red;
}
.unstyled {
	color: inherit;
	text-decoration: inherit;
	cursor: inherit;
}
.unstyled:active, .unstyled:focus {
    outline: none;
}
.unstyled:hover {
    text-decoration: underline !important;
    color: inherit;
}
.pointer {
	cursor: pointer !important;
}
.text-small {
	font-size: 0.8em;
}
.mb-0, .selected-doc-wrap .selected-doc-practice {
	margin-bottom: 0;
}
.th-no-border {
	/* border-width: 0px !important; */
	border-left-width: 0px !important;
	border-right-width: 0px !important;
	border-bottom-color: #2072bb !important;
	vertical-align:middle !important;
}
.th-border-top {
	border-top-color: #2072bb;
}
.toast-container {
	margin-top: 25%;
}
.flex-half-row {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: start;
	    justify-content: flex-start;
	-ms-flex-align: baseline;
	    align-items: baseline;
	padding-left: 2em;
	padding-right: 2em;
	padding-top: 8px;
	padding-bottom: 8px;
}
.flex-half-cell {
	width: 50%;
}
.flex-three-cell {
	width: 33%;
	text-align: center;
}
.navy-thin-line {
	height: 1px;
	background-color: #ddd;
	margin-left: 1.5em;
	margin-right: 1.5em;
}
.remove-diagnosis {
	padding: 0;
	margin: 0;
	border: 1px solid #0035d2;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background-color: white;
}
.remove-diagnosis:hover {
    background-color: #0035d2;
    color: white;
}
.remove-procedure {
	padding: 0;
	margin: 0;
	border: 1px solid #ff0000;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background-color: white;
}
.remove-procedure:hover {
    background-color: #ff0000;
    color: white;
}
.arrow-right {
	border: solid #0035d2;
	border-width: 0 2px 2px 0;
	display: inline-block;
	padding: 3px;
	margin-bottom: 2px;
	margin-left: 2px;
	transform: rotate(-45deg);
	-webkit-transform: rotate(-45deg);
}
.text-grey-light {
	color: #343a40;
	font-family: 'Gordita Light';
}
.text-procedure {
	color: #ff0000;
}
.title-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: baseline;
	    align-items: baseline;
	margin-bottom: 0.2em;
}
.filter-grey{
	filter: invert(66%) sepia(6%) saturate(173%) hue-rotate(190deg) brightness(89%) contrast(85%);
}
.time-picker {
	margin-left: 1em;
	padding-left: 1em;
    height: 3.0em;
    border-width: 1px;
    border-color: #0035d2;
    border-radius: 24px;
}
.scroll-container {
	position:absolute;
    width: 42.5em;
    height:80%;
	overflow-y: scroll;
	overflow-x: hidden;
	margin-left: 1.5em;
	margin-top: 2em;
}
.scroll-container::-webkit-scrollbar {
	width: 5px; /* Set the width of the scrollbar */
	background: transparent;
	/* position: absolute; */
 }
.scroll-container::-webkit-scrollbar-thumb {
	background-color: #0035d2; /* Set the color of the thumb */
 }
/* Caps the diagnosis list height on the patient dashboard so a long list */
/* doesn't blow out the overall page scroll. */
.diagnosis-scroll-container {
	max-height: 24em;
	overflow-y: auto;
	overflow-x: hidden;
	padding-right: 0.5em;
}
.diagnosis-scroll-container::-webkit-scrollbar {
	width: 5px;
	background: transparent;
}
.diagnosis-scroll-container::-webkit-scrollbar-thumb {
	background-color: #0035d2;
	border-radius: 3px;
}
/* The documents list scrolls in place instead of paging, so the section keeps a fixed height */
/* however many documents a patient has. The scrollbar is left visible rather than overlaid so */
/* the position in the list is always readable. */
.documents-scroll-container {
	max-height: 32em;
	overflow-y: auto;
	overflow-x: hidden;
	padding-right: 0.5em;
	scrollbar-width: thin;
	scrollbar-color: #0035d2 rgba(0, 53, 210, 0.12);
}
.documents-scroll-container::-webkit-scrollbar {
	width: 8px;
}
.documents-scroll-container::-webkit-scrollbar-track {
	background: rgba(0, 53, 210, 0.12);
	border-radius: 4px;
}
.documents-scroll-container::-webkit-scrollbar-thumb {
	background-color: #0035d2;
	border-radius: 4px;
}
.documents-scroll-more {
	padding: 0.5em 0 0.25em;
	text-align: center;
	color: #0035d2;
	font-size: 0.85em;
}
/* Whether the list is still arriving, empty, or short of one of its two halves. Kept above the */
/* scrolling area so it is readable without scrolling to find it. */
.documents-status {
	padding: 0.5em 0 0.25em;
	color: #0035d2;
	font-size: 0.85em;
}
.documents-status--error {
	color: #a94442;
}
/* Paging is replaced by the scrolling above, so ng-table's pager is not shown. */
patient-file-table .ng-table-pager {
	display: none;
}
.progress-note-container {
	border-width: 2px;
	border-style: solid;
	border-color: #0035d2;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-container-delete {
	border-width: 2px;
	border-style: solid;
	border-color: #343a40;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-container-admin {
	border-width: 2px;
	border-style: solid;
	border-color: #d87d4a;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-container-nurse {
	border-width: 2px;
	border-style: solid;
	border-color: #2e7d32;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-container-scheduled {
	border-width: 2px;
	border-style: solid;
	border-color: #00796b;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-container-injection {
	border-width: 2px;
	border-style: solid;
	border-color: #9C27B0;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-bold {
	font-family: 'Gordita Bold';
	font-size: 12px;
	color: black !important;
}
.progress-note-bold-delete {
	font-family: 'Gordita Bold';
	font-size: 12px;
	color: #343a40 !important;
}
.progress-note-link {
	text-decoration: underline;
	font-family: 'Gordita Bold';
}
.panel-title {
    font-size: 14px;
    font-family: 'Gordita Bold';
}
#scrollable-dropdown-menu .dropdown-menu {
	height: 10em;
	overflow-y: auto;
	margin-top: -12.5em;
  }
.error-message {
	color: #a94442;
	display: block;
	margin-top: 5px;
}
.dialog-content-box {
	position: relative;
	height:32rem;
	width: 100%;
}
.invoice-item-cell {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 0.5rem;
}
.invoice-code-label {
	border-width: 1px;
	border-color: #0035d2;
	border-style: solid;
	padding-left: 0.5rem;
	padding-right: 0.5rem;
}
.invoice-item-row {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: baseline;
	    align-items: baseline;
	gap: 1rem;
}
.invoice-reference-row {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: baseline;
	    align-items: baseline;
	gap: 1rem;
	overflow-wrap: anywhere;
}
.invoice-details-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 0.5rem;
	margin-left: 60%;
	margin-right: 4%;
}
.invoice-details-section {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 0.5rem;
	padding-bottom: 1rem;
	border-bottom-width: 1px;
	border-bottom-color: gray;
	border-bottom-style: solid;
}
.invoice-details-row {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	gap: 1rem;
	color: #0035d2;
	-ms-flex-pack: justify;
	    justify-content: space-between;
}
.view-invoice-modal {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	-ms-flex-pack: center;
	    justify-content: center;
	-ms-flex-align: center;
	    align-items: center;
}
.header-group {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.dismiss-close-icon {
	color: #ffffff;
	font-size: 20px;
	-ms-flex-item-align: end;
	    -ms-grid-row-align: end;
	    align-self: end;
	margin-right: 11%;
}
/* A row of action icons inside a table cell. Not a flex container: this class sits on the <td>, and a flex
   table cell drops out of the table's row layout - the browser sizes it to its own content, so the cell's
   bottom border is drawn at the height of the icons and no longer lines up with the cells either side. */
.icons-row {
	white-space: nowrap;
}
.icons-row > * {
    display: inline-block;
    vertical-align: middle;
}
.icons-row > * + * {
    margin-left: 1rem;
}
.md-dialog-container {
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 0.5rem;
}
#billing-dropdown-menu .dropdown-menu {
	max-height: 20rem;
	overflow-y: auto;
  }
.progress-note-header {
	margin-left: 0px;
	margin-right: 0px;
	display: -ms-flexbox;
	display: flex;
	width: 100%;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	margin-bottom: 1rem;
}
.progress-note-header-child {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: start;
	    justify-content: flex-start;
	gap: 1rem;
}
.fc-toolbar h2 {
	font-size: 16px;
	padding-top: 0.5rem;
}
.nhi-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	gap: 1rem;
}
.nhi-container-left {
	width: 50%;
}
.nhi-container-right {
	width: 50%;
}
.name-row-container {
	display: -ms-flexbox;
	display: flex;
	gap: 0.5rem;
}
.red-label {
	color: red !important;
}
.nhi-column {
	max-width: 10rem;
	text-wrap: wrap;
	word-wrap: break-word;
}
.nhi-label {
	text-wrap: wrap;
	word-wrap: break-word;
	max-width: 80%;
}
.progress-note-procedure {
		display: -ms-flexbox;
		display: flex;
		-ms-flex-direction: row;
		    flex-direction: row;
		gap: 1rem;
}
.fc-more-popover {
	max-height: 95%;
	overflow-y: auto;
}
.search-radio-label {
	color: #0035d2 !important;
	font-family: 'Gordita Medium' !important;
	font-size: 16px;
}
.patient-table-text {
	color: #0035d2 !important;
}
.red-text {
	color: red;
}
.task-label-container {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: row;
      flex-direction: row;
}
.task-label-child {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  width: 100%;
}
.task-list-patient {
	width: 15%;
	/* text-align: center; */
}
.task-list-assigned {
	width: 20%;
	/* text-align: center; */
}
.task-list-description {
	width: 30%;
	/* text-align: center; */
	
}
.task-list-status {
	width: 5%;
	/* text-align: center; */
}
.task-list-delete {
	width: 3%;
	text-align: center;
}
.task-list-due {
	width: 7%;
	/* text-align: center; */
}
.task-list-label {
	width: 12%;
	/* text-align: center; */
}
.task-list-color {
	width: 2rem;
	height: 2rem;
	/* text-align: center; */
	border-radius: 0.5rem;
}
.task-done {
	text-decoration: line-through;
}
.button-footer {
	display: -ms-flexbox;
	display: flex;
	gap: 1rem;
}
.nav-li {
	height: 2.5rem;
    line-height: 2.5rem;
}
.md-badge {
	z-index: 80 !important;
 }
.sign-buttons-group {
 	display: -ms-flexbox;
 	display: flex;
 	-ms-flex-direction: row;
 	    flex-direction: row;
 	gap: 1rem;
	width: 100%;
	margin-left: 1rem;
 }
.sign-buttons-container {
 	display: -ms-flexbox;
 	display: flex;
 	-ms-flex-direction: row;
 	    flex-direction: row;
	-ms-flex-pack:justify;
	    justify-content:space-between;
 }
.header-left-align > thead > tr > th {
	text-align: left;
}
.lvl-over {
	/* applied to a drop target when a draggable object is over it */
	border: 2px dashed black !important;
}
.lvl-target {
	/* applied to all drop targets when a drag operation begins, used to indicate drop targets on a page */
	background-color: #ddd;
	opacity: .5;
}
[draggable] {
	-moz-user-select: none;
	-webkit-user-select: none;
	-ms-user-select: none;
	    user-select: none;
	/* Required to make elements draggable in old WebKit */
	-khtml-user-drag: element;
	-webkit-user-drag: element;
	cursor: move;
	border:1px solid black;
}
.peg {
	font-weight: bold;
	border-width: 0px;
	border-radius: 4px;
	width: auto;
	height:3rem;
	margin: 10px;
	padding: 0.5rem;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: center;
	    justify-content: center;
	-ms-flex-align: center;
	    align-items: center;
	background-color: #019CD2;
	color: white;
}
.slot {
	margin-right:2px;
	margin-top:2px;
	width:25px;
	height:25px;
    display:inline-block;
    border: none;
}
.grey {
	background-color: grey;
}
pre strong {
	font-size:12pt;
}
.modal-close {
	z-index: 1;
	position: absolute;
	top: 7rem;
}
.my-drop-zone {
	border: dotted 3px lightgray;
}
.nv-file-over {
	border: dotted 3px red;
}
/* Default class applied to drop zones on over */
.another-file-over-class {
	border: dotted 3px green;
}
.location-container {
	margin-top: 0.5rem;
	border-width: 1px;
	border-color: #0035d2;
	border-radius: 4px;
	border-style: solid;
	padding: 0.5rem;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	color: #0035d2;
}
.popover-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	gap: 1rem;
	-ms-flex-align: baseline;
	    align-items: baseline;
}
div.printControls
{
	background-color:#edf0ec;
	height:100px;
	padding: 5px;
	bottom:0;
	display: -ms-flexbox;
	display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    gap: 1rem;
}
#labelImageDiv
{
	background-color: #b2b2b2;
	padding: 5px;
	margin: 0px;
}
#printDiv
{
	float:right;
	width:126px;
}
#printersDiv
{
	float:left;
}
.progress-bar-warning {
	background-color: #0035d2;
}
.clinic-letters-frame {
	width: 100%;
	max-height: 50vh;
	overflow-y: scroll;
	scrollbar-width: none;
}
.clinic-letters-container {
	border-width: 2px;
	border-style: solid;
	border-color: #0035d2;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
	cursor: pointer;
}
.clinic-letters-container:hover {
    background-color: #0035d2;
    color: white !important;
}
.clinic-letters-container:hover .clinic-letters-bold {
    color: white !important;
}
.clinic-letters-container .clinic-letters-bold {
    font-family: 'Gordita Bold';
    font-size: 12px;
    color: black !important;
    cursor: pointer;
}
.clinic-letters-content {
	width: 100%;
	display: -ms-flexbox;
	display: flex; 
	-ms-flex-direction: column; 
	    flex-direction: column;
}
.clinic-template-menu {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: end;
	    align-items: end;
}
.clinic-letter-footer {
	margin-left: -55px !important;
	margin-right: -55px !important;
	display: -ms-flexbox !important;
	display: flex !important;
	-ms-flex-direction: row-reverse !important;
	    flex-direction: row-reverse !important;
	padding-top: 1rem !important;
	padding-bottom: 1rem !important;
	margin-bottom: -3rem !important;
}
.md-chips {
	box-shadow: none !important;
}
.care-team-width {
	width: 36rem !important;
}
.note-editor .note-frame .note-editing-area .note-editable {
	color: #000000;
	font-family: 'Gordita Regular', sans-serif;
}
.note-editable>p {
	color: #000000;
}
.note-editor.note-airframe .note-status-output, .note-editor.note-frame .note-status-output {
	border-top-width: 0px !important;
}
@media print {
	@page {
        margin-left: 0.5in;
        margin-right: 0.5in;
        margin-top: 0.3in;
        margin-bottom: 0.3in;
      }
  }
.note-editor-diagnosis-table {
    width: 60%;
	margin-left: 20%;
	table-layout: fixed;
}
.note-editor-diagnosis-table th, .note-editor-diagnosis-table td {
    width: 50%;
    overflow: hidden;
}
.head-no-link {
	color: #0035d2;
	font-size: 14px;
}
.intro-customTooltip * {
  color: #4a4a4a;
  font-size: 15px
}
.intro-customTooltip .introjs-tooltip-title {
  color: #0035d2;
}
.dropdown-menu[uib-typeahead-popup] {
    max-height: 250px;
    overflow-y: auto;
    overflow-x: hidden;
    z-index: 1050;
}
/* .mui-alert {
  padding: 12px 16px;
  margin: 1rem;
  border-radius: 4px;
  font-size: 14px;
  display: flex;
  align-items: center;
  margin-bottom: 12px;
  border: 1px solid transparent;
} */
.mui-alert-info {
  background: #e8f4fd;
  color: #055160;
  border-color: #b6e0fe;
}
.mui-alert-success {
  background: #edf7ed;
  color: #1e4620;
  border-color: #c8e6c9;
}
.mui-alert-warning {
  background: #fff4e5;
  color: #663c00;
  border-color: #ffecb5;
}
.mui-alert-error {
  background: #fdecea;
  color: #611a15;
  border-color: #f5c2c7;
}
.mui-alert {
  position: relative;
  padding: 12px 40px 12px 16px;
  margin: 1rem;
  border-radius: 4px;
  font-size: 14px;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  margin-bottom: 12px;
  border: 1px solid transparent;
}
.mui-alert-close {
  position: absolute;
  right: 8px;
  top: 8px;
  background: transparent;
  border: none;
  font-size: 16px;
  cursor: pointer;
  color: inherit;
  opacity: 0.6;
}
.mui-alert-close:hover {
  opacity: 1;
}
.no-class {
	width: 100%;
	height: 100%;
}
/* Sits beside a document's name while its file is still being analysed. The app's spinner is
   configured page-sized, so this box gives the inline one somewhere its own size to centre in -
   spin.js positions itself against the nearest positioned ancestor. */
.inline-spinner {
	display: inline-block;
	position: relative;
	width: 14px;
	height: 14px;
	vertical-align: middle;
	margin-right: 6px;
}
/* =================================================================== */
/* ! Section divider
/* -------------------------------------------------------------------
/* The rule that breaks a long clinical form into sections - what the
/* progress note has always drawn inline. Given a class so the spacing
/* is decided once, and so the collapse rule below can find one.
/* =================================================================== */
.section-divider {
	border: none;
	border-top: 2px solid #e0e6ed;
	margin: 2.5em 0;
}
/* The automation task carries its own trailing divider, inside the guard that
   decides whether it renders at all - it is hidden whenever the practice has no
   automation setting for that note type, which the surrounding view has no way
   of knowing. Where a section divider already follows it, that would draw two
   rules with nothing between them, so the standing one stands down for the
   component's.
   :has() is what lets a sibling ask whether the component actually drew
   anything; an empty <automation-task> element is left behind either way. On a
   browser without it the fallback is the double rule we had before - cosmetic,
   not broken. */
automation-task:has(.pre-op-form) + .section-divider {
	display: none;
}
/* =================================================================== */
/* ! Copy-to-the-other-eye icon (copy-eye-icon component)
/* =================================================================== */
.copy-eye-icon {
	display: inline-block;
	width: 19px;
	height: 24px;
	vertical-align: middle;
	color: #1e1e5e;
}
button.btn {
	border-radius: 24px;
}
.btn-dropdown-multiselect {
	height: 34px;
	text-align: start;
	border-color: #0035d2;
	background-color: #ffffff;
	color: #0035d2;
	padding: 4px 18px;
	font-size: 12px;
	width: 100%;
	min-width: 16em;
	transition: all 0.3s ease;
}
.btn-dropdown-multiselect:hover, .btn-dropdown-multiselect:active {
    color: #ffffff;
    background-color: rgb(0, 45, 179);
    outline: 0;
}
.btn-dropdown-multiselect:focus {
    color: #0035d2;
    outline: 0;
}
.btn-dropdown-multiselect:hover:focus {
    color: #ffffff;
}
.btn-navy {
	background-color: #0035d2;
	color: #ffffff;
	padding: 4px 18px;
	font-size: 12px;
	width: 100%;
	max-width: 220px;
	transition: all 0.3s ease;
}
.btn-navy:hover, .btn-navy:active {
    color: #ffffff;
    background-color: rgb(0, 45, 179);
    outline: 0;
}
.btn-navy:focus {
    color: #ffffff;
    outline: 0;
}
/* For a navy button whose label does not fit the 220px cap above. Bootstrap's .btn is nowrap, so an
   oversized label runs out past the button's edge rather than wrapping inside it.

   Sizing to the content keeps the label whole and the button around it. min-width holds the floor at
   the 220px every other navy button gets, so a button whose label changes between a long and a short
   one - as the patient save button does - does not shrink to a stub when the short one is showing.
   max-width and normal wrapping are the ceiling: if the label or the font ever outgrows the space
   available, the button stays inside its container and the text wraps within it. */
.btn.btn-navy.btn-fit-label {
	width: auto;
	min-width: 220px;
	max-width: 100%;
	white-space: normal;
}
.btn-cancel {
	background-color: transparent;
	color: #343a40;
	padding: 4px 18px;
	font-size: 12px;
	border: 1px solid #bdbec1;
	width: 100%;
	max-width: 220px;
	transition: all 0.3s ease;
}
.btn-cancel:hover, .btn-cancel:active {
    color: #404141;
    background-color: rgb(230, 230, 230);
    outline: 0;
}
.btn-cancel:focus {
    outline: 0;
}
.btn-cyan {
	background-color: #ffffff;
	color: #00bcd4;
	border: 1px solid #00bcd4;
	padding: 4px 18px;
	font-size: 12px;
	width: 100%;
	max-width: 220px;
	transition: background-color 0.3s ease;
}
.btn-cyan:hover, .btn-cyan:active {
    color: #00bcd4;
    background-color: rgb(235, 235, 235);
}
.btn-cyan:focus {
    color: #00bcd4;
    outline: 0;
}
.btn-cyan-solid {
	background-color: #00bcd4;
	color: #ffffff;
	border: 1px solid #00bcd4;
	padding: 4px 18px;
	font-size: 12px;
	width: 100%;
	max-width: 220px;
	transition: background-color 0.3s ease;
}
.btn-cyan-solid:hover, .btn-cyan-solid:active {
    color: #ffffff;
    background-color: rgb(0, 167, 189);
}
.btn-cyan-solid:focus {
    color: #ffffff;
    outline: 0;
}
.btn-morph-wrap {
	position: relative;
	overflow: visible;
}
.btn-morph-wrap .btn-morph {
    width: 270px;
    max-width: 270px;
    padding-left: 10px;
    padding-right: 10px;
}
.btn-morph-wrap .morph-result {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: 280px;
    width: 120px;
}
#download-referral-button {
	width: 240px;
}
/* Container for the AI elements */
.ai-verification-group {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-right: 6px;
    /* Same height as .diagnosis-row-actions and pinned to the line top rather than the text
       baseline, so the badge sits level with the info/edit icons beside it. */
    height: 1.5em;
    vertical-align: top;
}
/* Subtle, theme-matching badge (Soft cyan/blue background, Navy text) */
.ai-badge {
    background-color: #E8F4F8; /* matches a soft version of your bg-cyan */
    color: #1A2942; /* matches your text-darkNavy */
    padding: 2px 8px;
    border-radius: 12px; /* pill shape */
    font-size: 10px;
    font-family: 'Gordita Medium', sans-serif;
    border: 1px solid #D0E4EA;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
}
/* Minimalist base style for the buttons */
.ai-btn-action {
    background: transparent;
    border: 1px solid #E0E0E0;
    border-radius: 4px;
    padding: 2px 6px;
    font-size: 10px;
    cursor: pointer;
    transition: all 0.2s ease-in-out;
    color: #888; /* Soft grey by default */
}
/* Hover effect for Accept: Fills in with your Navy theme */
.ai-btn-action.accept:hover {
    background-color: #1A2942; 
    color: #ffffff;
    border-color: #1A2942;
}
/* Hover effect for Decline: Slightly darker grey to signify removal without screaming "DANGER" */
.ai-btn-action.decline:hover {
    background-color: #F0F0F0;
    color: #333333;
    border-color: #CCCCCC;
}
/* Info + edit icons at the start of a diagnosis row, centred on the first line of its text */
.diagnosis-row-actions {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    height: 1.5em;
}
/* about one line of row text */
.diagnosis-row-actions .fa-info-circle {
    font-size: 14px;
    cursor: pointer;
}
/* Edit (pencil) button on a diagnosis row - bare icon, no chrome */
.diagnosis-edit-btn {
    background: transparent;
    border: none;
    padding: 2px;
    line-height: 0;
    cursor: pointer;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    opacity: 0.7;
    transition: opacity 0.2s ease-in-out;
}
.diagnosis-edit-btn img {
    width: 15px;
    height: 15px;
    display: block;
}
.diagnosis-edit-btn:hover:not([disabled]) {
    opacity: 1;
}
.diagnosis-edit-btn[disabled] {
    cursor: default;
    opacity: 0.35;
}
main {
	min-height: 100vh;
	padding: 0;
	margin: 0;
	color: #343a40;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	background-image: linear-gradient(rgba(10, 37, 64, 0.95), rgba(10, 37, 64, 0.85)), url('https://cattrax-media.s3.ap-southeast-2.amazonaws.com/images/surgeon_image_cropped2.jpg');
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
}
.nav-wrap-flex {
	padding: 22px 0;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: start;
	    align-items: flex-start;
	gap: 1rem;
	width: 100%;
}
.nav-wrap-flex .nav-logo-wrap {
    height: 120px;
}
.nav-wrap-flex .nav-logo-wrap img {
    height: 100%;
}
.nav-wrap-flex .nav-nav-wrap {
    -ms-flex-item-align: end;
        align-self: flex-end;
}
.nav-wrap-flex .nav-nav-wrap ul {
    display: -ms-flexbox;
    display: flex;
    padding: 5px;
    margin: 0;
    list-style-type: none;
    background: #f8f9fa;
    border-radius: 25px;
    letter-spacing: 1.2px;
    color: #343a40;
}
.nav-wrap-flex .nav-nav-wrap ul li {
    border-radius: 24px;
    padding: 2px 10px;
    font-size: 12px;
}
.nav-wrap-flex .nav-nav-wrap ul li a {
    color: #00bcd4;
}
.nav-wrap-flex .nav-nav-wrap ul li a:hover {
    text-decoration: none;
}
.nav-wrap-flex .nav-nav-wrap ul li.active {
    background: #00bcd4;
}
.nav-wrap-flex .nav-nav-wrap ul li.active a {
    color: #ffffff;
}
/* Centred too: when the panel is only one row it is shorter than the logo. */
.nav-wrap-flex .nav-user-wrap {
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-width: 0;
    color: #343a40;
}
.nav-wrap-flex .nav-user-wrap ul {
    letter-spacing: 1.1px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    padding: 0;
    margin: 0;
    list-style-type: none;
    color: #343a40;
    width: 100%;
}
.nav-wrap-flex .nav-user-wrap ul li {
    border-radius: 24px;
    padding: 0px 10px;
    height: auto;
    line-height: normal;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
}
.nav-wrap-flex .nav-user-wrap ul li > a {
    color: #343a40;
}
/* Centred and spread across the panel, but never further apart than a button is wide: each button
		   (a mini FAB is 40px) sits in the middle of a cell at most twice its width. */
.nav-wrap-flex .nav-user-wrap .nav-fab-row {
    -ms-flex-pack: center;
        justify-content: center;
    padding-bottom: 6px;
    margin-bottom: 6px;/* The divider, drawn as a background so it can be narrower than the panel. Not a positioned
			   pseudo-element: the badges hide themselves when their button's offsetTop is 0. */
    background: linear-gradient(#cccccc, #cccccc) no-repeat center bottom / 80% 1px;
}
.nav-wrap-flex .nav-user-wrap .nav-fab-row > li {
    -ms-flex: 1 1 0px;
        flex: 1 1 0;
    max-width: 80px;
    -ms-flex-pack: center;
        justify-content: center;
    padding: 0;
}
/* None of the round buttons at this practice: no row, and no divider. */
.nav-wrap-flex .nav-user-wrap .nav-fab-row:not(:has(li)) {
    display: none;
}
/* The search box takes whatever width the other controls leave it. They are spaced by one even gap
		   rather than padding of their own, which leaves it as much as possible; the icons are one item,
		   closer together inside it (.nav-icon-group). */
.nav-wrap-flex .nav-user-wrap .nav-action-row {
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 16px;/* With the panel's own 8px, the row's ends sit as far in as the panel's corners are rounded. */
    padding: 0 16px;/* As tall as the search field makes it, also with no practice chosen, when it isn't shown. */
    min-height: 2.5rem;/* One line, never two: short of room, the practice and user names are cut off first, then the
			   search box narrows to its minimum. The icons and LOGOUT never shrink. */
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
}
.nav-wrap-flex .nav-user-wrap .nav-action-row > li {
    padding: 0;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
/* The two names grow from nothing, in step and ahead of the search box (10 to its 1), each
			   stopping at its full width. Short of room they are the same width, so both are cut off by
			   the same amount; each cell's own extra, the dropdown's arrow and the person icon, is about
			   the same. */
.nav-wrap-flex .nav-user-wrap .nav-action-row > .nav-practice-cell, .nav-wrap-flex .nav-user-wrap .nav-action-row > .nav-user-cell {
    -ms-flex: 10 1 0px;
        flex: 10 1 0;
    max-width: -webkit-max-content;
    max-width: -moz-max-content;
    max-width: max-content;
    min-width: 5rem;
}
/* The search box and PATIENT SEARCH, drawn as one white field with the button set into its end. */
.nav-wrap-flex .nav-user-wrap .nav-action-row > .nav-search-cell {
    -ms-flex: 1 1 23rem;
        flex: 1 1 23rem;
    min-width: 20rem;
    height: 2.5rem;
    padding: 0 3px 0 0;
    background: #ffffff;
    border: 1px solid #e0e6ed;
}
/* While typing in it; not when PATIENT SEARCH is clicked, which focuses the button. */
.nav-wrap-flex .nav-user-wrap .nav-action-row > .nav-search-cell:has(.nav-search-input:focus) {
    border-color: #0035d2;
}
.nav-wrap-flex .nav-user-wrap .nav-action-row .nav-inline-icon {
    margin-right: 0;
}
.nav-wrap-flex .nav-user-wrap .nav-action-row .nav-user-menu {
    padding: 0;
}
/* =================================================================== */
/* ! Nav panel: the round buttons, a divider, then search and the user's controls
/* =================================================================== */
.nav-menu {
	width: 100%;
	padding: 6px 8px;
	background: #f8f9fa;
	border-radius: 24px;
}
/* Only the second row (no round buttons): keep it as tall as when there are some, or it is a thin
	   strip beside the logo. */
.nav-menu:not(:has(.nav-fab-row li)) {
    padding: 8px;
}
.nav-search-form {
	position: relative;
	-ms-flex: 1 1 auto;
	    flex: 1 1 auto;
	min-width: 0;
	height: 100%;
	margin: 0;
}
.nav-search-form > i {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 13px;
    color: #6c757d;
    pointer-events: none;
}
/* Borderless: the field's outline is its cell's (.nav-search-cell), which also holds PATIENT SEARCH. */
.nav-search-input {
	width: 100%;
	height: 100%;
	padding: 0 10px 0 34px;
	border: 0;
	border-radius: 24px 0 0 24px;
	background: transparent;
	color: #343a40;
	font-size: 13px;
	letter-spacing: normal;
	text-overflow: ellipsis;
}
.nav-search-input:focus {
    outline: none;
}
/* Holds the recent-patients popover's anchor, an empty strip along the button's bottom edge, so the
   popover opens centred under the button. Not positioned: the popover goes in here, and a positioned
   wrap would be its containing block and squeeze it to the button's width. */
.nav-search-btn-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	-ms-flex: 0 0 auto;
	    flex: 0 0 auto;
}
.nav-search-popover-anchor {
	display: block;
	height: 0;
	pointer-events: none;
}
/* Set 3px inside the field's border: the field is 2.5rem (30px), less 1px of border each side. A pale
   chip, like LOGOUT, so the field reads as one control. It stays pale: a step deeper under the pointer
   and while its recent patients are showing (.is-open), and deeper again while pressed. Not navy while
   the field has focus, which clicking the button also gives it. */
.nav-search-btn {
	height: calc(2.5rem - 8px);
	padding: 0 14px;
	border: 0;
	border-radius: 24px;
	background: #e7f0ff;
	color: #0035d2;
	font-size: 11px;
	letter-spacing: 0.6px;
	white-space: nowrap;
	transition: background-color 0.15s ease-out, color 0.15s ease-out, box-shadow 0.15s ease-out;
}
.nav-search-btn:hover, .nav-search-btn.is-open {
    background: rgb(204, 223, 255);
    box-shadow: 0 1px 2px rgba(0, 53, 210, 0.22);
}
.nav-search-btn:active {
    background: rgb(184, 210, 255);
    box-shadow: none;
}
.nav-search-btn:focus {
    outline: none;
}
.nav-search-btn:focus-visible {
    outline: 2px solid #0035d2;
    outline-offset: 2px;
}
/* Shown instead of the words on a narrow screen (see max-width: 700px). Two classes: Font Awesome's
	   .fa, which loads after this file, would show it otherwise. */
.nav-search-btn .nav-search-btn-icon {
    display: none;
}
.nav-wrap-responsive {
	padding-bottom: 1em;
}
/* Level with the middle of the nav panel, however many rows the panel has. */
.nav-brand-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: end;
	    align-items: flex-end;
	-ms-flex-item-align: center;
	    align-self: center;
	-ms-flex: 0 0 auto;
	    flex: 0 0 auto;
}
.nav-brand-logo {
	width: 200px;
	max-width: 100%;
	height: auto;
}
.nav-mini-fab {
	margin: 0;
}
/* The round buttons grow a little under the pointer. Angular Material already animates a FAB's
   transform; this quickens it. Its .md-button.md-fab loads after this file, hence the third class. */
.md-button.md-fab.nav-mini-fab {
	/* Angular Material gives every button 6px 8px; .nav-mini-fab's own margin: 0 above loses to it. */
	margin: 0;
	transition-duration: 0.15s;
	transition-timing-function: ease-out;
}
.md-button.md-fab.nav-mini-fab:hover {
    transform: scale(1.1);
}
@media (prefers-reduced-motion: reduce) {
    .md-button.md-fab.nav-mini-fab:hover {
        transform: none;
    }
}
.nav-icon-img {
	width: 24px;
	height: 24px;
	-o-object-fit: contain;
	   object-fit: contain;
}
.nav-icon-img-wide {
	width: 26px;
}
.nav-icon-img-small {
	width: 20px;
	height: 20px;
}
.nav-practice-select {
	border-width: 0;
	text-decoration: underline;
	margin-top: 0.2em;
	max-width: 16rem;
	width: 100%;
	/* Narrows with its cell when the row is short of room (.nav-practice-cell), cutting the name off. */
	min-width: 0;
	text-overflow: ellipsis;
	background-color: #f8f9fa;
}
/* No focus ring: it stays focused after a practice is picked, and the ring drew a box round it. */
.nav-practice-select:focus {
    outline: none;
}
/* The name and its icon centred in their box, level with the icons beside them. The text otherwise
   sits at the top of the box, and .lock lifts the icon 2px. */
.nav-user-menu {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	white-space: nowrap;
	background-color: #f8f9fa;
}
.nav-user-menu .lock {
    -ms-flex: none;
        flex: none;
    bottom: 0;
}
/* The user's name is cut off with an ellipsis when the row is short of room (.nav-user-cell). The
   hover wrapper between the cell and the menu has to be allowed to shrink too. */
.nav-user-cell > span {
	min-width: 0;
}
.nav-user-name {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
}
.nav-icon-group {
	gap: 8px;
}
.nav-inline-icon {
	min-width: 18px;
	min-height: 18px;
	height: 18px;
	width: 18px;
	margin-right: 1rem;
}
.recent-patients-popover {
	border-radius: 10px;
	background: #ffffff;
}
.popover-container.recent-patients-layout {
	-ms-flex-align: start;
	    align-items: flex-start;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	gap: 1.25rem;
	padding: 1.25rem 1.1rem;
	min-width: 34rem;
	max-width: 44rem;
}
.recent-patients-list-panel {
	-ms-flex: 1 1 auto;
	    flex: 1 1 auto;
	min-width: 0;
}
.recent-patients-list-wrap {
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
	max-height: 64vh;
	overflow-y: auto;
}
.recent-patients-date-group {
	display: block;
	list-style: none;
	margin: 0 0 0.5rem;
	padding: 0;
}
.recent-patients-date {
	display: block;
	font-size: 14px;
	line-height: 1.2;
	color: #343a40;
	margin-bottom: 0.2rem;
}
.recent-patients-item-row {
	display: -ms-grid;
	display: grid;
	-ms-grid-columns: minmax(0, 1fr) auto;
	    grid-template-columns: minmax(0, 1fr) auto;
	-ms-flex-align: center;
	    align-items: center;
	gap: 0.5rem;
	margin-bottom: 0.15rem;
	width: 100%;
}
.recent-patients-name-col {
	min-width: 0;
}
.recent-patients-action-col {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: end;
	    justify-content: flex-end;
}
.recent-patients-link {
	display: block;
	font-size: 14px;
	line-height: 1.2;
	color: #1738e5;
	max-width: 24rem;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.recent-patients-link:hover {
    text-decoration: none;
    color: #1738e5;
}
.recent-patients-popover .recent-patients-link {
	color: #1738e5 !important;
}
.recent-patients-task-action {
	margin-left: 0.5em;
	cursor: pointer;
	-ms-flex: 0 0 auto;
	    flex: 0 0 auto;
}
.recent-patients-task-icon {
	width: 16px;
	height: 16px;
}
.recent-patients-starred-panel {
	-ms-flex: 0 0 11rem;
	    flex: 0 0 11rem;
	padding-top: 2.15rem;
	padding-left: 0.5rem;
}
.recent-patients-starred-list, .recent-patients-starred-list-wrap {
	padding: 0;
	margin: 0;
}
.recent-patients-starred-item {
	display: block;
	list-style: none;
	margin: 0;
	padding: 0;
}
.recent-patients-starred-row {
	display: -ms-grid;
	display: grid;
	-ms-grid-columns: minmax(0, 1fr) auto;
	    grid-template-columns: minmax(0, 1fr) auto;
	-ms-flex-align: center;
	    align-items: center;
	gap: 0.35rem;
	width: 100%;
}
.recent-patients-starred-icon {
	width: 18px;
	height: 18px;
	cursor: pointer;
	-ms-flex: 0 0 auto;
	    flex: 0 0 auto;
}
@media (max-width: 768px) {
	.popover-container.recent-patients-layout {
		min-width: 26rem;
		max-width: 36rem;
		padding: 1rem 0.9rem;
	}

	.recent-patients-date {
		font-size: 14px;
	}

	.recent-patients-link {
		font-size: 14px;
		max-width: 17.5rem;
	}

	.recent-patients-starred-panel {
		-ms-flex-preferred-size: 9.5rem;
		    flex-basis: 9.5rem;
		padding-top: 1.6rem;
	}
}
@media (max-width: 480px) {
	.popover-container.recent-patients-layout {
		min-width: 0;
		max-width: 92vw;
		-ms-flex-direction: column;
		    flex-direction: column;
		gap: 0.75rem;
	}

	.recent-patients-date {
		font-size: 13px;
	}

	.recent-patients-link {
		font-size: 13px;
		max-width: 80vw;
	}

	.recent-patients-starred-panel {
		width: 100%;
		padding-top: 0.4rem;
		padding-left: 0;
	}
}
@media (max-width: 1200px) {
	.nav-wrap-flex {
		-ms-flex-wrap: wrap;
		    flex-wrap: wrap;
	}

	.nav-wrap-flex .nav-user-wrap {
		width: 100%;
	}

	.nav-wrap-flex .nav-user-wrap .nav-action-row {
		-ms-flex-pack: start;
		    justify-content: flex-start;
	}
}
@media (max-width: 768px) {
	.nav-wrap-flex {
		padding: 20px 0;
	}

	.nav-brand-logo {
		width: 170px;
	}

	.nav-menu {
		padding: 6px 10px;
	}

	.nav-wrap-flex .nav-user-wrap .nav-action-row {
		gap: 12px;
	}

	.nav-wrap-flex .nav-user-wrap ul li {
		padding: 0 8px;
	}

	.nav-practice-select {
		max-width: 12rem;
	}
}
/* Too narrow for the second row with PATIENT SEARCH spelled out, even with the names cut right down:
   the button keeps only its magnifier, the box drops its own, and the box may narrow further. */
@media (max-width: 700px) {
	.nav-search-btn {
		padding: 0 10px;
	}
	.nav-search-btn .nav-search-btn-label {
        display: none;
    }
	.nav-search-btn .nav-search-btn-icon {
        display: inline-block;
    }

	.nav-search-form > i {
		display: none;
	}

	.nav-search-input {
		padding-left: 14px;
	}

	.nav-wrap-flex .nav-user-wrap .nav-action-row > .nav-search-cell {
		min-width: 8rem;
	}
}
@media (max-width: 480px) {
	.nav-menu {
		border-radius: 16px;
	}

	.nav-wrap-flex .nav-user-wrap ul li {
		padding: 0 6px;
	}

	.nav-inline-icon {
		margin-right: 0.6rem;
	}

	.nav-practice-select {
		max-width: 10rem;
	}
}
.patient-header .nav-nav-wrap ul li a {
    color: #0035d2;
    font-weight: 600;
}
.patient-header .nav-nav-wrap ul li a:hover {
    color: #0000CD;
    text-decoration: underline;
}
.btn-logout {
	height: 20px;
	padding: 0px 12px;
	font-size: 12px;
	color: #343a40;
}
p.btn-logout {
	margin-bottom: 0;
	padding-left: 0;
	padding-top: 2px;
	vertical-align: center;
	color: #343a40;
}
.lock {
	height: 12px;
	position: relative;
	bottom: 2px;
	margin-left: 10px;
}
.no-pad-left {
	padding-left: 0 !important;
}
.consult-timer-box {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row-reverse;
	    flex-direction: row-reverse;
	gap: 1rem;
	position: absolute;
	right: 1rem;
}
.timer-box {
	border-width: 1px;
	border-color: rgba(255, 255, 255, 0.2);
	border-style: solid;
	border-radius: 4px;
	padding-left: 0.5rem;
	padding-right: 0.5rem;
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: center;
	    align-items: center;
	gap: 1rem;
	min-width: 10rem;
	background: rgba(255, 255, 255, 0.05);
}
.container-welcome {
	background: #ffffff;
	min-height: 100%;
	padding: 0;
	border-radius: 1rem;
}
.container-welcome .welcome-wrap {
    padding: 70px;
    padding-bottom: 30px;
}
.container-welcome .welcome-wrap .h1 {
    font-size: 50px;
    margin-top: 0;
}
.container-welcome .welcome-wrap .welcome-question {
    margin-bottom: 20px;
    font-size: 16px;
}
.container-welcome .welcome-wrap select.form-control {
    width: 400px;
    border-radius: 18px;/* border-top-right-radius: 18px;
			border-top-left-radius: 18px; */
}
.container-welcome-footer {
	padding: 0;
	background-color: #f8faff; /* Off-white background */
	border-top: 1px solid #e0e6ed; /* Light border for separation */
}
.container-welcome-footer .footer-wrap {
		padding: 1.5rem 5%;
	}
.container-welcome-footer .footer-wrap ul {
			font-weight: 500;
			list-style-type: none;
			padding-left: 0;
			display: -ms-flexbox;
			display: flex;
			-ms-flex-direction: row;
			    flex-direction: row;
			-ms-flex-pack: center;
			    justify-content: center;
			gap: 4rem;
			margin: 0;
		}
.container-welcome-footer .footer-wrap ul li {
				margin: 0;
			}
/* Applying the navy color to the links */
.container-welcome-footer .footer-wrap ul a {
				text-decoration: none;
				transition: text-decoration 0.2s ease;
			}
/* Adding a simple hover effect */
.container-welcome-footer .footer-wrap ul a:hover {
					text-decoration: underline;
				}
iframe {
	/*border:3px solid #ddd;*/
	box-shadow: 0 0 3px 0px rgba(0,0,0,0.3);
	margin: 0 auto;
	display: block;
}
.close-btn {
	position: absolute;
	right: 1em;
	top: 0.5em;
	background: transparent;
	border: none;
	font-size: 1.2em;
	color: inherit;
	cursor: pointer;
}
/* =================================================================== */
/* ! Appointment list downloads (calendar day header)
/* =================================================================== */
.appointment-list-downloads {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 0.75rem;
	margin-right: 0.5rem;
}
.appointment-list-downloads a {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 16px;
    height: 16px;
    line-height: 1;
    color: #0035d2;
}
.appointment-list-downloads i {
    font-size: 15px;
}
.appointment-list-downloads img {
    display: block;
}
.container-refer, .container-dashboard {
	background-color: #ffffff;
	padding: 10px;
	/*padding-bottom: 20px;*/
	margin-bottom: 20px;
	border-radius: 1rem;
}
.to-top {
	position:fixed;
	bottom: 4em;
	right: 4em;
	/* padding: 5px; */
	/* border: 1px solid #ccc; */
	/* background: red; */
	/* color: white; */
	font-weight: bold;
	cursor: pointer;
	/* display: none; */
  }
.container-dashboard {
	background-color: #ffffff;
	border-radius: 1rem;
}
.refer-nav {
	height: 100px;
	background-color: #ebecea;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: distribute;
	    justify-content: space-around;
	-ms-flex-align: center;
	    align-items: center;
}
.view-wrap {
	padding: 25px;
	padding-top: 0;
}
hr.subtitle-line-break {
	border-top-color: #bccad2;
}
hr.cyan {
	border-top-color: #00bcd4;
	border-top-width: 1px;
}
/* =================================================================== */
/* ! Impact on life review (answers still inside the validity window)
/* =================================================================== */
.impact-review .impact-review-answers {
    width: 100%;
    max-width: 700px;
}
.impact-review .impact-review-answers td {
    border-bottom: 1px solid #e0e6ed;
    padding: 10px 0;
}
.impact-review .impact-review-answers .impact-review-question {
    padding-right: 20px;
}
.impact-review .impact-review-answers .impact-review-answer {
    text-align: right;
    white-space: nowrap;
}
.impact-review .impact-review-actions button {
    width: 180px;
}
.impact-review .impact-review-actions button:first-child {
    margin-right: 20px;
}
.refer-nav-animation {
	height: 100px;
	background-color: #ebecea;
	/*background-color: #EBECEA;*/
	/*background-color: pink;*/
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	-ms-flex-pack: center;
	    justify-content: center;


}
/*align-items: center;*/
.refer-nav-animation .word-wrapper {/*background: lightblue;*/
    padding: 0 140px;
    padding: 0 100px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    margin-bottom: 5px;
}
.refer-nav-animation .word-wrapper p {
    margin-bottom: 0;
}
.refer-nav-animation .animation-outter-wrapper {
    margin: 0 140px;
    position: relative;
    overflow: hidden;
    height: 6px;
    background: #D2D3D5;
}
.refer-nav-animation .animation-outter-wrapper .prog {
    position: absolute;
    z-index: 2;
    width: 100%;
    height: auto;
}
.refer-nav-animation .animation-outter-wrapper .indicator {
    position: absolute;
    background: linear-gradient(90deg, #0035d2 0%, #0035d2 90%, #00bcd4 98%, #00bcd4 100%);
    height: 6px;
    width: 100%;
    left:0;
    top:0;
    transition: all 1.5s ease;
    transform: translateX(-100%);/*border-radius: 50%;*/
    border-top-right-radius: 10px 10px;
    border-bottom-right-radius: 10px 10px;
}
.refer-nav-animation .animation-outter-wrapper .indicator.search {
    transform: translateX(-95%) !important;
}
.refer-nav-animation .animation-outter-wrapper .indicator.examination {
    transform: translateX(-50%);
}
.refer-nav-animation .animation-outter-wrapper .indicator.impact, .refer-nav-animation .animation-outter-wrapper .indicator.complete {
    transform: translateX(0%);
    border-top-right-radius: 0px 0px;
    border-bottom-right-radius: 0px 0px;
}
.search-wrap {
}
.search-form {
	padding-top: 10px;
}
/* padding-bottom: 10px; */
.search-form .form-group {
    position: relative;
}
.search-form .form-group .form-control {
    font-size: 12px !important;
    border-radius: 0;
    box-shadow: none;
    border-radius: 20px;
    color: #0035d2;
    border: 1px solid #0035d2;
}
.search-form .form-group .form-control:focus {
    box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102,175,233,.6);
}
.search-form .form-group label {
    margin-right: 10px;
}
.search-form .form-group-lastName input {
    width: 250px;
}
.search-form .form-group-DOB {/* margin-bottom: 1rem; */
}
/* margin-left: 50px; */
.search-form .form-group-DOB .form-control {
    width: 80px;
}
.search-form .form-group-DOB .form-control:nth-child(3) {
    margin: 0 3px;
}
.search-form .form-group-buttons {/*position: relative;*/
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    float: right;
    margin-right: 0;
    position: relative;
    top: -10px;
}
.search-form .form-group-buttons button:first-child {
    margin-bottom: 10px;
}
.search-form .form-group-search-buttons {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 4rem;
}
.search-results table {
    margin-bottom: 0;
}
.search-results table tr:first-child {
    background-color: #ffffff !important;
}
.search-results table tr th {
}
.search-results-v2 table {
    margin-bottom: 0;
}
.search-results-v2 table tr:first-child {
}
.search-results-v2 table tr th {
}
.table-striped > tbody > tr:nth-of-type(even) {
	/* background-color: $paleBlue; */
	background-color: #ffffff;
}
.table-striped > tbody > tr:nth-of-type(odd) {
	background-color: #ffffff;
}
.table-blue-striped > tbody > tr:nth-of-type(even) {
	background-color: #f2f6fb;
}
.table-blue-striped > tbody > tr:nth-of-type(odd) {
	background-color: #ffffff;
}
.table-hover > tbody > tr:hover {
	background-color: #0035d2;
}
.table-hover > tbody > tr:hover td {
    color: #ffffff;
}
.table-no-border {
	border-width: 0px;
	border-top-width: 0.1em;
	border-top-color: #0035d2;
}
.table-no-border th {
    color: #0035d2;
    font-family: 'Gordita Heavy';
}
.table-no-border > tbody > tr[disabled] td {
	filter: blur(1px);
	pointer-events: none;
  }
.filter-dropdown {
	color: #0035d2;
    font-size: 12px;
}
.filter-select {
	border-radius: 20px;
	box-shadow: none;
	// color: #343a40;
	color: #0035d2;
	font-size: 12px;
	border: 1px solid #0035d2;
}
.search-label {
	color: #0035d2 !important;
}
.or-line {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: center;
	    align-items: center;
	margin-top: -1rem;
	width: 100%;
}
.or-seperator {
	width: 100%;
	margin-top: -5px;
	margin-bottom: 0px;
	border-color: #0035d2;
}
.address-icon {
	width: 2rem; 
	height: 2rem;
	margin-top: -0.5rem;
}
.score_text {
	color: #0035d2;
	font-family: 'Gordita Light Italic';
}
.flex-column-layout {
	display: -ms-flexbox !important;
	display: flex !important;
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 0.5rem;
}
.lastname-input {
	width: 250px !important;
	margin-right: 1rem;
}
.flex-row-layout {
	display: -ms-flexbox !important;
	display: flex !important;
	-ms-flex-direction: row;
	    flex-direction: row;
	gap: 0.5rem;
	-ms-flex-align: baseline;
	    align-items: baseline;
}
.hyper-link {
	color: #0035d2;
	text-decoration: underline;
	cursor: pointer;
	margin-left: 1rem;
}
.highlight-row {
	background-color: #0035d2;
	color: white;
	cursor: pointer !important;
}
/* Navy on the navy highlight otherwise. */
.highlight-row .score_text {
    color: #ffffff;
}
.normal-row {
	background-color: white;
	color: #0035d2;
	cursor: pointer !important;
}
.modal-backdrop.am-fade {
	background: rgba(10, 37, 64, 0.65);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	opacity: 1;
	transition: opacity 0.3s ease;
}
.modal-backdrop.am-fade.ng-enter {
    opacity: 0;
}
.modal-backdrop.am-fade.ng-enter.ng-enter-active {
    opacity: 1;
}
.modal-backdrop.am-fade.ng-leave {
    opacity: 1;
}
.modal-backdrop.am-fade.ng-leave.ng-leave-active {
    opacity: 0;
}
.modal-dialog {
	border: 0;

}
.modal-dialog .modal-content {
    border: none;
    outline: none;
    border-radius: 16px;
    background-color: #ffffff;
    color: #333333;
    box-shadow: rgba(0, 0, 0, 0.4);
    overflow: hidden;
}
.modal-dialog .modal-content .dismiss {
    position: absolute;
    z-index: 10;
    top: 1rem;
    right: 1rem;
    font-size: 2.2rem;
    font-weight: 300;
    color: #888888;
    background: none;
    border: none;
    opacity: 0.7;
    cursor: pointer;
    transition: all 0.2s ease;
}
.modal-dialog .modal-content .dismiss:hover {
    opacity: 1;
    color: #333333;
    transform: rotate(90deg);
}
.modal-dialog.modal-center {
    margin: 0;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
.my-modal-header {
	padding: 1.5rem 2rem;
	background-color: #f8faff;
	border-bottom: 1px solid #e0e6ed;
}
.my-modal-body {
	padding: 2.5rem 2rem;
}
/* Lets the datepicker pop-up extend past the modal edge. .modal-content normally clips its
   children to its rounded corners, so the header and footer round their own outer corners here. */
.diagnosis-modal-content {
	overflow: visible !important;
}
.diagnosis-modal-content .my-modal-header {
    border-radius: 16px 16px 0 0;
}
.diagnosis-modal-content .my-modal-footer {
    border-radius: 0 0 16px 16px;
}
/* The date-of-onset input is readonly only so the datepicker owns its value; Bootstrap greys
   readonly inputs as if disabled, which reads as "not editable". Keep it looking like a field. */
.diagnosis-edit-form .form-control[readonly] {
    background-color: #ffffff;
    color: #333333;
    cursor: pointer;
}
/* Save, with the bin beside it, on the right - Cancel stays on the left as in every modal footer. */
.diagnosis-edit-form .diagnosis-edit-footer-end {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
/* Remove: a small red bin to the right of Save, the same height. It asks in place. */
.diagnosis-edit-form .my-modal-footer .btn.btn-remove-diagnosis {
    width: auto;
    -ms-flex-item-align: stretch;
        -ms-grid-row-align: stretch;
        align-self: stretch;
    padding: 4px 10px;
    font-size: 14px;
    border: none;
    background-color: #d9534f;
    color: #ffffff;
    transition: all 0.3s ease;
}
.diagnosis-edit-form .my-modal-footer .btn.btn-remove-diagnosis:hover, .diagnosis-edit-form .my-modal-footer .btn.btn-remove-diagnosis:active, .diagnosis-edit-form .my-modal-footer .btn.btn-remove-diagnosis:focus {
    background-color: #a94442;
    color: #ffffff;
    outline: 0;
}
/* The question on the left, the answers together on the right - wrapping as a pair if narrow. */
.diagnosis-edit-form .confirm-remove-diagnosis {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    color: #a94442;
}
.diagnosis-edit-form .confirm-remove-diagnosis .confirm-remove-diagnosis-text i {
    margin-right: 4px;
    color: #d9534f;
}
.diagnosis-edit-form .confirm-remove-diagnosis-actions {
    display: -ms-inline-flexbox;
    display: inline-flex;
    gap: 10px;
    margin-left: auto;
}
.diagnosis-edit-form .my-modal-footer .confirm-remove-diagnosis .btn {
    width: auto;
    padding: 4px 18px;
    font-size: 12px;
}
.diagnosis-edit-form .my-modal-footer .btn.btn-confirm-remove-diagnosis {
    border: none;
    background-color: #d9534f;
    color: #ffffff;
}
.diagnosis-edit-form .my-modal-footer .btn.btn-confirm-remove-diagnosis:hover {
    background-color: #a94442;
    color: #ffffff;
}
.diagnosis-edit-form .my-modal-footer .btn.btn-confirm-remove-diagnosis:disabled {
    opacity: 0.6;
}
/* The footer swaps its buttons with ng-if, and ngAnimate holds a leaving element on screen for as
	   long as its CSS transition runs - so for a moment both sets would show. !important to beat .btn's own. */
.diagnosis-edit-form .my-modal-footer .ng-enter, .diagnosis-edit-form .my-modal-footer .ng-leave {
    transition: none !important;
}
.my-modal-footer {
	border-top: 1px solid #e0e6ed;
	padding: 30px 30px;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: justify;
	    justify-content: space-between;

}
.my-modal-footer .btn {
    width: 180px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.my-modal-footer--right {
	-ms-flex-pack: end;
	    justify-content: flex-end;

}
.my-modal-footer--right .btn + .btn {
    margin-left: 1rem;
}
.my-modal-footer--center {
	-ms-flex-pack: center;
	    justify-content: center;

}
.my-modal-footer--center .btn {
    width: 100%;
    max-width: 220px;
}
.form-control:focus {
	border-color: #00bcd4;
	outline: 0;
	box-shadow: 0 0 0 3px rgba(0, 188, 212, 0.25);
}
.override-modal .form-control {
    border-radius: 8px;
}
.override-modal .additional-message {
    position: relative;
}
.override-modal .additional-message .message {
    padding: 10px;
}
.override-modal .additional-message .count-remaining {
    position: absolute;
    font-size: 0.75rem;
    bottom: 5px;
    right: 8px;
    color: #6c757d;
}
.override-modal .select-override, .override-modal .message {
    font-size: 1rem;
}
.table-details {
	width: 100%;
	max-width: 600px;
	border-collapse: collapse;
}
.table-details td {
    border: none !important;
    font-weight: 400;
    padding: 0.5rem;
}
.table-details td:first-child {
    width: 40%;
    text-align: right;
    color: #6c757d;
    padding-right: 1rem;
}
.table-details td:last-child {
    width: 60%;
    font-weight: 500;
    color: #333333;
}
.double-line-header {
	padding: 1rem 0;
	height: auto;
	min-height: 80px;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	-ms-flex-pack: center;
	    justify-content: center;
	gap: 0.25rem;
}
.icon-wrap-success {
	height: 100px;
	text-align: center;
	margin-bottom: 1rem;

}
.icon-wrap-success img {
    height: 100%;
}
.limit-width {
	max-width: 450px;
	margin: 0 auto;
}
.limit-width-wide {
	max-width: 650px;
	margin: 0 auto;
}
.form-group-override-select {
	margin: 0 auto;
	max-width: 700px;
}
.help-modal .subtitle-line-break {
    margin: 10px 0;
}
.help-modal .q-header-flex {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
}
.help-modal .q-header-flex .h5 {
    max-width: 85%;
}
.help-modal .q-header-flex .q-icon-wrap {
    height: 35px;
    overflow: hidden;
    cursor: pointer;
}
.help-modal .q-header-flex .q-icon-wrap img {
    height: 100%;
}
.q-icon-wrap {
	transition: transform 0.3s ease;
}
.rotate {
	transform: rotate(-45deg);
}
.q-body-wrap {
	display: none;
	padding-right: 60px;
	color: #6c757d;
}
.my-modal-body-help {
	max-width: 800px;
	margin: 0 auto;
}
.table-contact {
	margin-bottom: 0;
}
.table-contact td {
    border: 0 !important;
    font-weight: 400;
    color: #6c757d;
    padding: 3px 0 !important;
}
.table-contact td:first-child {
    width: 123px;
}
.contact-name {
	margin-top: 20px;
	margin-bottom: 10px;
	font-weight: 600;
}
.morph-modal {
	color: #6c757d;

}
.morph-modal .form-control {
    border-radius: 8px;
    color: #333333;
    font-weight: 400;
    font-size: 1rem;
}
.morph-modal .form-control option {
    color: #333333;
}
.morph-modal .lens-wrap {
    margin-bottom: 5px;
}
.morph-modal .lens-wrap img {
    width: 100%;
    border-radius: 8px;
}
.morph-modal .lens-wrap-1 {
    margin-top: 20px;
}
@media (min-width: 992px) {
	.modal-lg-morph {
		width: 984px;
	}
}
.referral-radio-wrap {
	margin-top: 15px;

}
.referral-radio-wrap .radio-inline .marker {
    position: relative;
    left: -3px;
    top: 0px;
}
.referral-radio-wrap .form-group {
    margin-bottom: 10px;
}
.referral-radio-wrap input[type="radio"] {
    margin-top: 1px;
}
.referral-radio-wrap .help-block {
    position: absolute;
    top: 10px;
}
/* Leaving the patient dashboard mid-transcription: two choices, centred side by side. */
.leave-transcription-modal .my-modal-footer {
	-ms-flex-pack: center;
	    justify-content: center;
	gap: 15px;
}
.notification-body {
	max-width: 450px;
	margin: 0 auto;
	font-weight: 400;
	color: #6c757d;

}
.notification-body ul {
    padding-left: 0;
    list-style-type: none;
}
.notification-body ul > li > ul {
    padding-left: 40px;
}
.notification-body li {
    margin-bottom: 10px;
}
.hidden {
	display: none;
}
.flex-double-rows {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
	padding-top: 1em !important;
	border-top-width: 0px !important;
}
.pharmacy-option {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.pharmacy-title {
	padding-top: 0.1em;
	font-weight: 500;
}
.pharmacy-address {
	padding-top: 0.1em;
	padding-bottom: 0.1em;
	font-size: 0.9rem;
	color: #6c757d;
}
.md-dialog-customer-container {
	border: none;
	outline: none;
	border-radius: 16px;
	background-color: #ffffff;
	color: #333333;
	box-shadow: rgba(0, 0, 0, 0.4);
	overflow: hidden;
}
.md-dialog-customer-container .dialog-toolbar {
    -ms-flex-pack: center;
        justify-content: center;/* center all items */
    position: relative;
}
.md-dialog-customer-container .dialog-title {
    -ms-flex: none;
        flex: none;/* prevent stretching */
    text-align: center;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}
.md-dialog-customer-container .dialog-subtitle {
    -ms-flex: none;
        flex: none;
    font-size: 12pt;/* prevent stretching */
    text-align: center;
    position: absolute;
    width: 100%;
    left: 50%;
    top: 2.5rem;
    transform: translateX(-50%);
}
.md-dialog-customer-container .dialog-toolbar md-button {
    position: absolute;
    right: 0;
}
.md-dialog-customer-container .dismiss {
    position: absolute;
    z-index: 10;
    top: 1rem;
    right: 1rem;
    font-size: 2.2rem;
    font-weight: 300;
    color: #888888;
    background: none;
    border: none;
    opacity: 0.7;
    cursor: pointer;
    transition: all 0.2s ease;
}
.md-dialog-customer-container .dismiss:hover {
    opacity: 1;
    color: #333333;
    transform: rotate(90deg);
}
.md-dialog-customer-container .dialog-title {
    color: #0a2540 !important;
    font-size: 1.65rem;
    font-weight: 700;
    margin: 0;
    text-transform: none;
}
/* =================================================================== */
/* ! NHI suggested patients dialog (modal.select-patient-v2)
/* =================================================================== */
.nhi-select-dialog {
	min-width: 80%;
	/* Its height otherwise follows the table, so a search with one or two results left the record
	   preview a few hundred pixels tall. */
	min-height: min(640px, 80vh);
	overflow: hidden;
}
/* The record preview slides over the table and is only as tall as the dialog: its details scroll,
	   and its SELECT button stays in view below them. */
.nhi-select-dialog md-sidenav {
    min-width: 60%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    overflow: hidden;
}
.nhi-select-dialog md-sidenav md-content {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}
.nhi-select-dialog .nhi-preview-title {
    color: #0a2540;
}
.register-edit-form .col-sm-3 {
    padding-right: 0;
    padding-left: 0;
}
.register-edit-form label.control-label {
    padding-top: 8px;
}
.register-edit-form .form-control {
    font-size:12px !important;
    border-radius: 0;
    box-shadow: none;
}
.register-edit-form .dob-group {
    display: -ms-flexbox !important;
    display: flex !important;
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-pack: justify;
        justify-content: space-between;
}
.register-edit-form .dob-group .form-control {
    width: 31%;
    margin: 0;
}
.register-edit-form .dob-group span.help-block {
    position: absolute;
    top: 100%;
    margin-top: 0;
}
.register-edit-form .dob-group .form-control:nth-child(2) {/*margin: 0 15px;*/
}
.register-edit-form .radio-inline {
    width: 80px;
}
/*text-align: center;*/
.register-edit-form .radio-inline input {
    position: relative;/*right: 10px;*/
}
.register-edit-form .radio-inline .marker {
    position: relative;
    left: 7px;
    top: -1px;
}
.register-edit-form .ethnicity-group {
}
.register-edit-form-v2 .col-sm-3 {
    padding-right: 0;
    padding-left: 0;
}
.register-edit-form-v2 label.control-label {
    padding-top: 8px;
}
.register-edit-form-v2 .form-control {
    font-size:12px !important;
    border-radius: 0;
    box-shadow: none;
}
.register-edit-form-v2 .dob-group {
    display: -ms-flexbox !important;
    display: flex !important;/* flex-direction: row; */
    -ms-flex-pack: justify;
        justify-content: space-between;
}
.register-edit-form-v2 .dob-group .form-control {
    width: 31%;
    margin: 0;
}
.register-edit-form-v2 .dob-group span.help-block {
    position: absolute;
    margin-top: 3em;
}
.register-edit-form-v2 .dob-group .form-control:nth-child(2) {/*margin: 0 15px;*/
}
.register-edit-form-v2 .radio-inline {
    width: 80px;
}
/*text-align: center;*/
.register-edit-form-v2 .radio-inline input {
    position: relative;/*right: 10px;*/
}
.register-edit-form-v2 .radio-inline .marker {
    position: relative;
    left: 7px;
    top: -1px;
}
.register-edit-form-v2 .ethnicity-group {
}
.animate-show-hide.ng-hide {
	opacity: 0;
}
.animate-show-hide.ng-hide-add, .animate-show-hide.ng-hide-remove {
	transition: all ease 0.3s;
}
.animate-me {
	opacity: 1;
}
.checkbox-inline {
	min-width: 25%
}
.form-group-ethnicity {
	margin-bottom: 9px;
}
.form-group-ethnicity label.checkbox-inline:first-child {
    margin-left: 10px;
}
.form-group-ethnicity label.checkbox-inline span.marker {
    position: relative;
    bottom:-2px;
}
.form-group-ethnicity .checkbox-inline-other {
    position: relative;
    left: -4px;
}
.form-group-ethnicity .col-sm-9 {
    position: relative;
}
.form-group-ethnicity span.help-block {
    position: absolute;
    top:100%;
}
/*Google Places API to bring autocomplete higher z-index than bootstrap modal*/
.pac-container {z-index: 10000 !important;}
.form-impact .form-group {
    margin-bottom: 25px;
}
.form-impact label.control-label {
    text-align: left !important;
}
.form-impact label.control-label .question-mark {
    position: relative;
    display: inline-block;
    height: 20px;
    bottom:2px;
    margin-right: 10px;
}
.form-impact label.control-label .question-mark img {
    height: 100%;
    overflow:hidden;
}
.form-impact .radio-flex-wrap {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
}
.form-impact .radio-flex-wrap .radio-inline {
    width: 80px;
    text-align: center;
}
.form-impact .radio-flex-wrap .radio-inline .marker {
    position: relative;
    top:2px;
}
.form-impact .control-label-left {
    padding-right: 0;
}
.form-impact .form-group-header .radio-flex-wrap .radio-inline {
    text-align: center;
    padding-left: 0;
    padding-right: 0;
    width: 80px;
}
.life-quality .form-group.has-error {
    outline: 1px solid #a94442;
    padding-top: 16px;
    padding-bottom: 16px;
}
.life-quality .form-group.has-error .radio-flex-wrap {/*padding-bottom: 6px;*/
    margin-bottom: 10px;
    position: relative;
}
.life-quality .form-group.has-error .radio-flex-wrap .help-block {
    position: absolute;
    top: 240%;/* bottom: -45px; */
    left: 80%;/* width: 100%;
				text-align: center; */
}
.form-footer {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: end;
	    justify-content: flex-end;
}
.form-footer .submit-wrap-flex {
    padding: 20px 30px 20px 50px;
    border-radius: 50px;
    background: #ffffff;/*background: linear-gradient(270deg, $purple, $navy) !important;*/
    display: -ms-flexbox;
    display: flex;
}
.form-footer .submit-wrap-flex .note-wrap {
    width: 400px;
    margin-right: 20px;
}
.form-footer .submit-wrap-flex .note-wrap p {
    margin: 0;
}
.form-footer .submit-wrap-flex .note-wrap p:first-child {
    margin-bottom: 10px;
}
.form-footer .submit-wrap-flex .button-wrap {
    width: 200px;
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
}
.form-footer .showing-warning {
    background: linear-gradient(270deg, #9C27B0, #0035d2) !important;
}
.form-login {
	width: 280px;
	padding-top: 15px;
}
.form-login .form-group {
    margin-bottom: 30px;
}
.form-login .form-group input {
    border-radius: 24px;
}
.form-login .form-group:last-child {
    margin-bottom: 15px;
}
.form-login button {
    font-size: 12px;
}
.form-login .btn-login {
    float: left;
    width: 34%;
    padding: 6px 18px;
}
.form-login .btn-lost {
    color: #343a40;
    float: right;
    width: 60%;
    transition: background-color .1s linear;
}
.form-login .btn-lost:hover, .form-login .btn-lost:active {
    color: #343a40;
    background-color: #ffffff;
}
form[name=search] span.help-block {
    text-align: center;
    position: absolute;
    width: 100%;
}
.has-success .form-control {
	border-color: #00bcd4;
}
.has-success .form-control:focus {
    border-color: #00bcd4;
    box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 4px #00bcd4;
}
.has-error .form-control {
	border-color: #a94442;
}
.has-error .form-control:focus {
    border-color: #a94442;
}
form[name=loginForm] .help-block {
    text-align: left;
    position: absolute;
    color: #ffffff;
    margin-bottom: 0;
    padding-left: 13px;
}
label {
	color: #343a40 !important;
}
form[name=setPassword] .form-control {
    border-radius: 0;
}
form[name=setPassword] .help-block {
    position: absolute;
}
form[name=formImpact] .form-group.has-error {
    outline: 1px solid #a94442;
    padding-top: 2px;
}
form[name=formImpact] .form-group.has-error .radio-flex-wrap {/*padding-bottom: 6px;*/
    margin-bottom: 10px;
    position: relative;
}
form[name=formImpact] .form-group.has-error .radio-flex-wrap .help-block {
    position: absolute;/*top: 100%;*/
    bottom: -40px;
    width: 100%;
    text-align: center;
}
form[name=exam] span.help-block {
    position: absolute;
    white-space: nowrap;
    margin-top: 0;
}
.btn-switch {
    position: relative;
    display: block;
    width: 50px;
    height: 28px;
    cursor: pointer;
    background-color: #F27878;
    border: 2px solid #F27878;
    border-radius: 40px;
}
.btn-switch .btn-switch-circle {
    position: absolute;
    top: 0;
    left: 0;
    display: block;
    height: 25px;
    width: 25px;
    background-color: #fff;
    border-radius: 40px;
}
.btn-switch--on {
    background-color: #80CDBE;
    border: 2px solid #80CDBE;
}
.btn-switch--on .btn-switch-circle--on {
    left: auto;
    right: 0;
}
.surgery-agreement-form-footer {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: end;
	    justify-content: flex-end;
}
.surgery-agreement-form-footer .submit-wrap-flex {
    padding: 12px 15px 12px 25px;
    border-radius: 50px;
    background: #ffffff;/*background: linear-gradient(270deg, $purple, $navy) !important;*/
    display: -ms-flexbox;
    display: flex;
}
.surgery-agreement-form-footer .submit-wrap-flex .note-wrap {
    width: 400px;
    margin-right: 20px;
}
.surgery-agreement-form-footer .submit-wrap-flex .note-wrap p {
    margin: 0;
}
.surgery-agreement-form-footer .submit-wrap-flex .note-wrap p:first-child {
    margin-bottom: 10px;
}
.surgery-agreement-form-footer .submit-wrap-flex .button-wrap {/* width: 200px; */
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
}
.surgery-agreement-form-footer .showing-warning {
    background: linear-gradient(270deg, #9C27B0, #0035d2) !important;
}
.premium-lens-recommend-checkboxes {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: center;
	    align-items: center;
}
.recommended-option-highlight {
	background-color: #e6f2ff;
	color: #007BFF;
	font-weight: bold;
}
.recommended-label {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	background: #0d6efd;
	color: #fff;
	font-size: 1.1rem;
	font-weight: 600;
	padding: 4px 6px;
	text-align: center;
	line-height: 1.2;
	border-radius: 4px 4px 0 0;
	pointer-events: none;
	margin-bottom:0.5rem;
}
/* One-time-code boxes for the MFA config and MFA verify modals. The login page and the patient
   contact verification page each have their own copy, scoped under .modern-login-page and
   .patient-verification-form, because neither is a modal. */
.create-modal .verify-input-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: center;
	    justify-content: center;
	gap: 0.75rem;
	margin: 2rem auto;
}
.create-modal .verify-input-container input {
    width: 45px;
    height: 55px;
    font-size: 20px;
    text-align: center;
    padding: 0.5rem;
    font-weight: 600;
    color: #0035d2;
}
/* Verified / unverified pill shown beside the email and mobile fields in patient details. */
.contact-verified-pill {
	display: inline-block;
	font-size: 10px;
	font-weight: 600;
	line-height: 1.4;
	padding: 1px 6px;
	border-radius: 8px;
	margin-left: 4px;
	white-space: nowrap;
	/* Status, not a control. The detail - including the date it was verified - is in
	   the tooltip. Matches .comms-verified-icon, which says the same state in the
	   patient header and has carried this affordance since it was written. */
	cursor: help;
}
.contact-verified-pill.is-verified {
    background: #e4f4ea;
    color: #1c7a41;
}
.contact-verified-pill.is-unverified {
    background: #fdeaea;
    color: #a94442;
}
.popover {
	outline:none;
	max-width: 100%;
	padding: 0;
	padding-bottom: 10px;
}
.popover h3.popover-title {
    background: #00bcd4;
    color: #ffffff;
    font-size: 12px;
}
.popover .popover-content {
    font-size: 12px;
}
.popover-normal {
	outline:none;
	max-width: 12rem;
	padding: 0;
}
/* padding-bottom: 10px; */
.popover-normal h3.popover-title {
    background: #00bcd4;
    color: #ffffff;
    font-size: 12px;
}
.popover-normal .popover-content {
    font-size: 12px;
}
.am-popover {
	opacity: 1;
	transform: translateX(0px);
}
/*transition: all .15s ease-in;*/
.am-popover.ng-enter {
    opacity: 0;
}
/*transform: translateX(-30px);*/
.am-popover.ng-enter.ng-enter-active {
}
.am-popover.ng-leave {
    opacity: 1;
}
.am-popover.ng-leave.ng-leave-active {
    opacity: 0;
}
.popover.info-detail-popover {
	max-width: 26rem;
	width: auto;
	z-index: 1100;
}
.popover.info-detail-popover .popover-content {
	word-wrap: break-word;
	overflow-wrap: break-word;
	color: #343a40 !important;
}
.popover.info-detail-popover .popover-content label {
    color: #333333 !important;
    margin-bottom: 0;
}
.info-popover-comment {
	white-space: pre-wrap;
	word-break: break-word;
	max-width: 24rem;
}
.diagnosis-info-popover-anchor {
	pointer-events: none;
}
.wider-popover {
	max-width: 24rem;
	opacity: 1;
	transform: translateX(12rem);
}
/*transition: all .15s ease-in;*/
.wider-popover.ng-enter {
    opacity: 0;
}
/*transform: translateX(-30px);*/
.wider-popover.ng-enter.ng-enter-active {
}
.wider-popover.ng-leave {
    opacity: 1;
}
.wider-popover.ng-leave.ng-leave-active {
    opacity: 0;
}
/* .popover has no max-width of its own, so a sentence renders as one long line. */
.popover.contact-verified-popover {
	max-width: 22rem;
}
/* Insurance summary chips shown in the patient header, with a hover popover
   on the "+N" pill that reveals the insurers not shown inline. */
.insurance-summary {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	-ms-flex-align: center;
	    align-items: center;
	gap: 3px;
}
.insurance-summary .ins-chip {
	display: inline-block;
	border-radius: 11px;
	padding: 1px 8px;
	font-size: 11.5px;
	font-weight: 600;
}
.insurance-summary .ins-more {
	position: relative;
	display: inline-block;
	border-radius: 11px;
	padding: 1px 7px;
	font-size: 11.5px;
	font-weight: 700;
	background: #E8F4F8;
	color: #0035d2;
	cursor: default;
}
.insurance-summary .ins-pop {
	display: none;
	position: absolute;
	bottom: calc(100% + 9px);
	left: 50%;
	transform: translateX(-50%);
	z-index: 1050;
	min-width: 150px;
	padding: 10px 11px;
	background: #fff;
	border: 1px solid #dce3ee;
	border-radius: 10px;
	box-shadow: 0 10px 28px rgba(26, 41, 66, .18);
	white-space: normal;
	text-align: left;
}
.insurance-summary .ins-more:hover .ins-pop, .insurance-summary .ins-more:focus .ins-pop {
	display: block;
}
.insurance-summary .ins-pop::after {
	content: "";
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX(-50%);
	border: 7px solid transparent;
	border-top-color: #fff;
}
.insurance-summary .ins-pop-h {
	display: block;
	margin-bottom: 7px;
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: .5px;
	text-transform: uppercase;
	color: #7a869a;
}
.insurance-summary .ins-pop-chips {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	gap: 6px;
}
/* Collapsible wrapper used where the picker sits in a crowded form. The header
   doubles as the summary of what is currently selected. */
.insurance-multiselect .ins-collapse {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	gap: 10px;
	width: 100%;
	padding: 7px 11px;
	background: #fff;
	border: 1px solid #dce3ee;
	border-radius: 8px;
	color: #1A2942;
	font-family: inherit;
	font-size: 13px;
	text-align: left;
	cursor: pointer;
}
.insurance-multiselect .ins-collapse:hover, .insurance-multiselect .ins-collapse:focus {
	border-color: #b9c6de;
}
.insurance-multiselect .ins-collapse-text {
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.insurance-multiselect .ins-collapse-caret {
	-ms-flex: 0 0 auto;
	    flex: 0 0 auto;
	width: 0;
	height: 0;
	border-right: 5px solid transparent;
	border-left: 5px solid transparent;
	border-top: 6px solid #5b6576;
	transition: transform .15s ease;
}
.insurance-multiselect .ins-collapse-caret.is-open {
	transform: rotate(180deg);
}
.insurance-multiselect .ins-collapse-body {
	margin-top: 8px;
}
/* A checkbox that sits directly beside its own text, rather than being split
   across the form grid's label and field columns. */
.ins-inline-check {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 8px;
	margin: 0;
	font-weight: normal;
	cursor: pointer;
}
.ins-inline-check input[type="checkbox"] {
	-ms-flex: 0 0 auto;
	    flex: 0 0 auto;
	margin: 0;
}
/* The Payer box on the operation note. Sits in the same blue-box shell as the
   "NHI not set" panel above it, so the two read as one column of prompts. */
.op-note-payer-head {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	gap: 12px;
	margin-bottom: 3px;
}
.op-note-payer-title {
	margin: 0;
	font-size: 15px;
	font-weight: 700;
	color: #0035d2;
}
.op-note-payer-note {
	margin: 0 0 11px;
	font-size: 12px;
	font-style: italic;
	color: #6c757d;
}
.op-note-payer-eye {
	display: block;
	margin-bottom: 5px;
	font-size: 11px;
	font-weight: 700;
	color: #2a307f;
}
.op-note-payer-error {
	margin: 9px 0 0;
	font-size: 12px;
	font-weight: 600;
	color: #a94442;
}
.table-complete th, .table-complete td {
    border-top: 0 !important;
    vertical-align: middle !important;
}
.table-complete th {
    color: #0035d2;
    font-size: 16px;
}
.table-complete td:nth-child(1) {/*background: pink;*/
    color: #343a40;
    font-size: 14px;/*width: 50%;*/
}
.table-complete td:nth-child(2) {
    text-align: center;
    height: 60px;
    width: 160px;
}
.table-complete td:nth-child(2) img {
    height: 100%;
    overflow: hidden;
}
.table-complete td:nth-child(3) {/*background: pink;*/
    width: 240px;
}
.table-complete th:nth-child(2) {
    text-align: center;
    width: 200px;
}
.table-complete .indent {
    padding-left: 30px;
    font-size: 12px;
    display: inline-block;
}
.complete-flex-wrap {
	display:-ms-flexbox;
	display:flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
}
.question-wrap {
	height: 44px;
	width: 44px;
	border: 2px solid gold;
	display: inline-block;
	border-radius: 50%;
	position: relative;
}
.question-wrap span {
    color: gold;
    font-size: 16px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
.patient-summary-details {
	font-size: 10px;
}
.doc-flex-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	max-height: 400px;
	margin-bottom: 15px;
    overflow-y: auto;
    border: 1px solid lightgrey;
    padding: 5px;
	border-radius: 5px;
}
.doc-flex-wrap.doc-warning {
    background-color: rgba(255, 182, 193, 0.4);
}
.doc-flex-wrap .doc-card {
    border: 1px solid #ddd;
    width: 32.5%;
    margin-bottom: 8px;
    padding: 10px;
    cursor: pointer;
    border-radius: 6px;
    background-color: #fff;
}
.doc-flex-wrap .doc-card:hover {
    box-shadow: 0px 0px 3px 0px rgba(0,0,0,0.3);
}
.doc-flex-wrap .doc-card.selected {
    background-color: #f2f6fb;
}
.doc-flex-wrap .doc-card.doc-card-ghost {
    border:none;
    height: 0;
    padding: 0;
    margin: 0;
}
.doc-flex-wrap .doc-card p {
    margin-bottom: 0;
}
.selected-doc-wrap {
	text-align: center;
	background-color: #f2f6fb;
	border: 1px solid #bccad2;
	padding: 10px;
	margin-bottom: 10px;
	border-radius: 6px;
}
.doctor-filter-group input[type=radio] {
    top: -2px;
}
.doctor-filter-group .radio-inline:first-child {
    margin-left: 15px;
}
/* =================================================================== */
/* ! Impact on life age (how old the answers behind the public score are)
/* =================================================================== */
.impact-review-wrap {
	margin-top: 8px;
	max-width: 260px;
}
.impact-review-wrap .impact-review-date {
    color: #343a40;
    display: block;
    font-size: 11px;
}
/* Answers past the validity window - the public score is pending until the
	   questions are answered again, so this has to read as a prompt, not a note. */
.impact-review-wrap .impact-review-expired {
    color: #856404;
    display: block;
    font-size: 11px;
}
.exam-wrap {

}
.form-exam {
	color: #343a40;
	font-size: 12px;
}
.form-exam select, .form-exam .form-control {
    border-radius: 0;
    box-shadow: none;
    color: #343a40;
    font-size: 12px;
}
.form-exam .form-group-label {
    padding-right: 20px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    margin-bottom: 25px;
}
.form-exam .form-group-label .control-label {
    text-align: right;/*align-self: center;*/
}
.form-exam .snellen {
    display: -ms-flexbox;
    display: flex;/*justify-content: space-between;*/
    padding: 0;
    position: relative;
}
.form-exam .snellen select, .form-exam .snellen .mark-wrap {
    margin-right: 20px;/*width: calc(50% - 60px);*/
    width: 100px;
}
.form-exam .mark-wrap, .form-exam .mark-wrap-deg {
    position: relative;
}
.form-exam .mark-wrap .six-pre, .form-exam .mark-wrap-deg .six-pre {
    position: absolute;
    top:50%;
    transform:translateY(-50%);
    left:-20px;
}
.form-exam .mark-wrap .stripe-post, .form-exam .mark-wrap-deg .stripe-post {
    position: absolute;
    top:50%;
    transform:translateY(-50%);
    right:-15px;
}
.form-exam .mark-wrap .stripe-pre, .form-exam .mark-wrap-deg .stripe-pre {
    position: absolute;
    top:50%;
    transform:translateY(-50%);
    left:-12px;
}
.form-exam .mark-wrap-deg .deg {
    width: 80px;
    padding-left: 6px;
    padding-right: 6px;
}
.form-exam .mark-wrap-deg .stripe-post {
    right: -37px;
}
.check-label {
	position: relative;
}
.check-label .check-span {
    position: relative;
    top: 2px;
}
.lens {
	width: 220px;
}
.lens-label {
	margin-top: 34px;
}
.visual-label {
	margin-top: 70px;
}
.form-group-label-top {
	margin-top: 40px;
}
.col-bin {
	padding-left: 60px;
}
.terms h1 {
    margin: 30px 0;
}
.terms h3 {
    margin-bottom: 15px;
}
.terms p {
    margin-bottom: 15px;
}
.terms a {
    color: #0035d2;
}
.terms .image1 {
    float: left;
    width: 50%;
    margin-right: 10px;
}
.op-header {
	color: #ffffff;
	text-align: center;
	padding: 5px 0;
	margin-bottom: 10px;
}
.op-header h4 {
    font-size: 1em;
}
.navy-text {
	color: #0035d2 !important;
}
.navy-line {
	height: 2px;
	background-color: #0035d2;
	margin-left: 1.5em;
	margin-right: 1.5em;
	margin-top: 1em;
}
.pre-op-form {
	color: #343a40;
	font-size: 12px;
	// background-color: pink;
	padding: 0 20px;
}
.pre-op-form select, .pre-op-form .form-control {
    border-radius: 20px;
    box-shadow: none;
    // color: #343a40;
    color: #0035d2;
    font-size: 12px;
    border: 1px solid #0035d2;
}
.pre-op-form .form-group-label {
    padding-right: 20px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    margin-bottom: 25px;
}
.pre-op-form .form-group-label .control-label {
    text-align: right;
}
.pre-op-form .flex {
    display: -ms-flexbox;
    display: flex;
    padding: 0;
    position: relative;
}
.pre-op-form .flex select, .pre-op-form .flex .input, .pre-op-form .flex .inline-number, .pre-op-form .flex .mark-wrap {
    margin-right: 20px;
    width: 100px;
}
.pre-op-form .mark-wrap, .pre-op-form .mark-wrap-deg {
    position: relative;
}
.pre-op-form .mark-wrap .six-pre, .pre-op-form .mark-wrap-deg .six-pre {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: -20px;
}
.pre-op-form .mark-wrap .stripe-post, .pre-op-form .mark-wrap-deg .stripe-post {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: -15px;
}
.pre-op-form .mark-wrap .stripe-pre, .pre-op-form .mark-wrap-deg .stripe-pre {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: -12px;
}
.pre-op-form .mark-wrap-deg .deg {
    width: 80px;
    padding-left: 6px;
    padding-right: 6px;
}
.pre-op-form .mark-wrap-deg .stripe-post {
    right: -37px;
}
.pre-op-form label {
    color: #0035d2 !important;
}
.pre-op-form .marker {
    position: relative;
    top: 2px;
}
.btn-next {
	width: 120px;
}
.check-label {
	position: relative;
}
.check-label .check-span {
    position: relative;
    top: 2px;
}
.lens {
	width: 220px;
}
.lens-label {
	margin-top: 34px;
}
.visual-label {
	margin-top: 70px;
}
.form-group-label-top {
	margin-top: 40px;
}
.col-bin {
	padding-left: 60px;
}
.pressure-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	max-width: 460px;
}
.pressure-wrap .form-group {
    width: 47%;
}
.half-width {
	max-width: 50%;
}
.quarter-width {
	max-width: 25%;
}
.blue-box {
	border: 1px solid #0035d2;
	padding: 15px;
	background-color: #f2f6fb;
	margin-bottom: 15px;
	border-radius: 8px;
}
.blue-box .header .h4 {
    margin-bottom: 5px;
    margin-top: 0;
}
.eye-heading {
	margin-bottom: 20px;
}
.pre-op-save-wrap {
	min-height: 80px;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
	margin: 20px 0;
}
.pre-op-save-wrap .progression-wrap {
    min-width: 250px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    -ms-flex-align: center;
        align-items: center;
}
.pre-op-save-wrap .progression-wrap .save-progress {
    cursor: pointer;
    margin-right: 20px;
}
.pre-op-save-wrap .progression-alert-wrap {
    width: calc(100% - 280px);
}
.pre-op-save-wrap .progression-alert-wrap .alert {
    margin-bottom: 0;
}
.pre-op-save-wrap .progression-alert-wrap .alert + .alert {
    margin-top: 10px;
}
.stack-vert {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	position: relative;
	top: 2px;
	margin-left: 10px;
}
.stack-vert .radio-inline + .radio-inline {
    margin-left: 0;
    margin-top: 5px;
}
.flex-biometry {
	-ms-flex-align: center;
	    align-items: center;
}
.flex-biometry .control-label {
    margin-right: 15px;
    margin-bottom: 0;
}
.biometry-input {
	width: 100px;
	margin-right: 20px;
}
.axis-wrap {
	position: relative;
}
.axis-times, .axis-deg {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	transform: translateY(-50%);
}
.axis-times {
	right: calc(100% + 6px);
}
.axis-deg {
	left: 110px;
}
.section-label {
	margin-bottom: 10px;
}
.biometry .form-row {
    margin-bottom: 15px;
}
.biometry .left-column {
    width: 28px;
}
.biometry .form-group {
    margin-bottom: 0px;
}
.biometry .help-block {
    position: absolute;
    width: 300px;
    margin-top: 0;
}
.bio-internal-flex {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: center;
	    align-items: center;
}
.table-medication th, .table-medication td {
    border-color: #0035d2 !important;
    vertical-align: middle !important;
}
.table-medication td:last-child {
    text-align: right;
}
.table-medication .remove-med {
    padding: 0;
    margin: 0;
    border: 1px solid #0035d2;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: white;
}
.table-medication .remove-med:hover {
    background-color: #0035d2;
    color: white;
}
.btn-add-allergy {
	height: 34px;
	width: 34px;
	margin: 0;
	padding: 0;
}
.flex-allergy {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
}
.flex-allergy .grow {
    -ms-flex: 1 0;
        flex: 1 0;
    margin-right: 20px;
}
.anaesthetic-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
}
.anaesthetic-wrap .form-group {
    width: 260px;
    margin-right: 20px;
}
.anaesthetic-wrap .help-block {
    position: absolute;
    margin-top: 0;
}
.text-area-wrap {
	position: relative;
}
.text-area-wrap .count-remaining {
    position: absolute;
    font-size: 10px;
    bottom: 0;
    right: 15px;
    color: #0035d2;
}
.diabetes-pop-up-wrap {
	width: 50%;
	position: relative;
}
.retinopathy-pop-up-OD .retinopathy-popup {
    left: calc(100% + 10px);
}
.retinopathy-pop-up-OS .retinopathy-popup {
    right: calc(100% + 10px);
}
.showRetinopathy .retinopathy-popup {
    display: block;
}
.maculopathy-pop-up-OD .maculopathy-popup {
    left: calc(100% + 10px);
}
.maculopathy-pop-up-OS .maculopathy-popup {
    right: calc(100% + 10px);
}
.showMaculopathy .maculopathy-popup {
    display: block;
}
.retinopathy-popup, .maculopathy-popup {
	border: 1px solid #0035d2;
	padding: 15px;
	font-size: 10px;
	color: #0035d2;
	background-color: white;
	width: 480px;
	position: absolute;
	z-index: 1;
	top: 0;
	display: none;
}
.retinopathy-popup .table-bordered, .maculopathy-popup .table-bordered {
    border: none !important;
    margin-bottom: 10px;
}
.retinopathy-popup .table-bordered th, .retinopathy-popup .table-bordered td, .maculopathy-popup .table-bordered th, .maculopathy-popup .table-bordered td {
    border-right: 1px solid #0035d2;
    border-left: 1px solid #0035d2;
}
.retinopathy-popup .table-bordered th:first-child, .retinopathy-popup .table-bordered td:first-child, .maculopathy-popup .table-bordered th:first-child, .maculopathy-popup .table-bordered td:first-child {
    border-left: none;
}
.retinopathy-popup .table-bordered th:last-child, .retinopathy-popup .table-bordered td:last-child, .maculopathy-popup .table-bordered th:last-child, .maculopathy-popup .table-bordered td:last-child {
    border-right: none;
}
.retinopathy-popup .table-bordered tr:last-child td, .maculopathy-popup .table-bordered tr:last-child td {
    border-bottom: none;
    padding-bottom: 0;
}
.retinopathy-popup td, .retinopathy-popup th, .maculopathy-popup td, .maculopathy-popup th {
    border-color: #0035d2 !important;
}
.retinopathy-popup p, .maculopathy-popup p {
    margin-bottom: 0;
}
.retinopathy-popup th:first-child, .retinopathy-popup td:first-child {
    width: 120px;
}
.pre-op-form .flex-lens {
    display: -ms-flexbox;
    display: flex;
}
.pre-op-form .flex-lens .form-group {
    width: 150px;
    margin-right: 20px;
}
.pre-op-form .flex-lens .form-group-axis {
    margin-right: 0;
    width: 110px;
}
/* =================================================================== */
/* ! AU PBS prescription fields (medication form)
/* =================================================================== */
/* The PBS details printed onto the pre-printed PB023 form. Grouped in a light
   panel under the dose row so they read as one set; flex rather than Bootstrap
   columns so the checkboxes line up with the inputs beside them and the rows
   wrap cleanly when the modal is narrow. */
.pbs-fields {
	margin-bottom: 15px;
	padding: 10px 12px 2px;
	border-left: 3px solid #00bcd4;
	border-radius: 8px;
	background-color: rgba(0, 188, 212, 0.05);
}
.pbs-fields .pbs-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 0 16px;
}
.pbs-fields .pbs-field {
    margin-bottom: 8px;
}
.pbs-fields .pbs-field .control-label {
    display: block;
    margin-bottom: 2px;
}
.pbs-fields .pbs-field-sm {
    width: 7rem;
}
.pbs-fields .pbs-field-md {
    width: 11rem;
}
.pbs-fields .pbs-field-full {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
}
/* Same height as .form-control so the label sits level with the inputs. */
.pbs-fields .pbs-field-check {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    height: 34px;
}
.pbs-fields .pbs-check {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin: 0;
    font-weight: normal;
    cursor: pointer;
}
.pbs-fields .pbs-check input[type="checkbox"] {
    margin: 0;
}
.pbs-fields .pbs-check.is-disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.allergy-form-wrap .help-block {
    position: absolute;
}
.locsiii-wrap {
	position: relative;
	width: 50%;
}
.locsiii-img-wrap {
	position: absolute;
	width: 500px;
}
.locsiii-img-wrap img {
    width: 100%;
}
.locsiii-img-wrap-OD {
	position: absolute;
	width: 700px;
	left: calc(100% + 15px);
	top: 0;
	z-index: 1;
	display: none;
}
.locsiii-img-wrap-OD img {
    width: 100%;
}
.locsiii-img-wrap-OS {
	position: absolute;
	width: 500px;
	right: calc(100% + 15px);
	top: 0;
	z-index: 1;
	display: none;
}
.locsiii-img-wrap-OS img {
    width: 100%;
}
.showOpal, .showColour, .showCortical, .showPupil, .showSub {
	display: block !important;
}
.pre-op-header {
	// outline: 1px dotted pink;
	margin-bottom: 20px;
}
.pre-op-header .head-flex {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: end;
        align-items: flex-end;
}
.pre-op-header .head-flex:last-child {
    margin-top: 10px;
}
.pre-op-header h3, .pre-op-header h4 {
    margin: 0;
}
.pre-op-header .head-link {
    color: #0035d2;
    cursor: pointer;
    font-size: 14px;
    text-decoration: underline;
}
.pre-op-header .head-name {
    margin-right: 20px;
}
.pre-op-header .header-left, .pre-op-header .header-right {
    // outline: 1px solid green;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: end;
        align-items: flex-end;
}
.pre-op-header .header-right {
    // margin-right: 80px;
    // outline: 1px solid blue;
}
.graphs-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
}
.card, .patients-empty, .menu-section, .patient-header .patient-card {
    background-color: #fff;
    border: none;
    border-radius: 8px;
    box-shadow: 0 0 4px rgb(0 0 0 / 20%);
    box-sizing: border-box;
	margin: 1em;
	margin-right: 0;
}
.card:hover, .patients-empty:hover, .menu-section:hover, .patient-header .patient-card:hover {
	/* box-shadow: 0 8px 28px 0 rgba(0,0,0,0.2); */
  }
.card-container {
	padding-left: 1em;
	padding-right: 1em;
	/* padding: 2px 16px; */
}
.patients-empty {
	background-color: #f4f7fe; 
	margin: 0;
	height: 'auto';
}
.patients-empty h4 {
    padding: 2em;
}
.menu-section {
	background-color: #f4f7fe; 
	min-height: 10em;
	margin-left: 0;
	margin-top: 0;
}
.menu-section h4 {
    text-align: left;
    padding-left: 1em;
    padding-top: 1em;
    padding-bottom: 0.4em;
}
.menu-container {
}
.menu-list {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: start;
	    justify-content: flex-start;
	-ms-flex-align: start;
	    align-items: flex-start;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
}
.menu-arrow {
	border-width: 11px;
	/* position: absolute; */
	display: block;
	width: 0;
	height: 0;
	border-color: transparent;
	border-style: solid;
	margin-top: -11px;
	margin-left: -11px;
	border-top-width: 0;
	border-bottom-color: #f4f7fe;
	margin-left: 48%;
	/* left: 50%; */
}
.vertical-bar {
	width: 4px;
	background-color: #0035d2;
	-ms-flex-item-align: stretch;
	    -ms-grid-row-align: stretch;
	    align-self: stretch;
	margin-left: 2em;
	margin-top: 1em;
	margin-bottom: 1em;
}
.menu-block {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: start;
	    justify-content: flex-start;
}
.right-arrow {
	margin-top: 1em;
	width: 16px;
	height: 16px;
}
.menu-item {
	width: 11em;
}
.menu-item h4 {
    margin: 0;
    font-size: 12px;
}
.menu-item p {
    padding-left: 1em;
    padding-right: 0.2em;
    text-align: left;
    font-size: 12px;
}
.patient-header {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;

}
.patient-header .header-title-bar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    gap: 1rem;
    margin: 0 1.25rem 1rem;
}
.patient-header .header-title-bar .consult-timer-box {
    position: static;
    margin-left: auto;
}
.patient-header .header-title {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
}
.patient-header .menu-container {
    -ms-flex: 12;
        flex: 12;
}
.patient-header .link-disabled {
    pointer-events: none;
    cursor: default;
    opacity: 0.6;
}
.patient-header .arrow-down {
    border: solid #0035d2;
    border-width: 0 2px 2px 0;
    display: inline-block;
    padding: 3px;
    margin-bottom: 2px;
    margin-left: 2px;
    transform: rotate(45deg);
    -webkit-transform: rotate(45deg);
}
.patient-header .arrow-right {
    border: solid #0035d2;
    border-width: 0 2px 2px 0;
    display: inline-block;
    padding: 3px;
    margin-bottom: 2px;
    margin-left: 2px;
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg);
}
.patient-header h3, .patient-header h4 {
    margin: 0;
}
.patient-header h5 {
    margin: 0;
    font-size: 16px;
}
.patient-header .patient-card {
    padding-bottom: 1em;
}
.patient-header .patient-detail-section {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-align: center;
        align-items: center;
    padding-top: 0.5em;
}
.patient-header .patient-detail-section h4 {
    font-size: 14px;
}
/* Verified/unverified comms icons beside the mobile number. The state behind them is the same one
	   .contact-verified-pill (_forms.css) spells out in words on the patient edit form; up here there
	   is no room for a word, so each channel keeps its own glyph with a tick or a cross badged on it.

	   Deliberately no margin-top or align-self: the row is baseline-aligned, which puts the glyphs on
	   the same line as the number they belong to without having to match the link's own offset. */
.patient-header .comms-verified {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    margin-left: .75em;
    margin-right: .75em;
}
.patient-header .comms-verified-icon {
    position: relative;
    display: inline-block;/* Wide enough that the badge on one glyph clears the next glyph entirely. The badge hangs
		   half outside its own box, so a gap the size of the badge is the minimum that reads as two
		   separate icons rather than one smudge. */
    margin-right: 1em;
    font-size: 16px;
    line-height: 1;/* Status, not a control. The detail - including the date it was verified - is in the title. */
    cursor: help;
}
.patient-header .comms-verified-icon:last-child {
    margin-right: 0;
}
/* Palette colours rather than a one-off green: these sit among the header's other glyphs and
		   have to belong to the same set. Navy reads as "on file and confirmed" without competing
		   with the red, which is the one that wants to be noticed. */
.patient-header .comms-verified-icon.is-verified {
    color: #0035d2;
}
.patient-header .comms-verified-icon.is-unverified {
    color: #a94442;
}
/* Badged on the bottom right of the channel glyph. The card behind is white, so a white disc
	   keeps the badge legible where it overlaps the glyph. Pulled in tighter than the glyph's own
	   edge so it reads as attached to it rather than as a third floating icon. */
.patient-header .comms-verified-badge {
    position: absolute;
    right: -0.35em;
    bottom: -0.1em;
    font-size: 10px;
    background: #ffffff;
    border-radius: 50%;
}
.patient-header .vertical-section {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
.popover-preop-wrap {
	padding: 20px;
	padding-bottom: 0;
	width: 300px;
	text-align: center;
}
.popover-preop-wrap label {
    color: #0035d2 !important;
    font-size: 12px;
    margin-bottom: 10px;
}
.popover-preop-wrap .form-control {
    border-radius: 20px;
    box-shadow: none;
    color: #0035d2;
    font-size: 12px;
    border: 1px solid #0035d2;
}
.popover-preop-wrap .form-group:last-child {
    margin-bottom: 10px;
}
.popover {
	border-color: #0035d2;
}
/* width: 20em;
	max-width: 20em; */
.popover .marker {
    position: relative;
    top: 2px;
}
.popover.bottom > .arrow {
	border-bottom-color: #0035d2;
}
.spinner-wrap {
	position: relative;
}
.vertical-buttons {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.vertical-buttons button + button {
    margin-top: 10px;
}
.vertical-radio-groups {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	margin-top: 1em;
}
.radio-button-inline {
	margin-left: 0px !important;
	margin-bottom: 1em;
}
.my-modal-footer-patient-details .btn-navy {
    width: 220px;
}
.width_35_em{
	width: 35em;
}
hr.life-quality-line-break {
	border-top-color: #3850a2;
	margin-top: 0;
	margin-bottom: 0;
}
.customer_checkbox_red input[type=checkbox]:before {
    content: "";
    display: block;
    position: absolute;
    width: 13px;
    height: 13px;
    border: solid red;
    border-radius: 2px;
    background-color: transparent;
}
.customer_checkbox_red input[type=checkbox]:checked:before {
    content: "";
    display: block;
    position: absolute;
    width: 15px;
    height: 15px;
    background-color: red;
}
.customer_checkbox_red input[type=checkbox]:checked:after {
    content: "";
    display: block;
    width: 5px;
    height: 10px;
    border: solid white;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
    position: absolute;
    top: 5px;
    left: 5px;
}
.customer_checkbox_red span {
    position: relative;
    top: -1px;
    padding-left: 0.5em;
}
.customer_checkbox_green input[type=checkbox]:before {
    content: "";
    display: block;
    position: absolute;
    width: 13px;
    height: 13px;
    border: solid green;
    border-radius: 2px;
    background-color: transparent;
}
.customer_checkbox_green input[type=checkbox]:checked:before {
    content: "";
    display: block;
    position: absolute;
    width: 15px;
    height: 15px;
    background-color: green;
}
.customer_checkbox_green input[type=checkbox]:checked:after {
    content: "";
    display: block;
    width: 5px;
    height: 10px;
    border: solid white;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
    position: absolute;
    top: 5px;
    left: 5px;
}
.customer_checkbox_green span {
    position: relative;
    top: -1px;
    padding-left: 0.5em;
}
.customer_radio_red .marker {
    margin-left: 0.5em;
    margin-right: 1em;
    font-size: 1.6em;
    color: red !important;
}
.customer_radio_red input[type="radio"]:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: #d1d3d1;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.customer_radio_red input[type="radio"]:checked:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: red;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.customer_radio_green .marker {
    margin-left: 0.5em;
    margin-right: 1em;
    font-size: 1.6em;
    color: green !important;
}
.customer_radio_green input[type="radio"]:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: #d1d3d1;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.customer_radio_green input[type="radio"]:checked:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: green;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.customer_radio_normal .marker {
    margin-left: 0.5em;
    margin-right: 1em;
    font-size: 1.6em;
}
.customer_radio_normal input[type="radio"]:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: #d1d3d1;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.customer_radio_normal input[type="radio"]:checked:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: #0035d2;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.pagination {
	margin-top: 2em !important;
}
.pagination>li>a, .pagination>li>span {
  border: 0px;
  padding: 3px 6px;
}
.pagination>li.active>a {
	background: transparent;
	color: #337ab7;
	font-weight: bold;
	font-size: 16px;
	margin-top: -0.2em;
  }
/* .pagination>li.active>a {
  background: purple;
  color: #fff;
} */
/* .pagination {
	display: inline-block;
	padding-left: 0;
	.li {
		background-color: red;
	}
} */
.popover_ul {
	margin-left: -2em;
}
.popover_container .popover {
    width: 40em;
    max-width: 40em;
}
.popover_label {
	margin-right: 0px !important;
	font-family: 'Gordita Bold';
}
.pink_header {
	padding-left: 2%;
	padding-right: 2%;
	-ms-flex-direction: column !important;
	    flex-direction: column !important;
	background-color: #EEE6FF;
}
.purple_header {
	padding-left: 2%;
	padding-right: 2%;
	-ms-flex-direction: column !important;
	    flex-direction: column !important;
	background-color: rgb(217,210,233);
}
.blue_header {
	padding-left: 2%;
	padding-right: 2%;
	-ms-flex-direction: column !important;
	    flex-direction: column !important;
	background-color: rgb(207,226,243);
}
.long_section{
	width: 30% !important;
	margin-left: -5%;
	margin-right:15%;
}
/* =================================================================== */
/* ! IOL calculator hand-off (surgical plan)
/* =================================================================== */
/* The lens type select keeps its half-width; the button sits in the space that leaves. */
.lens-type-controls {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
}
.lens-type-controls .iol-calculator {
    margin-left: 20px;
}
.iol-calculator {
	text-align: center;
}
.iol-calculator .iol-calculator-btn {
    width: auto;
    max-width: none;
    white-space: nowrap;
}
/* The small italic line under the button, following the subtext under the verify button in the
	   CatTrax emails (.verify_cattrax_subtext in patient_email_verification_html.ftl). */
.iol-calculator .iol-calculator-attribution {
    margin-top: 4px;
    font-size: 10px;
    font-style: italic;
    color: #343a40;
}
.iol-calculator .iol-calculator-error {
    margin-top: 6px;
    max-width: 220px;
    font-size: 11px;
    color: #a94442;
}
/* =================================================================== */
/* ! Vision module: prism value + base, and the copy-adds button
/* =================================================================== */
.pre-op-form .prism-input-group {
    display: -ms-flexbox;
    display: flex;
    gap: 8px;
}
.pre-op-form .prism-input-group .inline-number {
    width: 100px;
}
.pre-op-form .prism-input-group .prism-base {
    width: 110px;
}
/* The icon-only copy-adds-to-the-other-eye button, lined up with the add inputs */
.pre-op-form .md-button.md-fab.btn-copy-adds {
    margin: 0;
    width: 36px;
    height: 36px;
    min-height: 36px;
    line-height: 36px;
}
/* .op-header {
	color: $white;
	text-align: center;
	padding: 5px 0;
	margin-bottom: 10px;
    color: $navy !important;
	h4 {
		font-size: 1em;
	}
} */
.operation-form {
	color: #343a40;
	font-size: 12px;
	// background-color: pink;
	padding: 0 20px;
	border-top: 2px solid #0035d2;
	border-radius: 0rem;
	padding-top: 3em;
}
.operation-form select, .operation-form .form-control {
    border-radius: 20px;
    box-shadow: none;
    // color: #343a40;
    color: #0035d2;
    font-size: 12px;
    border: 1px solid #0035d2;/* Do not set appearance (e.g. radio): Chrome misaligns text in inputs, selects, and div.form-control. */
}
.operation-form .single-value-control {
    width: 40%;
    margin-left: 100px;
}
.operation-form .form-group-label {
    padding-right: 20px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    margin-bottom: 25px;
}
.operation-form .form-group-label .control-label {
    text-align: right;
}
.operation-form .flex {
    display: -ms-flexbox;
    display: flex;
    padding: 0;
    position: relative;
}
.operation-form .flex select, .operation-form .flex .input, .operation-form .flex .inline-number, .operation-form .flex .mark-wrap {
    margin-right: 20px;
    width: 100px;
}
.operation-form .mark-wrap, .operation-form .mark-wrap-deg {
    position: relative;
}
.operation-form .mark-wrap .six-pre, .operation-form .mark-wrap-deg .six-pre {
    position: absolute;
    top: 20%;
    transform: translateY(-50%);/* left: -20px; */
    color: #0035d2 !important;
}
.operation-form .mark-wrap .stripe-post, .operation-form .mark-wrap-deg .stripe-post {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: -15px;
}
.operation-form .mark-wrap .stripe-pre, .operation-form .mark-wrap-deg .stripe-pre {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: -12px;
}
.operation-form .mark-wrap-deg .deg {
    width: 80px;
    padding-left: 6px;
    padding-right: 6px;
}
.operation-form .mark-wrap-deg .stripe-post {
    right: -37px;
}
.operation-form label {
    color: #0035d2 !important;
}
.operation-form .marker {
    position: relative;
    top: 2px;
}
.btn-next {
	width: 120px;
}
.check-label {
	position: relative;
}
.check-label .check-span {
    position: relative;
    top: 2px;
}
.lens {
	width: 220px;
}
.lens-label {
	margin-top: 34px;
}
.visual-label {
	margin-top: 70px;
}
.form-group-label-top {
	margin-top: 40px;
}
.col-bin {
	padding-left: 60px;
}
.pressure-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack:start;
	    justify-content:flex-start;
}
/* max-width: 460px; */
.pressure-wrap .form-group {
    width: 40%;
}
.half-width {
	max-width: 50%;
}
.quarter-width {
	max-width: 25%;
}
.blue-box {
	border: 1px solid #0035d2;
	padding: 15px;
	background-color: #f2f6fb;
	margin-bottom: 15px;
	border-radius: 8px;
}
.blue-box .header .h4 {
    margin-bottom: 5px;
    margin-top: 0;
}
.eye-heading {
	margin-bottom: 20px;
}
.operation-note-save-wrap {
	min-height: 80px;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
	margin: 20px 0;
}
.operation-note-save-wrap .progression-wrap {
    min-width: 250px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    -ms-flex-align: center;
        align-items: center;
}
.operation-note-save-wrap .progression-wrap .save-progress {
    cursor: pointer;
    margin-right: 20px;
}
.operation-note-save-wrap .progression-alert-wrap {
    width: calc(100% - 280px);
}
.operation-note-save-wrap .progression-alert-wrap .alert {
    margin-bottom: 0;
}
.operation-note-save-wrap .progression-alert-wrap .alert + .alert {
    margin-top: 10px;
}
.stack-vert {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	position: relative;
	top: 2px;
	margin-left: 10px;
}
.stack-vert .radio-inline + .radio-inline {
    margin-left: 0;
    margin-top: 5px;
}
.flex-biometry {
	-ms-flex-align: center;
	    align-items: center;
}
.flex-biometry .control-label {
    margin-right: 15px;
    margin-bottom: 0;
}
.biometry-input {
	width: 100px;
	margin-right: 20px;
}
.axis-wrap {
	position: relative;
}
.axis-times, .axis-deg {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	transform: translateY(-50%);
}
.axis-times {
	right: calc(100% + 6px);
}
.axis-deg {
	left: 110px;
}
.section-label {
	margin-bottom: 10px;
}
.biometry .form-row {
    margin-bottom: 15px;
}
.biometry .left-column {
    width: 18px;
}
.biometry .form-group {
    margin-bottom: 0px;
}
.biometry .help-block {
    position: absolute;
    width: 300px;
    margin-top: 0;
}
.table-incisions th, .table-incisions td {
    border-color: #0035d2 !important;
    vertical-align: middle !important;
    border-top: 0 !important;
}
.table-incisions td:last-child {
    text-align: right;
}
.table-incisions .remove-med {
    padding: 0;
    margin: 0;
    border: 1px solid #0035d2;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: white;
}
.table-incisions .remove-med:hover {
    background-color: #0035d2;
    color: white;
}
.btn-add-incision {
	height: 34px;
	width: 34px;
	margin-left: 0.5em;
	padding: 0;
}
.flex-allergy {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
}
.flex-allergy .grow {
    -ms-flex: 1 0;
        flex: 1 0;
    margin-right: 20px;
}
.anaesthetic-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
}
.anaesthetic-wrap .form-group {
    width: 260px;
    margin-right: 20px;
}
.anaesthetic-wrap .help-block {
    position: absolute;
    margin-top: 0;
}
.text-area-wrap {
	position: relative;
}
.text-area-wrap .count-remaining {
    position: absolute;
    font-size: 10px;
    bottom: 0;
    right: 15px;
    color: #0035d2;
}
.diabetes-pop-up-wrap {
	width: 50%;
	position: relative;
}
.retinopathy-pop-up-OD .retinopathy-popup {
    left: calc(100% + 10px);
}
.retinopathy-pop-up-OS .retinopathy-popup {
    right: calc(100% + 10px);
}
.showRetinopathy .retinopathy-popup {
    display: block;
}
.maculopathy-pop-up-OD .maculopathy-popup {
    left: calc(100% + 10px);
}
.maculopathy-pop-up-OS .maculopathy-popup {
    right: calc(100% + 10px);
}
.showMaculopathy .maculopathy-popup {
    display: block;
}
.retinopathy-popup, .maculopathy-popup {
	border: 1px solid #0035d2;
	padding: 15px;
	font-size: 10px;
	color: #0035d2;
	background-color: white;
	width: 480px;
	position: absolute;
	z-index: 1;
	top: 0;
	display: none;
}
.retinopathy-popup .table-bordered, .maculopathy-popup .table-bordered {
    border: none !important;
    margin-bottom: 10px;
}
.retinopathy-popup .table-bordered th, .retinopathy-popup .table-bordered td, .maculopathy-popup .table-bordered th, .maculopathy-popup .table-bordered td {
    border-right: 1px solid #0035d2;
    border-left: 1px solid #0035d2;
}
.retinopathy-popup .table-bordered th:first-child, .retinopathy-popup .table-bordered td:first-child, .maculopathy-popup .table-bordered th:first-child, .maculopathy-popup .table-bordered td:first-child {
    border-left: none;
}
.retinopathy-popup .table-bordered th:last-child, .retinopathy-popup .table-bordered td:last-child, .maculopathy-popup .table-bordered th:last-child, .maculopathy-popup .table-bordered td:last-child {
    border-right: none;
}
.retinopathy-popup .table-bordered tr:last-child td, .maculopathy-popup .table-bordered tr:last-child td {
    border-bottom: none;
    padding-bottom: 0;
}
.retinopathy-popup td, .retinopathy-popup th, .maculopathy-popup td, .maculopathy-popup th {
    border-color: #0035d2 !important;
}
.retinopathy-popup p, .maculopathy-popup p {
    margin-bottom: 0;
}
.retinopathy-popup th:first-child, .retinopathy-popup td:first-child {
    width: 120px;
}
.operation-form .flex-lens {
    display: -ms-flexbox;
    display: flex;
}
.operation-form .flex-lens .form-group {
    width: 150px;
    margin-right: 20px;
}
.operation-form .flex-lens .form-group-axis {
    margin-right: 0;
    width: 110px;
}
.allergy-form-wrap .help-block {
    position: absolute;
}
.locsiii-wrap {
	position: relative;
	width: 50%;
}
.locsiii-img-wrap {
	position: absolute;
	width: 500px;
}
.locsiii-img-wrap img {
    width: 100%;
}
.locsiii-img-wrap-OD {
	position: absolute;
	width: 700px;
	left: calc(100% + 15px);
	top: 0;
	z-index: 1;
	display: none;
}
.locsiii-img-wrap-OD img {
    width: 100%;
}
.locsiii-img-wrap-OS {
	position: absolute;
	width: 500px;
	right: calc(100% + 15px);
	top: 0;
	z-index: 1;
	display: none;
}
.locsiii-img-wrap-OS img {
    width: 100%;
}
.showOpal, .showColour, .showCortical, .showPupil, .showSub {
	display: block !important;
}
.operation-note-header {
	// outline: 1px dotted pink;
	margin-bottom: 20px;
}
.operation-note-header .head-flex {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: end;
        align-items: flex-end;
}
.operation-note-header .head-flex:last-child {
    margin-top: 10px;
}
.operation-note-header h3, .operation-note-header h4 {
    margin: 0;
}
.operation-note-header h6 {
    margin: 0;
    padding-left: 1.5em;
    font-size: 16px;
}
.operation-note-header .head-link {
    color: #0035d2;
    cursor: pointer;
    font-size: 14px;
    text-decoration: underline;
}
.operation-note-header .head-name {
    margin-right: 20px;
}
.operation-note-header .header-left, .operation-note-header .header-right {
    // outline: 1px solid green;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: end;
        align-items: flex-end;
}
.operation-note-header .header-right {
    // margin-right: 80px;
    // outline: 1px solid blue;
}
.popover-preop-wrap {
	padding: 20px;
	padding-bottom: 0;
	width: 300px;
	text-align: center;
}
.popover-preop-wrap label {
    color: #0035d2 !important;
    font-size: 12px;
    margin-bottom: 10px;
}
.popover-preop-wrap .form-control {
    border-radius: 20px;
    box-shadow: none;
    color: #0035d2;
    font-size: 12px;
    border: 1px solid #0035d2;
}
.popover-preop-wrap .form-group:last-child {
    margin-bottom: 10px;
}
.popover {
	border-color: #0035d2;
}
.popover .marker {
    position: relative;
    top: 2px;
}
.popover.bottom > .arrow {
	border-bottom-color: #0035d2;
}
.spinner-wrap {
	position: relative;
}
.vertical-buttons {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.vertical-buttons button + button {
    margin-top: 10px;
}
.my-modal-footer-patient-details .btn-navy {
    width: 220px;
}
.incisions-image {
	width: 100%;
	padding-left: 5em;
	padding-right: 5em;
	margin-top: 1em;
	margin-bottom: 2em;
}
.margin-top-2em {
	margin-top: 2em;
}
.margin-top-1em {
	margin-top: 1em;
}
.padding-top-dot-4em {
	padding-top: 0.4em;
}
.custom-slider.rzslider :focus {outline:none;}
.custom-slider.rzslider {
	margin-top: 1em;
	margin-bottom: 1em;
}
.custom-slider.rzslider .rz-bar {
	height: 8px;
	border-radius: 4px;
  }
.custom-slider.rzslider .rz-pointer {
	width: 16px;
	height: 16px;
	top: auto; /* to remove the default positioning */
	bottom: 0;
	margin-bottom: -6px;
  }
.custom-slider.rzslider .rz-pointer:after {
	display: none;
  }
.custom-slider.rzslider .rz-bubble {
	bottom: 14px;
  }
.custom-slider.rzslider .rz-limit {
	font-weight: bold;
  }
.custom-slider.rzslider .rz-tick-value {
	top:0px;
	color: transparent;
  }
.custom-slider.rzslider .rz-tick {
	width: 1px;
	height: 10px;
	margin-left: 8px;
	border-radius: 0;
	top: -1px;
  }
.transparent-color {
	  color:transparent !important;
  }
.btn-white {
	background-color: #ffffff;
	color: #0035d2;
	width: 200px;
	border-color: #0035d2;
}
.margin-middle {
	margin-left: 1em;
	margin-right: 1em;
}
.head-link {
	color: #0035d2;
	cursor: pointer;
	font-size: 14px;
	text-decoration: underline;
}
.font-size-16 {
	font-size: 16px;
}
.postoperative-header {
	width: 100%;
	text-align: center;
	margin-top: 2em;
	margin-bottom: 2em;
}
.caret {
	display: inline-block;
	width: 0;
	height: 0;
	margin-left: 2px;
	vertical-align: middle;
	border-top: 0px dashed;
	border-top: 0px solid \9;
	border-right: 0px solid transparent;
	border-left: 0px solid transparent;
  }
.font-regular, .head-no-link, .search-form .form-group .form-control, .filter-select, .form-impact label.control-label, .popover .popover-content, .popover-normal .popover-content, .table-complete td:nth-child(1), .selected-doc-wrap .selected-doc-practice, .impact-review-wrap .impact-review-date, .form-exam, .form-exam select, .form-exam .form-control, .terms, .pre-op-form, .pre-op-form select, .pre-op-form .form-control, .pre-op-header .head-link, .popover-preop-wrap label, .popover-preop-wrap .form-control, .operation-form, .operation-form select, .operation-form .form-control, .operation-form .marker, .operation-note-header .head-link, .head-link {
	font-family: 'Gordita Regular' !important;
}
.font-size-8 {
	font-size: 8px !important;
}
.margin-to-right {
	margin-left: 50%;
}
.grid-column-no-padding {
	padding-left: 0px;
	padding-right: 0px;

}
.select-no-margin {
	margin-right: 0px !important;
	width: 100% !important;
}
/* =================================================================== */
/* ! Injection note injections (per-injection block + drug batch)
/* =================================================================== */
/* Each injection is edited in place in its own card, so a pre-filled one is
   visible in the fields rather than summarised underneath them. */
.injection-block .injection-block-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    margin-bottom: 10px;
}
.injection-block .injection-block-title {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.injection-block .remove-med {
    padding: 0;
    margin: 0;
    border: 1px solid #0035d2;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: #ffffff;
}
.injection-block .remove-med:hover {
    background-color: #0035d2;
    color: #ffffff;
}
.btn-add-injection {
	width: auto;
	max-width: none;
	padding: 6px 16px;
}
/* Batch number and expiry sit beside the medication they belong to. Everything
   else on an injection is usually pre-filled from the patient's settings, so the
   pair gets a light accent to set it apart — enough to catch the eye on the way
   past, not enough to shout. */
.batch-fields {
	display: -ms-flexbox;
	display: flex;
	gap: 10px;
	padding: 8px 10px;
	border-left: 3px solid #FFB627;
	border-radius: 8px;
	background-color: rgba(255, 182, 39, 0.1);
}
.batch-fields .batch-field {
    -ms-flex: 1 1 0px;
        flex: 1 1 0;
    min-width: 0;
}
/* <datepicker> is a custom element, so it needs a box of its own before the
	   input inside it can fill the field and the calendar can anchor to it. */
.batch-fields datepicker {
    display: block;
    position: relative;
}
.batch-fields .control-label {
    margin-bottom: 2px;
}
.batch-warning {
	display: block;
	margin-top: 4px;
	font-size: 11px;
	font-style: normal;
	color: #a94442;
}
/*!
 * ui-select
 * http://github.com/angular-ui/ui-select
 * Version: 0.18.0 - 2016-06-14T06:54:43.159Z
 * License: MIT
 */
/* Style when highlighting a search. */
.ui-select-highlight {
    font-weight: bold;
}
.ui-select-offscreen {
    clip: rect(0 0 0 0) !important;
    width: 1px !important;
    height: 1px !important;
    border: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    position: absolute !important;
    outline: 0 !important;
    left: 0px !important;
    top: 0px !important;
}
.ui-select-choices-row:hover {
    background-color: #f5f5f5;
}
.ui-select-choices-row {
    background-color: white !important;
}
.selectize-control.single .selectize-input {
    background-image: none !important;
}
/* Select2 theme */
/* Mark invalid Select2 */
.ng-dirty.ng-invalid > a.select2-choice {
    border-color: #d44950;
}
.select2-result-single {
    padding-left: 0;
}
.select2-locked > .select2-search-choice-close {
    display: none;
}
.select-locked > .ui-select-match-close {
    display: none;
}
body > .select2-container.open {
    z-index: 9999; /* The z-index Select2 applies to the select2-drop */
}
/* Handle up direction Select2 */
.ui-select-container[theme="select2"].direction-up .ui-select-match {
    border-radius: 4px; /* FIXME hardcoded value :-/ */
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}
.ui-select-container[theme="select2"].direction-up .ui-select-dropdown {
    border-radius: 4px; /* FIXME hardcoded value :-/ */
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;

    border-top-width: 1px; /* FIXME hardcoded value :-/ */
    border-top-style: solid;

    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);

    margin-top: -4px; /* FIXME hardcoded value :-/ */
}
.ui-select-container[theme="select2"].direction-up .ui-select-dropdown .select2-search {
    margin-top: 4px; /* FIXME hardcoded value :-/ */
}
.ui-select-container[theme="select2"].direction-up.select2-dropdown-open .ui-select-match {
    border-bottom-color: #5897fb;
}
/* Selectize theme */
/* Helper class to show styles when focus */
.selectize-input.selectize-focus {
    border-color: transparent !important;
}
.selectize-input > input:focus {
    outline: 5px auto -webkit-focus-ring-color;
    outline-offset: -2px;
    outline-color: red;
    /* outline: none !important; */
}
.selectize-control.single .selectize-input, .selectize-dropdown.single {
    border-color: transparent;
}
/* Fix input width for Selectize theme */
.selectize-control > .selectize-input > input {
    width: 100%;
}
/* Fix dropdown width for Selectize theme */
.selectize-control > .selectize-dropdown {
    width: 100%;
}
.selectize-control.single .selectize-input, .selectize-dropdown.single {
    border-color: #3850a2 !important;
    /* border: 1px solid #3850a2 !important; */
    border-radius: 20px;
    margin-bottom: -4px;
    box-shadow: none !important;
}
/* Mark invalid Selectize */
.ng-dirty.ng-invalid > div.selectize-input {
    border-color: #d44950;
}
.selectize-dropdown {
    border: 0px solid transparent !important;
    background: transparent !important;
}
/* Handle up direction Selectize */
.ui-select-container[theme="selectize"].direction-up .ui-select-dropdown {
    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);

    margin-top: -2px; /* FIXME hardcoded value :-/ */
}
/* Bootstrap theme */
/* Helper class to show styles when focus */
.btn-default-focus {
    color: #333;
    background-color: #ebebeb;
    border-color: #adadad;
    text-decoration: none;
    outline: 5px auto -webkit-focus-ring-color;
    outline-offset: -2px;
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.ui-select-bootstrap .ui-select-toggle {
    position: relative;
}
.ui-select-bootstrap .ui-select-toggle > .caret {
    position: absolute;
    height: 10px;
    top: 50%;
    right: 10px;
    margin-top: -2px;
}
/* Fix Bootstrap dropdown position when inside a input-group */
.input-group > .ui-select-bootstrap.dropdown {
    /* Instead of relative */
    position: static;
}
.input-group > .ui-select-bootstrap > input.ui-select-search.form-control {
    border-radius: 4px; /* FIXME hardcoded value :-/ */
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}
.input-group > .ui-select-bootstrap > input.ui-select-search.form-control.direction-up {
    border-radius: 4px !important; /* FIXME hardcoded value :-/ */
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}
.ui-select-bootstrap > .ui-select-match > .btn {
    /* Instead of center because of .btn */
    text-align: left !important;
}
.ui-select-bootstrap > .ui-select-match > .caret {
    position: absolute;
    top: 45%;
    right: 15px;
}
/* See Scrollable Menu with Bootstrap 3 http://stackoverflow.com/questions/19227496 */
.ui-select-bootstrap > .ui-select-choices, .ui-select-bootstrap > .ui-select-no-choice {
    width: 100%;
    height: auto;
    max-height: 200px;
    overflow-x: hidden;
    margin-top: -1px;
}
body > .ui-select-bootstrap.open {
    z-index: 1000; /* Standard Bootstrap dropdown z-index */
}
.ui-select-multiple.ui-select-bootstrap {
    height: auto;
    padding: 3px 3px 0 3px;
}
.ui-select-multiple.ui-select-bootstrap input.ui-select-search {
    background-color: transparent !important; /* To prevent double background when disabled */
    border: none;
    outline: none;
    height: 1.666666em;
    margin-bottom: 3px;
}
.ui-select-multiple.ui-select-bootstrap .ui-select-match .close {
    font-size: 1.6em;
    line-height: 0.75;
}
.ui-select-multiple.ui-select-bootstrap .ui-select-match-item {
    outline: 0;
    margin: 0 3px 3px 0;
}
.ui-select-multiple .ui-select-match-item {
    position: relative;
}
.ui-select-multiple .ui-select-match-item.dropping .ui-select-match-close {
    pointer-events: none;
}
.ui-select-multiple:hover .ui-select-match-item.dropping-before:before {
    content: "";
    position: absolute;
    top: 0;
    right: 100%;
    height: 100%;
    margin-right: 2px;
    border-left: 1px solid #428bca;
}
.ui-select-multiple:hover .ui-select-match-item.dropping-after:after {
    content: "";
    position: absolute;
    top: 0;
    left: 100%;
    height: 100%;
    margin-left: 2px;
    border-right: 1px solid #428bca;
}
.ui-select-bootstrap .ui-select-choices-row > a {
    display: block;
    padding: 3px 20px;
    clear: both;
    font-weight: 400;
    line-height: 1.42857143;
    color: #333;
    white-space: nowrap;
}
.ui-select-bootstrap .ui-select-choices-row > a:hover, .ui-select-bootstrap .ui-select-choices-row > a:focus {
    text-decoration: none;
    color: #262626;
    background-color: #f5f5f5;
}
.ui-select-bootstrap .ui-select-choices-row.active > a {
    color: #fff;
    text-decoration: none;
    outline: 0;
    background-color: #428bca;
}
.ui-select-bootstrap .ui-select-choices-row.disabled > a, .ui-select-bootstrap .ui-select-choices-row.active.disabled > a {
    color: #777;
    cursor: not-allowed;
    background-color: #fff;
}
/* fix hide/show angular animation */
.ui-select-match.ng-hide-add, .ui-select-search.ng-hide-add {
    display: none !important;
}
/* Mark invalid Bootstrap */
.ui-select-bootstrap.ng-dirty.ng-invalid > button.btn.ui-select-match {
    border-color: #d44950;
}
/* Handle up direction Bootstrap */
.ui-select-container[theme="bootstrap"].direction-up .ui-select-dropdown {
    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);
}
.selectize-control.single .selectize-input:after {
    position: absolute;
    top: 50%;
    right: 5px !important;
    display: block;
    width: 7px !important;
    height: 7px !important;
    margin-top: -5px !important;
    border-color: #0035d2 #0035d2 transparent transparent !important;
    border-style: solid !important;
    border-width: 2px 2px 0px 0px !important;
    transform: rotate(135deg);
}
.listclass {
    border-radius: 2px !important;
    border-width: 1px !important;
}
.premium-lens-price-box {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    margin-right: -15px;
    margin-left: -15px;
    /* border-bottom: 1px solid $navy; */
}
.h4-medium {
    font-size: 1.2em;
}
.navy-color {
    color: #0035d2 !important;
}
.flex-row {
    width: 20%;
    text-align: center;
    font-size: 1em;
}
.dollar {
    margin-left: -6em;
    position: absolute;
    padding-top: 0.8em;
}
.dollar-non-toric {
    margin-left: -6em;
    position: absolute;
    padding-top: 0.8em;
}
.padding-zero {
    padding-top: 0px;
    padding-bottom: 0px;
    margin-top: 1em;
    margin-bottom: 1em;
}
.align-left {
    text-align: left;
}
.next-container {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row-reverse;
        flex-direction: row-reverse;
}
/* =================================================================== */
/* ! Premium lens prices (settings)
/* A practice's own price for each lens, toric and non-toric. The
/* cards, fee inputs, notices and action bar come from _settings.css.
/* =================================================================== */
.settings-shell .premium-lens-prices .card-header-flex {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
}
.settings-shell .premium-lens-prices .plp-table {
    width: 100%;
    max-width: 620px;
    border-collapse: collapse;
    font-size: 13px;
}
.settings-shell .premium-lens-prices .plp-table > thead > tr > th {
    padding: 0 12px 8px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    text-align: left;
}
.settings-shell .premium-lens-prices .plp-table > tbody > tr > th, .settings-shell .premium-lens-prices .plp-table > tbody > tr > td {
    padding: 5px 12px;
    vertical-align: middle;
}
.settings-shell .premium-lens-prices .plp-table > tbody > tr > th[scope="row"] {
    font-weight: 600;
    color: #2a307f;
    white-space: nowrap;
}
.settings-shell .premium-lens-prices .plp-table .plp-price-col {
    width: 170px;
}
.settings-shell .premium-lens-prices .plp-table .fee-input .form-control {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
/* Pale enough to read as "nothing set" rather than as a price of zero */
.settings-shell .premium-lens-prices .plp-table .form-control:-ms-input-placeholder {
    color: #c3c9da;
    text-align: left;
}
.settings-shell .premium-lens-prices .plp-table .form-control::placeholder {
    color: #c3c9da;
    text-align: left;
}
.settings-shell .premium-lens-prices .plp-table .has-error .form-control {
    border-color: #d9534f;
    box-shadow: 0 0 0 3px rgba(217, 83, 79, 0.15);
}
/* A heading across the table between the two kinds of lens */
.settings-shell .premium-lens-prices .plp-group-row > th {
    padding: 16px 12px 6px;
    border-bottom: 1px dashed #e0e6ed;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #0035d2;
}
.settings-shell .premium-lens-prices .plp-group-row > th span {
    text-transform: none;
    letter-spacing: 0;
    font-weight: 400;
    color: #a3aac0;
}
.settings-shell .premium-lens-prices tbody > .plp-group-row:first-child > th {
    padding-top: 4px;
}
.settings-shell .premium-lens-prices .plp-included {
    font-size: 12px;
    font-style: italic;
    color: #a3aac0;
}
.settings-shell .premium-lens-prices .plp-email-field {
    max-width: 420px;
}
/* Read only for anyone who cannot change the prices; otherwise just the stack of cards */
.settings-shell .premium-lens-prices .plp-fieldset {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}
.settings-shell .premium-lens-prices .plp-retry {
    width: auto;
    margin: -3px 0 -3px auto;
    padding: 4px 14px;
}
.settings-shell .premium-lens-prices .settings-notice .notice-text {
    -ms-flex: 1;
        flex: 1;
}
/* Toric / non-toric: each choice is one button - the whole label is what is clicked and what shows it is
   chosen, in the step's own colours: green recommended, red use with caution, navy with no suggestion. The
   radio stays for the keyboard and screen readers, hidden; the label fills with its colour when chosen. */
.premium-lens-type-option {
    position: relative;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    min-width: 104px;
    margin: 0 3px 6px;
    padding: 3px 12px;
    border: 1.5px solid #0035d2;
    border-radius: 16px;
    font-weight: 600;
    line-height: 1.4;
    vertical-align: middle;
    cursor: pointer;
    transition: background-color 0.15s ease;
}
.premium-lens-type-option input[type="radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
/* The marker is the label's text now, not a caption beside a dot: drop the caption's spacing, size and the
       2px nudge it gets from the step's own .marker rule, so the text sits in the middle of the button */
.premium-lens-type-option .marker {
    position: static !important;
    margin: 0 !important;
    padding: 0 !important;
    font-size: 13px !important;
    letter-spacing: 0.3px;
    line-height: inherit;
}
.premium-lens-type-option:hover {
    background-color: #e7f0ff;
}
.premium-lens-type-option:focus-within {
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* Border colours are set outright: the step makes every label's text navy !important, so currentColor
       would always be navy */
.premium-lens-type-option.customer_radio_green {
    border-color: green;
}
.premium-lens-type-option.customer_radio_red {
    border-color: red;
}
/* The colours above are !important on .marker (_pre-op.css), so chosen text needs it to turn white */
.premium-lens-type-option.is-checked {
    background-color: #0035d2;
    border-color: #0035d2;
}
.premium-lens-type-option.is-checked .marker {
    color: #ffffff !important;
}
.premium-lens-type-option.is-checked.customer_radio_green {
    background-color: green;
    border-color: green;
}
.premium-lens-type-option.is-checked.customer_radio_red {
    background-color: red;
    border-color: red;
}
/* The patient-facing contact verification page. Styled to sit alongside the premium lens selection
   form - both are standalone pages a patient reaches from an emailed link, not app screens.

   Two things drive the choices below. First, the page inherits `font-size: 12px` from html/body
   (_util.css), which is too small for a patient-facing page, so type sizes here are explicit px
   rather than rem. Second, this is opened from a text message on whatever phone the patient owns,
   so spacing uses margins rather than flex `gap` (ignored below iOS 14.1) and controls are sized
   for a thumb. Everything is scoped so none of it leaks into app screens. */
.patient-verification-page {
	/* Replaces a spacer <div style="height:10rem"> that used to sit above the card. */
	padding: 3rem 0;
}
.patient-verification-form .view-wrap {
    padding: 2rem 1.5rem 2.5rem;
}
/* One centred measure for the whole card, so the heading, code boxes, consents and button share
	   a left and right edge instead of each block picking its own grid columns. */
.patient-verification-form .pv-panel {
    max-width: 440px;
    margin: 0 auto;
}
.patient-verification-form .pv-status {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    padding: 4rem 0;
}
.patient-verification-form .pv-logo {
    display: block;
    width: 180px;
    max-width: 60%;
    margin: 0 auto 2rem;
}
.patient-verification-form .pv-title {
    margin: 0 0 1rem;
    font-size: 24px;
    line-height: 1.3;
    font-weight: 600;
    text-align: center;
    color: #0035d2;
}
.patient-verification-form .pv-lede {
    margin: 0 0 2.5rem;
    font-size: 15px;
    line-height: 1.6;
    text-align: center;
    color: #6c757d;
}
/* Fieldsets carry the grouping semantics for the code boxes and the consents. Bootstrap's legend
	   defaults (100% wide, 21px, bottom border) would draw a rule across the card, so reset them. */
.patient-verification-form .pv-fieldset {
    margin: 0 0 2.5rem;
    padding: 0;
    border: 0;
}
/* width:100%, not auto. A <legend> shrink-wraps its content, so `text-align: center` has nothing
	   to centre within and the heading sits against the left edge of the fieldset. This restores the
	   block/full-width part of Bootstrap's own legend rule while still dropping the border and size
	   it also brings. */
.patient-verification-form .pv-legend {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 15px;
    line-height: 1.5;
    font-weight: 600;
    text-align: center;
    color: #0035d2;
}
/* Progress header. The page is one step at a time now, and a patient reading this on a phone
	   needs to know how much is left before they start rather than discovering it a step at a time.
	   The bar is decorative - the count beneath it is what carries the information, and it is the
	   part a screen reader announces. */
.patient-verification-form .pv-progress {
    margin: 0 0 2rem;
}
.patient-verification-form .pv-progress-bar {
    display: -ms-flexbox;
    display: flex;
    margin: 0 0 0.5rem;
}
/* Margin rather than flex `gap`, which is ignored below iOS 14.1 - the segments would run into
	   one continuous bar there and stop reading as steps at all. */
.patient-verification-form .pv-progress-seg {
    -ms-flex: 1;
        flex: 1;
    height: 4px;
    margin-right: 6px;
    border-radius: 2px;
    background: #e0e6ed;
    transition: background 0.25s ease;
}
.patient-verification-form .pv-progress-seg:last-child {
    margin-right: 0;
}
/* Done and current are told apart by hue, not just lightness: cyan reads as behind you and
		   navy as where you are, which survives being viewed on a phone in daylight. */
.patient-verification-form .pv-progress-seg.is-done {
    background: #0097a7;
}
.patient-verification-form .pv-progress-seg.is-current {
    background: #0035d2;
}
.patient-verification-form .pv-progress-text {
    margin: 0;
    font-size: 12px;
    line-height: 1.5;
    text-align: center;
    color: #6c757d;
}
.patient-verification-form .pv-progress-text b {
    font-weight: 600;
    color: #0a2540;
}
/* Sits under a legend to say what the step is for. Muted so the legend stays the heading. */
.patient-verification-form .pv-sublegend {
    margin: 0 0 1rem;
    font-size: 13px;
    line-height: 1.55;
    text-align: center;
    color: #6c757d;
}
/* Date of birth. Three boxes rather than a native date input: a patient born in the 1940s should
	   not have to scroll a calendar back eighty years on a phone, and the keyboard that opens for
	   inputmode="numeric" is the one they want. */
.patient-verification-form .pv-dob {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    -ms-flex-align: end;
        align-items: flex-end;
    margin: 1.5rem auto 0;
}
.patient-verification-form .pv-dob-field {
    text-align: center;
}
.patient-verification-form .pv-dob-field label {
    display: block;
    margin: 0 0 0.35rem;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #6c757d;
}
.patient-verification-form .pv-dob-field input {
    height: 52px;
    font-size: 19px;
    text-align: center;
    padding: 0.5rem;
    font-weight: 600;
    color: #0035d2;
}
.patient-verification-form .pv-dob-field input:focus {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* Driven by aria-invalid, so the visual state and the state announced to a screen reader
			   can never drift apart - the same rule the code boxes follow. */
.patient-verification-form .pv-dob-field input[aria-invalid="true"] {
    border-color: #a94442;
}
.patient-verification-form .pv-dob-day input, .patient-verification-form .pv-dob-month input {
    width: 60px;
}
.patient-verification-form .pv-dob-year input {
    width: 88px;
}
.patient-verification-form .pv-dob-sep {
    padding: 0 0.5rem 1rem;
    font-size: 19px;
    font-weight: 600;
    color: #c0cde0;
}
/* How many wrong answers are left. Shown from the first failure on, and on both credential steps
	   because they share one budget - springing the limit on the patient at the last attempt would be
	   the one moment they could least afford the surprise. */
.patient-verification-form .pv-attempts {
    margin: 1rem 0 0;
    font-size: 12px;
    line-height: 1.5;
    text-align: center;
    color: #6c757d;
}
/* One-time-code boxes. The login page has its own copy of these scoped under
	   .modern-login-page, which does not reach this page. */
.patient-verification-form .verify-input-container {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    margin: 1.5rem auto 0;
}
.patient-verification-form .verify-input-container input {
    width: 48px;
    height: 56px;
    margin: 0 0.375rem;
    font-size: 20px;
    text-align: center;
    padding: 0.5rem;
    font-weight: 600;
    color: #0035d2;
}
.patient-verification-form .verify-input-container input:focus {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* Driven by aria-invalid on the inputs, so the visual state and the state announced to a
			   screen reader can never drift apart. */
.patient-verification-form .verify-input-container input[aria-invalid="true"] {
    border-color: #a94442;
}
.patient-verification-form .pv-error {
    margin: 1rem 0 0;
    font-size: 13px;
    line-height: 1.5;
    text-align: center;
    color: #a94442;
}
/* Resend control. Styled as a link rather than a second button so it never competes with "Verify
	   my details" for the primary action - a patient who did get the code should not have to work out
	   which of two buttons is the one they want. */
.patient-verification-form .pv-resend {
    margin-top: 1rem;
    text-align: center;
}
.patient-verification-form .pv-resend-button {
    display: inline-block;
    padding: 0.5rem 0;
    font-size: 13px;
    line-height: 1.5;
    color: #0097a7;
    background: none;
    border: 0;
    cursor: pointer;
}
.patient-verification-form .pv-resend-button:hover, .patient-verification-form .pv-resend-button:focus {
    text-decoration: underline;
}
/* Greyed out through the cooldown and while the request is in flight. The hint below says
		   why, so this never reads as a dead control. */
.patient-verification-form .pv-resend-button[disabled] {
    color: #6c757d;
    cursor: default;
    text-decoration: none;
}
.patient-verification-form .pv-resend-hint, .patient-verification-form .pv-resend-status {
    margin: 0.25rem 0 0;
    font-size: 13px;
    line-height: 1.5;
    text-align: center;
    color: #6c757d;
}
/* Consent block. Rows are left-aligned inside the centred panel: the help text runs to two or
	   three lines, and centred multi-line text under a checkbox reads as a ragged blob. Each option
	   gets its own wrapper so Bootstrap's `.checkbox-inline + .checkbox-inline { margin-left: 10px }`
	   never matches and both rows share a left edge. */
.patient-verification-form .consent-options {
    text-align: left;
}
.patient-verification-form .consent-options .pv-legend {
    margin-bottom: 1rem;
}
.patient-verification-form .consent-options .consent-intro {
    margin: 0 0 1.5rem;
    font-size: 13px;
    line-height: 1.5;
    color: #6c757d;
}
.patient-verification-form .consent-options .consent-option {
    margin-bottom: 1.5rem;
}
/* The consent itself, as a statement rather than a label: the answer is a pair of buttons
		   below it, so there is nothing for a <label> to point at. */
.patient-verification-form .consent-options .consent-statement {
    margin: 0 0 1rem;
    font-size: 15px;
    line-height: 1.55;
    font-weight: 600;
    color: #0a2540;
}
.patient-verification-form .consent-options .consent-radios {
    margin: 0 0 0.5rem;
}
/* Full-width rows rather than inline radios. Consent has to be an active choice, so Yes and No
		   are given identical weight - neither is styled as the default, and neither is small enough
		   to hit by accident. 52px clears the 44px touch target a thumb needs. */
.patient-verification-form .consent-options .consent-radio {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    width: 100%;
    min-height: 52px;
    padding: 0.75rem 1rem;
    margin: 0 0 0.625rem;
    border: 1px solid #e0e6ed;
    border-radius: 6px;
    background: #fff;
    cursor: pointer;
    font-size: 15px;
    font-weight: 600;
    text-align: left;
    color: #0a2540;
}
.patient-verification-form .consent-options .consent-radio:hover {
    border-color: #c0cde0;
}
.patient-verification-form .consent-options .consent-radio:focus {
    outline: none;
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* Selection is carried by the border and the filled dot together, not by colour alone. */
.patient-verification-form .consent-options .consent-radio.is-selected {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.12);
}
.patient-verification-form .consent-options .consent-radio-dot {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    position: relative;
    width: 20px;
    height: 20px;
    margin-right: 0.7rem;
    border: 2px solid #c0cde0;
    border-radius: 50%;
    background: #fff;
}
.patient-verification-form .consent-options .consent-radio.is-selected .consent-radio-dot {
    border-color: #0035d2;
}
.patient-verification-form .consent-options .consent-radio.is-selected .consent-radio-dot::after {
    content: "";
    position: absolute;
    top: 3px;
    left: 3px;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #0035d2;
}
/* Only shown once the patient has tried to move on without answering, so the step does not
		   open already telling them off. */
.patient-verification-form .consent-options .consent-required {
    margin: 0 0 0.75rem;
    font-size: 12px;
    line-height: 1.5;
    color: #a94442;
}
/* Link-styled, but a real <button> so it is keyboard reachable and announced as a control.
		   The vertical padding is there to give it a thumb-sized hit area, and is cancelled by the
		   margin-top so it still sits tight under its label. */
.patient-verification-form .consent-options .consent-help-toggle {
    display: inline-block;
    padding: 0.5rem 0;
    margin-top: 0;
    font-size: 13px;
    line-height: 1.5;
    text-align: left;
    color: #0097a7;
    background: none;
    border: 0;
    cursor: pointer;
}
.patient-verification-form .consent-options .consent-help-toggle:hover, .patient-verification-form .consent-options .consent-help-toggle:focus {
    color: #008c9e;
    text-decoration: underline;
}
.patient-verification-form .consent-options .consent-help-toggle .glyphicon {
    font-size: 10px;
    margin-right: 0.4rem;
    vertical-align: baseline;
}
.patient-verification-form .consent-options .consent-help p {
    margin: 0 0 0.5rem;
    font-size: 13px;
    line-height: 1.5;
    color: #6c757d;
}
.patient-verification-form .consent-options .consent-help p:last-child {
    margin-bottom: 0;
}
/* The legislation the consent is given under. Left-aligned and ruled off rather than centred:
		   it runs to two or three lines, and centred multi-line text under a question reads as a
		   ragged blob. Repeated on both consent steps because it describes how the data is handled,
		   not what either question is asking. */
.patient-verification-form .consent-options .consent-legal {
    margin: 1rem 0 0;
    padding-top: 1rem;
    border-top: 1px solid #e0e6ed;
    font-size: 12px;
    line-height: 1.6;
    color: #6c757d;
}
/* Keeps each reference whole. The names are legislation titles, and one broken across a
			   line reads as two separate things - which on a consent notice is the wrong impression
			   to give. The paragraph still wraps between them. */
.patient-verification-form .consent-options .consent-legal a {
    white-space: nowrap;
}
.patient-verification-form .pv-actions {
    text-align: center;
}
/* Overrides .btn-navy's 12px / 4px padding from _buttons.css, which is sized for dense app
	   screens and lands well under a 44px touch target. */
.patient-verification-form .pv-submit {
    width: 100%;
    max-width: 320px;
    min-height: 48px;
    padding: 0.75rem 1.5rem;
    font-size: 15px;
    font-weight: 600;
}
/* Offered on the consent steps only - the code and date of birth lock once the server has
	   accepted them.

	   An outlined button rather than the bare link this used to be. As a link it read as fine print
	   under the primary action and was easy to miss entirely, which matters here: it is the only way
	   back to a consent answer the patient wants to change. Outlined rather than filled keeps the
	   hierarchy - Continue is still the one that carries colour - while giving this a real edge, a
	   real hit area and the same width as the button above it. */
.patient-verification-form .pv-back {
    display: inline-block;
    width: 100%;
    max-width: 320px;
    min-height: 44px;
    margin-top: 0.75rem;
    padding: 0.625rem 1.5rem;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.5;
    color: #0035d2;
    background: none;
    border: 1px solid #c0cde0;
    border-radius: 4px;
    cursor: pointer;
}
.patient-verification-form .pv-back:hover, .patient-verification-form .pv-back:focus {
    color: #0035d2;
    border-color: #0035d2;
    background: rgba(0, 53, 210, 0.04);
    text-decoration: none;
}
/* Success and expired-link panels. Both replace the form entirely, so each owns the page's only
	   <h1> and neither competes with the other. */
.patient-verification-form .pv-outcome {
    margin: 0;
    padding: 1.5rem;
    text-align: center;
}
.patient-verification-form .pv-outcome p {
    margin: 0 0 0.5rem;
    font-size: 15px;
    line-height: 1.6;
}
.patient-verification-form .pv-outcome p:last-child {
    margin-bottom: 0;
}
.patient-verification-form .pv-outcome-title {
    margin: 0 0 1rem;
    font-size: 20px;
    line-height: 1.3;
    font-weight: 600;
}
.slideIn {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}
.slideIn.ng-enter, .slideIn.ng-leave {
    transition: all 1s ease;
}
.slideIn.ng-enter {
    left: 100%;
}
.slideIn.ng-enter-active {
    left: 0;
}
.slideIn.ng-leave {
    left: 0;
}
.slideIn.ng-leave-active {
    left: 100%;
}
.slideOut {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}
.slideOut.ng-enter, .slideOut.ng-leave {
    transition: all 1s ease;
}
.slideOut.ng-enter {
    left: -100%;
}
.slideOut.ng-enter-active {
    left: 0;
}
.slideOut.ng-leave {
    left: 0;
}
.slideOut.ng-leave-active {
    left: -100%;
}
.slidedown {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
.slidedown.ng-enter, .slidedown.ng-leave {
    transition: all 1s ease;
}
.slidedown.ng-enter {
    top: -100%;
}
.slidedown.ng-enter-active {
    top: 0;
}
.slidedown.ng-leave {
    top: 0;
}
.slidedown.ng-leave-active {
    top: 100%;
}
.slideup {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 100%;
}
.slideup.ng-enter, .slideup.ng-leave {
    transition: all 1s ease;
}
.slideup.ng-enter {
    top: 100%;
}
.slideup.ng-enter-active {
    top: 0;
}
.slideup.ng-leave {
    top: 0;
}
.slideup.ng-leave-active {
    top: -100%;
}
.ai-full-content {
    height: 100%;
}
/* --- Main Layout Container --- */
.ai-agent-main {
    /* Changed from margin to padding so height: 100% works correctly */
    height: 100%;
    width: 100%;
    padding: 2rem; 
    box-sizing: border-box;
    
    /* ENABLES THE STICKY FOOTER LAYOUT */
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
/* --- Scrollable Content Area --- */
/* This targets the container holding the tables and forms */
.dialog-content-box, .ai-scroll {
    /* Grow to fill empty space */
    -ms-flex: 1;
        flex: 1; 
    
    /* Handle Scrolling */
    overflow-y: auto; 
    overflow-x: hidden;
    
    /* Remove fixed heights */
    height: auto; 
    width: 100%;
    
    /* Add breathing room for scrollbar */
    padding-right: 5px; 
    padding-left: 1rem;
    
    /* Fix for Firefox flex scrolling */
    min-height: 0; 
}
/* --- Footer Buttons --- */
.ai-agent-footer {
    width: 100%;
    
    /* Layout */
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 1rem;
    position: relative; 
    bottom: auto;
    -ms-flex-negative: 0;
        flex-shrink: 0; 
    padding-top: 1.5rem;
    margin-top: auto; 
    background-color: inherit;
    z-index: 10;
}
/* --- Utility Classes --- */
.ai-agent-item-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 1rem;
}
/* --- Animations --- */
.playing i {
    animation: flash 1s infinite;
    color: #e91e63;
}
@keyframes flash {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.3; }
}
/* --- Transcription styles --- */
.tr-compact-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    padding: 6px 10px;
    border-radius: 4px;
    min-height: 42px;
}
/* Standardized 30x30 square buttons for icons */
.tr-icon-btn {
    height: 30px;
    width: 32px;
    padding: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.tr-mic-selector {
    margin-bottom: 0;
    max-width: 160px;
}
.tr-mic-selector .form-control {
        height: 30px;
        padding: 4px 8px;
    }
.tr-mic-icon-addon {
    padding: 4px 8px;
    border: none;
    background: transparent;
}
.tr-timer-display {
    font-family: monospace;
    font-size: 1.2em;
    font-weight: bold;
    padding: 0 10px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.tr-toolbar-divider {
    width: 1px;
    height: 20px;
    background-color: #ccc;
    margin: 0 2px;
}
.tr-permission-error {
    margin-top: 4px;
    font-weight: bold;
}
.blink {
    animation: blinker 1.5s linear infinite;
}
@keyframes blinker {
    50% {
        opacity: 0;
    }
}
/*
 * ===================================================================
 * Themed Quill Editor Component
 * ===================================================================
 */
/* --- 1. Theme Variables --- */
:root {
    --ql-font-family: 'Gordita Regular', sans-serif;
    --ql-border-radius: 8px;
    --ql-border-color: #949599; 
    --ql-accent-color: #0035d2; 
    --ql-white-color: #ffffff;
    --ql-text-bg-color: #f2f6fb; 
    --ql-toolbar-bg-color: #ebecea; 
    --ql-text-color: #404141; 
    --ql-subtle-border-color: #bccad2; 
}
/* --- 2. Main Editor Container --- */
.ql-toolbar, .ql-container {
    font-family: var(--ql-font-family);
    border-color: var(--ql-border-color) !important;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
/* --- 3. Toolbar UI --- */
.ql-toolbar {
    background: var(--ql-toolbar-bg-color);
    border-top-left-radius: var(--ql-border-radius);
    border-top-right-radius: var(--ql-border-radius);
    border-bottom: 1px solid var(--ql-border-color) !important;
}
.ql-toolbar .ql-stroke {
        stroke: var(--ql-text-color);
    }
.ql-toolbar .ql-fill {
        fill: var(--ql-text-color);
    }
.ql-toolbar .ql-picker-label {
        color: var(--ql-text-color);
    }
.ql-toolbar button:hover, .ql-toolbar .ql-picker-label:hover {
            background: rgba(0, 0, 0, 0.05);
        }
.ql-toolbar button.ql-active, .ql-toolbar .ql-picker-label.ql-active {
            background: rgba(0, 53, 210, 0.1); 
        }
.ql-toolbar .ql-tooltip {
        display: none !important;
    }
/* --- 4. Editable Content Area --- */
.ql-container {
    border-bottom-left-radius: var(--ql-border-radius);
    border-bottom-right-radius: var(--ql-border-radius);
    background: var(--ql-text-bg-color);
}
.ql-editor {
    min-height: 250px;
    color: var(--ql-text-color);
    padding: 1rem 1.5rem;
}
.ql-editor.ql-blank::before {
        color: #949599;
        font-style: normal;
        left: 1.5rem;
    }
/* --- 5. Focus State --- */
.ql-container.ql-focus {
    border-color: var(--ql-accent-color) !important;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.25);
}
.ql-toolbar.ql-focus {
    border-color: var(--ql-accent-color) !important;
}
/* --- 6. Content Styling --- */
.ql-editor h1, .ql-editor h2, .ql-editor h3 {
    color: var(--ql-text-color);
    font-weight: 700;
    border-bottom: 1px solid var(--ql-subtle-border-color);
    padding-bottom: 0.3em;
    margin-bottom: 0.8em;
}
.ql-editor h1 {
    font-size: 2em;
}
.ql-editor h2 {
    font-size: 1.75em;
}
.ql-editor h3 {
    font-size: 1.5em;
}
.ql-editor p, .ql-editor ol, .ql-editor ul {
    font-size: 1rem;
    line-height: 1.7;
    color: var(--ql-text-color);
}
.ql-editor a {
    color: var(--ql-accent-color);
    text-decoration: none;
    font-weight: 700;
}
.ql-editor a:hover {
        text-decoration: underline;
    }
/* --- 7. Font Family Selector --- */
.ql-snow .ql-picker.ql-font {
    width: 130px;
}
/* Default option (no font value) is the theme font, Gordita Regular. */
.ql-snow .ql-picker.ql-font .ql-picker-label::before, .ql-snow .ql-picker.ql-font .ql-picker-item::before {
    content: 'Gordita Regular';
    font-family: 'Gordita Regular', sans-serif;
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="arial"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="arial"]::before {
    content: 'Arial';
    font-family: Arial, sans-serif;
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="georgia"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="georgia"]::before {
    content: 'Georgia';
    font-family: Georgia, serif;
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="times-new-roman"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="times-new-roman"]::before {
    content: 'Times New Roman';
    font-family: 'Times New Roman', Times, serif;
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="courier-new"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="courier-new"]::before {
    content: 'Courier New';
    font-family: 'Courier New', Courier, monospace;
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="verdana"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="verdana"]::before {
    content: 'Verdana';
    font-family: Verdana, Geneva, sans-serif;
}
/* Apply the chosen font to the editor content. */
.ql-font-arial {
    font-family: Arial, sans-serif;
}
.ql-font-georgia {
    font-family: Georgia, serif;
}
.ql-font-times-new-roman {
    font-family: 'Times New Roman', Times, serif;
}
.ql-font-courier-new {
    font-family: 'Courier New', Courier, monospace;
}
.ql-font-verdana {
    font-family: Verdana, Geneva, sans-serif;
}
.quill-viewer-container {
    --ql-text-bg-color: transparent;
}
.quill-viewer-container.ql-container {
        border: none !important;
    }
.quill-viewer-container.ql-container .ql-editor {
            min-height: 0;
            padding: 0;
            color: inherit;
            border: none !important;
        }
.quill-viewer-container.ql-container .ql-editor a {
                color: inherit;
                font-weight: inherit;
            }
/* =================================================================== */
/* ! Payment Settings
/* =================================================================== */
/* --- Main View Container --- */
.payment-settings-main {
    height: 100%;
    width: 100%;
    padding: 20px 30px;
    background-color: #f4f7fe;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    overflow-y: auto;
}
/* --- Typography Overrides --- */
.payment-settings-main h3, .payment-settings-main h4, .payment-settings-main h5 {
    font-family: 'Gordita Bold', sans-serif;
    margin-top: 0;
}
/* =================================================================== */
/* ! Hero Section (Digital Wallet)
/* =================================================================== */
.wallet-hero-section {
    width: 100%;
    margin-bottom: 25px;
}
.wallet-card-visual {
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    border-radius: 16px;
    padding: 25px 35px;
    color: #ffffff;
    box-shadow: 0 8px 20px rgba(0, 53, 210, 0.25);
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    position: relative;
    overflow: hidden;
}
.wallet-card-visual::after {
    content: '';
    position: absolute;
    right: -50px;
    top: -50px;
    width: 200px;
    height: 200px;
    background: rgba(255,255,255,0.1);
    border-radius: 50%;
    pointer-events: none;
}
.wallet-card-visual .wallet-info {
    z-index: 1;
}
.wallet-card-visual .wallet-info h5 {
    color: rgba(255, 255, 255, 0.8);
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 12px;
    margin-bottom: 10px;
}
.wallet-card-visual .wallet-info h1 {
    font-size: 42px;
    font-weight: 700;
    margin: 0;
    line-height: 1;
}
.wallet-card-visual .wallet-info h1 small {
    font-size: 16px;
    color: rgba(255, 255, 255, 0.8);
    font-weight: 400;
    margin-left: 5px;
}
.wallet-card-visual .wallet-status {
    text-align: right;
    z-index: 1;
}
.wallet-card-visual .wallet-status .status-badge {
    background: rgba(255,255,255,0.2);
    padding: 6px 12px;
    border-radius: 20px;
    font-size: 12px;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.wallet-card-visual .wallet-status .status-badge.active {
    background: #ffffff;
    color: #20c997;
}
.wallet-card-visual .wallet-status .status-badge.inactive {
    color: rgba(255,255,255,0.7);
}
/* =================================================================== */
/* ! Grid Layout
/* =================================================================== */
.settings-grid {
    display: -ms-flexbox;
    display: flex;
    gap: 20px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.grid-col-left {
    -ms-flex: 3;
        flex: 3;
    min-width: 300px;
}
.grid-col-right {
    -ms-flex: 2;
        flex: 2;
    min-width: 280px;
}
/* =================================================================== */
/* ! Card Components
/* =================================================================== */
.settings-card {
    background-color: #fff;
    border: none;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    padding: 25px;
    height: 100%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
.settings-card .card-header, .settings-card .card-header-flex {
    border-bottom: 1px solid #e0e6ed;
    padding-bottom: 15px;
    margin-bottom: 20px;
}
.settings-card .card-header h4, .settings-card .card-header-flex h4 {
    color: #0035d2;/* $navy */
    margin: 0;
    font-size: 16px;
    font-weight: 700;
}
.settings-card .card-header-flex {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
}
.settings-card .card-body {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
/* =================================================================== */
/* ! Backup Card & Footer Warnings
/* =================================================================== */
.settings-card .backup-missing-footer {
    background-color: #fff5f5;
    border-top: 1px solid #ffe5cc;
    padding: 12px 20px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    margin-left: -25px;
    margin-right: -25px;
    margin-bottom: -25px;
    margin-top: auto;
    border-bottom-left-radius: 12px;
    border-bottom-right-radius: 12px;
}
.settings-card .backup-missing-footer .warning-text {
    color: #856404;
    font-size: 12px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
}
.settings-card .backup-missing-footer .warning-text i {
    margin-right: 8px;
    color: #ffab00;
    font-size: 14px;
}
.settings-card .backup-missing-footer .warning-text strong {
    margin-right: 4px;
    font-family: 'Gordita Bold', sans-serif;
}
.settings-card .backup-missing-footer .btn-outline-warning {
    border: 1px solid #ffab00;
    color: #ffab00;
    background: transparent;
    font-size: 10px;
    font-weight: 700;
    padding: 6px 12px;
    border-radius: 15px;
    white-space: nowrap;
    transition: all 0.2s ease;
    cursor: pointer;
}
.settings-card .backup-missing-footer .btn-outline-warning:hover {
    background-color: #ffab00;
    color: #ffffff;
}
/* =================================================================== */
/* ! Left Column: Auto-Reload Inputs
/* =================================================================== */
.setting-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    padding: 15px 0;
    border-bottom: 1px dashed #e0e6ed;
}
.setting-row:last-of-type {
    border-bottom: none;
}
.setting-row .setting-icon {
    width: 40px;
    height: 40px;
    background-color: #f4f7fe;
    color: #0035d2;
    border-radius: 8px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    margin-right: 15px;
    font-size: 18px;
}
.setting-row .setting-content {
    -ms-flex: 1;
        flex: 1;
}
.setting-row .setting-content label {
    display: block;
    font-size: 13px;
    color: #555;
    margin-bottom: 5px;
    font-weight: 600;
}
.setting-row .setting-content .helper-text {
    font-size: 11px;
    color: #888;
    margin-top: 4px;
}
.setting-row .setting-input-wrapper {
    position: relative;
    width: 100px;
}
.setting-row .setting-input-wrapper input {
    width: 100%;
    padding: 8px 12px;
    padding-right: 20px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    text-align: right;
    color: #0035d2;
    font-weight: bold;
    font-size: 14px;
    transition: all 0.2s;
}
.setting-row .setting-input-wrapper input:focus {
    border-color: #0035d2;
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
}
.setting-row .setting-input-wrapper input:disabled {
    background-color: #f9f9f9;
    color: #aaa;
}
/* Toggle Switch */
.toggle-switch {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
}
.toggle-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}
.toggle-switch .slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #ccc;
    transition: .4s;
    border-radius: 24px;
}
.toggle-switch .slider:before {
    position: absolute;
    content: "";
    height: 18px;
    width: 18px;
    left: 3px;
    bottom: 3px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
}
.toggle-switch input:checked + .slider {
    background-color: #20c997;
}
.toggle-switch input:focus + .slider {
    box-shadow: 0 0 1px #20c997;
}
.toggle-switch input:checked + .slider:before {
    transform: translateX(20px);
}
.disabled-overlay {
    opacity: 0.5;
    pointer-events: none;
    transition: opacity 0.3s;
}
.save-status-indicator {
    height: 20px;
    margin-top: auto;
    text-align: right;
    font-size: 12px;
    font-style: italic;
    color: #20c997;
    transition: opacity 0.3s;
}
.save-status-indicator.error {
    color: #d9534f;
}
/* =================================================================== */
/* ! Right Column: Payment Method (Redesigned)
/* =================================================================== */
/* Center container for the right column */
.payment-card-content {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: start;
        justify-content: flex-start;
    text-align: center;
    height: 100%;
    width: 100%;
    padding: 30px 20px;
}
/* Credit Card Visual Box */
.cc-visual {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: start;
        justify-content: flex-start;
    gap: 20px;
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 20px 25px;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.08); 
    width: 100%;
    max-width: 380px; 
    margin-bottom: 25px;
}
.cc-visual .cc-icon {
    color: #0035d2;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 50px;
}
.cc-visual .cc-text {
    -ms-flex: 1;
        flex: 1;
    text-align: left;
}
.cc-visual .cc-text h5 {
    margin: 0;
    font-size: 18px;
    color: #333;
    font-weight: 700;
    letter-spacing: 1px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
}
/* New class for the masked dots */
.cc-visual .cc-text .masked-dots {
    font-size: 24px;
    line-height: 10px;
    margin-right: 8px;
    position: relative;
    top: 4px;
    color: #888;
}
.cc-visual .cc-text p {
    margin: 5px 0 0 0;
    font-size: 13px;
    color: #888;
    font-weight: 500;
}
/* Stripe Input Container (Constrained width) */
.stripe-input-container {
    width: 100%;
    max-width: 380px;
    margin: 0 auto;
}
#card-element {
    border: 1px solid #0035d2;
    border-radius: 20px;
    padding: 12px 15px;
    background: white;
    margin-bottom: 0;
}
#card-errors {
    margin-top: 5px;
    min-height: 18px;
    text-align: center;
}
/* Buttons (Centered & Constrained) */
.vertical-buttons {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    width: 100%;
}
.btn-centered {
    width: 100% !important;
    max-width: 240px;
    margin: 5px 0;
}
/* =================================================================== */
/* ! Usage History Table
/* =================================================================== */
.usage-container {
    background: white;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    
    max-height: calc(170vh);
    overflow-y: auto;
    position: relative;
}
.usage-container table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 0;
}
.usage-container table th {
    background: #f4f7fe;
    color: #0035d2;
    padding: 15px;
    text-align: left;
    font-weight: bold;
    font-size: 13px;
    white-space: nowrap;
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 10;
    box-shadow: inset 0 -1px 0 #eee;
}
.usage-container table td {
    padding: 15px;
    border-bottom: 1px solid #eee;
    color: #343a40;
    font-size: 13px;
    vertical-align: middle;
}
.usage-container table td small {
    display: block;
    color: #98a6ad;
    font-size: 11px;
    margin-top: 2px;
    font-weight: 400;
}
.usage-container table tr:last-child td {
    border-bottom: none;
}
/* Optional: Custom scrollbar for the table container */
.usage-container::-webkit-scrollbar {
    width: 6px;
}
.usage-container::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.1);
    border-radius: 10px;
}
.usage-container .label {
    font-size: 10px;
    padding: 3px 8px;
    border-radius: 4px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-weight: 600;
    display: inline-block;
    line-height: 1.5;
}
/* Custom Scrollbar for the Main Container */
.payment-settings-main::-webkit-scrollbar {
    width: 6px;
}
.payment-settings-main::-webkit-scrollbar-track {
    background: transparent; 
}
.payment-settings-main::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.1); /* Light Navy */
    border-radius: 20px;
}
.payment-settings-main:hover::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.3);
}
/* Utility */
.mt-auto { margin-top: auto; }
/* Card Switcher Header */
.card-switcher {
    background: #f4f7fe;
    padding: 4px 12px;
    border-radius: 15px;
    color: #0035d2;
    font-size: 14px;
    transition: all 0.2s;
}
.card-switcher:hover {
    background: #0035d2;
    color: white;
}
/* Backup Card Visual Variant */
.cc-visual.backup-style {
    border: 1px dashed #ffab00;
    box-shadow: 0 4px 12px rgba(255, 171, 0, 0.1);
}
.cc-visual.backup-style .cc-icon {
    color: #ffab00;
}
/* Helper Colors */
.text-warning { color: #ffab00 !important; }
.btn-warning {
    background-color: #ffab00 !important;
    color: white !important;
    border-radius: 20px;
    font-weight: bold;
}
.btn-warning:hover {
    background-color: #e69a00 !important;
}
/* Snappy Fading for Buttons */
.animate-fade.ng-enter, .animate-fade.ng-leave {
    transition: 150ms cubic-bezier(0.250, 0.460, 0.450, 0.940) all;
}
.animate-fade.ng-enter, .animate-fade.ng-leave.ng-leave-active {
    opacity: 0;
}
.animate-fade.ng-leave, .animate-fade.ng-enter.ng-enter-active {
    opacity: 1;
}
/* Ensure buttons don't jump layout when switching */
.vertical-buttons {
    min-height: 50px;
    position: relative;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
}
.animate-fade {
    width: 100%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
}
/* --- Universal Token Section --- */
.universal-token-section {
    margin-bottom: 25px;
}
/* Header & Title Styling */
.token-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 15px;
    margin-bottom: 18px;
    padding-left: 5px;
}
.token-circle-icon {
    width: 46px;
    height: 46px;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: white;
    border-radius: 12px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 18px;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.15);
    -ms-flex-negative: 0;
        flex-shrink: 0; /* Prevents icon from squishing */
}
.token-title-group {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-pack: center;
        justify-content: center;
}
.premium-title {
    margin: 0;
    font-size: 20px;
    font-family: 'Gordita Bold', sans-serif;
    color: #2a307f;
    letter-spacing: -0.02em;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    line-height: 1.2;
}
.title-separator {
    width: 4px;
    height: 4px;
    background-color: #0035d2;
    border-radius: 50%;
    opacity: 0.4;
    display: inline-block;
}
.premium-subtitle {
    margin: 4px 0 0 0 !important;
    font-size: 13px;
    color: #878ba0;
    font-weight: 400;
}
.premium-title {
    margin: 0;
    font-size: 20px;
    font-family: 'Gordita Bold', sans-serif;
    color: #2a307f;
    letter-spacing: -0.02em;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    line-height: 1.2;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.token-price-badge {
    font-size: 11px;
    background-color: #e6fffa; 
    color: #20c997; 
    padding: 4px 10px;
    border-radius: 20px;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    border: 1px solid rgba(32, 201, 151, 0.2);
    font-family: sans-serif;
}
/* Grid & Items Styling */
.token-value-grid {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
}
.token-item {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    background: #ffffff;
    padding: 12px 15px;
    border-radius: 12px;
    border: 1px solid #e0e6ed;
    transition: transform 0.2s ease;
}
.token-item:hover {
    transform: translateY(-2px);
    border-color: #cbd5e0;
}
.item-icon {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    margin-right: 12px;
    font-size: 15px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.item-icon.ai-agent { background: #e7f0ff; color: #0035d2; }
.item-icon.sms { background: #e6fffa; color: #20c997; }
.item-icon.transcription { background: #fff4e5; color: #ffab00; }
.item-details {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
.item-label {
    font-size: 10px;
    color: #888;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    line-height: 1.4;
}
.item-value {
    font-size: 14px;
    font-weight: 700;
    color: #333;
    line-height: 1.2;
}
.item-value small {
    font-weight: 500;
    color: #0035d2;
    font-size: 13px;
}
.btn-outline-white {
    background-color: rgba(255, 255, 255, 0.15);
    border: 1px solid rgba(255, 255, 255, 0.5);
    color: #ffffff;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 8px 12px;
    border-radius: 20px;
    transition: all 0.2s ease;
    width: 100%;
    margin-top: 5px;
}
.btn-outline-white:hover:not(:disabled) {
    background-color: #ffffff;
    color: #0035d2;
    border-color: #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.15);
    cursor: pointer;
}
.btn-outline-white:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.btn-outline-white i {
    margin-right: 5px;
}
/* Responsive Logic */
@media (max-width: 992px) {
    .token-value-grid {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }
    .token-item {
        min-width: calc(50% - 12px);
    }
}
@media (max-width: 600px) {
    .token-item {
        min-width: 100%;
    }
    .premium-title {
        font-size: 18px;
    }
}
/* =================================================================== */
/* ! AI Transcription Seats
/* Shared by the seat plan dialog and the seat assignment / usage dialog.
/* =================================================================== */
/* The component sits directly inside an md-tab, so its host element has to carry the height itself. */
transcription-seats-view {
    display: block;
    height: 100%;
}
.seat-main {
    height: 100%;
    width: 100%;
    padding: 20px 30px;
    background-color: #f4f7fe;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    overflow-y: auto;
}
.seat-main h3, .seat-main h4, .seat-main h5 {
    font-family: 'Gordita Bold', sans-serif;
    margin-top: 0;
}
/* =================================================================== */
/* ! Section switcher
/* Buying, assigning and reporting are one view over one load of the
/* subscription, so they switch here rather than through the dialog's
/* own tabs.
/* =================================================================== */
.seat-subnav {
    display: -ms-flexbox;
    display: flex;
    gap: 6px;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 5px;
    margin-bottom: 18px;
}
.seat-subnav button {
    position: relative;
    -ms-flex: 1;
        flex: 1;
    border: 0;
    background: transparent;
    border-radius: 8px;
    padding: 9px 12px;
    font-size: 13px;
    font-weight: 600;
    color: #6c757d;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.seat-subnav button i {
    margin-right: 6px;
}
.seat-subnav button:hover:not(.active) {
    background: #f8f9fa;
    color: #2a307f;
}
.seat-subnav button.active {
    background: #0035d2;
    color: #ffffff;
}
/* =================================================================== */
/* ! Callouts
/* =================================================================== */
.seat-alert {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 12px 18px;
    border-radius: 10px;
    margin-bottom: 14px;
    font-size: 13px;
    line-height: 1.45;
    border-left: 4px solid transparent;
}
.seat-alert > i {
    font-size: 16px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-alert > span {
    -ms-flex: 1;
        flex: 1;
}
/* The shared .btn rules stretch to 220px, which reads as a slab on a single-line callout. */
.seat-alert .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: auto;
}
.seat-alert.tight {
    margin: 12px 0 0;
    padding: 8px 12px;
    font-size: 12px;
}
.seat-alert.info {
    background-color: #e7f0ff;
    border-left-color: #0035d2;
    color: #2a307f;
}
.seat-alert.warning {
    background-color: rgba(255, 243, 205, 0.9);
    border-left-color: rgba(255, 193, 7, 0.7);
    color: #856404;
}
.seat-alert.danger {
    background-color: rgba(217, 83, 79, 0.1);
    border-left-color: #d9534f;
    color: #a94442;
}
.seat-alert.trial {
    background-color: rgba(0, 188, 212, 0.1);
    border-left-color: #00bcd4;
    color: #00796b;
}
/* =================================================================== */
/* ! Subscription status strip
/* =================================================================== */
.seat-status-strip {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 40px;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 16px 24px;
    margin-bottom: 18px;
}
.seat-status-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 4px;
}
.seat-status-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
    font-weight: 600;
}
.seat-status-value {
    font-size: 16px;
    font-weight: 700;
    color: #2a307f;
}
.seat-pill {
    display: inline-block;
    padding: 3px 12px;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.seat-pill.pill-active {
    background-color: rgba(32, 201, 151, 0.2);
    color: #12805c;
}
.seat-pill.pill-warning {
    background-color: rgba(255, 182, 39, 0.3);
    color: #856404;
}
.seat-pill.pill-danger {
    background-color: rgba(217, 83, 79, 0.15);
    color: #a94442;
}
.seat-pill.pill-muted {
    background-color: #ebecea;
    color: #6c757d;
}
/* =================================================================== */
/* ! Plan picker layout
/* =================================================================== */
.seat-plan-layout {
    display: -ms-flexbox;
    display: flex;
    gap: 22px;
    -ms-flex-align: start;
        align-items: flex-start;
}
.seat-plan-column {
    -ms-flex: 1 1 60%;
        flex: 1 1 60%;
    min-width: 0;
}
.seat-summary-column {
    -ms-flex: 0 0 320px;
        flex: 0 0 320px;
    position: -webkit-sticky;
    position: sticky;
    top: 0;
}
/* =================================================================== */
/* ! Seat tier card
/* Two tiers, side by side and equal height, so choosing between them is
/* one comparison rather than a scroll.
/* =================================================================== */
.seat-tier-grid {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: stretch;
        align-items: stretch;
    gap: 16px;
    margin-bottom: 16px;
}
.seat-tier-card {
    position: relative;
    -ms-flex: 1 1 0px;
        flex: 1 1 0;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    overflow: hidden;
    transition: box-shadow 0.2s ease, border-color 0.2s ease;
}
.seat-tier-card:hover {
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.seat-tier-card.recommended {
    border-color: #0035d2;
    box-shadow: 0 4px 14px rgba(0, 53, 210, 0.12);
}
.seat-tier-flag {
    position: absolute;
    top: 0;
    right: 0;
    background: #0035d2;
    color: #ffffff;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.8px;
    padding: 4px 14px;
    border-bottom-left-radius: 8px;
}
.seat-tier-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 20px 24px 10px;
}
.seat-tier-header h4 {
    margin: 0;
    font-size: 17px;
    color: #2a307f;
}
.seat-tier-icon {
    width: 46px;
    height: 46px;
    border-radius: 50%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 18px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-tier-icon.standard {
    background: #e7f0ff;
    color: #0035d2;
}
.seat-tier-icon.premium {
    background: rgba(162, 155, 254, 0.2);
    color: #9C27B0;
}
.seat-tier-price {
    padding: 0 24px;
}
.seat-tier-price .amount {
    font-size: 30px;
    font-weight: 700;
    color: #2a307f;
    letter-spacing: -0.02em;
}
.seat-tier-price .period {
    margin-left: 6px;
    font-size: 12px;
    color: #6c757d;
}
.seat-tier-included {
    margin: 4px 0 0;
    padding: 0 24px;
    font-size: 13px;
    color: #343a40;
}
/* Pushed to the bottom of the card so both steppers line up whatever the copy above does. */
.seat-tier-body {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 18px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    margin-top: auto;
    padding: 18px 24px 20px;
}
.seat-tier-state {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 2px;
    font-size: 12px;
    color: #6c757d;
}
.seat-stepper {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    overflow: hidden;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-step-btn {
    width: 40px;
    height: 42px;
    border: 0;
    background: #f8f9fa;
    color: #0035d2;
    font-size: 13px;
    cursor: pointer;
    transition: background 0.15s ease;
}
.seat-step-btn:hover:not([disabled]) {
    background: #e7f0ff;
}
.seat-step-btn[disabled] {
    color: #bdbec1;
    cursor: not-allowed;
}
.seat-step-input {
    width: 68px;
    height: 42px;
    border: 0;
    border-left: 1px solid #e0e6ed;
    border-right: 1px solid #e0e6ed;
    text-align: center;
    font-size: 18px;
    font-weight: 700;
    color: #2a307f;
    background: #ffffff;

    /* The + and - buttons either side are the only steppers: the browser's own arrows sit inside the
       box, are far too small to aim at, and step past the minimum the practice is allowed to keep. */
    -moz-appearance: textfield;
    -webkit-appearance: textfield;
            appearance: textfield;
}
.seat-step-input::-webkit-outer-spin-button, .seat-step-input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.seat-step-input:focus {
    outline: none;
    background: #e7f0ff;
}
.seat-overflow-note {
    display: -ms-flexbox;
    display: flex;
    gap: 12px;
    -ms-flex-align: start;
        align-items: flex-start;
    background: #ffffff;
    border: 1px dashed #c0cde0;
    border-radius: 10px;
    padding: 14px 18px;
    font-size: 12px;
    color: #6c757d;
    line-height: 1.5;
}
.seat-overflow-note i {
    color: #0035d2;
    font-size: 15px;
    margin-top: 2px;
}
/* =================================================================== */
/* ! Order summary
/* =================================================================== */
.seat-summary-card {
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.seat-summary-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    padding: 14px 20px;
}
.seat-summary-header h4 {
    margin: 0;
    color: #ffffff;
    font-size: 15px;
    letter-spacing: 0.5px;
}
.seat-summary-currency {
    font-size: 11px;
    font-weight: 600;
    opacity: 0.8;
}
.seat-summary-body {
    padding: 18px 20px;
    min-height: 120px;
}
.seat-summary-loading, .seat-summary-empty {
    text-align: center;
    color: #6c757d;
    font-size: 13px;
    padding: 24px 0;
}
.seat-summary-loading i, .seat-summary-empty i {
    margin-right: 6px;
}
.summary-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: baseline;
        align-items: baseline;
    padding: 8px 0;
    border-bottom: 1px solid #e0e6ed;
    font-size: 13px;
}
.summary-line.total {
    border-bottom: 0;
    border-top: 2px solid #2a307f;
    margin-top: 6px;
    padding-top: 12px;
    font-size: 16px;
    font-weight: 700;
    color: #2a307f;
}
.summary-label {
    color: #343a40;
}
.summary-label small {
    display: block;
    color: #6c757d;
    font-size: 11px;
}
.summary-amount {
    font-weight: 700;
    color: #2a307f;
    white-space: nowrap;
}
.summary-charge {
    margin-top: 14px;
    padding: 12px 14px;
    border-radius: 8px;
    background: #e7f0ff;
}
.summary-charge.downgrade {
    background: rgba(255, 243, 205, 0.9);
}
.summary-charge.downgrade .charge-row {
    color: #856404;
}
.charge-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    font-size: 13px;
    font-weight: 600;
    color: #2a307f;
}
.charge-row strong {
    font-size: 16px;
}
.charge-note {
    margin: 6px 0 0;
    font-size: 11px;
    line-height: 1.45;
    color: #6c757d;
}
.summary-next {
    margin-top: 12px;
    font-size: 11px;
    color: #6c757d;
    text-align: center;
}
.seat-summary-footer {
    border-top: 1px solid #e0e6ed;
    padding: 16px 20px;
    background: #f8faff;
}
.seat-summary-footer .btn {
    margin-bottom: 8px;
}
/* The global .btn-navy is capped at 220px, which leaves the block button
       hugging the left edge of the card. Span the footer instead. */
.seat-summary-footer .btn-block {
    max-width: none;
}
.seat-validation {
    background: rgba(255, 243, 205, 0.9);
    color: #856404;
    border-radius: 8px;
    padding: 9px 12px;
    font-size: 12px;
    line-height: 1.4;
    margin-bottom: 12px;
}
.seat-validation i {
    margin-right: 5px;
}
.seat-validation-action {
    display: block;
    margin: 8px 0 0;
}
.seat-feedback {
    display: block;
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 10px;
}
.seat-feedback i {
    margin-right: 5px;
}
.seat-feedback.error {
    color: #a94442;
}
.seat-feedback.success {
    color: #12805c;
}
.seat-renew-note {
    font-size: 11px;
    line-height: 1.4;
    color: #6c757d;
    text-align: center;
    margin: 2px 0 0;
}
.seat-cancel-link {
    display: block;
    text-align: center;
    font-size: 12px;
    color: #6c757d;
    cursor: pointer;
    margin-top: 4px;
}
.seat-cancel-link:hover {
    color: #a94442;
    text-decoration: underline;
}
/* =================================================================== */
/* ! Seat availability header
/* =================================================================== */
.seat-availability-row {
    display: -ms-flexbox;
    display: flex;
    gap: 16px;
    margin-bottom: 18px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.seat-availability-card {
    -ms-flex: 1 1 240px;
        flex: 1 1 240px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 14px 18px;
    border-left-width: 4px;
}
.seat-availability-card.standard {
    border-left-color: #0035d2;
}
.seat-availability-card.premium {
    border-left-color: #9C27B0;
}
.seat-availability-card.ghost {
    border-style: dashed;
    border-left-width: 1px;
    cursor: pointer;
    color: #6c757d;
    background: transparent;
}
.seat-availability-card.ghost:hover {
    border-color: #0035d2;
    color: #0035d2;
}
.availability-icon {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: #f8f9fa;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    color: #0035d2;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.availability-detail {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.availability-label {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
    font-weight: 600;
}
.availability-count {
    display: block;
    font-size: 17px;
    font-weight: 700;
    color: #2a307f;
}
.availability-count small {
    font-size: 11px;
    font-weight: 400;
    color: #6c757d;
}
.availability-bar {
    height: 5px;
    border-radius: 3px;
    background: #ebecea;
    margin-top: 6px;
    overflow: hidden;
}
.availability-fill {
    height: 100%;
    background: #0035d2;
    transition: width 0.25s ease;
}
.availability-remaining {
    text-align: center;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding-left: 12px;
    border-left: 1px solid #e0e6ed;
}
.availability-remaining.none-left .remaining-number {
    color: #6c757d;
}
.remaining-number {
    display: block;
    font-size: 22px;
    font-weight: 700;
    color: #20c997;
    line-height: 1.1;
}
.remaining-label {
    display: block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
}
/* =================================================================== */
/* ! Table toolbar
/* =================================================================== */
.seat-table-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    margin-bottom: 12px;
}
.seat-search {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    padding: 6px 14px;
    width: 320px;
    max-width: 100%;
}
.seat-search i {
    color: #6c757d;
    font-size: 12px;
}
.seat-search input {
    border: 0;
    outline: none;
    -ms-flex: 1;
        flex: 1;
    font-size: 13px;
    background: transparent;
    min-width: 0;
}
.seat-table-count {
    font-size: 12px;
    color: #6c757d;
    font-weight: 600;
}
.seat-period-selector {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
}
.seat-period-selector label {
    margin: 0;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
    font-weight: 600;
}
.seat-period-selector select {
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    padding: 6px 10px;
    font-size: 13px;
    background: #ffffff;
    color: #2a307f;
    min-width: 220px;
}
/* =================================================================== */
/* ! Seat tables
/* =================================================================== */
.seat-table-wrapper {
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    overflow: hidden;
}
.seat-table {
    margin-bottom: 0;
}
.seat-table > thead > tr > th {
    background: #f8faff;
    border-bottom: 1px solid #e0e6ed;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
    font-weight: 700;
    padding: 12px 16px;
}
.seat-table > tbody > tr > td {
    padding: 12px 16px;
    vertical-align: middle;
    border-top: 1px solid #e0e6ed;
    font-size: 13px;
}
.seat-table > tbody > tr {
    transition: background 0.15s ease;
}
.seat-table > tbody > tr:hover {
    background: #f2f6fb;
}
.seat-table > tbody > tr.row-saving {
    background: #e7f0ff;
}
.seat-table > tbody > tr.row-saving:hover {
    background: #e7f0ff;
}
.seat-table > tbody > tr.row-orphaned {
    background: rgba(255, 243, 205, 0.5);
}
.seat-user {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
}
.seat-avatar {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-weight: 700;
    font-size: 14px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-avatar.tier-standard {
    background: #0035d2;
    color: #ffffff;
}
.seat-avatar.tier-premium {
    background: #9C27B0;
    color: #ffffff;
}
.seat-avatar.tier-trial {
    background: #00bcd4;
    color: #ffffff;
}
.seat-avatar.tier-none {
    background: #ebecea;
    color: #6c757d;
}
.seat-user-detail {
    min-width: 0;
}
.seat-user-name {
    display: block;
    font-weight: 600;
    color: #2a307f;
}
.seat-user-email {
    display: block;
    font-size: 11px;
    color: #6c757d;
    overflow: hidden;
    text-overflow: ellipsis;
}
.seat-user-assigned {
    display: block;
    font-size: 10px;
    color: #6c757d;
    font-style: italic;
}
/* The role rides on the name line, so it is set apart by weight and a separator rather than by
   sitting in a column of its own. */
.seat-user-role {
    font-weight: 400;
    font-size: 11px;
    color: #6c757d;
}
.seat-user-role::before {
    content: "\00b7";
    margin: 0 5px;
}
/* Labels are written out in the tier map rather than shouted by the stylesheet, so no screen ever
   shows a raw enum value. */
.seat-badge {
    display: inline-block;
    padding: 2px 9px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.2px;
    white-space: nowrap;
    background: #ebecea;
    color: #6c757d;
}
.seat-badge i {
    margin-right: 3px;
}
.seat-badge.standard {
    background: #e7f0ff;
    color: #0035d2;
}
.seat-badge.premium {
    background: rgba(162, 155, 254, 0.2);
    color: #9C27B0;
}
.seat-badge.wallet {
    background: #f8f9fa;
    color: #6c757d;
}
.seat-badge.trial {
    background: rgba(0, 188, 212, 0.2);
    color: #00796b;
}
.seat-badge.orphaned {
    background: rgba(255, 182, 39, 0.3);
    color: #856404;
}
/* Badges trailing a name need separating from it; the same badge in its own table cell does not. */
.seat-user-name .seat-badge {
    margin-left: 6px;
    font-size: 10px;
}
/* =================================================================== */
/* ! Per-row tier selector
/* =================================================================== */
.seat-tier-selector {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    overflow: hidden;
    background: #ffffff;
}
/* The spinner is overlaid rather than inserted, so an in-flight row keeps its height. */
.seat-tier-cell {
    position: relative;
}
.seat-tier-selector.saving {
    opacity: 0.45;
    cursor: progress;
}
.seat-tier-spinner {
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -7px 0 0 -7px;
    font-size: 14px;
    color: #0035d2;
}
.tier-option {
    -ms-flex: 1;
        flex: 1;
    border: 0;
    border-right: 1px solid #e0e6ed;
    background: #ffffff;
    padding: 7px 6px;
    font-size: 12px;
    font-weight: 600;
    color: #6c757d;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
    white-space: nowrap;
}
.tier-option:last-child {
    border-right: 0;
}
.tier-option:hover:not([disabled]):not(.selected) {
    background: #f8f9fa;
    color: #2a307f;
}
.tier-option[disabled] {
    color: #c8cdd4;
    cursor: not-allowed;
    background: #f8f9fa;
}
.tier-option.selected {
    background: #343a40;
    color: #ffffff;
}
.tier-option.standard.selected {
    background: #0035d2;
    color: #ffffff;
}
.tier-option.premium.selected {
    background: #9C27B0;
    color: #ffffff;
}
/* The trial slot stands in for "none" on a trial holder, whose trial cannot be released. */
.tier-option.trial.selected {
    background: #00bcd4;
    color: #ffffff;
}
/* =================================================================== */
/* ! Feedback bar
/* =================================================================== */
.seat-feedback-bar {
    position: -webkit-sticky;
    position: sticky;
    bottom: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 20px;
    margin-top: 14px;
    padding: 0 18px;
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    background: #ffffff;
    border-radius: 12px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
    transition: max-height 0.2s ease, opacity 0.2s ease, padding 0.2s ease;
}
.seat-feedback-bar.visible {
    max-height: 90px;
    opacity: 1;
    padding: 14px 18px;
}
.seat-feedback-bar .seat-feedback {
    margin-bottom: 0;
}
/* =================================================================== */
/* ! Usage totals
/* =================================================================== */
.seat-totals-grid {
    display: -ms-flexbox;
    display: flex;
    gap: 16px;
    margin-bottom: 18px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.seat-total-card {
    -ms-flex: 1 1 200px;
        flex: 1 1 200px;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 16px 18px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 3px;
}
.total-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
    font-weight: 600;
}
.total-value {
    font-size: 26px;
    font-weight: 700;
    color: #2a307f;
    line-height: 1.15;
}
.total-sub {
    font-size: 11px;
    color: #6c757d;
    line-height: 1.4;
}
.total-bar {
    height: 6px;
    border-radius: 3px;
    background: #ebecea;
    margin-top: 8px;
    overflow: hidden;
}
.total-fill {
    height: 100%;
    background: #0035d2;
    transition: width 0.25s ease;
}
.total-fill.over {
    background: #ffab00;
}
.total-link {
    font-size: 11px;
    font-weight: 600;
    color: #0035d2;
    cursor: pointer;
    margin-top: 4px;
}
.total-link:hover {
    text-decoration: underline;
    color: #0035d2;
}
/* =================================================================== */
/* ! Per-user usage bar
/* =================================================================== */
.usage-bar {
    height: 6px;
    border-radius: 3px;
    background: #ebecea;
    overflow: hidden;
    margin-bottom: 5px;
}
.usage-fill {
    height: 100%;
    background: #20c997;
    transition: width 0.25s ease;
}
.usage-fill.over {
    background: #ffab00;
}
.usage-caption {
    font-size: 11px;
    color: #343a40;
}
.seat-footnote {
    font-size: 11px;
    color: #6c757d;
    line-height: 1.5;
    margin: 14px 4px 0;
    font-style: italic;
}
/* =================================================================== */
/* ! Seat promo panel
/* Sits on the wallet tab of the payment dialog and links across to the
/* seats tab. Kept in this file rather than _payments.css so everything
/* describing seats stays in one place.
/* =================================================================== */
.seat-promo {
    position: relative;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    /* The 4px edge is how the rest of this file marks a callout, and it gives the panel a brand
       anchor without the filled navy banner that crowded the wallet card above it. */
    border-left: 4px solid #0035d2;
    border-radius: 16px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    overflow: hidden;
    margin-bottom: 25px;
}
/* =================================================================== */
/* ! Seat promo opening ping
/* The panel is easy to scroll past, so two things happen when the dialog
/* first shows it: it lifts off the page once, and a band of cyan light
/* sweeps across it. The white body is never recoloured - the band only
/* passes over it - and both animations end on the resting look, so the
/* class can be dropped at any point without the panel appearing to
/* change.
/* =================================================================== */
/* One rise and settle. Kept to a few pixels: this is a panel in a dialog, not a card being picked up. */
@keyframes seat-promo-lift {
    0% {
        transform: translateY(0) scale(1);
    }

    30% {
        transform: translateY(-5px) scale(1.008);
    }

    100% {
        transform: translateY(0) scale(1);
    }
}
/* Travels the panel's own width plus its overhang, so the band enters and leaves off the edges. */
@keyframes seat-promo-sweep {
    from {
        transform: translateX(-130%) skewX(-12deg);
    }

    to {
        transform: translateX(320%) skewX(-12deg);
    }
}
/* Held for the first moments of the dialog only - the controller drops the class as these finish. */
.seat-promo-highlight {
    animation: seat-promo-lift 1.7s ease-out 1 both;
}
/* The band of light. Clipped by the panel's own overflow, and over the hero content rather than
       under it, so it passes across the copy as well as the tinted strip. Cyan carries against both
       the white body and the pale hero; a white sheen would be invisible on either. */
.seat-promo-highlight::after {
    content: '';
    position: absolute;
    top: -10%;
    bottom: -10%;
    left: 0;
    width: 45%;
    z-index: 3;
    pointer-events: none;
    background: linear-gradient(100deg,
            rgba(0, 188, 212, 0) 0%,
            rgba(0, 188, 212, 0.26) 50%,
            rgba(0, 188, 212, 0) 100%);
    transform: translateX(-130%) skewX(-12deg);
    animation: seat-promo-sweep 1.25s ease-in-out 2 both;
}
@media (prefers-reduced-motion: reduce) {
    .seat-promo-highlight {
        animation: none;
    }
    /* Hidden outright: with the animation off, a static band would just sit over the panel. */
    .seat-promo-highlight::after {
        display: none;
    }
}
/* Tinted well short of the wallet card's saturation, but far enough up from white that the panel
   still reads as an advertisement rather than another settings card. */
.seat-promo-hero {
    position: relative;
    overflow: hidden;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 24px;
    padding: 24px 28px 22px;
    background: linear-gradient(120deg, rgb(204, 217, 255) 0%, rgb(194, 248, 255) 100%);
    border-bottom: 1px solid #e0e6ed;
    color: #2a307f;
}
.seat-promo-hero::after {
    content: '';
    position: absolute;
    right: -60px;
    top: -80px;
    width: 230px;
    height: 230px;
    background: rgba(255, 255, 255, 0.4);
    border-radius: 50%;
    pointer-events: none;
}
.seat-promo-watermark {
    position: absolute;
    right: 22px;
    bottom: -34px;
    font-size: 118px;
    line-height: 1;
    color: rgba(255, 255, 255, 0.5);
    pointer-events: none;
}
.seat-promo-intro {
    position: relative;
    z-index: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 18px;
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
/* The one saturated element left in the hero, matching the wallet page's own icon chips. */
.seat-promo-icon {
    width: 52px;
    height: 52px;
    border-radius: 12px;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.15);
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 22px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-promo-copy {
    min-width: 0;
}
.seat-promo-copy h3 {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin: 0 0 6px;
    font-size: 20px;
    letter-spacing: -0.02em;
    line-height: 1.2;
    color: #2a307f;
}
.seat-promo-copy p {
    margin: 0;
    max-width: 620px;
    font-size: 13px;
    line-height: 1.5;
    color: #343a40;
}
.seat-promo-copy strong {
    color: #2a307f;
}
.seat-promo-flag {
    background: #ffab00;
    color: #0a2540;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    padding: 3px 9px;
    border-radius: 10px;
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
.seat-promo-flag.live {
    background: #20c997;
    color: #ffffff;
}
.seat-promo-flag.alert {
    background: #d9534f;
    color: #ffffff;
}
.seat-promo-cta {
    position: relative;
    z-index: 1;
    -ms-flex: 0 0 210px;
        flex: 0 0 210px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
}
.seat-promo-cta .btn {
    width: 100%;
    max-width: none;
    margin: 0;
}
.seat-promo-btn-primary, .seat-promo-btn-secondary {
    border-radius: 20px;
    padding: 9px 14px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    transition: all 0.2s ease;
}
.seat-promo-btn-primary i, .seat-promo-btn-secondary i {
    margin-right: 6px;
}
.seat-promo-btn-primary {
    background: #0035d2;
    color: #ffffff;
    border: 0;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.2);
}
.seat-promo-btn-primary:hover, .seat-promo-btn-primary:active, .seat-promo-btn-primary:focus {
    background: #2a307f;
    color: #ffffff;
    outline: 0;
}
.seat-promo-btn-secondary {
    background: #ffffff;
    color: #0035d2;
    border: 1px solid #c0cde0;
}
.seat-promo-btn-secondary:hover, .seat-promo-btn-secondary:active, .seat-promo-btn-secondary:focus {
    background: #ffffff;
    color: #0035d2;
    border-color: #0035d2;
    outline: 0;
}
.seat-promo-link {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 6px;
    margin-top: 2px;
    font-size: 11px;
    font-weight: 600;
    color: #0035d2;
    cursor: pointer;
}
.seat-promo-link:hover, .seat-promo-link:focus {
    color: #2a307f;
    text-decoration: underline;
}
/* --- The two tiers, priced. Side by side, as they are on the seats tab itself. --- */
.seat-promo-plans {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: stretch;
        align-items: stretch;
    gap: 12px;
    padding: 16px 28px 18px;
}
.seat-promo-plan {
    -ms-flex: 1 1 0px;
        flex: 1 1 0;
    min-width: 0;
    padding: 12px 16px;
    background: #f8f9fa;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    cursor: pointer;
    transition: box-shadow 0.2s ease, border-color 0.2s ease;
}
.seat-promo-plan.recommended {
    background: #e7f0ff;
    border-color: #0035d2;
}
.seat-promo-plan:hover {
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
    border-color: #0035d2;
}
.promo-plan-name {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    font-size: 13px;
    font-weight: 700;
    color: #2a307f;
}
.promo-plan-name i {
    color: #0035d2;
    font-size: 12px;
}
.promo-plan-price {
    margin-top: 3px;
    font-size: 22px;
    font-weight: 700;
    line-height: 1.2;
    color: #2a307f;
}
.promo-plan-price small {
    margin-left: 5px;
    font-size: 11px;
    font-weight: 500;
    color: #6c757d;
}
.seat-promo-plans-status {
    -ms-flex: 1;
        flex: 1;
    padding: 12px 16px;
    border: 1px dashed #e0e6ed;
    border-radius: 12px;
    font-size: 12px;
    color: #6c757d;
}
.seat-promo-plans-status i {
    margin-right: 6px;
}
/* --- Footers: the things that block or waste a seat purchase --- */
.seat-promo-note {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 11px 28px;
    border-top: 1px solid #e0e6ed;
    font-size: 12px;
    line-height: 1.45;
}
.seat-promo-note > i {
    font-size: 14px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-promo-note > span {
    -ms-flex: 1;
        flex: 1;
}
/* The shared .btn rules stretch to 220px, which reads as a slab in a one-line footer. */
.seat-promo-note .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: auto;
}
.seat-promo-note.info {
    background: #e7f0ff;
    color: #2a307f;
}
.seat-promo-note.info > i {
    color: #0035d2;
}
.seat-promo-note.warning {
    background: rgba(255, 243, 205, 0.9);
    color: #856404;
}
.seat-promo-note.warning > i {
    color: #ffab00;
}
.seat-promo-note.danger {
    background: rgba(217, 83, 79, 0.1);
    color: #a94442;
}
.seat-promo-note.danger > i {
    color: #d9534f;
}
/* =================================================================== */
/* ! Cancel seats modal
/* =================================================================== */
/* Cancelling asks how many seats to give up before it offers to end the lot, so the modal carries
   the same stepper as the buy screen and the whole-subscription button sits apart from it. */
.seat-cancel-modal .modal-dialog {
    width: 560px;
    max-width: 94vw;
}
/* Capped so unfolding a picker can never push the footer off the screen - the panel scrolls
       inside itself instead of the whole dialog growing past the viewport. */
.seat-cancel-modal .my-modal-body {
    padding: 2rem;
    max-height: 62vh;
    overflow-y: auto;
}
.seat-cancel-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 14px;
    padding: 14px 0;
    border-top: 1px solid #e0e6ed;
}
.seat-cancel-row:last-of-type {
    border-bottom: 1px solid #e0e6ed;
}
.seat-cancel-detail {
    -ms-flex: 1 1 150px;
        flex: 1 1 150px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 2px;
}
.seat-cancel-name {
    font-size: 14px;
    font-weight: 700;
    color: #2a307f;
}
.seat-cancel-name > i {
    color: #0035d2;
    margin-right: 6px;
}
.seat-cancel-held {
    font-size: 12px;
    color: #6c757d;
}
.seat-cancel-keeping {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    min-width: 72px;
    text-align: right;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 2px;
}
.keeping-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: #6c757d;
}
.keeping-value {
    font-size: 18px;
    font-weight: 700;
    color: #2a307f;
}
/* Nothing being given up reads as a neutral zero; the moment it is not, it should catch the eye. */
.keeping-value.is-cancelling {
    color: #a94442;
}
/* Full width under the row it explains, rather than squeezed between the stepper and the count. */
.seat-cancel-note {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
    font-size: 12px;
    color: #6c757d;
    line-height: 1.4;
}
/* The picker only appears once the stepper reaches seats people are holding, so it sits inside the
   row it belongs to and is indented away from the stepper above it. */
.seat-release-picker {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
    margin-top: 4px;
    padding: 12px 14px;
    background: #f8f9fa;
    border-radius: 10px;
    border-left: 3px solid #0035d2;
    max-height: 400px;
    overflow-y: auto;
}
/* Slid rather than popped: it is the one block on the panel that has to come and go, and at
       160ms it reads as the row opening up instead of the modal rearranging itself. A max-height is
       the only height a transition can work with here, so it is set past any realistic list and the
       list scrolls inside it. */
.seat-release-picker.ng-enter, .seat-release-picker.ng-leave {
    overflow: hidden;
    transition: max-height 0.16s ease-out, opacity 0.16s ease-out;
}
.seat-release-picker.ng-enter, .seat-release-picker.ng-leave-active {
    max-height: 0;
    opacity: 0;
}
.seat-release-picker.ng-enter-active, .seat-release-picker.ng-leave {
    max-height: 400px;
    opacity: 1;
}
.seat-release-head {
    font-size: 12px;
    line-height: 1.45;
    color: #555555;
    margin-bottom: 10px;
}
.seat-release-head > strong {
    color: #2a307f;
}
.seat-release-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin: 0;
    padding: 7px 8px;
    border-radius: 8px;
    font-weight: 400;
    cursor: pointer;
    transition: background 0.15s ease;
}
.seat-release-option:hover {
    background: #e7f0ff;
}
.seat-release-option.selected {
    background: #e7f0ff;
}
.seat-release-option input {
    margin: 0;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-release-name {
    -ms-flex: 1;
        flex: 1;
    font-size: 13px;
    color: #2a307f;
}
.seat-release-usage {
    font-size: 11px;
    color: #6c757d;
    text-align: right;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-release-shortfall {
    margin-top: 8px;
    font-size: 12px;
    color: #a94442;
}
.seat-release-shortfall > i {
    margin-right: 5px;
}
.seat-cancel-summary {
    margin-top: 18px;
    padding: 14px 16px;
    background: #f2f6fb;
    border-radius: 10px;
}
.seat-cancel-summary-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    font-size: 13px;
    color: #555555;
}
.seat-cancel-summary-line + .seat-cancel-summary-line {
    margin-top: 8px;
}
.seat-cancel-summary-line > strong {
    color: #2a307f;
    font-size: 15px;
    transition: opacity 0.15s ease;
}
/* Being re-priced. The figure standing there is a step behind, not wrong, and saying so by
           fading it beats swapping the line for a spinner and moving the panel twice. */
.seat-cancel-summary-line > strong.is-updating {
    opacity: 0.45;
}
.seat-cancel-footnote {
    margin-top: 14px;

    /* Held open for the tallest message it carries, so the summary above and the footer below do not
       move as the words in it change. */
    min-height: 40px;
}
.seat-cancel-footnote > p {
    margin: 0;
    font-size: 12px;
    line-height: 1.5;
    color: #6c757d;
}
.seat-cancel-footnote > p > i {
    margin-right: 6px;
    color: #0035d2;
}
.seat-cancel-footer {
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: stretch;
        align-items: stretch;
    gap: 16px;
}
.seat-cancel-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 14px;
}
.seat-cancel-actions .btn {
    width: 100%;
    max-width: 220px;
}
/* Separated by a rule so ending everything cannot be reached for by mistake while aiming at the
   confirm button above it. */
.seat-cancel-everything {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding-top: 14px;
    border-top: 1px solid #e0e6ed;
}
.seat-cancel-everything .btn {
    width: auto;
    max-width: none;
}
.seat-cancel-everything-note {
    font-size: 11px;
    line-height: 1.45;
    color: #6c757d;
    text-align: center;
}
/* =================================================================== */
/* ! Narrow screens
/* =================================================================== */
@media (max-width: 1100px) {
    .seat-plan-layout {
        -ms-flex-direction: column;
            flex-direction: column;
    }

    .seat-summary-column {
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
        width: 100%;
        position: static;
    }
}
@media (max-width: 820px) {
    .seat-promo-hero {
        -ms-flex-direction: column;
            flex-direction: column;
        -ms-flex-align: stretch;
            align-items: stretch;
    }

    .seat-promo-cta {
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
    }

    /* Below this there is not room to compare the tiers side by side, on either screen. */
    .seat-tier-grid, .seat-promo-plans {
        -ms-flex-direction: column;
            flex-direction: column;
    }

    /* A Font Awesome element, whose own .fa rule is loaded after this file and carries the same
       specificity, so the parent has to be named to hide it. */
    .seat-promo-hero .seat-promo-watermark {
        display: none;
    }
}
/* =================================================================== */
/* ! Settings Modal
/* Shares the visual language of _payments.css - pale blue canvas, white
/* rounded cards, navy accents - and reuses .settings-card, .setting-row,
/* .toggle-switch, .save-status-indicator and .disabled-overlay from it.
/* Everything else is scoped to .settings-shell so the generic names here
/* cannot leak into the rest of the app.
/* =================================================================== */
/* The scope band wipes open when a section is shown. Clip-path only affects paint,
   so the box occupies its space immediately and nothing shifts around it. */
@keyframes settings-scope-band-open {
	from {
		-webkit-clip-path: inset(0 100% 0 0);
		        clip-path: inset(0 100% 0 0);
	}

	to {
		-webkit-clip-path: inset(0 0 0 0);
		        clip-path: inset(0 0 0 0);
	}
}
.settings-dialog md-dialog-content {
    border-top: 0;
    padding: 0;
    overflow: hidden;
}
.settings-shell {
	display: -ms-flexbox;
	display: flex;
	-ms-flex: 1;
	    flex: 1;
	min-height: 0;
	width: 100%;
	background-color: #f4f7fe;

	/* =================================================================== */
}
/* ! Left Rail Navigation
	/* =================================================================== */
.settings-shell .settings-nav {
    -ms-flex: 0 0 272px;
        flex: 0 0 272px;
    width: 272px;
    background-color: #ffffff;
    border-right: 1px solid #e0e6ed;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    overflow-y: auto;
}
.settings-shell .settings-nav::-webkit-scrollbar {
    width: 6px;
}
.settings-shell .settings-nav::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.1);
    border-radius: 20px;
}
/* =================================================================== */
.settings-shell .settings-identity {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 20px 18px 18px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell .settings-avatar {
    width: 42px;
    height: 42px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    letter-spacing: 0.5px;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.2);
}
.settings-shell .settings-identity-text {
    min-width: 0;
}
.settings-shell .settings-identity-text .identity-name {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #0a2540;
    line-height: 1.3;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.settings-shell .settings-identity-text .identity-role {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
    margin-top: 2px;
}
.settings-shell .settings-nav-group {
    padding: 16px 10px 4px;
}
/* Practice names are buttons that fold their settings away; "Your account"
		   uses the same look but is not interactive. */
.settings-shell .settings-nav-group .settings-nav-group-title {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 7px;
    width: 100%;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
    font-weight: 700;
    text-align: left;
    background: none;
    border: none;
    border-radius: 8px;
    padding: 5px 12px 7px;
    cursor: pointer;
    transition: color 0.15s ease, background-color 0.15s ease;
}
.settings-shell .settings-nav-group .settings-nav-group-title.static {
    cursor: default;
    padding-top: 0;
}
.settings-shell .settings-nav-group .settings-nav-group-title:not(.static):hover {
    color: #0035d2;
    background-color: #e7f0ff;
}
.settings-shell .settings-nav-group .settings-nav-group-title:not(.static):hover .nav-group-chevron {
    color: #0035d2;
}
.settings-shell .settings-nav-group .settings-nav-group-title .nav-group-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell .settings-nav-group .settings-nav-group-title .nav-group-chevron {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 9px;
    color: #c3c9da;
    transition: transform 0.2s ease, color 0.15s ease;
}
.settings-shell .settings-nav-group .settings-nav-group-title.collapsed .nav-group-chevron {
    transform: rotate(-90deg);
}
/* Collapse animation. max-height cannot transition to auto, so it runs to a
		   ceiling comfortably above the tallest group (5 items ~ 200px); the easing is
		   what is seen, not the exact value. Opacity and a small lift do the rest. */
.settings-shell .settings-nav-group .nav-group-items {
    overflow: hidden;
    max-height: 320px;
    opacity: 1;
    transition: max-height 0.24s cubic-bezier(0.4, 0, 0.2, 1),
				opacity 0.18s ease,
				transform 0.24s cubic-bezier(0.4, 0, 0.2, 1);
}
.settings-shell .settings-nav-group .nav-group-items.ng-enter, .settings-shell .settings-nav-group .nav-group-items.ng-leave.ng-leave-active {
    max-height: 0;
    opacity: 0;
    transform: translateY(-4px);
}
.settings-shell .settings-nav-group .nav-group-items.ng-enter.ng-enter-active, .settings-shell .settings-nav-group .nav-group-items.ng-leave {
    max-height: 320px;
    opacity: 1;
    transform: translateY(0);
}
.settings-shell .settings-nav-group .nav-group-tag {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-left: auto;
    background-color: #f8f9fa;
    color: #a3aac0;
    font-size: 8px;
    letter-spacing: 0.03em;
    padding: 2px 7px;
    border-radius: 20px;
}
/* Filled pill marks the one practice that is open - only ever one. */
.settings-shell .settings-nav-group .nav-group-tag.open {
    background-color: #0035d2;
    color: #ffffff;
}
.settings-shell .settings-nav-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 11px;
    padding: 9px 12px;
    margin-bottom: 2px;
    border-radius: 10px;
    cursor: pointer;
    color: #4a5568;
    font-size: 13px;
    font-weight: 600;
    transition: all 0.15s ease;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}
.settings-shell .settings-nav-item i {
    width: 15px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    text-align: center;
    font-size: 13px;
    color: #a3aac0;
    transition: color 0.15s ease;
}
.settings-shell .settings-nav-item:hover {
    background-color: #f4f7fe;
    color: #0035d2;
}
.settings-shell .settings-nav-item:hover i {
    color: #0035d2;
}
.settings-shell .settings-nav-item.active {
    background-color: #0035d2;
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.2);
}
.settings-shell .settings-nav-item.active i {
    color: #ffffff;
}
.settings-shell .settings-nav-footer {
    margin-top: auto;
    padding: 14px 18px;
    border-top: 1px solid #eef1f7;
}
.settings-shell .settings-nav-footer .footer-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
    font-weight: 700;
}
.settings-shell .settings-nav-footer .footer-value {
    font-size: 12px;
    color: #0035d2;
    font-weight: 700;
    margin-top: 3px;
    line-height: 1.3;
}
/* ! Right Content Pane
	/* =================================================================== */
.settings-shell .settings-pane {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background-color: #f4f7fe;
    overflow: hidden;
}
/* Each section is a component element - make it own the pane's height */
.settings-shell .settings-pane > * {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
/* =================================================================== */
.settings-shell .settings-pane-body {
    -ms-flex: 1;
        flex: 1;
    overflow-y: auto;
    padding: 24px 28px 28px;
}
.settings-shell .settings-pane-body h3, .settings-shell .settings-pane-body h4, .settings-shell .settings-pane-body h5 {
    font-family: 'Gordita Bold', sans-serif;
    margin-top: 0;
}
.settings-shell .settings-pane-body::-webkit-scrollbar {
    width: 6px;
}
.settings-shell .settings-pane-body::-webkit-scrollbar-track {
    background: transparent;
}
.settings-shell .settings-pane-body::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.1);
    border-radius: 20px;
}
.settings-shell .settings-pane-body:hover::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.3);
}
/* _payments.css stretches cards to fill their column; here they hug their content */
.settings-shell .settings-card {
    height: auto;
}
/* Column flex so the badge, heading and description each get their own line
	   while still hugging their content - the heading and badge are pills, not bars. */
.settings-shell .settings-pane-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: start;
        align-items: flex-start;
    margin-bottom: 20px;
}
/* A band of the brand's own pale navy rather than plain text, so the section
		   you are in reads at a glance against the pale blue canvas. Same tint as the
		   icon chips throughout the pane, so nothing new is introduced. */
.settings-shell .settings-pane-header h3 {
    font-size: 20px;
    color: #0035d2;
    background-color: #e7f0ff;
    letter-spacing: -0.02em;
    margin: 0 0 10px;
    padding: 7px 15px;
    border-radius: 10px;
}
.settings-shell .settings-pane-header p {
    font-size: 13px;
    color: #878ba0;
    margin: 0;
    max-width: 72ch;
    line-height: 1.5;
}
/* Who a setting affects is the single most important thing on these screens -
	   changing something practice-wide touches every clinician there. A solid band
	   across a third of the pane - wide enough not to be skimmed past as a caption,
	   narrow enough not to shout over the settings themselves. */
.settings-shell .scope-badge {
    -ms-flex-item-align: start;
        align-self: flex-start;
    width: 33%;
    min-width: 300px;
    max-width: 100%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    line-height: 1.35;
    padding: 11px 16px;
    border-radius: 8px;
    margin-bottom: 14px;
    color: #ffffff;/* Each section is created fresh by ng-if, so this replays every time you
		   move between settings - re-announcing the scope rather than letting it
		   sit there unread. */
    animation: settings-scope-band-open 420ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
.settings-shell .scope-badge i {
    font-size: 15px;
    opacity: 0.9;
}
/* Yours alone - the brand blue. */
.settings-shell .scope-badge.personal {
    background-color: #0035d2;
}
/* Affects other people, so it carries a caution tone rather than a second
		   shade of blue. Deep amber keeps white text at ~6.4:1; a bright $yellow-cta
		   fill would drop it to 3.4:1 and fail AA. */
.settings-shell .scope-badge.practice {
    background-color: #856404;
}
/* Sticky action bar at the bottom of a pane. The confirmation sits immediately
	   left of the button rather than across the bar, so it lands where the eye
	   already is after clicking. */
.settings-shell .settings-action-bar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 12px;
    padding: 12px 28px;
    background-color: #ffffff;
    border-top: 1px solid #e0e6ed;
}
.settings-shell .settings-action-bar .action-hint {
    margin-right: auto;
    font-size: 11px;
    color: #878ba0;
    font-style: italic;
}
.settings-shell .settings-action-bar .btn {
    max-width: 200px;
    margin: 0;
}
/* An option that changes what Save does, so it lives with Save rather than
		   up in a card header where it read as unrelated. */
.settings-shell .settings-action-bar .chip-select.apply-all {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 11.5px;
    padding: 6px 13px;
}
/* Success green, not the navy used everywhere else, so a save reads as a distinct
	   event rather than more of the same page. */
.settings-shell .save-flash {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 7px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 7px 14px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 700;
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
    border: 1px solid rgba(32, 201, 151, 0.3);
}
.settings-shell .save-flash i {
    font-size: 13px;
}
.settings-shell .save-flash.saving {
    background-color: #f8f9fa;
    color: #878ba0;
    border-color: #e0e6ed;
}
.settings-shell .save-flash.error {
    background-color: #fdecea;
    color: #d9534f;
    border-color: rgba(217, 83, 79, 0.3);
}
/* Pops in, so it is noticed even when the wording is unchanged. */
.settings-shell .save-flash.ng-enter {
    opacity: 0;
    transform: scale(0.85);
}
.settings-shell .save-flash.ng-enter-active {
    opacity: 1;
    transform: scale(1);
    transition: opacity 0.18s ease, transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.settings-shell .save-flash.ng-leave {
    opacity: 1;
}
.settings-shell .save-flash.ng-leave-active {
    opacity: 0;
    transition: opacity 0.15s ease;
}
/* ! Layout helpers
	/* =================================================================== */
.settings-shell .settings-stack {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 20px;
}
/* =================================================================== */
.settings-shell .settings-columns {
    display: -ms-flexbox;
    display: flex;
    gap: 20px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: stretch;
        align-items: stretch;
}
.settings-shell .settings-columns > * {
    -ms-flex: 1;
        flex: 1;
    min-width: 300px;
}
/* ! Read-only detail rows
	/* =================================================================== */
.settings-shell .detail-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    padding: 13px 0;
    border-bottom: 1px dashed #e0e6ed;
    min-height: 52px;
}
.settings-shell .detail-row:last-of-type {
    border-bottom: none;
    padding-bottom: 0;
}
.settings-shell .detail-row .detail-label {
    -ms-flex: 0 0 150px;
        flex: 0 0 150px;
    width: 150px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #a3aac0;
    margin: 0;
}
.settings-shell .detail-row .detail-value {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 14px;
    color: #333333;
    font-weight: 600;
    word-break: break-word;
}
.settings-shell .detail-row .detail-value.muted {
    color: #a3aac0;
    font-weight: 400;
    font-style: italic;
}
.settings-shell .detail-row .detail-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
/* Only the row that opens a card sits flush with the card header */
.settings-shell .card-body > .detail-row:first-child {
    padding-top: 0;
}
/* Small inline "edit" affordance */
.settings-shell .link-action {
    background: none;
    border: none;
    padding: 0;
    color: #0035d2;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    transition: opacity 0.15s ease;
}
.settings-shell .link-action i {
    margin-right: 4px;
}
.settings-shell .link-action:hover {
    opacity: 0.7;
    text-decoration: underline;
}
/* =================================================================== */
.settings-shell .inline-edit {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
/* ! Chips (features, referral types)
	/* =================================================================== */
.settings-shell .chip-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
}
/* =================================================================== */
.settings-shell .chip {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    font-size: 11px;
    font-weight: 600;
    padding: 5px 11px;
    border-radius: 20px;
    background-color: #f4f7fe;
    color: #0035d2;
    border: 1px solid rgba(0, 53, 210, 0.12);
    line-height: 1.4;
    white-space: nowrap;
}
.settings-shell .chip i {
    font-size: 10px;
    opacity: 0.7;
}
.settings-shell .chip.chip-muted {
    background-color: #f8f9fa;
    color: #a3aac0;
    border-color: #e0e6ed;
    font-style: italic;
}
/* Selectable chip - wraps a checkbox */
.settings-shell .chip-select {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    font-size: 12px;
    font-weight: 600;
    padding: 7px 14px;
    border-radius: 20px;
    background-color: #ffffff;
    color: #4a5568;
    border: 1px solid #e0e6ed;
    cursor: pointer;
    margin: 0;
    transition: all 0.15s ease;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}
.settings-shell .chip-select input[type="checkbox"] {
    margin: 0;
    cursor: pointer;
}
.settings-shell .chip-select:hover {
    border-color: #cbd5e0;
}
.settings-shell .chip-select.selected {
    background-color: #e7f0ff;
    border-color: rgba(0, 53, 210, 0.35);
    color: #0035d2;
}
.settings-shell .chip-select.disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
/* ! Editable row list (appointment types, task labels)
	/* =================================================================== */
.settings-shell .row-list-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 0 14px 8px;
}
.settings-shell .row-list-head span {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
}
/* The inputs carry their own borders, so the rows themselves stay unboxed */
.settings-shell .row-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 5px 14px;
    margin-bottom: 4px;
}
/* Separated by a rule rather than a box of its own */
.settings-shell .row-item.row-item-new {
    margin-bottom: 0;
    margin-top: 10px;
    padding-top: 15px;
    border-top: 1px dashed rgba(0, 53, 210, 0.25);
}
/* Column widths shared by the head and the rows */
.settings-shell .col-name {
    -ms-flex: 1 1 200px;
        flex: 1 1 200px;
    min-width: 150px;
}
/* =================================================================== */
.settings-shell .col-colour {
    -ms-flex: 0 0 130px;
        flex: 0 0 130px;
    width: 130px;
}
.settings-shell .col-duration {
    -ms-flex: 0 0 110px;
        flex: 0 0 110px;
    width: 110px;
}
/* Lengths are in steps of 5 minutes (minute-step directive). */
.settings-shell .col-duration .form-control.ng-invalid-minute-step {
    border-color: #e0796f;
    box-shadow: 0 0 0 3px rgba(224, 121, 111, 0.15);
}
.settings-shell .col-type {
    -ms-flex: 0 0 190px;
        flex: 0 0 190px;
    width: 190px;
}
.settings-shell .col-imaging {
    -ms-flex: 0 0 190px;
        flex: 0 0 190px;
    width: 190px;
}
/* The multiselect renders a bootstrap dropdown - make the button fill the cell like the
		   other controls in the row rather than sizing to its label. */
.settings-shell .col-imaging .btn-dropdown-multiselect {
    width: 100%;
    text-align: left;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell .col-imaging .dropdown-menu {
    min-width: 240px;
}
.settings-shell .col-add {
    -ms-flex: 0 0 40px;
        flex: 0 0 40px;
    width: 40px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
}
.settings-shell .col-add-wide {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
}
/* The old round "+" was missed - the add step now announces itself and its
	   button says what it does. The form clears after each add, so a run of
	   entries can be typed one after another without leaving the screen. */
.settings-shell .add-row {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px dashed rgba(0, 53, 210, 0.25);
}
.settings-shell .add-row .add-row-title {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #a3aac0;
    font-weight: 700;
    padding: 0 14px 8px;
}
.settings-shell .add-row .row-item.row-item-new {
    margin: 0;
    padding-top: 0;
    border-top: none;
}
.settings-shell .add-row .add-row-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    padding: 12px 14px 0;
}
.settings-shell .btn-add {
    width: auto;
    max-width: none;
    margin: 0;
    padding: 8px 18px;
}
.settings-shell .btn-add i {
    margin-right: 6px;
}
/* Column widths shared by the head and the rows, alongside .col-name above */
.settings-shell .col-code {
    -ms-flex: 0 0 150px;
        flex: 0 0 150px;
    width: 150px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
/* ! Claim items (practice item codes, names and fees)
	/* =================================================================== */
.settings-shell .col-fee {
    -ms-flex: 0 0 120px;
        flex: 0 0 120px;
    width: 120px;
}
/* =================================================================== */
.settings-shell .col-available {
    -ms-flex: 0 0 70px;
        flex: 0 0 70px;
    width: 70px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
}
/* The code identifies the item and cannot be edited on an existing row, so it is set as a plain
	   token rather than a disabled input - a greyed-out field invites people to try. */
.settings-shell .claim-item-code {
    font-size: 13px;
    font-weight: 600;
    color: #2a307f;
    background-color: #e7f0ff;
    border-radius: 8px;
    padding: 5px 10px;
    line-height: 1.2;
}
.settings-shell .claim-item-tag {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
    color: #7d8399;
    background-color: #f8f9fa;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    padding: 2px 7px;
    white-space: nowrap;
}
/* The dollar sign sits inside the field rather than beside it, so a column of fees lines up on the
	   number instead of on the symbol. */
.settings-shell .fee-input {
    position: relative;
}
.settings-shell .fee-input .fee-prefix {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 13px;
    color: #a3aac0;
    pointer-events: none;
}
.settings-shell .fee-input .form-control {
    padding-left: 24px;
}
/* Retiring an item is a quieter act than deleting one, and reads better as a switch than as a bare
	   checkbox in a column of inputs. */
.settings-shell .claim-item-toggle {
    position: relative;
    display: inline-block;
    width: 38px;
    height: 21px;
    margin: 0;
    cursor: pointer;
}
.settings-shell .claim-item-toggle input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}
.settings-shell .claim-item-toggle .switch-track {
    position: absolute;
    inset: 0;
    border-radius: 20px;
    background-color: #d3d9e6;
    transition: background-color 0.18s ease;
}
.settings-shell .claim-item-toggle .switch-track:after {
    content: "";
    position: absolute;
    top: 3px;
    left: 3px;
    width: 15px;
    height: 15px;
    border-radius: 50%;
    background-color: #ffffff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
    transition: transform 0.18s ease;
}
.settings-shell .claim-item-toggle input:checked + .switch-track {
    background-color: #0035d2;
}
.settings-shell .claim-item-toggle input:checked + .switch-track:after {
    transform: translateX(17px);
}
.settings-shell .claim-item-toggle input:focus + .switch-track {
    box-shadow: 0 0 0 3px rgba(0, 188, 212, 0.25);
}
/* Only shown once the list is long enough to be worth narrowing */
.settings-shell .claim-item-filter {
    position: relative;
    max-width: 320px;
    margin-bottom: 16px;
}
.settings-shell .claim-item-filter i {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 12px;
    color: #a3aac0;
    pointer-events: none;
}
.settings-shell .claim-item-filter .form-control {
    padding-left: 32px;
}
/* The search sits in the add row as its first control, so finding a standard item and typing one of
	   your own are the same gesture in the same place rather than two stacked forms. */
.settings-shell .col-picker {
    -ms-flex: 1 1 240px;
        flex: 1 1 240px;
    min-width: 200px;
}
.settings-shell .col-picker .ui-select-container {
    margin: 0;
}
/* The only row that wraps: five controls do not always fit a narrow pane, and a squeezed fee field
	   is worse than a second line. */
.settings-shell .claim-item-add {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    row-gap: 10px;
}
/* Retired items stay on the list - they are still the practice's, just not offered - so they are
	   dimmed rather than hidden, and read as switched off at a glance. */
.settings-shell .claim-item-row.retired .claim-item-code, .settings-shell .claim-item-row.retired .form-control {
    opacity: 0.55;
}
/* Required and empty says itself, so nothing has to say it in a sentence underneath - including on
	   arrival, which is how a row saved before a fee was required explains its own disabled Save.
	   Scoped to the saved rows: the add row's fields carry no `required`, so an empty one it is not yet
	   time to fill in is never marked wrong. */
.settings-shell .claim-item-row .form-control.ng-invalid {
    border-color: #e0796f;
    box-shadow: 0 0 0 3px rgba(224, 121, 111, 0.15);
}
/* No description under the heading, so the block does not need the room for one. */
.settings-shell .claim-item-empty {
    padding: 34px 32px;
    box-shadow: none;
    border: 1px dashed #e0e6ed;
}
.settings-shell .claim-item-empty h4 {
    margin: 0;
}
/* ! Practice leave (recurring breaks, closures and holidays)
	/* =================================================================== */
.settings-shell .card-header-sub {
    font-size: 12px;
    color: #878ba0;
    margin-top: 4px;
}
/* Column widths shared by the head and the rows, alongside .col-name above */
.settings-shell .col-days {
    -ms-flex: 0 0 330px;
        flex: 0 0 330px;
    width: 330px;
    display: -ms-flexbox;
    display: flex;
    gap: 5px;
}
/* =================================================================== */
.settings-shell .col-time {
    -ms-flex: 0 0 110px;
        flex: 0 0 110px;
    width: 110px;
}
.settings-shell .col-date {
    -ms-flex: 0 0 150px;
        flex: 0 0 150px;
    width: 150px;
}
.settings-shell .col-all-day {
    -ms-flex: 0 0 64px;
        flex: 0 0 64px;
    width: 64px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
}
/* A day of the week reads as a pill you switch on, the same pale navy as .chip-select.selected. */
.settings-shell .day-pill {
    -ms-flex: 0 0 42px;
        flex: 0 0 42px;
    height: 30px;
    padding: 0;
    border-radius: 20px;
    border: 1px solid #e0e6ed;
    background-color: #ffffff;
    color: #4a5568;
    font-size: 11.5px;
    font-weight: 600;
    transition: all 0.15s ease;
}
.settings-shell .day-pill:hover:not([disabled]) {
    border-color: #cbd5e0;
}
.settings-shell .day-pill.selected {
    background-color: #e7f0ff;
    border-color: rgba(0, 53, 210, 0.35);
    color: #0035d2;
}
.settings-shell .day-pill[disabled] {
    cursor: default;
}
.settings-shell .practice-leave-row .col-name {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
/* Finished closures are kept for reference, so they are dimmed rather than hidden. */
.settings-shell .practice-leave-row.past {
    opacity: 0.45;
}
.settings-shell .practice-leave-row .past-tag {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
    color: #878ba0;
    background-color: #eef1f7;
    border-radius: 10px;
    padding: 2px 7px;
}
.settings-shell .practice-leave .form-control.range-invalid, .settings-shell .practice-leave-row .form-control.ng-invalid:not([disabled]) {
    border-color: #e0796f;
    box-shadow: 0 0 0 3px rgba(224, 121, 111, 0.15);
}
/* Seven day pills and two times do not always fit a narrow pane. */
.settings-shell .practice-leave-add, .settings-shell .practice-leave-row {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    row-gap: 10px;
}
/* Public holidays are set by CatTrax, so they read as a list with one switch rather than as editable rows. */
.settings-shell .public-holiday-row .holiday-name {
    font-size: 13px;
    font-weight: 600;
    color: #2a307f;
}
.settings-shell .public-holiday-row .holiday-tag {
    margin-left: 8px;
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
    color: #00796b;
    background-color: rgb(230, 242, 240);
    border-radius: 10px;
    padding: 2px 7px;
    white-space: nowrap;
}
.settings-shell .public-holiday-row .holiday-tag i {
    margin-right: 3px;
}
.settings-shell .public-holiday-row .holiday-date {
    font-size: 13px;
    color: #4a5568;
}
/* Open on the holiday: the switch says so, and the row steps back. */
.settings-shell .public-holiday-row.open .holiday-name, .settings-shell .public-holiday-row.open .holiday-date {
    opacity: 0.55;
}
.settings-shell .col-holiday-note {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    font-size: 12px;
    color: #878ba0;
}
.settings-shell .public-holidays-help {
    margin: 6px 14px 0;
}
.settings-shell .practice-leave-subhead {
    margin-top: 18px;
    padding: 14px 14px 8px;
    border-top: 1px dashed rgba(0, 53, 210, 0.25);
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #a3aac0;
    font-weight: 700;
}
.settings-shell .practice-leave-empty {
    padding: 26px 32px;
    box-shadow: none;
    border: 1px dashed #e0e6ed;
}
.settings-shell .practice-leave-empty i {
    font-size: 26px;
    margin-bottom: 8px;
}
.settings-shell .practice-leave-empty h4 {
    margin: 0;
}
/* Column width shared by the head and the rows, alongside .col-name, .col-colour and .col-available */
.settings-shell .col-description {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
    min-width: 160px;
}
/* Archived rooms stay on the list - appointments that used them still show them - so they are dimmed
	   rather than hidden, the same as a retired claim item. */
.settings-shell .room-row.retired .form-control, .settings-shell .room-row.retired .color-picker-wrapper {
    opacity: 0.55;
}
/* ! Rooms (the practice's physical rooms appointments are booked into)
	/* =================================================================== */
.settings-shell .room-row .form-control.ng-invalid {
    border-color: #e0796f;
    box-shadow: 0 0 0 3px rgba(224, 121, 111, 0.15);
}
/* =================================================================== */
.settings-shell .room-empty {
    padding: 34px 32px;
    box-shadow: none;
    border: 1px dashed #e0e6ed;
}
/* angularjs-color-picker renders a bootstrap input group - keep the joint tidy */
.settings-shell .col-colour .color-picker-wrapper, .settings-shell .col-colour .color-picker-input-wrapper {
    width: 100%;
}
.settings-shell .col-colour .input-group .input-group-addon:first-child {
    border-radius: 8px 0 0 8px;
    border-color: #e0e6ed;
}
.settings-shell .col-colour .input-group .color-picker-input {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}
.settings-shell .label-swatch {
    display: inline-block;
    width: 30px;
    height: 30px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 8px;
    border: 1px solid #e0e6ed;
    background-color: #ffffff;
}
.settings-shell .btn-add-round {
    width: 34px;
    height: 34px;
    min-width: 34px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background-color: #0035d2;
    color: #ffffff;
    font-size: 14px;
    line-height: 1;
    cursor: pointer;
    transition: all 0.2s ease;
}
.settings-shell .btn-add-round:hover:not(:disabled) {
    background-color: #2a307f;
    transform: scale(1.06);
}
.settings-shell .btn-add-round:disabled {
    background-color: #d3d9e6;
    cursor: not-allowed;
}
/* ! Form controls
	/* =================================================================== */
.settings-shell .control-label, .settings-shell label.field-label {
    display: block;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #a3aac0;
    margin-bottom: 6px;
}
/* =================================================================== */
.settings-shell .form-control, .settings-shell select.form-control {
    height: auto;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    box-shadow: none;
    padding: 8px 12px;
    font-size: 13px;
    color: #333333;
    background-color: #ffffff;
    transition: all 0.2s ease;
}
.settings-shell .form-control:focus, .settings-shell select.form-control:focus {
    border-color: #0035d2;
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
}
.settings-shell .form-control[readonly], .settings-shell .form-control:disabled, .settings-shell select.form-control[readonly], .settings-shell select.form-control:disabled {
    background-color: #f8f9fa;
    color: #8a90a3;
}
.settings-shell textarea.form-control {
    min-height: 120px;
    resize: vertical;
}
.settings-shell .error-message {
    display: block;
    color: #d9534f;
    font-size: 11px;
    margin-top: 4px;
}
.settings-shell .field-help {
    font-size: 11px;
    color: #a3aac0;
    margin-top: 5px;
    line-height: 1.45;
}
.settings-shell .field-grid {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 16px;
}
.settings-shell .field-grid .field {
    -ms-flex: 1 1 200px;
        flex: 1 1 200px;
    min-width: 160px;
}
.settings-shell .field-grid .field-sm {
    -ms-flex: 0 0 140px;
        flex: 0 0 140px;
    width: 140px;
}
/* A number set inside its own sentence, rather than stranded at the far right */
.settings-shell .inline-sentence {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 7px;
    margin-top: 7px;
    font-size: 13px;
    color: #555;
}
.settings-shell .inline-sentence input[type="number"] {
    width: 62px;
    padding: 5px 8px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    text-align: center;
    color: #0035d2;
    font-weight: 700;
    font-size: 13px;
    transition: all 0.2s ease;
}
.settings-shell .inline-sentence input[type="number"]:focus {
    border-color: #0035d2;
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
}
/* ! Notices & empty states
	/* =================================================================== */
.settings-shell .settings-notice {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 12px;
    padding: 14px 18px;
    border-radius: 10px;
    font-size: 12.5px;
    line-height: 1.5;
    margin-bottom: 20px;
}
.settings-shell .settings-notice i {
    font-size: 15px;
    margin-top: 1px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.settings-shell .settings-notice.info {
    background-color: #e7f0ff;
    color: #2a307f;
    border: 1px solid rgba(0, 53, 210, 0.15);
}
.settings-shell .settings-notice.info i {
    color: #0035d2;
}
.settings-shell .settings-notice.warning {
    background-color: #fff8e6;
    color: #856404;
    border: 1px solid rgba(255, 171, 0, 0.3);
}
.settings-shell .settings-notice.warning i {
    color: #ffab00;
}
/* =================================================================== */
.settings-shell .settings-empty {
    background-color: #ffffff;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    padding: 54px 32px;
    text-align: center;
}
.settings-shell .settings-empty i {
    font-size: 34px;
    color: #d3d9e6;
    margin-bottom: 14px;
}
.settings-shell .settings-empty h4 {
    font-size: 16px;
    color: #2a307f;
    margin: 0 0 8px;
}
.settings-shell .settings-empty p {
    font-size: 13px;
    color: #878ba0;
    margin: 0 auto;
    max-width: 52ch;
    line-height: 1.55;
}
/* ! Expandable blocks (reminder message composers)
	/* =================================================================== */
.settings-shell .expander {
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    margin-bottom: 14px;
    overflow: hidden;
}
/* =================================================================== */
.settings-shell .expander-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 14px 18px;
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    transition: background-color 0.15s ease;
}
.settings-shell .expander-head:hover {
    background-color: #fbfcff;
}
.settings-shell .expander-head .expander-icon {
    width: 34px;
    height: 34px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 8px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 14px;
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell .expander-head .expander-title {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell .expander-head .expander-title strong {
    display: block;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #333333;
}
.settings-shell .expander-head .expander-title small {
    display: block;
    font-size: 11px;
    color: #a3aac0;
    margin-top: 2px;
}
.settings-shell .expander-head .expander-chevron {
    color: #a3aac0;
    font-size: 12px;
}
.settings-shell .expander-body {
    padding: 4px 18px 18px;
    border-top: 1px solid #eef1f7;
}
.settings-shell .expander.is-open .expander-head {
    background-color: #fbfcff;
}
/* Merge-field tokens */
.settings-shell .merge-field-groups {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px 28px;
    margin: 10px 0 14px;
}
.settings-shell .merge-field-group {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
}
.settings-shell .merge-field-group .merge-fields {
    margin: 0;
}
.settings-shell .merge-field-group-label {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell .merge-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    margin: 10px 0 14px;
}
.settings-shell .merge-field {
    background-color: #f4f7fe;
    border: 1px solid rgba(0, 53, 210, 0.25);
    border-radius: 20px;
    color: #0035d2;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.04em;
    padding: 5px 12px;
    cursor: pointer;
    text-align: center;
    transition: all 0.15s ease;
}
/* The shared [draggable] rule paints a black border and a move cursor over anything
		   draggable - the chips keep their own pill styling and a grab cursor instead. */
.settings-shell .merge-field[draggable] {
    border-color: rgba(0, 53, 210, 0.25);
    cursor: grab;
}
.settings-shell .merge-field:hover {
    background-color: #0035d2;
    color: #ffffff;
    border-color: #0035d2;
}
.settings-shell .merge-field:active {
    cursor: grabbing;
}
.settings-shell .merge-field .merge-field-name {
    display: block;
}
/* What the field turns into. Regular weight and tabular figures so it reads as a value
		   rather than as more label. */
.settings-shell .merge-field .merge-field-example {
    display: block;
    margin-top: 1px;
    font-size: 9px;
    font-weight: 400;
    letter-spacing: 0;
    font-variant-numeric: tabular-nums;
    opacity: 0.7;
}
.settings-shell .merge-field-note {
    max-width: 340px;
    font-size: 10px;
    line-height: 1.45;
    color: #a3aac0;
}
/* Drop targets. The shared lvl styles grey the whole editor out mid-drag and dash a black
	   border around whichever node the pointer is over; outline the composer instead so the
	   wording stays readable while a field is being dragged into it. */
.settings-shell .text-area-wrap.lvl-target {
    background-color: transparent;
    opacity: 1;
    outline: 2px dashed rgba(0, 53, 210, 0.3);
    outline-offset: 3px;
}
.settings-shell .text-area-wrap.lvl-over, .settings-shell .text-area-wrap .lvl-over {
    border: 0 !important;
}
.settings-shell .text-area-wrap.lvl-over {
    outline: 2px dashed #0035d2;
}
/* Attachments */
.settings-shell .attachment-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 10px 14px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    margin-bottom: 8px;
    background-color: #ffffff;
}
.settings-shell .attachment-row .attachment-icon {
    color: #0035d2;
    font-size: 15px;
}
.settings-shell .attachment-row .attachment-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 12.5px;
    font-weight: 600;
    color: #333333;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell .attachment-row .attachment-size {
    font-size: 11px;
    color: #a3aac0;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.settings-shell .attachment-row .attachment-actions {
    display: -ms-flexbox;
    display: flex;
    gap: 10px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.settings-shell .attachment-row .attachment-actions img {
    width: 15px;
    height: 15px;
    cursor: pointer;
    opacity: 0.65;
    transition: opacity 0.15s ease;
}
.settings-shell .attachment-row .attachment-actions img:hover {
    opacity: 1;
}
.settings-shell .file-drop {
    display: block;
    border: 1px dashed rgba(0, 53, 210, 0.3);
    border-radius: 8px;
    padding: 14px;
    background-color: #fbfcff;
    font-size: 12px;
    color: #878ba0;
}
.settings-shell .file-drop input[type="file"] {
    font-size: 12px;
}
/* Character counter */
.settings-shell .sms-counter {
    text-align: right;
    font-size: 11px;
    color: #a3aac0;
    margin-top: 6px;
}
.settings-shell .sms-counter strong {
    color: #0035d2;
}
.settings-shell .sms-counter.over strong {
    color: #d9534f;
}
/* ! Usage chart card
	/* =================================================================== */
.settings-shell .chart-card .chart-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 16px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    margin-bottom: 12px;
}
.settings-shell .chart-card nvd3 {
    display: block;
    width: 100%;
}
/* =================================================================== */
/* ! Invoicing defaults (practice details)
/* =================================================================== */
.settings-shell .billing-defaults .field-help {
    margin-bottom: 14px;
}
.settings-shell .billing-defaults .settings-notice {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    margin-bottom: 14px;
}
.settings-shell .billing-defaults .billing-defaults-fields {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[2];
        grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin: 0;
    border: 0;
    padding: 0;
}
.settings-shell .billing-defaults .billing-defaults-field {
    display: block;
    margin: 0;
    font-weight: normal;
}
.settings-shell .billing-defaults .billing-defaults-label {
    display: block;
    margin-bottom: 4px;
    font-size: 12px;
    font-weight: 600;
    color: #343a40;
}
.settings-shell .billing-defaults .billing-defaults-mini {
    width: auto;
    height: 28px;
    padding: 0 10px;
    font-size: 12px;
}
.settings-shell .billing-defaults .billing-defaults-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin-top: 16px;
}
.settings-shell .billing-defaults .billing-defaults-actions .btn {
    width: auto;
    margin: 0;
}
/* =================================================================== */
/* ! Responsive
/* =================================================================== */
@media (max-width: 900px) {
	.settings-shell {
		-ms-flex-direction: column;
		    flex-direction: column;
	}
	.settings-shell .settings-nav {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        width: 100%;
        border-right: none;
        border-bottom: 1px solid #e0e6ed;
        -ms-flex-direction: row;
            flex-direction: row;
        -ms-flex-align: center;
            align-items: center;
        overflow-x: auto;
        overflow-y: hidden;
    }
	.settings-shell .settings-identity, .settings-shell .settings-nav-footer {
        display: none;
    }
	.settings-shell .settings-nav-group {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-align: center;
            align-items: center;
        gap: 6px;
        padding: 10px;
        -ms-flex-negative: 0;
            flex-shrink: 0;
    }
	.settings-shell .settings-nav-group .settings-nav-group-title {
        padding: 0 6px 0 0;
        white-space: nowrap;
    }
	.settings-shell .settings-nav-item {
        margin-bottom: 0;
        white-space: nowrap;
    }
	.settings-shell .settings-pane-body {
        padding: 18px 16px;
    }
	.settings-shell .settings-action-bar {
        padding: 12px 16px;
    }
	.settings-shell .detail-row {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        gap: 6px;
    }
	.settings-shell .detail-row .detail-label {
        -ms-flex-preferred-size: 100%;
            flex-basis: 100%;
        width: 100%;
    }
	.settings-shell .row-item {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }
	.settings-shell .col-type, .settings-shell .col-colour, .settings-shell .col-duration {
        -ms-flex: 1 1 140px;
            flex: 1 1 140px;
        width: auto;
    }
}
/* =================================================================== */
/* ! Practice leave - appointments already inside new leave
/* The modal is appended to the body, outside .settings-shell.
/* =================================================================== */
.practice-leave-affected-modal .affected-lead {
    display: -ms-flexbox;
    display: flex;
    gap: 14px;
    -ms-flex-align: start;
        align-items: flex-start;
    margin-bottom: 16px;
}
.practice-leave-affected-modal .affected-lead h4 {
    margin: 2px 0 4px;
    font-size: 15px;
    color: #2a307f;
}
.practice-leave-affected-modal .affected-lead p {
    margin: 0;
    font-size: 13px;
    color: #6b7280;
    line-height: 1.45;
}
.practice-leave-affected-modal .affected-icon {
    -ms-flex: 0 0 40px;
        flex: 0 0 40px;
    height: 40px;
    border-radius: 10px;
    background-color: #fff8e6;
    color: #856404;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 18px;
}
.practice-leave-affected-modal .affected-list {
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    max-height: 300px;
    overflow-y: auto;
}
.practice-leave-affected-modal .affected-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 10px 14px;
    font-size: 12.5px;
    border-bottom: 1px solid #eef1f7;
}
.practice-leave-affected-modal .affected-item:last-child {
    border-bottom: 0;
}
.practice-leave-affected-modal .affected-when {
    -ms-flex: 0 0 150px;
        flex: 0 0 150px;
    font-weight: 700;
    color: #2a307f;
}
.practice-leave-affected-modal .affected-who {
    -ms-flex: 1;
        flex: 1;
    color: #4a5568;
}
.practice-leave-affected-modal .affected-type {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    color: #4a5568;
}
.practice-leave-affected-modal .affected-swatch {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background-color: #e0e6ed;
}
/* Anyone who has asked for less motion gets the band without the wipe. */
@media (prefers-reduced-motion: reduce) {
	.settings-shell .scope-badge, .settings-shell .nav-group-items {
		animation: none;
		transition: none;
	}
}
/* =================================================================== */
/* ! Staff and permissions
/* A practice's Staff and Role permissions sections in the Settings dialog,
/* and the CatTrax admin screens, reuse the Settings dialog's layout and
/* classes (_settings.css). Only what those screens don't already have is here.
/* =================================================================== */
/* The Settings shell normally fills a dialog. On a CatTrax admin page it needs a
   height of its own, so the rail and the pane can each scroll. .view-wrap pads the
   sides and bottom by 25px but not the top, so the top margin evens it up. */
.settings-page {
	display: -ms-flexbox;
	display: flex;
	height: calc(100vh - 200px);
	min-height: 560px;
	margin-top: 25px;
	border: 1px solid #e0e6ed;
	border-radius: 12px;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
	overflow: hidden;
}
/* The permissions audit log: the Settings dialog's layout, filling the whole screen, since its table and
   people need the width. */
md-dialog.permission-audit-dialog {
	width: 100vw;
	min-width: 100vw;
	max-width: 100vw;
	height: 100vh;
	max-height: 100vh;
	padding: 0;
	border-top-width: 0;
	border-radius: 0;
}
/* The console is the dialog's only content, so it takes the whole height, as a Settings section does. */
md-dialog.permission-audit-dialog permission-refusals-admin-console {
    display: -ms-flexbox;
    display: flex;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
/* The Settings dialog caps each rail group at 320px so it can animate folding. These
   lists never fold, and every role and staff member must stay reachable, so the cap
   is lifted and the rail scrolls instead. */
.settings-page .settings-shell .settings-nav-group .nav-group-items, .permission-audit-dialog .settings-shell .settings-nav-group .nav-group-items {
	max-height: none;
}
/* The staff list, a person and the role screen each fill the pane like a whole section, so the
	   body scrolls and the action bar stays at the bottom. */
.settings-shell .staff-section {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
.settings-shell .staff-table {
    margin: 0;
}
.settings-shell .staff-table th {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6c757d;
    border-top: none;
}
.settings-shell .staff-table td {
    vertical-align: middle;
    font-size: 13px;
}
.settings-shell .staff-table tbody tr {
    cursor: pointer;
}
.settings-shell .staff-table tbody tr:hover td {
    background-color: #f4f7fe;
}
.settings-shell .staff-table .staff-name {
    font-weight: 600;
}
.settings-shell .staff-table .staff-open {
    text-align: right;
    white-space: nowrap;
    font-weight: 600;
    color: #0035d2;
}
.settings-shell .staff-note {
    font-size: 12px;
    font-weight: 400;
    color: #6c757d;
}
/* Back from one person to the whole list. */
.settings-shell .staff-back {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-bottom: 10px;
    padding: 0;
    background: none;
    border: none;
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 600;
    color: #0035d2;
    cursor: pointer;
}
.settings-shell .staff-back:hover {
    opacity: 0.75;
}
/* One chip per role, to pick the role to edit. */
.settings-shell .role-picker {
    margin: 4px 0 14px;
}
/* .chip-select is written for a <label>; as a <button> it needs the font back */
.settings-shell .role-picker button.chip-select {
    font-family: inherit;
}
.settings-shell .permission-checklist-bar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 14px;
    margin-bottom: 10px;
}
/* The whole title is the fold button, with the same chevron as the Settings rail. */
.settings-shell .permission-group-toggle {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    padding: 0;
    background: none;
    border: none;
    text-align: left;
    cursor: pointer;
}
.settings-shell .permission-group-toggle:hover h4 {
    opacity: 0.75;
}
.settings-shell .permission-group-chevron {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 11px;
    color: #0035d2;
    transition: transform 0.2s ease;
}
/* Folded, a group is just its header row. */
.settings-shell .permission-group.collapsed {
    padding-top: 16px;
    padding-bottom: 16px;
}
.settings-shell .permission-group.collapsed .card-header-flex {
    border-bottom: none;
    padding-bottom: 0;
    margin-bottom: 0;
}
.settings-shell .permission-group.collapsed .permission-group-chevron {
    transform: rotate(-90deg);
}
.settings-shell .permission-group-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
}
.settings-shell .permission-card-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    margin-top: 12px;
}
.settings-shell .permission-row {
    min-height: 48px;
    padding: 10px 0;
}
.settings-shell .permission-row .chip-list {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -ms-flex-pack: end;
        justify-content: flex-end;
}
.settings-shell .permission-code, .settings-shell .permission-reason {
    display: block;
    font-weight: 400;
    color: #6c757d;
}
.settings-shell .permission-code {
    font-size: 10px;
    letter-spacing: 0.03em;
}
.settings-shell .permission-reason {
    font-size: 11px;
    font-style: italic;
}
/* The practice doesn't pay for it - the same caution tone as the practice scope badge. */
.settings-shell .chip.chip-warning {
    background-color: rgba(255, 243, 205, 0.9);
    color: #856404;
    border-color: rgba(255, 193, 7, 0.7);
}
/* Differs from the starting point - solid, so a change stands out in a long list. */
.settings-shell .chip.chip-changed {
    background-color: #0035d2;
    color: #ffffff;
    border-color: #0035d2;
}
/* What saving a person's ticked roles would add or take away, shown before they are saved. */
.settings-shell .role-change-preview {
    margin-top: 14px;
    padding: 14px 16px;
    border-radius: 12px;
    background-color: #f4f7fe;
}
.settings-shell .role-change-preview .role-change-title {
    font-size: 12px;
    font-weight: 700;
    color: #0035d2;
}
.settings-shell .role-change-preview .detail-row {
    -ms-flex-align: start;
        align-items: flex-start;
}
.settings-shell .role-change-preview .chip-list {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell .role-change-preview .chip {
    white-space: normal;
}
/* The same summary for a role's unsaved changes sits on the pale pane, so it is a white card. */
.settings-shell .role-change-preview.role-save-summary {
    margin: 0 0 20px;
    padding: 18px 25px;
    background-color: #ffffff;
}
/* Same greens as the save confirmation. */
.settings-shell .chip.chip-gained {
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
    border-color: rgba(32, 201, 151, 0.3);
}
.settings-shell .chip.chip-lost {
    background-color: rgba(217, 83, 79, 0.15);
    color: #d9534f;
    border-color: rgba(217, 83, 79, 0.15);
}
/* A fixed layout keeps the table inside its card. Request paths and permission codes have no
	   spaces, so with an automatic layout they set the table's width and the pane scrolls sideways. */
.settings-shell .refusal-table {
    margin: 0;
    width: 100%;
    table-layout: fixed;
}
.settings-shell .refusal-table th {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6c757d;
    border-top: none;
}
.settings-shell .refusal-table td {
    vertical-align: top;
    font-size: 13px;
    overflow-wrap: anywhere;
}
/* Role names wrap between words, never inside one. */
.settings-shell .refusal-table .chip {
    white-space: normal;
    overflow-wrap: normal;
}
/* What the row counts, shown above the permission when every kind is listed. Losses use the
		   role-change preview's red, gains its green. */
.settings-shell .refusal-table .refusal-kind {
    display: -ms-flexbox;
    display: flex;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    max-width: 100%;
    margin-bottom: 4px;
}
.settings-shell .refusal-table .refusal-kind.kind-REFUSED, .settings-shell .refusal-table .refusal-kind.kind-CHANGES_REFUSE, .settings-shell .refusal-table .refusal-kind.kind-PROPOSAL_REFUSES {
    background-color: rgba(217, 83, 79, 0.15);
    color: #d9534f;
    border-color: rgba(217, 83, 79, 0.15);
}
.settings-shell .refusal-table .refusal-kind.kind-CHANGES_ALLOW, .settings-shell .refusal-table .refusal-kind.kind-PROPOSAL_ALLOWS {
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
    border-color: rgba(32, 201, 151, 0.3);
}
.settings-shell .refusal-table .refusal-permission {
    width: 25%;
}
.settings-shell .refusal-table .refusal-outcomes {
    width: 22%;
}
.settings-shell .refusal-table .refusal-roles {
    width: 20%;
}
.settings-shell .refusal-table .refusal-practice {
    width: 14%;
}
.settings-shell .refusal-table .refusal-count {
    font-weight: 700;
}
/* What a request got today, and would get under the proposal: refused red, allowed green, and
		   allowed only because the check is log-only in the warning amber. */
.settings-shell .refusal-table .refusal-outcome.outcome-REFUSED {
    background-color: rgba(217, 83, 79, 0.15);
    color: #d9534f;
    border-color: rgba(217, 83, 79, 0.15);
}
.settings-shell .refusal-table .refusal-outcome.outcome-ALLOWED {
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
    border-color: rgba(32, 201, 151, 0.3);
}
.settings-shell .refusal-table .refusal-outcome.outcome-ALLOWED_LOG_ONLY {
    background-color: rgba(255, 243, 205, 0.9);
    color: #856404;
    border-color: rgba(255, 193, 7, 0.7);
}
.settings-shell .refusal-table .refusal-arrow {
    margin: 0 4px;
    color: #6c757d;
}
.settings-shell .refusal-table .refusal-row {
    cursor: pointer;
}
.settings-shell .refusal-table .refusal-row:hover td, .settings-shell .refusal-table .refusal-row.expanded td {
    background-color: rgba(255, 182, 39, 0.1);
}
.settings-shell .refusal-table .refusal-caret {
    width: 10px;
    color: #6c757d;
}
/* One row's people, why, and where to fix it. */
.settings-shell .refusal-table .refusal-detail > td {
    padding: 12px 16px 16px;
    background-color: rgba(255, 182, 39, 0.1);
    border-top: none;
}
.settings-shell .refusal-fix {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    margin-bottom: 8px;
}
.settings-shell .refusal-fix .refusal-fix-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6c757d;
}
.settings-shell .refusal-users {
    margin: 0 0 8px;
    width: 100%;
    background-color: #ffffff;
}
.settings-shell .refusal-users th {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6c757d;
}
.settings-shell .refusal-users td {
    font-size: 12px;
}
.settings-shell .refusal-users .refusal-person {
    font-weight: 700;
}
.settings-shell .refusal-endpoints h5, .settings-shell .refusal-impact h5 {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6c757d;
    margin: 8px 0 4px;
}
.settings-shell .impact-muted {
    color: #6c757d;
    font-size: 12px;
}
/* Who would lose or gain access, above the table. */
.settings-shell .refusal-impact .impact-stats {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 12px;
}
.settings-shell .refusal-impact .impact-stat {
    -ms-flex: 1 1 180px;
        flex: 1 1 180px;
    padding: 10px 14px;
    border-radius: 12px;
    border: 1px solid #e0e6ed;
    font-size: 13px;
}
.settings-shell .refusal-impact .impact-stat.lose {
    background-color: rgba(217, 83, 79, 0.15);
    color: #d9534f;
}
.settings-shell .refusal-impact .impact-stat.gain {
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
}
.settings-shell .refusal-impact .impact-stat.changes {
    background-color: rgba(255, 243, 205, 0.9);
    color: #856404;
}
.settings-shell .refusal-impact .impact-number {
    font-size: 22px;
    font-weight: 700;
}
.settings-shell .refusal-impact .impact-lists {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 24px;
}
.settings-shell .refusal-impact .impact-lists > div {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
}
.settings-shell .refusal-impact .impact-lists ol, .settings-shell .refusal-impact .impact-lists ul {
    padding-left: 18px;
    margin: 0;
    font-size: 13px;
}
.settings-shell .refusal-filters {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}
.settings-shell .refusal-filters .claim-item-filter {
    -ms-flex: 1 1 240px;
        flex: 1 1 240px;
    margin: 0;
}
.settings-shell .refusal-filters select.form-control {
    width: auto;
    min-width: 160px;
}
.settings-shell .refusal-export {
    margin-left: auto;
}
/* The audit log's pane: the spinner sits over it while loading. */
.settings-shell .refusal-pane {
    position: relative;
}
.settings-shell .refusal-spinner {
    position: absolute;
    left: 50%;
    top: 40%;
}
/* The role-defaults screen, opened from the audit log on one permission. */
.settings-shell .focus-permission {
    margin-top: 8px;
    padding: 8px 12px;
    border-radius: 12px;
    background-color: rgba(255, 243, 205, 0.9);
    color: #856404;
    border: 1px solid rgba(255, 193, 7, 0.7);
}
.settings-shell .claim-item-toggle.disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
/* =================================================================== */
/* ! Calendar
/* The calendar dialog and the appointment modal are built on the settings
/* shell (_settings.css) - the same white rail, pale blue canvas, cards,
/* notices and form controls - so they read as the same product. What only
/* the calendar needs is scoped to .calendar-shell / .appointment-shell.
/* The appt-* pieces (status pills, invoice dots, swatches) are shared by
/* the grid, the team view, the hover card and the modal, so sit at the top.
/* =================================================================== */
@keyframes calendar-loading {
	from {
		left: -40%;
	}

	to {
		left: 100%;
	}
}
/* =================================================================== */
/* ! Shared appointment pieces
/* =================================================================== */
/* White pills, so they read on any appointment colour a practice picks. */
.appt-pill {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	padding: 1px 6px;
	border-radius: 20px;
	background-color: #ffffff;
	color: #4a5568;
	font-size: 9px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	line-height: 1.5;
	white-space: nowrap;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}
.appt-pill-arrived {
	color: #856404;
}
.appt-pill-in-progress {
	color: #00796b;
}
.appt-pill-done {
	color: #2e7d32;
}
.appt-pill-missed {
	color: #a94442;
}
.appt-invoice {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: center;
	    justify-content: center;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background-color: #ffffff;
	font-size: 10px;
	font-weight: 700;
	line-height: 1;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}
.appt-invoice-draft {
	color: #d9534f;
}
.appt-invoice-pending {
	color: #856404;
}
.appt-invoice-paid {
	color: #2e7d32;
}
.appt-swatch {
	display: inline-block;
	width: 10px;
	height: 10px;
	-ms-flex-negative: 0;
	    flex-shrink: 0;
	border-radius: 3px;
}
.appt-swatch.round {
    border-radius: 50%;
}
/* Hover card - appended to body by Bootstrap's popover, so not under either shell. */
.popover .appt-popover {
	min-width: 230px;
	font-size: 12px;
	color: #333333;
}
.popover .appt-popover .appt-popover-row {
    display: -ms-flexbox;
    display: flex;
    gap: 10px;
    padding: 3px 0;
}
.popover .appt-popover .appt-popover-label {
    -ms-flex: 0 0 64px;
        flex: 0 0 64px;
    padding-top: 2px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #a3aac0;
}
.popover .appt-popover .appt-popover-note {
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px dashed #e0e6ed;
    color: #555555;
    white-space: pre-line;
}
.popover .appt-popover .appt-popover-invoice {
    margin-top: 4px;
    font-size: 11.5px;
    font-weight: 600;
}
/* =================================================================== */
/* ! Notices (both shells)
/* =================================================================== */
.calendar-shell .settings-notice .notice-text, .appointment-shell .settings-notice .notice-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
/* A booking that is refused outright, such as one inside practice leave. */
.calendar-shell .settings-notice.error, .appointment-shell .settings-notice.error {
    background-color: #fdecea;
    color: #611a15;
    border: 1px solid #f5c2c7;
}
.calendar-shell .settings-notice.error i, .appointment-shell .settings-notice.error i {
    color: #d9534f;
}
.calendar-shell .settings-notice .notice-action, .appointment-shell .settings-notice .notice-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: auto;
    max-width: none;
    margin: -3px 0;
    padding: 4px 14px;
}
.calendar-shell .settings-notice .practice-leave-override, .appointment-shell .settings-notice .practice-leave-override {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 8px;
    margin: 8px 0 0;
    font-weight: normal;
    cursor: pointer;
}
.calendar-shell .settings-notice .practice-leave-override input, .appointment-shell .settings-notice .practice-leave-override input {
    margin: 3px 0 0;
}
.calendar-shell .settings-notice .notice-dismiss, .appointment-shell .settings-notice .notice-dismiss {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border: none;
    background: none;
    padding: 0 2px;
    color: inherit;
    opacity: 0.6;
    cursor: pointer;
}
.calendar-shell .settings-notice .notice-dismiss i, .appointment-shell .settings-notice .notice-dismiss i {
    margin: 0;
    font-size: 12px;
    color: inherit;
}
.calendar-shell .settings-notice .notice-dismiss:hover, .appointment-shell .settings-notice .notice-dismiss:hover {
    opacity: 1;
}
.calendar-shell .segmented, .appointment-shell .segmented {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 2px;
    padding: 3px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
}
.calendar-shell .segmented .segmented-label, .appointment-shell .segmented .segmented-label {
    padding: 0 6px 0 7px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
}
.calendar-shell .segmented button, .appointment-shell .segmented button {
    border: none;
    border-radius: 6px;
    background: none;
    padding: 5px 11px;
    font-size: 12px;
    font-weight: 600;
    color: #4a5568;
    white-space: nowrap;
    transition: all 0.15s ease;
}
.calendar-shell .segmented button:hover, .appointment-shell .segmented button:hover {
    background-color: #f4f7fe;
    color: #0035d2;
}
.calendar-shell .segmented button.active, .appointment-shell .segmented button.active {
    background-color: #0035d2;
    color: #ffffff;
    box-shadow: 0 2px 6px rgba(0, 53, 210, 0.25);
}
/* =================================================================== */
/* ! Calendar dialog shell
/* =================================================================== */
/* Left rail
	/* ------------------------------------------------------------------- */
.calendar-shell .calendar-rail {
    -ms-flex-preferred-size: 264px;
        flex-basis: 264px;
    width: 264px;
    padding-bottom: 8px;
}
/* ------------------------------------------------------------------- */
.calendar-shell .nav-item-text {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.calendar-shell .calendar-mode-switch {
    display: -ms-flexbox;
    display: flex;
    gap: 4px;
    margin: 14px 12px 2px;
    padding: 4px;
    background-color: #f4f7fe;
    border-radius: 10px;
}
.calendar-shell .calendar-mode-switch button {
    -ms-flex: 1;
        flex: 1;
    border: none;
    background: none;
    border-radius: 8px;
    padding: 7px 6px;
    font-size: 12px;
    font-weight: 600;
    color: #4a5568;
    white-space: nowrap;
    transition: all 0.15s ease;
}
.calendar-shell .calendar-mode-switch button i {
    margin-right: 5px;
    color: #a3aac0;
}
.calendar-shell .calendar-mode-switch button:hover {
    color: #0035d2;
}
.calendar-shell .calendar-mode-switch button.active {
    background-color: #ffffff;
    color: #0035d2;
    box-shadow: 0 1px 4px rgba(0, 53, 210, 0.12);
}
.calendar-shell .calendar-mode-switch button.active i {
    color: #0035d2;
}
.calendar-shell .mini-month {
    padding: 14px 14px 12px;
    border-bottom: 1px solid #eef1f7;
}
.calendar-shell .mini-month-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    margin-bottom: 4px;
}
.calendar-shell .mini-month-title {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #0a2540;
}
.calendar-shell .mini-month-nav {
    width: 26px;
    height: 26px;
    border: none;
    background: none;
    border-radius: 50%;
    color: #a3aac0;
    font-size: 10px;
    transition: all 0.15s ease;
}
.calendar-shell .mini-month-nav:hover {
    background-color: #e7f0ff;
    color: #0035d2;
}
.calendar-shell .mini-month-week {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (1fr)[7];
        grid-template-columns: repeat(7, 1fr);
}
.calendar-shell .mini-month-dow span {
    padding: 4px 0;
    text-align: center;
    font-size: 10px;
    font-weight: 700;
    color: #a3aac0;
}
/* The days on screen form one pale band, so the rail shows which slice of the month you are in. */
.calendar-shell .mini-month-day {
    height: 28px;
    margin: 1px 0;
    border: none;
    background: none;
    padding: 0;
    font-size: 11.5px;
    color: #333333;
    font-variant-numeric: tabular-nums;
    transition: background-color 0.12s ease;
}
.calendar-shell .mini-month-day:hover {
    background-color: #f4f7fe;
    color: #0035d2;
}
.calendar-shell .mini-month-day.out-of-month {
    color: #c3c9da;
}
.calendar-shell .mini-month-day.in-view {
    background-color: #e7f0ff;
    color: #0035d2;
}
/* A public holiday - named in the hover */
.calendar-shell .mini-month-day.is-holiday {
    color: #00796b;
    font-weight: 700;
    box-shadow: inset 0 -2px 0 #00796b;
}
.calendar-shell .mini-month-day.is-today {
    background-color: #0035d2;
    color: #ffffff;
    border-radius: 50%;
    font-weight: 700;
}
.calendar-shell .calendar-practice-item .appt-swatch {
    margin: 0 2px;
    box-shadow: 0 0 0 2px #ffffff;
}
/* Tick to add a clinician alongside the others; click the name to see only them. */
.calendar-shell .clinician-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 2px 12px;
    margin-bottom: 1px;
    border-radius: 10px;
    transition: background-color 0.15s ease;
}
.calendar-shell .clinician-row:hover {
    background-color: #f4f7fe;
}
.calendar-shell .clinician-row .clinician-check {
    width: 18px;
    height: 18px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    padding: 0;
    border: 2px solid;
    border-radius: 5px;
    background-color: #ffffff;
    color: #ffffff;
    font-size: 9px;
    cursor: pointer;
    transition: background-color 0.15s ease;
}
.calendar-shell .clinician-row .clinician-check i {
    opacity: 0;
}
.calendar-shell .clinician-row .clinician-check:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.calendar-shell .clinician-row.is-shown .clinician-check i {
    opacity: 1;
}
.calendar-shell .clinician-row .clinician-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    padding: 6px 0;
    border: none;
    background: none;
    text-align: left;
    font-size: 13px;
    font-weight: 600;
    color: #4a5568;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.calendar-shell .clinician-row .clinician-name:hover {
    color: #0035d2;
    text-decoration: underline;
}
.calendar-shell .clinician-row:not(.is-shown) .clinician-name {
    color: #a3aac0;
}
.calendar-shell .clinician-row.is-only .clinician-name {
    color: #0035d2;
}
.calendar-shell .clinician-row .clinician-count {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 2px 7px;
    border-radius: 20px;
    background-color: #f8f9fa;
    color: #7d8399;
    font-size: 10px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
/* Practice names run long ("Eye Surgery Associates - Remuera"), so they wrap rather than cut off. */
.calendar-shell .practice-row .clinician-name {
    white-space: normal;
    overflow-wrap: anywhere;
    line-height: 1.35;
}
.calendar-shell .practice-row .appt-swatch {
    margin: 0 2px;
    box-shadow: 0 0 0 2px #ffffff;
}
.calendar-shell .legend-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 5px 12px;
    font-size: 12.5px;
    color: #4a5568;
}
/* Main pane
	/* ------------------------------------------------------------------- */
.calendar-shell .calendar-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 12px;
    padding: 16px 20px 18px;
    background-color: #f4f7fe;
    overflow: hidden;
}
/* ------------------------------------------------------------------- */
.calendar-shell .calendar-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 12px 16px;
}
.calendar-shell .calendar-toolbar-nav {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    min-width: 0;
}
.calendar-shell .calendar-title {
    margin: 0;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    letter-spacing: -0.02em;
    color: #0a2540;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.calendar-shell .cal-btn {
    height: 34px;
    padding: 0 14px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    color: #333333;
    font-size: 12.5px;
    font-weight: 600;
    transition: all 0.15s ease;
}
.calendar-shell .cal-btn:hover {
    border-color: #0035d2;
    color: #0035d2;
    position: relative;
}
.calendar-shell .cal-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.calendar-shell .cal-icon-btn {
    width: 34px;
    padding: 0;
    font-size: 11px;
}
.calendar-shell .cal-btn-group {
    display: -ms-flexbox;
    display: flex;
}
.calendar-shell .cal-btn-group .cal-btn:first-child {
    border-radius: 8px 0 0 8px;
}
.calendar-shell .cal-btn-group .cal-btn:last-child {
    margin-left: -1px;
    border-radius: 0 8px 8px 0;
}
.calendar-shell .calendar-toolbar-tools {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
}
.calendar-shell .calendar-search {
    position: relative;
    width: 230px;
}
.calendar-shell .calendar-search > i {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 12px;
    color: #a3aac0;
    pointer-events: none;
}
.calendar-shell .calendar-search .form-control {
    height: 34px;
    padding-left: 31px;
    padding-right: 28px;
}
.calendar-shell .calendar-search .calendar-search-clear {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 22px;
    height: 22px;
    border: none;
    border-radius: 50%;
    background: none;
    color: #a3aac0;
    font-size: 11px;
}
.calendar-shell .calendar-search .calendar-search-clear:hover {
    background-color: #e7f0ff;
    color: #0035d2;
}
/* Counts by where patients are in their visit. Clicking one highlights just those. */
.calendar-shell .calendar-statusbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
}
.calendar-shell .status-chips {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
}
.calendar-shell .status-chip {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 7px;
    padding: 5px 11px;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    background-color: #ffffff;
    color: #4a5568;
    font-size: 11.5px;
    font-weight: 600;
    transition: all 0.15s ease;
}
.calendar-shell .status-chip strong {
    color: #333333;
    font-variant-numeric: tabular-nums;
}
.calendar-shell .status-chip .status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
}
.calendar-shell .status-chip:hover {
    border-color: #cbd5e0;
}
.calendar-shell .status-chip.active {
    border-color: #0035d2;
    background-color: #e7f0ff;
    color: #0035d2;
}
.calendar-shell .status-chip.active strong {
    color: #0035d2;
}
.calendar-shell .status-chip.muted {
    opacity: 0.55;
}
.calendar-shell .status-chip-booked .status-dot {
    background-color: #a3aac0;
}
.calendar-shell .status-chip-arrived .status-dot {
    background-color: #FFB627;
}
.calendar-shell .status-chip-in-progress .status-dot {
    background-color: #00bcd4;
}
.calendar-shell .status-chip-done .status-dot {
    background-color: #20c997;
}
.calendar-shell .status-chip-missed .status-dot {
    background-color: #d9534f;
}
.calendar-shell .status-total {
    margin-left: auto;
    font-size: 11.5px;
    color: #878ba0;
}
.calendar-shell .team-empty-toggle {
    padding: 5px 12px;
    font-size: 11.5px;
}
.calendar-shell .team-empty-toggle i {
    color: #0035d2;
}
/* The notices join the pane's own gap rather than adding one when there are none. */
.calendar-shell .calendar-notices {
    display: contents;
}
.calendar-shell .calendar-notices .settings-notice {
    margin: 0;
}
.calendar-shell .calendar-stage {
    position: relative;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background-color: #ffffff;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    overflow: hidden;
}
.calendar-shell .personal-stage {
    padding: 0;
    overflow: hidden;
}
.calendar-shell .calendar-fc {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
.calendar-shell .calendar-loading {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    overflow: hidden;
    z-index: 6;
    pointer-events: none;
}
.calendar-shell .calendar-loading span {
    position: absolute;
    top: 0;
    left: -40%;
    width: 40%;
    height: 100%;
    border-radius: 3px;
    background-color: #0035d2;
    animation: calendar-loading 1.1s ease-in-out infinite;
}
/* Statuses on the light cards: the colour edge stays the type's, so a status is a ring, a fade or a
	   hatch rather than another edge. "Waiting" is said by its pill alone. */
.calendar-shell .fc .fc-event.appt.appt-status-in-progress, .calendar-shell .team-day .team-appt.appt-status-in-progress {
    box-shadow: 0 0 0 2px rgba(0, 188, 212, 0.5), 0 2px 6px rgba(0, 188, 212, 0.25);
}
/* Done is still worth seeing, but it is no longer what the day is about. Muted by colour rather
	   than transparency, so cards that overlap stay solid instead of showing through one another. */
.calendar-shell .appt-status-done {
    filter: saturate(0.3);
}
.calendar-shell .appt-status-done .fc-title, .calendar-shell .appt-status-done .fc-time, .calendar-shell .appt-status-done .appt-patient-link, .calendar-shell .appt-status-done .team-appt-time, .calendar-shell .appt-status-done .team-appt-meta {
    color: #8a90a3;
}
/* Appointment status, shared by FullCalendar events and the team view
	/* ------------------------------------------------------------------- */
.calendar-shell .appt-status-missed {
    background-image: repeating-linear-gradient(135deg, rgba(10, 37, 64, 0.07) 0 6px, transparent 6px 12px);
}
.calendar-shell .appt-status-missed .fc-title, .calendar-shell .appt-status-missed .appt-patient-link {
    text-decoration: line-through;
}
/* After the statuses, so a search or status highlight wins over "done". */
.calendar-shell .appt-dimmed {
    opacity: 0.18;
    filter: grayscale(0.6);
}
/* ------------------------------------------------------------------- */
.calendar-shell .appt-patient-link {
    cursor: pointer;
}
.calendar-shell .appt-patient-link:hover {
    text-decoration: underline;
}
.calendar-shell .appt-badges {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    margin-top: 3px;
}
/* FullCalendar theme
	/* ------------------------------------------------------------------- */
.calendar-shell .fc {
    font-size: 12px;
}
.calendar-shell .fc td, .calendar-shell .fc th, .calendar-shell .fc hr, .calendar-shell .fc thead, .calendar-shell .fc tbody, .calendar-shell .fc .fc-row, .calendar-shell .fc .fc-divider, .calendar-shell .fc .fc-popover {
    border-color: #eef1f7;
}
.calendar-shell .fc th.fc-day-header {
    padding: 8px 0 7px;
    border-bottom: 1px solid #e0e6ed;
    background-color: #ffffff;
    font-weight: 400;
}
.calendar-shell .fc .fc-col-weekday {
    display: block;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
}
.calendar-shell .fc .fc-col-date {
    display: inline-block;
    min-width: 28px;
    height: 28px;
    margin-top: 2px;
    border-radius: 14px;
    line-height: 28px;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #0a2540;
}
.calendar-shell .fc .fc-col-date.is-today {
    background-color: #0035d2;
    color: #ffffff;
}
.calendar-shell .fc .fc-col-month {
    margin-left: 3px;
    font-size: 11px;
    color: #a3aac0;
}
.calendar-shell .fc .fc-axis {
    font-size: 10.5px;
    color: #a3aac0;
}
.calendar-shell .fc td.fc-today {
    background-color: rgba(0, 53, 210, 0.025);
}
.calendar-shell .fc .fc-time-grid .fc-slats .fc-minor td {
    border-top-style: dotted;
    border-top-color: #f1f3f8;
}
/* The team view's "+ Book 9:30 am" marker, on the day and week grids. Placed by attachBookingGhost
		   in calendarController.js; it looks the same as .team-ghost. */
.calendar-shell .fc .fc-book-ghost {
    display: none;
    position: absolute;
    z-index: 3;
    min-height: 18px;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 0 8px;
    border: 1px dashed #0035d2;
    border-radius: 6px;/* Solid, so the time reads over an appointment's edge. */
    background-color: #e7f0ff;
    box-shadow: 0 1px 4px rgba(0, 53, 210, 0.15);
    color: #0035d2;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    pointer-events: none;
}
.calendar-shell .fc .fc-nonbusiness {
    background-color: #f8f9fc;
}
.calendar-shell .fc .fc-now-indicator-line {
    border-top-width: 2px;
    border-color: #d9534f;
}
.calendar-shell .fc .fc-now-indicator-line:before {
    content: "";
    position: absolute;
    left: -4px;
    top: -5px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: #d9534f;
}
.calendar-shell .fc .fc-now-indicator-arrow {
    display: none;
}
.calendar-shell .fc .fc-event {
    border: none;
    border-radius: 6px;
    font-size: 11.5px;
    box-shadow: inset 3px 0 0 rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.08);
}
/* Appointments are light cards: a soft tint of their colour (inline), a solid edge in the full
		   colour (border-left, from the inline border colour) and dark text, lifted off the grid by a
		   faint shadow - so a full day reads calmly, and the sessions under it stay visible around it. */
.calendar-shell .fc .fc-event.appt {
    border-width: 0 0 0 4px;
    border-style: solid;
    border-radius: 4px 7px 7px 4px;
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.06), 0 1px 2px rgba(10, 37, 64, 0.08);
    transition: box-shadow 0.15s ease;
}
.calendar-shell .fc .fc-event.appt:hover {
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.1), 0 4px 12px rgba(10, 37, 64, 0.16);
}
.calendar-shell .fc .fc-event.appt .fc-title {
    font-weight: 600;
}
.calendar-shell .fc .fc-event.appt .fc-time {
    color: #4a5568;
}
.calendar-shell .fc .fc-time-grid-event .fc-content {
    padding: 3px 5px 2px 8px;
}
.calendar-shell .fc .fc-time-grid-event.appt .fc-content {
    padding-left: 6px;
}
.calendar-shell .fc .fc-time-grid-event .fc-time {
    font-size: 10.5px;
    opacity: 0.9;
}
/* The pills already sit on white; on a pale card they need an outline to stand off it. */
.calendar-shell .fc .fc-event.appt .appt-pill, .calendar-shell .fc .fc-event.appt .appt-invoice {
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.1);
}
/* Badges sit in the top right corner rather than on a line of their own, which a 20-minute
		   appointment does not have. */
.calendar-shell .fc .fc-time-grid-event .appt-badges {
    position: absolute;
    top: 3px;
    right: 4px;
    margin: 0;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    gap: 3px;
}
.calendar-shell .fc .fc-time-grid-event.has-badges .fc-content {
    padding-right: 86px;
}
/* A week's columns are too narrow for the wording - the status becomes a coloured dot. */
.calendar-shell .fc .fc-agendaWeek-view .fc-time-grid-event.has-badges .fc-content {
    padding-right: 32px;
}
.calendar-shell .fc .fc-agendaWeek-view .fc-time-grid-event .appt-pill {
    width: 10px;
    height: 10px;
    padding: 0;
    font-size: 0;
    background-color: currentColor;
    box-shadow: 0 0 0 2px #ffffff;
}
.calendar-shell .fc .fc-agendaWeek-view .fc-time-grid-event .appt-invoice {
    width: 13px;
    height: 13px;
    font-size: 8px;
}
.calendar-shell .fc .fc-title {
    font-weight: 600;
}
.calendar-shell .fc .fc-day-grid-event .fc-content {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    padding: 2px 6px;
}
.calendar-shell .fc .fc-day-grid-event .fc-content .appt-badges {
    margin: 0 0 0 auto;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
}
/* Month cells are too narrow for the wording; the invoice dot stays. */
.calendar-shell .fc .fc-day-grid-event .fc-content .appt-pill {
    display: none;
}
.calendar-shell .fc .practice-day {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.02em;
    box-shadow: none;
}
.calendar-shell .fc .fc-highlight {
    background-color: #0035d2;
    opacity: 0.12;
}
/* Month */
.calendar-shell .fc .fc-day-number {
    padding: 4px 7px;
    font-size: 11.5px;
    color: #4a5568;
}
.calendar-shell .fc .fc-day-top.fc-today .fc-day-number {
    margin: 3px;
    padding: 2px 8px;
    border-radius: 20px;
    background-color: #0035d2;
    color: #ffffff;
}
.calendar-shell .fc .fc-day-top.fc-other-month .fc-day-number {
    color: #c3c9da;
}
.calendar-shell .fc .fc-more {
    font-size: 11px;
    font-weight: 700;
    color: #0035d2;
}
/* Agenda (list) */
.calendar-shell .fc .fc-list-view {
    border: none;
}
.calendar-shell .fc .fc-list-heading td {
    padding: 9px 16px;
    background-color: #e7f0ff;
}
.calendar-shell .fc .fc-list-heading-main {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #0035d2;
}
.calendar-shell .fc .fc-list-heading-alt {
    font-size: 12px;
    color: #6a7391;
}
.calendar-shell .fc .fc-list-item td {
    padding: 10px 16px;
    vertical-align: middle;
}
.calendar-shell .fc .fc-list-item:hover td {
    background-color: #fbfcff;
    cursor: pointer;
}
.calendar-shell .fc .fc-list-item-time {
    width: 150px;
    color: #4a5568;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.calendar-shell .fc .fc-list-item-marker .fc-event-dot {
    width: 12px;
    height: 12px;
    border-radius: 4px;
}
/* Icon links, as on the welcome page (_welcome.css) - only the spacing in the day heading differs */
.calendar-shell .appointment-list-downloads {
    margin-left: 14px;
}
.calendar-shell .appointment-list-downloads a {
    cursor: pointer;
}
.calendar-shell .appointment-list-downloads a:hover {
    opacity: 0.7;
    text-decoration: none;
}
/* ------------------------------------------------------------------- */
.calendar-shell .appt-list-cell {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px 16px;
}
.calendar-shell .appt-list-cell .appt-patient-link {
    font-size: 13px;
    font-weight: 600;
    color: #333333;
}
.calendar-shell .appt-list-cell .appt-pill {
    box-shadow: none;
    border: 1px solid currentColor;
}
.calendar-shell .appt-list-cell .appt-invoice {
    box-shadow: 0 0 0 1px currentColor;
}
.calendar-shell .appt-list-meta {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 14px;
    font-size: 11.5px;
    color: #6a7391;
}
.calendar-shell .appt-meta-item {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.calendar-shell .appt-list-badges {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-left: auto;
}
/* An agenda row that is dimmed or done fades as a whole row. */
.calendar-shell .fc-list-item.appt-dimmed, .calendar-shell .fc-list-item.appt-status-done {
    box-shadow: none;
    filter: none;
}
.calendar-shell .fc-list-item.appt-status-missed {
    background-image: none;
}
/* =================================================================== */
/* ! Leave and time away
/* One look everywhere - red stripes, a solid red edge and a labelled pill -
/* so time away can never be mistaken for an appointment type's colour.
/* =================================================================== */
/* Day and week: the hours away */
.calendar-shell .fc .fc-bgevent.unavail-block {
    opacity: 1;
    background: repeating-linear-gradient(135deg, rgba(217, 83, 79, 0.2) 0 8px, rgba(217, 83, 79, 0.07) 8px 16px);
    box-shadow: inset 3px 0 0 #d9534f;
}
/* Sessions: a light wash of the type's colour with a solid edge (set inline from the type), and
	   the type named - quieter than leave, but never in doubt about what the time is for. */
.calendar-shell .fc .fc-bgevent.avail-band {
    opacity: 1;
}
/* The session's name, placed in its first free stretch (freeLabelOffset in calendarController) so
	   no appointment is drawn over it. */
.calendar-shell .fc .bg-label.bg-label-session {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    color: #0a2540;
    font-weight: 600;
    box-shadow: 0 1px 3px rgba(10, 37, 64, 0.18);
}
/* A month cell has no free stretch to speak of; the tint stays, and the type is named elsewhere. */
.calendar-shell .fc-month-view .bg-label-session {
    display: none !important;/* over the inline display jQuery leaves on it */
}
.calendar-shell .bg-swatch {
    display: inline-block;
    width: 8px;
    height: 8px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 2px;
}
/* Under the date: the day's sessions by type */
.calendar-shell .fc .fc-col-sessions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 3px;
    margin-top: 4px;
}
.calendar-shell .fc .fc-col-session {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    max-width: 100%;
    padding: 1px 7px;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    background-color: #ffffff;
    color: #333333;
    font-size: 10px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: help;
}
.calendar-shell .fc .fc-col-session.more {
    color: #878ba0;
}
.calendar-shell .fc .bg-label {
    position: absolute;
    top: 4px;
    left: 8px;
    right: 6px;
    z-index: 1;
    display: inline-block;
    max-width: -webkit-max-content;
    max-width: -moz-max-content;
    max-width: max-content;
    padding: 2px 8px;
    border-radius: 20px;
    background-color: #ffffff;
    color: #a94442;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1.5;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    box-shadow: 0 1px 3px rgba(169, 68, 66, 0.25);
}
/* Whole days: a solid bar in the all-day row and on the month */
.calendar-shell .fc .leave-banner {
    border: none;
    background-color: #d9534f;
    background-image: repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.15) 0 6px, transparent 6px 12px);
    color: #ffffff;
    font-weight: 700;
    box-shadow: none;
}
.calendar-shell .fc .leave-banner .fc-title, .calendar-shell .fc .leave-banner .fc-content {
    color: #ffffff;
}
/* Agenda rows */
.calendar-shell .fc .fc-list-item.leave-banner {
    background: none;
}
.calendar-shell .fc .fc-list-item.leave-banner td {
    background-color: #fdecea;
}
.calendar-shell .fc .fc-list-item.leave-banner:hover td {
    background-color: #fbdedb;
    cursor: default;
}
.calendar-shell .fc .fc-list-item.leave-banner .fc-event-dot {
    background-color: #d9534f;
}
.calendar-shell .fc .fc-list-item.leave-banner .fc-list-item-time {
    color: #a94442;
}
.calendar-shell .leave-list-title {
    font-size: 13px;
    font-weight: 700;
    color: #a94442;
}
/* ! Practice leave
	/* Hatched grey rather than red, so time the whole practice is closed reads differently from one
	/* clinician's leave.
	/* =================================================================== */
.calendar-shell .fc .fc-bgevent.practice-leave-bg {
    opacity: 1;
    background: repeating-linear-gradient(135deg, rgba(91, 107, 140, 0.24) 0 7px, rgba(91, 107, 140, 0.08) 7px 14px);
    box-shadow: inset 0 2px 0 rgba(91, 107, 140, 0.45), inset 0 -2px 0 rgba(91, 107, 140, 0.45);
}
/* =================================================================== */
.calendar-shell .fc .bg-label.practice-leave-label {
    color: #3d4559;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    box-shadow: 0 1px 3px rgba(61, 69, 89, 0.25);
    cursor: help;
}
.calendar-shell .fc .practice-leave-banner {
    border: none;
    background-color: #5b6b8c;
    background-image: repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.15) 0 6px, transparent 6px 12px);
    color: #ffffff;
    font-weight: 700;
    box-shadow: none;
    cursor: default;
}
.calendar-shell .fc .practice-leave-banner .fc-title, .calendar-shell .fc .practice-leave-banner .fc-content {
    color: #ffffff;
}
.calendar-shell .fc .fc-list-item.practice-leave-banner {
    background: none;
}
.calendar-shell .fc .fc-list-item.practice-leave-banner td {
    background-color: #eef1f7;
}
.calendar-shell .fc .fc-list-item.practice-leave-banner .fc-event-dot {
    background-color: #5b6b8c;
}
.calendar-shell .practice-leave-list-title {
    font-weight: 700;
    color: #3d4559;
}
/* ! Public holidays
	/* =================================================================== */
.calendar-shell .fc .holiday-banner {
    border: none;
    background-color: #00796b;
    color: #ffffff;
    font-weight: 700;
    box-shadow: none;
    cursor: default;
}
.calendar-shell .fc .holiday-banner .fc-title, .calendar-shell .fc .holiday-banner .fc-content {
    color: #ffffff;
}
/* =================================================================== */
.calendar-shell .fc .fc-list-item.holiday-banner {
    background: none;
}
.calendar-shell .fc .fc-list-item.holiday-banner td {
    background-color: rgb(230, 242, 240);
}
.calendar-shell .fc .fc-list-item.holiday-banner:hover td {
    background-color: rgb(217, 235, 233);
    cursor: default;
}
.calendar-shell .fc .fc-list-item.holiday-banner .fc-event-dot {
    background-color: #00796b;
}
.calendar-shell .holiday-list-title {
    font-weight: 700;
    color: #00796b;
}
.calendar-shell .fc th.fc-day-header.is-holiday {
    background-color: rgb(230, 242, 240);
}
.calendar-shell .fc .fc-col-holiday {
    display: block;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    max-width: 95%;
    margin: 4px auto 0;
    padding: 1px 8px;
    border-radius: 20px;
    background-color: #00796b;
    color: #ffffff;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.02em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.calendar-shell .team-day-holiday {
    padding: 6px 12px;
    background-color: rgb(230, 242, 240);
    color: #00796b;
    font-size: 12px;
    font-weight: 700;
}
/* The day header carries it too, so it shows with the hours away scrolled out of view */
.calendar-shell .fc th.fc-day-header.is-away {
    background-color: #fdecea;
}
.calendar-shell .fc .fc-col-away {
    display: block;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    max-width: 95%;
    margin: 4px auto 0;
    padding: 1px 8px;
    border-radius: 20px;
    background-color: #d9534f;
    color: #ffffff;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.02em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* Raised above .fc .fc-event and the status shadows, which would otherwise replace the ring. */
.calendar-shell .fc .fc-event.appt-clash, .calendar-shell .team-day .team-appt.appt-clash {
    box-shadow: 0 0 0 2px #d9534f, 0 2px 6px rgba(217, 83, 79, 0.35);
}
/* A booking inside its clinician's leave - someone needs to move or cover it. */
.calendar-shell .appt-pill-clash {
    gap: 3px;
    background-color: #d9534f;
    color: #ffffff;
}
.calendar-shell .appt-pill-clash i {
    font-size: 9px;
}
/* The week turns pills into dots; a clash stays a red dot with its mark. */
.calendar-shell .fc .fc-agendaWeek-view .fc-time-grid-event .appt-pill.appt-pill-clash, .calendar-shell .team-day .team-appt.is-short .appt-pill.appt-pill-clash {
    background-color: #d9534f;
}
.calendar-shell .fc-day-grid-event .appt-pill-clash {
    display: -ms-inline-flexbox;
    display: inline-flex;
    padding: 0 5px;
    font-size: 0;
}
.calendar-shell .fc-day-grid-event .appt-pill-clash i {
    font-size: 9px;
}
.calendar-shell .status-chip-clash {
    border-color: rgba(217, 83, 79, 0.45);
    background-color: #fdecea;
    color: #a94442;
}
.calendar-shell .status-chip-clash strong {
    color: #a94442;
}
.calendar-shell .status-chip-clash:hover {
    border-color: #d9534f;
}
.calendar-shell .status-chip-clash.active {
    border-color: #d9534f;
    background-color: #d9534f;
    color: #ffffff;
}
.calendar-shell .status-chip-clash.active strong {
    color: #ffffff;
}
/* Rail */
.calendar-shell .clinician-away {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 1px 7px;
    border: 1px solid rgba(217, 83, 79, 0.35);
    border-radius: 20px;
    background-color: #fdecea;
    color: #a94442;
    font-size: 10px;
    font-weight: 700;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
/* Team view */
.calendar-shell .team-day .team-away {
    position: absolute;
    left: 0;
    right: 0;
    z-index: 1;
    background: repeating-linear-gradient(135deg, rgba(217, 83, 79, 0.2) 0 8px, rgba(217, 83, 79, 0.07) 8px 16px);
    box-shadow: inset 3px 0 0 #d9534f;
    pointer-events: none;
}
.calendar-shell .team-day .team-away-label {
    position: -webkit-sticky;
    position: sticky;
    top: 54px;
    display: inline-block;
    max-width: calc(100% - 16px);
    margin: 6px 0 0 8px;
    padding: 2px 9px;
    border-radius: 20px;
    background-color: #ffffff;
    color: #a94442;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    box-shadow: 0 1px 3px rgba(169, 68, 66, 0.25);
}
.calendar-shell .team-day .team-session {
    position: absolute;
    left: 0;
    right: 0;
    z-index: 0;
    pointer-events: none;
}
/* In the session's first free stretch (top set inline), so appointments never cover it. Takes the
		   pointer for its tooltip; a click on it still books, as the column does. */
.calendar-shell .team-day .team-session-label {
    position: absolute;
    left: 8px;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    max-width: calc(100% - 16px);
    padding: 2px 9px;
    border-radius: 20px;
    background-color: #ffffff;
    color: #0a2540;
    font-size: 10.5px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    box-shadow: 0 1px 3px rgba(10, 37, 64, 0.18);
    pointer-events: auto;
    cursor: help;
}
.calendar-shell .team-day .team-col-head.is-away {
    background-color: #fdecea;
}
.calendar-shell .team-day .team-col-head.is-away-all-day .team-col-name {
    color: #a94442;
}
.calendar-shell .team-day .team-col-away {
    -ms-flex-negative: 1;
        flex-shrink: 1;
    min-width: 0;
    padding: 2px 8px;
    border-radius: 20px;
    background-color: #d9534f;
    color: #ffffff;
    font-size: 10px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* =================================================================== */
/* ! Team view - one column per clinician
/* =================================================================== */
team-day-view {
	-ms-flex: 1;
	    flex: 1;
	min-height: 0;
	display: -ms-flexbox;
	display: flex;
}
/* Same for the availability editor: as a plain block it grew to its full height and the stage clipped
   it, so the side panel (weekly pattern, appointment types) never scrolled and its foot was cut off. */
.calendar-shell .personal-stage personal-calendar {
	-ms-flex: 1;
	    flex: 1;
	min-height: 0;
	display: -ms-flexbox;
	display: flex;
}
.calendar-shell .team-day {
	-ms-flex: 1;
	    flex: 1;
	min-width: 0;
	min-height: 0;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.calendar-shell .team-day .team-day-scroller {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    overflow: auto;
}
.calendar-shell .team-day .team-day-grid {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    min-width: 100%;
}
.calendar-shell .team-day .team-day-head {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 5;
    display: -ms-flexbox;
    display: flex;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
}
.calendar-shell .team-day .team-gutter-head {
    position: -webkit-sticky;
    position: sticky;
    left: 0;
    z-index: 6;
    -ms-flex: 0 0 64px;
        flex: 0 0 64px;
    background-color: #ffffff;
}
.calendar-shell .team-day .team-col-head {
    -ms-flex: 1 0 210px;
        flex: 1 0 210px;
    min-width: 210px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    padding: 12px 12px 10px;
    border-left: 1px solid #eef1f7;
}
.calendar-shell .team-day .team-col-head .team-col-swatch {
    width: 10px;
    height: 10px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
}
.calendar-shell .team-day .team-col-head .team-col-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #0a2540;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.calendar-shell .team-day .team-col-head .team-col-count {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 2px 8px;
    border-radius: 20px;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 10px;
    font-weight: 700;
}
.calendar-shell .team-day .team-day-body {
    position: relative;
    display: -ms-flexbox;
    display: flex;
}
.calendar-shell .team-day .team-gutter {
    position: -webkit-sticky;
    position: sticky;
    left: 0;
    z-index: 4;
    -ms-flex: 0 0 64px;
        flex: 0 0 64px;
    background-color: #ffffff;
    border-right: 1px solid #e0e6ed;
}
.calendar-shell .team-day .team-hour {
    position: absolute;
    right: 8px;
    transform: translateY(-50%);
    font-size: 10.5px;
    color: #a3aac0;
    white-space: nowrap;
}
.calendar-shell .team-day .team-hour:first-child {
    transform: translateY(3px);
}
/* Hour rules every 120px and half-hour rules between - 2px a minute, as PX_PER_MINUTE in
	   teamDayView.component.js. Drawn as a background so a long day costs no extra elements. */
.calendar-shell .team-day .team-col {
    position: relative;
    -ms-flex: 1 0 210px;
        flex: 1 0 210px;
    min-width: 210px;
    border-left: 1px solid #eef1f7;
    background-image: linear-gradient(to bottom, #e6eaf2 1px, transparent 1px),
			linear-gradient(to bottom, #f3f5f9 1px, transparent 1px);
    background-size: 100% 120px, 100% 60px;
}
.calendar-shell .team-day.can-book .team-col {
    cursor: pointer;
}
.calendar-shell .team-day .team-ghost {
    display: none;
    position: absolute;
    left: 4px;
    right: 4px;
    height: 20px;/* Above the appointments (z-index 2) and solid, so the time reads over an appointment's edge. */
    z-index: 3;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 0 8px;
    border: 1px dashed #0035d2;
    border-radius: 6px;
    background-color: #e7f0ff;
    box-shadow: 0 1px 4px rgba(0, 53, 210, 0.15);
    color: #0035d2;
    font-size: 11px;
    font-weight: 700;
    pointer-events: none;
}
/* Drag to move: the card stays put, faded, while a dashed preview follows the pointer and says
	   the new time. Drawn by teamDayView.component.js (startDrag / moveDrag). */
.calendar-shell .team-day.is-dragging {
    cursor: grabbing;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}
.calendar-shell .team-day.is-dragging .team-col, .calendar-shell .team-day.is-dragging .team-appt {
    cursor: grabbing;
}
.calendar-shell .team-day .team-appt.is-drag-source {
    opacity: 0.35;
}
.calendar-shell .team-day .team-drag-preview {
    position: absolute;
    left: 4px;
    right: 4px;
    z-index: 4;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 1px;
    padding: 4px 7px 4px 6px;
    border: 1px dashed #0035d2;
    border-left: 4px solid #0035d2;
    border-radius: 4px 7px 7px 4px;
    background-color: rgba(0, 53, 210, 0.08);
    color: #0035d2;
    font-size: 11px;
    pointer-events: none;
    overflow: hidden;
}
.calendar-shell .team-day .team-drag-preview .team-drag-time {
    font-weight: 700;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.calendar-shell .team-day .team-drag-preview .team-drag-title {
    color: #1f2a44;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.calendar-shell .team-day .team-appt {
    position: absolute;
    z-index: 2;
    margin-left: 2px;
    padding: 4px 7px 4px 6px;/* The same light card as the grid's (tint and edge colour inline). */
    border-left: 4px solid transparent;
    border-radius: 4px 7px 7px 4px;
    color: #1f2a44;
    overflow: hidden;
    cursor: pointer;
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.06), 0 1px 2px rgba(10, 37, 64, 0.08);
    transition: box-shadow 0.15s ease;
}
.calendar-shell .team-day .team-appt:hover {
    z-index: 3;
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.1), 0 4px 12px rgba(10, 37, 64, 0.16);
}
.calendar-shell .team-day .team-appt .appt-pill, .calendar-shell .team-day .team-appt .appt-invoice {
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.1);
}
.calendar-shell .team-day .team-appt .team-appt-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 6px;
    min-width: 0;
}
.calendar-shell .team-day .team-appt .team-appt-time {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 10.5px;
    color: #4a5568;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.calendar-shell .team-day .team-appt .appt-patient-link {
    min-width: 0;
    font-size: 12px;
    font-weight: 600;
    color: #1f2a44;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.calendar-shell .team-day .team-appt .appt-patient-link:hover, .calendar-shell .team-day .team-appt .appt-patient-link:focus {
    color: #0035d2;
}
.calendar-shell .team-day .team-appt .team-appt-meta {
    display: -ms-flexbox;
    display: flex;
    gap: 8px;
    margin-top: 1px;
    font-size: 10.5px;
    color: #4a5568;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.calendar-shell .team-day .team-appt .team-appt-practice {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
}
.calendar-shell .team-day .team-appt .team-appt-practice .appt-swatch {
    width: 7px;
    height: 7px;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.7);
}
/* A ten-minute slot has room for one line: start time and name, with the status shrunk to a
		   dot on the right-hand end so it never covers the name. */
.calendar-shell .team-day .team-appt.is-short {
    padding-top: 2px;
    padding-bottom: 2px;
    padding-right: 34px;
}
.calendar-shell .team-day .team-appt.is-short .team-appt-end {
    display: none;
}
.calendar-shell .team-day .team-appt.is-short .appt-badges {
    position: absolute;
    right: 4px;
    top: 50%;
    margin: 0;
    transform: translateY(-50%);
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    gap: 3px;
}
.calendar-shell .team-day .team-appt.is-short .appt-pill {
    width: 10px;
    height: 10px;
    padding: 0;
    font-size: 0;
    background-color: currentColor;
    box-shadow: 0 0 0 2px #ffffff;
}
.calendar-shell .team-day .team-appt.is-short .appt-invoice {
    width: 12px;
    height: 12px;
    font-size: 8px;
}
.calendar-shell .team-day .team-now {
    position: absolute;
    left: 0;
    right: 0;
    height: 0;
    z-index: 4;
    border-top: 2px solid #d9534f;
    pointer-events: none;
}
.calendar-shell .team-day .team-now:before {
    content: "";
    position: absolute;
    left: -4px;
    top: -5px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: #d9534f;
}
.calendar-shell .team-day .team-day-empty {
    margin: auto;
    padding: 54px 32px;
    text-align: center;
}
.calendar-shell .team-day .team-day-empty i {
    margin-bottom: 14px;
    font-size: 34px;
    color: #d3d9e6;
}
.calendar-shell .team-day .team-day-empty h4 {
    margin: 0 0 8px;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #2a307f;
}
.calendar-shell .team-day .team-day-empty p {
    max-width: 52ch;
    margin: 0 auto;
    font-size: 13px;
    line-height: 1.55;
    color: #878ba0;
}
/* =================================================================== */
/* ! Appointment modal
/* =================================================================== */
.appointment-modal .modal-dialog {
    width: 1080px;
    max-width: calc(100vw - 32px);
    margin: 4vh auto;
}
.appointment-modal .modal-content {
    border: none;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
}
/* .settings-shell lays its rail and pane out in a row; here it is header, body, action bar. */
.settings-shell.appointment-shell {
	-ms-flex-direction: column;
	    flex-direction: column;
	max-height: 92vh;

}
.settings-shell.appointment-shell .appointment-header {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 14px;/* Room on the right for the modal's close cross (.dismiss), which sits over the corner. */
    padding: 20px 64px 18px 28px;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
}
.settings-shell.appointment-shell .appointment-header .appt-pill {
    margin-top: 4px;
    padding: 3px 10px;
    font-size: 10px;
    box-shadow: none;
    border: 1px solid currentColor;
}
.settings-shell.appointment-shell .appointment-header-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
/* The same pale navy band the settings panes open with. */
.settings-shell.appointment-shell .appointment-header-text h3 {
    display: inline-block;
    max-width: 100%;
    margin: 4px 0 10px;
    padding: 6px 14px;
    border-radius: 10px;
    background-color: #e7f0ff;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    letter-spacing: -0.02em;
    color: #0035d2;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.appointment-shell .appointment-eyebrow {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
}
.settings-shell.appointment-shell .appointment-when {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px 18px;
    font-size: 12.5px;
    color: #4a5568;
}
.settings-shell.appointment-shell .appointment-when i {
    margin-right: 6px;
    color: #0035d2;
}
.settings-shell.appointment-shell .settings-pane-body {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    padding: 20px 28px 24px;
}
.settings-shell.appointment-shell .appointment-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: minmax(0, 1.2fr) minmax(0, 1fr);
        grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
    -ms-flex-align: start;
        align-items: start;
    gap: 20px;
}
.settings-shell.appointment-shell .appointment-side {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 20px;
}
.settings-shell.appointment-shell .settings-card {
    padding: 20px 22px;
}
.settings-shell.appointment-shell .booking-card .card-body {
    gap: 14px;
}
.settings-shell.appointment-shell .field-block {
    display: block;
}
.settings-shell.appointment-shell .chip-select {
    -ms-flex-item-align: start;
        align-self: flex-start;
}
.settings-shell.appointment-shell datepicker {
    display: block;
}
/* Read-only only so the picker is used rather than typed over - it is not disabled, so it
		   should not look it. */
.settings-shell.appointment-shell datepicker .form-control[readonly] {
    background-color: #ffffff;
    color: #333333;
    cursor: pointer;
}
/* Appointment type picker - ui-select (selectize theme), so each type can show its colour - dressed
	   as the settings form fields around them. */
.settings-shell.appointment-shell .type-picker .selectize-input {
    min-height: 38px;
    padding: 8px 12px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    box-shadow: none;
    font-size: 13px;
    color: #333333;
}
.settings-shell.appointment-shell .type-picker .selectize-input.focus {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
}
.settings-shell.appointment-shell .type-picker .selectize-input > input {
    font-size: 13px;
}
.settings-shell.appointment-shell .type-picker .selectize-dropdown {
    margin-top: 4px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
    overflow: hidden;
}
.settings-shell.appointment-shell .type-picker .selectize-dropdown-content {
    max-height: 240px;
    padding: 4px 0;
}
.settings-shell.appointment-shell .type-picker .ui-select-choices-row > .option {
    padding: 7px 12px;
    cursor: pointer;
}
/* The row itself is pinned white (!important in _ui-select.css), so the highlight goes on its option. */
.settings-shell.appointment-shell .type-picker .ui-select-choices-row:hover > .option, .settings-shell.appointment-shell .type-picker .ui-select-choices-row.active > .option {
    background-color: #e7f0ff;
    color: #0035d2;
}
/* The patient search, shared with the new task form, which finds its patient the same way */
/* The patient search stands in for the title, so it is wider and its text larger. */
.settings-shell.appointment-shell .patient-picker-field, .settings-shell.task-create .patient-picker-field {
    -ms-flex: 1 1 520px;
        flex: 1 1 520px;
    max-width: 700px;
}
.settings-shell.appointment-shell .patient-picker, .settings-shell.task-create .patient-picker {
    position: relative;
}
.settings-shell.appointment-shell .patient-picker .form-control, .settings-shell.task-create .patient-picker .form-control {
    height: 42px;
    padding-left: 34px;
    padding-right: 34px;
    font-size: 14px;
}
.settings-shell.appointment-shell .patient-picker.is-open .form-control, .settings-shell.task-create .patient-picker.is-open .form-control {
    border-color: #0035d2;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}
.settings-shell.appointment-shell .patient-picker-icon, .settings-shell.task-create .patient-picker-icon {
    position: absolute;
    left: 13px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 13px;
    color: #a3aac0;
    pointer-events: none;
}
.settings-shell.appointment-shell .patient-picker-clear, .settings-shell.task-create .patient-picker-clear {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    width: 24px;
    height: 24px;
    border: none;
    border-radius: 50%;
    background: none;
    color: #a3aac0;
    font-size: 11px;
}
.settings-shell.appointment-shell .patient-picker-clear:hover, .settings-shell.task-create .patient-picker-clear:hover {
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell.appointment-shell .patient-results, .settings-shell.task-create .patient-results {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 20;
    max-height: 280px;
    margin: 0;
    padding: 4px 0;
    overflow-y: auto;
    list-style: none;
    border: 1px solid #0035d2;
    border-top: none;
    border-radius: 0 0 8px 8px;
    background-color: #ffffff;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.settings-shell.appointment-shell .patient-result, .settings-shell.task-create .patient-result {
    padding: 8px 12px;
    font-size: 13px;
    color: #333333;
    cursor: pointer;
}
.settings-shell.appointment-shell .patient-result.is-active, .settings-shell.task-create .patient-result.is-active {
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell.appointment-shell .patient-results-note, .settings-shell.task-create .patient-results-note {
    padding: 9px 12px;
    font-size: 12.5px;
    font-style: italic;
    color: #a3aac0;
}
/* The search and, beside it, the way to register someone it does not find */
.settings-shell.appointment-shell .patient-picker-row, .settings-shell.task-create .patient-picker-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
}
.settings-shell.appointment-shell .patient-picker-row .patient-picker, .settings-shell.task-create .patient-picker-row .patient-picker {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.appointment-shell .patient-create-btn, .settings-shell.task-create .patient-create-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    height: 42px;
    padding: 0 15px;
    border: 1px solid rgba(0, 53, 210, 0.25);
    border-radius: 20px;
    background-color: #ffffff;
    color: #0035d2;
    font-size: 12px;
    font-style: normal;
    font-weight: 600;
    white-space: nowrap;
    transition: all 0.15s ease;
}
.settings-shell.appointment-shell .patient-create-btn:hover, .settings-shell.task-create .patient-create-btn:hover {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.settings-shell.appointment-shell .patient-option, .settings-shell.appointment-shell .patient-result, .settings-shell.task-create .patient-option, .settings-shell.task-create .patient-result {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 10px;
    min-width: 0;
}
.settings-shell.appointment-shell .patient-option .patient-option-name, .settings-shell.appointment-shell .patient-result .patient-option-name, .settings-shell.task-create .patient-option .patient-option-name, .settings-shell.task-create .patient-result .patient-option-name {
    min-width: 0;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.appointment-shell .patient-option .patient-option-dob, .settings-shell.appointment-shell .patient-result .patient-option-dob, .settings-shell.task-create .patient-option .patient-option-dob, .settings-shell.task-create .patient-result .patient-option-dob {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 11.5px;
    color: #878ba0;
}
.settings-shell.appointment-shell .patient-option .patient-option-elsewhere, .settings-shell.appointment-shell .patient-result .patient-option-elsewhere, .settings-shell.task-create .patient-option .patient-option-elsewhere, .settings-shell.task-create .patient-result .patient-option-elsewhere {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-left: auto;
    padding: 1px 8px;
    border-radius: 20px;
    background-color: #f8f9fa;
    color: #8a90a3;
    font-size: 10.5px;
}
.settings-shell.appointment-shell .type-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 9px;
    min-width: 0;
}
.settings-shell.appointment-shell .type-option .type-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.appointment-shell .type-option .type-duration {
    margin-left: auto;
    padding-left: 12px;
    font-size: 11px;
    color: #878ba0;
}
.settings-shell.appointment-shell .type-swatch {
    display: inline-block;
    width: 12px;
    height: 12px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 3px;
    box-shadow: inset 0 0 0 1px rgba(10, 37, 64, 0.12);
}
.settings-shell.appointment-shell textarea.form-control {
    min-height: 96px;
}
.settings-shell.appointment-shell .additional-message .count-remaining {
    color: #a3aac0;
}
/* Progress ticks as a two-column set of chips, each carrying the time it was ticked. */
.settings-shell.appointment-shell .progress-steps {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[2];
        grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
}
.settings-shell.appointment-shell .progress-step {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 2px 8px;
    padding: 7px 10px;
    border-radius: 8px;
}
.settings-shell.appointment-shell .progress-step .progress-step-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.appointment-shell .progress-step .progress-step-time {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    padding-left: 21px;
    font-size: 10px;
    font-weight: 400;
    color: #6a7391;
}
.settings-shell.appointment-shell .progress-step .progress-step-time:empty {
    display: none;
}
.settings-shell.appointment-shell .progress-step-missed.selected {
    background-color: #fdecea;
    border-color: rgba(217, 83, 79, 0.35);
    color: #a94442;
}
.settings-shell.appointment-shell .progress-divider {
    margin: 14px 0 8px;
    padding-top: 12px;
    border-top: 1px dashed #e0e6ed;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #a3aac0;
}
.settings-shell.appointment-shell .reminder-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 9px 0;
    border-bottom: 1px dashed #e0e6ed;
    font-size: 12.5px;
}
.settings-shell.appointment-shell .reminder-row i {
    width: 16px;
    text-align: center;
    color: #0035d2;
}
.settings-shell.appointment-shell .reminder-row .reminder-channel {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-weight: 600;
    color: #333333;
}
.settings-shell.appointment-shell .reminder-row .reminder-channel small {
    font-weight: 400;
    color: #a3aac0;
}
.settings-shell.appointment-shell .reminder-row .reminder-time {
    font-size: 11.5px;
    color: #878ba0;
    font-variant-numeric: tabular-nums;
}
/* Invoices: each a summary row with its billing items beneath it */
.settings-shell.appointment-shell .invoice-block {
    padding: 10px 0;
    border-bottom: 1px dashed #e0e6ed;
}
.settings-shell.appointment-shell .invoice-block:last-of-type {
    border-bottom: none;
    padding-bottom: 0;
}
.settings-shell.appointment-shell .invoice-block:first-child {
    padding-top: 0;
}
.settings-shell.appointment-shell .invoice-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    font-size: 12.5px;
}
.settings-shell.appointment-shell .invoice-items {
    margin: 8px 0 0 12px;
    padding-left: 12px;
    border-left: 2px solid #e0e6ed;
}
.settings-shell.appointment-shell .invoice-items:empty {
    display: none;
}
.settings-shell.appointment-shell .invoice-items.is-cancelled {
    opacity: 0.55;
}
.settings-shell.appointment-shell .invoice-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    padding: 3px 0;
    font-size: 12px;
    color: #333333;
}
.settings-shell.appointment-shell .invoice-item-code {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 0 6px;
    border-radius: 4px;
    background-color: #e7f0ff;
    color: #2a307f;
    font-size: 10.5px;
    font-weight: 600;
    line-height: 1.6;
}
.settings-shell.appointment-shell .invoice-item-desc {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.appointment-shell .invoice-item-qty, .settings-shell.appointment-shell .invoice-item-discount {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 11px;
    color: #878ba0;
    white-space: nowrap;
}
.settings-shell.appointment-shell .invoice-item-amount {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    min-width: 64px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}
.settings-shell.appointment-shell .invoice-item-summary {
    margin-top: 3px;
    padding-top: 5px;
    border-top: 1px dashed #e0e6ed;
    font-weight: 600;
}
.settings-shell.appointment-shell .invoice-items-note {
    padding: 2px 0;
    font-size: 11.5px;
    font-style: italic;
    color: #a3aac0;
}
/* Xero's reference, on one line above the items; the whole of it on hover */
.settings-shell.appointment-shell .invoice-reference {
    padding: 2px 0;
    font-size: 11.5px;
    color: #878ba0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.appointment-shell .invoice-reference span {
    color: #333333;
}
.settings-shell.appointment-shell .invoice-status {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 2px 9px;
    border-radius: 20px;
    font-size: 10.5px;
    font-weight: 700;
    white-space: nowrap;
}
.settings-shell.appointment-shell .invoice-status-draft {
    background-color: #f8f9fa;
    color: #6a7391;
    border: 1px solid #e0e6ed;
}
.settings-shell.appointment-shell .invoice-status-awaiting {
    background-color: #fff8e1;
    color: #856404;
    border: 1px solid rgba(255, 193, 7, 0.7);
}
.settings-shell.appointment-shell .invoice-status-overdue {
    background-color: #fdecea;
    color: #a94442;
    border: 1px solid rgba(217, 83, 79, 0.35);
}
.settings-shell.appointment-shell .invoice-status-paid {
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
    border: 1px solid rgba(32, 201, 151, 0.3);
}
.settings-shell.appointment-shell .invoice-status-cancelled {
    background-color: #f8f9fa;
    color: #a3aac0;
    border: 1px solid #e0e6ed;
}
.settings-shell.appointment-shell .invoice-dates {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 11.5px;
    color: #878ba0;
}
.settings-shell.appointment-shell .invoice-total {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-weight: 700;
    color: #333333;
    font-variant-numeric: tabular-nums;
}
.settings-shell.appointment-shell .invoice-total.is-cancelled {
    color: #a3aac0;
    text-decoration: line-through;
}
.settings-shell.appointment-shell .invoice-chip-outstanding {
    background-color: #fff8e1;
    color: #856404;
    border-color: rgba(255, 193, 7, 0.7);
}
.settings-shell.appointment-shell .invoice-chip-paid {
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
    border-color: rgba(32, 201, 151, 0.3);
}
.settings-shell.appointment-shell .reminder-empty {
    padding: 4px 0;
    font-size: 12.5px;
    font-style: italic;
    color: #a3aac0;
}
.settings-shell.appointment-shell .reminder-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 6px;
    margin-top: 14px;
}
.settings-shell.appointment-shell .detail-row .detail-label {
    -ms-flex-preferred-size: 110px;
        flex-basis: 110px;
    width: 110px;
}
.settings-shell.appointment-shell .settings-action-bar {
    padding: 12px 28px;
}
.settings-shell.appointment-shell .settings-action-bar .action-bar-start {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 18px;
}
/* The patient's name and the way to their dashboard, side by side */
.settings-shell.appointment-shell .appointment-title-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin: 4px 0 10px;
}
.settings-shell.appointment-shell .appointment-title-row h3 {
    margin: 0;
}
.settings-shell.appointment-shell .patient-link-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 5px 13px;
    border: 1px solid rgba(0, 53, 210, 0.25);
    border-radius: 20px;
    background-color: #ffffff;
    color: #0035d2;
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
    transition: all 0.15s ease;
}
.settings-shell.appointment-shell .patient-link-btn i {
    font-size: 11px;
}
.settings-shell.appointment-shell .patient-link-btn:hover, .settings-shell.appointment-shell .patient-link-btn:focus-visible {
    border-color: #0035d2;
    background-color: #e7f0ff;
    outline: none;
}
/* Delete: a deliberate, outlined button - the same shape as Cancel and Save - that asks in place. */
.settings-shell.appointment-shell .settings-action-bar .btn.btn-delete {
    width: auto;
    padding: 4px 18px;
    border: 1px solid rgba(217, 83, 79, 0.45);
    background-color: #ffffff;
    color: #d9534f;
    font-size: 12px;
    transition: all 0.2s ease;
}
.settings-shell.appointment-shell .settings-action-bar .btn.btn-delete i {
    margin-right: 4px;
}
.settings-shell.appointment-shell .settings-action-bar .btn.btn-delete:hover, .settings-shell.appointment-shell .settings-action-bar .btn.btn-delete:focus-visible {
    border-color: #d9534f;
    background-color: #fdecea;
    color: #a94442;
    outline: none;
}
/* Across the whole bar while it is asked: the question (and any choices) on the left, the answers
	   together on the right - so if the bar is too narrow, the pair wraps as one. */
.settings-shell.appointment-shell .confirm-delete {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    font-size: 12.5px;
    font-weight: 600;
    color: #a94442;
}
.settings-shell.appointment-shell .confirm-delete .confirm-delete-text i {
    margin-right: 4px;
    color: #d9534f;
}
/* Delete swaps the bar's buttons with ng-if, and ngAnimate holds a leaving element on screen for as
	   long as its CSS transition runs (0.3s on .btn) - so for a moment both sets showed. No transition
	   while entering or leaving makes the swap instant; !important to beat the buttons' own transition. */
.settings-shell.appointment-shell .settings-action-bar .ng-enter, .settings-shell.appointment-shell .settings-action-bar .ng-leave {
    transition: none !important;
}
.settings-shell.appointment-shell .confirm-delete-actions {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin-left: auto;
}
.settings-shell.appointment-shell .settings-action-bar .btn.btn-confirm-delete {
    width: auto;
    padding: 4px 18px;
    border: none;
    background-color: #d9534f;
    color: #ffffff;
    font-size: 12px;
    transition: background-color 0.15s ease;
}
.settings-shell.appointment-shell .settings-action-bar .btn.btn-confirm-delete:hover {
    background-color: #a94442;
    color: #ffffff;
}
.settings-shell.appointment-shell .settings-action-bar .btn.btn-confirm-delete:disabled {
    opacity: 0.6;
}
.settings-shell.appointment-shell .settings-action-bar .confirm-delete .btn.btn-cancel {
    width: auto;
}
/* =================================================================== */
/* ! Availability (personalCalendar)
/* A side panel that says what the availability amounts to - the weekly
/* pattern and what is coming up - beside a FullCalendar 4 week. Available
/* time is a tint of its type's colour; leave is striped red.
/* =================================================================== */
.calendar-shell .availability {
	-ms-flex: 1;
	    flex: 1;
	min-height: 0;
	display: -ms-flexbox;
	display: flex;
}
.calendar-shell .availability .availability-side {
    -ms-flex: 0 0 268px;
        flex: 0 0 268px;
    width: 268px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 22px;
    padding: 18px 14px 18px 18px;
    border-right: 1px solid #eef1f7;
    overflow-y: auto;
}
.calendar-shell .availability .availability-who-label, .calendar-shell .availability .availability-section-title {
    margin: 0 0 6px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #a3aac0;
}
.calendar-shell .availability .availability-who-name {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #0a2540;
    line-height: 1.25;
}
.calendar-shell .availability .availability-who-practice {
    margin-top: 2px;
    font-size: 12px;
    color: #878ba0;
}
.calendar-shell .availability .availability-hint {
    margin: 0 0 10px;
    font-size: 11.5px;
    line-height: 1.45;
    color: #878ba0;
}
.calendar-shell .availability .availability-palette {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
}
/* Also .fc-event - the palette's Draggable keys on it - so FullCalendar's own event look is undone. */
.calendar-shell .availability .palette-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 9px;
    margin: 0;
    padding: 7px 10px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    color: #333333;
    font-size: 12.5px;
    font-weight: 600;
    cursor: grab;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.calendar-shell .availability .palette-item:hover {
    border-color: #0035d2;
    box-shadow: 0 2px 8px rgba(0, 53, 210, 0.12);
}
.calendar-shell .availability .palette-item:active {
    cursor: grabbing;
}
.calendar-shell .availability .palette-swatch {
    width: 10px;
    height: 10px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 3px;
}
.calendar-shell .availability .palette-leave .palette-swatch {
    background: repeating-linear-gradient(135deg, #d9534f 0 2px, #f6c8c6 2px 4px);
}
.calendar-shell .availability .palette-grip {
    margin-left: auto;
    font-size: 11px;
    color: #c3c9da;
}
.calendar-shell .availability .overview-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
    width: 100%;
    margin-bottom: 2px;
    padding: 7px 8px;
    border: none;
    border-radius: 8px;
    background: none;
    text-align: left;
    transition: background-color 0.15s ease;
}
.calendar-shell .availability .overview-item:hover {
    background-color: #f4f7fe;
}
.calendar-shell .availability .overview-day {
    -ms-flex: 0 0 30px;
        flex: 0 0 30px;
    padding-top: 1px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    color: #0035d2;
}
.calendar-shell .availability .overview-body {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    min-width: 0;
}
.calendar-shell .availability .overview-name {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    font-size: 12.5px;
    font-weight: 600;
    color: #333333;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.calendar-shell .availability .overview-swatch {
    width: 8px;
    height: 8px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-right: 7px;
    border-radius: 50%;
}
.calendar-shell .availability .overview-swatch.is-leave {
    border-radius: 2px;
    background: repeating-linear-gradient(135deg, #d9534f 0 2px, #f6c8c6 2px 4px) !important;/* over the inline colour, which is the solid key */
}
.calendar-shell .availability .overview-meta {
    margin-top: 1px;
    font-size: 11px;
    color: #878ba0;
}
.calendar-shell .availability .availability-empty {
    margin: 0;
    padding: 0 8px;
    font-size: 11.5px;
    font-style: italic;
    line-height: 1.45;
    color: #a3aac0;
}
.calendar-shell .availability .availability-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 12px;
    padding: 16px 18px 14px;
}
.calendar-shell .availability .availability-key {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    font-size: 11.5px;
    color: #6a7391;
}
.calendar-shell .availability .availability-key span {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.calendar-shell .availability .availability-key i {
    font-size: 11px;
    color: #6a7391;
}
.calendar-shell .availability .key-swatch {
    width: 14px;
    height: 12px;
    border-radius: 3px;
}
.calendar-shell .availability .key-slot {
    background-color: rgba(0, 53, 210, 0.16);
    box-shadow: inset 3px 0 0 #0035d2;
}
.calendar-shell .availability .key-leave {
    background: repeating-linear-gradient(135deg, rgba(217, 83, 79, 0.25) 0 3px, #fdecea 3px 6px);
    box-shadow: inset 3px 0 0 #d9534f;
}
.calendar-shell .availability .availability-calendar {
    position: relative;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
/* FullCalendar 4 events */
.calendar-shell .availability .fc .avail-slot, .calendar-shell .availability .fc .avail-leave {
    border-width: 0 0 0 3px;
    border-style: solid;
    border-radius: 6px;
    box-shadow: none;
    font-size: 11.5px;
}
.calendar-shell .availability .fc .avail-slot .fc-content, .calendar-shell .availability .fc .avail-leave .fc-content {
    padding: 2px 4px 1px 5px;
}
.calendar-shell .availability .fc .avail-slot .fc-title, .calendar-shell .availability .fc .avail-leave .fc-title {
    font-weight: 600;
}
.calendar-shell .availability .fc .avail-leave {
    background-image: repeating-linear-gradient(135deg, rgba(217, 83, 79, 0.1) 0 6px, transparent 6px 12px);
}
.calendar-shell .availability .avail-repeat-icon {
    margin-left: 5px;
    font-size: 10px;
    opacity: 0.6;
}
.calendar-shell .availability .fc .fc-mirror {
    opacity: 0.85;
}
/* Room for the all-day row, where whole days of leave sit, even when it is empty. */
.calendar-shell .availability .fc .fc-day-grid {
    min-height: 1.8rem;
}
/* The editor */
.availability-modal .modal-dialog {
	width: 620px;
}
.settings-shell.appointment-shell .availability-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 14px;
}
.settings-shell.appointment-shell .appointment-header-text h3.is-leave {
    background-color: #fdecea;
    color: #a94442;
}
.settings-shell.appointment-shell .kind-switch {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 1fr 1fr;
        grid-template-columns: 1fr 1fr;
    gap: 10px;
}
.settings-shell.appointment-shell .kind-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    text-align: left;
    transition: all 0.15s ease;
}
.settings-shell.appointment-shell .kind-option > i {
    margin-top: 1px;
    font-size: 17px;
    color: #a3aac0;
}
.settings-shell.appointment-shell .kind-option strong {
    display: block;
    font-size: 13px;
    color: #333333;
}
.settings-shell.appointment-shell .kind-option small {
    display: block;
    margin-top: 2px;
    font-size: 11px;
    color: #878ba0;
}
.settings-shell.appointment-shell .kind-option:hover {
    border-color: #cbd5e0;
}
.settings-shell.appointment-shell .kind-option.selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.settings-shell.appointment-shell .kind-option.selected > i, .settings-shell.appointment-shell .kind-option.selected strong {
    color: #0035d2;
}
.settings-shell.appointment-shell .kind-option.kind-leave.selected {
    border-color: rgba(217, 83, 79, 0.45);
    background-color: #fdecea;
}
.settings-shell.appointment-shell .kind-option.kind-leave.selected > i, .settings-shell.appointment-shell .kind-option.kind-leave.selected strong {
    color: #a94442;
}
.settings-shell.appointment-shell .form-control.ng-invalid-minute-step {
    border-color: #e0796f;
    box-shadow: 0 0 0 3px rgba(224, 121, 111, 0.15);
}
.settings-shell.appointment-shell .range-input {
    max-width: 320px;
}
.settings-shell.appointment-shell .field-optional {
    margin-left: 4px;
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    color: #c3c9da;
}
.settings-shell.appointment-shell .confirm-delete .chip-select {
    padding: 5px 11px;
    font-size: 11.5px;
}
/* =================================================================== */
/* ! Responsive
/* =================================================================== */
@media (max-width: 1200px) {
	.calendar-shell .calendar-search {
		width: 180px;
	}
}
/* Below this the settings shell turns its rail into a strip along the top (see _settings.css). */
@media (max-width: 900px) {
	/* The rail's flex-basis is its width beside the pane; stacked above it, it would become a height. */
	.calendar-shell .calendar-rail {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        width: 100%;
    }
	.calendar-shell .mini-month, .calendar-shell .legend-item, .calendar-shell .settings-nav-footer {
        display: none;
    }
	.calendar-shell .calendar-main {
        padding: 12px;
    }
	.calendar-shell .status-total {
        margin-left: 0;
    }
	/* Click or drag on the calendar still adds; the overview gives way to the week. */
	.calendar-shell .availability .availability-side {
        display: none;
    }
	.calendar-shell .availability-key {
        display: none;
    }

	.settings-shell.appointment-shell .appointment-grid {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }

	.settings-shell.appointment-shell .appointment-header, .settings-shell.appointment-shell .settings-pane-body, .settings-shell.appointment-shell .settings-action-bar {
        padding-left: 16px;
        padding-right: 16px;
    }
}
/* =================================================================== */
/* ! Rooms (on appointments, in the rail, and in the booking dialog)
/* =================================================================== */
/* The room an appointment is in, on a line under the patient's name. */
.calendar-shell .fc .appt-room {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    font-size: 10.5px;
    color: #4a5568;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.calendar-shell .fc .appt-room .appt-swatch {
    width: 7px;
    height: 7px;
}
.calendar-shell .notice-actions {
    margin-top: 8px;
}
/* Two appointments in one room at once - an amber ring, so it is not mistaken for the red of leave. */
.calendar-shell .fc .fc-event.appt-room-clash, .team-day .team-appt.appt-room-clash {
	box-shadow: 0 0 0 2px #ffab00, 0 2px 6px rgba(255, 171, 0, 0.35);
}
.team-day .team-appt-room {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 4px;
}
.team-day .team-appt-room .appt-swatch {
    width: 7px;
    height: 7px;
}
/* Whether each room is free at the time picked, at the right of its row in the picker. */
.settings-shell.appointment-shell .room-state {
    margin-left: auto;
    padding-left: 12px;
    font-size: 11px;
    white-space: nowrap;
}
.settings-shell.appointment-shell .room-state.room-free {
    color: #2e7d32;
}
.settings-shell.appointment-shell .room-state.room-busy {
    color: #a94442;
}
.settings-shell.appointment-shell .room-picker.is-busy .selectize-input {
    border-color: #ffab00;
    box-shadow: 0 0 0 3px rgba(255, 171, 0, 0.15);
}
.settings-shell.appointment-shell .room-busy-notice .room-suggestions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
    margin: 10px 0 8px;
}
.settings-shell.appointment-shell .room-busy-notice .chip-select {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.settings-shell.appointment-shell .room-busy-notice .room-double-book {
    margin-top: 4px;
}
@media (prefers-reduced-motion: reduce) {
	.calendar-shell .calendar-loading span {
		left: 0;
		width: 100%;
		opacity: 0.4;
		animation: none;
	}
}
/* =================================================================== */
/* ! Patient Forms builder (staff-facing modal)
/* Everything here is scoped to `.settings-shell.patient-forms` so it sits
/* on top of _settings.css rather than beside it - the left rail, pane body,
/* action bar, cards, chips and form controls all come from there. This file
/* only adds what the form builder needs that the settings screens do not:
/* the question cards, the preview blocks and the answer list.
/* =================================================================== */
/* Enter only - see .pf-pane below for why the leave phase has to stay bare. */
@keyframes pf-pane-in {
	from {
		opacity: 0;
		transform: translateY(6px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}
/* No md-dialog-actions: the toolbar's X dismisses, and sending belongs with the
   preview of the thing being sent rather than in a footer that sits under the
   builder and the answers list too. */
.patient-forms-dialog {
	min-width: 82%;
	width: 82%;
	height: 88vh;
	max-height: 92vh;
	padding: 0;
	border-top-width: 0;
}
/* ! Left rail
	/* =================================================================== */
.settings-shell.patient-forms .settings-nav {
    -ms-flex: 0 0 288px;
        flex: 0 0 288px;
    width: 288px;
}
/* Template names run long, so the group title gets the full width and
	   ellipses rather than wrapping into the chevron. */
.settings-shell.patient-forms .settings-nav-group-title .nav-group-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    text-transform: none;
    letter-spacing: 0.01em;
    font-size: 11.5px;
    color: #0a2540;
}
.settings-shell.patient-forms .settings-nav-group-title:not(.collapsed) .nav-group-name {
    color: #0035d2;
}
/* The "Create New Template" entry is an action, not a section, so it reads
	   as a button at the top of the rail rather than another nav row. */
.settings-shell.patient-forms .settings-nav-group.nav-group-create {
    padding-top: 14px;
    padding-bottom: 12px;
    border-bottom: 1px solid #eef1f7;
    margin-bottom: 4px;
}
/* Nothing to divide from. */
.settings-shell.patient-forms .settings-nav.is-empty .nav-group-create {
    border-bottom: none;
    margin-bottom: 0;
}
/* =================================================================== */
.settings-shell.patient-forms .nav-empty-note {
    padding: 4px 16px 20px;
    text-align: center;
    color: #a3aac0;
}
.settings-shell.patient-forms .nav-empty-note i {
    display: block;
    font-size: 22px;
    color: #d3d9e6;
    margin-bottom: 10px;
}
.settings-shell.patient-forms .nav-empty-note strong {
    display: block;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 12.5px;
    color: #878ba0;
    margin-bottom: 4px;
}
.settings-shell.patient-forms .nav-empty-note span {
    display: block;
    font-size: 11.5px;
    line-height: 1.5;
}
.settings-shell.patient-forms .nav-create-item {
    border: 1px dashed rgba(0, 53, 210, 0.3);
    background-color: #fbfcff;
}
.settings-shell.patient-forms .nav-create-item:hover {
    border-color: #0035d2;
}
.settings-shell.patient-forms .nav-create-item.active {
    border-style: solid;
    border-color: #0035d2;
    background-color: #0035d2;
}
/* Scoped to .ng-enter, not the bare class. ngAnimate reads whatever animation
	   is computed on the element during each phase, so declaring it on .pf-pane
	   itself made it apply to ng-leave as well - the outgoing pane was held in the
	   DOM for the full 220ms and both panes were on screen together. With the
	   leave phase carrying no animation it resolves at zero duration and goes in
	   the same frame; display:none covers the frame ngAnimate needs to flush. */
.settings-shell.patient-forms .pf-pane.ng-enter {
    animation: pf-pane-in 220ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
/* ! Pane scaffolding
	/* =================================================================== */
.settings-shell.patient-forms .pf-pane.ng-leave {
    display: none;
    animation: none;
    transition: none;
}
/* ! Question cards (create / edit)
	/* =================================================================== */
.settings-shell.patient-forms .pf-question-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 16px;
    margin-top: 4px;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-question-card {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
    padding: 18px 20px 20px;
    position: relative;
    transition: box-shadow 0.18s ease, border-color 0.18s ease, opacity 0.15s ease;
}
.settings-shell.patient-forms .pf-question-card:hover, .settings-shell.patient-forms .pf-question-card:focus-within {
    border-color: rgba(0, 53, 210, 0.25);
    box-shadow: 0 4px 16px rgba(0, 53, 210, 0.08);
}
/* Drag-and-drop reordering (dragReorder directive): the card being moved fades, and a navy
		   line in the gap between cards shows where it will land. */
.settings-shell.patient-forms .pf-question-card.is-dragging {
    opacity: 0.4;
}
.settings-shell.patient-forms .pf-question-card.drop-before::before, .settings-shell.patient-forms .pf-question-card.drop-after::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    height: 3px;
    border-radius: 2px;
    background-color: #0035d2;
}
.settings-shell.patient-forms .pf-question-card.drop-before::before {
    top: -10px;
}
.settings-shell.patient-forms .pf-question-card.drop-after::after {
    bottom: -10px;
}
/* =================================================================== */
.settings-shell.patient-forms .drag-reorder-handle {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 4px 2px;
    color: #c3c9da;
    font-size: 13px;
    line-height: 1;
    cursor: grab;
    transition: color 0.15s ease;
}
.settings-shell.patient-forms .drag-reorder-handle:hover {
    color: #0035d2;
}
.settings-shell.patient-forms .drag-reorder-handle:active {
    cursor: grabbing;
}
.settings-shell.patient-forms .pf-question-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding-bottom: 14px;
    margin-bottom: 16px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell.patient-forms .pf-index-badge {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 12px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.settings-shell.patient-forms .pf-question-label {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
}
.settings-shell.patient-forms .pf-question-tools {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
/* Up / Down / Remove were three `btn-link` words in a row, which read as body
	   copy and pushed the card header out of line. Square icon buttons keep the
	   header one line tall at any question count. */
.settings-shell.patient-forms .pf-icon-btn {
    width: 30px;
    height: 30px;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 8px;
    background: none;
    color: #a3aac0;
    font-size: 12px;
    line-height: 1;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.settings-shell.patient-forms .pf-icon-btn:hover:not(:disabled) {
    background-color: #e7f0ff;
    border-color: rgba(0, 53, 210, 0.2);
    color: #0035d2;
}
.settings-shell.patient-forms .pf-icon-btn:disabled {
    opacity: 0.35;
    cursor: not-allowed;
}
.settings-shell.patient-forms .pf-icon-btn.danger:hover:not(:disabled) {
    background-color: #fdecea;
    border-color: rgba(217, 83, 79, 0.3);
    color: #d9534f;
}
/* Boxed .control-label + .form-control from _settings.css rather than
	   md-input-container. A Material floating label sits above the input in the
	   container's top margin, so it clipped against the card, and an underline-only
	   field on a white card gives no sign that it is somewhere you can type. */
.settings-shell.patient-forms .pf-field {
    margin-bottom: 14px;
}
.settings-shell.patient-forms .pf-field .form-control {
    width: 100%;
}
.settings-shell.patient-forms .pf-field select.form-control {
    height: 38px;
    padding-top: 0;
    padding-bottom: 0;
}
/* The greyed operator field is a readout, not something to fill in. */
.settings-shell.patient-forms .pf-field .form-control:disabled {
    cursor: default;
}
/* A type picker with five short labels does not need the full card width. */
.settings-shell.patient-forms .pf-type-field {
    max-width: 280px;
}
/* ! Answer options
	/* One row per option rather than a comma-separated string, so each one can be
	/* edited, added and removed on its own - and the marker shows how the patient
	/* will see it, radio for single choice, box for multiple.
	/* =================================================================== */
.settings-shell.patient-forms .pf-options-field .control-label {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
}
.settings-shell.patient-forms .pf-options-field .pf-options-hint {
    text-transform: none;
    letter-spacing: 0;
    font-size: 10.5px;
    font-weight: 400;
    font-style: italic;
    color: #b6bccd;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-option-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin-bottom: 8px;
}
.settings-shell.patient-forms .pf-option-row .form-control {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.patient-forms .pf-option-row .pf-icon-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.settings-shell.patient-forms .pf-option-marker {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 15px;
    height: 15px;
    border: 2px solid #c3c9da;
    border-radius: 50%;
    background-color: #ffffff;
}
.settings-shell.patient-forms .pf-option-marker.is-checkbox {
    border-radius: 3px;
}
/* ! Add affordances
	/* Beside or at the end of the list they extend rather than in the action bar -
	/* adding is part of writing the form, not one of the two things you do to it
	/* when you have finished.
	/* =================================================================== */
.settings-shell.patient-forms .pf-palette-tile, .settings-shell.patient-forms .pf-add-inline {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 8px;
    width: 100%;
    border: 1px dashed rgba(0, 53, 210, 0.3);
    border-radius: 10px;
    background-color: #fbfcff;
    color: #0035d2;
    font-family: 'Gordita Bold', sans-serif;
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease;
}
.settings-shell.patient-forms .pf-palette-tile:hover, .settings-shell.patient-forms .pf-add-inline:hover {
    background-color: #e7f0ff;
    border-color: #0035d2;
}
.settings-shell.patient-forms .pf-palette-tile:focus-visible, .settings-shell.patient-forms .pf-add-inline:focus-visible {
    outline: none;
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* The builder is the card list with the component palette to its right. The
	   palette sticks to the top of the scrolling pane so it is in reach at any length. */
.settings-shell.patient-forms .pf-builder-layout {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 20px;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-builder-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
/* Boxed like a question card so it reads as its own panel beside the list. */
.settings-shell.patient-forms .pf-component-palette {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    -ms-flex: 0 0 220px;
        flex: 0 0 220px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 10px;
    margin-top: 4px;
    padding: 14px;
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
}
.settings-shell.patient-forms .pf-palette-title {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
}
.settings-shell.patient-forms .pf-palette-tile {
    -ms-flex-pack: start;
        justify-content: flex-start;
    gap: 12px;
    padding: 12px 14px;
    font-size: 13px;
    text-align: left;
}
.settings-shell.patient-forms .pf-palette-tile > .fa {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 18px;
    font-size: 16px;
    text-align: center;
}
.settings-shell.patient-forms .pf-palette-tile small {
    display: block;
    margin-top: 2px;
    font-family: 'Gordita Regular', sans-serif;
    font-size: 11px;
    color: #a3aac0;
}
.settings-shell.patient-forms .pf-palette-tile-text {
    min-width: 0;
}
/* Inset to the width of the inputs it extends, so it lines up under them
	   rather than under the marker column. */
.settings-shell.patient-forms .pf-add-inline {/* inline-flex, not the shared flex: a block-level flex box would stretch to
		   the card width regardless of width:auto. */
    display: -ms-inline-flexbox;
    display: inline-flex;
    width: auto;
    margin: 2px 0 0 25px;
    padding: 8px 16px;
    font-size: 12px;
}
.settings-shell.patient-forms md-checkbox.pf-required {
    margin: 2px 0 0;
}
/* ! "Other" option
	/* Sits in the option list as the row it will become, rather than as a setting
	/* somewhere else - but tinted and dashed so it reads as generated rather than
	/* as another row to type in.
	/* =================================================================== */
.settings-shell.patient-forms .pf-option-row-other {
    -ms-flex-align: start;
        align-items: flex-start;
    padding: 10px 12px 12px;
    border: 1px dashed rgba(0, 53, 210, 0.28);
    border-radius: 10px;
    background-color: #fbfcff;
}
.settings-shell.patient-forms .pf-option-row-other .pf-option-marker {
    margin-top: 9px;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-other-row-body {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.patient-forms .pf-other-row-body .form-control {
    width: 100%;
    cursor: not-allowed;
}
.settings-shell.patient-forms .pf-other-row-label {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    margin-bottom: 7px;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #333333;
}
.settings-shell.patient-forms .pf-other-row-label span {
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-size: 10.5px;
    font-weight: 400;
    font-style: italic;
    color: #b6bccd;
}
/* The two add buttons sit side by side under the list. */
.settings-shell.patient-forms .pf-option-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin: 2px 0 0 25px;
}
.settings-shell.patient-forms .pf-option-actions .pf-add-inline {
    margin: 0;
}
/* ! Image option rows
	/* One row per image option, mirroring the text option rows above it - an image
	/* question is a choice question whose options happen to be pictures.
	/* =================================================================== */
.settings-shell.patient-forms .pf-image-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 12px;
    padding: 10px;
    margin-bottom: 10px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #fbfcff;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-image-thumb {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 84px;
    height: 64px;
    border-radius: 8px;
    border: 1px solid #e0e6ed;
    background-color: #ffffff;
    overflow: hidden;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.settings-shell.patient-forms .pf-image-thumb img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
    display: block;
}
.settings-shell.patient-forms .pf-image-thumb .pf-image-thumb-empty {
    color: #c3c9da;
    font-size: 20px;
}
.settings-shell.patient-forms .pf-image-option-fields {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
}
.settings-shell.patient-forms .pf-image-option-fields input[type="file"] {
    font-size: 12px;
    max-width: 100%;
}
.settings-shell.patient-forms .pf-image-status {
    font-size: 11.5px;
    line-height: 1.45;
}
.settings-shell.patient-forms .pf-image-status.warning {
    color: #856404;
}
/* ! Conditional visibility block
	/* =================================================================== */
.settings-shell.patient-forms .pf-conditional {
    margin-top: 14px;
    padding: 14px 16px;
    border: 1px solid rgba(0, 53, 210, 0.15);
    border-radius: 10px;
    background-color: #f7faff;
}
.settings-shell.patient-forms .pf-conditional md-checkbox {
    margin: 0;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-conditional-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 0 16px;
    margin-top: 10px;
    padding-top: 14px;
    border-top: 1px dashed rgba(0, 53, 210, 0.2);
}
.settings-shell.patient-forms .pf-conditional-fields .pf-field {
    margin-bottom: 4px;
}
.settings-shell.patient-forms .pf-conditional-fields .pf-cond-source {
    -ms-flex: 1 1 320px;
        flex: 1 1 320px;
    min-width: 240px;
}
.settings-shell.patient-forms .pf-conditional-fields .pf-cond-operator, .settings-shell.patient-forms .pf-conditional-fields .pf-cond-option {
    -ms-flex: 0 1 220px;
        flex: 0 1 220px;
    min-width: 180px;
}
.settings-shell.patient-forms .pf-conditional-fields .pf-cond-note {
    -ms-flex: 1 1 260px;
        flex: 1 1 260px;
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
    font-size: 12px;
    color: #878ba0;
    line-height: 1.45;
    padding-top: 18px;
}
/* ! Check answers
	/* =================================================================== */
.settings-shell.patient-forms .pf-answer-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 14px;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-answer-card {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
    padding: 18px 20px;
}
.settings-shell.patient-forms .pf-answer-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    padding-bottom: 12px;
    margin-bottom: 6px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell.patient-forms .pf-answer-head .pf-answer-patient {
    font-size: 13px;
    font-weight: 600;
    color: #2d3748;
}
.settings-shell.patient-forms .pf-answer-head .pf-answer-dob {
    font-size: 11px;
    color: #878ba0;
    font-variant-numeric: tabular-nums;
}
.settings-shell.patient-forms .pf-answer-head .pf-submitted-at {
    margin-left: auto;
    font-size: 11px;
    color: #878ba0;
    font-variant-numeric: tabular-nums;
}
.settings-shell.patient-forms .pf-answer-head .pf-submitted-at.muted {
    color: #b6bccd;
    font-style: italic;
}
.settings-shell.patient-forms .pf-answer-row {
    display: -ms-flexbox;
    display: flex;
    gap: 16px;
    padding: 11px 0;
    border-bottom: 1px dashed #e0e6ed;
}
.settings-shell.patient-forms .pf-answer-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
}
.settings-shell.patient-forms .pf-answer-row .pf-answer-question {
    -ms-flex: 0 0 45%;
        flex: 0 0 45%;
    max-width: 45%;
    font-size: 12.5px;
    font-weight: 600;
    color: #4a5568;
}
.settings-shell.patient-forms .pf-answer-row .pf-answer-value {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 13px;
    color: #333333;
    word-break: break-word;
}
/* ! Answer chart
	/* =================================================================== */
.settings-shell.patient-forms .pf-chart-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 14px;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-chart-card {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
    padding: 18px 20px;
}
.settings-shell.patient-forms .pf-chart-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 12px;
    padding-bottom: 12px;
    margin-bottom: 12px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell.patient-forms .pf-chart-head .pf-chart-question {
    font-size: 13px;
    font-weight: 600;
    color: #4a5568;
}
.settings-shell.patient-forms .pf-chart-head .pf-chart-total {
    margin-left: auto;
    font-size: 11px;
    color: #878ba0;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.settings-shell.patient-forms .pf-chart-bars {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 10px;
}
.settings-shell.patient-forms .pf-chart-bar-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
}
.settings-shell.patient-forms .pf-chart-bar-row .pf-chart-bar-label {
    -ms-flex: 0 0 28%;
        flex: 0 0 28%;
    max-width: 28%;
    font-size: 12.5px;
    color: #333333;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.patient-forms .pf-chart-bar-row .pf-chart-bar-track {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    height: 12px;
    background-color: #eef1f7;
    border-radius: 999px;
    overflow: hidden;
}
.settings-shell.patient-forms .pf-chart-bar-row .pf-chart-bar-fill {
    height: 100%;
    min-width: 2px;
    background-color: #0035d2;
    border-radius: 999px;
    transition: width 220ms ease;
}
.settings-shell.patient-forms .pf-chart-bar-row .pf-chart-bar-count {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    font-size: 11.5px;
    color: #878ba0;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
/* With the dialog footer gone this is the pane's primary action, so it gets a
	   card of its own that names the recipient - the context the footer used to
	   carry - rather than a bare button floating above the preview. */
.settings-shell.patient-forms .pf-send-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    padding: 16px 20px;
    margin-bottom: 20px;
    background: linear-gradient(180deg, #ffffff 0%, #fbfcff 100%);
    border: 1px solid rgba(0, 53, 210, 0.18);
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 53, 210, 0.06);
}
/* Nothing to send to - drop the brand tint so it reads as unavailable
		   rather than as the thing you are meant to click. */
.settings-shell.patient-forms .pf-send-card.is-blocked {
    background: #f8f9fa;
    border-color: #e0e6ed;
    box-shadow: none;
}
.settings-shell.patient-forms .pf-send-card.is-blocked .pf-send-icon {
    background-color: #eceff5;
    color: #a3aac0;
}
/* ! Section header + inline send row
	/* =================================================================== */
.settings-shell.patient-forms .pf-send-icon {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 42px;
    height: 42px;
    border-radius: 10px;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 17px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-send-copy {
    -ms-flex: 1 1 240px;
        flex: 1 1 240px;
    min-width: 0;
}
.settings-shell.patient-forms .pf-send-copy strong {
    display: block;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    color: #0a2540;
    line-height: 1.3;
}
.settings-shell.patient-forms .pf-send-copy span {
    display: block;
    font-size: 12px;
    color: #878ba0;
    margin-top: 3px;
    line-height: 1.45;
    word-break: break-word;
}
/* Deliberately not .btn-navy: that is capped at 220px and stretches to fill,
	   which reads as a form button. This is a single committed action, so it hugs
	   its label and lifts on hover. */
.settings-shell.patient-forms .pf-send-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 9px;
    min-width: 178px;
    padding: 12px 24px;
    border: none;
    border-radius: 10px;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    letter-spacing: 0.01em;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.25);
    transition: transform 0.16s cubic-bezier(0.34, 1.56, 0.64, 1),
			box-shadow 0.16s ease,
			filter 0.16s ease;
}
.settings-shell.patient-forms .pf-send-btn i {
    font-size: 14px;
}
.settings-shell.patient-forms .pf-send-btn:hover:not(:disabled) {
    filter: brightness(1.12);
    transform: translateY(-1px);
    box-shadow: 0 7px 18px rgba(0, 53, 210, 0.3);
}
.settings-shell.patient-forms .pf-send-btn:active:not(:disabled) {
    transform: translateY(0);
    box-shadow: 0 2px 8px rgba(0, 53, 210, 0.25);
}
.settings-shell.patient-forms .pf-send-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.25);
}
.settings-shell.patient-forms .pf-send-btn:disabled {
    background: #d3d9e6;
    color: #fbfcff;
    box-shadow: none;
    cursor: not-allowed;
    transform: none;
    filter: none;
}
/* Holds its line whether or not there is a message, so the preview below does
	   not jump up and down as a send resolves. */
.settings-shell.patient-forms .pf-send-result {
    min-height: 30px;
    margin: -8px 0 16px;
}
/* =================================================================== */
/* ! Rendered form blocks (shared)
/* The staff preview and the page the patient actually fills in are the same
/* form rendered twice, so they share one set of blocks rather than the patient
/* page carrying an inline copy that drifts out of step. Both wrap their
/* questions in .pf-form-render.
/* =================================================================== */
.pf-form-render {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 14px;

}
.pf-form-render .pf-preview-block {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
    padding: 20px 22px;
}
.pf-form-render .pf-preview-header {
    margin: 0;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    line-height: 1.3;
    color: #0035d2;
}
.pf-form-render .pf-preview-image {
    display: block;
    max-width: 100%;
    max-height: 420px;
    margin: 0 auto;
    border-radius: 10px;
}
.pf-form-render .pf-preview-question {
    display: block;
    font-size: 17px;
    line-height: 1.35;
    font-weight: 600;
    color: #0a2540;
    margin: 0 0 14px;
}
.pf-form-render .pf-preview-question .pf-required-star {
    color: #d9534f;
    margin-left: 2px;
}
.pf-form-render .pf-answer-input {
    width: 100%;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    padding: 10px 12px;
    background-color: #ffffff;
    color: #333333;
    font-size: 13px;
    transition: border-color 0.18s ease, box-shadow 0.18s ease;
}
.pf-form-render .pf-answer-input:focus {
    border-color: #0035d2;
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
}
.pf-form-render textarea.pf-answer-input {
    resize: vertical;
    min-height: 84px;
}
.pf-form-render select.pf-answer-input {
    height: 42px;
    padding: 0 12px;
}
.pf-form-render .pf-choice-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
}
.pf-form-render .pf-choice-list.inline {
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.pf-form-render .pf-choice-list.inline .pf-choice {
    -ms-flex: 1 1 160px;
        flex: 1 1 160px;
}
.pf-form-render .pf-choice {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin: 0;
    padding: 11px 14px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    font-size: 13px;
    font-weight: 500;
    color: #333333;
    cursor: pointer;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
.pf-form-render .pf-choice:hover {
    border-color: rgba(0, 53, 210, 0.35);
    background-color: #fbfcff;
}
.pf-form-render .pf-choice input {
    margin: 0;
    cursor: pointer;
}
/* An actual grid: auto-fill keeps the tiles in even columns at any container
	   width instead of leaving a ragged last row, and they share one row height. */
.pf-form-render .pf-image-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(190px, 1fr))[auto-fill];
        grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 14px;
    -ms-flex-align: stretch;
        align-items: stretch;
}
.pf-form-render .pf-image-tile {
    width: auto;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    padding: 8px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #fafbfd;
}
.pf-form-render .pf-image-tile img {
    width: 100%;
    height: 120px;
    -o-object-fit: cover;
       object-fit: cover;
    border-radius: 8px;
    border: 1px solid #e0e6ed;
    display: block;
    background-color: #ffffff;
}
/* Stands in for the picture when an option has no stored file, so the tile keeps
	   its shape and the caption stays readable instead of a broken-image icon. */
.pf-form-render .pf-image-placeholder {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 6px;
    width: 100%;
    height: 120px;
    border-radius: 8px;
    border: 1px dashed #e0e6ed;
    background-color: #f8f9fa;
    color: #b6bccd;
    font-size: 11px;
    text-align: center;
}
.pf-form-render .pf-image-placeholder i {
    font-size: 18px;
}
/* The tile is the answer, so the whole thing is the target - a radio in the
	   caption alone would be a 14px hit area on a phone. */
.pf-form-render .pf-image-choice {
    display: block;
    margin: 0;
    cursor: pointer;
    font-weight: 400;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.pf-form-render .pf-image-choice:hover {
    border-color: rgba(0, 53, 210, 0.35);
}
.pf-form-render .pf-image-choice.is-selected {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.pf-form-render .pf-image-choice .pf-image-caption {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 8px;
    margin-top: 8px;
    font-size: 12.5px;
    line-height: 1.4;
    color: #333333;
    word-break: break-word;
}
.pf-form-render .pf-image-choice .pf-image-caption input {
    margin: 2px 0 0;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    cursor: pointer;
}
/* Text choices get the same selected treatment, so a picked option reads the
	   same way whichever kind of question it is. */
.pf-form-render .pf-choice.is-selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
/* Indented under the options it belongs to, so it reads as part of the "Other"
	   row rather than as the next question. */
.pf-form-render .pf-other-box {
    margin: 10px 0 0 18px;
    padding-left: 14px;
    border-left: 2px solid rgba(0, 53, 210, 0.25);
}
.pf-form-render .pf-other-box .control-label {
    margin-bottom: 6px;
}
.pf-form-render .pf-other-box .pf-answer-input:disabled {
    background-color: #f8f9fa;
    color: #8a90a3;
}
/* =================================================================== */
/* ! Patient-facing page (/customForm?token=)
/* Sits on the app's own backdrop - `main` in _nav.css paints the navy gradient
/* over the surgeon photo, the same ground the op note and every other page
/* stands on - and stacks three tiers of contrast on top of it: a white panel
/* lifted off the photo, a navy banner across its head, and the pale settings
/* canvas behind the white question cards.
/*
/* The questions themselves come from .pf-form-render above, so what the patient
/* sees matches the preview the clinician signed off on. Only the page chrome
/* around them lives here.
/* =================================================================== */
.custom-form-page {
	display: block;
	padding: 40px 0 56px;

	/* Its own backdrop rather than the surgeon photo `main` gives every other
	   page. That photo is aimed at clinicians; the person here is a patient
	   filling in a health questionnaire, often on a phone, and a picture of
	   surgery is the wrong thing to greet them with.

	   A navy band across the top only, pale beneath, with the panel bridging the
	   two - rather than a card marooned in the middle of a large dark field. The
	   band is sized, not stopped: the gradient layers are 300px tall and pinned to
	   the top, and background-color fills everything below, so there is no colour
	   interpolation at the seam to fringe.

	   The grain is what stops the band banding. Four large low-contrast gradients
	   on an 8-bit display ring visibly; a fractal-noise tile at low opacity breaks
	   the ramp up. It is an inline SVG, so no request and nothing to host. */
	/* A shade deeper than .custom-form-body's #f4f7fe: with both the same, the
	   panel dissolved into the page everywhere below the band. Ground, panel body,
	   card now step light in three stages. */
	background-color: #e7f0ff;
	background-image:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='0.055'/%3E%3C/svg%3E"),
		radial-gradient(820px 380px at 82% -40%, rgba(0, 188, 212, 0.22), transparent 62%),
		linear-gradient(158deg, #0a2540 0%, #14346b 62%, #0f2b52 100%);
	background-repeat: repeat, no-repeat, no-repeat;
	background-position: top left, top center, top center;
	background-size: 180px 180px, 100% 300px, 100% 300px;

	/* =================================================================== */
}
.custom-form-page .custom-form-panel {
    width: 100%;
    max-width: 780px;
    margin: 0 auto;
    background-color: #ffffff;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 10px 34px rgba(10, 37, 64, 0.16);
}
/* The panel clips with overflow:hidden, but a clipped square-cornered child
	   still leaves the parent's white showing as a hairline along the corner arcs.
	   Giving the banner its own matching radii means there is nothing to reveal. */
.custom-form-page .custom-form-banner {
    border-radius: 16px 16px 0 0;
    padding: 30px 32px 28px;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    text-align: center;
}
.custom-form-page .custom-form-banner h1 {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 24px;
    line-height: 1.3;
    color: #ffffff;
    margin: 0;
}
.custom-form-page .custom-form-banner p {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.75);
    margin: 8px 0 0;
}
.custom-form-page .custom-form-banner.compact {
    padding: 26px 32px;
}
/* Both logo files are near-white artwork, so they only read on the navy band -
	   never move them onto the white panel below. */
.custom-form-page .custom-form-logo {
    display: block;
    height: 30px;
    width: auto;
    margin: 0 auto 18px;
}
/* Written out rather than nested as `.compact &`: postcss-nested resolves & to
	   the whole accumulated parent, which would have put .compact outside the page. */
.custom-form-page .custom-form-banner.compact .custom-form-logo {
    margin-bottom: 0;
}
/* ! Body
	/* =================================================================== */
.custom-form-page .custom-form-body {
    background-color: #f4f7fe;
    padding: 26px 28px 28px;
}
/* =================================================================== */
.custom-form-page .custom-form-loading {
    min-height: 30vh;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
/* Submitted / bad-token states share one centred card. */
.custom-form-page .custom-form-state {
    background-color: #ffffff;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    padding: 48px 32px;
    text-align: center;
}
.custom-form-page .custom-form-state h2 {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    color: #0a2540;
    margin: 0 0 10px;
}
.custom-form-page .custom-form-state p {
    font-size: 14px;
    color: #878ba0;
    line-height: 1.6;
    margin: 0 auto;
    max-width: 44ch;
}
/* ! Banner
	/* =================================================================== */
.custom-form-page .custom-form-state-icon {
    width: 60px;
    height: 60px;
    margin: 0 auto 18px;
    border-radius: 50%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 24px;
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
}
.custom-form-page .custom-form-state-icon.warning {
    background-color: #fff8e6;
    color: #856404;
}
/* =================================================================== */
.custom-form-page .custom-form-hint {
    font-size: 12.5px;
    color: #878ba0;
    margin: -8px 0 12px;
}
/* Day / Month / Year rather than one native date input - see the controller. */
.custom-form-page .custom-form-dob-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
}
.custom-form-page .custom-form-dob-fields .pf-answer-input {
    -ms-flex: 1 1 110px;
        flex: 1 1 110px;
    min-width: 96px;
}
/* The year list is the long one, so give it the extra room. */
.custom-form-page .custom-form-dob-fields .pf-answer-input:last-child {
    -ms-flex: 1 1 130px;
        flex: 1 1 130px;
}
.custom-form-page .custom-form-file-name {
    margin-top: 8px;
    font-size: 11px;
    color: #878ba0;
    word-break: break-word;
}
/* ! Page footer
	/* Same line the marketing pages carry, so a patient arriving cold from an
	/* email link can see whose form this is and find the privacy policy. Sits on
	/* the pale ground below the panel, so it needs a darker ink than the white
	/* the marketing footers use - #54596b clears AA on #e7f0ff at 6.07:1.
	/* =================================================================== */
.custom-form-page .custom-form-page-footer {
    max-width: 780px;
    margin: 22px auto 0;
    text-align: center;
}
.custom-form-page .custom-form-page-footer .copyright {
    margin: 0;
    font-size: 12px;
    line-height: 1.6;
    color: #54596b;
}
.custom-form-page .custom-form-page-footer .copyright a {
    color: #0035d2;
    font-weight: 600;
    text-decoration: none;
}
.custom-form-page .custom-form-page-footer .copyright a:hover, .custom-form-page .custom-form-page-footer .copyright a:focus {
    text-decoration: underline;
}
/* ! Submit
	/* A white band closing the panel, so the one action is not floating on the
	/* same pale ground as the questions.
	/* =================================================================== */
.custom-form-page .custom-form-footer {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 24px 28px 28px;
    background-color: #ffffff;
    border-top: 1px solid #e0e6ed;
}
/* =================================================================== */
.custom-form-page .custom-form-submit-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
    min-width: 220px;
    padding: 15px 34px;
    border: none;
    border-radius: 10px;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 15px;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 4px 14px rgba(0, 53, 210, 0.25);
    transition: transform 0.16s cubic-bezier(0.34, 1.56, 0.64, 1),
			box-shadow 0.16s ease,
			filter 0.16s ease;
}
.custom-form-page .custom-form-submit-btn i {
    font-size: 15px;
}
.custom-form-page .custom-form-submit-btn:hover:not(:disabled) {
    filter: brightness(1.12);
    transform: translateY(-1px);
    box-shadow: 0 8px 20px rgba(0, 53, 210, 0.3);
}
.custom-form-page .custom-form-submit-btn:active:not(:disabled) {
    transform: translateY(0);
    box-shadow: 0 2px 8px rgba(0, 53, 210, 0.25);
}
.custom-form-page .custom-form-submit-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.25);
}
.custom-form-page .custom-form-submit-btn:disabled {
    background: #d3d9e6;
    color: #fbfcff;
    box-shadow: none;
    cursor: not-allowed;
    transform: none;
    filter: none;
}
/* A block a sentence can breathe in, not a bold pill. Small bold red on pink is
	   the hardest combination to read of anything on this page, and the person
	   reading it has just been stopped from finishing a form - so: regular weight,
	   a little larger, left-aligned so a wrapped second line starts where the eye
	   returns, and an accent edge instead of shouting in colour.

	   Both inks are darkened for contrast. The originals measured 3.46:1 (error)
	   and 3.44:1 (success), under the 4.5:1 AA needs at this size; $danger and a
	   deeper green take them to 5.11:1 and 5.09:1. */
.custom-form-page .custom-form-message {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
    width: 100%;
    max-width: 460px;
    margin: 0;
    padding: 12px 16px;
    border-radius: 10px;
    font-size: 13.5px;
    font-weight: 400;
    line-height: 1.55;
    text-align: left;
}
.custom-form-page .custom-form-message i {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-top: 2px;
    font-size: 15px;
}
.custom-form-page .custom-form-message.success {
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(18, 115, 86);
    border: 1px solid rgba(32, 201, 151, 0.3);
    border-left: 3px solid rgb(18, 115, 86);
}
.custom-form-page .custom-form-message.error {
    background-color: #fdecea;
    color: #a94442;
    border: 1px solid rgba(169, 68, 66, 0.25);
    border-left: 3px solid #a94442;
}
@media (max-width: 600px) {
	.custom-form-page {
		padding: 16px 0 32px;

		background-size: 180px 180px, 100% 210px, 100% 210px;
	}
	.custom-form-page .custom-form-panel {
        border-radius: 12px;
    }
	.custom-form-page .custom-form-banner {
        border-radius: 12px 12px 0 0;
        padding: 24px 20px 22px;
    }
	.custom-form-page .custom-form-banner h1 {
        font-size: 20px;
    }
	.custom-form-page .custom-form-body {
        padding: 18px 16px 20px;
    }
	.custom-form-page .custom-form-footer {
        padding: 18px 16px 20px;
    }
	.custom-form-page .custom-form-submit-btn {
        width: 100%;
    }
}
@media (prefers-reduced-motion: reduce) {
	.custom-form-page .custom-form-submit-btn {
		transition: none;
	}
	.custom-form-page .custom-form-submit-btn:hover:not(:disabled), .custom-form-page .custom-form-submit-btn:active:not(:disabled) {
        transform: none;
    }
}
/* =================================================================== */
/* ! Responsive
/* =================================================================== */
@media (max-width: 900px) {
	.patient-forms-dialog {
		min-width: 96%;
		width: 96%;
	}

	.settings-shell.patient-forms .settings-nav {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        width: 100%;
    }

	.settings-shell.patient-forms .settings-nav-group.nav-group-create {
        border-bottom: none;
        margin-bottom: 0;
    }

	/* The rail is a horizontal strip on narrow screens; the note would break the row. */

	.settings-shell.patient-forms .nav-empty-note {
        display: none;
    }

	.settings-shell.patient-forms .settings-pane-body {
        padding: 18px 16px;
    }

	.settings-shell.patient-forms .pf-answer-row {
        -ms-flex-direction: column;
            flex-direction: column;
        gap: 4px;
    }

	.settings-shell.patient-forms .pf-answer-row .pf-answer-question {
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
        max-width: 100%;
    }

	/* No room beside the list: the palette becomes a row of tiles under it. */

	.settings-shell.patient-forms .pf-builder-layout {
        -ms-flex-direction: column;
            flex-direction: column;
        -ms-flex-align: stretch;
            align-items: stretch;
    }

	.settings-shell.patient-forms .pf-component-palette {
        position: static;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        -ms-flex-direction: row;
            flex-direction: row;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }

	.settings-shell.patient-forms .pf-component-palette .pf-palette-title {
        -ms-flex-preferred-size: 100%;
            flex-basis: 100%;
    }

	.settings-shell.patient-forms .pf-component-palette .pf-palette-tile {
        -ms-flex: 1 1 160px;
            flex: 1 1 160px;
        width: auto;
    }
}
/* Anyone who has asked for less motion gets the swap without the lift. */
@media (prefers-reduced-motion: reduce) {
	.settings-shell.patient-forms .pf-pane.ng-enter {
		animation: none;
	}

	.settings-shell.patient-forms .pf-question-card, .settings-shell.patient-forms .pf-icon-btn, .settings-shell.patient-forms .pf-palette-tile, .settings-shell.patient-forms .pf-add-inline, .pf-form-render .pf-choice, .pf-form-render .pf-answer-input {
		transition: none;
	}

	.settings-shell.patient-forms .pf-send-btn {
		transition: none;
	}

	.settings-shell.patient-forms .pf-send-btn:hover:not(:disabled), .settings-shell.patient-forms .pf-send-btn:active:not(:disabled) {
        transform: none;
    }
}
/* md-tooltip renders at the document body, outside .settings-shell, so this rule
   cannot be nested under it. */
.md-tooltip.pf-export-tooltip {
	color: #0035d2;
	background-color: #ffffff;
	font-size: 12px;
	border: 1px solid #0035d2;
	max-width: 12rem;

	/* Material caps .md-tooltip at one clipped line; let it grow to fit wrapped text. */
	height: auto;
	white-space: normal;
	overflow: visible;
	text-overflow: clip;
	line-height: 1.4;
}
/* =================================================================== */
/* ! Feature tips (tip of the day)
/* Same card language as _payments.css / _settings.css so the tip reads
/* as part of the product rather than an advert.
/* =================================================================== */
.tip-card {
	background-color: #ffffff;
	border: 1px solid #e0e6ed;
	border-left: 3px solid #0035d2;
	border-radius: 12px;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
	padding: 16px 18px;
	max-width: 460px;
	margin-top: 8px;

}
.tip-card .tip-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}
.tip-card .tip-eyebrow {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #0035d2;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    white-space: nowrap;
}
.tip-card .tip-eyebrow i {
    font-size: 12px;
}
.tip-card .tip-pager {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    margin-left: auto;
}
.tip-card .tip-arrow, .tip-card .tip-close {
    background: none;
    border: none;
    padding: 2px 5px;
    color: #a3aac0;
    font-size: 11px;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.15s ease;
}
.tip-card .tip-arrow:hover, .tip-card .tip-close:hover {
    color: #0035d2;
    background-color: #f4f7fe;
}
.tip-card .tip-close {
    font-size: 13px;
    margin-left: 2px;
}
.tip-card .tip-body {
    display: -ms-flexbox;
    display: flex;
    gap: 13px;
    -ms-flex-align: start;
        align-items: flex-start;
}
.tip-card .tip-icon {
    width: 38px;
    height: 38px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 10px;
    background-color: #e7f0ff;
    color: #0035d2;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 16px;
}
.tip-card .tip-text {
    min-width: 0;
}
.tip-card .tip-text h5 {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    color: #0a2540;
    margin: 0 0 5px;
    line-height: 1.3;
}
.tip-card .tip-text p {
    font-size: 12.5px;
    color: #878ba0;
    line-height: 1.5;
    margin: 0;
}
.tip-card .tip-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    margin-top: 14px;
    padding-left: 51px;
}
.tip-card .tip-actions .btn {
    width: auto;
    max-width: none;
    margin: 0;
}
@media (max-width: 900px) {
	.tip-card {
		max-width: 100%;
	}
	.tip-card .tip-actions {
        padding-left: 0;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }
}
/* =================================================================== */
/* ! ECLIPSE In-Patient Claim (tyroMedipassWidget)
/* -------------------------------------------------------------------
/* A forwards-only three step flow - verify, check eligibility, lodge -
/* inside the claim modal. Reads top to bottom, each step ending in one
/* action bar. Leaving the flow is the claim modal's own Back link.
/* =================================================================== */
.eclipse-flow {
    padding: 1.5rem 1.75rem 1.75rem;
}
.eclipse-flow__title {
    margin: 0;
}
.eclipse-flow__lead {
    color: #6c757d;
    font-size: 13px;
    line-height: 1.6;
    max-width: 60rem;
    margin: 0 0 1.25rem;
}
/* Separates the sections of a long form the way the clinical notes do - the
   left-packed rows alone do not make the breaks obvious. $grey-border-light
   rather than the notes' #ddd, to match the action bar's top border below. */
.eclipse-divider {
    border: none;
    border-top: 2px solid #e0e6ed;
    margin: 2.5em 0 1.5em;
}
/* =================================================================== */
/* ! Stepper
/* =================================================================== */
.eclipse-stepper {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.75rem;
    margin: 1.25rem 0 1.5rem;
    padding: 0;
    list-style: none;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.eclipse-stepper__step {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.6rem;
    min-width: 0;
    -ms-flex: 0 1 auto;
        flex: 0 1 auto;
}
/* Drawn by the step it leads into, so it can never dangle off the last one. */
.eclipse-stepper__step + .eclipse-stepper__step {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
}
.eclipse-stepper__step + .eclipse-stepper__step::before {
    content: "";
    -ms-flex: 1 1 1.5rem;
        flex: 1 1 1.5rem;
    min-width: 1.5rem;
    height: 2px;
    border-radius: 1px;
    background-color: #e0e6ed;
}
.eclipse-stepper__marker {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    border: 2px solid #e0e6ed;
    background-color: #ffffff;
    color: #6c757d;
    font-size: 12px;
    line-height: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    transition: all 0.25s ease;
}
.eclipse-stepper__label {
    font-size: 13px;
    color: #6c757d;
    white-space: nowrap;
    transition: color 0.25s ease;
}
.eclipse-stepper__step--active .eclipse-stepper__marker {
    border-color: #0035d2;
    background-color: #0035d2;
    color: #ffffff;
}
.eclipse-stepper__step--active .eclipse-stepper__label {
    color: #0035d2;
}
.eclipse-stepper__step--done .eclipse-stepper__marker {
    border-color: #20c997;
    background-color: #20c997;
    color: #ffffff;
}
.eclipse-stepper__step--done .eclipse-stepper__label {
    color: #343a40;
}
/* =================================================================== */
/* ! Form rows and fields
/* -------------------------------------------------------------------
/* Not grid rows. In a dialog 80% of the window wide, the 12 column grid
/* deals every field an equal share, so an 8 character provider number
/* gets the same 700px box as a free text description. Here each field is
/* as wide as the value it holds and the row packs left, leaving the
/* slack as whitespace at the end rather than inside every field.
/* =================================================================== */
.eclipse-formrow {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: start;
        align-items: flex-start;
    column-gap: 1.5rem;
}
/* Sized by their contents, never stretched. .form-group's own bottom
       margin spaces the wrapped lines. */
.eclipse-formrow > .form-group {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    max-width: 100%;
}
/* Or a sentence of help under a narrow field sets the whole group's width. */
.eclipse-formrow .help-block {
    max-width: 20rem;
}
/* Aligns an unlabelled control - the remove button - with the inputs, not
   their labels. */
.eclipse-formrow__spacer-label {
    display: block;
    visibility: hidden;
}
/* A label that wraps puts its field a line lower than the ones beside it, so
   the row's inputs no longer sit on one line. The labels here are short and the
   columns are wide, so holding them to one line costs nothing and keeps the
   inputs level. */
.eclipse-formrow .control-label, .eclipse-fieldgrid .control-label {
    white-space: nowrap;
}
/* =================================================================== */
/* ! Field hints
/* -------------------------------------------------------------------
/* What used to be a line of help under the field. Held in a tooltip on
/* the label instead: most of these hints only apply to some claims, and
/* under the field each one appearing and disappearing moved everything
/* below it as the form was filled in. On the label they change nothing
/* but the label.
/*
/* Errors are not hints and stay where they are - a message saying the
/* claim will be rejected has to be read, not found by hovering.
/* =================================================================== */
/* The glyph is a child rather than this element itself, so that this element is the
   whole affordance. md-tooltip hangs off its immediate DOM parent for both the hover
   target and the aria-label it may set, so that parent wants to be the hint as a
   whole, not the glyph inside it.

   (An earlier note here said the tooltip would inherit the glyphicon font and come
   out as glyphs. It would not - md-tooltip detaches itself at link time and renders
   under <body>. The structure is right; that was the wrong reason for it.) */
.eclipse-hint {
    display: inline-block;
    margin-left: 0.3rem;
    color: #6c757d;
    cursor: help;
}
.eclipse-hint .glyphicon {
    font-size: 11px;/* .glyphicon nudges itself down a pixel to sit in a line of text; beside a
           label it reads as sitting low. */
    top: 0;
}
.eclipse-hint:hover {
    color: #0035d2;
}
/* Angular Material's own tooltip is a nowrap chip: a sentence comes out as one
   line four times the width of the field it explains. Dressed like the SNOMED
   concept tooltip instead - a small light card that wraps - and held to a width
   a sentence reads well at.

   Specificity over the theme's own .md-tooltip rule, which is injected into the
   head at bootstrap and so wins a tie against this file. */
body .md-tooltip.eclipse-tooltip {
    max-width: 16rem;
    height: auto;
    padding: 8px 12px;
    white-space: normal;
    font-size: 12px;
    font-weight: 400;
    line-height: 1.5;
    color: #343a40;
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 4px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
/* The card is opaque, where the chip it replaces is read through. */
body .md-tooltip.eclipse-tooltip.md-show {
    opacity: 1;
}
/* CatTrax's own action icons, at the 16px every other delete in the app uses. Centred in the button frame
   rather than sitting on the text baseline, which is where an inline img lands by default. */
.eclipse-icon {
    width: 16px;
    height: 16px;
    vertical-align: middle;
}
/* The row's icon actions - the options chevron and the bin. Unframed: a .btn-default box around a 16px glyph
   carries more weight than the inputs it sits beside, and there are two of them on every item row. The icon is
   the affordance, the way it is everywhere else these icons appear in the app.

   Sized to keep the click target honest, and to stay level with the inputs on the row. */
.eclipse-iconbtn {
    border: 0;
    background: transparent;
    box-shadow: none;
    padding: 6px 8px;
    color: #6c757d;
}
.eclipse-iconbtn:hover, .eclipse-iconbtn:focus, .eclipse-iconbtn:active {
    border: 0;
    background: transparent;
    box-shadow: none;
    outline: 0;
    color: #0035d2;
}
.eclipse-field {
    max-width: 100%;
}
/* 3-6 digits: MBS item numbers, and the shorter whole numbers beside them. */
.eclipse-field--number {
    width: 9rem;
}
/* Exactly 8 characters: Medicare provider numbers and facility IDs. */
.eclipse-field--code {
    width: 11rem;
}
.eclipse-field--money {
    width: 10rem;
}
/* Date inputs carry picker furniture, so they need more than ten characters. */
.eclipse-field--date {
    width: 13rem;
}
/* A date of birth, typed as day / month / year instead of picked off a calendar. The one date on this form that
   is decades old, and a picker opens on this month - so it is three boxes, in the order they are spoken, which
   is also the only way to make the field read dd/mm/yyyy (a native date input renders in the browser's locale).
   Sized to .eclipse-field--date so it lines up with the real dates in the same grid. */
.eclipse-dob {
    display: -ms-flexbox;
    display: flex;
    gap: 0.35rem;
    width: 13rem;
}
.eclipse-dob .form-control {
    margin: 0;
    text-align: center;
    padding-left: 0.35rem;
    padding-right: 0.35rem;
}
/* Day and month take two digits, the year four, so the year gets the room. */
.eclipse-dob .form-control:nth-child(1), .eclipse-dob .form-control:nth-child(2) {
    -ms-flex: 1 1 0px;
        flex: 1 1 0;
}
.eclipse-dob .form-control:nth-child(3) {
    -ms-flex: 1.6 1 0px;
        flex: 1.6 1 0;
}
/* Up to 20 characters, where the placeholder is longer than the value. */
.eclipse-field--ref {
    width: 18rem;
}
/* Free text: the claim item description. */
.eclipse-field--text {
    width: 26rem;
}
/* STUB code plus a few words. ECLIPSE caps it at 50 characters, but sized to
   what is normally typed rather than to the maximum. */
.eclipse-field--stub {
    width: 13rem;
}
/* The claim item picker, which shows "42702 - Cataract extraction ...". */
.eclipse-field--item {
    width: 24rem;
}
/* Sized by the longest option and its arrow, not by the code held. */
.eclipse-field--choice-sm {
    width: 11rem;
}
.eclipse-field--choice {
    width: 15rem;
}
.eclipse-field--choice-wide {
    width: 19rem;
}
/* The presenting illness picker, whose options run "322 - Bone Marrow transfusion
   or transplant (autologous and allogeneic incl harvesting, cryopreservation)".
   Medicare writes the descriptions, so their length is not ours to trim: sized to
   its longest option like the policy picker below, with .eclipse-field's
   max-width keeping it inside the form. */
.eclipse-field--illness {
    width: auto;
    min-width: 30rem;
}
/* The health fund policy picker, whose options run "Bupa - #88812345 - Overseas
   Visitor Health Cover (OVHC) - LAPSED". Every part of that earns its place -
   two policies at the same fund are told apart by the cover type, and the status
   is a reason not to claim on one - so the option has to be readable in full.
   How wide that is depends on the patient's policies rather than on anything
   this file knows, so the field is sized to its longest option instead of to a
   number picked here; the floor keeps a short-named policy from collapsing to a
   stub, and .eclipse-field's max-width stops a long one overrunning the form. */
.eclipse-field--policy {
    width: auto;
    min-width: 30rem;
}
/* The episode indicators, read across rather than down. Bootstrap's own
   adjacent-checkbox spacing fights the gap and unevens the wrapped rows.

   Sits inside a .eclipse-formrow alongside the episode's fields, so the gap is
   the tighter of the two: 1.75rem between labelled fields reads as separation,
   between five checkboxes on one line it reads as drift. */
.eclipse-checkrow {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 0.4rem 1rem;
    /* Aligns the first row of boxes with the inputs beside them rather than
       floating them against the labels. */
    padding-top: 0.35rem;
}
.eclipse-checkrow .checkbox-inline + .checkbox-inline {
    margin-left: 0;
}
/* =================================================================== */
/* ! Field grid
/* -------------------------------------------------------------------
/* For the denser parts of the form, where most fields carry a sentence
/* of help wider than the field it explains. Packed left the way
/* .eclipse-formrow packs, each group is as wide as its own sentence, so
/* no two lines start their fields at the same offset and the gaps
/* between them all differ. One column grid instead: the columns are the
/* same on every row of a section, so fields line up down the form as
/* well as across it, with each field's help text under it.
/* =================================================================== */
.eclipse-fieldgrid {
    display: -ms-grid;
    display: grid;
    /* A set column rather than a share of the row: stretching four fields across
       a dialog 80% of the window wide puts a hand's width between a drop-down and
       the one that qualifies it. The slack goes to the end of the row instead. */
    -ms-grid-columns: (16rem)[auto-fill];
        grid-template-columns: repeat(auto-fill, 16rem);
    column-gap: 2rem;
    -ms-flex-align: start;
        align-items: start;
}
/* The column is the width here, so a field kept at its own would only
       leave a ragged edge inside its cell. */
.eclipse-fieldgrid .eclipse-field {
    width: 100%;
}
.eclipse-fieldgrid > .form-group {
    min-width: 0;/* Slack at the end of the column, so a label longer than its field -
           "Servicing Provider ID (optional)" - has somewhere to go instead of
           running at the column beside it. */
    padding-right: 0.75rem;
}
/* A select sizes itself from its options unless it is told not to, which
       leaves a drop-down of short codes narrower than the text input beside it.
       Both fill the column. Stated against the element as well as the class,
       to beat the .eclipse-field--choice widths whatever the source order. */
.eclipse-fieldgrid select.form-control {
    width: 100%;/* .form-control's height, which a select otherwise takes from its font. */
    height: 34px;
}
/* A line of its own: checkboxes that read across, and the declarations
   whose label is a sentence. */
.eclipse-fieldgrid__wide {
    grid-column: 1 / -1;
}
/* Two columns, for the two pickers whose options are a sentence someone else
   wrote - the patient's referrals, and Medicare's presenting illness codes.
   Every other field is one column, so the drop-downs and the text inputs on a
   row are the same width. */
.eclipse-fieldgrid__span2 {
    -ms-grid-column: span 2;
        grid-column: span 2;
}
/* =================================================================== */
/* ! Panels
/* -------------------------------------------------------------------
/* One card per thing being read: the assessment, the item benefits,
/* what is about to be lodged.
/* =================================================================== */
.eclipse-panel {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    margin-bottom: 1.25rem;
}
.eclipse-panel--quiet {
    background-color: #f8f9fa;
}
.eclipse-panel__header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 0.6rem;
    margin-bottom: 0.85rem;
}
.eclipse-panel__title {
    margin: 0;
    font-size: 15px;
}
.eclipse-panel__note {
    color: #6c757d;
    font-size: 13px;
    line-height: 1.6;
    margin: 0;
}
/* The transaction reference, which practices read out and quote back. */
.eclipse-ref {
    display: inline-block;
    font-family: "Source Code Pro", "SFMono-Regular", Consolas, monospace;
    font-size: 12px;
    letter-spacing: 0.02em;
    background-color: #f2f6fb;
    border: 1px solid #e0e6ed;
    border-radius: 6px;
    padding: 2px 8px;
    color: #343a40;
}
/* =================================================================== */
/* ! Money summary tiles
/* -------------------------------------------------------------------
/* The four numbers the practice acts on, pulled out of the per-item
/* table so the gap is not buried in a row of currency.
/* =================================================================== */
.eclipse-summary {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(8.5rem, 1fr))[auto-fit];
        grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr));
    gap: 0.75rem;
    margin-bottom: 1.25rem;
}
.eclipse-summary__tile {
    background-color: #f2f6fb;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    padding: 0.7rem 0.9rem;
}
.eclipse-summary__label {
    display: block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #6c757d;
    margin-bottom: 0.3rem;
}
.eclipse-summary__value {
    display: block;
    font-size: 18px;
    line-height: 1.2;
    color: #343a40;
}
.eclipse-summary__tile--gap {
    background-color: rgba(255, 182, 39, 0.1);
    border-color: rgba(255, 182, 39, 0.3);
}
.eclipse-summary__tile--gap .eclipse-summary__value {
    color: #a94442;
}
.eclipse-summary__tile--clear {
    background-color: rgba(32, 201, 151, 0.08);
    border-color: rgba(32, 201, 151, 0.3);
}
.eclipse-summary__tile--clear .eclipse-summary__value {
    color: #20c997;
}
/* =================================================================== */
/* ! Callouts - confirm, lodged, failed
/* =================================================================== */
.eclipse-callout {
    border: 1px solid #e0e6ed;
    border-left-width: 4px;
    border-radius: 10px;
    padding: 1rem 1.25rem;
    margin-bottom: 1.25rem;
}
.eclipse-callout p {
    margin: 0 0 0.5rem;
    font-size: 13px;
    line-height: 1.6;
}
.eclipse-callout p:last-child {
    margin-bottom: 0;
}
.eclipse-callout__title {
    font-size: 14px;
    margin: 0 0 0.5rem;
}
/* Itemised detail under a callout - which items were repriced, and from what to what. Sized to the callout's
   own paragraphs rather than the global list styles, which are set for body copy. */
.eclipse-callout__list {
    margin: 0;
    padding-left: 1.25rem;
    font-size: 13px;
    line-height: 1.6;
}
.eclipse-callout__list li {
    margin-bottom: 0.25rem;
}
.eclipse-callout__list li:last-child {
    margin-bottom: 0;
}
/* An action offered by a callout itself rather than by the step's action bar - the one case being the patient
   payment a lodged claim leaves to collect, which belongs beside the sentence that says so. */
.eclipse-callout__action {
    margin-top: 0.85rem;
}
.eclipse-callout--success {
    background-color: rgba(32, 201, 151, 0.08);
    border-color: #20c997;
}
/* A callout sitting inside an .eclipse-panel rather than on its own below one. Its text is inset by its own
   4px accent border and 1.25rem padding, which is exactly the 1.5rem the panel pads its content by - so pulled
   out by that much, the callout spans the panel edge to edge and the words inside it start on the same left
   edge as the panel's heading and prose. Without it a panel reads as three staggered left margins: the title,
   the facts table, and the callout. */
.eclipse-callout--flush {
    margin-left: -1.5rem;
    margin-right: -1.5rem;
}
.eclipse-callout--danger {
    background-color: rgba(217, 83, 79, 0.08);
    border-color: #d9534f;
    color: #a94442;
}
.eclipse-callout--waiting {
    background-color: rgba(255, 182, 39, 0.1);
    border-color: #FFB627;
    color: #856404;
}
/* =================================================================== */
/* ! Action bars
/* -------------------------------------------------------------------
/* Every step ends in one. The global .btn-navy / .btn-cancel are full
/* width slabs capped at 220px, which read as a form field when two sit
/* side by side, so in here they size to their label instead.
/* =================================================================== */
.eclipse-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: end;
        justify-content: flex-end;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px solid #e0e6ed;
}
.eclipse-actions .btn {
    width: auto;
    max-width: none;
    min-width: 8rem;
    padding: 7px 22px;
    font-size: 13px;
}
/* Pushes the secondary action away from the primary, so the button that sends
   a claim to Medicare is never the one under a stray click. Once the primary is
   gone the pair collapses back to one right-aligned button. */
.eclipse-actions__spacer {
    margin-right: auto;
}
.eclipse-actions__spacer:only-child {
    margin-right: 0;
}
.eclipse-actions--inline {
    margin-top: 1rem;
    padding-top: 0;
    border-top: 0;
}
/* =================================================================== */
/* ! Tables inside the flow
/* =================================================================== */
.eclipse-table {
    margin-bottom: 0;
    font-size: 13px;
}
.eclipse-table > thead > tr > th {
    border-bottom-width: 1px;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6c757d;
    white-space: nowrap;
}
.eclipse-table > tbody > tr > td {
    vertical-align: middle;
}
/* The totals row reads as a summary of the rows above it, not another item. */
.eclipse-table > tbody > tr.eclipse-table__total > td {
    border-top: 2px solid #e0e6ed;
    background-color: #f2f6fb;
}
/* Label / value pairs - the assessment detail rows. */
.eclipse-table--facts > tbody > tr > td:first-child {
    width: 34%;
    color: #343a40;
}
.eclipse-table--facts > tbody > tr:first-child > td {
    border-top: 0;
}
/* Short labels - Status, Benefit, Claim ID - where the eligibility assessment's run to "Possible pre-existing
   ailment". The 34% column above is sized for those, and over a short one it leaves a hand's width of gap
   between the label and the value it belongs to. This sizes the column to its own longest label instead:
   width 1% with nowrap is the shrink-to-fit trick, since an auto-layout table cannot go narrower than the
   content it holds.

   The left padding goes with it. Bootstrap pads every cell 8px, and over a table sitting directly under a
   panel heading that reads as the table being indented from the heading by an amount nothing chose. */
.eclipse-table--facts-narrow > tbody > tr > td:first-child {
    width: 1%;
    white-space: nowrap;
    padding-left: 0;
    padding-right: 1.5rem;
}
.eclipse-numeric {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
/* =================================================================== */
/* ! Unpaid patient claim confirmation
/* -------------------------------------------------------------------
/* The dialog asked before a patient (PC) claim lodges with its account
/* unsettled. Two pathways sit side by side in it, so they are blocked
/* out rather than run together as prose - the difference between them
/* is the whole point of the dialog.
/* =================================================================== */
.unpaid-claim-modal__lead {
    font-size: 13px;
    line-height: 1.6;
    margin: 0 0 1rem;
}
.unpaid-claim-modal__path {
    border: 1px solid #e0e6ed;
    border-left-width: 4px;
    border-radius: 10px;
    padding: 0.75rem 1rem;
    margin-bottom: 0.75rem;
}
.unpaid-claim-modal__path p {
    margin: 0;
    font-size: 13px;
    line-height: 1.6;
    color: #343a40;
}
.unpaid-claim-modal__path-title {
    font-size: 13px;
    margin: 0 0 0.35rem;
}
/* The pathway being taken by pressing through, which is the one worth reading twice. */
.unpaid-claim-modal__path--warn {
    background-color: rgba(255, 182, 39, 0.1);
    border-color: #FFB627;
}
.unpaid-claim-modal__path--warn p {
    color: #856404;
}
.unpaid-claim-modal__footnote {
    font-size: 12px;
    line-height: 1.6;
    margin: 0.75rem 0 0;
}
/* The two answers sit together rather than stacked: they are alternatives, not an action and an escape. */
.unpaid-claim-modal__actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 0.75rem;
}
.unpaid-claim-modal__actions .btn {
    width: auto;
    margin: 0;
}
/* =================================================================== */
/* ! Ledger accounts (transaction setup)
/* -------------------------------------------------------------------
/* The bank and revenue accounts every claim books against, chosen
/* before the channel. The pair is centred on the screen; each label
/* sits centred over its own full-width select rather than over the
/* select's text.
/* =================================================================== */
.funder-accounts {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: center;
	    justify-content: center;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	gap: 2rem;
	margin-bottom: 1.5rem;
}
.funder-accounts__field {
	-ms-flex: 0 1 20rem;
	    flex: 0 1 20rem;
	/* Spacing between the pair is the container's gap; drop .form-group's own. */
	margin: 0;
}
.funder-accounts__label {
	display: block;
	/* Centred over the whole field, which the select fills, so the label sits
	   over the middle of the dropdown. */
	text-align: center;
	margin: 0 0 0.5rem;
}
/* Full width so the centred label above spans the same box. Stated against the
   element and class together to beat the .operation-form select rule whatever
   the source order, the way the field grid does. */
.funder-accounts__field select.form-control {
	width: 100%;
}
/* =================================================================== */
/* ! Funder choice (transaction setup)
/* -------------------------------------------------------------------
/* One card per claiming channel, saying what it claims and what the
/* patient's record holds for it, with the likely one marked. Built on
/* the panel look used through the rest of this flow; the action in
/* each card is the same button it has always been.
/* =================================================================== */
.funder-choice {
    max-width: 52rem;
    margin: 0 auto;
}
.funder-choice__head {
    text-align: center;
    margin-bottom: 1.5rem;
}
.funder-choice__heading {
    margin: 0 0 0.4rem;
}
.funder-choice__lede {
    margin: 0 auto;
    max-width: 38rem;
    font-size: 13px;
    line-height: 1.6;
}
.funder-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(14rem, 1fr))[auto-fit];
        grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: 1rem;
    -ms-flex-align: stretch;
        align-items: stretch;
    text-align: left;
}
.funder-card {
    position: relative;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 0.3rem;
    padding: 1.15rem 1.25rem 1.25rem;
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
}
/* The card the record points to. A navy edge and a flag on an otherwise identical card: it is the likely
   choice, not the only one, and the other two have to stay as easy to pick. */
.funder-card--suggested {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.funder-card__flag {
    position: absolute;
    top: -0.6rem;
    left: 1.15rem;
    padding: 0.15rem 0.55rem;
    font-size: 9px;
    line-height: 1.5;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    border-radius: 8px;
    background-color: #0035d2;
    color: #ffffff;
}
.funder-card__name {
    font-size: 17px;
    line-height: 1.3;
    color: #0035d2;
}
/* In-patient or out-patient - the one fact that decides which card is right, so it reads before the blurb.
   Set like the summary tile labels rather than as a colour of its own. */
.funder-card__scope {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #6c757d;
}
.funder-card__blurb {
    font-size: 12px;
    line-height: 1.55;
    color: #6c757d;
    margin-top: 0.15rem;
}
/* What the patient record holds for this channel, under a rule: it is about this patient rather than about
   the channel, and reads as the last thing checked before the button below it. Pushed to the foot of the
   card so the rules and the buttons line up across the row whatever length the blurbs run to.

   A list rather than one line, because the ECLIPSE card has two things to report: an in-patient claim needs
   a health fund policy and a Medicare entitlement both. Held to the height of two rows on every card so the
   rule stays level across the row while only one of the three carries a second line. */
.funder-card__records {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 0.3rem;
    width: 100%;
    min-height: 3.3em;
    margin-top: auto;
    padding-top: 0.85rem;
    border-top: 1px solid #e0e6ed;
    font-size: 12px;
    line-height: 1.5;
}
.funder-card__record {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 0.4rem;
}
.funder-card__mark {
    font-size: 12px;
}
.funder-card__record--held {
    color: #20c997;
}
.funder-card__record--missing {
    color: #6c757d;
}
/* btn-navy sets its own metrics and btn-primary keeps Bootstrap's, so the three come out different heights
   and knock the rules above them out of line with each other. Matched here to btn-navy, which two of the
   three already are, and stretched to the card so the action reads as belonging to it. Colours are left to
   the button classes themselves. */
.funder-card__action {
    -ms-flex-item-align: stretch;
        -ms-grid-row-align: stretch;
        align-self: stretch;
    margin-top: 0.9rem;
    max-width: none;
    padding: 4px 18px;
    font-size: 12px;
}
.funder-choice__foot {
    margin: 1.25rem 0 0;
    text-align: center;
    font-size: 12px;
}
/* =================================================================== */
/* ! Patient cover check (patientCoverValidate, patientCoverResult)
/* The Validate buttons on the patient form's Medicare, DVA and fund
/* sections, and the answer under each. The answers reuse the ECLIPSE
/* callouts, so a verified card reads the same here as on a claim.
/* =================================================================== */
/* Sits left of the section's Clear (or remove) button. */
.patient-cover-validate {
	margin-right: 6px;
}
.patient-cover-result .eclipse-callout {
    margin: 1rem 0 0;
}
/* Inside a policy's panel the answer sits between the heading and the body, so it shows whether or not the
   policy is open - inset to the panel's own padding. */
.patient-cover-result--in-panel .patient-cover-result {
	padding: 0 15px 15px;
}
.patient-cover-result__stale {
	color: #856404;
}
.patient-cover-result__differences {
	margin: 0.75rem 0 0;
	background-color: transparent;
}
.patient-cover-result__differences th, .patient-cover-result__differences td {
    vertical-align: middle;
}
/* The scrolling PDF viewer (<pdf-scroll-viewer>) used by the document preview and processing
   report modals. The page column scrolls inside the modal body rather than growing it, so the
   toolbar and the modal's own buttons stay put while a document is read. */
.pdf-scroll-viewer {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	max-width: 100%;
}
.pdf-scroll-viewer-toolbar {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 0.5rem;
	padding-bottom: 0.75rem;
}
.pdf-scroll-viewer-toolbar .btn {
    width: 5em;
}
.pdf-scroll-viewer-toolbar .control-label {
    padding-left: 0.5rem;
    margin-bottom: 0;
}
.pdf-scroll-viewer-scroll {
	/* Pages are positioned against this box, and offsetTop is read off them to work out what is in
	   view - so it has to be the offset parent, not just the thing that scrolls. */
	position: relative;
	overflow: auto;
	max-height: 60vh;
	background-color: #f8faff;
	border: 1px solid #e0e6ed;
}
/* Inside a viewer modal the document takes the whole window bar the modal's own chrome. A document is
   read a page at a time, and a short panel is a page read a third at a time. The subtracted heights
   are that chrome: the dialog's top margin, the title bar, this body's padding and the toolbar - and,
   on the report, the row its Download and Close buttons sit in. */
.pdf-viewer-modal-body {
	padding: 1rem 1.25rem;
}
.pdf-viewer-modal-body .pdf-scroll-viewer-scroll {
    height: calc(100vh - 190px);
    max-height: none;
}
.pdf-viewer-modal-body.has-footer .pdf-scroll-viewer-scroll {
    height: calc(100vh - 265px);
}
.pdf-scroll-viewer-pages {
	padding: 0.75rem 0;
}
/* Centred by auto margins on a box shrink-wrapped to the page, not by flex. At real size on a narrow
   window a page is wider than the panel, and it has to overflow to the right where the horizontal
   scrollbar can reach it - flex centring would push its left edge out of reach instead. */
.pdf-scroll-viewer-page {
	display: table;
	margin: 0 auto 0.75rem;
	background-color: #ffffff;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.18);
}
.pdf-scroll-viewer-page:last-child {
    margin-bottom: 0;
}
.pdf-scroll-viewer-page canvas {
    display: block;
}
.pdf-scroll-viewer-message {
	padding: 3rem 0;
	text-align: center;
}
/* =================================================================== */
/* ! Tyro terminal patient payment (tyroTerminalPayment)
/* -------------------------------------------------------------------
/* Spacing for the terminal panel, and the account-settlement block the
/* ECLIPSE lodgement step wraps it in. The panels themselves reuse the
/* ECLIPSE callouts in _eclipse-claim.css, and the claim modal's PAY
/* view uses that modal's own headings, tables and footer buttons.
/* =================================================================== */
.terminal-payment {
	margin-top: 1rem;
}
/* The claim modal's payment footer. .btn-navy and .btn-cancel are sized for the one-word actions the rest of
   the app puts in a footer - width 100% capped at 220px - and these labels run past that and wrap mid-word.
   Sized to their content instead, the way the ECLIPSE action bar does it (see .eclipse-actions in
   _eclipse-claim.css), and scoped to this footer because .my-modal-footer is shared by 80-odd templates. */
.claim-payment-actions .btn {
    width: auto;
    max-width: none;
    min-width: 8rem;
    padding: 7px 22px;
    font-size: 13px;
    white-space: nowrap;
}
/* These buttons come and go on ng-if as the payment mode changes, and ngAnimate will not touch the DOM
	   until any transition on the element has finished - so the 0.3s `transition: all` the button styles carry
	   for their hover made every switch between the options and the form sit still for 300ms first. Zeroed
	   only while ngAnimate is running, which it signals with .ng-animate, so the hover keeps its transition.
	   Beats .btn-navy on specificity, so no !important is needed. */
.claim-payment-actions .btn.ng-animate {
    transition: none;
}
/* The patient claim's account, settled on the ECLIPSE lodgement step before the claim goes. Sits inside an
   .eclipse-callout, so only what the callout does not already give it lives here. */
.account-settlement .payment-mode-switch {
    margin-top: 1rem;
}
.account-settlement .row {
    margin-top: 0.5rem;
}
/* Same reason as .claim-payment-actions above: "Raise Account for Payment" runs past the 220px the button
	   styles cap at, and wraps mid-word. */
.account-settlement .btn {
    width: auto;
    max-width: none;
    min-width: 8rem;
    padding: 7px 22px;
    font-size: 13px;
    white-space: nowrap;
}
/* And the same ngAnimate delay: the buttons here toggle on ng-if as the account is raised and paid. */
.account-settlement .btn.ng-animate {
    transition: none;
}
/* Account / paid / owing, read left to right. Spaced rather than tabulated: three figures do not need a table,
   and the callout's prose reads better with them on one line. */
.account-settlement__figures {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	-ms-flex-align: center;
	    align-items: center;
	gap: 1.5rem;
	font-size: 13px;
	margin-bottom: 0.5rem;
}
/* Sits with the figures it re-reads rather than at the end of the row, and takes no more room than the icon
   needs - the numbers are the content here, this is the thing that updates them. */
.account-settlement__refresh {
	min-width: 0;
	padding: 2px 6px;
	margin-left: -0.75rem;
}
/* Says which of the two payment routes the settlement step is on, and offers the other. A line of prose rather
   than a pair of tabs: the two are not equal choices to weigh up - one is how the account is normally settled
   and the other is the exception - and a sentence can say so where a tab cannot. */
.payment-mode-switch {
	border: 1px solid #e0e6ed;
	border-radius: 12px;
	background-color: #e7f0ff;
	padding: 0.75rem 1rem;
	margin-bottom: 1rem;
}
.payment-mode-switch-label {
	color: #0a2540;
	font-size: 13px;
	line-height: 1.6;
}
/* The alternative route. Underlined rather than button-shaped, so it does not compete with the action that
	   actually takes the payment. */
.payment-mode-switch-label a {
    cursor: pointer;
    margin-left: 0.35rem;
    text-decoration: underline;
}
/* =================================================================== */
/* ! Claimable items (progress note / operation note / claim modal)
/* -------------------------------------------------------------------
/* Laid out as the transcription processor's AI Assist bar is: one
/* blue-box holding a toolbar row of controls, with the settings panel
/* dropping down inside the same box behind the gear.
/*
/* An item code and a comment are two ways to record the same piece of
/* work, and either on its own is enough. The rule between the two rows
/* says that where a paragraph of instructions used to; the clinician
/* reads the form, not a preamble.
/* =================================================================== */
/* One row of controls, as the AI Assist bar is. */
.claimable-items .claimable-items__toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
}
.claimable-items .claimable-items__label {
    color: #555555;
    font-weight: bold;
    white-space: nowrap;
}
/* Sized to the widest fee the practice will bill rather than sharing the row's
	   stretch - a price is a short field and reads wrong when it is not. */
.claimable-items .claimable-items__fee {
    width: 9em;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
/* The vertical line after the section's name, as the AI Assist bar draws it. Scoped, as
	   the AI Assist bar carries its own copy inline. */
.claimable-items .toolbar-divider {
    width: 1px;
    -ms-flex-item-align: stretch;
        -ms-grid-row-align: stretch;
        align-self: stretch;
    min-height: 2.25em;
    background-color: #cccccc;
}
.claimable-items .ui-select-container {
    margin: 0;
}
/* Between the toolbar rows, and the same line as the AI Assist bar's own divider. */
.claimable-item-or {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 0.75rem;
	margin: 1rem 0;
	color: #6c757d;
	font-size: 13px;
}
.claimable-item-or::before, .claimable-item-or::after {
	content: "";
	-ms-flex: 1;
	    flex: 1;
	border-top: 1px solid #cccccc;
}
/* The house plus button - square, navy, beside the row it adds. */
.btn-add-claimable-item {
	height: 34px;
	width: 34px;
	margin: 0;
	padding: 0;
	-ms-flex-negative: 0;
	    flex-shrink: 0;
}
/* =================================================================== */
/* ! Uncoded rows
/* -------------------------------------------------------------------
/* A comment nobody has coded yet stands in the Item column where a code
/* would be. Marked rather than left blank, so it reads as work waiting
/* on an administrator and not as a row that failed to load.
/* =================================================================== */
.claimable-item-uncoded {
	display: inline-block;
	padding: 0.1rem 0.5rem;
	border: 1px solid rgba(255, 193, 7, 0.7);
	border-radius: 8px;
	background: rgba(255, 243, 205, 0.9);
	color: #856404;
	font-size: 12px;
	font-weight: normal;
	white-space: nowrap;
}
/* In the claim modal the marker is the way in to coding the row, so it has to
   read as something to press rather than as a label. */
a.claimable-item-uncoded {
	cursor: pointer;
	text-decoration: none;
}
a.claimable-item-uncoded:hover, a.claimable-item-uncoded:focus {
    border-color: #856404;
    color: #856404;
    text-decoration: none;
}
/* The picker an administrator codes an uncoded row with, sized to sit inside
   a table cell rather than fill the row the way the claim form's does. */
.claimable-item-coder {
	min-width: 16rem;
}
.claimable-item-coder .ui-select-container {
    margin: 0;
}
/* =================================================================== */
/* ! The practice's own item codes
/* -------------------------------------------------------------------
/* The gear's panel, laid out as the prompt manager is: it drops down
/* inside the same box behind a rule, with the list of what the practice
/* holds on the left and the form that adds or edits one on the right.
/* =================================================================== */
.claimable-items__settings {
	margin-top: 15px;
	border-top: 1px solid #cccccc;
	padding-top: 15px;
}
.claimable-items__settings h5 {
    margin-top: 0;
    color: #333333;
    font-weight: 600;
}
.claimable-items__settings-body {
	display: -ms-flexbox;
	display: flex;
	gap: 15px;
	-ms-flex-align: start;
	    align-items: flex-start;
}
.claimable-items__list {
	-ms-flex: 1;
	    flex: 1;
	border: 1px solid #e0e6ed;
	background: #ffffff;
	border-radius: 8px;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.claimable-items__list-scroll {
	max-height: 220px;
	overflow-y: auto;
}
.claimable-items__list-row {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
	gap: 10px;
	padding: 8px 10px;
	border-bottom: 1px solid #e0e6ed;
}
.claimable-items__list-name {
	font-size: 0.9em;
	word-break: break-word;
}
.claimable-items__list-name strong {
    margin-right: 6px;
}
.claimable-items__list-actions {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 6px;
	white-space: nowrap;
}
.claimable-items__list-empty {
	color: #6c757d;
	font-style: italic;
	padding: 10px;
	text-align: center;
	font-size: 0.9em;
}
.claimable-items__editor {
	-ms-flex: 2;
	    flex: 2;
	background: #f8f9fa;
	padding: 12px;
	border: 1px solid #e0e6ed;
	border-radius: 8px;
}
.claimable-items__editor .row {
    margin-left: 0;
    margin-right: 0;
}
.claimable-items__editor .form-group:last-child {
    margin-bottom: 0;
}
.claimable-items__editor-actions {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: end;
	    justify-content: flex-end;
	gap: 8px;
	border-top: 1px solid #e0e6ed;
	padding-top: 12px;
}
/* =================================================================== */
/* ! Claims list payment state (claim-modal.tmpl.html)
/* -------------------------------------------------------------------
/* Where the money on each claim has got to, from the patient's side -
/* see paymentState() in claimModalController. The summary line sits
/* above the table; the pill sits under the Patient Due amount.
/* =================================================================== */
.claims-outstanding {
	margin-bottom: 1rem;
	padding: 0.75rem 1rem;
	border: 1px solid rgba(255, 193, 7, 0.7);
	border-radius: 12px;
	background-color: rgba(255, 243, 205, 0.9);
	color: #856404;
}
/* Money owed back to the patient rather than by them, so not the
	   warning colours of the line above. */
.claims-outstanding.claims-outstanding--overpaid {
    border-color: rgba(0, 188, 212, 0.4);
    background-color: rgba(0, 188, 212, 0.05);
    color: #008c9e;
}
.claim-payment-pill {
	/* On its own line under the amount, sized to its label. */
	display: block;
	width: -webkit-max-content;
	width: -moz-max-content;
	width: max-content;
	margin-top: 0.25rem;
	padding: 2px 10px;
	border-radius: 20px;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	white-space: nowrap;
	cursor: help;
}
.claim-payment-pill.claim-payment-pill--paid {
    background-color: rgba(32, 201, 151, 0.2);
    color: #2e7d32;
}
.claim-payment-pill.claim-payment-pill--unpaid {
    background-color: rgba(217, 83, 79, 0.15);
    color: #a94442;
}
.claim-payment-pill.claim-payment-pill--cheque {
    background-color: rgba(255, 182, 39, 0.3);
    color: #856404;
}
.claim-payment-pill.claim-payment-pill--funder {
    background-color: #ebecea;
    color: #6c757d;
}
.claim-payment-pill.claim-payment-pill--overpaid {
    background-color: rgba(0, 188, 212, 0.2);
    color: #008c9e;
}
/* =================================================================== */
/* ! Letter sign-off (beneath the letter text, and in Settings -> Profile)
/* =================================================================== */
.sign-off-section {
	margin-top: 16px;
	padding: 12px 16px;
	border: 1px solid #e0e6ed;
	border-radius: 12px;
	background: #f8faff;
}
.sign-off-section .sign-off-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 8px;
}
/* Centre the box on the label; the app-wide .check-span nudge and Bootstrap's input margin
		   otherwise leave them out of line. */
.sign-off-section .sign-off-header .check-label {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin: 0;
    font-weight: 700;
}
.sign-off-section .sign-off-header .check-label input[type="checkbox"] {
    margin: 0;
}
.sign-off-section .sign-off-header .check-label .check-span {
    top: 0;
}
/* The settings pane's inline action, which is scoped to the settings shell. */
.sign-off-section .link-action {
    background: none;
    border: none;
    padding: 0;
    color: #0035d2;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
}
.sign-off-section .link-action i {
    margin-right: 4px;
}
.sign-off-section .link-action:hover {
    text-decoration: underline;
}
.sign-off-section .link-action[disabled] {
    color: #a0a0a0;
    cursor: default;
    text-decoration: none;
}
.sign-off-actions {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: end;
	    justify-content: flex-end;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	gap: 16px;
}
.sign-off-settings .sign-off-actions {
	-ms-flex-pack: justify;
	    justify-content: space-between;
	margin-top: 12px;
}
.sign-off-settings .sign-off-actions .link-action {
    margin-right: auto;
}
.sign-off-status {
	color: #6c757d;
	font-size: 12px;
}
.sign-off-status .fa-check {
    color: #20c997;
}
.sign-off-error {
	color: #a94442;
	font-size: 12px;
}
.sign-off-hint {
	margin: 8px 0;
	color: #6c757d;
	font-size: 12px;
	font-style: italic;
}
.sign-off-editor .note-editor {
    background: #ffffff;
}
/* Gordita, as on the letter screen, where it comes from the form around the editor. Settings has
	   nothing that sets it, so the sign-off fell back to the page font there. */
.sign-off-editor .note-editable {
    font-family: 'Gordita Regular', sans-serif;
}
/* The save icon sits at the far end of the toolbar, away from the formatting buttons. */
.sign-off-editor .note-toolbar .note-save {
    float: right;
    margin-left: auto;
}
/* Read-only: the sign-off as it will sit beneath the letter. Black text and the editor's
	   paragraph spacing, so it reads the same as the editable sign-off and the PDF. */
.sign-off-editor .sign-off-preview {
    min-height: 60px;
    padding: 8px 12px;
    border: 1px dashed #c0cde0;
    border-radius: 8px;
    background: #ffffff;
    color: #000;
}
.sign-off-editor .sign-off-preview p {
    margin: 0 0 10px;
}
.sign-off-editor .sign-off-preview p:last-child {
    margin-bottom: 0;
}
/* =================================================================== */
/* ! Notifications
/* The floating banner, the urgency colours shared with the notification
/* modal, and the admin console. The console is built on the settings
/* modal's shell (.settings-shell in _settings.css, .settings-card,
/* .setting-row and .toggle-switch in _payments.css); only what those
/* do not already cover lives here.
/* =================================================================== */
/* =================================================================== */
/* ! Urgency tones
/* Each tone sets the same three custom properties so every piece below
/* (banner, modal label, pills, preview) is coloured from one place.
/* =================================================================== */
.notice-tone-STANDARD {
	--notice-fg: #2072bb;
	--notice-accent: #2072bb;
	--notice-bg: #eaf2fb;
}
.notice-tone-HIGH {
	--notice-fg: #856404;
	--notice-accent: #FFB627;
	--notice-bg: #fff8e1;
}
.notice-tone-URGENT {
	--notice-fg: #c2410c;
	--notice-accent: #c2410c;
	--notice-bg: #fff1e8;
}
.notice-tone-ERROR {
	--notice-fg: #a94442;
	--notice-accent: #a94442;
	--notice-bg: #fbeceb;
}
/* =================================================================== */
/* ! Floating banner
/* Fixed and out of flow, so it floats over the page instead of pushing
/* it down. The host ignores pointer events so only the card itself
/* blocks clicks on whatever sits beneath it.
/* =================================================================== */
@keyframes notice-banner-in {
	from {
		opacity: 0;
		transform: translateY(-12px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}
@keyframes notice-banner-countdown {
	from {
		transform: scaleX(1);
	}

	to {
		transform: scaleX(0);
	}
}
.notice-banner-host {
	position: fixed;
	top: 16px;
	left: 0;
	right: 0;
	z-index: 10000;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: center;
	    justify-content: center;
	padding: 0 16px;
	pointer-events: none;
}
.notice-banner {
	position: relative;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: start;
	    align-items: flex-start;
	gap: 12px;
	width: 100%;
	max-width: 720px;
	padding: 14px 44px 14px 16px;
	background-color: var(--notice-bg);
	border: 1px solid #e0e6ed;
	border-left: 4px solid var(--notice-accent);
	border-radius: 12px;
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
	color: #333333;
	text-align: left;
	overflow: hidden;
	pointer-events: auto;
	animation: notice-banner-in 0.25s ease-out;
}
.notice-banner .notice-banner-icon {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 18px;
    line-height: 20px;
    color: var(--notice-fg);
}
.notice-banner .notice-banner-body {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 14px;
    line-height: 20px;
}
.notice-banner .notice-banner-body p {
    margin: 0;
}
.notice-banner .notice-banner-title {
    display: block;
    font-weight: 700;
    color: var(--notice-fg);
}
.notice-banner .notice-banner-close {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 28px;
    height: 28px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: #6c757d;
    cursor: pointer;
}
.notice-banner .notice-banner-close:hover, .notice-banner .notice-banner-close:focus {
    background-color: rgba(0, 0, 0, 0.1);
    color: #333333;
    outline: 0;
}
/* Shrinks over the banner's lifetime so users can see it will go away on its own. */
.notice-banner .notice-banner-countdown {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 3px;
    background-color: var(--notice-accent);
    opacity: 0.5;
    transform-origin: left;
    animation-name: notice-banner-countdown;
    animation-timing-function: linear;
    animation-fill-mode: forwards;
}
/* =================================================================== */
/* ! Notification modal urgency label
/* =================================================================== */
.notice-modal-label {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 6px;
	margin: 0 0 4px;
	padding: 4px 12px;
	border-radius: 999px;
	background-color: var(--notice-bg);
	color: var(--notice-fg);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
/* =================================================================== */
/* ! Admin console
/* Scoped under .settings-shell.notification-console so these sit on top
/* of the settings styles without changing them anywhere else.
/* =================================================================== */
.settings-shell.notification-console {
	/* The settings modal gets its height from the dialog; on a page it needs its own. */
	height: calc(100vh - 220px);
	min-height: 620px;
	border: 1px solid #e0e6ed;
	border-radius: 12px;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
	overflow: hidden;
}
.settings-shell.notification-console .settings-avatar i {
    font-size: 16px;
}
/* .settings-pane hands its height to one child; this one splits it into the tab bar and the view. */
.settings-shell.notification-console .nc-pane, .settings-shell.notification-console .nc-view {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
/* ! Status tabs - the rail's .settings-nav-item, laid out in a row along the top of the pane */
.settings-shell.notification-console .nc-tabbar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    gap: 6px;
    padding: 12px 28px;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
    overflow-x: auto;
}
.settings-shell.notification-console .nc-tabbar .settings-nav-item {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-bottom: 0;
    white-space: nowrap;
}
/* Count on each rail item, styled like the rail's .nav-group-tag */
.settings-shell.notification-console .settings-nav-item .nc-nav-count {
    margin-left: auto;
    min-width: 22px;
    padding: 1px 7px;
    border-radius: 20px;
    background-color: #f8f9fa;
    color: #a3aac0;
    font-size: 10px;
    text-align: center;
}
.settings-shell.notification-console .settings-nav-item.active .nc-nav-count {
    background-color: rgba(255, 255, 255, 0.2);
    color: #ffffff;
}
.settings-shell.notification-console .nc-back {
    margin-top: 12px;
}
.settings-shell.notification-console .card-header-flex {
    gap: 16px;
}
.settings-shell.notification-console .nc-search {
    width: 240px;
    max-width: 100%;
    height: 32px;
    border-radius: 20px;
    font-size: 12px;
}
/* ! Notification rows - .setting-row, recoloured by the row's urgency tone */
.settings-shell.notification-console .nc-item {
    -ms-flex-align: center;
        align-items: center;
    gap: 15px;
}
.settings-shell.notification-console .nc-item .setting-icon {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-right: 0;
    background-color: var(--notice-bg);
    color: var(--notice-fg);
}
.settings-shell.notification-console .nc-item .setting-content {
    min-width: 0;
}
.settings-shell.notification-console .nc-item .chip-list {
    gap: 6px;
    margin: 8px 0 6px;
}
.settings-shell.notification-console .nc-item.is-muted .setting-icon, .settings-shell.notification-console .nc-item.is-muted .setting-content {
    opacity: 0.6;
}
.settings-shell.notification-console .nc-item-title {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    color: #333333;
}
.settings-shell.notification-console .nc-item-message {
    margin-top: 2px;
    font-size: 12.5px;
    color: #878ba0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.notification-console .nc-item-message p {
    display: inline;
    margin: 0;
}
/* Viewer count, set apart from the row like the numbers in .detail-value */
.settings-shell.notification-console .nc-seen {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 92px;
    padding: 0 12px;
    border-left: 1px dashed #e0e6ed;
    border-right: 1px dashed #e0e6ed;
    text-align: center;
}
.settings-shell.notification-console .nc-seen strong {
    display: block;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    line-height: 1.2;
    color: #0035d2;
}
.settings-shell.notification-console .nc-seen span {
    display: block;
    font-size: 10px;
    line-height: 1.3;
    color: #a3aac0;
}
.settings-shell.notification-console .nc-item-actions {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.settings-shell.notification-console .nc-item-actions .toggle-switch {
    margin: 0;
}
/* Status chips - success green, the brand navy, and the settings caution amber */
.settings-shell.notification-console .chip.nc-status.status-live {
    background-color: rgba(32, 201, 151, 0.1);
    border-color: rgba(32, 201, 151, 0.3);
    color: rgb(23, 150, 112);
}
.settings-shell.notification-console .chip.nc-status.status-scheduled {
    background-color: #e7f0ff;
}
.settings-shell.notification-console .chip.nc-status.status-paused {
    background-color: #fff8e6;
    border-color: rgba(255, 171, 0, 0.3);
    color: #856404;
}
.settings-shell.notification-console .chip.nc-status.status-ended {
    background-color: #f8f9fa;
    border-color: #e0e6ed;
    color: #a3aac0;
}
/* Urgency chips take their colour from the urgency tone */
.settings-shell.notification-console .chip.nc-tone-chip {
    background-color: var(--notice-bg);
    border-color: var(--notice-accent);
    color: var(--notice-fg);
}
.settings-shell.notification-console .chip-select.nc-tone-chip i {
    color: var(--notice-fg);
}
.settings-shell.notification-console .chip-select.nc-tone-chip.selected {
    background-color: var(--notice-bg);
    border-color: var(--notice-accent);
    color: var(--notice-fg);
}
/* .chip-select is written for a <label>; as a <button> it needs the font back */
.settings-shell.notification-console button.chip-select {
    font-family: inherit;
}
.settings-shell.notification-console .nc-more {
    padding-top: 14px;
    text-align: center;
}
.settings-shell.notification-console .nc-char-count {
    float: right;
    font-weight: 400;
    font-size: 11px;
    color: #a3aac0;
}
.settings-shell.notification-console .nc-presets {
    gap: 6px;
    margin-top: 8px;
}
.settings-shell.notification-console .nc-presets .chip-select {
    padding: 4px 11px;
    font-size: 11px;
}
/* ! Compose: the form scrolls on the left; the preview has its own column so it
	   stays in view for the whole form. */
.settings-shell.notification-console .nc-view.nc-compose {
    -ms-flex-direction: row;
        flex-direction: row;
}
.settings-shell.notification-console .nc-compose-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
.settings-shell.notification-console .nc-preview-pane {
    -ms-flex: 0 0 360px;
        flex: 0 0 360px;
    width: 360px;
    padding: 24px 24px 24px 0;
    overflow-y: auto;
}
.settings-shell.notification-console .settings-notice {
    margin: 20px 0 0;
}
/* The real banner is fixed to the viewport; here it sits in the card. */
.settings-shell.notification-console .nc-preview .notice-banner {
    animation: none;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
    margin-bottom: 16px;
}
/* Hosts the real modal template in flow: cancels Bootstrap's full-screen .modal and the
		   centring on .modal-center, and leaves the modal's own look untouched. */
.settings-shell.notification-console .nc-preview .nc-preview-modal-frame {
    margin-bottom: 16px;
    pointer-events: none;
}
.settings-shell.notification-console .nc-preview .nc-preview-modal-frame .modal {
    position: relative;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    z-index: auto;
    display: block;
    overflow: visible;
}
.settings-shell.notification-console .nc-preview .nc-preview-modal-frame .modal-dialog, .settings-shell.notification-console .nc-preview .nc-preview-modal-frame .modal-dialog.modal-center {
    position: relative;
    top: auto;
    left: auto;
    transform: none;
    width: auto;
    margin: 0;
}
.settings-shell.notification-console .nc-preview .nc-preview-modal-frame .modal-content {
    border: 1px solid #e0e6ed;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
}
.settings-shell.notification-console .nc-preview .detail-row {
    min-height: 0;
    padding: 9px 0;
}
.settings-shell.notification-console .nc-preview .detail-row .detail-label {
    -ms-flex-preferred-size: 90px;
        flex-basis: 90px;
    width: 90px;
}
.settings-shell.notification-console .nc-preview .detail-row .detail-value {
    font-size: 13px;
}
@media (max-width: 900px) {
    .settings-shell.notification-console {
        height: auto;
    }
    .settings-shell.notification-console .nc-item {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }
    .settings-shell.notification-console .nc-item-actions {
        -ms-flex-direction: row;
            flex-direction: row;
    }
    .settings-shell.notification-console .nc-seen {
        border: none;
        text-align: left;
        padding: 0;
    }
    .settings-shell.notification-console .nc-tabbar {
        padding: 10px 16px;
    }
    .settings-shell.notification-console .nc-view.nc-compose {
        -ms-flex-direction: column;
            flex-direction: column;
        overflow-y: auto;
    }
    .settings-shell.notification-console .nc-compose-main {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    }
    .settings-shell.notification-console .nc-preview-pane {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        width: 100%;
        padding: 0 16px 16px;
        overflow: visible;
    }
}
/* =================================================================== */
/* ! Lens dispensing
/* The job dialog sits inside .settings-shell so it inherits the settings
/* modal's cards, chips, notices and action bar (_settings.css,
/* _payments.css). Only what is new is defined here.
/* =================================================================== */
/* Contact lens jobs are tagged teal so they read apart from glasses at a glance */
/* --- Shared art --- */
lens-frame-art, lens-design-art {
	display: block;
}
.lens-frame-art {
	display: block;
	width: 100%;
	height: auto;
	overflow: visible;
}
.lens-frame-art path {
    transition: fill 0.25s ease, stroke 0.25s ease, fill-opacity 0.25s ease;
}
.lens-design-art {
	display: block;
	width: 74px;
	height: 74px;
	-ms-flex-negative: 0;
	    flex-shrink: 0;
}
/* =================================================================== */
/* ! Dashboard module
/* =================================================================== */
.lens-module .lens-module-count {
    margin-right: 1.2em;
    font-size: 11px;
    font-weight: 700;
    color: #0035d2;
    background-color: #e7f0ff;
    padding: 3px 10px;
    border-radius: 20px;
}
.lens-module .lens-job-list {
    padding: 6px 0.8em 12px;
    max-height: 32em;
    overflow-y: auto;
}
.lens-module .lens-empty {
    text-align: center;
    padding: 24px 0 16px;
    color: #a3aac0;
}
.lens-module .lens-empty i {
    font-size: 26px;
    display: block;
    margin-bottom: 6px;
}
.lens-module .lens-empty a {
    color: #0035d2;
    font-weight: 600;
}
.lens-module .lens-job {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 12px 12px;
    margin-top: 6px;
    border-radius: 12px;
    border: 1px solid #e0e6ed;
    border-left: 4px solid #0035d2;
    background-color: #ffffff;
    cursor: pointer;
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.lens-module .lens-job:hover {
    box-shadow: 0 6px 18px rgba(0, 53, 210, 0.1);
    transform: translateY(-1px);
}
.lens-module .lens-job.status-quote {
    border-left-color: #a3aac0;
}
.lens-module .lens-job.status-invoiced {
    border-left-color: #FFB627;
}
.lens-module .lens-job.status-ordered, .lens-module .lens-job.status-in-production {
    border-left-color: #00bcd4;
}
.lens-module .lens-job.status-received {
    border-left-color: #20c997;
}
.lens-module .lens-job.status-collected {
    border-left-color: #c0cde0;
    opacity: 0.8;
}
/* Invoiced, issued or withdrawn: locked, so the row doesn't open - only its actions do */
.lens-module .lens-job.lens-job-locked {
    cursor: default;
}
.lens-module .lens-job.lens-job-locked:hover {
    box-shadow: none;
    transform: none;
}
.lens-module .lens-job-thumb {
    -ms-flex: 0 0 96px;
        flex: 0 0 96px;
    padding: 10px 6px;
    border-radius: 10px;
    background-color: #f4f7fe;
}
/* The image with what the row is and where it's up to beneath it, leaving the text the width (both tiles) */
.lens-module .lens-job-side {
    -ms-flex: 0 0 96px;
        flex: 0 0 96px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.lens-module .lens-job-side .lens-job-thumb {
    -ms-flex: none;
        flex: none;
    width: 100%;
}
/* A long one ("Multifocal glasses", "Ready to collect") takes two lines, not more of the row */
.lens-module .lens-job-side .lens-type-tag, .lens-module .lens-job-side .lens-status-pill, .lens-module .lens-job-side .lens-rx-pill {
    max-width: 100%;
    white-space: normal;
    text-align: center;
    line-height: 1.25;
    border-radius: 10px;
}
/* Just enough for "Spectacle Rx" and "Contacts Rx" on one line */
.lens-module .lens-job-side .lens-type-tag {
    padding: 2px 6px;
    letter-spacing: 0.04em;
}
.lens-module .lens-job-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-module .lens-job-top {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
}
.lens-module .lens-job-number {
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
    font-size: 13px;
}
.lens-module .lens-job-total {
    margin-left: auto;
    font-family: 'Gordita Bold', sans-serif;
    color: #0a2540;
    font-size: 14px;
}
/* Wraps, so a long frame or lens name is read in full */
.lens-module .lens-job-desc {
    font-size: 12px;
    color: #343a40;
    margin-top: 3px;
    overflow-wrap: anywhere;
}
.lens-module .lens-job-meta {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 14px;
    margin-top: 6px;
    font-size: 11px;
    color: #878ba0;
}
.lens-module .lens-job-meta i {
    margin-right: 3px;
    color: #a3aac0;
}
.lens-module .lens-job-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 6px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.lens-module .lens-action-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
    padding: 6px 11px;
    border-radius: 20px;
    border: 1px dashed rgba(255, 193, 7, 0.7);
    background-color: #fff8e1;
    color: #856404;
    transition: all 0.15s ease;
}
.lens-module .lens-action-btn:hover:not([disabled]) {
    background-color: rgba(255, 182, 39, 0.3);
}
.lens-module .lens-action-btn[disabled] {
    opacity: 0.6;
}
.lens-module .lens-action-btn.primary {
    border: 1px solid rgba(0, 53, 210, 0.25);
    background-color: #e7f0ff;
    color: #0035d2;
}
.lens-module .lens-job-remove {
    color: #a3aac0;
    font-size: 13px;
}
.lens-module .lens-job-remove:hover {
    color: #d9534f;
}
/* Progress track: one segment per stage after the quote */
.lens-module .lens-track {
    display: -ms-flexbox;
    display: flex;
    gap: 4px;
    margin-top: 9px;
}
.lens-module .lens-track-step {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-module .lens-track-step .lens-track-bar {
    display: block;
    height: 5px;
    border-radius: 3px;
    background-color: #eef1f7;
}
.lens-module .lens-track-step .lens-track-label {
    display: block;
    margin-top: 3px;
    font-size: 9.5px;
    color: #a3aac0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.lens-module .lens-track-step.done .lens-track-bar {
    background-color: #0035d2;
}
.lens-module .lens-track-step.current .lens-track-bar {
    background: linear-gradient(90deg, #0035d2 0%, #00bcd4 100%);
    animation: lens-pulse 1.6s ease-in-out infinite;
}
.lens-module .lens-track-step.current .lens-track-label {
    color: #0035d2;
    font-weight: 700;
}
@keyframes lens-pulse {
	0%, 100% {
		opacity: 1;
	}

	50% {
		opacity: 0.55;
	}
}
/* Status pill - used on the dashboard and in the dialog */
.lens-status-pill {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 5px;
	font-size: 10.5px;
	font-weight: 700;
	padding: 3px 9px;
	border-radius: 20px;
	white-space: nowrap;
	background-color: #e7f0ff;
	color: #0035d2;
}
.lens-status-pill.status-quote {
    background-color: #f8f9fa;
    color: #878ba0;
}
.lens-status-pill.status-invoiced {
    background-color: #fff8e1;
    color: #856404;
}
.lens-status-pill.status-ordered, .lens-status-pill.status-in-production {
    background-color: rgba(0, 188, 212, 0.1);
    color: #008c9e;
}
.lens-status-pill.status-received {
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
}
.lens-status-pill.status-collected {
    background-color: #f8f9fa;
    color: #878ba0;
}
/* =================================================================== */
/* ! Practice job list (nav bar)
/* The content carries .lens-module too, for the dashboard's buttons,
/* thumbnails and empty state.
/* =================================================================== */
.lens-jobs-dialog .lens-jobs-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin: 12px 1.5em 6px;
}
.lens-jobs-dialog .lens-jobs-stages {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
}
.lens-jobs-dialog .lens-stage-chip {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    font-size: 11.5px;
    font-weight: 600;
    padding: 5px 12px;
    border-radius: 20px;
    border: 1px solid #e0e6ed;
    background-color: #ffffff;
    color: #343a40;
    transition: all 0.15s ease;
}
.lens-jobs-dialog .lens-stage-chip b {
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
}
.lens-jobs-dialog .lens-stage-chip:hover:not([disabled]) {
    border-color: #0035d2;
}
.lens-jobs-dialog .lens-stage-chip[disabled] {
    opacity: 0.45;
}
.lens-jobs-dialog .lens-stage-chip.selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
    color: #0035d2;
}
.lens-jobs-dialog .lens-stage-chip.overdue {
    color: #d9534f;
}
.lens-jobs-dialog .lens-stage-chip.overdue b {
    color: #d9534f;
}
.lens-jobs-dialog .lens-stage-chip.overdue.selected, .lens-jobs-dialog .lens-stage-chip.overdue:hover {
    border-color: #d9534f;
    background-color: rgba(217, 83, 79, 0.15);
}
.lens-jobs-dialog .lens-jobs-search {
    position: relative;
    width: 280px;
}
.lens-jobs-dialog .lens-jobs-search i {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    color: #a3aac0;
}
.lens-jobs-dialog .lens-jobs-search input {
    padding-left: 32px;
    border-radius: 20px;
}
/* The dialog is a fixed height; the job list fills what is left and scrolls on its own */
.lens-jobs-dialog .lens-jobs-body {
    overflow: hidden;
}
.lens-jobs-dialog .lens-jobs-scroll {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    min-height: 0;
    overflow-y: auto;
    margin: 6px 1.5em 0;
}
.lens-jobs-dialog .lens-jobs-scroll .lens-empty {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.lens-jobs-dialog .lens-jobs-table {
    margin: 0 0 1.5em;
    width: 100%;
    font-size: 12.5px;
}
.lens-jobs-dialog .lens-jobs-table th {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 1;
    background-color: #ffffff;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #878ba0;
    border-bottom: 1px solid #e0e6ed;
    white-space: nowrap;
}
.lens-jobs-dialog .lens-jobs-table th .fa {
    margin-left: 3px;
    color: #a3aac0;
}
.lens-jobs-dialog .lens-jobs-table td {
    vertical-align: middle;
    border-top: 1px solid #eef1f7;
}
.lens-jobs-dialog .lens-jobs-table tbody tr {
    border-left: 4px solid transparent;
    transition: background-color 0.15s ease;
}
.lens-jobs-dialog .lens-jobs-table tbody tr:hover {
    background-color: #f4f7fe;
}
.lens-jobs-dialog .lens-jobs-table tbody tr.status-received {
    border-left-color: #20c997;
}
.lens-jobs-dialog .lens-jobs-table tbody tr.status-ordered, .lens-jobs-dialog .lens-jobs-table tbody tr.status-in-production {
    border-left-color: #00bcd4;
}
.lens-jobs-dialog .lens-jobs-table tbody tr.status-invoiced {
    border-left-color: #FFB627;
}
.lens-jobs-dialog .lens-jobs-table tbody tr.status-collected {
    opacity: 0.85;
}
.lens-jobs-dialog .lens-jobs-sub {
    font-size: 11px;
    color: #878ba0;
}
.lens-jobs-dialog .lens-jobs-patient {
    color: #0035d2;
    font-weight: 600;
    text-decoration: underline;
}
.lens-jobs-dialog .lens-current-tag {
    margin-left: 6px;
    font-size: 9.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 2px 7px;
    border-radius: 20px;
    background-color: #f8f9fa;
    color: #878ba0;
}
.lens-jobs-dialog .lens-current-tag {
    background-color: #e7f0ff;
    color: #0035d2;
}
.lens-jobs-dialog .lens-jobs-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    min-width: 0;
}
.lens-jobs-dialog .lens-jobs-item .lens-job-thumb {
    -ms-flex: 0 0 64px;
        flex: 0 0 64px;
    padding: 6px 4px;
}
.lens-jobs-dialog .lens-jobs-item .lens-job-desc {
    margin-top: 0;
    white-space: normal;
}
.lens-jobs-dialog .lens-jobs-date {
    white-space: nowrap;
}
.lens-jobs-dialog .lens-jobs-date.overdue {
    color: #d9534f;
}
.lens-jobs-dialog .lens-jobs-date.overdue .lens-jobs-sub {
    color: #d9534f;
}
.lens-jobs-dialog .lens-jobs-actions {
    white-space: nowrap;
}
/* =================================================================== */
/* ! Job dialog
/* =================================================================== */
.lens-dialog .lens-shell {
    position: relative;
}
/* The job ticket gets a little more room than the settings rail */
.lens-dialog .lens-shell .settings-nav.lens-ticket {
    -ms-flex: 0 0 300px;
        flex: 0 0 300px;
    width: 300px;
}
.lens-dialog .lens-pane {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
.lens-dialog .lens-fieldset {
    border: 0;
    padding: 0;
    margin: 0;
    min-width: 0;
}
.lens-dialog .lens-step-view {
    animation: lens-fade-in 0.28s ease both;
}
/* Ticket (left rail)
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-ticket-preview {
    margin: 16px 18px 6px;
    padding: 18px 16px;
    border-radius: 12px;
    background: linear-gradient(160deg, #f4f7fe 0%, #e7f0ff 100%);
    min-height: 104px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.lens-dialog .lens-ticket-preview lens-frame-art {
    width: 100%;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-ticket-placeholder {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    color: #a3aac0;
    font-size: 11px;
}
.lens-dialog .lens-ticket-placeholder i {
    font-size: 24px;
}
.lens-dialog .lens-steps {
    padding: 10px 12px;
}
.lens-dialog .lens-step {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 11px;
    padding: 10px 10px;
    margin-bottom: 3px;
    border-radius: 10px;
    cursor: pointer;
    transition: background-color 0.15s ease;
}
.lens-dialog .lens-step:hover {
    background-color: #f4f7fe;
}
.lens-dialog .lens-step .lens-step-marker {
    width: 26px;
    height: 26px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    border: 2px solid #e0e6ed;
    color: #a3aac0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 11px;
    font-weight: 700;
    background-color: #ffffff;
    transition: all 0.2s ease;
}
.lens-dialog .lens-step .lens-step-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-step .lens-step-label {
    font-size: 13px;
    font-weight: 600;
    color: #4a5568;
}
.lens-dialog .lens-step .lens-step-summary {
    font-size: 11px;
    color: #a3aac0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.lens-dialog .lens-step .lens-step-price {
    font-size: 12px;
    font-weight: 700;
    color: #0a2540;
}
.lens-dialog .lens-step.done .lens-step-marker {
    border-color: #20c997;
    background-color: #20c997;
    color: #ffffff;
}
.lens-dialog .lens-step.done .lens-step-summary {
    color: #878ba0;
}
.lens-dialog .lens-step.active {
    background-color: #0035d2;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.2);
}
.lens-dialog .lens-step.active .lens-step-marker {
    border-color: #ffffff;
    background-color: #ffffff;
    color: #0035d2;
}
.lens-dialog .lens-step.active .lens-step-label, .lens-dialog .lens-step.active .lens-step-price {
    color: #ffffff;
}
.lens-dialog .lens-step.active .lens-step-summary {
    color: rgba(255, 255, 255, 0.75);
}
.lens-dialog .lens-ticket-total {
    margin-top: auto;
    padding: 16px 20px 20px;
    border-top: 1px solid #eef1f7;
}
.lens-dialog .lens-ticket-total .footer-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
    font-weight: 700;
}
.lens-dialog .lens-progress {
    height: 6px;
    border-radius: 3px;
    background-color: #eef1f7;
    overflow: hidden;
    margin-bottom: 14px;
}
.lens-dialog .lens-progress .lens-progress-bar {
    height: 100%;
    border-radius: 3px;
    background: linear-gradient(90deg, #0035d2 0%, #00bcd4 100%);
    transition: width 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
/* Frame trace card (frame step and lab order)
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-tracer-card {
    margin-bottom: 16px;
}
.lens-dialog .lens-tracer-card h4 .fa {
    margin-right: 6px;
    color: #0035d2;
}
.lens-dialog .lens-tracer-card > .lens-label:not(.lens-trace-heading) {
    margin-top: 0;
}
/* "Edit extras & prices", beside the extras step's description */
.lens-dialog .lens-edit-extras {
    margin-left: 8px;
    white-space: nowrap;
    font-weight: 600;
    color: #0035d2;
}
/* The patient's own frame: description, colour, shape and fitting charge */
.lens-dialog .lens-own-frame-fields {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: minmax(0, 2fr) (minmax(0, 1fr))[3];
        grid-template-columns: minmax(0, 2fr) repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 8px;
}
.lens-dialog .lens-own-frame-fields label {
    margin: 0;
    font-weight: normal;
}
.lens-dialog .lens-own-frame-fields label span {
    display: block;
    margin-bottom: 4px;
    font-size: 11px;
    color: #878ba0;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-own-frame-help {
    margin: 0 0 16px;
}
/* A made-to-order contact lens: its name and lab get the room */
.lens-dialog .cl-made-fields {
    -ms-grid-columns: (minmax(0, 2fr))[2] (minmax(0, 1fr))[3];
        grid-template-columns: repeat(2, minmax(0, 2fr)) repeat(3, minmax(0, 1fr));
}
.lens-dialog .cl-made-tile .cl-tile-art {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    color: #0035d2;
    font-size: 30px;
    background-color: #e7f0ff;
}
.lens-dialog .cl-lab-notes {
    margin-bottom: 10px;
}
/* Send order, in the job's order card once it is invoiced */
.lens-dialog .lens-order-send {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px 12px;
    margin: 4px 0 12px;
}
.lens-dialog .lens-order-send .btn {
    width: auto;
    max-width: none;
    margin: 0;
    white-space: nowrap;
}
.lens-dialog .lens-order-send .field-help {
    margin: 0;
}
.lens-dialog .lens-order-hint {
    margin: 0 0 10px;
}
/* The first label in a card sits under its header - not under the old global .lens-label margin */
.lens-dialog .settings-card > .card-header-flex + .lens-label {
    margin-top: 0;
}
.lens-dialog .lens-own-frame-tile .lens-tile-art {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    color: #0035d2;
    font-size: 34px;
    background-color: #e7f0ff;
}
/* The chosen frame's eye, bridge and temple sizes */
.lens-dialog .lens-frame-size {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 120px))[3];
        grid-template-columns: repeat(3, minmax(0, 120px));
    gap: 12px;
    margin: 6px 0 4px;
}
.lens-dialog .lens-frame-size label {
    margin: 0;
    font-weight: normal;
}
.lens-dialog .lens-frame-size label span {
    display: block;
    margin-bottom: 4px;
    font-size: 11px;
    color: #878ba0;
}
.lens-dialog .lens-frame-size .form-control {
    text-align: center;
}
.lens-dialog .lens-trace-heading {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid #eef1f7;
}
.lens-dialog .lens-trace-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[3];
        grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px 16px;
}
.lens-dialog .lens-trace-grid .lens-label {
    margin-bottom: 2px;
}
.lens-dialog .lens-trace-grid b {
    color: #0a2540;
    font-size: 13px;
}
.lens-dialog .lens-tracer-hint {
    margin: 0 0 12px;
    font-size: 12.5px;
    color: #343a40;
}
/* Box measurements typed from the tracer's readout */
.lens-dialog .lens-trace-form .field-grid {
    -ms-grid-columns: (minmax(0, 1fr))[5];
        grid-template-columns: repeat(5, minmax(0, 1fr));
}
.lens-dialog .lens-tracer-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    margin-top: 12px;
}
.lens-dialog .lens-tracer-remove {
    font-size: 12px;
    color: #878ba0;
}
.lens-dialog .lens-tracer-remove:hover {
    color: #d9534f;
}
/* "Import a new file": a label so the hidden file input opens on click, sized like its neighbours */
.lens-dialog .lens-trace-import {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin: 0;
    font-weight: inherit;
    cursor: pointer;
}
.lens-dialog .lens-trace-import input[type="file"] {
    display: none;
}
/* No trace yet: drop the tracer's file here, or click to choose it */
.lens-dialog .lens-trace-drop {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    width: 100%;
    max-width: none;
    margin: 0 0 10px;
    padding: 18px 16px;
    border: 1.5px dashed #c0cde0;
    border-radius: 12px;
    background-color: #f4f7fe;
    font-weight: normal;
    text-align: center;
    cursor: pointer;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
.lens-dialog .lens-trace-drop:hover, .lens-dialog .lens-trace-drop.over {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.lens-dialog .lens-trace-drop input[type="file"] {
    display: none;
}
.lens-dialog .lens-trace-drop-icon {
    font-size: 20px;
    color: #0035d2;
}
.lens-dialog .lens-trace-drop-title {
    font-size: 13.5px;
    font-weight: 600;
    color: #0a2540;
}
.lens-dialog .lens-trace-drop-hint {
    font-size: 12px;
    color: #878ba0;
}
.lens-dialog .lens-trace-drop-hint u {
    color: #0035d2;
}
.lens-dialog .lens-trace-error {
    margin: 10px 0 0;
    font-size: 12.5px;
    color: #d9534f;
}
/* The imported outline, both lenses to scale */
.lens-dialog .lens-trace-preview {
    margin: 12px 0 4px;
    padding: 10px 12px 6px;
    border: 1px solid #eef1f7;
    border-radius: 12px;
    background: #f4f7fe;
}
.lens-dialog .lens-trace-preview svg {
    display: block;
    width: 100%;
    max-width: 420px;
    height: 120px;
    margin: 0 auto;
}
.lens-dialog .lens-trace-preview figcaption {
    margin-top: 4px;
    text-align: center;
    font-size: 11.5px;
    color: #878ba0;
}
.lens-dialog .lens-trace-shape {
    fill: #ffffff;
    stroke: #0035d2;
    stroke-width: 0.35;
    stroke-linejoin: round;
}
.lens-dialog .lens-trace-datum {
    stroke: #a3aac0;
    stroke-width: 0.2;
    stroke-dasharray: 1 1;
}
.lens-dialog .lens-trace-side {
    font-size: 4px;
    font-weight: 600;
    text-anchor: middle;
    fill: #878ba0;
}
.lens-dialog .lens-muted-value {
    color: #878ba0;
}
.lens-dialog .lens-total-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-pack: justify;
        justify-content: space-between;
    font-size: 12px;
    color: #343a40;
}
.lens-dialog .lens-total-row.muted {
    color: #878ba0;
    font-size: 11px;
}
.lens-dialog .lens-total-value {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 24px;
    color: #0035d2;
    letter-spacing: -0.02em;
}
/* Shared bits
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-label {
    display: block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
    margin-bottom: 6px;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    margin-bottom: 10px;
}
.lens-dialog .lens-search {
    -ms-flex: 0 1 300px;
        flex: 0 1 300px;
    margin: 0;
}
.lens-dialog .lens-chip-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
}
.lens-dialog .lens-chip-row .chip-select {
    padding: 6px 13px;
}
.lens-dialog .lens-shape-row {
    margin-bottom: 18px;
}
.lens-dialog .lens-suggest-star {
    color: #FFB627;
    font-size: 10px;
}
.lens-dialog .lens-notice {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
}
.lens-dialog .lens-notice > span {
    -ms-flex: 1;
        flex: 1;
}
.lens-dialog .lens-notice.success {
    background-color: rgba(32, 201, 151, 0.08);
    border-color: rgba(32, 201, 151, 0.3);
    color: #2e7d32;
}
.lens-dialog .lens-mini-btn {
    width: auto;
    margin: 0;
    padding: 4px 12px;
    font-size: 12px;
}
.lens-dialog .lens-right {
    text-align: right;
    -ms-flex-pack: end;
        justify-content: flex-end;
}
.lens-dialog .settings-card + .settings-card, .lens-dialog .settings-card + .lens-trace-section {
    margin-top: 16px;
}
/* Tiles (frames & lenses)
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(220px, 1fr))[auto-fill];
        grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 16px;
}
.lens-dialog .lens-grid.lens-grid-wide {
    margin-top: 18px;
    -ms-grid-columns: (minmax(330px, 1fr))[auto-fill];
        grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-load-more {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    margin-top: 18px;
}
.lens-dialog .lens-tile {
    position: relative;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background-color: #ffffff;
    border-radius: 12px;
    border: 2px solid transparent;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    cursor: pointer;
    overflow: hidden;
    transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}
.lens-dialog .lens-tile:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(0, 53, 210, 0.12);
}
.lens-dialog .lens-tile.selected {
    border-color: #0035d2;
    box-shadow: 0 10px 24px rgba(0, 53, 210, 0.18);
}
.lens-dialog .lens-tile.selected .lens-tile-check {
    transform: scale(1);
    opacity: 1;
}
.lens-dialog .lens-tile .lens-tile-check {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 2;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: #0035d2;
    color: #ffffff;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 11px;
    transform: scale(0.4);
    opacity: 0;
    transition: all 0.2s cubic-bezier(0.22, 1, 0.36, 1);
}
.lens-dialog .lens-tile-art {
    padding: 22px 18px 16px;
    background: linear-gradient(160deg, #f4f7fe 0%, #e7f0ff 100%);
}
.lens-dialog .lens-tile-body {
    padding: 12px 16px 6px;
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-tile-brand {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-weight: 700;
    color: #a3aac0;
}
.lens-dialog .lens-tile-name {
    font-family: 'Gordita Bold', sans-serif;
    color: #0a2540;
    font-size: 14px;
    line-height: 1.3;
}
.lens-dialog .lens-tile-meta {
    font-size: 11px;
    color: #878ba0;
    margin-top: 2px;
}
.lens-dialog .lens-tile-foot {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    padding: 10px 16px 12px;
    border-top: 1px solid #eef1f7;
    margin-top: 8px;
}
.lens-dialog .lens-stock {
    font-size: 11px;
    color: #2e7d32;
}
.lens-dialog .lens-stock.low {
    color: #c2410c;
}
.lens-dialog .lens-stock i {
    margin-right: 3px;
}
.lens-dialog .lens-price {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #0035d2;
}
.lens-dialog .lens-price small {
    font-family: inherit;
    font-size: 10px;
    color: #a3aac0;
}
.lens-dialog .lens-swatches {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-top: 9px;
}
.lens-dialog .lens-swatch {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 2px solid #ffffff;
    box-shadow: 0 0 0 1px #e0e6ed;
    cursor: pointer;
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.lens-dialog .lens-swatch:hover {
    transform: scale(1.12);
}
.lens-dialog .lens-swatch.active {
    box-shadow: 0 0 0 2px #0035d2;
}
.lens-dialog .lens-swatch-name {
    font-size: 11px;
    color: #878ba0;
    margin-left: 2px;
}
/* Lens tiles are a row: diagram then text */
.lens-dialog .lens-option-tile .lens-option-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 4px;
    padding: 28px 16px 0;
}
/* room for the Recommended ribbon */
.lens-dialog .lens-option-tile .lens-option-row .lens-tile-body {
    padding: 0 0 0 10px;
}
.lens-dialog .lens-option-tile.recommended {
    border-color: rgba(255, 182, 39, 0.5);
}
.lens-dialog .lens-option-tile.recommended.selected {
    border-color: #0035d2;
}
.lens-dialog .lens-ribbon {
    position: absolute;
    top: 0;
    left: 16px;
    font-size: 9.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 3px 9px;
    border-radius: 0 0 6px 6px;
    background-color: #FFB627;
    color: #0a2540;
}
.lens-dialog .lens-features {
    margin-top: 8px;
    gap: 5px;
}
.lens-dialog .lens-features .chip {
    font-size: 10px;
    padding: 3px 8px;
}
/* Prescription
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-use-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (1fr)[4];
        grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-use {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 14px 8px;
    border-radius: 10px;
    border: 1.5px solid #e0e6ed;
    color: #4a5568;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s ease;
}
.lens-dialog .lens-use i {
    font-size: 20px;
    color: #a3aac0;
}
.lens-dialog .lens-use:hover {
    border-color: #cbd5e0;
}
.lens-dialog .lens-use.selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
    color: #0035d2;
}
.lens-dialog .lens-use.selected i {
    color: #0035d2;
}
.lens-dialog .lens-use.locked {
    cursor: default;
}
/* A use this prescription has no power for */
.lens-dialog .lens-use.blocked {
    cursor: not-allowed;
    opacity: 0.5;
}
/* What choosing the use does to the powers */
.lens-dialog .lens-use-effect {
    font-size: 10.5px;
    font-weight: 400;
    color: #343a40;
}
.lens-dialog .lens-powers {
    margin-top: 14px;
}
.lens-dialog .lens-powers-same, .lens-dialog .lens-powers-rule {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    font-size: 12.5px;
    color: #343a40;
}
.lens-dialog .lens-powers-same .fa {
    color: #2e7d32;
}
.lens-dialog .lens-powers-rule .fa {
    color: #0035d2;
}
.lens-dialog .lens-powers-table {
    margin-top: 10px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    overflow: hidden;
}
.lens-dialog .lens-powers-table .lens-powers-head, .lens-dialog .lens-powers-table .lens-powers-row {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 150px (minmax(0, 1fr))[4];
        grid-template-columns: 150px repeat(4, minmax(0, 1fr));
    -ms-flex-align: center;
        align-items: center;
    padding: 6px 12px;
    font-size: 12.5px;
}
.lens-dialog .lens-powers-table .lens-powers-head {
    background-color: #f4f7fe;
    font-size: 10.5px;
    font-weight: 700;
    color: #878ba0;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.lens-dialog .lens-powers-table .lens-powers-row {
    border-top: 1px solid #eef1f7;
}
.lens-dialog .lens-powers-table .lens-powers-row.made {
    background-color: #e7f0ff;
    font-weight: 600;
    color: #0035d2;
}
.lens-dialog .lens-powers-table .lens-powers-label small {
    margin-left: 4px;
    font-weight: 400;
    color: #878ba0;
}
/* The values the use changed */
.lens-dialog .lens-powers-table .changed {
    font-weight: 700;
    text-decoration: underline;
    -webkit-text-decoration-color: #00bcd4;
            text-decoration-color: #00bcd4;
    text-underline-offset: 3px;
}
/* The prescribed use, marked among the choices */
.lens-dialog .lens-use-rec {
    font-size: 10px;
    font-weight: 400;
    color: #878ba0;
}
.lens-dialog .lens-use-card {
    margin-bottom: 14px;
}
.lens-dialog .lens-rx-table .lens-rx-head, .lens-dialog .lens-rx-table .lens-rx-row {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 70px (minmax(0, 1fr))[8];
        grid-template-columns: 70px repeat(8, minmax(0, 1fr));
    gap: 8px;
    -ms-flex-align: center;
        align-items: center;
}
/* The prescription step shows the Rx read-only, without the PD and height columns */
.lens-dialog .lens-rx-table.lens-rx-readonly .lens-rx-head, .lens-dialog .lens-rx-table.lens-rx-readonly .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 1fr))[6];
        grid-template-columns: 70px repeat(6, minmax(0, 1fr));
}
/* The measurements step: just the PD and fitting height, measured in the frame */
.lens-dialog .lens-rx-table.lens-measure-table .lens-rx-head, .lens-dialog .lens-rx-table.lens-measure-table .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 160px))[2];
        grid-template-columns: 70px repeat(2, minmax(0, 160px));
}
.lens-dialog .lens-rx-table .lens-rx-head span {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
    text-align: center;
}
.lens-dialog .lens-rx-table .lens-rx-row {
    padding: 8px 0;
    border-bottom: 1px solid #eef1f7;
}
.lens-dialog .lens-rx-table .lens-rx-row:last-child {
    border-bottom: 0;
}
.lens-dialog .lens-rx-table .lens-rx-row .form-control {
    text-align: center;
    padding: 6px 4px;
    height: 36px;
    font-size: 13px;
}
.lens-dialog .lens-rx-table .lens-rx-row .has-error {
    border-color: #d9534f;
    background-color: #fbeceb;
}
.lens-dialog .lens-rx-table .eye {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    color: #0035d2;
    font-size: 13px;
    line-height: 1.2;
}
.lens-dialog .lens-rx-table .eye small {
    color: #a3aac0;
    font-size: 10px;
}
.lens-dialog .lens-rx-hint {
    margin: 10px 0 0;
    color: #c2410c;
}
.lens-dialog .lens-rx-summary {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px 20px;
    margin-top: 12px;
    padding: 10px 14px;
    border-radius: 8px;
    background-color: #f4f7fe;
    font-size: 13px;
    color: #0a2540;
}
.lens-dialog .lens-rx-summary b {
    color: #0035d2;
}
.lens-dialog .lens-rx-extra {
    margin-top: 16px;
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 1fr 1fr;
        grid-template-columns: 1fr 1fr;
    gap: 14px;
}
/* Extras
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-extras-layout {
    display: -ms-flexbox;
    display: flex;
    gap: 20px;
    -ms-flex-align: start;
        align-items: flex-start;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-extras-options {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-extras-preview {
    -ms-flex: 0 0 300px;
        flex: 0 0 300px;
    position: -webkit-sticky;
    position: sticky;
    top: 0;
}
.lens-dialog .lens-preview-stage {
    margin: -25px -25px 16px;
    padding: 34px 26px;
    border-radius: 12px 12px 0 0;
    background: linear-gradient(160deg, #fdfdff 0%, #e7f0ff 60%, #cfe0ff 100%);
}
.lens-dialog .lens-preview-title {
    font-family: 'Gordita Bold', sans-serif;
    color: #0a2540;
    font-size: 14px;
    margin-bottom: 12px;
}
.lens-dialog .lens-preview-lines {
    margin-top: 16px;
    border-top: 1px solid #eef1f7;
    padding-top: 10px;
}
.lens-dialog .lens-preview-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    font-size: 12px;
    color: #343a40;
    padding: 3px 0;
}
.lens-dialog .lens-preview-line.total {
    margin-top: 6px;
    padding-top: 8px;
    border-top: 1px dashed #e0e6ed;
    font-weight: 700;
    color: #0035d2;
}
.lens-dialog .lens-option-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(210px, 1fr))[auto-fill];
        grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
    gap: 10px;
}
.lens-dialog .lens-option-grid.three {
    -ms-grid-columns: (1fr)[3];
        grid-template-columns: repeat(3, 1fr);
}
.lens-dialog .lens-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 11px;
    padding: 11px 13px;
    border-radius: 10px;
    border: 1.5px solid #e0e6ed;
    cursor: pointer;
    transition: all 0.15s ease;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}
.lens-dialog .lens-option > i {
    width: 30px;
    height: 30px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    background-color: #f4f7fe;
    color: #a3aac0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 13px;
}
.lens-dialog .lens-option > div {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 12.5px;
    color: #0a2540;
    line-height: 1.3;
}
.lens-dialog .lens-option > div small {
    display: block;
    font-size: 11px;
    color: #878ba0;
}
.lens-dialog .lens-option .lens-option-price {
    font-size: 11.5px;
    font-weight: 700;
    color: #0035d2;
    white-space: nowrap;
}
.lens-dialog .lens-option:hover {
    border-color: #cbd5e0;
}
.lens-dialog .lens-option.selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.lens-dialog .lens-option.selected > i {
    background-color: #0035d2;
    color: #ffffff;
}
.lens-dialog .lens-option.included {
    cursor: default;
}
.lens-dialog .lens-option.included .lens-option-price {
    color: #2e7d32;
}
.lens-dialog .lens-tint-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
}
.lens-dialog .lens-tint {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    width: 84px;
    padding: 10px 4px 8px;
    border-radius: 10px;
    border: 1.5px solid transparent;
    cursor: pointer;
    transition: all 0.15s ease;
}
.lens-dialog .lens-tint:hover {
    background-color: #f4f7fe;
}
.lens-dialog .lens-tint.selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.lens-dialog .lens-tint-dot {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    box-shadow: inset 0 -6px 12px rgba(0, 0, 0, 0.18), 0 2px 6px rgba(0, 0, 0, 0.08);
}
.lens-dialog .lens-tint-dot.clear {
    background: repeating-linear-gradient(45deg, #ffffff, #ffffff 4px, #eef1f7 4px, #eef1f7 8px);
    box-shadow: inset 0 0 0 1px #e0e6ed;
}
.lens-dialog .lens-tint-dot.mirror:not(.clear) {
    background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.75) 0%, rgba(255, 255, 255, 0) 55%);
}
.lens-dialog .lens-tint-name {
    font-size: 11px;
    font-weight: 600;
    color: #0a2540;
    text-align: center;
    line-height: 1.2;
}
.lens-dialog .lens-tint-price {
    font-size: 10.5px;
    color: #878ba0;
}
.lens-dialog .lens-density {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-top: 14px;
}
.lens-dialog .lens-density .lens-label {
    margin: 0 6px 0 0;
}
.lens-dialog .lens-density .chip-select {
    padding: 5px 12px;
}
/* Order & billing
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-missing-link {
    font-weight: 700;
    text-decoration: underline;
    color: inherit;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-billing-layout {
    display: -ms-flexbox;
    display: flex;
    gap: 20px;
    -ms-flex-align: start;
        align-items: flex-start;
}
.lens-dialog .lens-billing-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-billing-side {
    -ms-flex: 0 0 340px;
        flex: 0 0 340px;
    position: -webkit-sticky;
    position: sticky;
    top: 0;
}
/* On smaller screens the invoice card stops being a side column and the whole step stacks */
@media (max-width: 1100px) {
    .lens-dialog .lens-billing-layout {
        -ms-flex-direction: column;
            flex-direction: column;
    }
    .lens-dialog .lens-billing-side {
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
        width: 100%;
        position: static;
    }
}
/* The lab order reviewed at a glance: one fact per cell, wrapping to the width there is */
.lens-dialog .lens-order-facts {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(150px, 1fr))[auto-fit];
        grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 10px 18px;
    margin-bottom: 12px;
}
.lens-dialog .lens-order-fact {
    min-width: 0;
}
.lens-dialog .lens-order-fact > span {
    display: block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
}
.lens-dialog .lens-order-fact > b {
    display: block;
    font-size: 12.5px;
    color: #0a2540;
    overflow-wrap: break-word;
}
.lens-dialog .lens-order-measures {
    margin-bottom: 10px;
    font-size: 12.5px;
}
.lens-dialog .lens-order-measures a {
    color: #856404;
    font-weight: 600;
}
/* Items added by hand to the invoice (an eye examination, say) */
.lens-dialog .lens-custom-items {
    padding: 8px 0 2px;
    border-top: 1px dashed #eef1f7;
}
.lens-dialog .lens-custom-item-remove {
    margin-right: 6px;
    color: #a3aac0;
}
.lens-dialog .lens-custom-item-remove:hover {
    color: #d9534f;
}
.lens-dialog .lens-custom-add {
    display: -ms-flexbox;
    display: flex;
    gap: 8px;
    margin: 8px 0;
    position: relative;
}
.lens-dialog .lens-custom-add input[type="text"] {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-custom-add input[type="number"] {
    -ms-flex: 0 0 90px;
        flex: 0 0 90px;
}
.lens-dialog .lens-custom-add .lens-mini-btn {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
}
/* The billing item search results (uib-typeahead) */
.lens-dialog .lens-custom-add .dropdown-menu {
    max-height: 240px;
    overflow-y: auto;
}
/* The one-step undo beside a job's next-status button */
.lens-dialog .lens-undo-btn {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
}
.lens-dialog .lens-bill-row {
    padding-top: 9px;
    padding-bottom: 9px;
    margin-bottom: 0;
    border-bottom: 1px solid #eef1f7;
    font-size: 13px;
    color: #0a2540;
}
.lens-dialog .lens-bill-row .col-fee {
    font-weight: 600;
}
.lens-dialog .lens-bill-kind {
    display: inline-block;
    min-width: 46px;
    margin-right: 8px;
    font-size: 9.5px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
}
.lens-dialog .lens-discount {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.lens-dialog .lens-discount > span:first-child {
    margin-right: 6px;
}
.lens-dialog .lens-discount .fee-input {
    width: 110px;
}
.lens-dialog .lens-discount .chip-select {
    padding: 4px 11px;
}
.lens-dialog .lens-bill-totals {
    margin-top: 14px;
    margin-left: auto;
    width: 300px;
    max-width: 100%;
}
.lens-dialog .lens-bill-totals > div {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    font-size: 13px;
    padding: 3px 14px;
    color: #343a40;
}
.lens-dialog .lens-bill-totals > div.muted {
    color: #878ba0;
    font-size: 12px;
}
.lens-dialog .lens-bill-totals > div.grand {
    margin-top: 8px;
    padding: 10px 14px;
    border-radius: 8px;
    background-color: #0035d2;
    color: #ffffff;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
}
.lens-dialog .lens-pay-split {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 1fr 1fr;
        grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-top: 14px;
}
.lens-dialog .lens-pay-split > div {
    padding: 12px 14px;
    border-radius: 8px;
    background-color: #f4f7fe;
}
.lens-dialog .lens-pay-split > div .lens-label {
    margin-bottom: 2px;
}
.lens-dialog .lens-pay-split > div b {
    font-size: 18px;
    color: #0035d2;
}
.lens-dialog .lens-invoice-card.sent {
    box-shadow: 0 0 0 2px rgba(32, 201, 151, 0.4), 0 8px 24px rgba(32, 201, 151, 0.2);
}
/* A little paper invoice */
.lens-dialog .lens-invoice-doc {
    position: relative;
    padding: 18px 18px 14px;
    border-radius: 8px;
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    box-shadow: 0 6px 18px rgba(10, 37, 64, 0.08);
    font-size: 12px;
    color: #343a40;
}
.lens-dialog .lens-invoice-doc::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 4px;
    border-radius: 8px 8px 0 0;
    background: linear-gradient(90deg, #0035d2 0%, #00bcd4 100%);
}
.lens-dialog .lens-invoice-top {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: start;
        align-items: flex-start;
    margin-bottom: 14px;
}
.lens-dialog .lens-invoice-practice {
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
    font-size: 13px;
}
.lens-dialog .lens-invoice-sub {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
}
.lens-dialog .lens-invoice-number {
    text-align: right;
    font-weight: 700;
    color: #0a2540;
}
.lens-dialog .lens-invoice-number small {
    display: block;
    font-weight: 400;
    color: #878ba0;
}
.lens-dialog .lens-invoice-to {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    padding-bottom: 8px;
    margin-bottom: 6px;
    border-bottom: 1px solid #eef1f7;
}
.lens-dialog .lens-invoice-to .lens-label {
    margin: 0;
}
.lens-dialog .lens-invoice-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
    padding: 3px 0;
}
.lens-dialog .lens-invoice-line span:first-child {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lens-dialog .lens-invoice-line.total {
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px solid #e0e6ed;
    font-weight: 700;
    color: #0a2540;
}
.lens-dialog .lens-invoice-line.due {
    color: #0035d2;
    font-weight: 700;
}
.lens-dialog .lens-channel-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
}
.lens-dialog .lens-channel-list .chip-select {
    -ms-flex-pack: start;
        justify-content: flex-start;
    border-radius: 8px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.lens-dialog .lens-sent-flash {
    margin-top: 14px;
    padding: 10px 12px;
    border-radius: 8px;
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
    font-size: 12px;
}
.lens-dialog .lens-send-btn {
    max-width: none !important;/* the action bar caps .btn at 200px; this label is longer */
}
/* Leave prompt
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-confirm-overlay {
    position: absolute;
    inset: 0;
    z-index: 10;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    background-color: rgba(10, 37, 64, 0.2);
    -webkit-backdrop-filter: blur(2px);
            backdrop-filter: blur(2px);
    animation: lens-fade-in 0.2s ease both;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-confirm {
    width: 420px;
    max-width: 90%;
}
.lens-dialog .lens-confirm h4 {
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
    margin-top: 0;
}
.lens-dialog .lens-confirm-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 10px;
    margin-top: 16px;
}
.lens-dialog .lens-confirm-actions .btn {
    width: auto;
    margin: 0;
}
@keyframes lens-fade-in {
	from {
		opacity: 0;
		transform: translateY(6px);
	}

	to {
		opacity: 1;
		transform: none;
	}
}
/* =================================================================== */
/* ! Contact lens pathway
/* Contact lens jobs share the glasses job dialog, tile and job list
/* styling. Only the pieces contacts add are defined here.
/* =================================================================== */
lens-contact-art {
	display: block;
}
.lens-contact-art {
	display: block;
	width: 100%;
	height: auto;
	overflow: visible;
}
.lens-contact-art .lens-contact-eye {
    font-size: 11px;
    font-weight: 700;
    fill: #0035d2;
    fill-opacity: 0.35;
}
/* Glasses / Contacts tag beside the job number */
.lens-type-tag {
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	padding: 2px 8px;
	border-radius: 20px;
	background-color: #e7f0ff;
	color: #0035d2;
}
.lens-type-tag.contacts {
    background-color: #e3f4f1;
    color: #00796b;
}
/* New job: glasses or contacts */
.lens-module .lens-new-picker {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: stretch;
        align-items: stretch;
    gap: 10px;
    margin: 10px 1.2em 4px;
    animation: lens-fade-in 0.2s ease;
}
.lens-module .lens-new-option {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 12px 14px;
    text-align: left;
    border-radius: 10px;
    border: 1.5px solid #e0e6ed;
    background-color: #ffffff;
    transition: all 0.15s ease;
}
.lens-module .lens-new-option > i {
    width: 36px;
    height: 36px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 15px;
}
.lens-module .lens-new-option:last-of-type > i {
    background-color: #e3f4f1;
    color: #00796b;
}
.lens-module .lens-new-option b {
    display: block;
    font-size: 13px;
    color: #0a2540;
}
.lens-module .lens-new-option small {
    display: block;
    font-size: 11px;
    color: #878ba0;
}
.lens-module .lens-new-option:hover {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.lens-module .lens-reorder-due {
    color: #d9534f;
}
.lens-module .lens-reorder-due i {
    color: #d9534f;
}
.lens-jobs-dialog .lens-jobs-number .lens-type-tag {
    margin-left: 6px;
}
/* All / Glasses / Contacts - a segmented control ahead of the stage chips */
.lens-jobs-dialog .lens-jobs-types {
    display: -ms-inline-flexbox;
    display: inline-flex;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    overflow: hidden;
    margin-right: 6px;
}
.lens-jobs-dialog .lens-type-chip {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    font-size: 11.5px;
    font-weight: 600;
    padding: 5px 12px;
    border: 0;
    background-color: #ffffff;
    color: #343a40;
}
.lens-jobs-dialog .lens-type-chip + .lens-type-chip {
    border-left: 1px solid #e0e6ed;
}
.lens-jobs-dialog .lens-type-chip b {
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
}
.lens-jobs-dialog .lens-type-chip:hover {
    background-color: #f4f7fe;
}
.lens-jobs-dialog .lens-type-chip.selected {
    background-color: #0035d2;
    color: #ffffff;
}
.lens-jobs-dialog .lens-type-chip.selected b {
    color: #ffffff;
}
.lens-contacts-dialog .lens-ticket-preview lens-contact-art {
    width: 80%;
    margin: 0 auto;
}
.lens-contacts-dialog .cl-tile-art {
    width: 96px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 8px 4px;
    border-radius: 10px;
    background-color: #f4f7fe;
}
/* The CL Rx has six columns where the glasses Rx has eight */
.lens-contacts-dialog .cl-rx-card .lens-rx-table .lens-rx-head, .lens-contacts-dialog .cl-rx-card .lens-rx-table .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 1fr))[6];
        grid-template-columns: 70px repeat(6, minmax(0, 1fr));
}
.lens-contacts-dialog .cl-rx-card .lens-rx-table select.form-control {
    text-align-last: center;
}
.lens-contacts-dialog .cl-rx-card .lens-rx-table input[readonly] {
    background-color: #f4f7fe;
}
.lens-contacts-dialog .cl-vertex-note {
    margin: 10px 0 0;
    color: #878ba0;
}
.lens-contacts-dialog .cl-trial-card.trialled {
    border-color: #0035d2;
}
/* Boxes per eye */
.lens-contacts-dialog .cl-boxes {
    margin-top: 16px;
}
.lens-contacts-dialog .cl-box-row {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 170px auto 1fr auto;
        grid-template-columns: 170px auto 1fr auto;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    padding: 10px 0;
    border-bottom: 1px solid #eef1f7;
}
.lens-contacts-dialog .cl-box-row:last-child {
    border-bottom: 0;
}
.lens-contacts-dialog .cl-box-row .eye {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    color: #0035d2;
    font-size: 13px;
    line-height: 1.25;
}
.lens-contacts-dialog .cl-box-row .eye small {
    color: #878ba0;
    font-size: 11px;
}
.lens-contacts-dialog .cl-stepper {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
}
.lens-contacts-dialog .cl-stepper .btn {
    width: 30px;
    height: 30px;
    padding: 0;
    font-size: 11px;
}
.lens-contacts-dialog .cl-stepper-value {
    min-width: 34px;
    text-align: center;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #0a2540;
}
.lens-contacts-dialog .cl-box-desc {
    font-size: 12px;
    color: #878ba0;
}
.lens-contacts-dialog .cl-box-price {
    font-family: 'Gordita Bold', sans-serif;
    color: #0a2540;
}
.lens-contacts-dialog .lens-option.disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.lens-contacts-dialog .lens-bill-row.cl-saving .col-fee {
    color: #2e7d32;
}
/* =================================================================== */
/* ! Job notes
/* The popover is moved to <body> (see lensJobNotes.component.js), so
/* these rules are top level rather than nested in the module or dialog.
/* =================================================================== */
lens-job-notes {
	display: inline-block;
}
.lens-jobs-actions lens-job-notes {
	vertical-align: middle;
	margin-right: 6px;
}
.lens-notes-btn {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 5px;
	font-size: 11px;
	font-weight: 600;
	padding: 4px 10px;
	border-radius: 20px;
	border: 1px dashed #e0e6ed;
	background-color: #ffffff;
	color: #a3aac0;
	transition: all 0.15s ease;
}
.lens-notes-btn.has-notes {
    border-style: solid;
    border-color: rgba(255, 193, 7, 0.7);
    background-color: #fff8e1;
    color: #856404;
}
.lens-notes-btn:hover, .lens-notes-btn.open {
    border-color: #0035d2;
    color: #0035d2;
}
.lens-notes-pop {
	position: fixed;
	/* Above md-dialog and its backdrop */
	z-index: 1100;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	max-height: 380px;
	background-color: #ffffff;
	border: 1px solid #e0e6ed;
	border-radius: 10px;
	box-shadow: 0 10px 30px rgba(10, 37, 64, 0.16);
	text-align: left;
	animation: lens-fade-in 0.15s ease;
}
.lens-notes-pop.pinned {
    border-color: #0035d2;
}
.lens-notes-pop .lens-notes-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    padding: 10px 14px;
    border-bottom: 1px solid #eef1f7;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #0035d2;
}
.lens-notes-pop .lens-notes-close {
    color: #a3aac0;
}
.lens-notes-pop .lens-notes-close:hover {
    color: #0035d2;
}
.lens-notes-pop .lens-notes-list {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 4px 14px;
}
.lens-notes-pop .lens-notes-empty {
    padding: 12px 0;
    font-size: 12px;
    color: #878ba0;
}
.lens-notes-pop .lens-note {
    padding: 9px 0;
    border-bottom: 1px solid #eef1f7;
}
.lens-notes-pop .lens-note:last-child {
    border-bottom: 0;
}
.lens-notes-pop .lens-note-meta {
    font-size: 10.5px;
    color: #878ba0;
}
.lens-notes-pop .lens-note-meta b {
    color: #0a2540;
}
.lens-notes-pop .lens-note-text {
    margin-top: 2px;
    font-size: 12.5px;
    line-height: 1.45;
    color: #0a2540;
    white-space: pre-wrap;
    word-wrap: break-word;
}
/* Sits between the header and the newest note */
.lens-notes-pop .lens-notes-add {
    padding: 10px 14px 12px;
    border-bottom: 1px solid #eef1f7;
    background-color: #f4f7fe;
}
.lens-notes-pop .lens-notes-add textarea {
    resize: vertical;
    font-size: 12.5px;
}
.lens-notes-pop .lens-notes-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 8px;
    margin-top: 8px;
}
.lens-notes-pop .lens-notes-actions .btn {
    padding: 4px 12px;
    font-size: 12px;
}
.lens-notes-pop .lens-notes-hint {
    margin-right: auto;
    font-size: 10.5px;
    color: #878ba0;
    line-height: 1.3;
}
/* =================================================================== */
/* ! Hard (made-to-order) contact lenses
/* =================================================================== */
.lens-type-tag.custom {
	background-color: #0a2540;
	color: #ffffff;
}
.lens-contacts-dialog .cl-made-chip {
    background-color: #0a2540;
    color: #ffffff;
}
/* Trial BC, power, DIA, over-refraction sphere, cyl and axis, order power, Use */
.lens-contacts-dialog .cl-trial-rx-card .lens-rx-table .lens-rx-head, .lens-contacts-dialog .cl-trial-rx-card .lens-rx-table .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 1fr))[7] 64px;
        grid-template-columns: 70px repeat(7, minmax(0, 1fr)) 64px;
}
.lens-contacts-dialog .cl-order-power {
    text-align: center;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    color: #0035d2;
}
.lens-contacts-dialog .cl-custom-card .lens-rx-table select.form-control {
    padding: 6px 2px;
    font-size: 12px;
}
/* Lab cost and margin under the billing totals - never on the invoice */
.lens-contacts-dialog .cl-margin {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px 18px;
    margin-top: 12px;
    padding: 8px 12px;
    border-radius: 8px;
    border: 1px dashed #e0e6ed;
    font-size: 11.5px;
    color: #878ba0;
}
.lens-contacts-dialog .cl-margin span:first-child {
    margin-right: auto;
}
.lens-contacts-dialog .cl-margin b {
    color: #2e7d32;
}
/* =================================================================== */
/* ! Floating action bar (job and prescription dialogs)
/* Back, the step dots and the next action float over the bottom of the
/* step, so the form runs underneath it rather than ending at a bar.
/* =================================================================== */
.lens-dialog .lens-pane {
    position: relative;
}
/* Room for the bar under the last card, and a fade so content slides under it */
.lens-dialog .lens-pane .settings-pane-body {
    padding-bottom: 112px;
}
.lens-dialog .lens-pane::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 96px;
    background: linear-gradient(to bottom, transparent, #f4f7fe 70%);
    pointer-events: none;
    z-index: 4;
}
.lens-dialog .settings-action-bar.lens-float-bar {
    position: absolute;
    left: 50%;
    bottom: 18px;
    transform: translateX(-50%);
    z-index: 5;
    width: min(820px, calc(100% - 48px));
    gap: 10px;
    padding: 10px 10px 10px 14px;
    border: 1px solid #e0e6ed;
    border-radius: 18px;
    background-color: rgba(255, 255, 255, 0.9);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    box-shadow: 0 12px 32px rgba(10, 37, 64, 0.16), 0 2px 6px rgba(10, 37, 64, 0.06);
}
/* ngAnimate waits out an element's CSS transition before it adds or removes it, so the
		   buttons' hover transitions held a leaving button beside the one replacing it and held
		   the new one back. Buttons here appear and go instantly. */
.lens-dialog .settings-action-bar.lens-float-bar .ng-enter, .lens-dialog .settings-action-bar.lens-float-bar .ng-leave, .lens-dialog .settings-action-bar.lens-float-bar .ng-animate {
    transition: none !important;
}
.lens-dialog .settings-action-bar.lens-float-bar .btn {
    height: 40px;
    padding: 0 18px;
    border-radius: 12px;
    font-size: 13px;
    transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease, color 0.15s ease;
}
.lens-dialog .settings-action-bar.lens-float-bar .btn[disabled] {
    opacity: 0.45;
    box-shadow: none;
    transform: none;
}
.lens-dialog .settings-action-bar.lens-float-bar .btn-navy {
    box-shadow: 0 6px 16px rgba(0, 53, 210, 0.28);
}
.lens-dialog .settings-action-bar.lens-float-bar .btn-navy .fa-arrow-right {
    margin-left: 4px;
    transition: transform 0.15s ease;
}
.lens-dialog .settings-action-bar.lens-float-bar .btn-navy:hover:not([disabled]) {
    transform: translateY(-1px);
    box-shadow: 0 10px 22px rgba(0, 53, 210, 0.34);
}
.lens-dialog .settings-action-bar.lens-float-bar .btn-navy:hover:not([disabled]) .fa-arrow-right {
    transform: translateX(3px);
}
.lens-dialog .settings-action-bar.lens-float-bar .btn-cancel {
    border-radius: 12px;
}
/* Back is the quiet way out - no box until it is pointed at */
.lens-dialog .settings-action-bar.lens-float-bar .lens-back-btn {
    padding: 0 14px 0 10px;
    border: 0;
    background: none;
    color: #0035d2;
}
.lens-dialog .settings-action-bar.lens-float-bar .lens-back-btn .fa {
    margin-right: 4px;
    font-size: 11px;
}
.lens-dialog .settings-action-bar.lens-float-bar .lens-back-btn:hover {
    background-color: #e7f0ff;
}
.lens-dialog .settings-action-bar.lens-float-bar .lens-action-mid {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 0 6px;
}
.lens-dialog .settings-action-bar.lens-float-bar .action-hint {
    margin: 0;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-style: normal;
}
/* Where you are: the current step a pill, finished ones filled */
.lens-dialog .lens-step-dots {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.lens-dialog .lens-step-dots i {
    width: 7px;
    height: 7px;
    border-radius: 7px;
    background-color: #c0cde0;
    transition: width 0.2s ease, background-color 0.2s ease;
}
.lens-dialog .lens-step-dots i.done {
    background-color: #0035d2;
    opacity: 0.45;
}
.lens-dialog .lens-step-dots i.on {
    width: 20px;
    background-color: #0035d2;
    opacity: 1;
}
/* =================================================================== */
/* ! Practice settings: dispensing extras
/* One row per kind of extra, each item a small card - tick, name, price.
/* =================================================================== */
.settings-shell .lens-extras-settings .lx-fieldset {
    border: 0;
    margin: 0;
    padding: 0;
    min-width: 0;
}
.settings-shell .lens-extras-settings .lx-row {
    padding: 14px 0;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell .lens-extras-settings .lx-row:last-child {
    border-bottom: 0;
}
.settings-shell .lens-extras-settings .lx-row-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 14px;
    margin-bottom: 10px;
}
.settings-shell .lens-extras-settings .lx-row-head b {
    color: #0a2540;
    font-size: 13.5px;
}
.settings-shell .lens-extras-settings .lx-row-head small {
    -ms-flex: 1;
        flex: 1;
    color: #878ba0;
    font-size: 11.5px;
}
.settings-shell .lens-extras-settings .lx-count {
    margin-left: 8px;
    font-size: 11px;
    color: #878ba0;
}
.settings-shell .lens-extras-settings .lx-items {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(210px, 1fr))[auto-fill];
        grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
    gap: 10px;
}
.settings-shell .lens-extras-settings .lx-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
    padding: 8px 10px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    transition: opacity 0.15s ease;
}
.settings-shell .lens-extras-settings .lx-item.off {
    opacity: 0.55;
    background-color: #f4f7fe;
}
.settings-shell .lens-extras-settings .lx-item.new {
    border-color: #0035d2;
}
.settings-shell .lens-extras-settings .lx-item .form-control {
    height: 30px;
    padding: 4px 8px;
    font-size: 12.5px;
}
/* The compact padding above would put the price under its $ - keep the sign's room */
.settings-shell .lens-extras-settings .lx-item .fee-input .fee-prefix {
    left: 9px;
    font-size: 12.5px;
}
.settings-shell .lens-extras-settings .lx-item .fee-input .form-control {
    padding-left: 21px;
}
.settings-shell .lens-extras-settings .lx-item-top, .settings-shell .lens-extras-settings .lx-item-bottom {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.settings-shell .lens-extras-settings .lx-item-bottom {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.settings-shell .lens-extras-settings .lx-item-bottom .fee-input {
    width: 96px;
}
.settings-shell .lens-extras-settings .lx-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-weight: 600;
    border-color: transparent;
    box-shadow: none;
}
.settings-shell .lens-extras-settings .lx-name:hover, .settings-shell .lens-extras-settings .lx-name:focus {
    border-color: #e0e6ed;
}
.settings-shell .lens-extras-settings .lx-name.has-error {
    border-color: #d9534f;
}
.settings-shell .lens-extras-settings .lx-hint {
    color: #878ba0;
}
.settings-shell .lens-extras-settings .lx-icon {
    width: 14px;
    text-align: center;
    color: #0035d2;
}
/* A swatch, not the browser's full colour button */
.settings-shell .lens-extras-settings .lx-colour {
    -ms-flex: 0 0 22px;
        flex: 0 0 22px;
    width: 22px;
    height: 22px;
    padding: 0;
    border: 1px solid #e0e6ed;
    border-radius: 50%;
    overflow: hidden;
    cursor: pointer;
    background: none;
}
.settings-shell .lens-extras-settings .lx-colour::-webkit-color-swatch-wrapper {
    padding: 0;
}
.settings-shell .lens-extras-settings .lx-colour::-webkit-color-swatch {
    border: 0;
}
.settings-shell .lens-extras-settings .lx-discard {
    color: #a3aac0;
}
.settings-shell .lens-extras-settings .lx-discard:hover {
    color: #d9534f;
}
.settings-shell .lens-extras-settings .lx-free {
    font-size: 11.5px;
    color: #878ba0;
}
.settings-shell .lens-extras-settings .lx-toggle {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    margin: 0;
    font-size: 11.5px;
    font-weight: normal;
    color: #343a40;
    cursor: pointer;
}
.settings-shell .lens-extras-settings .lx-select {
    width: auto;
    -ms-flex: 1;
        flex: 1;
}
.settings-shell .lens-extras-settings .lx-add {
    min-height: 64px;
    border: 1px dashed #c0cde0;
    border-radius: 10px;
    background: none;
    color: #0035d2;
    font-size: 12.5px;
    font-weight: 600;
}
.settings-shell .lens-extras-settings .lx-add:hover {
    background-color: #e7f0ff;
}
.settings-shell .lens-extras-settings .lx-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 12px 24px;
}
.settings-shell .lens-extras-settings .lx-inline-field {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin: 0;
    font-size: 12.5px;
    font-weight: normal;
    color: #343a40;
}
.settings-shell .lens-extras-settings .lx-inline-field .fee-input {
    width: 96px;
}
/* A % sits after the number, where a $ sits before it */
.settings-shell .lens-extras-settings .fee-input.lx-suffix .fee-prefix {
    left: auto;
    right: 11px;
}
.settings-shell .lens-extras-settings .fee-input.lx-suffix .form-control {
    padding-left: 8px;
    padding-right: 24px;
}
/* =================================================================== */
/* ! Xero invoicing (job dialogs' invoice card)
/* Where the invoice goes in Xero: logged in, and the patient's contact.
/* =================================================================== */
.lens-dialog .lens-xero {
    margin-top: 16px;
    padding: 12px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #f4f7fe;
    font-size: 12.5px;
}
.lens-dialog .lens-xero.step-ready {
    border-color: rgba(32, 201, 151, 0.1);
    background-color: rgba(32, 201, 151, 0.1);
}
.lens-dialog .lens-xero-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    margin-bottom: 8px;
    color: #0035d2;
}
.lens-dialog .lens-xero-org {
    color: #878ba0;
    font-size: 11.5px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* "Choose another", beside the contact worked out for the user; "Invoice without Xero" */
.lens-dialog .lens-xero-change {
    margin-left: auto;
    white-space: nowrap;
    font-size: 12px;
    font-weight: 600;
    color: #0035d2;
}
.lens-dialog .lens-xero-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    color: #343a40;
}
.lens-dialog .lens-xero-row > .fa {
    color: #0035d2;
}
.lens-dialog .lens-xero-row > span:not(.lens-xero-actions) {
    -ms-flex: 1 1 160px;
        flex: 1 1 160px;
    min-width: 0;
}
.lens-dialog .lens-xero-row.warning > .fa {
    color: #d9534f;
}
.lens-dialog .lens-xero-row.ready > .fa {
    color: #2e7d32;
}
.lens-dialog .lens-xero-actions {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.lens-dialog .lens-xero-search {
    position: relative;
    margin-top: 10px;
}
.lens-dialog .lens-xero-search .fa-spinner {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #878ba0;
}
.lens-dialog .lens-xero-results {
    margin-top: 6px;
    max-height: 168px;
    overflow-y: auto;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
}
.lens-dialog .lens-xero-result {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 8px;
    padding: 6px 10px;
    border-top: 1px solid #eef1f7;
}
.lens-dialog .lens-xero-result:first-child {
    border-top: 0;
}
.lens-dialog .lens-xero-result-name {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    min-width: 0;
}
.lens-dialog .lens-xero-result-name b {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lens-dialog .lens-xero-taken {
    color: #d9534f;
}
.lens-dialog .lens-xero-empty {
    padding: 8px 10px;
    color: #878ba0;
}
.lens-dialog .lens-xero-create {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-top: 8px;
}
/* Raising a job kept in CatTrax: the bank account for its payments, and the button */
.lens-dialog .lens-xero-raise {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 8px;
    margin-top: 10px;
}
.lens-dialog .lens-xero-raise .lens-payment-account {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
    margin: 0;
}
.lens-dialog .lens-xero-raise .lens-xero-error {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
}
.lens-dialog .lens-xero-error {
    margin-top: 6px;
    color: #d9534f;
}
/* =================================================================== */
/* ! Taking payment (job dialogs' invoice card, and the status dialog)
/* =================================================================== */
.lens-dialog .lens-payment, .lens-status-dialog .lens-payment {
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px solid #eef1f7;
    font-size: 12.5px;
}
.lens-dialog .lens-payment-head, .lens-status-dialog .lens-payment-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: baseline;
        align-items: baseline;
    margin-bottom: 10px;
    color: #0035d2;
}
.lens-dialog .lens-payment-amount, .lens-dialog .lens-payment-methods, .lens-status-dialog .lens-payment-amount, .lens-status-dialog .lens-payment-methods {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-bottom: 10px;
}
.lens-dialog .lens-payment-amount .chip-select, .lens-dialog .lens-payment-methods .chip-select, .lens-status-dialog .lens-payment-amount .chip-select, .lens-status-dialog .lens-payment-methods .chip-select {
    padding: 4px 10px;
}
.lens-dialog .lens-payment-amount .fee-input, .lens-status-dialog .lens-payment-amount .fee-input {
    width: 120px;
}
.lens-dialog .lens-payment-account, .lens-status-dialog .lens-payment-account {
    display: block;
    margin: 0 0 10px;
    font-weight: normal;
}
.lens-dialog .lens-payment-foot, .lens-status-dialog .lens-payment-foot {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
}
.lens-dialog .lens-payment-foot .btn, .lens-status-dialog .lens-payment-foot .btn {
    width: auto;
    margin: 0;
}
.lens-dialog .lens-payment-problem, .lens-status-dialog .lens-payment-problem {
    -ms-flex: 1;
        flex: 1;
    color: #d9534f;
}
.lens-dialog .lens-paid-row, .lens-status-dialog .lens-paid-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    padding: 4px 0;
    color: #343a40;
}
.lens-dialog .lens-paid-row .fa, .lens-status-dialog .lens-paid-row .fa {
    color: #2e7d32;
}
.lens-dialog .lens-paid-row small, .lens-status-dialog .lens-paid-row small {
    margin-left: auto;
    color: #878ba0;
}
.lens-dialog .lens-paid-row.full, .lens-status-dialog .lens-paid-row.full {
    color: #2e7d32;
}
/* What stops the invoice, on the action bar: the one thing to do, and a link to it */
.lens-dialog .lens-blocker, .lens-status-dialog .lens-blocker {
    font-style: normal;
    font-weight: 600;
    color: #0035d2;
    text-decoration: none;
}
.lens-dialog .lens-blocker:hover, .lens-status-dialog .lens-blocker:hover {
    text-decoration: underline;
}
.lens-dialog .lens-blocker .fa, .lens-status-dialog .lens-blocker .fa {
    margin-right: 4px;
}
/* =================================================================== */
/* ! Lens step: the Rx and its ADD, and lenses it can't be made in
/* =================================================================== */
.lens-dialog .lens-rx-strip {
    margin-bottom: 14px;
}
.lens-dialog .chip-select.unsuitable {
    opacity: 0.5;
    text-decoration: line-through;
}
.lens-dialog .lens-option-tile.unsuitable {
    opacity: 0.5;
    cursor: not-allowed;
}
.lens-dialog .lens-fit-note {
    margin-top: 4px;
    font-size: 11.5px;
    font-weight: 600;
    color: #0035d2;
}
.lens-dialog .lens-fit-note.bad {
    color: #d9534f;
}
/* =================================================================== */
/* ! Order & billing: items, discount and the order notes
/* =================================================================== */
.lens-dialog .lens-items .lens-discount {
    -ms-flex-align: center;
        align-items: center;
}
.lens-dialog .lens-items .lens-discount > span:first-child {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    overflow: visible;
}
.lens-dialog .lens-items .lens-discount .fee-input {
    width: 96px;
}
.lens-dialog .lens-items .lens-discount .chip-select {
    padding: 3px 9px;
}
.lens-dialog .lens-order-pdf {
    margin: 0 0 10px;
}
/* Boxes on hand for a contact lens from inventory, by the boxes to supply */
.lens-dialog .cl-stock-note {
	color: #2e7d32;
}
.lens-dialog .cl-stock-note.short {
    color: #d9534f;
}
/* =================================================================== */
/* ! Send order dialog
/* The status step from ready to order to order sent, opened from the
/* dashboard tile and the practice job list.
/* =================================================================== */
.lens-status-dialog {
	width: 520px;
	max-width: 92vw;
}
.lens-status-dialog form {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    margin: 0;
}
.lens-status-dialog .lens-status-body {
    padding: 18px 28px 0;
    font-size: 13px;
    color: #343a40;
}
.lens-status-dialog .lens-status-job {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 12px 16px;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    background-color: #f4f7fe;
}
.lens-status-dialog .lens-status-icon {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 42px;
    height: 42px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 18px;
}
.lens-status-dialog .lens-status-icon.contacts {
    background-color: #e3f4f1;
    color: #00796b;
}
.lens-status-dialog .lens-status-job-text {
    min-width: 0;
}
.lens-status-dialog .lens-status-job-top {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
}
.lens-status-dialog .lens-status-job-top b {
    font-family: 'Gordita Bold', sans-serif;
    color: #0a2540;
    font-size: 14px;
}
.lens-status-dialog .lens-status-job-desc {
    margin-top: 3px;
    color: #878ba0;
    font-size: 12px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lens-status-dialog .lens-status-move {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 12px;
    margin: 14px 0 12px;
}
.lens-status-dialog .lens-status-move .lens-status-pill {
    font-size: 11.5px;
    padding: 5px 12px;
}
.lens-status-dialog .lens-status-arrow {
    color: #a3aac0;
    font-size: 16px;
}
.lens-status-dialog .lens-status-facts {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[2];
        grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 14px;
}
.lens-status-dialog .lens-status-fact {
    padding: 8px 14px;
    border-radius: 10px;
    background-color: #f8f9fa;
}
.lens-status-dialog .lens-status-fact span {
    display: block;
    font-size: 11px;
    color: #878ba0;
}
.lens-status-dialog .lens-status-fact b {
    display: block;
    margin-top: 2px;
    color: #0a2540;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lens-status-dialog .lens-status-label {
    display: block;
    margin-bottom: 6px;
    font-size: 12px;
    font-weight: 600;
    color: #343a40;
}
.lens-status-dialog .lens-status-label small {
    margin-left: 4px;
    font-weight: 400;
    color: #a3aac0;
}
.lens-status-dialog .form-control {
    height: 38px;
    border-radius: 8px;
    border-color: #e0e6ed;
    box-shadow: none;
}
.lens-status-dialog .form-control:focus {
    border-color: #0035d2;
}
.lens-status-dialog .lens-status-note {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 8px;
    margin: 12px 0 4px;
    font-size: 12px;
    color: #878ba0;
}
.lens-status-dialog .lens-status-note i {
    margin-top: 2px;
    color: #0035d2;
}
/* Something unpaid: a reminder, with the payment form under it */
.lens-status-dialog .lens-status-payment {
    margin-top: 14px;
}
.lens-status-dialog .lens-status-payment .lens-payment {
    margin-top: 10px;
}
/* The settings dialogs' chips and money field, which this dialog sits outside */
.lens-status-dialog .lens-status-payment .chip-select {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    font-size: 12px;
    font-weight: 600;
    border-radius: 20px;
    background-color: #ffffff;
    color: #343a40;
    border: 1px solid #e0e6ed;
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}
.lens-status-dialog .lens-status-payment .chip-select.selected {
    background-color: #e7f0ff;
    border-color: #0035d2;
    color: #0035d2;
}
.lens-status-dialog .lens-status-payment .fee-input {
    display: block;
    position: relative;
}
.lens-status-dialog .lens-status-payment .fee-input .fee-prefix {
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #a3aac0;
    pointer-events: none;
}
.lens-status-dialog .lens-status-payment .fee-input .form-control {
    padding-left: 22px;
}
.lens-status-dialog .lens-status-reminder {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
    padding: 10px 14px;
    border-radius: 10px;
    background-color: #fff8e1;
    color: #856404;
    font-size: 12.5px;
    line-height: 1.5;
}
.lens-status-dialog .lens-status-reminder .fa {
    margin-top: 2px;
}
.lens-status-dialog .lens-status-reminder.paid {
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
}
.lens-status-dialog .lens-status-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 10px;
    padding: 14px 28px 20px;
}
/* .btn-navy and .btn-cancel fill their container for form footers; here they size to their label */
.lens-status-dialog .lens-status-actions .btn {
    width: auto;
    min-width: 110px;
    max-width: none;
    white-space: nowrap;
    margin: 0;
}
/* =================================================================== */
/* ! Lens prescribing
/* The prescriptions tile and dialogs reuse the lens dispensing module
/* and dialog styles (_lens-dispensing.css, imported first, which also
/* defines the $lens-* tokens used here). Only what is new is defined.
/* =================================================================== */
/* --- Status pill: current / superseded / expired / withdrawn / draft --- */
.lens-rx-pill {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 5px;
	font-size: 10.5px;
	font-weight: 700;
	padding: 3px 9px;
	border-radius: 20px;
	white-space: nowrap;
	background-color: #e7f0ff;
	color: #0035d2;

	/* A contact lens draft whose trial pair is out keeps the default navy */
}
.lens-rx-pill.rx-current {
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
}
.lens-rx-pill.rx-superseded, .lens-rx-pill.rx-draft {
    background-color: #f8f9fa;
    color: #878ba0;
}
.lens-rx-pill.rx-expired, .lens-rx-pill.rx-withdrawn {
    background-color: #fbeceb;
    color: #d9534f;
}
/* --- A prescription's powers as a small table, one row per eye (lensRxTable) --- */
lens-rx-table {
	display: block;
	max-width: 100%;
	overflow-x: auto;
}
.lens-rx-mini {
	margin: 6px 0 2px;
	border-collapse: collapse;
	font-size: 12px;
	font-variant-numeric: tabular-nums;
	color: #0a2540;
}
.lens-rx-mini th, .lens-rx-mini td {
    padding: 3px 0 3px 16px;
    text-align: right;
    white-space: nowrap;
}
.lens-rx-mini thead th {
    padding-bottom: 4px;
    border-bottom: 1px solid #e0e6ed;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #878ba0;
}
/* The eye, down the left */
.lens-rx-mini th:first-child {
    padding-left: 0;
    text-align: left;
    color: #0035d2;
    font-family: 'Gordita Bold', sans-serif;
}
.lens-rx-mini .lens-rx-mini-tag {
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 10px;
    background-color: #e7f0ff;
    font-family: inherit;
    font-size: 10px;
}
.lens-rx-mini .lens-rx-mini-none {
    text-align: left;
    color: #878ba0;
}
.lens-rx-mini-note, .lens-rx-mini-empty {
	font-size: 11px;
	color: #878ba0;
}
.lens-rx-mini-empty {
	margin-top: 4px;
}
/* --- Withdrawing an issued prescription, from the tile (the dialog is just the card) --- */
/* Wide enough for a full spectacle Rx - adds, prisms and PDs */
.lens-rx-withdraw-dialog .lens-confirm {
    width: 540px;
    max-width: 92vw;
    box-shadow: none;
}
.lens-rx-withdraw-dialog .lens-rx-withdraw-what {
    margin-bottom: 4px;
    font-size: 13px;
    color: #0a2540;
}
/* =================================================================== */
/* ! Dashboard module
/* =================================================================== */
.lens-rx-module .lens-job.rx-current {
    border-left-color: #20c997;
}
.lens-rx-module .lens-job.rx-draft {
    border-left-color: #a3aac0;
    border-left-style: dashed;
}
.lens-rx-module .lens-job.rx-trial {
    border-left-color: #0035d2;
    border-left-style: dashed;
}
.lens-rx-module .lens-job.rx-superseded, .lens-rx-module .lens-job.rx-expired {
    border-left-color: #c0cde0;
    opacity: 0.8;
}
.lens-rx-module .lens-job.rx-withdrawn {
    border-left-color: #d9534f;
    opacity: 0.8;
}
.lens-rx-module .lens-rx-withdrawn-note {
    color: #d9534f;
}
.lens-rx-module .lens-job-thumb lens-design-art {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
}
.lens-rx-module .lens-job-thumb .lens-design-art {
    width: 56px;
    height: 56px;
}
.lens-rx-module .lens-job-actions {
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
}
/* =================================================================== */
/* ! Prescription dialogs
/* =================================================================== */
.lens-rx-dialog .lens-rx-preview lens-design-art {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
}
/* A date sits where the dispensing dialogs show a price */
.lens-rx-dialog .lens-rx-valid {
    font-size: 16px;
}
/* The spectacle Rx: its powers and ADDs, then its prisms and the monocular PDs */
.lens-rx-dialog .lens-rx-script-card .lens-rx-powers .lens-rx-head, .lens-rx-dialog .lens-rx-script-card .lens-rx-powers .lens-rx-row, .lens-rx-dialog .lens-rx-script-card .lens-rx-prisms .lens-rx-head, .lens-rx-dialog .lens-rx-script-card .lens-rx-prisms .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 1fr))[5];
        grid-template-columns: 70px repeat(5, minmax(0, 1fr));
}
.lens-rx-dialog .lens-rx-bpd {
    margin-top: 10px;
    -ms-grid-columns: minmax(0, 200px);
        grid-template-columns: minmax(0, 200px);
}
/* An eye's balance lens, or no contact lens: a toggle under its name, and its row greyed */
.lens-rx-dialog .lens-eye-toggle {
    -ms-flex-item-align: start;
        align-self: flex-start;
    margin-top: 4px;
    padding: 1px 7px;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    font-size: 10px;
    font-weight: 600;
    color: #878ba0;
    text-decoration: none;
}
.lens-rx-dialog .lens-eye-toggle:hover {
    color: #0035d2;
    text-decoration: none;
}
.lens-rx-dialog .lens-eye-toggle.on {
    border-color: #0035d2;
    background-color: #0035d2;
    color: #ffffff;
}
.lens-rx-dialog .lens-rx-row.lens-eye-off .form-control {
    background-color: #f4f7fe;
}
/* A balance eye is flagged, not disabled: its values stay and can still be changed */
.lens-rx-dialog .lens-rx-row.lens-eye-balance .form-control {
    background-color: #e7f0ff;
}
/* The icon-only copy-right-to-left button in the Rx card headers, kept small so the header stays flat */
.lens-rx-dialog .md-button.md-fab.lens-copy-eye-btn {
    margin: -6px 0;
    width: 34px;
    height: 34px;
    min-height: 34px;
    line-height: 34px;
}
/* The comment written with the refraction, inside the refraction notice */
.lens-rx-dialog .lens-rx-refraction-comment {
    display: block;
    margin-top: 4px;
    font-style: italic;
}
.lens-rx-dialog .lens-rx-refraction-comment i {
    margin-right: 4px;
}
/* Clickable recommendations, grouped so the long list stays scannable */
.lens-rx-dialog .lens-rec-group {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 10px;
    margin-bottom: 6px;
}
.lens-rx-dialog .lens-rec-group .lens-chip-row {
    margin: 0;
}
.lens-rx-dialog .lens-rec-group-label {
    -ms-flex: 0 0 125px;
        flex: 0 0 125px;
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #a3aac0;
}
/* What changed since the last prescription, and what to look at before issuing */
.lens-rx-dialog .lens-rx-changes {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 18px;
    margin-top: 10px;
    font-size: 12.5px;
    color: #0a2540;
}
.lens-rx-dialog .lens-rx-changes .lens-rx-changes-label {
    color: #878ba0;
}
.lens-rx-dialog .lens-rx-warnings {
    margin: 12px 0 0;
}
/* The prescriber is whoever issues it: shown, not typed */
.lens-rx-dialog .lens-rx-prescriber {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    padding: 7px 0;
    font-size: 13px;
    color: #0a2540;
}
.lens-rx-dialog .lens-rx-prescriber small {
    color: #878ba0;
    font-size: 11.5px;
}
/* An inventory lens's eye is one of its boxes: one dropdown across the row */
.lens-rx-dialog .lens-rx-row .cl-box-select {
    grid-column: 2 / -1;
}
.lens-rx-dialog .cl-no-box {
    margin-top: 10px;
}
/* A trial review: one card per eye - over-refraction and VA, then the fit as chips */
.lens-rx-dialog .lens-trial-eye .card-header-flex h4 small {
    margin-left: 4px;
    color: #878ba0;
}
.lens-rx-dialog .lens-trial-measures {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 16px;
}
.lens-rx-dialog .lens-trial-measures label {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 4px;
    margin: 0;
}
.lens-rx-dialog .lens-trial-measures .lens-label {
    margin: 0;
}
.lens-rx-dialog .lens-trial-or {
    display: -ms-flexbox;
    display: flex;
    gap: 6px;
}
.lens-rx-dialog .lens-trial-or .form-control {
    width: 90px;
}
/* The fit as rows of chips, each with its name - chips their own height, not the row's */
.lens-rx-dialog .lens-trial-fit {
    margin-top: 12px;
}
.lens-rx-dialog .lens-trial-fit .lens-chip-row {
    -ms-flex-align: center;
        align-items: center;
    margin-top: 6px;
}
.lens-rx-dialog .lens-trial-fit .lens-label {
    min-width: 84px;
    margin: 0;
}
.lens-rx-dialog .lens-trial-rotation {
    width: 70px;
    height: 30px;
}
/* Earlier trials, newest first */
.lens-rx-dialog .lens-trial-earlier {
    padding: 10px 0;
    border-bottom: 1px dashed #eef1f7;
}
.lens-rx-dialog .lens-trial-earlier:last-child {
    border-bottom: 0;
}
.lens-rx-dialog .lens-trial-earlier-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-bottom: 4px;
    color: #0a2540;
}
/* A lens tile with the box the patient's refraction converts to */
.lens-rx-dialog .cl-rx-match {
    margin-top: 6px;
    font-size: 11.5px;
    font-weight: 600;
    color: #2e7d32;
}
/* Each contact lens's details, and the left eye's own lens */
.lens-rx-dialog .cl-lens-slot {
    margin-bottom: 12px;
    padding-bottom: 12px;
    border-bottom: 1px solid #eef1f7;
}
.lens-rx-dialog .cl-lens-slot .cl-lens-slot-name {
    margin-bottom: 8px;
    color: #0a2540;
}
.lens-rx-dialog .cl-lens-slot .cl-stock-type {
    margin-bottom: 8px;
}
.lens-rx-dialog .cl-left-lens {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    margin-top: 12px;
}
.lens-rx-dialog .cl-left-lens .lens-label {
    margin: 0;
    white-space: nowrap;
}
.lens-rx-dialog .cl-left-lens .form-control {
    max-width: 360px;
}
/* Notes keep the writer's line breaks */
.lens-rx-dialog .lens-notes-value {
    white-space: pre-line;
}
.lens-rx-dialog .lens-notes-help {
    margin: 8px 0 0;
}
.lens-rx-dialog .lens-rx-subhead {
    margin: 18px 0 6px;
    padding-top: 14px;
    border-top: 1px solid #eef1f7;
    font-size: 12px;
    font-weight: 600;
    color: #0a2540;
}
/* A made-to-order lens's specification has a ninth column: a back toric's steep base curve */
.lens-dialog .cl-custom-card .lens-rx-table .lens-rx-head, .lens-dialog .cl-custom-card .lens-rx-table .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 1fr))[9];
        grid-template-columns: 70px repeat(9, minmax(0, 1fr));
}
/* Field labels sit on their fields - not under the old global .lens-label margin (_exam.css) */
.lens-dialog .lens-rx-extra .lens-label {
	margin-top: 0;
}
/* =================================================================== */
/* ! Choosing a prescription in the dispensing dialogs
/* =================================================================== */
.lens-dialog .lens-rx-pick-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 10px;
}
.lens-dialog .lens-rx-pick {
    position: relative;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 12px 44px 12px 12px;
    border-radius: 12px;
    border: 2px solid #e0e6ed;
    background-color: #ffffff;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.lens-dialog .lens-rx-pick:hover {
    box-shadow: 0 6px 18px rgba(0, 53, 210, 0.1);
}
.lens-dialog .lens-rx-pick.selected {
    border-color: #0035d2;
    box-shadow: 0 6px 18px rgba(0, 53, 210, 0.14);
}
.lens-dialog .lens-rx-pick.selected .lens-tile-check {
    transform: scale(1);
    opacity: 1;
}
.lens-dialog .lens-rx-pick .lens-tile-check {
    position: absolute;
    top: 50%;
    right: 12px;
    margin-top: -12px;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: #0035d2;
    color: #ffffff;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 11px;
    transform: scale(0.6);
    opacity: 0;
    transition: transform 0.15s ease, opacity 0.15s ease;
}
.lens-dialog .lens-rx-pick-art {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
}
.lens-dialog .lens-rx-pick-art .lens-design-art {
    width: 56px;
    height: 56px;
}
.lens-dialog .lens-rx-pick-body {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-rx-pick-top {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    color: #0035d2;
    font-size: 13px;
}
.lens-dialog .lens-rx-pick-powers {
    margin-top: 4px;
    color: #0035d2;
    font-size: 13px;
    font-weight: 700;
}
.lens-dialog .lens-rx-pick-meta {
    margin-top: 2px;
    color: #878ba0;
    font-size: 11.5px;
}
.lens-dialog .lens-rx-pick-meta i {
    color: #a3aac0;
}
/* A PD or fitting height not measured in the frame yet */
.lens-dialog .lens-rx-measure .form-control.lens-measure-missing {
    border-color: #856404;
    background-color: #fff8e1;
}
/* The prescribed columns are fixed; only PD and heights are entered */
.lens-dialog .lens-measure-notice {
    margin: 12px 0 0;
}
.lens-dialog .lens-rx-measure input[readonly] {
    background-color: #f4f7fe;
    cursor: default;
}
/* =================================================================== */
/* ! A contact lens from inventory: its type and replacement, set here
/* =================================================================== */
.lens-dialog .cl-stock-type {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	gap: 8px 24px;
	margin-bottom: 12px;
}
.lens-dialog .cl-stock-type .lens-chip-row {
    -ms-flex-align: center;
        align-items: center;
    margin: 0;
}
.lens-dialog .cl-stock-type .lens-label {
    margin: 0 4px 0 0;
}
/* =================================================================== */
/* ! Prescription history
/* Earlier prescriptions and what the patient wears now, beside the Rx
/* being written in the prescription dialogs.
/* =================================================================== */
.lens-dialog .lens-rx-history {
	/* Apart from the Rx card under it */
	margin-bottom: 18px;
}
/* The other kind, in one line */
.lens-dialog .lens-rx-history .lens-history-other {
    margin: 0 0 10px;
    font-size: 12.5px;
    color: #878ba0;
}
.lens-dialog .lens-rx-history .lens-history-other i {
    color: #a3aac0;
}
.lens-dialog .lens-rx-history .lens-history-loading {
    color: #878ba0;
    font-size: 12.5px;
}
.lens-dialog .lens-rx-history .lens-history-section + .lens-history-section {
    margin-top: 14px;
}
.lens-dialog .lens-rx-history .lens-history-label {
    margin-bottom: 6px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3aac0;
}
.lens-dialog .lens-rx-history .lens-history-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid #eef1f7;
}
.lens-dialog .lens-rx-history .lens-history-row:last-of-type {
    border-bottom: 0;
}
.lens-dialog .lens-rx-history .lens-history-row .lens-mini-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    white-space: nowrap;
}
.lens-dialog .lens-rx-history .lens-history-icon {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 34px;
    height: 34px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 14px;
}
.lens-dialog .lens-rx-history .lens-history-icon.contacts {
    background-color: #e3f4f1;
    color: #00796b;
}
.lens-dialog .lens-rx-history .lens-history-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-rx-history .lens-history-top {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    font-size: 13px;
    color: #0a2540;
}
.lens-dialog .lens-rx-history .lens-history-powers {
    margin-top: 2px;
    font-size: 13px;
    font-weight: 700;
    color: #0035d2;
}
.lens-dialog .lens-rx-history .lens-history-meta {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 12px;
    margin-top: 2px;
    font-size: 11.5px;
    color: #878ba0;
}
.lens-dialog .lens-rx-history .lens-history-more {
    display: inline-block;
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: #0035d2;
}
/* =================================================================== */
/* ! Inventory (prototype modal)
/* Scoped to `.settings-shell.inventory` so it sits on top of
/* _settings.css - the rail, pane, cards, chips, notices and form
/* controls all come from there. This file only adds the stock,
/* reorder tables and the side panel.
/* Patient invoicing (.settings-shell.invoicing) uses the tables,
/* status pills, notices and confirms too, so it is listed alongside;
/* what only it needs is in _invoicing.css. The task list and surgery
/* waitlist (.settings-shell.worklist) use the side panel as well;
/* theirs is _worklists.css.
/* =================================================================== */
.inventory-dialog {
	min-width: 78%;
	width: 78%;
	height: 88vh;
	max-height: 92vh;
	padding: 0;
	border-top-width: 0;
}
.inventory-dialog .inv-practice-name {
    margin-left: 12px;
    font-size: 13px;
    opacity: 0.8;
}
.inventory-dialog .inv-prototype-badge {
    margin-left: 10px;
    padding: 2px 9px;
    border-radius: 8px;
    background-color: #ffab00;
    color: #ffffff;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
/* Reorder count in the rail - a pill, white on the active row */
.settings-shell.inventory .settings-nav-item .inv-count, .settings-shell.invoicing .settings-nav-item .inv-count, .settings-shell.worklist .settings-nav-item .inv-count {
    margin-left: auto;
    min-width: 20px;
    padding: 1px 7px;
    border-radius: 10px;
    background-color: #ffab00;
    color: #ffffff;
    font-size: 11px;
    text-align: center;
}
.settings-shell.inventory .settings-nav-item.active .inv-count, .settings-shell.invoicing .settings-nav-item.active .inv-count, .settings-shell.worklist .settings-nav-item.active .inv-count {
    background-color: #ffffff;
    color: #0035d2;
}
/* Success green and error red, so the result of an action reads apart from the info notices */
.settings-shell.inventory .settings-notice.inv-flash.success, .settings-shell.invoicing .settings-notice.inv-flash.success, .settings-shell.worklist .settings-notice.inv-flash.success {
    background-color: rgba(32, 201, 151, 0.12);
    color: #2e7d32;
    border: 1px solid rgba(32, 201, 151, 0.35);
}
.settings-shell.inventory .settings-notice.inv-flash.error, .settings-shell.invoicing .settings-notice.inv-flash.error, .settings-shell.worklist .settings-notice.inv-flash.error {
    background-color: #fbeceb;
    color: #a94442;
    border: 1px solid rgba(169, 68, 66, 0.25);
}
.settings-shell.inventory .inv-toolbar, .settings-shell.invoicing .inv-toolbar, .settings-shell.worklist .inv-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 14px;
}
.settings-shell.inventory .inv-toolbar .form-control, .settings-shell.invoicing .inv-toolbar .form-control, .settings-shell.worklist .inv-toolbar .form-control {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
    max-width: 340px;
}
.settings-shell.inventory .inv-toolbar .inv-category-select, .settings-shell.inventory .inv-toolbar .inv-status-select, .settings-shell.invoicing .inv-toolbar .inv-category-select, .settings-shell.invoicing .inv-toolbar .inv-status-select, .settings-shell.worklist .inv-toolbar .inv-category-select, .settings-shell.worklist .inv-toolbar .inv-status-select {
    -ms-flex: 0 0 150px;
        flex: 0 0 150px;
}
.settings-shell.inventory .inv-toolbar .inv-search-input, .settings-shell.invoicing .inv-toolbar .inv-search-input, .settings-shell.worklist .inv-toolbar .inv-search-input {
    max-width: 420px;
}
.settings-shell.inventory .inv-toolbar .btn, .settings-shell.invoicing .inv-toolbar .btn, .settings-shell.worklist .inv-toolbar .btn {
    margin: 0;
}
.settings-shell.inventory .inv-search-hint, .settings-shell.invoicing .inv-search-hint, .settings-shell.worklist .inv-search-hint {
    margin: -8px 0 14px;
}
.settings-shell.inventory .inv-search-hint .fa, .settings-shell.invoicing .inv-search-hint .fa, .settings-shell.worklist .inv-search-hint .fa {
    margin-right: 4px;
}
/* A barcode nothing holds yet: said plainly, with the way to add it */
.settings-shell.inventory .inv-barcode-miss, .settings-shell.invoicing .inv-barcode-miss, .settings-shell.worklist .inv-barcode-miss {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px 10px;
    margin-bottom: 14px;
}
.settings-shell.inventory .inv-barcode-miss .btn, .settings-shell.invoicing .inv-barcode-miss .btn, .settings-shell.worklist .inv-barcode-miss .btn {
    width: auto;
    margin: 0 0 0 auto;
    padding: 3px 12px;
}
.settings-shell.inventory .inv-muted, .settings-shell.invoicing .inv-muted, .settings-shell.worklist .inv-muted {
    font-size: 12.5px;
    color: #6c757d;
    margin: 6px 0;
}
/* Sized like the table it stands in for, so the pane does not jump when the rows arrive */
.settings-shell.inventory .inv-loading, .settings-shell.invoicing .inv-loading, .settings-shell.worklist .inv-loading {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
    min-height: 220px;
    margin-bottom: 14px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    color: #6c757d;
    font-size: 13px;
}
.settings-shell.inventory .inv-loading .fa, .settings-shell.invoicing .inv-loading .fa, .settings-shell.worklist .inv-loading .fa {
    font-size: 18px;
    color: #0035d2;
}
/* Says the list is complete, so an infinite scroll does not leave the reader waiting for more */
.settings-shell.inventory .inv-list-end, .settings-shell.invoicing .inv-list-end, .settings-shell.worklist .inv-list-end {
    margin: 4px 0 14px;
    text-align: center;
}
.settings-shell.inventory .inv-load-more, .settings-shell.invoicing .inv-load-more, .settings-shell.worklist .inv-load-more {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 12px;
    margin: 6px 0 14px;
}
.settings-shell.inventory .inv-error-text, .settings-shell.invoicing .inv-error-text, .settings-shell.worklist .inv-error-text {
    font-size: 12.5px;
    color: #a94442;
}
/* IDs are shown so a tester can enter a move by hand and match rows against DynamoDB */
.settings-shell.inventory .inv-id, .settings-shell.inventory .inv-mono, .settings-shell.invoicing .inv-id, .settings-shell.invoicing .inv-mono, .settings-shell.worklist .inv-id, .settings-shell.worklist .inv-mono {
    font-family: SFMono-Regular, Consolas, "Liberation Mono", monospace;
    font-size: 11px;
    color: #a3aac0;
}
/* ! Tables (Stock, Reorder)
	/* Text left, numbers right in tabular figures, so columns of quantities
	/* line up and compare at a glance. Rows are separated by rules rather
	/* than stripes, which would fight the open detail and editor rows.
	/* =================================================================== */
.settings-shell.inventory .inv-table-bar, .settings-shell.invoicing .inv-table-bar, .settings-shell.worklist .inv-table-bar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 10px;
}
.settings-shell.inventory .inv-table-bar .inv-filter, .settings-shell.invoicing .inv-table-bar .inv-filter, .settings-shell.worklist .inv-table-bar .inv-filter {
    -ms-flex: 0 1 260px;
        flex: 0 1 260px;
    margin-left: auto;
}
/* Scrolls sideways rather than squashing columns when the dialog is narrow */
.settings-shell.inventory .inv-table-wrap, .settings-shell.invoicing .inv-table-wrap, .settings-shell.worklist .inv-table-wrap {
    overflow-x: auto;
    margin-bottom: 14px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
}
/* Child combinators throughout: an open Stock row holds a table of its own, which must not
	   pick up the outer table's rules */
.settings-shell.inventory .inv-table, .settings-shell.invoicing .inv-table, .settings-shell.worklist .inv-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    color: #343a40;
}
.settings-shell.inventory .inv-table > thead > tr > th, .settings-shell.inventory .inv-table > tbody > tr > th, .settings-shell.inventory .inv-table > tbody > tr > td, .settings-shell.invoicing .inv-table > thead > tr > th, .settings-shell.invoicing .inv-table > tbody > tr > th, .settings-shell.invoicing .inv-table > tbody > tr > td, .settings-shell.worklist .inv-table > thead > tr > th, .settings-shell.worklist .inv-table > tbody > tr > th, .settings-shell.worklist .inv-table > tbody > tr > td {
    padding: 10px 12px;
    text-align: left;
    vertical-align: middle;
}
.settings-shell.inventory .inv-table > thead > tr > th, .settings-shell.invoicing .inv-table > thead > tr > th, .settings-shell.worklist .inv-table > thead > tr > th {
    background-color: #f8faff;
    border-bottom: 1px solid #e0e6ed;
    color: #6c757d;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    white-space: nowrap;
}
/* Row headers read as the row's name, not as another column heading */
.settings-shell.inventory .inv-table > tbody > tr > th, .settings-shell.invoicing .inv-table > tbody > tr > th, .settings-shell.worklist .inv-table > tbody > tr > th {
    min-width: 120px;
    font-weight: 600;
    color: #2a307f;
}
.settings-shell.inventory .inv-table > tbody > tr + tr > td, .settings-shell.inventory .inv-table > tbody > tr + tr > th, .settings-shell.inventory .inv-table > tbody + tbody > tr:first-child > td, .settings-shell.inventory .inv-table > tbody + tbody > tr:first-child > th, .settings-shell.invoicing .inv-table > tbody > tr + tr > td, .settings-shell.invoicing .inv-table > tbody > tr + tr > th, .settings-shell.invoicing .inv-table > tbody + tbody > tr:first-child > td, .settings-shell.invoicing .inv-table > tbody + tbody > tr:first-child > th, .settings-shell.worklist .inv-table > tbody > tr + tr > td, .settings-shell.worklist .inv-table > tbody > tr + tr > th, .settings-shell.worklist .inv-table > tbody + tbody > tr:first-child > td, .settings-shell.worklist .inv-table > tbody + tbody > tr:first-child > th {
    border-top: 1px solid #e0e6ed;
}
.settings-shell.inventory .inv-table > thead > tr > .inv-num, .settings-shell.inventory .inv-table > tbody > tr > .inv-num, .settings-shell.invoicing .inv-table > thead > tr > .inv-num, .settings-shell.invoicing .inv-table > tbody > tr > .inv-num, .settings-shell.worklist .inv-table > thead > tr > .inv-num, .settings-shell.worklist .inv-table > tbody > tr > .inv-num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.settings-shell.inventory .inv-table .inv-col-toggle, .settings-shell.invoicing .inv-table .inv-col-toggle, .settings-shell.worklist .inv-table .inv-col-toggle {
    width: 36px;
    padding-right: 0;
}
.settings-shell.inventory .inv-table .inv-col-actions, .settings-shell.invoicing .inv-table .inv-col-actions, .settings-shell.worklist .inv-table .inv-col-actions {
    text-align: right;
    white-space: nowrap;
}
.settings-shell.inventory .inv-table .inv-cell-primary, .settings-shell.invoicing .inv-table .inv-cell-primary, .settings-shell.worklist .inv-table .inv-cell-primary {
    display: block;
}
.settings-shell.inventory .inv-table .inv-cell-secondary, .settings-shell.invoicing .inv-table .inv-cell-secondary, .settings-shell.worklist .inv-table .inv-cell-secondary {
    display: block;
    margin-top: 2px;
    font-size: 11.5px;
    font-weight: normal;
    color: #6c757d;
}
.settings-shell.inventory .inv-table .inv-mono, .settings-shell.invoicing .inv-table .inv-mono, .settings-shell.worklist .inv-table .inv-mono {
    font-size: 12px;
    color: #343a40;
}
.settings-shell.inventory .inv-table .inv-unknown, .settings-shell.invoicing .inv-table .inv-unknown, .settings-shell.worklist .inv-table .inv-unknown {
    color: #6c757d;
    cursor: help;
}
.settings-shell.inventory .inv-table > tbody.is-archived, .settings-shell.invoicing .inv-table > tbody.is-archived, .settings-shell.worklist .inv-table > tbody.is-archived {
    color: #6c757d;
}
.settings-shell.inventory .inv-table > tbody.is-archived > tr > th, .settings-shell.invoicing .inv-table > tbody.is-archived > tr > th, .settings-shell.worklist .inv-table > tbody.is-archived > tr > th {
    color: #6c757d;
}
/* A variation row opens the side panel, so the whole row is a target */
.settings-shell.inventory .inv-table > tbody > tr.inv-variation-row, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row {
    cursor: pointer;
}
.settings-shell.inventory .inv-table > tbody > tr.inv-variation-row:hover > td, .settings-shell.inventory .inv-table > tbody > tr.inv-variation-row:hover > th, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row:hover > td, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row:hover > th, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row:hover > td, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row:hover > th {
    background-color: #f2f6fb;
}
.settings-shell.inventory .inv-table > tbody > tr.inv-variation-row.is-selected > td, .settings-shell.inventory .inv-table > tbody > tr.inv-variation-row.is-selected > th, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row.is-selected > td, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row.is-selected > th, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row.is-selected > td, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row.is-selected > th {
    background-color: #e7f0ff;
}
.settings-shell.inventory .inv-table > tbody > tr.inv-variation-row.is-selected > :first-child, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row.is-selected > :first-child, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row.is-selected > :first-child {
    box-shadow: inset 3px 0 0 #0035d2;
}
/* Archived on its own: still listed with its item, but out of use */
.settings-shell.inventory .inv-table > tbody > tr.inv-variation-row.is-archived > td, .settings-shell.inventory .inv-table > tbody > tr.inv-variation-row.is-archived .inv-row-link, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row.is-archived > td, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row.is-archived .inv-row-link, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row.is-archived > td, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row.is-archived .inv-row-link {
    color: #6c757d;
}
.settings-shell.inventory .inv-table .inv-col-open, .settings-shell.invoicing .inv-table .inv-col-open, .settings-shell.worklist .inv-table .inv-col-open {
    width: 28px;
    padding-left: 0;
    color: #6c757d;
    text-align: right;
}
/* The variation's name: the keyboard route into the side panel */
.settings-shell.inventory .inv-row-link, .settings-shell.invoicing .inv-row-link, .settings-shell.worklist .inv-row-link {
    padding: 0;
    border: none;
    background: none;
    color: #2a307f;
    font: inherit;
    font-weight: 600;
    text-align: left;
}
.settings-shell.inventory .inv-row-link:hover, .settings-shell.inventory .inv-row-link:focus, .settings-shell.invoicing .inv-row-link:hover, .settings-shell.invoicing .inv-row-link:focus, .settings-shell.worklist .inv-row-link:hover, .settings-shell.worklist .inv-row-link:focus {
    color: #0035d2;
    text-decoration: underline;
}
/* On a narrow screen the lowest-priority columns go before the table has to scroll. Category
	   is in the toolbar and the barcode in a variation's settings, so nothing is lost. */
@media (max-width: 1500px) {
    .settings-shell.inventory .inv-table .inv-col-optional, .settings-shell.invoicing .inv-table .inv-col-optional, .settings-shell.worklist .inv-table .inv-col-optional {
        display: none;
    }
}
/* The item row opens its detail, so the whole row is a target */
.settings-shell.inventory .inv-stock-table .inv-item-row, .settings-shell.invoicing .inv-stock-table .inv-item-row, .settings-shell.worklist .inv-stock-table .inv-item-row {
    cursor: pointer;
}
.settings-shell.inventory .inv-stock-table .inv-item-row:hover td, .settings-shell.inventory .inv-stock-table .inv-item-row:hover th, .settings-shell.invoicing .inv-stock-table .inv-item-row:hover td, .settings-shell.invoicing .inv-stock-table .inv-item-row:hover th, .settings-shell.worklist .inv-stock-table .inv-item-row:hover td, .settings-shell.worklist .inv-stock-table .inv-item-row:hover th {
    background-color: #f2f6fb;
}
.settings-shell.inventory .inv-stock-table tbody.is-open .inv-item-row td, .settings-shell.inventory .inv-stock-table tbody.is-open .inv-item-row th, .settings-shell.invoicing .inv-stock-table tbody.is-open .inv-item-row td, .settings-shell.invoicing .inv-stock-table tbody.is-open .inv-item-row th, .settings-shell.worklist .inv-stock-table tbody.is-open .inv-item-row td, .settings-shell.worklist .inv-stock-table tbody.is-open .inv-item-row th {
    background-color: #f2f6fb;
}
/* =================================================================== */
.settings-shell.inventory .inv-toggle, .settings-shell.invoicing .inv-toggle, .settings-shell.worklist .inv-toggle {
    width: 26px;
    height: 26px;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 8px;
    background: none;
    color: #0035d2;
    font-size: 11px;
}
.settings-shell.inventory .inv-toggle:hover, .settings-shell.inventory .inv-toggle:focus, .settings-shell.invoicing .inv-toggle:hover, .settings-shell.invoicing .inv-toggle:focus, .settings-shell.worklist .inv-toggle:hover, .settings-shell.worklist .inv-toggle:focus {
    border-color: #e0e6ed;
    background-color: #ffffff;
}
/* A labelled icon button (panel close, stepper), outlined like .btn-cancel */
.settings-shell.inventory .inv-icon-btn, .settings-shell.invoicing .inv-icon-btn, .settings-shell.worklist .inv-icon-btn {
    width: 28px;
    height: 28px;
    padding: 0;
    border: 1px solid #bdbec1;
    border-radius: 50%;
    background-color: #ffffff;
    color: #555555;
    font-size: 13px;
}
.settings-shell.inventory .inv-icon-btn:hover, .settings-shell.inventory .inv-icon-btn:focus, .settings-shell.invoicing .inv-icon-btn:hover, .settings-shell.invoicing .inv-icon-btn:focus, .settings-shell.worklist .inv-icon-btn:hover, .settings-shell.worklist .inv-icon-btn:focus {
    border-color: #0035d2;
    color: #0035d2;
}
/* Abbreviated headings keep their full name on hover, without the browser's dotted underline */
.settings-shell.inventory .inv-table abbr[title], .settings-shell.invoicing .inv-table abbr[title], .settings-shell.worklist .inv-table abbr[title] {
    border-bottom: none;
    text-decoration: none;
    cursor: help;
}
/* .btn-navy and .btn-cancel fill their container for form footers; here they size to their label */
.settings-shell.inventory .inv-detail-footer .btn, .settings-shell.inventory .inv-confirm .btn, .settings-shell.invoicing .inv-detail-footer .btn, .settings-shell.invoicing .inv-confirm .btn, .settings-shell.worklist .inv-detail-footer .btn, .settings-shell.worklist .inv-confirm .btn {
    width: auto;
    margin: 0;
    padding: 3px 12px;
}
/* Status: an icon and a word as well as a colour, so it reads without colour vision */
.settings-shell.inventory .inv-status, .settings-shell.invoicing .inv-status, .settings-shell.worklist .inv-status {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    padding: 2px 9px;
    border-radius: 8px;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
}
.settings-shell.inventory .inv-status.is-ok, .settings-shell.invoicing .inv-status.is-ok, .settings-shell.worklist .inv-status.is-ok {
    background-color: rgba(32, 201, 151, 0.12);
    color: #2e7d32;
}
.settings-shell.inventory .inv-status.is-low, .settings-shell.invoicing .inv-status.is-low, .settings-shell.worklist .inv-status.is-low {
    background-color: #fff8e1;
    color: #856404;
}
.settings-shell.inventory .inv-status.is-out, .settings-shell.invoicing .inv-status.is-out, .settings-shell.worklist .inv-status.is-out {
    background-color: #fbeceb;
    color: #a94442;
}
.settings-shell.inventory .inv-status.is-archived, .settings-shell.invoicing .inv-status.is-archived, .settings-shell.worklist .inv-status.is-archived {
    background-color: #f8f9fa;
    color: #6c757d;
}
/* A contact lens box ordered in for the patient: expected, so neutral */
.settings-shell.inventory .inv-status.is-order, .settings-shell.invoicing .inv-status.is-order, .settings-shell.worklist .inv-status.is-order {
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell.inventory .inv-shortfall, .settings-shell.invoicing .inv-shortfall, .settings-shell.worklist .inv-shortfall {
    font-weight: 700;
    color: #856404;
}
/* Pending -> Ordered -> Arrived, as one segmented control; the steps before the current one are done */
.settings-shell.inventory .inv-backorders .inv-backorder-status, .settings-shell.invoicing .inv-backorders .inv-backorder-status, .settings-shell.worklist .inv-backorders .inv-backorder-status {
    min-width: 250px;
}
.settings-shell.inventory .inv-backorders .inv-close-row > td, .settings-shell.invoicing .inv-backorders .inv-close-row > td, .settings-shell.worklist .inv-backorders .inv-close-row > td {
    background-color: #f2f6fb;
}
/* ! Backorders
	/* =================================================================== */
.settings-shell.inventory .inv-bo-steps, .settings-shell.invoicing .inv-bo-steps, .settings-shell.worklist .inv-bo-steps {
    display: -ms-inline-flexbox;
    display: inline-flex;
    overflow: hidden;
    margin-bottom: 4px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
}
/* =================================================================== */
.settings-shell.inventory .inv-bo-step, .settings-shell.invoicing .inv-bo-step, .settings-shell.worklist .inv-bo-step {
    padding: 4px 10px;
    border: 0;
    border-left: 1px solid #e0e6ed;
    background-color: transparent;
    font-size: 12px;
    color: #6c757d;
    white-space: nowrap;
}
.settings-shell.inventory .inv-bo-step:first-child, .settings-shell.invoicing .inv-bo-step:first-child, .settings-shell.worklist .inv-bo-step:first-child {
    border-left: 0;
}
.settings-shell.inventory .inv-bo-step:hover:not([disabled]), .settings-shell.invoicing .inv-bo-step:hover:not([disabled]), .settings-shell.worklist .inv-bo-step:hover:not([disabled]) {
    background-color: #f2f6fb;
    color: #0035d2;
}
.settings-shell.inventory .inv-bo-step.is-done, .settings-shell.invoicing .inv-bo-step.is-done, .settings-shell.worklist .inv-bo-step.is-done {
    color: #0035d2;
}
.settings-shell.inventory .inv-bo-step.is-current, .settings-shell.invoicing .inv-bo-step.is-current, .settings-shell.worklist .inv-bo-step.is-current {
    font-weight: 700;
    background-color: #0035d2;
    color: #ffffff;
}
.settings-shell.inventory .inv-bo-step[disabled], .settings-shell.invoicing .inv-bo-step[disabled], .settings-shell.worklist .inv-bo-step[disabled] {
    cursor: progress;
}
.settings-shell.inventory .inv-status.is-ordered, .settings-shell.invoicing .inv-status.is-ordered, .settings-shell.worklist .inv-status.is-ordered {
    background-color: #f2f6fb;
    color: #0035d2;
}
.settings-shell.inventory .inv-bo-confirm, .settings-shell.invoicing .inv-bo-confirm, .settings-shell.worklist .inv-bo-confirm {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.settings-shell.inventory .inv-bo-confirm span, .settings-shell.invoicing .inv-bo-confirm span, .settings-shell.worklist .inv-bo-confirm span {
    -ms-flex: 1 1 240px;
        flex: 1 1 240px;
}
.settings-shell.inventory .inv-bo-confirm .form-control, .settings-shell.invoicing .inv-bo-confirm .form-control, .settings-shell.worklist .inv-bo-confirm .form-control {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
    height: 30px;
}
.settings-shell.inventory .inv-bo-confirm .btn, .settings-shell.invoicing .inv-bo-confirm .btn, .settings-shell.worklist .inv-bo-confirm .btn {
    width: auto;
    margin: 0;
}
.settings-shell.inventory .inv-bo-hint, .settings-shell.invoicing .inv-bo-hint, .settings-shell.worklist .inv-bo-hint {
    margin-top: 10px;
    font-size: 12px;
}
/* ! Item detail (an open Stock row)
	/* =================================================================== */
.settings-shell.inventory .inv-detail-row > td, .settings-shell.invoicing .inv-detail-row > td, .settings-shell.worklist .inv-detail-row > td {
    padding: 4px 12px 14px 16px;
    background-color: #f2f6fb;
}
/* =================================================================== */
.settings-shell.inventory .inv-detail .inv-muted, .settings-shell.inventory .inv-detail .inv-error-text, .settings-shell.invoicing .inv-detail .inv-muted, .settings-shell.invoicing .inv-detail .inv-error-text, .settings-shell.worklist .inv-detail .inv-muted, .settings-shell.worklist .inv-detail .inv-error-text {
    margin: 8px 0;
}
/* Also an .inv-table, so these match its selectors to win by order */
.settings-shell.inventory .inv-subtable, .settings-shell.invoicing .inv-subtable, .settings-shell.worklist .inv-subtable {
    border: 1px solid #e0e6ed;
    background-color: #ffffff;
}
.settings-shell.inventory .inv-subtable > thead > tr > th, .settings-shell.inventory .inv-subtable > tbody > tr > th, .settings-shell.inventory .inv-subtable > tbody > tr > td, .settings-shell.invoicing .inv-subtable > thead > tr > th, .settings-shell.invoicing .inv-subtable > tbody > tr > th, .settings-shell.invoicing .inv-subtable > tbody > tr > td, .settings-shell.worklist .inv-subtable > thead > tr > th, .settings-shell.worklist .inv-subtable > tbody > tr > th, .settings-shell.worklist .inv-subtable > tbody > tr > td {
    padding: 8px 10px;
}
.settings-shell.inventory .inv-subtable > thead > tr > th, .settings-shell.invoicing .inv-subtable > thead > tr > th, .settings-shell.worklist .inv-subtable > thead > tr > th {
    background-color: #ffffff;
}
/* A contact lens: what it is, over its box prescriptions */
.settings-shell.inventory .inv-lens-description, .settings-shell.invoicing .inv-lens-description, .settings-shell.worklist .inv-lens-description {
    margin: 0 0 8px;
}
/* Contact lens boxes as rows of small inputs - a new lens's, or ones being added to a lens - sized
	   to the card, the barcode taking what's left */
.settings-shell.inventory .inv-box-table, .settings-shell.invoicing .inv-box-table, .settings-shell.worklist .inv-box-table {
    width: 100%;
}
.settings-shell.inventory .inv-box-table > thead > tr > th, .settings-shell.inventory .inv-box-table > tbody > tr > td, .settings-shell.invoicing .inv-box-table > thead > tr > th, .settings-shell.invoicing .inv-box-table > tbody > tr > td, .settings-shell.worklist .inv-box-table > thead > tr > th, .settings-shell.worklist .inv-box-table > tbody > tr > td {
    padding: 4px 4px;
    vertical-align: middle;
}
.settings-shell.inventory .inv-box-table > thead > tr > th, .settings-shell.invoicing .inv-box-table > thead > tr > th, .settings-shell.worklist .inv-box-table > thead > tr > th {
    white-space: nowrap;
}
.settings-shell.inventory .inv-box-table .form-control, .settings-shell.invoicing .inv-box-table .form-control, .settings-shell.worklist .inv-box-table .form-control {
    width: 100%;
    min-width: 0;
    height: 32px;
    padding: 4px 6px;
}
.settings-shell.inventory .inv-box-table > tbody > tr > td:nth-child(-n + 8), .settings-shell.invoicing .inv-box-table > tbody > tr > td:nth-child(-n + 8), .settings-shell.worklist .inv-box-table > tbody > tr > td:nth-child(-n + 8) {
    width: 9%;
}
.settings-shell.inventory .inv-add-boxes, .settings-shell.invoicing .inv-add-boxes, .settings-shell.worklist .inv-add-boxes {
    margin-top: 12px;
    padding: 12px;
    border: 1px dashed #e0e6ed;
    border-radius: 10px;
}
.settings-shell.inventory .inv-add-boxes h5, .settings-shell.invoicing .inv-add-boxes h5, .settings-shell.worklist .inv-add-boxes h5 {
    margin-top: 0;
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
}
.settings-shell.inventory .inv-add-boxes .inv-editor-actions, .settings-shell.invoicing .inv-add-boxes .inv-editor-actions, .settings-shell.worklist .inv-add-boxes .inv-editor-actions {
    margin-top: 8px;
}
.settings-shell.inventory .inv-detail-footer, .settings-shell.invoicing .inv-detail-footer, .settings-shell.worklist .inv-detail-footer {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin-top: 10px;
}
.settings-shell.inventory .inv-detail-footer .inv-spacer, .settings-shell.invoicing .inv-detail-footer .inv-spacer, .settings-shell.worklist .inv-detail-footer .inv-spacer {
    -ms-flex: 1;
        flex: 1;
}
.settings-shell.inventory .inv-detail-footer .inv-muted, .settings-shell.invoicing .inv-detail-footer .inv-muted, .settings-shell.worklist .inv-detail-footer .inv-muted {
    margin: 0;
}
.settings-shell.inventory .inv-detail-footer .btn, .settings-shell.invoicing .inv-detail-footer .btn, .settings-shell.worklist .inv-detail-footer .btn {
    margin: 0;
}
.settings-shell.inventory .inv-detail-meta, .settings-shell.invoicing .inv-detail-meta, .settings-shell.worklist .inv-detail-meta {
    font-size: 11.5px;
    color: #6c757d;
}
/* The archive confirmation replaces the button in place, so it is read in context */
.settings-shell.inventory .inv-confirm, .settings-shell.invoicing .inv-confirm, .settings-shell.worklist .inv-confirm {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    padding: 6px 10px;
    border: 1px solid rgba(169, 68, 66, 0.25);
    border-radius: 8px;
    background-color: #fbeceb;
    color: #a94442;
    font-size: 12px;
}
/* ! Side panel (one variation's stock and details)
	/* A column beside the pane's content, never over it: the pane lays its
	/* children out in a row here, so opening the panel narrows the table
	/* rather than hiding part of it. Each scrolls on its own.
	/* =================================================================== */
.settings-shell.inventory .settings-pane, .settings-shell.invoicing .settings-pane, .settings-shell.worklist .settings-pane {
    -ms-flex-direction: row;
        flex-direction: row;
}
.settings-shell.inventory .settings-pane > .settings-pane-inner, .settings-shell.invoicing .settings-pane > .settings-pane-inner, .settings-shell.worklist .settings-pane > .settings-pane-inner {
    min-width: 0;
}
/* What is left of the table drops its secondary columns; the open line's are in the panel */
.settings-shell.inventory .settings-pane.has-panel .inv-table .inv-col-optional, .settings-shell.inventory .settings-pane.has-panel .inv-table .inv-col-secondary, .settings-shell.invoicing .settings-pane.has-panel .inv-table .inv-col-optional, .settings-shell.invoicing .settings-pane.has-panel .inv-table .inv-col-secondary, .settings-shell.worklist .settings-pane.has-panel .inv-table .inv-col-optional, .settings-shell.worklist .settings-pane.has-panel .inv-table .inv-col-secondary {
    display: none;
}
/* =================================================================== */
.settings-shell.inventory .settings-pane > .inv-panel, .settings-shell.invoicing .settings-pane > .inv-panel, .settings-shell.worklist .settings-pane > .inv-panel {
    -ms-flex: 0 0 clamp(300px, 36%, 400px);
        flex: 0 0 clamp(300px, 36%, 400px);
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    min-height: 0;
    background-color: #ffffff;
    border-left: 1px solid #e0e6ed;
}
.settings-shell.inventory .inv-panel-head, .settings-shell.invoicing .inv-panel-head, .settings-shell.worklist .inv-panel-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
    padding: 18px 20px 14px;
    border-bottom: 1px solid #e0e6ed;
}
.settings-shell.inventory .inv-panel-head h4, .settings-shell.invoicing .inv-panel-head h4, .settings-shell.worklist .inv-panel-head h4 {
    margin: 0;
    font-size: 17px;
    font-weight: 700;
    color: #2a307f;
    outline: none;
}
.settings-shell.inventory .inv-panel-eyebrow, .settings-shell.invoicing .inv-panel-eyebrow, .settings-shell.worklist .inv-panel-eyebrow {
    margin: 0 0 2px;
    font-size: 11.5px;
    font-weight: 600;
    color: #6c757d;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}
.settings-shell.inventory .inv-panel-body, .settings-shell.invoicing .inv-panel-body, .settings-shell.worklist .inv-panel-body {
    -ms-flex: 1;
        flex: 1;
    overflow-y: auto;
    padding: 16px 20px 24px;
}
.settings-shell.inventory .inv-panel-body .settings-notice, .settings-shell.invoicing .inv-panel-body .settings-notice, .settings-shell.worklist .inv-panel-body .settings-notice {
    margin-bottom: 14px;
}
/* The figures the forms below change, read at a glance */
.settings-shell.inventory .inv-panel-summary, .settings-shell.invoicing .inv-panel-summary, .settings-shell.worklist .inv-panel-summary {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 22px;
    margin: 0;
    padding: 12px 14px;
    border-radius: 10px;
    background-color: #f8faff;
}
.settings-shell.inventory .inv-panel-summary dt, .settings-shell.invoicing .inv-panel-summary dt, .settings-shell.worklist .inv-panel-summary dt {
    margin-bottom: 4px;
    white-space: nowrap;
    font-size: 11px;
    font-weight: 600;
    color: #6c757d;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}
.settings-shell.inventory .inv-panel-summary dd, .settings-shell.invoicing .inv-panel-summary dd, .settings-shell.worklist .inv-panel-summary dd {
    margin: 0;
}
.settings-shell.inventory .inv-panel-qty, .settings-shell.invoicing .inv-panel-qty, .settings-shell.worklist .inv-panel-qty {
    font-size: 24px;
    font-weight: 700;
    line-height: 1.1;
    color: #2a307f;
    font-variant-numeric: tabular-nums;
}
.settings-shell.inventory .inv-panel-qty-sm, .settings-shell.invoicing .inv-panel-qty-sm, .settings-shell.worklist .inv-panel-qty-sm {
    font-size: 18px;
    color: #343a40;
}
.settings-shell.inventory .inv-panel-section, .settings-shell.invoicing .inv-panel-section, .settings-shell.worklist .inv-panel-section {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid #e0e6ed;
}
.settings-shell.inventory .inv-panel-section h5, .settings-shell.invoicing .inv-panel-section h5, .settings-shell.worklist .inv-panel-section h5 {
    margin: 0 0 4px;
    font-size: 13.5px;
    font-weight: 700;
    color: #2a307f;
}
.settings-shell.inventory .inv-panel-section .control-label, .settings-shell.invoicing .inv-panel-section .control-label, .settings-shell.worklist .inv-panel-section .control-label {
    display: block;
    margin: 12px 0 4px;
}
.settings-shell.inventory .inv-panel-section .form-control, .settings-shell.invoicing .inv-panel-section .form-control, .settings-shell.worklist .inv-panel-section .form-control {
    width: 100%;
}
.settings-shell.inventory .inv-optional, .settings-shell.invoicing .inv-optional, .settings-shell.worklist .inv-optional {
    margin-left: 4px;
    font-weight: normal;
    color: #6c757d;
    text-transform: none;
}
.settings-shell.inventory .inv-stepper, .settings-shell.invoicing .inv-stepper, .settings-shell.worklist .inv-stepper {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.settings-shell.inventory .inv-stepper .inv-icon-btn, .settings-shell.invoicing .inv-stepper .inv-icon-btn, .settings-shell.worklist .inv-stepper .inv-icon-btn {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
}
.settings-shell.inventory .inv-stepper .form-control, .settings-shell.invoicing .inv-stepper .form-control, .settings-shell.worklist .inv-stepper .form-control {
    -ms-flex: 0 0 90px;
        flex: 0 0 90px;
    width: 90px;
    text-align: center;
    font-variant-numeric: tabular-nums;
}
/* The − / + buttons beside it do the stepping, so the browser's own spinner arrows are hidden.
		   Only on the number box - the units select beside it keeps its dropdown arrow. */
.settings-shell.inventory .inv-stepper input[type="number"], .settings-shell.invoicing .inv-stepper input[type="number"], .settings-shell.worklist .inv-stepper input[type="number"] {
    -moz-appearance: textfield;
    -webkit-appearance: textfield;
            appearance: textfield;
}
.settings-shell.inventory .inv-stepper input[type="number"]::-webkit-inner-spin-button, .settings-shell.inventory .inv-stepper input[type="number"]::-webkit-outer-spin-button, .settings-shell.invoicing .inv-stepper input[type="number"]::-webkit-inner-spin-button, .settings-shell.invoicing .inv-stepper input[type="number"]::-webkit-outer-spin-button, .settings-shell.worklist .inv-stepper input[type="number"]::-webkit-inner-spin-button, .settings-shell.worklist .inv-stepper input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.settings-shell.inventory .inv-stepper .form-control.inv-stepper-unit, .settings-shell.invoicing .inv-stepper .form-control.inv-stepper-unit, .settings-shell.worklist .inv-stepper .form-control.inv-stepper-unit {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    width: auto;
    text-align: left;
}
.settings-shell.inventory .inv-panel-hint, .settings-shell.invoicing .inv-panel-hint, .settings-shell.worklist .inv-panel-hint {
    margin: 6px 0 0;
    font-size: 12px;
    color: #6c757d;
}
.settings-shell.inventory .inv-panel-hint strong, .settings-shell.invoicing .inv-panel-hint strong, .settings-shell.worklist .inv-panel-hint strong {
    color: #2a307f;
}
/* A secondary action that fills a form in, rather than submitting anything */
.settings-shell.inventory .inv-link-btn, .settings-shell.invoicing .inv-link-btn, .settings-shell.worklist .inv-link-btn {
    margin-top: 8px;
    padding: 0;
    border: none;
    background: none;
    color: #0035d2;
    font-size: 12px;
    font-weight: 600;
    text-decoration: underline;
}
.settings-shell.inventory .inv-panel-fields, .settings-shell.invoicing .inv-panel-fields, .settings-shell.worklist .inv-panel-fields {
    display: -ms-flexbox;
    display: flex;
    gap: 12px;
}
.settings-shell.inventory .inv-panel-fields > div, .settings-shell.invoicing .inv-panel-fields > div, .settings-shell.worklist .inv-panel-fields > div {
    -ms-flex: 1;
        flex: 1;
}
.settings-shell.inventory .inv-mono-input, .settings-shell.invoicing .inv-mono-input, .settings-shell.worklist .inv-mono-input {
    font-family: SFMono-Regular, Consolas, "Liberation Mono", monospace;
}
/* Each form's save, centred under its fields, with anything it needs to say beneath it */
.settings-shell.inventory .inv-panel-actions, .settings-shell.invoicing .inv-panel-actions, .settings-shell.worklist .inv-panel-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-top: 18px;
}
.settings-shell.inventory .inv-panel-actions .inv-muted, .settings-shell.invoicing .inv-panel-actions .inv-muted, .settings-shell.worklist .inv-panel-actions .inv-muted {
    margin: 0;
    text-align: center;
}
/* The panel's primary action: a solid, squarer button rather than the pill used in form footers */
.settings-shell.inventory .inv-panel-save, .settings-shell.invoicing .inv-panel-save, .settings-shell.worklist .inv-panel-save {
    min-width: 200px;
    margin: 0;
    padding: 9px 28px;
    border: none;
    border-radius: 8px;
    background-color: #0035d2;
    color: #ffffff;
    font-size: 13px;
    font-weight: 600;
    box-shadow: 0 2px 6px rgba(0, 53, 210, 0.25);
}
.settings-shell.inventory .inv-panel-save:hover, .settings-shell.inventory .inv-panel-save:focus, .settings-shell.invoicing .inv-panel-save:hover, .settings-shell.invoicing .inv-panel-save:focus, .settings-shell.worklist .inv-panel-save:hover, .settings-shell.worklist .inv-panel-save:focus {
    background-color: #2a307f;
    color: #ffffff;
}
.settings-shell.inventory .inv-panel-save[disabled], .settings-shell.invoicing .inv-panel-save[disabled], .settings-shell.worklist .inv-panel-save[disabled] {
    background-color: #c0cde0;
    box-shadow: none;
    color: #ffffff;
    opacity: 1;
    cursor: not-allowed;
}
/* New item form actions */
.settings-shell.inventory .inv-editor-actions, .settings-shell.invoicing .inv-editor-actions, .settings-shell.worklist .inv-editor-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 10px;
    margin-top: 12px;
}
.settings-shell.inventory .inv-editor-actions .action-hint, .settings-shell.invoicing .inv-editor-actions .action-hint, .settings-shell.worklist .inv-editor-actions .action-hint {
    margin-right: auto;
    font-size: 11.5px;
    color: #6c757d;
    font-style: italic;
}
.settings-shell.inventory .inv-editor-actions .inv-spacer, .settings-shell.invoicing .inv-editor-actions .inv-spacer, .settings-shell.worklist .inv-editor-actions .inv-spacer {
    -ms-flex: 1;
        flex: 1;
}
.settings-shell.inventory .inv-editor-actions .btn, .settings-shell.invoicing .inv-editor-actions .btn, .settings-shell.worklist .inv-editor-actions .btn {
    margin: 0;
    max-width: 220px;
}
/* New item form: one card per variation */
.settings-shell.inventory .inv-item-head, .settings-shell.invoicing .inv-item-head, .settings-shell.worklist .inv-item-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}
.settings-shell.inventory .inv-new-variation, .settings-shell.invoicing .inv-new-variation, .settings-shell.worklist .inv-new-variation {
    margin-top: 14px;
}
/* =================================================================== */
/* ! Patient invoicing (NZ)
/* Built on the settings shell (_settings.css) like the calendar, and
/* laid out like a mail client: the invoices as a small table on the
/* left, the one open drawn as a printed invoice on the right, with a
/* compact payment card beside it (as the inventory's stock adjustment).
/* The editor's line table, status pills, notices and confirms come
/* from _inventory.css, which lists this shell alongside its own.
/* =================================================================== */
/* Only a `from`, so it fades to whatever background the element has - a selected row's included */
@keyframes invoicing-fresh {
	from {
		background-color: rgba(32, 201, 151, 0.26);
	}
}
@keyframes invoicing-pop {
	0%, 100% {
		transform: scale(1);
	}

	40% {
		transform: scale(1.14);
	}
}
.invoicing-dialog {
	min-width: 88%;
	width: 88%;
	height: 90vh;
	max-height: 94vh;
	padding: 0;
	border-top-width: 0;

}
/* ! Shared controls (as the calendar's toolbar)
	/* =================================================================== */
.settings-shell.invoicing .cal-btn {
    height: 34px;
    padding: 0 13px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    color: #333333;
    font-size: 12.5px;
    font-weight: 600;
    white-space: nowrap;
    transition: all 0.15s ease;
}
.settings-shell.invoicing .cal-btn .fa {
    margin-right: 5px;
    color: #0035d2;
}
.settings-shell.invoicing .cal-btn:hover:not([disabled]) {
    border-color: #0035d2;
    color: #0035d2;
}
.settings-shell.invoicing .cal-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.settings-shell.invoicing .cal-btn[disabled] {
    opacity: 0.45;
    cursor: not-allowed;
}
.settings-shell.invoicing .cal-btn .fa-chevron-left {
    font-size: 10px;
}
/* =================================================================== */
.settings-shell.invoicing .cal-icon-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 34px;
    padding: 0;
    font-size: 12px;
}
.settings-shell.invoicing .cal-icon-btn .fa {
    margin: 0;
}
.settings-shell.invoicing .invoicing-search {
    position: relative;
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.invoicing .invoicing-search > i {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 12px;
    color: #a3aac0;
    pointer-events: none;
}
.settings-shell.invoicing .invoicing-search .form-control {
    height: 34px;
    padding-left: 31px;
    padding-right: 28px;
}
.settings-shell.invoicing .invoicing-search .invoicing-search-clear {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 22px;
    height: 22px;
    border: none;
    border-radius: 50%;
    background: none;
    color: #a3aac0;
    font-size: 11px;
}
.settings-shell.invoicing .invoicing-search .invoicing-search-clear:hover {
    background-color: #e7f0ff;
    color: #0035d2;
}
/* .btn-cancel and .btn-navy fill their container for form footers; these size to their label */
.settings-shell.invoicing .invoicing-mini-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: auto;
    min-width: 0;
    margin: 0;
    padding: 4px 12px;
    font-size: 12px;
}
.settings-shell.invoicing .settings-notice .notice-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.invoicing .settings-notice .notice-dismiss {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border: none;
    background: none;
    padding: 0 2px;
    color: inherit;
    opacity: 0.6;
}
.settings-shell.invoicing .settings-notice .notice-dismiss i {
    margin: 0;
    font-size: 12px;
    color: inherit;
}
.settings-shell.invoicing .settings-notice .notice-dismiss:hover {
    opacity: 1;
}
/* A draft is the practice's own working copy - navy, not the grey of something finished with */
.settings-shell.invoicing .inv-status.is-draft {
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell.invoicing .invoice-overdue-text {
    color: #a94442;
    font-weight: 600;
}
/* ! List column: the patient, their balance, and their invoices
	/* =================================================================== */
.settings-shell.invoicing .invoicing-list {
    -ms-flex: 0 0 320px;
        flex: 0 0 320px;
    width: 320px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    min-height: 0;
    background-color: #ffffff;
    border-right: 1px solid #e0e6ed;
}
/* =================================================================== */
.settings-shell.invoicing .invoicing-list-head {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 12px;
    padding: 18px 16px 14px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell.invoicing .invoicing-patient {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
}
.settings-shell.invoicing .invoicing-patient-text {
    min-width: 0;
}
.settings-shell.invoicing .invoicing-patient-name {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    color: #0a2540;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.settings-shell.invoicing .invoicing-patient-sub {
    margin-top: 2px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-list-tools {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.settings-shell.invoicing .invoicing-new-btn {
    -ms-flex: 1;
        flex: 1;
    width: auto;
    max-width: none;
    min-width: 0;
    margin: 0;
    padding: 8px 14px;
}
.settings-shell.invoicing .invoicing-new-btn.is-current {
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.2);
}
/* Owing / overdue / paid, side by side */
.settings-shell.invoicing .invoicing-balance {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    gap: 16px;
    margin: 0;
    padding: 10px 16px;
    border-bottom: 1px solid #eef1f7;
    background-color: #fafbfe;
}
.settings-shell.invoicing .invoicing-stat {
    min-width: 0;
}
.settings-shell.invoicing .invoicing-stat.is-overdue .invoicing-stat-label, .settings-shell.invoicing .invoicing-stat.is-overdue .invoicing-stat-value {
    color: #a94442;
}
.settings-shell.invoicing .invoicing-stat-label {
    margin-bottom: 1px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-stat-value {
    margin: 0;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13.5px;
    color: #0a2540;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.settings-shell.invoicing .invoicing-stat-value.is-zero {
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-stat-value.is-paid {
    color: #2e7d32;
}
.settings-shell.invoicing .invoicing-list-items {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    overflow-y: auto;
}
.settings-shell.invoicing .invoicing-list-items::-webkit-scrollbar {
    width: 6px;
}
.settings-shell.invoicing .invoicing-list-items::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.1);
    border-radius: 20px;
}
/* An .inv-table, tightened for the narrow column: every row a click target, as the inventory's.
	   Two columns - the date over its main item, the total over its status - fixed so the item is cut
	   short rather than widening the list. */
.settings-shell.invoicing .invoice-list-table {
    table-layout: fixed;
}
.settings-shell.invoicing .invoice-list-table .invoice-list-total-col {
    width: 112px;
}
.settings-shell.invoicing .invoice-list-table > tbody > tr > th, .settings-shell.invoicing .invoice-list-table > tbody > tr > td {
    vertical-align: top;
}
.settings-shell.invoicing .invoice-list-table > thead > tr > th, .settings-shell.invoicing .invoice-list-table > tbody > tr > th, .settings-shell.invoicing .invoice-list-table > tbody > tr > td {
    padding: 8px 10px;
}
.settings-shell.invoicing .invoice-list-table > thead > tr > th {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 1;
    font-size: 10.5px;
}
.settings-shell.invoicing .invoice-list-table > thead > tr > :first-child, .settings-shell.invoicing .invoice-list-table > tbody > tr > :first-child {
    padding-left: 16px;
}
.settings-shell.invoicing .invoice-list-table > thead > tr > :last-child, .settings-shell.invoicing .invoice-list-table > tbody > tr > :last-child {
    padding-right: 16px;
}
.settings-shell.invoicing .invoice-list-table > tbody > tr > th {
    min-width: 0;
    white-space: nowrap;
}
.settings-shell.invoicing .invoice-list-table .inv-status {
    padding: 1px 7px;
    font-size: 10.5px;
}
.settings-shell.invoicing .invoice-list-table .invoice-list-amount .inv-status {
    margin-top: 4px;
}
/* While the editor is open the list is shown but not used */
.settings-shell.invoicing .invoice-list-table.is-locked > tbody > tr {
    cursor: default;
    opacity: 0.6;
}
.settings-shell.invoicing .invoice-list-table.is-locked > tbody > tr:hover > td, .settings-shell.invoicing .invoice-list-table.is-locked > tbody > tr:hover > th {
    background-color: transparent;
}
/* Centred, with any icon kept beside its words rather than pushed to the other edge */
.settings-shell.invoicing .invoice-list-item {
    display: -ms-flexbox;
    display: flex;
    gap: 4px;
    min-width: 0;
    margin-top: 3px;
    font-size: 11.5px;
    font-weight: normal;
    color: #6c757d;
}
.settings-shell.invoicing .invoice-list-item-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.invoicing .invoice-list-item-more {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-weight: 600;
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-list-note {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    padding: 18px 16px;
    text-align: center;
    font-size: 12.5px;
    color: #6c757d;
}
.settings-shell.invoicing .invoicing-list-note .fa {
    margin-right: 6px;
}
.settings-shell.invoicing .invoicing-list-note.is-error {
    color: #a94442;
}
/* Who invoices go to, the email they are sent to, and ACC */
.settings-shell.invoicing .invoicing-list-foot {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
    padding: 12px 16px 14px;
    border-top: 1px solid #eef1f7;
}
.settings-shell.invoicing .invoicing-list-foot .footer-label {
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-list-foot .link-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 11.5px;
}
.settings-shell.invoicing .invoicing-xero-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
}
.settings-shell.invoicing .invoicing-xero-row > .fa {
    width: 14px;
    margin-top: 4px;
    color: #a3aac0;
    text-align: center;
}
.settings-shell.invoicing .invoicing-xero-row > .fa-link {
    color: #2e7d32;
}
.settings-shell.invoicing .invoicing-xero-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
/* The linked contact is archived in Xero: kept compact to fit the rail */
.settings-shell.invoicing .settings-notice.invoicing-archived {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px 10px;
    margin: 10px 0 0;
    padding: 10px 12px;
    font-size: 12px;
}
/* Wraps onto further lines rather than being cut off - a long name, or one long word, still shows in full */
.settings-shell.invoicing .invoicing-xero-contact {
    margin-top: 1px;
    overflow-wrap: anywhere;
    font-size: 12px;
    font-weight: 600;
    color: #2a307f;
}
.settings-shell.invoicing .invoicing-no-email {
    margin-top: 1px;
    font-size: 12px;
    color: #878ba0;
}
.settings-shell.invoicing .invoicing-email-form {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
    margin-left: 24px;
}
.settings-shell.invoicing .invoicing-email-form .form-control {
    height: 32px;
    padding: 5px 10px;
    font-size: 12.5px;
}
.settings-shell.invoicing .invoicing-email-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 6px;
}
.settings-shell.invoicing .invoicing-email-error {
    display: block;
    font-size: 11.5px;
    color: #d9534f;
}
.settings-shell.invoicing .invoice-send-email {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    max-width: 420px;
    margin-top: 10px;
}
.settings-shell.invoicing .invoice-send-email .form-control {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    height: 32px;
    padding: 5px 10px;
}
.settings-shell.invoicing .invoicing-xero-confirm {
    display: -ms-flexbox;
    display: flex;
    margin-top: 8px;
}
.settings-shell.invoicing .invoicing-xero-confirm span {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
}
.settings-shell.invoicing .invoicing-acc-link {
    -ms-flex-item-align: start;
        align-self: flex-start;
    margin-left: 24px;
}
/* ! Reading pane
	/* =================================================================== */
.settings-shell.invoicing .settings-pane-inner {
    position: relative;
}
/* The calendar's loading line, across the top of the pane while a request is out */
.settings-shell.invoicing .invoicing-loading {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    overflow: hidden;
    z-index: 6;
    pointer-events: none;
}
.settings-shell.invoicing .invoicing-loading span {
    position: absolute;
    top: 0;
    left: -40%;
    width: 40%;
    height: 100%;
    background-color: #0035d2;
    border-radius: 3px;
    animation: calendar-loading 1.1s ease-in-out infinite;
}
/* =================================================================== */
.settings-shell.invoicing .invoicing-reader-empty {
    -ms-flex: 1;
        flex: 1;
    padding: 28px;
}
.settings-shell.invoicing .invoicing-reader-empty .btn {
    width: auto;
    margin: 18px auto 0;
}
/* The button's icon, not the empty state's large one (.settings-empty i) */
.settings-shell.invoicing .invoicing-reader-empty .settings-empty .btn i {
    margin: 0 6px 0 0;
    font-size: inherit;
    color: inherit;
}
/* What can be done with the open invoice, along the top of the pane */
.settings-shell.invoicing .invoicing-reader-tools {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 14px 28px;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
}
.settings-shell.invoicing .invoice-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
}
.settings-shell.invoicing .invoice-actions-divider {
    width: 1px;
    height: 22px;
    margin: 0 4px;
    background-color: #e0e6ed;
}
.settings-shell.invoicing .invoice-delete-btn:not([disabled]):hover {
    border-color: #d9534f;
    color: #d9534f;
}
.settings-shell.invoicing .invoice-delete-btn:not([disabled]):hover .fa {
    color: #d9534f;
}
/* The invoice, with the payment card beside it while anything is owing */
.settings-shell.invoicing .invoice-reading {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 20px;
}
/* The invoice's column, which sets the invoice's width. Its messages and confirmations sit in it too,
	   so none is ever wider than the invoice - with the payment card beside it or not. */
.settings-shell.invoicing .invoice-reading-main {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-width: 0;
    max-width: 820px;
}
/* ! Payment card - as compact as the inventory's stock adjustment:
	/* the amount, how it was paid, where it went, and one button
	/* =================================================================== */
.settings-shell.invoicing .invoice-pay-card {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    -ms-flex: 0 0 260px;
        flex: 0 0 260px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
    padding: 16px 16px 14px;
}
.settings-shell.invoicing .invoice-pay-card .form-control {
    width: 100%;
}
.settings-shell.invoicing .invoice-pay-card .inv-panel-save {
    width: 100%;
    min-width: 0;
    margin-top: 4px;
}
/* =================================================================== */
.settings-shell.invoicing .invoice-pay-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 10px;
    margin-bottom: 2px;
}
.settings-shell.invoicing .invoice-pay-head h5 {
    margin: 0;
    font-size: 13.5px;
    font-weight: 700;
    color: #2a307f;
}
.settings-shell.invoicing .invoice-pay-head span {
    font-size: 12px;
    color: #6c757d;
    font-variant-numeric: tabular-nums;
}
.settings-shell.invoicing .invoice-pay-amount {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.settings-shell.invoicing .invoice-pay-amount .fee-input {
    -ms-flex: 1;
        flex: 1;
}
.settings-shell.invoicing .invoice-pay-amount .form-control {
    font-size: 15px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.settings-shell.invoicing .invoice-pay-amount .chip-select {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 6px 12px;
    font-family: inherit;
}
.settings-shell.invoicing .invoice-pay-hint {
    margin: 0;
    font-size: 11.5px;
    color: #6c757d;
    text-align: center;
}
.settings-shell.invoicing .invoice-confirm b {
    display: block;
    margin-bottom: 2px;
}
.settings-shell.invoicing .invoice-confirm-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
}
.settings-shell.invoicing .invoice-confirm-delete {
    display: -ms-flexbox;
    display: flex;
    margin-bottom: 20px;
}
/* ! The printed invoice - a sheet of paper, after the lens dispensing
	/* invoice (.lens-invoice-doc)
	/* =================================================================== */
.settings-shell.invoicing .invoice-doc {
    position: relative;
    margin: 0;
    padding: 34px 38px 30px;
    overflow: hidden;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    box-shadow: 0 10px 30px rgba(10, 37, 64, 0.08);
    font-size: 13px;
    color: #343a40;
}
.settings-shell.invoicing .invoice-doc::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 5px;
    background: linear-gradient(90deg, #0035d2 0%, #00bcd4 100%);
}
/* =================================================================== */
.settings-shell.invoicing .invoice-doc-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell.invoicing .invoice-doc-practice {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #0035d2;
}
.settings-shell.invoicing .invoice-doc-practice-sub {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 2px 12px;
    margin-top: 4px;
    font-size: 11.5px;
    color: #6c757d;
}
.settings-shell.invoicing .invoice-doc-title {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 6px;
}
.settings-shell.invoicing .invoice-doc-word {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 22px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #0a2540;
}
.settings-shell.invoicing .invoice-doc-number {
    margin-top: -4px;
    font-family: SFMono-Regular, Consolas, "Liberation Mono", monospace;
    font-size: 12.5px;
    color: #6c757d;
}
.settings-shell.invoicing .invoice-doc-meta {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 14px 34px;
    margin: 20px 0 24px;
}
.settings-shell.invoicing .invoice-doc-meta dt {
    margin-bottom: 4px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell.invoicing .invoice-doc-meta dd {
    margin: 0;
    font-size: 13px;
    color: #2a307f;
}
.settings-shell.invoicing .invoice-doc-meta dd small {
    display: block;
    font-size: 11px;
}
/* Up to 255 characters typed in Xero, so it wraps rather than pushing the dates off the sheet */
.settings-shell.invoicing .invoice-doc-reference {
    -ms-flex: 0 1 220px;
        flex: 0 1 220px;
    min-width: 0;
    overflow-wrap: anywhere;
}
.settings-shell.invoicing .invoice-doc-to {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
}
.settings-shell.invoicing .invoice-doc-to dd b {
    display: block;
    font-weight: 600;
}
.settings-shell.invoicing .invoice-doc-to dd span {
    font-size: 12px;
    color: #6c757d;
}
.settings-shell.invoicing .invoice-doc-lines {
    width: 100%;
    border-collapse: collapse;
}
.settings-shell.invoicing .invoice-doc-lines > thead > tr > th {
    padding: 8px 10px;
    border-bottom: 2px solid #2a307f;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #2a307f;
    text-align: left;
    white-space: nowrap;
}
.settings-shell.invoicing .invoice-doc-lines > tbody > tr > th, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > td {
    padding: 11px 10px;
    border-bottom: 1px solid #eef1f7;
    vertical-align: top;
    text-align: left;
}
.settings-shell.invoicing .invoice-doc-lines > tbody > tr > th {
    font-weight: normal;
}
.settings-shell.invoicing .invoice-doc-lines > thead > tr > .num, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > .num {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.settings-shell.invoicing .invoice-doc-lines > thead > tr > th:first-child, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > th:first-child {
    padding-left: 0;
}
.settings-shell.invoicing .invoice-doc-lines > thead > tr > :last-child, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > :last-child {
    padding-right: 0;
}
.settings-shell.invoicing .invoice-doc-item {
    display: block;
    font-weight: 600;
    color: #2a307f;
}
.settings-shell.invoicing .invoice-doc-code {
    display: block;
    margin-top: 2px;
    font-size: 11px;
    color: #6c757d;
}
.settings-shell.invoicing .inv-mono {
    font-family: SFMono-Regular, Consolas, "Liberation Mono", monospace;
    font-size: 11px;
}
.settings-shell.invoicing .invoice-doc-tax {
    font-size: 11.5px;
    color: #6c757d;
    white-space: nowrap;
}
.settings-shell.invoicing .invoice-doc-totals {
    width: 320px;
    max-width: 100%;
    margin: 18px 0 0 auto;
}
/* Shared by the printed invoice's totals and the editor's summary */
.settings-shell.invoicing .invoice-total-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
    padding: 4px 0;
    font-size: 12.5px;
    color: #343a40;
    font-variant-numeric: tabular-nums;
}
.settings-shell.invoicing .invoice-total-row.muted {
    color: #6c757d;
}
.settings-shell.invoicing .invoice-total-row.total {
    margin-top: 6px;
    padding-top: 9px;
    border-top: 1px solid #e0e6ed;
    font-weight: 700;
    color: #0a2540;
}
.settings-shell.invoicing .invoice-total-row.payment {
    color: #2e7d32;
}
.settings-shell.invoicing .invoice-total-row.payment .fa {
    margin-right: 4px;
}
.settings-shell.invoicing .invoice-total-row.due {
    margin-top: 8px;
    padding: 9px 12px;
    border-radius: 8px;
    background-color: #e7f0ff;
    font-size: 14px;
    font-weight: 700;
    color: #0035d2;
}
/* ! Feedback, where the action happened
	/* A button shows it working and then ticks; what changed is
	/* highlighted for a moment; an error sits beside what failed.
	/* =================================================================== */
.settings-shell.invoicing .invoice-list-table > tbody > tr.is-fresh > th, .settings-shell.invoicing .invoice-list-table > tbody > tr.is-fresh > td {
    animation: invoicing-fresh 2.4s ease-out;
}
/* A deleted invoice's row fades out of the list (ngAnimate) */
.settings-shell.invoicing .invoice-list-table > tbody > tr.ng-leave {
    opacity: 1;
    transition: opacity 0.35s ease;
}
/* =================================================================== */
.settings-shell.invoicing .invoice-list-table > tbody > tr.ng-leave.ng-leave-active {
    opacity: 0;
}
.settings-shell.invoicing .invoice-total-row.payment.is-fresh {
    margin: 0 -8px;
    padding-left: 8px;
    padding-right: 8px;
    border-radius: 8px;
    animation: invoicing-fresh 2.4s ease-out;
}
.settings-shell.invoicing .inv-status.is-fresh {
    animation: invoicing-pop 0.5s ease-out 0.15s;
}
/* Done: green, and not dimmed if the button is briefly disabled while the list reloads */
.settings-shell.invoicing .cal-btn.is-done, .settings-shell.invoicing .cal-btn.is-done:hover:not([disabled]), .settings-shell.invoicing .cal-btn.is-done[disabled] {
    border-color: rgba(32, 201, 151, 0.5);
    background-color: rgba(32, 201, 151, 0.08);
    color: #2e7d32;
    opacity: 1;
}
.settings-shell.invoicing .cal-btn.is-done .fa, .settings-shell.invoicing .cal-btn.is-done:hover:not([disabled]) .fa, .settings-shell.invoicing .cal-btn.is-done[disabled] .fa {
    color: #2e7d32;
}
.settings-shell.invoicing .inv-panel-save.is-done, .settings-shell.invoicing .inv-panel-save.is-done[disabled] {
    background-color: #2e7d32;
    box-shadow: 0 2px 6px rgba(32, 201, 151, 0.3);
    color: #ffffff;
}
.settings-shell.invoicing .invoicing-inline-error {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 6px;
    margin: 8px 0 0;
    font-size: 12px;
    line-height: 1.45;
    color: #d9534f;
}
.settings-shell.invoicing .invoicing-inline-error .fa {
    margin-top: 2px;
}
.settings-shell.invoicing .invoicing-inline-error > span {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.invoicing .invoicing-inline-dismiss {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 0 2px;
    border: none;
    background: none;
    color: inherit;
    font-size: 11px;
    opacity: 0.6;
}
.settings-shell.invoicing .invoicing-inline-dismiss:hover {
    opacity: 1;
}
.settings-shell.invoicing .invoice-editor-error {
    -ms-flex-align: center;
        align-items: center;
    margin: 0 auto 0 0;
}
.settings-shell.invoicing .invoice-items-error {
    -ms-flex-align: center;
        align-items: center;
    margin: -8px 0 14px;
}
.settings-shell.invoicing .invoice-items-error .link-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.settings-shell.invoicing .invoice-pay-error {
    margin: 0;
}
/* The email just saved: a small tick that pops in beside it */
.settings-shell.invoicing .invoicing-saved {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    margin-left: 6px;
    padding: 1px 8px;
    border-radius: 20px;
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
    font-size: 10.5px;
    font-weight: 700;
}
.settings-shell.invoicing .invoicing-saved.ng-enter {
    opacity: 0;
    transform: scale(0.85);
}
.settings-shell.invoicing .invoicing-saved.ng-enter-active {
    opacity: 1;
    transform: scale(1);
    transition: opacity 0.18s ease, transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
}
/* ! Connect to Xero (before the list): one centred card, one step at
	/* a time, with where it is in the two steps above it
	/* =================================================================== */
.settings-shell.invoicing .invoicing-setup {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
}
/* =================================================================== */
.settings-shell.invoicing .invoicing-connect {
    width: 100%;
    max-width: 520px;
    margin-top: 4vh;
}
.settings-shell.invoicing .invoicing-connect-steps {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
    margin: 0 0 16px;
    padding: 0;
    list-style: none;
}
.settings-shell.invoicing .invoicing-connect-steps > li {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 7px;
    font-size: 12px;
    font-weight: 600;
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-connect-steps > li.is-current {
    color: #0035d2;
}
.settings-shell.invoicing .invoicing-connect-steps > li.is-done {
    color: #2e7d32;
}
.settings-shell.invoicing .invoicing-connect-steps .invoicing-connect-line {
    -ms-flex: 0 0 40px;
        flex: 0 0 40px;
    height: 1px;
    background-color: #e0e6ed;
}
.settings-shell.invoicing .invoicing-connect-dot {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 22px;
    height: 22px;
    border: 2px solid currentColor;
    border-radius: 50%;
    font-size: 11px;
    font-weight: 700;
}
.settings-shell.invoicing .invoicing-connect-steps > li.is-done .invoicing-connect-dot {
    border-color: #2e7d32;
    background-color: #2e7d32;
    color: #ffffff;
}
.settings-shell.invoicing .invoicing-connect-card {
    padding: 28px 30px 24px;
    text-align: center;
}
.settings-shell.invoicing .invoicing-connect-card h4 {
    margin: 0 0 8px;
    font-size: 17px;
    color: #2a307f;
}
.settings-shell.invoicing .invoicing-connect-card p {
    margin: 0 auto 16px;
    max-width: 42ch;
    font-size: 13px;
    line-height: 1.55;
    color: #878ba0;
}
.settings-shell.invoicing .invoicing-connect-card .form-control {
    text-align: left;
}
.settings-shell.invoicing .invoicing-connect-card .field-help {
    margin: 10px 0 0;
    text-align: left;
}
.settings-shell.invoicing .invoicing-connect-icon {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 48px;
    height: 48px;
    margin-bottom: 12px;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 20px;
}
.settings-shell.invoicing .invoicing-connect-icon.is-warning {
    background-color: #fff8e1;
    color: #856404;
}
.settings-shell.invoicing .invoicing-connect-checking {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
    padding: 24px 0;
    font-size: 13px;
    color: #6c757d;
}
.settings-shell.invoicing .invoicing-connect-checking .fa {
    font-size: 18px;
    color: #0035d2;
}
.settings-shell.invoicing .invoicing-connect-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin-top: 18px;
}
/* Create on the left, link on the right, as a dialog's cancel and confirm */
.settings-shell.invoicing .invoicing-connect-actions.is-split {
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-pack: justify;
        justify-content: space-between;
}
.settings-shell.invoicing .invoicing-connect-primary {
    width: auto;
    min-width: 180px;
    margin: 0;
}
/* Under the card, so it wins over the card's centred paragraph rule */
.settings-shell.invoicing .invoicing-connect-card .invoicing-connect-error {
    max-width: none;
    margin: 12px 0 0;
    color: #d9534f;
    font-size: 12px;
    text-align: left;
}
/* Why the patient is being linked again, above the search */
.settings-shell.invoicing .invoicing-connect-card .settings-notice.invoicing-link-lost {
    margin: 0 0 14px;
    padding: 10px 12px;
    font-size: 12px;
    text-align: left;
}
.settings-shell.invoicing .invoicing-contact-search {
    -ms-flex: none;
        flex: none;
    width: 100%;
}
.settings-shell.invoicing .invoicing-contact-search .invoicing-contact-busy {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #0035d2;
}
/* Pick one, then link it: each result a row with a radio mark */
.settings-shell.invoicing .invoicing-contact-results {
    max-height: 240px;
    overflow-y: auto;
    margin-top: 8px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    text-align: left;
}
.settings-shell.invoicing .invoicing-contact-result {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    width: 100%;
    padding: 9px 12px;
    border: none;
    background: none;
    font-size: 13px;
    text-align: left;
}
.settings-shell.invoicing .invoicing-contact-result + .invoicing-contact-result {
    border-top: 1px solid #e0e6ed;
}
.settings-shell.invoicing .invoicing-contact-result:hover:not([disabled]) {
    background-color: #f2f6fb;
}
.settings-shell.invoicing .invoicing-contact-result.is-selected {
    background-color: #e7f0ff;
}
.settings-shell.invoicing .invoicing-contact-result[disabled] {
    cursor: not-allowed;
}
.settings-shell.invoicing .invoicing-contact-radio {
    -ms-flex: 0 0 16px;
        flex: 0 0 16px;
    width: 16px;
    height: 16px;
    border: 2px solid #bdbec1;
    border-radius: 50%;
    background-color: #ffffff;
}
.settings-shell.invoicing .invoicing-contact-result.is-selected > .invoicing-contact-radio {
    border: 5px solid #0035d2;
}
.settings-shell.invoicing .invoicing-contact-result.is-taken > .invoicing-contact-radio {
    background-color: #f8f9fa;
}
.settings-shell.invoicing .invoicing-contact-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-weight: 600;
    color: #2a307f;
}
.settings-shell.invoicing .invoicing-contact-result.is-taken > .invoicing-contact-name {
    color: #6c757d;
}
.settings-shell.invoicing .invoicing-contact-taken {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    color: #856404;
    font-size: 11px;
}
.settings-shell.invoicing .invoicing-contact-empty {
    padding: 14px 12px;
    font-size: 12.5px;
    color: #6c757d;
}
/* ! Editor
	/* =================================================================== */
.settings-shell.invoicing .invoice-back {
    margin-bottom: 16px;
}
/* =================================================================== */
.settings-shell.invoicing .invoice-editor-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: minmax(0, 1fr) 280px;
        grid-template-columns: minmax(0, 1fr) 280px;
    -ms-flex-align: start;
        align-items: start;
    gap: 20px;
}
.settings-shell.invoicing .invoice-editor-main, .settings-shell.invoicing .invoice-editor-side {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 20px;
    min-width: 0;
}
.settings-shell.invoicing .settings-card {
    padding: 20px 22px;
}
.settings-shell.invoicing .settings-card .card-header-flex {
    padding-bottom: 12px;
    margin-bottom: 16px;
}
/* Clinic date, due date and the preset beside them, each only as wide as a date needs */
.settings-shell.invoicing .invoice-dates {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: end;
        align-items: flex-end;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 12px 16px;
}
.settings-shell.invoicing .invoice-date-field {
    -ms-flex: 0 0 160px;
        flex: 0 0 160px;
    width: 160px;
}
.settings-shell.invoicing .invoice-due-preset {
    -ms-flex: 0 0 130px;
        flex: 0 0 130px;
    width: 130px;
}
/* As wide as the date row above it: two dates, the preset and the gaps between them */
.settings-shell.invoicing .invoice-reference-field {
    max-width: 482px;
    margin-top: 12px;
}
/* A wrapping row rather than fixed columns: where the card is too narrow for it all, Add and Clear go
	   onto the next line instead of running past the card's edge */
.settings-shell.invoicing .invoice-add-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 10px;
    margin-bottom: 16px;
    padding: 12px 14px;
    border: 1px dashed rgba(0, 53, 210, 0.25);
    border-radius: 10px;
    background-color: #f8faff;
}
.settings-shell.invoicing .invoice-add-row .control-label {
    margin-bottom: 5px;
}
.settings-shell.invoicing .invoice-add-row .dropdown-menu {
    max-height: 280px;
    overflow-y: auto;
}
.settings-shell.invoicing .invoice-add-row .invoice-add-item {
    -ms-flex: 1 1 180px;
        flex: 1 1 180px;
    min-width: 0;
    max-width: 300px;
}
.settings-shell.invoicing .invoice-add-row .invoice-add-price {
    -ms-flex: 0 0 110px;
        flex: 0 0 110px;
}
.settings-shell.invoicing .invoice-add-row .invoice-add-variation {
    -ms-flex: 0 1 200px;
        flex: 0 1 200px;
    min-width: 150px;
}
/* Sold beyond what is in stock: the rest goes on backorder */
.settings-shell.invoicing .invoice-add-row .invoice-add-backorder {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
    margin: 0;
    font-size: 12.5px;
    color: #856404;
}
.settings-shell.invoicing .invoice-add-row .invoice-add-qty {
    -ms-flex: 0 0 70px;
        flex: 0 0 70px;
}
.settings-shell.invoicing .invoice-add-row .invoice-add-disc {
    -ms-flex: 0 0 80px;
        flex: 0 0 80px;
}
/* One row in fixed columns: find the item, set its price, quantity and discount, add it */
.settings-shell.invoicing .invoice-add-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    gap: 6px;
}
.settings-shell.invoicing .invoice-add-btn, .settings-shell.invoicing .invoice-clear-btn {
    width: auto;
    min-width: 0;
    margin: 0;
    padding: 8px 16px;
}
/* .btn-cancel's own size is a smaller pill; here it matches Add beside it */
.settings-shell.invoicing .invoice-clear-btn {
    font-size: 13px;
}
/* The calendar's date pickers: read-only so the picker is used, but not greyed as if disabled */
.settings-shell.invoicing datepicker {
    display: block;
    width: 100%;
}
.settings-shell.invoicing datepicker .form-control[readonly] {
    background-color: #ffffff;
    color: #333333;
    cursor: pointer;
}
.settings-shell.invoicing .invoice-lines-empty {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
    padding: 26px 16px;
    border-radius: 10px;
    background-color: #f8faff;
    color: #6c757d;
    font-size: 13px;
}
.settings-shell.invoicing .invoice-lines-empty .fa {
    font-size: 16px;
    color: #c3c9da;
}
.settings-shell.invoicing .invoice-lines-wrap {
    margin-bottom: 0;
}
.settings-shell.invoicing .invoice-lines-table > tbody > tr > td {
    padding-top: 7px;
    padding-bottom: 7px;
}
/* More of an inventory line than is in stock: the rest goes on backorder */
.settings-shell.invoicing .invoice-lines-table .invoice-line-backorder {
    display: block;
    margin-top: 3px;
    font-size: 12px;
    font-weight: normal;
    color: #856404;
}
.settings-shell.invoicing .invoice-lines-table .form-control {
    padding: 6px 9px;
    font-variant-numeric: tabular-nums;
}
.settings-shell.invoicing .invoice-lines-table .invoice-line-qty {
    width: 84px;
}
.settings-shell.invoicing .invoice-lines-table .invoice-line-price {
    width: 120px;
}
.settings-shell.invoicing .invoice-lines-table .invoice-line-disc {
    width: 90px;
}
.settings-shell.invoicing .invoice-lines-table .inv-col-actions {
    width: 1%;
}
.settings-shell.invoicing .invoice-summary-card .field-help {
    margin: 12px 0 0;
}
.settings-shell.invoicing .invoice-acc-card .btn {
    -ms-flex-item-align: start;
        align-self: flex-start;
    margin-top: 12px;
}
.settings-shell.invoicing .invoice-editor-bar .action-hint {
    font-style: normal;
    font-variant-numeric: tabular-nums;
}
/* An item picked but not added: the add row is marked, and the footer says so beside the button it holds
	   back, with the two ways past it */
.settings-shell.invoicing .invoice-add-row.is-pending {
    border: 1px solid #ffab00;
    background-color: #fff8e6;
    box-shadow: 0 0 0 3px rgba(255, 171, 0, 0.15);
}
.settings-shell.invoicing .invoice-pending-alert {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-left: auto;
    min-width: 0;
    max-width: 420px;
    padding: 8px 12px;
    border: 1px solid #ffab00;
    border-radius: 8px;
    background-color: #fff8e6;
    color: #856404;
    font-size: 12.5px;
    animation: invoicing-pop 0.35s ease;
}
.settings-shell.invoicing .invoice-pending-alert > .fa {
    color: #ffab00;
    font-size: 15px;
}
.settings-shell.invoicing .invoice-pending-alert .invoice-pending-text {
    min-width: 0;
}
@media (prefers-reduced-motion: reduce) {
    .settings-shell.invoicing .invoice-pending-alert {
        animation: none;
    }
}
/* Money fields: the $ sits inside the field, so the field is a block the $ can be placed in, and its
	   text starts clear of it. After the compact table and card rules, which would otherwise reset the
	   padding and draw the $ over the figures. */
.settings-shell.invoicing .fee-input {
    display: block;
    position: relative;
}
.settings-shell.invoicing .fee-input .fee-prefix {
    left: 10px;
    line-height: 1;
}
.settings-shell.invoicing .fee-input > .form-control, .settings-shell.invoicing .invoice-lines-table .fee-input > .form-control, .settings-shell.invoicing .invoice-pay-amount .fee-input > .form-control {
    padding-left: 22px;
}
/* Leaving with unsaved work: a card over the editor, the editor dimmed behind it */
.settings-shell.invoicing .invoice-discard-overlay {
    position: absolute;
    inset: 0;
    z-index: 20;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    padding: 24px;
    background-color: rgba(28, 35, 64, 0.35);
    animation: invoicing-fresh 0.15s ease;
}
.settings-shell.invoicing .invoice-discard-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    width: 380px;
    max-width: 100%;
    padding: 24px 24px 20px;
    text-align: center;
    box-shadow: 0 12px 32px rgba(28, 35, 64, 0.25);
}
.settings-shell.invoicing .invoice-discard-card h4 {
    margin: 10px 0 6px;
    font-size: 16px;
}
.settings-shell.invoicing .invoice-discard-card p {
    margin: 0 0 18px;
    color: #343a40;
    font-size: 13px;
}
.settings-shell.invoicing .invoice-discard-icon {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background-color: #fbeceb;
    color: #a94442;
    font-size: 18px;
}
.settings-shell.invoicing .invoice-discard-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
}
.settings-shell.invoicing .invoice-discard-actions .btn-danger-outline {
    border: 1px solid rgba(169, 68, 66, 0.55);
    background-color: #ffffff;
    color: #a94442;
}
.settings-shell.invoicing .invoice-discard-actions .btn-danger-outline:hover, .settings-shell.invoicing .invoice-discard-actions .btn-danger-outline:focus-visible {
    border-color: #a94442;
    background-color: #fbeceb;
}
/* Taking a payment, step two: what is about to be recorded, and Confirm - set apart so it can't be
	   mistaken for the first step */
.settings-shell.invoicing .invoice-pay-card.is-confirming {
    border-color: #2e7d32;
    box-shadow: 0 0 0 3px rgba(32, 201, 151, 0.08);
}
.settings-shell.invoicing .invoice-pay-confirm {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
    margin-top: 4px;
    padding: 10px;
    border-radius: 8px;
    background-color: rgba(32, 201, 151, 0.08);
    animation: invoicing-pop 0.3s ease;
}
.settings-shell.invoicing .invoice-pay-confirm p {
    margin: 0;
    color: #2a307f;
    font-size: 12.5px;
    line-height: 1.45;
}
.settings-shell.invoicing .invoice-pay-confirm .inv-panel-save {
    margin-top: 0;
    background-color: #2e7d32;
    color: #ffffff;
}
.settings-shell.invoicing .invoice-pay-confirm .invoice-pay-back {
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
}
@media (prefers-reduced-motion: reduce) {
    .settings-shell.invoicing .invoice-pay-confirm {
        animation: none;
    }
}
/* ngAnimate keeps an ng-if's outgoing element on the page for as long as its animation runs, so Back
	   showed the confirm panel and the Take button together for a moment. They swap at once. !important
	   because it has to beat the panel's own pop-in animation. */
.settings-shell.invoicing .invoice-pay-card > .inv-panel-save.ng-enter, .settings-shell.invoicing .invoice-pay-card > .inv-panel-save.ng-leave, .settings-shell.invoicing .invoice-pay-confirm.ng-enter, .settings-shell.invoicing .invoice-pay-confirm.ng-leave {
    transition: none !important;
    animation: none !important;
}
/* =================================================================== */
/* ! Responsive - laptops and tablets (landscape and portrait)
/* Phones are not designed for yet: below a portrait tablet the list
/* simply stacks above the invoice.
/* =================================================================== */
/* Small laptops and landscape tablets: the payment card moves above the invoice, laid out in a row */
@media (max-width: 1300px) {
	.settings-shell.invoicing .invoice-doc-optional {
        display: none;
    }
	.settings-shell.invoicing .invoice-editor-grid {
        -ms-grid-columns: minmax(0, 1fr);
            grid-template-columns: minmax(0, 1fr);
    }
	.settings-shell.invoicing .invoice-reading {
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse;
        -ms-flex-align: stretch;
            align-items: stretch;
    }
	/* Stacked, the column takes the full width, and the invoice and its messages with it */
	.settings-shell.invoicing .invoice-reading-main {
        max-width: none;
    }
	/* Amount, how, where and the button on one line; the heading and anything said, full width */
	.settings-shell.invoicing .invoice-pay-card {
        position: static;
        display: -ms-grid;
        display: grid;
        -ms-grid-columns: minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1fr) auto;
            grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1fr) auto;
        -ms-flex-align: center;
            align-items: center;
        gap: 8px 10px;
    }
	.settings-shell.invoicing .invoice-pay-card .invoice-pay-head, .settings-shell.invoicing .invoice-pay-card .invoicing-inline-error, .settings-shell.invoicing .invoice-pay-card .invoice-pay-hint {
        grid-column: 1 / -1;
    }
	.settings-shell.invoicing .invoice-pay-card .invoice-pay-hint {
        text-align: left;
    }
	.settings-shell.invoicing .invoice-pay-card .inv-panel-save {
        width: auto;
        margin-top: 0;
        white-space: nowrap;
    }
}
/* Landscape tablets (1024-1100): the dialog takes nearly the whole screen, the list narrows, and the
   status in it shows as its icon alone */
@media (max-width: 1100px) {
	.invoicing-dialog {
		min-width: 96%;
		width: 96%;
		height: 94vh;
	}

	.settings-shell.invoicing .invoicing-list {
        -ms-flex-preferred-size: 260px;
            flex-basis: 260px;
        width: 260px;
    }

	.settings-shell.invoicing .invoice-list-table .invoice-list-total-col {
        width: 92px;
    }

	.settings-shell.invoicing .invoice-list-table .invoice-status-text {
        display: none;
    }

	.settings-shell.invoicing .invoice-list-table .inv-status {
        padding: 2px 6px;
    }

	.settings-shell.invoicing .invoicing-reader-tools {
        padding: 12px 20px;
    }

	.settings-shell.invoicing .settings-pane-body {
        padding: 20px;
    }

	/* The billing item gets its own line; price, quantity, discount and Add share the next */

	.settings-shell.invoicing .invoice-add-row .invoice-add-item {
        -ms-flex-preferred-size: 100%;
            flex-basis: 100%;
        max-width: 380px;
    }
}
/* Portrait tablets (768-900): full width, list and invoice still side by side - the settings shell
   would stack them here, which leaves too little of either */
@media (max-width: 900px) {
	.invoicing-dialog {
		min-width: 100%;
		width: 100%;
		height: 100vh;
		max-height: 100vh;
		border-radius: 0;
	}

	.settings-shell.invoicing {
		-ms-flex-direction: row;
		    flex-direction: row;
	}

	.settings-shell.invoicing .invoicing-list {
        -ms-flex-preferred-size: 230px;
            flex-basis: 230px;
        width: 230px;
    }

	.settings-shell.invoicing .invoicing-list-head {
        padding: 14px 12px 12px;
    }

	.settings-shell.invoicing .invoicing-patient .settings-avatar {
        display: none;
    }

	.settings-shell.invoicing .invoicing-balance {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        gap: 6px 14px;
        padding: 10px 12px;
    }

	.settings-shell.invoicing .invoice-list-table > thead > tr > :first-child, .settings-shell.invoicing .invoice-list-table > tbody > tr > :first-child {
        padding-left: 12px;
    }

	.settings-shell.invoicing .invoice-list-table > thead > tr > :last-child, .settings-shell.invoicing .invoice-list-table > tbody > tr > :last-child {
        padding-right: 12px;
    }

	.settings-shell.invoicing .invoicing-list-foot {
        padding: 10px 12px 12px;
    }

	.settings-shell.invoicing .invoicing-acc-link {
        margin-left: 0;
    }

	.settings-shell.invoicing .invoicing-reader-tools {
        padding: 10px 16px;
    }

	.settings-shell.invoicing .invoice-actions-divider {
        display: none;
    }

	.settings-shell.invoicing .settings-pane-body {
        padding: 16px;
    }

	.settings-shell.invoicing .invoice-doc {
        padding: 24px 20px 20px;
    }

	.settings-shell.invoicing .invoice-doc-head {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }

	.settings-shell.invoicing .invoice-doc-lines > thead > tr > th, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > th, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > td {
        padding-left: 6px;
        padding-right: 6px;
    }

	.settings-shell.invoicing .invoice-pay-card {
        -ms-grid-columns: (minmax(0, 1fr))[2];
            grid-template-columns: repeat(2, minmax(0, 1fr));
    }

	.settings-shell.invoicing .invoice-lines-table .invoice-line-qty {
        width: 64px;
    }

	.settings-shell.invoicing .invoice-lines-table .invoice-line-price {
        width: 100px;
    }

	.settings-shell.invoicing .invoice-lines-table .invoice-line-disc {
        width: 72px;
    }

	.settings-shell.invoicing .invoicing-connect {
        margin-top: 0;
    }

	.settings-shell.invoicing .invoicing-connect-card {
        padding: 22px 20px 20px;
    }
}
/* Below a portrait tablet (not yet designed for): the list stacks above the invoice, kept short */
@media (max-width: 759px) {
	.settings-shell.invoicing {
		-ms-flex-direction: column;
		    flex-direction: column;
	}
	.settings-shell.invoicing .invoicing-list {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        width: 100%;
        max-height: 42%;
        border-right: none;
        border-bottom: 1px solid #e0e6ed;
    }
	.settings-shell.invoicing .invoicing-list-foot {
        display: none;
    }
}
/* Touch screens: room for a finger on every row, button and field */
@media (pointer: coarse) {
	.settings-shell.invoicing .invoice-list-table > tbody > tr > th, .settings-shell.invoicing .invoice-list-table > tbody > tr > td {
        padding-top: 12px;
        padding-bottom: 12px;
    }
	.settings-shell.invoicing .cal-btn {
        height: 40px;
    }
	.settings-shell.invoicing .cal-icon-btn {
        width: 40px;
    }
	.settings-shell.invoicing .form-control {
        min-height: 40px;
    }
	.settings-shell.invoicing .chip-select {
        padding-top: 8px;
        padding-bottom: 8px;
    }
	.settings-shell.invoicing .inv-panel-save, .settings-shell.invoicing .invoicing-mini-btn {
        min-height: 40px;
    }
	.settings-shell.invoicing .invoicing-contact-result {
        padding-top: 12px;
        padding-bottom: 12px;
    }
	.settings-shell.invoicing .link-action, .settings-shell.invoicing .invoicing-inline-dismiss {
        padding: 6px 4px;
    }
}
/* Anyone who has asked for less motion gets the ticks and words without the highlight or pop */
@media (prefers-reduced-motion: reduce) {
	.settings-shell.invoicing .is-fresh, .settings-shell.invoicing .is-fresh > th, .settings-shell.invoicing .is-fresh > td {
        animation: none;
    }
	.settings-shell.invoicing .invoice-list-table > tbody > tr.ng-leave, .settings-shell.invoicing .invoicing-saved.ng-enter-active {
        transition: none;
    }
}
/* =================================================================== */
/* ! Worklists (tasks, surgery waitlist)
/* Built on the settings shell (_settings.css) like the calendar and
/* invoicing: filters in the left rail, the list as a table, and the
/* open row in a side panel beside it. The table, status pills, side
/* panel, notices and confirms come from _inventory.css, which lists
/* this shell alongside its own; this file adds what only these need.
/* The new task dialog uses the same shell, laid out as one column.
/* =================================================================== */
.worklist-dialog {
	min-width: 88%;
	width: 88%;
	height: 90vh;
	max-height: 94vh;
	padding: 0;
	border-top-width: 0;
}
.task-create-dialog {
	width: 660px;
	max-width: 94vw;
	max-height: 92vh;
	padding: 0;
	border-top-width: 0;
}
/* Add to surgery waitlist: the new task dialog, with a slimmer patient header */
/* A slimmer patient header than the new task's, to leave the fields room */
.task-create-dialog.waitlist-add-dialog .settings-shell.worklist.task-create .wl-create-head {
    padding: 10px 24px;
}
.task-create-dialog.waitlist-add-dialog .settings-shell.worklist.task-create .wl-create-head .settings-avatar {
    width: 34px;
    height: 34px;
}
/* ! Left rail
	/* =================================================================== */
.settings-shell.worklist .worklist-rail {
    -ms-flex-preferred-size: 256px;
        flex-basis: 256px;
    width: 256px;
    padding-bottom: 8px;
}
/* =================================================================== */
.settings-shell.worklist .settings-nav-item:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.settings-shell.worklist .nav-item-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* How many are behind each filter - white on the active row */
.settings-shell.worklist .wl-count {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    min-width: 22px;
    padding: 1px 7px;
    border-radius: 10px;
    background-color: #f8f9fa;
    color: #7d8399;
    font-size: 10.5px;
    font-weight: 700;
    text-align: center;
    font-variant-numeric: tabular-nums;
}
/* Something in the list is overdue */
.settings-shell.worklist .wl-count.is-alert {
    background-color: #fbeceb;
    color: #a94442;
}
.settings-shell.worklist .settings-nav-item.active .wl-count {
    background-color: #ffffff;
    color: #0035d2;
}
.settings-shell.worklist .settings-nav-item.active .wl-count.is-alert {
    color: #a94442;
}
/* Practices: tick to add one alongside the others, click the name to see only it (as the calendar) */
.settings-shell.worklist .wl-tick-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 2px 12px;
    margin-bottom: 1px;
    border-radius: 10px;
    transition: background-color 0.15s ease;
}
.settings-shell.worklist .wl-tick-row:hover {
    background-color: #f4f7fe;
}
.settings-shell.worklist .wl-tick-row .wl-check {
    width: 18px;
    height: 18px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    padding: 0;
    border: 2px solid #c0cde0;
    border-radius: 5px;
    background-color: #ffffff;
    color: #ffffff;
    font-size: 9px;
    transition: all 0.15s ease;
}
.settings-shell.worklist .wl-tick-row .wl-check i {
    opacity: 0;
}
.settings-shell.worklist .wl-tick-row .wl-check:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* The last practice ticked can't be unticked; it shows as ticked, not as greyed out */
.settings-shell.worklist .wl-tick-row .wl-check[disabled] {
    cursor: default;
}
.settings-shell.worklist .wl-tick-row.is-ticked .wl-check {
    border-color: #0035d2;
    background-color: #0035d2;
}
.settings-shell.worklist .wl-tick-row.is-ticked .wl-check i {
    opacity: 1;
}
.settings-shell.worklist .wl-tick-row .wl-tick-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    padding: 6px 0;
    border: none;
    background: none;
    text-align: left;
    font-size: 13px;
    font-weight: 600;
    color: #a3aac0;
    line-height: 1.35;
    overflow-wrap: anywhere;
}
.settings-shell.worklist .wl-tick-row .wl-tick-name:hover {
    color: #0035d2;
    text-decoration: underline;
}
.settings-shell.worklist .wl-tick-row.is-ticked .wl-tick-name {
    color: #4a5568;
}
.settings-shell.worklist .settings-nav-footer .wl-new-btn {
    max-width: none;
    margin-top: 10px;
    padding: 7px 14px;
}
.settings-shell.worklist .settings-nav-footer .wl-new-btn i {
    margin-right: 5px;
}
/* New task / Add to waitlist stay in view at the foot of the rail while its filters scroll past */
@media (min-width: 901px) {
    .settings-shell.worklist {/* No gap under the footer for the filters to show through as they scroll */
    }
    .settings-shell.worklist .worklist-rail {
        padding-bottom: 0;
    }
    .settings-shell.worklist .worklist-rail > .settings-nav-footer {
        position: -webkit-sticky;
        position: sticky;
        bottom: 0;
        z-index: 2;
        background-color: #ffffff;
        box-shadow: 0 -6px 10px -8px rgba(10, 37, 64, 0.18);
    }
}
/* ! Toolbar above the list
	/* =================================================================== */
.settings-shell.worklist .wl-toolbar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    padding: 18px 24px 14px;
}
/* =================================================================== */
.settings-shell.worklist .wl-title {
    margin: 0;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    letter-spacing: -0.02em;
    color: #0a2540;
    white-space: nowrap;
}
.settings-shell.worklist .wl-total {
    padding: 2px 9px;
    border-radius: 20px;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 12px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.settings-shell.worklist .wl-spacer {
    -ms-flex: 1;
        flex: 1;
}
.settings-shell.worklist .wl-loading-more {
    color: #6c757d;
    font-size: 12px;
}
/* A search on a line of its own below the title: the break takes the rest of the title's line */
.settings-shell.worklist .wl-break {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    height: 0;
}
.settings-shell.worklist .wl-search.wl-search-under {
    width: 420px;
    max-width: 100%;
}
.settings-shell.worklist .wl-search {
    position: relative;
    width: 280px;
}
.settings-shell.worklist .wl-search > i {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 12px;
    color: #a3aac0;
    pointer-events: none;
}
.settings-shell.worklist .wl-search .form-control {
    height: 34px;
    padding-left: 31px;
    padding-right: 28px;
}
.settings-shell.worklist .wl-search .wl-search-clear {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 22px;
    height: 22px;
    border: none;
    border-radius: 50%;
    background: none;
    color: #a3aac0;
    font-size: 11px;
}
.settings-shell.worklist .wl-search .wl-search-clear:hover {
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell.worklist .form-control.wl-select {
    width: 170px;
    height: 34px;
    padding-top: 0;
    padding-bottom: 0;
}
/* As the calendar's toolbar buttons */
.settings-shell.worklist .cal-btn {
    height: 34px;
    padding: 0 14px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    color: #333333;
    font-size: 12.5px;
    font-weight: 600;
    transition: all 0.15s ease;
}
.settings-shell.worklist .cal-btn .fa {
    color: #0035d2;
}
.settings-shell.worklist .cal-btn:hover:not([disabled]) {
    border-color: #0035d2;
    color: #0035d2;
}
.settings-shell.worklist .cal-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.settings-shell.worklist .cal-icon-btn {
    width: 34px;
    padding: 0;
    font-size: 12px;
}
/* What just happened, between the toolbar and the list - with Undo where it can be */
.settings-shell.worklist .settings-notice.wl-notice {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -ms-flex-align: center;
        align-items: center;
    margin: 0 24px 12px;
    padding: 10px 14px;
}
.settings-shell.worklist .settings-notice.wl-notice .notice-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.worklist .settings-notice.wl-notice .inv-link-btn {
    margin: 0;
    color: inherit;
    font-weight: 700;
}
.settings-shell.worklist .settings-notice.wl-notice .notice-dismiss {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border: none;
    background: none;
    padding: 0 2px;
    color: inherit;
    opacity: 0.6;
}
.settings-shell.worklist .settings-notice.wl-notice .notice-dismiss i {
    margin: 0;
    font-size: 12px;
    color: inherit;
}
.settings-shell.worklist .settings-notice.wl-notice .notice-dismiss:hover {
    opacity: 1;
}
/* The toolbar sits above, so the body's own top padding would double the gap */
.settings-shell.worklist .settings-pane-body.wl-body {
    padding: 0 24px 24px;
}
.settings-shell.worklist .wl-retry {
    width: auto;
    margin-top: 6px;
    padding: 6px 22px;
}
.settings-shell.worklist .wl-muted {
    color: #6c757d;
}
/* Column headings that sort: the heading's own look, as a button */
.settings-shell.worklist .wl-sort {
    padding: 0;
    border: none;
    background: none;
    color: inherit;
    font: inherit;
    letter-spacing: inherit;
    text-transform: inherit;
    white-space: nowrap;
}
.settings-shell.worklist .wl-sort .fa {
    margin-left: 3px;
}
.settings-shell.worklist .wl-sort .wl-sort-idle {
    opacity: 0.35;
}
.settings-shell.worklist .wl-sort:hover, .settings-shell.worklist .wl-sort:focus-visible {
    color: #0035d2;
    outline: none;
}
.settings-shell.worklist .wl-sort:hover .wl-sort-idle, .settings-shell.worklist .wl-sort:focus-visible .wl-sort-idle {
    opacity: 0.8;
}
/* ! The list
	/* =================================================================== */
.settings-shell.worklist .wl-table > tbody > tr > th, .settings-shell.worklist .wl-table > tbody > tr > td {
    vertical-align: top;
}
.settings-shell.worklist .wl-table .wl-col-date {
    white-space: nowrap;
}
.settings-shell.worklist .wl-table .wl-col-date .inv-status {
    margin-top: 4px;
}
.settings-shell.worklist .wl-table .wl-col-eye {
    width: 56px;
}
.settings-shell.worklist .wl-table .wl-col-progress, .settings-shell.worklist .wl-table .wl-col-preapproval {
    white-space: nowrap;
}
.settings-shell.worklist .wl-table .wl-col-preapproval {
    width: 1%;
}
/* Rows are not opened any more - everything is changed on them */
.settings-shell.worklist .wl-table > tbody > tr > th, .settings-shell.worklist .wl-table > tbody > tr > td {
    cursor: default;
}
.settings-shell.worklist .wl-table .wl-col-book {
    width: 1%;
    white-space: nowrap;
}
/* A block per patient: no lines between its eyes and comments, a line between patients */
.settings-shell.worklist .wl-table > tbody.wl-group > tr > th, .settings-shell.worklist .wl-table > tbody.wl-group > tr > td {
    padding-top: 5px;
    padding-bottom: 5px;
    border-top: none;
    border-bottom: none;
}
.settings-shell.worklist .wl-table > tbody.wl-group > tr:first-child > th, .settings-shell.worklist .wl-table > tbody.wl-group > tr:first-child > td {
    padding-top: 12px;
}
.settings-shell.worklist .wl-table > tbody.wl-group > tr:last-child > td {
    padding-bottom: 12px;
}
.settings-shell.worklist .wl-table > tbody.wl-group > tr > .wl-col-patient {
    padding-bottom: 12px;
}
/* The patient's last eye just done (or the patient reopened): it fades before moving list */
.settings-shell.worklist .wl-table > tbody.wl-group.is-settling {
    opacity: 0.5;
    transition: opacity 0.6s ease 0.2s;
}
/* Between one patient and the next: a firmer line than the hairline between a patient's own entries */
.settings-shell.worklist .wl-table > tbody.wl-group + tbody.wl-group > tr:first-child > th, .settings-shell.worklist .wl-table > tbody.wl-group + tbody.wl-group > tr:first-child > td {
    border-top: 2px solid #c0cde0;
}
/* The patient's eyes and their comments, bracketed together down the eye column - each eye's cell
		   spans its comments */
.settings-shell.worklist .wl-table > tbody > tr.wl-eye-line > td.wl-col-eye {
    box-shadow: inset 2px 0 0 #e7f0ff;
}
/* A hairline between one of the patient's entries and the next - from the eye column on, as the
		   patient's own cell spans them all */
.settings-shell.worklist .wl-table > tbody.wl-group > tr.wl-entry-start > td {
    border-top: 1px dashed #e0e6ed;
}
/* An eye just completed, while the patient's others wait: it fades before it leaves the block */
.settings-shell.worklist .wl-table > tbody > tr.is-settling > td {
    opacity: 0.45;
    transition: opacity 0.6s ease 0.2s;
}
/* The last column clear of the table's right edge, however long what is in it */
.settings-shell.worklist .wl-table > thead > tr > th:last-child, .settings-shell.worklist .wl-table > tbody > tr > td.wl-col-progress {
    padding-right: 24px;
}
/* The surgeon, changed in place */
.settings-shell.worklist .wl-table .wl-col-surgeon .wl-chip-select select {
    max-width: 170px;
}
/* The row name is the patient; a long one wraps rather than widening the column */
.settings-shell.worklist .wl-table .inv-row-link {
    white-space: normal;
}
/* The task list: a centred column of compact cards, each with everything about the task on it and
	   changed there. Light: a hairline border, the label's colour down the left edge. */
.settings-shell.worklist .wl-cards {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
    max-width: 820px;
    margin: 0 auto;
    padding: 0;
    list-style: none;
}
/* =================================================================== */
.settings-shell.worklist .wl-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
    padding: 10px 12px 9px 16px;
    border: 1px solid #e0e6ed;
    border-left: 3px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, opacity 0.6s ease 0.2s;
}
.settings-shell.worklist .wl-card:hover {
    border-top-color: #c0cde0;
    border-right-color: #c0cde0;
    border-bottom-color: #c0cde0;
    box-shadow: 0 2px 8px rgba(10, 37, 64, 0.05);
}
/* Just completed or reopened: the button shows it worked, and the card fades before it moves tab */
.settings-shell.worklist .wl-card.is-settling {
    opacity: 0.5;
}
.settings-shell.worklist .wl-card.is-done .inv-row-link {
    font-weight: 500;
}
.settings-shell.worklist .wl-card.is-done .wl-card-desc-text {
    color: #6c757d;
}
.settings-shell.worklist .wl-card-body {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.worklist .wl-card-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px 8px;
}
/* The patient, with when the task is due beside them */
.settings-shell.worklist .wl-card-who {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px 10px;
    -ms-flex: 1 1 160px;
        flex: 1 1 160px;
    min-width: 0;
}
/* A long name wraps rather than pushing the pickers away */
.settings-shell.worklist .wl-card-who .inv-row-link {
    font-size: 13.5px;
    line-height: 1.35;
    white-space: normal;
    overflow-wrap: anywhere;
}
.settings-shell.worklist .wl-card-sub {
    display: block;
    margin-top: 1px;
    color: #6c757d;
    font-size: 11px;
    font-weight: 400;
}
/* A label or assignee picker, dressed as a chip: the select itself, without its own box */
.settings-shell.worklist .wl-chip-select {
    position: relative;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    height: 24px;
    padding: 0 8px;
    border: 1px solid #e0e6ed;
    border-radius: 999px;
    background-color: #f8f9fa;
    color: #343a40;
    font-size: 11.5px;
    font-weight: 600;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
/* The chip grows with what it holds; the name itself never squeezes to nothing */
.settings-shell.worklist .wl-chip-select select {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    max-width: 190px;
    padding: 0 14px 0 0;
    margin-right: -14px;
    border: none;
    background: transparent;
    color: inherit;
    font: inherit;
    text-overflow: ellipsis;
    cursor: pointer;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}
.settings-shell.worklist .wl-chip-select select:focus {
    outline: none;
}
.settings-shell.worklist .wl-chip-select > .fa {
    color: #6c757d;
    font-size: 11px;
    pointer-events: none;
}
.settings-shell.worklist .wl-chip-select > .fa.is-saved {
    color: #2e7d32;
}
.settings-shell.worklist .wl-chip-select .wl-chip-icon {
    font-size: 10.5px;
}
.settings-shell.worklist .wl-chip-select:hover, .settings-shell.worklist .wl-chip-select:focus-within {
    border-color: #0035d2;
    background-color: #ffffff;
}
.settings-shell.worklist .wl-chip-select.is-me {
    color: #0035d2;
}
/* Changed, and waiting for Save */
.settings-shell.worklist .wl-chip-select.is-changed {
    border-color: #0035d2;
    background-color: #ffffff;
    color: #0035d2;
}
/* Nothing chosen - a new practice wants a person or label there - and Save waits for one */
.settings-shell.worklist .wl-chip-select.is-pending {
    border-color: #0035d2;
    background-color: #e7f0ff;
    color: #0035d2;
}
/* Row two of a task card: its pickers, on a line of their own, and Save once one has changed */
.settings-shell.worklist .wl-card-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px 6px;
    margin-top: 6px;
}
.settings-shell.worklist .wl-card-fields .wl-inline-saved {
    margin-left: 2px;
}
/* When it is due, beside the patient, with Overdue or Due soon after it */
.settings-shell.worklist .wl-card-due {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
}
.settings-shell.worklist .wl-card-due .inv-status {
    padding: 0 7px;
    font-size: 10.5px;
}
/* The due date: a chip that opens the browser's date picker, as the waitlist's surgery date button does */
.settings-shell.worklist .wl-due-pick {
    position: relative;
    display: -ms-inline-flexbox;
    display: inline-flex;
}
/* Under the button, so the picker opens beside it; never seen or clicked itself */
.settings-shell.worklist .wl-due-pick input[type="date"] {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    pointer-events: none;
}
/* A browser that can't open the picker from the button gets the date input itself */
.settings-shell.worklist .wl-due-pick.is-typing .wl-due-btn {
    display: none;
}
.settings-shell.worklist .wl-due-pick.is-typing input[type="date"] {
    position: static;
    width: auto;
    height: 24px;
    padding: 0 8px;
    border: 1px solid #0035d2;
    border-radius: 999px;
    font-size: 11.5px;
    opacity: 1;
    pointer-events: auto;
}
.settings-shell.worklist .wl-due-btn {
    cursor: pointer;
    white-space: nowrap;
}
.settings-shell.worklist .wl-due-btn:focus-visible {
    outline: none;
}
.settings-shell.worklist .wl-due-btn.is-overdue {
    color: #a94442;
}
.settings-shell.worklist .wl-due-btn[disabled] {
    cursor: default;
}
.settings-shell.worklist .wl-field-actions {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    margin-left: 2px;
    animation: wl-fade-in 0.12s ease;
}
.settings-shell.worklist .wl-field-actions button {
    min-height: 24px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 600;
}
.settings-shell.worklist .wl-field-actions .wl-field-cancel {
    width: 24px;
    padding: 0;
    border: 1px solid #c0cde0;
    background-color: #ffffff;
    color: #343a40;
}
.settings-shell.worklist .wl-field-actions .wl-field-cancel:hover:not([disabled]) {
    border-color: #0035d2;
    color: #0035d2;
}
.settings-shell.worklist .wl-field-actions .wl-field-save {
    padding: 2px 12px;
    border: 1px solid #0035d2;
    background-color: #0035d2;
    color: #ffffff;
}
.settings-shell.worklist .wl-field-actions .wl-field-save:hover:not([disabled]) {
    background-color: rgb(0, 45, 179);
}
.settings-shell.worklist .wl-field-actions .wl-field-save[disabled] {
    opacity: 0.5;
}
.settings-shell.worklist .wl-card-delete {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
}
/* A practice, in the colour it has on the calendar */
.settings-shell.worklist .wl-practice-tag {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    color: #6c757d;
    font-size: 11.5px;
    font-weight: 500;
    white-space: nowrap;
}
.settings-shell.worklist .wl-col-patient .wl-practice-tag {
    display: -ms-flexbox;
    display: flex;
    margin-top: 3px;
}
.settings-shell.worklist .wl-practice-dot {
    width: 8px;
    height: 8px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
}
.settings-shell.worklist .wl-icon-btn {
    width: 26px;
    height: 26px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: none;
    color: #6c757d;
}
.settings-shell.worklist .wl-icon-btn:hover, .settings-shell.worklist .wl-icon-btn:focus-visible {
    outline: none;
    background-color: #fbeceb;
    color: #a94442;
}
.settings-shell.worklist .wl-confirm {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    color: #a94442;
    font-size: 11.5px;
    font-weight: 600;
}
.settings-shell.worklist .wl-confirm button {
    padding: 2px 9px;
    border-radius: 6px;
    font-size: 11.5px;
    font-weight: 600;
}
.settings-shell.worklist .wl-confirm .wl-confirm-no {
    border: 1px solid #c0cde0;
    background-color: #ffffff;
    color: #343a40;
}
.settings-shell.worklist .wl-confirm .wl-confirm-yes {
    border: 1px solid #a94442;
    background-color: #a94442;
    color: #ffffff;
}
/* The description, as written - a click away from being changed. Same metrics as its editor, so the
	   text does not move when it becomes a box to write in. */
.settings-shell.worklist .wl-card-desc {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 6px;
    margin-left: -9px;
    padding: 3px 8px;
    border: 1px solid transparent;
    border-radius: 6px;
    background: none;
    color: #343a40;
    font-size: 12.5px;
    line-height: 1.5;
    text-align: left;
    cursor: text;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
.settings-shell.worklist .wl-card-desc:hover, .settings-shell.worklist .wl-card-desc:focus-visible {
    outline: none;
    border-color: #e0e6ed;
    background-color: #f8f9fa;
}
.settings-shell.worklist .wl-card-desc:hover .wl-inline-pencil, .settings-shell.worklist .wl-card-desc:focus-visible .wl-inline-pencil {
    opacity: 1;
    color: #0035d2;
}
.settings-shell.worklist .wl-card-desc.is-empty .wl-card-desc-text {
    color: #6c757d;
    font-style: italic;
}
.settings-shell.worklist .wl-card-desc-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    white-space: pre-line;
    overflow-wrap: anywhere;
}
.settings-shell.worklist .wl-desc-editor {
    margin-left: -9px;
}
.settings-shell.worklist .wl-desc-editor textarea {
    padding: 3px 8px;
    border-radius: 6px;
    font-size: 12.5px;
}
/* Row two: the description, with when and by whom the task was raised quietly beside it */
.settings-shell.worklist .wl-card-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 4px 12px;
    margin-top: 2px;
}
.settings-shell.worklist .wl-card-line .wl-card-desc, .settings-shell.worklist .wl-card-line .wl-desc-editor {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.worklist .wl-card-line .wl-card-foot {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    max-width: 45%;
    text-align: right;
}
.settings-shell.worklist .wl-card-foot {
    color: #6c757d;
    font-size: 11.5px;
    line-height: 1.45;
}
/* Each phrase keeps together, and only breaks itself when it is longer than a whole line */
.settings-shell.worklist .wl-foot-part {
    display: inline-block;
    max-width: 100%;
    overflow-wrap: anywhere;
}
/* Writing in place - a waitlist comment or a task description. The box keeps the read state's padding,
	   font and corners, grows with the text, and its buttons fade in small beneath it. */
.settings-shell.worklist .wl-inline-pencil {
    margin-left: auto;
    opacity: 0;
    transition: opacity 0.15s ease;
}
.settings-shell.worklist .wl-inline-saved {
    margin-left: auto;
    color: #2e7d32;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
}
.settings-shell.worklist .wl-inline-saved .fa {
    color: #2e7d32;
}
/* ngAnimate keeps an ng-if's outgoing element on the page for as long as its transitions run, so the
	   read and write states would show together for a moment. Here they swap at once. !important because
	   it has to beat each element's own transition, whatever it is. */
.settings-shell.worklist .wl-row-comment.ng-enter, .settings-shell.worklist .wl-row-comment.ng-leave, .settings-shell.worklist .wl-card-desc.ng-enter, .settings-shell.worklist .wl-card-desc.ng-leave, .settings-shell.worklist .wl-inline-editor.ng-enter, .settings-shell.worklist .wl-inline-editor.ng-leave {
    transition: none !important;
    animation: none !important;
}
/* A description or comment shows five lines at most, and scrolls for the rest. Its editor grows with
	   the text to twelve lines, and then scrolls too. */
.settings-shell.worklist .wl-card-desc-text, .settings-shell.worklist .wl-row-comment-text {
    max-height: 7.5em;
    overflow-y: auto;
}
.settings-shell.worklist .wl-inline-editor {
    position: relative;
    max-width: 110ch;
}
.settings-shell.worklist .wl-inline-editor textarea {
    display: block;/* Sized to its text by the browser, where it can; elsewhere the controller measures it */
    field-sizing: content;
    min-height: 0;
    max-height: calc(18em + 14px);
    overflow-x: hidden;
    overflow-y: auto;
    border: 1px solid #0035d2;
    background-color: #ffffff;
    color: #343a40;
    line-height: 1.5;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
    resize: none;
}
.settings-shell.worklist .wl-inline-editor textarea:focus {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.14);
}
.settings-shell.worklist .wl-inline-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-top: 5px;
    animation: wl-fade-in 0.12s ease;
}
.settings-shell.worklist .wl-inline-actions .wl-counter {
    margin: 0 auto 0 0;
}
.settings-shell.worklist .wl-inline-actions button {
    min-height: 24px;
    padding: 2px 12px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 600;
}
.settings-shell.worklist .wl-inline-actions .wl-inline-cancel {
    border: 1px solid #c0cde0;
    background-color: #ffffff;
    color: #343a40;
}
.settings-shell.worklist .wl-inline-actions .wl-inline-cancel:hover {
    border-color: #0035d2;
    color: #0035d2;
}
.settings-shell.worklist .wl-inline-actions .wl-inline-save {
    border: 1px solid #0035d2;
    background-color: #0035d2;
    color: #ffffff;
}
.settings-shell.worklist .wl-inline-actions .wl-inline-save:hover:not([disabled]) {
    background-color: rgb(0, 45, 179);
}
.settings-shell.worklist .wl-inline-actions .wl-inline-save[disabled] {
    opacity: 0.5;
}
/* The card's main action, on its right: the waitlist's surgery completed button, a little smaller */
.settings-shell.worklist .wl-card-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
    margin-left: 4px;
}
.settings-shell.worklist .wl-card-action .wl-reopen {
    margin-left: 0;
}
.settings-shell.worklist .wl-complete-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 6px;
    min-width: 108px;
    min-height: 30px;
    padding: 4px 14px;
    border: 1px solid rgba(46, 125, 50, 0.55);
    border-radius: 8px;
    background-color: #ffffff;
    color: #2e7d32;
    font-size: 12.5px;
    font-weight: 600;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(10, 37, 64, 0.05);
}
.settings-shell.worklist .wl-complete-btn:hover:not([disabled]), .settings-shell.worklist .wl-complete-btn:focus-visible {
    outline: none;
    border-color: #2e7d32;
    background-color: rgba(32, 201, 151, 0.1);
    box-shadow: 0 2px 8px rgba(46, 125, 50, 0.15);
}
.settings-shell.worklist .wl-complete-btn:active:not([disabled]) {
    background-color: rgba(32, 201, 151, 0.18);
}
.settings-shell.worklist .wl-complete-btn[disabled] {
    cursor: progress;
}
/* Saved: it fills, briefly, before the card moves */
.settings-shell.worklist .wl-complete-btn.is-done {
    border-color: #2e7d32;
    background-color: #2e7d32;
    color: #ffffff;
}
/* A task label: its own colour as a dot, so any colour reads on the pale pill */
.settings-shell.worklist .wl-label {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    max-width: 180px;
    padding: 2px 10px 2px 8px;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    background-color: #f8f9fa;
    color: #343a40;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.settings-shell.worklist .wl-label-dot {
    width: 9px;
    height: 9px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
}
.settings-shell.worklist .wl-me {
    color: #0035d2;
    font-weight: 700;
}
.settings-shell.worklist .wl-nhi {
    letter-spacing: 0.03em;
    font-variant-numeric: tabular-nums;
}
.settings-shell.worklist .wl-eye {
    display: inline-block;
    padding: 2px 7px;
    border-radius: 8px;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
}
/* Right eye red, left eye blue, so which is which is seen at a glance */
.settings-shell.worklist .wl-eye.is-od {
    box-shadow: inset 0 0 0 1px rgba(198, 40, 40, 0.3);
    background-color: #fdecec;
    color: #c62828;
}
.settings-shell.worklist .wl-eye.is-os {
    box-shadow: inset 0 0 0 1px rgba(21, 101, 192, 0.3);
    background-color: #e6f0fb;
    color: #1565c0;
}
/* The comments, as written, across the row's width - a click away from being changed. Same metrics as
	   the editor below, icon included, so the text does not move when it becomes a box to write in. */
.settings-shell.worklist .wl-row-comment {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 7px;
    width: 100%;
    max-width: 110ch;
    padding: 6px 10px;
    border: 1px solid transparent;
    border-radius: 8px;
    background-color: #f8f9fa;
    color: #343a40;
    font-size: 12.5px;
    line-height: 1.5;
    text-align: left;
    cursor: text;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
.settings-shell.worklist .wl-row-comment > .fa:first-child {
    width: 12px;
    color: #6c757d;
}
.settings-shell.worklist .wl-row-comment:hover, .settings-shell.worklist .wl-row-comment:focus-visible {
    outline: none;
    border-color: #c0cde0;
    background-color: #ffffff;
}
.settings-shell.worklist .wl-row-comment:hover .wl-inline-pencil, .settings-shell.worklist .wl-row-comment:focus-visible .wl-inline-pencil {
    opacity: 1;
    color: #0035d2;
}
/* An entry with every eye done: its comments are read, not changed */
.settings-shell.worklist .wl-row-comment.is-readonly {
    cursor: default;
}
.settings-shell.worklist .wl-row-comment.is-readonly:hover {
    border-color: transparent;
    background-color: #f8f9fa;
}
/* No comment yet: just a quiet way to add one */
.settings-shell.worklist .wl-row-comment.is-empty {
    width: auto;
    padding: 2px 10px;
    background-color: transparent;
    color: #6c757d;
    font-size: 12px;
}
.settings-shell.worklist .wl-row-comment.is-empty > .fa:first-child {
    font-size: 10px;
}
.settings-shell.worklist .wl-row-comment.is-empty:hover, .settings-shell.worklist .wl-row-comment.is-empty:focus-visible {
    color: #0035d2;
}
.settings-shell.worklist .wl-row-comment.is-empty:hover .fa, .settings-shell.worklist .wl-row-comment.is-empty:focus-visible .fa {
    color: #0035d2;
}
/* The width of the box, so a long comment's scrollbar is at its edge, not beside the text */
.settings-shell.worklist .wl-row-comment-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    white-space: pre-line;
    overflow-wrap: anywhere;
}
.settings-shell.worklist .wl-comment-editor textarea {
    padding: 6px 10px 6px 29px;
    border-radius: 8px;
    font-size: 12.5px;
}
/* Where the read state's icon was */
.settings-shell.worklist .wl-comment-editor .wl-editor-icon {
    position: absolute;
    top: 10px;
    left: 11px;
    z-index: 1;
    color: #6c757d;
    font-size: 12.5px;
    pointer-events: none;
}
/* The complete buttons - a task's Complete, an eye's Surgery completed - reward the click: a soft green
	   shine crosses them on hover, and once saved they fill green, a white shine sweeps across, and the
	   tick pops. Still for anyone who has asked for less motion. */
.settings-shell.worklist .wl-complete-btn, .settings-shell.worklist .wl-surgery-btn {
    position: relative;
    overflow: hidden;
    transition: background-color 0.35s ease, border-color 0.35s ease, color 0.35s ease, box-shadow 0.15s ease;
}
.settings-shell.worklist .wl-complete-btn::after, .settings-shell.worklist .wl-surgery-btn::after {
    content: "";
    position: absolute;
    top: 0;
    left: -70%;
    width: 45%;
    height: 100%;
    background-image: linear-gradient(100deg, transparent 0%, rgba(32, 201, 151, 0.28) 50%, transparent 100%);
    transform: skewX(-20deg);
    pointer-events: none;
}
.settings-shell.worklist .wl-complete-btn:hover:not([disabled])::after, .settings-shell.worklist .wl-surgery-btn:hover:not([disabled])::after {
    animation: wl-shine 0.8s ease;
}
.settings-shell.worklist .wl-complete-btn.is-done::after, .settings-shell.worklist .wl-surgery-btn.is-done::after {
    background-image: linear-gradient(100deg, transparent 0%, rgba(255, 255, 255, 0.65) 50%, transparent 100%);
    animation: wl-shine 0.6s ease 0.1s;
}
.settings-shell.worklist .wl-complete-btn.is-done > i, .settings-shell.worklist .wl-surgery-btn.is-done > i {
    animation: wl-pop 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@media (prefers-reduced-motion: reduce) {
    .settings-shell.worklist .wl-complete-btn, .settings-shell.worklist .wl-surgery-btn {
        transition: none;
    }
    .settings-shell.worklist .wl-complete-btn::after, .settings-shell.worklist .wl-complete-btn.is-done::after, .settings-shell.worklist .wl-complete-btn.is-done > i, .settings-shell.worklist .wl-surgery-btn::after, .settings-shell.worklist .wl-surgery-btn.is-done::after, .settings-shell.worklist .wl-surgery-btn.is-done > i {
        animation: none;
    }
}
/* Pre-approval: the surgery completed button's look, smaller and half as wide, so it reads as the lesser
	   step. In the brand purple: not done, an empty circle; done, a tick on a soft purple fill. */
.settings-shell.worklist .wl-step-btn {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    width: 92px;
    min-height: 26px;
    padding: 3px 9px;
    border: 1px solid rgba(139, 86, 163, 0.45);
    border-radius: 6px;
    background-color: #ffffff;
    color: #8b56a3;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(10, 37, 64, 0.05);
    transition: background-color 0.15s ease, border-color 0.15s ease;
}
.settings-shell.worklist .wl-step-btn + .wl-step-btn {
    margin-top: 4px;
}
/* A checkbox: an empty square, ticked once the step is done */
.settings-shell.worklist .wl-step-btn .wl-step-box {
    width: 12px;
    font-size: 12.5px;
    text-align: center;
}
.settings-shell.worklist .wl-step-btn .wl-step-box.fa-regular {
    color: rgba(139, 86, 163, 0.65);
}
.settings-shell.worklist .wl-step-btn:hover:not([disabled]), .settings-shell.worklist .wl-step-btn:focus-visible {
    outline: none;
    border-color: #8b56a3;
    background-color: rgba(139, 86, 163, 0.08);
}
.settings-shell.worklist .wl-step-btn.is-on {
    border-color: rgba(139, 86, 163, 0.6);
    background-color: rgba(139, 86, 163, 0.13);
}
.settings-shell.worklist .wl-step-btn[disabled] {
    cursor: progress;
}
/* Surgery completed: the row's main action - an outlined button, square-cornered like the app's other
	   buttons so it reads as something to press, and only filled with a soft tint when pointed at */
.settings-shell.worklist .wl-surgery-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 7px;
    min-width: 160px;
    min-height: 34px;
    padding: 6px 14px;
    border: 1px solid rgba(46, 125, 50, 0.55);
    border-radius: 8px;
    background-color: #ffffff;
    color: #2e7d32;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(10, 37, 64, 0.05);
}
.settings-shell.worklist .wl-surgery-btn:hover:not([disabled]), .settings-shell.worklist .wl-surgery-btn:focus-visible {
    outline: none;
    border-color: #2e7d32;
    background-color: rgba(32, 201, 151, 0.1);
    box-shadow: 0 2px 8px rgba(46, 125, 50, 0.15);
}
.settings-shell.worklist .wl-surgery-btn:active:not([disabled]) {
    background-color: rgba(32, 201, 151, 0.18);
}
.settings-shell.worklist .wl-surgery-btn[disabled] {
    cursor: progress;
}
/* Saved: it fills, briefly, before the row moves */
.settings-shell.worklist .wl-surgery-btn.is-done {
    border-color: #2e7d32;
    background-color: #2e7d32;
    color: #ffffff;
}
/* Completed: when, and the way back to Waiting - wrapping, so it is no wider than the button it replaces */
.settings-shell.worklist .wl-done-on {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px 6px;
    max-width: 160px;
    color: #2e7d32;
    font-size: 13px;
    font-weight: 600;
    white-space: normal;
}
/* "Surgery completed", and the date on a line of its own below it */
.settings-shell.worklist .wl-done-text {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 1px;
    white-space: nowrap;
}
.settings-shell.worklist .wl-done-date {
    padding-left: 18px;
    color: #343a40;
    font-size: 12px;
    font-weight: 500;
}
.settings-shell.worklist .wl-reopen {
    padding: 2px 8px;
    border: 1px solid #c0cde0;
    border-radius: 6px;
    background-color: #ffffff;
    color: #343a40;
    font-size: 11.5px;
    font-weight: 500;
}
.settings-shell.worklist .wl-reopen .fa {
    color: #6c757d;
}
.settings-shell.worklist .wl-reopen:hover:not([disabled]), .settings-shell.worklist .wl-reopen:focus-visible {
    outline: none;
    border-color: #0035d2;
    color: #0035d2;
}
/* The other eye is booked: a copy icon left of the date books this one for the same day - or, once done,
	   a note says so. It sits in the booking's gutter, so the date button never moves for it. */
.settings-shell.worklist .wl-same-day {
    position: absolute;
    top: 50%;
    right: 100%;
    width: 26px;
    height: 26px;
    margin-top: -13px;
    margin-right: 4px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: none;
    color: #0035d2;
    font-size: 13px;
}
.settings-shell.worklist .wl-same-day:hover:not([disabled]), .settings-shell.worklist .wl-same-day:focus-visible {
    outline: none;
    background-color: #e7f0ff;
}
.settings-shell.worklist .wl-same-day-note {
    display: block;
    margin-top: 4px;
    color: #6c757d;
    font-size: 11px;
}
/* An eye's booking: the two ways to book - the date, and the calendar - as matching buttons of one width,
	   with a gutter on the left for the same-day copy icon, kept whether it shows or not */
.settings-shell.worklist .wl-booking {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 6px;
    padding-left: 30px;
}
.settings-shell.worklist .wl-booking .wl-date-btn {
    width: 156px;
}
.settings-shell.worklist .wl-booking-date {
    position: relative;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
}
/* Beside a booked date: clear it */
.settings-shell.worklist .wl-date-clear {
    width: 26px;
    height: 26px;
    margin-left: 4px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: none;
    color: #6c757d;
    vertical-align: middle;
    opacity: 0;
    transition: opacity 0.15s ease;
}
.settings-shell.worklist .wl-date-clear:hover:not([disabled]), .settings-shell.worklist .wl-date-clear:focus-visible {
    outline: none;
    background-color: #fbeceb;
    color: #a94442;
}
.settings-shell.worklist .wl-table > tbody > tr:hover .wl-date-clear, .settings-shell.worklist .wl-date-clear:focus-visible {
    opacity: 1;
}
/* The surgery date: a button that opens the browser's date picker. Unbooked, it stands out as the next
	   thing to do; booked, it reads as the date, and is still the way to change it. */
.settings-shell.worklist .wl-date-pick {
    position: relative;
    display: inline-block;
}
/* Under the button, so the picker opens beside it; never seen or clicked itself */
.settings-shell.worklist .wl-date-pick input[type="date"] {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    pointer-events: none;
}
/* A browser that can't open the picker from the button gets the date input itself */
.settings-shell.worklist .wl-date-pick.is-typing .wl-date-btn {
    display: none;
}
.settings-shell.worklist .wl-date-pick.is-typing input[type="date"] {
    position: static;
    width: auto;
    height: auto;
    padding: 2px 8px;
    border: 1px solid #0035d2;
    border-radius: 8px;
    opacity: 1;
    pointer-events: auto;
}
/* Unbooked: an outlined navy button, the next thing to do. Booked: the date, quieter still, and still
	   the way to change it. Filled with a soft tint only when pointed at. */
.settings-shell.worklist .wl-date-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 8px;
    min-width: 124px;
    min-height: 34px;
    padding: 6px 14px;
    border: 1px solid rgba(0, 53, 210, 0.55);
    border-radius: 8px;
    background-color: #ffffff;
    color: #0035d2;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(10, 37, 64, 0.05);
    transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}
.settings-shell.worklist .wl-date-btn:hover:not([disabled]), .settings-shell.worklist .wl-date-btn:focus-visible {
    outline: none;
    border-color: #0035d2;
    background-color: #e7f0ff;
    box-shadow: 0 2px 8px rgba(0, 53, 210, 0.12);
}
.settings-shell.worklist .wl-date-btn[disabled] {
    cursor: progress;
}
/* The calendar button quietens with the date once the eye is booked, so the two still match */
.settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn, .settings-shell.worklist .wl-date-btn.is-booked {
    border-color: #e0e6ed;
    color: #343a40;
    box-shadow: none;
}
.settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn .fa-calendar, .settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn .fa-calendar-plus-o, .settings-shell.worklist .wl-date-btn.is-booked .fa-calendar, .settings-shell.worklist .wl-date-btn.is-booked .fa-calendar-plus-o {
    color: #6c757d;
}
.settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn .fa-check, .settings-shell.worklist .wl-date-btn.is-booked .fa-check {
    color: #20c997;
}
.settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn:hover:not([disabled]), .settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn:focus-visible, .settings-shell.worklist .wl-date-btn.is-booked:hover:not([disabled]), .settings-shell.worklist .wl-date-btn.is-booked:focus-visible {
    border-color: rgba(0, 53, 210, 0.55);
    background-color: #ffffff;
    color: #0035d2;
}
.settings-shell.worklist .wl-date-pick.is-large .wl-date-btn {
    min-width: 160px;
    min-height: 40px;
    padding: 8px 20px;
    font-size: 14px;
}
.settings-shell.worklist .wl-counter {
    display: block;
    margin-top: 4px;
    text-align: right;
    font-size: 11px;
    color: #a3aac0;
}
/* Read-only only so the picker is used rather than typed over - not disabled, so it should not look it */
.settings-shell.worklist datepicker {
    display: block;
}
.settings-shell.worklist datepicker .form-control[readonly]:not([disabled]) {
    background-color: #ffffff;
    color: #333333;
    cursor: pointer;
}
/* =================================================================== */
/* ! New task dialog
/* =================================================================== */
.settings-shell.worklist.task-create {
	-ms-flex-direction: column;
	    flex-direction: column;
	margin: 0;
}
.settings-shell.worklist.task-create .wl-create-head {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 18px 28px;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
}
.settings-shell.worklist.task-create .wl-create-head .settings-avatar i {
    font-size: 16px;
}
/* The patient, or the search for one, takes the rest of the header */
.settings-shell.worklist.task-create .wl-create-who {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.worklist.task-create .wl-create-who .patient-picker-field {
    max-width: none;
    margin-top: 4px;
}
.settings-shell.worklist.task-create .wl-create-patient-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 10px;
}
.settings-shell.worklist.task-create .wl-create-patient-row .inv-link-btn {
    margin-top: 0;
}
.settings-shell.worklist.task-create .wl-create-eyebrow {
    display: block;
    margin: 0;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell.worklist.task-create .wl-create-patient {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 17px;
    line-height: 1.3;
    color: #0a2540;
}
.settings-shell.worklist.task-create .wl-create-sub {
    font-size: 12px;
    color: #6c757d;
}
.settings-shell.worklist.task-create .settings-pane-body {
    min-height: 0;
}
.settings-shell.worklist.task-create .wl-create-card {
    padding: 22px 24px;
}
.settings-shell.worklist.task-create .wl-create-row {
    margin-top: 16px;
}
.settings-shell.worklist.task-create .wl-presets {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 6px;
    margin: 10px 0 18px;
}
.settings-shell.worklist.task-create .wl-presets .chip-select {
    padding: 4px 12px;
    font-size: 11.5px;
}
.settings-shell.worklist.task-create .wl-create-error {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 6px;
    margin-right: auto;
    font-size: 12px;
    color: #a94442;
}
.settings-shell.worklist.task-create .wl-create-error i {
    margin-top: 2px;
}
/* =================================================================== */
/* ! Narrower screens
/* =================================================================== */
@media (max-width: 1100px) {
	.settings-shell.worklist .wl-search {
        width: 220px;
    }
}
/* _settings.css lays the rail out as a row here and hides its footer; the new task button stays */
@media (max-width: 900px) {
	.settings-shell.worklist .settings-nav-footer {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-align: center;
            align-items: center;
        -ms-flex-negative: 0;
            flex-shrink: 0;
        margin: 0;
        padding: 8px 10px;
        border-top: none;
    }
	.settings-shell.worklist .settings-nav-footer .footer-label, .settings-shell.worklist .settings-nav-footer .footer-value {
        display: none;
    }
	.settings-shell.worklist .settings-nav-footer .wl-new-btn {
        margin: 0;
        white-space: nowrap;
    }
	.settings-shell.worklist .wl-tick-row {
        -ms-flex-negative: 0;
            flex-shrink: 0;
    }
	.settings-shell.worklist .wl-tick-row .wl-tick-name {
        white-space: nowrap;
    }
	.settings-shell.worklist .wl-toolbar {
        padding: 14px 16px 10px;
    }
	.settings-shell.worklist .settings-notice.wl-notice {
        margin: 0 16px 10px;
    }
	.settings-shell.worklist .settings-pane-body.wl-body {
        padding: 0 16px 16px;
    }
	.settings-shell.worklist .wl-search {
        -ms-flex: 1 1 200px;
            flex: 1 1 200px;
        width: auto;
    }
}
@keyframes wl-fade-in {
	from {
		opacity: 0;
		transform: translateY(-3px);
	}
}
@keyframes wl-shine {
	from {
		left: -70%;
	}

	to {
		left: 130%;
	}
}
@keyframes wl-pop {
	0% {
		transform: scale(0.4);
	}

	100% {
		transform: scale(1);
	}
}
/* =================================================================== */
/* ! Add to surgery waitlist: the dialog the Surgery Waitlist's rail
/* button opens (laid out as the new task dialog) and the row it adds
/* =================================================================== */
.settings-shell.worklist.waitlist {

	/* =================================================================== */
}
.settings-shell.worklist.waitlist .wl-just-added {
    display: block;
    margin-top: 2px;
    font-size: 11px;
    font-weight: 700;
    color: #1f8a4c;
}
.settings-shell.worklist.waitlist .inv-table > tbody.wl-group.is-just-added > tr > th, .settings-shell.worklist.waitlist .inv-table > tbody.wl-group.is-just-added > tr > td {
    background-color: #f2fbf5;
}
/* The pill on one line; the line under it wraps rather than widening the column */
.settings-shell.worklist.waitlist .wl-col-timeframe {
    min-width: 112px;
}
/* ! Preferred timeframe: the entry's pill, the line under it saying how
	/* it stands, and the rail's Timeframe filters, coloured the same way
	/* =================================================================== */
.settings-shell.worklist.waitlist .wl-tf-note {
    max-width: 140px;
}
/* =================================================================== */
.settings-shell.worklist.waitlist .wl-tf {
    display: inline-block;
    white-space: nowrap;
    padding: 2px 9px;
    border-radius: 12px;
    font-size: 11.5px;
    font-weight: 700;
    background-color: #f1f3f8;
    color: #3c4658;
}
.settings-shell.worklist.waitlist .wl-tf.is-asap {
    background-color: #fff1e8;
    color: #c2410c;
}
.settings-shell.worklist.waitlist .wl-tf.is-ok {
    background-color: #eaf7ef;
    color: #1f8a4c;
}
.settings-shell.worklist.waitlist .wl-tf.is-soon {
    background-color: #fef6e0;
    color: #a16207;
}
.settings-shell.worklist.waitlist .wl-tf.is-late {
    background-color: #fdecec;
    color: #c62828;
}
.settings-shell.worklist.waitlist .wl-tf-note {
    display: block;
    margin-top: 3px;
    font-size: 11px;
    color: #6c757d;
}
.settings-shell.worklist.waitlist .wl-tf-note.is-soon {
    color: #a16207;
    font-weight: 600;
}
.settings-shell.worklist.waitlist .wl-tf-note.is-late {
    color: #c62828;
    font-weight: 600;
}
.settings-shell.worklist.waitlist .wl-tf-filter.is-late i {
    color: #c62828;
}
.settings-shell.worklist.waitlist .wl-tf-filter.is-soon i {
    color: #a16207;
}
.settings-shell.worklist.waitlist .wl-tf-filter.is-asap i {
    color: #c2410c;
}
/* ! Fitting the table: ten columns in the modal without scrolling it
	/* sideways, so the last column (Surgery) is never off the edge
	/* =================================================================== */
.settings-shell.worklist.waitlist .wl-table > thead > tr > th, .settings-shell.worklist.waitlist .wl-table > tbody > tr > th, .settings-shell.worklist.waitlist .wl-table > tbody > tr > td {
    padding-left: 8px;
    padding-right: 8px;
}
.settings-shell.worklist.waitlist .wl-table > tbody > tr > td.wl-col-progress {
    padding-right: 12px;
}
.settings-shell.worklist.waitlist .wl-table .wl-date-pick .wl-date-btn {
    width: 128px;
    min-width: 0;
    padding-left: 10px;
    padding-right: 10px;
}
.settings-shell.worklist.waitlist .wl-table .wl-col-surgeon .wl-chip-select select {
    max-width: 128px;
}
/* Complete surgery: as wide as its words, onto two lines when the table is short of room */
.settings-shell.worklist.waitlist .wl-surgery-btn {
    min-width: 0;
    max-width: 132px;
    padding: 6px 10px;
    white-space: normal;
    text-align: left;
    line-height: 1.25;
}
/* Below a wide screen the modal takes more of the window, and the rail gives the table room */
@media (max-width: 1600px) {
	.worklist-dialog {
		min-width: 96%;
		width: 96%;
	}

	.settings-shell.worklist.waitlist .worklist-rail {
		-ms-flex-preferred-size: 220px;
		    flex-basis: 220px;
		width: 220px;
	}
}
/* A laptop screen: a little less room again for the rail, the list's margins and the widest controls */
@media (max-width: 1400px) {
	.settings-shell.worklist.waitlist .worklist-rail {
        -ms-flex-preferred-size: 196px;
            flex-basis: 196px;
        width: 196px;
    }
	.settings-shell.worklist.waitlist .wl-body {
        padding-left: 16px;
        padding-right: 16px;
    }
	.settings-shell.worklist.waitlist .wl-table > thead > tr > th, .settings-shell.worklist.waitlist .wl-table > tbody > tr > th, .settings-shell.worklist.waitlist .wl-table > tbody > tr > td {
        padding-left: 6px;
        padding-right: 6px;
    }
	.settings-shell.worklist.waitlist .wl-table .wl-date-pick .wl-date-btn {
        width: 112px;
    }
	.settings-shell.worklist.waitlist .wl-table .wl-col-surgeon .wl-chip-select select {
        max-width: 104px;
    }
}
/* The add form sits inside the shell, so its element and the form carry the shell's column on to its body
	   and action bar. An element is inline by default, which let the form grow past the dialog and its
	   buttons be cut off once a procedure list opened; held to the dialog's height, only the fields scroll. */
.settings-shell.worklist.task-create surgery-waitlist-add-form {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-height: 0;
}
.settings-shell.worklist.task-create .wl-create-form {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
/* Never wider than the dialog; it scrolls down only when the window is too short for the form */
.settings-shell.worklist.task-create .wl-create-form .settings-pane-body {
    overflow-x: hidden;
    padding: 8px 16px;
}
.settings-shell.worklist.task-create .wl-create-form .settings-pane-body.wl-no-scroll {
    overflow-y: hidden;
}
.settings-shell.worklist.task-create .wl-create-form .wl-create-card {
    padding: 12px 18px;
}
/* Laid out as the new task form, in field-grid rows; these line up what the waitlist's own fields bring */
/* Native radios, centred on their text */
.settings-shell.worklist.task-create .wl-create-form .radio-inline {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin: 0;
    padding: 0;
    min-height: 26px;
}
.settings-shell.worklist.task-create .wl-create-form .radio-inline input[type="radio"] {
    position: static;
    margin: 0;
}
.settings-shell.worklist.task-create .wl-create-form textarea {
    resize: vertical;
}
.settings-shell.worklist.task-create .wl-add-options {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    column-gap: 18px;
    row-gap: 4px;
    min-height: 35px;
    -ms-flex-align: center;
        align-items: center;
}
/* One timeframe option to a line */
.settings-shell.worklist.task-create .wl-timeframe {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 2px;
}
.settings-shell.worklist.task-create .wl-timeframe .radio-inline {
    display: -ms-flexbox;
    display: flex;
    min-height: 28px;
}
.settings-shell.worklist.task-create .wl-timeframe-line {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.settings-shell.worklist.task-create .wl-timeframe-weeks {
    width: 64px;
    height: 30px;
    padding: 4px 10px;
}
.settings-shell.worklist.task-create .wl-timeframe-date {
    display: block;
    width: 112px;
}
.settings-shell.worklist.task-create .wl-timeframe-date .form-control {
    height: 30px;
    padding: 4px 10px;
}
/* The procedure search (shared with the operation note): its input and its add button on one line, at
	   the field's full width, each eye's procedures stacked */
.settings-shell.worklist.task-create procedure-search-box {
    display: block;
}
.settings-shell.worklist.task-create procedure-search-box + procedure-search-box {
    margin-top: 10px;
}
.settings-shell.worklist.task-create procedure-search-box .row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 8px;
    margin: 0;
}
.settings-shell.worklist.task-create procedure-search-box .row::before, .settings-shell.worklist.task-create procedure-search-box .row::after {
    display: none;
}
.settings-shell.worklist.task-create procedure-search-box .row > [class*="col-"] {
    float: none;
    width: auto;
    padding: 0;
    margin-bottom: 0;
}
.settings-shell.worklist.task-create procedure-search-box .row > .col-md-8 {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-width: 0;
}
.settings-shell.worklist.task-create procedure-search-box .row > .col-md-3 {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    margin-top: 0 !important;
}
.settings-shell.worklist.task-create procedure-search-box .row > .col-xs-12 {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-width: 0;
}
.settings-shell.worklist.task-create procedure-search-box .row + .row {
    margin-top: 6px;
}
.settings-shell.worklist.task-create procedure-search-box .btn-add-incision {
    height: 35px;
    min-width: 35px;
    margin: 0;
}
/* The list's and Bootstrap's table margins left a gap under the procedures added */
.settings-shell.worklist.task-create procedure-search-box .blue-box, .settings-shell.worklist.task-create procedure-search-box .table-incisions {
    margin-bottom: 0;
}
/* The automation task (shared with the progress note): labelled and spaced as the fields around it */
.settings-shell.worklist.task-create automation-task {
    display: block;
}
.settings-shell.worklist.task-create automation-task .pre-op-form {
    margin: 0;
    padding: 0;
}
.settings-shell.worklist.task-create automation-task .row {
    margin-left: 0 !important;
    margin-right: 0;
}
.settings-shell.worklist.task-create automation-task .row > [class*="col-"] {
    padding-left: 0;
    padding-right: 0;
}
/* The progress note's own label, text colour and marker offsets, undone to match the other fields */
.settings-shell.worklist.task-create automation-task .control-label {
    color: #343a40 !important;
    font-size: 11px !important;
    letter-spacing: 0.05em;
    margin-bottom: 6px;
}
.settings-shell.worklist.task-create automation-task .radio-inline, .settings-shell.worklist.task-create automation-task .marker {
    position: static;
    color: #333333;
    font-size: 13px;
}
.settings-shell.worklist.task-create automation-task .form-group {
    display: -ms-flexbox;
    display: flex;
    column-gap: 18px;
    margin-bottom: 0;
}
.settings-shell.worklist.task-create automation-task .head-link {
    font-size: 12px;
    line-height: 1.6;
    color: #6c757d !important;
}
/* Another practice's patient: listed, but an entry is only added where the patient is registered */
.settings-shell.worklist.task-create .patient-result.is-unavailable {
    cursor: not-allowed;
    opacity: 0.6;
}
/* =================================================================== */
/* ! Imported patients
/* The review dialog (merge into an existing patient, or confirm as new),
/* the review list from the nav, the dialog for a patient the import
/* couldn't create, and the "Needs review" label in patient pickers and
/* search.
/* =================================================================== */
/* "Needs review" next to a patient in a picker or the search results */
.patient-option-review {
	-ms-flex-negative: 0;
	    flex-shrink: 0;
	display: inline-block;
	margin-left: 6px;
	padding: 1px 8px;
	border: 1px solid rgba(255, 193, 7, 0.7);
	border-radius: 20px;
	background-color: rgba(255, 243, 205, 0.9);
	color: #856404;
	font-size: 10.5px;
	font-weight: 600;
	white-space: nowrap;
}
/* The review dialog and the review list. Not built on .settings-shell: that is the Settings dialog's
/* side-by-side frame (a left rail beside the content), which would lay these out in columns. */
.pi-dialog {
	width: 880px;
	max-width: 95vw;
	max-height: 90vh;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
/* Registering a new patient: room for the registration form's three columns */
.pi-dialog.pi-dialog--wide {
    width: 1200px;
}
/* Angular Material transitions every property of an open dialog, which animated the width whenever the step
	/* changed it. Only the dialog's open and close move. */
.pi-dialog.md-transition-in, .pi-dialog.md-transition-out {
    transition-property: opacity, transform;
}
/* Sized to their label, as in the claim flow's action bars: the global .btn-navy / .btn-cancel are full-width
	/* slabs capped at 220px, which read as form fields when two sit side by side. Not the registration form's own. */
.pi-dialog .pi-actions .btn, .pi-dialog .pi-candidate .btn, .pi-dialog .pi-list .btn, .pi-dialog .pi-callout .btn, .pi-dialog .pi-uc-search .btn {
    width: auto;
    max-width: none;
    min-width: 8rem;
    padding: 7px 22px;
    font-size: 13px;
}
/* Who is being reviewed, and where the review is up to */
.pi-dialog .pi-identity {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 16px 28px;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
}
.pi-dialog .pi-avatar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: 0.5px;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.2);
}
.pi-dialog .pi-identity-text {
    min-width: 0;
}
.pi-dialog .pi-identity-name {
    font-size: 17px;
    font-weight: 600;
    color: #0a2540;
}
.pi-dialog .pi-identity-meta {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin-top: 2px;
    font-size: 12.5px;
    color: #6c757d;
}
.pi-dialog .pi-chip {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 2px 10px;
    border-radius: 20px;
    font-size: 11.5px;
    font-weight: 600;
}
.pi-dialog .pi-chip--import {
    background-color: #e7f0ff;
    color: #0035d2;
}
.pi-dialog .pi-steps {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin: 0 0 0 auto;
    padding: 0;
    list-style: none;
    font-size: 12.5px;
    color: #6c757d;
}
.pi-dialog .pi-steps li {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    white-space: nowrap;
}
.pi-dialog .pi-steps .pi-step-dot {
    width: 24px;
    height: 24px;
    border: 1.5px solid #e0e6ed;
    border-radius: 50%;
    background-color: #ffffff;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 11px;
    font-weight: 600;
}
.pi-dialog .pi-steps li.is-current {
    color: #0a2540;
    font-weight: 600;
}
.pi-dialog .pi-steps li.is-current .pi-step-dot {
    border-color: #0035d2;
    background-color: #0035d2;
    color: #ffffff;
}
.pi-dialog .pi-steps li.is-done .pi-step-dot {
    border-color: #20c997;
    background-color: #20c997;
    color: #ffffff;
}
.pi-dialog .pi-steps .pi-steps-line {
    width: 28px;
    height: 1px;
    background-color: #e0e6ed;
}
/* The step itself, which scrolls between the fixed header and footer */
.pi-dialog .pi-body {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 24px 28px;
    background-color: #f4f7fe;
}
.pi-dialog .pi-title {
    margin: 0 0 6px;
    font-size: 18px;
    font-weight: 600;
    color: #0a2540;
}
.pi-dialog .pi-lede {
    max-width: 700px;
    margin: 0 0 18px;
    line-height: 1.55;
    color: #6c757d;
}
.pi-dialog .pi-muted {
    color: #6c757d;
    font-weight: normal;
}
.pi-dialog .pi-footnote {
    margin: 10px 2px 0;
    font-size: 12.5px;
    color: #6c757d;
}
.pi-dialog .pi-state {
    padding: 48px 0;
    text-align: center;
    color: #6c757d;
}
.pi-dialog .pi-card {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
}
.pi-dialog .pi-card--flush {
    overflow: hidden;
}
.pi-dialog .pi-callout {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 12px;
    margin-bottom: 16px;
    padding: 12px 14px;
    border: 1px solid transparent;
    border-radius: 10px;
    line-height: 1.5;
}
.pi-dialog .pi-callout > i {
    margin-top: 3px;
}
.pi-dialog .pi-callout--info {
    background-color: #e7f0ff;
    border-color: rgba(0, 53, 210, 0.15);
    color: #0a2540;
}
.pi-dialog .pi-callout--info > i {
    color: #0035d2;
}
.pi-dialog .pi-callout--warning {
    background-color: rgba(255, 243, 205, 0.9);
    border-color: rgba(255, 193, 7, 0.7);
    color: #856404;
}
.pi-dialog .pi-callout--warning a {
    color: inherit;
    font-weight: 600;
    text-decoration: underline;
}
.pi-dialog .pi-callout--success {
    background-color: rgba(32, 201, 151, 0.08);
    border-color: rgba(32, 201, 151, 0.3);
    color: #0a2540;
}
.pi-dialog .pi-callout--success > i {
    color: #20c997;
}
.pi-dialog .pi-callout--error {
    background-color: rgba(217, 83, 79, 0.15);
    border-color: #d9534f;
    color: #d9534f;
}
.pi-dialog .pi-tags {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
    margin-top: 6px;
}
.pi-dialog .pi-tag {
    padding: 2px 10px;
    border: 1px solid rgba(255, 193, 7, 0.7);
    border-radius: 20px;
    background-color: #ffffff;
    font-size: 12px;
}
/* Step 1: possible duplicates */
.pi-dialog .pi-candidates {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 10px;
    margin: 0 0 12px;
    padding: 0;
    list-style: none;
}
.pi-dialog .pi-candidate {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    padding: 16px 18px;
}
.pi-dialog .pi-candidate .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.pi-dialog .pi-candidate-who {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.pi-dialog .pi-candidate-name {
    margin-bottom: 6px;
    font-size: 15px;
    font-weight: 600;
    color: #0a2540;
}
.pi-dialog .pi-candidate-facts {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 22px;
    margin: 0;
}
.pi-dialog .pi-candidate-facts > div {
    display: -ms-flexbox;
    display: flex;
    gap: 6px;
}
.pi-dialog .pi-candidate-facts dt {
    font-weight: normal;
    color: #6c757d;
}
.pi-dialog .pi-candidate-facts dd {
    margin: 0;
    color: #343a40;
}
.pi-dialog .pi-candidate-blocked {
    margin-top: 8px;
    font-size: 12px;
    color: #6c757d;
}
.pi-dialog .pi-new-patient {
    width: 100%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 16px 18px;
    border-style: dashed;
    color: #0a2540;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.pi-dialog .pi-new-patient > i:first-child {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.pi-dialog .pi-new-patient > span {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 2px;
}
.pi-dialog .pi-new-patient .pi-new-patient-go {
    color: #0035d2;
}
.pi-dialog .pi-new-patient:hover:not([disabled]), .pi-dialog .pi-new-patient:focus-visible {
    border-color: #0035d2;
    box-shadow: 0 4px 14px rgba(0, 53, 210, 0.08);
}
/* Step 2: merging */
.pi-dialog .pi-compare {
    width: 100%;
    border-collapse: collapse;
}
.pi-dialog .pi-compare th, .pi-dialog .pi-compare td {
    padding: 11px 16px;
    border-bottom: 1px solid #eef1f7;
    text-align: left;
    vertical-align: middle;
}
.pi-dialog .pi-compare thead th {
    background-color: #f2f6fb;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    color: #6c757d;
}
.pi-dialog .pi-compare tbody th {
    width: 20%;
    font-weight: 600;
    color: #0a2540;
}
.pi-dialog .pi-compare tbody tr:last-child th, .pi-dialog .pi-compare tbody tr:last-child td {
    border-bottom: 0;
}
/* Taking the import: its value is what the record will hold, and the existing one is replaced */
.pi-dialog .pi-compare tr.is-taken td:nth-child(3) {
    background-color: #e7f0ff;
    color: #0a2540;
    font-weight: 600;
}
.pi-dialog .pi-compare tr.is-taken td:nth-child(2) span:not(.pi-muted) {
    color: #6c757d;
    text-decoration: line-through;
}
.pi-dialog .pi-compare .pi-compare-take {
    width: 110px;
    text-align: center;
}
.pi-dialog .pi-compare .pi-compare-take input {
    width: 16px;
    height: 16px;
    margin: 0;
    cursor: pointer;
}
.pi-dialog .pi-compare .pi-compare-take input[disabled] {
    cursor: default;
}
/* Step 2: registering - the dashboard's registration form, in a card instead of under its navy rule */
.pi-dialog .pi-form-card {
    padding: 8px 8px 0;
}
.pi-dialog .pi-form-card .operation-form {
    margin: 0;
    padding: 16px 12px 0;
    border-top: 0;
}
/* The footer: always in view, with the step's main action on the right. Ordered after the content, which
	/* Angular Material gives order: 1. */
.pi-dialog .pi-actions {
    -ms-flex-order: 2;
        order: 2;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 14px 28px;
    background-color: #ffffff;
    border-top: 1px solid #e0e6ed;
}
.pi-dialog .pi-actions .btn {
    margin: 0;
}
.pi-dialog .pi-link {
    padding: 0;
    border: 0;
    background: none;
    font-weight: 600;
    color: #6c757d;
}
.pi-dialog .pi-link:hover, .pi-dialog .pi-link:focus-visible {
    color: #0035d2;
    text-decoration: underline;
}
.pi-dialog .pi-actions-message {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 12.5px;
    text-align: right;
}
.pi-dialog .pi-actions-error {
    color: #d9534f;
}
/* The review list */
.pi-dialog .pi-list {
    width: 100%;
    border-collapse: collapse;
}
.pi-dialog .pi-list th, .pi-dialog .pi-list td {
    padding: 12px 16px;
    border-bottom: 1px solid #eef1f7;
    text-align: left;
    vertical-align: middle;
}
.pi-dialog .pi-list thead th {
    background-color: #f2f6fb;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    color: #6c757d;
}
.pi-dialog .pi-list tbody tr:last-child td {
    border-bottom: 0;
}
.pi-dialog .pi-list .pi-list-name {
    font-weight: 600;
    color: #0a2540;
}
.pi-dialog .pi-list .pi-list-action {
    text-align: right;
    white-space: nowrap;
}
/* What holds the patient back, in the progress tab's colours: green for details to complete, which counts as
		/* a success, and soft red for duplicates and unfinished merges */
.pi-dialog .pi-list .pi-resolve {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 4px 11px;
    border-radius: 20px;
    background-color: rgba(32, 201, 151, 0.1);
    color: #00796b;
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
}
.pi-dialog .pi-list .pi-resolve i {
    font-size: 11px;
    color: #20c997;
}
.pi-dialog .pi-list .pi-resolve.is-failed {
    background-color: #fbeceb;
    color: #a94442;
}
.pi-dialog .pi-list .pi-resolve.is-failed i {
    color: #e48784;
}
.pi-dialog .pi-list .pi-num {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
/* The list and its progress, as tabs */
.pi-dialog .pi-tabs {
    display: -ms-flexbox;
    display: flex;
    gap: 4px;
    margin: 0 0 16px;
    border-bottom: 1px solid #e0e6ed;
}
.pi-dialog .pi-tab {
    margin-bottom: -1px;
    padding: 8px 14px;
    border: 0;
    border-bottom: 2px solid transparent;
    background: none;
    font-weight: 600;
    color: #6c757d;
}
.pi-dialog .pi-tab:hover, .pi-dialog .pi-tab:focus-visible {
    color: #0035d2;
}
.pi-dialog .pi-tab.is-current {
    border-bottom-color: #0035d2;
    color: #0035d2;
}
/* The progress tab */
.pi-dialog .pi-progress {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 16px;
}
.pi-dialog .pi-progress > div {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 16px;
}
.pi-dialog .pi-progress-heading {
    margin: 0 0 8px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    color: #6c757d;
}
.pi-dialog .pi-progress-hero {
    padding: 18px 20px;
}
.pi-dialog .pi-progress-headline {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 12px;
}
.pi-dialog .pi-progress-percent {
    font-size: 34px;
    font-weight: 600;
    line-height: 1;
    color: #0a2540;
}
.pi-dialog .pi-progress-caption {
    color: #333333;
}
.pi-dialog .pi-progress-track {
    height: 8px;
    margin: 14px 0 16px;
    border-radius: 4px;
    background-color: #e7f0ff;
    overflow: hidden;
}
.pi-dialog .pi-progress-fill {
    height: 100%;
    border-radius: 4px;
    background-color: #20c997;
}
.pi-dialog .pi-progress-facts {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[4];
        grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin: 0;
}
.pi-dialog .pi-progress-facts dt {
    font-size: 12px;
    font-weight: normal;
    color: #6c757d;
}
.pi-dialog .pi-progress-facts dd {
    margin: 2px 0 0;
    font-weight: 600;
    color: #0a2540;
}
/* The successes in a row above the failures, so the ticks line up across the dialog */
.pi-dialog .pi-progress-groups {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 16px;
}
.pi-dialog .pi-stat-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[4];
        grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
}
/* Each outcome fills its cell, so a row's cards line up whether or not they open the list */
.pi-dialog .pi-stat-grid > div {
    display: -ms-flexbox;
    display: flex;
}
.pi-dialog .pi-stat {
    display: -ms-flexbox;
    display: flex;
    -ms-flex: 1;
        flex: 1;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 4px;
    padding: 12px 14px;
}
/* A count of patients still to review: opens them on the list */
.pi-dialog button.pi-stat {
    font: inherit;
    text-align: left;
    color: inherit;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.pi-dialog button.pi-stat:hover, .pi-dialog button.pi-stat:focus-visible {
    border-color: #0035d2;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
}
.pi-dialog button.pi-stat:hover .pi-stat-link i, .pi-dialog button.pi-stat:focus-visible .pi-stat-link i {
    transform: translateX(2px);
}
.pi-dialog .pi-stat-link {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-top: auto;
    padding-top: 4px;
    font-size: 12px;
    font-weight: 600;
    color: #0035d2;
}
.pi-dialog .pi-stat-link i {
    font-size: 10px;
    transition: transform 0.15s ease;
}
.pi-dialog .pi-stat-value {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    font-size: 20px;
    font-weight: 600;
    line-height: 1.1;
    color: #0a2540;
}
.pi-dialog .pi-stat-icon {
    font-size: 17px;
}
.pi-dialog .pi-stat-icon.is-ok {
    color: #20c997;
}
.pi-dialog .pi-stat-icon.is-failed {
    color: #e48784;
}
.pi-dialog .pi-stat-label {
    font-size: 12px;
    line-height: 1.3;
    color: #6c757d;
}
/* A callout with an action of its own, at its end */
.pi-dialog .pi-callout-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.pi-dialog .pi-callout-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
}
/* The list's filter: every patient to review, only those the import couldn't create, or one group of the rest */
.pi-dialog .pi-filters {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 14px;
}
.pi-dialog .pi-filter {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 5px 14px;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    background-color: #ffffff;
    font-size: 12.5px;
    font-weight: 600;
    color: #6c757d;
}
.pi-dialog .pi-filter i {
    font-size: 11px;
}
.pi-dialog .pi-filter:hover, .pi-dialog .pi-filter:focus-visible {
    border-color: #0035d2;
    color: #0035d2;
}
.pi-dialog .pi-filter.is-current {
    border-color: #0035d2;
    background-color: #e7f0ff;
    color: #0035d2;
}
/* How many were not created, in the soft red the list gives them */
.pi-dialog .pi-filter-count {
    padding: 0 7px;
    border-radius: 10px;
    background-color: #fbeceb;
    color: #a94442;
    font-size: 11px;
    font-variant-numeric: tabular-nums;
}
/* A patient the import couldn't create: what the previous system held, beside their records */
.pi-dialog .pi-uc-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[2];
        grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}
.pi-dialog .pi-uc-panel {
    padding: 14px 16px;
}
.pi-dialog .pi-uc-panel .pi-progress-heading {
    margin-bottom: 10px;
}
.pi-dialog .pi-uc-panel p {
    margin: 0;
}
.pi-dialog .pi-uc-panel .pi-uc-sections {
    margin-top: 12px;
}
.pi-dialog .pi-uc-facts {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: max-content minmax(0, 1fr);
        grid-template-columns: max-content minmax(0, 1fr);
    gap: 6px 14px;
    margin: 0;
}
.pi-dialog .pi-uc-facts > div {
    display: contents;
}
.pi-dialog .pi-uc-facts dt {
    font-weight: normal;
    color: #6c757d;
}
.pi-dialog .pi-uc-facts dd {
    margin: 0;
    color: #0a2540;
    overflow-wrap: anywhere;
}
.pi-dialog .pi-uc-documents {
    margin: 0;
    padding: 0;
    list-style: none;
}
.pi-dialog .pi-uc-documents li {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 7px 0;
    border-bottom: 1px solid #eef1f7;
}
.pi-dialog .pi-uc-documents li:last-child {
    border-bottom: 0;
}
.pi-dialog .pi-uc-documents li > i {
    color: #0035d2;
}
.pi-dialog .pi-uc-documents li .pi-link, .pi-dialog .pi-uc-documents li .pi-muted {
    margin-left: auto;
}
.pi-dialog .pi-uc-documents li .pi-link {
    color: #0035d2;
}
.pi-dialog .pi-uc-documents-note {
    margin: 8px 0 0;
    font-size: 12.5px;
}
/* A record, read in the PDF viewer in place of the patient's details */
.pi-dialog .pi-uc-viewer-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 8px 16px;
    margin-bottom: 12px;
}
.pi-dialog .pi-uc-viewer-head .pi-title {
    margin: 0;
}
.pi-dialog .pi-uc-viewer-nav {
    display: -ms-flexbox;
    display: flex;
    gap: 8px;
}
.pi-dialog .pi-uc-viewer-nav .btn {
    margin: 0;
}
.pi-dialog .pi-uc-viewer-nav i {
    font-size: 11px;
}
/* The pages scroll inside the viewer, sized so the dialog itself never has to: the window's height less the
	   dialog's title, the patient above, the record's heading and the viewer's toolbar, and the actions below */
.pi-dialog .pi-uc-viewer .pdf-scroll-viewer-scroll {
    height: calc(90vh - 360px);
    min-height: 240px;
    max-height: none;
    border-radius: 10px;
}
.pi-dialog .pi-uc-document-date {
    color: #0a2540;
}
/* The patient chosen for the records, on its own above what adding them means */
.pi-dialog .pi-uc-target {
    margin-bottom: 16px;
}
.pi-dialog .pi-uc-options {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 10px;
}
.pi-dialog .pi-uc-search {
    display: -ms-flexbox;
    display: flex;
    gap: 10px;
    margin-bottom: 16px;
}
.pi-dialog .pi-uc-search .form-control {
    -ms-flex: 1;
        flex: 1;
}
/* A narrow window: the outcomes and the facts go two to a row, and the not-created patient's panels stack */
@media (max-width: 760px) {
    .pi-dialog .pi-stat-grid, .pi-dialog .pi-progress-facts {
        -ms-grid-columns: (minmax(0, 1fr))[2];
            grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .pi-dialog .pi-uc-grid {
        -ms-grid-columns: minmax(0, 1fr);
            grid-template-columns: minmax(0, 1fr);
    }
}
/* =================================================================== */
/* ! eOrders - lab menu in the patient header, and the eOrders help
/* =================================================================== */
/* Greyed out without the electronic prescribing permission. The link takes no clicks, so hovering the
   item shows its title, which says why. */
.patient-header li.eorders-locked {
	cursor: not-allowed;
}
.eorders-menu {
	text-align: left;
	/* The popover renders inside the patient header's nav list, which spaces out its letters and
	   shrinks its text; undo that for the menu. */
	letter-spacing: normal;
	font-size: 13px;
}
/* ...and which lays every list out as a horizontal pill bar (_nav.css, .nav-wrap-flex .nav-nav-wrap
	   ul / li). The checklist is a plain vertical list, so reset it with selectors that out-rank those. */
.eorders-menu .eorders-menu-card ul.eorders-checklist {
    display: block;
    padding: 0;
    margin: 0;
    background: none;
    border-radius: 0;
    letter-spacing: normal;
}
.eorders-menu .eorders-menu-card ul.eorders-checklist > li {
    display: -ms-flexbox;
    display: flex;
    padding: 5px 0;
    border-radius: 0;
    background: none;
    font-size: 13px;
}
.eorders-menu .menu-arrow {
    border-bottom-color: #ffffff;
}
.eorders-menu .eorders-menu-card {
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    box-shadow: 0 10px 30px rgba(10, 37, 64, 0.12);
    overflow: hidden;
}
.eorders-menu .eorders-menu-head {
    padding: 12px 16px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.1em;
    color: #6c757d;
    border-bottom: 1px solid #e0e6ed;
}
.eorders-menu .eorders-menu-foot {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    padding: 12px 16px;
    font-size: 13px;
    background: #f2f6fb;
    border-top: 1px solid #e0e6ed;
}
.eorders-menu .eorders-menu-foot a {
    color: #0035d2;
    font-weight: 600;
}
/* What is still missing before eOrders can open */
.eorders-setup-panel {
	margin: 12px;
	padding: 12px;
	border-radius: 8px;
	background: rgba(255, 243, 205, 0.9);
	border: 1px solid rgba(255, 193, 7, 0.7);
}
.eorders-setup-panel h5 {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin: 0 0 8px;
    font-size: 13px;
    font-weight: 700;
    color: #856404;
}
.eorders-setup-panel .eorders-dismiss {
    margin-left: auto;
    padding: 2px 9px;
    font-size: 11px;
    font-weight: 600;
    color: #856404;
    background: #ffffff;
    border: 1px solid rgba(255, 193, 7, 0.7);
    border-radius: 999px;
}
.eorders-setup-panel .eorders-dismiss:hover {
    border-color: #856404;
}
.eorders-checklist {
	list-style: none;
	margin: 0;
	padding: 0;
}
.eorders-checklist li {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    padding: 5px 0;
    font-size: 13px;
    color: #343a40;
}
.eorders-checklist .eorders-check-label {
    -ms-flex: 1;
        flex: 1;
}
.eorders-checklist .eorders-check-label small {
    display: block;
    font-size: 11px;
    color: #6c757d;
}
.eorders-check {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: center;
	    justify-content: center;
	-ms-flex: none;
	    flex: none;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	font-size: 10px;
	color: #ffffff;
}
.eorders-check.ok {
    background: #20c997;
}
.eorders-check.todo {
    background: #d87d4a;
}
.eorders-fix {
	padding: 3px 8px;
	font-size: 12px;
	font-weight: 600;
	white-space: nowrap;
	color: #0035d2;
	background: #ffffff;
	border: 1px solid #e0e6ed;
	border-radius: 6px;
}
.eorders-fix:hover {
    border-color: #0035d2;
}
.eorders-ask {
	font-size: 12px;
	white-space: nowrap;
	color: #6c757d;
}
/* One row per lab */
.eorders-lab {
	display: -ms-flexbox;
	display: flex;
	gap: 12px;
	padding: 12px 16px;
	border-top: 1px solid #e0e6ed;
	text-decoration: none !important;
}
/* Bootstrap underlines links on hover; the row is the link */
.eorders-lab:hover {
    background: #f2f6fb;
}
.eorders-lab .eorders-lab-bar {
    width: 3px;
    border-radius: 2px;
    background: #00bcd4;
}
.eorders-lab .eorders-lab-body {
    -ms-flex: 1;
        flex: 1;
}
.eorders-lab .eorders-lab-title {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    font-size: 15px;
    font-weight: 700;
    color: #0035d2;
}
.eorders-lab .eorders-lab-title img {
    width: 12px;
    height: 12px;
}
.eorders-lab .eorders-lab-desc {
    margin-top: 2px;
    font-size: 12px;
    color: #6c757d;
}
.eorders-lab .eorders-lab-hint {
    margin-top: 4px;
    font-size: 12px;
    color: #856404;
}
.eorders-lab.blocked .eorders-lab-bar {
    background: #c0cde0;
}
.eorders-lab.blocked .eorders-lab-title {
    color: #6c757d;
}
.eorders-pill {
	margin-left: auto;
}
.eorders-pill span {
    padding: 2px 8px;
    font-size: 11px;
    font-weight: 600;
    border-radius: 999px;
}
.eorders-pill .ready {
    background: rgba(32, 201, 151, 0.1);
    color: #20c997;
}
.eorders-pill .warn {
    background: rgba(255, 243, 205, 0.9);
    color: #856404;
}
.eorders-pill .open {
    background: #e7f0ff;
    color: #0035d2;
}
.eorders-hidden-note {
	padding: 9px 16px;
	font-size: 12px;
	color: #6c757d;
	border-top: 1px dashed #e0e6ed;
}
.eorders-hidden-note a {
    color: #0035d2;
    font-weight: 600;
}
/* ------------------------------------------------------------------- */
/* eOrders help
/* ------------------------------------------------------------------- */
.eorders-help {
	width: 820px;
	max-width: 95vw;
}
.eorders-help .eorders-tabs {
    display: -ms-flexbox;
    display: flex;
    gap: 4px;
    padding: 0 22px;
    background: #f2f6fb;
    border-bottom: 1px solid #e0e6ed;
}
.eorders-help .eorders-tabs button {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 12px 14px;
    font-size: 13px;
    font-weight: 600;
    color: #6c757d;
    background: none;
    border: 0;
    border-bottom: 3px solid transparent;
}
.eorders-help .eorders-tabs button.on {
    color: #0035d2;
    border-bottom-color: #00bcd4;
}
.eorders-help .eorders-count {
    padding: 1px 6px;
    font-size: 10px;
    color: #ffffff;
    background: #d87d4a;
    border-radius: 999px;
}
.eorders-help .eorders-help-body {
    padding: 22px;
    max-height: 60vh;
    overflow-y: auto;
    color: #343a40;
    font-size: 13px;
}
.eorders-help .eorders-lead {
    margin: 0 0 16px;
    color: #6c757d;
}
.eorders-help .eorders-step {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 14px;
    margin-bottom: 10px;
    padding: 14px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
}
.eorders-help .eorders-step.todo {
    background: rgba(255, 243, 205, 0.9);
    border-color: rgba(255, 193, 7, 0.7);
}
.eorders-help .eorders-step.todo .eorders-step-num {
    background: #d87d4a;
}
.eorders-help .eorders-step h4 {
    margin: 2px 0 4px;
    font-size: 14px;
    font-weight: 700;
    color: #0a2540;
}
.eorders-help .eorders-step p {
    margin: 0;
    color: #6c757d;
    line-height: 1.45;
}
.eorders-help .eorders-step .btn {
    width: auto;
    white-space: nowrap;
}
.eorders-help .eorders-step-num {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    -ms-flex: none;
        flex: none;
    width: 26px;
    height: 26px;
    font-size: 12px;
    font-weight: 700;
    color: #ffffff;
    background: #20c997;
    border-radius: 50%;
}
.eorders-help .eorders-step-body {
    -ms-flex: 1;
        flex: 1;
}
.eorders-help .eorders-who {
    margin-top: 6px !important;
    font-size: 12px;
    color: #856404 !important;
}
.eorders-help .eorders-status {
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
    color: #20c997;
}
.eorders-help .eorders-tag {
    margin-left: 4px;
    padding: 1px 6px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #856404;
    background: rgba(255, 243, 205, 0.9);
    border-radius: 4px;
    vertical-align: middle;
}
.eorders-help .eorders-lab-card {
    margin-bottom: 10px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    overflow: hidden;
}
.eorders-help .eorders-lab-card summary {
    padding: 12px 14px;
    font-weight: 700;
    color: #0a2540;
    cursor: pointer;
}
.eorders-help .eorders-lab-card summary span {
    margin-left: 8px;
    font-weight: 400;
    font-size: 12px;
    color: #6c757d;
}
.eorders-help .eorders-lab-card[open] summary {
    background: #f2f6fb;
    border-bottom: 1px solid #e0e6ed;
}
.eorders-help .eorders-lab-card .eorders-card-intro {
    margin: 12px 14px 0;
    line-height: 1.5;
}
.eorders-help .eorders-lab-card ol {
    margin: 12px 14px 0 14px;
    padding-left: 18px;
    line-height: 1.6;
}
.eorders-help .eorders-lab-card ol ul {
    margin: 2px 0 4px;
    padding-left: 18px;
    list-style: disc;
}
.eorders-help .eorders-lab-card .eorders-after {
    margin: 10px 14px 12px;
    padding: 8px 10px;
    font-size: 12px;
    background: rgba(0, 188, 212, 0.1);
    border-radius: 6px;
}
.eorders-help .eorders-faq {
    border-bottom: 1px solid #e0e6ed;
}
.eorders-help .eorders-faq summary {
    padding: 12px 2px;
    font-weight: 600;
    color: #0a2540;
    cursor: pointer;
}
.eorders-help .eorders-faq p {
    margin: 0 0 12px 18px;
    line-height: 1.5;
    color: #6c757d;
}
.eorders-help a {
    color: #0035d2;
    text-decoration: underline;
}
.eorders-help .eorders-foot-note {
    font-size: 12px;
    color: #6c757d;
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
}
/* =================================================================== */
/* ! Reports (the user's interactive reports dialog)
/* =================================================================== */
/* Opened from the nav in the same wide dialog as the task and waitlist lists (.worklist-dialog). */
/* The title, with whose the report on screen is under it, centred together as other dialogs centre
	   their title. The shared .dialog-title centres itself absolutely; here the pair is centred instead. */
.reports-dialog .reports-heading {
    position: absolute;
    left: 50%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    max-width: 70%;
    text-align: center;
    transform: translateX(-50%);
}
.reports-dialog .reports-heading .dialog-title {
    position: static;
    transform: none;
    line-height: 1.2;
}
.reports-dialog .reports-updated {
    max-width: 100%;
    margin-top: 0.15rem;
    overflow: hidden;
    color: #6c757d;
    font-size: 0.85rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* The report switcher: a card per report, the user's own first, then the practice's after a rule. */
.reports-dialog .reports-switcher {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: stretch;
        align-items: stretch;
    gap: 0.75rem;
    padding: 0.75rem 1.5rem;
    border-bottom: 1px solid #e0e6ed;
    background-color: #f8faff;
    overflow-x: auto;
}
.reports-dialog .reports-switcher-group {
    display: -ms-flexbox;
    display: flex;
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    gap: 0.5rem;
}
.reports-dialog .reports-switcher-group + .reports-switcher-group {
    padding-left: 0.75rem;
    border-left: 1px solid #e0e6ed;
}
.reports-dialog .reports-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.65rem;
    min-width: 11rem;
    max-width: 20rem;
    padding: 0.5rem 1rem 0.5rem 0.6rem;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    background-color: #ffffff;
    color: #333333;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.reports-dialog .reports-card:hover {
    border-color: #c0cde0;
}
.reports-dialog .reports-card.active {
    border-color: #00bcd4;
    box-shadow: 0 0 0 1px #00bcd4, 0 4px 10px rgba(0, 0, 0, 0.1);
}
.reports-dialog .reports-card:focus-visible {
    outline: 2px solid #00bcd4;
    outline-offset: 2px;
}
/* Whose it is, at a glance: a person on navy for the user's own, a building on teal for the practice's. */
.reports-dialog .reports-card-icon {
    display: -ms-flexbox;
    display: flex;
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 2.1rem;
    height: 2.1rem;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
}
.reports-dialog .reports-card-icon span {
    display: -ms-flexbox;
    display: flex;
}
.reports-dialog .reports-card-icon svg {
    width: 1.1rem;
    height: 1.1rem;
}
.reports-dialog .reports-card.is-practice .reports-card-icon {
    background-color: #e0f2f1;
    color: #00796b;
}
.reports-dialog .reports-card-text {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    min-width: 0;
    line-height: 1.25;
}
.reports-dialog .reports-card-title, .reports-dialog .reports-card-owner {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.reports-dialog .reports-card-title {
    color: #0a2540;
    font-size: 0.95rem;
    font-weight: 600;
}
.reports-dialog .reports-card-owner {
    color: #6c757d;
    font-size: 0.78rem;
}
/* Fills the dialog below the toolbar and the cards. Said here, not left to Angular Material turning the
	   template's flex attribute into a class, so the dashboard always has the room it sizes itself from. */
.reports-dialog .reports-body {
    position: relative;
    display: -ms-flexbox;
    display: flex;
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    -ms-flex-direction: column;
        flex-direction: column;
    min-height: 0;
}
.reports-dialog .reports-message {
    padding: 2rem;
    max-width: 40rem;
    color: #555555;
}
.reports-dialog .reports-message p {
    margin-bottom: 0.75rem;
}
.reports-dialog .reports-error {
    color: #333333;
}
/* Fills the dialog body. Each report's component styles itself inside its shadow root and sizes its
	   host from --ct-height, so it gets a definite box to fill, whichever component it is. */
.reports-dialog .reports-dashboard {
    position: relative;
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-height: 0;
}
.reports-dialog report-view {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    display: block;
}
.reports-dialog report-view > * {
    display: block;
    height: 100%;
    --ct-height: 100%;
}
.modern-login-page {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	min-height: 100vh;
	width: 100%;
	font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	font-size: 16px;
	color: #ffffff;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	--page-bg-image: url('https://cattrax-media.s3.ap-southeast-2.amazonaws.com/images/surgeon_image_cropped2.jpg');
	--page-bg-position: center;
	background-image: linear-gradient(rgba(10, 37, 64, 0.95), rgba(10, 37, 64, 0.85)), var(--page-bg-image);
	background-position: var(--page-bg-position);
	background-repeat: no-repeat;
	background-size: cover;
}
.modern-login-page main.hero-section {
    background: none;
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 1.2fr 1fr;
        grid-template-columns: 1.2fr 1fr;
    -ms-flex-align: center;
        align-items: center;
    gap: 4rem;
    padding: 5rem 5%;
    -ms-flex-positive: 1;
        flex-grow: 1;
    max-width: 1400px;
    margin: 0 auto;
}
@media (max-width: 992px) {
    .modern-login-page main.hero-section {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
        text-align: center;
        padding: 3rem 5%;
        gap: 2.5rem;
    }
}
.hero-content {
	padding-right: 2rem;
	color: #ffffff;
}
@media (max-width: 992px) {
    .hero-content {
        padding-right: 0;
        margin-bottom: 0;
        text-align: center;/* This centers the content on mobile */
    }
}
.main-logo {
	max-width: 280px;
	margin-bottom: 2.5rem;
	filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.3));
}
@media (max-width: 992px) {
    .main-logo {
        margin-left: auto;
        margin-right: auto;
    }
}
.hero-title {
	font-size: 3.2rem;
	font-weight: 700;
	line-height: 1.15;
	margin-bottom: 1.25rem;
	color: #ffffff;
	letter-spacing: -0.03em;
}
@media (max-width: 992px) {
    .hero-title {
        font-size: 2.5rem;
    }
}
@media (max-width: 576px) {
    .hero-title {
        font-size: 2rem;
    }
}
.hero-subtitle {
	font-size: 1.15rem;
	font-weight: 300;
	margin-bottom: 3rem;
	color: rgba(255, 255, 255, 0.85);
	line-height: 1.6;
}
@media (max-width: 992px) {
    .hero-subtitle {
        font-size: 1rem;
    }
}
.benefits-list {
	list-style: none;
	padding: 0;
	margin: 0;

}
@media (max-width: 992px) {
    .benefits-list {/* This allows the <ul> to be centered by its parent's text-align:center */
        display: inline-block;
    }
}
.benefits-list li {
    font-size: 1.05rem;
    font-weight: 400;
    margin-bottom: 1.2rem;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    color: #ffffff;
    text-align: left;/* Fixes list item text alignment */
}
.benefits-list .checkmark {
    color: #00bcd4;
    font-size: 1.4rem;
    margin-right: 1rem;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.privacy-link {
	margin-top: 2rem;
	font-size: 0.9rem;
	text-align: center;
	color: rgba(255, 255, 255, 0.75);
}
.privacy-link a {
    color: #00bcd4;
    font-weight: 500;
    text-decoration: none;
    transition: color 0.3s ease;
}
.privacy-link a:hover {
    text-decoration: underline;
    color: #008c9e;
}
.proof-section {
	background-color: rgba(255, 255, 255, 0.05);
	padding: 3.5rem 5%;
	text-align: center;
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	color: #ffffff;
	font-size: 0.95rem;
}
.proof-title {
	font-size: 2.2rem;
	font-weight: 700;
	margin-bottom: 3rem;
	color: #ffffff;
}
@media (max-width: 992px) {
    .proof-title {
        font-size: 1.8rem;
    }
}
.testimonials-horizontal {
	display: -ms-grid;
	display: grid;
	-ms-grid-columns: (minmax(300px, 1fr))[auto-fit];
	    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: 2.5rem;
	max-width: 1200px;
	margin: 0 auto;
}
@media (max-width: 992px) {
    .testimonials-horizontal {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
}
.testimonial-card-horizontal {
	background: rgba(255, 255, 255, 0.1);
	padding: 2.5rem;
	border-radius: 12px;
	box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	-ms-flex-align: center;
	    align-items: center;
	text-align: center;
	border: 1px solid rgba(255, 255, 255, 0.15);

}
.testimonial-card-horizontal .quote {
    font-size: 1.05rem;
    line-height: 1.7;
    margin-bottom: 1.5rem;
    color: rgba(255, 255, 255, 0.9);
    font-style: italic;
}
.testimonial-card-horizontal cite {
    font-size: 1rem;
    font-weight: 500;
    color: #00bcd4;
    display: block;
    margin-top: auto;
}
.testimonial-avatar {
	width: 90px;
	height: 90px;
	border-radius: 50%;
	-o-object-fit: cover;
	   object-fit: cover;
	margin-bottom: 1.5rem;
	border: 3px solid #00bcd4;
	box-shadow: 0 0 0 5px rgba(0, 188, 212, 0.2);
}
.page-footer {
	display: -ms-grid;
	display: grid;
	-ms-grid-columns: 1fr auto 1fr;
	    grid-template-columns: 1fr auto 1fr;
	-ms-flex-align: center;
	    align-items: center;
	padding: 1.5rem 5%;
	width: 100%;
	box-sizing: border-box;
}
@media (max-width: 992px) {
    .page-footer {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse;
        gap: 1.5rem;
        padding: 2rem 5%;
    }
}
.page-footer .copyright {
    -ms-grid-column: 2;
        grid-column: 2;
    text-align: center;
    color: rgba(255, 255, 255, 0.7);
    font-size: 0.95rem;
}
.page-footer .pentest-badge {
    -ms-grid-column: 2;
        grid-column: 2;
    justify-self: end;
}
.page-footer .pentest-badge img {
    max-width: 300px;
    height: auto;
}
.value-prop-section {
	padding: 6.5rem 5%;
}
@media (max-width: 992px) {
    .value-prop-section {
        padding: 3rem 5%;
    }
}
.value-prop-container {
	display: -ms-grid;
	display: grid;
	-ms-grid-columns: (1fr)[3];
	    grid-template-columns: repeat(3, 1fr);
	gap: 2.5rem;
	max-width: 1200px;
	margin: 0 auto;
	text-align: center;
}
@media (max-width: 992px) {
    .value-prop-container {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
        gap: 2rem;
    }
}
.value-prop-card {
	background: rgba(255, 255, 255, 0.05);
	padding: 2.5rem 2rem;
	border-radius: 16px;
	border: 1px solid rgba(255, 255, 255, 0.15);
	transition: all 0.3s ease;
	-webkit-backdrop-filter: blur(5px);
	        backdrop-filter: blur(5px);
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.value-prop-card:hover {
    transform: translateY(-10px);
    background: rgba(255, 255, 255, 0.1);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
    border-color: rgba(0, 188, 212, 0.5);
}
.value-prop-card:hover .title-referral {
    color: #00bcd4;
}
.value-prop-card:hover .icon-management, .value-prop-card:hover .title-management {
    border-color: rgba(32, 201, 151, 0.5);
    color: #20c997;
}
.value-prop-card:hover .icon-management {
    background: rgba(32, 201, 151, 0.2);
}
.value-prop-card:hover .icon-tech, .value-prop-card:hover .title-tech {
    border-color: rgba(255, 182, 39, 0.5);
    color: #FFB627;
}
.value-prop-card:hover .icon-tech {
    background: rgba(255, 182, 39, 0.2);
}
.value-prop-card:hover .value-prop-icon-wrapper {
    transform: scale(1.1) rotate(5deg);
}
.value-prop-icon-wrapper {
	width: 80px;
	height: 80px;
	margin: 0 auto 1.5rem auto;
	border-radius: 50%;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: center;
	    justify-content: center;
	transition: all 0.3s ease;
}
.value-prop-icon {
	font-size: 2.5rem;
	line-height: 1;
}
.icon-referral {
	background: rgba(0, 188, 212, 0.1);

}
.icon-referral .value-prop-icon {
    color: #00bcd4;
}
.title-referral, .icon-referral .value-prop-icon {
	color: #00bcd4;
}
.icon-management {
	background: rgba(32, 201, 151, 0.1);

}
.icon-management .value-prop-icon {
    color: #20c997;
}
.title-management, .icon-management .value-prop-icon {
	color: #20c997;
}
.icon-tech {
	background: rgba(255, 182, 39, 0.1);

}
.icon-tech .value-prop-icon {
    color: #FFB627;
}
.title-tech, .icon-tech .value-prop-icon {
	color: #FFB627;
}
.value-prop-title {
	font-size: 1.3rem;
	font-weight: 600;
	margin: 0 0 1rem 0;
	transition: color 0.3s ease;
}
.value-prop-text {
	font-size: 1rem;
	color: rgba(255, 255, 255, 0.85);
	line-height: 1.7;
	margin: 0;
	-ms-flex-positive: 1;
	    flex-grow: 1;
}
.btn-see-more {
	display: inline-block;
	-ms-flex-item-align: center;
	    -ms-grid-row-align: center;
	    align-self: center;
	margin-top: auto;
	padding: 0.75rem 1.5rem;
	border: 2px solid rgba(255, 255, 255, 0.6);
	border-radius: 50px;
	background-color: transparent;
	color: #ffffff;
	font-weight: 500;
	text-transform: uppercase;
	font-size: 0.8rem;
	letter-spacing: 0.05em;
	text-decoration: none;
	text-align: center;
	transition: all 0.3s ease;
	cursor: pointer;

}
.btn-see-more:hover {
    background-color: rgba(255, 255, 255, 0.1);
    border-color: #00bcd4;
    transform: translateY(-2px);
}
.features-overview {
	padding-top: 2rem;
	padding-bottom: 4rem;

}
.features-overview .features-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(320px, 1fr))[auto-fit];
        grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 2rem;
}
.feature-category-section {
	max-width: 1400px;
	margin: 0 auto 4rem auto;
	padding: 0 1rem;
}
.category-header {
	text-align: center;
	margin-bottom: 3rem;

}
.category-header h2 {
    font-size: 2.5rem;
    font-weight: 700;
    margin: 0 0 0.75rem 0;
}
.category-header p {
    font-size: 1.15rem;
    max-width: 750px;
    margin: 0 auto;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.6;
}
.category-header.optometry h2 {
    color: #00bcd4;
}
.category-header.ophthalmology h2 {
    color: #20c997;
}
.category-header.management h2 {
    color: #FFB627;
}
.category-header.hospitals h2 {
    color: #a29bfe;
}
.category-icon {
	display: inline-block;
	font-size: 2.5rem;
	width: 80px;
	height: 80px;
	line-height: 80px;
	border-radius: 50%;
	margin-bottom: 1.5rem;
	padding-top: 2rem;
	background: rgba(255, 255, 255, 0.1);
	transition: all 0.3s ease;
}
.category-icon.optometry {
    color: #00bcd4;
    border: 2px solid rgba(0, 188, 212, 0.3);
}
.category-icon.ophthalmology {
    color: #20c997;
    border: 2px solid rgba(32, 201, 151, 0.3);
}
.category-icon.management {
    color: #FFB627;
    border: 2px solid rgba(255, 182, 39, 0.3);
}
.category-icon.hospitals {
    color: #a29bfe;
    border: 2px solid rgba(162, 155, 254, 0.3);
}
.features-grid {
	display: -ms-grid;
	display: grid;
	-ms-grid-columns: (1fr)[3];
	    grid-template-columns: repeat(3, 1fr);
	gap: 2rem;
}
@media (max-width: 992px) {
    .features-grid {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
}
.feature-card {
	text-align: center;
	padding: 2.5rem 2rem;
	background: rgba(255, 255, 255, 0.05);
	border: 1px solid rgba(255, 255, 255, 0.15);
	border-radius: 12px;
	transition: transform 0.3s ease, background-color 0.3s ease;

}
.feature-card:hover {
    transform: translateY(-8px);
    background: rgba(255, 255, 255, 0.1);
}
.feature-icon {
	font-size: 2.8rem;
	margin-bottom: 1.5rem;
	color: #00bcd4;
}
.feature-title {
	font-size: 1.3rem;
	font-weight: 600;
	margin: 0 0 0.75rem 0;
	color: #ffffff;
}
.feature-description {
	font-size: 1rem;
	color: rgba(255, 255, 255, 0.85);
	line-height: 1.7;
	margin: 0;
}
.final-cta-section {
	text-align: center;
	padding: 4rem 5%;
	background-color: rgba(0, 0, 0, 0.2);

}
.final-cta-section .btn-nav-demo {
    font-size: 1.2rem;
    padding: 1rem 2.5rem;
}
.features-disclaimer {
	text-align: center;
	padding: 2rem 5% 1rem 5%;
	max-width: 800px;
	margin: 0 auto;
	font-size: 0.9rem;
	color: rgba(255, 255, 255, 0.6);
	line-height: 1.6;
}
@media (max-width: 992px) {
    .section-title {
        font-size: 2rem;
    }
}
.full-screen-loader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #ffffff;
    z-index: 99999;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-pack: center;
        justify-content: center;
    -ms-flex-align: center;
        align-items: center;
}
.modern-login-page .login-card {
    background: #ffffff;
    color: #333333;
    padding: 3rem;
    border-radius: 12px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
    width: 100%;
    max-width: 450px;
    position: relative;
}
@media (max-width: 992px) {
    .modern-login-page .login-card {
        padding: 2.5rem;
    }
}
@media (max-width: 576px) {
    .modern-login-page .login-card {
        padding: 2rem 1.5rem;
    }
}
.modern-login-page .processing-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(4px);
    border-radius: 12px;
    -webkit-backdrop-filter: blur(4px);
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    z-index: 10;
    color: #0a2540;
    gap: 1rem;
    font-weight: 500;
    font-size: 1rem;
}
.modern-login-page .spinner {
    width: 40px;
    height: 40px;
    border: 4px solid rgba(10, 37, 64, 0.2);
    border-top-color: #00bcd4;
    border-radius: 50%;
    animation: spinner-rotation 0.8s linear infinite;
}
.modern-login-page .login-panel .btn:focus-visible, .modern-login-page .login-panel a:focus-visible {
    outline: 2px solid #00bcd4;
    outline-offset: 2px;
    box-shadow: none;
}
@media (max-width: 992px) {
    .modern-login-page .login-panel {
        padding: 2rem;
    }
}
.modern-login-page .text-danger {
    color: #d9534f;
    font-weight: 500;
}
.modern-login-page .text-success {
    color: #5cb85c;
    font-weight: 500;
}
.modern-login-page .text-center {
    text-align: center;
}
.modern-login-page .login-panel-text {
    font-size: 1rem;
    color: #6c757d;
    text-align: center;
    line-height: 1.6;
    margin: 0 auto 1.5rem auto;
    max-width: 90%;
}
.modern-login-page .verify-input-container {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 0.75rem;
    margin: 2rem auto;
}
.modern-login-page .verify-input-container input {
    width: 45px;
    height: 55px;
    font-size: 1.8rem;
    text-align: center;
    padding: 0.5rem;
    font-weight: 600;
    color: #0a2540;
}
.modern-login-page .form-actions-centered {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-pack: center;
        justify-content: center;
    margin-top: 1.8rem;
    gap: 1rem;
}
.modern-login-page .form-group {
    margin-bottom: 1.5rem;
}
.modern-login-page .form-group label {
    display: block;
    font-size: 0.95rem;
    font-weight: 500;
    margin-bottom: 0.6rem;
    color: #333333;
}
.modern-login-page .form-control {
    width: 100%;
    padding: 1rem 1.2rem;
    font-size: 1rem;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    box-sizing: border-box;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
    color: #333333;
    background-color: #ffffff;
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
.modern-login-page .form-control:focus {
    outline: none;
    border-color: #00bcd4;
    box-shadow: 0 0 0 3px rgba(0, 188, 212, 0.25);
}
.modern-login-page .form-actions {
    display: -ms-flexbox;
    display: flex;
    gap: 1rem;
    margin-top: 1.8rem;
}
.modern-login-page .btn {
    width: 100%;
    max-width: none;
    padding: 1rem 1.5rem;
    font-size: 1rem;
    font-weight: 700;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.3s ease;
    letter-spacing: 0.02em;
}
@media (max-width: 576px) {
    .modern-login-page .btn {
        padding: 0.8rem 1rem;
        font-size: 0.95rem;
    }
}
.modern-login-page .btn-login {
    background-color: #00bcd4;
    color: #ffffff;
    box-shadow: 0 4px 15px rgba(0, 188, 212, 0.3);
}
.modern-login-page .btn-login:hover {
    background-color: #008c9e;
    transform: translateY(-3px);
    box-shadow: 0 6px 20px rgba(0, 188, 212, 0.4);
}
.modern-login-page .btn-lost {
    background-color: transparent;
    color: #0a2540;
    font-weight: 600;
    border: 1px solid #c0cde0;
    box-shadow: none;
    opacity: 0.9;
}
.modern-login-page .btn-lost:hover {
    background-color: rgba(10, 37, 64, 0.05);
    border-color: #0a2540;
    color: #0a2540;
    transform: translateY(-2px);
    opacity: 1;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.modern-login-page .dev-warning {
    background-color: rgba(255, 243, 205, 0.9);
    border: 1px solid rgba(255, 193, 7, 0.7);
    border-radius: 8px;
    padding: 1rem;
    margin-bottom: 1.5rem;
    color: #856404;
    font-size: 0.9rem;
    text-align: center;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
@media (max-width: 576px) {
    .modern-login-page .login-title {
        font-size: 1.6rem;
    }
}
@keyframes spinner-rotation {
	to {
		transform: rotate(360deg);
	}
}
.about-page {
    /* Override the variable for this specific page */
    --page-bg-image: url('https://cattrax-media.s3.ap-southeast-2.amazonaws.com/images/surgeon_image_cropped2.jpg');
    --page-bg-position: center;
}
.modern-login-page .about-section {
    padding: 4rem 5%;
}
.modern-login-page .about-container {
    max-width: 900px;
    margin: 0 auto;
    color: rgba(255, 255, 255, 0.9);
}
.modern-login-page .about-container p {
    font-size: 1.15rem;
    line-height: 1.8;
    margin-bottom: 2rem;
    font-weight: 300;
}
.modern-login-page .about-container .section-title {
    text-align: left;
    font-size: 2.2rem;
    margin-bottom: 2rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
    color: #ffffff;
}
.modern-login-page .about-container .subsection-title {
    font-size: 1.8rem;
    font-weight: 600;
    color: #ffffff;
    margin-top: 4rem;
    margin-bottom: 1.5rem;
}
.modern-login-page .about-container ul {
    list-style: none;
    padding: 0;
    margin-top: 1.5rem;
}
.modern-login-page .about-container li {
    position: relative;
    margin-bottom: 1.25rem;
    font-size: 1.15rem;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.85);
    padding-left: 2.5rem;
}
.modern-login-page .about-container li i {
    position: absolute;
    left: 0;
    top: 4px;
    color: #00bcd4;
    font-size: 1.1rem;
}
.modern-login-page .about-container li strong {
    color: #ffffff;
    font-weight: 600;
}
.modern-login-page .impact-section {
    background: rgba(0, 0, 0, 0.3);
    -webkit-backdrop-filter: blur(5px);
            backdrop-filter: blur(5px);
    padding: 4rem 5%;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.modern-login-page .impact-container {
    max-width: 1200px;
    margin: 0 auto;
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (0.5fr)[3];
        grid-template-columns: repeat(3, 0.5fr);
    gap: 0rem;
    text-align: center;
}
.modern-login-page .impact-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-pack: center;
        justify-content: center;
    transition: transform 0.3s ease;
}
.modern-login-page .impact-card:hover {
    transform: translateY(-5px);
}
.modern-login-page .impact-number {
    font-size: 3.5rem;
    font-weight: 700;
    color: #00bcd4;
    line-height: 1.2;
    margin-bottom: 0.5rem;
    text-shadow: 0 0 20px rgba(0, 188, 212, 0.2);
}
.modern-login-page .impact-label {
    color: rgba(255, 255, 255, 0.8);
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 0.9rem;
    font-weight: 700;
}
.modern-login-page .client-logos-section {
    padding: 3rem 0;
    background: #ffffff;
}
.modern-login-page .client-logos-marquee {
    position: relative;
    overflow: hidden;
    width: 100%;
    mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
    -webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
}
.modern-login-page .client-logos-track {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4rem;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    animation: client-logos-scroll 40s linear infinite;
    will-change: transform;
}
.modern-login-page .client-logos-track:hover {
    animation-play-state: paused;
}
.modern-login-page .client-logo {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    height: 70px;
    min-width: 150px;
    opacity: 0.6;
    transition: all 0.3s ease;
}
.modern-login-page .client-logo:hover {
    opacity: 1;
    transform: scale(1.05);
}
.modern-login-page .client-logo img {
    max-height: 60px;
    max-width: 180px;
    -o-object-fit: contain;
       object-fit: contain;
}
@keyframes client-logos-scroll {
    from {
        transform: translateX(0);
    }
    to {
        transform: translateX(-50%);
    }
}
@media (max-width: 768px) {
    .modern-login-page .about-section, .modern-login-page .impact-section {
        padding-left: 1.5rem;
        padding-right: 1.5rem;
    }
    .modern-login-page .impact-container {
        -ms-grid-columns: 1fr 1fr;
            grid-template-columns: 1fr 1fr;
        gap: 2rem;
    }
    .modern-login-page .impact-number {
        font-size: 2.5rem;
    }
    .modern-login-page .client-logos-track {
        gap: 2rem;
    }
}
.pricing-page {
	--page-bg-image: url('https://cattrax-media.s3.ap-southeast-2.amazonaws.com/images/surgeon_image_cropped2.jpg');
	--page-bg-position: center 110%;
}
.modern-login-page .pricing-section {
    padding: 3rem 5%;
}
.modern-login-page .pricing-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (1fr)[5];
        grid-template-columns: repeat(5, 1fr);
    gap: 2rem;
    max-width: 1600px;
    margin: 0 auto;
    -ms-flex-align: stretch;
        align-items: stretch;
}
@media (min-width: 1201px) {
    .modern-login-page .pricing-grid {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-pack: justify;
            justify-content: space-between;
        gap: 0;
    }
    .modern-login-page .pricing-grid .pricing-card {
        width: calc((100% - 14rem) / 5);
        margin-right: 2.5rem;
    }
    .modern-login-page .pricing-grid .pricing-card:last-child {
        margin-right: 0;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(2) {
        position: relative;
        margin-right: 4.8rem;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(2)::after {
        content: '';
        position: absolute;
        top: 15%;
        bottom: 15%;
        right: -2.7rem;
        width: 2px;
        background-color: rgba(255, 255, 255, 0.2);
        border-radius: 1px;
        transition: transform 0.3s ease;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(2):hover::after {
        transform: translateY(10px);
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(3) {
        margin-right: 0;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(4) {
        position: relative;
        margin-left: 2.8rem;
        margin-right: 5.4rem;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(4)::after {
        content: '';
        position: absolute;
        top: 15%;
        bottom: 15%;
        right: -2.5rem;
        width: 2px;
        background-color: rgba(255, 255, 255, 0.2);
        border-radius: 1px;
    }
}
@media (max-width: 1400px) {
    .modern-login-page .pricing-grid {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        -ms-flex-pack: center;
            justify-content: center;
    }
    .modern-login-page .pricing-grid .pricing-card {
        width: 45%;
        margin: 1rem;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(2), .modern-login-page .pricing-grid .pricing-card:nth-child(3), .modern-login-page .pricing-grid .pricing-card:nth-child(4) {
        margin-right: 1rem;
        margin-left: 1rem;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(2)::after, .modern-login-page .pricing-grid .pricing-card:nth-child(3)::after, .modern-login-page .pricing-grid .pricing-card:nth-child(4)::after {
        display: none;
    }
}
@media (max-width: 768px) {
    .modern-login-page .pricing-grid {
        display: -ms-grid;
        display: grid;
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
    .modern-login-page .pricing-grid .pricing-card {
        width: 100%;
        margin: 0;
    }
}
.modern-login-page .pricing-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background: rgba(255, 255, 255, 0.05);
    padding: 2.5rem 2rem;
    border-radius: 16px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    transition: all 0.3s ease;
    -webkit-backdrop-filter: blur(5px);
            backdrop-filter: blur(5px);
    text-align: left;
    position: relative;
}
.modern-login-page .pricing-card:hover {
    transform: translateY(-10px);
    background: rgba(255, 255, 255, 0.1);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
    border-color: rgba(0, 188, 212, 0.5);
}
.modern-login-page .pricing-card.popular {
    border-color: #00bcd4;
    border-width: 2px;
    transform: scale(1.05);
    box-shadow: 0 10px 40px rgba(0, 188, 212, 0.2);
}
.modern-login-page .pricing-card.popular::before {
    content: 'Most Popular';
    position: absolute;
    top: 18px;
    right: -35px;
    background-color: #00bcd4;
    color: #ffffff;
    padding: 0.5rem 3rem;
    font-size: 0.85rem;
    font-weight: 700;
    text-align: center;
    transform: rotate(45deg);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
@media (max-width: 1200px) {
    .modern-login-page .pricing-card.popular {
        transform: scale(1);
    }
}
.modern-login-page .pricing-card.recommended {
    border-color: #00bcd4;
    border-width: 2px;
    box-shadow: 0 10px 40px rgba(0, 188, 212, 0.2);
}
.modern-login-page .pricing-card .btn {
    margin-top: auto;
}
.modern-login-page .pricing-roi {
    text-align: center;
    font-size: 0.95rem;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.9);
    background: rgba(0, 188, 212, 0.1);
    padding: 0.8rem 1rem;
    border-radius: 8px;
    margin-bottom: 2.5rem;
}
.modern-login-page .pricing-title {
    font-size: 1.5rem;
    font-weight: 600;
    color: #ffffff;
    margin: 0 0 1rem 0;
}
.modern-login-page .pricing-price {
    font-size: 2.8rem;
    font-weight: 700;
    color: #00bcd4;
    margin-bottom: 0.75rem;
}
.modern-login-page .pricing-price .price-period {
    font-size: 1rem;
    font-weight: 400;
    color: rgba(255, 255, 255, 0.7);
}
.modern-login-page .pricing-description {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.6;
    margin-bottom: 2rem;
}
.modern-login-page .features-list {
    list-style: none;
    padding: 0;
    margin: 0 0 2rem 0;
    -ms-flex-positive: 1;
        flex-grow: 1;
}
.modern-login-page .features-list li {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
    font-size: 0.95rem;
    color: rgba(255, 255, 255, 0.9);
}
.modern-login-page .features-list li.disabled {
    color: rgba(255, 255, 255, 0.5);
    text-decoration: line-through;
}
.modern-login-page .features-list .fa-check-circle {
    color: #20c997;
    font-size: 1.2rem;
}
.modern-login-page .features-list .fa-times-circle {
    color: rgba(255, 255, 255, 0.4);
    font-size: 1.2rem;
}
.modern-login-page .btn-secondary {
    background-color: transparent;
    color: #ffffff;
    border: 1px solid #00bcd4;
}
.modern-login-page .btn-secondary:hover {
    background-color: #00bcd4;
    color: #ffffff;
}
/* Add-ons: extras bought on top of a plan rather than instead of one, so they sit below the
	   plan grid in a narrower three-across row of their own. */
.modern-login-page .addon-section {
    padding: 1rem 5% 4rem 5%;
    max-width: 1600px;
    margin: 0 auto;
}
@media (max-width: 576px) {
    .modern-login-page .addon-section {
        padding: 1rem 5% 3rem 5%;
    }
}
.modern-login-page .addon-divider {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
    margin-bottom: 3rem;
}
.modern-login-page .addon-header {
    text-align: center;
    margin-bottom: 3rem;
}
.modern-login-page .addon-header h2 {
    font-size: 2.5rem;
    font-weight: 700;
    color: #ffffff;
    margin: 0 0 1rem 0;
}
.modern-login-page .addon-header p {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.6;
    max-width: 800px;
    margin: 0 auto;
}
/* Narrower than the section it sits in: three cards stretched across the full 1600px would each
	   end up wider than a plan card above them. At 1200 they land close to one. */
.modern-login-page .addon-group {
    max-width: 1200px;
    margin: 0 auto 4rem auto;
}
.modern-login-page .addon-group:last-child {
    margin-bottom: 0;
}
/* One group per add-on. There is only transcription today, but the spacing is set up so a
	   second group can be dropped in below without touching anything else. */
.modern-login-page .addon-group-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 1.25rem;
    margin-bottom: 2rem;
}
.modern-login-page .addon-group-header .addon-group-icon {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 12px;
    background: rgba(0, 188, 212, 0.1);
    border: 1px solid rgba(0, 188, 212, 0.3);
    color: #00bcd4;
    font-size: 1.5rem;
}
.modern-login-page .addon-group-header h3 {
    font-size: 1.3rem;
    font-weight: 600;
    color: #ffffff;
    margin: 0 0 0.5rem 0;
}
.modern-login-page .addon-group-header p {
    font-size: 0.95rem;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.6;
    max-width: 900px;
    margin: 0;
}
@media (max-width: 576px) {
    .modern-login-page .addon-group-header {
        -ms-flex-direction: column;
            flex-direction: column;
        gap: 1rem;
    }
}
.modern-login-page .addon-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[3];
        grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 2rem;
    -ms-flex-align: stretch;
        align-items: stretch;
}
/* Two across before one: three cards at tablet width leave no room for the feature lists. */
@media (max-width: 1200px) {
    .modern-login-page .addon-grid {
        -ms-grid-columns: (minmax(0, 1fr))[2];
            grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.5rem;
    }
}
@media (max-width: 768px) {
    .modern-login-page .addon-grid {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
}
.modern-login-page .addon-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background: rgba(255, 255, 255, 0.05);
    padding: 2rem;
    border-radius: 16px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    transition: all 0.3s ease;
    -webkit-backdrop-filter: blur(5px);
            backdrop-filter: blur(5px);
    text-align: left;
    position: relative;
}
.modern-login-page .addon-card:hover {
    transform: translateY(-10px);
    background: rgba(255, 255, 255, 0.1);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
    border-color: rgba(0, 188, 212, 0.5);
}
.modern-login-page .addon-card.recommended {
    border-color: #00bcd4;
    border-width: 2px;
    box-shadow: 0 10px 40px rgba(0, 188, 212, 0.2);
}
/* Dialled back from the plan cards above: an add-on must not out-shout the plan it
		   attaches to. */
.modern-login-page .addon-card .pricing-title {
    font-size: 1.35rem;
    margin-bottom: 0.75rem;
}
.modern-login-page .addon-card .pricing-price {
    font-size: 2.4rem;
}
.modern-login-page .addon-card .pricing-description {
    margin-bottom: 1.5rem;
}
.modern-login-page .addon-card .features-list {
    margin-bottom: 1.5rem;
}
.modern-login-page .addon-card .btn {
    margin-top: auto;
    width: 100%;
}
/* The trial is not a paid tier, so it is marked out rather than left to read as a third
	   price point. */
.modern-login-page .addon-card.trial {
    border-color: rgba(32, 201, 151, 0.4);
    background: rgba(32, 201, 151, 0.08);
}
.modern-login-page .addon-card.trial:hover {
    border-color: rgba(32, 201, 151, 0.7);
}
.modern-login-page .addon-card.trial .pricing-price {
    color: #20c997;
}
/* Sits above the trial card's own button, which holds the bottom slot so all three cards
	   line up along the bottom. */
.modern-login-page .addon-cta-note {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 0.6rem;
    margin-top: auto;
    margin-bottom: 1.5rem;
    padding: 0.9rem 1rem;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.15);
    font-size: 0.85rem;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.85);
}
.modern-login-page .addon-cta-note i {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-top: 0.2rem;
    color: #20c997;
}
.modern-login-page .addon-badge {
    position: absolute;
    top: -0.75rem;
    right: 1.5rem;
    background-color: #00bcd4;
    color: #ffffff;
    padding: 0.3rem 1rem;
    border-radius: 8px;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
.modern-login-page .addon-badge.free {
    background-color: #20c997;
}
.features-page {
	--page-bg-image: url('https://images.unsplash.com/photo-1522071820081-009f0129c71c?q=80&w=2070&auto=format&fit=crop');
	--page-bg-position: center 80%;
}
.modern-login-page .features-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (1fr)[3];
        grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
}
@media (max-width: 992px) {
    .modern-login-page .features-grid {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
}
.modern-login-page .features-overview .features-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(320px, 1fr))[auto-fit];
        grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 2rem;
}
.modern-login-page .feature-card {
    position: relative;
    overflow: hidden;
    text-align: center;
    padding: 2.5rem 2rem;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: 12px;
    transition: transform 0.3s ease, background-color 0.3s ease;
}
.modern-login-page .feature-card:hover {
    transform: translateY(-8px);
    background: rgba(255, 255, 255, 0.1);
}
.modern-login-page .feature-icon {
    font-size: 2.8rem;
    margin-bottom: 1.5rem;
    color: #00bcd4;
}
.modern-login-page .feature-title {
    font-size: 1.3rem;
    font-weight: 600;
    margin: 0 0 0.75rem 0;
    color: #ffffff;
}
.modern-login-page .feature-description {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.7;
    margin: 0;
}
.modern-login-page .final-cta-section {
    text-align: center;
    padding: 4rem 5%;
    background-color: rgba(0, 0, 0, 0.2);
}
.modern-login-page .features-disclaimer {
    text-align: center;
    padding: 2rem 5% 1rem 5%;
    max-width: 800px;
    margin: 0 auto;
    font-size: 0.9rem;
    color: rgba(255, 255, 255, 0.6);
    line-height: 1.6;
}
@media (max-width: 992px) {
    .modern-login-page .section-title {
        font-size: 2rem;
    }
}
.coming-soon-banner {
	position: absolute;
	top: 18px;
	right: -35px;
	background-color: #ffab00;
	color: #000;
	padding: 6px 35px;
	font-size: 0.8rem;
	font-weight: 700;
	text-transform: uppercase;
	transform: rotate(45deg);
	box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
	letter-spacing: 0.5px;
	z-index: 10;
}
.modern-login-page .demo-hero {
    padding: 4rem 5% 3rem 5%;
    text-align: center;
}
.modern-login-page .demo-hero .hero-title {
    margin-bottom: 1.5rem;
}
.modern-login-page .demo-hero .hero-subtitle {
    max-width: 800px;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 0;
}
@media (max-width: 576px) {
    .modern-login-page .demo-hero {
        padding: 3rem 5% 2rem 5%;
    }
}
.modern-login-page .demo-section {
    padding: 3rem 5%;
}
@media (max-width: 576px) {
    .modern-login-page .demo-section {
        padding: 2.5rem 5%;
    }
}
.modern-login-page .demo-container {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 1rem;
}
.modern-login-page .video-wrapper {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
    border-radius: 16px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
    background-color: #000;
}
.modern-login-page .video-wrapper iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
.modern-login-page .section-title {
    font-size: 2.5rem;
    font-weight: 700;
    text-align: center;
    margin-bottom: 1rem;
    color: #ffffff;
}
.modern-login-page .section-subtitle {
    font-size: 1.15rem;
    font-weight: 300;
    text-align: center;
    max-width: 750px;
    margin: 0 auto 3.5rem auto;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.6;
}
.modern-login-page .form-container {
    max-width: 650px;
    margin: 0 auto;
    background-color: #ffffff;
    color: #333333;
    padding: 3rem;
    border-radius: 12px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
}
@media (max-width: 576px) {
    .modern-login-page .form-container {
        padding: 2rem 1.5rem;
    }
}
.modern-login-page .btn-primary {
    background-color: #00bcd4;
    color: #ffffff;
    box-shadow: 0 4px 15px rgba(0, 188, 212, 0.3);
}
.modern-login-page .btn-primary:hover {
    background-color: #008c9e;
    transform: translateY(-3px);
    box-shadow: 0 6px 20px rgba(0, 188, 212, 0.4);
}
.modern-login-page .btn-primary:disabled {
    background-color: #a0a0a0;
    cursor: not-allowed;
    box-shadow: none;
    transform: none;
}
.modern-login-page .success-message {
    max-width: 650px;
    margin: 0 auto;
    padding: 2.5rem;
    text-align: center;
    background: rgba(32, 201, 151, 0.1);
    border: 1px solid rgba(32, 201, 151, 0.7);
    color: #ffffff;
    border-radius: 12px;
}
.modern-login-page .success-message h4 {
    font-size: 1.8rem;
    font-weight: 700;
    color: #20c997;
    margin: 0 0 1rem 0;
}
.modern-login-page .success-message p {
    font-size: 1.1rem;
    margin: 0;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.9);
}
.modern-modal-backdrop {
	background: rgba(10, 37, 64, 0.65);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
}
.modern-modal-window {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 1050;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: center;
	    justify-content: center;
	pointer-events: none;

}
.modern-modal-window .modal-content {
    margin: 0;
    background-color: #ffffff;
    color: #333333;
    border-radius: 16px;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4);
    border: none;
    overflow: hidden;
    max-width: 500px;
    width: 90%;
    pointer-events: auto;
    transform: translateY(-20px);
    opacity: 0;
    animation: modalFadeIn 0.3s ease-out forwards;
}
@media (max-width: 576px) {
    .modern-modal-window .modal-content {
        width: 95%;
        margin: 1rem;
    }
}
@keyframes modalFadeIn {
	from {
		opacity: 0;
		transform: translateY(-30px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}
.modal-header {
	padding: 1.5rem 2rem;
	border-bottom: 1px solid #e0e6ed;
	position: relative;
	background-color: #f8faff;
}
@media (max-width: 576px) {
    .modal-header {
        padding: 1.2rem 1.5rem;
    }
}
.modal-title {
	font-size: 1.65rem;
	font-weight: 700;
	color: #0a2540;
	margin: 0;
	padding-right: 2rem;
	text-align: center;
}
@media (max-width: 576px) {
    .modal-title {
        font-size: 1.4rem;
    }
}
.close-btn {
	position: absolute;
	top: 1rem;
	right: 1rem;
	font-size: 2.2rem;
	font-weight: 300;
	color: #888888;
	background: none;
	border: none;
	opacity: 0.7;
	cursor: pointer;
	transition: opacity 0.2s ease, color 0.2s ease, transform 0.2s ease;

}
// Added transform 
	.close-btn:hover {
    opacity: 1;
    color: #333333;
    transform: rotate(90deg);
}
@media (max-width: 576px) {
    .close-btn {
        top: 0.8rem;
        right: 0.8rem;
        font-size: 2rem;
    }
}
.modal-body {
	padding: 2.5rem 2rem;

}
.modal-body .form-group {
    margin-bottom: 1.5rem;
}
.modal-body .form-control:focus {
    border-color: #00bcd4;
    box-shadow: 0 0 0 3px rgba(0, 188, 212, 0.25);
}
.modal-body .btn-primary {
    width: 100%;
    padding: 1.1rem;
    font-size: 1.1rem;
    font-weight: 700;
    border-radius: 10px;
    margin-top: 0.5rem;
}
@media (max-width: 576px) {
    .modal-body {
        padding: 1.8rem 1.5rem;
    }
    .modal-body .btn-primary {
        padding: 1rem;
        font-size: 1rem;
    }
}
.modal-subtitle {
	font-size: 1.05rem;
	font-weight: 300;
	text-align: center;
	margin-bottom: 2rem;
	color: #6c757d;
	line-height: 1.6;
}
@media (max-width: 576px) {
    .modal-subtitle {
        font-size: 0.95rem;
    }
}
.modal-success {
	background: rgba(32, 201, 151, 0.08);
	border: 1px solid rgba(32, 201, 151, 0.4);
	border-radius: 10px;
	padding: 1.5rem;
	text-align: center;
	margin-top: 1.5rem;
	color: #333333;
}
.modal-success h4 {
    font-size: 1.6rem;
    font-weight: 700;
    color: #20c997;
    margin: 0 0 0.8rem 0;
}
@media (max-width: 576px) {
    .modal-success h4 {
        font-size: 1.4rem;
    }
}
.modal-success p {
    font-size: 1rem;
    line-height: 1.6;
    color: #555555;
}
.modal-success .fa-check-circle {
    margin-right: 0.75rem;
    color: #20c997;
    font-size: 1.8rem;
    vertical-align: middle;
}
/* Sits above the submit button rather than replacing the form, because the details are still
   filled in and retrying is usually all that is needed. */
.modal-error {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: start;
	    align-items: flex-start;
	gap: 0.75rem;
	background: rgba(169, 68, 66, 0.08);
	border: 1px solid rgba(169, 68, 66, 0.4);
	border-radius: 10px;
	padding: 1rem 1.25rem;
	margin-bottom: 1.25rem;
	font-size: 0.9rem;
	line-height: 1.6;
	color: #a94442;
}
.modal-error i {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-top: 0.15rem;
    font-size: 1rem;
}
/* =================================================================== */
/* ! Seat modals (pricing page add-ons)
/*
/* The two modals opened from the AI transcription add-on cards: buying seats, and handing them
/* out. Both share the chrome (.modal-header, .modal-body, .modal-title, .close-btn) with the
/* book-a-demo modal in _website_book_demo.css, and the assign modal reuses the table, avatar and
/* tier selector styling from _transcription-seats.css. Only what is specific to these two lives
/* here.
/* =================================================================== */
/* Both are wider than the shared 500px demo modal: the purchase step carries two tier cards, a
   stepper each and a priced summary, and the assign modal carries a table of the whole practice.
   Capped at the viewport with the body scrolling inside, because both run off a laptop screen. */
.seat-purchase-window .modal-content, .seat-assign-window .modal-content {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    max-height: 90vh;
}
.seat-purchase-window .modal-content {
    max-width: 720px;
}
.seat-assign-window .modal-content {
    max-width: 900px;
}
.seat-purchase-modal {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	min-height: 0;
	position: relative;
}
.seat-purchase-modal .modal-header {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
/* min-height overrides the min-content floor a flex item gets by default, without which the
	   body refuses to shrink and scrolls the whole page instead of itself. */
.seat-purchase-modal .modal-body {
    min-height: 0;
    overflow-y: auto;
}
/* Every step in here is a server round trip - signing in, pricing, charging a card - so the
	   whole modal is blocked rather than each control disabled one at a time. */
.seat-purchase-modal .seat-purchase-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 1rem;
    z-index: 10;
    background: rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    color: #0a2540;
    font-weight: 500;
}
.seat-purchase-modal .spinner {
    width: 40px;
    height: 40px;
    border: 4px solid rgba(10, 37, 64, 0.2);
    border-top-color: #00bcd4;
    border-radius: 50%;
    animation: spinner-rotation 0.8s linear infinite;
}
.seat-purchase-modal .seat-purchase-dev-warning {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 0.25rem;
    padding: 0.75rem 1rem;
    margin-bottom: 1.5rem;
    border-radius: 10px;
    background: rgba(255, 182, 39, 0.1);
    border: 1px solid rgba(255, 182, 39, 0.5);
    font-size: 0.9rem;
    color: #856404;
}
.seat-purchase-modal .seat-purchase-dev-warning strong {
    letter-spacing: 0.05em;
}
.seat-purchase-modal .seat-purchase-footnote {
    margin: 1.5rem 0 0 0;
    text-align: center;
    font-size: 0.9rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-footnote a {
    color: #0097a7;
    cursor: pointer;
    font-weight: 600;
}
/* Two-factor code boxes
	/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-code-inputs {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 0.6rem;
    margin: 1.5rem 0 0.5rem 0;
}
.seat-purchase-modal .seat-code-inputs .form-control {
    width: 48px;
    height: 56px;
    padding: 0;
    text-align: center;
    font-size: 1.6rem;
    font-weight: 700;
    color: #0a2540;
}
@media (max-width: 576px) {
    .seat-purchase-modal .seat-code-inputs {
        gap: 0.35rem;
    }
    .seat-purchase-modal .seat-code-inputs .form-control {
        width: 40px;
        height: 48px;
        font-size: 1.3rem;
    }
}
/* Practice picker
	/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-practice-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 0.75rem;
}
/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-practice-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 1rem;
    width: 100%;
    padding: 1rem 1.25rem;
    text-align: left;
    background: #f8faff;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    color: #333333;
    cursor: pointer;
    transition: border-color 0.2s ease, background 0.2s ease;
}
.seat-purchase-modal .seat-practice-option:hover:not([disabled]) {
    border-color: #00bcd4;
    background: rgba(0, 188, 212, 0.05);
}
/* The one already loaded, so switching away and back is not a guess. */
.seat-purchase-modal .seat-practice-option.current {
    border-color: #00bcd4;
    background: rgba(0, 188, 212, 0.05);
}
.seat-purchase-modal .seat-practice-option .seat-practice-name {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    font-weight: 600;
}
.seat-purchase-modal .seat-practice-option .seat-practice-current {
    font-size: 0.75rem;
    font-weight: 400;
    color: #0097a7;
}
.seat-purchase-modal .seat-practice-option i {
    color: #00bcd4;
}
/* Names the practice being worked on, and carries the way to swap to another. Sits at the top
	   of both modals: a group setting up several needs to see which one it is on before it reads
	   anything below. */
.seat-purchase-modal .seat-practice-bar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 1rem;
    padding: 0.75rem 1rem;
    margin-bottom: 1.25rem;
    border-radius: 10px;
    background: rgba(10, 37, 64, 0.05);
    border: 1px solid #e0e6ed;
}
.seat-purchase-modal .seat-practice-bar .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin: 0;
    padding: 0.4rem 0.9rem;
    font-size: 0.75rem;
    width: auto;
}
@media (max-width: 576px) {
    .seat-purchase-modal .seat-practice-bar {
        -ms-flex-direction: column;
            flex-direction: column;
        -ms-flex-align: start;
            align-items: flex-start;
        gap: 0.6rem;
    }
}
/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-practice-bar-label {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.6rem;
    min-width: 0;
    font-size: 0.9rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-practice-bar-label strong {
    color: #0a2540;
}
.seat-purchase-modal .seat-practice-bar-label i {
    color: #0035d2;
}
/* Buying
	/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-purchase-loading {
    padding: 2.5rem 0;
    text-align: center;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-loading i {
    margin-right: 0.5rem;
    color: #00bcd4;
}
/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-purchase-tiers {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[2];
        grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}
@media (max-width: 576px) {
    .seat-purchase-modal .seat-purchase-tiers {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
}
/* The tier whose button was clicked on the pricing page, so the visitor can see that the
	   modal opened on the seat they actually asked for. */
.seat-purchase-modal .seat-purchase-tier {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 0.6rem;
    padding: 1.25rem;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background: #ffffff;
}
.seat-purchase-modal .seat-purchase-tier.selected {
    border-color: #00bcd4;
    box-shadow: 0 0 0 3px rgba(0, 188, 212, 0.1);
}
.seat-purchase-modal .seat-purchase-tier-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 0.5rem;
}
.seat-purchase-modal .seat-purchase-tier-head h4 {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 700;
    color: #0a2540;
}
.seat-purchase-modal .seat-purchase-tier-price {
    font-size: 1.15rem;
    font-weight: 700;
    color: #0035d2;
    white-space: nowrap;
}
.seat-purchase-modal .seat-purchase-tier-price small {
    display: block;
    font-size: 0.7rem;
    font-weight: 400;
    color: #6c757d;
    text-align: right;
}
.seat-purchase-modal .seat-purchase-tier-included {
    margin: 0;
    font-size: 0.9rem;
    color: #555555;
}
.seat-purchase-modal .seat-purchase-tier-state {
    font-size: 0.8rem;
    color: #6c757d;
}
/* Priced summary. Every figure in here comes back from the server.
	/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-purchase-summary {
    padding: 1.25rem;
    margin-bottom: 1.25rem;
    border-radius: 10px;
    background: #f8faff;
    border: 1px solid #e0e6ed;
}
/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-purchase-summary-loading, .seat-purchase-modal .seat-purchase-summary-empty {
    text-align: center;
    font-size: 0.9rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-summary-loading i, .seat-purchase-modal .seat-purchase-summary-empty i {
    margin-right: 0.4rem;
    color: #00bcd4;
}
.seat-purchase-modal .seat-purchase-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 1rem;
    padding: 0.4rem 0;
    font-size: 0.9rem;
    color: #555555;
}
.seat-purchase-modal .seat-purchase-line small {
    display: block;
    font-size: 0.75rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-line strong {
    white-space: nowrap;
    color: #0a2540;
}
.seat-purchase-modal .seat-purchase-line.total {
    margin-top: 0.4rem;
    padding-top: 0.75rem;
    border-top: 1px solid #e0e6ed;
    font-size: 1rem;
    font-weight: 600;
    color: #0a2540;
}
.seat-purchase-modal .seat-purchase-line.due {
    margin-top: 0.5rem;
    padding: 0.75rem;
    border-radius: 8px;
    background: rgba(0, 188, 212, 0.1);
}
.seat-purchase-modal .seat-purchase-line.due strong {
    color: #0097a7;
}
.seat-purchase-modal .seat-purchase-next {
    margin: 0.75rem 0 0 0;
    font-size: 0.8rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-cards {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 0.6rem;
    margin-bottom: 1.25rem;
}
.seat-purchase-modal .seat-purchase-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.9rem;
    padding: 0.8rem 1rem;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background: #ffffff;
    font-size: 0.9rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-card > i {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 1.1rem;
    color: #0035d2;
}
.seat-purchase-modal .seat-purchase-card .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin: 0;
    padding: 0.4rem 0.9rem;
    font-size: 0.75rem;
    width: auto;
}
@media (max-width: 576px) {
    .seat-purchase-modal .seat-purchase-card {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }
}
/* The label and the card itself stack, and take whatever width is left once the icon and the
	   change button have had theirs. */
.seat-purchase-modal .seat-purchase-card-detail {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-width: 0;
}
.seat-purchase-modal .seat-purchase-card-detail strong {
    color: #0a2540;
}
.seat-purchase-modal .seat-purchase-note {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.75rem;
    padding: 0.9rem 1.1rem;
    margin-bottom: 1.25rem;
    border-radius: 10px;
    font-size: 0.9rem;
    line-height: 1.6;
}
.seat-purchase-modal .seat-purchase-note i {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-purchase-modal .seat-purchase-note .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin: 0;
    padding: 0.4rem 0.9rem;
    font-size: 0.75rem;
    width: auto;
}
.seat-purchase-modal .seat-purchase-note.info {
    background: rgba(10, 37, 64, 0.05);
    border: 1px solid #e0e6ed;
    color: #555555;
}
.seat-purchase-modal .seat-purchase-note.info i {
    color: #0035d2;
}
.seat-purchase-modal .seat-purchase-note.warning {
    background: rgba(255, 182, 39, 0.1);
    border: 1px solid rgba(255, 182, 39, 0.5);
    color: #856404;
}
.seat-purchase-modal .seat-purchase-note.success {
    background: rgba(32, 201, 151, 0.08);
    border: 1px solid rgba(32, 201, 151, 0.4);
    color: #333333;
}
.seat-purchase-modal .seat-purchase-note.success i {
    color: #20c997;
}
.seat-purchase-modal .seat-purchase-validation {
    margin-bottom: 1rem;
    font-size: 0.9rem;
    color: #a94442;
}
.seat-purchase-modal .seat-purchase-validation i {
    margin-right: 0.4rem;
}
.seat-purchase-modal .seat-purchase-stripe {
    padding: 1rem;
    margin-bottom: 1.25rem;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background: #ffffff;
}
/* .modal-body in _website_book_demo.css sizes the primary CTA, but its colour is declared
	   inside .modern-login-page - and a modal appended to the body sits outside that. Restated
	   here so the CTA matches the pricing page it was clicked from. */
.seat-purchase-modal .btn-primary {
    background-color: #00bcd4;
    color: #ffffff;
    border: none;
    box-shadow: 0 4px 15px rgba(0, 188, 212, 0.3);
}
.seat-purchase-modal .btn-primary:hover:not([disabled]) {
    background-color: #008c9e;
    box-shadow: 0 6px 20px rgba(0, 188, 212, 0.4);
}
.seat-purchase-modal .btn-primary[disabled] {
    background-color: #a0a0a0;
    box-shadow: none;
    cursor: not-allowed;
}
/* Buttons
	/* -------------------------------------------------------------- */
.seat-purchase-modal .btn-outline-cyan {
    background: transparent;
    border: 1px solid #00bcd4;
    color: #0097a7;
    font-weight: 600;
}
.seat-purchase-modal .btn-outline-cyan:hover {
    background: #00bcd4;
    color: #ffffff;
}
/* -------------------------------------------------------------- */
.seat-purchase-modal .btn-plain {
    display: block;
    width: 100%;
    margin-top: 0.75rem;
    padding: 0.9rem;
    background: transparent;
    border: 1px solid #c0cde0;
    border-radius: 10px;
    color: #6c757d;
    font-weight: 600;
}
.seat-purchase-modal .btn-plain:hover {
    border-color: #6c757d;
    color: #333333;
}
/* =================================================================== */
/* ! Assign seats modal
/* =================================================================== */
/* The count sits hard right of the search box. The app's copy of this toolbar uses Angular
	   Material's flex attribute for the gap, which has no place in a plain Bootstrap modal. */
.seat-assign-modal .seat-table-toolbar {
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
/* The table is the tall part, so it scrolls inside itself rather than pushing the actions
	   below the fold on a practice with a long staff list. */
.seat-assign-modal .seat-table-wrapper {
    max-height: 42vh;
    overflow-y: auto;
}
.seat-assign-modal .seat-assign-actions {
    margin-top: 1.5rem;
}
.seat-assign-modal .seat-assign-actions .btn-plain {
    margin-top: 0.75rem;
}
@media (max-width: 576px) {
    .seat-assign-modal .seat-search {
        width: 100%;
    }
}
.modern-login-page .page-header {
    background-color: rgba(36, 62, 87, 0.9);
    padding: 0.75rem 5%;
    padding-top: 0.5rem;
    margin-top: 0rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.15);
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 1000;
    width: 100%;
    box-sizing: border-box;
}
.modern-login-page .header-container {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    width: 100%;
    max-width: 1400px;
    margin: 0 auto;
}
.modern-login-page .nav-logo {
    height: 50px;
    width: auto;
    filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.3));
    vertical-align: middle;
}
.modern-login-page .main-nav ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 1rem;
}
.modern-login-page .nav-link {
    background-color: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    color: #ffffff;
    font-size: 1rem;
    font-weight: 500;
    text-decoration: none;
    padding: 0.6rem 1.2rem;
    border-radius: 8px;
    transition: all 0.2s ease-in-out;
    cursor: pointer;
}
.modern-login-page .nav-link:hover {
    background-color: rgba(255, 255, 255, 0.2);
    border-color: rgba(255, 255, 255, 0.5);
    transform: translateY(-2px);
}
.modern-login-page .btn-nav-demo {
    background-color: #ffab00;
    color: #0a2540;
    padding: 0.8rem 1.8rem;
    font-size: 1.15rem;
    font-weight: 700;
    border-radius: 10px;
    border: none;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    text-decoration: none;
    display: inline-block;
    max-width: 25rem;
}
.modern-login-page .btn-nav-demo:hover {
    background-color: #FFB627;
    transform: translateY(-2px);
    box-shadow: 0 3px 20px #FFB627;
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl92YXJpYWJsZXMuY3NzIiwiX2ZvbnRzLmNzcyIsIl91dGlsLmNzcyIsIl9idXR0b25zLmNzcyIsIl9uYXYuY3NzIiwiX3dlbGNvbWUuY3NzIiwiX3JlZmVyLmNzcyIsIl9zZWFyY2guY3NzIiwiX21vZGFsLmNzcyIsIl9mb3Jtcy5jc3MiLCJfcG9wb3Zlci5jc3MiLCJfaW5zdXJhbmNlLmNzcyIsIl9jb21wbGV0ZS1yZWZlcnJhbC5jc3MiLCJfZXhhbS5jc3MiLCJfdGVybXMuY3NzIiwiX3ByZS1vcC5jc3MiLCJfb3BlcmF0aW9uLW5vdGUuY3NzIiwiX3VpLXNlbGVjdC5jc3MiLCJfcHJlbWl1bS1sZW5zLmNzcyIsIl9wYXRpZW50LXZlcmlmaWNhdGlvbi5jc3MiLCJfYW5pbWF0aW9uLmNzcyIsIl9haS1hZ2VudC5jc3MiLCJfcmljaHRleHQuY3NzIiwiX3BheW1lbnRzLmNzcyIsIl90cmFuc2NyaXB0aW9uLXNlYXRzLmNzcyIsIl9zZXR0aW5ncy5jc3MiLCJfcGVybWlzc2lvbnMuY3NzIiwiX2NhbGVuZGFyLmNzcyIsIl9wYXRpZW50LWZvcm1zLmNzcyIsIl90aXBzLmNzcyIsIl9lY2xpcHNlLWNsYWltLmNzcyIsIl9wYXRpZW50LWNvdmVyLWNoZWNrLmNzcyIsIl9wZGYtdmlld2VyLmNzcyIsIl90ZXJtaW5hbC1wYXltZW50LmNzcyIsIl9jbGFpbWFibGUtaXRlbXMuY3NzIiwiX2NsYWltcy1saXN0LmNzcyIsIl9zaWduLW9mZi5jc3MiLCJfbm90aWZpY2F0aW9ucy5jc3MiLCJfbGVucy1kaXNwZW5zaW5nLmNzcyIsIl9sZW5zLXByZXNjcmliaW5nLmNzcyIsIl9pbnZlbnRvcnkuY3NzIiwiX2ludm9pY2luZy5jc3MiLCJfd29ya2xpc3RzLmNzcyIsIl9wYXRpZW50LWltcG9ydC5jc3MiLCJfZW9yZGVycy5jc3MiLCJfcmVwb3J0cy5jc3MiLCJfd2Vic2l0ZV9sYW5kaW5nX3BhZ2UuY3NzIiwiX3dlYnNpdGVfbG9naW5fcGFuZWwuY3NzIiwiX3dlYnNpdGVfYWJvdXRfdXMuY3NzIiwiX3dlYnNpdGVfcHJpY2luZy5jc3MiLCJfd2Vic2l0ZV9mZWF0dXJlcy5jc3MiLCJfd2Vic2l0ZV9ib29rX2RlbW8uY3NzIiwiX3dlYnNpdGVfc2VhdF9wdXJjaGFzZS5jc3MiLCJfd2Vic2l0ZV9uYXZfYmFyLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5RUFBeUU7QUFDekU7eUVBQ3lFO0FBTXBELG9EQUFvRDtBQUVqRCxrRkFBa0Y7QUFFckYscUdBQXFHO0FBQzFILHlFQUF5RTtBQUN6RTt5RUFDeUU7QUFDekUsMEJBQTBCO0FBTUosb0RBQW9EO0FBQzFFLHFDQUFxQztBQUdyQyxtQ0FBbUM7QUFFbkMsMkZBQTJGO0FBSzNGLDJCQUEyQjtBQUdQLG1FQUFtRTtBQUN2Rix3QkFBd0I7QUFDTiwyQkFBMkI7QUFDckIsMkJBQTJCO0FBRTlCLHNGQUFzRjtBQUczRyx5RUFBeUU7QUFDekU7eUVBQ3lFO0FBQ3pFLFVBQVU7QUFDVyx1Q0FBdUM7QUFFdEMsK0JBQStCO0FBQy9CLHFCQUFxQjtBQUczQyxrQkFBa0I7QUFHVywwQkFBMEI7QUFDekIscUJBQXFCO0FBQ2hDLDBCQUEwQjtBQUNuQiw2REFBNkQ7QUFDdkYsaUJBQWlCO0FBR0csMkJBQTJCO0FBR3RCLGdDQUFnQztBQUN6RCx5RUFBeUU7QUFDekU7O3lFQUV5RTtBQUMvQyxtQ0FBbUM7QUFHckIsb0JBQW9CO0FBQ3BCLG1CQUFtQjtBQUMzRCx5RUFBeUU7QUFDekU7eUVBQ3lFO0FBQ2hDLHNCQUFzQjtBQUd2QixhQUFhO0FBT1osMEJBQTBCO0FBR25FLHlFQUF5RTtBQUN6RTt5RUFDeUU7QUFNekUseUVBQXlFO0FBQ3pFO3lFQUN5RTtBQUN6RSxnQkFBZ0I7QUFJc0IsdUJBQXVCO0FBSTdELGlCQUFpQjtBQVFqQixrQkFBa0I7QUFLbEIsZUFBZTtBQUVmLGdCQUFnQjtBQUloQixvQkFBb0I7QUFPcEIseUVBQXlFO0FBQ3pFOzs7eUVBR3lFO0FBR3pFLHlFQUF5RTtBQUN6RTt5RUFDeUU7QUFJekUs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Q0FBbUM7SUFDbkMsZUFBYztJQUNkLGdCQUEyQjtJQUMzQixpQkFBaUM7SUFDakMsc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2QixtQkFBaUM7SUFDakMsaUNBQWlDO0lBQ2pDLGdCQUFnQjtDQU9oQjtBQUxBO0lBQ0MsMkNBQStCO0lBQy9CLHVDQUEyQjtJQUMzQiw0QkFBNEI7Q0FDNUI7QUFHRjtJQUNDLDBCQUE4QjtJQUM5QixlQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsbUJBQW1CO0lBQ25CLGlCQUErQjtJQUMvQixvQkFBaUM7SUFDakMsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQiwwQkFBMEI7SUFDMUIsMENBQW9DO0lBQ3BDLHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIsaUJBQWlCO0NBT2pCO0FBTEE7SUFDQywwQkFBMEI7SUFDMUIsNEJBQTRCO0lBQzVCLCtCQUErQjtDQUMvQiIsImZpbGUiOiJzdHlsZS0xNzk0MzAyODU0NDI1LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQ29yZSBCcmFuZCBQYWxldHRlXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiR3aGl0ZTogI2ZmZmZmZjtcbiRibGFjazogIzAwMDtcbiRuYXZ5OiAjMDAzNWQyO1xuJGRhcmtOYXZ5OiAjMmEzMDdmO1xuJG5hdnktcGFsZTogI2U3ZjBmZjsgLyogUGFsZSBuYXZ5IHRpbnQgLSBzZXR0aW5ncyBoZWFkaW5ncywgaWNvbiBjaGlwcyAqL1xuJHB1cnBsZTogIzhiNTZhMztcbiRicmFuZC1wdXJwbGU6ICM4YjU2YTM7IC8qIFRoZSBicmFuZCBwdXJwbGUuICRwdXJwbGUgaXMgcmVkZWZpbmVkIGJlbG93LCBzbyBpdCBkb2VzIG5vdCBjb21waWxlIHRvIHRoaXMgKi9cbiRibHVlOiAjMjA3MmJiO1xuJGljb24tbGluZTogIzFlMWU1ZTsgLyogVGhlIGxpbmUgY29sb3VyIG9mIHRoZSBuYXYncyBsaW5lIGljb25zICh0YXNrcywgd2FpdGxpc3QsIGltcG9ydHMsIGZvcm1zKSBhbmQgdGhlIGNvcHktZXllIGljb24gKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgVGhlbWUgQ29sb3JzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBQcmltYXJ5IEFjdGlvbiBDb2xvciAqL1xuJGN5YW46ICMwMGJjZDQ7XG4kY3lhbi1kYXJrOiAjMDA5N2E3O1xuJGN5YW4tZGFya2VyOiAjMDA4YzllO1xuJGN5YW4tZGFya2VzdDogIzAwYTViODtcbiRjeWFuLWxpZ2h0OiAjMjNlMmY4O1xuJHllbGxvdy1jdGE6ICNmZmFiMDA7IC8qIFVzZWQgZm9yICdDb21pbmcgU29vbicgYmFubmVyIGFuZCBDVEEgYnV0dG9ucy4gKi9cbi8qIFN1Y2Nlc3MgLyBTZWNvbmRhcnkgVGhlbWUgQ29sb3IgKi9cbiRncmVlbjogIzIwYzk5NztcbiRncmVlbi1zdWNjZXNzLWFsdDogIzVjYjg1Yztcbi8qIEFjY2VudCAvIFRlcnRpYXJ5IFRoZW1lIENvbG9yICovXG4keWVsbG93OiAjRkZCNjI3O1xuLyogRXllczogcmlnaHQgKE9EKSByZWQgYW5kIGxlZnQgKE9TKSBibHVlLCBhcyBleWUgY2hhcnRzIGFuZCBjbGluaWNhbCByZWNvcmRzIG1hcmsgdGhlbSAqL1xuJGV5ZS1vZDogI2M2MjgyODtcbiRleWUtb2QtcGFsZTogI2ZkZWNlYztcbiRleWUtb3M6ICMxNTY1YzA7XG4kZXllLW9zLXBhbGU6ICNlNmYwZmI7XG4vKiBEYW5nZXIgLyBFcnJvciBDb2xvcnMgKi9cbiRkYW5nZXI6ICNhOTQ0NDI7XG4kcmVkLWRhbmdlci1hbHQ6ICNkOTUzNGY7XG4kcmVkLXNvZnQ6ICNlNDg3ODQ7IC8qIEEgZmFpbHVyZSBjb3VudGVkIGluIGEgcmVwb3J0LCByYXRoZXIgdGhhbiBhbiBlcnJvciB0byBhY3Qgb24gKi9cbi8qIFNwZWNpZmljIFVJIENvbG9ycyAqL1xuJG9yYW5nZTogI2Q4N2Q0YTsgLyogRm9yIEFkbWluIG5vdGUgYm9yZGVyICovXG4kZm9yZXN0LWdyZWVuOiAjMmU3ZDMyOyAvKiBGb3IgTnVyc2Ugbm90ZSBib3JkZXIgKi9cbiR0ZWFsOiAjMDA3OTZiO1xuJHRlYWwtcGFsZTogI2UwZjJmMTsgLyogUGFsZSB0ZWFsIHRpbnQgLSBwcmFjdGljZSByZXBvcnQgaWNvbiBjaGlwcywgYmVzaWRlICRuYXZ5LXBhbGUgZm9yIHBlcnNvbmFsIG9uZXMgKi9cbiRsYXZlbmRlcjogI2EyOWJmZTtcbiRwdXJwbGU6ICM5QzI3QjA7XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEdyZXlzICYgTmV1dHJhbHNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIFRleHQgKi9cbiR0ZXh0LWRhcms6ICMzMzMzMzM7IC8qIFByaW1hcnkgdGV4dCBvbiBsaWdodCBiYWNrZ3JvdW5kcyAqL1xuJHRleHRHcmV5OiAjMzQzYTQwO1xuJHRleHQtbXV0ZWQ6ICM2Yzc1N2Q7IC8qIFN1YnRpdGxlcyBhbmQgaGVscGVyIHRleHQgKi9cbiR0ZXh0LWxpZ2h0OiAjNTU1NTU1OyAvKiBNb2RhbCBib2R5IHRleHQgKi9cbiR0ZXh0LWNsb3NlLWJ0bjogIzg4ODg4ODtcbiRsb2dvdXRHcmV5OiAjNDA0MTQxO1xuLyogQm9yZGVycyAmIFVJICovXG4kbGluZUJyZWFrOiAjYmNjYWQyO1xuJGNhbmNlbEJvcmRlcjogI2JkYmVjMTtcbiRncmV5LWJvcmRlci1saWdodDogI2UwZTZlZDsgLyogRm9ybSBjb250cm9sIGJvcmRlcnMgKi9cbiRncmV5LWJvcmRlci1tZWRpdW06ICNjMGNkZTA7IC8qIGJ0bi1sb3N0IGJvcmRlciAqL1xuJG5hdkdyZXk6ICNlN2U5ZTk7IC8qIE5hdmlnYXRpb24gY29tcG9uZW50ICovXG4kdG9vbGJhckRpdmlkZXI6ICNjY2NjY2M7IC8qIFJ1bGVzIGluc2lkZSBhIHRvb2xiYXIgYm94IC0gQUkgQXNzaXN0LCBjbGFpbWFibGUgaXRlbXMgKi9cbi8qIEJhY2tncm91bmRzICovXG4kcGFnZUJhY2tHcm91bmQ6ICNlYmVjZWE7XG4kZGFzaGJvYXJkQmFja2dyb3VuZDogI2YwZjJmNTtcbiRwYWxlQmx1ZTogI2YyZjZmYjsgLyogQWx0ZXJuYXRlIHRhYmxlIGNvbG9yICovXG4kbGlnaHRHcmV5OiAjZjhmOWZhO1xuJGdyZXktbW9kYWwtaGVhZGVyOiAjZjhmYWZmO1xuJGdyZXktZGlzYWJsZWQ6ICNhMGEwYTA7IC8qIERpc2FibGVkIGJ1dHRvbiBiYWNrZ3JvdW5kICovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIERhcmsgVGhlbWUgKE5hdnkpXG4vKiBVc2VkIGZvciB3ZWJzaXRlIGxhbmRpbmcgcGFnZXNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiRuYXZ5LWRhcmstdGV4dDogIzBhMjU0MDsgLyogTW9kYWwgdGl0bGVzLCBwcm9jZXNzaW5nIHRleHQgKi9cbiRuYXZ5LWJnLWdyYWRpZW50LWRhcms6IHJnYmEoMTAsIDM3LCA2NCwgMC45NSk7XG4kbmF2eS1iZy1ncmFkaWVudC1saWdodDogcmdiYSgxMCwgMzcsIDY0LCAwLjg1KTtcbiRuYXZ5LWJhY2tkcm9wOiByZ2JhKDEwLCAzNywgNjQsIDAuNjUpOyAvKiBNb2RhbCBiYWNrZHJvcCAqL1xuJG5hdnktaGVhZGVyLWJnOiByZ2JhKDM2LCA2MiwgODcsIDAuOSk7IC8qIFN0aWNreSBoZWFkZXIgKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgVHJhbnNwYXJlbnQgV2hpdGVzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4kd2hpdGUtdHAtMDU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7IC8qIENhcmQgYmFja2dyb3VuZHMgKi9cbiR3aGl0ZS10cC0xMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuJHdoaXRlLXRwLTE1OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuJHdoaXRlLXRwLTIwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7IC8qIEJvcmRlcnMgKi9cbiR3aGl0ZS10cC00MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xuJHdoaXRlLXRwLTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4kd2hpdGUtdHAtNjA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcbiR3aGl0ZS10cC03MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuJHdoaXRlLXRwLTc1OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpO1xuJHdoaXRlLXRwLTgwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4kd2hpdGUtdHAtODU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NSk7IC8qIEJvZHkgdGV4dCBvbiBkYXJrIGJnICovXG4kd2hpdGUtdHAtOTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiR3aGl0ZS10cC05NTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KTtcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgVHJhbnNwYXJlbnQgQmxhY2tzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4kYmxhY2stdHAtMTA6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiRibGFjay10cC0xNTogcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiRibGFjay10cC0yMDogcmdiYSgwLCAwLCAwLCAwLjIpO1xuJGJsYWNrLXRwLTMwOiByZ2JhKDAsIDAsIDAsIDAuMyk7XG4kYmxhY2stdHAtNDA6IHJnYmEoMCwgMCwgMCwgMC40KTtcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgVHJhbnNwYXJlbnQgVGhlbWUgQ29sb3JzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBDeWFuIFRpbnRzICovXG4kY3lhbi10cC0wNTogcmdiYSgwLCAxODgsIDIxMiwgMC4wNSk7XG4kY3lhbi10cC0xMDogcmdiYSgwLCAxODgsIDIxMiwgMC4xKTtcbiRjeWFuLXRwLTIwOiByZ2JhKDAsIDE4OCwgMjEyLCAwLjIpO1xuJGN5YW4tdHAtMjU6IHJnYmEoMCwgMTg4LCAyMTIsIDAuMjUpOyAvKiBGb3JtIGZvY3VzIHNoYWRvdyAqL1xuJGN5YW4tdHAtMzA6IHJnYmEoMCwgMTg4LCAyMTIsIDAuMyk7XG4kY3lhbi10cC00MDogcmdiYSgwLCAxODgsIDIxMiwgMC40KTtcbiRjeWFuLXRwLTUwOiByZ2JhKDAsIDE4OCwgMjEyLCAwLjUpO1xuLyogR3JlZW4gVGludHMgKi9cbiRncmVlbi10cC0wODogcmdiYSgzMiwgMjAxLCAxNTEsIDAuMDgpO1xuJGdyZWVuLXRwLTEwOiByZ2JhKDMyLCAyMDEsIDE1MSwgMC4xKTtcbiRncmVlbi10cC0yMDogcmdiYSgzMiwgMjAxLCAxNTEsIDAuMik7XG4kZ3JlZW4tdHAtMzA6IHJnYmEoMzIsIDIwMSwgMTUxLCAwLjMpO1xuJGdyZWVuLXRwLTQwOiByZ2JhKDMyLCAyMDEsIDE1MSwgMC40KTtcbiRncmVlbi10cC01MDogcmdiYSgzMiwgMjAxLCAxNTEsIDAuNSk7XG4kZ3JlZW4tdHAtNzA6IHJnYmEoMzIsIDIwMSwgMTUxLCAwLjcpO1xuLyogWWVsbG93IFRpbnRzICovXG4keWVsbG93LXRwLTEwOiByZ2JhKDI1NSwgMTgyLCAzOSwgMC4xKTtcbiR5ZWxsb3ctdHAtMjA6IHJnYmEoMjU1LCAxODIsIDM5LCAwLjIpO1xuJHllbGxvdy10cC0zMDogcmdiYSgyNTUsIDE4MiwgMzksIDAuMyk7XG4keWVsbG93LXRwLTUwOiByZ2JhKDI1NSwgMTgyLCAzOSwgMC41KTtcbi8qIFJlZCBUaW50cyAqL1xuJHJlZC1kYW5nZXItYWx0LXRwLTE1OiByZ2JhKDIxNywgODMsIDc5LCAwLjE1KTtcbi8qIE5hdnkgVGludHMgKi9cbiRuYXZ5LXRwLTA1OiByZ2JhKDEwLCAzNywgNjQsIDAuMDUpO1xuJG5hdnktdHAtMTA6IHJnYmEoMTAsIDM3LCA2NCwgMC4xKTtcbiRuYXZ5LXRwLTIwOiByZ2JhKDEwLCAzNywgNjQsIDAuMik7XG4vKiBMYXZlbmRlciBUaW50cyAqL1xuJGxhdmVuZGVyLXRwLTA1OiByZ2JhKDE2MiwgMTU1LCAyNTQsIDAuMDUpO1xuJGxhdmVuZGVyLXRwLTEwOiByZ2JhKDE2MiwgMTU1LCAyNTQsIDAuMSk7XG4kbGF2ZW5kZXItdHAtMjA6IHJnYmEoMTYyLCAxNTUsIDI1NCwgMC4yKTtcbiRsYXZlbmRlci10cC0zMDogcmdiYSgxNjIsIDE1NSwgMjU0LCAwLjMpO1xuJGxhdmVuZGVyLXRwLTQwOiByZ2JhKDE2MiwgMTU1LCAyNTQsIDAuNCk7XG4kbGF2ZW5kZXItdHAtNTA6IHJnYmEoMTYyLCAxNTUsIDI1NCwgMC41KTtcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUHJhY3RpY2UgbGVhdmVcbi8qIFNsYXRlIHJhdGhlciB0aGFuIHJlZCwgc28gdGhlIHdob2xlIHByYWN0aWNlIGJlaW5nIGNsb3NlZCByZWFkc1xuLyogZGlmZmVyZW50bHkgZnJvbSBvbmUgY2xpbmljaWFuJ3MgbGVhdmUuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4kcHJhY3RpY2UtbGVhdmUtc2xhdGU6ICM1YjZiOGM7XG4kcHJhY3RpY2UtbGVhdmUtaW5rOiAjM2Q0NTU5O1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBXYXJuaW5nIENhbGxvdXRcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiR3YXJuaW5nLXRleHQ6ICM4NTY0MDQ7XG4kd2FybmluZy1iZzogcmdiYSgyNTUsIDI0MywgMjA1LCAwLjkpO1xuJHdhcm5pbmctYm9yZGVyOiByZ2JhKDI1NSwgMTkzLCA3LCAwLjcpO1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBOb3RpZmljYXRpb24gVXJnZW5jeVxuLyogT25lIGNvbG91ciBwZXIgdXJnZW5jeSwgc2hhcmVkIGJ5IHRoZSBiYW5uZXIsIHRoZSBub3RpZmljYXRpb24gbW9kYWxcbi8qIGFuZCB0aGUgYWRtaW4gY29uc29sZSBzbyBhbiB1cmdlbmN5IHJlYWRzIHRoZSBzYW1lIGV2ZXJ5d2hlcmUuXG4vKiBCYWNrZ3JvdW5kcyBhcmUgb3BhcXVlIC0gdGhlIGJhbm5lciBmbG9hdHMgb3ZlciBwYWdlIGNvbnRlbnQuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4kbm90aWNlLXN0YW5kYXJkOiAkYmx1ZTtcbiRub3RpY2Utc3RhbmRhcmQtYmc6ICNlYWYyZmI7XG4kbm90aWNlLWhpZ2g6ICR3YXJuaW5nLXRleHQ7XG4kbm90aWNlLWhpZ2gtYWNjZW50OiAkeWVsbG93O1xuJG5vdGljZS1oaWdoLWJnOiAjZmZmOGUxO1xuJG5vdGljZS11cmdlbnQ6ICNjMjQxMGM7XG4kbm90aWNlLXVyZ2VudC1iZzogI2ZmZjFlODtcbiRub3RpY2UtZXJyb3I6ICRkYW5nZXI7XG4kbm90aWNlLWVycm9yLWJnOiAjZmJlY2ViO1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBUeXBvZ3JhcGh5XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBGb250IEZhbWlseSAqL1xuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbi8qIEZvbnQgV2VpZ2h0cyAqL1xuJGZvbnQtd2VpZ2h0LWxpZ2h0OiAzMDA7XG4kZm9udC13ZWlnaHQtbm9ybWFsOiA0MDA7XG4kZm9udC13ZWlnaHQtbWVkaXVtOiA1MDA7XG4kZm9udC13ZWlnaHQtc2VtaWJvbGQ6IDYwMDtcbiRmb250LXdlaWdodC1ib2xkOiA3MDA7XG4vKiBGb250IFNpemVzICovXG4kZm9udC1zaXplLXNtOiAwLjlyZW07XG4kZm9udC1zaXplLWJhc2U6IDFyZW07XG4kZm9udC1zaXplLWxnOiAxLjNyZW07XG4kZm9udC1zaXplLXhsOiAxLjhyZW07XG4kZm9udC1zaXplLXh4bDogMi41cmVtO1xuJGZvbnQtc2l6ZS14eHhsOiAzLjJyZW07XG4vKiBMaW5lIEhlaWdodHMgKi9cbiRsaW5lLWhlaWdodC1iYXNlOiAxLjY7XG4kbGluZS1oZWlnaHQtaGVhZGluZzogMS4yO1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBTaXppbmcgJiBMYXlvdXRcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiRzZWN0aW9uLXBhZGRpbmcteDogNSU7XG4vKiBCb3JkZXIgUmFkaXVzICovXG4kYm9yZGVyLXJhZGl1cy1zbTogOHB4O1xuJGJvcmRlci1yYWRpdXMtbWQ6IDEwcHg7XG4kYm9yZGVyLXJhZGl1cy1sZzogMTJweDtcbiRib3JkZXItcmFkaXVzLXhsOiAxNnB4O1xuJGJvcmRlci1yYWRpdXMtY2lyY2xlOiA1MCU7XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFNoYWRvd3Ncbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiRzaGFkb3ctc206IDAgNHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuJHNoYWRvdy1tZDogMCA2cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuJHNoYWRvdy1sZzogMCAxMHB4IDMwcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuJHNoYWRvdy1jeWFuLXNtOiAwIDRweCAxNXB4IHJnYmEoMCwgMTg4LCAyMTIsIDAuMyk7XG4kc2hhZG93LWN5YW4tbWQ6IDAgNnB4IDIwcHggcmdiYSgwLCAxODgsIDIxMiwgMC40KTtcbiIsIkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBIZWF2eSBJdGFsaWMnO1xuICAgIHNyYzogdXJsKCcuL2ZvbnRzL2dvcmRpdGFibGFja2l0YWxpYy13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YWJsYWNraXRhbGljLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YWJsYWNraXRhbGljLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uZm9udC1oZWF2eS1pdGFsaWMge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBIZWF2eSBJdGFsaWMnO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgSGVhdnknO1xuICAgIHNyYzogdXJsKCcuL2ZvbnRzL2dvcmRpdGFibGFjay13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YWJsYWNrLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YWJsYWNrLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG4uZm9udC1oZWF2eSB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIEhlYXZ5Jztcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQgSXRhbGljJztcbiAgICBzcmM6IHVybCgnLi9mb250cy9nb3JkaXRhYm9sZGl0YWxpYy13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YWJvbGRpdGFsaWMtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnLi9mb250cy9nb3JkaXRhYm9sZGl0YWxpYy13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmZvbnQtYm9sZC1pdGFsaWMge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkIEl0YWxpYyc7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJztcbiAgICBzcmM6IHVybCgnLi9mb250cy9nb3JkaXRhYm9sZC13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YWJvbGQtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnLi9mb250cy9nb3JkaXRhYm9sZC13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLmZvbnQtYm9sZCB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgTWVkaXVtIEl0YWxpYyc7XG4gICAgc3JjOiB1cmwoJy4vZm9udHMvZ29yZGl0YW1lZGl1bWl0YWxpYy13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YW1lZGl1bWl0YWxpYy13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuL2ZvbnRzL2dvcmRpdGFtZWRpdW1pdGFsaWMtd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5mb250LW1lZGl1bS1pdGFsaWMge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBNZWRpdW0gSXRhbGljJztcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIE1lZGl1bSc7XG4gICAgc3JjOiB1cmwoJy4vZm9udHMvZ29yZGl0YW1lZGl1bS13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YW1lZGl1bS13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuL2ZvbnRzL2dvcmRpdGFtZWRpdW0td2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbi5mb250LW1lZGl1bSB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIE1lZGl1bSc7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBSZWd1bGFyIEl0YWxpYyc7XG4gICAgc3JjOiB1cmwoJy4vZm9udHMvZ29yZGl0YXJlZ3VsYXJpdGFsaWMtd2ViZm9udC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSwgdXJsKCcuL2ZvbnRzL2dvcmRpdGFyZWd1bGFyaXRhbGljLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YXJlZ3VsYXJpdGFsaWMtd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5mb250LXJlZ3VsYXItaXRhbGljIHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgUmVndWxhciBJdGFsaWMnO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgUmVndWxhcic7XG4gICAgc3JjOiB1cmwoJy4vZm9udHMvZ29yZGl0YXJlZ3VsYXItd2ViZm9udC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSwgdXJsKCcuL2ZvbnRzL2dvcmRpdGFyZWd1bGFyLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YXJlZ3VsYXItd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbi5mb250LXJlZ3VsYXIge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBSZWd1bGFyJztcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIExpZ2h0IEl0YWxpYyc7XG4gICAgc3JjOiB1cmwoJy4vZm9udHMvZ29yZGl0YWxpZ2h0aXRhbGljLXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIHVybCgnLi9mb250cy9nb3JkaXRhbGlnaHRpdGFsaWMtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnLi9mb250cy9nb3JkaXRhbGlnaHRpdGFsaWMtd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5mb250LWxpZ2h0LWl0YWxpYyB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIExpZ2h0IEl0YWxpYyc7XG59XG5cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIExpZ2h0JztcbiAgICBzcmM6IHVybCgnLi9mb250cy9nb3JkaXRhbGlnaHQtd2ViZm9udC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSwgdXJsKCcuL2ZvbnRzL2dvcmRpdGFsaWdodC13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuL2ZvbnRzL2dvcmRpdGFsaWdodC13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICBmb250LXdlaWdodDogMjAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLmZvbnQtbGlnaHQge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBMaWdodCc7XG59XG4iLCJodG1sLFxuYm9keSB7XG5cdGhlaWdodDogMTAwJTtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiB1bnNldCAhaW1wb3J0YW50O1xuXHQvKmxldHRlci1zcGFjaW5nOiAxcHg7Ki9cbn1cblxubWFpbiB7XG5cdG1pbi1oZWlnaHQ6IDEwMHZoO1xufVxuXG4uYmctd2hpdGUge1xuXHRiYWNrZ3JvdW5kOiAkd2hpdGU7XG59XG4udGV4dC13aGl0ZSB7XG5cdGNvbG9yOiAkd2hpdGU7XG59XG5cbi5iZy1uYXZ5IHtcblx0YmFja2dyb3VuZDogJG5hdnk7XG59XG4udGV4dC1uYXZ5IHtcblx0Y29sb3I6ICRuYXZ5O1xufVxuXG4uYmctZGFya05hdnkge1xuXHRiYWNrZ3JvdW5kOiAkZGFya05hdnk7XG59XG4udGV4dC1kYXJrTmF2eSB7XG5cdGNvbG9yOiAkZGFya05hdnk7XG59XG5cbi5iZy1jeWFuIHtcblx0YmFja2dyb3VuZDogJGN5YW47XG59XG4udGV4dC1jeWFuIHtcblx0Y29sb3I6ICRjeWFuO1xufVxuXG4uYmctYmx1ZSB7XG5cdGJhY2tncm91bmQ6ICRibHVlO1xufVxuLnRleHQtYmx1ZSB7XG5cdGNvbG9yOiAkYmx1ZTtcbn1cblxuLmJnLXB1cnBsZSB7XG5cdGJhY2tncm91bmQ6ICRwdXJwbGU7XG59XG4udGV4dC1wdXJwbGUge1xuXHRjb2xvcjogJHB1cnBsZTtcbn1cblxuLmJnLXBhbGVCbHVlIHtcblx0YmFja2dyb3VuZDogJHBhbGVCbHVlO1xufVxuLnRleHQtcGFsZUJsdWUge1xuXHRjb2xvcjogJHBhbGVCbHVlO1xufVxuXG4uYmctbmF2R3JleSB7XG5cdGJhY2tncm91bmQ6ICRuYXZHcmV5O1xufVxuLnRleHQtbmF2R3JleSB7XG5cdGNvbG9yOiAkbmF2R3JleTtcbn1cblxuLmJnLXBhZ2VCYWNrR3JvdW5kIHtcblx0YmFja2dyb3VuZDogJHBhZ2VCYWNrR3JvdW5kO1xufVxuLnRleHQtcGFnZUJhY2tHcm91bmQge1xuXHRjb2xvcjogJHBhZ2VCYWNrR3JvdW5kO1xufVxuXG4uYmctdGV4dEdyZXkge1xuXHRiYWNrZ3JvdW5kOiAkdGV4dEdyZXk7XG59XG4udGV4dC10ZXh0R3JleSB7XG5cdGNvbG9yOiAkdGV4dEdyZXk7XG59XG5cbi5iZy1sb2dvdXRHcmV5IHtcblx0YmFja2dyb3VuZDogJGxvZ291dEdyZXk7XG59XG4udGV4dC1sb2dvdXRHcmV5IHtcblx0Y29sb3I6ICRsb2dvdXRHcmV5O1xufVxuXG4udGV4dC1yZWQge1xuXHRjb2xvcjogI2E5NDQ0MiAhaW1wb3J0YW50O1xufVxuLnRleHQtYnJpZ2h0LXJlZCB7XG5cdGNvbG9yOiByZWQ7XG59XG5cbi5vdXRsaW5lIHtcblx0b3V0bGluZTogMXB4IGRvdHRlZCByZWQ7XG59XG5cbi51bnN0eWxlZCB7XG5cdGNvbG9yOiBpbmhlcml0O1xuXHR0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG5cdGN1cnNvcjogaW5oZXJpdDtcblx0JjphY3RpdmUsXG5cdCY6Zm9jdXMge1xuXHRcdG91dGxpbmU6IG5vbmU7XG5cdH1cblx0Jjpob3ZlciB7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudDtcblx0XHRjb2xvcjogaW5oZXJpdDtcblx0fVxufVxuXG4ucG9pbnRlciB7XG5cdGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xufVxuXG4udGV4dC1zbWFsbCB7XG5cdGZvbnQtc2l6ZTogMC44ZW07XG59XG5cbi5tYi0wIHtcblx0bWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLnRoLW5vLWJvcmRlciB7XG5cdC8qIGJvcmRlci13aWR0aDogMHB4ICFpbXBvcnRhbnQ7ICovXG5cdGJvcmRlci1sZWZ0LXdpZHRoOiAwcHggIWltcG9ydGFudDtcblx0Ym9yZGVyLXJpZ2h0LXdpZHRoOiAwcHggIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogJGJsdWUgIWltcG9ydGFudDtcblx0dmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7XG59XG4udGgtYm9yZGVyLXRvcCB7XG5cdGJvcmRlci10b3AtY29sb3I6ICRibHVlO1xufVxuXG4udG9hc3QtY29udGFpbmVyIHtcblx0bWFyZ2luLXRvcDogMjUlO1xufVxuXG4uZmxleC1oYWxmLXJvdyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcblx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRwYWRkaW5nLWxlZnQ6IDJlbTtcblx0cGFkZGluZy1yaWdodDogMmVtO1xuXHRwYWRkaW5nLXRvcDogOHB4O1xuXHRwYWRkaW5nLWJvdHRvbTogOHB4O1xufVxuXG4uZmxleC1oYWxmLWNlbGwge1xuXHR3aWR0aDogNTAlO1xufVxuXG4uZmxleC10aHJlZS1jZWxsIHtcblx0d2lkdGg6IDMzJTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubmF2eS10aGluLWxpbmUge1xuXHRoZWlnaHQ6IDFweDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2RkZDtcblx0bWFyZ2luLWxlZnQ6IDEuNWVtO1xuXHRtYXJnaW4tcmlnaHQ6IDEuNWVtO1xufVxuXG4ucmVtb3ZlLWRpYWdub3NpcyB7XG5cdHBhZGRpbmc6IDA7XG5cdG1hcmdpbjogMDtcblx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdHdpZHRoOiAyNHB4O1xuXHRoZWlnaHQ6IDI0cHg7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0Y29sb3I6IHdoaXRlO1xuXHR9XG59XG5cbi5yZW1vdmUtcHJvY2VkdXJlIHtcblx0cGFkZGluZzogMDtcblx0bWFyZ2luOiAwO1xuXHRib3JkZXI6IDFweCBzb2xpZCAjZmYwMDAwO1xuXHR3aWR0aDogMjRweDtcblx0aGVpZ2h0OiAyNHB4O1xuXHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZjAwMDA7XG5cdFx0Y29sb3I6IHdoaXRlO1xuXHR9XG59XG5cbi5hcnJvdy1yaWdodCB7XG5cdGJvcmRlcjogc29saWQgJG5hdnk7XG5cdGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0cGFkZGluZzogM3B4O1xuXHRtYXJnaW4tYm90dG9tOiAycHg7XG5cdG1hcmdpbi1sZWZ0OiAycHg7XG5cdHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbn1cblxuLnRleHQtZ3JleS1saWdodCB7XG5cdGNvbG9yOiAkdGV4dEdyZXk7XG5cdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBMaWdodCc7XG59XG5cbi50ZXh0LXByb2NlZHVyZSB7XG5cdGNvbG9yOiAjZmYwMDAwO1xufVxuXG4udGl0bGUtY29udGFpbmVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdG1hcmdpbi1ib3R0b206IDAuMmVtO1xufVxuXG4uZmlsdGVyLWdyZXl7XG5cdGZpbHRlcjogaW52ZXJ0KDY2JSkgc2VwaWEoNiUpIHNhdHVyYXRlKDE3MyUpIGh1ZS1yb3RhdGUoMTkwZGVnKSBicmlnaHRuZXNzKDg5JSkgY29udHJhc3QoODUlKTtcbn1cblxuLnRpbWUtcGlja2VyIHtcblx0bWFyZ2luLWxlZnQ6IDFlbTtcblx0cGFkZGluZy1sZWZ0OiAxZW07XG4gICAgaGVpZ2h0OiAzLjBlbTtcbiAgICBib3JkZXItd2lkdGg6IDFweDtcbiAgICBib3JkZXItY29sb3I6ICRuYXZ5O1xuICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7XG59XG5cbi5zY3JvbGwtY29udGFpbmVyIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG4gICAgd2lkdGg6IDQyLjVlbTtcbiAgICBoZWlnaHQ6ODAlO1xuXHRvdmVyZmxvdy15OiBzY3JvbGw7XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0bWFyZ2luLWxlZnQ6IDEuNWVtO1xuXHRtYXJnaW4tdG9wOiAyZW07XG59XG5cbi5zY3JvbGwtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhciB7XG5cdHdpZHRoOiA1cHg7IC8qIFNldCB0aGUgd2lkdGggb2YgdGhlIHNjcm9sbGJhciAqL1xuXHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0LyogcG9zaXRpb246IGFic29sdXRlOyAqL1xuIH1cblxuIC5zY3JvbGwtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5OyAvKiBTZXQgdGhlIGNvbG9yIG9mIHRoZSB0aHVtYiAqL1xuIH1cblxuLyogQ2FwcyB0aGUgZGlhZ25vc2lzIGxpc3QgaGVpZ2h0IG9uIHRoZSBwYXRpZW50IGRhc2hib2FyZCBzbyBhIGxvbmcgbGlzdCAqL1xuLyogZG9lc24ndCBibG93IG91dCB0aGUgb3ZlcmFsbCBwYWdlIHNjcm9sbC4gKi9cbi5kaWFnbm9zaXMtc2Nyb2xsLWNvbnRhaW5lciB7XG5cdG1heC1oZWlnaHQ6IDI0ZW07XG5cdG92ZXJmbG93LXk6IGF1dG87XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0cGFkZGluZy1yaWdodDogMC41ZW07XG59XG5cbi5kaWFnbm9zaXMtc2Nyb2xsLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuXHR3aWR0aDogNXB4O1xuXHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpYWdub3Npcy1zY3JvbGwtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRib3JkZXItcmFkaXVzOiAzcHg7XG59XG5cbi8qIFRoZSBkb2N1bWVudHMgbGlzdCBzY3JvbGxzIGluIHBsYWNlIGluc3RlYWQgb2YgcGFnaW5nLCBzbyB0aGUgc2VjdGlvbiBrZWVwcyBhIGZpeGVkIGhlaWdodCAqL1xuLyogaG93ZXZlciBtYW55IGRvY3VtZW50cyBhIHBhdGllbnQgaGFzLiBUaGUgc2Nyb2xsYmFyIGlzIGxlZnQgdmlzaWJsZSByYXRoZXIgdGhhbiBvdmVybGFpZCBzbyAqL1xuLyogdGhlIHBvc2l0aW9uIGluIHRoZSBsaXN0IGlzIGFsd2F5cyByZWFkYWJsZS4gKi9cbi5kb2N1bWVudHMtc2Nyb2xsLWNvbnRhaW5lciB7XG5cdG1heC1oZWlnaHQ6IDMyZW07XG5cdG92ZXJmbG93LXk6IGF1dG87XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0cGFkZGluZy1yaWdodDogMC41ZW07XG5cdHNjcm9sbGJhci13aWR0aDogdGhpbjtcblx0c2Nyb2xsYmFyLWNvbG9yOiAkbmF2eSByZ2JhKDAsIDUzLCAyMTAsIDAuMTIpO1xufVxuXG4uZG9jdW1lbnRzLXNjcm9sbC1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcblx0d2lkdGg6IDhweDtcbn1cblxuLmRvY3VtZW50cy1zY3JvbGwtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG5cdGJhY2tncm91bmQ6IHJnYmEoMCwgNTMsIDIxMCwgMC4xMik7XG5cdGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLmRvY3VtZW50cy1zY3JvbGwtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRib3JkZXItcmFkaXVzOiA0cHg7XG59XG5cbi5kb2N1bWVudHMtc2Nyb2xsLW1vcmUge1xuXHRwYWRkaW5nOiAwLjVlbSAwIDAuMjVlbTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRjb2xvcjogJG5hdnk7XG5cdGZvbnQtc2l6ZTogMC44NWVtO1xufVxuXG4vKiBXaGV0aGVyIHRoZSBsaXN0IGlzIHN0aWxsIGFycml2aW5nLCBlbXB0eSwgb3Igc2hvcnQgb2Ygb25lIG9mIGl0cyB0d28gaGFsdmVzLiBLZXB0IGFib3ZlIHRoZSAqL1xuLyogc2Nyb2xsaW5nIGFyZWEgc28gaXQgaXMgcmVhZGFibGUgd2l0aG91dCBzY3JvbGxpbmcgdG8gZmluZCBpdC4gKi9cbi5kb2N1bWVudHMtc3RhdHVzIHtcblx0cGFkZGluZzogMC41ZW0gMCAwLjI1ZW07XG5cdGNvbG9yOiAkbmF2eTtcblx0Zm9udC1zaXplOiAwLjg1ZW07XG59XG5cbi5kb2N1bWVudHMtc3RhdHVzLS1lcnJvciB7XG5cdGNvbG9yOiAkZGFuZ2VyO1xufVxuXG4vKiBQYWdpbmcgaXMgcmVwbGFjZWQgYnkgdGhlIHNjcm9sbGluZyBhYm92ZSwgc28gbmctdGFibGUncyBwYWdlciBpcyBub3Qgc2hvd24uICovXG5wYXRpZW50LWZpbGUtdGFibGUgLm5nLXRhYmxlLXBhZ2VyIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLnByb2dyZXNzLW5vdGUtY29udGFpbmVyIHtcblx0Ym9yZGVyLXdpZHRoOiAycHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdGJvcmRlci1yYWRpdXM6IDhweDtcblx0bWFyZ2luLWJvdHRvbTogMWVtO1xuXHR3aWR0aDogMTAwJTtcblx0bWluLWhlaWdodDogNWVtO1xuXHRwYWRkaW5nOiAwLjVlbTtcbn1cblxuLnByb2dyZXNzLW5vdGUtY29udGFpbmVyLWRlbGV0ZSB7XG5cdGJvcmRlci13aWR0aDogMnB4O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItY29sb3I6ICR0ZXh0R3JleTtcblx0Ym9yZGVyLXJhZGl1czogOHB4O1xuXHRtYXJnaW4tYm90dG9tOiAxZW07XG5cdHdpZHRoOiAxMDAlO1xuXHRtaW4taGVpZ2h0OiA1ZW07XG5cdHBhZGRpbmc6IDAuNWVtO1xufVxuXG4ucHJvZ3Jlc3Mtbm90ZS1jb250YWluZXItYWRtaW4ge1xuXHRib3JkZXItd2lkdGg6IDJweDtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLWNvbG9yOiAkb3JhbmdlO1xuXHRib3JkZXItcmFkaXVzOiA4cHg7XG5cdG1hcmdpbi1ib3R0b206IDFlbTtcblx0d2lkdGg6IDEwMCU7XG5cdG1pbi1oZWlnaHQ6IDVlbTtcblx0cGFkZGluZzogMC41ZW07XG59XG5cbi5wcm9ncmVzcy1ub3RlLWNvbnRhaW5lci1udXJzZSB7XG5cdGJvcmRlci13aWR0aDogMnB4O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItY29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdGJvcmRlci1yYWRpdXM6IDhweDtcblx0bWFyZ2luLWJvdHRvbTogMWVtO1xuXHR3aWR0aDogMTAwJTtcblx0bWluLWhlaWdodDogNWVtO1xuXHRwYWRkaW5nOiAwLjVlbTtcbn1cblxuLnByb2dyZXNzLW5vdGUtY29udGFpbmVyLXNjaGVkdWxlZCB7XG5cdGJvcmRlci13aWR0aDogMnB4O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItY29sb3I6ICR0ZWFsO1xuXHRib3JkZXItcmFkaXVzOiA4cHg7XG5cdG1hcmdpbi1ib3R0b206IDFlbTtcblx0d2lkdGg6IDEwMCU7XG5cdG1pbi1oZWlnaHQ6IDVlbTtcblx0cGFkZGluZzogMC41ZW07XG59XG5cbi5wcm9ncmVzcy1ub3RlLWNvbnRhaW5lci1pbmplY3Rpb24ge1xuXHRib3JkZXItd2lkdGg6IDJweDtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLWNvbG9yOiAkcHVycGxlO1xuXHRib3JkZXItcmFkaXVzOiA4cHg7XG5cdG1hcmdpbi1ib3R0b206IDFlbTtcblx0d2lkdGg6IDEwMCU7XG5cdG1pbi1oZWlnaHQ6IDVlbTtcblx0cGFkZGluZzogMC41ZW07XG59XG5cbi5wcm9ncmVzcy1ub3RlLWJvbGQge1xuXHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCc7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Y29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XG59XG5cbi5wcm9ncmVzcy1ub3RlLWJvbGQtZGVsZXRlIHtcblx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnO1xuXHRmb250LXNpemU6IDEycHg7XG5cdGNvbG9yOiAkdGV4dEdyZXkgIWltcG9ydGFudDtcbn1cblxuLnByb2dyZXNzLW5vdGUtbGluayB7XG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCc7XG59XG5cbi5wYW5lbC10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJztcbn1cblxuI3Njcm9sbGFibGUtZHJvcGRvd24tbWVudSAuZHJvcGRvd24tbWVudSB7XG5cdGhlaWdodDogMTBlbTtcblx0b3ZlcmZsb3cteTogYXV0bztcblx0bWFyZ2luLXRvcDogLTEyLjVlbTtcbiAgfVxuXG4uZXJyb3ItbWVzc2FnZSB7XG5cdGNvbG9yOiAjYTk0NDQyO1xuXHRkaXNwbGF5OiBibG9jaztcblx0bWFyZ2luLXRvcDogNXB4O1xufVxuXG4uZGlhbG9nLWNvbnRlbnQtYm94IHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRoZWlnaHQ6MzJyZW07XG5cdHdpZHRoOiAxMDAlO1xufVxuXG4uaW52b2ljZS1pdGVtLWNlbGwge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRnYXA6IDAuNXJlbTtcbn1cblxuLmludm9pY2UtY29kZS1sYWJlbCB7XG5cdGJvcmRlci13aWR0aDogMXB4O1xuXHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcblx0cGFkZGluZy1yaWdodDogMC41cmVtO1xufVxuXG4uaW52b2ljZS1pdGVtLXJvdyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0Z2FwOiAxcmVtO1xufVxuXG4uaW52b2ljZS1yZWZlcmVuY2Utcm93IHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRnYXA6IDFyZW07XG5cdG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xufVxuXG4uaW52b2ljZS1kZXRhaWxzLWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGdhcDogMC41cmVtO1xuXHRtYXJnaW4tbGVmdDogNjAlO1xuXHRtYXJnaW4tcmlnaHQ6IDQlO1xufVxuXG4uaW52b2ljZS1kZXRhaWxzLXNlY3Rpb24ge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRnYXA6IDAuNXJlbTtcblx0cGFkZGluZy1ib3R0b206IDFyZW07XG5cdGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcblx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogZ3JheTtcblx0Ym9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG59XG5cbi5pbnZvaWNlLWRldGFpbHMtcm93IHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0Z2FwOiAxcmVtO1xuXHRjb2xvcjogJG5hdnk7XG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLnZpZXctaW52b2ljZS1tb2RhbCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uaGVhZGVyLWdyb3VwIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmRpc21pc3MtY2xvc2UtaWNvbiB7XG5cdGNvbG9yOiAkd2hpdGU7XG5cdGZvbnQtc2l6ZTogMjBweDtcblx0YWxpZ24tc2VsZjogZW5kO1xuXHRtYXJnaW4tcmlnaHQ6IDExJTtcbn1cblxuLyogQSByb3cgb2YgYWN0aW9uIGljb25zIGluc2lkZSBhIHRhYmxlIGNlbGwuIE5vdCBhIGZsZXggY29udGFpbmVyOiB0aGlzIGNsYXNzIHNpdHMgb24gdGhlIDx0ZD4sIGFuZCBhIGZsZXhcbiAgIHRhYmxlIGNlbGwgZHJvcHMgb3V0IG9mIHRoZSB0YWJsZSdzIHJvdyBsYXlvdXQgLSB0aGUgYnJvd3NlciBzaXplcyBpdCB0byBpdHMgb3duIGNvbnRlbnQsIHNvIHRoZSBjZWxsJ3NcbiAgIGJvdHRvbSBib3JkZXIgaXMgZHJhd24gYXQgdGhlIGhlaWdodCBvZiB0aGUgaWNvbnMgYW5kIG5vIGxvbmdlciBsaW5lcyB1cCB3aXRoIHRoZSBjZWxscyBlaXRoZXIgc2lkZS4gKi9cbi5pY29ucy1yb3cge1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdD4gKiB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdH1cblxuXHQ+ICogKyAqIHtcblx0XHRtYXJnaW4tbGVmdDogMXJlbTtcblx0fVxufVxuXG4ubWQtZGlhbG9nLWNvbnRhaW5lciB7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGdhcDogMC41cmVtO1xufVxuXG4jYmlsbGluZy1kcm9wZG93bi1tZW51IC5kcm9wZG93bi1tZW51IHtcblx0bWF4LWhlaWdodDogMjByZW07XG5cdG92ZXJmbG93LXk6IGF1dG87XG4gIH1cblxuLnByb2dyZXNzLW5vdGUtaGVhZGVyIHtcblx0bWFyZ2luLWxlZnQ6IDBweDtcblx0bWFyZ2luLXJpZ2h0OiAwcHg7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdHdpZHRoOiAxMDAlO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5wcm9ncmVzcy1ub3RlLWhlYWRlci1jaGlsZCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcblx0Z2FwOiAxcmVtO1xufVxuXG5cbi5mYy10b29sYmFyIGgyIHtcblx0Zm9udC1zaXplOiAxNnB4O1xuXHRwYWRkaW5nLXRvcDogMC41cmVtO1xufVxuXG4ubmhpLWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGdhcDogMXJlbTtcbn1cblxuLm5oaS1jb250YWluZXItbGVmdCB7XG5cdHdpZHRoOiA1MCU7XG59XG5cbi5uaGktY29udGFpbmVyLXJpZ2h0IHtcblx0d2lkdGg6IDUwJTtcbn1cblxuLm5hbWUtcm93LWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGdhcDogMC41cmVtO1xufVxuXG4ucmVkLWxhYmVsIHtcblx0Y29sb3I6IHJlZCAhaW1wb3J0YW50O1xufVxuXG4ubmhpLWNvbHVtbiB7XG5cdG1heC13aWR0aDogMTByZW07XG5cdHRleHQtd3JhcDogd3JhcDtcblx0d29yZC13cmFwOiBicmVhay13b3JkO1xufVxuXG4ubmhpLWxhYmVsIHtcblx0dGV4dC13cmFwOiB3cmFwO1xuXHR3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG5cdG1heC13aWR0aDogODAlO1xufVxuXG4ucHJvZ3Jlc3Mtbm90ZS1wcm9jZWR1cmUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHRnYXA6IDFyZW07XG59XG5cbi5mYy1tb3JlLXBvcG92ZXIge1xuXHRtYXgtaGVpZ2h0OiA5NSU7XG5cdG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5zZWFyY2gtcmFkaW8tbGFiZWwge1xuXHRjb2xvcjogJG5hdnkgIWltcG9ydGFudDtcblx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIE1lZGl1bScgIWltcG9ydGFudDtcblx0Zm9udC1zaXplOiAxNnB4O1xufVxuXG4ucGF0aWVudC10YWJsZS10ZXh0IHtcblx0Y29sb3I6ICRuYXZ5ICFpbXBvcnRhbnQ7XG59XG5cbi5yZWQtdGV4dCB7XG5cdGNvbG9yOiByZWQ7XG59XG5cbi50YXNrLWxhYmVsLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cbi50YXNrLWxhYmVsLWNoaWxkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi50YXNrLWxpc3QtcGF0aWVudCB7XG5cdHdpZHRoOiAxNSU7XG5cdC8qIHRleHQtYWxpZ246IGNlbnRlcjsgKi9cbn1cblxuLnRhc2stbGlzdC1hc3NpZ25lZCB7XG5cdHdpZHRoOiAyMCU7XG5cdC8qIHRleHQtYWxpZ246IGNlbnRlcjsgKi9cbn1cblxuLnRhc2stbGlzdC1kZXNjcmlwdGlvbiB7XG5cdHdpZHRoOiAzMCU7XG5cdC8qIHRleHQtYWxpZ246IGNlbnRlcjsgKi9cblx0XG59XG5cbi50YXNrLWxpc3Qtc3RhdHVzIHtcblx0d2lkdGg6IDUlO1xuXHQvKiB0ZXh0LWFsaWduOiBjZW50ZXI7ICovXG59XG5cbi50YXNrLWxpc3QtZGVsZXRlIHtcblx0d2lkdGg6IDMlO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi50YXNrLWxpc3QtZHVlIHtcblx0d2lkdGg6IDclO1xuXHQvKiB0ZXh0LWFsaWduOiBjZW50ZXI7ICovXG59XG5cbi50YXNrLWxpc3QtbGFiZWwge1xuXHR3aWR0aDogMTIlO1xuXHQvKiB0ZXh0LWFsaWduOiBjZW50ZXI7ICovXG59XG5cbi50YXNrLWxpc3QtY29sb3Ige1xuXHR3aWR0aDogMnJlbTtcblx0aGVpZ2h0OiAycmVtO1xuXHQvKiB0ZXh0LWFsaWduOiBjZW50ZXI7ICovXG5cdGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbn1cblxuLnRhc2stZG9uZSB7XG5cdHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xufVxuXG4uYnV0dG9uLWZvb3RlciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGdhcDogMXJlbTtcbn1cblxuLm5hdi1saSB7XG5cdGhlaWdodDogMi41cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAyLjVyZW07XG59XG5cbi5tZC1iYWRnZSB7XG5cdHotaW5kZXg6IDgwICFpbXBvcnRhbnQ7XG4gfVxuXG4gLnNpZ24tYnV0dG9ucy1ncm91cCB7XG4gXHRkaXNwbGF5OiBmbGV4O1xuIFx0ZmxleC1kaXJlY3Rpb246IHJvdztcbiBcdGdhcDogMXJlbTtcblx0d2lkdGg6IDEwMCU7XG5cdG1hcmdpbi1sZWZ0OiAxcmVtO1xuIH1cblxuIC5zaWduLWJ1dHRvbnMtY29udGFpbmVyIHtcbiBcdGRpc3BsYXk6IGZsZXg7XG4gXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtcbiB9XG5cbiAuaGVhZGVyLWxlZnQtYWxpZ24gPiB0aGVhZCA+IHRyID4gdGgge1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4ubHZsLW92ZXIge1xuXHQvKiBhcHBsaWVkIHRvIGEgZHJvcCB0YXJnZXQgd2hlbiBhIGRyYWdnYWJsZSBvYmplY3QgaXMgb3ZlciBpdCAqL1xuXHRib3JkZXI6IDJweCBkYXNoZWQgYmxhY2sgIWltcG9ydGFudDtcbn1cblxuLmx2bC10YXJnZXQge1xuXHQvKiBhcHBsaWVkIHRvIGFsbCBkcm9wIHRhcmdldHMgd2hlbiBhIGRyYWcgb3BlcmF0aW9uIGJlZ2lucywgdXNlZCB0byBpbmRpY2F0ZSBkcm9wIHRhcmdldHMgb24gYSBwYWdlICovXG5cdGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XG5cdG9wYWNpdHk6IC41O1xufVxuXG5bZHJhZ2dhYmxlXSB7XG5cdC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG5cdC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcblx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcblx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cdC8qIFJlcXVpcmVkIHRvIG1ha2UgZWxlbWVudHMgZHJhZ2dhYmxlIGluIG9sZCBXZWJLaXQgKi9cblx0LWtodG1sLXVzZXItZHJhZzogZWxlbWVudDtcblx0LXdlYmtpdC11c2VyLWRyYWc6IGVsZW1lbnQ7XG5cdGN1cnNvcjogbW92ZTtcblx0Ym9yZGVyOjFweCBzb2xpZCBibGFjaztcbn1cblxuLnBlZyB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRib3JkZXItd2lkdGg6IDBweDtcblx0Ym9yZGVyLXJhZGl1czogNHB4O1xuXHR3aWR0aDogYXV0bztcblx0aGVpZ2h0OjNyZW07XG5cdG1hcmdpbjogMTBweDtcblx0cGFkZGluZzogMC41cmVtO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjogIzAxOUNEMjtcblx0Y29sb3I6IHdoaXRlO1xufVxuXG4uc2xvdCB7XG5cdG1hcmdpbi1yaWdodDoycHg7XG5cdG1hcmdpbi10b3A6MnB4O1xuXHR3aWR0aDoyNXB4O1xuXHRoZWlnaHQ6MjVweDtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBib3JkZXI6IG5vbmU7XG59XG5cbi5ncmV5IHtcblx0YmFja2dyb3VuZC1jb2xvcjogZ3JleTtcbn1cblxucHJlIHN0cm9uZyB7XG5cdGZvbnQtc2l6ZToxMnB0O1xufVxuXG4ubW9kYWwtY2xvc2Uge1xuXHR6LWluZGV4OiAxO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogN3JlbTtcbn1cblxuLm15LWRyb3Atem9uZSB7XG5cdGJvcmRlcjogZG90dGVkIDNweCBsaWdodGdyYXk7XG59XG5cbi5udi1maWxlLW92ZXIge1xuXHRib3JkZXI6IGRvdHRlZCAzcHggcmVkO1xufVxuXG4vKiBEZWZhdWx0IGNsYXNzIGFwcGxpZWQgdG8gZHJvcCB6b25lcyBvbiBvdmVyICovXG4uYW5vdGhlci1maWxlLW92ZXItY2xhc3Mge1xuXHRib3JkZXI6IGRvdHRlZCAzcHggZ3JlZW47XG59XG5cbi5sb2NhdGlvbi1jb250YWluZXIge1xuXHRtYXJnaW4tdG9wOiAwLjVyZW07XG5cdGJvcmRlci13aWR0aDogMXB4O1xuXHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRib3JkZXItcmFkaXVzOiA0cHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdHBhZGRpbmc6IDAuNXJlbTtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0Y29sb3I6ICRuYXZ5O1xufVxuXG4ucG9wb3Zlci1jb250YWluZXIge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRnYXA6IDFyZW07XG5cdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbn1cblxuZGl2LnByaW50Q29udHJvbHNcbntcblx0YmFja2dyb3VuZC1jb2xvcjojZWRmMGVjO1xuXHRoZWlnaHQ6MTAwcHg7XG5cdHBhZGRpbmc6IDVweDtcblx0Ym90dG9tOjA7XG5cdGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBnYXA6IDFyZW07XG59XG5cbiNsYWJlbEltYWdlRGl2XG57XG5cdGJhY2tncm91bmQtY29sb3I6ICNiMmIyYjI7XG5cdHBhZGRpbmc6IDVweDtcblx0bWFyZ2luOiAwcHg7XG59XG5cbiNwcmludERpdlxue1xuXHRmbG9hdDpyaWdodDtcblx0d2lkdGg6MTI2cHg7XG59XG5cblxuI3ByaW50ZXJzRGl2XG57XG5cdGZsb2F0OmxlZnQ7XG59XG5cbi5wcm9ncmVzcy1iYXItd2FybmluZyB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xufVxuXG4uY2xpbmljLWxldHRlcnMtZnJhbWUge1xuXHR3aWR0aDogMTAwJTtcblx0bWF4LWhlaWdodDogNTB2aDtcblx0b3ZlcmZsb3cteTogc2Nyb2xsO1xuXHRzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG59XG5cbi5jbGluaWMtbGV0dGVycy1jb250YWluZXIge1xuXHRib3JkZXItd2lkdGg6IDJweDtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0Ym9yZGVyLXJhZGl1czogOHB4O1xuXHRtYXJnaW4tYm90dG9tOiAxZW07XG5cdHdpZHRoOiAxMDAlO1xuXHRtaW4taGVpZ2h0OiA1ZW07XG5cdHBhZGRpbmc6IDAuNWVtO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0Y29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG5cblx0XHQuY2xpbmljLWxldHRlcnMtYm9sZCB7XG5cdFx0XHRjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcblx0XHR9XG5cdH1cblxuXHQuY2xpbmljLWxldHRlcnMtYm9sZCB7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdH1cbn1cblxuLmNsaW5pYy1sZXR0ZXJzLWNvbnRlbnQge1xuXHR3aWR0aDogMTAwJTtcblx0ZGlzcGxheTogZmxleDsgXG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5jbGluaWMtdGVtcGxhdGUtbWVudSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGFsaWduLWl0ZW1zOiBlbmQ7XG59XG5cbi5jbGluaWMtbGV0dGVyLWZvb3RlciB7XG5cdG1hcmdpbi1sZWZ0OiAtNTVweCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IC01NXB4ICFpbXBvcnRhbnQ7XG5cdGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1ib3R0b206IC0zcmVtICFpbXBvcnRhbnQ7XG59XG5cbi5tZC1jaGlwcyB7XG5cdGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmNhcmUtdGVhbS13aWR0aCB7XG5cdHdpZHRoOiAzNnJlbSAhaW1wb3J0YW50O1xufVxuXG4ubm90ZS1lZGl0b3IgLm5vdGUtZnJhbWUgLm5vdGUtZWRpdGluZy1hcmVhIC5ub3RlLWVkaXRhYmxlIHtcblx0Y29sb3I6ICMwMDAwMDA7XG5cdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBSZWd1bGFyJywgc2Fucy1zZXJpZjtcbn1cblxuLm5vdGUtZWRpdGFibGU+cCB7XG5cdGNvbG9yOiAjMDAwMDAwO1xufVxuXG4ubm90ZS1lZGl0b3Iubm90ZS1haXJmcmFtZSAubm90ZS1zdGF0dXMtb3V0cHV0LFxuLm5vdGUtZWRpdG9yLm5vdGUtZnJhbWUgLm5vdGUtc3RhdHVzLW91dHB1dCB7XG5cdGJvcmRlci10b3Atd2lkdGg6IDBweCAhaW1wb3J0YW50O1xufVxuXG4gIEBtZWRpYSBwcmludCB7XG5cdEBwYWdlIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNWluO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNWluO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjNpbjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4zaW47XG4gICAgICB9XG4gIH0gXG5cbi5ub3RlLWVkaXRvci1kaWFnbm9zaXMtdGFibGUge1xuICAgIHdpZHRoOiA2MCU7XG5cdG1hcmdpbi1sZWZ0OiAyMCU7XG5cdHRhYmxlLWxheW91dDogZml4ZWQ7XG5cblx0dGgsXG5cdHRkIHtcblx0XHR3aWR0aDogNTAlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG59ICBcblxuXG4uaGVhZC1uby1saW5rIHtcblx0Y29sb3I6ICRuYXZ5O1xuXHRmb250LXNpemU6IDE0cHg7XG5cdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcbn1cblxuLmludHJvLWN1c3RvbVRvb2x0aXAgKiB7XG4gIGNvbG9yOiAjNGE0YTRhO1xuICBmb250LXNpemU6IDE1cHhcbn1cbiBcbi5pbnRyby1jdXN0b21Ub29sdGlwIC5pbnRyb2pzLXRvb2x0aXAtdGl0bGUge1xuICBjb2xvcjogJG5hdnk7XG59XG5cbi5kcm9wZG93bi1tZW51W3VpYi10eXBlYWhlYWQtcG9wdXBdIHtcbiAgICBtYXgtaGVpZ2h0OiAyNTBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICB6LWluZGV4OiAxMDUwO1xufVxuXG4vKiAubXVpLWFsZXJ0IHtcbiAgcGFkZGluZzogMTJweCAxNnB4O1xuICBtYXJnaW46IDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbn0gKi9cblxuLm11aS1hbGVydC1pbmZvIHtcbiAgYmFja2dyb3VuZDogI2U4ZjRmZDtcbiAgY29sb3I6ICMwNTUxNjA7XG4gIGJvcmRlci1jb2xvcjogI2I2ZTBmZTtcbn1cblxuLm11aS1hbGVydC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZDogI2VkZjdlZDtcbiAgY29sb3I6ICMxZTQ2MjA7XG4gIGJvcmRlci1jb2xvcjogI2M4ZTZjOTtcbn1cblxuLm11aS1hbGVydC13YXJuaW5nIHtcbiAgYmFja2dyb3VuZDogI2ZmZjRlNTtcbiAgY29sb3I6ICM2NjNjMDA7XG4gIGJvcmRlci1jb2xvcjogI2ZmZWNiNTtcbn1cblxuLm11aS1hbGVydC1lcnJvciB7XG4gIGJhY2tncm91bmQ6ICNmZGVjZWE7XG4gIGNvbG9yOiAjNjExYTE1O1xuICBib3JkZXItY29sb3I6ICNmNWMyYzc7XG59XG5cbi5tdWktYWxlcnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDEycHggNDBweCAxMnB4IDE2cHg7XG4gIG1hcmdpbjogMXJlbTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDEycHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4ubXVpLWFsZXJ0LWNsb3NlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogOHB4O1xuICB0b3A6IDhweDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBvcGFjaXR5OiAwLjY7XG59XG5cbi5tdWktYWxlcnQtY2xvc2U6aG92ZXIge1xuICBvcGFjaXR5OiAxO1xufVxuXG4ubm8tY2xhc3Mge1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xufVxuXG4vKiBTaXRzIGJlc2lkZSBhIGRvY3VtZW50J3MgbmFtZSB3aGlsZSBpdHMgZmlsZSBpcyBzdGlsbCBiZWluZyBhbmFseXNlZC4gVGhlIGFwcCdzIHNwaW5uZXIgaXNcbiAgIGNvbmZpZ3VyZWQgcGFnZS1zaXplZCwgc28gdGhpcyBib3ggZ2l2ZXMgdGhlIGlubGluZSBvbmUgc29tZXdoZXJlIGl0cyBvd24gc2l6ZSB0byBjZW50cmUgaW4gLVxuICAgc3Bpbi5qcyBwb3NpdGlvbnMgaXRzZWxmIGFnYWluc3QgdGhlIG5lYXJlc3QgcG9zaXRpb25lZCBhbmNlc3Rvci4gKi9cbi5pbmxpbmUtc3Bpbm5lciB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxNHB4O1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRtYXJnaW4tcmlnaHQ6IDZweDtcbn1cblxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU2VjdGlvbiBkaXZpZGVyXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKiBUaGUgcnVsZSB0aGF0IGJyZWFrcyBhIGxvbmcgY2xpbmljYWwgZm9ybSBpbnRvIHNlY3Rpb25zIC0gd2hhdCB0aGVcbi8qIHByb2dyZXNzIG5vdGUgaGFzIGFsd2F5cyBkcmF3biBpbmxpbmUuIEdpdmVuIGEgY2xhc3Mgc28gdGhlIHNwYWNpbmdcbi8qIGlzIGRlY2lkZWQgb25jZSwgYW5kIHNvIHRoZSBjb2xsYXBzZSBydWxlIGJlbG93IGNhbiBmaW5kIG9uZS5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnNlY3Rpb24tZGl2aWRlciB7XG5cdGJvcmRlcjogbm9uZTtcblx0Ym9yZGVyLXRvcDogMnB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0bWFyZ2luOiAyLjVlbSAwO1xufVxuXG4vKiBUaGUgYXV0b21hdGlvbiB0YXNrIGNhcnJpZXMgaXRzIG93biB0cmFpbGluZyBkaXZpZGVyLCBpbnNpZGUgdGhlIGd1YXJkIHRoYXRcbiAgIGRlY2lkZXMgd2hldGhlciBpdCByZW5kZXJzIGF0IGFsbCAtIGl0IGlzIGhpZGRlbiB3aGVuZXZlciB0aGUgcHJhY3RpY2UgaGFzIG5vXG4gICBhdXRvbWF0aW9uIHNldHRpbmcgZm9yIHRoYXQgbm90ZSB0eXBlLCB3aGljaCB0aGUgc3Vycm91bmRpbmcgdmlldyBoYXMgbm8gd2F5XG4gICBvZiBrbm93aW5nLiBXaGVyZSBhIHNlY3Rpb24gZGl2aWRlciBhbHJlYWR5IGZvbGxvd3MgaXQsIHRoYXQgd291bGQgZHJhdyB0d29cbiAgIHJ1bGVzIHdpdGggbm90aGluZyBiZXR3ZWVuIHRoZW0sIHNvIHRoZSBzdGFuZGluZyBvbmUgc3RhbmRzIGRvd24gZm9yIHRoZVxuICAgY29tcG9uZW50J3MuXG4gICA6aGFzKCkgaXMgd2hhdCBsZXRzIGEgc2libGluZyBhc2sgd2hldGhlciB0aGUgY29tcG9uZW50IGFjdHVhbGx5IGRyZXdcbiAgIGFueXRoaW5nOyBhbiBlbXB0eSA8YXV0b21hdGlvbi10YXNrPiBlbGVtZW50IGlzIGxlZnQgYmVoaW5kIGVpdGhlciB3YXkuIE9uIGFcbiAgIGJyb3dzZXIgd2l0aG91dCBpdCB0aGUgZmFsbGJhY2sgaXMgdGhlIGRvdWJsZSBydWxlIHdlIGhhZCBiZWZvcmUgLSBjb3NtZXRpYyxcbiAgIG5vdCBicm9rZW4uICovXG5hdXRvbWF0aW9uLXRhc2s6aGFzKC5wcmUtb3AtZm9ybSkgKyAuc2VjdGlvbi1kaXZpZGVyIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBDb3B5LXRvLXRoZS1vdGhlci1leWUgaWNvbiAoY29weS1leWUtaWNvbiBjb21wb25lbnQpXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jb3B5LWV5ZS1pY29uIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogMTlweDtcblx0aGVpZ2h0OiAyNHB4O1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRjb2xvcjogJGljb24tbGluZTtcbn1cbiIsImJ1dHRvbi5idG4ge1xuXHRib3JkZXItcmFkaXVzOiAyNHB4O1xufVxuXG4uYnRuLWRyb3Bkb3duLW11bHRpc2VsZWN0IHtcblx0aGVpZ2h0OiAzNHB4O1xuXHR0ZXh0LWFsaWduOiBzdGFydDtcblx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRjb2xvcjogJG5hdnk7XG5cdHBhZGRpbmc6IDRweCAxOHB4O1xuXHRmb250LXNpemU6IDEycHg7XG5cdHdpZHRoOiAxMDAlO1xuXHRtaW4td2lkdGg6IDE2ZW07XG5cdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cblx0Jjpob3Zlcixcblx0JjphY3RpdmUge1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJG5hdnkgbCgzNSUpKTtcblx0XHRvdXRsaW5lOiAwO1xuXHR9XG5cdCY6Zm9jdXMge1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRvdXRsaW5lOiAwO1xuXHR9XG5cdCY6aG92ZXI6Zm9jdXMge1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdH1cbn1cblxuLmJ0bi1uYXZ5IHtcblx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdGNvbG9yOiAkd2hpdGU7XG5cdHBhZGRpbmc6IDRweCAxOHB4O1xuXHRmb250LXNpemU6IDEycHg7XG5cdHdpZHRoOiAxMDAlO1xuXHRtYXgtd2lkdGg6IDIyMHB4O1xuXHR0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuXG5cdCY6aG92ZXIsXG5cdCY6YWN0aXZlIHtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRuYXZ5IGwoMzUlKSk7XG5cdFx0b3V0bGluZTogMDtcblx0fVxuXHQmOmZvY3VzIHtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdG91dGxpbmU6IDA7XG5cdH1cbn1cblxuLyogRm9yIGEgbmF2eSBidXR0b24gd2hvc2UgbGFiZWwgZG9lcyBub3QgZml0IHRoZSAyMjBweCBjYXAgYWJvdmUuIEJvb3RzdHJhcCdzIC5idG4gaXMgbm93cmFwLCBzbyBhblxuICAgb3ZlcnNpemVkIGxhYmVsIHJ1bnMgb3V0IHBhc3QgdGhlIGJ1dHRvbidzIGVkZ2UgcmF0aGVyIHRoYW4gd3JhcHBpbmcgaW5zaWRlIGl0LlxuXG4gICBTaXppbmcgdG8gdGhlIGNvbnRlbnQga2VlcHMgdGhlIGxhYmVsIHdob2xlIGFuZCB0aGUgYnV0dG9uIGFyb3VuZCBpdC4gbWluLXdpZHRoIGhvbGRzIHRoZSBmbG9vciBhdFxuICAgdGhlIDIyMHB4IGV2ZXJ5IG90aGVyIG5hdnkgYnV0dG9uIGdldHMsIHNvIGEgYnV0dG9uIHdob3NlIGxhYmVsIGNoYW5nZXMgYmV0d2VlbiBhIGxvbmcgYW5kIGEgc2hvcnRcbiAgIG9uZSAtIGFzIHRoZSBwYXRpZW50IHNhdmUgYnV0dG9uIGRvZXMgLSBkb2VzIG5vdCBzaHJpbmsgdG8gYSBzdHViIHdoZW4gdGhlIHNob3J0IG9uZSBpcyBzaG93aW5nLlxuICAgbWF4LXdpZHRoIGFuZCBub3JtYWwgd3JhcHBpbmcgYXJlIHRoZSBjZWlsaW5nOiBpZiB0aGUgbGFiZWwgb3IgdGhlIGZvbnQgZXZlciBvdXRncm93cyB0aGUgc3BhY2VcbiAgIGF2YWlsYWJsZSwgdGhlIGJ1dHRvbiBzdGF5cyBpbnNpZGUgaXRzIGNvbnRhaW5lciBhbmQgdGhlIHRleHQgd3JhcHMgd2l0aGluIGl0LiAqL1xuLmJ0bi5idG4tbmF2eS5idG4tZml0LWxhYmVsIHtcblx0d2lkdGg6IGF1dG87XG5cdG1pbi13aWR0aDogMjIwcHg7XG5cdG1heC13aWR0aDogMTAwJTtcblx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxuLmJ0bi1jYW5jZWwge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0Y29sb3I6ICR0ZXh0R3JleTtcblx0cGFkZGluZzogNHB4IDE4cHg7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Ym9yZGVyOiAxcHggc29saWQgJGNhbmNlbEJvcmRlcjtcblx0d2lkdGg6IDEwMCU7XG5cdG1heC13aWR0aDogMjIwcHg7XG5cdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cblx0Jjpob3Zlcixcblx0JjphY3RpdmUge1xuXHRcdGNvbG9yOiAkbG9nb3V0R3JleTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkd2hpdGUgbCg5MCUpKTtcblx0XHRvdXRsaW5lOiAwO1xuXHR9XG5cdCY6Zm9jdXMge1xuXHRcdG91dGxpbmU6IDA7XG5cdH1cbn1cblxuLmJ0bi1jeWFuIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRjb2xvcjogJGN5YW47XG5cdGJvcmRlcjogMXB4IHNvbGlkICRjeWFuO1xuXHRwYWRkaW5nOiA0cHggMThweDtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHR3aWR0aDogMTAwJTtcblx0bWF4LXdpZHRoOiAyMjBweDtcblx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7XG5cblx0Jjpob3Zlcixcblx0JjphY3RpdmUge1xuXHRcdGNvbG9yOiAkY3lhbjtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkd2hpdGUgbCgtOCUpKTtcblx0fVxuXHQmOmZvY3VzIHtcblx0XHRjb2xvcjogJGN5YW47XG5cdFx0b3V0bGluZTogMDtcblx0fVxufVxuXG4uYnRuLWN5YW4tc29saWQge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkY3lhbjtcblx0Y29sb3I6ICR3aGl0ZTtcblx0Ym9yZGVyOiAxcHggc29saWQgJGN5YW47XG5cdHBhZGRpbmc6IDRweCAxOHB4O1xuXHRmb250LXNpemU6IDEycHg7XG5cdHdpZHRoOiAxMDAlO1xuXHRtYXgtd2lkdGg6IDIyMHB4O1xuXHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTtcblxuXHQmOmhvdmVyLFxuXHQmOmFjdGl2ZSB7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkY3lhbiBsKC01JSkpO1xuXHR9XG5cdCY6Zm9jdXMge1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0b3V0bGluZTogMDtcblx0fVxufVxuXG4uYnRuLW1vcnBoLXdyYXAge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xuXG5cdC5idG4tbW9ycGgge1xuXHRcdHdpZHRoOiAyNzBweDtcblx0XHRtYXgtd2lkdGg6IDI3MHB4O1xuXHRcdHBhZGRpbmctbGVmdDogMTBweDtcblx0XHRwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuXHR9XG5cblx0Lm1vcnBoLXJlc3VsdCB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogNTAlO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRsZWZ0OiAyODBweDtcblx0XHR3aWR0aDogMTIwcHg7XG5cdH1cbn1cblxuI2Rvd25sb2FkLXJlZmVycmFsLWJ1dHRvbiB7XG5cdHdpZHRoOiAyNDBweDtcbn1cblxuLyogQ29udGFpbmVyIGZvciB0aGUgQUkgZWxlbWVudHMgKi9cbi5haS12ZXJpZmljYXRpb24tZ3JvdXAge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgLyogU2FtZSBoZWlnaHQgYXMgLmRpYWdub3Npcy1yb3ctYWN0aW9ucyBhbmQgcGlubmVkIHRvIHRoZSBsaW5lIHRvcCByYXRoZXIgdGhhbiB0aGUgdGV4dFxuICAgICAgIGJhc2VsaW5lLCBzbyB0aGUgYmFkZ2Ugc2l0cyBsZXZlbCB3aXRoIHRoZSBpbmZvL2VkaXQgaWNvbnMgYmVzaWRlIGl0LiAqL1xuICAgIGhlaWdodDogMS41ZW07XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuLyogU3VidGxlLCB0aGVtZS1tYXRjaGluZyBiYWRnZSAoU29mdCBjeWFuL2JsdWUgYmFja2dyb3VuZCwgTmF2eSB0ZXh0KSAqL1xuLmFpLWJhZGdlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRThGNEY4OyAvKiBtYXRjaGVzIGEgc29mdCB2ZXJzaW9uIG9mIHlvdXIgYmctY3lhbiAqL1xuICAgIGNvbG9yOiAjMUEyOTQyOyAvKiBtYXRjaGVzIHlvdXIgdGV4dC1kYXJrTmF2eSAqL1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDsgLyogcGlsbCBzaGFwZSAqL1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgTWVkaXVtJywgc2Fucy1zZXJpZjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjRDBFNEVBO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi8qIE1pbmltYWxpc3QgYmFzZSBzdHlsZSBmb3IgdGhlIGJ1dHRvbnMgKi9cbi5haS1idG4tYWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjRTBFMEUwO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG4gICAgY29sb3I6ICM4ODg7IC8qIFNvZnQgZ3JleSBieSBkZWZhdWx0ICovXG59XG5cbi8qIEhvdmVyIGVmZmVjdCBmb3IgQWNjZXB0OiBGaWxscyBpbiB3aXRoIHlvdXIgTmF2eSB0aGVtZSAqL1xuLmFpLWJ0bi1hY3Rpb24uYWNjZXB0OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMUEyOTQyOyBcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBib3JkZXItY29sb3I6ICMxQTI5NDI7XG59XG5cbi8qIEhvdmVyIGVmZmVjdCBmb3IgRGVjbGluZTogU2xpZ2h0bHkgZGFya2VyIGdyZXkgdG8gc2lnbmlmeSByZW1vdmFsIHdpdGhvdXQgc2NyZWFtaW5nIFwiREFOR0VSXCIgKi9cbi5haS1idG4tYWN0aW9uLmRlY2xpbmU6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGMEYwRjA7XG4gICAgY29sb3I6ICMzMzMzMzM7XG4gICAgYm9yZGVyLWNvbG9yOiAjQ0NDQ0NDO1xufVxuXG4vKiBJbmZvICsgZWRpdCBpY29ucyBhdCB0aGUgc3RhcnQgb2YgYSBkaWFnbm9zaXMgcm93LCBjZW50cmVkIG9uIHRoZSBmaXJzdCBsaW5lIG9mIGl0cyB0ZXh0ICovXG4uZGlhZ25vc2lzLXJvdy1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNXB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGhlaWdodDogMS41ZW07IC8qIGFib3V0IG9uZSBsaW5lIG9mIHJvdyB0ZXh0ICovXG5cbiAgICAuZmEtaW5mby1jaXJjbGUge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG59XG5cbi8qIEVkaXQgKHBlbmNpbCkgYnV0dG9uIG9uIGEgZGlhZ25vc2lzIHJvdyAtIGJhcmUgaWNvbiwgbm8gY2hyb21lICovXG4uZGlhZ25vc2lzLWVkaXQtYnRuIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBvcGFjaXR5OiAwLjc7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UtaW4tb3V0O1xuXG4gICAgaW1nIHtcbiAgICAgICAgd2lkdGg6IDE1cHg7XG4gICAgICAgIGhlaWdodDogMTVweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICBvcGFjaXR5OiAwLjM1O1xuICAgIH1cbn1cbiIsIm1haW4ge1xuXHRtaW4taGVpZ2h0OiAxMDB2aDtcblx0cGFkZGluZzogMDtcblx0bWFyZ2luOiAwO1xuXHRjb2xvcjogJHRleHRHcmV5O1xuXHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRuYXZ5LWJnLWdyYWRpZW50LWRhcmssICRuYXZ5LWJnLWdyYWRpZW50LWxpZ2h0KSwgdXJsKCdodHRwczovL2NhdHRyYXgtbWVkaWEuczMuYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbS9pbWFnZXMvc3VyZ2Vvbl9pbWFnZV9jcm9wcGVkMi5qcGcnKTtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xufVxuXG4ubmF2LXdyYXAtZmxleCB7XG5cdHBhZGRpbmc6IDIycHggMDtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0Z2FwOiAxcmVtO1xuXHR3aWR0aDogMTAwJTtcblxuXHQubmF2LWxvZ28td3JhcCB7XG5cdFx0aGVpZ2h0OiAxMjBweDtcblxuXHRcdGltZyB7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0fVxuXG5cdH1cblxuXHQubmF2LW5hdi13cmFwIHtcblx0XHRhbGlnbi1zZWxmOiBmbGV4LWVuZDtcblxuXHRcdHVsIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRwYWRkaW5nOiA1cHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkbGlnaHRHcmV5O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjVweDtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAxLjJweDtcblx0XHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cblx0XHRcdGxpIHtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMjRweDtcblx0XHRcdFx0cGFkZGluZzogMnB4IDEwcHg7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblxuXHRcdFx0XHRhIHtcblx0XHRcdFx0XHRjb2xvcjogJGN5YW47XG5cblx0XHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYuYWN0aXZlIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkY3lhbjtcblxuXHRcdFx0XHRcdGEge1xuXHRcdFx0XHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIENlbnRyZWQgdG9vOiB3aGVuIHRoZSBwYW5lbCBpcyBvbmx5IG9uZSByb3cgaXQgaXMgc2hvcnRlciB0aGFuIHRoZSBsb2dvLiAqL1xuXHQubmF2LXVzZXItd3JhcCB7XG5cdFx0YWxpZ24tc2VsZjogY2VudGVyO1xuXHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0dWwge1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDEuMXB4O1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0bGlzdC1zdHlsZS10eXBlOiBub25lO1xuXHRcdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXG5cdFx0XHRsaSB7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDI0cHg7XG5cdFx0XHRcdHBhZGRpbmc6IDBweCAxMHB4O1xuXHRcdFx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiBub3JtYWw7XG5cdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblx0XHRcdFx0PiBhIHtcblx0XHRcdFx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKiBDZW50cmVkIGFuZCBzcHJlYWQgYWNyb3NzIHRoZSBwYW5lbCwgYnV0IG5ldmVyIGZ1cnRoZXIgYXBhcnQgdGhhbiBhIGJ1dHRvbiBpcyB3aWRlOiBlYWNoIGJ1dHRvblxuXHRcdCAgIChhIG1pbmkgRkFCIGlzIDQwcHgpIHNpdHMgaW4gdGhlIG1pZGRsZSBvZiBhIGNlbGwgYXQgbW9zdCB0d2ljZSBpdHMgd2lkdGguICovXG5cdFx0Lm5hdi1mYWItcm93IHtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDZweDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDZweDtcblx0XHRcdC8qIFRoZSBkaXZpZGVyLCBkcmF3biBhcyBhIGJhY2tncm91bmQgc28gaXQgY2FuIGJlIG5hcnJvd2VyIHRoYW4gdGhlIHBhbmVsLiBOb3QgYSBwb3NpdGlvbmVkXG5cdFx0XHQgICBwc2V1ZG8tZWxlbWVudDogdGhlIGJhZGdlcyBoaWRlIHRoZW1zZWx2ZXMgd2hlbiB0aGVpciBidXR0b24ncyBvZmZzZXRUb3AgaXMgMC4gKi9cblx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgkdG9vbGJhckRpdmlkZXIsICR0b29sYmFyRGl2aWRlcikgbm8tcmVwZWF0IGNlbnRlciBib3R0b20gLyA4MCUgMXB4O1xuXG5cdFx0XHQ+IGxpIHtcblx0XHRcdFx0ZmxleDogMSAxIDA7XG5cdFx0XHRcdG1heC13aWR0aDogODBweDtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHR9XG5cblx0XHRcdC8qIE5vbmUgb2YgdGhlIHJvdW5kIGJ1dHRvbnMgYXQgdGhpcyBwcmFjdGljZTogbm8gcm93LCBhbmQgbm8gZGl2aWRlci4gKi9cblx0XHRcdCY6bm90KDpoYXMobGkpKSB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyogVGhlIHNlYXJjaCBib3ggdGFrZXMgd2hhdGV2ZXIgd2lkdGggdGhlIG90aGVyIGNvbnRyb2xzIGxlYXZlIGl0LiBUaGV5IGFyZSBzcGFjZWQgYnkgb25lIGV2ZW4gZ2FwXG5cdFx0ICAgcmF0aGVyIHRoYW4gcGFkZGluZyBvZiB0aGVpciBvd24sIHdoaWNoIGxlYXZlcyBpdCBhcyBtdWNoIGFzIHBvc3NpYmxlOyB0aGUgaWNvbnMgYXJlIG9uZSBpdGVtLFxuXHRcdCAgIGNsb3NlciB0b2dldGhlciBpbnNpZGUgaXQgKC5uYXYtaWNvbi1ncm91cCkuICovXG5cdFx0Lm5hdi1hY3Rpb24tcm93IHtcblx0XHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0XHRnYXA6IDE2cHg7XG5cdFx0XHQvKiBXaXRoIHRoZSBwYW5lbCdzIG93biA4cHgsIHRoZSByb3cncyBlbmRzIHNpdCBhcyBmYXIgaW4gYXMgdGhlIHBhbmVsJ3MgY29ybmVycyBhcmUgcm91bmRlZC4gKi9cblx0XHRcdHBhZGRpbmc6IDAgMTZweDtcblx0XHRcdC8qIEFzIHRhbGwgYXMgdGhlIHNlYXJjaCBmaWVsZCBtYWtlcyBpdCwgYWxzbyB3aXRoIG5vIHByYWN0aWNlIGNob3Nlbiwgd2hlbiBpdCBpc24ndCBzaG93bi4gKi9cblx0XHRcdG1pbi1oZWlnaHQ6IDIuNXJlbTtcblx0XHRcdC8qIE9uZSBsaW5lLCBuZXZlciB0d286IHNob3J0IG9mIHJvb20sIHRoZSBwcmFjdGljZSBhbmQgdXNlciBuYW1lcyBhcmUgY3V0IG9mZiBmaXJzdCwgdGhlbiB0aGVcblx0XHRcdCAgIHNlYXJjaCBib3ggbmFycm93cyB0byBpdHMgbWluaW11bS4gVGhlIGljb25zIGFuZCBMT0dPVVQgbmV2ZXIgc2hyaW5rLiAqL1xuXHRcdFx0ZmxleC13cmFwOiBub3dyYXA7XG5cblx0XHRcdD4gbGkge1xuXHRcdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdH1cblxuXHRcdFx0LyogVGhlIHR3byBuYW1lcyBncm93IGZyb20gbm90aGluZywgaW4gc3RlcCBhbmQgYWhlYWQgb2YgdGhlIHNlYXJjaCBib3ggKDEwIHRvIGl0cyAxKSwgZWFjaFxuXHRcdFx0ICAgc3RvcHBpbmcgYXQgaXRzIGZ1bGwgd2lkdGguIFNob3J0IG9mIHJvb20gdGhleSBhcmUgdGhlIHNhbWUgd2lkdGgsIHNvIGJvdGggYXJlIGN1dCBvZmYgYnlcblx0XHRcdCAgIHRoZSBzYW1lIGFtb3VudDsgZWFjaCBjZWxsJ3Mgb3duIGV4dHJhLCB0aGUgZHJvcGRvd24ncyBhcnJvdyBhbmQgdGhlIHBlcnNvbiBpY29uLCBpcyBhYm91dFxuXHRcdFx0ICAgdGhlIHNhbWUuICovXG5cdFx0XHQ+IC5uYXYtcHJhY3RpY2UtY2VsbCxcblx0XHRcdD4gLm5hdi11c2VyLWNlbGwge1xuXHRcdFx0XHRmbGV4OiAxMCAxIDA7XG5cdFx0XHRcdG1heC13aWR0aDogbWF4LWNvbnRlbnQ7XG5cdFx0XHRcdG1pbi13aWR0aDogNXJlbTtcblx0XHRcdH1cblxuXHRcdFx0LyogVGhlIHNlYXJjaCBib3ggYW5kIFBBVElFTlQgU0VBUkNILCBkcmF3biBhcyBvbmUgd2hpdGUgZmllbGQgd2l0aCB0aGUgYnV0dG9uIHNldCBpbnRvIGl0cyBlbmQuICovXG5cdFx0XHQ+IC5uYXYtc2VhcmNoLWNlbGwge1xuXHRcdFx0XHRmbGV4OiAxIDEgMjNyZW07XG5cdFx0XHRcdG1pbi13aWR0aDogMjByZW07XG5cdFx0XHRcdGhlaWdodDogMi41cmVtO1xuXHRcdFx0XHRwYWRkaW5nOiAwIDNweCAwIDA7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG5cdFx0XHRcdC8qIFdoaWxlIHR5cGluZyBpbiBpdDsgbm90IHdoZW4gUEFUSUVOVCBTRUFSQ0ggaXMgY2xpY2tlZCwgd2hpY2ggZm9jdXNlcyB0aGUgYnV0dG9uLiAqL1xuXHRcdFx0XHQmOmhhcygubmF2LXNlYXJjaC1pbnB1dDpmb2N1cykge1xuXHRcdFx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Lm5hdi1pbmxpbmUtaWNvbiB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdH1cblxuXHRcdFx0Lm5hdi11c2VyLW1lbnUge1xuXHRcdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIE5hdiBwYW5lbDogdGhlIHJvdW5kIGJ1dHRvbnMsIGEgZGl2aWRlciwgdGhlbiBzZWFyY2ggYW5kIHRoZSB1c2VyJ3MgY29udHJvbHNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5uYXYtbWVudSB7XG5cdHdpZHRoOiAxMDAlO1xuXHRwYWRkaW5nOiA2cHggOHB4O1xuXHRiYWNrZ3JvdW5kOiAkbGlnaHRHcmV5O1xuXHRib3JkZXItcmFkaXVzOiAyNHB4O1xuXG5cdC8qIE9ubHkgdGhlIHNlY29uZCByb3cgKG5vIHJvdW5kIGJ1dHRvbnMpOiBrZWVwIGl0IGFzIHRhbGwgYXMgd2hlbiB0aGVyZSBhcmUgc29tZSwgb3IgaXQgaXMgYSB0aGluXG5cdCAgIHN0cmlwIGJlc2lkZSB0aGUgbG9nby4gKi9cblx0Jjpub3QoOmhhcygubmF2LWZhYi1yb3cgbGkpKSB7XG5cdFx0cGFkZGluZzogOHB4O1xuXHR9XG59XG5cbi5uYXYtc2VhcmNoLWZvcm0ge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGZsZXg6IDEgMSBhdXRvO1xuXHRtaW4td2lkdGg6IDA7XG5cdGhlaWdodDogMTAwJTtcblx0bWFyZ2luOiAwO1xuXG5cdD4gaSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGxlZnQ6IDE0cHg7XG5cdFx0dG9wOiA1MCU7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdH1cbn1cblxuLyogQm9yZGVybGVzczogdGhlIGZpZWxkJ3Mgb3V0bGluZSBpcyBpdHMgY2VsbCdzICgubmF2LXNlYXJjaC1jZWxsKSwgd2hpY2ggYWxzbyBob2xkcyBQQVRJRU5UIFNFQVJDSC4gKi9cbi5uYXYtc2VhcmNoLWlucHV0IHtcblx0d2lkdGg6IDEwMCU7XG5cdGhlaWdodDogMTAwJTtcblx0cGFkZGluZzogMCAxMHB4IDAgMzRweDtcblx0Ym9yZGVyOiAwO1xuXHRib3JkZXItcmFkaXVzOiAyNHB4IDAgMCAyNHB4O1xuXHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0Y29sb3I6ICR0ZXh0R3JleTtcblx0Zm9udC1zaXplOiAxM3B4O1xuXHRsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxuXHQmOmZvY3VzIHtcblx0XHRvdXRsaW5lOiBub25lO1xuXHR9XG59XG5cbi8qIEhvbGRzIHRoZSByZWNlbnQtcGF0aWVudHMgcG9wb3ZlcidzIGFuY2hvciwgYW4gZW1wdHkgc3RyaXAgYWxvbmcgdGhlIGJ1dHRvbidzIGJvdHRvbSBlZGdlLCBzbyB0aGVcbiAgIHBvcG92ZXIgb3BlbnMgY2VudHJlZCB1bmRlciB0aGUgYnV0dG9uLiBOb3QgcG9zaXRpb25lZDogdGhlIHBvcG92ZXIgZ29lcyBpbiBoZXJlLCBhbmQgYSBwb3NpdGlvbmVkXG4gICB3cmFwIHdvdWxkIGJlIGl0cyBjb250YWluaW5nIGJsb2NrIGFuZCBzcXVlZXplIGl0IHRvIHRoZSBidXR0b24ncyB3aWR0aC4gKi9cbi5uYXYtc2VhcmNoLWJ0bi13cmFwIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0ZmxleDogMCAwIGF1dG87XG59XG5cbi5uYXYtc2VhcmNoLXBvcG92ZXItYW5jaG9yIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGhlaWdodDogMDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi8qIFNldCAzcHggaW5zaWRlIHRoZSBmaWVsZCdzIGJvcmRlcjogdGhlIGZpZWxkIGlzIDIuNXJlbSAoMzBweCksIGxlc3MgMXB4IG9mIGJvcmRlciBlYWNoIHNpZGUuIEEgcGFsZVxuICAgY2hpcCwgbGlrZSBMT0dPVVQsIHNvIHRoZSBmaWVsZCByZWFkcyBhcyBvbmUgY29udHJvbC4gSXQgc3RheXMgcGFsZTogYSBzdGVwIGRlZXBlciB1bmRlciB0aGUgcG9pbnRlclxuICAgYW5kIHdoaWxlIGl0cyByZWNlbnQgcGF0aWVudHMgYXJlIHNob3dpbmcgKC5pcy1vcGVuKSwgYW5kIGRlZXBlciBhZ2FpbiB3aGlsZSBwcmVzc2VkLiBOb3QgbmF2eSB3aGlsZVxuICAgdGhlIGZpZWxkIGhhcyBmb2N1cywgd2hpY2ggY2xpY2tpbmcgdGhlIGJ1dHRvbiBhbHNvIGdpdmVzIGl0LiAqL1xuLm5hdi1zZWFyY2gtYnRuIHtcblx0aGVpZ2h0OiBjYWxjKDIuNXJlbSAtIDhweCk7XG5cdHBhZGRpbmc6IDAgMTRweDtcblx0Ym9yZGVyOiAwO1xuXHRib3JkZXItcmFkaXVzOiAyNHB4O1xuXHRiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuXHRjb2xvcjogJG5hdnk7XG5cdGZvbnQtc2l6ZTogMTFweDtcblx0bGV0dGVyLXNwYWNpbmc6IDAuNnB4O1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2Utb3V0LCBjb2xvciAwLjE1cyBlYXNlLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLW91dDtcblxuXHQmOmhvdmVyLFxuXHQmLmlzLW9wZW4ge1xuXHRcdGJhY2tncm91bmQ6IGNvbG9yKCRuYXZ5LXBhbGUgbCgtNSUpKTtcblx0XHRib3gtc2hhZG93OiAwIDFweCAycHggY29sb3IoJG5hdnkgYSgyMiUpKTtcblx0fVxuXG5cdCY6YWN0aXZlIHtcblx0XHRiYWNrZ3JvdW5kOiBjb2xvcigkbmF2eS1wYWxlIGwoLTklKSk7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0fVxuXG5cdCY6Zm9jdXMge1xuXHRcdG91dGxpbmU6IG5vbmU7XG5cdH1cblxuXHQmOmZvY3VzLXZpc2libGUge1xuXHRcdG91dGxpbmU6IDJweCBzb2xpZCAkbmF2eTtcblx0XHRvdXRsaW5lLW9mZnNldDogMnB4O1xuXHR9XG5cblx0LyogU2hvd24gaW5zdGVhZCBvZiB0aGUgd29yZHMgb24gYSBuYXJyb3cgc2NyZWVuIChzZWUgbWF4LXdpZHRoOiA3MDBweCkuIFR3byBjbGFzc2VzOiBGb250IEF3ZXNvbWUnc1xuXHQgICAuZmEsIHdoaWNoIGxvYWRzIGFmdGVyIHRoaXMgZmlsZSwgd291bGQgc2hvdyBpdCBvdGhlcndpc2UuICovXG5cdC5uYXYtc2VhcmNoLWJ0bi1pY29uIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG59XG5cbi5uYXYtd3JhcC1yZXNwb25zaXZlIHtcblx0cGFkZGluZy1ib3R0b206IDFlbTtcbn1cblxuLyogTGV2ZWwgd2l0aCB0aGUgbWlkZGxlIG9mIHRoZSBuYXYgcGFuZWwsIGhvd2V2ZXIgbWFueSByb3dzIHRoZSBwYW5lbCBoYXMuICovXG4ubmF2LWJyYW5kLXdyYXAge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XG5cdGFsaWduLXNlbGY6IGNlbnRlcjtcblx0ZmxleDogMCAwIGF1dG87XG59XG5cbi5uYXYtYnJhbmQtbG9nbyB7XG5cdHdpZHRoOiAyMDBweDtcblx0bWF4LXdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IGF1dG87XG59XG5cbi5uYXYtbWluaS1mYWIge1xuXHRtYXJnaW46IDA7XG59XG5cbi8qIFRoZSByb3VuZCBidXR0b25zIGdyb3cgYSBsaXR0bGUgdW5kZXIgdGhlIHBvaW50ZXIuIEFuZ3VsYXIgTWF0ZXJpYWwgYWxyZWFkeSBhbmltYXRlcyBhIEZBQidzXG4gICB0cmFuc2Zvcm07IHRoaXMgcXVpY2tlbnMgaXQuIEl0cyAubWQtYnV0dG9uLm1kLWZhYiBsb2FkcyBhZnRlciB0aGlzIGZpbGUsIGhlbmNlIHRoZSB0aGlyZCBjbGFzcy4gKi9cbi5tZC1idXR0b24ubWQtZmFiLm5hdi1taW5pLWZhYiB7XG5cdC8qIEFuZ3VsYXIgTWF0ZXJpYWwgZ2l2ZXMgZXZlcnkgYnV0dG9uIDZweCA4cHg7IC5uYXYtbWluaS1mYWIncyBvd24gbWFyZ2luOiAwIGFib3ZlIGxvc2VzIHRvIGl0LiAqL1xuXHRtYXJnaW46IDA7XG5cdHRyYW5zaXRpb24tZHVyYXRpb246IDAuMTVzO1xuXHR0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XG5cblx0Jjpob3ZlciB7XG5cdFx0dHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuXHR9XG5cblx0QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0XHQmOmhvdmVyIHtcblx0XHRcdHRyYW5zZm9ybTogbm9uZTtcblx0XHR9XG5cdH1cbn1cblxuLm5hdi1pY29uLWltZyB7XG5cdHdpZHRoOiAyNHB4O1xuXHRoZWlnaHQ6IDI0cHg7XG5cdG9iamVjdC1maXQ6IGNvbnRhaW47XG59XG5cbi5uYXYtaWNvbi1pbWctd2lkZSB7XG5cdHdpZHRoOiAyNnB4O1xufVxuXG4ubmF2LWljb24taW1nLXNtYWxsIHtcblx0d2lkdGg6IDIwcHg7XG5cdGhlaWdodDogMjBweDtcbn1cblxuLm5hdi1wcmFjdGljZS1zZWxlY3Qge1xuXHRib3JkZXItd2lkdGg6IDA7XG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRtYXJnaW4tdG9wOiAwLjJlbTtcblx0bWF4LXdpZHRoOiAxNnJlbTtcblx0d2lkdGg6IDEwMCU7XG5cdC8qIE5hcnJvd3Mgd2l0aCBpdHMgY2VsbCB3aGVuIHRoZSByb3cgaXMgc2hvcnQgb2Ygcm9vbSAoLm5hdi1wcmFjdGljZS1jZWxsKSwgY3V0dGluZyB0aGUgbmFtZSBvZmYuICovXG5cdG1pbi13aWR0aDogMDtcblx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XG5cblx0LyogTm8gZm9jdXMgcmluZzogaXQgc3RheXMgZm9jdXNlZCBhZnRlciBhIHByYWN0aWNlIGlzIHBpY2tlZCwgYW5kIHRoZSByaW5nIGRyZXcgYSBib3ggcm91bmQgaXQuICovXG5cdCY6Zm9jdXMge1xuXHRcdG91dGxpbmU6IG5vbmU7XG5cdH1cbn1cblxuLyogVGhlIG5hbWUgYW5kIGl0cyBpY29uIGNlbnRyZWQgaW4gdGhlaXIgYm94LCBsZXZlbCB3aXRoIHRoZSBpY29ucyBiZXNpZGUgdGhlbS4gVGhlIHRleHQgb3RoZXJ3aXNlXG4gICBzaXRzIGF0IHRoZSB0b3Agb2YgdGhlIGJveCwgYW5kIC5sb2NrIGxpZnRzIHRoZSBpY29uIDJweC4gKi9cbi5uYXYtdXNlci1tZW51IHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtcblxuXHQubG9jayB7XG5cdFx0ZmxleDogbm9uZTtcblx0XHRib3R0b206IDA7XG5cdH1cbn1cblxuLyogVGhlIHVzZXIncyBuYW1lIGlzIGN1dCBvZmYgd2l0aCBhbiBlbGxpcHNpcyB3aGVuIHRoZSByb3cgaXMgc2hvcnQgb2Ygcm9vbSAoLm5hdi11c2VyLWNlbGwpLiBUaGVcbiAgIGhvdmVyIHdyYXBwZXIgYmV0d2VlbiB0aGUgY2VsbCBhbmQgdGhlIG1lbnUgaGFzIHRvIGJlIGFsbG93ZWQgdG8gc2hyaW5rIHRvby4gKi9cbi5uYXYtdXNlci1jZWxsID4gc3BhbiB7XG5cdG1pbi13aWR0aDogMDtcbn1cblxuLm5hdi11c2VyLW5hbWUge1xuXHRtaW4td2lkdGg6IDA7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4ubmF2LWljb24tZ3JvdXAge1xuXHRnYXA6IDhweDtcbn1cblxuLm5hdi1pbmxpbmUtaWNvbiB7XG5cdG1pbi13aWR0aDogMThweDtcblx0bWluLWhlaWdodDogMThweDtcblx0aGVpZ2h0OiAxOHB4O1xuXHR3aWR0aDogMThweDtcblx0bWFyZ2luLXJpZ2h0OiAxcmVtO1xufVxuXG4ucmVjZW50LXBhdGllbnRzLXBvcG92ZXIge1xuXHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXHRiYWNrZ3JvdW5kOiAkd2hpdGU7XG59XG5cbi5wb3BvdmVyLWNvbnRhaW5lci5yZWNlbnQtcGF0aWVudHMtbGF5b3V0IHtcblx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0Z2FwOiAxLjI1cmVtO1xuXHRwYWRkaW5nOiAxLjI1cmVtIDEuMXJlbTtcblx0bWluLXdpZHRoOiAzNHJlbTtcblx0bWF4LXdpZHRoOiA0NHJlbTtcbn1cblxuLnJlY2VudC1wYXRpZW50cy1saXN0LXBhbmVsIHtcblx0ZmxleDogMSAxIGF1dG87XG5cdG1pbi13aWR0aDogMDtcbn1cblxuLnJlY2VudC1wYXRpZW50cy1saXN0LXdyYXAge1xuXHRwYWRkaW5nLXRvcDogMC4yNXJlbTtcblx0cGFkZGluZy1ib3R0b206IDAuMjVyZW07XG5cdG1heC1oZWlnaHQ6IDY0dmg7XG5cdG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5yZWNlbnQtcGF0aWVudHMtZGF0ZS1ncm91cCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRsaXN0LXN0eWxlOiBub25lO1xuXHRtYXJnaW46IDAgMCAwLjVyZW07XG5cdHBhZGRpbmc6IDA7XG59XG5cbi5yZWNlbnQtcGF0aWVudHMtZGF0ZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRmb250LXNpemU6IDE0cHg7XG5cdGxpbmUtaGVpZ2h0OiAxLjI7XG5cdGNvbG9yOiAkdGV4dEdyZXk7XG5cdG1hcmdpbi1ib3R0b206IDAuMnJlbTtcbn1cblxuLnJlY2VudC1wYXRpZW50cy1pdGVtLXJvdyB7XG5cdGRpc3BsYXk6IGdyaWQ7XG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0bztcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiAwLjVyZW07XG5cdG1hcmdpbi1ib3R0b206IDAuMTVyZW07XG5cdHdpZHRoOiAxMDAlO1xufVxuXG4ucmVjZW50LXBhdGllbnRzLW5hbWUtY29sIHtcblx0bWluLXdpZHRoOiAwO1xufVxuXG4ucmVjZW50LXBhdGllbnRzLWFjdGlvbi1jb2wge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4ucmVjZW50LXBhdGllbnRzLWxpbmsge1xuXHRkaXNwbGF5OiBibG9jaztcblx0Zm9udC1zaXplOiAxNHB4O1xuXHRsaW5lLWhlaWdodDogMS4yO1xuXHRjb2xvcjogIzE3MzhlNTtcblx0bWF4LXdpZHRoOiAyNHJlbTtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cblx0Jjpob3ZlciB7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdGNvbG9yOiAjMTczOGU1O1xuXHR9XG59XG5cbi5yZWNlbnQtcGF0aWVudHMtcG9wb3ZlciAucmVjZW50LXBhdGllbnRzLWxpbmsge1xuXHRjb2xvcjogIzE3MzhlNSAhaW1wb3J0YW50O1xufVxuXG4ucmVjZW50LXBhdGllbnRzLXRhc2stYWN0aW9uIHtcblx0bWFyZ2luLWxlZnQ6IDAuNWVtO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdGZsZXg6IDAgMCBhdXRvO1xufVxuXG4ucmVjZW50LXBhdGllbnRzLXRhc2staWNvbiB7XG5cdHdpZHRoOiAxNnB4O1xuXHRoZWlnaHQ6IDE2cHg7XG59XG5cbi5yZWNlbnQtcGF0aWVudHMtc3RhcnJlZC1wYW5lbCB7XG5cdGZsZXg6IDAgMCAxMXJlbTtcblx0cGFkZGluZy10b3A6IDIuMTVyZW07XG5cdHBhZGRpbmctbGVmdDogMC41cmVtO1xufVxuXG4ucmVjZW50LXBhdGllbnRzLXN0YXJyZWQtbGlzdCxcbi5yZWNlbnQtcGF0aWVudHMtc3RhcnJlZC1saXN0LXdyYXAge1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG59XG5cbi5yZWNlbnQtcGF0aWVudHMtc3RhcnJlZC1pdGVtIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcbn1cblxuLnJlY2VudC1wYXRpZW50cy1zdGFycmVkLXJvdyB7XG5cdGRpc3BsYXk6IGdyaWQ7XG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0bztcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiAwLjM1cmVtO1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLnJlY2VudC1wYXRpZW50cy1zdGFycmVkLWljb24ge1xuXHR3aWR0aDogMThweDtcblx0aGVpZ2h0OiAxOHB4O1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdGZsZXg6IDAgMCBhdXRvO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcblx0LnBvcG92ZXItY29udGFpbmVyLnJlY2VudC1wYXRpZW50cy1sYXlvdXQge1xuXHRcdG1pbi13aWR0aDogMjZyZW07XG5cdFx0bWF4LXdpZHRoOiAzNnJlbTtcblx0XHRwYWRkaW5nOiAxcmVtIDAuOXJlbTtcblx0fVxuXG5cdC5yZWNlbnQtcGF0aWVudHMtZGF0ZSB7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHR9XG5cblx0LnJlY2VudC1wYXRpZW50cy1saW5rIHtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0bWF4LXdpZHRoOiAxNy41cmVtO1xuXHR9XG5cblx0LnJlY2VudC1wYXRpZW50cy1zdGFycmVkLXBhbmVsIHtcblx0XHRmbGV4LWJhc2lzOiA5LjVyZW07XG5cdFx0cGFkZGluZy10b3A6IDEuNnJlbTtcblx0fVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcblx0LnBvcG92ZXItY29udGFpbmVyLnJlY2VudC1wYXRpZW50cy1sYXlvdXQge1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRtYXgtd2lkdGg6IDkydnc7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDAuNzVyZW07XG5cdH1cblxuXHQucmVjZW50LXBhdGllbnRzLWRhdGUge1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0fVxuXG5cdC5yZWNlbnQtcGF0aWVudHMtbGluayB7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdG1heC13aWR0aDogODB2dztcblx0fVxuXG5cdC5yZWNlbnQtcGF0aWVudHMtc3RhcnJlZC1wYW5lbCB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0cGFkZGluZy10b3A6IDAuNHJlbTtcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuXHQubmF2LXdyYXAtZmxleCB7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHR9XG5cblx0Lm5hdi13cmFwLWZsZXggLm5hdi11c2VyLXdyYXAge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cblx0Lm5hdi13cmFwLWZsZXggLm5hdi11c2VyLXdyYXAgLm5hdi1hY3Rpb24tcm93IHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG5cdC5uYXYtd3JhcC1mbGV4IHtcblx0XHRwYWRkaW5nOiAyMHB4IDA7XG5cdH1cblxuXHQubmF2LWJyYW5kLWxvZ28ge1xuXHRcdHdpZHRoOiAxNzBweDtcblx0fVxuXG5cdC5uYXYtbWVudSB7XG5cdFx0cGFkZGluZzogNnB4IDEwcHg7XG5cdH1cblxuXHQubmF2LXdyYXAtZmxleCAubmF2LXVzZXItd3JhcCAubmF2LWFjdGlvbi1yb3cge1xuXHRcdGdhcDogMTJweDtcblx0fVxuXG5cdC5uYXYtd3JhcC1mbGV4IC5uYXYtdXNlci13cmFwIHVsIGxpIHtcblx0XHRwYWRkaW5nOiAwIDhweDtcblx0fVxuXG5cdC5uYXYtcHJhY3RpY2Utc2VsZWN0IHtcblx0XHRtYXgtd2lkdGg6IDEycmVtO1xuXHR9XG59XG5cbi8qIFRvbyBuYXJyb3cgZm9yIHRoZSBzZWNvbmQgcm93IHdpdGggUEFUSUVOVCBTRUFSQ0ggc3BlbGxlZCBvdXQsIGV2ZW4gd2l0aCB0aGUgbmFtZXMgY3V0IHJpZ2h0IGRvd246XG4gICB0aGUgYnV0dG9uIGtlZXBzIG9ubHkgaXRzIG1hZ25pZmllciwgdGhlIGJveCBkcm9wcyBpdHMgb3duLCBhbmQgdGhlIGJveCBtYXkgbmFycm93IGZ1cnRoZXIuICovXG5AbWVkaWEgKG1heC13aWR0aDogNzAwcHgpIHtcblx0Lm5hdi1zZWFyY2gtYnRuIHtcblx0XHRwYWRkaW5nOiAwIDEwcHg7XG5cblx0XHQubmF2LXNlYXJjaC1idG4tbGFiZWwge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQubmF2LXNlYXJjaC1idG4taWNvbiB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0fVxuXHR9XG5cblx0Lm5hdi1zZWFyY2gtZm9ybSA+IGkge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQubmF2LXNlYXJjaC1pbnB1dCB7XG5cdFx0cGFkZGluZy1sZWZ0OiAxNHB4O1xuXHR9XG5cblx0Lm5hdi13cmFwLWZsZXggLm5hdi11c2VyLXdyYXAgLm5hdi1hY3Rpb24tcm93ID4gLm5hdi1zZWFyY2gtY2VsbCB7XG5cdFx0bWluLXdpZHRoOiA4cmVtO1xuXHR9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuXHQubmF2LW1lbnUge1xuXHRcdGJvcmRlci1yYWRpdXM6IDE2cHg7XG5cdH1cblxuXHQubmF2LXdyYXAtZmxleCAubmF2LXVzZXItd3JhcCB1bCBsaSB7XG5cdFx0cGFkZGluZzogMCA2cHg7XG5cdH1cblxuXHQubmF2LWlubGluZS1pY29uIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDAuNnJlbTtcblx0fVxuXG5cdC5uYXYtcHJhY3RpY2Utc2VsZWN0IHtcblx0XHRtYXgtd2lkdGg6IDEwcmVtO1xuXHR9XG59XG5cbi5wYXRpZW50LWhlYWRlciB7XG5cdC5uYXYtbmF2LXdyYXAgdWwgbGkgYSB7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAjMDAwMENEO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0fVxuXG5cdH1cbn1cblxuLmJ0bi1sb2dvdXQge1xuXHRoZWlnaHQ6IDIwcHg7XG5cdHBhZGRpbmc6IDBweCAxMnB4O1xuXHRmb250LXNpemU6IDEycHg7XG5cdGNvbG9yOiAkdGV4dEdyZXk7XG59XG5cbnAuYnRuLWxvZ291dCB7XG5cdG1hcmdpbi1ib3R0b206IDA7XG5cdHBhZGRpbmctbGVmdDogMDtcblx0cGFkZGluZy10b3A6IDJweDtcblx0dmVydGljYWwtYWxpZ246IGNlbnRlcjtcblx0Y29sb3I6ICR0ZXh0R3JleTtcbn1cblxuLmxvY2sge1xuXHRoZWlnaHQ6IDEycHg7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0Ym90dG9tOiAycHg7XG5cdG1hcmdpbi1sZWZ0OiAxMHB4O1xufVxuXG4ubm8tcGFkLWxlZnQge1xuXHRwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbn1cblxuLmNvbnN1bHQtdGltZXItYm94IHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuXHRnYXA6ICRmb250LXNpemUtYmFzZTtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRyaWdodDogJGZvbnQtc2l6ZS1iYXNlO1xufVxuXG4udGltZXItYm94IHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1jb2xvcjogJHdoaXRlLXRwLTIwO1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItcmFkaXVzOiA0cHg7XG5cdHBhZGRpbmctbGVmdDogMC41cmVtO1xuXHRwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG5cdHBhZGRpbmctdG9wOiAwLjI1cmVtO1xuXHRwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiAkZm9udC1zaXplLWJhc2U7XG5cdG1pbi13aWR0aDogMTByZW07XG5cdGJhY2tncm91bmQ6ICR3aGl0ZS10cC0wNTtcbn0iLCIuY29udGFpbmVyLXdlbGNvbWUge1xuXHRiYWNrZ3JvdW5kOiAkd2hpdGU7XG5cdG1pbi1oZWlnaHQ6IDEwMCU7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlci1yYWRpdXM6IDFyZW07XG5cblx0LndlbGNvbWUtd3JhcCB7XG5cdFx0cGFkZGluZzogNzBweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMzBweDtcblx0XHQuaDEge1xuXHRcdFx0Zm9udC1zaXplOiA1MHB4O1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHR9XG5cdFx0LndlbGNvbWUtcXVlc3Rpb24ge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHR9XG5cdFx0c2VsZWN0LmZvcm0tY29udHJvbCB7XG5cdFx0XHR3aWR0aDogNDAwcHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAxOHB4O1xuXHRcdFx0LyogYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDE4cHg7XG5cdFx0XHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAxOHB4OyAqL1xuXHRcdH1cblx0fVxufVxuXG4uY29udGFpbmVyLXdlbGNvbWUtZm9vdGVyIHtcblx0cGFkZGluZzogMDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2Y4ZmFmZjsgLyogT2ZmLXdoaXRlIGJhY2tncm91bmQgKi9cblx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNlMGU2ZWQ7IC8qIExpZ2h0IGJvcmRlciBmb3Igc2VwYXJhdGlvbiAqL1xufVxuXG5cdC5jb250YWluZXItd2VsY29tZS1mb290ZXIgLmZvb3Rlci13cmFwIHtcblx0XHRwYWRkaW5nOiAxLjVyZW0gNSU7XG5cdH1cblxuXHRcdC5jb250YWluZXItd2VsY29tZS1mb290ZXIgLmZvb3Rlci13cmFwIHVsIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0Z2FwOiA0cmVtO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdFx0LmNvbnRhaW5lci13ZWxjb21lLWZvb3RlciAuZm9vdGVyLXdyYXAgdWwgbGkge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR9XG5cblx0XHRcdC8qIEFwcGx5aW5nIHRoZSBuYXZ5IGNvbG9yIHRvIHRoZSBsaW5rcyAqL1xuXHRcdFx0LmNvbnRhaW5lci13ZWxjb21lLWZvb3RlciAuZm9vdGVyLXdyYXAgdWwgYSB7XG5cdFx0XHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0XHR0cmFuc2l0aW9uOiB0ZXh0LWRlY29yYXRpb24gMC4ycyBlYXNlO1xuXHRcdFx0fVxuXG5cdFx0XHRcdC8qIEFkZGluZyBhIHNpbXBsZSBob3ZlciBlZmZlY3QgKi9cblx0XHRcdFx0LmNvbnRhaW5lci13ZWxjb21lLWZvb3RlciAuZm9vdGVyLXdyYXAgdWwgYTpob3ZlciB7XG5cdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHRcdH1cblxuaWZyYW1lIHtcblx0Lypib3JkZXI6M3B4IHNvbGlkICNkZGQ7Ki9cblx0Ym94LXNoYWRvdzogMCAwIDNweCAwcHggcmdiYSgwLDAsMCwwLjMpO1xuXHRtYXJnaW46IDAgYXV0bztcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5jbG9zZS1idG4ge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHJpZ2h0OiAxZW07XG5cdHRvcDogMC41ZW07XG5cdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRib3JkZXI6IG5vbmU7XG5cdGZvbnQtc2l6ZTogMS4yZW07XG5cdGNvbG9yOiBpbmhlcml0O1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQXBwb2ludG1lbnQgbGlzdCBkb3dubG9hZHMgKGNhbGVuZGFyIGRheSBoZWFkZXIpXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uYXBwb2ludG1lbnQtbGlzdC1kb3dubG9hZHMge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiAwLjc1cmVtO1xuXHRtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcblxuXHRhIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdHdpZHRoOiAxNnB4O1xuXHRcdGhlaWdodDogMTZweDtcblx0XHRsaW5lLWhlaWdodDogMTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHRpIHtcblx0XHRmb250LXNpemU6IDE1cHg7XG5cdH1cblxuXHRpbWcge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG59XG4iLCIuY29udGFpbmVyLXJlZmVyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRwYWRkaW5nOiAxMHB4O1xuXHQvKnBhZGRpbmctYm90dG9tOiAyMHB4OyovXG5cdG1hcmdpbi1ib3R0b206IDIwcHg7XG5cdGJvcmRlci1yYWRpdXM6IDFyZW07XG59XG5cbi50by10b3Age1xuXHRwb3NpdGlvbjpmaXhlZDtcblx0Ym90dG9tOiA0ZW07XG5cdHJpZ2h0OiA0ZW07XG5cdC8qIHBhZGRpbmc6IDVweDsgKi9cblx0LyogYm9yZGVyOiAxcHggc29saWQgI2NjYzsgKi9cblx0LyogYmFja2dyb3VuZDogcmVkOyAqL1xuXHQvKiBjb2xvcjogd2hpdGU7ICovXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC8qIGRpc3BsYXk6IG5vbmU7ICovXG4gIH1cblxuLmNvbnRhaW5lci1kYXNoYm9hcmQge1xuXHRAZXh0ZW5kIC5jb250YWluZXItcmVmZXI7XG5cdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0Ym9yZGVyLXJhZGl1czogMXJlbTtcbn1cblxuLnJlZmVyLW5hdiB7XG5cdGhlaWdodDogMTAwcHg7XG5cdGJhY2tncm91bmQtY29sb3I6ICRwYWdlQmFja0dyb3VuZDtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi52aWV3LXdyYXAge1xuXHRwYWRkaW5nOiAyNXB4O1xuXHRwYWRkaW5nLXRvcDogMDtcbn1cblxuaHIuc3VidGl0bGUtbGluZS1icmVhayB7XG5cdGJvcmRlci10b3AtY29sb3I6ICRsaW5lQnJlYWs7XG59XG5cbmhyLmN5YW4ge1xuXHRib3JkZXItdG9wLWNvbG9yOiAkY3lhbjtcblx0Ym9yZGVyLXRvcC13aWR0aDogMXB4O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEltcGFjdCBvbiBsaWZlIHJldmlldyAoYW5zd2VycyBzdGlsbCBpbnNpZGUgdGhlIHZhbGlkaXR5IHdpbmRvdylcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmltcGFjdC1yZXZpZXcge1xuXHQuaW1wYWN0LXJldmlldy1hbnN3ZXJzIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXgtd2lkdGg6IDcwMHB4O1xuXG5cdFx0dGQge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdHBhZGRpbmc6IDEwcHggMDtcblx0XHR9XG5cblx0XHQuaW1wYWN0LXJldmlldy1xdWVzdGlvbiB7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuXHRcdH1cblxuXHRcdC5pbXBhY3QtcmV2aWV3LWFuc3dlciB7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXHR9XG5cblx0LmltcGFjdC1yZXZpZXctYWN0aW9ucyB7XG5cdFx0YnV0dG9uIHtcblx0XHRcdHdpZHRoOiAxODBweDtcblx0XHR9XG5cblx0XHRidXR0b246Zmlyc3QtY2hpbGQge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHRcdH1cblx0fVxufVxuXG5cbi5yZWZlci1uYXYtYW5pbWF0aW9uIHtcblx0aGVpZ2h0OiAxMDBweDtcblx0YmFja2dyb3VuZC1jb2xvcjogJHBhZ2VCYWNrR3JvdW5kO1xuXHQvKmJhY2tncm91bmQtY29sb3I6ICNFQkVDRUE7Ki9cblx0LypiYWNrZ3JvdW5kLWNvbG9yOiBwaW5rOyovXG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHQvKmFsaWduLWl0ZW1zOiBjZW50ZXI7Ki9cblxuXHQud29yZC13cmFwcGVyIHtcblx0XHQvKmJhY2tncm91bmQ6IGxpZ2h0Ymx1ZTsqL1xuXHRcdHBhZGRpbmc6IDAgMTQwcHg7XG5cdFx0cGFkZGluZzogMCAxMDBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdFx0cCB7bWFyZ2luLWJvdHRvbTogMDt9XG5cdFx0bWFyZ2luLWJvdHRvbTogNXB4O1xuXHR9XG5cblx0LmFuaW1hdGlvbi1vdXR0ZXItd3JhcHBlciB7XG5cdFx0bWFyZ2luOiAwIDE0MHB4O1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGhlaWdodDogNnB4O1xuXHRcdGJhY2tncm91bmQ6ICNEMkQzRDU7XG5cblxuXHRcdC5wcm9nIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHotaW5kZXg6IDI7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogYXV0bztcblx0XHR9XG5cblx0XHQuaW5kaWNhdG9yIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgJG5hdnkgMCUsICRuYXZ5IDkwJSwgJGN5YW4gOTglLCAkY3lhbiAxMDAlKTtcblx0XHRcdGhlaWdodDogNnB4OyBcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0bGVmdDowO1xuXHRcdFx0dG9wOjA7XG5cdFx0XHR0cmFuc2l0aW9uOiBhbGwgMS41cyBlYXNlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcblx0XHRcdC8qYm9yZGVyLXJhZGl1czogNTAlOyovXG5cdFx0XHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTBweCAxMHB4O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDEwcHggMTBweDtcblx0XHR9XG5cblx0XHQuaW5kaWNhdG9yLnNlYXJjaCB7dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC05NSUpICFpbXBvcnRhbnQ7IH1cblx0XHQuaW5kaWNhdG9yLmV4YW1pbmF0aW9uIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7fVxuXHRcdC5pbmRpY2F0b3IuaW1wYWN0LFxuXHRcdC5pbmRpY2F0b3IuY29tcGxldGUge1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcblx0XHRcdGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwcHggMHB4O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDBweCAwcHg7XHRcblx0XHR9XG5cdH1cblxuXG59IiwiLnNlYXJjaC13cmFwIHtcbn1cblxuLnNlYXJjaC1mb3JtIHtcblx0cGFkZGluZy10b3A6IDEwcHg7XG5cdC8qIHBhZGRpbmctYm90dG9tOiAxMHB4OyAqL1xuXHQuZm9ybS1ncm91cCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRmb250LXNpemU6IDEycHggIWltcG9ydGFudDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRcdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLCAwIDAgOHB4IHJnYmEoMTAyLDE3NSwyMzMsLjYpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRsYWJlbCB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdFx0fVxuXHR9XG5cblx0LmZvcm0tZ3JvdXAtbGFzdE5hbWUge1xuXHRcdGlucHV0IHtcblx0XHRcdHdpZHRoOiAyNTBweDtcblx0XHR9XG5cdH1cblxuXHQuZm9ybS1ncm91cC1ET0Ige1xuXHRcdC8qIG1hcmdpbi1sZWZ0OiA1MHB4OyAqL1xuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0d2lkdGg6IDgwcHg7XG5cblx0XHRcdCY6bnRoLWNoaWxkKDMpIHtcblx0XHRcdFx0bWFyZ2luOiAwIDNweDtcblx0XHRcdH1cblx0XHR9XG5cdFx0LyogbWFyZ2luLWJvdHRvbTogMXJlbTsgKi9cblx0fVxuXHQuZm9ybS1ncm91cC1idXR0b25zIHtcblx0XHQvKnBvc2l0aW9uOiByZWxhdGl2ZTsqL1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR0b3A6IC0xMHB4O1xuXHRcdGJ1dHRvbjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHRcdH1cblx0fVxuXHQuZm9ybS1ncm91cC1zZWFyY2gtYnV0dG9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDRyZW07XG5cdH1cbn1cblxuLnNlYXJjaC1yZXN1bHRzIHtcblx0dGFibGUge1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0dHIge1xuXHRcdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXG5cdFx0XHR0aCB7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi5zZWFyY2gtcmVzdWx0cy12MiB7XG5cdHRhYmxlIHtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdHRyIHtcblx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0fVxuXG5cdFx0XHR0aCB7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi50YWJsZS1zdHJpcGVkID4gdGJvZHkgPiB0cjpudGgtb2YtdHlwZShldmVuKSB7XG5cdC8qIGJhY2tncm91bmQtY29sb3I6ICRwYWxlQmx1ZTsgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xufVxuXG4udGFibGUtc3RyaXBlZCA+IHRib2R5ID4gdHI6bnRoLW9mLXR5cGUob2RkKSB7XG5cdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbn1cblxuLnRhYmxlLWJsdWUtc3RyaXBlZCA+IHRib2R5ID4gdHI6bnRoLW9mLXR5cGUoZXZlbikge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG59XG5cbi50YWJsZS1ibHVlLXN0cmlwZWQgPiB0Ym9keSA+IHRyOm50aC1vZi10eXBlKG9kZCkge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG59XG5cbi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblxuXHR0ZCB7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0fVxufVxuXG4udGFibGUtbm8tYm9yZGVyIHtcblx0Ym9yZGVyLXdpZHRoOiAwcHg7XG5cdGJvcmRlci10b3Atd2lkdGg6IDAuMWVtO1xuXHRib3JkZXItdG9wLWNvbG9yOiAkbmF2eTtcblx0dGgge1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgSGVhdnknO1xuXHR9XG59XG5cbi50YWJsZS1uby1ib3JkZXIgPiB0Ym9keSA+IHRyW2Rpc2FibGVkXSB0ZCB7XG5cdGZpbHRlcjogYmx1cigxcHgpO1xuXHRwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuXG4uZmlsdGVyLWRyb3Bkb3duIHtcblx0Y29sb3I6ICRuYXZ5O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLmZpbHRlci1zZWxlY3Qge1xuXHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRib3gtc2hhZG93OiBub25lO1xuXHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdC8vIGNvbG9yOiAkdGV4dEdyZXk7XG5cdGNvbG9yOiAkbmF2eTtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHRib3JkZXI6IDFweCBzb2xpZCAkbmF2eTtcbn1cblxuLnNlYXJjaC1sYWJlbCB7XG5cdGNvbG9yOiAkbmF2eSAhaW1wb3J0YW50O1xufVxuXG4ub3ItbGluZSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdG1hcmdpbi10b3A6IC0xcmVtO1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLm9yLXNlcGVyYXRvciB7XG5cdHdpZHRoOiAxMDAlO1xuXHRtYXJnaW4tdG9wOiAtNXB4O1xuXHRtYXJnaW4tYm90dG9tOiAwcHg7XG5cdGJvcmRlci1jb2xvcjogJG5hdnk7XG59XG5cbi5hZGRyZXNzLWljb24ge1xuXHR3aWR0aDogMnJlbTsgXG5cdGhlaWdodDogMnJlbTtcblx0bWFyZ2luLXRvcDogLTAuNXJlbTtcbn1cblxuLnNjb3JlX3RleHQge1xuXHRjb2xvcjogJG5hdnk7XG5cdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBMaWdodCBJdGFsaWMnO1xufVxuXG4uZmxleC1jb2x1bW4tbGF5b3V0IHtcblx0ZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRnYXA6IDAuNXJlbTtcbn1cblxuLmxhc3RuYW1lLWlucHV0IHtcblx0d2lkdGg6IDI1MHB4ICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMXJlbTtcbn1cblxuLmZsZXgtcm93LWxheW91dCB7XG5cdGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0Z2FwOiAwLjVyZW07XG5cdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbn1cblxuLmh5cGVyLWxpbmsge1xuXHRjb2xvcjogJG5hdnk7XG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdG1hcmdpbi1sZWZ0OiAxcmVtO1xufVxuXG4uaGlnaGxpZ2h0LXJvdyB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRjb2xvcjogd2hpdGU7XG5cdGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xuXG5cdC8qIE5hdnkgb24gdGhlIG5hdnkgaGlnaGxpZ2h0IG90aGVyd2lzZS4gKi9cblx0LnNjb3JlX3RleHQge1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdH1cbn1cblxuLm5vcm1hbC1yb3cge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcblx0Y29sb3I6ICRuYXZ5O1xuXHRjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbn0iLCIubW9kYWwtYmFja2Ryb3AuYW0tZmFkZSB7XG5cdGJhY2tncm91bmQ6ICRuYXZ5LWJhY2tkcm9wO1xuXHRiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG5cdC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuXHRvcGFjaXR5OiAxO1xuXHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcblxuXHQmLm5nLWVudGVyIHtcblx0XHRvcGFjaXR5OiAwO1xuXG5cdFx0Ji5uZy1lbnRlci1hY3RpdmUge1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHR9XG5cblx0fVxuXG5cdCYubmctbGVhdmUge1xuXHRcdG9wYWNpdHk6IDE7XG5cblx0XHQmLm5nLWxlYXZlLWFjdGl2ZSB7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdH1cblxuXHR9XG59XG5cbi5tb2RhbC1kaWFsb2cge1xuXHRib3JkZXI6IDA7XG5cblx0Lm1vZGFsLWNvbnRlbnQge1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRvdXRsaW5lOiBub25lO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXhsO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRib3gtc2hhZG93OiAkYmxhY2stdHAtNDA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHQuZGlzbWlzcyB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR6LWluZGV4OiAxMDtcblx0XHRcdHRvcDogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdFx0cmlnaHQ6ICRmb250LXNpemUtYmFzZTtcblx0XHRcdGZvbnQtc2l6ZTogMi4ycmVtO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1saWdodDtcblx0XHRcdGNvbG9yOiAkdGV4dC1jbG9zZS1idG47XG5cdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0b3BhY2l0eTogMC43O1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0dHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG5cdFx0XHR9XG5cblx0XHR9XG5cdH1cblxuXHQmLm1vZGFsLWNlbnRlciB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDUwJTtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cdH1cblxufVxuXG4ubXktbW9kYWwtaGVhZGVyIHtcblx0cGFkZGluZzogMS41cmVtIDJyZW07XG5cdGJhY2tncm91bmQtY29sb3I6ICRncmV5LW1vZGFsLWhlYWRlcjtcblx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbn1cblxuLm15LW1vZGFsLWJvZHkge1xuXHRwYWRkaW5nOiAyLjVyZW0gMnJlbTtcbn1cblxuLyogTGV0cyB0aGUgZGF0ZXBpY2tlciBwb3AtdXAgZXh0ZW5kIHBhc3QgdGhlIG1vZGFsIGVkZ2UuIC5tb2RhbC1jb250ZW50IG5vcm1hbGx5IGNsaXBzIGl0c1xuICAgY2hpbGRyZW4gdG8gaXRzIHJvdW5kZWQgY29ybmVycywgc28gdGhlIGhlYWRlciBhbmQgZm9vdGVyIHJvdW5kIHRoZWlyIG93biBvdXRlciBjb3JuZXJzIGhlcmUuICovXG4uZGlhZ25vc2lzLW1vZGFsLWNvbnRlbnQge1xuXHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuXG5cdC5teS1tb2RhbC1oZWFkZXIge1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXhsICRib3JkZXItcmFkaXVzLXhsIDAgMDtcblx0fVxuXG5cdC5teS1tb2RhbC1mb290ZXIge1xuXHRcdGJvcmRlci1yYWRpdXM6IDAgMCAkYm9yZGVyLXJhZGl1cy14bCAkYm9yZGVyLXJhZGl1cy14bDtcblx0fVxufVxuXG4vKiBUaGUgZGF0ZS1vZi1vbnNldCBpbnB1dCBpcyByZWFkb25seSBvbmx5IHNvIHRoZSBkYXRlcGlja2VyIG93bnMgaXRzIHZhbHVlOyBCb290c3RyYXAgZ3JleXNcbiAgIHJlYWRvbmx5IGlucHV0cyBhcyBpZiBkaXNhYmxlZCwgd2hpY2ggcmVhZHMgYXMgXCJub3QgZWRpdGFibGVcIi4gS2VlcCBpdCBsb29raW5nIGxpa2UgYSBmaWVsZC4gKi9cbi5kaWFnbm9zaXMtZWRpdC1mb3JtIHtcblx0LmZvcm0tY29udHJvbFtyZWFkb25seV0ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdH1cblxuXHQvKiBTYXZlLCB3aXRoIHRoZSBiaW4gYmVzaWRlIGl0LCBvbiB0aGUgcmlnaHQgLSBDYW5jZWwgc3RheXMgb24gdGhlIGxlZnQgYXMgaW4gZXZlcnkgbW9kYWwgZm9vdGVyLiAqL1xuXHQuZGlhZ25vc2lzLWVkaXQtZm9vdGVyLWVuZCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0fVxuXG5cdC8qIFJlbW92ZTogYSBzbWFsbCByZWQgYmluIHRvIHRoZSByaWdodCBvZiBTYXZlLCB0aGUgc2FtZSBoZWlnaHQuIEl0IGFza3MgaW4gcGxhY2UuICovXG5cdC5teS1tb2RhbC1mb290ZXIgLmJ0bi5idG4tcmVtb3ZlLWRpYWdub3NpcyB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0YWxpZ24tc2VsZjogc3RyZXRjaDtcblx0XHRwYWRkaW5nOiA0cHggMTBweDtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6YWN0aXZlLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGRhbmdlcjtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRvdXRsaW5lOiAwO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBxdWVzdGlvbiBvbiB0aGUgbGVmdCwgdGhlIGFuc3dlcnMgdG9nZXRoZXIgb24gdGhlIHJpZ2h0IC0gd3JhcHBpbmcgYXMgYSBwYWlyIGlmIG5hcnJvdy4gKi9cblx0LmNvbmZpcm0tcmVtb3ZlLWRpYWdub3NpcyB7XG5cdFx0ZmxleDogMTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTBweDtcblx0XHRjb2xvcjogJGRhbmdlcjtcblxuXHRcdC5jb25maXJtLXJlbW92ZS1kaWFnbm9zaXMtdGV4dCBpIHtcblx0XHRcdG1hcmdpbi1yaWdodDogNHB4O1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHR9XG5cdH1cblxuXHQuY29uZmlybS1yZW1vdmUtZGlhZ25vc2lzLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0fVxuXG5cdC5teS1tb2RhbC1mb290ZXIgLmNvbmZpcm0tcmVtb3ZlLWRpYWdub3NpcyAuYnRuIHtcblx0XHR3aWR0aDogYXV0bztcblx0XHRwYWRkaW5nOiA0cHggMThweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQubXktbW9kYWwtZm9vdGVyIC5idG4uYnRuLWNvbmZpcm0tcmVtb3ZlLWRpYWdub3NpcyB7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZGFuZ2VyO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cblx0XHQmOmRpc2FibGVkIHtcblx0XHRcdG9wYWNpdHk6IDAuNjtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgZm9vdGVyIHN3YXBzIGl0cyBidXR0b25zIHdpdGggbmctaWYsIGFuZCBuZ0FuaW1hdGUgaG9sZHMgYSBsZWF2aW5nIGVsZW1lbnQgb24gc2NyZWVuIGZvciBhc1xuXHQgICBsb25nIGFzIGl0cyBDU1MgdHJhbnNpdGlvbiBydW5zIC0gc28gZm9yIGEgbW9tZW50IGJvdGggc2V0cyB3b3VsZCBzaG93LiAhaW1wb3J0YW50IHRvIGJlYXQgLmJ0bidzIG93bi4gKi9cblx0Lm15LW1vZGFsLWZvb3RlciAubmctZW50ZXIsXG5cdC5teS1tb2RhbC1mb290ZXIgLm5nLWxlYXZlIHtcblx0XHR0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLm15LW1vZGFsLWZvb3RlciB7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdHBhZGRpbmc6IDMwcHggMzBweDtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cblx0LmJ0biB7XG5cdFx0d2lkdGg6IDE4MHB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHR9XG5cbn1cblxuLm15LW1vZGFsLWZvb3Rlci0tcmlnaHQge1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXG5cdC5idG4gKyAuYnRuIHtcblx0XHRtYXJnaW4tbGVmdDogJGZvbnQtc2l6ZS1iYXNlO1xuXHR9XG5cbn1cblxuLm15LW1vZGFsLWZvb3Rlci0tY2VudGVyIHtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cblx0LmJ0biB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiAyMjBweDtcblx0fVxuXG59XG5cbi5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuXHRib3JkZXItY29sb3I6ICRjeWFuO1xuXHRvdXRsaW5lOiAwO1xuXHRib3gtc2hhZG93OiAwIDAgMCAzcHggJGN5YW4tdHAtMjU7XG59XG5cbi5vdmVycmlkZS1tb2RhbCB7XG5cdC5mb3JtLWNvbnRyb2wge1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHR9XG5cblx0LmFkZGl0aW9uYWwtbWVzc2FnZSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0Lm1lc3NhZ2Uge1xuXHRcdFx0cGFkZGluZzogMTBweDtcblx0XHR9XG5cblx0XHQuY291bnQtcmVtYWluaW5nIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGZvbnQtc2l6ZTogMC43NXJlbTtcblx0XHRcdGJvdHRvbTogNXB4O1xuXHRcdFx0cmlnaHQ6IDhweDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0fVxuXG5cdC5zZWxlY3Qtb3ZlcnJpZGUsXG5cdC5tZXNzYWdlIHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcblx0fVxuXG59XG5cbi50YWJsZS1kZXRhaWxzIHtcblx0d2lkdGg6IDEwMCU7XG5cdG1heC13aWR0aDogNjAwcHg7XG5cdGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cblx0dGQge1xuXHRcdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdHBhZGRpbmc6IDAuNXJlbTtcblxuXHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0d2lkdGg6IDQwJTtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0cGFkZGluZy1yaWdodDogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdH1cblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHR3aWR0aDogNjAlO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHR9XG5cblx0fVxufVxuXG4uZG91YmxlLWxpbmUtaGVhZGVyIHtcblx0cGFkZGluZzogJGZvbnQtc2l6ZS1iYXNlIDA7XG5cdGhlaWdodDogYXV0bztcblx0bWluLWhlaWdodDogODBweDtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGdhcDogMC4yNXJlbTtcbn1cblxuLmljb24td3JhcC1zdWNjZXNzIHtcblx0aGVpZ2h0OiAxMDBweDtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRtYXJnaW4tYm90dG9tOiAkZm9udC1zaXplLWJhc2U7XG5cblx0aW1nIHtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdH1cblxufVxuXG4ubGltaXQtd2lkdGgge1xuXHRtYXgtd2lkdGg6IDQ1MHB4O1xuXHRtYXJnaW46IDAgYXV0bztcbn1cblxuLmxpbWl0LXdpZHRoLXdpZGUge1xuXHRtYXgtd2lkdGg6IDY1MHB4O1xuXHRtYXJnaW46IDAgYXV0bztcbn1cblxuLmZvcm0tZ3JvdXAtb3ZlcnJpZGUtc2VsZWN0IHtcblx0bWFyZ2luOiAwIGF1dG87XG5cdG1heC13aWR0aDogNzAwcHg7XG59XG5cbi5oZWxwLW1vZGFsIHtcblx0LnN1YnRpdGxlLWxpbmUtYnJlYWsge1xuXHRcdG1hcmdpbjogMTBweCAwO1xuXHR9XG5cblx0LnEtaGVhZGVyLWZsZXgge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblx0XHQuaDUge1xuXHRcdFx0bWF4LXdpZHRoOiA4NSU7XG5cdFx0fVxuXG5cdFx0LnEtaWNvbi13cmFwIHtcblx0XHRcdGhlaWdodDogMzVweDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRcdGltZyB7XG5cdFx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdH1cblxuXHRcdH1cblx0fVxufVxuXG4ucS1pY29uLXdyYXAge1xuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xufVxuXG4ucm90YXRlIHtcblx0dHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbn1cblxuLnEtYm9keS13cmFwIHtcblx0ZGlzcGxheTogbm9uZTtcblx0cGFkZGluZy1yaWdodDogNjBweDtcblx0Y29sb3I6ICR0ZXh0LW11dGVkO1xufVxuXG4ubXktbW9kYWwtYm9keS1oZWxwIHtcblx0bWF4LXdpZHRoOiA4MDBweDtcblx0bWFyZ2luOiAwIGF1dG87XG59XG5cbi50YWJsZS1jb250YWN0IHtcblx0bWFyZ2luLWJvdHRvbTogMDtcblxuXHR0ZCB7XG5cdFx0Ym9yZGVyOiAwICFpbXBvcnRhbnQ7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdHBhZGRpbmc6IDNweCAwICFpbXBvcnRhbnQ7XG5cblx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdHdpZHRoOiAxMjNweDtcblx0XHR9XG5cblx0fVxufVxuXG4uY29udGFjdC1uYW1lIHtcblx0bWFyZ2luLXRvcDogMjBweDtcblx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcbn1cblxuLm1vcnBoLW1vZGFsIHtcblx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdC5mb3JtLWNvbnRyb2wge1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXG5cdFx0b3B0aW9uIHtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdH1cblxuXHR9XG5cblx0LmxlbnMtd3JhcCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogNXB4O1xuXG5cdFx0aW1nIHtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0fVxuXG5cdH1cblxuXHQubGVucy13cmFwLTEge1xuXHRcdG1hcmdpbi10b3A6IDIwcHg7XG5cdH1cblxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcblx0Lm1vZGFsLWxnLW1vcnBoIHtcblx0XHR3aWR0aDogOTg0cHg7XG5cdH1cbn1cblxuLnJlZmVycmFsLXJhZGlvLXdyYXAge1xuXHRtYXJnaW4tdG9wOiAxNXB4O1xuXG5cdC5yYWRpby1pbmxpbmUgLm1hcmtlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGxlZnQ6IC0zcHg7XG5cdFx0dG9wOiAwcHg7XG5cdH1cblxuXHQuZm9ybS1ncm91cCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0fVxuXG5cdGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG5cdFx0bWFyZ2luLXRvcDogMXB4O1xuXHR9XG5cblx0LmhlbHAtYmxvY2sge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDEwcHg7XG5cdH1cblxufVxuXG4vKiBMZWF2aW5nIHRoZSBwYXRpZW50IGRhc2hib2FyZCBtaWQtdHJhbnNjcmlwdGlvbjogdHdvIGNob2ljZXMsIGNlbnRyZWQgc2lkZSBieSBzaWRlLiAqL1xuLmxlYXZlLXRyYW5zY3JpcHRpb24tbW9kYWwgLm15LW1vZGFsLWZvb3RlciB7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRnYXA6IDE1cHg7XG59XG5cbi5ub3RpZmljYXRpb24tYm9keSB7XG5cdG1heC13aWR0aDogNDUwcHg7XG5cdG1hcmdpbjogMCBhdXRvO1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdHVsIHtcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0bGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG5cdFx0PiBsaSA+IHVsIHtcblx0XHRcdHBhZGRpbmctbGVmdDogNDBweDtcblx0XHR9XG5cblx0fVxuXG5cdGxpIHtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHR9XG5cbn1cblxuLmhpZGRlbiB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5mbGV4LWRvdWJsZS1yb3dzIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRwYWRkaW5nLXRvcDogMWVtICFpbXBvcnRhbnQ7XG5cdGJvcmRlci10b3Atd2lkdGg6IDBweCAhaW1wb3J0YW50O1xufVxuXG4ucGhhcm1hY3ktb3B0aW9uIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLnBoYXJtYWN5LXRpdGxlIHtcblx0cGFkZGluZy10b3A6IDAuMWVtO1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcbn1cblxuLnBoYXJtYWN5LWFkZHJlc3Mge1xuXHRwYWRkaW5nLXRvcDogMC4xZW07XG5cdHBhZGRpbmctYm90dG9tOiAwLjFlbTtcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuXHRjb2xvcjogJHRleHQtbXV0ZWQ7XG59XG5cbi5tZC1kaWFsb2ctY3VzdG9tZXItY29udGFpbmVyIHtcblx0Ym9yZGVyOiBub25lO1xuXHRvdXRsaW5lOiBub25lO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy14bDtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRjb2xvcjogJHRleHQtZGFyaztcblx0Ym94LXNoYWRvdzogJGJsYWNrLXRwLTQwO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXG5cdC5kaWFsb2ctdG9vbGJhciB7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0LyogY2VudGVyIGFsbCBpdGVtcyAqL1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0fVxuXG5cdC5kaWFsb2ctdGl0bGUge1xuXHRcdGZsZXg6IG5vbmU7XG5cdFx0LyogcHJldmVudCBzdHJldGNoaW5nICovXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuXHR9XG5cblx0LmRpYWxvZy1zdWJ0aXRsZSB7XG5cdFx0ZmxleDogbm9uZTtcblx0XHRmb250LXNpemU6IDEycHQ7XG5cdFx0LyogcHJldmVudCBzdHJldGNoaW5nICovXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0dG9wOiAyLjVyZW07XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuXHR9XG5cblx0LmRpYWxvZy10b29sYmFyIG1kLWJ1dHRvbiB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHJpZ2h0OiAwO1xuXHR9XG5cblxuXHQuZGlzbWlzcyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHotaW5kZXg6IDEwO1xuXHRcdHRvcDogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdHJpZ2h0OiAkZm9udC1zaXplLWJhc2U7XG5cdFx0Zm9udC1zaXplOiAyLjJyZW07XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1saWdodDtcblx0XHRjb2xvcjogJHRleHQtY2xvc2UtYnRuO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdG9wYWNpdHk6IDAuNztcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdFx0dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuXHRcdH1cblxuXHR9XG59XG5cbi5tZC1kaWFsb2ctY3VzdG9tZXItY29udGFpbmVyIC5kaWFsb2ctdGl0bGUge1xuICAgIGNvbG9yOiAjMGEyNTQwICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxLjY1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIE5ISSBzdWdnZXN0ZWQgcGF0aWVudHMgZGlhbG9nIChtb2RhbC5zZWxlY3QtcGF0aWVudC12Milcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLm5oaS1zZWxlY3QtZGlhbG9nIHtcblx0bWluLXdpZHRoOiA4MCU7XG5cdC8qIEl0cyBoZWlnaHQgb3RoZXJ3aXNlIGZvbGxvd3MgdGhlIHRhYmxlLCBzbyBhIHNlYXJjaCB3aXRoIG9uZSBvciB0d28gcmVzdWx0cyBsZWZ0IHRoZSByZWNvcmRcblx0ICAgcHJldmlldyBhIGZldyBodW5kcmVkIHBpeGVscyB0YWxsLiAqL1xuXHRtaW4taGVpZ2h0OiBtaW4oNjQwcHgsIDgwdmgpO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXG5cdC8qIFRoZSByZWNvcmQgcHJldmlldyBzbGlkZXMgb3ZlciB0aGUgdGFibGUgYW5kIGlzIG9ubHkgYXMgdGFsbCBhcyB0aGUgZGlhbG9nOiBpdHMgZGV0YWlscyBzY3JvbGwsXG5cdCAgIGFuZCBpdHMgU0VMRUNUIGJ1dHRvbiBzdGF5cyBpbiB2aWV3IGJlbG93IHRoZW0uICovXG5cdG1kLXNpZGVuYXYge1xuXHRcdG1pbi13aWR0aDogNjAlO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXG5cdFx0bWQtY29udGVudCB7XG5cdFx0XHRmbGV4OiAxIDEgYXV0bztcblx0XHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHRcdH1cblx0fVxuXG5cdC5uaGktcHJldmlldy10aXRsZSB7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxufVxuIiwiLnJlZ2lzdGVyLWVkaXQtZm9ybSB7XG5cdC5jb2wtc20tMyB7XG5cdFx0cGFkZGluZy1yaWdodDogMDtcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdH1cblx0bGFiZWwuY29udHJvbC1sYWJlbCB7XG5cdFx0cGFkZGluZy10b3A6IDhweDtcblx0fVxuXHQuZm9ybS1jb250cm9sIHtcblx0XHRmb250LXNpemU6MTJweCAhaW1wb3J0YW50O1xuXHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0fVxuXHQuZG9iLWdyb3VwIHtcblx0XHRkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdHdpZHRoOiAzMSU7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHRcdHNwYW4uaGVscC1ibG9jayB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDEwMCU7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblxuXG5cdFx0LmZvcm0tY29udHJvbDpudGgtY2hpbGQoMikge1xuXHRcdFx0LyptYXJnaW46IDAgMTVweDsqL1xuXHRcdH1cblx0fVxuXHQucmFkaW8taW5saW5lIHtcblx0XHR3aWR0aDogODBweDtcblx0XHQvKnRleHQtYWxpZ246IGNlbnRlcjsqL1xuXHRcdGlucHV0IHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdC8qcmlnaHQ6IDEwcHg7Ki9cblx0XHR9XG5cdFx0Lm1hcmtlciB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRsZWZ0OiA3cHg7XG5cdFx0XHR0b3A6IC0xcHg7XG5cdFx0fVxuXHR9XG5cdC5ldGhuaWNpdHktZ3JvdXAge1xuXG5cdH1cbn1cblxuLnJlZ2lzdGVyLWVkaXQtZm9ybS12MiB7XG5cdC5jb2wtc20tMyB7XG5cdFx0cGFkZGluZy1yaWdodDogMDtcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdH1cblx0bGFiZWwuY29udHJvbC1sYWJlbCB7XG5cdFx0cGFkZGluZy10b3A6IDhweDtcblx0fVxuXHQuZm9ybS1jb250cm9sIHtcblx0XHRmb250LXNpemU6MTJweCAhaW1wb3J0YW50O1xuXHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0fVxuXHQuZG9iLWdyb3VwIHtcblx0XHRkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG5cdFx0LyogZmxleC1kaXJlY3Rpb246IHJvdzsgKi9cblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdHdpZHRoOiAzMSU7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHRcdHNwYW4uaGVscC1ibG9jayB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRtYXJnaW4tdG9wOiAzZW07XG5cdFx0fVxuXHRcdC5mb3JtLWNvbnRyb2w6bnRoLWNoaWxkKDIpIHtcblx0XHRcdC8qbWFyZ2luOiAwIDE1cHg7Ki9cblx0XHR9XG5cdH1cblx0LnJhZGlvLWlubGluZSB7XG5cdFx0d2lkdGg6IDgwcHg7XG5cdFx0Lyp0ZXh0LWFsaWduOiBjZW50ZXI7Ki9cblx0XHRpbnB1dCB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHQvKnJpZ2h0OiAxMHB4OyovXG5cdFx0fVxuXHRcdC5tYXJrZXIge1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0bGVmdDogN3B4O1xuXHRcdFx0dG9wOiAtMXB4O1xuXHRcdH1cblx0fVxuXHQuZXRobmljaXR5LWdyb3VwIHtcblxuXHR9XG59XG5cbi5hbmltYXRlLXNob3ctaGlkZS5uZy1oaWRlIHtcblx0b3BhY2l0eTogMDtcbn1cblxuLmFuaW1hdGUtc2hvdy1oaWRlLm5nLWhpZGUtYWRkLFxuLmFuaW1hdGUtc2hvdy1oaWRlLm5nLWhpZGUtcmVtb3ZlIHtcblx0dHJhbnNpdGlvbjogYWxsIGVhc2UgMC4zcztcbn1cblxuLmFuaW1hdGUtbWUge1xuXHRvcGFjaXR5OiAxO1xufVxuXG4uY2hlY2tib3gtaW5saW5lIHtcblx0bWluLXdpZHRoOiAyNSVcbn1cblxuLmZvcm0tZ3JvdXAtZXRobmljaXR5IHtcblx0bWFyZ2luLWJvdHRvbTogOXB4O1xuXG5cdGxhYmVsLmNoZWNrYm94LWlubGluZTpmaXJzdC1jaGlsZCB7XG5cdFx0bWFyZ2luLWxlZnQ6IDEwcHg7XG5cdH1cblx0bGFiZWwuY2hlY2tib3gtaW5saW5lIHtcblx0XHRzcGFuLm1hcmtlciB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRib3R0b206LTJweDtcblx0XHR9XG5cdH1cblxuXHQuY2hlY2tib3gtaW5saW5lLW90aGVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0bGVmdDogLTRweDtcblx0fVxuXG5cdC5jb2wtc20tOSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR9XG5cblx0c3Bhbi5oZWxwLWJsb2NrIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOjEwMCU7XG5cdH1cbn1cblxuLypHb29nbGUgUGxhY2VzIEFQSSB0byBicmluZyBhdXRvY29tcGxldGUgaGlnaGVyIHotaW5kZXggdGhhbiBib290c3RyYXAgbW9kYWwqL1xuLnBhYy1jb250YWluZXIge3otaW5kZXg6IDEwMDAwICFpbXBvcnRhbnQ7fVxuXG4uZm9ybS1pbXBhY3Qge1xuXHQuZm9ybS1ncm91cCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMjVweDtcblx0fVxuXG5cdGxhYmVsLmNvbnRyb2wtbGFiZWwge1xuXHRcdHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdFx0QGV4dGVuZCAudGV4dC10ZXh0R3JleTtcblxuXHRcdC5xdWVzdGlvbi1tYXJrIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdGhlaWdodDogMjBweDtcblx0XHRcdGJvdHRvbToycHg7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdFx0XHRpbWcge1xuXHRcdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRcdG92ZXJmbG93OmhpZGRlbjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0LnJhZGlvLWZsZXgtd3JhcCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cblx0XHQucmFkaW8taW5saW5lIHtcblx0XHRcdHdpZHRoOiA4MHB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0XHQubWFya2VyIHtcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHR0b3A6MnB4O1xuXHRcdFx0XHRAZXh0ZW5kIC5mb250LWJvbGQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdFxuXHQuY29udHJvbC1sYWJlbC1sZWZ0IHtwYWRkaW5nLXJpZ2h0OiAwO31cblxuXHQuZm9ybS1ncm91cC1oZWFkZXIge1xuXHRcdC5yYWRpby1mbGV4LXdyYXAge1xuXG5cdFx0XHQucmFkaW8taW5saW5lIHtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0XHRcdHBhZGRpbmctcmlnaHQ6IDA7XG5cdFx0XHRcdHdpZHRoOiA4MHB4O1xuXHRcdFx0XHRAZXh0ZW5kIC50ZXh0LXRleHRHcmV5O1xuXHRcdFx0XHRAZXh0ZW5kIC5mb250LW1lZGl1bTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0XG59XG4ubGlmZS1xdWFsaXR5IHtcblx0LmZvcm0tZ3JvdXAuaGFzLWVycm9yIHtcblx0XHRvdXRsaW5lOiAxcHggc29saWQgJGRhbmdlcjtcblx0XHRwYWRkaW5nLXRvcDogMTZweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTZweDtcblx0XHQucmFkaW8tZmxleC13cmFwIHtcblx0XHRcdC8qcGFkZGluZy1ib3R0b206IDZweDsqL1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdFx0LmhlbHAtYmxvY2sge1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHRvcDogMjQwJTtcblx0XHRcdFx0LyogYm90dG9tOiAtNDVweDsgKi9cblx0XHRcdFx0bGVmdDogODAlO1xuXHRcdFx0XHQvKiB3aWR0aDogMTAwJTtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyOyAqL1xuXHRcdFx0fVxuXG5cdFx0fVxuXHR9XG59XG4uZm9ybS1mb290ZXIge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHQuc3VibWl0LXdyYXAtZmxleCB7XG5cdFx0cGFkZGluZzogMjBweCAzMHB4IDIwcHggNTBweDtcblx0XHRib3JkZXItcmFkaXVzOiA1MHB4O1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0XHQvKmJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgyNzBkZWcsICRwdXJwbGUsICRuYXZ5KSAhaW1wb3J0YW50OyovXG5cdFx0ZGlzcGxheTogZmxleDtcblxuXHRcdC5ub3RlLXdyYXAge1xuXHRcdFx0d2lkdGg6IDQwMHB4O1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHRcdFx0cCB7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0JjpmaXJzdC1jaGlsZCB7bWFyZ2luLWJvdHRvbTogMTBweDt9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC5idXR0b24td3JhcCB7XG5cdFx0XHR3aWR0aDogMjAwcHg7XG5cdFx0XHRhbGlnbi1zZWxmOiBjZW50ZXI7XG5cdFx0fVxuXHR9XG5cblx0LnNob3dpbmctd2FybmluZyB7XG5cdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDI3MGRlZywgJHB1cnBsZSwgJG5hdnkpICFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLmZvcm0tbG9naW4ge1xuXHR3aWR0aDogMjgwcHg7XG5cdHBhZGRpbmctdG9wOiAxNXB4O1xuXHRcblx0LmZvcm0tZ3JvdXAge1xuXHRcdG1hcmdpbi1ib3R0b206IDMwcHg7XG5cblx0XHRpbnB1dCB7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyNHB4O1xuXHRcdH1cblx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTVweDtcblx0XHR9XG5cdH1cblx0YnV0dG9uIHtmb250LXNpemU6IDEycHg7fVxuXG5cdC5idG4tbG9naW4ge1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdHdpZHRoOiAzNCU7XG5cdFx0cGFkZGluZzogNnB4IDE4cHg7XG5cdH1cblx0LmJ0bi1sb3N0IHtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdGZsb2F0OiByaWdodDtcblx0XHR3aWR0aDogNjAlO1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjFzIGxpbmVhcjtcblxuXHRcdCY6aG92ZXIsXG5cdFx0JjphY3RpdmUge1xuXHRcdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cdH1cbn1cblxuXG5mb3JtW25hbWU9c2VhcmNoXSB7XG5cdHNwYW4uaGVscC1ibG9jayB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxufVxuXG4uaGFzLXN1Y2Nlc3MgLmZvcm0tY29udHJvbCB7XG5cdGJvcmRlci1jb2xvcjogJGN5YW47XG5cdCY6Zm9jdXMge1xuXHRcdGJvcmRlci1jb2xvcjogJGN5YW47XG5cdFx0Ym94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksIDAgMCA0cHggJGN5YW47XG5cdH1cbn1cblxuLmhhcy1lcnJvciAuZm9ybS1jb250cm9sIHtcblx0Ym9yZGVyLWNvbG9yOiAkZGFuZ2VyO1xuXHQmOmZvY3VzIHtcblx0XHRib3JkZXItY29sb3I6ICRkYW5nZXI7XG5cdH1cbn1cblxuZm9ybVtuYW1lPWxvZ2luRm9ybV0ge1xuXHQuaGVscC1ibG9jayB7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdHBhZGRpbmctbGVmdDogMTNweDtcblx0fVxufVxuXG5sYWJlbCB7XG5cdGNvbG9yOiAkdGV4dEdyZXkgIWltcG9ydGFudDtcbn1cblxuZm9ybVtuYW1lPXNldFBhc3N3b3JkXSB7XG5cdC5mb3JtLWNvbnRyb2wge1xuXHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdH1cblx0LmhlbHAtYmxvY2sge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0fVxufVxuXG5mb3JtW25hbWU9Zm9ybUltcGFjdF0ge1xuXHQuZm9ybS1ncm91cC5oYXMtZXJyb3Ige1xuXHRcdG91dGxpbmU6IDFweCBzb2xpZCAkZGFuZ2VyO1xuXHRcdHBhZGRpbmctdG9wOiAycHg7XG5cdFx0LnJhZGlvLWZsZXgtd3JhcCB7XG5cdFx0XHQvKnBhZGRpbmctYm90dG9tOiA2cHg7Ki9cblx0XHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRcdC5oZWxwLWJsb2NrIHtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHQvKnRvcDogMTAwJTsqL1xuXHRcdFx0XHRib3R0b206IC00MHB4O1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0fVxuXG5cdFx0fVxuXHR9XG59XG5cbmZvcm1bbmFtZT1leGFtXSB7XG5cdHNwYW4uaGVscC1ibG9jayB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxufVxuXG4uYnRuLXN3aXRjaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA1MHB4O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0YyNzg3ODtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjRjI3ODc4O1xuICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7XG4gICAgXG4gICAgLmJ0bi1zd2l0Y2gtY2lyY2xlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICAgIHdpZHRoOiAyNXB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0MHB4O1xuICAgIH1cbn1cblxuLmJ0bi1zd2l0Y2gtLW9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODBDREJFO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICM4MENEQkU7XG4gICAgXG4gICAgLmJ0bi1zd2l0Y2gtY2lyY2xlLS1vbiB7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgIH1cbn1cblxuLnN1cmdlcnktYWdyZWVtZW50LWZvcm0tZm9vdGVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0LnN1Ym1pdC13cmFwLWZsZXgge1xuXHRcdHBhZGRpbmc6IDEycHggMTVweCAxMnB4IDI1cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogNTBweDtcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGU7XG5cdFx0LypiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCAkcHVycGxlLCAkbmF2eSkgIWltcG9ydGFudDsqL1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cblx0XHQubm90ZS13cmFwIHtcblx0XHRcdHdpZHRoOiA0MDBweDtcblx0XHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0XHRcdHAge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdCY6Zmlyc3QtY2hpbGQge21hcmdpbi1ib3R0b206IDEwcHg7fVxuXHRcdFx0fVxuXHRcdH1cblx0XHQuYnV0dG9uLXdyYXAge1xuXHRcdFx0Lyogd2lkdGg6IDIwMHB4OyAqL1xuXHRcdFx0YWxpZ24tc2VsZjogY2VudGVyO1xuXHRcdH1cblx0fVxuXG5cdC5zaG93aW5nLXdhcm5pbmcge1xuXHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgyNzBkZWcsICRwdXJwbGUsICRuYXZ5KSAhaW1wb3J0YW50O1xuXHR9XG59XG5cbi5wcmVtaXVtLWxlbnMtcmVjb21tZW5kLWNoZWNrYm94ZXMge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ucmVjb21tZW5kZWQtb3B0aW9uLWhpZ2hsaWdodCB7XG5cdGJhY2tncm91bmQtY29sb3I6ICNlNmYyZmY7XG5cdGNvbG9yOiAjMDA3QkZGO1xuXHRmb250LXdlaWdodDogYm9sZDtcbn1cblxuLnJlY29tbWVuZGVkLWxhYmVsIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xuXHRiYWNrZ3JvdW5kOiAjMGQ2ZWZkO1xuXHRjb2xvcjogI2ZmZjtcblx0Zm9udC1zaXplOiAxLjFyZW07XG5cdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdHBhZGRpbmc6IDRweCA2cHg7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0bGluZS1oZWlnaHQ6IDEuMjtcblx0Ym9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRtYXJnaW4tYm90dG9tOjAuNXJlbTtcbn1cblxuLyogT25lLXRpbWUtY29kZSBib3hlcyBmb3IgdGhlIE1GQSBjb25maWcgYW5kIE1GQSB2ZXJpZnkgbW9kYWxzLiBUaGUgbG9naW4gcGFnZSBhbmQgdGhlIHBhdGllbnRcbiAgIGNvbnRhY3QgdmVyaWZpY2F0aW9uIHBhZ2UgZWFjaCBoYXZlIHRoZWlyIG93biBjb3B5LCBzY29wZWQgdW5kZXIgLm1vZGVybi1sb2dpbi1wYWdlIGFuZFxuICAgLnBhdGllbnQtdmVyaWZpY2F0aW9uLWZvcm0sIGJlY2F1c2UgbmVpdGhlciBpcyBhIG1vZGFsLiAqL1xuLmNyZWF0ZS1tb2RhbCAudmVyaWZ5LWlucHV0LWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRnYXA6IDAuNzVyZW07XG5cdG1hcmdpbjogMnJlbSBhdXRvO1xuXG5cdGlucHV0IHtcblx0XHR3aWR0aDogNDVweDtcblx0XHRoZWlnaHQ6IDU1cHg7XG5cdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRwYWRkaW5nOiAwLjVyZW07XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cbn1cblxuLyogVmVyaWZpZWQgLyB1bnZlcmlmaWVkIHBpbGwgc2hvd24gYmVzaWRlIHRoZSBlbWFpbCBhbmQgbW9iaWxlIGZpZWxkcyBpbiBwYXRpZW50IGRldGFpbHMuICovXG4uY29udGFjdC12ZXJpZmllZC1waWxsIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRmb250LXNpemU6IDEwcHg7XG5cdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdGxpbmUtaGVpZ2h0OiAxLjQ7XG5cdHBhZGRpbmc6IDFweCA2cHg7XG5cdGJvcmRlci1yYWRpdXM6IDhweDtcblx0bWFyZ2luLWxlZnQ6IDRweDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0LyogU3RhdHVzLCBub3QgYSBjb250cm9sLiBUaGUgZGV0YWlsIC0gaW5jbHVkaW5nIHRoZSBkYXRlIGl0IHdhcyB2ZXJpZmllZCAtIGlzIGluXG5cdCAgIHRoZSB0b29sdGlwLiBNYXRjaGVzIC5jb21tcy12ZXJpZmllZC1pY29uLCB3aGljaCBzYXlzIHRoZSBzYW1lIHN0YXRlIGluIHRoZVxuXHQgICBwYXRpZW50IGhlYWRlciBhbmQgaGFzIGNhcnJpZWQgdGhpcyBhZmZvcmRhbmNlIHNpbmNlIGl0IHdhcyB3cml0dGVuLiAqL1xuXHRjdXJzb3I6IGhlbHA7XG5cblx0Ji5pcy12ZXJpZmllZCB7XG5cdFx0YmFja2dyb3VuZDogI2U0ZjRlYTtcblx0XHRjb2xvcjogIzFjN2E0MTtcblx0fVxuXG5cdCYuaXMtdW52ZXJpZmllZCB7XG5cdFx0YmFja2dyb3VuZDogI2ZkZWFlYTtcblx0XHRjb2xvcjogJGRhbmdlcjtcblx0fVxufSIsIi5wb3BvdmVyIHtcblx0b3V0bGluZTpub25lO1xuXHRtYXgtd2lkdGg6IDEwMCU7XG5cdHBhZGRpbmc6IDA7XG5cdHBhZGRpbmctYm90dG9tOiAxMHB4O1xuXHRoMy5wb3BvdmVyLXRpdGxlIHtcblx0XHRiYWNrZ3JvdW5kOiAkY3lhbjtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdEBleHRlbmQgLmZvbnQtbWVkaXVtO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXHQucG9wb3Zlci1jb250ZW50IHtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHR9XG59XG5cbi5wb3BvdmVyLW5vcm1hbCB7XG5cdG91dGxpbmU6bm9uZTtcblx0bWF4LXdpZHRoOiAxMnJlbTtcblx0cGFkZGluZzogMDtcblx0LyogcGFkZGluZy1ib3R0b206IDEwcHg7ICovXG5cdGgzLnBvcG92ZXItdGl0bGUge1xuXHRcdGJhY2tncm91bmQ6ICRjeWFuO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0QGV4dGVuZCAuZm9udC1tZWRpdW07XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHR9XG5cdC5wb3BvdmVyLWNvbnRlbnQge1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cbn1cblxuLmFtLXBvcG92ZXIge1xuXHRvcGFjaXR5OiAxO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTtcblx0Lyp0cmFuc2l0aW9uOiBhbGwgLjE1cyBlYXNlLWluOyovXG5cdCYubmctZW50ZXIge1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0Lyp0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpOyovXG5cdFx0XG5cdFx0Ji5uZy1lbnRlci1hY3RpdmUge1xuXG5cdFx0fVxuXHR9XG5cdCYubmctbGVhdmUge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0Ji5uZy1sZWF2ZS1hY3RpdmUge1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHR9XG5cdH1cbn1cblxuLnBvcG92ZXIuaW5mby1kZXRhaWwtcG9wb3ZlciB7XG5cdG1heC13aWR0aDogMjZyZW07XG5cdHdpZHRoOiBhdXRvO1xuXHR6LWluZGV4OiAxMTAwO1xufVxuXG4ucG9wb3Zlci5pbmZvLWRldGFpbC1wb3BvdmVyIC5wb3BvdmVyLWNvbnRlbnQge1xuXHR3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG5cdG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG5cdGNvbG9yOiAkdGV4dEdyZXkgIWltcG9ydGFudDtcblxuXHRsYWJlbCB7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcmsgIWltcG9ydGFudDtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHR9XG59XG5cbi5pbmZvLXBvcG92ZXItY29tbWVudCB7XG5cdHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcblx0d29yZC1icmVhazogYnJlYWstd29yZDtcblx0bWF4LXdpZHRoOiAyNHJlbTtcbn1cblxuLmRpYWdub3Npcy1pbmZvLXBvcG92ZXItYW5jaG9yIHtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi53aWRlci1wb3BvdmVyIHtcblx0bWF4LXdpZHRoOiAyNHJlbTtcblx0b3BhY2l0eTogMTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEycmVtKTtcblx0Lyp0cmFuc2l0aW9uOiBhbGwgLjE1cyBlYXNlLWluOyovXG5cdCYubmctZW50ZXIge1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0Lyp0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpOyovXG5cdFx0XG5cdFx0Ji5uZy1lbnRlci1hY3RpdmUge1xuXG5cdFx0fVxuXHR9XG5cdCYubmctbGVhdmUge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0Ji5uZy1sZWF2ZS1hY3RpdmUge1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHR9XG5cdH1cbn1cblxuLyogLnBvcG92ZXIgaGFzIG5vIG1heC13aWR0aCBvZiBpdHMgb3duLCBzbyBhIHNlbnRlbmNlIHJlbmRlcnMgYXMgb25lIGxvbmcgbGluZS4gKi9cbi5wb3BvdmVyLmNvbnRhY3QtdmVyaWZpZWQtcG9wb3ZlciB7XG5cdG1heC13aWR0aDogMjJyZW07XG59XG4iLCIvKiBJbnN1cmFuY2Ugc3VtbWFyeSBjaGlwcyBzaG93biBpbiB0aGUgcGF0aWVudCBoZWFkZXIsIHdpdGggYSBob3ZlciBwb3BvdmVyXG4gICBvbiB0aGUgXCIrTlwiIHBpbGwgdGhhdCByZXZlYWxzIHRoZSBpbnN1cmVycyBub3Qgc2hvd24gaW5saW5lLiAqL1xuXG4uaW5zdXJhbmNlLXN1bW1hcnkge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IDNweDtcbn1cblxuLmluc3VyYW5jZS1zdW1tYXJ5IC5pbnMtY2hpcCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0Ym9yZGVyLXJhZGl1czogMTFweDtcblx0cGFkZGluZzogMXB4IDhweDtcblx0Zm9udC1zaXplOiAxMS41cHg7XG5cdGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5pbnN1cmFuY2Utc3VtbWFyeSAuaW5zLW1vcmUge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0Ym9yZGVyLXJhZGl1czogMTFweDtcblx0cGFkZGluZzogMXB4IDdweDtcblx0Zm9udC1zaXplOiAxMS41cHg7XG5cdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdGJhY2tncm91bmQ6ICNFOEY0Rjg7XG5cdGNvbG9yOiAjMDAzNWQyO1xuXHRjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5pbnN1cmFuY2Utc3VtbWFyeSAuaW5zLXBvcCB7XG5cdGRpc3BsYXk6IG5vbmU7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Ym90dG9tOiBjYWxjKDEwMCUgKyA5cHgpO1xuXHRsZWZ0OiA1MCU7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcblx0ei1pbmRleDogMTA1MDtcblx0bWluLXdpZHRoOiAxNTBweDtcblx0cGFkZGluZzogMTBweCAxMXB4O1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRib3JkZXI6IDFweCBzb2xpZCAjZGNlM2VlO1xuXHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXHRib3gtc2hhZG93OiAwIDEwcHggMjhweCByZ2JhKDI2LCA0MSwgNjYsIC4xOCk7XG5cdHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5pbnN1cmFuY2Utc3VtbWFyeSAuaW5zLW1vcmU6aG92ZXIgLmlucy1wb3AsXG4uaW5zdXJhbmNlLXN1bW1hcnkgLmlucy1tb3JlOmZvY3VzIC5pbnMtcG9wIHtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5pbnN1cmFuY2Utc3VtbWFyeSAuaW5zLXBvcDo6YWZ0ZXIge1xuXHRjb250ZW50OiBcIlwiO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMTAwJTtcblx0bGVmdDogNTAlO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG5cdGJvcmRlcjogN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRib3JkZXItdG9wLWNvbG9yOiAjZmZmO1xufVxuXG4uaW5zdXJhbmNlLXN1bW1hcnkgLmlucy1wb3AtaCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRtYXJnaW4tYm90dG9tOiA3cHg7XG5cdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRmb250LXdlaWdodDogNjAwO1xuXHRsZXR0ZXItc3BhY2luZzogLjVweDtcblx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0Y29sb3I6ICM3YTg2OWE7XG59XG5cbi5pbnN1cmFuY2Utc3VtbWFyeSAuaW5zLXBvcC1jaGlwcyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtd3JhcDogd3JhcDtcblx0Z2FwOiA2cHg7XG59XG5cbi8qIENvbGxhcHNpYmxlIHdyYXBwZXIgdXNlZCB3aGVyZSB0aGUgcGlja2VyIHNpdHMgaW4gYSBjcm93ZGVkIGZvcm0uIFRoZSBoZWFkZXJcbiAgIGRvdWJsZXMgYXMgdGhlIHN1bW1hcnkgb2Ygd2hhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuICovXG5cbi5pbnN1cmFuY2UtbXVsdGlzZWxlY3QgLmlucy1jb2xsYXBzZSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0Z2FwOiAxMHB4O1xuXHR3aWR0aDogMTAwJTtcblx0cGFkZGluZzogN3B4IDExcHg7XG5cdGJhY2tncm91bmQ6ICNmZmY7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNkY2UzZWU7XG5cdGJvcmRlci1yYWRpdXM6IDhweDtcblx0Y29sb3I6ICMxQTI5NDI7XG5cdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuXHRmb250LXNpemU6IDEzcHg7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmluc3VyYW5jZS1tdWx0aXNlbGVjdCAuaW5zLWNvbGxhcHNlOmhvdmVyLFxuLmluc3VyYW5jZS1tdWx0aXNlbGVjdCAuaW5zLWNvbGxhcHNlOmZvY3VzIHtcblx0Ym9yZGVyLWNvbG9yOiAjYjljNmRlO1xufVxuXG4uaW5zdXJhbmNlLW11bHRpc2VsZWN0IC5pbnMtY29sbGFwc2UtdGV4dCB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4uaW5zdXJhbmNlLW11bHRpc2VsZWN0IC5pbnMtY29sbGFwc2UtY2FyZXQge1xuXHRmbGV4OiAwIDAgYXV0bztcblx0d2lkdGg6IDA7XG5cdGhlaWdodDogMDtcblx0Ym9yZGVyLXJpZ2h0OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci1sZWZ0OiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci10b3A6IDZweCBzb2xpZCAjNWI2NTc2O1xuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjE1cyBlYXNlO1xufVxuXG4uaW5zdXJhbmNlLW11bHRpc2VsZWN0IC5pbnMtY29sbGFwc2UtY2FyZXQuaXMtb3BlbiB7XG5cdHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG59XG5cbi5pbnN1cmFuY2UtbXVsdGlzZWxlY3QgLmlucy1jb2xsYXBzZS1ib2R5IHtcblx0bWFyZ2luLXRvcDogOHB4O1xufVxuXG4vKiBBIGNoZWNrYm94IHRoYXQgc2l0cyBkaXJlY3RseSBiZXNpZGUgaXRzIG93biB0ZXh0LCByYXRoZXIgdGhhbiBiZWluZyBzcGxpdFxuICAgYWNyb3NzIHRoZSBmb3JtIGdyaWQncyBsYWJlbCBhbmQgZmllbGQgY29sdW1ucy4gKi9cblxuLmlucy1pbmxpbmUtY2hlY2sge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IDhweDtcblx0bWFyZ2luOiAwO1xuXHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5pbnMtaW5saW5lLWNoZWNrIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG5cdGZsZXg6IDAgMCBhdXRvO1xuXHRtYXJnaW46IDA7XG59XG5cbi8qIFRoZSBQYXllciBib3ggb24gdGhlIG9wZXJhdGlvbiBub3RlLiBTaXRzIGluIHRoZSBzYW1lIGJsdWUtYm94IHNoZWxsIGFzIHRoZVxuICAgXCJOSEkgbm90IHNldFwiIHBhbmVsIGFib3ZlIGl0LCBzbyB0aGUgdHdvIHJlYWQgYXMgb25lIGNvbHVtbiBvZiBwcm9tcHRzLiAqL1xuXG4ub3Atbm90ZS1wYXllci1oZWFkIHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRnYXA6IDEycHg7XG5cdG1hcmdpbi1ib3R0b206IDNweDtcbn1cblxuLm9wLW5vdGUtcGF5ZXItdGl0bGUge1xuXHRtYXJnaW46IDA7XG5cdGZvbnQtc2l6ZTogMTVweDtcblx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0Y29sb3I6ICMwMDM1ZDI7XG59XG5cbi5vcC1ub3RlLXBheWVyLW5vdGUge1xuXHRtYXJnaW46IDAgMCAxMXB4O1xuXHRmb250LXNpemU6IDEycHg7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0Y29sb3I6ICM2Yzc1N2Q7XG59XG5cbi5vcC1ub3RlLXBheWVyLWV5ZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRtYXJnaW4tYm90dG9tOiA1cHg7XG5cdGZvbnQtc2l6ZTogMTFweDtcblx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0Y29sb3I6ICMyYTMwN2Y7XG59XG5cbi5vcC1ub3RlLXBheWVyLWVycm9yIHtcblx0bWFyZ2luOiA5cHggMCAwO1xuXHRmb250LXNpemU6IDEycHg7XG5cdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdGNvbG9yOiAjYTk0NDQyO1xufVxuIiwiLnRhYmxlLWNvbXBsZXRlIHtcblx0dGgsXG5cdHRkIHtcblx0XHRib3JkZXItdG9wOiAwICFpbXBvcnRhbnQ7XG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50O1xuXHR9XG5cblx0dGgge1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRAZXh0ZW5kIC5mb250LWJvbGQ7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHR9XG5cblx0dGQ6bnRoLWNoaWxkKDEpIHtcblx0XHQvKmJhY2tncm91bmQ6IHBpbms7Ki9cblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0Lyp3aWR0aDogNTAlOyovXG5cdH1cblxuXHR0ZDpudGgtY2hpbGQoMikge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRoZWlnaHQ6IDYwcHg7XG5cdFx0d2lkdGg6IDE2MHB4O1xuXHRcdGltZyB7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdH1cblx0fVxuXHR0ZDpudGgtY2hpbGQoMykge1xuXHRcdC8qYmFja2dyb3VuZDogcGluazsqL1xuXHRcdHdpZHRoOiAyNDBweDtcblx0fVxuXHR0aDpudGgtY2hpbGQoMikge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHR3aWR0aDogMjAwcHg7XG5cdH1cblxuXHQuaW5kZW50IHtcblx0XHRwYWRkaW5nLWxlZnQ6IDMwcHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0fVxufVxuXG4uY29tcGxldGUtZmxleC13cmFwIHtcblx0ZGlzcGxheTpmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5xdWVzdGlvbi13cmFwIHtcblx0aGVpZ2h0OiA0NHB4O1xuXHR3aWR0aDogNDRweDtcblx0Ym9yZGVyOiAycHggc29saWQgZ29sZDtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRzcGFuIHtcblx0XHRAZXh0ZW5kIC5mb250LWJvbGQ7XG5cdFx0Y29sb3I6IGdvbGQ7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDUwJTtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cdH1cbn1cblxuLnBhdGllbnQtc3VtbWFyeS1kZXRhaWxzIHtcblx0Zm9udC1zaXplOiAxMHB4O1xufVxuXG4uZG9jLWZsZXgtd3JhcCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGZsZXgtd3JhcDogd3JhcDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRtYXgtaGVpZ2h0OiA0MDBweDtcblx0bWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBwYWRkaW5nOiA1cHg7XG5cdGJvcmRlci1yYWRpdXM6IDVweDtcblx0XG5cdCYuZG9jLXdhcm5pbmcge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAxODIsIDE5MywgMC40KTtcblx0fVxuXG5cdC5kb2MtY2FyZCB7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2RkZDtcblx0XHR3aWR0aDogMzIuNSU7XG5cdFx0bWFyZ2luLWJvdHRvbTogOHB4O1xuXHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdGJvcmRlci1yYWRpdXM6IDZweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRcdFxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym94LXNoYWRvdzogMHB4IDBweCAzcHggMHB4IHJnYmEoMCwwLDAsMC4zKTtcblx0XHR9XG5cblx0XHQmLnNlbGVjdGVkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRwYWxlQmx1ZTtcblx0XHR9XG5cblx0XHQmLmRvYy1jYXJkLWdob3N0IHtcblx0XHRcdGJvcmRlcjpub25lO1xuXHRcdFx0aGVpZ2h0OiAwO1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXHR9XG59XG5cbi5zZWxlY3RlZC1kb2Mtd3JhcCB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkbGluZUJyZWFrO1xuXHRwYWRkaW5nOiAxMHB4O1xuXHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHRib3JkZXItcmFkaXVzOiA2cHg7XG5cblx0LnNlbGVjdGVkLWRvYy1uYW1lIHtcblx0XHRAZXh0ZW5kIC5mb250LWJvbGQtaXRhbGljO1xuXHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0fVxuXHQuc2VsZWN0ZWQtZG9jLXByYWN0aWNlIHtcblx0XHRAZXh0ZW5kIC5tYi0wO1xuXHRcdEBleHRlbmQgLnRleHQtdGV4dEdyZXk7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHR9XG59XG5cbi5kb2N0b3ItZmlsdGVyLWdyb3VwIHtcblx0aW5wdXRbdHlwZT1yYWRpb10ge1xuXHRcdHRvcDogLTJweDtcblxuXHR9XG5cdFxuXHQucmFkaW8taW5saW5lIHtcblx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiAxNXB4O1xuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEltcGFjdCBvbiBsaWZlIGFnZSAoaG93IG9sZCB0aGUgYW5zd2VycyBiZWhpbmQgdGhlIHB1YmxpYyBzY29yZSBhcmUpXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5pbXBhY3QtcmV2aWV3LXdyYXAge1xuXHRtYXJnaW4tdG9wOiA4cHg7XG5cdG1heC13aWR0aDogMjYwcHg7XG5cblx0LmltcGFjdC1yZXZpZXctZGF0ZSB7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHR9XG5cblx0LyogQW5zd2VycyBwYXN0IHRoZSB2YWxpZGl0eSB3aW5kb3cgLSB0aGUgcHVibGljIHNjb3JlIGlzIHBlbmRpbmcgdW50aWwgdGhlXG5cdCAgIHF1ZXN0aW9ucyBhcmUgYW5zd2VyZWQgYWdhaW4sIHNvIHRoaXMgaGFzIHRvIHJlYWQgYXMgYSBwcm9tcHQsIG5vdCBhIG5vdGUuICovXG5cdC5pbXBhY3QtcmV2aWV3LWV4cGlyZWQge1xuXHRcdEBleHRlbmQgLmZvbnQtbWVkaXVtO1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0fVxufVxuIiwiLmV4YW0td3JhcCB7XG5cbn1cblxuLmZvcm0tZXhhbSB7XG5cdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0Y29sb3I6ICR0ZXh0R3JleTtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHRcblx0c2VsZWN0LFxuXHQuZm9ybS1jb250cm9sIHtcblx0XHRib3JkZXItcmFkaXVzOiAwO1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHR9XG5cdFxuXHQuZm9ybS1ncm91cC1sYWJlbCB7XG5cdFx0cGFkZGluZy1yaWdodDogMjBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0bWFyZ2luLWJvdHRvbTogMjVweDtcblxuXHRcdC5jb250cm9sLWxhYmVsIHtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdFx0LyphbGlnbi1zZWxmOiBjZW50ZXI7Ki9cblx0XHR9XG5cdH1cblxuXHQuc25lbGxlbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHQvKmp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsqL1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0c2VsZWN0LFxuXHRcdC5tYXJrLXdyYXAge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHRcdFx0Lyp3aWR0aDogY2FsYyg1MCUgLSA2MHB4KTsqL1xuXHRcdFx0d2lkdGg6IDEwMHB4O1xuXHRcdH1cblx0fVxuXHRcblx0Lm1hcmstd3JhcCxcblx0Lm1hcmstd3JhcC1kZWcge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdC5zaXgtcHJlIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDo1MCU7XG5cdFx0XHR0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdGxlZnQ6LTIwcHg7XG5cdFx0fVxuXG5cdFx0LnN0cmlwZS1wb3N0IHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDo1MCU7XG5cdFx0XHR0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdHJpZ2h0Oi0xNXB4O1xuXHRcdH1cblxuXHRcdC5zdHJpcGUtcHJlIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDo1MCU7XG5cdFx0XHR0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdGxlZnQ6LTEycHg7XG5cdFx0fVxuXHR9XG5cblxuXHQubWFyay13cmFwLWRlZyB7XG5cdFxuXHRcdC5kZWcge1xuXHRcdFx0d2lkdGg6IDgwcHg7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDZweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDZweDtcblx0XHR9XG5cdFx0XG5cdFx0LnN0cmlwZS1wb3N0IHtcblx0XHRcdHJpZ2h0OiAtMzdweDtcblx0XHR9XG5cblx0fVxufVxuXG4uY2hlY2stbGFiZWwge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0LmNoZWNrLXNwYW4ge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR0b3A6IDJweDtcblx0fVxufVxuXG4ubGVucyB7XG5cdHdpZHRoOiAyMjBweDtcbn1cblxuLmxlbnMtbGFiZWwge1xuXHRtYXJnaW4tdG9wOiAzNHB4O1xufVxuXG4udmlzdWFsLWxhYmVsIHtcblx0bWFyZ2luLXRvcDogNzBweDtcbn1cblxuLmZvcm0tZ3JvdXAtbGFiZWwtdG9wIHtcblx0bWFyZ2luLXRvcDogNDBweDtcbn1cblxuLmNvbC1iaW4ge1xuXHRwYWRkaW5nLWxlZnQ6IDYwcHg7XG59IiwiLnRlcm1zIHtcblx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRAZXh0ZW5kIC50ZXh0LXRleHRHcmV5O1xuXHRcblx0aDEge1xuXHRcdG1hcmdpbjogMzBweCAwO1xuXHRcdEBleHRlbmQgLmZvbnQtYm9sZDtcblx0XHRAZXh0ZW5kIC50ZXh0LWxvZ291dEdyZXk7XG5cdH1cblxuXHRoMyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTVweDtcblx0XHRAZXh0ZW5kIC5mb250LW1lZGl1bTtcblx0XHRAZXh0ZW5kIC50ZXh0LW5hdnk7XG5cdH1cblx0XG5cdHAge1xuXHRcdG1hcmdpbi1ib3R0b206IDE1cHg7XG5cdH1cblxuXHRhIHtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQuaW1hZ2UxIHtcblx0XHRmbG9hdDogbGVmdDtcblx0XHR3aWR0aDogNTAlO1xuXHRcdG1hcmdpbi1yaWdodDogMTBweDtcblx0fVxufSIsIi5vcC1oZWFkZXIge1xuXHRjb2xvcjogJHdoaXRlO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdHBhZGRpbmc6IDVweCAwO1xuXHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXG5cdGg0IHtcblx0XHRmb250LXNpemU6IDFlbTtcblx0fVxufVxuXG4ubmF2eS10ZXh0IHtcblx0Y29sb3I6ICRuYXZ5ICFpbXBvcnRhbnQ7XG59XG5cbi5uYXZ5LWxpbmUge1xuXHRoZWlnaHQ6IDJweDtcblx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdG1hcmdpbi1sZWZ0OiAxLjVlbTtcblx0bWFyZ2luLXJpZ2h0OiAxLjVlbTtcblx0bWFyZ2luLXRvcDogMWVtO1xufVxuXG4ucHJlLW9wLWZvcm0ge1xuXHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdGNvbG9yOiAkdGV4dEdyZXk7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Ly8gYmFja2dyb3VuZC1jb2xvcjogcGluaztcblx0cGFkZGluZzogMCAyMHB4O1xuXG5cdHNlbGVjdCxcblx0LmZvcm0tY29udHJvbCB7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0XHQvLyBjb2xvcjogJHRleHRHcmV5O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdH1cblxuXHQuZm9ybS1ncm91cC1sYWJlbCB7XG5cdFx0cGFkZGluZy1yaWdodDogMjBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0bWFyZ2luLWJvdHRvbTogMjVweDtcblxuXHRcdC5jb250cm9sLWxhYmVsIHtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdH1cblx0fVxuXG5cdC5mbGV4IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0c2VsZWN0LFxuXHRcdC5pbnB1dCxcblx0XHQuaW5saW5lLW51bWJlcixcblx0XHQubWFyay13cmFwIHtcblx0XHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0XHRcdHdpZHRoOiAxMDBweDtcblx0XHR9XG5cdH1cblxuXHQubWFyay13cmFwLFxuXHQubWFyay13cmFwLWRlZyB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0LnNpeC1wcmUge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHRsZWZ0OiAtMjBweDtcblx0XHR9XG5cblx0XHQuc3RyaXBlLXBvc3Qge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHRyaWdodDogLTE1cHg7XG5cdFx0fVxuXG5cdFx0LnN0cmlwZS1wcmUge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHRsZWZ0OiAtMTJweDtcblx0XHR9XG5cdH1cblxuXHQubWFyay13cmFwLWRlZyB7XG5cdFx0LmRlZyB7XG5cdFx0XHR3aWR0aDogODBweDtcblx0XHRcdHBhZGRpbmctbGVmdDogNnB4O1xuXHRcdFx0cGFkZGluZy1yaWdodDogNnB4O1xuXHRcdH1cblxuXHRcdC5zdHJpcGUtcG9zdCB7XG5cdFx0XHRyaWdodDogLTM3cHg7XG5cdFx0fVxuXHR9XG5cblx0bGFiZWwge1xuXHRcdGNvbG9yOiAkbmF2eSAhaW1wb3J0YW50O1xuXHR9XG5cblx0Lm1hcmtlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHRvcDogMnB4O1xuXHR9XG59XG5cbi5idG4tbmV4dCB7XG5cdHdpZHRoOiAxMjBweDtcblx0QGV4dGVuZCAuZm9udC1ib2xkO1xufVxuXG4uY2hlY2stbGFiZWwge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0LmNoZWNrLXNwYW4ge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR0b3A6IDJweDtcblx0fVxufVxuXG4ubGVucyB7XG5cdHdpZHRoOiAyMjBweDtcbn1cblxuLmxlbnMtbGFiZWwge1xuXHRtYXJnaW4tdG9wOiAzNHB4O1xufVxuXG4udmlzdWFsLWxhYmVsIHtcblx0bWFyZ2luLXRvcDogNzBweDtcbn1cblxuLmZvcm0tZ3JvdXAtbGFiZWwtdG9wIHtcblx0bWFyZ2luLXRvcDogNDBweDtcbn1cblxuLmNvbC1iaW4ge1xuXHRwYWRkaW5nLWxlZnQ6IDYwcHg7XG59XG5cbi5wcmVzc3VyZS13cmFwIHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRtYXgtd2lkdGg6IDQ2MHB4O1xuXG5cdC5mb3JtLWdyb3VwIHtcblx0XHR3aWR0aDogNDclO1xuXHR9XG59XG5cbi5oYWxmLXdpZHRoIHtcblx0bWF4LXdpZHRoOiA1MCU7XG59XG5cbi5xdWFydGVyLXdpZHRoIHtcblx0bWF4LXdpZHRoOiAyNSU7XG59XG5cbi5ibHVlLWJveCB7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRwYWRkaW5nOiAxNXB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG5cdG1hcmdpbi1ib3R0b206IDE1cHg7XG5cdGJvcmRlci1yYWRpdXM6IDhweDtcblx0LmhlYWRlciB7XG5cdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXG5cdFx0Lmg0IHtcblx0XHRcdEBleHRlbmQgLmZvbnQtYm9sZDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDVweDtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0fVxuXHR9XG59XG5cbi5leWUtaGVhZGluZyB7XG5cdG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5wcmUtb3Atc2F2ZS13cmFwIHtcblx0bWluLWhlaWdodDogODBweDtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRtYXJnaW46IDIwcHggMDtcblxuXHQucHJvZ3Jlc3Npb24td3JhcCB7XG5cdFx0bWluLXdpZHRoOiAyNTBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRcdC5zYXZlLXByb2dyZXNzIHtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0XHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0XHR9XG5cdH1cblxuXHQucHJvZ3Jlc3Npb24tYWxlcnQtd3JhcCB7XG5cdFx0d2lkdGg6IGNhbGMoMTAwJSAtIDI4MHB4KTtcblxuXHRcdC5hbGVydCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXG5cdFx0XHQmICsgLmFsZXJ0IHtcblx0XHRcdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLnN0YWNrLXZlcnQge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR0b3A6IDJweDtcblx0bWFyZ2luLWxlZnQ6IDEwcHg7XG5cblx0LnJhZGlvLWlubGluZSArIC5yYWRpby1pbmxpbmUge1xuXHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdG1hcmdpbi10b3A6IDVweDtcblx0fVxufVxuXG4ub3B0aW9uYWwge1xuXHRAZXh0ZW5kIC50ZXh0LXB1cnBsZTtcblx0QGV4dGVuZCAuZm9udC1saWdodC1pdGFsaWM7XG59XG5cbi5mbGV4LWJpb21ldHJ5IHtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHQuY29udHJvbC1sYWJlbCB7XG5cdFx0bWFyZ2luLXJpZ2h0OiAxNXB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cbn1cblxuLmJpb21ldHJ5LWlucHV0IHtcblx0d2lkdGg6IDEwMHB4O1xuXHRtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi5heGlzLXdyYXAge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5heGlzLXRpbWVzLFxuLmF4aXMtZGVnIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDUwJTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi5heGlzLXRpbWVzIHtcblx0cmlnaHQ6IGNhbGMoMTAwJSArIDZweCk7XG59XG5cbi5heGlzLWRlZyB7XG5cdGxlZnQ6IDExMHB4O1xufVxuXG4uc2VjdGlvbi1sYWJlbCB7XG5cdG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbi5iaW9tZXRyeSB7XG5cdC5mb3JtLXJvdyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTVweDtcblx0fVxuXHQubGVmdC1jb2x1bW4ge1xuXHRcdHdpZHRoOiAyOHB4O1xuXHR9XG5cdC5mb3JtLWdyb3VwIHtcblx0XHRtYXJnaW4tYm90dG9tOiAwcHg7XG5cdH1cblx0LmhlbHAtYmxvY2sge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR3aWR0aDogMzAwcHg7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxufVxuXG4uYmlvLWludGVybmFsLWZsZXgge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udGFibGUtbWVkaWNhdGlvbiB7XG5cdEBleHRlbmQgLnRleHQtbmF2eTtcblx0dGgsXG5cdHRkIHtcblx0XHRib3JkZXItY29sb3I6ICRuYXZ5ICFpbXBvcnRhbnQ7XG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50O1xuXHR9XG5cdHRkOmxhc3QtY2hpbGQge1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHR9XG5cblx0LnJlbW92ZS1tZWQge1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRcdHdpZHRoOiAyNHB4O1xuXHRcdGhlaWdodDogMjRweDtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6IHdoaXRlO1xuXHRcdH1cblx0fVxufVxuXG4uYnRuLWFkZC1hbGxlcmd5IHtcblx0aGVpZ2h0OiAzNHB4O1xuXHR3aWR0aDogMzRweDtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4uZmxleC1hbGxlcmd5IHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHQuZ3JvdyB7XG5cdFx0ZmxleDogMSAwO1xuXHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0fVxufVxuXG4uYW5hZXN0aGV0aWMtd3JhcCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblx0LmZvcm0tZ3JvdXAge1xuXHRcdHdpZHRoOiAyNjBweDtcblx0XHRtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cdH1cblxuXHQuaGVscC1ibG9jayB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdG1hcmdpbi10b3A6IDA7XG5cdH1cbn1cblxuLnRleHQtYXJlYS13cmFwIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdC5jb3VudC1yZW1haW5pbmcge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdHJpZ2h0OiAxNXB4O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXItaXRhbGljO1xuXHR9XG59XG5cbi5kaWFiZXRlcy1wb3AtdXAtd3JhcCB7XG5cdHdpZHRoOiA1MCU7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnJldGlub3BhdGh5LXBvcC11cC1PRCB7XG5cdC5yZXRpbm9wYXRoeS1wb3B1cCB7XG5cdFx0bGVmdDogY2FsYygxMDAlICsgMTBweCk7XG5cdH1cbn1cblxuLnJldGlub3BhdGh5LXBvcC11cC1PUyB7XG5cdC5yZXRpbm9wYXRoeS1wb3B1cCB7XG5cdFx0cmlnaHQ6IGNhbGMoMTAwJSArIDEwcHgpO1xuXHR9XG59XG5cbi5zaG93UmV0aW5vcGF0aHkge1xuXHQucmV0aW5vcGF0aHktcG9wdXAge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG59XG5cbi5tYWN1bG9wYXRoeS1wb3AtdXAtT0Qge1xuXHQubWFjdWxvcGF0aHktcG9wdXAge1xuXHRcdGxlZnQ6IGNhbGMoMTAwJSArIDEwcHgpO1xuXHR9XG59XG5cbi5tYWN1bG9wYXRoeS1wb3AtdXAtT1Mge1xuXHQubWFjdWxvcGF0aHktcG9wdXAge1xuXHRcdHJpZ2h0OiBjYWxjKDEwMCUgKyAxMHB4KTtcblx0fVxufVxuXG4uc2hvd01hY3Vsb3BhdGh5IHtcblx0Lm1hY3Vsb3BhdGh5LXBvcHVwIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxufVxuXG4ucmV0aW5vcGF0aHktcG9wdXAsXG4ubWFjdWxvcGF0aHktcG9wdXAge1xuXHRib3JkZXI6IDFweCBzb2xpZCAkbmF2eTtcblx0cGFkZGluZzogMTVweDtcblx0Zm9udC1zaXplOiAxMHB4O1xuXHRjb2xvcjogJG5hdnk7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuXHR3aWR0aDogNDgwcHg7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ei1pbmRleDogMTtcblx0dG9wOiAwO1xuXHRkaXNwbGF5OiBub25lO1xuXG5cdC50YWJsZS1ib3JkZXJlZCB7XG5cdFx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblxuXHRcdHRoIHtcblx0XHRcdEBleHRlbmQgLmZvbnQtYm9sZC1pdGFsaWM7XG5cdFx0fVxuXG5cdFx0dGgsXG5cdFx0dGQge1xuXHRcdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJG5hdnk7XG5cdFx0XHRib3JkZXItbGVmdDogMXB4IHNvbGlkICRuYXZ5O1xuXG5cdFx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0Ym9yZGVyLWxlZnQ6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRcdGJvcmRlci1yaWdodDogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0cjpsYXN0LWNoaWxkIHtcblx0XHRcdHRkIHtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHRcdFx0cGFkZGluZy1ib3R0b206IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0dGQsXG5cdHAge1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhci1pdGFsaWM7XG5cdH1cblxuXHR0ZCxcblx0dGgge1xuXHRcdGJvcmRlci1jb2xvcjogJG5hdnkgIWltcG9ydGFudDtcblx0fVxuXG5cdHAge1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cbn1cblxuLnJldGlub3BhdGh5LXBvcHVwIHtcblx0dGg6Zmlyc3QtY2hpbGQsXG5cdHRkOmZpcnN0LWNoaWxkIHtcblx0XHR3aWR0aDogMTIwcHg7XG5cdH1cbn1cblxuLnByZS1vcC1mb3JtIHtcblx0LmZsZXgtbGVucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblxuXHRcdC5mb3JtLWdyb3VwIHtcblx0XHRcdHdpZHRoOiAxNTBweDtcblx0XHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0XHR9XG5cblx0XHQuZm9ybS1ncm91cC1heGlzIHtcblx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdHdpZHRoOiAxMTBweDtcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBBVSBQQlMgcHJlc2NyaXB0aW9uIGZpZWxkcyAobWVkaWNhdGlvbiBmb3JtKVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBUaGUgUEJTIGRldGFpbHMgcHJpbnRlZCBvbnRvIHRoZSBwcmUtcHJpbnRlZCBQQjAyMyBmb3JtLiBHcm91cGVkIGluIGEgbGlnaHRcbiAgIHBhbmVsIHVuZGVyIHRoZSBkb3NlIHJvdyBzbyB0aGV5IHJlYWQgYXMgb25lIHNldDsgZmxleCByYXRoZXIgdGhhbiBCb290c3RyYXBcbiAgIGNvbHVtbnMgc28gdGhlIGNoZWNrYm94ZXMgbGluZSB1cCB3aXRoIHRoZSBpbnB1dHMgYmVzaWRlIHRoZW0gYW5kIHRoZSByb3dzXG4gICB3cmFwIGNsZWFubHkgd2hlbiB0aGUgbW9kYWwgaXMgbmFycm93LiAqL1xuLnBicy1maWVsZHMge1xuXHRtYXJnaW4tYm90dG9tOiAxNXB4O1xuXHRwYWRkaW5nOiAxMHB4IDEycHggMnB4O1xuXHRib3JkZXItbGVmdDogM3B4IHNvbGlkICRjeWFuO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0YmFja2dyb3VuZC1jb2xvcjogJGN5YW4tdHAtMDU7XG5cblx0LnBicy1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblx0XHRnYXA6IDAgMTZweDtcblx0fVxuXG5cdC5wYnMtZmllbGQge1xuXHRcdG1hcmdpbi1ib3R0b206IDhweDtcblxuXHRcdC5jb250cm9sLWxhYmVsIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMnB4O1xuXHRcdH1cblx0fVxuXG5cdC5wYnMtZmllbGQtc20ge1xuXHRcdHdpZHRoOiA3cmVtO1xuXHR9XG5cblx0LnBicy1maWVsZC1tZCB7XG5cdFx0d2lkdGg6IDExcmVtO1xuXHR9XG5cblx0LnBicy1maWVsZC1mdWxsIHtcblx0XHRmbGV4OiAxIDEgMTAwJTtcblx0fVxuXG5cdC8qIFNhbWUgaGVpZ2h0IGFzIC5mb3JtLWNvbnRyb2wgc28gdGhlIGxhYmVsIHNpdHMgbGV2ZWwgd2l0aCB0aGUgaW5wdXRzLiAqL1xuXHQucGJzLWZpZWxkLWNoZWNrIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0aGVpZ2h0OiAzNHB4O1xuXHR9XG5cblx0LnBicy1jaGVjayB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdCYuaXMtZGlzYWJsZWQge1xuXHRcdFx0b3BhY2l0eTogMC41O1xuXHRcdFx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcblx0XHR9XG5cdH1cbn1cblxuLmFsbGVyZ3ktZm9ybS13cmFwIHtcblx0LmhlbHAtYmxvY2sge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0fVxufVxuXG4ubG9jc2lpaS13cmFwIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR3aWR0aDogNTAlO1xufVxuXG4ubG9jc2lpaS1pbWctd3JhcCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0d2lkdGg6IDUwMHB4O1xuXHRpbWcge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbi5sb2NzaWlpLWltZy13cmFwLU9EIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR3aWR0aDogNzAwcHg7XG5cdGxlZnQ6IGNhbGMoMTAwJSArIDE1cHgpO1xuXHR0b3A6IDA7XG5cdHotaW5kZXg6IDE7XG5cdGRpc3BsYXk6IG5vbmU7XG5cblx0aW1nIHtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxufVxuXG4ubG9jc2lpaS1pbWctd3JhcC1PUyB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0d2lkdGg6IDUwMHB4O1xuXHRyaWdodDogY2FsYygxMDAlICsgMTVweCk7XG5cdHRvcDogMDtcblx0ei1pbmRleDogMTtcblx0ZGlzcGxheTogbm9uZTtcblxuXHRpbWcge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbi5zaG93T3BhbCxcbi5zaG93Q29sb3VyLFxuLnNob3dDb3J0aWNhbCxcbi5zaG93UHVwaWwsXG4uc2hvd1N1YiB7XG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG59XG5cbi5wcmUtb3AtaGVhZGVyIHtcblx0Ly8gb3V0bGluZTogMXB4IGRvdHRlZCBwaW5rO1xuXHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG5cdC5oZWFkLWZsZXgge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRcdH1cblx0fVxuXG5cdGgzLFxuXHRoNCB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdEBleHRlbmQgLmZvbnQtYm9sZDtcblx0XHRAZXh0ZW5kIC50ZXh0LW5hdnk7XG5cdH1cblxuXHQuaGVhZC1saW5rIHtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdH1cblxuXHQuaGVhZC1uYW1lIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cdH1cblxuXHQuaGVhZGVyLWxlZnQsXG5cdC5oZWFkZXItcmlnaHQge1xuXHRcdC8vIG91dGxpbmU6IDFweCBzb2xpZCBncmVlbjtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblx0fVxuXG5cdC5oZWFkZXItcmlnaHQge1xuXHRcdC8vIG1hcmdpbi1yaWdodDogODBweDtcblx0XHQvLyBvdXRsaW5lOiAxcHggc29saWQgYmx1ZTtcblx0fVxufVxuXG4uZ3JhcGhzLWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcbn0gXG5cbi5jYXJkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCAwIDRweCByZ2IoMCAwIDAgLyAyMCUpO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdG1hcmdpbjogMWVtO1xuXHRtYXJnaW4tcmlnaHQ6IDA7XG59XG4gIFxuLmNhcmQ6aG92ZXIge1xuXHQvKiBib3gtc2hhZG93OiAwIDhweCAyOHB4IDAgcmdiYSgwLDAsMCwwLjIpOyAqL1xuICB9XG4gIFxuLmNhcmQtY29udGFpbmVyIHtcblx0cGFkZGluZy1sZWZ0OiAxZW07XG5cdHBhZGRpbmctcmlnaHQ6IDFlbTtcblx0LyogcGFkZGluZzogMnB4IDE2cHg7ICovXG59XG5cbi5wYXRpZW50cy1lbXB0eSB7XG5cdEBleHRlbmQgLmNhcmQ7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7IFxuXHRtYXJnaW46IDA7XG5cdGhlaWdodDogJ2F1dG8nO1xuXHRoNCB7XG5cdFx0QGV4dGVuZCAuZm9udC1ib2xkO1xuXHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0XHRwYWRkaW5nOiAyZW07XG5cdH1cbn1cblxuLm1lbnUtc2VjdGlvbiB7XG5cdEBleHRlbmQgLmNhcmQ7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7IFxuXHRtaW4taGVpZ2h0OiAxMGVtO1xuXHRtYXJnaW4tbGVmdDogMDtcblx0bWFyZ2luLXRvcDogMDtcblx0aDQge1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0QGV4dGVuZCAuZm9udC1ib2xkO1xuXHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0XHRwYWRkaW5nLWxlZnQ6IDFlbTtcblx0XHRwYWRkaW5nLXRvcDogMWVtO1xuXHRcdHBhZGRpbmctYm90dG9tOiAwLjRlbTtcblx0fVxufVxuXG4ubWVudS1jb250YWluZXIge1xufVxuXG4ubWVudS1saXN0IHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0ZmxleC13cmFwOiB3cmFwO1xufVxuXG4ubWVudS1hcnJvdyB7XG5cdGJvcmRlci13aWR0aDogMTFweDtcblx0LyogcG9zaXRpb246IGFic29sdXRlOyAqL1xuXHRkaXNwbGF5OiBibG9jaztcblx0d2lkdGg6IDA7XG5cdGhlaWdodDogMDtcblx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0bWFyZ2luLXRvcDogLTExcHg7XG5cdG1hcmdpbi1sZWZ0OiAtMTFweDtcblx0Ym9yZGVyLXRvcC13aWR0aDogMDtcblx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogI2Y0ZjdmZTtcblx0bWFyZ2luLWxlZnQ6IDQ4JTtcblx0LyogbGVmdDogNTAlOyAqL1xufVxuXG4udmVydGljYWwtYmFyIHtcblx0d2lkdGg6IDRweDtcblx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdGFsaWduLXNlbGY6IHN0cmV0Y2g7XG5cdG1hcmdpbi1sZWZ0OiAyZW07XG5cdG1hcmdpbi10b3A6IDFlbTtcblx0bWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG4ubWVudS1ibG9jayB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cblxuLnJpZ2h0LWFycm93IHtcblx0bWFyZ2luLXRvcDogMWVtO1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xufVxuXG4ubWVudS1pdGVtIHtcblx0d2lkdGg6IDExZW07XG5cdGg0IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0QGV4dGVuZCAuZm9udC1ib2xkO1xuXHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblx0cCB7XG5cdCAgcGFkZGluZy1sZWZ0OiAxZW07XG5cdCAgcGFkZGluZy1yaWdodDogMC4yZW07XG5cdCAgdGV4dC1hbGlnbjogbGVmdDtcblx0ICBmb250LXNpemU6IDEycHg7XG5cdH1cbn1cblxuLnBhdGllbnQtaGVhZGVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdC5oZWFkZXItdGl0bGUtYmFyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAkZm9udC1zaXplLWJhc2U7XG5cdFx0bWFyZ2luOiAwIDEuMjVyZW0gMXJlbTtcblxuXHRcdC5jb25zdWx0LXRpbWVyLWJveCB7XG5cdFx0XHRwb3NpdGlvbjogc3RhdGljO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0fVxuXHR9XG5cblx0LmhlYWRlci10aXRsZSB7XG5cdFx0ZmxleDogMCAwIGF1dG87XG5cdH1cblxuXHQubWVudS1jb250YWluZXIge1xuXHRcdGZsZXg6IDEyO1xuXHR9XG5cblx0LmxpbmstZGlzYWJsZWQge1xuXHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHRvcGFjaXR5OiAwLjY7XG5cdH1cblxuXHQuYXJyb3ctZG93biB7XG5cdFx0Ym9yZGVyOiBzb2xpZCAkbmF2eTtcblx0XHRib3JkZXItd2lkdGg6IDAgMnB4IDJweCAwO1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRwYWRkaW5nOiAzcHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMnB4O1xuXHRcdG1hcmdpbi1sZWZ0OiAycHg7XG5cdFx0dHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcblx0fVxuXG5cdC5hcnJvdy1yaWdodCB7XG5cdFx0Ym9yZGVyOiBzb2xpZCAkbmF2eTtcblx0XHRib3JkZXItd2lkdGg6IDAgMnB4IDJweCAwO1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRwYWRkaW5nOiAzcHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMnB4O1xuXHRcdG1hcmdpbi1sZWZ0OiAycHg7XG5cdFx0dHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuXHR9XG5cblx0aDMsXG5cdGg0IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0QGV4dGVuZCAuZm9udC1ib2xkO1xuXHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0fVxuXG5cdGg1IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdEBleHRlbmQgLmZvbnQtYm9sZDtcblx0XHRAZXh0ZW5kIC50ZXh0LW5hdnk7XG5cdH1cblxuXHQucGF0aWVudC1jYXJkIHtcblx0XHRAZXh0ZW5kIC5jYXJkO1xuXHRcdHBhZGRpbmctYm90dG9tOiAxZW07XG5cdH1cblxuXHQucGF0aWVudC1kZXRhaWwtc2VjdGlvbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0cGFkZGluZy10b3A6IDAuNWVtO1xuXHRcdGg0IHtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHR9XG5cdH1cblxuXHQvKiBWZXJpZmllZC91bnZlcmlmaWVkIGNvbW1zIGljb25zIGJlc2lkZSB0aGUgbW9iaWxlIG51bWJlci4gVGhlIHN0YXRlIGJlaGluZCB0aGVtIGlzIHRoZSBzYW1lIG9uZVxuXHQgICAuY29udGFjdC12ZXJpZmllZC1waWxsIChfZm9ybXMuY3NzKSBzcGVsbHMgb3V0IGluIHdvcmRzIG9uIHRoZSBwYXRpZW50IGVkaXQgZm9ybTsgdXAgaGVyZSB0aGVyZVxuXHQgICBpcyBubyByb29tIGZvciBhIHdvcmQsIHNvIGVhY2ggY2hhbm5lbCBrZWVwcyBpdHMgb3duIGdseXBoIHdpdGggYSB0aWNrIG9yIGEgY3Jvc3MgYmFkZ2VkIG9uIGl0LlxuXG5cdCAgIERlbGliZXJhdGVseSBubyBtYXJnaW4tdG9wIG9yIGFsaWduLXNlbGY6IHRoZSByb3cgaXMgYmFzZWxpbmUtYWxpZ25lZCwgd2hpY2ggcHV0cyB0aGUgZ2x5cGhzIG9uXG5cdCAgIHRoZSBzYW1lIGxpbmUgYXMgdGhlIG51bWJlciB0aGV5IGJlbG9uZyB0byB3aXRob3V0IGhhdmluZyB0byBtYXRjaCB0aGUgbGluaydzIG93biBvZmZzZXQuICovXG5cdC5jb21tcy12ZXJpZmllZCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRtYXJnaW4tbGVmdDogLjc1ZW07XG5cdFx0bWFyZ2luLXJpZ2h0OiAuNzVlbTtcblx0fVxuXG5cdC5jb21tcy12ZXJpZmllZC1pY29uIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdC8qIFdpZGUgZW5vdWdoIHRoYXQgdGhlIGJhZGdlIG9uIG9uZSBnbHlwaCBjbGVhcnMgdGhlIG5leHQgZ2x5cGggZW50aXJlbHkuIFRoZSBiYWRnZSBoYW5nc1xuXHRcdCAgIGhhbGYgb3V0c2lkZSBpdHMgb3duIGJveCwgc28gYSBnYXAgdGhlIHNpemUgb2YgdGhlIGJhZGdlIGlzIHRoZSBtaW5pbXVtIHRoYXQgcmVhZHMgYXMgdHdvXG5cdFx0ICAgc2VwYXJhdGUgaWNvbnMgcmF0aGVyIHRoYW4gb25lIHNtdWRnZS4gKi9cblx0XHRtYXJnaW4tcmlnaHQ6IDFlbTtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDE7XG5cdFx0LyogU3RhdHVzLCBub3QgYSBjb250cm9sLiBUaGUgZGV0YWlsIC0gaW5jbHVkaW5nIHRoZSBkYXRlIGl0IHdhcyB2ZXJpZmllZCAtIGlzIGluIHRoZSB0aXRsZS4gKi9cblx0XHRjdXJzb3I6IGhlbHA7XG5cblx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdH1cblxuXHRcdC8qIFBhbGV0dGUgY29sb3VycyByYXRoZXIgdGhhbiBhIG9uZS1vZmYgZ3JlZW46IHRoZXNlIHNpdCBhbW9uZyB0aGUgaGVhZGVyJ3Mgb3RoZXIgZ2x5cGhzIGFuZFxuXHRcdCAgIGhhdmUgdG8gYmVsb25nIHRvIHRoZSBzYW1lIHNldC4gTmF2eSByZWFkcyBhcyBcIm9uIGZpbGUgYW5kIGNvbmZpcm1lZFwiIHdpdGhvdXQgY29tcGV0aW5nXG5cdFx0ICAgd2l0aCB0aGUgcmVkLCB3aGljaCBpcyB0aGUgb25lIHRoYXQgd2FudHMgdG8gYmUgbm90aWNlZC4gKi9cblx0XHQmLmlzLXZlcmlmaWVkIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmLmlzLXVudmVyaWZpZWQge1xuXHRcdFx0Y29sb3I6ICRkYW5nZXI7XG5cdFx0fVxuXHR9XG5cblx0LyogQmFkZ2VkIG9uIHRoZSBib3R0b20gcmlnaHQgb2YgdGhlIGNoYW5uZWwgZ2x5cGguIFRoZSBjYXJkIGJlaGluZCBpcyB3aGl0ZSwgc28gYSB3aGl0ZSBkaXNjXG5cdCAgIGtlZXBzIHRoZSBiYWRnZSBsZWdpYmxlIHdoZXJlIGl0IG92ZXJsYXBzIHRoZSBnbHlwaC4gUHVsbGVkIGluIHRpZ2h0ZXIgdGhhbiB0aGUgZ2x5cGgncyBvd25cblx0ICAgZWRnZSBzbyBpdCByZWFkcyBhcyBhdHRhY2hlZCB0byBpdCByYXRoZXIgdGhhbiBhcyBhIHRoaXJkIGZsb2F0aW5nIGljb24uICovXG5cdC5jb21tcy12ZXJpZmllZC1iYWRnZSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHJpZ2h0OiAtMC4zNWVtO1xuXHRcdGJvdHRvbTogLTAuMWVtO1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHR9XG5cblx0LnZlcnRpY2FsLXNlY3Rpb24ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0fVxuXG59XG5cblxuLnBvcG92ZXItcHJlb3Atd3JhcCB7XG5cdHBhZGRpbmc6IDIwcHg7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xuXHR3aWR0aDogMzAwcHg7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRsYWJlbCB7XG5cdFx0Y29sb3I6ICRuYXZ5ICFpbXBvcnRhbnQ7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHR9XG5cblx0LmZvcm0tY29udHJvbCB7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHR9XG5cblx0LmZvcm0tZ3JvdXA6bGFzdC1jaGlsZCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0fVxufVxuXG4ucG9wb3ZlciB7XG5cdGJvcmRlci1jb2xvcjogJG5hdnk7XG4gICAgLyogd2lkdGg6IDIwZW07XG5cdG1heC13aWR0aDogMjBlbTsgKi9cblx0Lm1hcmtlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHRvcDogMnB4O1xuXHR9XG59XG5cbi5wb3BvdmVyLmJvdHRvbSA+IC5hcnJvdyB7XG5cdGJvcmRlci1ib3R0b20tY29sb3I6ICRuYXZ5O1xufVxuXG4uc3Bpbm5lci13cmFwIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4udmVydGljYWwtYnV0dG9ucyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cblx0YnV0dG9uICsgYnV0dG9uIHtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHR9XG59XG5cbi52ZXJ0aWNhbC1yYWRpby1ncm91cHMge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRtYXJnaW4tdG9wOiAxZW07XG59XG5cbi5yYWRpby1idXR0b24taW5saW5lIHtcblx0bWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tYm90dG9tOiAxZW07XG59XG5cbi5teS1tb2RhbC1mb290ZXItcGF0aWVudC1kZXRhaWxzIHtcblx0LmJ0bi1uYXZ5IHtcblx0XHR3aWR0aDogMjIwcHg7XG5cdH1cbn1cblxuLndpZHRoXzM1X2Vte1xuXHR3aWR0aDogMzVlbTtcbn1cblxuaHIubGlmZS1xdWFsaXR5LWxpbmUtYnJlYWsge1xuXHRib3JkZXItdG9wLWNvbG9yOiAjMzg1MGEyO1xuXHRtYXJnaW4tdG9wOiAwO1xuXHRtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY3VzdG9tZXJfY2hlY2tib3hfcmVkIHtcbiAgIGlucHV0W3R5cGU9Y2hlY2tib3hdOmJlZm9yZSB7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0d2lkdGg6IDEzcHg7XG5cdFx0aGVpZ2h0OiAxM3B4O1xuXHRcdGJvcmRlcjogc29saWQgcmVkO1xuXHRcdGJvcmRlci1yYWRpdXM6IDJweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbmlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YmVmb3JlIHtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR3aWR0aDogMTVweDtcblx0XHRoZWlnaHQ6IDE1cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogcmVkO1xufVxuICAgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDphZnRlciB7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR3aWR0aDogNXB4O1xuXHRcdGhlaWdodDogMTBweDtcblx0XHRib3JkZXI6IHNvbGlkIHdoaXRlO1xuXHRcdGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7XG5cdFx0LXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG5cdFx0LW1zLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogNXB4O1xuXHRcdGxlZnQ6IDVweDtcbn1cbiBzcGFuIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogLTFweDtcblx0cGFkZGluZy1sZWZ0OiAwLjVlbTtcbiB9XG59XG5cbi5jdXN0b21lcl9jaGVja2JveF9ncmVlbiB7XG5cdGlucHV0W3R5cGU9Y2hlY2tib3hdOmJlZm9yZSB7XG5cdFx0IGNvbnRlbnQ6IFwiXCI7XG5cdFx0IGRpc3BsYXk6IGJsb2NrO1xuXHRcdCBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0IHdpZHRoOiAxM3B4O1xuXHRcdCBoZWlnaHQ6IDEzcHg7XG5cdFx0IGJvcmRlcjogc29saWQgZ3JlZW47XG5cdFx0IGJvcmRlci1yYWRpdXM6IDJweDtcblx0XHQgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gfVxuIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YmVmb3JlIHtcblx0XHQgY29udGVudDogXCJcIjtcblx0XHQgZGlzcGxheTogYmxvY2s7XG5cdFx0IHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHQgd2lkdGg6IDE1cHg7XG5cdFx0IGhlaWdodDogMTVweDtcblx0XHQgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47XG4gfVxuXHRpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFmdGVyIHtcblx0XHQgY29udGVudDogXCJcIjtcblx0XHQgZGlzcGxheTogYmxvY2s7XG5cdFx0IHdpZHRoOiA1cHg7XG5cdFx0IGhlaWdodDogMTBweDtcblx0XHQgYm9yZGVyOiBzb2xpZCB3aGl0ZTtcblx0XHQgYm9yZGVyLXdpZHRoOiAwIDJweCAycHggMDtcblx0XHQgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG5cdFx0IC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG5cdFx0IHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcblx0XHQgcG9zaXRpb246IGFic29sdXRlO1xuXHRcdCB0b3A6IDVweDtcblx0XHQgbGVmdDogNXB4O1xuIH1cbiAgc3BhbiB7XG5cdCBwb3NpdGlvbjogcmVsYXRpdmU7XG5cdCB0b3A6IC0xcHg7XG5cdCBwYWRkaW5nLWxlZnQ6IDAuNWVtO1xuICB9XG4gfVxuXG5cbi5jdXN0b21lcl9yYWRpb19yZWQge1xuXHQubWFya2VyIHtcblx0XHRtYXJnaW4tbGVmdDogMC41ZW07XG5cdFx0bWFyZ2luLXJpZ2h0OiAxZW07XG5cdFx0Zm9udC1zaXplOiAxLjZlbTtcblx0XHRjb2xvcjogcmVkICFpbXBvcnRhbnQ7XG5cdH1cblx0aW5wdXRbdHlwZT1cInJhZGlvXCJdOmFmdGVyIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgdG9wOiAtMnB4O1xuICAgICAgICBsZWZ0OiAtMXB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNkMWQzZDE7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIGJvcmRlcjogMHB4IHNvbGlkIHdoaXRlO1xuICAgIH07XG5cbiAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZDphZnRlciB7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIHRvcDogLTJweDtcbiAgICAgICAgbGVmdDogLTFweDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIGJvcmRlcjogMHB4IHNvbGlkIHdoaXRlO1xuICAgIH07XG59XG5cbi5jdXN0b21lcl9yYWRpb19ncmVlbiB7XG5cdC5tYXJrZXIge1xuXHRcdG1hcmdpbi1sZWZ0OiAwLjVlbTtcblx0XHRtYXJnaW4tcmlnaHQ6IDFlbTtcblx0XHRmb250LXNpemU6IDEuNmVtO1xuXHRcdGNvbG9yOiBncmVlbiAhaW1wb3J0YW50O1xuXHR9XG5cdGlucHV0W3R5cGU9XCJyYWRpb1wiXTphZnRlciB7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIHRvcDogLTJweDtcbiAgICAgICAgbGVmdDogLTFweDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFkM2QxO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICBib3JkZXI6IDBweCBzb2xpZCB3aGl0ZTtcbiAgICB9O1xuXG4gICAgaW5wdXRbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQ6YWZ0ZXIge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICB0b3A6IC0ycHg7XG4gICAgICAgIGxlZnQ6IC0xcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIGJvcmRlcjogMHB4IHNvbGlkIHdoaXRlO1xuICAgIH07XG59XG5cbi5jdXN0b21lcl9yYWRpb19ub3JtYWwge1xuXHQubWFya2VyIHtcblx0XHRtYXJnaW4tbGVmdDogMC41ZW07XG5cdFx0bWFyZ2luLXJpZ2h0OiAxZW07XG5cdFx0Zm9udC1zaXplOiAxLjZlbTtcblx0fVxuXHRpbnB1dFt0eXBlPVwicmFkaW9cIl06YWZ0ZXIge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICB0b3A6IC0ycHg7XG4gICAgICAgIGxlZnQ6IC0xcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2QxZDNkMTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgYm9yZGVyOiAwcHggc29saWQgd2hpdGU7XG4gICAgfTtcblxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXTpjaGVja2VkOmFmdGVyIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgdG9wOiAtMnB4O1xuICAgICAgICBsZWZ0OiAtMXB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICBib3JkZXI6IDBweCBzb2xpZCB3aGl0ZTtcbiAgICB9O1xufVxuXG4ucGFnaW5hdGlvbiB7XG5cdG1hcmdpbi10b3A6IDJlbSAhaW1wb3J0YW50O1xufVxuXG4ucGFnaW5hdGlvbj5saT5hLFxuLnBhZ2luYXRpb24+bGk+c3BhbiB7XG4gIGJvcmRlcjogMHB4O1xuICBwYWRkaW5nOiAzcHggNnB4O1xufVxuXG4ucGFnaW5hdGlvbj5saS5hY3RpdmU+YSB7XG5cdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRjb2xvcjogIzMzN2FiNztcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdGZvbnQtc2l6ZTogMTZweDtcblx0bWFyZ2luLXRvcDogLTAuMmVtO1xuICB9XG4vKiAucGFnaW5hdGlvbj5saS5hY3RpdmU+YSB7XG4gIGJhY2tncm91bmQ6IHB1cnBsZTtcbiAgY29sb3I6ICNmZmY7XG59ICovXG5cbi8qIC5wYWdpbmF0aW9uIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRwYWRkaW5nLWxlZnQ6IDA7XG5cdC5saSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogcmVkO1xuXHR9XG59ICovXG5cbi5wb3BvdmVyX3VsIHtcblx0bWFyZ2luLWxlZnQ6IC0yZW07XG59XG5cbi5wb3BvdmVyX2NvbnRhaW5lciB7XG5cdC5wb3BvdmVyIHtcblx0XHR3aWR0aDogNDBlbTtcblx0XHRtYXgtd2lkdGg6IDQwZW07XG5cdH1cbn1cblxuLnBvcG92ZXJfbGFiZWwge1xuXHRtYXJnaW4tcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xuXHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCc7XG59XG5cbi5waW5rX2hlYWRlciB7XG5cdHBhZGRpbmctbGVmdDogMiU7XG5cdHBhZGRpbmctcmlnaHQ6IDIlO1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6ICNFRUU2RkY7XG59XG5cbi5wdXJwbGVfaGVhZGVyIHtcblx0cGFkZGluZy1sZWZ0OiAyJTtcblx0cGFkZGluZy1yaWdodDogMiU7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogcmdiKDIxNywyMTAsMjMzKTtcbn1cblxuLmJsdWVfaGVhZGVyIHtcblx0cGFkZGluZy1sZWZ0OiAyJTtcblx0cGFkZGluZy1yaWdodDogMiU7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogcmdiKDIwNywyMjYsMjQzKTtcbn1cblxuLmxvbmdfc2VjdGlvbntcblx0d2lkdGg6IDMwJSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tbGVmdDogLTUlO1xuXHRtYXJnaW4tcmlnaHQ6MTUlO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIElPTCBjYWxjdWxhdG9yIGhhbmQtb2ZmIChzdXJnaWNhbCBwbGFuKVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBUaGUgbGVucyB0eXBlIHNlbGVjdCBrZWVwcyBpdHMgaGFsZi13aWR0aDsgdGhlIGJ1dHRvbiBzaXRzIGluIHRoZSBzcGFjZSB0aGF0IGxlYXZlcy4gKi9cbi5sZW5zLXR5cGUtY29udHJvbHMge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdC5pb2wtY2FsY3VsYXRvciB7XG5cdFx0bWFyZ2luLWxlZnQ6IDIwcHg7XG5cdH1cbn1cblxuLmlvbC1jYWxjdWxhdG9yIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdC5pb2wtY2FsY3VsYXRvci1idG4ge1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdG1heC13aWR0aDogbm9uZTtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0LyogVGhlIHNtYWxsIGl0YWxpYyBsaW5lIHVuZGVyIHRoZSBidXR0b24sIGZvbGxvd2luZyB0aGUgc3VidGV4dCB1bmRlciB0aGUgdmVyaWZ5IGJ1dHRvbiBpbiB0aGVcblx0ICAgQ2F0VHJheCBlbWFpbHMgKC52ZXJpZnlfY2F0dHJheF9zdWJ0ZXh0IGluIHBhdGllbnRfZW1haWxfdmVyaWZpY2F0aW9uX2h0bWwuZnRsKS4gKi9cblx0LmlvbC1jYWxjdWxhdG9yLWF0dHJpYnV0aW9uIHtcblx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHR9XG5cblx0LmlvbC1jYWxjdWxhdG9yLWVycm9yIHtcblx0XHRtYXJnaW4tdG9wOiA2cHg7XG5cdFx0bWF4LXdpZHRoOiAyMjBweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICRkYW5nZXI7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBWaXNpb24gbW9kdWxlOiBwcmlzbSB2YWx1ZSArIGJhc2UsIGFuZCB0aGUgY29weS1hZGRzIGJ1dHRvblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnByZS1vcC1mb3JtIHtcblx0LnByaXNtLWlucHV0LWdyb3VwIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogOHB4O1xuXG5cdFx0LmlubGluZS1udW1iZXIge1xuXHRcdFx0d2lkdGg6IDEwMHB4O1xuXHRcdH1cblxuXHRcdC5wcmlzbS1iYXNlIHtcblx0XHRcdHdpZHRoOiAxMTBweDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgaWNvbi1vbmx5IGNvcHktYWRkcy10by10aGUtb3RoZXItZXllIGJ1dHRvbiwgbGluZWQgdXAgd2l0aCB0aGUgYWRkIGlucHV0cyAqL1xuXHQubWQtYnV0dG9uLm1kLWZhYi5idG4tY29weS1hZGRzIHtcblx0XHRtYXJnaW46IDA7XG5cdFx0d2lkdGg6IDM2cHg7XG5cdFx0aGVpZ2h0OiAzNnB4O1xuXHRcdG1pbi1oZWlnaHQ6IDM2cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDM2cHg7XG5cdH1cbn1cbiIsIi8qIC5vcC1oZWFkZXIge1xuXHRjb2xvcjogJHdoaXRlO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdHBhZGRpbmc6IDVweCAwO1xuXHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIGNvbG9yOiAkbmF2eSAhaW1wb3J0YW50O1xuXHRoNCB7XG5cdFx0Zm9udC1zaXplOiAxZW07XG5cdH1cbn0gKi9cblxuLm9wZXJhdGlvbi1mb3JtIHtcblx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRjb2xvcjogJHRleHRHcmV5O1xuXHRmb250LXNpemU6IDEycHg7XG5cdC8vIGJhY2tncm91bmQtY29sb3I6IHBpbms7XG5cdHBhZGRpbmc6IDAgMjBweDtcblx0Ym9yZGVyLXRvcDogMnB4IHNvbGlkICRuYXZ5O1xuXHRib3JkZXItcmFkaXVzOiAwcmVtO1xuXHRwYWRkaW5nLXRvcDogM2VtO1xuXHRzZWxlY3QsIC5mb3JtLWNvbnRyb2wge1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdFx0Ly8gY29sb3I6ICR0ZXh0R3JleTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRcdC8qIERvIG5vdCBzZXQgYXBwZWFyYW5jZSAoZS5nLiByYWRpbyk6IENocm9tZSBtaXNhbGlnbnMgdGV4dCBpbiBpbnB1dHMsIHNlbGVjdHMsIGFuZCBkaXYuZm9ybS1jb250cm9sLiAqL1xuXHR9XG4gICAgXG4gICAgLnNpbmdsZS12YWx1ZS1jb250cm9sIHtcbiAgICAgICAgd2lkdGg6IDQwJTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMHB4O1xuICAgIH1cblxuXHQuZm9ybS1ncm91cC1sYWJlbCB7XG5cdFx0cGFkZGluZy1yaWdodDogMjBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0bWFyZ2luLWJvdHRvbTogMjVweDtcblxuXHRcdC5jb250cm9sLWxhYmVsIHtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdH1cblx0fVxuXG5cdC5mbGV4IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0c2VsZWN0LFxuXHRcdC5pbnB1dCxcblx0XHQuaW5saW5lLW51bWJlcixcblx0XHQubWFyay13cmFwIHtcblx0XHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0XHRcdHdpZHRoOiAxMDBweDtcblx0XHR9XG5cdH1cblxuXHQubWFyay13cmFwLFxuXHQubWFyay13cmFwLWRlZyB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0LnNpeC1wcmUge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAyMCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgICAvKiBsZWZ0OiAtMjBweDsgKi9cbiAgICAgICAgICAgIGNvbG9yOiAkbmF2eSAhaW1wb3J0YW50O1xuXHRcdH1cblxuXHRcdC5zdHJpcGUtcG9zdCB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdHJpZ2h0OiAtMTVweDtcblx0XHR9XG5cblx0XHQuc3RyaXBlLXByZSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdGxlZnQ6IC0xMnB4O1xuXHRcdH1cblx0fVxuXG5cdC5tYXJrLXdyYXAtZGVnIHtcblx0XHQuZGVnIHtcblx0XHRcdHdpZHRoOiA4MHB4O1xuXHRcdFx0cGFkZGluZy1sZWZ0OiA2cHg7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiA2cHg7XG5cdFx0fVxuXHRcdFxuXHRcdC5zdHJpcGUtcG9zdCB7XG5cdFx0XHRyaWdodDogLTM3cHg7XG5cdFx0fVxuXHR9XG5cblx0bGFiZWwge1xuXHRcdGNvbG9yOiAkbmF2eSAhaW1wb3J0YW50O1xuXHRcdEBleHRlbmQgLmZvbnQtYm9sZDtcblx0fVxuXG5cdC5tYXJrZXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR0b3A6IDJweDtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdH1cbn1cblxuLmJ0bi1uZXh0IHtcblx0d2lkdGg6IDEyMHB4O1xuXHRAZXh0ZW5kIC5mb250LWJvbGQ7XG59XG5cbi5jaGVjay1sYWJlbCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQuY2hlY2stc3BhbiB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHRvcDogMnB4O1xuXHR9XG59XG5cbi5sZW5zIHtcblx0d2lkdGg6IDIyMHB4O1xufVxuXG4ubGVucy1sYWJlbCB7XG5cdG1hcmdpbi10b3A6IDM0cHg7XG59XG5cbi52aXN1YWwtbGFiZWwge1xuXHRtYXJnaW4tdG9wOiA3MHB4O1xufVxuXG4uZm9ybS1ncm91cC1sYWJlbC10b3Age1xuXHRtYXJnaW4tdG9wOiA0MHB4O1xufVxuXG4uY29sLWJpbiB7XG5cdHBhZGRpbmctbGVmdDogNjBweDtcbn1cblxuLnByZXNzdXJlLXdyYXAge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtcblx0LyogbWF4LXdpZHRoOiA0NjBweDsgKi9cblxuXHQuZm9ybS1ncm91cCB7XG5cdFx0d2lkdGg6IDQwJTtcblx0fVxufVxuXG4uaGFsZi13aWR0aCB7XG5cdG1heC13aWR0aDogNTAlO1xufVxuXG4ucXVhcnRlci13aWR0aCB7XG5cdG1heC13aWR0aDogMjUlO1xufVxuXG4uYmx1ZS1ib3gge1xuXHRib3JkZXI6IDFweCBzb2xpZCAkbmF2eTtcblx0cGFkZGluZzogMTVweDtcblx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHRtYXJnaW4tYm90dG9tOiAxNXB4O1xuXHRib3JkZXItcmFkaXVzOiA4cHg7XG5cdC5oZWFkZXIge1xuXHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblxuXHRcdC5oNCB7XG5cdFx0XHRAZXh0ZW5kIC5mb250LWJvbGQ7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiA1cHg7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblx0fVxufVxuXG4uZXllLWhlYWRpbmcge1xuXHRtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4ub3BlcmF0aW9uLW5vdGUtc2F2ZS13cmFwIHtcblx0bWluLWhlaWdodDogODBweDtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRtYXJnaW46IDIwcHggMDtcblxuXHQucHJvZ3Jlc3Npb24td3JhcCB7XG5cdFx0bWluLXdpZHRoOiAyNTBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRcdC5zYXZlLXByb2dyZXNzIHtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0XHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0XHR9XG5cdH1cblxuXHQucHJvZ3Jlc3Npb24tYWxlcnQtd3JhcCB7XG5cdFx0d2lkdGg6IGNhbGMoMTAwJSAtIDI4MHB4KTtcblxuXHRcdC5hbGVydCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXG5cdFx0XHQmICsgLmFsZXJ0IHtcblx0XHRcdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLnN0YWNrLXZlcnQge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR0b3A6IDJweDtcblx0bWFyZ2luLWxlZnQ6IDEwcHg7XG5cblx0LnJhZGlvLWlubGluZSArIC5yYWRpby1pbmxpbmUge1xuXHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdG1hcmdpbi10b3A6IDVweDtcblx0fVxufVxuXG4ub3B0aW9uYWwge1xuXHRAZXh0ZW5kIC50ZXh0LXB1cnBsZTtcblx0QGV4dGVuZCAuZm9udC1saWdodC1pdGFsaWM7XG59XG5cbi5mbGV4LWJpb21ldHJ5IHtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHQuY29udHJvbC1sYWJlbCB7XG5cdFx0bWFyZ2luLXJpZ2h0OiAxNXB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cbn1cblxuLmJpb21ldHJ5LWlucHV0IHtcblx0d2lkdGg6IDEwMHB4O1xuXHRtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi5heGlzLXdyYXAge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5heGlzLXRpbWVzLFxuLmF4aXMtZGVnIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDUwJTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi5heGlzLXRpbWVzIHtcblx0cmlnaHQ6IGNhbGMoMTAwJSArIDZweCk7XG59XG5cbi5heGlzLWRlZyB7XG5cdGxlZnQ6IDExMHB4O1xufVxuXG4uc2VjdGlvbi1sYWJlbCB7XG5cdG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbi5iaW9tZXRyeSB7XG5cdC5mb3JtLXJvdyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTVweDtcblx0fVxuXHQubGVmdC1jb2x1bW4ge1xuXHRcdHdpZHRoOiAxOHB4O1xuXHR9XG5cdC5mb3JtLWdyb3VwIHtcblx0XHRtYXJnaW4tYm90dG9tOiAwcHg7XG5cdH1cblx0LmhlbHAtYmxvY2sge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR3aWR0aDogMzAwcHg7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxufVxuXG4udGFibGUtaW5jaXNpb25zIHtcblx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHR0aCxcblx0dGQge1xuXHRcdGJvcmRlci1jb2xvcjogJG5hdnkgIWltcG9ydGFudDtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7XG5cdFx0Ym9yZGVyLXRvcDogMCAhaW1wb3J0YW50O1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhci1pdGFsaWM7XG5cdH1cblx0dGQ6bGFzdC1jaGlsZCB7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdH1cblxuXHQucmVtb3ZlLW1lZCB7XG5cdFx0cGFkZGluZzogMDtcblx0XHRtYXJnaW46IDA7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdFx0d2lkdGg6IDI0cHg7XG5cdFx0aGVpZ2h0OiAyNHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogd2hpdGU7XG5cdFx0fVxuXHR9XG59XG5cbi5idG4tYWRkLWluY2lzaW9uIHtcblx0aGVpZ2h0OiAzNHB4O1xuXHR3aWR0aDogMzRweDtcblx0bWFyZ2luLWxlZnQ6IDAuNWVtO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4uZmxleC1hbGxlcmd5IHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHQuZ3JvdyB7XG5cdFx0ZmxleDogMSAwO1xuXHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0fVxufVxuXG4uYW5hZXN0aGV0aWMtd3JhcCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblx0LmZvcm0tZ3JvdXAge1xuXHRcdHdpZHRoOiAyNjBweDtcblx0XHRtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cdH1cblxuXHQuaGVscC1ibG9jayB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdG1hcmdpbi10b3A6IDA7XG5cdH1cbn1cblxuLnRleHQtYXJlYS13cmFwIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdC5jb3VudC1yZW1haW5pbmcge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdHJpZ2h0OiAxNXB4O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXItaXRhbGljO1xuXHR9XG59XG5cbi5kaWFiZXRlcy1wb3AtdXAtd3JhcCB7XG5cdHdpZHRoOiA1MCU7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnJldGlub3BhdGh5LXBvcC11cC1PRCB7XG5cdC5yZXRpbm9wYXRoeS1wb3B1cCB7XG5cdFx0bGVmdDogY2FsYygxMDAlICsgMTBweCk7XG5cdH1cbn1cblxuLnJldGlub3BhdGh5LXBvcC11cC1PUyB7XG5cdC5yZXRpbm9wYXRoeS1wb3B1cCB7XG5cdFx0cmlnaHQ6IGNhbGMoMTAwJSArIDEwcHgpO1xuXHR9XG59XG5cbi5zaG93UmV0aW5vcGF0aHkge1xuXHQucmV0aW5vcGF0aHktcG9wdXAge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG59XG5cbi5tYWN1bG9wYXRoeS1wb3AtdXAtT0Qge1xuXHQubWFjdWxvcGF0aHktcG9wdXAge1xuXHRcdGxlZnQ6IGNhbGMoMTAwJSArIDEwcHgpO1xuXHR9XG59XG5cbi5tYWN1bG9wYXRoeS1wb3AtdXAtT1Mge1xuXHQubWFjdWxvcGF0aHktcG9wdXAge1xuXHRcdHJpZ2h0OiBjYWxjKDEwMCUgKyAxMHB4KTtcblx0fVxufVxuXG4uc2hvd01hY3Vsb3BhdGh5IHtcblx0Lm1hY3Vsb3BhdGh5LXBvcHVwIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxufVxuXG4ucmV0aW5vcGF0aHktcG9wdXAsXG4ubWFjdWxvcGF0aHktcG9wdXAge1xuXHRib3JkZXI6IDFweCBzb2xpZCAkbmF2eTtcblx0cGFkZGluZzogMTVweDtcblx0Zm9udC1zaXplOiAxMHB4O1xuXHRjb2xvcjogJG5hdnk7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuXHR3aWR0aDogNDgwcHg7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ei1pbmRleDogMTtcblx0dG9wOiAwO1xuXHRkaXNwbGF5OiBub25lO1xuXG5cdC50YWJsZS1ib3JkZXJlZCB7XG5cdFx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblxuXHRcdHRoIHtcblx0XHRcdEBleHRlbmQgLmZvbnQtYm9sZC1pdGFsaWM7XG5cdFx0fVxuXG5cdFx0dGgsXG5cdFx0dGQge1xuXHRcdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJG5hdnk7XG5cdFx0XHRib3JkZXItbGVmdDogMXB4IHNvbGlkICRuYXZ5O1xuXG5cdFx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0Ym9yZGVyLWxlZnQ6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRcdGJvcmRlci1yaWdodDogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0cjpsYXN0LWNoaWxkIHtcblx0XHRcdHRkIHtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHRcdFx0cGFkZGluZy1ib3R0b206IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0dGQsXG5cdHAge1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhci1pdGFsaWM7XG5cdH1cblxuXHR0ZCxcblx0dGgge1xuXHRcdGJvcmRlci1jb2xvcjogJG5hdnkgIWltcG9ydGFudDtcblx0fVxuXG5cdHAge1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cbn1cblxuLnJldGlub3BhdGh5LXBvcHVwIHtcblx0dGg6Zmlyc3QtY2hpbGQsXG5cdHRkOmZpcnN0LWNoaWxkIHtcblx0XHR3aWR0aDogMTIwcHg7XG5cdH1cbn1cblxuLm9wZXJhdGlvbi1mb3JtIHtcblx0LmZsZXgtbGVucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblxuXHRcdC5mb3JtLWdyb3VwIHtcblx0XHRcdHdpZHRoOiAxNTBweDtcblx0XHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0XHR9XG5cblx0XHQuZm9ybS1ncm91cC1heGlzIHtcblx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdHdpZHRoOiAxMTBweDtcblx0XHR9XG5cdH1cbn1cblxuLmFsbGVyZ3ktZm9ybS13cmFwIHtcblx0LmhlbHAtYmxvY2sge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0fVxufVxuXG4ubG9jc2lpaS13cmFwIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR3aWR0aDogNTAlO1xufVxuXG4ubG9jc2lpaS1pbWctd3JhcCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0d2lkdGg6IDUwMHB4O1xuXHRpbWcge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbi5sb2NzaWlpLWltZy13cmFwLU9EIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR3aWR0aDogNzAwcHg7XG5cdGxlZnQ6IGNhbGMoMTAwJSArIDE1cHgpO1xuXHR0b3A6IDA7XG5cdHotaW5kZXg6IDE7XG5cdGRpc3BsYXk6IG5vbmU7XG5cblx0aW1nIHtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxufVxuXG4ubG9jc2lpaS1pbWctd3JhcC1PUyB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0d2lkdGg6IDUwMHB4O1xuXHRyaWdodDogY2FsYygxMDAlICsgMTVweCk7XG5cdHRvcDogMDtcblx0ei1pbmRleDogMTtcblx0ZGlzcGxheTogbm9uZTtcblxuXHRpbWcge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbi5zaG93T3BhbCxcbi5zaG93Q29sb3VyLFxuLnNob3dDb3J0aWNhbCxcbi5zaG93UHVwaWwsXG4uc2hvd1N1YiB7XG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG59XG5cbi5vcGVyYXRpb24tbm90ZS1oZWFkZXIge1xuXHQvLyBvdXRsaW5lOiAxcHggZG90dGVkIHBpbms7XG5cdG1hcmdpbi1ib3R0b206IDIwcHg7XG5cblx0LmhlYWQtZmxleCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuXG5cdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdFx0fVxuXHR9XG5cblx0aDMsXG5cdGg0IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0QGV4dGVuZCAuZm9udC1ib2xkO1xuXHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0fVxuXG5cdGg2IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZy1sZWZ0OiAxLjVlbTtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHR9XG5cblx0LmhlYWQtbGluayB7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHR9XG5cblx0LmhlYWQtbmFtZSB7XG5cdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHR9XG5cblx0LmhlYWRlci1sZWZ0LFxuXHQuaGVhZGVyLXJpZ2h0IHtcblx0XHQvLyBvdXRsaW5lOiAxcHggc29saWQgZ3JlZW47XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XG5cdH1cblxuXHQuaGVhZGVyLXJpZ2h0IHtcblx0XHQvLyBtYXJnaW4tcmlnaHQ6IDgwcHg7XG5cdFx0Ly8gb3V0bGluZTogMXB4IHNvbGlkIGJsdWU7XG5cdH1cbn1cblxuLnBvcG92ZXItcHJlb3Atd3JhcCB7XG5cdHBhZGRpbmc6IDIwcHg7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xuXHR3aWR0aDogMzAwcHg7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRsYWJlbCB7XG5cdFx0Y29sb3I6ICRuYXZ5ICFpbXBvcnRhbnQ7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHR9XG5cblx0LmZvcm0tY29udHJvbCB7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHR9XG5cblx0LmZvcm0tZ3JvdXA6bGFzdC1jaGlsZCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0fVxufVxuXG4ucG9wb3ZlciB7XG5cdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cblx0Lm1hcmtlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHRvcDogMnB4O1xuXHR9XG59XG5cbi5wb3BvdmVyLmJvdHRvbSA+IC5hcnJvdyB7XG5cdGJvcmRlci1ib3R0b20tY29sb3I6ICRuYXZ5O1xufVxuXG4uc3Bpbm5lci13cmFwIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4udmVydGljYWwtYnV0dG9ucyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cblx0YnV0dG9uICsgYnV0dG9uIHtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHR9XG59XG5cbi5teS1tb2RhbC1mb290ZXItcGF0aWVudC1kZXRhaWxzIHtcblx0LmJ0bi1uYXZ5IHtcblx0XHR3aWR0aDogMjIwcHg7XG5cdH1cbn1cblxuLmluY2lzaW9ucy1pbWFnZSB7XG5cdHdpZHRoOiAxMDAlO1xuXHRwYWRkaW5nLWxlZnQ6IDVlbTtcblx0cGFkZGluZy1yaWdodDogNWVtO1xuXHRtYXJnaW4tdG9wOiAxZW07XG5cdG1hcmdpbi1ib3R0b206IDJlbTtcbn1cblxuLm1hcmdpbi10b3AtMmVtIHtcblx0bWFyZ2luLXRvcDogMmVtO1xufVxuXG4ubWFyZ2luLXRvcC0xZW0ge1xuXHRtYXJnaW4tdG9wOiAxZW07XG59XG5cbi5wYWRkaW5nLXRvcC1kb3QtNGVtIHtcblx0cGFkZGluZy10b3A6IDAuNGVtO1xufVxuXG4uY3VzdG9tLXNsaWRlci5yenNsaWRlciA6Zm9jdXMge291dGxpbmU6bm9uZTt9XG5cbi5jdXN0b20tc2xpZGVyLnJ6c2xpZGVyIHtcblx0bWFyZ2luLXRvcDogMWVtO1xuXHRtYXJnaW4tYm90dG9tOiAxZW07XG59XG5cbi5jdXN0b20tc2xpZGVyLnJ6c2xpZGVyIC5yei1iYXIge1xuXHRoZWlnaHQ6IDhweDtcblx0Ym9yZGVyLXJhZGl1czogNHB4O1xuICB9XG5cbiAgLmN1c3RvbS1zbGlkZXIucnpzbGlkZXIgLnJ6LXBvaW50ZXIge1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xuXHR0b3A6IGF1dG87IC8qIHRvIHJlbW92ZSB0aGUgZGVmYXVsdCBwb3NpdGlvbmluZyAqL1xuXHRib3R0b206IDA7XG5cdG1hcmdpbi1ib3R0b206IC02cHg7XG4gIH1cbiAgXG4gIC5jdXN0b20tc2xpZGVyLnJ6c2xpZGVyIC5yei1wb2ludGVyOmFmdGVyIHtcblx0ZGlzcGxheTogbm9uZTtcbiAgfVxuICBcbiAgLmN1c3RvbS1zbGlkZXIucnpzbGlkZXIgLnJ6LWJ1YmJsZSB7XG5cdGJvdHRvbTogMTRweDtcbiAgfVxuICBcbiAgLmN1c3RvbS1zbGlkZXIucnpzbGlkZXIgLnJ6LWxpbWl0IHtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICAuY3VzdG9tLXNsaWRlci5yenNsaWRlciAucnotdGljay12YWx1ZSB7XG5cdHRvcDowcHg7XG5cdGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuICBcbiAgLmN1c3RvbS1zbGlkZXIucnpzbGlkZXIgLnJ6LXRpY2sge1xuXHR3aWR0aDogMXB4O1xuXHRoZWlnaHQ6IDEwcHg7XG5cdG1hcmdpbi1sZWZ0OiA4cHg7XG5cdGJvcmRlci1yYWRpdXM6IDA7XG5cdHRvcDogLTFweDtcbiAgfVxuXG4gIC50cmFuc3BhcmVudC1jb2xvciB7XG5cdCAgY29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5idG4td2hpdGUge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGNvbG9yOiAkbmF2eTtcblx0d2lkdGg6IDIwMHB4O1xuXHRib3JkZXItY29sb3I6ICRuYXZ5O1xufVxuXG4ubWFyZ2luLW1pZGRsZSB7XG5cdG1hcmdpbi1sZWZ0OiAxZW07XG5cdG1hcmdpbi1yaWdodDogMWVtO1xufVxuXG4uaGVhZC1saW5rIHtcblx0Y29sb3I6ICRuYXZ5O1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdGZvbnQtc2l6ZTogMTRweDtcblx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcbn1cblxuLmZvbnQtc2l6ZS0xNiB7XG5cdGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLnBvc3RvcGVyYXRpdmUtaGVhZGVyIHtcblx0d2lkdGg6IDEwMCU7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0bWFyZ2luLXRvcDogMmVtO1xuXHRtYXJnaW4tYm90dG9tOiAyZW07XG59XG5cbi5jYXJldCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6IDA7XG5cdGhlaWdodDogMDtcblx0bWFyZ2luLWxlZnQ6IDJweDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0Ym9yZGVyLXRvcDogMHB4IGRhc2hlZDtcblx0Ym9yZGVyLXRvcDogMHB4IHNvbGlkIFxcOTtcblx0Ym9yZGVyLXJpZ2h0OiAwcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci1sZWZ0OiAwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIH1cblxuLmZvbnQtcmVndWxhciB7XG5cdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBSZWd1bGFyJyAhaW1wb3J0YW50O1xufVxuXG4uZm9udC1zaXplLTgge1xuXHRmb250LXNpemU6IDhweCAhaW1wb3J0YW50O1xufVxuLm1hcmdpbi10by1yaWdodCB7XG5cdG1hcmdpbi1sZWZ0OiA1MCU7XG59XG5cbi5ncmlkLWNvbHVtbi1uby1wYWRkaW5nIHtcblx0cGFkZGluZy1sZWZ0OiAwcHg7XG5cdHBhZGRpbmctcmlnaHQ6IDBweDtcblxufVxuLnNlbGVjdC1uby1tYXJnaW4ge1xuXHRtYXJnaW4tcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEluamVjdGlvbiBub3RlIGluamVjdGlvbnMgKHBlci1pbmplY3Rpb24gYmxvY2sgKyBkcnVnIGJhdGNoKVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBFYWNoIGluamVjdGlvbiBpcyBlZGl0ZWQgaW4gcGxhY2UgaW4gaXRzIG93biBjYXJkLCBzbyBhIHByZS1maWxsZWQgb25lIGlzXG4gICB2aXNpYmxlIGluIHRoZSBmaWVsZHMgcmF0aGVyIHRoYW4gc3VtbWFyaXNlZCB1bmRlcm5lYXRoIHRoZW0uICovXG4uaW5qZWN0aW9uLWJsb2NrIHtcblx0LmluamVjdGlvbi1ibG9jay1oZWFkZXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0fVxuXG5cdC5pbmplY3Rpb24tYmxvY2stdGl0bGUge1xuXHRcdEBleHRlbmQgLmZvbnQtYm9sZDtcblx0XHRAZXh0ZW5kIC50ZXh0LW5hdnk7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcblx0fVxuXG5cdC5yZW1vdmUtbWVkIHtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdG1hcmdpbjogMDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkbmF2eTtcblx0XHR3aWR0aDogMjRweDtcblx0XHRoZWlnaHQ6IDI0cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblx0fVxufVxuXG4uYnRuLWFkZC1pbmplY3Rpb24ge1xuXHR3aWR0aDogYXV0bztcblx0bWF4LXdpZHRoOiBub25lO1xuXHRwYWRkaW5nOiA2cHggMTZweDtcbn1cblxuLyogQmF0Y2ggbnVtYmVyIGFuZCBleHBpcnkgc2l0IGJlc2lkZSB0aGUgbWVkaWNhdGlvbiB0aGV5IGJlbG9uZyB0by4gRXZlcnl0aGluZ1xuICAgZWxzZSBvbiBhbiBpbmplY3Rpb24gaXMgdXN1YWxseSBwcmUtZmlsbGVkIGZyb20gdGhlIHBhdGllbnQncyBzZXR0aW5ncywgc28gdGhlXG4gICBwYWlyIGdldHMgYSBsaWdodCBhY2NlbnQgdG8gc2V0IGl0IGFwYXJ0IOKAlCBlbm91Z2ggdG8gY2F0Y2ggdGhlIGV5ZSBvbiB0aGUgd2F5XG4gICBwYXN0LCBub3QgZW5vdWdoIHRvIHNob3V0LiAqL1xuLmJhdGNoLWZpZWxkcyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGdhcDogMTBweDtcblx0cGFkZGluZzogOHB4IDEwcHg7XG5cdGJvcmRlci1sZWZ0OiAzcHggc29saWQgJHllbGxvdztcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3ctdHAtMTA7XG5cblx0LmJhdGNoLWZpZWxkIHtcblx0XHRmbGV4OiAxIDEgMDtcblx0XHRtaW4td2lkdGg6IDA7XG5cdH1cblxuXHQvKiA8ZGF0ZXBpY2tlcj4gaXMgYSBjdXN0b20gZWxlbWVudCwgc28gaXQgbmVlZHMgYSBib3ggb2YgaXRzIG93biBiZWZvcmUgdGhlXG5cdCAgIGlucHV0IGluc2lkZSBpdCBjYW4gZmlsbCB0aGUgZmllbGQgYW5kIHRoZSBjYWxlbmRhciBjYW4gYW5jaG9yIHRvIGl0LiAqL1xuXHRkYXRlcGlja2VyIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdH1cblxuXHQuY29udHJvbC1sYWJlbCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMnB4O1xuXHR9XG59XG5cbi5iYXRjaC13YXJuaW5nIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG1hcmdpbi10b3A6IDRweDtcblx0Zm9udC1zaXplOiAxMXB4O1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG5cdGNvbG9yOiAkZGFuZ2VyO1xufVxuIiwiLyohXG4gKiB1aS1zZWxlY3RcbiAqIGh0dHA6Ly9naXRodWIuY29tL2FuZ3VsYXItdWkvdWktc2VsZWN0XG4gKiBWZXJzaW9uOiAwLjE4LjAgLSAyMDE2LTA2LTE0VDA2OjU0OjQzLjE1OVpcbiAqIExpY2Vuc2U6IE1JVFxuICovXG5cbi8qIFN0eWxlIHdoZW4gaGlnaGxpZ2h0aW5nIGEgc2VhcmNoLiAqL1xuLnVpLXNlbGVjdC1oaWdobGlnaHQge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4udWktc2VsZWN0LW9mZnNjcmVlbiB7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKSAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiAxcHggIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gICAgb3V0bGluZTogMCAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICAgIHRvcDogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi51aS1zZWxlY3QtY2hvaWNlcy1yb3c6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG59XG5cbi51aS1zZWxlY3QtY2hvaWNlcy1yb3cge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5zZWxlY3RpemUtY29udHJvbC5zaW5nbGUgLnNlbGVjdGl6ZS1pbnB1dCB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xufVxuLyogU2VsZWN0MiB0aGVtZSAqL1xuXG4vKiBNYXJrIGludmFsaWQgU2VsZWN0MiAqL1xuLm5nLWRpcnR5Lm5nLWludmFsaWQgPiBhLnNlbGVjdDItY2hvaWNlIHtcbiAgICBib3JkZXItY29sb3I6ICNkNDQ5NTA7XG59XG5cbi5zZWxlY3QyLXJlc3VsdC1zaW5nbGUge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLnNlbGVjdDItbG9ja2VkID4gLnNlbGVjdDItc2VhcmNoLWNob2ljZS1jbG9zZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLnNlbGVjdC1sb2NrZWQgPiAudWktc2VsZWN0LW1hdGNoLWNsb3NlIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG5ib2R5ID4gLnNlbGVjdDItY29udGFpbmVyLm9wZW4ge1xuICAgIHotaW5kZXg6IDk5OTk7IC8qIFRoZSB6LWluZGV4IFNlbGVjdDIgYXBwbGllcyB0byB0aGUgc2VsZWN0Mi1kcm9wICovXG59XG5cbi8qIEhhbmRsZSB1cCBkaXJlY3Rpb24gU2VsZWN0MiAqL1xuLnVpLXNlbGVjdC1jb250YWluZXJbdGhlbWU9XCJzZWxlY3QyXCJdLmRpcmVjdGlvbi11cCAudWktc2VsZWN0LW1hdGNoIHtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7IC8qIEZJWE1FIGhhcmRjb2RlZCB2YWx1ZSA6LS8gKi9cbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xufVxuLnVpLXNlbGVjdC1jb250YWluZXJbdGhlbWU9XCJzZWxlY3QyXCJdLmRpcmVjdGlvbi11cCAudWktc2VsZWN0LWRyb3Bkb3duIHtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7IC8qIEZJWE1FIGhhcmRjb2RlZCB2YWx1ZSA6LS8gKi9cbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMXB4OyAvKiBGSVhNRSBoYXJkY29kZWQgdmFsdWUgOi0vICovXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG5cbiAgICBib3gtc2hhZG93OiAwIC00cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG5cbiAgICBtYXJnaW4tdG9wOiAtNHB4OyAvKiBGSVhNRSBoYXJkY29kZWQgdmFsdWUgOi0vICovXG59XG4udWktc2VsZWN0LWNvbnRhaW5lclt0aGVtZT1cInNlbGVjdDJcIl0uZGlyZWN0aW9uLXVwIC51aS1zZWxlY3QtZHJvcGRvd24gLnNlbGVjdDItc2VhcmNoIHtcbiAgICBtYXJnaW4tdG9wOiA0cHg7IC8qIEZJWE1FIGhhcmRjb2RlZCB2YWx1ZSA6LS8gKi9cbn1cbi51aS1zZWxlY3QtY29udGFpbmVyW3RoZW1lPVwic2VsZWN0MlwiXS5kaXJlY3Rpb24tdXAuc2VsZWN0Mi1kcm9wZG93bi1vcGVuIC51aS1zZWxlY3QtbWF0Y2gge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICM1ODk3ZmI7XG59XG4vKiBTZWxlY3RpemUgdGhlbWUgKi9cblxuLyogSGVscGVyIGNsYXNzIHRvIHNob3cgc3R5bGVzIHdoZW4gZm9jdXMgKi9cbi5zZWxlY3RpemUtaW5wdXQuc2VsZWN0aXplLWZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG5cbi5zZWxlY3RpemUtaW5wdXQgPiBpbnB1dDpmb2N1cyB7XG4gICAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgIG91dGxpbmUtY29sb3I6IHJlZDtcbiAgICAvKiBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7ICovXG59XG5cbi5zZWxlY3RpemUtY29udHJvbC5zaW5nbGUgLnNlbGVjdGl6ZS1pbnB1dCxcbi5zZWxlY3RpemUtZHJvcGRvd24uc2luZ2xlIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKiBGaXggaW5wdXQgd2lkdGggZm9yIFNlbGVjdGl6ZSB0aGVtZSAqL1xuLnNlbGVjdGl6ZS1jb250cm9sID4gLnNlbGVjdGl6ZS1pbnB1dCA+IGlucHV0IHtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLyogRml4IGRyb3Bkb3duIHdpZHRoIGZvciBTZWxlY3RpemUgdGhlbWUgKi9cbi5zZWxlY3RpemUtY29udHJvbCA+IC5zZWxlY3RpemUtZHJvcGRvd24ge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4uc2VsZWN0aXplLWNvbnRyb2wuc2luZ2xlIC5zZWxlY3RpemUtaW5wdXQsXG7CoC5zZWxlY3RpemUtZHJvcGRvd24uc2luZ2xlwqAge1xuICAgIGJvcmRlci1jb2xvcjogIzM4NTBhMiAhaW1wb3J0YW50O1xuICAgIC8qIGJvcmRlcjogMXB4IHNvbGlkICMzODUwYTIgIWltcG9ydGFudDsgKi9cbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IC00cHg7XG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBNYXJrIGludmFsaWQgU2VsZWN0aXplICovXG4ubmctZGlydHkubmctaW52YWxpZCA+IGRpdi5zZWxlY3RpemUtaW5wdXQge1xuICAgIGJvcmRlci1jb2xvcjogI2Q0NDk1MDtcbn1cblxuLnNlbGVjdGl6ZS1kcm9wZG93biB7XG4gICAgYm9yZGVyOiAwcHggc29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKiBIYW5kbGUgdXAgZGlyZWN0aW9uIFNlbGVjdGl6ZSAqL1xuLnVpLXNlbGVjdC1jb250YWluZXJbdGhlbWU9XCJzZWxlY3RpemVcIl0uZGlyZWN0aW9uLXVwIC51aS1zZWxlY3QtZHJvcGRvd24ge1xuICAgIGJveC1zaGFkb3c6IDAgLTRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcblxuICAgIG1hcmdpbi10b3A6IC0ycHg7IC8qIEZJWE1FIGhhcmRjb2RlZCB2YWx1ZSA6LS8gKi9cbn1cblxuLyogQm9vdHN0cmFwIHRoZW1lICovXG5cbi8qIEhlbHBlciBjbGFzcyB0byBzaG93IHN0eWxlcyB3aGVuIGZvY3VzICovXG4uYnRuLWRlZmF1bHQtZm9jdXMge1xuICAgIGNvbG9yOiAjMzMzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmViZWI7XG4gICAgYm9yZGVyLWNvbG9yOiAjYWRhZGFkO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgOHB4IHJnYmEoMTAyLCAxNzUsIDIzMywgMC42KTtcbn1cblxuLnVpLXNlbGVjdC1ib290c3RyYXAgLnVpLXNlbGVjdC10b2dnbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnVpLXNlbGVjdC1ib290c3RyYXAgLnVpLXNlbGVjdC10b2dnbGUgPiAuY2FyZXQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgdG9wOiA1MCU7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgbWFyZ2luLXRvcDogLTJweDtcbn1cblxuLyogRml4IEJvb3RzdHJhcCBkcm9wZG93biBwb3NpdGlvbiB3aGVuIGluc2lkZSBhIGlucHV0LWdyb3VwICovXG4uaW5wdXQtZ3JvdXAgPiAudWktc2VsZWN0LWJvb3RzdHJhcC5kcm9wZG93biB7XG4gICAgLyogSW5zdGVhZCBvZiByZWxhdGl2ZSAqL1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG59XG5cbi5pbnB1dC1ncm91cCA+IC51aS1zZWxlY3QtYm9vdHN0cmFwID4gaW5wdXQudWktc2VsZWN0LXNlYXJjaC5mb3JtLWNvbnRyb2wge1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDsgLyogRklYTUUgaGFyZGNvZGVkIHZhbHVlIDotLyAqL1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuLmlucHV0LWdyb3VwID4gLnVpLXNlbGVjdC1ib290c3RyYXAgPiBpbnB1dC51aS1zZWxlY3Qtc2VhcmNoLmZvcm0tY29udHJvbC5kaXJlY3Rpb24tdXAge1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50OyAvKiBGSVhNRSBoYXJkY29kZWQgdmFsdWUgOi0vICovXG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50O1xufVxuXG4udWktc2VsZWN0LWJvb3RzdHJhcCA+IC51aS1zZWxlY3QtbWF0Y2ggPiAuYnRuIHtcbiAgICAvKiBJbnN0ZWFkIG9mIGNlbnRlciBiZWNhdXNlIG9mIC5idG4gKi9cbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG59XG5cbi51aS1zZWxlY3QtYm9vdHN0cmFwID4gLnVpLXNlbGVjdC1tYXRjaCA+IC5jYXJldCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNDUlO1xuICAgIHJpZ2h0OiAxNXB4O1xufVxuXG4vKiBTZWUgU2Nyb2xsYWJsZSBNZW51IHdpdGggQm9vdHN0cmFwIDMgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xOTIyNzQ5NiAqL1xuLnVpLXNlbGVjdC1ib290c3RyYXAgPiAudWktc2VsZWN0LWNob2ljZXMsXG4udWktc2VsZWN0LWJvb3RzdHJhcCA+IC51aS1zZWxlY3Qtbm8tY2hvaWNlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWF4LWhlaWdodDogMjAwcHg7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIG1hcmdpbi10b3A6IC0xcHg7XG59XG5cbmJvZHkgPiAudWktc2VsZWN0LWJvb3RzdHJhcC5vcGVuIHtcbiAgICB6LWluZGV4OiAxMDAwOyAvKiBTdGFuZGFyZCBCb290c3RyYXAgZHJvcGRvd24gei1pbmRleCAqL1xufVxuXG4udWktc2VsZWN0LW11bHRpcGxlLnVpLXNlbGVjdC1ib290c3RyYXAge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAzcHggM3B4IDAgM3B4O1xufVxuXG4udWktc2VsZWN0LW11bHRpcGxlLnVpLXNlbGVjdC1ib290c3RyYXAgaW5wdXQudWktc2VsZWN0LXNlYXJjaCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgLyogVG8gcHJldmVudCBkb3VibGUgYmFja2dyb3VuZCB3aGVuIGRpc2FibGVkICovXG4gICAgYm9yZGVyOiBub25lO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgaGVpZ2h0OiAxLjY2NjY2NmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDNweDtcbn1cblxuLnVpLXNlbGVjdC1tdWx0aXBsZS51aS1zZWxlY3QtYm9vdHN0cmFwIC51aS1zZWxlY3QtbWF0Y2ggLmNsb3NlIHtcbiAgICBmb250LXNpemU6IDEuNmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAwLjc1O1xufVxuXG4udWktc2VsZWN0LW11bHRpcGxlLnVpLXNlbGVjdC1ib290c3RyYXAgLnVpLXNlbGVjdC1tYXRjaC1pdGVtIHtcbiAgICBvdXRsaW5lOiAwO1xuICAgIG1hcmdpbjogMCAzcHggM3B4IDA7XG59XG5cbi51aS1zZWxlY3QtbXVsdGlwbGUgLnVpLXNlbGVjdC1tYXRjaC1pdGVtIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi51aS1zZWxlY3QtbXVsdGlwbGUgLnVpLXNlbGVjdC1tYXRjaC1pdGVtLmRyb3BwaW5nIC51aS1zZWxlY3QtbWF0Y2gtY2xvc2Uge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4udWktc2VsZWN0LW11bHRpcGxlOmhvdmVyIC51aS1zZWxlY3QtbWF0Y2gtaXRlbS5kcm9wcGluZy1iZWZvcmU6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1yaWdodDogMnB4O1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzQyOGJjYTtcbn1cblxuLnVpLXNlbGVjdC1tdWx0aXBsZTpob3ZlciAudWktc2VsZWN0LW1hdGNoLWl0ZW0uZHJvcHBpbmctYWZ0ZXI6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tbGVmdDogMnB4O1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM0MjhiY2E7XG59XG5cbi51aS1zZWxlY3QtYm9vdHN0cmFwIC51aS1zZWxlY3QtY2hvaWNlcy1yb3cgPiBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICAgIGNvbG9yOiAjMzMzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi51aS1zZWxlY3QtYm9vdHN0cmFwIC51aS1zZWxlY3QtY2hvaWNlcy1yb3cgPiBhOmhvdmVyLFxuLnVpLXNlbGVjdC1ib290c3RyYXAgLnVpLXNlbGVjdC1jaG9pY2VzLXJvdyA+IGE6Zm9jdXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogIzI2MjYyNjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuXG4udWktc2VsZWN0LWJvb3RzdHJhcCAudWktc2VsZWN0LWNob2ljZXMtcm93LmFjdGl2ZSA+IGEge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0MjhiY2E7XG59XG5cbi51aS1zZWxlY3QtYm9vdHN0cmFwIC51aS1zZWxlY3QtY2hvaWNlcy1yb3cuZGlzYWJsZWQgPiBhLFxuLnVpLXNlbGVjdC1ib290c3RyYXAgLnVpLXNlbGVjdC1jaG9pY2VzLXJvdy5hY3RpdmUuZGlzYWJsZWQgPiBhIHtcbiAgICBjb2xvcjogIzc3NztcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbi8qIGZpeCBoaWRlL3Nob3cgYW5ndWxhciBhbmltYXRpb24gKi9cbi51aS1zZWxlY3QtbWF0Y2gubmctaGlkZS1hZGQsXG4udWktc2VsZWN0LXNlYXJjaC5uZy1oaWRlLWFkZCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBNYXJrIGludmFsaWQgQm9vdHN0cmFwICovXG4udWktc2VsZWN0LWJvb3RzdHJhcC5uZy1kaXJ0eS5uZy1pbnZhbGlkID4gYnV0dG9uLmJ0bi51aS1zZWxlY3QtbWF0Y2gge1xuICAgIGJvcmRlci1jb2xvcjogI2Q0NDk1MDtcbn1cblxuLyogSGFuZGxlIHVwIGRpcmVjdGlvbiBCb290c3RyYXAgKi9cbi51aS1zZWxlY3QtY29udGFpbmVyW3RoZW1lPVwiYm9vdHN0cmFwXCJdLmRpcmVjdGlvbi11cCAudWktc2VsZWN0LWRyb3Bkb3duIHtcbiAgICBib3gtc2hhZG93OiAwIC00cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG59XG5cbi5zZWxlY3RpemUtY29udHJvbC5zaW5nbGUgLnNlbGVjdGl6ZS1pbnB1dDphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIHJpZ2h0OiA1cHggIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogN3B4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiA3cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW4tdG9wOiAtNXB4ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbG9yOiAkbmF2eSAkbmF2eSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgIWltcG9ydGFudDtcbiAgICBib3JkZXItd2lkdGg6IDJweCAycHggMHB4IDBweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7XG59XG5cbi5saXN0Y2xhc3Mge1xuICAgIGJvcmRlci1yYWRpdXM6IDJweCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG59IiwiLnByZW1pdW0tbGVucy1wcmljZS1ib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4O1xuICAgIG1hcmdpbi1sZWZ0OiAtMTVweDtcbiAgICAvKiBib3JkZXItYm90dG9tOiAxcHggc29saWQgJG5hdnk7ICovXG59XG5cbi5oNC1tZWRpdW0ge1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbi5uYXZ5LWNvbG9yIHtcbiAgICBjb2xvcjogJG5hdnkgIWltcG9ydGFudDtcbn1cbi5mbGV4LXJvdyB7XG4gICAgd2lkdGg6IDIwJTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxZW07XG59XG4uZG9sbGFyIHtcbiAgICBtYXJnaW4tbGVmdDogLTZlbTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcGFkZGluZy10b3A6IDAuOGVtO1xufVxuXG4uZG9sbGFyLW5vbi10b3JpYyB7XG4gICAgbWFyZ2luLWxlZnQ6IC02ZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHBhZGRpbmctdG9wOiAwLjhlbTtcbn1cblxuLnBhZGRpbmctemVybyB7XG4gICAgcGFkZGluZy10b3A6IDBweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMHB4O1xuICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG5cbi5hbGlnbi1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4ubmV4dC1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQcmVtaXVtIGxlbnMgcHJpY2VzIChzZXR0aW5ncylcbi8qIEEgcHJhY3RpY2UncyBvd24gcHJpY2UgZm9yIGVhY2ggbGVucywgdG9yaWMgYW5kIG5vbi10b3JpYy4gVGhlXG4vKiBjYXJkcywgZmVlIGlucHV0cywgbm90aWNlcyBhbmQgYWN0aW9uIGJhciBjb21lIGZyb20gX3NldHRpbmdzLmNzcy5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zZXR0aW5ncy1zaGVsbCAucHJlbWl1bS1sZW5zLXByaWNlcyB7XG4gICAgLmNhcmQtaGVhZGVyLWZsZXgge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICB9XG5cbiAgICAucGxwLXRhYmxlIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogNjIwcHg7XG4gICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcblxuICAgICAgICA+IHRoZWFkID4gdHIgPiB0aCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDEycHggOHB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgICAgICBjb2xvcjogI2EzYWFjMDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICA+IHRib2R5ID4gdHIgPiB0aCxcbiAgICAgICAgPiB0Ym9keSA+IHRyID4gdGQge1xuICAgICAgICAgICAgcGFkZGluZzogNXB4IDEycHg7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgPiB0Ym9keSA+IHRyID4gdGhbc2NvcGU9XCJyb3dcIl0ge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcbiAgICAgICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBscC1wcmljZS1jb2wge1xuICAgICAgICAgICAgd2lkdGg6IDE3MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZlZS1pbnB1dCAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIFBhbGUgZW5vdWdoIHRvIHJlYWQgYXMgXCJub3RoaW5nIHNldFwiIHJhdGhlciB0aGFuIGFzIGEgcHJpY2Ugb2YgemVybyAqL1xuICAgICAgICAuZm9ybS1jb250cm9sOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICBjb2xvcjogI2MzYzlkYTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuaGFzLWVycm9yIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggJHJlZC1kYW5nZXItYWx0LXRwLTE1O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyogQSBoZWFkaW5nIGFjcm9zcyB0aGUgdGFibGUgYmV0d2VlbiB0aGUgdHdvIGtpbmRzIG9mIGxlbnMgKi9cbiAgICAucGxwLWdyb3VwLXJvdyA+IHRoIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAxMnB4IDZweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICBjb2xvcjogJG5hdnk7XG5cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG4gICAgICAgICAgICBjb2xvcjogI2EzYWFjMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRib2R5ID4gLnBscC1ncm91cC1yb3c6Zmlyc3QtY2hpbGQgPiB0aCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgfVxuXG4gICAgLnBscC1pbmNsdWRlZCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICBjb2xvcjogI2EzYWFjMDtcbiAgICB9XG5cbiAgICAucGxwLWVtYWlsLWZpZWxkIHtcbiAgICAgICAgbWF4LXdpZHRoOiA0MjBweDtcbiAgICB9XG5cbiAgICAvKiBSZWFkIG9ubHkgZm9yIGFueW9uZSB3aG8gY2Fubm90IGNoYW5nZSB0aGUgcHJpY2VzOyBvdGhlcndpc2UganVzdCB0aGUgc3RhY2sgb2YgY2FyZHMgKi9cbiAgICAucGxwLWZpZWxkc2V0IHtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICB9XG5cbiAgICAucGxwLXJldHJ5IHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1hcmdpbjogLTNweCAwIC0zcHggYXV0bztcbiAgICAgICAgcGFkZGluZzogNHB4IDE0cHg7XG4gICAgfVxuXG4gICAgLnNldHRpbmdzLW5vdGljZSAubm90aWNlLXRleHQge1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cbn1cblxuLyogVG9yaWMgLyBub24tdG9yaWM6IGVhY2ggY2hvaWNlIGlzIG9uZSBidXR0b24gLSB0aGUgd2hvbGUgbGFiZWwgaXMgd2hhdCBpcyBjbGlja2VkIGFuZCB3aGF0IHNob3dzIGl0IGlzXG4gICBjaG9zZW4sIGluIHRoZSBzdGVwJ3Mgb3duIGNvbG91cnM6IGdyZWVuIHJlY29tbWVuZGVkLCByZWQgdXNlIHdpdGggY2F1dGlvbiwgbmF2eSB3aXRoIG5vIHN1Z2dlc3Rpb24uIFRoZVxuICAgcmFkaW8gc3RheXMgZm9yIHRoZSBrZXlib2FyZCBhbmQgc2NyZWVuIHJlYWRlcnMsIGhpZGRlbjsgdGhlIGxhYmVsIGZpbGxzIHdpdGggaXRzIGNvbG91ciB3aGVuIGNob3Nlbi4gKi9cbi5wcmVtaXVtLWxlbnMtdHlwZS1vcHRpb24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1pbi13aWR0aDogMTA0cHg7XG4gICAgbWFyZ2luOiAwIDNweCA2cHg7XG4gICAgcGFkZGluZzogM3B4IDEycHg7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCAkbmF2eTtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG5cbiAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIC8qIFRoZSBtYXJrZXIgaXMgdGhlIGxhYmVsJ3MgdGV4dCBub3csIG5vdCBhIGNhcHRpb24gYmVzaWRlIGEgZG90OiBkcm9wIHRoZSBjYXB0aW9uJ3Mgc3BhY2luZywgc2l6ZSBhbmQgdGhlXG4gICAgICAgMnB4IG51ZGdlIGl0IGdldHMgZnJvbSB0aGUgc3RlcCdzIG93biAubWFya2VyIHJ1bGUsIHNvIHRoZSB0ZXh0IHNpdHMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgYnV0dG9uICovXG4gICAgLm1hcmtlciB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjNweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG4gICAgfVxuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcbiAgICB9XG5cbiAgICAvKiBCb3JkZXIgY29sb3VycyBhcmUgc2V0IG91dHJpZ2h0OiB0aGUgc3RlcCBtYWtlcyBldmVyeSBsYWJlbCdzIHRleHQgbmF2eSAhaW1wb3J0YW50LCBzbyBjdXJyZW50Q29sb3JcbiAgICAgICB3b3VsZCBhbHdheXMgYmUgbmF2eSAqL1xuICAgICYuY3VzdG9tZXJfcmFkaW9fZ3JlZW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IGdyZWVuO1xuICAgIH1cblxuICAgICYuY3VzdG9tZXJfcmFkaW9fcmVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZWQ7XG4gICAgfVxuXG4gICAgLyogVGhlIGNvbG91cnMgYWJvdmUgYXJlICFpbXBvcnRhbnQgb24gLm1hcmtlciAoX3ByZS1vcC5jc3MpLCBzbyBjaG9zZW4gdGV4dCBuZWVkcyBpdCB0byB0dXJuIHdoaXRlICovXG4gICAgJi5pcy1jaGVja2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJG5hdnk7XG5cbiAgICAgICAgLm1hcmtlciB7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLmN1c3RvbWVyX3JhZGlvX2dyZWVuIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBncmVlbjtcbiAgICAgICAgfVxuXG4gICAgICAgICYuY3VzdG9tZXJfcmFkaW9fcmVkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmVkO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyogVGhlIHBhdGllbnQtZmFjaW5nIGNvbnRhY3QgdmVyaWZpY2F0aW9uIHBhZ2UuIFN0eWxlZCB0byBzaXQgYWxvbmdzaWRlIHRoZSBwcmVtaXVtIGxlbnMgc2VsZWN0aW9uXG4gICBmb3JtIC0gYm90aCBhcmUgc3RhbmRhbG9uZSBwYWdlcyBhIHBhdGllbnQgcmVhY2hlcyBmcm9tIGFuIGVtYWlsZWQgbGluaywgbm90IGFwcCBzY3JlZW5zLlxuXG4gICBUd28gdGhpbmdzIGRyaXZlIHRoZSBjaG9pY2VzIGJlbG93LiBGaXJzdCwgdGhlIHBhZ2UgaW5oZXJpdHMgYGZvbnQtc2l6ZTogMTJweGAgZnJvbSBodG1sL2JvZHlcbiAgIChfdXRpbC5jc3MpLCB3aGljaCBpcyB0b28gc21hbGwgZm9yIGEgcGF0aWVudC1mYWNpbmcgcGFnZSwgc28gdHlwZSBzaXplcyBoZXJlIGFyZSBleHBsaWNpdCBweFxuICAgcmF0aGVyIHRoYW4gcmVtLiBTZWNvbmQsIHRoaXMgaXMgb3BlbmVkIGZyb20gYSB0ZXh0IG1lc3NhZ2Ugb24gd2hhdGV2ZXIgcGhvbmUgdGhlIHBhdGllbnQgb3ducyxcbiAgIHNvIHNwYWNpbmcgdXNlcyBtYXJnaW5zIHJhdGhlciB0aGFuIGZsZXggYGdhcGAgKGlnbm9yZWQgYmVsb3cgaU9TIDE0LjEpIGFuZCBjb250cm9scyBhcmUgc2l6ZWRcbiAgIGZvciBhIHRodW1iLiBFdmVyeXRoaW5nIGlzIHNjb3BlZCBzbyBub25lIG9mIGl0IGxlYWtzIGludG8gYXBwIHNjcmVlbnMuICovXG5cbi5wYXRpZW50LXZlcmlmaWNhdGlvbi1wYWdlIHtcblx0LyogUmVwbGFjZXMgYSBzcGFjZXIgPGRpdiBzdHlsZT1cImhlaWdodDoxMHJlbVwiPiB0aGF0IHVzZWQgdG8gc2l0IGFib3ZlIHRoZSBjYXJkLiAqL1xuXHRwYWRkaW5nOiAzcmVtIDA7XG59XG5cbi5wYXRpZW50LXZlcmlmaWNhdGlvbi1mb3JtIHtcblxuXHQudmlldy13cmFwIHtcblx0XHRwYWRkaW5nOiAycmVtIDEuNXJlbSAyLjVyZW07XG5cdH1cblxuXHQvKiBPbmUgY2VudHJlZCBtZWFzdXJlIGZvciB0aGUgd2hvbGUgY2FyZCwgc28gdGhlIGhlYWRpbmcsIGNvZGUgYm94ZXMsIGNvbnNlbnRzIGFuZCBidXR0b24gc2hhcmVcblx0ICAgYSBsZWZ0IGFuZCByaWdodCBlZGdlIGluc3RlYWQgb2YgZWFjaCBibG9jayBwaWNraW5nIGl0cyBvd24gZ3JpZCBjb2x1bW5zLiAqL1xuXHQucHYtcGFuZWwge1xuXHRcdG1heC13aWR0aDogNDQwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cdH1cblxuXHQucHYtc3RhdHVzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdHBhZGRpbmc6IDRyZW0gMDtcblx0fVxuXG5cdC5wdi1sb2dvIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR3aWR0aDogMTgwcHg7XG5cdFx0bWF4LXdpZHRoOiA2MCU7XG5cdFx0bWFyZ2luOiAwIGF1dG8gMnJlbTtcblx0fVxuXG5cdC5wdi10aXRsZSB7XG5cdFx0bWFyZ2luOiAwIDAgMXJlbTtcblx0XHRmb250LXNpemU6IDI0cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuMztcblx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQucHYtbGVkZSB7XG5cdFx0bWFyZ2luOiAwIDAgMi41cmVtO1xuXHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRsaW5lLWhlaWdodDogMS42O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQvKiBGaWVsZHNldHMgY2FycnkgdGhlIGdyb3VwaW5nIHNlbWFudGljcyBmb3IgdGhlIGNvZGUgYm94ZXMgYW5kIHRoZSBjb25zZW50cy4gQm9vdHN0cmFwJ3MgbGVnZW5kXG5cdCAgIGRlZmF1bHRzICgxMDAlIHdpZGUsIDIxcHgsIGJvdHRvbSBib3JkZXIpIHdvdWxkIGRyYXcgYSBydWxlIGFjcm9zcyB0aGUgY2FyZCwgc28gcmVzZXQgdGhlbS4gKi9cblx0LnB2LWZpZWxkc2V0IHtcblx0XHRtYXJnaW46IDAgMCAyLjVyZW07XG5cdFx0cGFkZGluZzogMDtcblx0XHRib3JkZXI6IDA7XG5cdH1cblxuXHQvKiB3aWR0aDoxMDAlLCBub3QgYXV0by4gQSA8bGVnZW5kPiBzaHJpbmstd3JhcHMgaXRzIGNvbnRlbnQsIHNvIGB0ZXh0LWFsaWduOiBjZW50ZXJgIGhhcyBub3RoaW5nXG5cdCAgIHRvIGNlbnRyZSB3aXRoaW4gYW5kIHRoZSBoZWFkaW5nIHNpdHMgYWdhaW5zdCB0aGUgbGVmdCBlZGdlIG9mIHRoZSBmaWVsZHNldC4gVGhpcyByZXN0b3JlcyB0aGVcblx0ICAgYmxvY2svZnVsbC13aWR0aCBwYXJ0IG9mIEJvb3RzdHJhcCdzIG93biBsZWdlbmQgcnVsZSB3aGlsZSBzdGlsbCBkcm9wcGluZyB0aGUgYm9yZGVyIGFuZCBzaXplXG5cdCAgIGl0IGFsc28gYnJpbmdzLiAqL1xuXHQucHYtbGVnZW5kIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMDtcblx0XHRib3JkZXI6IDA7XG5cdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG5cblx0LyogUHJvZ3Jlc3MgaGVhZGVyLiBUaGUgcGFnZSBpcyBvbmUgc3RlcCBhdCBhIHRpbWUgbm93LCBhbmQgYSBwYXRpZW50IHJlYWRpbmcgdGhpcyBvbiBhIHBob25lXG5cdCAgIG5lZWRzIHRvIGtub3cgaG93IG11Y2ggaXMgbGVmdCBiZWZvcmUgdGhleSBzdGFydCByYXRoZXIgdGhhbiBkaXNjb3ZlcmluZyBpdCBhIHN0ZXAgYXQgYSB0aW1lLlxuXHQgICBUaGUgYmFyIGlzIGRlY29yYXRpdmUgLSB0aGUgY291bnQgYmVuZWF0aCBpdCBpcyB3aGF0IGNhcnJpZXMgdGhlIGluZm9ybWF0aW9uLCBhbmQgaXQgaXMgdGhlXG5cdCAgIHBhcnQgYSBzY3JlZW4gcmVhZGVyIGFubm91bmNlcy4gKi9cblx0LnB2LXByb2dyZXNzIHtcblx0XHRtYXJnaW46IDAgMCAycmVtO1xuXHR9XG5cblx0LnB2LXByb2dyZXNzLWJhciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRtYXJnaW46IDAgMCAwLjVyZW07XG5cdH1cblxuXHQvKiBNYXJnaW4gcmF0aGVyIHRoYW4gZmxleCBgZ2FwYCwgd2hpY2ggaXMgaWdub3JlZCBiZWxvdyBpT1MgMTQuMSAtIHRoZSBzZWdtZW50cyB3b3VsZCBydW4gaW50b1xuXHQgICBvbmUgY29udGludW91cyBiYXIgdGhlcmUgYW5kIHN0b3AgcmVhZGluZyBhcyBzdGVwcyBhdCBhbGwuICovXG5cdC5wdi1wcm9ncmVzcy1zZWcge1xuXHRcdGZsZXg6IDE7XG5cdFx0aGVpZ2h0OiA0cHg7XG5cdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMnB4O1xuXHRcdGJhY2tncm91bmQ6ICRncmV5LWJvcmRlci1saWdodDtcblx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMjVzIGVhc2U7XG5cblx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdH1cblxuXHRcdC8qIERvbmUgYW5kIGN1cnJlbnQgYXJlIHRvbGQgYXBhcnQgYnkgaHVlLCBub3QganVzdCBsaWdodG5lc3M6IGN5YW4gcmVhZHMgYXMgYmVoaW5kIHlvdSBhbmRcblx0XHQgICBuYXZ5IGFzIHdoZXJlIHlvdSBhcmUsIHdoaWNoIHN1cnZpdmVzIGJlaW5nIHZpZXdlZCBvbiBhIHBob25lIGluIGRheWxpZ2h0LiAqL1xuXHRcdCYuaXMtZG9uZSB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY3lhbi1kYXJrO1xuXHRcdH1cblxuXHRcdCYuaXMtY3VycmVudCB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQucHYtcHJvZ3Jlc3MtdGV4dCB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHRiIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblx0fVxuXG5cdC8qIFNpdHMgdW5kZXIgYSBsZWdlbmQgdG8gc2F5IHdoYXQgdGhlIHN0ZXAgaXMgZm9yLiBNdXRlZCBzbyB0aGUgbGVnZW5kIHN0YXlzIHRoZSBoZWFkaW5nLiAqL1xuXHQucHYtc3VibGVnZW5kIHtcblx0XHRtYXJnaW46IDAgMCAxcmVtO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRsaW5lLWhlaWdodDogMS41NTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LyogRGF0ZSBvZiBiaXJ0aC4gVGhyZWUgYm94ZXMgcmF0aGVyIHRoYW4gYSBuYXRpdmUgZGF0ZSBpbnB1dDogYSBwYXRpZW50IGJvcm4gaW4gdGhlIDE5NDBzIHNob3VsZFxuXHQgICBub3QgaGF2ZSB0byBzY3JvbGwgYSBjYWxlbmRhciBiYWNrIGVpZ2h0eSB5ZWFycyBvbiBhIHBob25lLCBhbmQgdGhlIGtleWJvYXJkIHRoYXQgb3BlbnMgZm9yXG5cdCAgIGlucHV0bW9kZT1cIm51bWVyaWNcIiBpcyB0aGUgb25lIHRoZXkgd2FudC4gKi9cblx0LnB2LWRvYiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XG5cdFx0bWFyZ2luOiAxLjVyZW0gYXV0byAwO1xuXHR9XG5cblx0LnB2LWRvYi1maWVsZCB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0bGFiZWwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW46IDAgMCAwLjM1cmVtO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdGlucHV0IHtcblx0XHRcdGhlaWdodDogNTJweDtcblx0XHRcdGZvbnQtc2l6ZTogMTlweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdHBhZGRpbmc6IDAuNXJlbTtcblx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0XHRcdH1cblxuXHRcdFx0LyogRHJpdmVuIGJ5IGFyaWEtaW52YWxpZCwgc28gdGhlIHZpc3VhbCBzdGF0ZSBhbmQgdGhlIHN0YXRlIGFubm91bmNlZCB0byBhIHNjcmVlbiByZWFkZXJcblx0XHRcdCAgIGNhbiBuZXZlciBkcmlmdCBhcGFydCAtIHRoZSBzYW1lIHJ1bGUgdGhlIGNvZGUgYm94ZXMgZm9sbG93LiAqL1xuXHRcdFx0JlthcmlhLWludmFsaWQ9XCJ0cnVlXCJdIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkZGFuZ2VyO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5wdi1kb2ItZGF5IGlucHV0LFxuXHQucHYtZG9iLW1vbnRoIGlucHV0IHtcblx0XHR3aWR0aDogNjBweDtcblx0fVxuXG5cdC5wdi1kb2IteWVhciBpbnB1dCB7XG5cdFx0d2lkdGg6IDg4cHg7XG5cdH1cblxuXHQucHYtZG9iLXNlcCB7XG5cdFx0cGFkZGluZzogMCAwLjVyZW0gMXJlbTtcblx0XHRmb250LXNpemU6IDE5cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRjb2xvcjogJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0fVxuXG5cdC8qIEhvdyBtYW55IHdyb25nIGFuc3dlcnMgYXJlIGxlZnQuIFNob3duIGZyb20gdGhlIGZpcnN0IGZhaWx1cmUgb24sIGFuZCBvbiBib3RoIGNyZWRlbnRpYWwgc3RlcHNcblx0ICAgYmVjYXVzZSB0aGV5IHNoYXJlIG9uZSBidWRnZXQgLSBzcHJpbmdpbmcgdGhlIGxpbWl0IG9uIHRoZSBwYXRpZW50IGF0IHRoZSBsYXN0IGF0dGVtcHQgd291bGQgYmVcblx0ICAgdGhlIG9uZSBtb21lbnQgdGhleSBjb3VsZCBsZWFzdCBhZmZvcmQgdGhlIHN1cnByaXNlLiAqL1xuXHQucHYtYXR0ZW1wdHMge1xuXHRcdG1hcmdpbjogMXJlbSAwIDA7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC8qIE9uZS10aW1lLWNvZGUgYm94ZXMuIFRoZSBsb2dpbiBwYWdlIGhhcyBpdHMgb3duIGNvcHkgb2YgdGhlc2Ugc2NvcGVkIHVuZGVyXG5cdCAgIC5tb2Rlcm4tbG9naW4tcGFnZSwgd2hpY2ggZG9lcyBub3QgcmVhY2ggdGhpcyBwYWdlLiAqL1xuXHQudmVyaWZ5LWlucHV0LWNvbnRhaW5lciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRtYXJnaW46IDEuNXJlbSBhdXRvIDA7XG5cblx0XHRpbnB1dCB7XG5cdFx0XHR3aWR0aDogNDhweDtcblx0XHRcdGhlaWdodDogNTZweDtcblx0XHRcdG1hcmdpbjogMCAwLjM3NXJlbTtcblx0XHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdHBhZGRpbmc6IDAuNXJlbTtcblx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0XHRcdH1cblxuXHRcdFx0LyogRHJpdmVuIGJ5IGFyaWEtaW52YWxpZCBvbiB0aGUgaW5wdXRzLCBzbyB0aGUgdmlzdWFsIHN0YXRlIGFuZCB0aGUgc3RhdGUgYW5ub3VuY2VkIHRvIGFcblx0XHRcdCAgIHNjcmVlbiByZWFkZXIgY2FuIG5ldmVyIGRyaWZ0IGFwYXJ0LiAqL1xuXHRcdFx0JlthcmlhLWludmFsaWQ9XCJ0cnVlXCJdIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkZGFuZ2VyO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5wdi1lcnJvciB7XG5cdFx0bWFyZ2luOiAxcmVtIDAgMDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Y29sb3I6ICRkYW5nZXI7XG5cdH1cblxuXHQvKiBSZXNlbmQgY29udHJvbC4gU3R5bGVkIGFzIGEgbGluayByYXRoZXIgdGhhbiBhIHNlY29uZCBidXR0b24gc28gaXQgbmV2ZXIgY29tcGV0ZXMgd2l0aCBcIlZlcmlmeVxuXHQgICBteSBkZXRhaWxzXCIgZm9yIHRoZSBwcmltYXJ5IGFjdGlvbiAtIGEgcGF0aWVudCB3aG8gZGlkIGdldCB0aGUgY29kZSBzaG91bGQgbm90IGhhdmUgdG8gd29yayBvdXRcblx0ICAgd2hpY2ggb2YgdHdvIGJ1dHRvbnMgaXMgdGhlIG9uZSB0aGV5IHdhbnQuICovXG5cdC5wdi1yZXNlbmQge1xuXHRcdG1hcmdpbi10b3A6IDFyZW07XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cblx0LnB2LXJlc2VuZC1idXR0b24ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRwYWRkaW5nOiAwLjVyZW0gMDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHRjb2xvcjogJGN5YW4tZGFyaztcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGJvcmRlcjogMDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0fVxuXG5cdFx0LyogR3JleWVkIG91dCB0aHJvdWdoIHRoZSBjb29sZG93biBhbmQgd2hpbGUgdGhlIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LiBUaGUgaGludCBiZWxvdyBzYXlzXG5cdFx0ICAgd2h5LCBzbyB0aGlzIG5ldmVyIHJlYWRzIGFzIGEgZGVhZCBjb250cm9sLiAqL1xuXHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQucHYtcmVzZW5kLWhpbnQsXG5cdC5wdi1yZXNlbmQtc3RhdHVzIHtcblx0XHRtYXJnaW46IDAuMjVyZW0gMCAwO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQvKiBDb25zZW50IGJsb2NrLiBSb3dzIGFyZSBsZWZ0LWFsaWduZWQgaW5zaWRlIHRoZSBjZW50cmVkIHBhbmVsOiB0aGUgaGVscCB0ZXh0IHJ1bnMgdG8gdHdvIG9yXG5cdCAgIHRocmVlIGxpbmVzLCBhbmQgY2VudHJlZCBtdWx0aS1saW5lIHRleHQgdW5kZXIgYSBjaGVja2JveCByZWFkcyBhcyBhIHJhZ2dlZCBibG9iLiBFYWNoIG9wdGlvblxuXHQgICBnZXRzIGl0cyBvd24gd3JhcHBlciBzbyBCb290c3RyYXAncyBgLmNoZWNrYm94LWlubGluZSArIC5jaGVja2JveC1pbmxpbmUgeyBtYXJnaW4tbGVmdDogMTBweCB9YFxuXHQgICBuZXZlciBtYXRjaGVzIGFuZCBib3RoIHJvd3Mgc2hhcmUgYSBsZWZ0IGVkZ2UuICovXG5cdC5jb25zZW50LW9wdGlvbnMge1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0XHQucHYtbGVnZW5kIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDFyZW07XG5cdFx0fVxuXG5cdFx0LmNvbnNlbnQtaW50cm8ge1xuXHRcdFx0bWFyZ2luOiAwIDAgMS41cmVtO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0XHQuY29uc2VudC1vcHRpb24ge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMS41cmVtO1xuXHRcdH1cblxuXHRcdC8qIFRoZSBjb25zZW50IGl0c2VsZiwgYXMgYSBzdGF0ZW1lbnQgcmF0aGVyIHRoYW4gYSBsYWJlbDogdGhlIGFuc3dlciBpcyBhIHBhaXIgb2YgYnV0dG9uc1xuXHRcdCAgIGJlbG93IGl0LCBzbyB0aGVyZSBpcyBub3RoaW5nIGZvciBhIDxsYWJlbD4gdG8gcG9pbnQgYXQuICovXG5cdFx0LmNvbnNlbnQtc3RhdGVtZW50IHtcblx0XHRcdG1hcmdpbjogMCAwIDFyZW07XG5cdFx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41NTtcblx0XHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblxuXHRcdC5jb25zZW50LXJhZGlvcyB7XG5cdFx0XHRtYXJnaW46IDAgMCAwLjVyZW07XG5cdFx0fVxuXG5cdFx0LyogRnVsbC13aWR0aCByb3dzIHJhdGhlciB0aGFuIGlubGluZSByYWRpb3MuIENvbnNlbnQgaGFzIHRvIGJlIGFuIGFjdGl2ZSBjaG9pY2UsIHNvIFllcyBhbmQgTm9cblx0XHQgICBhcmUgZ2l2ZW4gaWRlbnRpY2FsIHdlaWdodCAtIG5laXRoZXIgaXMgc3R5bGVkIGFzIHRoZSBkZWZhdWx0LCBhbmQgbmVpdGhlciBpcyBzbWFsbCBlbm91Z2hcblx0XHQgICB0byBoaXQgYnkgYWNjaWRlbnQuIDUycHggY2xlYXJzIHRoZSA0NHB4IHRvdWNoIHRhcmdldCBhIHRodW1iIG5lZWRzLiAqL1xuXHRcdC5jb25zZW50LXJhZGlvIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtaW4taGVpZ2h0OiA1MnB4O1xuXHRcdFx0cGFkZGluZzogMC43NXJlbSAxcmVtO1xuXHRcdFx0bWFyZ2luOiAwIDAgMC42MjVyZW07XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0XHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMCwgNTMsIDIxMCwgMC4xNSk7XG5cdFx0XHR9XG5cblx0XHRcdC8qIFNlbGVjdGlvbiBpcyBjYXJyaWVkIGJ5IHRoZSBib3JkZXIgYW5kIHRoZSBmaWxsZWQgZG90IHRvZ2V0aGVyLCBub3QgYnkgY29sb3VyIGFsb25lLiAqL1xuXHRcdFx0Ji5pcy1zZWxlY3RlZCB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTIpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5jb25zZW50LXJhZGlvLWRvdCB7XG5cdFx0XHRmbGV4OiAwIDAgYXV0bztcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdHdpZHRoOiAyMHB4O1xuXHRcdFx0aGVpZ2h0OiAyMHB4O1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwLjdyZW07XG5cdFx0XHRib3JkZXI6IDJweCBzb2xpZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0XHR9XG5cblx0XHQuY29uc2VudC1yYWRpby5pcy1zZWxlY3RlZCAuY29uc2VudC1yYWRpby1kb3Qge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblxuXHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHRvcDogM3B4O1xuXHRcdFx0XHRsZWZ0OiAzcHg7XG5cdFx0XHRcdHdpZHRoOiAxMHB4O1xuXHRcdFx0XHRoZWlnaHQ6IDEwcHg7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdFx0YmFja2dyb3VuZDogJG5hdnk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyogT25seSBzaG93biBvbmNlIHRoZSBwYXRpZW50IGhhcyB0cmllZCB0byBtb3ZlIG9uIHdpdGhvdXQgYW5zd2VyaW5nLCBzbyB0aGUgc3RlcCBkb2VzIG5vdFxuXHRcdCAgIG9wZW4gYWxyZWFkeSB0ZWxsaW5nIHRoZW0gb2ZmLiAqL1xuXHRcdC5jb25zZW50LXJlcXVpcmVkIHtcblx0XHRcdG1hcmdpbjogMCAwIDAuNzVyZW07XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdFx0Y29sb3I6ICRkYW5nZXI7XG5cdFx0fVxuXG5cdFx0LyogTGluay1zdHlsZWQsIGJ1dCBhIHJlYWwgPGJ1dHRvbj4gc28gaXQgaXMga2V5Ym9hcmQgcmVhY2hhYmxlIGFuZCBhbm5vdW5jZWQgYXMgYSBjb250cm9sLlxuXHRcdCAgIFRoZSB2ZXJ0aWNhbCBwYWRkaW5nIGlzIHRoZXJlIHRvIGdpdmUgaXQgYSB0aHVtYi1zaXplZCBoaXQgYXJlYSwgYW5kIGlzIGNhbmNlbGxlZCBieSB0aGVcblx0XHQgICBtYXJnaW4tdG9wIHNvIGl0IHN0aWxsIHNpdHMgdGlnaHQgdW5kZXIgaXRzIGxhYmVsLiAqL1xuXHRcdC5jb25zZW50LWhlbHAtdG9nZ2xlIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdHBhZGRpbmc6IDAuNXJlbSAwO1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0Y29sb3I6ICRjeWFuLWRhcms7XG5cdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0Ym9yZGVyOiAwO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0XHQmOmhvdmVyLFxuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdGNvbG9yOiAkY3lhbi1kYXJrZXI7XG5cdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRcdFx0fVxuXG5cdFx0XHQuZ2x5cGhpY29uIHtcblx0XHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDAuNHJlbTtcblx0XHRcdFx0dmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5jb25zZW50LWhlbHAge1xuXG5cdFx0XHRwIHtcblx0XHRcdFx0bWFyZ2luOiAwIDAgMC41cmVtO1xuXHRcdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdH1cblxuXHRcdFx0cDpsYXN0LWNoaWxkIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKiBUaGUgbGVnaXNsYXRpb24gdGhlIGNvbnNlbnQgaXMgZ2l2ZW4gdW5kZXIuIExlZnQtYWxpZ25lZCBhbmQgcnVsZWQgb2ZmIHJhdGhlciB0aGFuIGNlbnRyZWQ6XG5cdFx0ICAgaXQgcnVucyB0byB0d28gb3IgdGhyZWUgbGluZXMsIGFuZCBjZW50cmVkIG11bHRpLWxpbmUgdGV4dCB1bmRlciBhIHF1ZXN0aW9uIHJlYWRzIGFzIGFcblx0XHQgICByYWdnZWQgYmxvYi4gUmVwZWF0ZWQgb24gYm90aCBjb25zZW50IHN0ZXBzIGJlY2F1c2UgaXQgZGVzY3JpYmVzIGhvdyB0aGUgZGF0YSBpcyBoYW5kbGVkLFxuXHRcdCAgIG5vdCB3aGF0IGVpdGhlciBxdWVzdGlvbiBpcyBhc2tpbmcuICovXG5cdFx0LmNvbnNlbnQtbGVnYWwge1xuXHRcdFx0bWFyZ2luOiAxcmVtIDAgMDtcblx0XHRcdHBhZGRpbmctdG9wOiAxcmVtO1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjY7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHRcdC8qIEtlZXBzIGVhY2ggcmVmZXJlbmNlIHdob2xlLiBUaGUgbmFtZXMgYXJlIGxlZ2lzbGF0aW9uIHRpdGxlcywgYW5kIG9uZSBicm9rZW4gYWNyb3NzIGFcblx0XHRcdCAgIGxpbmUgcmVhZHMgYXMgdHdvIHNlcGFyYXRlIHRoaW5ncyAtIHdoaWNoIG9uIGEgY29uc2VudCBub3RpY2UgaXMgdGhlIHdyb25nIGltcHJlc3Npb25cblx0XHRcdCAgIHRvIGdpdmUuIFRoZSBwYXJhZ3JhcGggc3RpbGwgd3JhcHMgYmV0d2VlbiB0aGVtLiAqL1xuXHRcdFx0YSB7XG5cdFx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LnB2LWFjdGlvbnMge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0fVxuXG5cdC8qIE92ZXJyaWRlcyAuYnRuLW5hdnkncyAxMnB4IC8gNHB4IHBhZGRpbmcgZnJvbSBfYnV0dG9ucy5jc3MsIHdoaWNoIGlzIHNpemVkIGZvciBkZW5zZSBhcHBcblx0ICAgc2NyZWVucyBhbmQgbGFuZHMgd2VsbCB1bmRlciBhIDQ0cHggdG91Y2ggdGFyZ2V0LiAqL1xuXHQucHYtc3VibWl0IHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXgtd2lkdGg6IDMyMHB4O1xuXHRcdG1pbi1oZWlnaHQ6IDQ4cHg7XG5cdFx0cGFkZGluZzogMC43NXJlbSAxLjVyZW07XG5cdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdH1cblxuXHQvKiBPZmZlcmVkIG9uIHRoZSBjb25zZW50IHN0ZXBzIG9ubHkgLSB0aGUgY29kZSBhbmQgZGF0ZSBvZiBiaXJ0aCBsb2NrIG9uY2UgdGhlIHNlcnZlciBoYXNcblx0ICAgYWNjZXB0ZWQgdGhlbS5cblxuXHQgICBBbiBvdXRsaW5lZCBidXR0b24gcmF0aGVyIHRoYW4gdGhlIGJhcmUgbGluayB0aGlzIHVzZWQgdG8gYmUuIEFzIGEgbGluayBpdCByZWFkIGFzIGZpbmUgcHJpbnRcblx0ICAgdW5kZXIgdGhlIHByaW1hcnkgYWN0aW9uIGFuZCB3YXMgZWFzeSB0byBtaXNzIGVudGlyZWx5LCB3aGljaCBtYXR0ZXJzIGhlcmU6IGl0IGlzIHRoZSBvbmx5IHdheVxuXHQgICBiYWNrIHRvIGEgY29uc2VudCBhbnN3ZXIgdGhlIHBhdGllbnQgd2FudHMgdG8gY2hhbmdlLiBPdXRsaW5lZCByYXRoZXIgdGhhbiBmaWxsZWQga2VlcHMgdGhlXG5cdCAgIGhpZXJhcmNoeSAtIENvbnRpbnVlIGlzIHN0aWxsIHRoZSBvbmUgdGhhdCBjYXJyaWVzIGNvbG91ciAtIHdoaWxlIGdpdmluZyB0aGlzIGEgcmVhbCBlZGdlLCBhXG5cdCAgIHJlYWwgaGl0IGFyZWEgYW5kIHRoZSBzYW1lIHdpZHRoIGFzIHRoZSBidXR0b24gYWJvdmUgaXQuICovXG5cdC5wdi1iYWNrIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiAzMjBweDtcblx0XHRtaW4taGVpZ2h0OiA0NHB4O1xuXHRcdG1hcmdpbi10b3A6IDAuNzVyZW07XG5cdFx0cGFkZGluZzogMC42MjVyZW0gMS41cmVtO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRib3JkZXItcmFkaXVzOiA0cHg7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kOiByZ2JhKDAsIDUzLCAyMTAsIDAuMDQpO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC8qIFN1Y2Nlc3MgYW5kIGV4cGlyZWQtbGluayBwYW5lbHMuIEJvdGggcmVwbGFjZSB0aGUgZm9ybSBlbnRpcmVseSwgc28gZWFjaCBvd25zIHRoZSBwYWdlJ3Mgb25seVxuXHQgICA8aDE+IGFuZCBuZWl0aGVyIGNvbXBldGVzIHdpdGggdGhlIG90aGVyLiAqL1xuXHQucHYtb3V0Y29tZSB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDEuNXJlbTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRwIHtcblx0XHRcdG1hcmdpbjogMCAwIDAuNXJlbTtcblx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjY7XG5cdFx0fVxuXG5cdFx0cDpsYXN0LWNoaWxkIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXHR9XG5cblx0LnB2LW91dGNvbWUtdGl0bGUge1xuXHRcdG1hcmdpbjogMCAwIDFyZW07XG5cdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjM7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0fVxufVxuIiwiLnNsaWRlSW4ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4uc2xpZGVJbi5uZy1lbnRlcixcbi5zbGlkZUluLm5nLWxlYXZlIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAxcyBlYXNlO1xuICAgIHRyYW5zaXRpb246IGFsbCAxcyBlYXNlO1xufVxuLnNsaWRlSW4ubmctZW50ZXIge1xuICAgIGxlZnQ6IDEwMCU7XG59XG4uc2xpZGVJbi5uZy1lbnRlci1hY3RpdmUge1xuICAgIGxlZnQ6IDA7XG59XG4uc2xpZGVJbi5uZy1sZWF2ZSB7XG4gICAgbGVmdDogMDtcbn1cbi5zbGlkZUluLm5nLWxlYXZlLWFjdGl2ZSB7XG4gICAgbGVmdDogMTAwJTtcbn1cblxuLnNsaWRlT3V0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLnNsaWRlT3V0Lm5nLWVudGVyLFxuLnNsaWRlT3V0Lm5nLWxlYXZlIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAxcyBlYXNlO1xuICAgIHRyYW5zaXRpb246IGFsbCAxcyBlYXNlO1xufVxuLnNsaWRlT3V0Lm5nLWVudGVyIHtcbiAgICBsZWZ0OiAtMTAwJTtcbn1cbi5zbGlkZU91dC5uZy1lbnRlci1hY3RpdmUge1xuICAgIGxlZnQ6IDA7XG59XG4uc2xpZGVPdXQubmctbGVhdmUge1xuICAgIGxlZnQ6IDA7XG59XG4uc2xpZGVPdXQubmctbGVhdmUtYWN0aXZlIHtcbiAgICBsZWZ0OiAtMTAwJTtcbn1cblxuLnNsaWRlZG93biB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cbi5zbGlkZWRvd24ubmctZW50ZXIsXG4uc2xpZGVkb3duLm5nLWxlYXZlIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAxcyBlYXNlO1xuICAgIHRyYW5zaXRpb246IGFsbCAxcyBlYXNlO1xufVxuLnNsaWRlZG93bi5uZy1lbnRlciB7XG4gICAgdG9wOiAtMTAwJTtcbn1cbi5zbGlkZWRvd24ubmctZW50ZXItYWN0aXZlIHtcbiAgICB0b3A6IDA7XG59XG4uc2xpZGVkb3duLm5nLWxlYXZlIHtcbiAgICB0b3A6IDA7XG59XG4uc2xpZGVkb3duLm5nLWxlYXZlLWFjdGl2ZSB7XG4gICAgdG9wOiAxMDAlO1xufVxuXG4uc2xpZGV1cCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbn1cbi5zbGlkZXVwLm5nLWVudGVyLFxuLnNsaWRldXAubmctbGVhdmUge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDFzIGVhc2U7XG4gICAgdHJhbnNpdGlvbjogYWxsIDFzIGVhc2U7XG59XG4uc2xpZGV1cC5uZy1lbnRlciB7XG4gICAgdG9wOiAxMDAlO1xufVxuLnNsaWRldXAubmctZW50ZXItYWN0aXZlIHtcbiAgICB0b3A6IDA7XG59XG4uc2xpZGV1cC5uZy1sZWF2ZSB7XG4gICAgdG9wOiAwO1xufVxuLnNsaWRldXAubmctbGVhdmUtYWN0aXZlIHtcbiAgICB0b3A6IC0xMDAlO1xufSIsIlxuXG4uYWktZnVsbC1jb250ZW50IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi8qIC0tLSBNYWluIExheW91dCBDb250YWluZXIgLS0tICovXG4uYWktYWdlbnQtbWFpbiB7XG4gICAgLyogQ2hhbmdlZCBmcm9tIG1hcmdpbiB0byBwYWRkaW5nIHNvIGhlaWdodDogMTAwJSB3b3JrcyBjb3JyZWN0bHkgKi9cbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMnJlbTsgXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBcbiAgICAvKiBFTkFCTEVTIFRIRSBTVElDS1kgRk9PVEVSIExBWU9VVCAqL1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLyogLS0tIFNjcm9sbGFibGUgQ29udGVudCBBcmVhIC0tLSAqL1xuLyogVGhpcyB0YXJnZXRzIHRoZSBjb250YWluZXIgaG9sZGluZyB0aGUgdGFibGVzIGFuZCBmb3JtcyAqL1xuLmRpYWxvZy1jb250ZW50LWJveCwgLmFpLXNjcm9sbCB7XG4gICAgLyogR3JvdyB0byBmaWxsIGVtcHR5IHNwYWNlICovXG4gICAgZmxleDogMTsgXG4gICAgXG4gICAgLyogSGFuZGxlIFNjcm9sbGluZyAqL1xuICAgIG92ZXJmbG93LXk6IGF1dG87IFxuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBcbiAgICAvKiBSZW1vdmUgZml4ZWQgaGVpZ2h0cyAqL1xuICAgIGhlaWdodDogYXV0bzsgXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgXG4gICAgLyogQWRkIGJyZWF0aGluZyByb29tIGZvciBzY3JvbGxiYXIgKi9cbiAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7IFxuICAgIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgICBcbiAgICAvKiBGaXggZm9yIEZpcmVmb3ggZmxleCBzY3JvbGxpbmcgKi9cbiAgICBtaW4taGVpZ2h0OiAwOyBcbn1cblxuLyogLS0tIEZvb3RlciBCdXR0b25zIC0tLSAqL1xuLmFpLWFnZW50LWZvb3RlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgXG4gICAgLyogTGF5b3V0ICovXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiAxcmVtO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgXG4gICAgYm90dG9tOiBhdXRvO1xuICAgIGZsZXgtc2hyaW5rOiAwOyBcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtO1xuICAgIG1hcmdpbi10b3A6IGF1dG87IFxuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XG4gICAgei1pbmRleDogMTA7XG59XG5cbi8qIC0tLSBVdGlsaXR5IENsYXNzZXMgLS0tICovXG4uYWktYWdlbnQtaXRlbS1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgZ2FwOiAxcmVtO1xufVxuXG4vKiAtLS0gQW5pbWF0aW9ucyAtLS0gKi9cbi5wbGF5aW5nIGkge1xuICAgIGFuaW1hdGlvbjogZmxhc2ggMXMgaW5maW5pdGU7XG4gICAgY29sb3I6ICNlOTFlNjM7XG59XG5cbkBrZXlmcmFtZXMgZmxhc2gge1xuICAgIDAlLCAxMDAlIHsgb3BhY2l0eTogMTsgfVxuICAgIDUwJSB7IG9wYWNpdHk6IDAuMzsgfVxufVxuXG4vKiAtLS0gVHJhbnNjcmlwdGlvbiBzdHlsZXMgLS0tICovXG4udHItY29tcGFjdC10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgcGFkZGluZzogNnB4IDEwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIG1pbi1oZWlnaHQ6IDQycHg7XG59XG5cbi8qIFN0YW5kYXJkaXplZCAzMHgzMCBzcXVhcmUgYnV0dG9ucyBmb3IgaWNvbnMgKi9cbi50ci1pY29uLWJ0biB7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4udHItbWljLXNlbGVjdG9yIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIG1heC13aWR0aDogMTYwcHg7XG59XG5cbiAgICAudHItbWljLXNlbGVjdG9yIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgfVxuXG4udHItbWljLWljb24tYWRkb24ge1xuICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4udHItdGltZXItZGlzcGxheSB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG59XG5cbi50ci10b29sYmFyLWRpdmlkZXIge1xuICAgIHdpZHRoOiAxcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XG4gICAgbWFyZ2luOiAwIDJweDtcbn1cblxuLnRyLXBlcm1pc3Npb24tZXJyb3Ige1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmJsaW5rIHtcbiAgICBhbmltYXRpb246IGJsaW5rZXIgMS41cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgYmxpbmtlciB7XG4gICAgNTAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG59XG5cbiIsIi8qXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBUaGVtZWQgUXVpbGwgRWRpdG9yIENvbXBvbmVudFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICovXG5cbi8qIC0tLSAxLiBUaGVtZSBWYXJpYWJsZXMgLS0tICovXG46cm9vdCB7XG4gICAgLS1xbC1mb250LWZhbWlseTogJ0dvcmRpdGEgUmVndWxhcicsIHNhbnMtc2VyaWY7XG4gICAgLS1xbC1ib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgLS1xbC1ib3JkZXItY29sb3I6ICM5NDk1OTk7IFxuICAgIC0tcWwtYWNjZW50LWNvbG9yOiAjMDAzNWQyOyBcbiAgICAtLXFsLXdoaXRlLWNvbG9yOiAjZmZmZmZmO1xuICAgIC0tcWwtdGV4dC1iZy1jb2xvcjogI2YyZjZmYjsgXG4gICAgLS1xbC10b29sYmFyLWJnLWNvbG9yOiAjZWJlY2VhOyBcbiAgICAtLXFsLXRleHQtY29sb3I6ICM0MDQxNDE7IFxuICAgIC0tcWwtc3VidGxlLWJvcmRlci1jb2xvcjogI2JjY2FkMjsgXG59XG5cbi8qIC0tLSAyLiBNYWluIEVkaXRvciBDb250YWluZXIgLS0tICovXG4ucWwtdG9vbGJhcixcbi5xbC1jb250YWluZXIge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1xbC1mb250LWZhbWlseSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1xbC1ib3JkZXItY29sb3IpICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG59XG5cbi8qIC0tLSAzLiBUb29sYmFyIFVJIC0tLSAqL1xuLnFsLXRvb2xiYXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXFsLXRvb2xiYXItYmctY29sb3IpO1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLXFsLWJvcmRlci1yYWRpdXMpO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiB2YXIoLS1xbC1ib3JkZXItcmFkaXVzKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcWwtYm9yZGVyLWNvbG9yKSAhaW1wb3J0YW50O1xufVxuXG4gICAgLnFsLXRvb2xiYXIgLnFsLXN0cm9rZSB7XG4gICAgICAgIHN0cm9rZTogdmFyKC0tcWwtdGV4dC1jb2xvcik7XG4gICAgfVxuXG4gICAgLnFsLXRvb2xiYXIgLnFsLWZpbGwge1xuICAgICAgICBmaWxsOiB2YXIoLS1xbC10ZXh0LWNvbG9yKTtcbiAgICB9XG5cbiAgICAucWwtdG9vbGJhciAucWwtcGlja2VyLWxhYmVsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXFsLXRleHQtY29sb3IpO1xuICAgIH1cblxuICAgICAgICAucWwtdG9vbGJhciBidXR0b246aG92ZXIsXG4gICAgICAgIC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWw6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5xbC10b29sYmFyIGJ1dHRvbi5xbC1hY3RpdmUsXG4gICAgICAgIC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWwucWwtYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgNTMsIDIxMCwgMC4xKTsgXG4gICAgICAgIH1cblxuICAgIC5xbC10b29sYmFyIC5xbC10b29sdGlwIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuXG4vKiAtLS0gNC4gRWRpdGFibGUgQ29udGVudCBBcmVhIC0tLSAqL1xuLnFsLWNvbnRhaW5lciB7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tcWwtYm9yZGVyLXJhZGl1cyk7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLXFsLWJvcmRlci1yYWRpdXMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXFsLXRleHQtYmctY29sb3IpO1xufVxuXG4ucWwtZWRpdG9yIHtcbiAgICBtaW4taGVpZ2h0OiAyNTBweDtcbiAgICBjb2xvcjogdmFyKC0tcWwtdGV4dC1jb2xvcik7XG4gICAgcGFkZGluZzogMXJlbSAxLjVyZW07XG59XG5cbiAgICAucWwtZWRpdG9yLnFsLWJsYW5rOjpiZWZvcmUge1xuICAgICAgICBjb2xvcjogIzk0OTU5OTtcbiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICBsZWZ0OiAxLjVyZW07XG4gICAgfVxuXG5cbi8qIC0tLSA1LiBGb2N1cyBTdGF0ZSAtLS0gKi9cbi5xbC1jb250YWluZXIucWwtZm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcWwtYWNjZW50LWNvbG9yKSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xufVxuXG4ucWwtdG9vbGJhci5xbC1mb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1xbC1hY2NlbnQtY29sb3IpICFpbXBvcnRhbnQ7XG59XG5cblxuLyogLS0tIDYuIENvbnRlbnQgU3R5bGluZyAtLS0gKi9cbi5xbC1lZGl0b3IgaDEsIC5xbC1lZGl0b3IgaDIsIC5xbC1lZGl0b3IgaDMge1xuICAgIGNvbG9yOiB2YXIoLS1xbC10ZXh0LWNvbG9yKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1xbC1zdWJ0bGUtYm9yZGVyLWNvbG9yKTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4zZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC44ZW07XG59XG5cbi5xbC1lZGl0b3IgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4ucWwtZWRpdG9yIGgyIHtcbiAgICBmb250LXNpemU6IDEuNzVlbTtcbn1cblxuLnFsLWVkaXRvciBoMyB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbn1cblxuLnFsLWVkaXRvciBwLCAucWwtZWRpdG9yIG9sLCAucWwtZWRpdG9yIHVsIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNztcbiAgICBjb2xvcjogdmFyKC0tcWwtdGV4dC1jb2xvcik7XG59XG5cbi5xbC1lZGl0b3IgYSB7XG4gICAgY29sb3I6IHZhcigtLXFsLWFjY2VudC1jb2xvcik7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbiAgICAucWwtZWRpdG9yIGE6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG5cbi8qIC0tLSA3LiBGb250IEZhbWlseSBTZWxlY3RvciAtLS0gKi9cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCB7XG4gICAgd2lkdGg6IDEzMHB4O1xufVxuXG4vKiBEZWZhdWx0IG9wdGlvbiAobm8gZm9udCB2YWx1ZSkgaXMgdGhlIHRoZW1lIGZvbnQsIEdvcmRpdGEgUmVndWxhci4gKi9cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWxhYmVsOjpiZWZvcmUsXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdHb3JkaXRhIFJlZ3VsYXInO1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBSZWd1bGFyJywgc2Fucy1zZXJpZjtcbn1cblxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT1cImFyaWFsXCJdOjpiZWZvcmUsXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9XCJhcmlhbFwiXTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnQXJpYWwnO1xuICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cblxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT1cImdlb3JnaWFcIl06OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1cImdlb3JnaWFcIl06OmJlZm9yZSB7XG4gICAgY29udGVudDogJ0dlb3JnaWEnO1xuICAgIGZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBzZXJpZjtcbn1cblxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT1cInRpbWVzLW5ldy1yb21hblwiXTo6YmVmb3JlLFxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPVwidGltZXMtbmV3LXJvbWFuXCJdOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdUaW1lcyBOZXcgUm9tYW4nO1xuICAgIGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJywgVGltZXMsIHNlcmlmO1xufVxuXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPVwiY291cmllci1uZXdcIl06OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1cImNvdXJpZXItbmV3XCJdOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdDb3VyaWVyIE5ldyc7XG4gICAgZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycsIENvdXJpZXIsIG1vbm9zcGFjZTtcbn1cblxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItbGFiZWxbZGF0YS12YWx1ZT1cInZlcmRhbmFcIl06OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1cInZlcmRhbmFcIl06OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1ZlcmRhbmEnO1xuICAgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBHZW5ldmEsIHNhbnMtc2VyaWY7XG59XG5cbi8qIEFwcGx5IHRoZSBjaG9zZW4gZm9udCB0byB0aGUgZWRpdG9yIGNvbnRlbnQuICovXG4ucWwtZm9udC1hcmlhbCB7XG4gICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuXG4ucWwtZm9udC1nZW9yZ2lhIHtcbiAgICBmb250LWZhbWlseTogR2VvcmdpYSwgc2VyaWY7XG59XG5cbi5xbC1mb250LXRpbWVzLW5ldy1yb21hbiB7XG4gICAgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLCBUaW1lcywgc2VyaWY7XG59XG5cbi5xbC1mb250LWNvdXJpZXItbmV3IHtcbiAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQ291cmllciwgbW9ub3NwYWNlO1xufVxuXG4ucWwtZm9udC12ZXJkYW5hIHtcbiAgICBmb250LWZhbWlseTogVmVyZGFuYSwgR2VuZXZhLCBzYW5zLXNlcmlmO1xufVxuXG4ucXVpbGwtdmlld2VyLWNvbnRhaW5lciB7XG4gICAgLS1xbC10ZXh0LWJnLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuICAgIC5xdWlsbC12aWV3ZXItY29udGFpbmVyLnFsLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICAgICAucXVpbGwtdmlld2VyLWNvbnRhaW5lci5xbC1jb250YWluZXIgLnFsLWVkaXRvciB7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAgICAgLnF1aWxsLXZpZXdlci1jb250YWluZXIucWwtY29udGFpbmVyIC5xbC1lZGl0b3IgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgICB9IiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQYXltZW50IFNldHRpbmdzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIC0tLSBNYWluIFZpZXcgQ29udGFpbmVyIC0tLSAqL1xuLnBheW1lbnQtc2V0dGluZ3MtbWFpbiB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDIwcHggMzBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgLyogLS0tIFR5cG9ncmFwaHkgT3ZlcnJpZGVzIC0tLSAqL1xuICAgIGgzLCBoNCwgaDUge1xuICAgICAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEhlcm8gU2VjdGlvbiAoRGlnaXRhbCBXYWxsZXQpXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ud2FsbGV0LWhlcm8tc2VjdGlvbiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLndhbGxldC1jYXJkLXZpc3VhbCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwMzVkMiAwJSwgIzJhMzA3ZiAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIHBhZGRpbmc6IDI1cHggMzVweDtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyMHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IC01MHB4O1xuICAgICAgICB0b3A6IC01MHB4O1xuICAgICAgICB3aWR0aDogMjAwcHg7XG4gICAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG5cbiAgICAud2FsbGV0LWluZm8ge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBoNSB7XG4gICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICB9XG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogNDJweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgc21hbGwge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC53YWxsZXQtc3RhdHVzIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIFxuICAgICAgICAuc3RhdHVzLWJhZGdlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4yKTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogOHB4O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzIwYzk5NztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgJi5pbmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC43KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBHcmlkIExheW91dFxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNldHRpbmdzLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAyMHB4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLmdyaWQtY29sLWxlZnQge1xuICAgIGZsZXg6IDM7XG4gICAgbWluLXdpZHRoOiAzMDBweDtcbn1cblxuLmdyaWQtY29sLXJpZ2h0IHtcbiAgICBmbGV4OiAyO1xuICAgIG1pbi13aWR0aDogMjgwcHg7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQ2FyZCBDb21wb25lbnRzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2V0dGluZ3MtY2FyZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgcGFkZGluZzogMjVweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLmNhcmQtaGVhZGVyLFxuICAgIC5jYXJkLWhlYWRlci1mbGV4IHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMGU2ZWQ7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBcbiAgICAgICAgaDQge1xuICAgICAgICAgICAgY29sb3I6ICMwMDM1ZDI7IC8qICRuYXZ5ICovXG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcmQtaGVhZGVyLWZsZXgge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEJhY2t1cCBDYXJkICYgRm9vdGVyIFdhcm5pbmdzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5zZXR0aW5ncy1jYXJkIHtcbiAgICAuYmFja3VwLW1pc3NpbmctZm9vdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjVmNTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmZmU1Y2M7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMjBweDtcbiAgICAgICAgXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMjVweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMjVweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTI1cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IGF1dG87IFxuICAgICAgICBcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTJweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDEycHg7XG5cbiAgICAgICAgLndhcm5pbmctdGV4dCB7XG4gICAgICAgICAgICBjb2xvcjogIzg1NjQwNDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgICAgICBpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmYWIwMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0cm9uZyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmJ0bi1vdXRsaW5lLXdhcm5pbmcge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2ZmYWIwMDtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZhYjAwO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNXB4O1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmFiMDA7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgTGVmdCBDb2x1bW46IEF1dG8tUmVsb2FkIElucHV0c1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNldHRpbmctcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIHBhZGRpbmc6IDE1cHggMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICNlMGU2ZWQ7XG5cbiAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuXG4gICAgLnNldHRpbmctaWNvbiB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG4gICAgICAgIGNvbG9yOiAjMDAzNWQyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICB9XG5cbiAgICAuc2V0dGluZy1jb250ZW50IHtcbiAgICAgICAgZmxleDogMTtcblxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgICAgIGNvbG9yOiAjNTU1O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWxwZXItdGV4dCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgICAgICBjb2xvcjogIzg4ODtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZXR0aW5nLWlucHV0LXdyYXBwZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgXG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2UwZTZlZDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgY29sb3I6ICMwMDM1ZDI7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICMwMDM1ZDI7XG4gICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjYWFhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBUb2dnbGUgU3dpdGNoICovXG4udG9nZ2xlLXN3aXRjaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogNDRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG5cbiAgICBpbnB1dCB7IFxuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgaGVpZ2h0OiAwO1xuICAgIH1cblxuICAgIC5zbGlkZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdG9wOiAwOyBsZWZ0OiAwOyByaWdodDogMDsgYm90dG9tOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xuICAgICAgICB0cmFuc2l0aW9uOiAuNHM7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7XG5cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgbGVmdDogM3B4O1xuICAgICAgICAgICAgYm90dG9tOiAzcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IC40cztcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlucHV0OmNoZWNrZWQgKyAuc2xpZGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIwYzk5NztcbiAgICB9XG5cbiAgICBpbnB1dDpmb2N1cyArIC5zbGlkZXIge1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMXB4ICMyMGM5OTc7XG4gICAgfVxuXG4gICAgaW5wdXQ6Y2hlY2tlZCArIC5zbGlkZXI6YmVmb3JlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpO1xuICAgIH1cbn1cblxuLmRpc2FibGVkLW92ZXJsYXkge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7XG59XG5cbi5zYXZlLXN0YXR1cy1pbmRpY2F0b3Ige1xuICAgIGhlaWdodDogMjBweDtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgY29sb3I6ICMyMGM5OTc7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzO1xuICAgIFxuICAgICYuZXJyb3IgeyBjb2xvcjogI2Q5NTM0ZjsgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFJpZ2h0IENvbHVtbjogUGF5bWVudCBNZXRob2QgKFJlZGVzaWduZWQpXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIENlbnRlciBjb250YWluZXIgZm9yIHRoZSByaWdodCBjb2x1bW4gKi9cbi5wYXltZW50LWNhcmQtY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMzBweCAyMHB4O1xufVxuXG4vKiBDcmVkaXQgQ2FyZCBWaXN1YWwgQm94ICovXG4uY2MtdmlzdWFsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiAyMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2UwZTZlZDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIHBhZGRpbmc6IDIwcHggMjVweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgNTMsIDIxMCwgMC4wOCk7IFxuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogMzgwcHg7IFxuICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gICAgXG4gICAgLmNjLWljb24ge1xuICAgICAgICBjb2xvcjogIzAwMzVkMjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA1MHB4O1xuICAgIH1cblxuICAgIC5jYy10ZXh0IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgXG4gICAgICAgIGg1IHsgXG4gICAgICAgICAgICBtYXJnaW46IDA7IFxuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgICAgY29sb3I6ICMzMzM7IFxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsgXG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8qIE5ldyBjbGFzcyBmb3IgdGhlIG1hc2tlZCBkb3RzICovXG4gICAgICAgIC5tYXNrZWQtZG90cyB7XG4gICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTBweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgdG9wOiA0cHg7XG4gICAgICAgICAgICBjb2xvcjogIzg4ODtcbiAgICAgICAgfVxuXG4gICAgICAgIHAgeyBcbiAgICAgICAgICAgIG1hcmdpbjogNXB4IDAgMCAwOyBcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsgXG4gICAgICAgICAgICBjb2xvcjogIzg4ODsgXG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBTdHJpcGUgSW5wdXQgQ29udGFpbmVyIChDb25zdHJhaW5lZCB3aWR0aCkgKi9cbi5zdHJpcGUtaW5wdXQtY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDM4MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xufVxuXG4jY2FyZC1lbGVtZW50IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAzNWQyO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgcGFkZGluZzogMTJweCAxNXB4O1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbiNjYXJkLWVycm9ycyB7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIG1pbi1oZWlnaHQ6IDE4cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vKiBCdXR0b25zIChDZW50ZXJlZCAmIENvbnN0cmFpbmVkKSAqL1xuLnZlcnRpY2FsLWJ1dHRvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4uYnRuLWNlbnRlcmVkIHtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgbWFyZ2luOiA1cHggMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBVc2FnZSBIaXN0b3J5IFRhYmxlXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4udXNhZ2UtY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICBcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDE3MHZoKTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIHRhYmxlIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIFxuICAgICAgICB0aCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjRmN2ZlO1xuICAgICAgICAgICAgY29sb3I6ICMwMDM1ZDI7XG4gICAgICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDAgI2VlZTsgXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcbiAgICAgICAgICAgIGNvbG9yOiAjMzQzYTQwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRkIHNtYWxsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgY29sb3I6ICM5OGE2YWQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdHI6bGFzdC1jaGlsZCB0ZCB7IGJvcmRlci1ib3R0b206IG5vbmU7IH1cbiAgICB9XG5cbiAgICAvKiBPcHRpb25hbDogQ3VzdG9tIHNjcm9sbGJhciBmb3IgdGhlIHRhYmxlIGNvbnRhaW5lciAqL1xuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgd2lkdGg6IDZweDtcbiAgICB9XG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgfVxufVxuLnVzYWdlLWNvbnRhaW5lciAubGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBwYWRkaW5nOiAzcHggOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4vKiBDdXN0b20gU2Nyb2xsYmFyIGZvciB0aGUgTWFpbiBDb250YWluZXIgKi9cbi5wYXltZW50LXNldHRpbmdzLW1haW46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogNnB4O1xufVxuXG4ucGF5bWVudC1zZXR0aW5ncy1tYWluOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IFxufVxuXG4ucGF5bWVudC1zZXR0aW5ncy1tYWluOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjEpOyAvKiBMaWdodCBOYXZ5ICovXG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbn1cblxuLnBheW1lbnQtc2V0dGluZ3MtbWFpbjpob3Zlcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4zKTtcbn1cblxuLyogVXRpbGl0eSAqL1xuLm10LWF1dG8geyBtYXJnaW4tdG9wOiBhdXRvOyB9XG5cbi8qIENhcmQgU3dpdGNoZXIgSGVhZGVyICovXG4uY2FyZC1zd2l0Y2hlciB7XG4gICAgYmFja2dyb3VuZDogI2Y0ZjdmZTtcbiAgICBwYWRkaW5nOiA0cHggMTJweDtcbiAgICBib3JkZXItcmFkaXVzOiAxNXB4O1xuICAgIGNvbG9yOiAjMDAzNWQyO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICBcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzAwMzVkMjtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cbn1cblxuLyogQmFja3VwIENhcmQgVmlzdWFsIFZhcmlhbnQgKi9cbi5jYy12aXN1YWwuYmFja3VwLXN0eWxlIHtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgI2ZmYWIwMDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMjU1LCAxNzEsIDAsIDAuMSk7XG4gICAgXG4gICAgLmNjLWljb24ge1xuICAgICAgICBjb2xvcjogI2ZmYWIwMDtcbiAgICB9XG59XG5cbi8qIEhlbHBlciBDb2xvcnMgKi9cbi50ZXh0LXdhcm5pbmcgeyBjb2xvcjogI2ZmYWIwMCAhaW1wb3J0YW50OyB9XG4uYnRuLXdhcm5pbmcge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmFiMDAgIWltcG9ydGFudDtcbiAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICY6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTY5YTAwICFpbXBvcnRhbnQ7IH1cbn1cblxuLyogU25hcHB5IEZhZGluZyBmb3IgQnV0dG9ucyAqL1xuLmFuaW1hdGUtZmFkZS5uZy1lbnRlciwgXG4uYW5pbWF0ZS1mYWRlLm5nLWxlYXZlIHtcbiAgICB0cmFuc2l0aW9uOiAxNTBtcyBjdWJpYy1iZXppZXIoMC4yNTAsIDAuNDYwLCAwLjQ1MCwgMC45NDApIGFsbDtcbn1cblxuLmFuaW1hdGUtZmFkZS5uZy1lbnRlcixcbi5hbmltYXRlLWZhZGUubmctbGVhdmUubmctbGVhdmUtYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAwO1xufVxuXG4uYW5pbWF0ZS1mYWRlLm5nLWxlYXZlLFxuLmFuaW1hdGUtZmFkZS5uZy1lbnRlci5uZy1lbnRlci1hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi8qIEVuc3VyZSBidXR0b25zIGRvbid0IGp1bXAgbGF5b3V0IHdoZW4gc3dpdGNoaW5nICovXG4udmVydGljYWwtYnV0dG9ucyB7XG4gICAgbWluLWhlaWdodDogNTBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmFuaW1hdGUtZmFkZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi8qIC0tLSBVbml2ZXJzYWwgVG9rZW4gU2VjdGlvbiAtLS0gKi9cbi51bml2ZXJzYWwtdG9rZW4tc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLyogSGVhZGVyICYgVGl0bGUgU3R5bGluZyAqL1xuLnRva2VuLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxOHB4O1xuICAgIHBhZGRpbmctbGVmdDogNXB4O1xufVxuXG4udG9rZW4tY2lyY2xlLWljb24ge1xuICAgIHdpZHRoOiA0NnB4O1xuICAgIGhlaWdodDogNDZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDAzNWQyIDAlLCAjMmEzMDdmIDEwMCUpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuICAgIGZsZXgtc2hyaW5rOiAwOyAvKiBQcmV2ZW50cyBpY29uIGZyb20gc3F1aXNoaW5nICovXG59XG5cbi50b2tlbi10aXRsZS1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ucHJlbWl1bS10aXRsZSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG4gICAgY29sb3I6ICMyYTMwN2Y7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTBweDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4udGl0bGUtc2VwYXJhdG9yIHtcbiAgICB3aWR0aDogNHB4O1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDM1ZDI7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5wcmVtaXVtLXN1YnRpdGxlIHtcbiAgICBtYXJnaW46IDRweCAwIDAgMCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogIzg3OGJhMDtcbiAgICBmb250LXdlaWdodDogNDAwO1xufVxuXG4ucHJlbWl1bS10aXRsZSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG4gICAgY29sb3I6ICMyYTMwN2Y7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTBweDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLnRva2VuLXByaWNlLWJhZGdlIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZmZmYTsgXG4gICAgY29sb3I6ICMyMGM5OTc7IFxuICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDMyLCAyMDEsIDE1MSwgMC4yKTtcbiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbn1cblxuLyogR3JpZCAmIEl0ZW1zIFN0eWxpbmcgKi9cbi50b2tlbi12YWx1ZS1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IDEycHg7XG59XG5cbi50b2tlbi1pdGVtIHtcbiAgICBmbGV4OiAxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIHBhZGRpbmc6IDEycHggMTVweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMGU2ZWQ7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTtcbn1cblxuLnRva2VuLWl0ZW06aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3JkZXItY29sb3I6ICNjYmQ1ZTA7XG59XG5cbi5pdGVtLWljb24ge1xuICAgIHdpZHRoOiAzNHB4O1xuICAgIGhlaWdodDogMzRweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5pdGVtLWljb24uYWktYWdlbnQgeyBiYWNrZ3JvdW5kOiAjZTdmMGZmOyBjb2xvcjogIzAwMzVkMjsgfVxuLml0ZW0taWNvbi5zbXMgeyBiYWNrZ3JvdW5kOiAjZTZmZmZhOyBjb2xvcjogIzIwYzk5NzsgfVxuLml0ZW0taWNvbi50cmFuc2NyaXB0aW9uIHsgYmFja2dyb3VuZDogI2ZmZjRlNTsgY29sb3I6ICNmZmFiMDA7IH1cblxuLml0ZW0tZGV0YWlscyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uaXRlbS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIGNvbG9yOiAjODg4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuLml0ZW0tdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiAjMzMzO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi5pdGVtLXZhbHVlIHNtYWxsIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiAjMDAzNWQyO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbn1cblxuLmJ0bi1vdXRsaW5lLXdoaXRlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xufVxuXG4uYnRuLW91dGxpbmUtd2hpdGU6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgY29sb3I6ICMwMDM1ZDI7XG4gICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggcmdiYSgwLDAsMCwwLjE1KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5idG4tb3V0bGluZS13aGl0ZTpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5idG4tb3V0bGluZS13aGl0ZSBpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cblxuLyogUmVzcG9uc2l2ZSBMb2dpYyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG4gICAgLnRva2VuLXZhbHVlLWdyaWQge1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgfVxuICAgIC50b2tlbi1pdGVtIHtcbiAgICAgICAgbWluLXdpZHRoOiBjYWxjKDUwJSAtIDEycHgpO1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgLnRva2VuLWl0ZW0ge1xuICAgICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIC5wcmVtaXVtLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgIH1cbn0iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEFJIFRyYW5zY3JpcHRpb24gU2VhdHNcbi8qIFNoYXJlZCBieSB0aGUgc2VhdCBwbGFuIGRpYWxvZyBhbmQgdGhlIHNlYXQgYXNzaWdubWVudCAvIHVzYWdlIGRpYWxvZy5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogVGhlIGNvbXBvbmVudCBzaXRzIGRpcmVjdGx5IGluc2lkZSBhbiBtZC10YWIsIHNvIGl0cyBob3N0IGVsZW1lbnQgaGFzIHRvIGNhcnJ5IHRoZSBoZWlnaHQgaXRzZWxmLiAqL1xudHJhbnNjcmlwdGlvbi1zZWF0cy12aWV3IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5zZWF0LW1haW4ge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAyMHB4IDMwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIGgzLCBoNCwgaDUge1xuICAgICAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFNlY3Rpb24gc3dpdGNoZXJcbi8qIEJ1eWluZywgYXNzaWduaW5nIGFuZCByZXBvcnRpbmcgYXJlIG9uZSB2aWV3IG92ZXIgb25lIGxvYWQgb2YgdGhlXG4vKiBzdWJzY3JpcHRpb24sIHNvIHRoZXkgc3dpdGNoIGhlcmUgcmF0aGVyIHRoYW4gdGhyb3VnaCB0aGUgZGlhbG9nJ3Ncbi8qIG93biB0YWJzLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNlYXQtc3VibmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogNnB4O1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG4gICAgcGFkZGluZzogNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE4cHg7XG5cbiAgICBidXR0b24ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuICAgICAgICBwYWRkaW5nOiA5cHggMTJweDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlO1xuXG4gICAgICAgIGkge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyOm5vdCguYWN0aXZlKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbGlnaHRHcmV5O1xuICAgICAgICAgICAgY29sb3I6ICRkYXJrTmF2eTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRuYXZ5O1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBDYWxsb3V0c1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNlYXQtYWxlcnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG4gICAgcGFkZGluZzogMTJweCAxOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuICAgIG1hcmdpbi1ib3R0b206IDE0cHg7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICA+IGkge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgID4gc3BhbiB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgfVxuXG4gICAgLyogVGhlIHNoYXJlZCAuYnRuIHJ1bGVzIHN0cmV0Y2ggdG8gMjIwcHgsIHdoaWNoIHJlYWRzIGFzIGEgc2xhYiBvbiBhIHNpbmdsZS1saW5lIGNhbGxvdXQuICovXG4gICAgLmJ0biB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICB9XG5cbiAgICAmLnRpZ2h0IHtcbiAgICAgICAgbWFyZ2luOiAxMnB4IDAgMDtcbiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB9XG5cbiAgICAmLmluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogJG5hdnk7XG4gICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgfVxuXG4gICAgJi53YXJuaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdhcm5pbmctYmc7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkd2FybmluZy1ib3JkZXI7XG4gICAgICAgIGNvbG9yOiAkd2FybmluZy10ZXh0O1xuICAgIH1cblxuICAgICYuZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMTcsIDgzLCA3OSwgMC4xKTtcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcbiAgICAgICAgY29sb3I6ICRkYW5nZXI7XG4gICAgfVxuXG4gICAgJi50cmlhbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjeWFuLXRwLTEwO1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogJGN5YW47XG4gICAgICAgIGNvbG9yOiAkdGVhbDtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU3Vic2NyaXB0aW9uIHN0YXR1cyBzdHJpcFxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNlYXQtc3RhdHVzLXN0cmlwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDQwcHg7XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcbiAgICBwYWRkaW5nOiAxNnB4IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMThweDtcbn1cblxuLnNlYXQtc3RhdHVzLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDRweDtcbn1cblxuLnNlYXQtc3RhdHVzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC42cHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5zZWF0LXN0YXR1cy12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICRkYXJrTmF2eTtcbn1cblxuLnNlYXQtcGlsbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDNweCAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG5cbiAgICAmLnBpbGwtYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTIwO1xuICAgICAgICBjb2xvcjogIzEyODA1YztcbiAgICB9XG5cbiAgICAmLnBpbGwtd2FybmluZyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3ctdHAtMzA7XG4gICAgICAgIGNvbG9yOiAkd2FybmluZy10ZXh0O1xuICAgIH1cblxuICAgICYucGlsbC1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIxNywgODMsIDc5LCAwLjE1KTtcbiAgICAgICAgY29sb3I6ICRkYW5nZXI7XG4gICAgfVxuXG4gICAgJi5waWxsLW11dGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHBhZ2VCYWNrR3JvdW5kO1xuICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFBsYW4gcGlja2VyIGxheW91dFxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNlYXQtcGxhbi1sYXlvdXQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAyMnB4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4uc2VhdC1wbGFuLWNvbHVtbiB7XG4gICAgZmxleDogMSAxIDYwJTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5zZWF0LXN1bW1hcnktY29sdW1uIHtcbiAgICBmbGV4OiAwIDAgMzIwcHg7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU2VhdCB0aWVyIGNhcmRcbi8qIFR3byB0aWVycywgc2lkZSBieSBzaWRlIGFuZCBlcXVhbCBoZWlnaHQsIHNvIGNob29zaW5nIGJldHdlZW4gdGhlbSBpc1xuLyogb25lIGNvbXBhcmlzb24gcmF0aGVyIHRoYW4gYSBzY3JvbGwuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhdC10aWVyLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgZ2FwOiAxNnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG59XG5cbi5zZWF0LXRpZXItY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDEgMSAwO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycyBlYXNlLCBib3JkZXItY29sb3IgMC4ycyBlYXNlO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctc207XG4gICAgfVxuXG4gICAgJi5yZWNvbW1lbmRlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJG5hdnk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDE0cHggcmdiYSgwLCA1MywgMjEwLCAwLjEyKTtcbiAgICB9XG59XG5cbi5zZWF0LXRpZXItZmxhZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBiYWNrZ3JvdW5kOiAkbmF2eTtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjhweDtcbiAgICBwYWRkaW5nOiA0cHggMTRweDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcbn1cblxuLnNlYXQtdGllci1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDE0cHg7XG4gICAgcGFkZGluZzogMjBweCAyNHB4IDEwcHg7XG5cbiAgICBoNCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxN3B4O1xuICAgICAgICBjb2xvcjogJGRhcmtOYXZ5O1xuICAgIH1cbn1cblxuLnNlYXQtdGllci1pY29uIHtcbiAgICB3aWR0aDogNDZweDtcbiAgICBoZWlnaHQ6IDQ2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAmLnN0YW5kYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogJG5hdnktcGFsZTtcbiAgICAgICAgY29sb3I6ICRuYXZ5O1xuICAgIH1cblxuICAgICYucHJlbWl1bSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRsYXZlbmRlci10cC0yMDtcbiAgICAgICAgY29sb3I6ICRwdXJwbGU7XG4gICAgfVxufVxuXG4uc2VhdC10aWVyLXByaWNlIHtcbiAgICBwYWRkaW5nOiAwIDI0cHg7XG5cbiAgICAuYW1vdW50IHtcbiAgICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogJGRhcmtOYXZ5O1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICB9XG5cbiAgICAucGVyaW9kIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDZweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgfVxufVxuXG4uc2VhdC10aWVyLWluY2x1ZGVkIHtcbiAgICBtYXJnaW46IDRweCAwIDA7XG4gICAgcGFkZGluZzogMCAyNHB4O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogJHRleHRHcmV5O1xufVxuXG4vKiBQdXNoZWQgdG8gdGhlIGJvdHRvbSBvZiB0aGUgY2FyZCBzbyBib3RoIHN0ZXBwZXJzIGxpbmUgdXAgd2hhdGV2ZXIgdGhlIGNvcHkgYWJvdmUgZG9lcy4gKi9cbi5zZWF0LXRpZXItYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMThweDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBwYWRkaW5nOiAxOHB4IDI0cHggMjBweDtcbn1cblxuLnNlYXQtdGllci1zdGF0ZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMnB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG59XG5cbi5zZWF0LXN0ZXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDA7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5zZWF0LXN0ZXAtYnRuIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQycHg7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6ICRsaWdodEdyZXk7XG4gICAgY29sb3I6ICRuYXZ5O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlO1xuXG4gICAgJjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuICAgIH1cblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICAgY29sb3I6ICRjYW5jZWxCb3JkZXI7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxufVxuXG4uc2VhdC1zdGVwLWlucHV0IHtcbiAgICB3aWR0aDogNjhweDtcbiAgICBoZWlnaHQ6IDQycHg7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICRkYXJrTmF2eTtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG5cbiAgICAvKiBUaGUgKyBhbmQgLSBidXR0b25zIGVpdGhlciBzaWRlIGFyZSB0aGUgb25seSBzdGVwcGVyczogdGhlIGJyb3dzZXIncyBvd24gYXJyb3dzIHNpdCBpbnNpZGUgdGhlXG4gICAgICAgYm94LCBhcmUgZmFyIHRvbyBzbWFsbCB0byBhaW0gYXQsIGFuZCBzdGVwIHBhc3QgdGhlIG1pbmltdW0gdGhlIHByYWN0aWNlIGlzIGFsbG93ZWQgdG8ga2VlcC4gKi9cbiAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG5cbiAgICAmOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLFxuICAgICY6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogJG5hdnktcGFsZTtcbiAgICB9XG59XG5cbi5zZWF0LW92ZXJmbG93LW5vdGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAxMnB4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLW1lZGl1bTtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcbiAgICBwYWRkaW5nOiAxNHB4IDE4cHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuXG4gICAgaSB7XG4gICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIE9yZGVyIHN1bW1hcnlcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zZWF0LXN1bW1hcnktY2FyZCB7XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctc207XG59XG5cbi5zZWF0LXN1bW1hcnktaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICRuYXZ5IDAlLCAkZGFya05hdnkgMTAwJSk7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgICBwYWRkaW5nOiAxNHB4IDIwcHg7XG5cbiAgICBoNCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgfVxufVxuXG4uc2VhdC1zdW1tYXJ5LWN1cnJlbmN5IHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBvcGFjaXR5OiAwLjg7XG59XG5cbi5zZWF0LXN1bW1hcnktYm9keSB7XG4gICAgcGFkZGluZzogMThweCAyMHB4O1xuICAgIG1pbi1oZWlnaHQ6IDEyMHB4O1xufVxuXG4uc2VhdC1zdW1tYXJ5LWxvYWRpbmcsXG4uc2VhdC1zdW1tYXJ5LWVtcHR5IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBwYWRkaW5nOiAyNHB4IDA7XG5cbiAgICBpIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgfVxufVxuXG4uc3VtbWFyeS1saW5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgcGFkZGluZzogOHB4IDA7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBmb250LXNpemU6IDEzcHg7XG5cbiAgICAmLnRvdGFsIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICRkYXJrTmF2eTtcbiAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTJweDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogJGRhcmtOYXZ5O1xuICAgIH1cbn1cblxuLnN1bW1hcnktbGFiZWwge1xuICAgIGNvbG9yOiAkdGV4dEdyZXk7XG5cbiAgICBzbWFsbCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICB9XG59XG5cbi5zdW1tYXJ5LWFtb3VudCB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogJGRhcmtOYXZ5O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5zdW1tYXJ5LWNoYXJnZSB7XG4gICAgbWFyZ2luLXRvcDogMTRweDtcbiAgICBwYWRkaW5nOiAxMnB4IDE0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG4gICAgYmFja2dyb3VuZDogJG5hdnktcGFsZTtcblxuICAgICYuZG93bmdyYWRlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHdhcm5pbmctYmc7XG5cbiAgICAgICAgLmNoYXJnZS1yb3cge1xuICAgICAgICAgICAgY29sb3I6ICR3YXJuaW5nLXRleHQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jaGFyZ2Utcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAkZGFya05hdnk7XG5cbiAgICBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxufVxuXG4uY2hhcmdlLW5vdGUge1xuICAgIG1hcmdpbjogNnB4IDAgMDtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xufVxuXG4uc3VtbWFyeS1uZXh0IHtcbiAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uc2VhdC1zdW1tYXJ5LWZvb3RlciB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgYmFja2dyb3VuZDogJGdyZXktbW9kYWwtaGVhZGVyO1xuXG4gICAgLmJ0biB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICB9XG5cbiAgICAvKiBUaGUgZ2xvYmFsIC5idG4tbmF2eSBpcyBjYXBwZWQgYXQgMjIwcHgsIHdoaWNoIGxlYXZlcyB0aGUgYmxvY2sgYnV0dG9uXG4gICAgICAgaHVnZ2luZyB0aGUgbGVmdCBlZGdlIG9mIHRoZSBjYXJkLiBTcGFuIHRoZSBmb290ZXIgaW5zdGVhZC4gKi9cbiAgICAuYnRuLWJsb2NrIHtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgIH1cbn1cblxuLnNlYXQtdmFsaWRhdGlvbiB7XG4gICAgYmFja2dyb3VuZDogJHdhcm5pbmctYmc7XG4gICAgY29sb3I6ICR3YXJuaW5nLXRleHQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG4gICAgcGFkZGluZzogOXB4IDEycHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcblxuICAgIGkge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICB9XG59XG5cbi5zZWF0LXZhbGlkYXRpb24tYWN0aW9uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDhweCAwIDA7XG59XG5cbi5zZWF0LWZlZWRiYWNrIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuXG4gICAgaSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIH1cblxuICAgICYuZXJyb3Ige1xuICAgICAgICBjb2xvcjogJGRhbmdlcjtcbiAgICB9XG5cbiAgICAmLnN1Y2Nlc3Mge1xuICAgICAgICBjb2xvcjogIzEyODA1YztcbiAgICB9XG59XG5cbi5zZWF0LXJlbmV3LW5vdGUge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAycHggMCAwO1xufVxuXG4uc2VhdC1jYW5jZWwtbGluayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1hcmdpbi10b3A6IDRweDtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGRhbmdlcjtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFNlYXQgYXZhaWxhYmlsaXR5IGhlYWRlclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNlYXQtYXZhaWxhYmlsaXR5LXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDE2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMThweDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5zZWF0LWF2YWlsYWJpbGl0eS1jYXJkIHtcbiAgICBmbGV4OiAxIDEgMjQwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTRweDtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuICAgIHBhZGRpbmc6IDE0cHggMThweDtcbiAgICBib3JkZXItbGVmdC13aWR0aDogNHB4O1xuXG4gICAgJi5zdGFuZGFyZCB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkbmF2eTtcbiAgICB9XG5cbiAgICAmLnByZW1pdW0ge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogJHB1cnBsZTtcbiAgICB9XG5cbiAgICAmLmdob3N0IHtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gICAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJG5hdnk7XG4gICAgICAgICAgICBjb2xvcjogJG5hdnk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5hdmFpbGFiaWxpdHktaWNvbiB7XG4gICAgd2lkdGg6IDM4cHg7XG4gICAgaGVpZ2h0OiAzOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcbiAgICBiYWNrZ3JvdW5kOiAkbGlnaHRHcmV5O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjb2xvcjogJG5hdnk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5hdmFpbGFiaWxpdHktZGV0YWlsIHtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmF2YWlsYWJpbGl0eS1sYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuNnB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uYXZhaWxhYmlsaXR5LWNvdW50IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDE3cHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogJGRhcmtOYXZ5O1xuXG4gICAgc21hbGwge1xuICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICB9XG59XG5cbi5hdmFpbGFiaWxpdHktYmFyIHtcbiAgICBoZWlnaHQ6IDVweDtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYmFja2dyb3VuZDogJHBhZ2VCYWNrR3JvdW5kO1xuICAgIG1hcmdpbi10b3A6IDZweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uYXZhaWxhYmlsaXR5LWZpbGwge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiAkbmF2eTtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjI1cyBlYXNlO1xufVxuXG4uYXZhaWxhYmlsaXR5LXJlbWFpbmluZyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHBhZGRpbmctbGVmdDogMTJweDtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblxuICAgICYubm9uZS1sZWZ0IC5yZW1haW5pbmctbnVtYmVyIHtcbiAgICAgICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIH1cbn1cblxuLnJlbWFpbmluZy1udW1iZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiAkZ3JlZW47XG4gICAgbGluZS1oZWlnaHQ6IDEuMTtcbn1cblxuLnJlbWFpbmluZy1sYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuNnB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBUYWJsZSB0b29sYmFyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhdC10YWJsZS10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxNnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG59XG5cbi5zZWF0LXNlYXJjaCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBwYWRkaW5nOiA2cHggMTRweDtcbiAgICB3aWR0aDogMzIwcHg7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgaSB7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgfVxufVxuXG4uc2VhdC10YWJsZS1jb3VudCB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uc2VhdC1wZXJpb2Qtc2VsZWN0b3Ige1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG5cbiAgICBsYWJlbCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC42cHg7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG5cbiAgICBzZWxlY3Qge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgICAgIG1pbi13aWR0aDogMjIwcHg7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFNlYXQgdGFibGVzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhdC10YWJsZS13cmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5zZWF0LXRhYmxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgPiB0aGVhZCA+IHRyID4gdGgge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkZ3JleS1tb2RhbC1oZWFkZXI7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNnB4O1xuICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICB9XG5cbiAgICA+IHRib2R5ID4gdHIgPiB0ZCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgIH1cblxuICAgID4gdGJvZHkgPiB0ciB7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRwYWxlQmx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYucm93LXNhdmluZyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5yb3ctb3JwaGFuZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI0MywgMjA1LCAwLjUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2VhdC11c2VyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xufVxuXG4uc2VhdC1hdmF0YXIge1xuICAgIHdpZHRoOiAzNHB4O1xuICAgIGhlaWdodDogMzRweDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgJi50aWVyLXN0YW5kYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogJG5hdnk7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxuXG4gICAgJi50aWVyLXByZW1pdW0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkcHVycGxlO1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cblxuICAgICYudGllci10cmlhbCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjeWFuO1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cblxuICAgICYudGllci1ub25lIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHBhZ2VCYWNrR3JvdW5kO1xuICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgfVxufVxuXG4uc2VhdC11c2VyLWRldGFpbCB7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uc2VhdC11c2VyLW5hbWUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICRkYXJrTmF2eTtcbn1cblxuLnNlYXQtdXNlci1lbWFpbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4uc2VhdC11c2VyLWFzc2lnbmVkIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyogVGhlIHJvbGUgcmlkZXMgb24gdGhlIG5hbWUgbGluZSwgc28gaXQgaXMgc2V0IGFwYXJ0IGJ5IHdlaWdodCBhbmQgYSBzZXBhcmF0b3IgcmF0aGVyIHRoYW4gYnlcbiAgIHNpdHRpbmcgaW4gYSBjb2x1bW4gb2YgaXRzIG93bi4gKi9cbi5zZWF0LXVzZXItcm9sZSB7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcXDAwYjdcIjtcbiAgICAgICAgbWFyZ2luOiAwIDVweDtcbiAgICB9XG59XG5cbi8qIExhYmVscyBhcmUgd3JpdHRlbiBvdXQgaW4gdGhlIHRpZXIgbWFwIHJhdGhlciB0aGFuIHNob3V0ZWQgYnkgdGhlIHN0eWxlc2hlZXQsIHNvIG5vIHNjcmVlbiBldmVyXG4gICBzaG93cyBhIHJhdyBlbnVtIHZhbHVlLiAqL1xuLnNlYXQtYmFkZ2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAycHggOXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMnB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYmFja2dyb3VuZDogJHBhZ2VCYWNrR3JvdW5kO1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuICAgIGkge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICB9XG5cbiAgICAmLnN0YW5kYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogJG5hdnktcGFsZTtcbiAgICAgICAgY29sb3I6ICRuYXZ5O1xuICAgIH1cblxuICAgICYucHJlbWl1bSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRsYXZlbmRlci10cC0yMDtcbiAgICAgICAgY29sb3I6ICRwdXJwbGU7XG4gICAgfVxuXG4gICAgJi53YWxsZXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbGlnaHRHcmV5O1xuICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgfVxuXG4gICAgJi50cmlhbCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjeWFuLXRwLTIwO1xuICAgICAgICBjb2xvcjogJHRlYWw7XG4gICAgfVxuXG4gICAgJi5vcnBoYW5lZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR5ZWxsb3ctdHAtMzA7XG4gICAgICAgIGNvbG9yOiAkd2FybmluZy10ZXh0O1xuICAgIH1cbn1cblxuLyogQmFkZ2VzIHRyYWlsaW5nIGEgbmFtZSBuZWVkIHNlcGFyYXRpbmcgZnJvbSBpdDsgdGhlIHNhbWUgYmFkZ2UgaW4gaXRzIG93biB0YWJsZSBjZWxsIGRvZXMgbm90LiAqL1xuLnNlYXQtdXNlci1uYW1lIC5zZWF0LWJhZGdlIHtcbiAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQZXItcm93IHRpZXIgc2VsZWN0b3Jcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zZWF0LXRpZXItc2VsZWN0b3Ige1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xufVxuXG4vKiBUaGUgc3Bpbm5lciBpcyBvdmVybGFpZCByYXRoZXIgdGhhbiBpbnNlcnRlZCwgc28gYW4gaW4tZmxpZ2h0IHJvdyBrZWVwcyBpdHMgaGVpZ2h0LiAqL1xuLnNlYXQtdGllci1jZWxsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5zZWF0LXRpZXItc2VsZWN0b3Iuc2F2aW5nIHtcbiAgICBvcGFjaXR5OiAwLjQ1O1xuICAgIGN1cnNvcjogcHJvZ3Jlc3M7XG59XG5cbi5zZWF0LXRpZXItc3Bpbm5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW46IC03cHggMCAwIC03cHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAkbmF2eTtcbn1cblxuLnRpZXItb3B0aW9uIHtcbiAgICBmbGV4OiAxO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIHBhZGRpbmc6IDdweCA2cHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsIGNvbG9yIDAuMTVzIGVhc2U7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICB9XG5cbiAgICAmOmhvdmVyOm5vdChbZGlzYWJsZWRdKTpub3QoLnNlbGVjdGVkKSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRsaWdodEdyZXk7XG4gICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgfVxuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgICBjb2xvcjogI2M4Y2RkNDtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgYmFja2dyb3VuZDogJGxpZ2h0R3JleTtcbiAgICB9XG5cbiAgICAmLnNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHRleHRHcmV5O1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cblxuICAgICYuc3RhbmRhcmQuc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eTtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICB9XG5cbiAgICAmLnByZW1pdW0uc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkcHVycGxlO1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cblxuICAgIC8qIFRoZSB0cmlhbCBzbG90IHN0YW5kcyBpbiBmb3IgXCJub25lXCIgb24gYSB0cmlhbCBob2xkZXIsIHdob3NlIHRyaWFsIGNhbm5vdCBiZSByZWxlYXNlZC4gKi9cbiAgICAmLnRyaWFsLnNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGN5YW47XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEZlZWRiYWNrIGJhclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNlYXQtZmVlZGJhY2stYmFyIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIGJvdHRvbTogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAyMHB4O1xuICAgIG1hcmdpbi10b3A6IDE0cHg7XG4gICAgcGFkZGluZzogMCAxOHB4O1xuICAgIG1heC1oZWlnaHQ6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcbiAgICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xuICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4ycyBlYXNlLCBvcGFjaXR5IDAuMnMgZWFzZSwgcGFkZGluZyAwLjJzIGVhc2U7XG5cbiAgICAmLnZpc2libGUge1xuICAgICAgICBtYXgtaGVpZ2h0OiA5MHB4O1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBwYWRkaW5nOiAxNHB4IDE4cHg7XG4gICAgfVxuXG4gICAgLnNlYXQtZmVlZGJhY2sge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBVc2FnZSB0b3RhbHNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zZWF0LXRvdGFscy1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMTZweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxOHB4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLnNlYXQtdG90YWwtY2FyZCB7XG4gICAgZmxleDogMSAxIDIwMHB4O1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG4gICAgcGFkZGluZzogMTZweCAxOHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDNweDtcbn1cblxuLnRvdGFsLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC42cHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi50b3RhbC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAyNnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICRkYXJrTmF2eTtcbiAgICBsaW5lLWhlaWdodDogMS4xNTtcbn1cblxuLnRvdGFsLXN1YiB7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4udG90YWwtYmFyIHtcbiAgICBoZWlnaHQ6IDZweDtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYmFja2dyb3VuZDogJHBhZ2VCYWNrR3JvdW5kO1xuICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udG90YWwtZmlsbCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6ICRuYXZ5O1xuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMjVzIGVhc2U7XG5cbiAgICAmLm92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeWVsbG93LWN0YTtcbiAgICB9XG59XG5cbi50b3RhbC1saW5rIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogJG5hdnk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1hcmdpbi10b3A6IDRweDtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgY29sb3I6ICRuYXZ5O1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQZXItdXNlciB1c2FnZSBiYXJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi51c2FnZS1iYXIge1xuICAgIGhlaWdodDogNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBiYWNrZ3JvdW5kOiAkcGFnZUJhY2tHcm91bmQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG59XG5cbi51c2FnZS1maWxsIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogJGdyZWVuO1xuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMjVzIGVhc2U7XG5cbiAgICAmLm92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeWVsbG93LWN0YTtcbiAgICB9XG59XG5cbi51c2FnZS1jYXB0aW9uIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgY29sb3I6ICR0ZXh0R3JleTtcbn1cblxuLnNlYXQtZm9vdG5vdGUge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBtYXJnaW46IDE0cHggNHB4IDA7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFNlYXQgcHJvbW8gcGFuZWxcbi8qIFNpdHMgb24gdGhlIHdhbGxldCB0YWIgb2YgdGhlIHBheW1lbnQgZGlhbG9nIGFuZCBsaW5rcyBhY3Jvc3MgdG8gdGhlXG4vKiBzZWF0cyB0YWIuIEtlcHQgaW4gdGhpcyBmaWxlIHJhdGhlciB0aGFuIF9wYXltZW50cy5jc3Mgc28gZXZlcnl0aGluZ1xuLyogZGVzY3JpYmluZyBzZWF0cyBzdGF5cyBpbiBvbmUgcGxhY2UuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhdC1wcm9tbyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgLyogVGhlIDRweCBlZGdlIGlzIGhvdyB0aGUgcmVzdCBvZiB0aGlzIGZpbGUgbWFya3MgYSBjYWxsb3V0LCBhbmQgaXQgZ2l2ZXMgdGhlIHBhbmVsIGEgYnJhbmRcbiAgICAgICBhbmNob3Igd2l0aG91dCB0aGUgZmlsbGVkIG5hdnkgYmFubmVyIHRoYXQgY3Jvd2RlZCB0aGUgd2FsbGV0IGNhcmQgYWJvdmUgaXQuICovXG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCAkbmF2eTtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy14bDtcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFNlYXQgcHJvbW8gb3BlbmluZyBwaW5nXG4vKiBUaGUgcGFuZWwgaXMgZWFzeSB0byBzY3JvbGwgcGFzdCwgc28gdHdvIHRoaW5ncyBoYXBwZW4gd2hlbiB0aGUgZGlhbG9nXG4vKiBmaXJzdCBzaG93cyBpdDogaXQgbGlmdHMgb2ZmIHRoZSBwYWdlIG9uY2UsIGFuZCBhIGJhbmQgb2YgY3lhbiBsaWdodFxuLyogc3dlZXBzIGFjcm9zcyBpdC4gVGhlIHdoaXRlIGJvZHkgaXMgbmV2ZXIgcmVjb2xvdXJlZCAtIHRoZSBiYW5kIG9ubHlcbi8qIHBhc3NlcyBvdmVyIGl0IC0gYW5kIGJvdGggYW5pbWF0aW9ucyBlbmQgb24gdGhlIHJlc3RpbmcgbG9vaywgc28gdGhlXG4vKiBjbGFzcyBjYW4gYmUgZHJvcHBlZCBhdCBhbnkgcG9pbnQgd2l0aG91dCB0aGUgcGFuZWwgYXBwZWFyaW5nIHRvXG4vKiBjaGFuZ2UuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIE9uZSByaXNlIGFuZCBzZXR0bGUuIEtlcHQgdG8gYSBmZXcgcGl4ZWxzOiB0aGlzIGlzIGEgcGFuZWwgaW4gYSBkaWFsb2csIG5vdCBhIGNhcmQgYmVpbmcgcGlja2VkIHVwLiAqL1xuQGtleWZyYW1lcyBzZWF0LXByb21vLWxpZnQge1xuICAgIDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cblxuICAgIDMwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KSBzY2FsZSgxLjAwOCk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi8qIFRyYXZlbHMgdGhlIHBhbmVsJ3Mgb3duIHdpZHRoIHBsdXMgaXRzIG92ZXJoYW5nLCBzbyB0aGUgYmFuZCBlbnRlcnMgYW5kIGxlYXZlcyBvZmYgdGhlIGVkZ2VzLiAqL1xuQGtleWZyYW1lcyBzZWF0LXByb21vLXN3ZWVwIHtcbiAgICBmcm9tIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMzAlKSBza2V3WCgtMTJkZWcpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMyMCUpIHNrZXdYKC0xMmRlZyk7XG4gICAgfVxufVxuXG4vKiBIZWxkIGZvciB0aGUgZmlyc3QgbW9tZW50cyBvZiB0aGUgZGlhbG9nIG9ubHkgLSB0aGUgY29udHJvbGxlciBkcm9wcyB0aGUgY2xhc3MgYXMgdGhlc2UgZmluaXNoLiAqL1xuLnNlYXQtcHJvbW8taGlnaGxpZ2h0IHtcbiAgICBhbmltYXRpb246IHNlYXQtcHJvbW8tbGlmdCAxLjdzIGVhc2Utb3V0IDEgYm90aDtcblxuICAgIC8qIFRoZSBiYW5kIG9mIGxpZ2h0LiBDbGlwcGVkIGJ5IHRoZSBwYW5lbCdzIG93biBvdmVyZmxvdywgYW5kIG92ZXIgdGhlIGhlcm8gY29udGVudCByYXRoZXIgdGhhblxuICAgICAgIHVuZGVyIGl0LCBzbyBpdCBwYXNzZXMgYWNyb3NzIHRoZSBjb3B5IGFzIHdlbGwgYXMgdGhlIHRpbnRlZCBzdHJpcC4gQ3lhbiBjYXJyaWVzIGFnYWluc3QgYm90aFxuICAgICAgIHRoZSB3aGl0ZSBib2R5IGFuZCB0aGUgcGFsZSBoZXJvOyBhIHdoaXRlIHNoZWVuIHdvdWxkIGJlIGludmlzaWJsZSBvbiBlaXRoZXIuICovXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xMCU7XG4gICAgICAgIGJvdHRvbTogLTEwJTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDQ1JTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMDBkZWcsXG4gICAgICAgICAgICBjb2xvcigkY3lhbiBhKDAlKSkgMCUsXG4gICAgICAgICAgICBjb2xvcigkY3lhbiBhKDI2JSkpIDUwJSxcbiAgICAgICAgICAgIGNvbG9yKCRjeWFuIGEoMCUpKSAxMDAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMzAlKSBza2V3WCgtMTJkZWcpO1xuICAgICAgICBhbmltYXRpb246IHNlYXQtcHJvbW8tc3dlZXAgMS4yNXMgZWFzZS1pbi1vdXQgMiBib3RoO1xuICAgIH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAuc2VhdC1wcm9tby1oaWdobGlnaHQge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG5cbiAgICAgICAgLyogSGlkZGVuIG91dHJpZ2h0OiB3aXRoIHRoZSBhbmltYXRpb24gb2ZmLCBhIHN0YXRpYyBiYW5kIHdvdWxkIGp1c3Qgc2l0IG92ZXIgdGhlIHBhbmVsLiAqL1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBUaW50ZWQgd2VsbCBzaG9ydCBvZiB0aGUgd2FsbGV0IGNhcmQncyBzYXR1cmF0aW9uLCBidXQgZmFyIGVub3VnaCB1cCBmcm9tIHdoaXRlIHRoYXQgdGhlIHBhbmVsXG4gICBzdGlsbCByZWFkcyBhcyBhbiBhZHZlcnRpc2VtZW50IHJhdGhlciB0aGFuIGFub3RoZXIgc2V0dGluZ3MgY2FyZC4gKi9cbi5zZWF0LXByb21vLWhlcm8ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDI0cHg7XG4gICAgcGFkZGluZzogMjRweCAyOHB4IDIycHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEyMGRlZywgY29sb3IoJG5hdnkgbCg5MCUpKSAwJSwgY29sb3IoJGN5YW4gbCg4OCUpKSAxMDAlKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGNvbG9yOiAkZGFya05hdnk7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAtNjBweDtcbiAgICAgICAgdG9wOiAtODBweDtcbiAgICAgICAgd2lkdGg6IDIzMHB4O1xuICAgICAgICBoZWlnaHQ6IDIzMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtNDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxufVxuXG4uc2VhdC1wcm9tby13YXRlcm1hcmsge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMjJweDtcbiAgICBib3R0b206IC0zNHB4O1xuICAgIGZvbnQtc2l6ZTogMTE4cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6ICR3aGl0ZS10cC01MDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnNlYXQtcHJvbW8taW50cm8ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDE4cHg7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi8qIFRoZSBvbmUgc2F0dXJhdGVkIGVsZW1lbnQgbGVmdCBpbiB0aGUgaGVybywgbWF0Y2hpbmcgdGhlIHdhbGxldCBwYWdlJ3Mgb3duIGljb24gY2hpcHMuICovXG4uc2VhdC1wcm9tby1pY29uIHtcbiAgICB3aWR0aDogNTJweDtcbiAgICBoZWlnaHQ6IDUycHg7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJG5hdnkgMCUsICRkYXJrTmF2eSAxMDAlKTtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAyMnB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc2VhdC1wcm9tby1jb3B5IHtcbiAgICBtaW4td2lkdGg6IDA7XG5cbiAgICBoMyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBtYXJnaW46IDAgMCA2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgbWF4LXdpZHRoOiA2MjBweDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBjb2xvcjogJHRleHRHcmV5O1xuICAgIH1cblxuICAgIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgfVxufVxuXG4uc2VhdC1wcm9tby1mbGFnIHtcbiAgICBiYWNrZ3JvdW5kOiAkeWVsbG93LWN0YTtcbiAgICBjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuICAgIGZvbnQtc2l6ZTogOXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuOHB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgcGFkZGluZzogM3B4IDlweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktc2Fucy1zZXJpZjtcblxuICAgICYubGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRncmVlbjtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICB9XG5cbiAgICAmLmFsZXJ0IHtcbiAgICAgICAgYmFja2dyb3VuZDogJHJlZC1kYW5nZXItYWx0O1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cbn1cblxuLnNlYXQtcHJvbW8tY3RhIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICBmbGV4OiAwIDAgMjEwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogOHB4O1xuXG4gICAgLmJ0biB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG5cbi5zZWF0LXByb21vLWJ0bi1wcmltYXJ5LFxuLnNlYXQtcHJvbW8tYnRuLXNlY29uZGFyeSB7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBwYWRkaW5nOiA5cHggMTRweDtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG4gICAgaSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNnB4O1xuICAgIH1cbn1cblxuLnNlYXQtcHJvbW8tYnRuLXByaW1hcnkge1xuICAgIGJhY2tncm91bmQ6ICRuYXZ5O1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCA1MywgMjEwLCAwLjIpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmFjdGl2ZSxcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGRhcmtOYXZ5O1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICBvdXRsaW5lOiAwO1xuICAgIH1cbn1cblxuLnNlYXQtcHJvbW8tYnRuLXNlY29uZGFyeSB7XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIGNvbG9yOiAkbmF2eTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmFjdGl2ZSxcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgICAgICBjb2xvcjogJG5hdnk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJG5hdnk7XG4gICAgICAgIG91dGxpbmU6IDA7XG4gICAgfVxufVxuXG4uc2VhdC1wcm9tby1saW5rIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG4gICAgbWFyZ2luLXRvcDogMnB4O1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAkbmF2eTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBjb2xvcjogJGRhcmtOYXZ5O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbi8qIC0tLSBUaGUgdHdvIHRpZXJzLCBwcmljZWQuIFNpZGUgYnkgc2lkZSwgYXMgdGhleSBhcmUgb24gdGhlIHNlYXRzIHRhYiBpdHNlbGYuIC0tLSAqL1xuLnNlYXQtcHJvbW8tcGxhbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgZ2FwOiAxMnB4O1xuICAgIHBhZGRpbmc6IDE2cHggMjhweCAxOHB4O1xufVxuXG4uc2VhdC1wcm9tby1wbGFuIHtcbiAgICBmbGV4OiAxIDEgMDtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgIGJhY2tncm91bmQ6ICRsaWdodEdyZXk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMnMgZWFzZTtcblxuICAgICYucmVjb21tZW5kZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuICAgICAgICBib3JkZXItY29sb3I6ICRuYXZ5O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiAkc2hhZG93LXNtO1xuICAgICAgICBib3JkZXItY29sb3I6ICRuYXZ5O1xuICAgIH1cbn1cblxuLnByb21vLXBsYW4tbmFtZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDhweDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogJGRhcmtOYXZ5O1xuXG4gICAgaSB7XG4gICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cbn1cblxuLnByb21vLXBsYW4tcHJpY2Uge1xuICAgIG1hcmdpbi10b3A6IDNweDtcbiAgICBmb250LXNpemU6IDIycHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIGNvbG9yOiAkZGFya05hdnk7XG5cbiAgICBzbWFsbCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIH1cbn1cblxuLnNlYXQtcHJvbW8tcGxhbnMtc3RhdHVzIHtcbiAgICBmbGV4OiAxO1xuICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG5cbiAgICBpIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgfVxufVxuXG4vKiAtLS0gRm9vdGVyczogdGhlIHRoaW5ncyB0aGF0IGJsb2NrIG9yIHdhc3RlIGEgc2VhdCBwdXJjaGFzZSAtLS0gKi9cbi5zZWF0LXByb21vLW5vdGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgcGFkZGluZzogMTFweCAyOHB4O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuXG4gICAgPiBpIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG5cbiAgICA+IHNwYW4ge1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC8qIFRoZSBzaGFyZWQgLmJ0biBydWxlcyBzdHJldGNoIHRvIDIyMHB4LCB3aGljaCByZWFkcyBhcyBhIHNsYWIgaW4gYSBvbmUtbGluZSBmb290ZXIuICovXG4gICAgLmJ0biB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICB9XG5cbiAgICAmLmluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuICAgICAgICBjb2xvcjogJGRhcmtOYXZ5O1xuXG4gICAgICAgID4gaSB7XG4gICAgICAgICAgICBjb2xvcjogJG5hdnk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLndhcm5pbmcge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkd2FybmluZy1iZztcbiAgICAgICAgY29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cbiAgICAgICAgPiBpIHtcbiAgICAgICAgICAgIGNvbG9yOiAkeWVsbG93LWN0YTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMTcsIDgzLCA3OSwgMC4xKTtcbiAgICAgICAgY29sb3I6ICRkYW5nZXI7XG5cbiAgICAgICAgPiBpIHtcbiAgICAgICAgICAgIGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQ2FuY2VsIHNlYXRzIG1vZGFsXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBDYW5jZWxsaW5nIGFza3MgaG93IG1hbnkgc2VhdHMgdG8gZ2l2ZSB1cCBiZWZvcmUgaXQgb2ZmZXJzIHRvIGVuZCB0aGUgbG90LCBzbyB0aGUgbW9kYWwgY2Fycmllc1xuICAgdGhlIHNhbWUgc3RlcHBlciBhcyB0aGUgYnV5IHNjcmVlbiBhbmQgdGhlIHdob2xlLXN1YnNjcmlwdGlvbiBidXR0b24gc2l0cyBhcGFydCBmcm9tIGl0LiAqL1xuLnNlYXQtY2FuY2VsLW1vZGFsIHtcblxuICAgIC5tb2RhbC1kaWFsb2cge1xuICAgICAgICB3aWR0aDogNTYwcHg7XG4gICAgICAgIG1heC13aWR0aDogOTR2dztcbiAgICB9XG5cbiAgICAvKiBDYXBwZWQgc28gdW5mb2xkaW5nIGEgcGlja2VyIGNhbiBuZXZlciBwdXNoIHRoZSBmb290ZXIgb2ZmIHRoZSBzY3JlZW4gLSB0aGUgcGFuZWwgc2Nyb2xsc1xuICAgICAgIGluc2lkZSBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgd2hvbGUgZGlhbG9nIGdyb3dpbmcgcGFzdCB0aGUgdmlld3BvcnQuICovXG4gICAgLm15LW1vZGFsLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAycmVtO1xuICAgICAgICBtYXgtaGVpZ2h0OiA2MnZoO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbn1cblxuLnNlYXQtY2FuY2VsLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDE0cHg7XG4gICAgcGFkZGluZzogMTRweCAwO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cbiAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgfVxufVxuXG4uc2VhdC1jYW5jZWwtZGV0YWlsIHtcbiAgICBmbGV4OiAxIDEgMTUwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMnB4O1xufVxuXG4uc2VhdC1jYW5jZWwtbmFtZSB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICRkYXJrTmF2eTtcblxuICAgID4gaSB7XG4gICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgfVxufVxuXG4uc2VhdC1jYW5jZWwtaGVsZCB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbn1cblxuLnNlYXQtY2FuY2VsLWtlZXBpbmcge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIG1pbi13aWR0aDogNzJweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAycHg7XG59XG5cbi5rZWVwaW5nLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC40cHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xufVxuXG4ua2VlcGluZy12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICRkYXJrTmF2eTtcblxuICAgIC8qIE5vdGhpbmcgYmVpbmcgZ2l2ZW4gdXAgcmVhZHMgYXMgYSBuZXV0cmFsIHplcm87IHRoZSBtb21lbnQgaXQgaXMgbm90LCBpdCBzaG91bGQgY2F0Y2ggdGhlIGV5ZS4gKi9cbiAgICAmLmlzLWNhbmNlbGxpbmcge1xuICAgICAgICBjb2xvcjogJGRhbmdlcjtcbiAgICB9XG59XG5cbi8qIEZ1bGwgd2lkdGggdW5kZXIgdGhlIHJvdyBpdCBleHBsYWlucywgcmF0aGVyIHRoYW4gc3F1ZWV6ZWQgYmV0d2VlbiB0aGUgc3RlcHBlciBhbmQgdGhlIGNvdW50LiAqL1xuLnNlYXQtY2FuY2VsLW5vdGUge1xuICAgIGZsZXg6IDEgMSAxMDAlO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuLyogVGhlIHBpY2tlciBvbmx5IGFwcGVhcnMgb25jZSB0aGUgc3RlcHBlciByZWFjaGVzIHNlYXRzIHBlb3BsZSBhcmUgaG9sZGluZywgc28gaXQgc2l0cyBpbnNpZGUgdGhlXG4gICByb3cgaXQgYmVsb25ncyB0byBhbmQgaXMgaW5kZW50ZWQgYXdheSBmcm9tIHRoZSBzdGVwcGVyIGFib3ZlIGl0LiAqL1xuLnNlYXQtcmVsZWFzZS1waWNrZXIge1xuICAgIGZsZXg6IDEgMSAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICBwYWRkaW5nOiAxMnB4IDE0cHg7XG4gICAgYmFja2dyb3VuZDogJGxpZ2h0R3JleTtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICRuYXZ5O1xuICAgIG1heC1oZWlnaHQ6IDQwMHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAvKiBTbGlkIHJhdGhlciB0aGFuIHBvcHBlZDogaXQgaXMgdGhlIG9uZSBibG9jayBvbiB0aGUgcGFuZWwgdGhhdCBoYXMgdG8gY29tZSBhbmQgZ28sIGFuZCBhdFxuICAgICAgIDE2MG1zIGl0IHJlYWRzIGFzIHRoZSByb3cgb3BlbmluZyB1cCBpbnN0ZWFkIG9mIHRoZSBtb2RhbCByZWFycmFuZ2luZyBpdHNlbGYuIEEgbWF4LWhlaWdodCBpc1xuICAgICAgIHRoZSBvbmx5IGhlaWdodCBhIHRyYW5zaXRpb24gY2FuIHdvcmsgd2l0aCBoZXJlLCBzbyBpdCBpcyBzZXQgcGFzdCBhbnkgcmVhbGlzdGljIGxpc3QgYW5kIHRoZVxuICAgICAgIGxpc3Qgc2Nyb2xscyBpbnNpZGUgaXQuICovXG4gICAgJi5uZy1lbnRlcixcbiAgICAmLm5nLWxlYXZlIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjE2cyBlYXNlLW91dCwgb3BhY2l0eSAwLjE2cyBlYXNlLW91dDtcbiAgICB9XG5cbiAgICAmLm5nLWVudGVyLFxuICAgICYubmctbGVhdmUtYWN0aXZlIHtcbiAgICAgICAgbWF4LWhlaWdodDogMDtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICAmLm5nLWVudGVyLWFjdGl2ZSxcbiAgICAmLm5nLWxlYXZlIHtcbiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4uc2VhdC1yZWxlYXNlLWhlYWQge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICBjb2xvcjogJHRleHQtbGlnaHQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcblxuICAgID4gc3Ryb25nIHtcbiAgICAgICAgY29sb3I6ICRkYXJrTmF2eTtcbiAgICB9XG59XG5cbi5zZWF0LXJlbGVhc2Utb3B0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMHB4O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiA3cHggOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJG5hdnktcGFsZTtcbiAgICB9XG5cbiAgICAmLnNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogJG5hdnktcGFsZTtcbiAgICB9XG5cbiAgICBpbnB1dCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4uc2VhdC1yZWxlYXNlLW5hbWUge1xuICAgIGZsZXg6IDE7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAkZGFya05hdnk7XG59XG5cbi5zZWF0LXJlbGVhc2UtdXNhZ2Uge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5zZWF0LXJlbGVhc2Utc2hvcnRmYWxsIHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkZGFuZ2VyO1xuXG4gICAgPiBpIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgfVxufVxuXG4uc2VhdC1jYW5jZWwtc3VtbWFyeSB7XG4gICAgbWFyZ2luLXRvcDogMThweDtcbiAgICBwYWRkaW5nOiAxNHB4IDE2cHg7XG4gICAgYmFja2dyb3VuZDogJHBhbGVCbHVlO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xufVxuXG4uc2VhdC1jYW5jZWwtc3VtbWFyeS1saW5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogJHRleHQtbGlnaHQ7XG5cbiAgICArIC5zZWF0LWNhbmNlbC1zdW1tYXJ5LWxpbmUge1xuICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgfVxuXG4gICAgPiBzdHJvbmcge1xuICAgICAgICBjb2xvcjogJGRhcmtOYXZ5O1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcblxuICAgICAgICAvKiBCZWluZyByZS1wcmljZWQuIFRoZSBmaWd1cmUgc3RhbmRpbmcgdGhlcmUgaXMgYSBzdGVwIGJlaGluZCwgbm90IHdyb25nLCBhbmQgc2F5aW5nIHNvIGJ5XG4gICAgICAgICAgIGZhZGluZyBpdCBiZWF0cyBzd2FwcGluZyB0aGUgbGluZSBmb3IgYSBzcGlubmVyIGFuZCBtb3ZpbmcgdGhlIHBhbmVsIHR3aWNlLiAqL1xuICAgICAgICAmLmlzLXVwZGF0aW5nIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNDU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zZWF0LWNhbmNlbC1mb290bm90ZSB7XG4gICAgbWFyZ2luLXRvcDogMTRweDtcblxuICAgIC8qIEhlbGQgb3BlbiBmb3IgdGhlIHRhbGxlc3QgbWVzc2FnZSBpdCBjYXJyaWVzLCBzbyB0aGUgc3VtbWFyeSBhYm92ZSBhbmQgdGhlIGZvb3RlciBiZWxvdyBkbyBub3RcbiAgICAgICBtb3ZlIGFzIHRoZSB3b3JkcyBpbiBpdCBjaGFuZ2UuICovXG4gICAgbWluLWhlaWdodDogNDBweDtcblxuICAgID4gcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG5cbiAgICAgICAgPiBpIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNnB4O1xuICAgICAgICAgICAgY29sb3I6ICRuYXZ5O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2VhdC1jYW5jZWwtZm9vdGVyIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIGdhcDogMTZweDtcbn1cblxuLnNlYXQtY2FuY2VsLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiAxNHB4O1xuXG4gICAgLmJ0biB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDIyMHB4O1xuICAgIH1cbn1cblxuLyogU2VwYXJhdGVkIGJ5IGEgcnVsZSBzbyBlbmRpbmcgZXZlcnl0aGluZyBjYW5ub3QgYmUgcmVhY2hlZCBmb3IgYnkgbWlzdGFrZSB3aGlsZSBhaW1pbmcgYXQgdGhlXG4gICBjb25maXJtIGJ1dHRvbiBhYm92ZSBpdC4gKi9cbi5zZWF0LWNhbmNlbC1ldmVyeXRoaW5nIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbiAgICBwYWRkaW5nLXRvcDogMTRweDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG4gICAgLmJ0biB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxufVxuXG4uc2VhdC1jYW5jZWwtZXZlcnl0aGluZy1ub3RlIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBOYXJyb3cgc2NyZWVuc1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDExMDBweCkge1xuICAgIC5zZWF0LXBsYW4tbGF5b3V0IHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG5cbiAgICAuc2VhdC1zdW1tYXJ5LWNvbHVtbiB7XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA4MjBweCkge1xuICAgIC5zZWF0LXByb21vLWhlcm8ge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB9XG5cbiAgICAuc2VhdC1wcm9tby1jdGEge1xuICAgICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB9XG5cbiAgICAvKiBCZWxvdyB0aGlzIHRoZXJlIGlzIG5vdCByb29tIHRvIGNvbXBhcmUgdGhlIHRpZXJzIHNpZGUgYnkgc2lkZSwgb24gZWl0aGVyIHNjcmVlbi4gKi9cbiAgICAuc2VhdC10aWVyLWdyaWQsXG4gICAgLnNlYXQtcHJvbW8tcGxhbnMge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cblxuICAgIC8qIEEgRm9udCBBd2Vzb21lIGVsZW1lbnQsIHdob3NlIG93biAuZmEgcnVsZSBpcyBsb2FkZWQgYWZ0ZXIgdGhpcyBmaWxlIGFuZCBjYXJyaWVzIHRoZSBzYW1lXG4gICAgICAgc3BlY2lmaWNpdHksIHNvIHRoZSBwYXJlbnQgaGFzIHRvIGJlIG5hbWVkIHRvIGhpZGUgaXQuICovXG4gICAgLnNlYXQtcHJvbW8taGVybyAuc2VhdC1wcm9tby13YXRlcm1hcmsge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU2V0dGluZ3MgTW9kYWxcbi8qIFNoYXJlcyB0aGUgdmlzdWFsIGxhbmd1YWdlIG9mIF9wYXltZW50cy5jc3MgLSBwYWxlIGJsdWUgY2FudmFzLCB3aGl0ZVxuLyogcm91bmRlZCBjYXJkcywgbmF2eSBhY2NlbnRzIC0gYW5kIHJldXNlcyAuc2V0dGluZ3MtY2FyZCwgLnNldHRpbmctcm93LFxuLyogLnRvZ2dsZS1zd2l0Y2gsIC5zYXZlLXN0YXR1cy1pbmRpY2F0b3IgYW5kIC5kaXNhYmxlZC1vdmVybGF5IGZyb20gaXQuXG4vKiBFdmVyeXRoaW5nIGVsc2UgaXMgc2NvcGVkIHRvIC5zZXR0aW5ncy1zaGVsbCBzbyB0aGUgZ2VuZXJpYyBuYW1lcyBoZXJlXG4vKiBjYW5ub3QgbGVhayBpbnRvIHRoZSByZXN0IG9mIHRoZSBhcHAuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFRoZSBzY29wZSBiYW5kIHdpcGVzIG9wZW4gd2hlbiBhIHNlY3Rpb24gaXMgc2hvd24uIENsaXAtcGF0aCBvbmx5IGFmZmVjdHMgcGFpbnQsXG4gICBzbyB0aGUgYm94IG9jY3VwaWVzIGl0cyBzcGFjZSBpbW1lZGlhdGVseSBhbmQgbm90aGluZyBzaGlmdHMgYXJvdW5kIGl0LiAqL1xuQGtleWZyYW1lcyBzZXR0aW5ncy1zY29wZS1iYW5kLW9wZW4ge1xuXHRmcm9tIHtcblx0XHRjbGlwLXBhdGg6IGluc2V0KDAgMTAwJSAwIDApO1xuXHR9XG5cblx0dG8ge1xuXHRcdGNsaXAtcGF0aDogaW5zZXQoMCAwIDAgMCk7XG5cdH1cbn1cblxuLnNldHRpbmdzLWRpYWxvZyB7XG5cdG1kLWRpYWxvZy1jb250ZW50IHtcblx0XHRib3JkZXItdG9wOiAwO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0fVxufVxuXG4uc2V0dGluZ3Mtc2hlbGwge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4OiAxO1xuXHRtaW4taGVpZ2h0OiAwO1xuXHR3aWR0aDogMTAwJTtcblx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgTGVmdCBSYWlsIE5hdmlnYXRpb25cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuc2V0dGluZ3MtbmF2IHtcblx0XHRmbGV4OiAwIDAgMjcycHg7XG5cdFx0d2lkdGg6IDI3MnB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cblx0XHQmOjotd2Via2l0LXNjcm9sbGJhciB7XG5cdFx0XHR3aWR0aDogNnB4O1xuXHRcdH1cblxuXHRcdCY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4xKTtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0fVxuXHR9XG5cblx0LnNldHRpbmdzLWlkZW50aXR5IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDIwcHggMThweCAxOHB4O1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXHR9XG5cblx0LnNldHRpbmdzLWF2YXRhciB7XG5cdFx0d2lkdGg6IDQycHg7XG5cdFx0aGVpZ2h0OiA0MnB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAkbmF2eSAwJSwgJGRhcmtOYXZ5IDEwMCUpO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuXHRcdGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCA1MywgMjEwLCAwLjIpO1xuXHR9XG5cblx0LnNldHRpbmdzLWlkZW50aXR5LXRleHQge1xuXHRcdG1pbi13aWR0aDogMDtcblxuXHRcdC5pZGVudGl0eS1uYW1lIHtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR9XG5cblx0XHQuaWRlbnRpdHktcm9sZSB7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdH1cblx0fVxuXG5cdC5zZXR0aW5ncy1uYXYtZ3JvdXAge1xuXHRcdHBhZGRpbmc6IDE2cHggMTBweCA0cHg7XG5cblx0XHQvKiBQcmFjdGljZSBuYW1lcyBhcmUgYnV0dG9ucyB0aGF0IGZvbGQgdGhlaXIgc2V0dGluZ3MgYXdheTsgXCJZb3VyIGFjY291bnRcIlxuXHRcdCAgIHVzZXMgdGhlIHNhbWUgbG9vayBidXQgaXMgbm90IGludGVyYWN0aXZlLiAqL1xuXHRcdC5zZXR0aW5ncy1uYXYtZ3JvdXAtdGl0bGUge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDdweDtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0XHRwYWRkaW5nOiA1cHggMTJweCA3cHg7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHR0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHRcdCYuc3RhdGljIHtcblx0XHRcdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogMDtcblx0XHRcdH1cblxuXHRcdFx0Jjpub3QoLnN0YXRpYyk6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cblx0XHRcdFx0Lm5hdi1ncm91cC1jaGV2cm9uIHtcblx0XHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Lm5hdi1ncm91cC1uYW1lIHtcblx0XHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHR9XG5cblx0XHRcdC5uYXYtZ3JvdXAtY2hldnJvbiB7XG5cdFx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0XHRmb250LXNpemU6IDlweDtcblx0XHRcdFx0Y29sb3I6ICNjM2M5ZGE7XG5cdFx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UsIGNvbG9yIDAuMTVzIGVhc2U7XG5cdFx0XHR9XG5cblx0XHRcdCYuY29sbGFwc2VkIC5uYXYtZ3JvdXAtY2hldnJvbiB7XG5cdFx0XHRcdHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyogQ29sbGFwc2UgYW5pbWF0aW9uLiBtYXgtaGVpZ2h0IGNhbm5vdCB0cmFuc2l0aW9uIHRvIGF1dG8sIHNvIGl0IHJ1bnMgdG8gYVxuXHRcdCAgIGNlaWxpbmcgY29tZm9ydGFibHkgYWJvdmUgdGhlIHRhbGxlc3QgZ3JvdXAgKDUgaXRlbXMgfiAyMDBweCk7IHRoZSBlYXNpbmcgaXNcblx0XHQgICB3aGF0IGlzIHNlZW4sIG5vdCB0aGUgZXhhY3QgdmFsdWUuIE9wYWNpdHkgYW5kIGEgc21hbGwgbGlmdCBkbyB0aGUgcmVzdC4gKi9cblx0XHQubmF2LWdyb3VwLWl0ZW1zIHtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHRtYXgtaGVpZ2h0OiAzMjBweDtcblx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHR0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMjRzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksXG5cdFx0XHRcdG9wYWNpdHkgMC4xOHMgZWFzZSxcblx0XHRcdFx0dHJhbnNmb3JtIDAuMjRzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG5cdFx0fVxuXG5cdFx0Lm5hdi1ncm91cC1pdGVtcy5uZy1lbnRlcixcblx0XHQubmF2LWdyb3VwLWl0ZW1zLm5nLWxlYXZlLm5nLWxlYXZlLWFjdGl2ZSB7XG5cdFx0XHRtYXgtaGVpZ2h0OiAwO1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcblx0XHR9XG5cblx0XHQubmF2LWdyb3VwLWl0ZW1zLm5nLWVudGVyLm5nLWVudGVyLWFjdGl2ZSxcblx0XHQubmF2LWdyb3VwLWl0ZW1zLm5nLWxlYXZlIHtcblx0XHRcdG1heC1oZWlnaHQ6IDMyMHB4O1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcblx0XHR9XG5cblx0XHQubmF2LWdyb3VwLXRhZyB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0Zm9udC1zaXplOiA4cHg7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuXHRcdFx0cGFkZGluZzogMnB4IDdweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cblx0XHRcdC8qIEZpbGxlZCBwaWxsIG1hcmtzIHRoZSBvbmUgcHJhY3RpY2UgdGhhdCBpcyBvcGVuIC0gb25seSBldmVyIG9uZS4gKi9cblx0XHRcdCYub3BlbiB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5zZXR0aW5ncy1uYXYtaXRlbSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTFweDtcblx0XHRwYWRkaW5nOiA5cHggMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiAycHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXHRcdHVzZXItc2VsZWN0OiBub25lO1xuXG5cdFx0aSB7XG5cdFx0XHR3aWR0aDogMTVweDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHR0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblxuXHRcdFx0aSB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgNTMsIDIxMCwgMC4yKTtcblxuXHRcdFx0aSB7XG5cdFx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LnNldHRpbmdzLW5hdi1mb290ZXIge1xuXHRcdG1hcmdpbi10b3A6IGF1dG87XG5cdFx0cGFkZGluZzogMTRweCAxOHB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVmMWY3O1xuXG5cdFx0LmZvb3Rlci1sYWJlbCB7XG5cdFx0XHRmb250LXNpemU6IDlweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0fVxuXG5cdFx0LmZvb3Rlci12YWx1ZSB7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRtYXJnaW4tdG9wOiAzcHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBSaWdodCBDb250ZW50IFBhbmVcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuc2V0dGluZ3MtcGFuZSB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRcdC8qIEVhY2ggc2VjdGlvbiBpcyBhIGNvbXBvbmVudCBlbGVtZW50IC0gbWFrZSBpdCBvd24gdGhlIHBhbmUncyBoZWlnaHQgKi9cblx0XHQ+ICoge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHR9XG5cdH1cblxuXHQuc2V0dGluZ3MtcGFuZS1ib2R5IHtcblx0XHRmbGV4OiAxO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0cGFkZGluZzogMjRweCAyOHB4IDI4cHg7XG5cblx0XHRoMyxcblx0XHRoNCxcblx0XHRoNSB7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblxuXHRcdCY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcblx0XHRcdHdpZHRoOiA2cHg7XG5cdFx0fVxuXG5cdFx0Jjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuXHRcdFx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdFx0fVxuXG5cdFx0Jjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjEpO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHR9XG5cblx0XHQmOmhvdmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMyk7XG5cdFx0fVxuXHR9XG5cblx0LyogX3BheW1lbnRzLmNzcyBzdHJldGNoZXMgY2FyZHMgdG8gZmlsbCB0aGVpciBjb2x1bW47IGhlcmUgdGhleSBodWcgdGhlaXIgY29udGVudCAqL1xuXHQuc2V0dGluZ3MtY2FyZCB7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHR9XG5cblx0LyogQ29sdW1uIGZsZXggc28gdGhlIGJhZGdlLCBoZWFkaW5nIGFuZCBkZXNjcmlwdGlvbiBlYWNoIGdldCB0aGVpciBvd24gbGluZVxuXHQgICB3aGlsZSBzdGlsbCBodWdnaW5nIHRoZWlyIGNvbnRlbnQgLSB0aGUgaGVhZGluZyBhbmQgYmFkZ2UgYXJlIHBpbGxzLCBub3QgYmFycy4gKi9cblx0LnNldHRpbmdzLXBhbmUtaGVhZGVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblxuXHRcdC8qIEEgYmFuZCBvZiB0aGUgYnJhbmQncyBvd24gcGFsZSBuYXZ5IHJhdGhlciB0aGFuIHBsYWluIHRleHQsIHNvIHRoZSBzZWN0aW9uXG5cdFx0ICAgeW91IGFyZSBpbiByZWFkcyBhdCBhIGdsYW5jZSBhZ2FpbnN0IHRoZSBwYWxlIGJsdWUgY2FudmFzLiBTYW1lIHRpbnQgYXMgdGhlXG5cdFx0ICAgaWNvbiBjaGlwcyB0aHJvdWdob3V0IHRoZSBwYW5lLCBzbyBub3RoaW5nIG5ldyBpcyBpbnRyb2R1Y2VkLiAqL1xuXHRcdGgzIHtcblx0XHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcblx0XHRcdG1hcmdpbjogMCAwIDEwcHg7XG5cdFx0XHRwYWRkaW5nOiA3cHggMTVweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRtYXgtd2lkdGg6IDcyY2g7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdH1cblx0fVxuXG5cdC8qIFdobyBhIHNldHRpbmcgYWZmZWN0cyBpcyB0aGUgc2luZ2xlIG1vc3QgaW1wb3J0YW50IHRoaW5nIG9uIHRoZXNlIHNjcmVlbnMgLVxuXHQgICBjaGFuZ2luZyBzb21ldGhpbmcgcHJhY3RpY2Utd2lkZSB0b3VjaGVzIGV2ZXJ5IGNsaW5pY2lhbiB0aGVyZS4gQSBzb2xpZCBiYW5kXG5cdCAgIGFjcm9zcyBhIHRoaXJkIG9mIHRoZSBwYW5lIC0gd2lkZSBlbm91Z2ggbm90IHRvIGJlIHNraW1tZWQgcGFzdCBhcyBhIGNhcHRpb24sXG5cdCAgIG5hcnJvdyBlbm91Z2ggbm90IHRvIHNob3V0IG92ZXIgdGhlIHNldHRpbmdzIHRoZW1zZWx2ZXMuICovXG5cdC5zY29wZS1iYWRnZSB7XG5cdFx0YWxpZ24tc2VsZjogZmxleC1zdGFydDtcblx0XHR3aWR0aDogMzMlO1xuXHRcdG1pbi13aWR0aDogMzAwcHg7XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0bGluZS1oZWlnaHQ6IDEuMzU7XG5cdFx0cGFkZGluZzogMTFweCAxNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblxuXHRcdC8qIEVhY2ggc2VjdGlvbiBpcyBjcmVhdGVkIGZyZXNoIGJ5IG5nLWlmLCBzbyB0aGlzIHJlcGxheXMgZXZlcnkgdGltZSB5b3Vcblx0XHQgICBtb3ZlIGJldHdlZW4gc2V0dGluZ3MgLSByZS1hbm5vdW5jaW5nIHRoZSBzY29wZSByYXRoZXIgdGhhbiBsZXR0aW5nIGl0XG5cdFx0ICAgc2l0IHRoZXJlIHVucmVhZC4gKi9cblx0XHRhbmltYXRpb246IHNldHRpbmdzLXNjb3BlLWJhbmQtb3BlbiA0MjBtcyBjdWJpYy1iZXppZXIoMC4yMiwgMSwgMC4zNiwgMSkgYm90aDtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdFx0b3BhY2l0eTogMC45O1xuXHRcdH1cblxuXHRcdC8qIFlvdXJzIGFsb25lIC0gdGhlIGJyYW5kIGJsdWUuICovXG5cdFx0Ji5wZXJzb25hbCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQvKiBBZmZlY3RzIG90aGVyIHBlb3BsZSwgc28gaXQgY2FycmllcyBhIGNhdXRpb24gdG9uZSByYXRoZXIgdGhhbiBhIHNlY29uZFxuXHRcdCAgIHNoYWRlIG9mIGJsdWUuIERlZXAgYW1iZXIga2VlcHMgd2hpdGUgdGV4dCBhdCB+Ni40OjE7IGEgYnJpZ2h0ICR5ZWxsb3ctY3RhXG5cdFx0ICAgZmlsbCB3b3VsZCBkcm9wIGl0IHRvIDMuNDoxIGFuZCBmYWlsIEFBLiAqL1xuXHRcdCYucHJhY3RpY2Uge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHR9XG5cdH1cblxuXHQvKiBTdGlja3kgYWN0aW9uIGJhciBhdCB0aGUgYm90dG9tIG9mIGEgcGFuZS4gVGhlIGNvbmZpcm1hdGlvbiBzaXRzIGltbWVkaWF0ZWx5XG5cdCAgIGxlZnQgb2YgdGhlIGJ1dHRvbiByYXRoZXIgdGhhbiBhY3Jvc3MgdGhlIGJhciwgc28gaXQgbGFuZHMgd2hlcmUgdGhlIGV5ZVxuXHQgICBhbHJlYWR5IGlzIGFmdGVyIGNsaWNraW5nLiAqL1xuXHQuc2V0dGluZ3MtYWN0aW9uLWJhciB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDEycHggMjhweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblxuXHRcdC5hY3Rpb24taGludCB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHR9XG5cblx0XHQuYnRuIHtcblx0XHRcdG1heC13aWR0aDogMjAwcHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0LyogQW4gb3B0aW9uIHRoYXQgY2hhbmdlcyB3aGF0IFNhdmUgZG9lcywgc28gaXQgbGl2ZXMgd2l0aCBTYXZlIHJhdGhlciB0aGFuXG5cdFx0ICAgdXAgaW4gYSBjYXJkIGhlYWRlciB3aGVyZSBpdCByZWFkIGFzIHVucmVsYXRlZC4gKi9cblx0XHQuY2hpcC1zZWxlY3QuYXBwbHktYWxsIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRwYWRkaW5nOiA2cHggMTNweDtcblx0XHR9XG5cdH1cblxuXHQvKiBTdWNjZXNzIGdyZWVuLCBub3QgdGhlIG5hdnkgdXNlZCBldmVyeXdoZXJlIGVsc2UsIHNvIGEgc2F2ZSByZWFkcyBhcyBhIGRpc3RpbmN0XG5cdCAgIGV2ZW50IHJhdGhlciB0aGFuIG1vcmUgb2YgdGhlIHNhbWUgcGFnZS4gKi9cblx0LnNhdmUtZmxhc2gge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA3cHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0cGFkZGluZzogN3B4IDE0cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0xMDtcblx0XHRjb2xvcjogY29sb3IoJGdyZWVuIGwoLTEyJSkpO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmVlbi10cC0zMDtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdH1cblxuXHRcdCYuc2F2aW5nIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRcdGJvcmRlci1jb2xvcjogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdH1cblxuXHRcdCYuZXJyb3Ige1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZkZWNlYTtcblx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0XHRib3JkZXItY29sb3I6IHJnYmEoMjE3LCA4MywgNzksIDAuMyk7XG5cdFx0fVxuXG5cdFx0LyogUG9wcyBpbiwgc28gaXQgaXMgbm90aWNlZCBldmVuIHdoZW4gdGhlIHdvcmRpbmcgaXMgdW5jaGFuZ2VkLiAqL1xuXHRcdCYubmctZW50ZXIge1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMC44NSk7XG5cdFx0fVxuXG5cdFx0Ji5uZy1lbnRlci1hY3RpdmUge1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMSk7XG5cdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMThzIGVhc2UsIHRyYW5zZm9ybSAwLjIycyBjdWJpYy1iZXppZXIoMC4zNCwgMS41NiwgMC42NCwgMSk7XG5cdFx0fVxuXG5cdFx0Ji5uZy1sZWF2ZSB7XG5cdFx0XHRvcGFjaXR5OiAxO1xuXHRcdH1cblxuXHRcdCYubmctbGVhdmUtYWN0aXZlIHtcblx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIExheW91dCBoZWxwZXJzXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LnNldHRpbmdzLXN0YWNrIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAyMHB4O1xuXHR9XG5cblx0LnNldHRpbmdzLWNvbHVtbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiAyMHB4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogc3RyZXRjaDtcblxuXHRcdD4gKiB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAzMDBweDtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgUmVhZC1vbmx5IGRldGFpbCByb3dzXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LmRldGFpbC1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE2cHg7XG5cdFx0cGFkZGluZzogMTNweCAwO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdG1pbi1oZWlnaHQ6IDUycHg7XG5cblx0XHQmOmxhc3Qtb2YtdHlwZSB7XG5cdFx0XHRib3JkZXItYm90dG9tOiBub25lO1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDA7XG5cdFx0fVxuXG5cdFx0LmRldGFpbC1sYWJlbCB7XG5cdFx0XHRmbGV4OiAwIDAgMTUwcHg7XG5cdFx0XHR3aWR0aDogMTUwcHg7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdC5kZXRhaWwtdmFsdWUge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG5cblx0XHRcdCYubXV0ZWQge1xuXHRcdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZGV0YWlsLWFjdGlvbiB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHR9XG5cdH1cblxuXHQvKiBPbmx5IHRoZSByb3cgdGhhdCBvcGVucyBhIGNhcmQgc2l0cyBmbHVzaCB3aXRoIHRoZSBjYXJkIGhlYWRlciAqL1xuXHQuY2FyZC1ib2R5ID4gLmRldGFpbC1yb3c6Zmlyc3QtY2hpbGQge1xuXHRcdHBhZGRpbmctdG9wOiAwO1xuXHR9XG5cblx0LyogU21hbGwgaW5saW5lIFwiZWRpdFwiIGFmZm9yZGFuY2UgKi9cblx0LmxpbmstYWN0aW9uIHtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7XG5cblx0XHRpIHtcblx0XHRcdG1hcmdpbi1yaWdodDogNHB4O1xuXHRcdH1cblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0b3BhY2l0eTogMC43O1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0fVxuXHR9XG5cblx0LmlubGluZS1lZGl0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIENoaXBzIChmZWF0dXJlcywgcmVmZXJyYWwgdHlwZXMpXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LmNoaXAtbGlzdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA4cHg7XG5cdH1cblxuXHQuY2hpcCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRwYWRkaW5nOiA1cHggMTFweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgNTMsIDIxMCwgMC4xMik7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRvcGFjaXR5OiAwLjc7XG5cdFx0fVxuXG5cdFx0Ji5jaGlwLW11dGVkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdGJvcmRlci1jb2xvcjogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdH1cblx0fVxuXG5cdC8qIFNlbGVjdGFibGUgY2hpcCAtIHdyYXBzIGEgY2hlY2tib3ggKi9cblx0LmNoaXAtc2VsZWN0IHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHBhZGRpbmc6IDdweCAxNHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXHRcdHVzZXItc2VsZWN0OiBub25lO1xuXG5cdFx0aW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR9XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogI2NiZDVlMDtcblx0XHR9XG5cblx0XHQmLnNlbGVjdGVkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRib3JkZXItY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4zNSk7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0Ji5kaXNhYmxlZCB7XG5cdFx0XHRvcGFjaXR5OiAwLjQ1O1xuXHRcdFx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgRWRpdGFibGUgcm93IGxpc3QgKGFwcG9pbnRtZW50IHR5cGVzLCB0YXNrIGxhYmVscylcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQucm93LWxpc3QtaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAwIDE0cHggOHB4O1xuXG5cdFx0c3BhbiB7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBpbnB1dHMgY2FycnkgdGhlaXIgb3duIGJvcmRlcnMsIHNvIHRoZSByb3dzIHRoZW1zZWx2ZXMgc3RheSB1bmJveGVkICovXG5cdC5yb3ctaXRlbSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiA1cHggMTRweDtcblx0XHRtYXJnaW4tYm90dG9tOiA0cHg7XG5cblx0XHQvKiBTZXBhcmF0ZWQgYnkgYSBydWxlIHJhdGhlciB0aGFuIGEgYm94IG9mIGl0cyBvd24gKi9cblx0XHQmLnJvdy1pdGVtLW5ldyB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHRcdHBhZGRpbmctdG9wOiAxNXB4O1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IGRhc2hlZCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdH1cblx0fVxuXG5cdC8qIENvbHVtbiB3aWR0aHMgc2hhcmVkIGJ5IHRoZSBoZWFkIGFuZCB0aGUgcm93cyAqL1xuXHQuY29sLW5hbWUge1xuXHRcdGZsZXg6IDEgMSAyMDBweDtcblx0XHRtaW4td2lkdGg6IDE1MHB4O1xuXHR9XG5cblx0LmNvbC1jb2xvdXIge1xuXHRcdGZsZXg6IDAgMCAxMzBweDtcblx0XHR3aWR0aDogMTMwcHg7XG5cdH1cblxuXHQuY29sLWR1cmF0aW9uIHtcblx0XHRmbGV4OiAwIDAgMTEwcHg7XG5cdFx0d2lkdGg6IDExMHB4O1xuXG5cdFx0LyogTGVuZ3RocyBhcmUgaW4gc3RlcHMgb2YgNSBtaW51dGVzIChtaW51dGUtc3RlcCBkaXJlY3RpdmUpLiAqL1xuXHRcdC5mb3JtLWNvbnRyb2wubmctaW52YWxpZC1taW51dGUtc3RlcCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICNlMDc5NmY7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyMjQsIDEyMSwgMTExLCAwLjE1KTtcblx0XHR9XG5cdH1cblxuXHQuY29sLXR5cGUge1xuXHRcdGZsZXg6IDAgMCAxOTBweDtcblx0XHR3aWR0aDogMTkwcHg7XG5cdH1cblxuXHQuY29sLWltYWdpbmcge1xuXHRcdGZsZXg6IDAgMCAxOTBweDtcblx0XHR3aWR0aDogMTkwcHg7XG5cblx0XHQvKiBUaGUgbXVsdGlzZWxlY3QgcmVuZGVycyBhIGJvb3RzdHJhcCBkcm9wZG93biAtIG1ha2UgdGhlIGJ1dHRvbiBmaWxsIHRoZSBjZWxsIGxpa2UgdGhlXG5cdFx0ICAgb3RoZXIgY29udHJvbHMgaW4gdGhlIHJvdyByYXRoZXIgdGhhbiBzaXppbmcgdG8gaXRzIGxhYmVsLiAqL1xuXHRcdC5idG4tZHJvcGRvd24tbXVsdGlzZWxlY3Qge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQuZHJvcGRvd24tbWVudSB7XG5cdFx0XHRtaW4td2lkdGg6IDI0MHB4O1xuXHRcdH1cblx0fVxuXG5cdC5jb2wtYWRkIHtcblx0XHRmbGV4OiAwIDAgNDBweDtcblx0XHR3aWR0aDogNDBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdH1cblxuXHQuY29sLWFkZC13aWRlIHtcblx0XHRmbGV4OiAwIDAgYXV0bztcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdH1cblxuXHQvKiBUaGUgb2xkIHJvdW5kIFwiK1wiIHdhcyBtaXNzZWQgLSB0aGUgYWRkIHN0ZXAgbm93IGFubm91bmNlcyBpdHNlbGYgYW5kIGl0c1xuXHQgICBidXR0b24gc2F5cyB3aGF0IGl0IGRvZXMuIFRoZSBmb3JtIGNsZWFycyBhZnRlciBlYWNoIGFkZCwgc28gYSBydW4gb2Zcblx0ICAgZW50cmllcyBjYW4gYmUgdHlwZWQgb25lIGFmdGVyIGFub3RoZXIgd2l0aG91dCBsZWF2aW5nIHRoZSBzY3JlZW4uICovXG5cdC5hZGQtcm93IHtcblx0XHRtYXJnaW4tdG9wOiAxOHB4O1xuXHRcdHBhZGRpbmctdG9wOiAxNHB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBkYXNoZWQgcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcblxuXHRcdC5hZGQtcm93LXRpdGxlIHtcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRwYWRkaW5nOiAwIDE0cHggOHB4O1xuXHRcdH1cblxuXHRcdC5yb3ctaXRlbS5yb3ctaXRlbS1uZXcge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZy10b3A6IDA7XG5cdFx0XHRib3JkZXItdG9wOiBub25lO1xuXHRcdH1cblxuXHRcdC5hZGQtcm93LWFjdGlvbnMge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0XHRwYWRkaW5nOiAxMnB4IDE0cHggMDtcblx0XHR9XG5cdH1cblxuXHQuYnRuLWFkZCB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiA4cHggMThweDtcblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIENsYWltIGl0ZW1zIChwcmFjdGljZSBpdGVtIGNvZGVzLCBuYW1lcyBhbmQgZmVlcylcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5cdC8qIENvbHVtbiB3aWR0aHMgc2hhcmVkIGJ5IHRoZSBoZWFkIGFuZCB0aGUgcm93cywgYWxvbmdzaWRlIC5jb2wtbmFtZSBhYm92ZSAqL1xuXHQuY29sLWNvZGUge1xuXHRcdGZsZXg6IDAgMCAxNTBweDtcblx0XHR3aWR0aDogMTUwcHg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0fVxuXG5cdC5jb2wtZmVlIHtcblx0XHRmbGV4OiAwIDAgMTIwcHg7XG5cdFx0d2lkdGg6IDEyMHB4O1xuXHR9XG5cblx0LmNvbC1hdmFpbGFibGUge1xuXHRcdGZsZXg6IDAgMCA3MHB4O1xuXHRcdHdpZHRoOiA3MHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdH1cblxuXHQvKiBUaGUgY29kZSBpZGVudGlmaWVzIHRoZSBpdGVtIGFuZCBjYW5ub3QgYmUgZWRpdGVkIG9uIGFuIGV4aXN0aW5nIHJvdywgc28gaXQgaXMgc2V0IGFzIGEgcGxhaW5cblx0ICAgdG9rZW4gcmF0aGVyIHRoYW4gYSBkaXNhYmxlZCBpbnB1dCAtIGEgZ3JleWVkLW91dCBmaWVsZCBpbnZpdGVzIHBlb3BsZSB0byB0cnkuICovXG5cdC5jbGFpbS1pdGVtLWNvZGUge1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRwYWRkaW5nOiA1cHggMTBweDtcblx0XHRsaW5lLWhlaWdodDogMS4yO1xuXHR9XG5cblx0LmNsYWltLWl0ZW0tdGFnIHtcblx0XHRmb250LXNpemU6IDlweDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGNvbG9yOiAjN2Q4Mzk5O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0cGFkZGluZzogMnB4IDdweDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0LyogVGhlIGRvbGxhciBzaWduIHNpdHMgaW5zaWRlIHRoZSBmaWVsZCByYXRoZXIgdGhhbiBiZXNpZGUgaXQsIHNvIGEgY29sdW1uIG9mIGZlZXMgbGluZXMgdXAgb24gdGhlXG5cdCAgIG51bWJlciBpbnN0ZWFkIG9mIG9uIHRoZSBzeW1ib2wuICovXG5cdC5mZWUtaW5wdXQge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdC5mZWUtcHJlZml4IHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGxlZnQ6IDExcHg7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDI0cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogUmV0aXJpbmcgYW4gaXRlbSBpcyBhIHF1aWV0ZXIgYWN0IHRoYW4gZGVsZXRpbmcgb25lLCBhbmQgcmVhZHMgYmV0dGVyIGFzIGEgc3dpdGNoIHRoYW4gYXMgYSBiYXJlXG5cdCAgIGNoZWNrYm94IGluIGEgY29sdW1uIG9mIGlucHV0cy4gKi9cblx0LmNsYWltLWl0ZW0tdG9nZ2xlIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHdpZHRoOiAzOHB4O1xuXHRcdGhlaWdodDogMjFweDtcblx0XHRtYXJnaW46IDA7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0aW5wdXQge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdHdpZHRoOiAwO1xuXHRcdFx0aGVpZ2h0OiAwO1xuXHRcdH1cblxuXHRcdC5zd2l0Y2gtdHJhY2sge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0aW5zZXQ6IDA7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2QzZDllNjtcblx0XHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xOHMgZWFzZTtcblxuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0dG9wOiAzcHg7XG5cdFx0XHRcdGxlZnQ6IDNweDtcblx0XHRcdFx0d2lkdGg6IDE1cHg7XG5cdFx0XHRcdGhlaWdodDogMTVweDtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuXHRcdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xOHMgZWFzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpbnB1dDpjaGVja2VkICsgLnN3aXRjaC10cmFjayB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHRpbnB1dDpjaGVja2VkICsgLnN3aXRjaC10cmFjazphZnRlciB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTdweCk7XG5cdFx0fVxuXG5cdFx0aW5wdXQ6Zm9jdXMgKyAuc3dpdGNoLXRyYWNrIHtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCAkY3lhbi10cC0yNTtcblx0XHR9XG5cdH1cblxuXHQvKiBPbmx5IHNob3duIG9uY2UgdGhlIGxpc3QgaXMgbG9uZyBlbm91Z2ggdG8gYmUgd29ydGggbmFycm93aW5nICovXG5cdC5jbGFpbS1pdGVtLWZpbHRlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdG1heC13aWR0aDogMzIwcHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblxuXHRcdGkge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogMTJweDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdHBhZGRpbmctbGVmdDogMzJweDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgc2VhcmNoIHNpdHMgaW4gdGhlIGFkZCByb3cgYXMgaXRzIGZpcnN0IGNvbnRyb2wsIHNvIGZpbmRpbmcgYSBzdGFuZGFyZCBpdGVtIGFuZCB0eXBpbmcgb25lIG9mXG5cdCAgIHlvdXIgb3duIGFyZSB0aGUgc2FtZSBnZXN0dXJlIGluIHRoZSBzYW1lIHBsYWNlIHJhdGhlciB0aGFuIHR3byBzdGFja2VkIGZvcm1zLiAqL1xuXHQuY29sLXBpY2tlciB7XG5cdFx0ZmxleDogMSAxIDI0MHB4O1xuXHRcdG1pbi13aWR0aDogMjAwcHg7XG5cblx0XHQudWktc2VsZWN0LWNvbnRhaW5lciB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIG9ubHkgcm93IHRoYXQgd3JhcHM6IGZpdmUgY29udHJvbHMgZG8gbm90IGFsd2F5cyBmaXQgYSBuYXJyb3cgcGFuZSwgYW5kIGEgc3F1ZWV6ZWQgZmVlIGZpZWxkXG5cdCAgIGlzIHdvcnNlIHRoYW4gYSBzZWNvbmQgbGluZS4gKi9cblx0LmNsYWltLWl0ZW0tYWRkIHtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0cm93LWdhcDogMTBweDtcblx0fVxuXG5cdC8qIFJldGlyZWQgaXRlbXMgc3RheSBvbiB0aGUgbGlzdCAtIHRoZXkgYXJlIHN0aWxsIHRoZSBwcmFjdGljZSdzLCBqdXN0IG5vdCBvZmZlcmVkIC0gc28gdGhleSBhcmVcblx0ICAgZGltbWVkIHJhdGhlciB0aGFuIGhpZGRlbiwgYW5kIHJlYWQgYXMgc3dpdGNoZWQgb2ZmIGF0IGEgZ2xhbmNlLiAqL1xuXHQuY2xhaW0taXRlbS1yb3cucmV0aXJlZCB7XG5cdFx0LmNsYWltLWl0ZW0tY29kZSxcblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdG9wYWNpdHk6IDAuNTU7XG5cdFx0fVxuXHR9XG5cblx0LyogUmVxdWlyZWQgYW5kIGVtcHR5IHNheXMgaXRzZWxmLCBzbyBub3RoaW5nIGhhcyB0byBzYXkgaXQgaW4gYSBzZW50ZW5jZSB1bmRlcm5lYXRoIC0gaW5jbHVkaW5nIG9uXG5cdCAgIGFycml2YWwsIHdoaWNoIGlzIGhvdyBhIHJvdyBzYXZlZCBiZWZvcmUgYSBmZWUgd2FzIHJlcXVpcmVkIGV4cGxhaW5zIGl0cyBvd24gZGlzYWJsZWQgU2F2ZS5cblx0ICAgU2NvcGVkIHRvIHRoZSBzYXZlZCByb3dzOiB0aGUgYWRkIHJvdydzIGZpZWxkcyBjYXJyeSBubyBgcmVxdWlyZWRgLCBzbyBhbiBlbXB0eSBvbmUgaXQgaXMgbm90IHlldFxuXHQgICB0aW1lIHRvIGZpbGwgaW4gaXMgbmV2ZXIgbWFya2VkIHdyb25nLiAqL1xuXHQuY2xhaW0taXRlbS1yb3cgLmZvcm0tY29udHJvbC5uZy1pbnZhbGlkIHtcblx0XHRib3JkZXItY29sb3I6ICNlMDc5NmY7XG5cdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjI0LCAxMjEsIDExMSwgMC4xNSk7XG5cdH1cblxuXHQvKiBObyBkZXNjcmlwdGlvbiB1bmRlciB0aGUgaGVhZGluZywgc28gdGhlIGJsb2NrIGRvZXMgbm90IG5lZWQgdGhlIHJvb20gZm9yIG9uZS4gKi9cblx0LmNsYWltLWl0ZW0tZW1wdHkge1xuXHRcdHBhZGRpbmc6IDM0cHggMzJweDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cblx0XHRoNCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFByYWN0aWNlIGxlYXZlIChyZWN1cnJpbmcgYnJlYWtzLCBjbG9zdXJlcyBhbmQgaG9saWRheXMpXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LmNhcmQtaGVhZGVyLXN1YiB7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0fVxuXG5cdC8qIENvbHVtbiB3aWR0aHMgc2hhcmVkIGJ5IHRoZSBoZWFkIGFuZCB0aGUgcm93cywgYWxvbmdzaWRlIC5jb2wtbmFtZSBhYm92ZSAqL1xuXHQuY29sLWRheXMge1xuXHRcdGZsZXg6IDAgMCAzMzBweDtcblx0XHR3aWR0aDogMzMwcHg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDVweDtcblx0fVxuXG5cdC5jb2wtdGltZSB7XG5cdFx0ZmxleDogMCAwIDExMHB4O1xuXHRcdHdpZHRoOiAxMTBweDtcblx0fVxuXG5cdC5jb2wtZGF0ZSB7XG5cdFx0ZmxleDogMCAwIDE1MHB4O1xuXHRcdHdpZHRoOiAxNTBweDtcblx0fVxuXG5cdC5jb2wtYWxsLWRheSB7XG5cdFx0ZmxleDogMCAwIDY0cHg7XG5cdFx0d2lkdGg6IDY0cHg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0fVxuXG5cdC8qIEEgZGF5IG9mIHRoZSB3ZWVrIHJlYWRzIGFzIGEgcGlsbCB5b3Ugc3dpdGNoIG9uLCB0aGUgc2FtZSBwYWxlIG5hdnkgYXMgLmNoaXAtc2VsZWN0LnNlbGVjdGVkLiAqL1xuXHQuZGF5LXBpbGwge1xuXHRcdGZsZXg6IDAgMCA0MnB4O1xuXHRcdGhlaWdodDogMzBweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAjY2JkNWUwO1xuXHRcdH1cblxuXHRcdCYuc2VsZWN0ZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGJvcmRlci1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjM1KTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0fVxuXHR9XG5cblx0LnByYWN0aWNlLWxlYXZlLXJvdyB7XG5cdFx0LmNvbC1uYW1lIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiA4cHg7XG5cdFx0fVxuXG5cdFx0LyogRmluaXNoZWQgY2xvc3VyZXMgYXJlIGtlcHQgZm9yIHJlZmVyZW5jZSwgc28gdGhleSBhcmUgZGltbWVkIHJhdGhlciB0aGFuIGhpZGRlbi4gKi9cblx0XHQmLnBhc3Qge1xuXHRcdFx0b3BhY2l0eTogMC40NTtcblx0XHR9XG5cblx0XHQucGFzdC10YWcge1xuXHRcdFx0Zm9udC1zaXplOiA5cHg7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2VlZjFmNztcblx0XHRcdGJvcmRlci1yYWRpdXM6IDEwcHg7XG5cdFx0XHRwYWRkaW5nOiAycHggN3B4O1xuXHRcdH1cblx0fVxuXG5cdC5wcmFjdGljZS1sZWF2ZSAuZm9ybS1jb250cm9sLnJhbmdlLWludmFsaWQsXG5cdC5wcmFjdGljZS1sZWF2ZS1yb3cgLmZvcm0tY29udHJvbC5uZy1pbnZhbGlkOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAjZTA3OTZmO1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDIyNCwgMTIxLCAxMTEsIDAuMTUpO1xuXHR9XG5cblx0LyogU2V2ZW4gZGF5IHBpbGxzIGFuZCB0d28gdGltZXMgZG8gbm90IGFsd2F5cyBmaXQgYSBuYXJyb3cgcGFuZS4gKi9cblx0LnByYWN0aWNlLWxlYXZlLWFkZCxcblx0LnByYWN0aWNlLWxlYXZlLXJvdyB7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdHJvdy1nYXA6IDEwcHg7XG5cdH1cblxuXHQvKiBQdWJsaWMgaG9saWRheXMgYXJlIHNldCBieSBDYXRUcmF4LCBzbyB0aGV5IHJlYWQgYXMgYSBsaXN0IHdpdGggb25lIHN3aXRjaCByYXRoZXIgdGhhbiBhcyBlZGl0YWJsZSByb3dzLiAqL1xuXHQucHVibGljLWhvbGlkYXktcm93IHtcblx0XHQuaG9saWRheS1uYW1lIHtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXHRcdH1cblxuXHRcdC5ob2xpZGF5LXRhZyB7XG5cdFx0XHRtYXJnaW4tbGVmdDogOHB4O1xuXHRcdFx0Zm9udC1zaXplOiA5cHg7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGNvbG9yOiAkdGVhbDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCR0ZWFsIHRpbnQoOTAlKSk7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXHRcdFx0cGFkZGluZzogMnB4IDdweDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDNweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuaG9saWRheS1kYXRlIHtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdH1cblxuXHRcdC8qIE9wZW4gb24gdGhlIGhvbGlkYXk6IHRoZSBzd2l0Y2ggc2F5cyBzbywgYW5kIHRoZSByb3cgc3RlcHMgYmFjay4gKi9cblx0XHQmLm9wZW4ge1xuXHRcdFx0LmhvbGlkYXktbmFtZSxcblx0XHRcdC5ob2xpZGF5LWRhdGUge1xuXHRcdFx0XHRvcGFjaXR5OiAwLjU1O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5jb2wtaG9saWRheS1ub3RlIHtcblx0XHRmbGV4OiAxIDEgYXV0bztcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdH1cblxuXHQucHVibGljLWhvbGlkYXlzLWhlbHAge1xuXHRcdG1hcmdpbjogNnB4IDE0cHggMDtcblx0fVxuXG5cdC5wcmFjdGljZS1sZWF2ZS1zdWJoZWFkIHtcblx0XHRtYXJnaW4tdG9wOiAxOHB4O1xuXHRcdHBhZGRpbmc6IDE0cHggMTRweCA4cHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IGRhc2hlZCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA3ZW07XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHR9XG5cblx0LnByYWN0aWNlLWxlYXZlLWVtcHR5IHtcblx0XHRwYWRkaW5nOiAyNnB4IDMycHg7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRib3JkZXI6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDI2cHg7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiA4cHg7XG5cdFx0fVxuXG5cdFx0aDQge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBSb29tcyAodGhlIHByYWN0aWNlJ3MgcGh5c2ljYWwgcm9vbXMgYXBwb2ludG1lbnRzIGFyZSBib29rZWQgaW50bylcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5cdC8qIENvbHVtbiB3aWR0aCBzaGFyZWQgYnkgdGhlIGhlYWQgYW5kIHRoZSByb3dzLCBhbG9uZ3NpZGUgLmNvbC1uYW1lLCAuY29sLWNvbG91ciBhbmQgLmNvbC1hdmFpbGFibGUgKi9cblx0LmNvbC1kZXNjcmlwdGlvbiB7XG5cdFx0ZmxleDogMSAxIDIyMHB4O1xuXHRcdG1pbi13aWR0aDogMTYwcHg7XG5cdH1cblxuXHQvKiBBcmNoaXZlZCByb29tcyBzdGF5IG9uIHRoZSBsaXN0IC0gYXBwb2ludG1lbnRzIHRoYXQgdXNlZCB0aGVtIHN0aWxsIHNob3cgdGhlbSAtIHNvIHRoZXkgYXJlIGRpbW1lZFxuXHQgICByYXRoZXIgdGhhbiBoaWRkZW4sIHRoZSBzYW1lIGFzIGEgcmV0aXJlZCBjbGFpbSBpdGVtLiAqL1xuXHQucm9vbS1yb3cucmV0aXJlZCB7XG5cdFx0LmZvcm0tY29udHJvbCxcblx0XHQuY29sb3ItcGlja2VyLXdyYXBwZXIge1xuXHRcdFx0b3BhY2l0eTogMC41NTtcblx0XHR9XG5cdH1cblxuXHQucm9vbS1yb3cgLmZvcm0tY29udHJvbC5uZy1pbnZhbGlkIHtcblx0XHRib3JkZXItY29sb3I6ICNlMDc5NmY7XG5cdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjI0LCAxMjEsIDExMSwgMC4xNSk7XG5cdH1cblxuXHQucm9vbS1lbXB0eSB7XG5cdFx0cGFkZGluZzogMzRweCAzMnB4O1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0Ym9yZGVyOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcblx0fVxuXG5cdC8qIGFuZ3VsYXJqcy1jb2xvci1waWNrZXIgcmVuZGVycyBhIGJvb3RzdHJhcCBpbnB1dCBncm91cCAtIGtlZXAgdGhlIGpvaW50IHRpZHkgKi9cblx0LmNvbC1jb2xvdXIge1xuXHRcdC5jb2xvci1waWNrZXItd3JhcHBlcixcblx0XHQuY29sb3ItcGlja2VyLWlucHV0LXdyYXBwZXIge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXG5cdFx0LmlucHV0LWdyb3VwIC5pbnB1dC1ncm91cC1hZGRvbjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbSAwIDAgJGJvcmRlci1yYWRpdXMtc207XG5cdFx0XHRib3JkZXItY29sb3I6ICRncmV5LWJvcmRlci1saWdodDtcblx0XHR9XG5cblx0XHQuaW5wdXQtZ3JvdXAgLmNvbG9yLXBpY2tlci1pbnB1dCB7XG5cdFx0XHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcblx0XHR9XG5cdH1cblxuXHQubGFiZWwtc3dhdGNoIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0d2lkdGg6IDMwcHg7XG5cdFx0aGVpZ2h0OiAzMHB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdH1cblxuXHQuYnRuLWFkZC1yb3VuZCB7XG5cdFx0d2lkdGg6IDM0cHg7XG5cdFx0aGVpZ2h0OiAzNHB4O1xuXHRcdG1pbi13aWR0aDogMzRweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDE7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG5cblx0XHQmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRkYXJrTmF2eTtcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMS4wNik7XG5cdFx0fVxuXG5cdFx0JjpkaXNhYmxlZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZDNkOWU2O1xuXHRcdFx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgRm9ybSBjb250cm9sc1xuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5jb250cm9sLWxhYmVsLFxuXHRsYWJlbC5maWVsZC1sYWJlbCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0bWFyZ2luLWJvdHRvbTogNnB4O1xuXHR9XG5cblx0LmZvcm0tY29udHJvbCxcblx0c2VsZWN0LmZvcm0tY29udHJvbCB7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdHBhZGRpbmc6IDhweCAxMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcblxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjEpO1xuXHRcdH1cblxuXHRcdCZbcmVhZG9ubHldLFxuXHRcdCY6ZGlzYWJsZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRcdGNvbG9yOiAjOGE5MGEzO1xuXHRcdH1cblx0fVxuXG5cdHRleHRhcmVhLmZvcm0tY29udHJvbCB7XG5cdFx0bWluLWhlaWdodDogMTIwcHg7XG5cdFx0cmVzaXplOiB2ZXJ0aWNhbDtcblx0fVxuXG5cdC5lcnJvci1tZXNzYWdlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdH1cblxuXHQuZmllbGQtaGVscCB7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdG1hcmdpbi10b3A6IDVweDtcblx0XHRsaW5lLWhlaWdodDogMS40NTtcblx0fVxuXG5cdC5maWVsZC1ncmlkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDE2cHg7XG5cblx0XHQuZmllbGQge1xuXHRcdFx0ZmxleDogMSAxIDIwMHB4O1xuXHRcdFx0bWluLXdpZHRoOiAxNjBweDtcblx0XHR9XG5cblx0XHQuZmllbGQtc20ge1xuXHRcdFx0ZmxleDogMCAwIDE0MHB4O1xuXHRcdFx0d2lkdGg6IDE0MHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIEEgbnVtYmVyIHNldCBpbnNpZGUgaXRzIG93biBzZW50ZW5jZSwgcmF0aGVyIHRoYW4gc3RyYW5kZWQgYXQgdGhlIGZhciByaWdodCAqL1xuXHQuaW5saW5lLXNlbnRlbmNlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogN3B4O1xuXHRcdG1hcmdpbi10b3A6IDdweDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Y29sb3I6ICM1NTU7XG5cblx0XHRpbnB1dFt0eXBlPVwibnVtYmVyXCJdIHtcblx0XHRcdHdpZHRoOiA2MnB4O1xuXHRcdFx0cGFkZGluZzogNXB4IDhweDtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0dHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcblxuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIE5vdGljZXMgJiBlbXB0eSBzdGF0ZXNcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuc2V0dGluZ3Mtbm90aWNlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAxNHB4IDE4cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0XHRtYXJnaW4tdG9wOiAxcHg7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHR9XG5cblx0XHQmLmluZm8ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuXG5cdFx0XHRpIHtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYud2FybmluZyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOGU2O1xuXHRcdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMTcxLCAwLCAwLjMpO1xuXG5cdFx0XHRpIHtcblx0XHRcdFx0Y29sb3I6ICR5ZWxsb3ctY3RhO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5zZXR0aW5ncy1lbXB0eSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblx0XHRwYWRkaW5nOiA1NHB4IDMycHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDM0cHg7XG5cdFx0XHRjb2xvcjogI2QzZDllNjtcblx0XHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cdFx0fVxuXG5cdFx0aDQge1xuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHRcdG1hcmdpbjogMCAwIDhweDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0XHRtYXgtd2lkdGg6IDUyY2g7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41NTtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgRXhwYW5kYWJsZSBibG9ja3MgKHJlbWluZGVyIG1lc3NhZ2UgY29tcG9zZXJzKVxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5leHBhbmRlciB7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRtYXJnaW4tYm90dG9tOiAxNHB4O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdH1cblxuXHQuZXhwYW5kZXItaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAxNHB4IDE4cHg7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHVzZXItc2VsZWN0OiBub25lO1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZiZmNmZjtcblx0XHR9XG5cblx0XHQuZXhwYW5kZXItaWNvbiB7XG5cdFx0XHR3aWR0aDogMzRweDtcblx0XHRcdGhlaWdodDogMzRweDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQuZXhwYW5kZXItdGl0bGUge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblxuXHRcdFx0c3Ryb25nIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRcdH1cblxuXHRcdFx0c21hbGwge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5leHBhbmRlci1jaGV2cm9uIHtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdH1cblx0fVxuXG5cdC5leHBhbmRlci1ib2R5IHtcblx0XHRwYWRkaW5nOiA0cHggMThweCAxOHB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVmMWY3O1xuXHR9XG5cblx0LmV4cGFuZGVyLmlzLW9wZW4gLmV4cGFuZGVyLWhlYWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmYmZjZmY7XG5cdH1cblxuXHQvKiBNZXJnZS1maWVsZCB0b2tlbnMgKi9cblx0Lm1lcmdlLWZpZWxkLWdyb3VwcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA4cHggMjhweDtcblx0XHRtYXJnaW46IDEwcHggMCAxNHB4O1xuXHR9XG5cblx0Lm1lcmdlLWZpZWxkLWdyb3VwIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiA2cHg7XG5cblx0XHQubWVyZ2UtZmllbGRzIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQubWVyZ2UtZmllbGQtZ3JvdXAtbGFiZWwge1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0Lm1lcmdlLWZpZWxkcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luOiAxMHB4IDAgMTRweDtcblx0fVxuXG5cdC5tZXJnZS1maWVsZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcblx0XHRwYWRkaW5nOiA1cHggMTJweDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0LyogVGhlIHNoYXJlZCBbZHJhZ2dhYmxlXSBydWxlIHBhaW50cyBhIGJsYWNrIGJvcmRlciBhbmQgYSBtb3ZlIGN1cnNvciBvdmVyIGFueXRoaW5nXG5cdFx0ICAgZHJhZ2dhYmxlIC0gdGhlIGNoaXBzIGtlZXAgdGhlaXIgb3duIHBpbGwgc3R5bGluZyBhbmQgYSBncmFiIGN1cnNvciBpbnN0ZWFkLiAqL1xuXHRcdCZbZHJhZ2dhYmxlXSB7XG5cdFx0XHRib3JkZXItY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG5cdFx0XHRjdXJzb3I6IGdyYWI7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCY6YWN0aXZlIHtcblx0XHRcdGN1cnNvcjogZ3JhYmJpbmc7XG5cdFx0fVxuXG5cdFx0Lm1lcmdlLWZpZWxkLW5hbWUge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVxuXG5cdFx0LyogV2hhdCB0aGUgZmllbGQgdHVybnMgaW50by4gUmVndWxhciB3ZWlnaHQgYW5kIHRhYnVsYXIgZmlndXJlcyBzbyBpdCByZWFkcyBhcyBhIHZhbHVlXG5cdFx0ICAgcmF0aGVyIHRoYW4gYXMgbW9yZSBsYWJlbC4gKi9cblx0XHQubWVyZ2UtZmllbGQtZXhhbXBsZSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbi10b3A6IDFweDtcblx0XHRcdGZvbnQtc2l6ZTogOXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMDtcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0XHRvcGFjaXR5OiAwLjc7XG5cdFx0fVxuXHR9XG5cblx0Lm1lcmdlLWZpZWxkLW5vdGUge1xuXHRcdG1heC13aWR0aDogMzQwcHg7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjQ1O1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LyogRHJvcCB0YXJnZXRzLiBUaGUgc2hhcmVkIGx2bCBzdHlsZXMgZ3JleSB0aGUgd2hvbGUgZWRpdG9yIG91dCBtaWQtZHJhZyBhbmQgZGFzaCBhIGJsYWNrXG5cdCAgIGJvcmRlciBhcm91bmQgd2hpY2hldmVyIG5vZGUgdGhlIHBvaW50ZXIgaXMgb3Zlcjsgb3V0bGluZSB0aGUgY29tcG9zZXIgaW5zdGVhZCBzbyB0aGVcblx0ICAgd29yZGluZyBzdGF5cyByZWFkYWJsZSB3aGlsZSBhIGZpZWxkIGlzIGJlaW5nIGRyYWdnZWQgaW50byBpdC4gKi9cblx0LnRleHQtYXJlYS13cmFwLmx2bC10YXJnZXQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0b3V0bGluZTogMnB4IGRhc2hlZCByZ2JhKDAsIDUzLCAyMTAsIDAuMyk7XG5cdFx0b3V0bGluZS1vZmZzZXQ6IDNweDtcblx0fVxuXG5cdC50ZXh0LWFyZWEtd3JhcC5sdmwtb3Zlcixcblx0LnRleHQtYXJlYS13cmFwIC5sdmwtb3ZlciB7XG5cdFx0Ym9yZGVyOiAwICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQudGV4dC1hcmVhLXdyYXAubHZsLW92ZXIge1xuXHRcdG91dGxpbmU6IDJweCBkYXNoZWQgJG5hdnk7XG5cdH1cblxuXHQvKiBBdHRhY2htZW50cyAqL1xuXHQuYXR0YWNobWVudC1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEycHg7XG5cdFx0cGFkZGluZzogMTBweCAxNHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRtYXJnaW4tYm90dG9tOiA4cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXG5cdFx0LmF0dGFjaG1lbnQtaWNvbiB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0fVxuXG5cdFx0LmF0dGFjaG1lbnQtbmFtZSB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC5hdHRhY2htZW50LXNpemUge1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHR9XG5cblx0XHQuYXR0YWNobWVudC1hY3Rpb25zIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRnYXA6IDEwcHg7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblxuXHRcdFx0aW1nIHtcblx0XHRcdFx0d2lkdGg6IDE1cHg7XG5cdFx0XHRcdGhlaWdodDogMTVweDtcblx0XHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0XHRvcGFjaXR5OiAwLjY1O1xuXHRcdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7XG5cblx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5maWxlLWRyb3Age1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCByZ2JhKDAsIDUzLCAyMTAsIDAuMyk7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0cGFkZGluZzogMTRweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmY2ZmO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogIzg3OGJhMDtcblxuXHRcdGlucHV0W3R5cGU9XCJmaWxlXCJdIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHR9XG5cdH1cblxuXHQvKiBDaGFyYWN0ZXIgY291bnRlciAqL1xuXHQuc21zLWNvdW50ZXIge1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRtYXJnaW4tdG9wOiA2cHg7XG5cblx0XHRzdHJvbmcge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCYub3ZlciBzdHJvbmcge1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgVXNhZ2UgY2hhcnQgY2FyZFxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5jaGFydC1jYXJkIHtcblx0XHQuY2hhcnQtdG9vbGJhciB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuXHRcdFx0Z2FwOiAxNnB4O1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblx0XHR9XG5cblx0XHRudmQzIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgSW52b2ljaW5nIGRlZmF1bHRzIChwcmFjdGljZSBkZXRhaWxzKVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNldHRpbmdzLXNoZWxsIC5iaWxsaW5nLWRlZmF1bHRzIHtcblx0LmZpZWxkLWhlbHAge1xuXHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cdH1cblxuXHQuc2V0dGluZ3Mtbm90aWNlIHtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblx0fVxuXG5cdC5iaWxsaW5nLWRlZmF1bHRzLWZpZWxkcyB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdG1hcmdpbjogMDtcblx0XHRib3JkZXI6IDA7XG5cdFx0cGFkZGluZzogMDtcblx0fVxuXG5cdC5iaWxsaW5nLWRlZmF1bHRzLWZpZWxkIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0fVxuXG5cdC5iaWxsaW5nLWRlZmF1bHRzLWxhYmVsIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRtYXJnaW4tYm90dG9tOiA0cHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0fVxuXG5cdC5iaWxsaW5nLWRlZmF1bHRzLW1pbmkge1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdGhlaWdodDogMjhweDtcblx0XHRwYWRkaW5nOiAwIDEwcHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHR9XG5cblx0LmJpbGxpbmctZGVmYXVsdHMtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi10b3A6IDE2cHg7XG5cblx0XHQuYnRuIHtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFJlc3BvbnNpdmVcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuXHQuc2V0dGluZ3Mtc2hlbGwge1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cblx0XHQuc2V0dGluZ3MtbmF2IHtcblx0XHRcdGZsZXg6IDAgMCBhdXRvO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRib3JkZXItcmlnaHQ6IG5vbmU7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRvdmVyZmxvdy14OiBhdXRvO1xuXHRcdFx0b3ZlcmZsb3cteTogaGlkZGVuO1xuXHRcdH1cblxuXHRcdC5zZXR0aW5ncy1pZGVudGl0eSxcblx0XHQuc2V0dGluZ3MtbmF2LWZvb3RlciB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblxuXHRcdC5zZXR0aW5ncy1uYXYtZ3JvdXAge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDZweDtcblx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblxuXHRcdFx0LnNldHRpbmdzLW5hdi1ncm91cC10aXRsZSB7XG5cdFx0XHRcdHBhZGRpbmc6IDAgNnB4IDAgMDtcblx0XHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuc2V0dGluZ3MtbmF2LWl0ZW0ge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0LnNldHRpbmdzLXBhbmUtYm9keSB7XG5cdFx0XHRwYWRkaW5nOiAxOHB4IDE2cHg7XG5cdFx0fVxuXG5cdFx0LnNldHRpbmdzLWFjdGlvbi1iYXIge1xuXHRcdFx0cGFkZGluZzogMTJweCAxNnB4O1xuXHRcdH1cblxuXHRcdC5kZXRhaWwtcm93IHtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRcdGdhcDogNnB4O1xuXG5cdFx0XHQuZGV0YWlsLWxhYmVsIHtcblx0XHRcdFx0ZmxleC1iYXNpczogMTAwJTtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnJvdy1pdGVtIHtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHR9XG5cblx0XHQuY29sLXR5cGUsXG5cdFx0LmNvbC1jb2xvdXIsXG5cdFx0LmNvbC1kdXJhdGlvbiB7XG5cdFx0XHRmbGV4OiAxIDEgMTQwcHg7XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQcmFjdGljZSBsZWF2ZSAtIGFwcG9pbnRtZW50cyBhbHJlYWR5IGluc2lkZSBuZXcgbGVhdmVcbi8qIFRoZSBtb2RhbCBpcyBhcHBlbmRlZCB0byB0aGUgYm9keSwgb3V0c2lkZSAuc2V0dGluZ3Mtc2hlbGwuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ucHJhY3RpY2UtbGVhdmUtYWZmZWN0ZWQtbW9kYWwge1xuXHQuYWZmZWN0ZWQtbGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDE0cHg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblxuXHRcdGg0IHtcblx0XHRcdG1hcmdpbjogMnB4IDAgNHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAjNmI3MjgwO1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNDU7XG5cdFx0fVxuXHR9XG5cblx0LmFmZmVjdGVkLWljb24ge1xuXHRcdGZsZXg6IDAgMCA0MHB4O1xuXHRcdGhlaWdodDogNDBweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOGU2O1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRmb250LXNpemU6IDE4cHg7XG5cdH1cblxuXHQuYWZmZWN0ZWQtbGlzdCB7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdG1heC1oZWlnaHQ6IDMwMHB4O1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdH1cblxuXHQuYWZmZWN0ZWQtaXRlbSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAxMHB4IDE0cHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWYxZjc7XG5cblx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHR9XG5cdH1cblxuXHQuYWZmZWN0ZWQtd2hlbiB7XG5cdFx0ZmxleDogMCAwIDE1MHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXHR9XG5cblx0LmFmZmVjdGVkLXdobyB7XG5cdFx0ZmxleDogMTtcblx0XHRjb2xvcjogIzRhNTU2ODtcblx0fVxuXG5cdC5hZmZlY3RlZC10eXBlIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdGNvbG9yOiAjNGE1NTY4O1xuXHR9XG5cblx0LmFmZmVjdGVkLXN3YXRjaCB7XG5cdFx0d2lkdGg6IDlweDtcblx0XHRoZWlnaHQ6IDlweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG59XG5cbi8qIEFueW9uZSB3aG8gaGFzIGFza2VkIGZvciBsZXNzIG1vdGlvbiBnZXRzIHRoZSBiYW5kIHdpdGhvdXQgdGhlIHdpcGUuICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXHQuc2V0dGluZ3Mtc2hlbGwgLnNjb3BlLWJhZGdlLFxuXHQuc2V0dGluZ3Mtc2hlbGwgLm5hdi1ncm91cC1pdGVtcyB7XG5cdFx0YW5pbWF0aW9uOiBub25lO1xuXHRcdHRyYW5zaXRpb246IG5vbmU7XG5cdH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU3RhZmYgYW5kIHBlcm1pc3Npb25zXG4vKiBBIHByYWN0aWNlJ3MgU3RhZmYgYW5kIFJvbGUgcGVybWlzc2lvbnMgc2VjdGlvbnMgaW4gdGhlIFNldHRpbmdzIGRpYWxvZyxcbi8qIGFuZCB0aGUgQ2F0VHJheCBhZG1pbiBzY3JlZW5zLCByZXVzZSB0aGUgU2V0dGluZ3MgZGlhbG9nJ3MgbGF5b3V0IGFuZFxuLyogY2xhc3NlcyAoX3NldHRpbmdzLmNzcykuIE9ubHkgd2hhdCB0aG9zZSBzY3JlZW5zIGRvbid0IGFscmVhZHkgaGF2ZSBpcyBoZXJlLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBUaGUgU2V0dGluZ3Mgc2hlbGwgbm9ybWFsbHkgZmlsbHMgYSBkaWFsb2cuIE9uIGEgQ2F0VHJheCBhZG1pbiBwYWdlIGl0IG5lZWRzIGFcbiAgIGhlaWdodCBvZiBpdHMgb3duLCBzbyB0aGUgcmFpbCBhbmQgdGhlIHBhbmUgY2FuIGVhY2ggc2Nyb2xsLiAudmlldy13cmFwIHBhZHMgdGhlXG4gICBzaWRlcyBhbmQgYm90dG9tIGJ5IDI1cHggYnV0IG5vdCB0aGUgdG9wLCBzbyB0aGUgdG9wIG1hcmdpbiBldmVucyBpdCB1cC4gKi9cbi5zZXR0aW5ncy1wYWdlIHtcblx0ZGlzcGxheTogZmxleDtcblx0aGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjAwcHgpO1xuXHRtaW4taGVpZ2h0OiA1NjBweDtcblx0bWFyZ2luLXRvcDogMjVweDtcblx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0Ym94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBUaGUgcGVybWlzc2lvbnMgYXVkaXQgbG9nOiB0aGUgU2V0dGluZ3MgZGlhbG9nJ3MgbGF5b3V0LCBmaWxsaW5nIHRoZSB3aG9sZSBzY3JlZW4sIHNpbmNlIGl0cyB0YWJsZSBhbmRcbiAgIHBlb3BsZSBuZWVkIHRoZSB3aWR0aC4gKi9cbm1kLWRpYWxvZy5wZXJtaXNzaW9uLWF1ZGl0LWRpYWxvZyB7XG5cdHdpZHRoOiAxMDB2dztcblx0bWluLXdpZHRoOiAxMDB2dztcblx0bWF4LXdpZHRoOiAxMDB2dztcblx0aGVpZ2h0OiAxMDB2aDtcblx0bWF4LWhlaWdodDogMTAwdmg7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlci10b3Atd2lkdGg6IDA7XG5cdGJvcmRlci1yYWRpdXM6IDA7XG5cblx0LyogVGhlIGNvbnNvbGUgaXMgdGhlIGRpYWxvZydzIG9ubHkgY29udGVudCwgc28gaXQgdGFrZXMgdGhlIHdob2xlIGhlaWdodCwgYXMgYSBTZXR0aW5ncyBzZWN0aW9uIGRvZXMuICovXG5cdHBlcm1pc3Npb24tcmVmdXNhbHMtYWRtaW4tY29uc29sZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdH1cbn1cblxuLyogVGhlIFNldHRpbmdzIGRpYWxvZyBjYXBzIGVhY2ggcmFpbCBncm91cCBhdCAzMjBweCBzbyBpdCBjYW4gYW5pbWF0ZSBmb2xkaW5nLiBUaGVzZVxuICAgbGlzdHMgbmV2ZXIgZm9sZCwgYW5kIGV2ZXJ5IHJvbGUgYW5kIHN0YWZmIG1lbWJlciBtdXN0IHN0YXkgcmVhY2hhYmxlLCBzbyB0aGUgY2FwXG4gICBpcyBsaWZ0ZWQgYW5kIHRoZSByYWlsIHNjcm9sbHMgaW5zdGVhZC4gKi9cbi5zZXR0aW5ncy1wYWdlIC5zZXR0aW5ncy1zaGVsbCAuc2V0dGluZ3MtbmF2LWdyb3VwIC5uYXYtZ3JvdXAtaXRlbXMsXG4ucGVybWlzc2lvbi1hdWRpdC1kaWFsb2cgLnNldHRpbmdzLXNoZWxsIC5zZXR0aW5ncy1uYXYtZ3JvdXAgLm5hdi1ncm91cC1pdGVtcyB7XG5cdG1heC1oZWlnaHQ6IG5vbmU7XG59XG5cbi5zZXR0aW5ncy1zaGVsbCB7XG5cdC8qIFRoZSBzdGFmZiBsaXN0LCBhIHBlcnNvbiBhbmQgdGhlIHJvbGUgc2NyZWVuIGVhY2ggZmlsbCB0aGUgcGFuZSBsaWtlIGEgd2hvbGUgc2VjdGlvbiwgc28gdGhlXG5cdCAgIGJvZHkgc2Nyb2xscyBhbmQgdGhlIGFjdGlvbiBiYXIgc3RheXMgYXQgdGhlIGJvdHRvbS4gKi9cblx0LnN0YWZmLXNlY3Rpb24ge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLWhlaWdodDogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdH1cblxuXHQuc3RhZmYtdGFibGUge1xuXHRcdG1hcmdpbjogMDtcblxuXHRcdHRoIHtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0Ym9yZGVyLXRvcDogbm9uZTtcblx0XHR9XG5cblx0XHR0ZCB7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdH1cblxuXHRcdHRib2R5IHRyIHtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0Jjpob3ZlciB0ZCB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnN0YWZmLW5hbWUge1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cblx0XHQuc3RhZmYtb3BlbiB7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5zdGFmZi1ub3RlIHtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LyogQmFjayBmcm9tIG9uZSBwZXJzb24gdG8gdGhlIHdob2xlIGxpc3QuICovXG5cdC5zdGFmZi1iYWNrIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRmb250LWZhbWlseTogaW5oZXJpdDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdG9wYWNpdHk6IDAuNzU7XG5cdFx0fVxuXHR9XG5cblx0LyogT25lIGNoaXAgcGVyIHJvbGUsIHRvIHBpY2sgdGhlIHJvbGUgdG8gZWRpdC4gKi9cblx0LnJvbGUtcGlja2VyIHtcblx0XHRtYXJnaW46IDRweCAwIDE0cHg7XG5cblx0XHQvKiAuY2hpcC1zZWxlY3QgaXMgd3JpdHRlbiBmb3IgYSA8bGFiZWw+OyBhcyBhIDxidXR0b24+IGl0IG5lZWRzIHRoZSBmb250IGJhY2sgKi9cblx0XHRidXR0b24uY2hpcC1zZWxlY3Qge1xuXHRcdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdFx0fVxuXHR9XG5cblx0LnBlcm1pc3Npb24tY2hlY2tsaXN0LWJhciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHRcdGdhcDogMTRweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHR9XG5cblx0LyogVGhlIHdob2xlIHRpdGxlIGlzIHRoZSBmb2xkIGJ1dHRvbiwgd2l0aCB0aGUgc2FtZSBjaGV2cm9uIGFzIHRoZSBTZXR0aW5ncyByYWlsLiAqL1xuXHQucGVybWlzc2lvbi1ncm91cC10b2dnbGUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0cGFkZGluZzogMDtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdCY6aG92ZXIgaDQge1xuXHRcdFx0b3BhY2l0eTogMC43NTtcblx0XHR9XG5cdH1cblxuXHQucGVybWlzc2lvbi1ncm91cC1jaGV2cm9uIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG5cdH1cblxuXHQvKiBGb2xkZWQsIGEgZ3JvdXAgaXMganVzdCBpdHMgaGVhZGVyIHJvdy4gKi9cblx0LnBlcm1pc3Npb24tZ3JvdXAuY29sbGFwc2VkIHtcblx0XHRwYWRkaW5nLXRvcDogMTZweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTZweDtcblxuXHRcdC5jYXJkLWhlYWRlci1mbGV4IHtcblx0XHRcdGJvcmRlci1ib3R0b206IG5vbmU7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXG5cdFx0LnBlcm1pc3Npb24tZ3JvdXAtY2hldnJvbiB7XG5cdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuXHRcdH1cblx0fVxuXG5cdC5wZXJtaXNzaW9uLWdyb3VwLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE0cHg7XG5cdH1cblxuXHQucGVybWlzc2lvbi1jYXJkLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXHR9XG5cblx0LnBlcm1pc3Npb24tcm93IHtcblx0XHRtaW4taGVpZ2h0OiA0OHB4O1xuXHRcdHBhZGRpbmc6IDEwcHggMDtcblxuXHRcdC5jaGlwLWxpc3Qge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHRcdH1cblx0fVxuXG5cdC5wZXJtaXNzaW9uLWNvZGUsXG5cdC5wZXJtaXNzaW9uLXJlYXNvbiB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LnBlcm1pc3Npb24tY29kZSB7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG5cdH1cblxuXHQucGVybWlzc2lvbi1yZWFzb24ge1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdH1cblxuXHQvKiBUaGUgcHJhY3RpY2UgZG9lc24ndCBwYXkgZm9yIGl0IC0gdGhlIHNhbWUgY2F1dGlvbiB0b25lIGFzIHRoZSBwcmFjdGljZSBzY29wZSBiYWRnZS4gKi9cblx0LmNoaXAuY2hpcC13YXJuaW5nIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2FybmluZy1iZztcblx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHRib3JkZXItY29sb3I6ICR3YXJuaW5nLWJvcmRlcjtcblx0fVxuXG5cdC8qIERpZmZlcnMgZnJvbSB0aGUgc3RhcnRpbmcgcG9pbnQgLSBzb2xpZCwgc28gYSBjaGFuZ2Ugc3RhbmRzIG91dCBpbiBhIGxvbmcgbGlzdC4gKi9cblx0LmNoaXAuY2hpcC1jaGFuZ2VkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdH1cblxuXHQvKiBXaGF0IHNhdmluZyBhIHBlcnNvbidzIHRpY2tlZCByb2xlcyB3b3VsZCBhZGQgb3IgdGFrZSBhd2F5LCBzaG93biBiZWZvcmUgdGhleSBhcmUgc2F2ZWQuICovXG5cdC5yb2xlLWNoYW5nZS1wcmV2aWV3IHtcblx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXHRcdHBhZGRpbmc6IDE0cHggMTZweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuXG5cdFx0LnJvbGUtY2hhbmdlLXRpdGxlIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQuZGV0YWlsLXJvdyB7XG5cdFx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHR9XG5cblx0XHQuY2hpcC1saXN0IHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0fVxuXG5cdFx0LmNoaXAge1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcblx0XHR9XG5cblx0XHQvKiBUaGUgc2FtZSBzdW1tYXJ5IGZvciBhIHJvbGUncyB1bnNhdmVkIGNoYW5nZXMgc2l0cyBvbiB0aGUgcGFsZSBwYW5lLCBzbyBpdCBpcyBhIHdoaXRlIGNhcmQuICovXG5cdFx0Ji5yb2xlLXNhdmUtc3VtbWFyeSB7XG5cdFx0XHRtYXJnaW46IDAgMCAyMHB4O1xuXHRcdFx0cGFkZGluZzogMThweCAyNXB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdH1cblx0fVxuXG5cdC8qIFNhbWUgZ3JlZW5zIGFzIHRoZSBzYXZlIGNvbmZpcm1hdGlvbi4gKi9cblx0LmNoaXAuY2hpcC1nYWluZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0xMDtcblx0XHRjb2xvcjogY29sb3IoJGdyZWVuIGwoLTEyJSkpO1xuXHRcdGJvcmRlci1jb2xvcjogJGdyZWVuLXRwLTMwO1xuXHR9XG5cblx0LmNoaXAuY2hpcC1sb3N0IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQtdHAtMTU7XG5cdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRib3JkZXItY29sb3I6ICRyZWQtZGFuZ2VyLWFsdC10cC0xNTtcblx0fVxuXG5cdC8qIEEgZml4ZWQgbGF5b3V0IGtlZXBzIHRoZSB0YWJsZSBpbnNpZGUgaXRzIGNhcmQuIFJlcXVlc3QgcGF0aHMgYW5kIHBlcm1pc3Npb24gY29kZXMgaGF2ZSBub1xuXHQgICBzcGFjZXMsIHNvIHdpdGggYW4gYXV0b21hdGljIGxheW91dCB0aGV5IHNldCB0aGUgdGFibGUncyB3aWR0aCBhbmQgdGhlIHBhbmUgc2Nyb2xscyBzaWRld2F5cy4gKi9cblx0LnJlZnVzYWwtdGFibGUge1xuXHRcdG1hcmdpbjogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHR0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuXG5cdFx0dGgge1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRib3JkZXItdG9wOiBub25lO1xuXHRcdH1cblxuXHRcdHRkIHtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcblx0XHR9XG5cblx0XHQvKiBSb2xlIG5hbWVzIHdyYXAgYmV0d2VlbiB3b3JkcywgbmV2ZXIgaW5zaWRlIG9uZS4gKi9cblx0XHQuY2hpcCB7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm9ybWFsO1xuXHRcdFx0b3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuXHRcdH1cblxuXHRcdC8qIFdoYXQgdGhlIHJvdyBjb3VudHMsIHNob3duIGFib3ZlIHRoZSBwZXJtaXNzaW9uIHdoZW4gZXZlcnkga2luZCBpcyBsaXN0ZWQuIExvc3NlcyB1c2UgdGhlXG5cdFx0ICAgcm9sZS1jaGFuZ2UgcHJldmlldydzIHJlZCwgZ2FpbnMgaXRzIGdyZWVuLiAqL1xuXHRcdC5yZWZ1c2FsLWtpbmQge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdHdpZHRoOiBtYXgtY29udGVudDtcblx0XHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRcdG1hcmdpbi1ib3R0b206IDRweDtcblxuXHRcdFx0Ji5raW5kLVJFRlVTRUQsXG5cdFx0XHQmLmtpbmQtQ0hBTkdFU19SRUZVU0UsXG5cdFx0XHQmLmtpbmQtUFJPUE9TQUxfUkVGVVNFUyB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdC10cC0xNTtcblx0XHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQtdHAtMTU7XG5cdFx0XHR9XG5cblx0XHRcdCYua2luZC1DSEFOR0VTX0FMTE9XLFxuXHRcdFx0Ji5raW5kLVBST1BPU0FMX0FMTE9XUyB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0xMDtcblx0XHRcdFx0Y29sb3I6IGNvbG9yKCRncmVlbiBsKC0xMiUpKTtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW4tdHAtMzA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnJlZnVzYWwtcGVybWlzc2lvbiB7XG5cdFx0XHR3aWR0aDogMjUlO1xuXHRcdH1cblxuXHRcdC5yZWZ1c2FsLW91dGNvbWVzIHtcblx0XHRcdHdpZHRoOiAyMiU7XG5cdFx0fVxuXG5cdFx0LnJlZnVzYWwtcm9sZXMge1xuXHRcdFx0d2lkdGg6IDIwJTtcblx0XHR9XG5cblx0XHQucmVmdXNhbC1wcmFjdGljZSB7XG5cdFx0XHR3aWR0aDogMTQlO1xuXHRcdH1cblxuXHRcdC5yZWZ1c2FsLWNvdW50IHtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR9XG5cblx0XHQvKiBXaGF0IGEgcmVxdWVzdCBnb3QgdG9kYXksIGFuZCB3b3VsZCBnZXQgdW5kZXIgdGhlIHByb3Bvc2FsOiByZWZ1c2VkIHJlZCwgYWxsb3dlZCBncmVlbiwgYW5kXG5cdFx0ICAgYWxsb3dlZCBvbmx5IGJlY2F1c2UgdGhlIGNoZWNrIGlzIGxvZy1vbmx5IGluIHRoZSB3YXJuaW5nIGFtYmVyLiAqL1xuXHRcdC5yZWZ1c2FsLW91dGNvbWUge1xuXHRcdFx0Ji5vdXRjb21lLVJFRlVTRUQge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQtdHAtMTU7XG5cdFx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJHJlZC1kYW5nZXItYWx0LXRwLTE1O1xuXHRcdFx0fVxuXG5cdFx0XHQmLm91dGNvbWUtQUxMT1dFRCB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0xMDtcblx0XHRcdFx0Y29sb3I6IGNvbG9yKCRncmVlbiBsKC0xMiUpKTtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW4tdHAtMzA7XG5cdFx0XHR9XG5cblx0XHRcdCYub3V0Y29tZS1BTExPV0VEX0xPR19PTkxZIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdhcm5pbmctYmc7XG5cdFx0XHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICR3YXJuaW5nLWJvcmRlcjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQucmVmdXNhbC1hcnJvdyB7XG5cdFx0XHRtYXJnaW46IDAgNHB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdC5yZWZ1c2FsLXJvdyB7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRcdCY6aG92ZXIgdGQsXG5cdFx0XHQmLmV4cGFuZGVkIHRkIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHllbGxvdy10cC0xMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQucmVmdXNhbC1jYXJldCB7XG5cdFx0XHR3aWR0aDogMTBweDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0XHQvKiBPbmUgcm93J3MgcGVvcGxlLCB3aHksIGFuZCB3aGVyZSB0byBmaXggaXQuICovXG5cdFx0LnJlZnVzYWwtZGV0YWlsID4gdGQge1xuXHRcdFx0cGFkZGluZzogMTJweCAxNnB4IDE2cHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93LXRwLTEwO1xuXHRcdFx0Ym9yZGVyLXRvcDogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQucmVmdXNhbC1maXgge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDhweDtcblxuXHRcdC5yZWZ1c2FsLWZpeC1sYWJlbCB7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cdH1cblxuXHQucmVmdXNhbC11c2VycyB7XG5cdFx0bWFyZ2luOiAwIDAgOHB4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblxuXHRcdHRoIHtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdHRkIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHR9XG5cblx0XHQucmVmdXNhbC1wZXJzb24ge1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdH1cblx0fVxuXG5cdC5yZWZ1c2FsLWVuZHBvaW50cyBoNSxcblx0LnJlZnVzYWwtaW1wYWN0IGg1IHtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRtYXJnaW46IDhweCAwIDRweDtcblx0fVxuXG5cdC5pbXBhY3QtbXV0ZWQge1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQvKiBXaG8gd291bGQgbG9zZSBvciBnYWluIGFjY2VzcywgYWJvdmUgdGhlIHRhYmxlLiAqL1xuXHQucmVmdXNhbC1pbXBhY3Qge1xuXHRcdC5pbXBhY3Qtc3RhdHMge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRcdGdhcDogMTJweDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDEycHg7XG5cdFx0fVxuXG5cdFx0LmltcGFjdC1zdGF0IHtcblx0XHRcdGZsZXg6IDEgMSAxODBweDtcblx0XHRcdHBhZGRpbmc6IDEwcHggMTRweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXG5cdFx0XHQmLmxvc2Uge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQtdHAtMTU7XG5cdFx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0XHR9XG5cblx0XHRcdCYuZ2FpbiB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0xMDtcblx0XHRcdFx0Y29sb3I6IGNvbG9yKCRncmVlbiBsKC0xMiUpKTtcblx0XHRcdH1cblxuXHRcdFx0Ji5jaGFuZ2VzIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdhcm5pbmctYmc7XG5cdFx0XHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5pbXBhY3QtbnVtYmVyIHtcblx0XHRcdGZvbnQtc2l6ZTogMjJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR9XG5cblx0XHQuaW1wYWN0LWxpc3RzIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0XHRnYXA6IDI0cHg7XG5cblx0XHRcdD4gZGl2IHtcblx0XHRcdFx0ZmxleDogMSAxIDIyMHB4O1xuXHRcdFx0fVxuXG5cdFx0XHRvbCxcblx0XHRcdHVsIHtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiAxOHB4O1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQucmVmdXNhbC1maWx0ZXJzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDEycHg7XG5cblx0XHQuY2xhaW0taXRlbS1maWx0ZXIge1xuXHRcdFx0ZmxleDogMSAxIDI0MHB4O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdHNlbGVjdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRtaW4td2lkdGg6IDE2MHB4O1xuXHRcdH1cblx0fVxuXG5cdC5yZWZ1c2FsLWV4cG9ydCB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdH1cblxuXHQvKiBUaGUgYXVkaXQgbG9nJ3MgcGFuZTogdGhlIHNwaW5uZXIgc2l0cyBvdmVyIGl0IHdoaWxlIGxvYWRpbmcuICovXG5cdC5yZWZ1c2FsLXBhbmUge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0fVxuXG5cdC5yZWZ1c2FsLXNwaW5uZXIge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0dG9wOiA0MCU7XG5cdH1cblxuXHQvKiBUaGUgcm9sZS1kZWZhdWx0cyBzY3JlZW4sIG9wZW5lZCBmcm9tIHRoZSBhdWRpdCBsb2cgb24gb25lIHBlcm1pc3Npb24uICovXG5cdC5mb2N1cy1wZXJtaXNzaW9uIHtcblx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cdFx0cGFkZGluZzogOHB4IDEycHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdhcm5pbmctYmc7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJHdhcm5pbmctYm9yZGVyO1xuXHR9XG5cblx0LmNsYWltLWl0ZW0tdG9nZ2xlLmRpc2FibGVkIHtcblx0XHRvcGFjaXR5OiAwLjQ1O1xuXHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQ2FsZW5kYXJcbi8qIFRoZSBjYWxlbmRhciBkaWFsb2cgYW5kIHRoZSBhcHBvaW50bWVudCBtb2RhbCBhcmUgYnVpbHQgb24gdGhlIHNldHRpbmdzXG4vKiBzaGVsbCAoX3NldHRpbmdzLmNzcykgLSB0aGUgc2FtZSB3aGl0ZSByYWlsLCBwYWxlIGJsdWUgY2FudmFzLCBjYXJkcyxcbi8qIG5vdGljZXMgYW5kIGZvcm0gY29udHJvbHMgLSBzbyB0aGV5IHJlYWQgYXMgdGhlIHNhbWUgcHJvZHVjdC4gV2hhdCBvbmx5XG4vKiB0aGUgY2FsZW5kYXIgbmVlZHMgaXMgc2NvcGVkIHRvIC5jYWxlbmRhci1zaGVsbCAvIC5hcHBvaW50bWVudC1zaGVsbC5cbi8qIFRoZSBhcHB0LSogcGllY2VzIChzdGF0dXMgcGlsbHMsIGludm9pY2UgZG90cywgc3dhdGNoZXMpIGFyZSBzaGFyZWQgYnlcbi8qIHRoZSBncmlkLCB0aGUgdGVhbSB2aWV3LCB0aGUgaG92ZXIgY2FyZCBhbmQgdGhlIG1vZGFsLCBzbyBzaXQgYXQgdGhlIHRvcC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQGtleWZyYW1lcyBjYWxlbmRhci1sb2FkaW5nIHtcblx0ZnJvbSB7XG5cdFx0bGVmdDogLTQwJTtcblx0fVxuXG5cdHRvIHtcblx0XHRsZWZ0OiAxMDAlO1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU2hhcmVkIGFwcG9pbnRtZW50IHBpZWNlc1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBXaGl0ZSBwaWxscywgc28gdGhleSByZWFkIG9uIGFueSBhcHBvaW50bWVudCBjb2xvdXIgYSBwcmFjdGljZSBwaWNrcy4gKi9cbi5hcHB0LXBpbGwge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0cGFkZGluZzogMXB4IDZweDtcblx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRjb2xvcjogIzRhNTU2ODtcblx0Zm9udC1zaXplOiA5cHg7XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0bGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcblx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0bGluZS1oZWlnaHQ6IDEuNTtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0Ym94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5hcHB0LXBpbGwtYXJyaXZlZCB7XG5cdGNvbG9yOiAkd2FybmluZy10ZXh0O1xufVxuXG4uYXBwdC1waWxsLWluLXByb2dyZXNzIHtcblx0Y29sb3I6ICR0ZWFsO1xufVxuXG4uYXBwdC1waWxsLWRvbmUge1xuXHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcbn1cblxuLmFwcHQtcGlsbC1taXNzZWQge1xuXHRjb2xvcjogJGRhbmdlcjtcbn1cblxuLmFwcHQtaW52b2ljZSB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0d2lkdGg6IDE2cHg7XG5cdGhlaWdodDogMTZweDtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGZvbnQtc2l6ZTogMTBweDtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRsaW5lLWhlaWdodDogMTtcblx0Ym94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5hcHB0LWludm9pY2UtZHJhZnQge1xuXHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xufVxuXG4uYXBwdC1pbnZvaWNlLXBlbmRpbmcge1xuXHRjb2xvcjogJHdhcm5pbmctdGV4dDtcbn1cblxuLmFwcHQtaW52b2ljZS1wYWlkIHtcblx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG59XG5cbi5hcHB0LXN3YXRjaCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6IDEwcHg7XG5cdGhlaWdodDogMTBweDtcblx0ZmxleC1zaHJpbms6IDA7XG5cdGJvcmRlci1yYWRpdXM6IDNweDtcblxuXHQmLnJvdW5kIHtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdH1cbn1cblxuLyogSG92ZXIgY2FyZCAtIGFwcGVuZGVkIHRvIGJvZHkgYnkgQm9vdHN0cmFwJ3MgcG9wb3Zlciwgc28gbm90IHVuZGVyIGVpdGhlciBzaGVsbC4gKi9cbi5wb3BvdmVyIC5hcHB0LXBvcG92ZXIge1xuXHRtaW4td2lkdGg6IDIzMHB4O1xuXHRmb250LXNpemU6IDEycHg7XG5cdGNvbG9yOiAkdGV4dC1kYXJrO1xuXG5cdC5hcHB0LXBvcG92ZXItcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogMTBweDtcblx0XHRwYWRkaW5nOiAzcHggMDtcblx0fVxuXG5cdC5hcHB0LXBvcG92ZXItbGFiZWwge1xuXHRcdGZsZXg6IDAgMCA2NHB4O1xuXHRcdHBhZGRpbmctdG9wOiAycHg7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQuYXBwdC1wb3BvdmVyLW5vdGUge1xuXHRcdG1hcmdpbi10b3A6IDZweDtcblx0XHRwYWRkaW5nLXRvcDogNnB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGNvbG9yOiAkdGV4dC1saWdodDtcblx0XHR3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG5cdH1cblxuXHQuYXBwdC1wb3BvdmVyLWludm9pY2Uge1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgTm90aWNlcyAoYm90aCBzaGVsbHMpXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uY2FsZW5kYXItc2hlbGwsXG4uYXBwb2ludG1lbnQtc2hlbGwge1xuXHQuc2V0dGluZ3Mtbm90aWNlIHtcblx0XHQubm90aWNlLXRleHQge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cblx0XHQvKiBBIGJvb2tpbmcgdGhhdCBpcyByZWZ1c2VkIG91dHJpZ2h0LCBzdWNoIGFzIG9uZSBpbnNpZGUgcHJhY3RpY2UgbGVhdmUuICovXG5cdFx0Ji5lcnJvciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VhO1xuXHRcdFx0Y29sb3I6ICM2MTFhMTU7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjZjVjMmM3O1xuXG5cdFx0XHRpIHtcblx0XHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQubm90aWNlLWFjdGlvbiB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdFx0bWFyZ2luOiAtM3B4IDA7XG5cdFx0XHRwYWRkaW5nOiA0cHggMTRweDtcblx0XHR9XG5cblx0XHQucHJhY3RpY2UtbGVhdmUtb3ZlcnJpZGUge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdFx0Z2FwOiA4cHg7XG5cdFx0XHRtYXJnaW46IDhweCAwIDA7XG5cdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0XHRpbnB1dCB7XG5cdFx0XHRcdG1hcmdpbjogM3B4IDAgMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQubm90aWNlLWRpc21pc3Mge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0cGFkZGluZzogMCAycHg7XG5cdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdG9wYWNpdHk6IDAuNjtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0aSB7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdH1cblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi5jYWxlbmRhci1zaGVsbCxcbi5hcHBvaW50bWVudC1zaGVsbCB7XG5cdC5zZWdtZW50ZWQge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAycHg7XG5cdFx0cGFkZGluZzogM3B4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cblx0XHQuc2VnbWVudGVkLWxhYmVsIHtcblx0XHRcdHBhZGRpbmc6IDAgNnB4IDAgN3B4O1xuXHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHR9XG5cblx0XHRidXR0b24ge1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNnB4O1xuXHRcdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRcdHBhZGRpbmc6IDVweCAxMXB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXG5cdFx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDJweCA2cHggcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBDYWxlbmRhciBkaWFsb2cgc2hlbGxcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5jYWxlbmRhci1zaGVsbCB7XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQvKiBMZWZ0IHJhaWxcblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQuY2FsZW5kYXItcmFpbCB7XG5cdFx0ZmxleC1iYXNpczogMjY0cHg7XG5cdFx0d2lkdGg6IDI2NHB4O1xuXHRcdHBhZGRpbmctYm90dG9tOiA4cHg7XG5cdH1cblxuXHQubmF2LWl0ZW0tdGV4dCB7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC5jYWxlbmRhci1tb2RlLXN3aXRjaCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDRweDtcblx0XHRtYXJnaW46IDE0cHggMTJweCAycHg7XG5cdFx0cGFkZGluZzogNHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cblx0XHRidXR0b24ge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRcdHBhZGRpbmc6IDdweCA2cHg7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDVweDtcblx0XHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHR9XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cblx0XHRcdCYuYWN0aXZlIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTIpO1xuXG5cdFx0XHRcdGkge1xuXHRcdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5taW5pLW1vbnRoIHtcblx0XHRwYWRkaW5nOiAxNHB4IDE0cHggMTJweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZjFmNztcblx0fVxuXG5cdC5taW5pLW1vbnRoLWhlYWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0bWFyZ2luLWJvdHRvbTogNHB4O1xuXHR9XG5cblx0Lm1pbmktbW9udGgtdGl0bGUge1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC5taW5pLW1vbnRoLW5hdiB7XG5cdFx0d2lkdGg6IDI2cHg7XG5cdFx0aGVpZ2h0OiAyNnB4O1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0Lm1pbmktbW9udGgtd2VlayB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpO1xuXHR9XG5cblx0Lm1pbmktbW9udGgtZG93IHNwYW4ge1xuXHRcdHBhZGRpbmc6IDRweCAwO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LyogVGhlIGRheXMgb24gc2NyZWVuIGZvcm0gb25lIHBhbGUgYmFuZCwgc28gdGhlIHJhaWwgc2hvd3Mgd2hpY2ggc2xpY2Ugb2YgdGhlIG1vbnRoIHlvdSBhcmUgaW4uICovXG5cdC5taW5pLW1vbnRoLWRheSB7XG5cdFx0aGVpZ2h0OiAyOHB4O1xuXHRcdG1hcmdpbjogMXB4IDA7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0cGFkZGluZzogMDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xMnMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmLm91dC1vZi1tb250aCB7XG5cdFx0XHRjb2xvcjogI2MzYzlkYTtcblx0XHR9XG5cblx0XHQmLmluLXZpZXcge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQvKiBBIHB1YmxpYyBob2xpZGF5IC0gbmFtZWQgaW4gdGhlIGhvdmVyICovXG5cdFx0Ji5pcy1ob2xpZGF5IHtcblx0XHRcdGNvbG9yOiAkdGVhbDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGJveC1zaGFkb3c6IGluc2V0IDAgLTJweCAwICR0ZWFsO1xuXHRcdH1cblxuXHRcdCYuaXMtdG9kYXkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdH1cblx0fVxuXG5cdC5jYWxlbmRhci1wcmFjdGljZS1pdGVtIC5hcHB0LXN3YXRjaCB7XG5cdFx0bWFyZ2luOiAwIDJweDtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAycHggJHdoaXRlO1xuXHR9XG5cblx0LyogVGljayB0byBhZGQgYSBjbGluaWNpYW4gYWxvbmdzaWRlIHRoZSBvdGhlcnM7IGNsaWNrIHRoZSBuYW1lIHRvIHNlZSBvbmx5IHRoZW0uICovXG5cdC5jbGluaWNpYW4tcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHBhZGRpbmc6IDJweCAxMnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDFweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cdFx0fVxuXG5cdFx0LmNsaW5pY2lhbi1jaGVjayB7XG5cdFx0XHR3aWR0aDogMThweDtcblx0XHRcdGhlaWdodDogMThweDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRib3JkZXI6IDJweCBzb2xpZDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDVweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRmb250LXNpemU6IDlweDtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdFx0aSB7XG5cdFx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHR9XG5cblx0XHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYuaXMtc2hvd24gLmNsaW5pY2lhbi1jaGVjayBpIHtcblx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0fVxuXG5cdFx0LmNsaW5pY2lhbi1uYW1lIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRwYWRkaW5nOiA2cHggMDtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jjpub3QoLmlzLXNob3duKSAuY2xpbmljaWFuLW5hbWUge1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0fVxuXG5cdFx0Ji5pcy1vbmx5IC5jbGluaWNpYW4tbmFtZSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0LmNsaW5pY2lhbi1jb3VudCB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdHBhZGRpbmc6IDJweCA3cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRcdGNvbG9yOiAjN2Q4Mzk5O1xuXHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHR9XG5cdH1cblxuXHQvKiBQcmFjdGljZSBuYW1lcyBydW4gbG9uZyAoXCJFeWUgU3VyZ2VyeSBBc3NvY2lhdGVzIC0gUmVtdWVyYVwiKSwgc28gdGhleSB3cmFwIHJhdGhlciB0aGFuIGN1dCBvZmYuICovXG5cdC5wcmFjdGljZS1yb3cge1xuXHRcdC5jbGluaWNpYW4tbmFtZSB7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm9ybWFsO1xuXHRcdFx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zNTtcblx0XHR9XG5cblx0XHQuYXBwdC1zd2F0Y2gge1xuXHRcdFx0bWFyZ2luOiAwIDJweDtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDJweCAkd2hpdGU7XG5cdFx0fVxuXHR9XG5cblx0LmxlZ2VuZC1pdGVtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHBhZGRpbmc6IDVweCAxMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGNvbG9yOiAjNGE1NTY4O1xuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQvKiBNYWluIHBhbmVcblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQuY2FsZW5kYXItbWFpbiB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAxNnB4IDIwcHggMThweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdH1cblxuXHQuY2FsZW5kYXItdG9vbGJhciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiAxMnB4IDE2cHg7XG5cdH1cblxuXHQuY2FsZW5kYXItdG9vbGJhci1uYXYge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0LmNhbGVuZGFyLXRpdGxlIHtcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0fVxuXG5cdC5jYWwtYnRuIHtcblx0XHRoZWlnaHQ6IDM0cHg7XG5cdFx0cGFkZGluZzogMCAxNHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR9XG5cblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuXHRcdH1cblx0fVxuXG5cdC5jYWwtaWNvbi1idG4ge1xuXHRcdHdpZHRoOiAzNHB4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHR9XG5cblx0LmNhbC1idG4tZ3JvdXAge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cblx0XHQuY2FsLWJ0bjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbSAwIDAgJGJvcmRlci1yYWRpdXMtc207XG5cdFx0fVxuXG5cdFx0LmNhbC1idG46bGFzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogLTFweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDAgJGJvcmRlci1yYWRpdXMtc20gJGJvcmRlci1yYWRpdXMtc20gMDtcblx0XHR9XG5cdH1cblxuXHQuY2FsZW5kYXItdG9vbGJhci10b29scyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEwcHg7XG5cdH1cblxuXHQuY2FsZW5kYXItc2VhcmNoIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0d2lkdGg6IDIzMHB4O1xuXG5cdFx0PiBpIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGxlZnQ6IDExcHg7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRoZWlnaHQ6IDM0cHg7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDMxcHg7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAyOHB4O1xuXHRcdH1cblxuXHRcdC5jYWxlbmRhci1zZWFyY2gtY2xlYXIge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0cmlnaHQ6IDZweDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0d2lkdGg6IDIycHg7XG5cdFx0XHRoZWlnaHQ6IDIycHg7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogQ291bnRzIGJ5IHdoZXJlIHBhdGllbnRzIGFyZSBpbiB0aGVpciB2aXNpdC4gQ2xpY2tpbmcgb25lIGhpZ2hsaWdodHMganVzdCB0aG9zZS4gKi9cblx0LmNhbGVuZGFyLXN0YXR1c2JhciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEwcHg7XG5cdH1cblxuXHQuc3RhdHVzLWNoaXBzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDZweDtcblx0fVxuXG5cdC5zdGF0dXMtY2hpcCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDdweDtcblx0XHRwYWRkaW5nOiA1cHggMTFweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdHN0cm9uZyB7XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0fVxuXG5cdFx0LnN0YXR1cy1kb3Qge1xuXHRcdFx0d2lkdGg6IDhweDtcblx0XHRcdGhlaWdodDogOHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAjY2JkNWUwO1xuXHRcdH1cblxuXHRcdCYuYWN0aXZlIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXG5cdFx0XHRzdHJvbmcge1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji5tdXRlZCB7XG5cdFx0XHRvcGFjaXR5OiAwLjU1O1xuXHRcdH1cblx0fVxuXG5cdC5zdGF0dXMtY2hpcC1ib29rZWQgLnN0YXR1cy1kb3Qge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQuc3RhdHVzLWNoaXAtYXJyaXZlZCAuc3RhdHVzLWRvdCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHllbGxvdztcblx0fVxuXG5cdC5zdGF0dXMtY2hpcC1pbi1wcm9ncmVzcyAuc3RhdHVzLWRvdCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGN5YW47XG5cdH1cblxuXHQuc3RhdHVzLWNoaXAtZG9uZSAuc3RhdHVzLWRvdCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuO1xuXHR9XG5cblx0LnN0YXR1cy1jaGlwLW1pc3NlZCAuc3RhdHVzLWRvdCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHR9XG5cblx0LnN0YXR1cy10b3RhbCB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdH1cblxuXHQudGVhbS1lbXB0eS10b2dnbGUge1xuXHRcdHBhZGRpbmc6IDVweCAxMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXG5cdFx0aSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIG5vdGljZXMgam9pbiB0aGUgcGFuZSdzIG93biBnYXAgcmF0aGVyIHRoYW4gYWRkaW5nIG9uZSB3aGVuIHRoZXJlIGFyZSBub25lLiAqL1xuXHQuY2FsZW5kYXItbm90aWNlcyB7XG5cdFx0ZGlzcGxheTogY29udGVudHM7XG5cblx0XHQuc2V0dGluZ3Mtbm90aWNlIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQuY2FsZW5kYXItc3RhZ2Uge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0fVxuXG5cdC5wZXJzb25hbC1zdGFnZSB7XG5cdFx0cGFkZGluZzogMDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG5cblx0LmNhbGVuZGFyLWZjIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdH1cblxuXHQuY2FsZW5kYXItbG9hZGluZyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdHJpZ2h0OiAwO1xuXHRcdGhlaWdodDogM3B4O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0ei1pbmRleDogNjtcblx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblxuXHRcdHNwYW4ge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0bGVmdDogLTQwJTtcblx0XHRcdHdpZHRoOiA0MCU7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGFuaW1hdGlvbjogY2FsZW5kYXItbG9hZGluZyAxLjFzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuXHRcdH1cblx0fVxuXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogQXBwb2ludG1lbnQgc3RhdHVzLCBzaGFyZWQgYnkgRnVsbENhbGVuZGFyIGV2ZW50cyBhbmQgdGhlIHRlYW0gdmlld1xuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIFN0YXR1c2VzIG9uIHRoZSBsaWdodCBjYXJkczogdGhlIGNvbG91ciBlZGdlIHN0YXlzIHRoZSB0eXBlJ3MsIHNvIGEgc3RhdHVzIGlzIGEgcmluZywgYSBmYWRlIG9yIGFcblx0ICAgaGF0Y2ggcmF0aGVyIHRoYW4gYW5vdGhlciBlZGdlLiBcIldhaXRpbmdcIiBpcyBzYWlkIGJ5IGl0cyBwaWxsIGFsb25lLiAqL1xuXHQuZmMgLmZjLWV2ZW50LmFwcHQuYXBwdC1zdGF0dXMtaW4tcHJvZ3Jlc3MsXG5cdC50ZWFtLWRheSAudGVhbS1hcHB0LmFwcHQtc3RhdHVzLWluLXByb2dyZXNzIHtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAycHggJGN5YW4tdHAtNTAsIDAgMnB4IDZweCByZ2JhKDAsIDE4OCwgMjEyLCAwLjI1KTtcblx0fVxuXG5cdC8qIERvbmUgaXMgc3RpbGwgd29ydGggc2VlaW5nLCBidXQgaXQgaXMgbm8gbG9uZ2VyIHdoYXQgdGhlIGRheSBpcyBhYm91dC4gTXV0ZWQgYnkgY29sb3VyIHJhdGhlclxuXHQgICB0aGFuIHRyYW5zcGFyZW5jeSwgc28gY2FyZHMgdGhhdCBvdmVybGFwIHN0YXkgc29saWQgaW5zdGVhZCBvZiBzaG93aW5nIHRocm91Z2ggb25lIGFub3RoZXIuICovXG5cdC5hcHB0LXN0YXR1cy1kb25lIHtcblx0XHRmaWx0ZXI6IHNhdHVyYXRlKDAuMyk7XG5cblx0XHQuZmMtdGl0bGUsXG5cdFx0LmZjLXRpbWUsXG5cdFx0LmFwcHQtcGF0aWVudC1saW5rLFxuXHRcdC50ZWFtLWFwcHQtdGltZSxcblx0XHQudGVhbS1hcHB0LW1ldGEge1xuXHRcdFx0Y29sb3I6ICM4YTkwYTM7XG5cdFx0fVxuXHR9XG5cblx0LmFwcHQtc3RhdHVzLW1pc3NlZCB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMTAsIDM3LCA2NCwgMC4wNykgMCA2cHgsIHRyYW5zcGFyZW50IDZweCAxMnB4KTtcblxuXHRcdC5mYy10aXRsZSxcblx0XHQuYXBwdC1wYXRpZW50LWxpbmsge1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG5cdFx0fVxuXHR9XG5cblx0LyogQWZ0ZXIgdGhlIHN0YXR1c2VzLCBzbyBhIHNlYXJjaCBvciBzdGF0dXMgaGlnaGxpZ2h0IHdpbnMgb3ZlciBcImRvbmVcIi4gKi9cblx0LmFwcHQtZGltbWVkIHtcblx0XHRvcGFjaXR5OiAwLjE4O1xuXHRcdGZpbHRlcjogZ3JheXNjYWxlKDAuNik7XG5cdH1cblxuXHQuYXBwdC1wYXRpZW50LWxpbmsge1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0fVxuXHR9XG5cblx0LmFwcHQtYmFkZ2VzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNHB4O1xuXHRcdG1hcmdpbi10b3A6IDNweDtcblx0fVxuXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogRnVsbENhbGVuZGFyIHRoZW1lXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LmZjIHtcblx0XHRmb250LXNpemU6IDEycHg7XG5cblx0XHR0ZCxcblx0XHR0aCxcblx0XHRocixcblx0XHR0aGVhZCxcblx0XHR0Ym9keSxcblx0XHQuZmMtcm93LFxuXHRcdC5mYy1kaXZpZGVyLFxuXHRcdC5mYy1wb3BvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogI2VlZjFmNztcblx0XHR9XG5cblx0XHR0aC5mYy1kYXktaGVhZGVyIHtcblx0XHRcdHBhZGRpbmc6IDhweCAwIDdweDtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHR9XG5cblx0XHQuZmMtY29sLXdlZWtkYXkge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdH1cblxuXHRcdC5mYy1jb2wtZGF0ZSB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRtaW4td2lkdGg6IDI4cHg7XG5cdFx0XHRoZWlnaHQ6IDI4cHg7XG5cdFx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAxNHB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDI4cHg7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXG5cdFx0XHQmLmlzLXRvZGF5IHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmZjLWNvbC1tb250aCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogM3B4O1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0fVxuXG5cdFx0LmZjLWF4aXMge1xuXHRcdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHR9XG5cblx0XHR0ZC5mYy10b2RheSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMDI1KTtcblx0XHR9XG5cblx0XHQuZmMtdGltZS1ncmlkIC5mYy1zbGF0cyAuZmMtbWlub3IgdGQge1xuXHRcdFx0Ym9yZGVyLXRvcC1zdHlsZTogZG90dGVkO1xuXHRcdFx0Ym9yZGVyLXRvcC1jb2xvcjogI2YxZjNmODtcblx0XHR9XG5cblx0XHQvKiBUaGUgdGVhbSB2aWV3J3MgXCIrIEJvb2sgOTozMCBhbVwiIG1hcmtlciwgb24gdGhlIGRheSBhbmQgd2VlayBncmlkcy4gUGxhY2VkIGJ5IGF0dGFjaEJvb2tpbmdHaG9zdFxuXHRcdCAgIGluIGNhbGVuZGFyQ29udHJvbGxlci5qczsgaXQgbG9va3MgdGhlIHNhbWUgYXMgLnRlYW0tZ2hvc3QuICovXG5cdFx0LmZjLWJvb2stZ2hvc3Qge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHotaW5kZXg6IDM7XG5cdFx0XHRtaW4taGVpZ2h0OiAxOHB4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogNnB4O1xuXHRcdFx0cGFkZGluZzogMCA4cHg7XG5cdFx0XHRib3JkZXI6IDFweCBkYXNoZWQgJG5hdnk7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0XHQvKiBTb2xpZCwgc28gdGhlIHRpbWUgcmVhZHMgb3ZlciBhbiBhcHBvaW50bWVudCdzIGVkZ2UuICovXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4xNSk7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdH1cblxuXHRcdC5mYy1ub25idXNpbmVzcyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZjO1xuXHRcdH1cblxuXHRcdC5mYy1ub3ctaW5kaWNhdG9yLWxpbmUge1xuXHRcdFx0Ym9yZGVyLXRvcC13aWR0aDogMnB4O1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cblx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRsZWZ0OiAtNHB4O1xuXHRcdFx0XHR0b3A6IC01cHg7XG5cdFx0XHRcdHdpZHRoOiA4cHg7XG5cdFx0XHRcdGhlaWdodDogOHB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZmMtbm93LWluZGljYXRvci1hcnJvdyB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblxuXHRcdC5mYy1ldmVudCB7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdGJveC1zaGFkb3c6IGluc2V0IDNweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjE1KSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG5cdFx0fVxuXG5cdFx0LyogQXBwb2ludG1lbnRzIGFyZSBsaWdodCBjYXJkczogYSBzb2Z0IHRpbnQgb2YgdGhlaXIgY29sb3VyIChpbmxpbmUpLCBhIHNvbGlkIGVkZ2UgaW4gdGhlIGZ1bGxcblx0XHQgICBjb2xvdXIgKGJvcmRlci1sZWZ0LCBmcm9tIHRoZSBpbmxpbmUgYm9yZGVyIGNvbG91cikgYW5kIGRhcmsgdGV4dCwgbGlmdGVkIG9mZiB0aGUgZ3JpZCBieSBhXG5cdFx0ICAgZmFpbnQgc2hhZG93IC0gc28gYSBmdWxsIGRheSByZWFkcyBjYWxtbHksIGFuZCB0aGUgc2Vzc2lvbnMgdW5kZXIgaXQgc3RheSB2aXNpYmxlIGFyb3VuZCBpdC4gKi9cblx0XHQuZmMtZXZlbnQuYXBwdCB7XG5cdFx0XHRib3JkZXItd2lkdGg6IDAgMCAwIDRweDtcblx0XHRcdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA0cHggN3B4IDdweCA0cHg7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgxMCwgMzcsIDY0LCAwLjA2KSwgMCAxcHggMnB4IHJnYmEoMTAsIDM3LCA2NCwgMC4wOCk7XG5cdFx0XHR0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgxMCwgMzcsIDY0LCAwLjEpLCAwIDRweCAxMnB4IHJnYmEoMTAsIDM3LCA2NCwgMC4xNik7XG5cdFx0XHR9XG5cblx0XHRcdC5mYy10aXRsZSB7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHR9XG5cblx0XHRcdC5mYy10aW1lIHtcblx0XHRcdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtY29udGVudCB7XG5cdFx0XHRwYWRkaW5nOiAzcHggNXB4IDJweCA4cHg7XG5cdFx0fVxuXG5cdFx0LmZjLXRpbWUtZ3JpZC1ldmVudC5hcHB0IC5mYy1jb250ZW50IHtcblx0XHRcdHBhZGRpbmctbGVmdDogNnB4O1xuXHRcdH1cblxuXHRcdC5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLXRpbWUge1xuXHRcdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0XHRvcGFjaXR5OiAwLjk7XG5cdFx0fVxuXG5cdFx0LyogVGhlIHBpbGxzIGFscmVhZHkgc2l0IG9uIHdoaXRlOyBvbiBhIHBhbGUgY2FyZCB0aGV5IG5lZWQgYW4gb3V0bGluZSB0byBzdGFuZCBvZmYgaXQuICovXG5cdFx0LmZjLWV2ZW50LmFwcHQgLmFwcHQtcGlsbCxcblx0XHQuZmMtZXZlbnQuYXBwdCAuYXBwdC1pbnZvaWNlIHtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDEwLCAzNywgNjQsIDAuMSk7XG5cdFx0fVxuXG5cdFx0LyogQmFkZ2VzIHNpdCBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lciByYXRoZXIgdGhhbiBvbiBhIGxpbmUgb2YgdGhlaXIgb3duLCB3aGljaCBhIDIwLW1pbnV0ZVxuXHRcdCAgIGFwcG9pbnRtZW50IGRvZXMgbm90IGhhdmUuICovXG5cdFx0LmZjLXRpbWUtZ3JpZC1ldmVudCAuYXBwdC1iYWRnZXMge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAzcHg7XG5cdFx0XHRyaWdodDogNHB4O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0ZmxleC13cmFwOiBub3dyYXA7XG5cdFx0XHRnYXA6IDNweDtcblx0XHR9XG5cblx0XHQuZmMtdGltZS1ncmlkLWV2ZW50Lmhhcy1iYWRnZXMgLmZjLWNvbnRlbnQge1xuXHRcdFx0cGFkZGluZy1yaWdodDogODZweDtcblx0XHR9XG5cblx0XHQvKiBBIHdlZWsncyBjb2x1bW5zIGFyZSB0b28gbmFycm93IGZvciB0aGUgd29yZGluZyAtIHRoZSBzdGF0dXMgYmVjb21lcyBhIGNvbG91cmVkIGRvdC4gKi9cblx0XHQuZmMtYWdlbmRhV2Vlay12aWV3IC5mYy10aW1lLWdyaWQtZXZlbnQge1xuXHRcdFx0Ji5oYXMtYmFkZ2VzIC5mYy1jb250ZW50IHtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogMzJweDtcblx0XHRcdH1cblxuXHRcdFx0LmFwcHQtcGlsbCB7XG5cdFx0XHRcdHdpZHRoOiAxMHB4O1xuXHRcdFx0XHRoZWlnaHQ6IDEwcHg7XG5cdFx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDAgMCAycHggJHdoaXRlO1xuXHRcdFx0fVxuXG5cdFx0XHQuYXBwdC1pbnZvaWNlIHtcblx0XHRcdFx0d2lkdGg6IDEzcHg7XG5cdFx0XHRcdGhlaWdodDogMTNweDtcblx0XHRcdFx0Zm9udC1zaXplOiA4cHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmZjLXRpdGxlIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0fVxuXG5cdFx0LmZjLWRheS1ncmlkLWV2ZW50IC5mYy1jb250ZW50IHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiA0cHg7XG5cdFx0XHRwYWRkaW5nOiAycHggNnB4O1xuXG5cdFx0XHQuYXBwdC1iYWRnZXMge1xuXHRcdFx0XHRtYXJnaW46IDAgMCAwIGF1dG87XG5cdFx0XHRcdGZsZXgtd3JhcDogbm93cmFwO1xuXHRcdFx0fVxuXG5cdFx0XHQvKiBNb250aCBjZWxscyBhcmUgdG9vIG5hcnJvdyBmb3IgdGhlIHdvcmRpbmc7IHRoZSBpbnZvaWNlIGRvdCBzdGF5cy4gKi9cblx0XHRcdC5hcHB0LXBpbGwge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5wcmFjdGljZS1kYXkge1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmZjLWhpZ2hsaWdodCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdG9wYWNpdHk6IDAuMTI7XG5cdFx0fVxuXG5cdFx0LyogTW9udGggKi9cblx0XHQuZmMtZGF5LW51bWJlciB7XG5cdFx0XHRwYWRkaW5nOiA0cHggN3B4O1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHR9XG5cblx0XHQuZmMtZGF5LXRvcC5mYy10b2RheSAuZmMtZGF5LW51bWJlciB7XG5cdFx0XHRtYXJnaW46IDNweDtcblx0XHRcdHBhZGRpbmc6IDJweCA4cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblxuXHRcdC5mYy1kYXktdG9wLmZjLW90aGVyLW1vbnRoIC5mYy1kYXktbnVtYmVyIHtcblx0XHRcdGNvbG9yOiAjYzNjOWRhO1xuXHRcdH1cblxuXHRcdC5mYy1tb3JlIHtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQvKiBBZ2VuZGEgKGxpc3QpICovXG5cdFx0LmZjLWxpc3QtdmlldyB7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmZjLWxpc3QtaGVhZGluZyB0ZCB7XG5cdFx0XHRwYWRkaW5nOiA5cHggMTZweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0fVxuXG5cdFx0LmZjLWxpc3QtaGVhZGluZy1tYWluIHtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQuZmMtbGlzdC1oZWFkaW5nLWFsdCB7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRjb2xvcjogIzZhNzM5MTtcblx0XHR9XG5cblx0XHQuZmMtbGlzdC1pdGVtIHRkIHtcblx0XHRcdHBhZGRpbmc6IDEwcHggMTZweDtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0fVxuXG5cdFx0LmZjLWxpc3QtaXRlbTpob3ZlciB0ZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmY2ZmO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdH1cblxuXHRcdC5mYy1saXN0LWl0ZW0tdGltZSB7XG5cdFx0XHR3aWR0aDogMTUwcHg7XG5cdFx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC5mYy1saXN0LWl0ZW0tbWFya2VyIC5mYy1ldmVudC1kb3Qge1xuXHRcdFx0d2lkdGg6IDEycHg7XG5cdFx0XHRoZWlnaHQ6IDEycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA0cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogSWNvbiBsaW5rcywgYXMgb24gdGhlIHdlbGNvbWUgcGFnZSAoX3dlbGNvbWUuY3NzKSAtIG9ubHkgdGhlIHNwYWNpbmcgaW4gdGhlIGRheSBoZWFkaW5nIGRpZmZlcnMgKi9cblx0LmFwcG9pbnRtZW50LWxpc3QtZG93bmxvYWRzIHtcblx0XHRtYXJnaW4tbGVmdDogMTRweDtcblxuXHRcdGEge1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0b3BhY2l0eTogMC43O1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmFwcHQtbGlzdC1jZWxsIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogNnB4IDE2cHg7XG5cblx0XHQuYXBwdC1wYXRpZW50LWxpbmsge1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdH1cblxuXHRcdC5hcHB0LXBpbGwge1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcblx0XHR9XG5cblx0XHQuYXBwdC1pbnZvaWNlIHtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCBjdXJyZW50Q29sb3I7XG5cdFx0fVxuXHR9XG5cblx0LmFwcHQtbGlzdC1tZXRhIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDRweCAxNHB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGNvbG9yOiAjNmE3MzkxO1xuXHR9XG5cblx0LmFwcHQtbWV0YS1pdGVtIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHR9XG5cblx0LmFwcHQtbGlzdC1iYWRnZXMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0fVxuXG5cdC8qIEFuIGFnZW5kYSByb3cgdGhhdCBpcyBkaW1tZWQgb3IgZG9uZSBmYWRlcyBhcyBhIHdob2xlIHJvdy4gKi9cblx0LmZjLWxpc3QtaXRlbS5hcHB0LWRpbW1lZCxcblx0LyogVGhlIGFnZW5kYSdzIGRvdHMgYW5kIHN3YXRjaGVzIGFyZSBpdHMgdHlwZSBrZXkgLSBhIGRvbmUgcm93IGdyZXlzIGl0cyB0ZXh0LCBub3QgaXRzIGNvbG91cnMuICovXG5cdC5mYy1saXN0LWl0ZW0uYXBwdC1zdGF0dXMtZG9uZSB7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRmaWx0ZXI6IG5vbmU7XG5cdH1cblxuXHQuZmMtbGlzdC1pdGVtLmFwcHQtc3RhdHVzLW1pc3NlZCB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogbm9uZTtcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIExlYXZlIGFuZCB0aW1lIGF3YXlcbi8qIE9uZSBsb29rIGV2ZXJ5d2hlcmUgLSByZWQgc3RyaXBlcywgYSBzb2xpZCByZWQgZWRnZSBhbmQgYSBsYWJlbGxlZCBwaWxsIC1cbi8qIHNvIHRpbWUgYXdheSBjYW4gbmV2ZXIgYmUgbWlzdGFrZW4gZm9yIGFuIGFwcG9pbnRtZW50IHR5cGUncyBjb2xvdXIuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4kYXdheS1zdHJpcGVzOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMTcsIDgzLCA3OSwgMC4yKSAwIDhweCwgcmdiYSgyMTcsIDgzLCA3OSwgMC4wNykgOHB4IDE2cHgpO1xuXG4uY2FsZW5kYXItc2hlbGwge1xuXHQvKiBEYXkgYW5kIHdlZWs6IHRoZSBob3VycyBhd2F5ICovXG5cdC5mYyAuZmMtYmdldmVudC51bmF2YWlsLWJsb2NrIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdGJhY2tncm91bmQ6ICRhd2F5LXN0cmlwZXM7XG5cdFx0Ym94LXNoYWRvdzogaW5zZXQgM3B4IDAgMCAkcmVkLWRhbmdlci1hbHQ7XG5cdH1cblxuXHQvKiBTZXNzaW9uczogYSBsaWdodCB3YXNoIG9mIHRoZSB0eXBlJ3MgY29sb3VyIHdpdGggYSBzb2xpZCBlZGdlIChzZXQgaW5saW5lIGZyb20gdGhlIHR5cGUpLCBhbmRcblx0ICAgdGhlIHR5cGUgbmFtZWQgLSBxdWlldGVyIHRoYW4gbGVhdmUsIGJ1dCBuZXZlciBpbiBkb3VidCBhYm91dCB3aGF0IHRoZSB0aW1lIGlzIGZvci4gKi9cblx0LmZjIC5mYy1iZ2V2ZW50LmF2YWlsLWJhbmQge1xuXHRcdG9wYWNpdHk6IDE7XG5cdH1cblxuXHQvKiBUaGUgc2Vzc2lvbidzIG5hbWUsIHBsYWNlZCBpbiBpdHMgZmlyc3QgZnJlZSBzdHJldGNoIChmcmVlTGFiZWxPZmZzZXQgaW4gY2FsZW5kYXJDb250cm9sbGVyKSBzb1xuXHQgICBubyBhcHBvaW50bWVudCBpcyBkcmF3biBvdmVyIGl0LiAqL1xuXHQuZmMgLmJnLWxhYmVsLmJnLWxhYmVsLXNlc3Npb24ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA1cHg7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDEwLCAzNywgNjQsIDAuMTgpO1xuXHR9XG5cblx0LyogQSBtb250aCBjZWxsIGhhcyBubyBmcmVlIHN0cmV0Y2ggdG8gc3BlYWsgb2Y7IHRoZSB0aW50IHN0YXlzLCBhbmQgdGhlIHR5cGUgaXMgbmFtZWQgZWxzZXdoZXJlLiAqL1xuXHQuZmMtbW9udGgtdmlldyAuYmctbGFiZWwtc2Vzc2lvbiB7XG5cdFx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyAvKiBvdmVyIHRoZSBpbmxpbmUgZGlzcGxheSBqUXVlcnkgbGVhdmVzIG9uIGl0ICovXG5cdH1cblxuXHQuYmctc3dhdGNoIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0d2lkdGg6IDhweDtcblx0XHRoZWlnaHQ6IDhweDtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cdH1cblxuXHQvKiBVbmRlciB0aGUgZGF0ZTogdGhlIGRheSdzIHNlc3Npb25zIGJ5IHR5cGUgKi9cblx0LmZjIC5mYy1jb2wtc2Vzc2lvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogM3B4O1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0fVxuXG5cdC5mYyAuZmMtY29sLXNlc3Npb24ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IDFweCA3cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRjdXJzb3I6IGhlbHA7XG5cblx0XHQmLm1vcmUge1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0fVxuXHR9XG5cblx0LmZjIC5iZy1sYWJlbCB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogNHB4O1xuXHRcdGxlZnQ6IDhweDtcblx0XHRyaWdodDogNnB4O1xuXHRcdHotaW5kZXg6IDE7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdG1heC13aWR0aDogbWF4LWNvbnRlbnQ7XG5cdFx0cGFkZGluZzogMnB4IDhweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJGRhbmdlcjtcblx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0Ym94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMTY5LCA2OCwgNjYsIDAuMjUpO1xuXHR9XG5cblx0LyogV2hvbGUgZGF5czogYSBzb2xpZCBiYXIgaW4gdGhlIGFsbC1kYXkgcm93IGFuZCBvbiB0aGUgbW9udGggKi9cblx0LmZjIC5sZWF2ZS1iYW5uZXIge1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgxMzVkZWcsICR3aGl0ZS10cC0xNSAwIDZweCwgdHJhbnNwYXJlbnQgNnB4IDEycHgpO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cblx0XHQuZmMtdGl0bGUsXG5cdFx0LmZjLWNvbnRlbnQge1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cdH1cblxuXHQvKiBBZ2VuZGEgcm93cyAqL1xuXHQuZmMgLmZjLWxpc3QtaXRlbS5sZWF2ZS1iYW5uZXIge1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cblx0XHR0ZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VhO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIgdGQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZiZGVkYjtcblx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHR9XG5cblx0XHQuZmMtZXZlbnQtZG90IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHR9XG5cblx0XHQuZmMtbGlzdC1pdGVtLXRpbWUge1xuXHRcdFx0Y29sb3I6ICRkYW5nZXI7XG5cdFx0fVxuXHR9XG5cblx0LmxlYXZlLWxpc3QtdGl0bGUge1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y29sb3I6ICRkYW5nZXI7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgUHJhY3RpY2UgbGVhdmVcblx0LyogSGF0Y2hlZCBncmV5IHJhdGhlciB0aGFuIHJlZCwgc28gdGltZSB0aGUgd2hvbGUgcHJhY3RpY2UgaXMgY2xvc2VkIHJlYWRzIGRpZmZlcmVudGx5IGZyb20gb25lXG5cdC8qIGNsaW5pY2lhbidzIGxlYXZlLlxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5mYyAuZmMtYmdldmVudC5wcmFjdGljZS1sZWF2ZS1iZyB7XG5cdFx0b3BhY2l0eTogMTtcblx0XHRiYWNrZ3JvdW5kOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDEzNWRlZywgY29sb3IoJHByYWN0aWNlLWxlYXZlLXNsYXRlIGEoMjQlKSkgMCA3cHgsIGNvbG9yKCRwcmFjdGljZS1sZWF2ZS1zbGF0ZSBhKDglKSkgN3B4IDE0cHgpO1xuXHRcdGJveC1zaGFkb3c6IGluc2V0IDAgMnB4IDAgY29sb3IoJHByYWN0aWNlLWxlYXZlLXNsYXRlIGEoNDUlKSksIGluc2V0IDAgLTJweCAwIGNvbG9yKCRwcmFjdGljZS1sZWF2ZS1zbGF0ZSBhKDQ1JSkpO1xuXHR9XG5cblx0LmZjIC5iZy1sYWJlbC5wcmFjdGljZS1sZWF2ZS1sYWJlbCB7XG5cdFx0Y29sb3I6ICRwcmFjdGljZS1sZWF2ZS1pbms7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuXHRcdGJveC1zaGFkb3c6IDAgMXB4IDNweCBjb2xvcigkcHJhY3RpY2UtbGVhdmUtaW5rIGEoMjUlKSk7XG5cdFx0Y3Vyc29yOiBoZWxwO1xuXHR9XG5cblx0LmZjIC5wcmFjdGljZS1sZWF2ZS1iYW5uZXIge1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcHJhY3RpY2UtbGVhdmUtc2xhdGU7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgxMzVkZWcsICR3aGl0ZS10cC0xNSAwIDZweCwgdHJhbnNwYXJlbnQgNnB4IDEycHgpO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXG5cdFx0LmZjLXRpdGxlLFxuXHRcdC5mYy1jb250ZW50IHtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXHR9XG5cblx0LmZjIC5mYy1saXN0LWl0ZW0ucHJhY3RpY2UtbGVhdmUtYmFubmVyIHtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXG5cdFx0dGQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2VlZjFmNztcblx0XHR9XG5cblx0XHQuZmMtZXZlbnQtZG90IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRwcmFjdGljZS1sZWF2ZS1zbGF0ZTtcblx0XHR9XG5cdH1cblxuXHQucHJhY3RpY2UtbGVhdmUtbGlzdC10aXRsZSB7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGNvbG9yOiAkcHJhY3RpY2UtbGVhdmUtaW5rO1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFB1YmxpYyBob2xpZGF5c1xuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5mYyAuaG9saWRheS1iYW5uZXIge1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdGVhbDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdGN1cnNvcjogZGVmYXVsdDtcblxuXHRcdC5mYy10aXRsZSxcblx0XHQuZmMtY29udGVudCB7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblx0fVxuXG5cdC5mYyAuZmMtbGlzdC1pdGVtLmhvbGlkYXktYmFubmVyIHtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXG5cdFx0dGQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJHRlYWwgdGludCg5MCUpKTtcblx0XHR9XG5cblx0XHQmOmhvdmVyIHRkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCR0ZWFsIHRpbnQoODUlKSk7XG5cdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0fVxuXG5cdFx0LmZjLWV2ZW50LWRvdCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdGVhbDtcblx0XHR9XG5cdH1cblxuXHQuaG9saWRheS1saXN0LXRpdGxlIHtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y29sb3I6ICR0ZWFsO1xuXHR9XG5cblx0LmZjIHRoLmZjLWRheS1oZWFkZXIuaXMtaG9saWRheSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJHRlYWwgdGludCg5MCUpKTtcblx0fVxuXG5cdC5mYyAuZmMtY29sLWhvbGlkYXkge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiBtYXgtY29udGVudDtcblx0XHRtYXgtd2lkdGg6IDk1JTtcblx0XHRtYXJnaW46IDRweCBhdXRvIDA7XG5cdFx0cGFkZGluZzogMXB4IDhweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR0ZWFsO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0fVxuXG5cdC50ZWFtLWRheS1ob2xpZGF5IHtcblx0XHRwYWRkaW5nOiA2cHggMTJweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkdGVhbCB0aW50KDkwJSkpO1xuXHRcdGNvbG9yOiAkdGVhbDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHR9XG5cblx0LyogVGhlIGRheSBoZWFkZXIgY2FycmllcyBpdCB0b28sIHNvIGl0IHNob3dzIHdpdGggdGhlIGhvdXJzIGF3YXkgc2Nyb2xsZWQgb3V0IG9mIHZpZXcgKi9cblx0LmZjIHRoLmZjLWRheS1oZWFkZXIuaXMtYXdheSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZkZWNlYTtcblx0fVxuXG5cdC5mYyAuZmMtY29sLWF3YXkge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiBtYXgtY29udGVudDtcblx0XHRtYXgtd2lkdGg6IDk1JTtcblx0XHRtYXJnaW46IDRweCBhdXRvIDA7XG5cdFx0cGFkZGluZzogMXB4IDhweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdH1cblxuXHQvKiBBIGJvb2tpbmcgaW5zaWRlIGl0cyBjbGluaWNpYW4ncyBsZWF2ZSAtIHNvbWVvbmUgbmVlZHMgdG8gbW92ZSBvciBjb3ZlciBpdC4gKi9cblx0LyogUmFpc2VkIGFib3ZlIC5mYyAuZmMtZXZlbnQgYW5kIHRoZSBzdGF0dXMgc2hhZG93cywgd2hpY2ggd291bGQgb3RoZXJ3aXNlIHJlcGxhY2UgdGhlIHJpbmcuICovXG5cdC5mYyAuZmMtZXZlbnQuYXBwdC1jbGFzaCxcblx0LnRlYW0tZGF5IC50ZWFtLWFwcHQuYXBwdC1jbGFzaCB7XG5cdFx0Ym94LXNoYWRvdzogMCAwIDAgMnB4ICRyZWQtZGFuZ2VyLWFsdCwgMCAycHggNnB4IHJnYmEoMjE3LCA4MywgNzksIDAuMzUpO1xuXHR9XG5cblx0LmFwcHQtcGlsbC1jbGFzaCB7XG5cdFx0Z2FwOiAzcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogOXB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSB3ZWVrIHR1cm5zIHBpbGxzIGludG8gZG90czsgYSBjbGFzaCBzdGF5cyBhIHJlZCBkb3Qgd2l0aCBpdHMgbWFyay4gKi9cblx0LmZjIC5mYy1hZ2VuZGFXZWVrLXZpZXcgLmZjLXRpbWUtZ3JpZC1ldmVudCAuYXBwdC1waWxsLmFwcHQtcGlsbC1jbGFzaCxcblx0LnRlYW0tZGF5IC50ZWFtLWFwcHQuaXMtc2hvcnQgLmFwcHQtcGlsbC5hcHB0LXBpbGwtY2xhc2gge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0fVxuXG5cdC5mYy1kYXktZ3JpZC1ldmVudCAuYXBwdC1waWxsLWNsYXNoIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRwYWRkaW5nOiAwIDVweDtcblx0XHRmb250LXNpemU6IDA7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogOXB4O1xuXHRcdH1cblx0fVxuXG5cdC5zdGF0dXMtY2hpcC1jbGFzaCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiByZ2JhKDIxNywgODMsIDc5LCAwLjQ1KTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VhO1xuXHRcdGNvbG9yOiAkZGFuZ2VyO1xuXG5cdFx0c3Ryb25nIHtcblx0XHRcdGNvbG9yOiAkZGFuZ2VyO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0fVxuXG5cdFx0Ji5hY3RpdmUge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXG5cdFx0XHRzdHJvbmcge1xuXHRcdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIFJhaWwgKi9cblx0LmNsaW5pY2lhbi1hd2F5IHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRwYWRkaW5nOiAxcHggN3B4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjE3LCA4MywgNzksIDAuMzUpO1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZkZWNlYTtcblx0XHRjb2xvcjogJGRhbmdlcjtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0fVxuXG5cdC8qIFRlYW0gdmlldyAqL1xuXHQudGVhbS1kYXkge1xuXHRcdC50ZWFtLWF3YXkge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHJpZ2h0OiAwO1xuXHRcdFx0ei1pbmRleDogMTtcblx0XHRcdGJhY2tncm91bmQ6ICRhd2F5LXN0cmlwZXM7XG5cdFx0XHRib3gtc2hhZG93OiBpbnNldCAzcHggMCAwICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdH1cblxuXHRcdC50ZWFtLWF3YXktbGFiZWwge1xuXHRcdFx0cG9zaXRpb246IHN0aWNreTtcblx0XHRcdHRvcDogNTRweDtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdG1heC13aWR0aDogY2FsYygxMDAlIC0gMTZweCk7XG5cdFx0XHRtYXJnaW46IDZweCAwIDAgOHB4O1xuXHRcdFx0cGFkZGluZzogMnB4IDlweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRjb2xvcjogJGRhbmdlcjtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHRib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgxNjksIDY4LCA2NiwgMC4yNSk7XG5cdFx0fVxuXG5cdFx0LnRlYW0tc2Vzc2lvbiB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHR6LWluZGV4OiAwO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LyogSW4gdGhlIHNlc3Npb24ncyBmaXJzdCBmcmVlIHN0cmV0Y2ggKHRvcCBzZXQgaW5saW5lKSwgc28gYXBwb2ludG1lbnRzIG5ldmVyIGNvdmVyIGl0LiBUYWtlcyB0aGVcblx0XHQgICBwb2ludGVyIGZvciBpdHMgdG9vbHRpcDsgYSBjbGljayBvbiBpdCBzdGlsbCBib29rcywgYXMgdGhlIGNvbHVtbiBkb2VzLiAqL1xuXHRcdC50ZWFtLXNlc3Npb24tbGFiZWwge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogOHB4O1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiA1cHg7XG5cdFx0XHRtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpO1xuXHRcdFx0cGFkZGluZzogMnB4IDlweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDEwLCAzNywgNjQsIDAuMTgpO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IGF1dG87XG5cdFx0XHRjdXJzb3I6IGhlbHA7XG5cdFx0fVxuXG5cdFx0LnRlYW0tY29sLWhlYWQuaXMtYXdheSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VhO1xuXHRcdH1cblxuXHRcdC50ZWFtLWNvbC1oZWFkLmlzLWF3YXktYWxsLWRheSAudGVhbS1jb2wtbmFtZSB7XG5cdFx0XHRjb2xvcjogJGRhbmdlcjtcblx0XHR9XG5cblx0XHQudGVhbS1jb2wtYXdheSB7XG5cdFx0XHRmbGV4LXNocmluazogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdHBhZGRpbmc6IDJweCA4cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgVGVhbSB2aWV3IC0gb25lIGNvbHVtbiBwZXIgY2xpbmljaWFuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG50ZWFtLWRheS12aWV3IHtcblx0ZmxleDogMTtcblx0bWluLWhlaWdodDogMDtcblx0ZGlzcGxheTogZmxleDtcbn1cblxuLyogU2FtZSBmb3IgdGhlIGF2YWlsYWJpbGl0eSBlZGl0b3I6IGFzIGEgcGxhaW4gYmxvY2sgaXQgZ3JldyB0byBpdHMgZnVsbCBoZWlnaHQgYW5kIHRoZSBzdGFnZSBjbGlwcGVkXG4gICBpdCwgc28gdGhlIHNpZGUgcGFuZWwgKHdlZWtseSBwYXR0ZXJuLCBhcHBvaW50bWVudCB0eXBlcykgbmV2ZXIgc2Nyb2xsZWQgYW5kIGl0cyBmb290IHdhcyBjdXQgb2ZmLiAqL1xuLmNhbGVuZGFyLXNoZWxsIC5wZXJzb25hbC1zdGFnZSBwZXJzb25hbC1jYWxlbmRhciB7XG5cdGZsZXg6IDE7XG5cdG1pbi1oZWlnaHQ6IDA7XG5cdGRpc3BsYXk6IGZsZXg7XG59XG5cbi5jYWxlbmRhci1zaGVsbCAudGVhbS1kYXkge1xuXHRmbGV4OiAxO1xuXHRtaW4td2lkdGg6IDA7XG5cdG1pbi1oZWlnaHQ6IDA7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cblx0LnRlYW0tZGF5LXNjcm9sbGVyIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0b3ZlcmZsb3c6IGF1dG87XG5cdH1cblxuXHQudGVhbS1kYXktZ3JpZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdHdpZHRoOiBtYXgtY29udGVudDtcblx0XHRtaW4td2lkdGg6IDEwMCU7XG5cdH1cblxuXHQudGVhbS1kYXktaGVhZCB7XG5cdFx0cG9zaXRpb246IHN0aWNreTtcblx0XHR0b3A6IDA7XG5cdFx0ei1pbmRleDogNTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG5cblx0LnRlYW0tZ3V0dGVyLWhlYWQge1xuXHRcdHBvc2l0aW9uOiBzdGlja3k7XG5cdFx0bGVmdDogMDtcblx0XHR6LWluZGV4OiA2O1xuXHRcdGZsZXg6IDAgMCA2NHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0fVxuXG5cdC50ZWFtLWNvbC1oZWFkIHtcblx0XHRmbGV4OiAxIDAgMjEwcHg7XG5cdFx0bWluLXdpZHRoOiAyMTBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0cGFkZGluZzogMTJweCAxMnB4IDEwcHg7XG5cdFx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZWVmMWY3O1xuXG5cdFx0LnRlYW0tY29sLXN3YXRjaCB7XG5cdFx0XHR3aWR0aDogMTBweDtcblx0XHRcdGhlaWdodDogMTBweDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdH1cblxuXHRcdC50ZWFtLWNvbC1uYW1lIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQudGVhbS1jb2wtY291bnQge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRwYWRkaW5nOiAycHggOHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0fVxuXHR9XG5cblx0LnRlYW0tZGF5LWJvZHkge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHR9XG5cblx0LnRlYW0tZ3V0dGVyIHtcblx0XHRwb3NpdGlvbjogc3RpY2t5O1xuXHRcdGxlZnQ6IDA7XG5cdFx0ei1pbmRleDogNDtcblx0XHRmbGV4OiAwIDAgNjRweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG5cblx0LnRlYW0taG91ciB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHJpZ2h0OiA4cHg7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpO1xuXHRcdH1cblx0fVxuXG5cdC8qIEhvdXIgcnVsZXMgZXZlcnkgMTIwcHggYW5kIGhhbGYtaG91ciBydWxlcyBiZXR3ZWVuIC0gMnB4IGEgbWludXRlLCBhcyBQWF9QRVJfTUlOVVRFIGluXG5cdCAgIHRlYW1EYXlWaWV3LmNvbXBvbmVudC5qcy4gRHJhd24gYXMgYSBiYWNrZ3JvdW5kIHNvIGEgbG9uZyBkYXkgY29zdHMgbm8gZXh0cmEgZWxlbWVudHMuICovXG5cdC50ZWFtLWNvbCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGZsZXg6IDEgMCAyMTBweDtcblx0XHRtaW4td2lkdGg6IDIxMHB4O1xuXHRcdGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2VlZjFmNztcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZTZlYWYyIDFweCwgdHJhbnNwYXJlbnQgMXB4KSxcblx0XHRcdGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmM2Y1ZjkgMXB4LCB0cmFuc3BhcmVudCAxcHgpO1xuXHRcdGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMjBweCwgMTAwJSA2MHB4O1xuXHR9XG5cblx0Ji5jYW4tYm9vayAudGVhbS1jb2wge1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxuXG5cdC50ZWFtLWdob3N0IHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRsZWZ0OiA0cHg7XG5cdFx0cmlnaHQ6IDRweDtcblx0XHRoZWlnaHQ6IDIwcHg7XG5cdFx0LyogQWJvdmUgdGhlIGFwcG9pbnRtZW50cyAoei1pbmRleCAyKSBhbmQgc29saWQsIHNvIHRoZSB0aW1lIHJlYWRzIG92ZXIgYW4gYXBwb2ludG1lbnQncyBlZGdlLiAqL1xuXHRcdHotaW5kZXg6IDM7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRwYWRkaW5nOiAwIDhweDtcblx0XHRib3JkZXI6IDFweCBkYXNoZWQgJG5hdnk7XG5cdFx0Ym9yZGVyLXJhZGl1czogNnB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0Ym94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4xNSk7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdH1cblxuXHQvKiBEcmFnIHRvIG1vdmU6IHRoZSBjYXJkIHN0YXlzIHB1dCwgZmFkZWQsIHdoaWxlIGEgZGFzaGVkIHByZXZpZXcgZm9sbG93cyB0aGUgcG9pbnRlciBhbmQgc2F5c1xuXHQgICB0aGUgbmV3IHRpbWUuIERyYXduIGJ5IHRlYW1EYXlWaWV3LmNvbXBvbmVudC5qcyAoc3RhcnREcmFnIC8gbW92ZURyYWcpLiAqL1xuXHQmLmlzLWRyYWdnaW5nIHtcblx0XHRjdXJzb3I6IGdyYWJiaW5nO1xuXHRcdHVzZXItc2VsZWN0OiBub25lO1xuXG5cdFx0LnRlYW0tY29sLFxuXHRcdC50ZWFtLWFwcHQge1xuXHRcdFx0Y3Vyc29yOiBncmFiYmluZztcblx0XHR9XG5cdH1cblxuXHQudGVhbS1hcHB0LmlzLWRyYWctc291cmNlIHtcblx0XHRvcGFjaXR5OiAwLjM1O1xuXHR9XG5cblx0LnRlYW0tZHJhZy1wcmV2aWV3IHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogNHB4O1xuXHRcdHJpZ2h0OiA0cHg7XG5cdFx0ei1pbmRleDogNDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxcHg7XG5cdFx0cGFkZGluZzogNHB4IDdweCA0cHggNnB4O1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCAkbmF2eTtcblx0XHRib3JkZXItbGVmdDogNHB4IHNvbGlkICRuYXZ5O1xuXHRcdGJvcmRlci1yYWRpdXM6IDRweCA3cHggN3B4IDRweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMDgpO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRcdC50ZWFtLWRyYWctdGltZSB7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHR9XG5cblx0XHQudGVhbS1kcmFnLXRpdGxlIHtcblx0XHRcdGNvbG9yOiAjMWYyYTQ0O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR9XG5cdH1cblxuXHQudGVhbS1hcHB0IHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0ei1pbmRleDogMjtcblx0XHRtYXJnaW4tbGVmdDogMnB4O1xuXHRcdHBhZGRpbmc6IDRweCA3cHggNHB4IDZweDtcblx0XHQvKiBUaGUgc2FtZSBsaWdodCBjYXJkIGFzIHRoZSBncmlkJ3MgKHRpbnQgYW5kIGVkZ2UgY29sb3VyIGlubGluZSkuICovXG5cdFx0Ym9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0XHRib3JkZXItcmFkaXVzOiA0cHggN3B4IDdweCA0cHg7XG5cdFx0Y29sb3I6ICMxZjJhNDQ7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMTAsIDM3LCA2NCwgMC4wNiksIDAgMXB4IDJweCByZ2JhKDEwLCAzNywgNjQsIDAuMDgpO1xuXHRcdHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0ei1pbmRleDogMztcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDEwLCAzNywgNjQsIDAuMSksIDAgNHB4IDEycHggcmdiYSgxMCwgMzcsIDY0LCAwLjE2KTtcblx0XHR9XG5cblx0XHQuYXBwdC1waWxsLFxuXHRcdC5hcHB0LWludm9pY2Uge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMTAsIDM3LCA2NCwgMC4xKTtcblx0XHR9XG5cblx0XHQudGVhbS1hcHB0LWhlYWQge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRcdGdhcDogNnB4O1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblxuXHRcdC50ZWFtLWFwcHQtdGltZSB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHR9XG5cblx0XHQuYXBwdC1wYXRpZW50LWxpbmsge1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAjMWYyYTQ0O1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdFx0Jjpob3Zlcixcblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnRlYW0tYXBwdC1tZXRhIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRnYXA6IDhweDtcblx0XHRcdG1hcmdpbi10b3A6IDFweDtcblx0XHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdH1cblxuXHRcdC50ZWFtLWFwcHQtcHJhY3RpY2Uge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiA0cHg7XG5cblx0XHRcdC5hcHB0LXN3YXRjaCB7XG5cdFx0XHRcdHdpZHRoOiA3cHg7XG5cdFx0XHRcdGhlaWdodDogN3B4O1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggJHdoaXRlLXRwLTcwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qIEEgdGVuLW1pbnV0ZSBzbG90IGhhcyByb29tIGZvciBvbmUgbGluZTogc3RhcnQgdGltZSBhbmQgbmFtZSwgd2l0aCB0aGUgc3RhdHVzIHNocnVuayB0byBhXG5cdFx0ICAgZG90IG9uIHRoZSByaWdodC1oYW5kIGVuZCBzbyBpdCBuZXZlciBjb3ZlcnMgdGhlIG5hbWUuICovXG5cdFx0Ji5pcy1zaG9ydCB7XG5cdFx0XHRwYWRkaW5nLXRvcDogMnB4O1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDJweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDM0cHg7XG5cblx0XHRcdC50ZWFtLWFwcHQtZW5kIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblxuXHRcdFx0LmFwcHQtYmFkZ2VzIHtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRyaWdodDogNHB4O1xuXHRcdFx0XHR0b3A6IDUwJTtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHRcdGZsZXgtd3JhcDogbm93cmFwO1xuXHRcdFx0XHRnYXA6IDNweDtcblx0XHRcdH1cblxuXHRcdFx0LmFwcHQtcGlsbCB7XG5cdFx0XHRcdHdpZHRoOiAxMHB4O1xuXHRcdFx0XHRoZWlnaHQ6IDEwcHg7XG5cdFx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDAgMCAycHggJHdoaXRlO1xuXHRcdFx0fVxuXG5cdFx0XHQuYXBwdC1pbnZvaWNlIHtcblx0XHRcdFx0d2lkdGg6IDEycHg7XG5cdFx0XHRcdGhlaWdodDogMTJweDtcblx0XHRcdFx0Zm9udC1zaXplOiA4cHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LnRlYW0tbm93IHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHRoZWlnaHQ6IDA7XG5cdFx0ei1pbmRleDogNDtcblx0XHRib3JkZXItdG9wOiAycHggc29saWQgJHJlZC1kYW5nZXItYWx0O1xuXHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG5cdFx0JjpiZWZvcmUge1xuXHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGxlZnQ6IC00cHg7XG5cdFx0XHR0b3A6IC01cHg7XG5cdFx0XHR3aWR0aDogOHB4O1xuXHRcdFx0aGVpZ2h0OiA4cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0fVxuXHR9XG5cblx0LnRlYW0tZGF5LWVtcHR5IHtcblx0XHRtYXJnaW46IGF1dG87XG5cdFx0cGFkZGluZzogNTRweCAzMnB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblx0XHRcdGZvbnQtc2l6ZTogMzRweDtcblx0XHRcdGNvbG9yOiAjZDNkOWU2O1xuXHRcdH1cblxuXHRcdGg0IHtcblx0XHRcdG1hcmdpbjogMCAwIDhweDtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRtYXgtd2lkdGg6IDUyY2g7XG5cdFx0XHRtYXJnaW46IDAgYXV0bztcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU1O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQXBwb2ludG1lbnQgbW9kYWxcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5hcHBvaW50bWVudC1tb2RhbCB7XG5cdC5tb2RhbC1kaWFsb2cge1xuXHRcdHdpZHRoOiAxMDgwcHg7XG5cdFx0bWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gMzJweCk7XG5cdFx0bWFyZ2luOiA0dmggYXV0bztcblx0fVxuXG5cdC5tb2RhbC1jb250ZW50IHtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMteGw7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRib3gtc2hhZG93OiAkc2hhZG93LWxnO1xuXHR9XG59XG5cbi8qIC5zZXR0aW5ncy1zaGVsbCBsYXlzIGl0cyByYWlsIGFuZCBwYW5lIG91dCBpbiBhIHJvdzsgaGVyZSBpdCBpcyBoZWFkZXIsIGJvZHksIGFjdGlvbiBiYXIuICovXG4uc2V0dGluZ3Mtc2hlbGwuYXBwb2ludG1lbnQtc2hlbGwge1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRtYXgtaGVpZ2h0OiA5MnZoO1xuXG5cdC5hcHBvaW50bWVudC1oZWFkZXIge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdC8qIFJvb20gb24gdGhlIHJpZ2h0IGZvciB0aGUgbW9kYWwncyBjbG9zZSBjcm9zcyAoLmRpc21pc3MpLCB3aGljaCBzaXRzIG92ZXIgdGhlIGNvcm5lci4gKi9cblx0XHRwYWRkaW5nOiAyMHB4IDY0cHggMThweCAyOHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG5cdFx0LmFwcHQtcGlsbCB7XG5cdFx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0XHRwYWRkaW5nOiAzcHggMTBweDtcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XG5cdFx0fVxuXHR9XG5cblx0LmFwcG9pbnRtZW50LWhlYWRlci10ZXh0IHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblxuXHRcdC8qIFRoZSBzYW1lIHBhbGUgbmF2eSBiYW5kIHRoZSBzZXR0aW5ncyBwYW5lcyBvcGVuIHdpdGguICovXG5cdFx0aDMge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdFx0bWFyZ2luOiA0cHggMCAxMHB4O1xuXHRcdFx0cGFkZGluZzogNnB4IDE0cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXHR9XG5cblx0LmFwcG9pbnRtZW50LWV5ZWJyb3cge1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LmFwcG9pbnRtZW50LXdoZW4ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogNnB4IDE4cHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICM0YTU1Njg7XG5cblx0XHRpIHtcblx0XHRcdG1hcmdpbi1yaWdodDogNnB4O1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5zZXR0aW5ncy1wYW5lLWJvZHkge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLWhlaWdodDogMDtcblx0XHRwYWRkaW5nOiAyMHB4IDI4cHggMjRweDtcblx0fVxuXG5cdC5hcHBvaW50bWVudC1ncmlkIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMmZyKSBtaW5tYXgoMCwgMWZyKTtcblx0XHRhbGlnbi1pdGVtczogc3RhcnQ7XG5cdFx0Z2FwOiAyMHB4O1xuXHR9XG5cblx0LmFwcG9pbnRtZW50LXNpZGUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDIwcHg7XG5cdH1cblxuXHQuc2V0dGluZ3MtY2FyZCB7XG5cdFx0cGFkZGluZzogMjBweCAyMnB4O1xuXHR9XG5cblx0LmJvb2tpbmctY2FyZCAuY2FyZC1ib2R5IHtcblx0XHRnYXA6IDE0cHg7XG5cdH1cblxuXHQuZmllbGQtYmxvY2sge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0LmNoaXAtc2VsZWN0IHtcblx0XHRhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuXHR9XG5cblx0ZGF0ZXBpY2tlciB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cblx0XHQvKiBSZWFkLW9ubHkgb25seSBzbyB0aGUgcGlja2VyIGlzIHVzZWQgcmF0aGVyIHRoYW4gdHlwZWQgb3ZlciAtIGl0IGlzIG5vdCBkaXNhYmxlZCwgc28gaXRcblx0XHQgICBzaG91bGQgbm90IGxvb2sgaXQuICovXG5cdFx0LmZvcm0tY29udHJvbFtyZWFkb25seV0ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0fVxuXHR9XG5cblx0LyogQXBwb2ludG1lbnQgdHlwZSBwaWNrZXIgLSB1aS1zZWxlY3QgKHNlbGVjdGl6ZSB0aGVtZSksIHNvIGVhY2ggdHlwZSBjYW4gc2hvdyBpdHMgY29sb3VyIC0gZHJlc3NlZFxuXHQgICBhcyB0aGUgc2V0dGluZ3MgZm9ybSBmaWVsZHMgYXJvdW5kIHRoZW0uICovXG5cdC50eXBlLXBpY2tlciB7XG5cdFx0LnNlbGVjdGl6ZS1pbnB1dCB7XG5cdFx0XHRtaW4taGVpZ2h0OiAzOHB4O1xuXHRcdFx0cGFkZGluZzogOHB4IDEycHg7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblxuXHRcdFx0Ji5mb2N1cyB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMSk7XG5cdFx0XHR9XG5cblx0XHRcdD4gaW5wdXQge1xuXHRcdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnNlbGVjdGl6ZS1kcm9wZG93biB7XG5cdFx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctc207XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdH1cblxuXHRcdC5zZWxlY3RpemUtZHJvcGRvd24tY29udGVudCB7XG5cdFx0XHRtYXgtaGVpZ2h0OiAyNDBweDtcblx0XHRcdHBhZGRpbmc6IDRweCAwO1xuXHRcdH1cblxuXHRcdC51aS1zZWxlY3QtY2hvaWNlcy1yb3cgPiAub3B0aW9uIHtcblx0XHRcdHBhZGRpbmc6IDdweCAxMnB4O1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdH1cblxuXHRcdC8qIFRoZSByb3cgaXRzZWxmIGlzIHBpbm5lZCB3aGl0ZSAoIWltcG9ydGFudCBpbiBfdWktc2VsZWN0LmNzcyksIHNvIHRoZSBoaWdobGlnaHQgZ29lcyBvbiBpdHMgb3B0aW9uLiAqL1xuXHRcdC51aS1zZWxlY3QtY2hvaWNlcy1yb3c6aG92ZXIgPiAub3B0aW9uLFxuXHRcdC51aS1zZWxlY3QtY2hvaWNlcy1yb3cuYWN0aXZlID4gLm9wdGlvbiB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG59XG5cbi8qIFRoZSBwYXRpZW50IHNlYXJjaCwgc2hhcmVkIHdpdGggdGhlIG5ldyB0YXNrIGZvcm0sIHdoaWNoIGZpbmRzIGl0cyBwYXRpZW50IHRoZSBzYW1lIHdheSAqL1xuLnNldHRpbmdzLXNoZWxsLmFwcG9pbnRtZW50LXNoZWxsLFxuLnNldHRpbmdzLXNoZWxsLnRhc2stY3JlYXRlIHtcblx0LyogVGhlIHBhdGllbnQgc2VhcmNoIHN0YW5kcyBpbiBmb3IgdGhlIHRpdGxlLCBzbyBpdCBpcyB3aWRlciBhbmQgaXRzIHRleHQgbGFyZ2VyLiAqL1xuXHQucGF0aWVudC1waWNrZXItZmllbGQge1xuXHRcdGZsZXg6IDEgMSA1MjBweDtcblx0XHRtYXgtd2lkdGg6IDcwMHB4O1xuXHR9XG5cblx0LnBhdGllbnQtcGlja2VyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdGhlaWdodDogNDJweDtcblx0XHRcdHBhZGRpbmctbGVmdDogMzRweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDM0cHg7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0fVxuXG5cdFx0Ji5pcy1vcGVuIC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG5cdFx0XHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcblx0XHR9XG5cdH1cblxuXHQucGF0aWVudC1waWNrZXItaWNvbiB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGxlZnQ6IDEzcHg7XG5cdFx0dG9wOiA1MCU7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0fVxuXG5cdC5wYXRpZW50LXBpY2tlci1jbGVhciB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHJpZ2h0OiA4cHg7XG5cdFx0dG9wOiA1MCU7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdHdpZHRoOiAyNHB4O1xuXHRcdGhlaWdodDogMjRweDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5wYXRpZW50LXJlc3VsdHMge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDEwMCU7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHR6LWluZGV4OiAyMDtcblx0XHRtYXgtaGVpZ2h0OiAyODBweDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogNHB4IDA7XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHRsaXN0LXN0eWxlOiBub25lO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRcdGJvcmRlci10b3A6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogMCAwICRib3JkZXItcmFkaXVzLXNtICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3gtc2hhZG93OiAkc2hhZG93LXNtO1xuXHR9XG5cblx0LnBhdGllbnQtcmVzdWx0IHtcblx0XHRwYWRkaW5nOiA4cHggMTJweDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0Ji5pcy1hY3RpdmUge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQucGF0aWVudC1yZXN1bHRzLW5vdGUge1xuXHRcdHBhZGRpbmc6IDlweCAxMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC8qIFRoZSBzZWFyY2ggYW5kLCBiZXNpZGUgaXQsIHRoZSB3YXkgdG8gcmVnaXN0ZXIgc29tZW9uZSBpdCBkb2VzIG5vdCBmaW5kICovXG5cdC5wYXRpZW50LXBpY2tlci1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cblx0XHQucGF0aWVudC1waWNrZXIge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cdH1cblxuXHQucGF0aWVudC1jcmVhdGUtYnRuIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdGhlaWdodDogNDJweDtcblx0XHRwYWRkaW5nOiAwIDE1cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdH1cblx0fVxuXG5cdC5wYXRpZW50LW9wdGlvbixcblx0LnBhdGllbnQtcmVzdWx0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0LnBhdGllbnQtb3B0aW9uLW5hbWUge1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0LnBhdGllbnQtb3B0aW9uLWRvYiB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0fVxuXG5cdFx0LnBhdGllbnQtb3B0aW9uLWVsc2V3aGVyZSB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0cGFkZGluZzogMXB4IDhweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHRcdFx0Y29sb3I6ICM4YTkwYTM7XG5cdFx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHR9XG5cdH1cbn1cblxuLnNldHRpbmdzLXNoZWxsLmFwcG9pbnRtZW50LXNoZWxsIHtcblx0LnR5cGUtb3B0aW9uIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA5cHg7XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0LnR5cGUtbmFtZSB7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC50eXBlLWR1cmF0aW9uIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAxMnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0fVxuXHR9XG5cblx0LnR5cGUtc3dhdGNoIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0d2lkdGg6IDEycHg7XG5cdFx0aGVpZ2h0OiAxMnB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHRib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSgxMCwgMzcsIDY0LCAwLjEyKTtcblx0fVxuXG5cdHRleHRhcmVhLmZvcm0tY29udHJvbCB7XG5cdFx0bWluLWhlaWdodDogOTZweDtcblx0fVxuXG5cdC5hZGRpdGlvbmFsLW1lc3NhZ2UgLmNvdW50LXJlbWFpbmluZyB7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQvKiBQcm9ncmVzcyB0aWNrcyBhcyBhIHR3by1jb2x1bW4gc2V0IG9mIGNoaXBzLCBlYWNoIGNhcnJ5aW5nIHRoZSB0aW1lIGl0IHdhcyB0aWNrZWQuICovXG5cdC5wcm9ncmVzcy1zdGVwcyB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG5cdFx0Z2FwOiA2cHg7XG5cdH1cblxuXHQucHJvZ3Jlc3Mtc3RlcCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDJweCA4cHg7XG5cdFx0cGFkZGluZzogN3B4IDEwcHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cblx0XHQucHJvZ3Jlc3Mtc3RlcC1uYW1lIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0fVxuXG5cdFx0LnByb2dyZXNzLXN0ZXAtdGltZSB7XG5cdFx0XHRmbGV4LWJhc2lzOiAxMDAlO1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAyMXB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0XHRjb2xvcjogIzZhNzM5MTtcblxuXHRcdFx0JjplbXB0eSB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LnByb2dyZXNzLXN0ZXAtbWlzc2VkLnNlbGVjdGVkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VhO1xuXHRcdGJvcmRlci1jb2xvcjogcmdiYSgyMTcsIDgzLCA3OSwgMC4zNSk7XG5cdFx0Y29sb3I6ICRkYW5nZXI7XG5cdH1cblxuXHQucHJvZ3Jlc3MtZGl2aWRlciB7XG5cdFx0bWFyZ2luOiAxNHB4IDAgOHB4O1xuXHRcdHBhZGRpbmctdG9wOiAxMnB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LnJlbWluZGVyLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRwYWRkaW5nOiA5cHggMDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblxuXHRcdGkge1xuXHRcdFx0d2lkdGg6IDE2cHg7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0LnJlbWluZGVyLWNoYW5uZWwge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblxuXHRcdFx0c21hbGwge1xuXHRcdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnJlbWluZGVyLXRpbWUge1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0fVxuXHR9XG5cblx0LyogSW52b2ljZXM6IGVhY2ggYSBzdW1tYXJ5IHJvdyB3aXRoIGl0cyBiaWxsaW5nIGl0ZW1zIGJlbmVhdGggaXQgKi9cblx0Lmludm9pY2UtYmxvY2sge1xuXHRcdHBhZGRpbmc6IDEwcHggMDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcblxuXHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdGJvcmRlci1ib3R0b206IG5vbmU7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0XHR9XG5cblx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdHBhZGRpbmctdG9wOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0fVxuXG5cdC5pbnZvaWNlLWl0ZW1zIHtcblx0XHRtYXJnaW46IDhweCAwIDAgMTJweDtcblx0XHRwYWRkaW5nLWxlZnQ6IDEycHg7XG5cdFx0Ym9yZGVyLWxlZnQ6IDJweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cblx0XHQmOmVtcHR5IHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0Ji5pcy1jYW5jZWxsZWQge1xuXHRcdFx0b3BhY2l0eTogMC41NTtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1pdGVtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDhweDtcblx0XHRwYWRkaW5nOiAzcHggMDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdH1cblxuXHQuaW52b2ljZS1pdGVtLWNvZGUge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHBhZGRpbmc6IDAgNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDRweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRsaW5lLWhlaWdodDogMS42O1xuXHR9XG5cblx0Lmludm9pY2UtaXRlbS1kZXNjIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQuaW52b2ljZS1pdGVtLXF0eSxcblx0Lmludm9pY2UtaXRlbS1kaXNjb3VudCB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQuaW52b2ljZS1pdGVtLWFtb3VudCB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0bWluLXdpZHRoOiA2NHB4O1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdH1cblxuXHQuaW52b2ljZS1pdGVtLXN1bW1hcnkge1xuXHRcdG1hcmdpbi10b3A6IDNweDtcblx0XHRwYWRkaW5nLXRvcDogNXB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdH1cblxuXHQuaW52b2ljZS1pdGVtcy1ub3RlIHtcblx0XHRwYWRkaW5nOiAycHggMDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQvKiBYZXJvJ3MgcmVmZXJlbmNlLCBvbiBvbmUgbGluZSBhYm92ZSB0aGUgaXRlbXM7IHRoZSB3aG9sZSBvZiBpdCBvbiBob3ZlciAqL1xuXHQuaW52b2ljZS1yZWZlcmVuY2Uge1xuXHRcdHBhZGRpbmc6IDJweCAwO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdHNwYW4ge1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2Utc3RhdHVzIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRwYWRkaW5nOiAycHggOXB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQuaW52b2ljZS1zdGF0dXMtZHJhZnQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0Y29sb3I6ICM2YTczOTE7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG5cblx0Lmludm9pY2Utc3RhdHVzLWF3YWl0aW5nIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWhpZ2gtYmc7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJHdhcm5pbmctYm9yZGVyO1xuXHR9XG5cblx0Lmludm9pY2Utc3RhdHVzLW92ZXJkdWUge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGVjZWE7XG5cdFx0Y29sb3I6ICRkYW5nZXI7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgyMTcsIDgzLCA3OSwgMC4zNSk7XG5cdH1cblxuXHQuaW52b2ljZS1zdGF0dXMtcGFpZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmVlbi10cC0zMDtcblx0fVxuXG5cdC5pbnZvaWNlLXN0YXR1cy1jYW5jZWxsZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG5cblx0Lmludm9pY2UtZGF0ZXMge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGNvbG9yOiAjODc4YmEwO1xuXHR9XG5cblx0Lmludm9pY2UtdG90YWwge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXG5cdFx0Ji5pcy1jYW5jZWxsZWQge1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1jaGlwLW91dHN0YW5kaW5nIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWhpZ2gtYmc7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkd2FybmluZy1ib3JkZXI7XG5cdH1cblxuXHQuaW52b2ljZS1jaGlwLXBhaWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0xMDtcblx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHRib3JkZXItY29sb3I6ICRncmVlbi10cC0zMDtcblx0fVxuXG5cdC5yZW1pbmRlci1lbXB0eSB7XG5cdFx0cGFkZGluZzogNHB4IDA7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LnJlbWluZGVyLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDZweDtcblx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXHR9XG5cblx0LmRldGFpbC1yb3cgLmRldGFpbC1sYWJlbCB7XG5cdFx0ZmxleC1iYXNpczogMTEwcHg7XG5cdFx0d2lkdGg6IDExMHB4O1xuXHR9XG5cblx0LnNldHRpbmdzLWFjdGlvbi1iYXIge1xuXHRcdHBhZGRpbmc6IDEycHggMjhweDtcblxuXHRcdC5hY3Rpb24tYmFyLXN0YXJ0IHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogMThweDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgcGF0aWVudCdzIG5hbWUgYW5kIHRoZSB3YXkgdG8gdGhlaXIgZGFzaGJvYXJkLCBzaWRlIGJ5IHNpZGUgKi9cblx0LmFwcG9pbnRtZW50LXRpdGxlLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luOiA0cHggMCAxMHB4O1xuXG5cdFx0aDMge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5wYXRpZW50LWxpbmstYnRuIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdHBhZGRpbmc6IDVweCAxM3B4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHR9XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0LyogRGVsZXRlOiBhIGRlbGliZXJhdGUsIG91dGxpbmVkIGJ1dHRvbiAtIHRoZSBzYW1lIHNoYXBlIGFzIENhbmNlbCBhbmQgU2F2ZSAtIHRoYXQgYXNrcyBpbiBwbGFjZS4gKi9cblx0LnNldHRpbmdzLWFjdGlvbi1iYXIgLmJ0bi5idG4tZGVsZXRlIHtcblx0XHR3aWR0aDogYXV0bztcblx0XHRwYWRkaW5nOiA0cHggMThweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxNywgODMsIDc5LCAwLjQ1KTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA0cHg7XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VhO1xuXHRcdFx0Y29sb3I6ICRkYW5nZXI7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC8qIEFjcm9zcyB0aGUgd2hvbGUgYmFyIHdoaWxlIGl0IGlzIGFza2VkOiB0aGUgcXVlc3Rpb24gKGFuZCBhbnkgY2hvaWNlcykgb24gdGhlIGxlZnQsIHRoZSBhbnN3ZXJzXG5cdCAgIHRvZ2V0aGVyIG9uIHRoZSByaWdodCAtIHNvIGlmIHRoZSBiYXIgaXMgdG9vIG5hcnJvdywgdGhlIHBhaXIgd3JhcHMgYXMgb25lLiAqL1xuXHQuY29uZmlybS1kZWxldGUge1xuXHRcdGZsZXg6IDE7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJGRhbmdlcjtcblxuXHRcdC5jb25maXJtLWRlbGV0ZS10ZXh0IGkge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA0cHg7XG5cdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdH1cblx0fVxuXG5cdC8qIERlbGV0ZSBzd2FwcyB0aGUgYmFyJ3MgYnV0dG9ucyB3aXRoIG5nLWlmLCBhbmQgbmdBbmltYXRlIGhvbGRzIGEgbGVhdmluZyBlbGVtZW50IG9uIHNjcmVlbiBmb3IgYXNcblx0ICAgbG9uZyBhcyBpdHMgQ1NTIHRyYW5zaXRpb24gcnVucyAoMC4zcyBvbiAuYnRuKSAtIHNvIGZvciBhIG1vbWVudCBib3RoIHNldHMgc2hvd2VkLiBObyB0cmFuc2l0aW9uXG5cdCAgIHdoaWxlIGVudGVyaW5nIG9yIGxlYXZpbmcgbWFrZXMgdGhlIHN3YXAgaW5zdGFudDsgIWltcG9ydGFudCB0byBiZWF0IHRoZSBidXR0b25zJyBvd24gdHJhbnNpdGlvbi4gKi9cblx0LnNldHRpbmdzLWFjdGlvbi1iYXIgLm5nLWVudGVyLFxuXHQuc2V0dGluZ3MtYWN0aW9uLWJhciAubmctbGVhdmUge1xuXHRcdHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcblx0fVxuXG5cdC5jb25maXJtLWRlbGV0ZS1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0fVxuXG5cdC5zZXR0aW5ncy1hY3Rpb24tYmFyIC5idG4uYnRuLWNvbmZpcm0tZGVsZXRlIHtcblx0XHR3aWR0aDogYXV0bztcblx0XHRwYWRkaW5nOiA0cHggMThweDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGRhbmdlcjtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXG5cdFx0JjpkaXNhYmxlZCB7XG5cdFx0XHRvcGFjaXR5OiAwLjY7XG5cdFx0fVxuXHR9XG5cblx0LnNldHRpbmdzLWFjdGlvbi1iYXIgLmNvbmZpcm0tZGVsZXRlIC5idG4uYnRuLWNhbmNlbCB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBBdmFpbGFiaWxpdHkgKHBlcnNvbmFsQ2FsZW5kYXIpXG4vKiBBIHNpZGUgcGFuZWwgdGhhdCBzYXlzIHdoYXQgdGhlIGF2YWlsYWJpbGl0eSBhbW91bnRzIHRvIC0gdGhlIHdlZWtseVxuLyogcGF0dGVybiBhbmQgd2hhdCBpcyBjb21pbmcgdXAgLSBiZXNpZGUgYSBGdWxsQ2FsZW5kYXIgNCB3ZWVrLiBBdmFpbGFibGVcbi8qIHRpbWUgaXMgYSB0aW50IG9mIGl0cyB0eXBlJ3MgY29sb3VyOyBsZWF2ZSBpcyBzdHJpcGVkIHJlZC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5jYWxlbmRhci1zaGVsbCAuYXZhaWxhYmlsaXR5IHtcblx0ZmxleDogMTtcblx0bWluLWhlaWdodDogMDtcblx0ZGlzcGxheTogZmxleDtcblxuXHQuYXZhaWxhYmlsaXR5LXNpZGUge1xuXHRcdGZsZXg6IDAgMCAyNjhweDtcblx0XHR3aWR0aDogMjY4cHg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMjJweDtcblx0XHRwYWRkaW5nOiAxOHB4IDE0cHggMThweCAxOHB4O1xuXHRcdGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlZWYxZjc7XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblx0fVxuXG5cdC5hdmFpbGFiaWxpdHktd2hvLWxhYmVsLFxuXHQuYXZhaWxhYmlsaXR5LXNlY3Rpb24tdGl0bGUge1xuXHRcdG1hcmdpbjogMCAwIDZweDtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC5hdmFpbGFiaWxpdHktd2hvLW5hbWUge1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRsaW5lLWhlaWdodDogMS4yNTtcblx0fVxuXG5cdC5hdmFpbGFiaWxpdHktd2hvLXByYWN0aWNlIHtcblx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAjODc4YmEwO1xuXHR9XG5cblx0LmF2YWlsYWJpbGl0eS1oaW50IHtcblx0XHRtYXJnaW46IDAgMCAxMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjQ1O1xuXHRcdGNvbG9yOiAjODc4YmEwO1xuXHR9XG5cblx0LmF2YWlsYWJpbGl0eS1wYWxldHRlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiA2cHg7XG5cdH1cblxuXHQvKiBBbHNvIC5mYy1ldmVudCAtIHRoZSBwYWxldHRlJ3MgRHJhZ2dhYmxlIGtleXMgb24gaXQgLSBzbyBGdWxsQ2FsZW5kYXIncyBvd24gZXZlbnQgbG9vayBpcyB1bmRvbmUuICovXG5cdC5wYWxldHRlLWl0ZW0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDlweDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogN3B4IDEwcHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGN1cnNvcjogZ3JhYjtcblx0XHR0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0Ym94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4xMik7XG5cdFx0fVxuXG5cdFx0JjphY3RpdmUge1xuXHRcdFx0Y3Vyc29yOiBncmFiYmluZztcblx0XHR9XG5cdH1cblxuXHQucGFsZXR0ZS1zd2F0Y2gge1xuXHRcdHdpZHRoOiAxMHB4O1xuXHRcdGhlaWdodDogMTBweDtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdH1cblxuXHQucGFsZXR0ZS1sZWF2ZSAucGFsZXR0ZS1zd2F0Y2gge1xuXHRcdGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAkcmVkLWRhbmdlci1hbHQgMCAycHgsICNmNmM4YzYgMnB4IDRweCk7XG5cdH1cblxuXHQucGFsZXR0ZS1ncmlwIHtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICNjM2M5ZGE7XG5cdH1cblxuXHQub3ZlcnZpZXctaXRlbSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWFyZ2luLWJvdHRvbTogMnB4O1xuXHRcdHBhZGRpbmc6IDdweCA4cHg7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cdFx0fVxuXHR9XG5cblx0Lm92ZXJ2aWV3LWRheSB7XG5cdFx0ZmxleDogMCAwIDMwcHg7XG5cdFx0cGFkZGluZy10b3A6IDFweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG5cblx0Lm92ZXJ2aWV3LWJvZHkge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRtaW4td2lkdGg6IDA7XG5cdH1cblxuXHQub3ZlcnZpZXctbmFtZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0Lm92ZXJ2aWV3LXN3YXRjaCB7XG5cdFx0d2lkdGg6IDhweDtcblx0XHRoZWlnaHQ6IDhweDtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRtYXJnaW4tcmlnaHQ6IDdweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cblx0XHQmLmlzLWxlYXZlIHtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDJweDtcblx0XHRcdGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAkcmVkLWRhbmdlci1hbHQgMCAycHgsICNmNmM4YzYgMnB4IDRweCkgIWltcG9ydGFudDsgLyogb3ZlciB0aGUgaW5saW5lIGNvbG91ciwgd2hpY2ggaXMgdGhlIHNvbGlkIGtleSAqL1xuXHRcdH1cblx0fVxuXG5cdC5vdmVydmlldy1tZXRhIHtcblx0XHRtYXJnaW4tdG9wOiAxcHg7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGNvbG9yOiAjODc4YmEwO1xuXHR9XG5cblx0LmF2YWlsYWJpbGl0eS1lbXB0eSB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDAgOHB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRsaW5lLWhlaWdodDogMS40NTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC5hdmFpbGFiaWxpdHktbWFpbiB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAxNnB4IDE4cHggMTRweDtcblx0fVxuXG5cdC5hdmFpbGFiaWxpdHkta2V5IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGNvbG9yOiAjNmE3MzkxO1xuXG5cdFx0c3BhbiB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDZweDtcblx0XHR9XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGNvbG9yOiAjNmE3MzkxO1xuXHRcdH1cblx0fVxuXG5cdC5rZXktc3dhdGNoIHtcblx0XHR3aWR0aDogMTRweDtcblx0XHRoZWlnaHQ6IDEycHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHR9XG5cblx0LmtleS1zbG90IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMTYpO1xuXHRcdGJveC1zaGFkb3c6IGluc2V0IDNweCAwIDAgJG5hdnk7XG5cdH1cblxuXHQua2V5LWxlYXZlIHtcblx0XHRiYWNrZ3JvdW5kOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMTcsIDgzLCA3OSwgMC4yNSkgMCAzcHgsICNmZGVjZWEgM3B4IDZweCk7XG5cdFx0Ym94LXNoYWRvdzogaW5zZXQgM3B4IDAgMCAkcmVkLWRhbmdlci1hbHQ7XG5cdH1cblxuXHQuYXZhaWxhYmlsaXR5LWNhbGVuZGFyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4taGVpZ2h0OiAwO1xuXHR9XG5cblx0LyogRnVsbENhbGVuZGFyIDQgZXZlbnRzICovXG5cdC5mYyAuYXZhaWwtc2xvdCxcblx0LmZjIC5hdmFpbC1sZWF2ZSB7XG5cdFx0Ym9yZGVyLXdpZHRoOiAwIDAgMCAzcHg7XG5cdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRmb250LXNpemU6IDExLjVweDtcblxuXHRcdC5mYy1jb250ZW50IHtcblx0XHRcdHBhZGRpbmc6IDJweCA0cHggMXB4IDVweDtcblx0XHR9XG5cblx0XHQuZmMtdGl0bGUge1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cdH1cblxuXHQuZmMgLmF2YWlsLWxlYXZlIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMTcsIDgzLCA3OSwgMC4xKSAwIDZweCwgdHJhbnNwYXJlbnQgNnB4IDEycHgpO1xuXHR9XG5cblx0LmF2YWlsLXJlcGVhdC1pY29uIHtcblx0XHRtYXJnaW4tbGVmdDogNXB4O1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRvcGFjaXR5OiAwLjY7XG5cdH1cblxuXHQuZmMgLmZjLW1pcnJvciB7XG5cdFx0b3BhY2l0eTogMC44NTtcblx0fVxuXG5cdC8qIFJvb20gZm9yIHRoZSBhbGwtZGF5IHJvdywgd2hlcmUgd2hvbGUgZGF5cyBvZiBsZWF2ZSBzaXQsIGV2ZW4gd2hlbiBpdCBpcyBlbXB0eS4gKi9cblx0LmZjIC5mYy1kYXktZ3JpZCB7XG5cdFx0bWluLWhlaWdodDogMS44cmVtO1xuXHR9XG59XG5cbi8qIFRoZSBlZGl0b3IgKi9cbi5hdmFpbGFiaWxpdHktbW9kYWwgLm1vZGFsLWRpYWxvZyB7XG5cdHdpZHRoOiA2MjBweDtcbn1cblxuLnNldHRpbmdzLXNoZWxsLmFwcG9pbnRtZW50LXNoZWxsIHtcblx0LmF2YWlsYWJpbGl0eS1maWVsZHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDE0cHg7XG5cdH1cblxuXHQuYXBwb2ludG1lbnQtaGVhZGVyLXRleHQgaDMuaXMtbGVhdmUge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGVjZWE7XG5cdFx0Y29sb3I6ICRkYW5nZXI7XG5cdH1cblxuXHQua2luZC1zd2l0Y2gge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuXHRcdGdhcDogMTBweDtcblx0fVxuXG5cdC5raW5kLW9wdGlvbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0cGFkZGluZzogMTJweCAxNHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdD4gaSB7XG5cdFx0XHRtYXJnaW4tdG9wOiAxcHg7XG5cdFx0XHRmb250LXNpemU6IDE3cHg7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHR9XG5cblx0XHRzdHJvbmcge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHR9XG5cblx0XHRzbWFsbCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAjY2JkNWUwO1xuXHRcdH1cblxuXHRcdCYuc2VsZWN0ZWQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cblx0XHRcdD4gaSxcblx0XHRcdHN0cm9uZyB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLmtpbmQtbGVhdmUuc2VsZWN0ZWQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiByZ2JhKDIxNywgODMsIDc5LCAwLjQ1KTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGVjZWE7XG5cblx0XHRcdD4gaSxcblx0XHRcdHN0cm9uZyB7XG5cdFx0XHRcdGNvbG9yOiAkZGFuZ2VyO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5mb3JtLWNvbnRyb2wubmctaW52YWxpZC1taW51dGUtc3RlcCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAjZTA3OTZmO1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDIyNCwgMTIxLCAxMTEsIDAuMTUpO1xuXHR9XG5cblx0LnJhbmdlLWlucHV0IHtcblx0XHRtYXgtd2lkdGg6IDMyMHB4O1xuXHR9XG5cblx0LmZpZWxkLW9wdGlvbmFsIHtcblx0XHRtYXJnaW4tbGVmdDogNHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwO1xuXHRcdGNvbG9yOiAjYzNjOWRhO1xuXHR9XG5cblx0LmNvbmZpcm0tZGVsZXRlIC5jaGlwLXNlbGVjdCB7XG5cdFx0cGFkZGluZzogNXB4IDExcHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBSZXNwb25zaXZlXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XG5cdC5jYWxlbmRhci1zaGVsbCAuY2FsZW5kYXItc2VhcmNoIHtcblx0XHR3aWR0aDogMTgwcHg7XG5cdH1cbn1cblxuLyogQmVsb3cgdGhpcyB0aGUgc2V0dGluZ3Mgc2hlbGwgdHVybnMgaXRzIHJhaWwgaW50byBhIHN0cmlwIGFsb25nIHRoZSB0b3AgKHNlZSBfc2V0dGluZ3MuY3NzKS4gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuXHQuY2FsZW5kYXItc2hlbGwge1xuXHRcdC8qIFRoZSByYWlsJ3MgZmxleC1iYXNpcyBpcyBpdHMgd2lkdGggYmVzaWRlIHRoZSBwYW5lOyBzdGFja2VkIGFib3ZlIGl0LCBpdCB3b3VsZCBiZWNvbWUgYSBoZWlnaHQuICovXG5cdFx0LmNhbGVuZGFyLXJhaWwge1xuXHRcdFx0ZmxleDogMCAwIGF1dG87XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cblx0XHQubWluaS1tb250aCxcblx0XHQubGVnZW5kLWl0ZW0sXG5cdFx0LnNldHRpbmdzLW5hdi1mb290ZXIge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQuY2FsZW5kYXItbWFpbiB7XG5cdFx0XHRwYWRkaW5nOiAxMnB4O1xuXHRcdH1cblxuXHRcdC5zdGF0dXMtdG90YWwge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0fVxuXG5cdFx0LyogQ2xpY2sgb3IgZHJhZyBvbiB0aGUgY2FsZW5kYXIgc3RpbGwgYWRkczsgdGhlIG92ZXJ2aWV3IGdpdmVzIHdheSB0byB0aGUgd2Vlay4gKi9cblx0XHQuYXZhaWxhYmlsaXR5IC5hdmFpbGFiaWxpdHktc2lkZSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblxuXHRcdC5hdmFpbGFiaWxpdHkta2V5IHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0LnNldHRpbmdzLXNoZWxsLmFwcG9pbnRtZW50LXNoZWxsIHtcblx0XHQuYXBwb2ludG1lbnQtZ3JpZCB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblx0XHR9XG5cblx0XHQuYXBwb2ludG1lbnQtaGVhZGVyLFxuXHRcdC5zZXR0aW5ncy1wYW5lLWJvZHksXG5cdFx0LnNldHRpbmdzLWFjdGlvbi1iYXIge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAxNnB4O1xuXHRcdFx0cGFkZGluZy1yaWdodDogMTZweDtcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBSb29tcyAob24gYXBwb2ludG1lbnRzLCBpbiB0aGUgcmFpbCwgYW5kIGluIHRoZSBib29raW5nIGRpYWxvZylcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5jYWxlbmRhci1zaGVsbCB7XG5cdC8qIFRoZSByb29tIGFuIGFwcG9pbnRtZW50IGlzIGluLCBvbiBhIGxpbmUgdW5kZXIgdGhlIHBhdGllbnQncyBuYW1lLiAqL1xuXHQuZmMgLmFwcHQtcm9vbSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNHB4O1xuXHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxuXHRcdC5hcHB0LXN3YXRjaCB7XG5cdFx0XHR3aWR0aDogN3B4O1xuXHRcdFx0aGVpZ2h0OiA3cHg7XG5cdFx0fVxuXHR9XG5cblx0Lm5vdGljZS1hY3Rpb25zIHtcblx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cdH1cbn1cblxuLyogVHdvIGFwcG9pbnRtZW50cyBpbiBvbmUgcm9vbSBhdCBvbmNlIC0gYW4gYW1iZXIgcmluZywgc28gaXQgaXMgbm90IG1pc3Rha2VuIGZvciB0aGUgcmVkIG9mIGxlYXZlLiAqL1xuLmNhbGVuZGFyLXNoZWxsIC5mYyAuZmMtZXZlbnQuYXBwdC1yb29tLWNsYXNoLFxuLnRlYW0tZGF5IC50ZWFtLWFwcHQuYXBwdC1yb29tLWNsYXNoIHtcblx0Ym94LXNoYWRvdzogMCAwIDAgMnB4ICR5ZWxsb3ctY3RhLCAwIDJweCA2cHggcmdiYSgyNTUsIDE3MSwgMCwgMC4zNSk7XG59XG5cbi50ZWFtLWRheSAudGVhbS1hcHB0LXJvb20ge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiA0cHg7XG5cblx0LmFwcHQtc3dhdGNoIHtcblx0XHR3aWR0aDogN3B4O1xuXHRcdGhlaWdodDogN3B4O1xuXHR9XG59XG5cbi5zZXR0aW5ncy1zaGVsbC5hcHBvaW50bWVudC1zaGVsbCB7XG5cdC8qIFdoZXRoZXIgZWFjaCByb29tIGlzIGZyZWUgYXQgdGhlIHRpbWUgcGlja2VkLCBhdCB0aGUgcmlnaHQgb2YgaXRzIHJvdyBpbiB0aGUgcGlja2VyLiAqL1xuXHQucm9vbS1zdGF0ZSB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0cGFkZGluZy1sZWZ0OiAxMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0Ji5yb29tLWZyZWUge1xuXHRcdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0fVxuXG5cdFx0Ji5yb29tLWJ1c3kge1xuXHRcdFx0Y29sb3I6ICRkYW5nZXI7XG5cdFx0fVxuXHR9XG5cblx0LnJvb20tcGlja2VyLmlzLWJ1c3kgLnNlbGVjdGl6ZS1pbnB1dCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkeWVsbG93LWN0YTtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyNTUsIDE3MSwgMCwgMC4xNSk7XG5cdH1cblxuXHQucm9vbS1idXN5LW5vdGljZSB7XG5cdFx0LnJvb20tc3VnZ2VzdGlvbnMge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRcdGdhcDogNnB4O1xuXHRcdFx0bWFyZ2luOiAxMHB4IDAgOHB4O1xuXHRcdH1cblxuXHRcdC5jaGlwLXNlbGVjdCB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDZweDtcblx0XHR9XG5cblx0XHQucm9vbS1kb3VibGUtYm9vayB7XG5cdFx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0fVxuXHR9XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cdC5jYWxlbmRhci1zaGVsbCAuY2FsZW5kYXItbG9hZGluZyBzcGFuIHtcblx0XHRsZWZ0OiAwO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG9wYWNpdHk6IDAuNDtcblx0XHRhbmltYXRpb246IG5vbmU7XG5cdH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUGF0aWVudCBGb3JtcyBidWlsZGVyIChzdGFmZi1mYWNpbmcgbW9kYWwpXG4vKiBFdmVyeXRoaW5nIGhlcmUgaXMgc2NvcGVkIHRvIGAuc2V0dGluZ3Mtc2hlbGwucGF0aWVudC1mb3Jtc2Agc28gaXQgc2l0c1xuLyogb24gdG9wIG9mIF9zZXR0aW5ncy5jc3MgcmF0aGVyIHRoYW4gYmVzaWRlIGl0IC0gdGhlIGxlZnQgcmFpbCwgcGFuZSBib2R5LFxuLyogYWN0aW9uIGJhciwgY2FyZHMsIGNoaXBzIGFuZCBmb3JtIGNvbnRyb2xzIGFsbCBjb21lIGZyb20gdGhlcmUuIFRoaXMgZmlsZVxuLyogb25seSBhZGRzIHdoYXQgdGhlIGZvcm0gYnVpbGRlciBuZWVkcyB0aGF0IHRoZSBzZXR0aW5ncyBzY3JlZW5zIGRvIG5vdDpcbi8qIHRoZSBxdWVzdGlvbiBjYXJkcywgdGhlIHByZXZpZXcgYmxvY2tzIGFuZCB0aGUgYW5zd2VyIGxpc3QuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEVudGVyIG9ubHkgLSBzZWUgLnBmLXBhbmUgYmVsb3cgZm9yIHdoeSB0aGUgbGVhdmUgcGhhc2UgaGFzIHRvIHN0YXkgYmFyZS4gKi9cbkBrZXlmcmFtZXMgcGYtcGFuZS1pbiB7XG5cdGZyb20ge1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDZweCk7XG5cdH1cblxuXHR0byB7XG5cdFx0b3BhY2l0eTogMTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG5cdH1cbn1cblxuLyogTm8gbWQtZGlhbG9nLWFjdGlvbnM6IHRoZSB0b29sYmFyJ3MgWCBkaXNtaXNzZXMsIGFuZCBzZW5kaW5nIGJlbG9uZ3Mgd2l0aCB0aGVcbiAgIHByZXZpZXcgb2YgdGhlIHRoaW5nIGJlaW5nIHNlbnQgcmF0aGVyIHRoYW4gaW4gYSBmb290ZXIgdGhhdCBzaXRzIHVuZGVyIHRoZVxuICAgYnVpbGRlciBhbmQgdGhlIGFuc3dlcnMgbGlzdCB0b28uICovXG4ucGF0aWVudC1mb3Jtcy1kaWFsb2cge1xuXHRtaW4td2lkdGg6IDgyJTtcblx0d2lkdGg6IDgyJTtcblx0aGVpZ2h0OiA4OHZoO1xuXHRtYXgtaGVpZ2h0OiA5MnZoO1xuXHRwYWRkaW5nOiAwO1xuXHRib3JkZXItdG9wLXdpZHRoOiAwO1xufVxuXG4uc2V0dGluZ3Mtc2hlbGwucGF0aWVudC1mb3JtcyB7XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIExlZnQgcmFpbFxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5zZXR0aW5ncy1uYXYge1xuXHRcdGZsZXg6IDAgMCAyODhweDtcblx0XHR3aWR0aDogMjg4cHg7XG5cdH1cblxuXHQvKiBUZW1wbGF0ZSBuYW1lcyBydW4gbG9uZywgc28gdGhlIGdyb3VwIHRpdGxlIGdldHMgdGhlIGZ1bGwgd2lkdGggYW5kXG5cdCAgIGVsbGlwc2VzIHJhdGhlciB0aGFuIHdyYXBwaW5nIGludG8gdGhlIGNoZXZyb24uICovXG5cdC5zZXR0aW5ncy1uYXYtZ3JvdXAtdGl0bGUge1xuXHRcdC5uYXYtZ3JvdXAtbmFtZSB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wMWVtO1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblxuXHRcdCY6bm90KC5jb2xsYXBzZWQpIC5uYXYtZ3JvdXAtbmFtZSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIFwiQ3JlYXRlIE5ldyBUZW1wbGF0ZVwiIGVudHJ5IGlzIGFuIGFjdGlvbiwgbm90IGEgc2VjdGlvbiwgc28gaXQgcmVhZHNcblx0ICAgYXMgYSBidXR0b24gYXQgdGhlIHRvcCBvZiB0aGUgcmFpbCByYXRoZXIgdGhhbiBhbm90aGVyIG5hdiByb3cuICovXG5cdC5zZXR0aW5ncy1uYXYtZ3JvdXAubmF2LWdyb3VwLWNyZWF0ZSB7XG5cdFx0cGFkZGluZy10b3A6IDE0cHg7XG5cdFx0cGFkZGluZy1ib3R0b206IDEycHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWYxZjc7XG5cdFx0bWFyZ2luLWJvdHRvbTogNHB4O1xuXHR9XG5cblx0LyogTm90aGluZyB0byBkaXZpZGUgZnJvbS4gKi9cblx0LnNldHRpbmdzLW5hdi5pcy1lbXB0eSAubmF2LWdyb3VwLWNyZWF0ZSB7XG5cdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHR9XG5cblx0Lm5hdi1lbXB0eS1ub3RlIHtcblx0XHRwYWRkaW5nOiA0cHggMTZweCAyMHB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjb2xvcjogI2EzYWFjMDtcblxuXHRcdGkge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDIycHg7XG5cdFx0XHRjb2xvcjogI2QzZDllNjtcblx0XHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdFx0fVxuXG5cdFx0c3Ryb25nIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDRweDtcblx0XHR9XG5cblx0XHRzcGFuIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdH1cblx0fVxuXG5cdC5uYXYtY3JlYXRlLWl0ZW0ge1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCByZ2JhKDAsIDUzLCAyMTAsIDAuMyk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZiZmNmZjtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBQYW5lIHNjYWZmb2xkaW5nXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogU2NvcGVkIHRvIC5uZy1lbnRlciwgbm90IHRoZSBiYXJlIGNsYXNzLiBuZ0FuaW1hdGUgcmVhZHMgd2hhdGV2ZXIgYW5pbWF0aW9uXG5cdCAgIGlzIGNvbXB1dGVkIG9uIHRoZSBlbGVtZW50IGR1cmluZyBlYWNoIHBoYXNlLCBzbyBkZWNsYXJpbmcgaXQgb24gLnBmLXBhbmVcblx0ICAgaXRzZWxmIG1hZGUgaXQgYXBwbHkgdG8gbmctbGVhdmUgYXMgd2VsbCAtIHRoZSBvdXRnb2luZyBwYW5lIHdhcyBoZWxkIGluIHRoZVxuXHQgICBET00gZm9yIHRoZSBmdWxsIDIyMG1zIGFuZCBib3RoIHBhbmVzIHdlcmUgb24gc2NyZWVuIHRvZ2V0aGVyLiBXaXRoIHRoZVxuXHQgICBsZWF2ZSBwaGFzZSBjYXJyeWluZyBubyBhbmltYXRpb24gaXQgcmVzb2x2ZXMgYXQgemVybyBkdXJhdGlvbiBhbmQgZ29lcyBpblxuXHQgICB0aGUgc2FtZSBmcmFtZTsgZGlzcGxheTpub25lIGNvdmVycyB0aGUgZnJhbWUgbmdBbmltYXRlIG5lZWRzIHRvIGZsdXNoLiAqL1xuXHQucGYtcGFuZS5uZy1lbnRlciB7XG5cdFx0YW5pbWF0aW9uOiBwZi1wYW5lLWluIDIyMG1zIGN1YmljLWJlemllcigwLjIyLCAxLCAwLjM2LCAxKSBib3RoO1xuXHR9XG5cblx0LnBmLXBhbmUubmctbGVhdmUge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0YW5pbWF0aW9uOiBub25lO1xuXHRcdHRyYW5zaXRpb246IG5vbmU7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgUXVlc3Rpb24gY2FyZHMgKGNyZWF0ZSAvIGVkaXQpXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LnBmLXF1ZXN0aW9uLWxpc3Qge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDE2cHg7XG5cdFx0bWFyZ2luLXRvcDogNHB4O1xuXHR9XG5cblx0LnBmLXF1ZXN0aW9uLWNhcmQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0Ym94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuXHRcdHBhZGRpbmc6IDE4cHggMjBweCAyMHB4O1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMThzIGVhc2UsIGJvcmRlci1jb2xvciAwLjE4cyBlYXNlLCBvcGFjaXR5IDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMtd2l0aGluIHtcblx0XHRcdGJvcmRlci1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcblx0XHRcdGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCA1MywgMjEwLCAwLjA4KTtcblx0XHR9XG5cblx0XHQvKiBEcmFnLWFuZC1kcm9wIHJlb3JkZXJpbmcgKGRyYWdSZW9yZGVyIGRpcmVjdGl2ZSk6IHRoZSBjYXJkIGJlaW5nIG1vdmVkIGZhZGVzLCBhbmQgYSBuYXZ5XG5cdFx0ICAgbGluZSBpbiB0aGUgZ2FwIGJldHdlZW4gY2FyZHMgc2hvd3Mgd2hlcmUgaXQgd2lsbCBsYW5kLiAqL1xuXHRcdCYuaXMtZHJhZ2dpbmcge1xuXHRcdFx0b3BhY2l0eTogMC40O1xuXHRcdH1cblxuXHRcdCYuZHJvcC1iZWZvcmU6OmJlZm9yZSxcblx0XHQmLmRyb3AtYWZ0ZXI6OmFmdGVyIHtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHJpZ2h0OiAwO1xuXHRcdFx0aGVpZ2h0OiAzcHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmLmRyb3AtYmVmb3JlOjpiZWZvcmUge1xuXHRcdFx0dG9wOiAtMTBweDtcblx0XHR9XG5cblx0XHQmLmRyb3AtYWZ0ZXI6OmFmdGVyIHtcblx0XHRcdGJvdHRvbTogLTEwcHg7XG5cdFx0fVxuXHR9XG5cblx0LmRyYWctcmVvcmRlci1oYW5kbGUge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHBhZGRpbmc6IDRweCAycHg7XG5cdFx0Y29sb3I6ICNjM2M5ZGE7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdGN1cnNvcjogZ3JhYjtcblx0XHR0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0JjphY3RpdmUge1xuXHRcdFx0Y3Vyc29yOiBncmFiYmluZztcblx0XHR9XG5cdH1cblxuXHQucGYtcXVlc3Rpb24taGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTRweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXHR9XG5cblx0LnBmLWluZGV4LWJhZGdlIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHR3aWR0aDogMjZweDtcblx0XHRoZWlnaHQ6IDI2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR9XG5cblx0LnBmLXF1ZXN0aW9uLWxhYmVsIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC5wZi1xdWVzdGlvbi10b29scyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNHB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHR9XG5cblx0LyogVXAgLyBEb3duIC8gUmVtb3ZlIHdlcmUgdGhyZWUgYGJ0bi1saW5rYCB3b3JkcyBpbiBhIHJvdywgd2hpY2ggcmVhZCBhcyBib2R5XG5cdCAgIGNvcHkgYW5kIHB1c2hlZCB0aGUgY2FyZCBoZWFkZXIgb3V0IG9mIGxpbmUuIFNxdWFyZSBpY29uIGJ1dHRvbnMga2VlcCB0aGVcblx0ICAgaGVhZGVyIG9uZSBsaW5lIHRhbGwgYXQgYW55IHF1ZXN0aW9uIGNvdW50LiAqL1xuXHQucGYtaWNvbi1idG4ge1xuXHRcdHdpZHRoOiAzMHB4O1xuXHRcdGhlaWdodDogMzBweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UsIGNvbG9yIDAuMTVzIGVhc2UsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMik7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0JjpkaXNhYmxlZCB7XG5cdFx0XHRvcGFjaXR5OiAwLjM1O1xuXHRcdFx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcblx0XHR9XG5cblx0XHQmLmRhbmdlcjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VhO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiByZ2JhKDIxNywgODMsIDc5LCAwLjMpO1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHR9XG5cdH1cblxuXHQvKiBCb3hlZCAuY29udHJvbC1sYWJlbCArIC5mb3JtLWNvbnRyb2wgZnJvbSBfc2V0dGluZ3MuY3NzIHJhdGhlciB0aGFuXG5cdCAgIG1kLWlucHV0LWNvbnRhaW5lci4gQSBNYXRlcmlhbCBmbG9hdGluZyBsYWJlbCBzaXRzIGFib3ZlIHRoZSBpbnB1dCBpbiB0aGVcblx0ICAgY29udGFpbmVyJ3MgdG9wIG1hcmdpbiwgc28gaXQgY2xpcHBlZCBhZ2FpbnN0IHRoZSBjYXJkLCBhbmQgYW4gdW5kZXJsaW5lLW9ubHlcblx0ICAgZmllbGQgb24gYSB3aGl0ZSBjYXJkIGdpdmVzIG5vIHNpZ24gdGhhdCBpdCBpcyBzb21ld2hlcmUgeW91IGNhbiB0eXBlLiAqL1xuXHQucGYtZmllbGQge1xuXHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdH1cblxuXHRcdHNlbGVjdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0aGVpZ2h0OiAzOHB4O1xuXHRcdFx0cGFkZGluZy10b3A6IDA7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0XHR9XG5cblx0XHQvKiBUaGUgZ3JleWVkIG9wZXJhdG9yIGZpZWxkIGlzIGEgcmVhZG91dCwgbm90IHNvbWV0aGluZyB0byBmaWxsIGluLiAqL1xuXHRcdC5mb3JtLWNvbnRyb2w6ZGlzYWJsZWQge1xuXHRcdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHRcdH1cblx0fVxuXG5cdC8qIEEgdHlwZSBwaWNrZXIgd2l0aCBmaXZlIHNob3J0IGxhYmVscyBkb2VzIG5vdCBuZWVkIHRoZSBmdWxsIGNhcmQgd2lkdGguICovXG5cdC5wZi10eXBlLWZpZWxkIHtcblx0XHRtYXgtd2lkdGg6IDI4MHB4O1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIEFuc3dlciBvcHRpb25zXG5cdC8qIE9uZSByb3cgcGVyIG9wdGlvbiByYXRoZXIgdGhhbiBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcsIHNvIGVhY2ggb25lIGNhbiBiZVxuXHQvKiBlZGl0ZWQsIGFkZGVkIGFuZCByZW1vdmVkIG9uIGl0cyBvd24gLSBhbmQgdGhlIG1hcmtlciBzaG93cyBob3cgdGhlIHBhdGllbnRcblx0Lyogd2lsbCBzZWUgaXQsIHJhZGlvIGZvciBzaW5nbGUgY2hvaWNlLCBib3ggZm9yIG11bHRpcGxlLlxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5wZi1vcHRpb25zLWZpZWxkIHtcblx0XHQuY29udHJvbC1sYWJlbCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdFx0Z2FwOiA4cHg7XG5cdFx0fVxuXG5cdFx0LnBmLW9wdGlvbnMtaGludCB7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogbm9uZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdGNvbG9yOiAjYjZiY2NkO1xuXHRcdH1cblx0fVxuXG5cdC5wZi1vcHRpb24tcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDhweDtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cblx0XHQucGYtaWNvbi1idG4ge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0fVxuXHR9XG5cblx0LnBmLW9wdGlvbi1tYXJrZXIge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHdpZHRoOiAxNXB4O1xuXHRcdGhlaWdodDogMTVweDtcblx0XHRib3JkZXI6IDJweCBzb2xpZCAjYzNjOWRhO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cblx0XHQmLmlzLWNoZWNrYm94IHtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgQWRkIGFmZm9yZGFuY2VzXG5cdC8qIEJlc2lkZSBvciBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0IHRoZXkgZXh0ZW5kIHJhdGhlciB0aGFuIGluIHRoZSBhY3Rpb24gYmFyIC1cblx0LyogYWRkaW5nIGlzIHBhcnQgb2Ygd3JpdGluZyB0aGUgZm9ybSwgbm90IG9uZSBvZiB0aGUgdHdvIHRoaW5ncyB5b3UgZG8gdG8gaXRcblx0Lyogd2hlbiB5b3UgaGF2ZSBmaW5pc2hlZC5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQucGYtcGFsZXR0ZS10aWxlLFxuXHQucGYtYWRkLWlubGluZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCByZ2JhKDAsIDUzLCAyMTAsIDAuMyk7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZiZmNmZjtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgYnVpbGRlciBpcyB0aGUgY2FyZCBsaXN0IHdpdGggdGhlIGNvbXBvbmVudCBwYWxldHRlIHRvIGl0cyByaWdodC4gVGhlXG5cdCAgIHBhbGV0dGUgc3RpY2tzIHRvIHRoZSB0b3Agb2YgdGhlIHNjcm9sbGluZyBwYW5lIHNvIGl0IGlzIGluIHJlYWNoIGF0IGFueSBsZW5ndGguICovXG5cdC5wZi1idWlsZGVyLWxheW91dCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDIwcHg7XG5cdH1cblxuXHQucGYtYnVpbGRlci1tYWluIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC8qIEJveGVkIGxpa2UgYSBxdWVzdGlvbiBjYXJkIHNvIGl0IHJlYWRzIGFzIGl0cyBvd24gcGFuZWwgYmVzaWRlIHRoZSBsaXN0LiAqL1xuXHQucGYtY29tcG9uZW50LXBhbGV0dGUge1xuXHRcdHBvc2l0aW9uOiBzdGlja3k7XG5cdFx0dG9wOiAwO1xuXHRcdGZsZXg6IDAgMCAyMjBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRwYWRkaW5nOiAxNHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0Ym94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuXHR9XG5cblx0LnBmLXBhbGV0dGUtdGl0bGUge1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LnBmLXBhbGV0dGUtdGlsZSB7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAxMnB4IDE0cHg7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0XHQ+IC5mYSB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdHdpZHRoOiAxOHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdH1cblxuXHRcdHNtYWxsIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIFJlZ3VsYXInLCBzYW5zLXNlcmlmO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0fVxuXHR9XG5cblx0LnBmLXBhbGV0dGUtdGlsZS10ZXh0IHtcblx0XHRtaW4td2lkdGg6IDA7XG5cdH1cblxuXHQvKiBJbnNldCB0byB0aGUgd2lkdGggb2YgdGhlIGlucHV0cyBpdCBleHRlbmRzLCBzbyBpdCBsaW5lcyB1cCB1bmRlciB0aGVtXG5cdCAgIHJhdGhlciB0aGFuIHVuZGVyIHRoZSBtYXJrZXIgY29sdW1uLiAqL1xuXHQucGYtYWRkLWlubGluZSB7XG5cdFx0LyogaW5saW5lLWZsZXgsIG5vdCB0aGUgc2hhcmVkIGZsZXg6IGEgYmxvY2stbGV2ZWwgZmxleCBib3ggd291bGQgc3RyZXRjaCB0b1xuXHRcdCAgIHRoZSBjYXJkIHdpZHRoIHJlZ2FyZGxlc3Mgb2Ygd2lkdGg6YXV0by4gKi9cblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHR3aWR0aDogYXV0bztcblx0XHRtYXJnaW46IDJweCAwIDAgMjVweDtcblx0XHRwYWRkaW5nOiA4cHggMTZweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHRtZC1jaGVja2JveC5wZi1yZXF1aXJlZCB7XG5cdFx0bWFyZ2luOiAycHggMCAwO1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFwiT3RoZXJcIiBvcHRpb25cblx0LyogU2l0cyBpbiB0aGUgb3B0aW9uIGxpc3QgYXMgdGhlIHJvdyBpdCB3aWxsIGJlY29tZSwgcmF0aGVyIHRoYW4gYXMgYSBzZXR0aW5nXG5cdC8qIHNvbWV3aGVyZSBlbHNlIC0gYnV0IHRpbnRlZCBhbmQgZGFzaGVkIHNvIGl0IHJlYWRzIGFzIGdlbmVyYXRlZCByYXRoZXIgdGhhblxuXHQvKiBhcyBhbm90aGVyIHJvdyB0byB0eXBlIGluLlxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5wZi1vcHRpb24tcm93LW90aGVyIHtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRwYWRkaW5nOiAxMHB4IDEycHggMTJweDtcblx0XHRib3JkZXI6IDFweCBkYXNoZWQgcmdiYSgwLCA1MywgMjEwLCAwLjI4KTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmY2ZmO1xuXG5cdFx0LnBmLW9wdGlvbi1tYXJrZXIge1xuXHRcdFx0bWFyZ2luLXRvcDogOXB4O1xuXHRcdH1cblx0fVxuXG5cdC5wZi1vdGhlci1yb3ctYm9keSB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcblx0XHR9XG5cdH1cblxuXHQucGYtb3RoZXItcm93LWxhYmVsIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW4tYm90dG9tOiA3cHg7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblxuXHRcdHNwYW4ge1xuXHRcdFx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1zYW5zLXNlcmlmO1xuXHRcdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdGNvbG9yOiAjYjZiY2NkO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSB0d28gYWRkIGJ1dHRvbnMgc2l0IHNpZGUgYnkgc2lkZSB1bmRlciB0aGUgbGlzdC4gKi9cblx0LnBmLW9wdGlvbi1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbjogMnB4IDAgMCAyNXB4O1xuXG5cdFx0LnBmLWFkZC1pbmxpbmUge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBJbWFnZSBvcHRpb24gcm93c1xuXHQvKiBPbmUgcm93IHBlciBpbWFnZSBvcHRpb24sIG1pcnJvcmluZyB0aGUgdGV4dCBvcHRpb24gcm93cyBhYm92ZSBpdCAtIGFuIGltYWdlXG5cdC8qIHF1ZXN0aW9uIGlzIGEgY2hvaWNlIHF1ZXN0aW9uIHdob3NlIG9wdGlvbnMgaGFwcGVuIHRvIGJlIHBpY3R1cmVzLlxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5wZi1pbWFnZS1vcHRpb24ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZiZmNmZjtcblx0fVxuXG5cdC5wZi1pbWFnZS10aHVtYiB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0d2lkdGg6IDg0cHg7XG5cdFx0aGVpZ2h0OiA2NHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRvYmplY3QtZml0OiBjb3Zlcjtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdH1cblxuXHRcdC5wZi1pbWFnZS10aHVtYi1lbXB0eSB7XG5cdFx0XHRjb2xvcjogI2MzYzlkYTtcblx0XHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHR9XG5cdH1cblxuXHQucGYtaW1hZ2Utb3B0aW9uLWZpZWxkcyB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogOHB4O1xuXG5cdFx0aW5wdXRbdHlwZT1cImZpbGVcIl0ge1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdH1cblx0fVxuXG5cdC5wZi1pbWFnZS1zdGF0dXMge1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjQ1O1xuXG5cdFx0Ji53YXJuaW5nIHtcblx0XHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBDb25kaXRpb25hbCB2aXNpYmlsaXR5IGJsb2NrXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LnBmLWNvbmRpdGlvbmFsIHtcblx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXHRcdHBhZGRpbmc6IDE0cHggMTZweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmN2ZhZmY7XG5cblx0XHRtZC1jaGVja2JveCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0LnBmLWNvbmRpdGlvbmFsLWZpZWxkcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiAwIDE2cHg7XG5cdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHRwYWRkaW5nLXRvcDogMTRweDtcblx0XHRib3JkZXItdG9wOiAxcHggZGFzaGVkIHJnYmEoMCwgNTMsIDIxMCwgMC4yKTtcblxuXHRcdC5wZi1maWVsZCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiA0cHg7XG5cdFx0fVxuXG5cdFx0LnBmLWNvbmQtc291cmNlIHtcblx0XHRcdGZsZXg6IDEgMSAzMjBweDtcblx0XHRcdG1pbi13aWR0aDogMjQwcHg7XG5cdFx0fVxuXG5cdFx0LnBmLWNvbmQtb3BlcmF0b3IsXG5cdFx0LnBmLWNvbmQtb3B0aW9uIHtcblx0XHRcdGZsZXg6IDAgMSAyMjBweDtcblx0XHRcdG1pbi13aWR0aDogMTgwcHg7XG5cdFx0fVxuXG5cdFx0LnBmLWNvbmQtbm90ZSB7XG5cdFx0XHRmbGV4OiAxIDEgMjYwcHg7XG5cdFx0XHRhbGlnbi1zZWxmOiBjZW50ZXI7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjQ1O1xuXHRcdFx0cGFkZGluZy10b3A6IDE4cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIENoZWNrIGFuc3dlcnNcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQucGYtYW5zd2VyLWxpc3Qge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDE0cHg7XG5cdH1cblxuXHQucGYtYW5zd2VyLWNhcmQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0Ym94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuXHRcdHBhZGRpbmc6IDE4cHggMjBweDtcblx0fVxuXG5cdC5wZi1hbnN3ZXItaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0cGFkZGluZy1ib3R0b206IDEycHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogNnB4O1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXG5cdFx0LnBmLWFuc3dlci1wYXRpZW50IHtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogIzJkMzc0ODtcblx0XHR9XG5cblx0XHQucGYtYW5zd2VyLWRvYiB7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0fVxuXG5cdFx0LnBmLXN1Ym1pdHRlZC1hdCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblxuXHRcdFx0Ji5tdXRlZCB7XG5cdFx0XHRcdGNvbG9yOiAjYjZiY2NkO1xuXHRcdFx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LnBmLWFuc3dlci1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiAxNnB4O1xuXHRcdHBhZGRpbmc6IDExcHggMDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItYm90dG9tOiBub25lO1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDA7XG5cdFx0fVxuXG5cdFx0LnBmLWFuc3dlci1xdWVzdGlvbiB7XG5cdFx0XHRmbGV4OiAwIDAgNDUlO1xuXHRcdFx0bWF4LXdpZHRoOiA0NSU7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHR9XG5cblx0XHQucGYtYW5zd2VyLXZhbHVlIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRcdHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIEFuc3dlciBjaGFydFxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5wZi1jaGFydC1saXN0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxNHB4O1xuXHR9XG5cblx0LnBmLWNoYXJ0LWNhcmQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0Ym94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuXHRcdHBhZGRpbmc6IDE4cHggMjBweDtcblx0fVxuXG5cdC5wZi1jaGFydC1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDEycHg7XG5cdFx0cGFkZGluZy1ib3R0b206IDEycHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZjFmNztcblxuXHRcdC5wZi1jaGFydC1xdWVzdGlvbiB7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0fVxuXG5cdFx0LnBmLWNoYXJ0LXRvdGFsIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cdH1cblxuXHQucGYtY2hhcnQtYmFycyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMTBweDtcblx0fVxuXG5cdC5wZi1jaGFydC1iYXItcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMnB4O1xuXG5cdFx0LnBmLWNoYXJ0LWJhci1sYWJlbCB7XG5cdFx0XHRmbGV4OiAwIDAgMjglO1xuXHRcdFx0bWF4LXdpZHRoOiAyOCU7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQucGYtY2hhcnQtYmFyLXRyYWNrIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRoZWlnaHQ6IDEycHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmMWY3O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogOTk5cHg7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdH1cblxuXHRcdC5wZi1jaGFydC1iYXItZmlsbCB7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRtaW4td2lkdGg6IDJweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogOTk5cHg7XG5cdFx0XHR0cmFuc2l0aW9uOiB3aWR0aCAyMjBtcyBlYXNlO1xuXHRcdH1cblxuXHRcdC5wZi1jaGFydC1iYXItY291bnQge1xuXHRcdFx0ZmxleDogMCAwIGF1dG87XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFNlY3Rpb24gaGVhZGVyICsgaW5saW5lIHNlbmQgcm93XG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogV2l0aCB0aGUgZGlhbG9nIGZvb3RlciBnb25lIHRoaXMgaXMgdGhlIHBhbmUncyBwcmltYXJ5IGFjdGlvbiwgc28gaXQgZ2V0cyBhXG5cdCAgIGNhcmQgb2YgaXRzIG93biB0aGF0IG5hbWVzIHRoZSByZWNpcGllbnQgLSB0aGUgY29udGV4dCB0aGUgZm9vdGVyIHVzZWQgdG9cblx0ICAgY2FycnkgLSByYXRoZXIgdGhhbiBhIGJhcmUgYnV0dG9uIGZsb2F0aW5nIGFib3ZlIHRoZSBwcmV2aWV3LiAqL1xuXHQucGYtc2VuZC1jYXJkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNnB4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRwYWRkaW5nOiAxNnB4IDIwcHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAkd2hpdGUgMCUsICNmYmZjZmYgMTAwJSk7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgwLCA1MywgMjEwLCAwLjE4KTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4wNik7XG5cblx0XHQvKiBOb3RoaW5nIHRvIHNlbmQgdG8gLSBkcm9wIHRoZSBicmFuZCB0aW50IHNvIGl0IHJlYWRzIGFzIHVuYXZhaWxhYmxlXG5cdFx0ICAgcmF0aGVyIHRoYW4gYXMgdGhlIHRoaW5nIHlvdSBhcmUgbWVhbnQgdG8gY2xpY2suICovXG5cdFx0Ji5pcy1ibG9ja2VkIHtcblx0XHRcdGJhY2tncm91bmQ6ICRsaWdodEdyZXk7XG5cdFx0XHRib3JkZXItY29sb3I6ICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cblx0XHRcdC5wZi1zZW5kLWljb24ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlZmY1O1xuXHRcdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQucGYtc2VuZC1pY29uIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHR3aWR0aDogNDJweDtcblx0XHRoZWlnaHQ6IDQycHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxN3B4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0fVxuXG5cdC5wZi1zZW5kLWNvcHkge1xuXHRcdGZsZXg6IDEgMSAyNDBweDtcblx0XHRtaW4td2lkdGg6IDA7XG5cblx0XHRzdHJvbmcge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuMztcblx0XHR9XG5cblx0XHRzcGFuIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0XHRtYXJnaW4tdG9wOiAzcHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS40NTtcblx0XHRcdHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG5cdFx0fVxuXHR9XG5cblx0LyogRGVsaWJlcmF0ZWx5IG5vdCAuYnRuLW5hdnk6IHRoYXQgaXMgY2FwcGVkIGF0IDIyMHB4IGFuZCBzdHJldGNoZXMgdG8gZmlsbCxcblx0ICAgd2hpY2ggcmVhZHMgYXMgYSBmb3JtIGJ1dHRvbi4gVGhpcyBpcyBhIHNpbmdsZSBjb21taXR0ZWQgYWN0aW9uLCBzbyBpdCBodWdzXG5cdCAgIGl0cyBsYWJlbCBhbmQgbGlmdHMgb24gaG92ZXIuICovXG5cdC5wZi1zZW5kLWJ0biB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDlweDtcblx0XHRtaW4td2lkdGg6IDE3OHB4O1xuXHRcdHBhZGRpbmc6IDEycHggMjRweDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJG5hdnkgMCUsICRkYXJrTmF2eSAxMDAlKTtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDFlbTtcblx0XHRsaW5lLWhlaWdodDogMTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Ym94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE2cyBjdWJpYy1iZXppZXIoMC4zNCwgMS41NiwgMC42NCwgMSksXG5cdFx0XHRib3gtc2hhZG93IDAuMTZzIGVhc2UsXG5cdFx0XHRmaWx0ZXIgMC4xNnMgZWFzZTtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdH1cblxuXHRcdCY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuXHRcdFx0ZmlsdGVyOiBicmlnaHRuZXNzKDEuMTIpO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuXHRcdFx0Ym94LXNoYWRvdzogMCA3cHggMThweCByZ2JhKDAsIDUzLCAyMTAsIDAuMyk7XG5cdFx0fVxuXG5cdFx0JjphY3RpdmU6bm90KDpkaXNhYmxlZCkge1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG5cdFx0fVxuXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcblx0XHR9XG5cblx0XHQmOmRpc2FibGVkIHtcblx0XHRcdGJhY2tncm91bmQ6ICNkM2Q5ZTY7XG5cdFx0XHRjb2xvcjogI2ZiZmNmZjtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdFx0dHJhbnNmb3JtOiBub25lO1xuXHRcdFx0ZmlsdGVyOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC8qIEhvbGRzIGl0cyBsaW5lIHdoZXRoZXIgb3Igbm90IHRoZXJlIGlzIGEgbWVzc2FnZSwgc28gdGhlIHByZXZpZXcgYmVsb3cgZG9lc1xuXHQgICBub3QganVtcCB1cCBhbmQgZG93biBhcyBhIHNlbmQgcmVzb2x2ZXMuICovXG5cdC5wZi1zZW5kLXJlc3VsdCB7XG5cdFx0bWluLWhlaWdodDogMzBweDtcblx0XHRtYXJnaW46IC04cHggMCAxNnB4O1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUmVuZGVyZWQgZm9ybSBibG9ja3MgKHNoYXJlZClcbi8qIFRoZSBzdGFmZiBwcmV2aWV3IGFuZCB0aGUgcGFnZSB0aGUgcGF0aWVudCBhY3R1YWxseSBmaWxscyBpbiBhcmUgdGhlIHNhbWVcbi8qIGZvcm0gcmVuZGVyZWQgdHdpY2UsIHNvIHRoZXkgc2hhcmUgb25lIHNldCBvZiBibG9ja3MgcmF0aGVyIHRoYW4gdGhlIHBhdGllbnRcbi8qIHBhZ2UgY2FycnlpbmcgYW4gaW5saW5lIGNvcHkgdGhhdCBkcmlmdHMgb3V0IG9mIHN0ZXAuIEJvdGggd3JhcCB0aGVpclxuLyogcXVlc3Rpb25zIGluIC5wZi1mb3JtLXJlbmRlci5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5wZi1mb3JtLXJlbmRlciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGdhcDogMTRweDtcblxuXHQucGYtcHJldmlldy1ibG9jayB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG5cdFx0cGFkZGluZzogMjBweCAyMnB4O1xuXHR9XG5cblx0LnBmLXByZXZpZXctaGVhZGVyIHtcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5wZi1wcmV2aWV3LWltYWdlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0bWF4LWhlaWdodDogNDIwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdH1cblxuXHQucGYtcHJldmlldy1xdWVzdGlvbiB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Zm9udC1zaXplOiAxN3B4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjM1O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRtYXJnaW46IDAgMCAxNHB4O1xuXG5cdFx0LnBmLXJlcXVpcmVkLXN0YXIge1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdG1hcmdpbi1sZWZ0OiAycHg7XG5cdFx0fVxuXHR9XG5cblx0LnBmLWFuc3dlci1pbnB1dCB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdHBhZGRpbmc6IDEwcHggMTJweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE4cyBlYXNlLCBib3gtc2hhZG93IDAuMThzIGVhc2U7XG5cblx0XHQmOmZvY3VzIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMCwgNTMsIDIxMCwgMC4xKTtcblx0XHR9XG5cdH1cblxuXHR0ZXh0YXJlYS5wZi1hbnN3ZXItaW5wdXQge1xuXHRcdHJlc2l6ZTogdmVydGljYWw7XG5cdFx0bWluLWhlaWdodDogODRweDtcblx0fVxuXG5cdHNlbGVjdC5wZi1hbnN3ZXItaW5wdXQge1xuXHRcdGhlaWdodDogNDJweDtcblx0XHRwYWRkaW5nOiAwIDEycHg7XG5cdH1cblxuXHQucGYtY2hvaWNlLWxpc3Qge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDhweDtcblxuXHRcdCYuaW5saW5lIHtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cblx0XHRcdC5wZi1jaG9pY2Uge1xuXHRcdFx0XHRmbGV4OiAxIDEgMTYwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LnBmLWNob2ljZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMTFweCAxNHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbWVkaXVtO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZSwgYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4zNSk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmY2ZmO1xuXHRcdH1cblxuXHRcdGlucHV0IHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR9XG5cdH1cblxuXHQvKiBBbiBhY3R1YWwgZ3JpZDogYXV0by1maWxsIGtlZXBzIHRoZSB0aWxlcyBpbiBldmVuIGNvbHVtbnMgYXQgYW55IGNvbnRhaW5lclxuXHQgICB3aWR0aCBpbnN0ZWFkIG9mIGxlYXZpbmcgYSByYWdnZWQgbGFzdCByb3csIGFuZCB0aGV5IHNoYXJlIG9uZSByb3cgaGVpZ2h0LiAqL1xuXHQucGYtaW1hZ2UtZ3JpZCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgxOTBweCwgMWZyKSk7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuXHR9XG5cblx0LnBmLWltYWdlLXRpbGUge1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRwYWRkaW5nOiA4cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmYWZiZmQ7XG5cblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IDEyMHB4O1xuXHRcdFx0b2JqZWN0LWZpdDogY292ZXI7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdH1cblx0fVxuXG5cdC8qIFN0YW5kcyBpbiBmb3IgdGhlIHBpY3R1cmUgd2hlbiBhbiBvcHRpb24gaGFzIG5vIHN0b3JlZCBmaWxlLCBzbyB0aGUgdGlsZSBrZWVwc1xuXHQgICBpdHMgc2hhcGUgYW5kIHRoZSBjYXB0aW9uIHN0YXlzIHJlYWRhYmxlIGluc3RlYWQgb2YgYSBicm9rZW4taW1hZ2UgaWNvbi4gKi9cblx0LnBmLWltYWdlLXBsYWNlaG9sZGVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEyMHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRjb2xvcjogI2I2YmNjZDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHRpbGUgaXMgdGhlIGFuc3dlciwgc28gdGhlIHdob2xlIHRoaW5nIGlzIHRoZSB0YXJnZXQgLSBhIHJhZGlvIGluIHRoZVxuXHQgICBjYXB0aW9uIGFsb25lIHdvdWxkIGJlIGEgMTRweCBoaXQgYXJlYSBvbiBhIHBob25lLiAqL1xuXHQucGYtaW1hZ2UtY2hvaWNlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRtYXJnaW46IDA7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjM1KTtcblx0XHR9XG5cblx0XHQmLmlzLXNlbGVjdGVkIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0XHR9XG5cblx0XHQucGYtaW1hZ2UtY2FwdGlvbiB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0XHRnYXA6IDhweDtcblx0XHRcdG1hcmdpbi10b3A6IDhweDtcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNDtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdFx0d29yZC1icmVhazogYnJlYWstd29yZDtcblxuXHRcdFx0aW5wdXQge1xuXHRcdFx0XHRtYXJnaW46IDJweCAwIDA7XG5cdFx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogVGV4dCBjaG9pY2VzIGdldCB0aGUgc2FtZSBzZWxlY3RlZCB0cmVhdG1lbnQsIHNvIGEgcGlja2VkIG9wdGlvbiByZWFkcyB0aGVcblx0ICAgc2FtZSB3YXkgd2hpY2hldmVyIGtpbmQgb2YgcXVlc3Rpb24gaXQgaXMuICovXG5cdC5wZi1jaG9pY2UuaXMtc2VsZWN0ZWQge1xuXHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0fVxuXG5cdC8qIEluZGVudGVkIHVuZGVyIHRoZSBvcHRpb25zIGl0IGJlbG9uZ3MgdG8sIHNvIGl0IHJlYWRzIGFzIHBhcnQgb2YgdGhlIFwiT3RoZXJcIlxuXHQgICByb3cgcmF0aGVyIHRoYW4gYXMgdGhlIG5leHQgcXVlc3Rpb24uICovXG5cdC5wZi1vdGhlci1ib3gge1xuXHRcdG1hcmdpbjogMTBweCAwIDAgMThweDtcblx0XHRwYWRkaW5nLWxlZnQ6IDE0cHg7XG5cdFx0Ym9yZGVyLWxlZnQ6IDJweCBzb2xpZCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXG5cdFx0LmNvbnRyb2wtbGFiZWwge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNnB4O1xuXHRcdH1cblxuXHRcdC5wZi1hbnN3ZXItaW5wdXQ6ZGlzYWJsZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRcdGNvbG9yOiAjOGE5MGEzO1xuXHRcdH1cblx0fVxuXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUGF0aWVudC1mYWNpbmcgcGFnZSAoL2N1c3RvbUZvcm0/dG9rZW49KVxuLyogU2l0cyBvbiB0aGUgYXBwJ3Mgb3duIGJhY2tkcm9wIC0gYG1haW5gIGluIF9uYXYuY3NzIHBhaW50cyB0aGUgbmF2eSBncmFkaWVudFxuLyogb3ZlciB0aGUgc3VyZ2VvbiBwaG90bywgdGhlIHNhbWUgZ3JvdW5kIHRoZSBvcCBub3RlIGFuZCBldmVyeSBvdGhlciBwYWdlXG4vKiBzdGFuZHMgb24gLSBhbmQgc3RhY2tzIHRocmVlIHRpZXJzIG9mIGNvbnRyYXN0IG9uIHRvcCBvZiBpdDogYSB3aGl0ZSBwYW5lbFxuLyogbGlmdGVkIG9mZiB0aGUgcGhvdG8sIGEgbmF2eSBiYW5uZXIgYWNyb3NzIGl0cyBoZWFkLCBhbmQgdGhlIHBhbGUgc2V0dGluZ3Ncbi8qIGNhbnZhcyBiZWhpbmQgdGhlIHdoaXRlIHF1ZXN0aW9uIGNhcmRzLlxuLypcbi8qIFRoZSBxdWVzdGlvbnMgdGhlbXNlbHZlcyBjb21lIGZyb20gLnBmLWZvcm0tcmVuZGVyIGFib3ZlLCBzbyB3aGF0IHRoZSBwYXRpZW50XG4vKiBzZWVzIG1hdGNoZXMgdGhlIHByZXZpZXcgdGhlIGNsaW5pY2lhbiBzaWduZWQgb2ZmIG9uLiBPbmx5IHRoZSBwYWdlIGNocm9tZVxuLyogYXJvdW5kIHRoZW0gbGl2ZXMgaGVyZS5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5jdXN0b20tZm9ybS1wYWdlIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBhZGRpbmc6IDQwcHggMCA1NnB4O1xuXG5cdC8qIEl0cyBvd24gYmFja2Ryb3AgcmF0aGVyIHRoYW4gdGhlIHN1cmdlb24gcGhvdG8gYG1haW5gIGdpdmVzIGV2ZXJ5IG90aGVyXG5cdCAgIHBhZ2UuIFRoYXQgcGhvdG8gaXMgYWltZWQgYXQgY2xpbmljaWFuczsgdGhlIHBlcnNvbiBoZXJlIGlzIGEgcGF0aWVudFxuXHQgICBmaWxsaW5nIGluIGEgaGVhbHRoIHF1ZXN0aW9ubmFpcmUsIG9mdGVuIG9uIGEgcGhvbmUsIGFuZCBhIHBpY3R1cmUgb2Zcblx0ICAgc3VyZ2VyeSBpcyB0aGUgd3JvbmcgdGhpbmcgdG8gZ3JlZXQgdGhlbSB3aXRoLlxuXG5cdCAgIEEgbmF2eSBiYW5kIGFjcm9zcyB0aGUgdG9wIG9ubHksIHBhbGUgYmVuZWF0aCwgd2l0aCB0aGUgcGFuZWwgYnJpZGdpbmcgdGhlXG5cdCAgIHR3byAtIHJhdGhlciB0aGFuIGEgY2FyZCBtYXJvb25lZCBpbiB0aGUgbWlkZGxlIG9mIGEgbGFyZ2UgZGFyayBmaWVsZC4gVGhlXG5cdCAgIGJhbmQgaXMgc2l6ZWQsIG5vdCBzdG9wcGVkOiB0aGUgZ3JhZGllbnQgbGF5ZXJzIGFyZSAzMDBweCB0YWxsIGFuZCBwaW5uZWQgdG9cblx0ICAgdGhlIHRvcCwgYW5kIGJhY2tncm91bmQtY29sb3IgZmlsbHMgZXZlcnl0aGluZyBiZWxvdywgc28gdGhlcmUgaXMgbm8gY29sb3VyXG5cdCAgIGludGVycG9sYXRpb24gYXQgdGhlIHNlYW0gdG8gZnJpbmdlLlxuXG5cdCAgIFRoZSBncmFpbiBpcyB3aGF0IHN0b3BzIHRoZSBiYW5kIGJhbmRpbmcuIEZvdXIgbGFyZ2UgbG93LWNvbnRyYXN0IGdyYWRpZW50c1xuXHQgICBvbiBhbiA4LWJpdCBkaXNwbGF5IHJpbmcgdmlzaWJseTsgYSBmcmFjdGFsLW5vaXNlIHRpbGUgYXQgbG93IG9wYWNpdHkgYnJlYWtzXG5cdCAgIHRoZSByYW1wIHVwLiBJdCBpcyBhbiBpbmxpbmUgU1ZHLCBzbyBubyByZXF1ZXN0IGFuZCBub3RoaW5nIHRvIGhvc3QuICovXG5cdC8qIEEgc2hhZGUgZGVlcGVyIHRoYW4gLmN1c3RvbS1mb3JtLWJvZHkncyAjZjRmN2ZlOiB3aXRoIGJvdGggdGhlIHNhbWUsIHRoZVxuXHQgICBwYW5lbCBkaXNzb2x2ZWQgaW50byB0aGUgcGFnZSBldmVyeXdoZXJlIGJlbG93IHRoZSBiYW5kLiBHcm91bmQsIHBhbmVsIGJvZHksXG5cdCAgIGNhcmQgbm93IHN0ZXAgbGlnaHQgaW4gdGhyZWUgc3RhZ2VzLiAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRiYWNrZ3JvdW5kLWltYWdlOlxuXHRcdHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTgwJyBoZWlnaHQ9JzE4MCclM0UlM0NmaWx0ZXIgaWQ9J24nJTNFJTNDZmVUdXJidWxlbmNlIHR5cGU9J2ZyYWN0YWxOb2lzZScgYmFzZUZyZXF1ZW5jeT0nMC44NScgbnVtT2N0YXZlcz0nNCcgc3RpdGNoVGlsZXM9J3N0aXRjaCcvJTNFJTNDZmVDb2xvck1hdHJpeCB0eXBlPSdzYXR1cmF0ZScgdmFsdWVzPScwJy8lM0UlM0MvZmlsdGVyJTNFJTNDcmVjdCB3aWR0aD0nMTgwJyBoZWlnaHQ9JzE4MCcgZmlsdGVyPSd1cmwoJTIzbiknIG9wYWNpdHk9JzAuMDU1Jy8lM0UlM0Mvc3ZnJTNFXCIpLFxuXHRcdHJhZGlhbC1ncmFkaWVudCg4MjBweCAzODBweCBhdCA4MiUgLTQwJSwgcmdiYSgwLCAxODgsIDIxMiwgMC4yMiksIHRyYW5zcGFyZW50IDYyJSksXG5cdFx0bGluZWFyLWdyYWRpZW50KDE1OGRlZywgIzBhMjU0MCAwJSwgIzE0MzQ2YiA2MiUsICMwZjJiNTIgMTAwJSk7XG5cdGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQsIG5vLXJlcGVhdCwgbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgbGVmdCwgdG9wIGNlbnRlciwgdG9wIGNlbnRlcjtcblx0YmFja2dyb3VuZC1zaXplOiAxODBweCAxODBweCwgMTAwJSAzMDBweCwgMTAwJSAzMDBweDtcblxuXHQuY3VzdG9tLWZvcm0tcGFuZWwge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1heC13aWR0aDogNzgwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXhsO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0Ym94LXNoYWRvdzogMCAxMHB4IDM0cHggcmdiYSgxMCwgMzcsIDY0LCAwLjE2KTtcblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBCYW5uZXJcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiBUaGUgcGFuZWwgY2xpcHMgd2l0aCBvdmVyZmxvdzpoaWRkZW4sIGJ1dCBhIGNsaXBwZWQgc3F1YXJlLWNvcm5lcmVkIGNoaWxkXG5cdCAgIHN0aWxsIGxlYXZlcyB0aGUgcGFyZW50J3Mgd2hpdGUgc2hvd2luZyBhcyBhIGhhaXJsaW5lIGFsb25nIHRoZSBjb3JuZXIgYXJjcy5cblx0ICAgR2l2aW5nIHRoZSBiYW5uZXIgaXRzIG93biBtYXRjaGluZyByYWRpaSBtZWFucyB0aGVyZSBpcyBub3RoaW5nIHRvIHJldmVhbC4gKi9cblx0LmN1c3RvbS1mb3JtLWJhbm5lciB7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMteGwgJGJvcmRlci1yYWRpdXMteGwgMCAwO1xuXHRcdHBhZGRpbmc6IDMwcHggMzJweCAyOHB4O1xuXHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICRuYXZ5IDAlLCAkZGFya05hdnkgMTAwJSk7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRoMSB7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRmb250LXNpemU6IDI0cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAkd2hpdGUtdHAtNzU7XG5cdFx0XHRtYXJnaW46IDhweCAwIDA7XG5cdFx0fVxuXG5cdFx0Ji5jb21wYWN0IHtcblx0XHRcdHBhZGRpbmc6IDI2cHggMzJweDtcblx0XHR9XG5cdH1cblxuXHQvKiBCb3RoIGxvZ28gZmlsZXMgYXJlIG5lYXItd2hpdGUgYXJ0d29yaywgc28gdGhleSBvbmx5IHJlYWQgb24gdGhlIG5hdnkgYmFuZCAtXG5cdCAgIG5ldmVyIG1vdmUgdGhlbSBvbnRvIHRoZSB3aGl0ZSBwYW5lbCBiZWxvdy4gKi9cblx0LmN1c3RvbS1mb3JtLWxvZ28ge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGhlaWdodDogMzBweDtcblx0XHR3aWR0aDogYXV0bztcblx0XHRtYXJnaW46IDAgYXV0byAxOHB4O1xuXHR9XG5cblx0LyogV3JpdHRlbiBvdXQgcmF0aGVyIHRoYW4gbmVzdGVkIGFzIGAuY29tcGFjdCAmYDogcG9zdGNzcy1uZXN0ZWQgcmVzb2x2ZXMgJiB0b1xuXHQgICB0aGUgd2hvbGUgYWNjdW11bGF0ZWQgcGFyZW50LCB3aGljaCB3b3VsZCBoYXZlIHB1dCAuY29tcGFjdCBvdXRzaWRlIHRoZSBwYWdlLiAqL1xuXHQuY3VzdG9tLWZvcm0tYmFubmVyLmNvbXBhY3QgLmN1c3RvbS1mb3JtLWxvZ28ge1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgQm9keVxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5jdXN0b20tZm9ybS1ib2R5IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuXHRcdHBhZGRpbmc6IDI2cHggMjhweCAyOHB4O1xuXHR9XG5cblx0LmN1c3RvbS1mb3JtLWxvYWRpbmcge1xuXHRcdG1pbi1oZWlnaHQ6IDMwdmg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR9XG5cblx0LyogU3VibWl0dGVkIC8gYmFkLXRva2VuIHN0YXRlcyBzaGFyZSBvbmUgY2VudHJlZCBjYXJkLiAqL1xuXHQuY3VzdG9tLWZvcm0tc3RhdGUge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG5cdFx0cGFkZGluZzogNDhweCAzMnB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdGgyIHtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRtYXJnaW46IDAgMCAxMHB4O1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0XHRsaW5lLWhlaWdodDogMS42O1xuXHRcdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0XHRtYXgtd2lkdGg6IDQ0Y2g7XG5cdFx0fVxuXHR9XG5cblx0LmN1c3RvbS1mb3JtLXN0YXRlLWljb24ge1xuXHRcdHdpZHRoOiA2MHB4O1xuXHRcdGhlaWdodDogNjBweDtcblx0XHRtYXJnaW46IDAgYXV0byAxOHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0xMDtcblx0XHRjb2xvcjogY29sb3IoJGdyZWVuIGwoLTEyJSkpO1xuXG5cdFx0Ji53YXJuaW5nIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY4ZTY7XG5cdFx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHR9XG5cdH1cblxuXHQuY3VzdG9tLWZvcm0taGludCB7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0bWFyZ2luOiAtOHB4IDAgMTJweDtcblx0fVxuXG5cdC8qIERheSAvIE1vbnRoIC8gWWVhciByYXRoZXIgdGhhbiBvbmUgbmF0aXZlIGRhdGUgaW5wdXQgLSBzZWUgdGhlIGNvbnRyb2xsZXIuICovXG5cdC5jdXN0b20tZm9ybS1kb2ItZmllbGRzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEwcHg7XG5cblx0XHQucGYtYW5zd2VyLWlucHV0IHtcblx0XHRcdGZsZXg6IDEgMSAxMTBweDtcblx0XHRcdG1pbi13aWR0aDogOTZweDtcblx0XHR9XG5cblx0XHQvKiBUaGUgeWVhciBsaXN0IGlzIHRoZSBsb25nIG9uZSwgc28gZ2l2ZSBpdCB0aGUgZXh0cmEgcm9vbS4gKi9cblx0XHQucGYtYW5zd2VyLWlucHV0Omxhc3QtY2hpbGQge1xuXHRcdFx0ZmxleDogMSAxIDEzMHB4O1xuXHRcdH1cblx0fVxuXG5cdC5jdXN0b20tZm9ybS1maWxlLW5hbWUge1xuXHRcdG1hcmdpbi10b3A6IDhweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0d29yZC1icmVhazogYnJlYWstd29yZDtcblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBQYWdlIGZvb3RlclxuXHQvKiBTYW1lIGxpbmUgdGhlIG1hcmtldGluZyBwYWdlcyBjYXJyeSwgc28gYSBwYXRpZW50IGFycml2aW5nIGNvbGQgZnJvbSBhblxuXHQvKiBlbWFpbCBsaW5rIGNhbiBzZWUgd2hvc2UgZm9ybSB0aGlzIGlzIGFuZCBmaW5kIHRoZSBwcml2YWN5IHBvbGljeS4gU2l0cyBvblxuXHQvKiB0aGUgcGFsZSBncm91bmQgYmVsb3cgdGhlIHBhbmVsLCBzbyBpdCBuZWVkcyBhIGRhcmtlciBpbmsgdGhhbiB0aGUgd2hpdGVcblx0LyogdGhlIG1hcmtldGluZyBmb290ZXJzIHVzZSAtICM1NDU5NmIgY2xlYXJzIEFBIG9uICNlN2YwZmYgYXQgNi4wNzoxLlxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5jdXN0b20tZm9ybS1wYWdlLWZvb3RlciB7XG5cdFx0bWF4LXdpZHRoOiA3ODBweDtcblx0XHRtYXJnaW46IDIycHggYXV0byAwO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdC5jb3B5cmlnaHQge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNjtcblx0XHRcdGNvbG9yOiAjNTQ1OTZiO1xuXG5cdFx0XHRhIHtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cblx0XHRcdFx0Jjpob3Zlcixcblx0XHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgU3VibWl0XG5cdC8qIEEgd2hpdGUgYmFuZCBjbG9zaW5nIHRoZSBwYW5lbCwgc28gdGhlIG9uZSBhY3Rpb24gaXMgbm90IGZsb2F0aW5nIG9uIHRoZVxuXHQvKiBzYW1lIHBhbGUgZ3JvdW5kIGFzIHRoZSBxdWVzdGlvbnMuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LmN1c3RvbS1mb3JtLWZvb3RlciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdHBhZGRpbmc6IDI0cHggMjhweCAyOHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG5cblx0LmN1c3RvbS1mb3JtLXN1Ym1pdC1idG4ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1pbi13aWR0aDogMjIwcHg7XG5cdFx0cGFkZGluZzogMTVweCAzNHB4O1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAkbmF2eSAwJSwgJGRhcmtOYXZ5IDEwMCUpO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRsaW5lLWhlaWdodDogMTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Ym94LXNoYWRvdzogMCA0cHggMTRweCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE2cyBjdWJpYy1iZXppZXIoMC4zNCwgMS41NiwgMC42NCwgMSksXG5cdFx0XHRib3gtc2hhZG93IDAuMTZzIGVhc2UsXG5cdFx0XHRmaWx0ZXIgMC4xNnMgZWFzZTtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdH1cblxuXHRcdCY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuXHRcdFx0ZmlsdGVyOiBicmlnaHRuZXNzKDEuMTIpO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuXHRcdFx0Ym94LXNoYWRvdzogMCA4cHggMjBweCByZ2JhKDAsIDUzLCAyMTAsIDAuMyk7XG5cdFx0fVxuXG5cdFx0JjphY3RpdmU6bm90KDpkaXNhYmxlZCkge1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG5cdFx0fVxuXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcblx0XHR9XG5cblx0XHQmOmRpc2FibGVkIHtcblx0XHRcdGJhY2tncm91bmQ6ICNkM2Q5ZTY7XG5cdFx0XHRjb2xvcjogI2ZiZmNmZjtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdFx0dHJhbnNmb3JtOiBub25lO1xuXHRcdFx0ZmlsdGVyOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC8qIEEgYmxvY2sgYSBzZW50ZW5jZSBjYW4gYnJlYXRoZSBpbiwgbm90IGEgYm9sZCBwaWxsLiBTbWFsbCBib2xkIHJlZCBvbiBwaW5rIGlzXG5cdCAgIHRoZSBoYXJkZXN0IGNvbWJpbmF0aW9uIHRvIHJlYWQgb2YgYW55dGhpbmcgb24gdGhpcyBwYWdlLCBhbmQgdGhlIHBlcnNvblxuXHQgICByZWFkaW5nIGl0IGhhcyBqdXN0IGJlZW4gc3RvcHBlZCBmcm9tIGZpbmlzaGluZyBhIGZvcm0gLSBzbzogcmVndWxhciB3ZWlnaHQsXG5cdCAgIGEgbGl0dGxlIGxhcmdlciwgbGVmdC1hbGlnbmVkIHNvIGEgd3JhcHBlZCBzZWNvbmQgbGluZSBzdGFydHMgd2hlcmUgdGhlIGV5ZVxuXHQgICByZXR1cm5zLCBhbmQgYW4gYWNjZW50IGVkZ2UgaW5zdGVhZCBvZiBzaG91dGluZyBpbiBjb2xvdXIuXG5cblx0ICAgQm90aCBpbmtzIGFyZSBkYXJrZW5lZCBmb3IgY29udHJhc3QuIFRoZSBvcmlnaW5hbHMgbWVhc3VyZWQgMy40NjoxIChlcnJvcilcblx0ICAgYW5kIDMuNDQ6MSAoc3VjY2VzcyksIHVuZGVyIHRoZSA0LjU6MSBBQSBuZWVkcyBhdCB0aGlzIHNpemU7ICRkYW5nZXIgYW5kIGFcblx0ICAgZGVlcGVyIGdyZWVuIHRha2UgdGhlbSB0byA1LjExOjEgYW5kIDUuMDk6MS4gKi9cblx0LmN1c3RvbS1mb3JtLW1lc3NhZ2Uge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1heC13aWR0aDogNDYwcHg7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDEycHggMTZweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRmb250LXNpemU6IDEzLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRsaW5lLWhlaWdodDogMS41NTtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXG5cdFx0aSB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHR9XG5cblx0XHQmLnN1Y2Nlc3Mge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdFx0Y29sb3I6IGNvbG9yKCRncmVlbiBsKC0yMCUpKTtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmVlbi10cC0zMDtcblx0XHRcdGJvcmRlci1sZWZ0OiAzcHggc29saWQgY29sb3IoJGdyZWVuIGwoLTIwJSkpO1xuXHRcdH1cblxuXHRcdCYuZXJyb3Ige1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZkZWNlYTtcblx0XHRcdGNvbG9yOiAkZGFuZ2VyO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgxNjksIDY4LCA2NiwgMC4yNSk7XG5cdFx0XHRib3JkZXItbGVmdDogM3B4IHNvbGlkICRkYW5nZXI7XG5cdFx0fVxuXHR9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuXHQuY3VzdG9tLWZvcm0tcGFnZSB7XG5cdFx0cGFkZGluZzogMTZweCAwIDMycHg7XG5cblx0XHRiYWNrZ3JvdW5kLXNpemU6IDE4MHB4IDE4MHB4LCAxMDAlIDIxMHB4LCAxMDAlIDIxMHB4O1xuXG5cdFx0LmN1c3RvbS1mb3JtLXBhbmVsIHtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdH1cblxuXHRcdC5jdXN0b20tZm9ybS1iYW5uZXIge1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGcgJGJvcmRlci1yYWRpdXMtbGcgMCAwO1xuXHRcdFx0cGFkZGluZzogMjRweCAyMHB4IDIycHg7XG5cblx0XHRcdGgxIHtcblx0XHRcdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5jdXN0b20tZm9ybS1ib2R5IHtcblx0XHRcdHBhZGRpbmc6IDE4cHggMTZweCAyMHB4O1xuXHRcdH1cblxuXHRcdC5jdXN0b20tZm9ybS1mb290ZXIge1xuXHRcdFx0cGFkZGluZzogMThweCAxNnB4IDIwcHg7XG5cdFx0fVxuXG5cdFx0LmN1c3RvbS1mb3JtLXN1Ym1pdC1idG4ge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXHR9XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cdC5jdXN0b20tZm9ybS1wYWdlIC5jdXN0b20tZm9ybS1zdWJtaXQtYnRuIHtcblx0XHR0cmFuc2l0aW9uOiBub25lO1xuXG5cdFx0Jjpob3Zlcjpub3QoOmRpc2FibGVkKSxcblx0XHQmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG5cdFx0XHR0cmFuc2Zvcm06IG5vbmU7XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUmVzcG9uc2l2ZVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7XG5cdC5wYXRpZW50LWZvcm1zLWRpYWxvZyB7XG5cdFx0bWluLXdpZHRoOiA5NiU7XG5cdFx0d2lkdGg6IDk2JTtcblx0fVxuXG5cdC5zZXR0aW5ncy1zaGVsbC5wYXRpZW50LWZvcm1zIHtcblx0XHQuc2V0dGluZ3MtbmF2IHtcblx0XHRcdGZsZXg6IDAgMCBhdXRvO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXG5cdFx0LnNldHRpbmdzLW5hdi1ncm91cC5uYXYtZ3JvdXAtY3JlYXRlIHtcblx0XHRcdGJvcmRlci1ib3R0b206IG5vbmU7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdH1cblxuXHRcdC8qIFRoZSByYWlsIGlzIGEgaG9yaXpvbnRhbCBzdHJpcCBvbiBuYXJyb3cgc2NyZWVuczsgdGhlIG5vdGUgd291bGQgYnJlYWsgdGhlIHJvdy4gKi9cblx0XHQubmF2LWVtcHR5LW5vdGUge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQuc2V0dGluZ3MtcGFuZS1ib2R5IHtcblx0XHRcdHBhZGRpbmc6IDE4cHggMTZweDtcblx0XHR9XG5cblx0XHQucGYtYW5zd2VyLXJvdyB7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0Z2FwOiA0cHg7XG5cblx0XHRcdC5wZi1hbnN3ZXItcXVlc3Rpb24ge1xuXHRcdFx0XHRmbGV4OiAxIDEgYXV0bztcblx0XHRcdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qIE5vIHJvb20gYmVzaWRlIHRoZSBsaXN0OiB0aGUgcGFsZXR0ZSBiZWNvbWVzIGEgcm93IG9mIHRpbGVzIHVuZGVyIGl0LiAqL1xuXHRcdC5wZi1idWlsZGVyLWxheW91dCB7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cdFx0fVxuXG5cdFx0LnBmLWNvbXBvbmVudC1wYWxldHRlIHtcblx0XHRcdHBvc2l0aW9uOiBzdGF0aWM7XG5cdFx0XHRmbGV4OiAwIDAgYXV0bztcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cblx0XHRcdC5wZi1wYWxldHRlLXRpdGxlIHtcblx0XHRcdFx0ZmxleC1iYXNpczogMTAwJTtcblx0XHRcdH1cblxuXHRcdFx0LnBmLXBhbGV0dGUtdGlsZSB7XG5cdFx0XHRcdGZsZXg6IDEgMSAxNjBweDtcblx0XHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qIEFueW9uZSB3aG8gaGFzIGFza2VkIGZvciBsZXNzIG1vdGlvbiBnZXRzIHRoZSBzd2FwIHdpdGhvdXQgdGhlIGxpZnQuICovXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXHQuc2V0dGluZ3Mtc2hlbGwucGF0aWVudC1mb3JtcyAucGYtcGFuZS5uZy1lbnRlciB7XG5cdFx0YW5pbWF0aW9uOiBub25lO1xuXHR9XG5cblx0LnNldHRpbmdzLXNoZWxsLnBhdGllbnQtZm9ybXMgLnBmLXF1ZXN0aW9uLWNhcmQsXG5cdC5zZXR0aW5ncy1zaGVsbC5wYXRpZW50LWZvcm1zIC5wZi1pY29uLWJ0bixcblx0LnNldHRpbmdzLXNoZWxsLnBhdGllbnQtZm9ybXMgLnBmLXBhbGV0dGUtdGlsZSxcblx0LnNldHRpbmdzLXNoZWxsLnBhdGllbnQtZm9ybXMgLnBmLWFkZC1pbmxpbmUsXG5cdC5wZi1mb3JtLXJlbmRlciAucGYtY2hvaWNlLFxuXHQucGYtZm9ybS1yZW5kZXIgLnBmLWFuc3dlci1pbnB1dCB7XG5cdFx0dHJhbnNpdGlvbjogbm9uZTtcblx0fVxuXG5cdC5zZXR0aW5ncy1zaGVsbC5wYXRpZW50LWZvcm1zIC5wZi1zZW5kLWJ0biB7XG5cdFx0dHJhbnNpdGlvbjogbm9uZTtcblxuXHRcdCY6aG92ZXI6bm90KDpkaXNhYmxlZCksXG5cdFx0JjphY3RpdmU6bm90KDpkaXNhYmxlZCkge1xuXHRcdFx0dHJhbnNmb3JtOiBub25lO1xuXHRcdH1cblx0fVxufVxuXG4vKiBtZC10b29sdGlwIHJlbmRlcnMgYXQgdGhlIGRvY3VtZW50IGJvZHksIG91dHNpZGUgLnNldHRpbmdzLXNoZWxsLCBzbyB0aGlzIHJ1bGVcbiAgIGNhbm5vdCBiZSBuZXN0ZWQgdW5kZXIgaXQuICovXG4ubWQtdG9vbHRpcC5wZi1leHBvcnQtdG9vbHRpcCB7XG5cdGNvbG9yOiAkbmF2eTtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRmb250LXNpemU6IDEycHg7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRtYXgtd2lkdGg6IDEycmVtO1xuXG5cdC8qIE1hdGVyaWFsIGNhcHMgLm1kLXRvb2x0aXAgYXQgb25lIGNsaXBwZWQgbGluZTsgbGV0IGl0IGdyb3cgdG8gZml0IHdyYXBwZWQgdGV4dC4gKi9cblx0aGVpZ2h0OiBhdXRvO1xuXHR3aGl0ZS1zcGFjZTogbm9ybWFsO1xuXHRvdmVyZmxvdzogdmlzaWJsZTtcblx0dGV4dC1vdmVyZmxvdzogY2xpcDtcblx0bGluZS1oZWlnaHQ6IDEuNDtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgRmVhdHVyZSB0aXBzICh0aXAgb2YgdGhlIGRheSlcbi8qIFNhbWUgY2FyZCBsYW5ndWFnZSBhcyBfcGF5bWVudHMuY3NzIC8gX3NldHRpbmdzLmNzcyBzbyB0aGUgdGlwIHJlYWRzXG4vKiBhcyBwYXJ0IG9mIHRoZSBwcm9kdWN0IHJhdGhlciB0aGFuIGFuIGFkdmVydC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnRpcC1jYXJkIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdGJvcmRlci1sZWZ0OiAzcHggc29saWQgJG5hdnk7XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG5cdHBhZGRpbmc6IDE2cHggMThweDtcblx0bWF4LXdpZHRoOiA0NjBweDtcblx0bWFyZ2luLXRvcDogOHB4O1xuXG5cdC50aXAtaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDEycHg7XG5cdH1cblxuXHQudGlwLWV5ZWJyb3cge1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHR9XG5cdH1cblxuXHQudGlwLXBhZ2VyIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNHB4O1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHR9XG5cblx0LnRpcC1hcnJvdyxcblx0LnRpcC1jbG9zZSB7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0cGFkZGluZzogMnB4IDVweDtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuXHRcdH1cblx0fVxuXG5cdC50aXAtY2xvc2Uge1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRtYXJnaW4tbGVmdDogMnB4O1xuXHR9XG5cblx0LnRpcC1ib2R5IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogMTNweDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0fVxuXG5cdC50aXAtaWNvbiB7XG5cdFx0d2lkdGg6IDM4cHg7XG5cdFx0aGVpZ2h0OiAzOHB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNlN2YwZmY7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdH1cblxuXHQudGlwLXRleHQge1xuXHRcdG1pbi13aWR0aDogMDtcblxuXHRcdGg1IHtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRtYXJnaW46IDAgMCA1cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0LnRpcC1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdG1hcmdpbi10b3A6IDE0cHg7XG5cdFx0cGFkZGluZy1sZWZ0OiA1MXB4O1xuXG5cdFx0LmJ0biB7XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdG1heC13aWR0aDogbm9uZTtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcblx0LnRpcC1jYXJkIHtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cblx0XHQudGlwLWFjdGlvbnMge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdH1cblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBFQ0xJUFNFIEluLVBhdGllbnQgQ2xhaW0gKHR5cm9NZWRpcGFzc1dpZGdldClcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIEEgZm9yd2FyZHMtb25seSB0aHJlZSBzdGVwIGZsb3cgLSB2ZXJpZnksIGNoZWNrIGVsaWdpYmlsaXR5LCBsb2RnZSAtXG4vKiBpbnNpZGUgdGhlIGNsYWltIG1vZGFsLiBSZWFkcyB0b3AgdG8gYm90dG9tLCBlYWNoIHN0ZXAgZW5kaW5nIGluIG9uZVxuLyogYWN0aW9uIGJhci4gTGVhdmluZyB0aGUgZmxvdyBpcyB0aGUgY2xhaW0gbW9kYWwncyBvd24gQmFjayBsaW5rLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZWNsaXBzZS1mbG93IHtcbiAgICBwYWRkaW5nOiAxLjVyZW0gMS43NXJlbSAxLjc1cmVtO1xufVxuXG4uZWNsaXBzZS1mbG93X190aXRsZSB7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uZWNsaXBzZS1mbG93X19sZWFkIHtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgbWF4LXdpZHRoOiA2MHJlbTtcbiAgICBtYXJnaW46IDAgMCAxLjI1cmVtO1xufVxuXG4vKiBTZXBhcmF0ZXMgdGhlIHNlY3Rpb25zIG9mIGEgbG9uZyBmb3JtIHRoZSB3YXkgdGhlIGNsaW5pY2FsIG5vdGVzIGRvIC0gdGhlXG4gICBsZWZ0LXBhY2tlZCByb3dzIGFsb25lIGRvIG5vdCBtYWtlIHRoZSBicmVha3Mgb2J2aW91cy4gJGdyZXktYm9yZGVyLWxpZ2h0XG4gICByYXRoZXIgdGhhbiB0aGUgbm90ZXMnICNkZGQsIHRvIG1hdGNoIHRoZSBhY3Rpb24gYmFyJ3MgdG9wIGJvcmRlciBiZWxvdy4gKi9cbi5lY2xpcHNlLWRpdmlkZXIge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIG1hcmdpbjogMi41ZW0gMCAxLjVlbTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBTdGVwcGVyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5lY2xpcHNlLXN0ZXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNzVyZW07XG4gICAgbWFyZ2luOiAxLjI1cmVtIDAgMS41cmVtO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5lY2xpcHNlLXN0ZXBwZXJfX3N0ZXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNnJlbTtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgZmxleDogMCAxIGF1dG87XG59XG5cbi8qIERyYXduIGJ5IHRoZSBzdGVwIGl0IGxlYWRzIGludG8sIHNvIGl0IGNhbiBuZXZlciBkYW5nbGUgb2ZmIHRoZSBsYXN0IG9uZS4gKi9cbi5lY2xpcHNlLXN0ZXBwZXJfX3N0ZXAgKyAuZWNsaXBzZS1zdGVwcGVyX19zdGVwIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGZsZXg6IDEgMSAxLjVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMS41cmVtO1xuICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgfVxufVxuXG4uZWNsaXBzZS1zdGVwcGVyX19tYXJrZXIge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHdpZHRoOiAyNnB4O1xuICAgIGhlaWdodDogMjZweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYm9yZGVyOiAycHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZTtcbn1cblxuLmVjbGlwc2Utc3RlcHBlcl9fbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjI1cyBlYXNlO1xufVxuXG4uZWNsaXBzZS1zdGVwcGVyX19zdGVwLS1hY3RpdmUge1xuICAgIC5lY2xpcHNlLXN0ZXBwZXJfX21hcmtlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJG5hdnk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cbiAgICAuZWNsaXBzZS1zdGVwcGVyX19sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICB9XG59XG5cbi5lY2xpcHNlLXN0ZXBwZXJfX3N0ZXAtLWRvbmUge1xuICAgIC5lY2xpcHNlLXN0ZXBwZXJfX21hcmtlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGdyZWVuO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW47XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxuICAgIC5lY2xpcHNlLXN0ZXBwZXJfX2xhYmVsIHtcbiAgICAgICAgY29sb3I6ICR0ZXh0R3JleTtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgRm9ybSByb3dzIGFuZCBmaWVsZHNcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIE5vdCBncmlkIHJvd3MuIEluIGEgZGlhbG9nIDgwJSBvZiB0aGUgd2luZG93IHdpZGUsIHRoZSAxMiBjb2x1bW4gZ3JpZFxuLyogZGVhbHMgZXZlcnkgZmllbGQgYW4gZXF1YWwgc2hhcmUsIHNvIGFuIDggY2hhcmFjdGVyIHByb3ZpZGVyIG51bWJlclxuLyogZ2V0cyB0aGUgc2FtZSA3MDBweCBib3ggYXMgYSBmcmVlIHRleHQgZGVzY3JpcHRpb24uIEhlcmUgZWFjaCBmaWVsZCBpc1xuLyogYXMgd2lkZSBhcyB0aGUgdmFsdWUgaXQgaG9sZHMgYW5kIHRoZSByb3cgcGFja3MgbGVmdCwgbGVhdmluZyB0aGVcbi8qIHNsYWNrIGFzIHdoaXRlc3BhY2UgYXQgdGhlIGVuZCByYXRoZXIgdGhhbiBpbnNpZGUgZXZlcnkgZmllbGQuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5lY2xpcHNlLWZvcm1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGNvbHVtbi1nYXA6IDEuNXJlbTtcblxuICAgIC8qIFNpemVkIGJ5IHRoZWlyIGNvbnRlbnRzLCBuZXZlciBzdHJldGNoZWQuIC5mb3JtLWdyb3VwJ3Mgb3duIGJvdHRvbVxuICAgICAgIG1hcmdpbiBzcGFjZXMgdGhlIHdyYXBwZWQgbGluZXMuICovXG4gICAgPiAuZm9ybS1ncm91cCB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLyogT3IgYSBzZW50ZW5jZSBvZiBoZWxwIHVuZGVyIGEgbmFycm93IGZpZWxkIHNldHMgdGhlIHdob2xlIGdyb3VwJ3Mgd2lkdGguICovXG4gICAgLmhlbHAtYmxvY2sge1xuICAgICAgICBtYXgtd2lkdGg6IDIwcmVtO1xuICAgIH1cbn1cblxuLyogQWxpZ25zIGFuIHVubGFiZWxsZWQgY29udHJvbCAtIHRoZSByZW1vdmUgYnV0dG9uIC0gd2l0aCB0aGUgaW5wdXRzLCBub3RcbiAgIHRoZWlyIGxhYmVscy4gKi9cbi5lY2xpcHNlLWZvcm1yb3dfX3NwYWNlci1sYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBBIGxhYmVsIHRoYXQgd3JhcHMgcHV0cyBpdHMgZmllbGQgYSBsaW5lIGxvd2VyIHRoYW4gdGhlIG9uZXMgYmVzaWRlIGl0LCBzb1xuICAgdGhlIHJvdydzIGlucHV0cyBubyBsb25nZXIgc2l0IG9uIG9uZSBsaW5lLiBUaGUgbGFiZWxzIGhlcmUgYXJlIHNob3J0IGFuZCB0aGVcbiAgIGNvbHVtbnMgYXJlIHdpZGUsIHNvIGhvbGRpbmcgdGhlbSB0byBvbmUgbGluZSBjb3N0cyBub3RoaW5nIGFuZCBrZWVwcyB0aGVcbiAgIGlucHV0cyBsZXZlbC4gKi9cbi5lY2xpcHNlLWZvcm1yb3cgLmNvbnRyb2wtbGFiZWwsXG4uZWNsaXBzZS1maWVsZGdyaWQgLmNvbnRyb2wtbGFiZWwge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgRmllbGQgaGludHNcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIFdoYXQgdXNlZCB0byBiZSBhIGxpbmUgb2YgaGVscCB1bmRlciB0aGUgZmllbGQuIEhlbGQgaW4gYSB0b29sdGlwIG9uXG4vKiB0aGUgbGFiZWwgaW5zdGVhZDogbW9zdCBvZiB0aGVzZSBoaW50cyBvbmx5IGFwcGx5IHRvIHNvbWUgY2xhaW1zLCBhbmRcbi8qIHVuZGVyIHRoZSBmaWVsZCBlYWNoIG9uZSBhcHBlYXJpbmcgYW5kIGRpc2FwcGVhcmluZyBtb3ZlZCBldmVyeXRoaW5nXG4vKiBiZWxvdyBpdCBhcyB0aGUgZm9ybSB3YXMgZmlsbGVkIGluLiBPbiB0aGUgbGFiZWwgdGhleSBjaGFuZ2Ugbm90aGluZ1xuLyogYnV0IHRoZSBsYWJlbC5cbi8qXG4vKiBFcnJvcnMgYXJlIG5vdCBoaW50cyBhbmQgc3RheSB3aGVyZSB0aGV5IGFyZSAtIGEgbWVzc2FnZSBzYXlpbmcgdGhlXG4vKiBjbGFpbSB3aWxsIGJlIHJlamVjdGVkIGhhcyB0byBiZSByZWFkLCBub3QgZm91bmQgYnkgaG92ZXJpbmcuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFRoZSBnbHlwaCBpcyBhIGNoaWxkIHJhdGhlciB0aGFuIHRoaXMgZWxlbWVudCBpdHNlbGYsIHNvIHRoYXQgdGhpcyBlbGVtZW50IGlzIHRoZVxuICAgd2hvbGUgYWZmb3JkYW5jZS4gbWQtdG9vbHRpcCBoYW5ncyBvZmYgaXRzIGltbWVkaWF0ZSBET00gcGFyZW50IGZvciBib3RoIHRoZSBob3ZlclxuICAgdGFyZ2V0IGFuZCB0aGUgYXJpYS1sYWJlbCBpdCBtYXkgc2V0LCBzbyB0aGF0IHBhcmVudCB3YW50cyB0byBiZSB0aGUgaGludCBhcyBhXG4gICB3aG9sZSwgbm90IHRoZSBnbHlwaCBpbnNpZGUgaXQuXG5cbiAgIChBbiBlYXJsaWVyIG5vdGUgaGVyZSBzYWlkIHRoZSB0b29sdGlwIHdvdWxkIGluaGVyaXQgdGhlIGdseXBoaWNvbiBmb250IGFuZCBjb21lXG4gICBvdXQgYXMgZ2x5cGhzLiBJdCB3b3VsZCBub3QgLSBtZC10b29sdGlwIGRldGFjaGVzIGl0c2VsZiBhdCBsaW5rIHRpbWUgYW5kIHJlbmRlcnNcbiAgIHVuZGVyIDxib2R5Pi4gVGhlIHN0cnVjdHVyZSBpcyByaWdodDsgdGhhdCB3YXMgdGhlIHdyb25nIHJlYXNvbiBmb3IgaXQuKSAqL1xuLmVjbGlwc2UtaGludCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1sZWZ0OiAwLjNyZW07XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIGN1cnNvcjogaGVscDtcblxuICAgIC5nbHlwaGljb24ge1xuICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgIC8qIC5nbHlwaGljb24gbnVkZ2VzIGl0c2VsZiBkb3duIGEgcGl4ZWwgdG8gc2l0IGluIGEgbGluZSBvZiB0ZXh0OyBiZXNpZGUgYVxuICAgICAgICAgICBsYWJlbCBpdCByZWFkcyBhcyBzaXR0aW5nIGxvdy4gKi9cbiAgICAgICAgdG9wOiAwO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJG5hdnk7XG4gICAgfVxufVxuXG4vKiBBbmd1bGFyIE1hdGVyaWFsJ3Mgb3duIHRvb2x0aXAgaXMgYSBub3dyYXAgY2hpcDogYSBzZW50ZW5jZSBjb21lcyBvdXQgYXMgb25lXG4gICBsaW5lIGZvdXIgdGltZXMgdGhlIHdpZHRoIG9mIHRoZSBmaWVsZCBpdCBleHBsYWlucy4gRHJlc3NlZCBsaWtlIHRoZSBTTk9NRURcbiAgIGNvbmNlcHQgdG9vbHRpcCBpbnN0ZWFkIC0gYSBzbWFsbCBsaWdodCBjYXJkIHRoYXQgd3JhcHMgLSBhbmQgaGVsZCB0byBhIHdpZHRoXG4gICBhIHNlbnRlbmNlIHJlYWRzIHdlbGwgYXQuXG5cbiAgIFNwZWNpZmljaXR5IG92ZXIgdGhlIHRoZW1lJ3Mgb3duIC5tZC10b29sdGlwIHJ1bGUsIHdoaWNoIGlzIGluamVjdGVkIGludG8gdGhlXG4gICBoZWFkIGF0IGJvb3RzdHJhcCBhbmQgc28gd2lucyBhIHRpZSBhZ2FpbnN0IHRoaXMgZmlsZS4gKi9cbmJvZHkgLm1kLXRvb2x0aXAuZWNsaXBzZS10b29sdGlwIHtcbiAgICBtYXgtd2lkdGg6IDE2cmVtO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgY29sb3I6ICR0ZXh0R3JleTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4vKiBUaGUgY2FyZCBpcyBvcGFxdWUsIHdoZXJlIHRoZSBjaGlwIGl0IHJlcGxhY2VzIGlzIHJlYWQgdGhyb3VnaC4gKi9cbmJvZHkgLm1kLXRvb2x0aXAuZWNsaXBzZS10b29sdGlwLm1kLXNob3cge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi8qIENhdFRyYXgncyBvd24gYWN0aW9uIGljb25zLCBhdCB0aGUgMTZweCBldmVyeSBvdGhlciBkZWxldGUgaW4gdGhlIGFwcCB1c2VzLiBDZW50cmVkIGluIHRoZSBidXR0b24gZnJhbWVcbiAgIHJhdGhlciB0aGFuIHNpdHRpbmcgb24gdGhlIHRleHQgYmFzZWxpbmUsIHdoaWNoIGlzIHdoZXJlIGFuIGlubGluZSBpbWcgbGFuZHMgYnkgZGVmYXVsdC4gKi9cbi5lY2xpcHNlLWljb24ge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4vKiBUaGUgcm93J3MgaWNvbiBhY3Rpb25zIC0gdGhlIG9wdGlvbnMgY2hldnJvbiBhbmQgdGhlIGJpbi4gVW5mcmFtZWQ6IGEgLmJ0bi1kZWZhdWx0IGJveCBhcm91bmQgYSAxNnB4IGdseXBoXG4gICBjYXJyaWVzIG1vcmUgd2VpZ2h0IHRoYW4gdGhlIGlucHV0cyBpdCBzaXRzIGJlc2lkZSwgYW5kIHRoZXJlIGFyZSB0d28gb2YgdGhlbSBvbiBldmVyeSBpdGVtIHJvdy4gVGhlIGljb24gaXNcbiAgIHRoZSBhZmZvcmRhbmNlLCB0aGUgd2F5IGl0IGlzIGV2ZXJ5d2hlcmUgZWxzZSB0aGVzZSBpY29ucyBhcHBlYXIgaW4gdGhlIGFwcC5cblxuICAgU2l6ZWQgdG8ga2VlcCB0aGUgY2xpY2sgdGFyZ2V0IGhvbmVzdCwgYW5kIHRvIHN0YXkgbGV2ZWwgd2l0aCB0aGUgaW5wdXRzIG9uIHRoZSByb3cuICovXG4uZWNsaXBzZS1pY29uYnRuIHtcbiAgICBib3JkZXI6IDA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBwYWRkaW5nOiA2cHggOHB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICB9XG59XG5cbi5lY2xpcHNlLWZpZWxkIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi8qIDMtNiBkaWdpdHM6IE1CUyBpdGVtIG51bWJlcnMsIGFuZCB0aGUgc2hvcnRlciB3aG9sZSBudW1iZXJzIGJlc2lkZSB0aGVtLiAqL1xuLmVjbGlwc2UtZmllbGQtLW51bWJlciB7XG4gICAgd2lkdGg6IDlyZW07XG59XG5cbi8qIEV4YWN0bHkgOCBjaGFyYWN0ZXJzOiBNZWRpY2FyZSBwcm92aWRlciBudW1iZXJzIGFuZCBmYWNpbGl0eSBJRHMuICovXG4uZWNsaXBzZS1maWVsZC0tY29kZSB7XG4gICAgd2lkdGg6IDExcmVtO1xufVxuXG4uZWNsaXBzZS1maWVsZC0tbW9uZXkge1xuICAgIHdpZHRoOiAxMHJlbTtcbn1cblxuLyogRGF0ZSBpbnB1dHMgY2FycnkgcGlja2VyIGZ1cm5pdHVyZSwgc28gdGhleSBuZWVkIG1vcmUgdGhhbiB0ZW4gY2hhcmFjdGVycy4gKi9cbi5lY2xpcHNlLWZpZWxkLS1kYXRlIHtcbiAgICB3aWR0aDogMTNyZW07XG59XG5cbi8qIEEgZGF0ZSBvZiBiaXJ0aCwgdHlwZWQgYXMgZGF5IC8gbW9udGggLyB5ZWFyIGluc3RlYWQgb2YgcGlja2VkIG9mZiBhIGNhbGVuZGFyLiBUaGUgb25lIGRhdGUgb24gdGhpcyBmb3JtIHRoYXRcbiAgIGlzIGRlY2FkZXMgb2xkLCBhbmQgYSBwaWNrZXIgb3BlbnMgb24gdGhpcyBtb250aCAtIHNvIGl0IGlzIHRocmVlIGJveGVzLCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgc3Bva2VuLCB3aGljaFxuICAgaXMgYWxzbyB0aGUgb25seSB3YXkgdG8gbWFrZSB0aGUgZmllbGQgcmVhZCBkZC9tbS95eXl5IChhIG5hdGl2ZSBkYXRlIGlucHV0IHJlbmRlcnMgaW4gdGhlIGJyb3dzZXIncyBsb2NhbGUpLlxuICAgU2l6ZWQgdG8gLmVjbGlwc2UtZmllbGQtLWRhdGUgc28gaXQgbGluZXMgdXAgd2l0aCB0aGUgcmVhbCBkYXRlcyBpbiB0aGUgc2FtZSBncmlkLiAqL1xuLmVjbGlwc2UtZG9iIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMC4zNXJlbTtcbiAgICB3aWR0aDogMTNyZW07XG5cbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMC4zNXJlbTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMC4zNXJlbTtcbiAgICB9XG5cbiAgICAvKiBEYXkgYW5kIG1vbnRoIHRha2UgdHdvIGRpZ2l0cywgdGhlIHllYXIgZm91ciwgc28gdGhlIHllYXIgZ2V0cyB0aGUgcm9vbS4gKi9cbiAgICAuZm9ybS1jb250cm9sOm50aC1jaGlsZCgxKSxcbiAgICAuZm9ybS1jb250cm9sOm50aC1jaGlsZCgyKSB7XG4gICAgICAgIGZsZXg6IDEgMSAwO1xuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2w6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgZmxleDogMS42IDEgMDtcbiAgICB9XG59XG5cbi8qIFVwIHRvIDIwIGNoYXJhY3RlcnMsIHdoZXJlIHRoZSBwbGFjZWhvbGRlciBpcyBsb25nZXIgdGhhbiB0aGUgdmFsdWUuICovXG4uZWNsaXBzZS1maWVsZC0tcmVmIHtcbiAgICB3aWR0aDogMThyZW07XG59XG5cbi8qIEZyZWUgdGV4dDogdGhlIGNsYWltIGl0ZW0gZGVzY3JpcHRpb24uICovXG4uZWNsaXBzZS1maWVsZC0tdGV4dCB7XG4gICAgd2lkdGg6IDI2cmVtO1xufVxuXG4vKiBTVFVCIGNvZGUgcGx1cyBhIGZldyB3b3Jkcy4gRUNMSVBTRSBjYXBzIGl0IGF0IDUwIGNoYXJhY3RlcnMsIGJ1dCBzaXplZCB0b1xuICAgd2hhdCBpcyBub3JtYWxseSB0eXBlZCByYXRoZXIgdGhhbiB0byB0aGUgbWF4aW11bS4gKi9cbi5lY2xpcHNlLWZpZWxkLS1zdHViIHtcbiAgICB3aWR0aDogMTNyZW07XG59XG5cbi8qIFRoZSBjbGFpbSBpdGVtIHBpY2tlciwgd2hpY2ggc2hvd3MgXCI0MjcwMiAtIENhdGFyYWN0IGV4dHJhY3Rpb24gLi4uXCIuICovXG4uZWNsaXBzZS1maWVsZC0taXRlbSB7XG4gICAgd2lkdGg6IDI0cmVtO1xufVxuXG4vKiBTaXplZCBieSB0aGUgbG9uZ2VzdCBvcHRpb24gYW5kIGl0cyBhcnJvdywgbm90IGJ5IHRoZSBjb2RlIGhlbGQuICovXG4uZWNsaXBzZS1maWVsZC0tY2hvaWNlLXNtIHtcbiAgICB3aWR0aDogMTFyZW07XG59XG5cbi5lY2xpcHNlLWZpZWxkLS1jaG9pY2Uge1xuICAgIHdpZHRoOiAxNXJlbTtcbn1cblxuLmVjbGlwc2UtZmllbGQtLWNob2ljZS13aWRlIHtcbiAgICB3aWR0aDogMTlyZW07XG59XG5cbi8qIFRoZSBwcmVzZW50aW5nIGlsbG5lc3MgcGlja2VyLCB3aG9zZSBvcHRpb25zIHJ1biBcIjMyMiAtIEJvbmUgTWFycm93IHRyYW5zZnVzaW9uXG4gICBvciB0cmFuc3BsYW50IChhdXRvbG9nb3VzIGFuZCBhbGxvZ2VuZWljIGluY2wgaGFydmVzdGluZywgY3J5b3ByZXNlcnZhdGlvbilcIi5cbiAgIE1lZGljYXJlIHdyaXRlcyB0aGUgZGVzY3JpcHRpb25zLCBzbyB0aGVpciBsZW5ndGggaXMgbm90IG91cnMgdG8gdHJpbTogc2l6ZWQgdG9cbiAgIGl0cyBsb25nZXN0IG9wdGlvbiBsaWtlIHRoZSBwb2xpY3kgcGlja2VyIGJlbG93LCB3aXRoIC5lY2xpcHNlLWZpZWxkJ3NcbiAgIG1heC13aWR0aCBrZWVwaW5nIGl0IGluc2lkZSB0aGUgZm9ybS4gKi9cbi5lY2xpcHNlLWZpZWxkLS1pbGxuZXNzIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtaW4td2lkdGg6IDMwcmVtO1xufVxuXG4vKiBUaGUgaGVhbHRoIGZ1bmQgcG9saWN5IHBpY2tlciwgd2hvc2Ugb3B0aW9ucyBydW4gXCJCdXBhIC0gIzg4ODEyMzQ1IC0gT3ZlcnNlYXNcbiAgIFZpc2l0b3IgSGVhbHRoIENvdmVyIChPVkhDKSAtIExBUFNFRFwiLiBFdmVyeSBwYXJ0IG9mIHRoYXQgZWFybnMgaXRzIHBsYWNlIC1cbiAgIHR3byBwb2xpY2llcyBhdCB0aGUgc2FtZSBmdW5kIGFyZSB0b2xkIGFwYXJ0IGJ5IHRoZSBjb3ZlciB0eXBlLCBhbmQgdGhlIHN0YXR1c1xuICAgaXMgYSByZWFzb24gbm90IHRvIGNsYWltIG9uIG9uZSAtIHNvIHRoZSBvcHRpb24gaGFzIHRvIGJlIHJlYWRhYmxlIGluIGZ1bGwuXG4gICBIb3cgd2lkZSB0aGF0IGlzIGRlcGVuZHMgb24gdGhlIHBhdGllbnQncyBwb2xpY2llcyByYXRoZXIgdGhhbiBvbiBhbnl0aGluZ1xuICAgdGhpcyBmaWxlIGtub3dzLCBzbyB0aGUgZmllbGQgaXMgc2l6ZWQgdG8gaXRzIGxvbmdlc3Qgb3B0aW9uIGluc3RlYWQgb2YgdG8gYVxuICAgbnVtYmVyIHBpY2tlZCBoZXJlOyB0aGUgZmxvb3Iga2VlcHMgYSBzaG9ydC1uYW1lZCBwb2xpY3kgZnJvbSBjb2xsYXBzaW5nIHRvIGFcbiAgIHN0dWIsIGFuZCAuZWNsaXBzZS1maWVsZCdzIG1heC13aWR0aCBzdG9wcyBhIGxvbmcgb25lIG92ZXJydW5uaW5nIHRoZSBmb3JtLiAqL1xuLmVjbGlwc2UtZmllbGQtLXBvbGljeSB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWluLXdpZHRoOiAzMHJlbTtcbn1cblxuLyogVGhlIGVwaXNvZGUgaW5kaWNhdG9ycywgcmVhZCBhY3Jvc3MgcmF0aGVyIHRoYW4gZG93bi4gQm9vdHN0cmFwJ3Mgb3duXG4gICBhZGphY2VudC1jaGVja2JveCBzcGFjaW5nIGZpZ2h0cyB0aGUgZ2FwIGFuZCB1bmV2ZW5zIHRoZSB3cmFwcGVkIHJvd3MuXG5cbiAgIFNpdHMgaW5zaWRlIGEgLmVjbGlwc2UtZm9ybXJvdyBhbG9uZ3NpZGUgdGhlIGVwaXNvZGUncyBmaWVsZHMsIHNvIHRoZSBnYXAgaXNcbiAgIHRoZSB0aWdodGVyIG9mIHRoZSB0d286IDEuNzVyZW0gYmV0d2VlbiBsYWJlbGxlZCBmaWVsZHMgcmVhZHMgYXMgc2VwYXJhdGlvbixcbiAgIGJldHdlZW4gZml2ZSBjaGVja2JveGVzIG9uIG9uZSBsaW5lIGl0IHJlYWRzIGFzIGRyaWZ0LiAqL1xuLmVjbGlwc2UtY2hlY2tyb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogMC40cmVtIDFyZW07XG4gICAgLyogQWxpZ25zIHRoZSBmaXJzdCByb3cgb2YgYm94ZXMgd2l0aCB0aGUgaW5wdXRzIGJlc2lkZSB0aGVtIHJhdGhlciB0aGFuXG4gICAgICAgZmxvYXRpbmcgdGhlbSBhZ2FpbnN0IHRoZSBsYWJlbHMuICovXG4gICAgcGFkZGluZy10b3A6IDAuMzVyZW07XG5cbiAgICAuY2hlY2tib3gtaW5saW5lICsgLmNoZWNrYm94LWlubGluZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBGaWVsZCBncmlkXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKiBGb3IgdGhlIGRlbnNlciBwYXJ0cyBvZiB0aGUgZm9ybSwgd2hlcmUgbW9zdCBmaWVsZHMgY2FycnkgYSBzZW50ZW5jZVxuLyogb2YgaGVscCB3aWRlciB0aGFuIHRoZSBmaWVsZCBpdCBleHBsYWlucy4gUGFja2VkIGxlZnQgdGhlIHdheVxuLyogLmVjbGlwc2UtZm9ybXJvdyBwYWNrcywgZWFjaCBncm91cCBpcyBhcyB3aWRlIGFzIGl0cyBvd24gc2VudGVuY2UsIHNvXG4vKiBubyB0d28gbGluZXMgc3RhcnQgdGhlaXIgZmllbGRzIGF0IHRoZSBzYW1lIG9mZnNldCBhbmQgdGhlIGdhcHNcbi8qIGJldHdlZW4gdGhlbSBhbGwgZGlmZmVyLiBPbmUgY29sdW1uIGdyaWQgaW5zdGVhZDogdGhlIGNvbHVtbnMgYXJlIHRoZVxuLyogc2FtZSBvbiBldmVyeSByb3cgb2YgYSBzZWN0aW9uLCBzbyBmaWVsZHMgbGluZSB1cCBkb3duIHRoZSBmb3JtIGFzXG4vKiB3ZWxsIGFzIGFjcm9zcyBpdCwgd2l0aCBlYWNoIGZpZWxkJ3MgaGVscCB0ZXh0IHVuZGVyIGl0LlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZWNsaXBzZS1maWVsZGdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgLyogQSBzZXQgY29sdW1uIHJhdGhlciB0aGFuIGEgc2hhcmUgb2YgdGhlIHJvdzogc3RyZXRjaGluZyBmb3VyIGZpZWxkcyBhY3Jvc3NcbiAgICAgICBhIGRpYWxvZyA4MCUgb2YgdGhlIHdpbmRvdyB3aWRlIHB1dHMgYSBoYW5kJ3Mgd2lkdGggYmV0d2VlbiBhIGRyb3AtZG93biBhbmRcbiAgICAgICB0aGUgb25lIHRoYXQgcXVhbGlmaWVzIGl0LiBUaGUgc2xhY2sgZ29lcyB0byB0aGUgZW5kIG9mIHRoZSByb3cgaW5zdGVhZC4gKi9cbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIDE2cmVtKTtcbiAgICBjb2x1bW4tZ2FwOiAycmVtO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcblxuICAgIC8qIFRoZSBjb2x1bW4gaXMgdGhlIHdpZHRoIGhlcmUsIHNvIGEgZmllbGQga2VwdCBhdCBpdHMgb3duIHdvdWxkIG9ubHlcbiAgICAgICBsZWF2ZSBhIHJhZ2dlZCBlZGdlIGluc2lkZSBpdHMgY2VsbC4gKi9cbiAgICAuZWNsaXBzZS1maWVsZCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgID4gLmZvcm0tZ3JvdXAge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIC8qIFNsYWNrIGF0IHRoZSBlbmQgb2YgdGhlIGNvbHVtbiwgc28gYSBsYWJlbCBsb25nZXIgdGhhbiBpdHMgZmllbGQgLVxuICAgICAgICAgICBcIlNlcnZpY2luZyBQcm92aWRlciBJRCAob3B0aW9uYWwpXCIgLSBoYXMgc29tZXdoZXJlIHRvIGdvIGluc3RlYWQgb2ZcbiAgICAgICAgICAgcnVubmluZyBhdCB0aGUgY29sdW1uIGJlc2lkZSBpdC4gKi9cbiAgICAgICAgcGFkZGluZy1yaWdodDogMC43NXJlbTtcbiAgICB9XG5cbiAgICAvKiBBIHNlbGVjdCBzaXplcyBpdHNlbGYgZnJvbSBpdHMgb3B0aW9ucyB1bmxlc3MgaXQgaXMgdG9sZCBub3QgdG8sIHdoaWNoXG4gICAgICAgbGVhdmVzIGEgZHJvcC1kb3duIG9mIHNob3J0IGNvZGVzIG5hcnJvd2VyIHRoYW4gdGhlIHRleHQgaW5wdXQgYmVzaWRlIGl0LlxuICAgICAgIEJvdGggZmlsbCB0aGUgY29sdW1uLiBTdGF0ZWQgYWdhaW5zdCB0aGUgZWxlbWVudCBhcyB3ZWxsIGFzIHRoZSBjbGFzcyxcbiAgICAgICB0byBiZWF0IHRoZSAuZWNsaXBzZS1maWVsZC0tY2hvaWNlIHdpZHRocyB3aGF0ZXZlciB0aGUgc291cmNlIG9yZGVyLiAqL1xuICAgIHNlbGVjdC5mb3JtLWNvbnRyb2wge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgLyogLmZvcm0tY29udHJvbCdzIGhlaWdodCwgd2hpY2ggYSBzZWxlY3Qgb3RoZXJ3aXNlIHRha2VzIGZyb20gaXRzIGZvbnQuICovXG4gICAgICAgIGhlaWdodDogMzRweDtcbiAgICB9XG59XG5cbi8qIEEgbGluZSBvZiBpdHMgb3duOiBjaGVja2JveGVzIHRoYXQgcmVhZCBhY3Jvc3MsIGFuZCB0aGUgZGVjbGFyYXRpb25zXG4gICB3aG9zZSBsYWJlbCBpcyBhIHNlbnRlbmNlLiAqL1xuLmVjbGlwc2UtZmllbGRncmlkX193aWRlIHtcbiAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xufVxuXG4vKiBUd28gY29sdW1ucywgZm9yIHRoZSB0d28gcGlja2VycyB3aG9zZSBvcHRpb25zIGFyZSBhIHNlbnRlbmNlIHNvbWVvbmUgZWxzZVxuICAgd3JvdGUgLSB0aGUgcGF0aWVudCdzIHJlZmVycmFscywgYW5kIE1lZGljYXJlJ3MgcHJlc2VudGluZyBpbGxuZXNzIGNvZGVzLlxuICAgRXZlcnkgb3RoZXIgZmllbGQgaXMgb25lIGNvbHVtbiwgc28gdGhlIGRyb3AtZG93bnMgYW5kIHRoZSB0ZXh0IGlucHV0cyBvbiBhXG4gICByb3cgYXJlIHRoZSBzYW1lIHdpZHRoLiAqL1xuLmVjbGlwc2UtZmllbGRncmlkX19zcGFuMiB7XG4gICAgZ3JpZC1jb2x1bW46IHNwYW4gMjtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQYW5lbHNcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIE9uZSBjYXJkIHBlciB0aGluZyBiZWluZyByZWFkOiB0aGUgYXNzZXNzbWVudCwgdGhlIGl0ZW0gYmVuZWZpdHMsXG4vKiB3aGF0IGlzIGFib3V0IHRvIGJlIGxvZGdlZC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmVjbGlwc2UtcGFuZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBwYWRkaW5nOiAxLjI1cmVtIDEuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xufVxuXG4uZWNsaXBzZS1wYW5lbC0tcXVpZXQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG59XG5cbi5lY2xpcHNlLXBhbmVsX19oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDAuNnJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjg1cmVtO1xufVxuXG4uZWNsaXBzZS1wYW5lbF9fdGl0bGUge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IDE1cHg7XG59XG5cbi5lY2xpcHNlLXBhbmVsX19ub3RlIHtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vKiBUaGUgdHJhbnNhY3Rpb24gcmVmZXJlbmNlLCB3aGljaCBwcmFjdGljZXMgcmVhZCBvdXQgYW5kIHF1b3RlIGJhY2suICovXG4uZWNsaXBzZS1yZWYge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LWZhbWlseTogXCJTb3VyY2UgQ29kZSBQcm9cIiwgXCJTRk1vbm8tUmVndWxhclwiLCBDb25zb2xhcywgbW9ub3NwYWNlO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwYWxlQmx1ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgY29sb3I6ICR0ZXh0R3JleTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBNb25leSBzdW1tYXJ5IHRpbGVzXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKiBUaGUgZm91ciBudW1iZXJzIHRoZSBwcmFjdGljZSBhY3RzIG9uLCBwdWxsZWQgb3V0IG9mIHRoZSBwZXItaXRlbVxuLyogdGFibGUgc28gdGhlIGdhcCBpcyBub3QgYnVyaWVkIGluIGEgcm93IG9mIGN1cnJlbmN5LlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZWNsaXBzZS1zdW1tYXJ5IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoOC41cmVtLCAxZnIpKTtcbiAgICBnYXA6IDAuNzVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcbn1cblxuLmVjbGlwc2Utc3VtbWFyeV9fdGlsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIHBhZGRpbmc6IDAuN3JlbSAwLjlyZW07XG59XG5cbi5lY2xpcHNlLXN1bW1hcnlfX2xhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjNyZW07XG59XG5cbi5lY2xpcHNlLXN1bW1hcnlfX3ZhbHVlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBjb2xvcjogJHRleHRHcmV5O1xufVxuXG4uZWNsaXBzZS1zdW1tYXJ5X190aWxlLS1nYXAge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3ctdHAtMTA7XG4gICAgYm9yZGVyLWNvbG9yOiAkeWVsbG93LXRwLTMwO1xuXG4gICAgLmVjbGlwc2Utc3VtbWFyeV9fdmFsdWUge1xuICAgICAgICBjb2xvcjogJGRhbmdlcjtcbiAgICB9XG59XG5cbi5lY2xpcHNlLXN1bW1hcnlfX3RpbGUtLWNsZWFyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMDg7XG4gICAgYm9yZGVyLWNvbG9yOiAkZ3JlZW4tdHAtMzA7XG5cbiAgICAuZWNsaXBzZS1zdW1tYXJ5X192YWx1ZSB7XG4gICAgICAgIGNvbG9yOiAkZ3JlZW47XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIENhbGxvdXRzIC0gY29uZmlybSwgbG9kZ2VkLCBmYWlsZWRcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmVjbGlwc2UtY2FsbG91dCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiA0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBwYWRkaW5nOiAxcmVtIDEuMjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcblxuICAgIHAge1xuICAgICAgICBtYXJnaW46IDAgMCAwLjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmVjbGlwc2UtY2FsbG91dF9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBtYXJnaW46IDAgMCAwLjVyZW07XG59XG5cbi8qIEl0ZW1pc2VkIGRldGFpbCB1bmRlciBhIGNhbGxvdXQgLSB3aGljaCBpdGVtcyB3ZXJlIHJlcHJpY2VkLCBhbmQgZnJvbSB3aGF0IHRvIHdoYXQuIFNpemVkIHRvIHRoZSBjYWxsb3V0J3NcbiAgIG93biBwYXJhZ3JhcGhzIHJhdGhlciB0aGFuIHRoZSBnbG9iYWwgbGlzdCBzdHlsZXMsIHdoaWNoIGFyZSBzZXQgZm9yIGJvZHkgY29weS4gKi9cbi5lY2xpcHNlLWNhbGxvdXRfX2xpc3Qge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG5cbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLyogQW4gYWN0aW9uIG9mZmVyZWQgYnkgYSBjYWxsb3V0IGl0c2VsZiByYXRoZXIgdGhhbiBieSB0aGUgc3RlcCdzIGFjdGlvbiBiYXIgLSB0aGUgb25lIGNhc2UgYmVpbmcgdGhlIHBhdGllbnRcbiAgIHBheW1lbnQgYSBsb2RnZWQgY2xhaW0gbGVhdmVzIHRvIGNvbGxlY3QsIHdoaWNoIGJlbG9uZ3MgYmVzaWRlIHRoZSBzZW50ZW5jZSB0aGF0IHNheXMgc28uICovXG4uZWNsaXBzZS1jYWxsb3V0X19hY3Rpb24ge1xuICAgIG1hcmdpbi10b3A6IDAuODVyZW07XG59XG5cblxuLmVjbGlwc2UtY2FsbG91dC0tc3VjY2VzcyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTA4O1xuICAgIGJvcmRlci1jb2xvcjogJGdyZWVuO1xufVxuXG4vKiBBIGNhbGxvdXQgc2l0dGluZyBpbnNpZGUgYW4gLmVjbGlwc2UtcGFuZWwgcmF0aGVyIHRoYW4gb24gaXRzIG93biBiZWxvdyBvbmUuIEl0cyB0ZXh0IGlzIGluc2V0IGJ5IGl0cyBvd25cbiAgIDRweCBhY2NlbnQgYm9yZGVyIGFuZCAxLjI1cmVtIHBhZGRpbmcsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIDEuNXJlbSB0aGUgcGFuZWwgcGFkcyBpdHMgY29udGVudCBieSAtIHNvIHB1bGxlZFxuICAgb3V0IGJ5IHRoYXQgbXVjaCwgdGhlIGNhbGxvdXQgc3BhbnMgdGhlIHBhbmVsIGVkZ2UgdG8gZWRnZSBhbmQgdGhlIHdvcmRzIGluc2lkZSBpdCBzdGFydCBvbiB0aGUgc2FtZSBsZWZ0XG4gICBlZGdlIGFzIHRoZSBwYW5lbCdzIGhlYWRpbmcgYW5kIHByb3NlLiBXaXRob3V0IGl0IGEgcGFuZWwgcmVhZHMgYXMgdGhyZWUgc3RhZ2dlcmVkIGxlZnQgbWFyZ2luczogdGhlIHRpdGxlLFxuICAgdGhlIGZhY3RzIHRhYmxlLCBhbmQgdGhlIGNhbGxvdXQuICovXG4uZWNsaXBzZS1jYWxsb3V0LS1mbHVzaCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xufVxuXG4uZWNsaXBzZS1jYWxsb3V0LS1kYW5nZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjE3LCA4MywgNzksIDAuMDgpO1xuICAgIGJvcmRlci1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuICAgIGNvbG9yOiAkZGFuZ2VyO1xufVxuXG4uZWNsaXBzZS1jYWxsb3V0LS13YWl0aW5nIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93LXRwLTEwO1xuICAgIGJvcmRlci1jb2xvcjogJHllbGxvdztcbiAgICBjb2xvcjogJHdhcm5pbmctdGV4dDtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEFjdGlvbiBiYXJzXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKiBFdmVyeSBzdGVwIGVuZHMgaW4gb25lLiBUaGUgZ2xvYmFsIC5idG4tbmF2eSAvIC5idG4tY2FuY2VsIGFyZSBmdWxsXG4vKiB3aWR0aCBzbGFicyBjYXBwZWQgYXQgMjIwcHgsIHdoaWNoIHJlYWQgYXMgYSBmb3JtIGZpZWxkIHdoZW4gdHdvIHNpdFxuLyogc2lkZSBieSBzaWRlLCBzbyBpbiBoZXJlIHRoZXkgc2l6ZSB0byB0aGVpciBsYWJlbCBpbnN0ZWFkLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZWNsaXBzZS1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiAwLjc1cmVtO1xuICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcbiAgICBwYWRkaW5nLXRvcDogMS4yNXJlbTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG4gICAgLmJ0biB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgIG1pbi13aWR0aDogOHJlbTtcbiAgICAgICAgcGFkZGluZzogN3B4IDIycHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICB9XG59XG5cbi8qIFB1c2hlcyB0aGUgc2Vjb25kYXJ5IGFjdGlvbiBhd2F5IGZyb20gdGhlIHByaW1hcnksIHNvIHRoZSBidXR0b24gdGhhdCBzZW5kc1xuICAgYSBjbGFpbSB0byBNZWRpY2FyZSBpcyBuZXZlciB0aGUgb25lIHVuZGVyIGEgc3RyYXkgY2xpY2suIE9uY2UgdGhlIHByaW1hcnkgaXNcbiAgIGdvbmUgdGhlIHBhaXIgY29sbGFwc2VzIGJhY2sgdG8gb25lIHJpZ2h0LWFsaWduZWQgYnV0dG9uLiAqL1xuLmVjbGlwc2UtYWN0aW9uc19fc3BhY2VyIHtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG5cbiAgICAmOm9ubHktY2hpbGQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxufVxuXG4uZWNsaXBzZS1hY3Rpb25zLS1pbmxpbmUge1xuICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgYm9yZGVyLXRvcDogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBUYWJsZXMgaW5zaWRlIHRoZSBmbG93XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5lY2xpcHNlLXRhYmxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcblxuICAgID4gdGhlYWQgPiB0ciA+IHRoIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xuICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICA+IHRib2R5ID4gdHIgPiB0ZCB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgLyogVGhlIHRvdGFscyByb3cgcmVhZHMgYXMgYSBzdW1tYXJ5IG9mIHRoZSByb3dzIGFib3ZlIGl0LCBub3QgYW5vdGhlciBpdGVtLiAqL1xuICAgID4gdGJvZHkgPiB0ci5lY2xpcHNlLXRhYmxlX190b3RhbCA+IHRkIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuICAgIH1cbn1cblxuLyogTGFiZWwgLyB2YWx1ZSBwYWlycyAtIHRoZSBhc3Nlc3NtZW50IGRldGFpbCByb3dzLiAqL1xuLmVjbGlwc2UtdGFibGUtLWZhY3RzIHtcbiAgICA+IHRib2R5ID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiAzNCU7XG4gICAgICAgIGNvbG9yOiAkdGV4dEdyZXk7XG4gICAgfVxuICAgID4gdGJvZHkgPiB0cjpmaXJzdC1jaGlsZCA+IHRkIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMDtcbiAgICB9XG59XG5cbi8qIFNob3J0IGxhYmVscyAtIFN0YXR1cywgQmVuZWZpdCwgQ2xhaW0gSUQgLSB3aGVyZSB0aGUgZWxpZ2liaWxpdHkgYXNzZXNzbWVudCdzIHJ1biB0byBcIlBvc3NpYmxlIHByZS1leGlzdGluZ1xuICAgYWlsbWVudFwiLiBUaGUgMzQlIGNvbHVtbiBhYm92ZSBpcyBzaXplZCBmb3IgdGhvc2UsIGFuZCBvdmVyIGEgc2hvcnQgb25lIGl0IGxlYXZlcyBhIGhhbmQncyB3aWR0aCBvZiBnYXBcbiAgIGJldHdlZW4gdGhlIGxhYmVsIGFuZCB0aGUgdmFsdWUgaXQgYmVsb25ncyB0by4gVGhpcyBzaXplcyB0aGUgY29sdW1uIHRvIGl0cyBvd24gbG9uZ2VzdCBsYWJlbCBpbnN0ZWFkOlxuICAgd2lkdGggMSUgd2l0aCBub3dyYXAgaXMgdGhlIHNocmluay10by1maXQgdHJpY2ssIHNpbmNlIGFuIGF1dG8tbGF5b3V0IHRhYmxlIGNhbm5vdCBnbyBuYXJyb3dlciB0aGFuIHRoZVxuICAgY29udGVudCBpdCBob2xkcy5cblxuICAgVGhlIGxlZnQgcGFkZGluZyBnb2VzIHdpdGggaXQuIEJvb3RzdHJhcCBwYWRzIGV2ZXJ5IGNlbGwgOHB4LCBhbmQgb3ZlciBhIHRhYmxlIHNpdHRpbmcgZGlyZWN0bHkgdW5kZXIgYVxuICAgcGFuZWwgaGVhZGluZyB0aGF0IHJlYWRzIGFzIHRoZSB0YWJsZSBiZWluZyBpbmRlbnRlZCBmcm9tIHRoZSBoZWFkaW5nIGJ5IGFuIGFtb3VudCBub3RoaW5nIGNob3NlLiAqL1xuLmVjbGlwc2UtdGFibGUtLWZhY3RzLW5hcnJvdyB7XG4gICAgPiB0Ym9keSA+IHRyID4gdGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICB3aWR0aDogMSU7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xuICAgIH1cbn1cblxuLmVjbGlwc2UtbnVtZXJpYyB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFVucGFpZCBwYXRpZW50IGNsYWltIGNvbmZpcm1hdGlvblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogVGhlIGRpYWxvZyBhc2tlZCBiZWZvcmUgYSBwYXRpZW50IChQQykgY2xhaW0gbG9kZ2VzIHdpdGggaXRzIGFjY291bnRcbi8qIHVuc2V0dGxlZC4gVHdvIHBhdGh3YXlzIHNpdCBzaWRlIGJ5IHNpZGUgaW4gaXQsIHNvIHRoZXkgYXJlIGJsb2NrZWRcbi8qIG91dCByYXRoZXIgdGhhbiBydW4gdG9nZXRoZXIgYXMgcHJvc2UgLSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW1cbi8qIGlzIHRoZSB3aG9sZSBwb2ludCBvZiB0aGUgZGlhbG9nLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4udW5wYWlkLWNsYWltLW1vZGFsX19sZWFkIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG4udW5wYWlkLWNsYWltLW1vZGFsX19wYXRoIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuXG4gICAgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuICAgICAgICBjb2xvcjogJHRleHRHcmV5O1xuICAgIH1cbn1cblxuLnVucGFpZC1jbGFpbS1tb2RhbF9fcGF0aC10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIG1hcmdpbjogMCAwIDAuMzVyZW07XG59XG5cbi8qIFRoZSBwYXRod2F5IGJlaW5nIHRha2VuIGJ5IHByZXNzaW5nIHRocm91Z2gsIHdoaWNoIGlzIHRoZSBvbmUgd29ydGggcmVhZGluZyB0d2ljZS4gKi9cbi51bnBhaWQtY2xhaW0tbW9kYWxfX3BhdGgtLXdhcm4ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3ctdHAtMTA7XG4gICAgYm9yZGVyLWNvbG9yOiAkeWVsbG93O1xuXG4gICAgcCB7XG4gICAgICAgIGNvbG9yOiAkd2FybmluZy10ZXh0O1xuICAgIH1cbn1cblxuLnVucGFpZC1jbGFpbS1tb2RhbF9fZm9vdG5vdGUge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIG1hcmdpbjogMC43NXJlbSAwIDA7XG59XG5cbi8qIFRoZSB0d28gYW5zd2VycyBzaXQgdG9nZXRoZXIgcmF0aGVyIHRoYW4gc3RhY2tlZDogdGhleSBhcmUgYWx0ZXJuYXRpdmVzLCBub3QgYW4gYWN0aW9uIGFuZCBhbiBlc2NhcGUuICovXG4udW5wYWlkLWNsYWltLW1vZGFsX19hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogMC43NXJlbTtcblxuICAgIC5idG4ge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIExlZGdlciBhY2NvdW50cyAodHJhbnNhY3Rpb24gc2V0dXApXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKiBUaGUgYmFuayBhbmQgcmV2ZW51ZSBhY2NvdW50cyBldmVyeSBjbGFpbSBib29rcyBhZ2FpbnN0LCBjaG9zZW5cbi8qIGJlZm9yZSB0aGUgY2hhbm5lbC4gVGhlIHBhaXIgaXMgY2VudHJlZCBvbiB0aGUgc2NyZWVuOyBlYWNoIGxhYmVsXG4vKiBzaXRzIGNlbnRyZWQgb3ZlciBpdHMgb3duIGZ1bGwtd2lkdGggc2VsZWN0IHJhdGhlciB0aGFuIG92ZXIgdGhlXG4vKiBzZWxlY3QncyB0ZXh0LlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZnVuZGVyLWFjY291bnRzIHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGZsZXgtd3JhcDogd3JhcDtcblx0Z2FwOiAycmVtO1xuXHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5mdW5kZXItYWNjb3VudHNfX2ZpZWxkIHtcblx0ZmxleDogMCAxIDIwcmVtO1xuXHQvKiBTcGFjaW5nIGJldHdlZW4gdGhlIHBhaXIgaXMgdGhlIGNvbnRhaW5lcidzIGdhcDsgZHJvcCAuZm9ybS1ncm91cCdzIG93bi4gKi9cblx0bWFyZ2luOiAwO1xufVxuXG4uZnVuZGVyLWFjY291bnRzX19sYWJlbCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHQvKiBDZW50cmVkIG92ZXIgdGhlIHdob2xlIGZpZWxkLCB3aGljaCB0aGUgc2VsZWN0IGZpbGxzLCBzbyB0aGUgbGFiZWwgc2l0c1xuXHQgICBvdmVyIHRoZSBtaWRkbGUgb2YgdGhlIGRyb3Bkb3duLiAqL1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdG1hcmdpbjogMCAwIDAuNXJlbTtcbn1cblxuLyogRnVsbCB3aWR0aCBzbyB0aGUgY2VudHJlZCBsYWJlbCBhYm92ZSBzcGFucyB0aGUgc2FtZSBib3guIFN0YXRlZCBhZ2FpbnN0IHRoZVxuICAgZWxlbWVudCBhbmQgY2xhc3MgdG9nZXRoZXIgdG8gYmVhdCB0aGUgLm9wZXJhdGlvbi1mb3JtIHNlbGVjdCBydWxlIHdoYXRldmVyXG4gICB0aGUgc291cmNlIG9yZGVyLCB0aGUgd2F5IHRoZSBmaWVsZCBncmlkIGRvZXMuICovXG4uZnVuZGVyLWFjY291bnRzX19maWVsZCBzZWxlY3QuZm9ybS1jb250cm9sIHtcblx0d2lkdGg6IDEwMCU7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBGdW5kZXIgY2hvaWNlICh0cmFuc2FjdGlvbiBzZXR1cClcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIE9uZSBjYXJkIHBlciBjbGFpbWluZyBjaGFubmVsLCBzYXlpbmcgd2hhdCBpdCBjbGFpbXMgYW5kIHdoYXQgdGhlXG4vKiBwYXRpZW50J3MgcmVjb3JkIGhvbGRzIGZvciBpdCwgd2l0aCB0aGUgbGlrZWx5IG9uZSBtYXJrZWQuIEJ1aWx0IG9uXG4vKiB0aGUgcGFuZWwgbG9vayB1c2VkIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhpcyBmbG93OyB0aGUgYWN0aW9uIGluXG4vKiBlYWNoIGNhcmQgaXMgdGhlIHNhbWUgYnV0dG9uIGl0IGhhcyBhbHdheXMgYmVlbi5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmZ1bmRlci1jaG9pY2Uge1xuICAgIG1heC13aWR0aDogNTJyZW07XG4gICAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi5mdW5kZXItY2hvaWNlX19oZWFkIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4uZnVuZGVyLWNob2ljZV9faGVhZGluZyB7XG4gICAgbWFyZ2luOiAwIDAgMC40cmVtO1xufVxuXG4uZnVuZGVyLWNob2ljZV9fbGVkZSB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgbWF4LXdpZHRoOiAzOHJlbTtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cblxuLmZ1bmRlci1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTRyZW0sIDFmcikpO1xuICAgIGdhcDogMXJlbTtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4uZnVuZGVyLWNhcmQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiAwLjNyZW07XG4gICAgcGFkZGluZzogMS4xNXJlbSAxLjI1cmVtIDEuMjVyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcbn1cblxuLyogVGhlIGNhcmQgdGhlIHJlY29yZCBwb2ludHMgdG8uIEEgbmF2eSBlZGdlIGFuZCBhIGZsYWcgb24gYW4gb3RoZXJ3aXNlIGlkZW50aWNhbCBjYXJkOiBpdCBpcyB0aGUgbGlrZWx5XG4gICBjaG9pY2UsIG5vdCB0aGUgb25seSBvbmUsIGFuZCB0aGUgb3RoZXIgdHdvIGhhdmUgdG8gc3RheSBhcyBlYXN5IHRvIHBpY2suICovXG4uZnVuZGVyLWNhcmQtLXN1Z2dlc3RlZCB7XG4gICAgYm9yZGVyLWNvbG9yOiAkbmF2eTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xufVxuXG4uZnVuZGVyLWNhcmRfX2ZsYWcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IC0wLjZyZW07XG4gICAgbGVmdDogMS4xNXJlbTtcbiAgICBwYWRkaW5nOiAwLjE1cmVtIDAuNTVyZW07XG4gICAgZm9udC1zaXplOiA5cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG4gICAgY29sb3I6ICR3aGl0ZTtcbn1cblxuLmZ1bmRlci1jYXJkX19uYW1lIHtcbiAgICBmb250LXNpemU6IDE3cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICBjb2xvcjogJG5hdnk7XG59XG5cbi8qIEluLXBhdGllbnQgb3Igb3V0LXBhdGllbnQgLSB0aGUgb25lIGZhY3QgdGhhdCBkZWNpZGVzIHdoaWNoIGNhcmQgaXMgcmlnaHQsIHNvIGl0IHJlYWRzIGJlZm9yZSB0aGUgYmx1cmIuXG4gICBTZXQgbGlrZSB0aGUgc3VtbWFyeSB0aWxlIGxhYmVscyByYXRoZXIgdGhhbiBhcyBhIGNvbG91ciBvZiBpdHMgb3duLiAqL1xuLmZ1bmRlci1jYXJkX19zY29wZSB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG59XG5cbi5mdW5kZXItY2FyZF9fYmx1cmIge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMS41NTtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgbWFyZ2luLXRvcDogMC4xNXJlbTtcbn1cblxuLyogV2hhdCB0aGUgcGF0aWVudCByZWNvcmQgaG9sZHMgZm9yIHRoaXMgY2hhbm5lbCwgdW5kZXIgYSBydWxlOiBpdCBpcyBhYm91dCB0aGlzIHBhdGllbnQgcmF0aGVyIHRoYW4gYWJvdXRcbiAgIHRoZSBjaGFubmVsLCBhbmQgcmVhZHMgYXMgdGhlIGxhc3QgdGhpbmcgY2hlY2tlZCBiZWZvcmUgdGhlIGJ1dHRvbiBiZWxvdyBpdC4gUHVzaGVkIHRvIHRoZSBmb290IG9mIHRoZVxuICAgY2FyZCBzbyB0aGUgcnVsZXMgYW5kIHRoZSBidXR0b25zIGxpbmUgdXAgYWNyb3NzIHRoZSByb3cgd2hhdGV2ZXIgbGVuZ3RoIHRoZSBibHVyYnMgcnVuIHRvLlxuXG4gICBBIGxpc3QgcmF0aGVyIHRoYW4gb25lIGxpbmUsIGJlY2F1c2UgdGhlIEVDTElQU0UgY2FyZCBoYXMgdHdvIHRoaW5ncyB0byByZXBvcnQ6IGFuIGluLXBhdGllbnQgY2xhaW0gbmVlZHNcbiAgIGEgaGVhbHRoIGZ1bmQgcG9saWN5IGFuZCBhIE1lZGljYXJlIGVudGl0bGVtZW50IGJvdGguIEhlbGQgdG8gdGhlIGhlaWdodCBvZiB0d28gcm93cyBvbiBldmVyeSBjYXJkIHNvIHRoZVxuICAgcnVsZSBzdGF5cyBsZXZlbCBhY3Jvc3MgdGhlIHJvdyB3aGlsZSBvbmx5IG9uZSBvZiB0aGUgdGhyZWUgY2FycmllcyBhIHNlY29uZCBsaW5lLiAqL1xuLmZ1bmRlci1jYXJkX19yZWNvcmRzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAwLjNyZW07XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMy4zZW07XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBwYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4uZnVuZGVyLWNhcmRfX3JlY29yZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgZ2FwOiAwLjRyZW07XG59XG5cbi5mdW5kZXItY2FyZF9fbWFyayB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4uZnVuZGVyLWNhcmRfX3JlY29yZC0taGVsZCB7XG4gICAgY29sb3I6ICRncmVlbjtcbn1cblxuLmZ1bmRlci1jYXJkX19yZWNvcmQtLW1pc3Npbmcge1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbn1cblxuLyogYnRuLW5hdnkgc2V0cyBpdHMgb3duIG1ldHJpY3MgYW5kIGJ0bi1wcmltYXJ5IGtlZXBzIEJvb3RzdHJhcCdzLCBzbyB0aGUgdGhyZWUgY29tZSBvdXQgZGlmZmVyZW50IGhlaWdodHNcbiAgIGFuZCBrbm9jayB0aGUgcnVsZXMgYWJvdmUgdGhlbSBvdXQgb2YgbGluZSB3aXRoIGVhY2ggb3RoZXIuIE1hdGNoZWQgaGVyZSB0byBidG4tbmF2eSwgd2hpY2ggdHdvIG9mIHRoZVxuICAgdGhyZWUgYWxyZWFkeSBhcmUsIGFuZCBzdHJldGNoZWQgdG8gdGhlIGNhcmQgc28gdGhlIGFjdGlvbiByZWFkcyBhcyBiZWxvbmdpbmcgdG8gaXQuIENvbG91cnMgYXJlIGxlZnQgdG9cbiAgIHRoZSBidXR0b24gY2xhc3NlcyB0aGVtc2VsdmVzLiAqL1xuLmZ1bmRlci1jYXJkX19hY3Rpb24ge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgbWFyZ2luLXRvcDogMC45cmVtO1xuICAgIG1heC13aWR0aDogbm9uZTtcbiAgICBwYWRkaW5nOiA0cHggMThweDtcbiAgICBmb250LXNpemU6IDEycHg7XG59XG5cbi5mdW5kZXItY2hvaWNlX19mb290IHtcbiAgICBtYXJnaW46IDEuMjVyZW0gMCAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEycHg7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFBhdGllbnQgY292ZXIgY2hlY2sgKHBhdGllbnRDb3ZlclZhbGlkYXRlLCBwYXRpZW50Q292ZXJSZXN1bHQpXG4vKiBUaGUgVmFsaWRhdGUgYnV0dG9ucyBvbiB0aGUgcGF0aWVudCBmb3JtJ3MgTWVkaWNhcmUsIERWQSBhbmQgZnVuZFxuLyogc2VjdGlvbnMsIGFuZCB0aGUgYW5zd2VyIHVuZGVyIGVhY2guIFRoZSBhbnN3ZXJzIHJldXNlIHRoZSBFQ0xJUFNFXG4vKiBjYWxsb3V0cywgc28gYSB2ZXJpZmllZCBjYXJkIHJlYWRzIHRoZSBzYW1lIGhlcmUgYXMgb24gYSBjbGFpbS5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogU2l0cyBsZWZ0IG9mIHRoZSBzZWN0aW9uJ3MgQ2xlYXIgKG9yIHJlbW92ZSkgYnV0dG9uLiAqL1xuLnBhdGllbnQtY292ZXItdmFsaWRhdGUge1xuXHRtYXJnaW4tcmlnaHQ6IDZweDtcbn1cblxuLnBhdGllbnQtY292ZXItcmVzdWx0IHtcblx0LmVjbGlwc2UtY2FsbG91dCB7XG5cdFx0bWFyZ2luOiAxcmVtIDAgMDtcblx0fVxufVxuXG4vKiBJbnNpZGUgYSBwb2xpY3kncyBwYW5lbCB0aGUgYW5zd2VyIHNpdHMgYmV0d2VlbiB0aGUgaGVhZGluZyBhbmQgdGhlIGJvZHksIHNvIGl0IHNob3dzIHdoZXRoZXIgb3Igbm90IHRoZVxuICAgcG9saWN5IGlzIG9wZW4gLSBpbnNldCB0byB0aGUgcGFuZWwncyBvd24gcGFkZGluZy4gKi9cbi5wYXRpZW50LWNvdmVyLXJlc3VsdC0taW4tcGFuZWwgLnBhdGllbnQtY292ZXItcmVzdWx0IHtcblx0cGFkZGluZzogMCAxNXB4IDE1cHg7XG59XG5cbi5wYXRpZW50LWNvdmVyLXJlc3VsdF9fc3RhbGUge1xuXHRjb2xvcjogJHdhcm5pbmctdGV4dDtcbn1cblxuLnBhdGllbnQtY292ZXItcmVzdWx0X19kaWZmZXJlbmNlcyB7XG5cdG1hcmdpbjogMC43NXJlbSAwIDA7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG5cdHRoLFxuXHR0ZCB7XG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0fVxufVxuIiwiLyogVGhlIHNjcm9sbGluZyBQREYgdmlld2VyICg8cGRmLXNjcm9sbC12aWV3ZXI+KSB1c2VkIGJ5IHRoZSBkb2N1bWVudCBwcmV2aWV3IGFuZCBwcm9jZXNzaW5nXG4gICByZXBvcnQgbW9kYWxzLiBUaGUgcGFnZSBjb2x1bW4gc2Nyb2xscyBpbnNpZGUgdGhlIG1vZGFsIGJvZHkgcmF0aGVyIHRoYW4gZ3Jvd2luZyBpdCwgc28gdGhlXG4gICB0b29sYmFyIGFuZCB0aGUgbW9kYWwncyBvd24gYnV0dG9ucyBzdGF5IHB1dCB3aGlsZSBhIGRvY3VtZW50IGlzIHJlYWQuICovXG5cbi5wZGYtc2Nyb2xsLXZpZXdlciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdG1heC13aWR0aDogMTAwJTtcbn1cblxuLnBkZi1zY3JvbGwtdmlld2VyLXRvb2xiYXIge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IDAuNXJlbTtcblx0cGFkZGluZy1ib3R0b206IDAuNzVyZW07XG5cblx0LmJ0biB7XG5cdFx0d2lkdGg6IDVlbTtcblx0fVxuXG5cdC5jb250cm9sLWxhYmVsIHtcblx0XHRwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHR9XG59XG5cbi5wZGYtc2Nyb2xsLXZpZXdlci1zY3JvbGwge1xuXHQvKiBQYWdlcyBhcmUgcG9zaXRpb25lZCBhZ2FpbnN0IHRoaXMgYm94LCBhbmQgb2Zmc2V0VG9wIGlzIHJlYWQgb2ZmIHRoZW0gdG8gd29yayBvdXQgd2hhdCBpcyBpblxuXHQgICB2aWV3IC0gc28gaXQgaGFzIHRvIGJlIHRoZSBvZmZzZXQgcGFyZW50LCBub3QganVzdCB0aGUgdGhpbmcgdGhhdCBzY3JvbGxzLiAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBhdXRvO1xuXHRtYXgtaGVpZ2h0OiA2MHZoO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS1tb2RhbC1oZWFkZXI7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbn1cblxuLyogSW5zaWRlIGEgdmlld2VyIG1vZGFsIHRoZSBkb2N1bWVudCB0YWtlcyB0aGUgd2hvbGUgd2luZG93IGJhciB0aGUgbW9kYWwncyBvd24gY2hyb21lLiBBIGRvY3VtZW50IGlzXG4gICByZWFkIGEgcGFnZSBhdCBhIHRpbWUsIGFuZCBhIHNob3J0IHBhbmVsIGlzIGEgcGFnZSByZWFkIGEgdGhpcmQgYXQgYSB0aW1lLiBUaGUgc3VidHJhY3RlZCBoZWlnaHRzXG4gICBhcmUgdGhhdCBjaHJvbWU6IHRoZSBkaWFsb2cncyB0b3AgbWFyZ2luLCB0aGUgdGl0bGUgYmFyLCB0aGlzIGJvZHkncyBwYWRkaW5nIGFuZCB0aGUgdG9vbGJhciAtIGFuZCxcbiAgIG9uIHRoZSByZXBvcnQsIHRoZSByb3cgaXRzIERvd25sb2FkIGFuZCBDbG9zZSBidXR0b25zIHNpdCBpbi4gKi9cbi5wZGYtdmlld2VyLW1vZGFsLWJvZHkge1xuXHRwYWRkaW5nOiAxcmVtIDEuMjVyZW07XG5cblx0LnBkZi1zY3JvbGwtdmlld2VyLXNjcm9sbCB7XG5cdFx0aGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTkwcHgpO1xuXHRcdG1heC1oZWlnaHQ6IG5vbmU7XG5cdH1cblxuXHQmLmhhcy1mb290ZXIgLnBkZi1zY3JvbGwtdmlld2VyLXNjcm9sbCB7XG5cdFx0aGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjY1cHgpO1xuXHR9XG59XG5cbi5wZGYtc2Nyb2xsLXZpZXdlci1wYWdlcyB7XG5cdHBhZGRpbmc6IDAuNzVyZW0gMDtcbn1cblxuLyogQ2VudHJlZCBieSBhdXRvIG1hcmdpbnMgb24gYSBib3ggc2hyaW5rLXdyYXBwZWQgdG8gdGhlIHBhZ2UsIG5vdCBieSBmbGV4LiBBdCByZWFsIHNpemUgb24gYSBuYXJyb3dcbiAgIHdpbmRvdyBhIHBhZ2UgaXMgd2lkZXIgdGhhbiB0aGUgcGFuZWwsIGFuZCBpdCBoYXMgdG8gb3ZlcmZsb3cgdG8gdGhlIHJpZ2h0IHdoZXJlIHRoZSBob3Jpem9udGFsXG4gICBzY3JvbGxiYXIgY2FuIHJlYWNoIGl0IC0gZmxleCBjZW50cmluZyB3b3VsZCBwdXNoIGl0cyBsZWZ0IGVkZ2Ugb3V0IG9mIHJlYWNoIGluc3RlYWQuICovXG4ucGRmLXNjcm9sbC12aWV3ZXItcGFnZSB7XG5cdGRpc3BsYXk6IHRhYmxlO1xuXHRtYXJnaW46IDAgYXV0byAwLjc1cmVtO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuXHRib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjE4KTtcblxuXHQmOmxhc3QtY2hpbGQge1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cblxuXHRjYW52YXMge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG59XG5cbi5wZGYtc2Nyb2xsLXZpZXdlci1tZXNzYWdlIHtcblx0cGFkZGluZzogM3JlbSAwO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFR5cm8gdGVybWluYWwgcGF0aWVudCBwYXltZW50ICh0eXJvVGVybWluYWxQYXltZW50KVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogU3BhY2luZyBmb3IgdGhlIHRlcm1pbmFsIHBhbmVsLCBhbmQgdGhlIGFjY291bnQtc2V0dGxlbWVudCBibG9jayB0aGVcbi8qIEVDTElQU0UgbG9kZ2VtZW50IHN0ZXAgd3JhcHMgaXQgaW4uIFRoZSBwYW5lbHMgdGhlbXNlbHZlcyByZXVzZSB0aGVcbi8qIEVDTElQU0UgY2FsbG91dHMgaW4gX2VjbGlwc2UtY2xhaW0uY3NzLCBhbmQgdGhlIGNsYWltIG1vZGFsJ3MgUEFZXG4vKiB2aWV3IHVzZXMgdGhhdCBtb2RhbCdzIG93biBoZWFkaW5ncywgdGFibGVzIGFuZCBmb290ZXIgYnV0dG9ucy5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnRlcm1pbmFsLXBheW1lbnQge1xuXHRtYXJnaW4tdG9wOiAxcmVtO1xufVxuXG4vKiBUaGUgY2xhaW0gbW9kYWwncyBwYXltZW50IGZvb3Rlci4gLmJ0bi1uYXZ5IGFuZCAuYnRuLWNhbmNlbCBhcmUgc2l6ZWQgZm9yIHRoZSBvbmUtd29yZCBhY3Rpb25zIHRoZSByZXN0IG9mXG4gICB0aGUgYXBwIHB1dHMgaW4gYSBmb290ZXIgLSB3aWR0aCAxMDAlIGNhcHBlZCBhdCAyMjBweCAtIGFuZCB0aGVzZSBsYWJlbHMgcnVuIHBhc3QgdGhhdCBhbmQgd3JhcCBtaWQtd29yZC5cbiAgIFNpemVkIHRvIHRoZWlyIGNvbnRlbnQgaW5zdGVhZCwgdGhlIHdheSB0aGUgRUNMSVBTRSBhY3Rpb24gYmFyIGRvZXMgaXQgKHNlZSAuZWNsaXBzZS1hY3Rpb25zIGluXG4gICBfZWNsaXBzZS1jbGFpbS5jc3MpLCBhbmQgc2NvcGVkIHRvIHRoaXMgZm9vdGVyIGJlY2F1c2UgLm15LW1vZGFsLWZvb3RlciBpcyBzaGFyZWQgYnkgODAtb2RkIHRlbXBsYXRlcy4gKi9cbi5jbGFpbS1wYXltZW50LWFjdGlvbnMge1xuXG5cdC5idG4ge1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdG1heC13aWR0aDogbm9uZTtcblx0XHRtaW4td2lkdGg6IDhyZW07XG5cdFx0cGFkZGluZzogN3B4IDIycHg7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQvKiBUaGVzZSBidXR0b25zIGNvbWUgYW5kIGdvIG9uIG5nLWlmIGFzIHRoZSBwYXltZW50IG1vZGUgY2hhbmdlcywgYW5kIG5nQW5pbWF0ZSB3aWxsIG5vdCB0b3VjaCB0aGUgRE9NXG5cdCAgIHVudGlsIGFueSB0cmFuc2l0aW9uIG9uIHRoZSBlbGVtZW50IGhhcyBmaW5pc2hlZCAtIHNvIHRoZSAwLjNzIGB0cmFuc2l0aW9uOiBhbGxgIHRoZSBidXR0b24gc3R5bGVzIGNhcnJ5XG5cdCAgIGZvciB0aGVpciBob3ZlciBtYWRlIGV2ZXJ5IHN3aXRjaCBiZXR3ZWVuIHRoZSBvcHRpb25zIGFuZCB0aGUgZm9ybSBzaXQgc3RpbGwgZm9yIDMwMG1zIGZpcnN0LiBaZXJvZWRcblx0ICAgb25seSB3aGlsZSBuZ0FuaW1hdGUgaXMgcnVubmluZywgd2hpY2ggaXQgc2lnbmFscyB3aXRoIC5uZy1hbmltYXRlLCBzbyB0aGUgaG92ZXIga2VlcHMgaXRzIHRyYW5zaXRpb24uXG5cdCAgIEJlYXRzIC5idG4tbmF2eSBvbiBzcGVjaWZpY2l0eSwgc28gbm8gIWltcG9ydGFudCBpcyBuZWVkZWQuICovXG5cdC5idG4ubmctYW5pbWF0ZSB7XG5cdFx0dHJhbnNpdGlvbjogbm9uZTtcblx0fVxufVxuXG5cbi8qIFRoZSBwYXRpZW50IGNsYWltJ3MgYWNjb3VudCwgc2V0dGxlZCBvbiB0aGUgRUNMSVBTRSBsb2RnZW1lbnQgc3RlcCBiZWZvcmUgdGhlIGNsYWltIGdvZXMuIFNpdHMgaW5zaWRlIGFuXG4gICAuZWNsaXBzZS1jYWxsb3V0LCBzbyBvbmx5IHdoYXQgdGhlIGNhbGxvdXQgZG9lcyBub3QgYWxyZWFkeSBnaXZlIGl0IGxpdmVzIGhlcmUuICovXG4uYWNjb3VudC1zZXR0bGVtZW50IHtcblxuXHQucGF5bWVudC1tb2RlLXN3aXRjaCB7XG5cdFx0bWFyZ2luLXRvcDogMXJlbTtcblx0fVxuXG5cdC5yb3cge1xuXHRcdG1hcmdpbi10b3A6IDAuNXJlbTtcblx0fVxuXG5cdC8qIFNhbWUgcmVhc29uIGFzIC5jbGFpbS1wYXltZW50LWFjdGlvbnMgYWJvdmU6IFwiUmFpc2UgQWNjb3VudCBmb3IgUGF5bWVudFwiIHJ1bnMgcGFzdCB0aGUgMjIwcHggdGhlIGJ1dHRvblxuXHQgICBzdHlsZXMgY2FwIGF0LCBhbmQgd3JhcHMgbWlkLXdvcmQuICovXG5cdC5idG4ge1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdG1heC13aWR0aDogbm9uZTtcblx0XHRtaW4td2lkdGg6IDhyZW07XG5cdFx0cGFkZGluZzogN3B4IDIycHg7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQvKiBBbmQgdGhlIHNhbWUgbmdBbmltYXRlIGRlbGF5OiB0aGUgYnV0dG9ucyBoZXJlIHRvZ2dsZSBvbiBuZy1pZiBhcyB0aGUgYWNjb3VudCBpcyByYWlzZWQgYW5kIHBhaWQuICovXG5cdC5idG4ubmctYW5pbWF0ZSB7XG5cdFx0dHJhbnNpdGlvbjogbm9uZTtcblx0fVxufVxuXG4vKiBBY2NvdW50IC8gcGFpZCAvIG93aW5nLCByZWFkIGxlZnQgdG8gcmlnaHQuIFNwYWNlZCByYXRoZXIgdGhhbiB0YWJ1bGF0ZWQ6IHRocmVlIGZpZ3VyZXMgZG8gbm90IG5lZWQgYSB0YWJsZSxcbiAgIGFuZCB0aGUgY2FsbG91dCdzIHByb3NlIHJlYWRzIGJldHRlciB3aXRoIHRoZW0gb24gb25lIGxpbmUuICovXG4uYWNjb3VudC1zZXR0bGVtZW50X19maWd1cmVzIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IDEuNXJlbTtcblx0Zm9udC1zaXplOiAxM3B4O1xuXHRtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG5cbi8qIFNpdHMgd2l0aCB0aGUgZmlndXJlcyBpdCByZS1yZWFkcyByYXRoZXIgdGhhbiBhdCB0aGUgZW5kIG9mIHRoZSByb3csIGFuZCB0YWtlcyBubyBtb3JlIHJvb20gdGhhbiB0aGUgaWNvblxuICAgbmVlZHMgLSB0aGUgbnVtYmVycyBhcmUgdGhlIGNvbnRlbnQgaGVyZSwgdGhpcyBpcyB0aGUgdGhpbmcgdGhhdCB1cGRhdGVzIHRoZW0uICovXG4uYWNjb3VudC1zZXR0bGVtZW50X19yZWZyZXNoIHtcblx0bWluLXdpZHRoOiAwO1xuXHRwYWRkaW5nOiAycHggNnB4O1xuXHRtYXJnaW4tbGVmdDogLTAuNzVyZW07XG59XG5cbi8qIFNheXMgd2hpY2ggb2YgdGhlIHR3byBwYXltZW50IHJvdXRlcyB0aGUgc2V0dGxlbWVudCBzdGVwIGlzIG9uLCBhbmQgb2ZmZXJzIHRoZSBvdGhlci4gQSBsaW5lIG9mIHByb3NlIHJhdGhlclxuICAgdGhhbiBhIHBhaXIgb2YgdGFiczogdGhlIHR3byBhcmUgbm90IGVxdWFsIGNob2ljZXMgdG8gd2VpZ2ggdXAgLSBvbmUgaXMgaG93IHRoZSBhY2NvdW50IGlzIG5vcm1hbGx5IHNldHRsZWRcbiAgIGFuZCB0aGUgb3RoZXIgaXMgdGhlIGV4Y2VwdGlvbiAtIGFuZCBhIHNlbnRlbmNlIGNhbiBzYXkgc28gd2hlcmUgYSB0YWIgY2Fubm90LiAqL1xuLnBheW1lbnQtbW9kZS1zd2l0Y2gge1xuXHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG5cdG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5wYXltZW50LW1vZGUtc3dpdGNoLWxhYmVsIHtcblx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0Zm9udC1zaXplOiAxM3B4O1xuXHRsaW5lLWhlaWdodDogMS42O1xuXG5cdC8qIFRoZSBhbHRlcm5hdGl2ZSByb3V0ZS4gVW5kZXJsaW5lZCByYXRoZXIgdGhhbiBidXR0b24tc2hhcGVkLCBzbyBpdCBkb2VzIG5vdCBjb21wZXRlIHdpdGggdGhlIGFjdGlvbiB0aGF0XG5cdCAgIGFjdHVhbGx5IHRha2VzIHRoZSBwYXltZW50LiAqL1xuXHRhIHtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0bWFyZ2luLWxlZnQ6IDAuMzVyZW07XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQ2xhaW1hYmxlIGl0ZW1zIChwcm9ncmVzcyBub3RlIC8gb3BlcmF0aW9uIG5vdGUgLyBjbGFpbSBtb2RhbClcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIExhaWQgb3V0IGFzIHRoZSB0cmFuc2NyaXB0aW9uIHByb2Nlc3NvcidzIEFJIEFzc2lzdCBiYXIgaXM6IG9uZVxuLyogYmx1ZS1ib3ggaG9sZGluZyBhIHRvb2xiYXIgcm93IG9mIGNvbnRyb2xzLCB3aXRoIHRoZSBzZXR0aW5ncyBwYW5lbFxuLyogZHJvcHBpbmcgZG93biBpbnNpZGUgdGhlIHNhbWUgYm94IGJlaGluZCB0aGUgZ2Vhci5cbi8qXG4vKiBBbiBpdGVtIGNvZGUgYW5kIGEgY29tbWVudCBhcmUgdHdvIHdheXMgdG8gcmVjb3JkIHRoZSBzYW1lIHBpZWNlIG9mXG4vKiB3b3JrLCBhbmQgZWl0aGVyIG9uIGl0cyBvd24gaXMgZW5vdWdoLiBUaGUgcnVsZSBiZXR3ZWVuIHRoZSB0d28gcm93c1xuLyogc2F5cyB0aGF0IHdoZXJlIGEgcGFyYWdyYXBoIG9mIGluc3RydWN0aW9ucyB1c2VkIHRvOyB0aGUgY2xpbmljaWFuXG4vKiByZWFkcyB0aGUgZm9ybSwgbm90IGEgcHJlYW1ibGUuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jbGFpbWFibGUtaXRlbXMge1xuXG5cdC8qIE9uZSByb3cgb2YgY29udHJvbHMsIGFzIHRoZSBBSSBBc3Npc3QgYmFyIGlzLiAqL1xuXHQuY2xhaW1hYmxlLWl0ZW1zX190b29sYmFyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHR9XG5cblx0LmNsYWltYWJsZS1pdGVtc19fbGFiZWwge1xuXHRcdGNvbG9yOiAkdGV4dC1saWdodDtcblx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0LyogU2l6ZWQgdG8gdGhlIHdpZGVzdCBmZWUgdGhlIHByYWN0aWNlIHdpbGwgYmlsbCByYXRoZXIgdGhhbiBzaGFyaW5nIHRoZSByb3cnc1xuXHQgICBzdHJldGNoIC0gYSBwcmljZSBpcyBhIHNob3J0IGZpZWxkIGFuZCByZWFkcyB3cm9uZyB3aGVuIGl0IGlzIG5vdC4gKi9cblx0LmNsYWltYWJsZS1pdGVtc19fZmVlIHtcblx0XHR3aWR0aDogOWVtO1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHR9XG5cblx0LyogVGhlIHZlcnRpY2FsIGxpbmUgYWZ0ZXIgdGhlIHNlY3Rpb24ncyBuYW1lLCBhcyB0aGUgQUkgQXNzaXN0IGJhciBkcmF3cyBpdC4gU2NvcGVkLCBhc1xuXHQgICB0aGUgQUkgQXNzaXN0IGJhciBjYXJyaWVzIGl0cyBvd24gY29weSBpbmxpbmUuICovXG5cdC50b29sYmFyLWRpdmlkZXIge1xuXHRcdHdpZHRoOiAxcHg7XG5cdFx0YWxpZ24tc2VsZjogc3RyZXRjaDtcblx0XHRtaW4taGVpZ2h0OiAyLjI1ZW07XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHRvb2xiYXJEaXZpZGVyO1xuXHR9XG5cblx0LnVpLXNlbGVjdC1jb250YWluZXIge1xuXHRcdG1hcmdpbjogMDtcblx0fVxufVxuXG4vKiBCZXR3ZWVuIHRoZSB0b29sYmFyIHJvd3MsIGFuZCB0aGUgc2FtZSBsaW5lIGFzIHRoZSBBSSBBc3Npc3QgYmFyJ3Mgb3duIGRpdmlkZXIuICovXG4uY2xhaW1hYmxlLWl0ZW0tb3Ige1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IDAuNzVyZW07XG5cdG1hcmdpbjogMXJlbSAwO1xuXHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdGZvbnQtc2l6ZTogMTNweDtcbn1cblxuLmNsYWltYWJsZS1pdGVtLW9yOjpiZWZvcmUsXG4uY2xhaW1hYmxlLWl0ZW0tb3I6OmFmdGVyIHtcblx0Y29udGVudDogXCJcIjtcblx0ZmxleDogMTtcblx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICR0b29sYmFyRGl2aWRlcjtcbn1cblxuLyogVGhlIGhvdXNlIHBsdXMgYnV0dG9uIC0gc3F1YXJlLCBuYXZ5LCBiZXNpZGUgdGhlIHJvdyBpdCBhZGRzLiAqL1xuLmJ0bi1hZGQtY2xhaW1hYmxlLWl0ZW0ge1xuXHRoZWlnaHQ6IDM0cHg7XG5cdHdpZHRoOiAzNHB4O1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDA7XG5cdGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFVuY29kZWQgcm93c1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogQSBjb21tZW50IG5vYm9keSBoYXMgY29kZWQgeWV0IHN0YW5kcyBpbiB0aGUgSXRlbSBjb2x1bW4gd2hlcmUgYSBjb2RlXG4vKiB3b3VsZCBiZS4gTWFya2VkIHJhdGhlciB0aGFuIGxlZnQgYmxhbmssIHNvIGl0IHJlYWRzIGFzIHdvcmsgd2FpdGluZ1xuLyogb24gYW4gYWRtaW5pc3RyYXRvciBhbmQgbm90IGFzIGEgcm93IHRoYXQgZmFpbGVkIHRvIGxvYWQuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jbGFpbWFibGUtaXRlbS11bmNvZGVkIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRwYWRkaW5nOiAwLjFyZW0gMC41cmVtO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkd2FybmluZy1ib3JkZXI7XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRiYWNrZ3JvdW5kOiAkd2FybmluZy1iZztcblx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogSW4gdGhlIGNsYWltIG1vZGFsIHRoZSBtYXJrZXIgaXMgdGhlIHdheSBpbiB0byBjb2RpbmcgdGhlIHJvdywgc28gaXQgaGFzIHRvXG4gICByZWFkIGFzIHNvbWV0aGluZyB0byBwcmVzcyByYXRoZXIgdGhhbiBhcyBhIGxhYmVsLiAqL1xuYS5jbGFpbWFibGUtaXRlbS11bmNvZGVkIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cblx0Jjpob3Zlcixcblx0Jjpmb2N1cyB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0fVxufVxuXG4vKiBUaGUgcGlja2VyIGFuIGFkbWluaXN0cmF0b3IgY29kZXMgYW4gdW5jb2RlZCByb3cgd2l0aCwgc2l6ZWQgdG8gc2l0IGluc2lkZVxuICAgYSB0YWJsZSBjZWxsIHJhdGhlciB0aGFuIGZpbGwgdGhlIHJvdyB0aGUgd2F5IHRoZSBjbGFpbSBmb3JtJ3MgZG9lcy4gKi9cbi5jbGFpbWFibGUtaXRlbS1jb2RlciB7XG5cdG1pbi13aWR0aDogMTZyZW07XG5cblx0LnVpLXNlbGVjdC1jb250YWluZXIge1xuXHRcdG1hcmdpbjogMDtcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFRoZSBwcmFjdGljZSdzIG93biBpdGVtIGNvZGVzXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKiBUaGUgZ2VhcidzIHBhbmVsLCBsYWlkIG91dCBhcyB0aGUgcHJvbXB0IG1hbmFnZXIgaXM6IGl0IGRyb3BzIGRvd25cbi8qIGluc2lkZSB0aGUgc2FtZSBib3ggYmVoaW5kIGEgcnVsZSwgd2l0aCB0aGUgbGlzdCBvZiB3aGF0IHRoZSBwcmFjdGljZVxuLyogaG9sZHMgb24gdGhlIGxlZnQgYW5kIHRoZSBmb3JtIHRoYXQgYWRkcyBvciBlZGl0cyBvbmUgb24gdGhlIHJpZ2h0LlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uY2xhaW1hYmxlLWl0ZW1zX19zZXR0aW5ncyB7XG5cdG1hcmdpbi10b3A6IDE1cHg7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCAkdG9vbGJhckRpdmlkZXI7XG5cdHBhZGRpbmctdG9wOiAxNXB4O1xuXG5cdGg1IHtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdH1cbn1cblxuLmNsYWltYWJsZS1pdGVtc19fc2V0dGluZ3MtYm9keSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGdhcDogMTVweDtcblx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG5cbi5jbGFpbWFibGUtaXRlbXNfX2xpc3Qge1xuXHRmbGV4OiAxO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5jbGFpbWFibGUtaXRlbXNfX2xpc3Qtc2Nyb2xsIHtcblx0bWF4LWhlaWdodDogMjIwcHg7XG5cdG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5jbGFpbWFibGUtaXRlbXNfX2xpc3Qtcm93IHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IDEwcHg7XG5cdHBhZGRpbmc6IDhweCAxMHB4O1xuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xufVxuXG4uY2xhaW1hYmxlLWl0ZW1zX19saXN0LW5hbWUge1xuXHRmb250LXNpemU6IDAuOWVtO1xuXHR3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuXG5cdHN0cm9uZyB7XG5cdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XG5cdH1cbn1cblxuLmNsYWltYWJsZS1pdGVtc19fbGlzdC1hY3Rpb25zIHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiA2cHg7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5jbGFpbWFibGUtaXRlbXNfX2xpc3QtZW1wdHkge1xuXHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0cGFkZGluZzogMTBweDtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRmb250LXNpemU6IDAuOWVtO1xufVxuXG4uY2xhaW1hYmxlLWl0ZW1zX19lZGl0b3Ige1xuXHRmbGV4OiAyO1xuXHRiYWNrZ3JvdW5kOiAkbGlnaHRHcmV5O1xuXHRwYWRkaW5nOiAxMnB4O1xuXHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXG5cdC5yb3cge1xuXHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdG1hcmdpbi1yaWdodDogMDtcblx0fVxuXG5cdC5mb3JtLWdyb3VwOmxhc3QtY2hpbGQge1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cbn1cblxuLmNsYWltYWJsZS1pdGVtc19fZWRpdG9yLWFjdGlvbnMge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHRnYXA6IDhweDtcblx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0cGFkZGluZy10b3A6IDEycHg7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIENsYWltcyBsaXN0IHBheW1lbnQgc3RhdGUgKGNsYWltLW1vZGFsLnRtcGwuaHRtbClcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIFdoZXJlIHRoZSBtb25leSBvbiBlYWNoIGNsYWltIGhhcyBnb3QgdG8sIGZyb20gdGhlIHBhdGllbnQncyBzaWRlIC1cbi8qIHNlZSBwYXltZW50U3RhdGUoKSBpbiBjbGFpbU1vZGFsQ29udHJvbGxlci4gVGhlIHN1bW1hcnkgbGluZSBzaXRzXG4vKiBhYm92ZSB0aGUgdGFibGU7IHRoZSBwaWxsIHNpdHMgdW5kZXIgdGhlIFBhdGllbnQgRHVlIGFtb3VudC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNsYWltcy1vdXRzdGFuZGluZyB7XG5cdG1hcmdpbi1ib3R0b206IDFyZW07XG5cdHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcblx0Ym9yZGVyOiAxcHggc29saWQgJHdhcm5pbmctYm9yZGVyO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0YmFja2dyb3VuZC1jb2xvcjogJHdhcm5pbmctYmc7XG5cdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXG5cdC8qIE1vbmV5IG93ZWQgYmFjayB0byB0aGUgcGF0aWVudCByYXRoZXIgdGhhbiBieSB0aGVtLCBzbyBub3QgdGhlXG5cdCAgIHdhcm5pbmcgY29sb3VycyBvZiB0aGUgbGluZSBhYm92ZS4gKi9cblx0Ji5jbGFpbXMtb3V0c3RhbmRpbmctLW92ZXJwYWlkIHtcblx0XHRib3JkZXItY29sb3I6ICRjeWFuLXRwLTQwO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjeWFuLXRwLTA1O1xuXHRcdGNvbG9yOiAkY3lhbi1kYXJrZXI7XG5cdH1cbn1cblxuLmNsYWltLXBheW1lbnQtcGlsbCB7XG5cdC8qIE9uIGl0cyBvd24gbGluZSB1bmRlciB0aGUgYW1vdW50LCBzaXplZCB0byBpdHMgbGFiZWwuICovXG5cdGRpc3BsYXk6IGJsb2NrO1xuXHR3aWR0aDogbWF4LWNvbnRlbnQ7XG5cdG1hcmdpbi10b3A6IDAuMjVyZW07XG5cdHBhZGRpbmc6IDJweCAxMHB4O1xuXHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRmb250LXNpemU6IDExcHg7XG5cdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdGxldHRlci1zcGFjaW5nOiAwLjVweDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0Y3Vyc29yOiBoZWxwO1xuXG5cdCYuY2xhaW0tcGF5bWVudC1waWxsLS1wYWlkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMjA7XG5cdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdH1cblxuXHQmLmNsYWltLXBheW1lbnQtcGlsbC0tdW5wYWlkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQtdHAtMTU7XG5cdFx0Y29sb3I6ICRkYW5nZXI7XG5cdH1cblxuXHQmLmNsYWltLXBheW1lbnQtcGlsbC0tY2hlcXVlIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93LXRwLTMwO1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHR9XG5cblx0Ji5jbGFpbS1wYXltZW50LXBpbGwtLWZ1bmRlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHBhZ2VCYWNrR3JvdW5kO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdCYuY2xhaW0tcGF5bWVudC1waWxsLS1vdmVycGFpZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGN5YW4tdHAtMjA7XG5cdFx0Y29sb3I6ICRjeWFuLWRhcmtlcjtcblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBMZXR0ZXIgc2lnbi1vZmYgKGJlbmVhdGggdGhlIGxldHRlciB0ZXh0LCBhbmQgaW4gU2V0dGluZ3MgLT4gUHJvZmlsZSlcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnNpZ24tb2ZmLXNlY3Rpb24ge1xuXHRtYXJnaW4tdG9wOiAxNnB4O1xuXHRwYWRkaW5nOiAxMnB4IDE2cHg7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdGJhY2tncm91bmQ6ICRncmV5LW1vZGFsLWhlYWRlcjtcblxuXHQuc2lnbi1vZmYtaGVhZGVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW4tYm90dG9tOiA4cHg7XG5cblx0XHQvKiBDZW50cmUgdGhlIGJveCBvbiB0aGUgbGFiZWw7IHRoZSBhcHAtd2lkZSAuY2hlY2stc3BhbiBudWRnZSBhbmQgQm9vdHN0cmFwJ3MgaW5wdXQgbWFyZ2luXG5cdFx0ICAgb3RoZXJ3aXNlIGxlYXZlIHRoZW0gb3V0IG9mIGxpbmUuICovXG5cdFx0LmNoZWNrLWxhYmVsIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogNnB4O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXG5cdFx0XHRpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR9XG5cblx0XHRcdC5jaGVjay1zcGFuIHtcblx0XHRcdFx0dG9wOiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBzZXR0aW5ncyBwYW5lJ3MgaW5saW5lIGFjdGlvbiwgd2hpY2ggaXMgc2NvcGVkIHRvIHRoZSBzZXR0aW5ncyBzaGVsbC4gKi9cblx0LmxpbmstYWN0aW9uIHtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA0cHg7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHR9XG5cblx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRjb2xvcjogJGdyZXktZGlzYWJsZWQ7XG5cdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0fVxuXHR9XG59XG5cbi5zaWduLW9mZi1hY3Rpb25zIHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRnYXA6IDE2cHg7XG59XG5cbi5zaWduLW9mZi1zZXR0aW5ncyAuc2lnbi1vZmYtYWN0aW9ucyB7XG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0bWFyZ2luLXRvcDogMTJweDtcblxuXHQubGluay1hY3Rpb24ge1xuXHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0fVxufVxuXG4uc2lnbi1vZmYtc3RhdHVzIHtcblx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRmb250LXNpemU6IDEycHg7XG5cblx0LmZhLWNoZWNrIHtcblx0XHRjb2xvcjogJGdyZWVuO1xuXHR9XG59XG5cbi5zaWduLW9mZi1lcnJvciB7XG5cdGNvbG9yOiAkZGFuZ2VyO1xuXHRmb250LXNpemU6IDEycHg7XG59XG5cbi5zaWduLW9mZi1oaW50IHtcblx0bWFyZ2luOiA4cHggMDtcblx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRmb250LXNpemU6IDEycHg7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLnNpZ24tb2ZmLWVkaXRvciB7XG5cdC5ub3RlLWVkaXRvciB7XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHR9XG5cblx0LyogR29yZGl0YSwgYXMgb24gdGhlIGxldHRlciBzY3JlZW4sIHdoZXJlIGl0IGNvbWVzIGZyb20gdGhlIGZvcm0gYXJvdW5kIHRoZSBlZGl0b3IuIFNldHRpbmdzIGhhc1xuXHQgICBub3RoaW5nIHRoYXQgc2V0cyBpdCwgc28gdGhlIHNpZ24tb2ZmIGZlbGwgYmFjayB0byB0aGUgcGFnZSBmb250IHRoZXJlLiAqL1xuXHQubm90ZS1lZGl0YWJsZSB7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIFJlZ3VsYXInLCBzYW5zLXNlcmlmO1xuXHR9XG5cblx0LyogVGhlIHNhdmUgaWNvbiBzaXRzIGF0IHRoZSBmYXIgZW5kIG9mIHRoZSB0b29sYmFyLCBhd2F5IGZyb20gdGhlIGZvcm1hdHRpbmcgYnV0dG9ucy4gKi9cblx0Lm5vdGUtdG9vbGJhciAubm90ZS1zYXZlIHtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdH1cblxuXHQvKiBSZWFkLW9ubHk6IHRoZSBzaWduLW9mZiBhcyBpdCB3aWxsIHNpdCBiZW5lYXRoIHRoZSBsZXR0ZXIuIEJsYWNrIHRleHQgYW5kIHRoZSBlZGl0b3Inc1xuXHQgICBwYXJhZ3JhcGggc3BhY2luZywgc28gaXQgcmVhZHMgdGhlIHNhbWUgYXMgdGhlIGVkaXRhYmxlIHNpZ24tb2ZmIGFuZCB0aGUgUERGLiAqL1xuXHQuc2lnbi1vZmYtcHJldmlldyB7XG5cdFx0bWluLWhlaWdodDogNjBweDtcblx0XHRwYWRkaW5nOiA4cHggMTJweDtcblx0XHRib3JkZXI6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICRibGFjaztcblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiAwIDAgMTBweDtcblxuXHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgTm90aWZpY2F0aW9uc1xuLyogVGhlIGZsb2F0aW5nIGJhbm5lciwgdGhlIHVyZ2VuY3kgY29sb3VycyBzaGFyZWQgd2l0aCB0aGUgbm90aWZpY2F0aW9uXG4vKiBtb2RhbCwgYW5kIHRoZSBhZG1pbiBjb25zb2xlLiBUaGUgY29uc29sZSBpcyBidWlsdCBvbiB0aGUgc2V0dGluZ3Ncbi8qIG1vZGFsJ3Mgc2hlbGwgKC5zZXR0aW5ncy1zaGVsbCBpbiBfc2V0dGluZ3MuY3NzLCAuc2V0dGluZ3MtY2FyZCxcbi8qIC5zZXR0aW5nLXJvdyBhbmQgLnRvZ2dsZS1zd2l0Y2ggaW4gX3BheW1lbnRzLmNzcyk7IG9ubHkgd2hhdCB0aG9zZVxuLyogZG8gbm90IGFscmVhZHkgY292ZXIgbGl2ZXMgaGVyZS5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBVcmdlbmN5IHRvbmVzXG4vKiBFYWNoIHRvbmUgc2V0cyB0aGUgc2FtZSB0aHJlZSBjdXN0b20gcHJvcGVydGllcyBzbyBldmVyeSBwaWVjZSBiZWxvd1xuLyogKGJhbm5lciwgbW9kYWwgbGFiZWwsIHBpbGxzLCBwcmV2aWV3KSBpcyBjb2xvdXJlZCBmcm9tIG9uZSBwbGFjZS5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5ub3RpY2UtdG9uZS1TVEFOREFSRCB7XG5cdC0tbm90aWNlLWZnOiAkbm90aWNlLXN0YW5kYXJkO1xuXHQtLW5vdGljZS1hY2NlbnQ6ICRub3RpY2Utc3RhbmRhcmQ7XG5cdC0tbm90aWNlLWJnOiAkbm90aWNlLXN0YW5kYXJkLWJnO1xufVxuXG4ubm90aWNlLXRvbmUtSElHSCB7XG5cdC0tbm90aWNlLWZnOiAkbm90aWNlLWhpZ2g7XG5cdC0tbm90aWNlLWFjY2VudDogJG5vdGljZS1oaWdoLWFjY2VudDtcblx0LS1ub3RpY2UtYmc6ICRub3RpY2UtaGlnaC1iZztcbn1cblxuLm5vdGljZS10b25lLVVSR0VOVCB7XG5cdC0tbm90aWNlLWZnOiAkbm90aWNlLXVyZ2VudDtcblx0LS1ub3RpY2UtYWNjZW50OiAkbm90aWNlLXVyZ2VudDtcblx0LS1ub3RpY2UtYmc6ICRub3RpY2UtdXJnZW50LWJnO1xufVxuXG4ubm90aWNlLXRvbmUtRVJST1Ige1xuXHQtLW5vdGljZS1mZzogJG5vdGljZS1lcnJvcjtcblx0LS1ub3RpY2UtYWNjZW50OiAkbm90aWNlLWVycm9yO1xuXHQtLW5vdGljZS1iZzogJG5vdGljZS1lcnJvci1iZztcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBGbG9hdGluZyBiYW5uZXJcbi8qIEZpeGVkIGFuZCBvdXQgb2YgZmxvdywgc28gaXQgZmxvYXRzIG92ZXIgdGhlIHBhZ2UgaW5zdGVhZCBvZiBwdXNoaW5nXG4vKiBpdCBkb3duLiBUaGUgaG9zdCBpZ25vcmVzIHBvaW50ZXIgZXZlbnRzIHNvIG9ubHkgdGhlIGNhcmQgaXRzZWxmXG4vKiBibG9ja3MgY2xpY2tzIG9uIHdoYXRldmVyIHNpdHMgYmVuZWF0aCBpdC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBrZXlmcmFtZXMgbm90aWNlLWJhbm5lci1pbiB7XG5cdGZyb20ge1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMnB4KTtcblx0fVxuXG5cdHRvIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIG5vdGljZS1iYW5uZXItY291bnRkb3duIHtcblx0ZnJvbSB7XG5cdFx0dHJhbnNmb3JtOiBzY2FsZVgoMSk7XG5cdH1cblxuXHR0byB7XG5cdFx0dHJhbnNmb3JtOiBzY2FsZVgoMCk7XG5cdH1cbn1cblxuLm5vdGljZS1iYW5uZXItaG9zdCB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0dG9wOiAxNnB4O1xuXHRsZWZ0OiAwO1xuXHRyaWdodDogMDtcblx0ei1pbmRleDogMTAwMDA7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRwYWRkaW5nOiAwIDE2cHg7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ubm90aWNlLWJhbm5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdGdhcDogMTJweDtcblx0d2lkdGg6IDEwMCU7XG5cdG1heC13aWR0aDogNzIwcHg7XG5cdHBhZGRpbmc6IDE0cHggNDRweCAxNHB4IDE2cHg7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5vdGljZS1iZyk7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0Ym9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1ub3RpY2UtYWNjZW50KTtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdGJveC1zaGFkb3c6ICRzaGFkb3ctbWQ7XG5cdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRwb2ludGVyLWV2ZW50czogYXV0bztcblx0YW5pbWF0aW9uOiBub3RpY2UtYmFubmVyLWluIDAuMjVzIGVhc2Utb3V0O1xuXG5cdC5ub3RpY2UtYmFubmVyLWljb24ge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRsaW5lLWhlaWdodDogMjBweDtcblx0XHRjb2xvcjogdmFyKC0tbm90aWNlLWZnKTtcblx0fVxuXG5cdC5ub3RpY2UtYmFubmVyLWJvZHkge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRsaW5lLWhlaWdodDogMjBweDtcblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5ub3RpY2UtYmFubmVyLXRpdGxlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y29sb3I6IHZhcigtLW5vdGljZS1mZyk7XG5cdH1cblxuXHQubm90aWNlLWJhbm5lci1jbG9zZSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMTBweDtcblx0XHRyaWdodDogMTBweDtcblx0XHR3aWR0aDogMjhweDtcblx0XHRoZWlnaHQ6IDI4cHg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGJsYWNrLXRwLTEwO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0XHRvdXRsaW5lOiAwO1xuXHRcdH1cblx0fVxuXG5cdC8qIFNocmlua3Mgb3ZlciB0aGUgYmFubmVyJ3MgbGlmZXRpbWUgc28gdXNlcnMgY2FuIHNlZSBpdCB3aWxsIGdvIGF3YXkgb24gaXRzIG93bi4gKi9cblx0Lm5vdGljZS1iYW5uZXItY291bnRkb3duIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHRib3R0b206IDA7XG5cdFx0aGVpZ2h0OiAzcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbm90aWNlLWFjY2VudCk7XG5cdFx0b3BhY2l0eTogMC41O1xuXHRcdHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XG5cdFx0YW5pbWF0aW9uLW5hbWU6IG5vdGljZS1iYW5uZXItY291bnRkb3duO1xuXHRcdGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcblx0XHRhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIE5vdGlmaWNhdGlvbiBtb2RhbCB1cmdlbmN5IGxhYmVsXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubm90aWNlLW1vZGFsLWxhYmVsIHtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGdhcDogNnB4O1xuXHRtYXJnaW46IDAgMCA0cHg7XG5cdHBhZGRpbmc6IDRweCAxMnB4O1xuXHRib3JkZXItcmFkaXVzOiA5OTlweDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbm90aWNlLWJnKTtcblx0Y29sb3I6IHZhcigtLW5vdGljZS1mZyk7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEFkbWluIGNvbnNvbGVcbi8qIFNjb3BlZCB1bmRlciAuc2V0dGluZ3Mtc2hlbGwubm90aWZpY2F0aW9uLWNvbnNvbGUgc28gdGhlc2Ugc2l0IG9uIHRvcFxuLyogb2YgdGhlIHNldHRpbmdzIHN0eWxlcyB3aXRob3V0IGNoYW5naW5nIHRoZW0gYW55d2hlcmUgZWxzZS5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zZXR0aW5ncy1zaGVsbC5ub3RpZmljYXRpb24tY29uc29sZSB7XG5cdC8qIFRoZSBzZXR0aW5ncyBtb2RhbCBnZXRzIGl0cyBoZWlnaHQgZnJvbSB0aGUgZGlhbG9nOyBvbiBhIHBhZ2UgaXQgbmVlZHMgaXRzIG93bi4gKi9cblx0aGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjIwcHgpO1xuXHRtaW4taGVpZ2h0OiA2MjBweDtcblx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0Ym94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXG5cdC5zZXR0aW5ncy1hdmF0YXIgaSB7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHR9XG5cblx0LyogLnNldHRpbmdzLXBhbmUgaGFuZHMgaXRzIGhlaWdodCB0byBvbmUgY2hpbGQ7IHRoaXMgb25lIHNwbGl0cyBpdCBpbnRvIHRoZSB0YWIgYmFyIGFuZCB0aGUgdmlldy4gKi9cblx0Lm5jLXBhbmUsXG5cdC5uYy12aWV3IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0ZmxleDogMTtcblx0XHRtaW4taGVpZ2h0OiAwO1xuXHR9XG5cblx0LyogISBTdGF0dXMgdGFicyAtIHRoZSByYWlsJ3MgLnNldHRpbmdzLW5hdi1pdGVtLCBsYWlkIG91dCBpbiBhIHJvdyBhbG9uZyB0aGUgdG9wIG9mIHRoZSBwYW5lICovXG5cdC5uYy10YWJiYXIge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0cGFkZGluZzogMTJweCAyOHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdG92ZXJmbG93LXg6IGF1dG87XG5cblx0XHQuc2V0dGluZ3MtbmF2LWl0ZW0ge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cdH1cblxuXHQvKiBDb3VudCBvbiBlYWNoIHJhaWwgaXRlbSwgc3R5bGVkIGxpa2UgdGhlIHJhaWwncyAubmF2LWdyb3VwLXRhZyAqL1xuXHQuc2V0dGluZ3MtbmF2LWl0ZW0gLm5jLW5hdi1jb3VudCB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0bWluLXdpZHRoOiAyMnB4O1xuXHRcdHBhZGRpbmc6IDFweCA3cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHQuc2V0dGluZ3MtbmF2LWl0ZW0uYWN0aXZlIC5uYy1uYXYtY291bnQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZS10cC0yMDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHR9XG5cblx0Lm5jLWJhY2sge1xuXHRcdG1hcmdpbi10b3A6IDEycHg7XG5cdH1cblxuXHQuY2FyZC1oZWFkZXItZmxleCB7XG5cdFx0Z2FwOiAxNnB4O1xuXHR9XG5cblx0Lm5jLXNlYXJjaCB7XG5cdFx0d2lkdGg6IDI0MHB4O1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDMycHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQvKiAhIE5vdGlmaWNhdGlvbiByb3dzIC0gLnNldHRpbmctcm93LCByZWNvbG91cmVkIGJ5IHRoZSByb3cncyB1cmdlbmN5IHRvbmUgKi9cblx0Lm5jLWl0ZW0ge1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNXB4O1xuXG5cdFx0LnNldHRpbmctaWNvbiB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5vdGljZS1iZyk7XG5cdFx0XHRjb2xvcjogdmFyKC0tbm90aWNlLWZnKTtcblx0XHR9XG5cblx0XHQuc2V0dGluZy1jb250ZW50IHtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cblx0XHQuY2hpcC1saXN0IHtcblx0XHRcdGdhcDogNnB4O1xuXHRcdFx0bWFyZ2luOiA4cHggMCA2cHg7XG5cdFx0fVxuXG5cdFx0Ji5pcy1tdXRlZCAuc2V0dGluZy1pY29uLFxuXHRcdCYuaXMtbXV0ZWQgLnNldHRpbmctY29udGVudCB7XG5cdFx0XHRvcGFjaXR5OiAwLjY7XG5cdFx0fVxuXHR9XG5cblx0Lm5jLWl0ZW0tdGl0bGUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0fVxuXG5cdC5uYy1pdGVtLW1lc3NhZ2Uge1xuXHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRwIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZTtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQvKiBWaWV3ZXIgY291bnQsIHNldCBhcGFydCBmcm9tIHRoZSByb3cgbGlrZSB0aGUgbnVtYmVycyBpbiAuZGV0YWlsLXZhbHVlICovXG5cdC5uYy1zZWVuIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHR3aWR0aDogOTJweDtcblx0XHRwYWRkaW5nOiAwIDEycHg7XG5cdFx0Ym9yZGVyLWxlZnQ6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yaWdodDogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0c3Ryb25nIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuMjtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHRzcGFuIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuMztcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdH1cblx0fVxuXG5cdC5uYy1pdGVtLWFjdGlvbnMge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXG5cdFx0LnRvZ2dsZS1zd2l0Y2gge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC8qIFN0YXR1cyBjaGlwcyAtIHN1Y2Nlc3MgZ3JlZW4sIHRoZSBicmFuZCBuYXZ5LCBhbmQgdGhlIHNldHRpbmdzIGNhdXRpb24gYW1iZXIgKi9cblx0LmNoaXAubmMtc3RhdHVzIHtcblx0XHQmLnN0YXR1cy1saXZlIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0xMDtcblx0XHRcdGJvcmRlci1jb2xvcjogJGdyZWVuLXRwLTMwO1xuXHRcdFx0Y29sb3I6IGNvbG9yKCRncmVlbiBsKC0xMiUpKTtcblx0XHR9XG5cblx0XHQmLnN0YXR1cy1zY2hlZHVsZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHR9XG5cblx0XHQmLnN0YXR1cy1wYXVzZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjhlNjtcblx0XHRcdGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDE3MSwgMCwgMC4zKTtcblx0XHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdH1cblxuXHRcdCYuc3RhdHVzLWVuZGVkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0XHRib3JkZXItY29sb3I6ICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdH1cblx0fVxuXG5cdC8qIFVyZ2VuY3kgY2hpcHMgdGFrZSB0aGVpciBjb2xvdXIgZnJvbSB0aGUgdXJnZW5jeSB0b25lICovXG5cdC5jaGlwLm5jLXRvbmUtY2hpcCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbm90aWNlLWJnKTtcblx0XHRib3JkZXItY29sb3I6IHZhcigtLW5vdGljZS1hY2NlbnQpO1xuXHRcdGNvbG9yOiB2YXIoLS1ub3RpY2UtZmcpO1xuXHR9XG5cblx0LmNoaXAtc2VsZWN0Lm5jLXRvbmUtY2hpcCB7XG5cdFx0aSB7XG5cdFx0XHRjb2xvcjogdmFyKC0tbm90aWNlLWZnKTtcblx0XHR9XG5cblx0XHQmLnNlbGVjdGVkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5vdGljZS1iZyk7XG5cdFx0XHRib3JkZXItY29sb3I6IHZhcigtLW5vdGljZS1hY2NlbnQpO1xuXHRcdFx0Y29sb3I6IHZhcigtLW5vdGljZS1mZyk7XG5cdFx0fVxuXHR9XG5cblx0LyogLmNoaXAtc2VsZWN0IGlzIHdyaXR0ZW4gZm9yIGEgPGxhYmVsPjsgYXMgYSA8YnV0dG9uPiBpdCBuZWVkcyB0aGUgZm9udCBiYWNrICovXG5cdGJ1dHRvbi5jaGlwLXNlbGVjdCB7XG5cdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdH1cblxuXHQubmMtbW9yZSB7XG5cdFx0cGFkZGluZy10b3A6IDE0cHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cblx0Lm5jLWNoYXItY291bnQge1xuXHRcdGZsb2F0OiByaWdodDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQubmMtcHJlc2V0cyB7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luLXRvcDogOHB4O1xuXG5cdFx0LmNoaXAtc2VsZWN0IHtcblx0XHRcdHBhZGRpbmc6IDRweCAxMXB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdH1cblx0fVxuXG5cdC8qICEgQ29tcG9zZTogdGhlIGZvcm0gc2Nyb2xscyBvbiB0aGUgbGVmdDsgdGhlIHByZXZpZXcgaGFzIGl0cyBvd24gY29sdW1uIHNvIGl0XG5cdCAgIHN0YXlzIGluIHZpZXcgZm9yIHRoZSB3aG9sZSBmb3JtLiAqL1xuXHQubmMtdmlldy5uYy1jb21wb3NlIHtcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHR9XG5cblx0Lm5jLWNvbXBvc2UtbWFpbiB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHR9XG5cblx0Lm5jLXByZXZpZXctcGFuZSB7XG5cdFx0ZmxleDogMCAwIDM2MHB4O1xuXHRcdHdpZHRoOiAzNjBweDtcblx0XHRwYWRkaW5nOiAyNHB4IDI0cHggMjRweCAwO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdH1cblxuXHQuc2V0dGluZ3Mtbm90aWNlIHtcblx0XHRtYXJnaW46IDIwcHggMCAwO1xuXHR9XG5cblx0Lm5jLXByZXZpZXcge1xuXHRcdC8qIFRoZSByZWFsIGJhbm5lciBpcyBmaXhlZCB0byB0aGUgdmlld3BvcnQ7IGhlcmUgaXQgc2l0cyBpbiB0aGUgY2FyZC4gKi9cblx0XHQubm90aWNlLWJhbm5lciB7XG5cdFx0XHRhbmltYXRpb246IG5vbmU7XG5cdFx0XHRib3gtc2hhZG93OiAkc2hhZG93LXNtO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblx0XHR9XG5cblx0XHQvKiBIb3N0cyB0aGUgcmVhbCBtb2RhbCB0ZW1wbGF0ZSBpbiBmbG93OiBjYW5jZWxzIEJvb3RzdHJhcCdzIGZ1bGwtc2NyZWVuIC5tb2RhbCBhbmQgdGhlXG5cdFx0ICAgY2VudHJpbmcgb24gLm1vZGFsLWNlbnRlciwgYW5kIGxlYXZlcyB0aGUgbW9kYWwncyBvd24gbG9vayB1bnRvdWNoZWQuICovXG5cdFx0Lm5jLXByZXZpZXctbW9kYWwtZnJhbWUge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG5cdFx0XHQubW9kYWwge1xuXHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdHRvcDogYXV0bztcblx0XHRcdFx0cmlnaHQ6IGF1dG87XG5cdFx0XHRcdGJvdHRvbTogYXV0bztcblx0XHRcdFx0bGVmdDogYXV0bztcblx0XHRcdFx0ei1pbmRleDogYXV0bztcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdG92ZXJmbG93OiB2aXNpYmxlO1xuXHRcdFx0fVxuXG5cdFx0XHQubW9kYWwtZGlhbG9nLFxuXHRcdFx0Lm1vZGFsLWRpYWxvZy5tb2RhbC1jZW50ZXIge1xuXHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdHRvcDogYXV0bztcblx0XHRcdFx0bGVmdDogYXV0bztcblx0XHRcdFx0dHJhbnNmb3JtOiBub25lO1xuXHRcdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQubW9kYWwtY29udGVudCB7XG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdFx0Ym94LXNoYWRvdzogJHNoYWRvdy1tZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZGV0YWlsLXJvdyB7XG5cdFx0XHRtaW4taGVpZ2h0OiAwO1xuXHRcdFx0cGFkZGluZzogOXB4IDA7XG5cblx0XHRcdC5kZXRhaWwtbGFiZWwge1xuXHRcdFx0XHRmbGV4LWJhc2lzOiA5MHB4O1xuXHRcdFx0XHR3aWR0aDogOTBweDtcblx0XHRcdH1cblxuXHRcdFx0LmRldGFpbC12YWx1ZSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcblx0XHRoZWlnaHQ6IGF1dG87XG5cblx0XHQubmMtaXRlbSB7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0fVxuXG5cdFx0Lm5jLWl0ZW0tYWN0aW9ucyB7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdH1cblxuXHRcdC5uYy1zZWVuIHtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdH1cblxuXHRcdC5uYy10YWJiYXIge1xuXHRcdFx0cGFkZGluZzogMTBweCAxNnB4O1xuXHRcdH1cblxuXHRcdC5uYy12aWV3Lm5jLWNvbXBvc2Uge1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0fVxuXG5cdFx0Lm5jLWNvbXBvc2UtbWFpbiB7XG5cdFx0XHRmbGV4OiAwIDAgYXV0bztcblx0XHR9XG5cblx0XHQubmMtcHJldmlldy1wYW5lIHtcblx0XHRcdGZsZXg6IDAgMCBhdXRvO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRwYWRkaW5nOiAwIDE2cHggMTZweDtcblx0XHRcdG92ZXJmbG93OiB2aXNpYmxlO1xuXHRcdH1cblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBMZW5zIGRpc3BlbnNpbmdcbi8qIFRoZSBqb2IgZGlhbG9nIHNpdHMgaW5zaWRlIC5zZXR0aW5ncy1zaGVsbCBzbyBpdCBpbmhlcml0cyB0aGUgc2V0dGluZ3Ncbi8qIG1vZGFsJ3MgY2FyZHMsIGNoaXBzLCBub3RpY2VzIGFuZCBhY3Rpb24gYmFyIChfc2V0dGluZ3MuY3NzLFxuLyogX3BheW1lbnRzLmNzcykuIE9ubHkgd2hhdCBpcyBuZXcgaXMgZGVmaW5lZCBoZXJlLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4kbGVucy1jYW52YXM6ICNmNGY3ZmU7XG4kbGVucy1tdXRlZDogIzg3OGJhMDtcbiRsZW5zLWZhaW50OiAjYTNhYWMwO1xuJGxlbnMtcnVsZTogI2VlZjFmNztcbi8qIENvbnRhY3QgbGVucyBqb2JzIGFyZSB0YWdnZWQgdGVhbCBzbyB0aGV5IHJlYWQgYXBhcnQgZnJvbSBnbGFzc2VzIGF0IGEgZ2xhbmNlICovXG4kbGVucy10ZWFsLXBhbGU6ICNlM2Y0ZjE7XG5cbi8qIC0tLSBTaGFyZWQgYXJ0IC0tLSAqL1xubGVucy1mcmFtZS1hcnQsXG5sZW5zLWRlc2lnbi1hcnQge1xuXHRkaXNwbGF5OiBibG9jaztcbn1cblxuLmxlbnMtZnJhbWUtYXJ0IHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IGF1dG87XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xuXG5cdHBhdGgge1xuXHRcdHRyYW5zaXRpb246IGZpbGwgMC4yNXMgZWFzZSwgc3Ryb2tlIDAuMjVzIGVhc2UsIGZpbGwtb3BhY2l0eSAwLjI1cyBlYXNlO1xuXHR9XG59XG5cbi5sZW5zLWRlc2lnbi1hcnQge1xuXHRkaXNwbGF5OiBibG9jaztcblx0d2lkdGg6IDc0cHg7XG5cdGhlaWdodDogNzRweDtcblx0ZmxleC1zaHJpbms6IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgRGFzaGJvYXJkIG1vZHVsZVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxlbnMtbW9kdWxlIHtcblx0LmxlbnMtbW9kdWxlLWNvdW50IHtcblx0XHRtYXJnaW4tcmlnaHQ6IDEuMmVtO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0cGFkZGluZzogM3B4IDEwcHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0fVxuXG5cdC5sZW5zLWpvYi1saXN0IHtcblx0XHRwYWRkaW5nOiA2cHggMC44ZW0gMTJweDtcblx0XHRtYXgtaGVpZ2h0OiAzMmVtO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdH1cblxuXHQubGVucy1lbXB0eSB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHBhZGRpbmc6IDI0cHggMCAxNnB4O1xuXHRcdGNvbG9yOiAkbGVucy1mYWludDtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiAyNnB4O1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiA2cHg7XG5cdFx0fVxuXG5cdFx0YSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWpvYiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTRweDtcblx0XHRwYWRkaW5nOiAxMnB4IDEycHg7XG5cdFx0bWFyZ2luLXRvcDogNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItbGVmdDogNHB4IHNvbGlkICRuYXZ5O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjE1cyBlYXNlLCB0cmFuc2Zvcm0gMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym94LXNoYWRvdzogMCA2cHggMThweCByZ2JhKDAsIDUzLCAyMTAsIDAuMSk7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG5cdFx0fVxuXG5cdFx0Ji5zdGF0dXMtcXVvdGUge1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdH1cblxuXHRcdCYuc3RhdHVzLWludm9pY2VkIHtcblx0XHRcdGJvcmRlci1sZWZ0LWNvbG9yOiAkeWVsbG93O1xuXHRcdH1cblxuXHRcdCYuc3RhdHVzLW9yZGVyZWQsXG5cdFx0Ji5zdGF0dXMtaW4tcHJvZHVjdGlvbiB7XG5cdFx0XHRib3JkZXItbGVmdC1jb2xvcjogJGN5YW47XG5cdFx0fVxuXG5cdFx0Ji5zdGF0dXMtcmVjZWl2ZWQge1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6ICRncmVlbjtcblx0XHR9XG5cblx0XHQmLnN0YXR1cy1jb2xsZWN0ZWQge1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6ICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0XHRvcGFjaXR5OiAwLjg7XG5cdFx0fVxuXG5cdFx0LyogSW52b2ljZWQsIGlzc3VlZCBvciB3aXRoZHJhd246IGxvY2tlZCwgc28gdGhlIHJvdyBkb2Vzbid0IG9wZW4gLSBvbmx5IGl0cyBhY3Rpb25zIGRvICovXG5cdFx0Ji5sZW5zLWpvYi1sb2NrZWQge1xuXHRcdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdFx0dHJhbnNmb3JtOiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWpvYi10aHVtYiB7XG5cdFx0ZmxleDogMCAwIDk2cHg7XG5cdFx0cGFkZGluZzogMTBweCA2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHR9XG5cblx0LyogVGhlIGltYWdlIHdpdGggd2hhdCB0aGUgcm93IGlzIGFuZCB3aGVyZSBpdCdzIHVwIHRvIGJlbmVhdGggaXQsIGxlYXZpbmcgdGhlIHRleHQgdGhlIHdpZHRoIChib3RoIHRpbGVzKSAqL1xuXHQubGVucy1qb2Itc2lkZSB7XG5cdFx0ZmxleDogMCAwIDk2cHg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cblx0XHQubGVucy1qb2ItdGh1bWIge1xuXHRcdFx0ZmxleDogbm9uZTtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdH1cblxuXHRcdC8qIEEgbG9uZyBvbmUgKFwiTXVsdGlmb2NhbCBnbGFzc2VzXCIsIFwiUmVhZHkgdG8gY29sbGVjdFwiKSB0YWtlcyB0d28gbGluZXMsIG5vdCBtb3JlIG9mIHRoZSByb3cgKi9cblx0XHQubGVucy10eXBlLXRhZyxcblx0XHQubGVucy1zdGF0dXMtcGlsbCxcblx0XHQubGVucy1yeC1waWxsIHtcblx0XHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4yNTtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDEwcHg7XG5cdFx0fVxuXG5cdFx0LyogSnVzdCBlbm91Z2ggZm9yIFwiU3BlY3RhY2xlIFJ4XCIgYW5kIFwiQ29udGFjdHMgUnhcIiBvbiBvbmUgbGluZSAqL1xuXHRcdC5sZW5zLXR5cGUtdGFnIHtcblx0XHRcdHBhZGRpbmc6IDJweCA2cHg7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWpvYi1tYWluIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5sZW5zLWpvYi10b3Age1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdH1cblxuXHQubGVucy1qb2ItbnVtYmVyIHtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0fVxuXG5cdC5sZW5zLWpvYi10b3RhbCB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHR9XG5cblx0LyogV3JhcHMsIHNvIGEgbG9uZyBmcmFtZSBvciBsZW5zIG5hbWUgaXMgcmVhZCBpbiBmdWxsICovXG5cdC5sZW5zLWpvYi1kZXNjIHtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRtYXJnaW4tdG9wOiAzcHg7XG5cdFx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cdH1cblxuXHQubGVucy1qb2ItbWV0YSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA0cHggMTRweDtcblx0XHRtYXJnaW4tdG9wOiA2cHg7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAzcHg7XG5cdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtam9iLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdH1cblxuXHQubGVucy1hY3Rpb24tYnRuIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0cGFkZGluZzogNnB4IDExcHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRib3JkZXI6IDFweCBkYXNoZWQgJHdhcm5pbmctYm9yZGVyO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtaGlnaC1iZztcblx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3ctdHAtMzA7XG5cdFx0fVxuXG5cdFx0JltkaXNhYmxlZF0ge1xuXHRcdFx0b3BhY2l0eTogMC42O1xuXHRcdH1cblxuXHRcdCYucHJpbWFyeSB7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1qb2ItcmVtb3ZlIHtcblx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdH1cblx0fVxuXG5cdC8qIFByb2dyZXNzIHRyYWNrOiBvbmUgc2VnbWVudCBwZXIgc3RhZ2UgYWZ0ZXIgdGhlIHF1b3RlICovXG5cdC5sZW5zLXRyYWNrIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogNHB4O1xuXHRcdG1hcmdpbi10b3A6IDlweDtcblx0fVxuXG5cdC5sZW5zLXRyYWNrLXN0ZXAge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0LmxlbnMtdHJhY2stYmFyIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0aGVpZ2h0OiA1cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1ydWxlO1xuXHRcdH1cblxuXHRcdC5sZW5zLXRyYWNrLWxhYmVsIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bWFyZ2luLXRvcDogM3B4O1xuXHRcdFx0Zm9udC1zaXplOiA5LjVweDtcblx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0fVxuXG5cdFx0Ji5kb25lIC5sZW5zLXRyYWNrLWJhciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmLmN1cnJlbnQge1xuXHRcdFx0LmxlbnMtdHJhY2stYmFyIHtcblx0XHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAkbmF2eSAwJSwgJGN5YW4gMTAwJSk7XG5cdFx0XHRcdGFuaW1hdGlvbjogbGVucy1wdWxzZSAxLjZzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuXHRcdFx0fVxuXG5cdFx0XHQubGVucy10cmFjay1sYWJlbCB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5Aa2V5ZnJhbWVzIGxlbnMtcHVsc2Uge1xuXHQwJSxcblx0MTAwJSB7XG5cdFx0b3BhY2l0eTogMTtcblx0fVxuXG5cdDUwJSB7XG5cdFx0b3BhY2l0eTogMC41NTtcblx0fVxufVxuXG4vKiBTdGF0dXMgcGlsbCAtIHVzZWQgb24gdGhlIGRhc2hib2FyZCBhbmQgaW4gdGhlIGRpYWxvZyAqL1xuLmxlbnMtc3RhdHVzLXBpbGwge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiA1cHg7XG5cdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdHBhZGRpbmc6IDNweCA5cHg7XG5cdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdGNvbG9yOiAkbmF2eTtcblxuXHQmLnN0YXR1cy1xdW90ZSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQmLnN0YXR1cy1pbnZvaWNlZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1oaWdoLWJnO1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHR9XG5cblx0Ji5zdGF0dXMtb3JkZXJlZCxcblx0Ji5zdGF0dXMtaW4tcHJvZHVjdGlvbiB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGN5YW4tdHAtMTA7XG5cdFx0Y29sb3I6ICRjeWFuLWRhcmtlcjtcblx0fVxuXG5cdCYuc3RhdHVzLXJlY2VpdmVkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMTA7XG5cdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdH1cblxuXHQmLnN0YXR1cy1jb2xsZWN0ZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUHJhY3RpY2Ugam9iIGxpc3QgKG5hdiBiYXIpXG4vKiBUaGUgY29udGVudCBjYXJyaWVzIC5sZW5zLW1vZHVsZSB0b28sIGZvciB0aGUgZGFzaGJvYXJkJ3MgYnV0dG9ucyxcbi8qIHRodW1ibmFpbHMgYW5kIGVtcHR5IHN0YXRlLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxlbnMtam9icy1kaWFsb2cge1xuXHQubGVucy1qb2JzLXRvb2xiYXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbjogMTJweCAxLjVlbSA2cHg7XG5cdH1cblxuXHQubGVucy1qb2JzLXN0YWdlcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA2cHg7XG5cdH1cblxuXHQubGVucy1zdGFnZS1jaGlwIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0cGFkZGluZzogNXB4IDEycHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHRiIHtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdG9wYWNpdHk6IDAuNDU7XG5cdFx0fVxuXG5cdFx0Ji5zZWxlY3RlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmLm92ZXJkdWUge1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblxuXHRcdFx0YiB7XG5cdFx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0XHR9XG5cblx0XHRcdCYuc2VsZWN0ZWQsXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdC10cC0xNTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQubGVucy1qb2JzLXNlYXJjaCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHdpZHRoOiAyODBweDtcblxuXHRcdGkge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogMTFweDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdH1cblxuXHRcdGlucHV0IHtcblx0XHRcdHBhZGRpbmctbGVmdDogMzJweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGRpYWxvZyBpcyBhIGZpeGVkIGhlaWdodDsgdGhlIGpvYiBsaXN0IGZpbGxzIHdoYXQgaXMgbGVmdCBhbmQgc2Nyb2xscyBvbiBpdHMgb3duICovXG5cdC5sZW5zLWpvYnMtYm9keSB7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0fVxuXG5cdC5sZW5zLWpvYnMtc2Nyb2xsIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0bWluLWhlaWdodDogMDtcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHRcdG1hcmdpbjogNnB4IDEuNWVtIDA7XG5cblx0XHQubGVucy1lbXB0eSB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtam9icy10YWJsZSB7XG5cdFx0bWFyZ2luOiAwIDAgMS41ZW07XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cblx0XHR0aCB7XG5cdFx0XHRwb3NpdGlvbjogc3RpY2t5O1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0ei1pbmRleDogMTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRcdC5mYSB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAzcHg7XG5cdFx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0ZCB7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRsZW5zLXJ1bGU7XG5cdFx0fVxuXG5cdFx0dGJvZHkgdHIge1xuXHRcdFx0Ym9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0XHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLWNhbnZhcztcblx0XHRcdH1cblxuXHRcdFx0Ji5zdGF0dXMtcmVjZWl2ZWQge1xuXHRcdFx0XHRib3JkZXItbGVmdC1jb2xvcjogJGdyZWVuO1xuXHRcdFx0fVxuXG5cdFx0XHQmLnN0YXR1cy1vcmRlcmVkLFxuXHRcdFx0Ji5zdGF0dXMtaW4tcHJvZHVjdGlvbiB7XG5cdFx0XHRcdGJvcmRlci1sZWZ0LWNvbG9yOiAkY3lhbjtcblx0XHRcdH1cblxuXHRcdFx0Ji5zdGF0dXMtaW52b2ljZWQge1xuXHRcdFx0XHRib3JkZXItbGVmdC1jb2xvcjogJHllbGxvdztcblx0XHRcdH1cblxuXHRcdFx0Ji5zdGF0dXMtY29sbGVjdGVkIHtcblx0XHRcdFx0b3BhY2l0eTogMC44NTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQubGVucy1qb2JzLXN1YiB7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdC5sZW5zLWpvYnMtcGF0aWVudCB7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdH1cblxuXHQubGVucy1jdXJyZW50LXRhZyB7XG5cdFx0bWFyZ2luLWxlZnQ6IDZweDtcblx0XHRmb250LXNpemU6IDkuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0cGFkZGluZzogMnB4IDdweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHR9XG5cblx0LmxlbnMtY3VycmVudC10YWcge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG5cblx0LmxlbnMtam9icy1pdGVtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1pbi13aWR0aDogMDtcblxuXHRcdC5sZW5zLWpvYi10aHVtYiB7XG5cdFx0XHRmbGV4OiAwIDAgNjRweDtcblx0XHRcdHBhZGRpbmc6IDZweCA0cHg7XG5cdFx0fVxuXG5cdFx0LmxlbnMtam9iLWRlc2Mge1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtam9icy1kYXRlIHtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0Ji5vdmVyZHVlIHtcblx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cblx0XHRcdC5sZW5zLWpvYnMtc3ViIHtcblx0XHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQubGVucy1qb2JzLWFjdGlvbnMge1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBKb2IgZGlhbG9nXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy1kaWFsb2cge1xuXHQubGVucy1zaGVsbCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0LyogVGhlIGpvYiB0aWNrZXQgZ2V0cyBhIGxpdHRsZSBtb3JlIHJvb20gdGhhbiB0aGUgc2V0dGluZ3MgcmFpbCAqL1xuXHRcdC5zZXR0aW5ncy1uYXYubGVucy10aWNrZXQge1xuXHRcdFx0ZmxleDogMCAwIDMwMHB4O1xuXHRcdFx0d2lkdGg6IDMwMHB4O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXBhbmUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdH1cblxuXHQubGVucy1maWVsZHNldCB7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5sZW5zLXN0ZXAtdmlldyB7XG5cdFx0YW5pbWF0aW9uOiBsZW5zLWZhZGUtaW4gMC4yOHMgZWFzZSBib3RoO1xuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIFRpY2tldCAobGVmdCByYWlsKVxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LmxlbnMtdGlja2V0LXByZXZpZXcge1xuXHRcdG1hcmdpbjogMTZweCAxOHB4IDZweDtcblx0XHRwYWRkaW5nOiAxOHB4IDE2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE2MGRlZywgJGxlbnMtY2FudmFzIDAlLCAkbmF2eS1wYWxlIDEwMCUpO1xuXHRcdG1pbi1oZWlnaHQ6IDEwNHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuXHRcdGxlbnMtZnJhbWUtYXJ0IHtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXRpY2tldC1wbGFjZWhvbGRlciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXN0ZXBzIHtcblx0XHRwYWRkaW5nOiAxMHB4IDEycHg7XG5cdH1cblxuXHQubGVucy1zdGVwIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMXB4O1xuXHRcdHBhZGRpbmc6IDEwcHggMTBweDtcblx0XHRtYXJnaW4tYm90dG9tOiAzcHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHRcdH1cblxuXHRcdC5sZW5zLXN0ZXAtbWFya2VyIHtcblx0XHRcdHdpZHRoOiAyNnB4O1xuXHRcdFx0aGVpZ2h0OiAyNnB4O1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0XHRib3JkZXI6IDJweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0dHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcblx0XHR9XG5cblx0XHQubGVucy1zdGVwLXRleHQge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cblx0XHQubGVucy1zdGVwLWxhYmVsIHtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHR9XG5cblx0XHQubGVucy1zdGVwLXN1bW1hcnkge1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR9XG5cblx0XHQubGVucy1zdGVwLXByaWNlIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXG5cdFx0Ji5kb25lIHtcblx0XHRcdC5sZW5zLXN0ZXAtbWFya2VyIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW47XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbjtcblx0XHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdH1cblxuXHRcdFx0LmxlbnMtc3RlcC1zdW1tYXJ5IHtcblx0XHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYuYWN0aXZlIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0Ym94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDUzLCAyMTAsIDAuMik7XG5cblx0XHRcdC5sZW5zLXN0ZXAtbWFya2VyIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXG5cdFx0XHQubGVucy1zdGVwLWxhYmVsLFxuXHRcdFx0LmxlbnMtc3RlcC1wcmljZSB7XG5cdFx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHR9XG5cblx0XHRcdC5sZW5zLXN0ZXAtc3VtbWFyeSB7XG5cdFx0XHRcdGNvbG9yOiAkd2hpdGUtdHAtNzU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdGlja2V0LXRvdGFsIHtcblx0XHRtYXJnaW4tdG9wOiBhdXRvO1xuXHRcdHBhZGRpbmc6IDE2cHggMjBweCAyMHB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXG5cdFx0LmZvb3Rlci1sYWJlbCB7XG5cdFx0XHRmb250LXNpemU6IDlweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuXHRcdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXByb2dyZXNzIHtcblx0XHRoZWlnaHQ6IDZweDtcblx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtcnVsZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cblx0XHQubGVucy1wcm9ncmVzcy1iYXIge1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAkbmF2eSAwJSwgJGN5YW4gMTAwJSk7XG5cdFx0XHR0cmFuc2l0aW9uOiB3aWR0aCAwLjRzIGN1YmljLWJlemllcigwLjIyLCAxLCAwLjM2LCAxKTtcblx0XHR9XG5cdH1cblxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogRnJhbWUgdHJhY2UgY2FyZCAoZnJhbWUgc3RlcCBhbmQgbGFiIG9yZGVyKVxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LmxlbnMtdHJhY2VyLWNhcmQge1xuXHRcdG1hcmdpbi1ib3R0b206IDE2cHg7XG5cblx0XHRoNCAuZmEge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0PiAubGVucy1sYWJlbDpub3QoLmxlbnMtdHJhY2UtaGVhZGluZykge1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHR9XG5cdH1cblxuXHQvKiBcIkVkaXQgZXh0cmFzICYgcHJpY2VzXCIsIGJlc2lkZSB0aGUgZXh0cmFzIHN0ZXAncyBkZXNjcmlwdGlvbiAqL1xuXHQubGVucy1lZGl0LWV4dHJhcyB7XG5cdFx0bWFyZ2luLWxlZnQ6IDhweDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG5cblx0LyogVGhlIHBhdGllbnQncyBvd24gZnJhbWU6IGRlc2NyaXB0aW9uLCBjb2xvdXIsIHNoYXBlIGFuZCBmaXR0aW5nIGNoYXJnZSAqL1xuXHQubGVucy1vd24tZnJhbWUtZmllbGRzIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDJmcikgcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcblx0XHRnYXA6IDEycHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogOHB4O1xuXG5cdFx0bGFiZWwge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuXHRcdFx0c3BhbiB7XG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiA0cHg7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5sZW5zLW93bi1mcmFtZS1oZWxwIHtcblx0XHRtYXJnaW46IDAgMCAxNnB4O1xuXHR9XG5cblx0LyogQSBtYWRlLXRvLW9yZGVyIGNvbnRhY3QgbGVuczogaXRzIG5hbWUgYW5kIGxhYiBnZXQgdGhlIHJvb20gKi9cblx0LmNsLW1hZGUtZmllbGRzIHtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMmZyKSkgcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcblx0fVxuXG5cdC5jbC1tYWRlLXRpbGUgLmNsLXRpbGUtYXJ0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMzBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHR9XG5cblx0LmNsLWxhYi1ub3RlcyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0fVxuXG5cdC8qIFNlbmQgb3JkZXIsIGluIHRoZSBqb2IncyBvcmRlciBjYXJkIG9uY2UgaXQgaXMgaW52b2ljZWQgKi9cblx0LmxlbnMtb3JkZXItc2VuZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweCAxMnB4O1xuXHRcdG1hcmdpbjogNHB4IDAgMTJweDtcblxuXHRcdC5idG4ge1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRtYXgtd2lkdGg6IG5vbmU7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC5maWVsZC1oZWxwIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1vcmRlci1oaW50IHtcblx0XHRtYXJnaW46IDAgMCAxMHB4O1xuXHR9XG5cblx0LyogVGhlIGZpcnN0IGxhYmVsIGluIGEgY2FyZCBzaXRzIHVuZGVyIGl0cyBoZWFkZXIgLSBub3QgdW5kZXIgdGhlIG9sZCBnbG9iYWwgLmxlbnMtbGFiZWwgbWFyZ2luICovXG5cdC5zZXR0aW5ncy1jYXJkID4gLmNhcmQtaGVhZGVyLWZsZXggKyAubGVucy1sYWJlbCB7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxuXG5cdC5sZW5zLW93bi1mcmFtZS10aWxlIC5sZW5zLXRpbGUtYXJ0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMzRweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHR9XG5cblx0LyogVGhlIGNob3NlbiBmcmFtZSdzIGV5ZSwgYnJpZGdlIGFuZCB0ZW1wbGUgc2l6ZXMgKi9cblx0LmxlbnMtZnJhbWUtc2l6ZSB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMTIwcHgpKTtcblx0XHRnYXA6IDEycHg7XG5cdFx0bWFyZ2luOiA2cHggMCA0cHg7XG5cblx0XHRsYWJlbCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXG5cdFx0XHRzcGFuIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDRweDtcblx0XHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdHJhY2UtaGVhZGluZyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbi10b3A6IDE4cHg7XG5cdFx0cGFkZGluZy10b3A6IDE0cHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRsZW5zLXJ1bGU7XG5cdH1cblxuXHQubGVucy10cmFjZS1ncmlkIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcblx0XHRnYXA6IDEwcHggMTZweDtcblxuXHRcdC5sZW5zLWxhYmVsIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDJweDtcblx0XHR9XG5cblx0XHRiIHtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdHJhY2VyLWhpbnQge1xuXHRcdG1hcmdpbjogMCAwIDEycHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0fVxuXG5cdC8qIEJveCBtZWFzdXJlbWVudHMgdHlwZWQgZnJvbSB0aGUgdHJhY2VyJ3MgcmVhZG91dCAqL1xuXHQubGVucy10cmFjZS1mb3JtIC5maWVsZC1ncmlkIHtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg1LCBtaW5tYXgoMCwgMWZyKSk7XG5cdH1cblxuXHQubGVucy10cmFjZXItYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTJweDtcblx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXHR9XG5cblx0LmxlbnMtdHJhY2VyLXJlbW92ZSB7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHR9XG5cdH1cblxuXHQvKiBcIkltcG9ydCBhIG5ldyBmaWxlXCI6IGEgbGFiZWwgc28gdGhlIGhpZGRlbiBmaWxlIGlucHV0IG9wZW5zIG9uIGNsaWNrLCBzaXplZCBsaWtlIGl0cyBuZWlnaGJvdXJzICovXG5cdC5sZW5zLXRyYWNlLWltcG9ydCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC13ZWlnaHQ6IGluaGVyaXQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0aW5wdXRbdHlwZT1cImZpbGVcIl0ge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQvKiBObyB0cmFjZSB5ZXQ6IGRyb3AgdGhlIHRyYWNlcidzIGZpbGUgaGVyZSwgb3IgY2xpY2sgdG8gY2hvb3NlIGl0ICovXG5cdC5sZW5zLXRyYWNlLWRyb3Age1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNHB4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1heC13aWR0aDogbm9uZTtcblx0XHRtYXJnaW46IDAgMCAxMHB4O1xuXHRcdHBhZGRpbmc6IDE4cHggMTZweDtcblx0XHRib3JkZXI6IDEuNXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLWNhbnZhcztcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Ji5vdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdH1cblxuXHRcdGlucHV0W3R5cGU9XCJmaWxlXCJdIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdHJhY2UtZHJvcC1pY29uIHtcblx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG5cblx0LmxlbnMtdHJhY2UtZHJvcC10aXRsZSB7XG5cdFx0Zm9udC1zaXplOiAxMy41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0LmxlbnMtdHJhY2UtZHJvcC1oaW50IHtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXG5cdFx0dSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdHJhY2UtZXJyb3Ige1xuXHRcdG1hcmdpbjogMTBweCAwIDA7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0fVxuXG5cdC8qIFRoZSBpbXBvcnRlZCBvdXRsaW5lLCBib3RoIGxlbnNlcyB0byBzY2FsZSAqL1xuXHQubGVucy10cmFjZS1wcmV2aWV3IHtcblx0XHRtYXJnaW46IDEycHggMCA0cHg7XG5cdFx0cGFkZGluZzogMTBweCAxMnB4IDZweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJhY2tncm91bmQ6ICRsZW5zLWNhbnZhcztcblxuXHRcdHN2ZyB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0bWF4LXdpZHRoOiA0MjBweDtcblx0XHRcdGhlaWdodDogMTIwcHg7XG5cdFx0XHRtYXJnaW46IDAgYXV0bztcblx0XHR9XG5cblx0XHRmaWdjYXB0aW9uIHtcblx0XHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXRyYWNlLXNoYXBlIHtcblx0XHRmaWxsOiAkd2hpdGU7XG5cdFx0c3Ryb2tlOiAkbmF2eTtcblx0XHRzdHJva2Utd2lkdGg6IDAuMzU7XG5cdFx0c3Ryb2tlLWxpbmVqb2luOiByb3VuZDtcblx0fVxuXG5cdC5sZW5zLXRyYWNlLWRhdHVtIHtcblx0XHRzdHJva2U6ICRsZW5zLWZhaW50O1xuXHRcdHN0cm9rZS13aWR0aDogMC4yO1xuXHRcdHN0cm9rZS1kYXNoYXJyYXk6IDEgMTtcblx0fVxuXG5cdC5sZW5zLXRyYWNlLXNpZGUge1xuXHRcdGZvbnQtc2l6ZTogNHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0dGV4dC1hbmNob3I6IG1pZGRsZTtcblx0XHRmaWxsOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdC5sZW5zLW11dGVkLXZhbHVlIHtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQubGVucy10b3RhbC1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblxuXHRcdCYubXV0ZWQge1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXRvdGFsLXZhbHVlIHtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcblx0fVxuXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQvKiBTaGFyZWQgYml0c1xuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LmxlbnMtbGFiZWwge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRtYXJnaW4tYm90dG9tOiA2cHg7XG5cdH1cblxuXHQubGVucy10b29sYmFyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHR9XG5cblx0LmxlbnMtc2VhcmNoIHtcblx0XHRmbGV4OiAwIDEgMzAwcHg7XG5cdFx0bWFyZ2luOiAwO1xuXHR9XG5cblx0LmxlbnMtY2hpcC1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogNnB4O1xuXG5cdFx0LmNoaXAtc2VsZWN0IHtcblx0XHRcdHBhZGRpbmc6IDZweCAxM3B4O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXNoYXBlLXJvdyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMThweDtcblx0fVxuXG5cdC5sZW5zLXN1Z2dlc3Qtc3RhciB7XG5cdFx0Y29sb3I6ICR5ZWxsb3c7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHR9XG5cblx0LmxlbnMtbm90aWNlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblx0XHQ+IHNwYW4ge1xuXHRcdFx0ZmxleDogMTtcblx0XHR9XG5cblx0XHQmLnN1Y2Nlc3Mge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTA4O1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW4tdHAtMzA7XG5cdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHR9XG5cdH1cblxuXHQubGVucy1taW5pLWJ0biB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDRweCAxMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXG5cdC5sZW5zLXJpZ2h0IHtcblx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHR9XG5cblx0LnNldHRpbmdzLWNhcmQgKyAuc2V0dGluZ3MtY2FyZCxcblx0LnNldHRpbmdzLWNhcmQgKyAubGVucy10cmFjZS1zZWN0aW9uIHtcblx0XHRtYXJnaW4tdG9wOiAxNnB4O1xuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIFRpbGVzIChmcmFtZXMgJiBsZW5zZXMpXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQubGVucy1ncmlkIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDIyMHB4LCAxZnIpKTtcblx0XHRnYXA6IDE2cHg7XG5cblx0XHQmLmxlbnMtZ3JpZC13aWRlIHtcblx0XHRcdG1hcmdpbi10b3A6IDE4cHg7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgzMzBweCwgMWZyKSk7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtbG9hZC1tb3JlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdG1hcmdpbi10b3A6IDE4cHg7XG5cdH1cblxuXHQubGVucy10aWxlIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0XHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMTBweCAyNHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4xMik7XG5cdFx0fVxuXG5cdFx0Ji5zZWxlY3RlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0Ym94LXNoYWRvdzogMCAxMHB4IDI0cHggcmdiYSgwLCA1MywgMjEwLCAwLjE4KTtcblxuXHRcdFx0LmxlbnMtdGlsZS1jaGVjayB7XG5cdFx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMSk7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmxlbnMtdGlsZS1jaGVjayB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDEwcHg7XG5cdFx0XHRyaWdodDogMTBweDtcblx0XHRcdHotaW5kZXg6IDI7XG5cdFx0XHR3aWR0aDogMjRweDtcblx0XHRcdGhlaWdodDogMjRweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHR0cmFuc2Zvcm06IHNjYWxlKDAuNCk7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0dHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuMjIsIDEsIDAuMzYsIDEpO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXRpbGUtYXJ0IHtcblx0XHRwYWRkaW5nOiAyMnB4IDE4cHggMTZweDtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTYwZGVnLCAkbGVucy1jYW52YXMgMCUsICRuYXZ5LXBhbGUgMTAwJSk7XG5cdH1cblxuXHQubGVucy10aWxlLWJvZHkge1xuXHRcdHBhZGRpbmc6IDEycHggMTZweCA2cHg7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdH1cblxuXHQubGVucy10aWxlLWJyYW5kIHtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdH1cblxuXHQubGVucy10aWxlLW5hbWUge1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHR9XG5cblx0LmxlbnMtdGlsZS1tZXRhIHtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdG1hcmdpbi10b3A6IDJweDtcblx0fVxuXG5cdC5sZW5zLXRpbGUtZm9vdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRwYWRkaW5nOiAxMHB4IDE2cHggMTJweDtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cdH1cblxuXHQubGVucy1zdG9jayB7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXG5cdFx0Ji5sb3cge1xuXHRcdFx0Y29sb3I6ICRub3RpY2UtdXJnZW50O1xuXHRcdH1cblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAzcHg7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtcHJpY2Uge1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXG5cdFx0c21hbGwge1xuXHRcdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtc3dhdGNoZXMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRtYXJnaW4tdG9wOiA5cHg7XG5cdH1cblxuXHQubGVucy1zd2F0Y2gge1xuXHRcdHdpZHRoOiAxOHB4O1xuXHRcdGhlaWdodDogMThweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgJHdoaXRlO1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4xNXMgZWFzZSwgdHJhbnNmb3JtIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMS4xMik7XG5cdFx0fVxuXG5cdFx0Ji5hY3RpdmUge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMnB4ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXN3YXRjaC1uYW1lIHtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdG1hcmdpbi1sZWZ0OiAycHg7XG5cdH1cblxuXHQvKiBMZW5zIHRpbGVzIGFyZSBhIHJvdzogZGlhZ3JhbSB0aGVuIHRleHQgKi9cblx0LmxlbnMtb3B0aW9uLXRpbGUge1xuXHRcdC5sZW5zLW9wdGlvbi1yb3cge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdFx0Z2FwOiA0cHg7XG5cdFx0XHRwYWRkaW5nOiAyOHB4IDE2cHggMDsgLyogcm9vbSBmb3IgdGhlIFJlY29tbWVuZGVkIHJpYmJvbiAqL1xuXG5cdFx0XHQubGVucy10aWxlLWJvZHkge1xuXHRcdFx0XHRwYWRkaW5nOiAwIDAgMCAxMHB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYucmVjb21tZW5kZWQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkeWVsbG93LXRwLTUwO1xuXHRcdH1cblxuXHRcdCYucmVjb21tZW5kZWQuc2VsZWN0ZWQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1yaWJib24ge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogMTZweDtcblx0XHRmb250LXNpemU6IDkuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0cGFkZGluZzogM3B4IDlweDtcblx0XHRib3JkZXItcmFkaXVzOiAwIDAgNnB4IDZweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93O1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdH1cblxuXHQubGVucy1mZWF0dXJlcyB7XG5cdFx0bWFyZ2luLXRvcDogOHB4O1xuXHRcdGdhcDogNXB4O1xuXG5cdFx0LmNoaXAge1xuXHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0cGFkZGluZzogM3B4IDhweDtcblx0XHR9XG5cdH1cblxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogUHJlc2NyaXB0aW9uXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQubGVucy11c2UtZ3JpZCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xuXHRcdGdhcDogMTBweDtcblx0fVxuXG5cdC5sZW5zLXVzZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0cGFkZGluZzogMTRweCA4cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0Ym9yZGVyOiAxLjVweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICNjYmQ1ZTA7XG5cdFx0fVxuXG5cdFx0Ji5zZWxlY3RlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblxuXHRcdFx0aSB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLmxvY2tlZCB7XG5cdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0fVxuXG5cdFx0LyogQSB1c2UgdGhpcyBwcmVzY3JpcHRpb24gaGFzIG5vIHBvd2VyIGZvciAqL1xuXHRcdCYuYmxvY2tlZCB7XG5cdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdFx0b3BhY2l0eTogMC41O1xuXHRcdH1cblx0fVxuXG5cdC8qIFdoYXQgY2hvb3NpbmcgdGhlIHVzZSBkb2VzIHRvIHRoZSBwb3dlcnMgKi9cblx0LmxlbnMtdXNlLWVmZmVjdCB7XG5cdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0fVxuXG5cdC5sZW5zLXBvd2VycyB7XG5cdFx0bWFyZ2luLXRvcDogMTRweDtcblx0fVxuXG5cdC5sZW5zLXBvd2Vycy1zYW1lLFxuXHQubGVucy1wb3dlcnMtcnVsZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0fVxuXG5cdC5sZW5zLXBvd2Vycy1zYW1lIC5mYSB7XG5cdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdH1cblxuXHQubGVucy1wb3dlcnMtcnVsZSAuZmEge1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5sZW5zLXBvd2Vycy10YWJsZSB7XG5cdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRcdC5sZW5zLXBvd2Vycy1oZWFkLFxuXHRcdC5sZW5zLXBvd2Vycy1yb3cge1xuXHRcdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMTUwcHggcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRwYWRkaW5nOiA2cHggMTJweDtcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdH1cblxuXHRcdC5sZW5zLXBvd2Vycy1oZWFkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLWNhbnZhcztcblx0XHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG5cdFx0fVxuXG5cdFx0LmxlbnMtcG93ZXJzLXJvdyB7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblxuXHRcdFx0Ji5tYWRlIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5sZW5zLXBvd2Vycy1sYWJlbCBzbWFsbCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogNHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0fVxuXG5cdFx0LyogVGhlIHZhbHVlcyB0aGUgdXNlIGNoYW5nZWQgKi9cblx0XHQuY2hhbmdlZCB7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRcdHRleHQtZGVjb3JhdGlvbi1jb2xvcjogJGN5YW47XG5cdFx0XHR0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDNweDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgcHJlc2NyaWJlZCB1c2UsIG1hcmtlZCBhbW9uZyB0aGUgY2hvaWNlcyAqL1xuXHQubGVucy11c2UtcmVjIHtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHR9XG5cblx0LmxlbnMtdXNlLWNhcmQge1xuXHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cdH1cblxuXHQubGVucy1yeC10YWJsZSB7XG5cdFx0LmxlbnMtcngtaGVhZCxcblx0XHQubGVucy1yeC1yb3cge1xuXHRcdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogNzBweCByZXBlYXQoOCwgbWlubWF4KDAsIDFmcikpO1xuXHRcdFx0Z2FwOiA4cHg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdH1cblxuXHRcdC8qIFRoZSBwcmVzY3JpcHRpb24gc3RlcCBzaG93cyB0aGUgUnggcmVhZC1vbmx5LCB3aXRob3V0IHRoZSBQRCBhbmQgaGVpZ2h0IGNvbHVtbnMgKi9cblx0XHQmLmxlbnMtcngtcmVhZG9ubHkgLmxlbnMtcngtaGVhZCxcblx0XHQmLmxlbnMtcngtcmVhZG9ubHkgLmxlbnMtcngtcm93IHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogNzBweCByZXBlYXQoNiwgbWlubWF4KDAsIDFmcikpO1xuXHRcdH1cblxuXHRcdC8qIFRoZSBtZWFzdXJlbWVudHMgc3RlcDoganVzdCB0aGUgUEQgYW5kIGZpdHRpbmcgaGVpZ2h0LCBtZWFzdXJlZCBpbiB0aGUgZnJhbWUgKi9cblx0XHQmLmxlbnMtbWVhc3VyZS10YWJsZSAubGVucy1yeC1oZWFkLFxuXHRcdCYubGVucy1tZWFzdXJlLXRhYmxlIC5sZW5zLXJ4LXJvdyB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDcwcHggcmVwZWF0KDIsIG1pbm1heCgwLCAxNjBweCkpO1xuXHRcdH1cblxuXHRcdC5sZW5zLXJ4LWhlYWQgc3BhbiB7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHR9XG5cblx0XHQubGVucy1yeC1yb3cge1xuXHRcdFx0cGFkZGluZzogOHB4IDA7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblxuXHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHRcdH1cblxuXHRcdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0cGFkZGluZzogNnB4IDRweDtcblx0XHRcdFx0aGVpZ2h0OiAzNnB4O1xuXHRcdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHR9XG5cblx0XHRcdC5oYXMtZXJyb3Ige1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1lcnJvci1iZztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZXllIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuMjtcblxuXHRcdFx0c21hbGwge1xuXHRcdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQubGVucy1yeC1oaW50IHtcblx0XHRtYXJnaW46IDEwcHggMCAwO1xuXHRcdGNvbG9yOiAkbm90aWNlLXVyZ2VudDtcblx0fVxuXG5cdC5sZW5zLXJ4LXN1bW1hcnkge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA4cHggMjBweDtcblx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDEwcHggMTRweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cblx0XHRiIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1yeC1leHRyYSB7XG5cdFx0bWFyZ2luLXRvcDogMTZweDtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcblx0XHRnYXA6IDE0cHg7XG5cdH1cblxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogRXh0cmFzXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQubGVucy1leHRyYXMtbGF5b3V0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogMjBweDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0fVxuXG5cdC5sZW5zLWV4dHJhcy1vcHRpb25zIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5sZW5zLWV4dHJhcy1wcmV2aWV3IHtcblx0XHRmbGV4OiAwIDAgMzAwcHg7XG5cdFx0cG9zaXRpb246IHN0aWNreTtcblx0XHR0b3A6IDA7XG5cdH1cblxuXHQubGVucy1wcmV2aWV3LXN0YWdlIHtcblx0XHRtYXJnaW46IC0yNXB4IC0yNXB4IDE2cHg7XG5cdFx0cGFkZGluZzogMzRweCAyNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDEycHggMTJweCAwIDA7XG5cdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE2MGRlZywgI2ZkZmRmZiAwJSwgJG5hdnktcGFsZSA2MCUsICNjZmUwZmYgMTAwJSk7XG5cdH1cblxuXHQubGVucy1wcmV2aWV3LXRpdGxlIHtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblx0fVxuXG5cdC5sZW5zLXByZXZpZXctbGluZXMge1xuXHRcdG1hcmdpbi10b3A6IDE2cHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRsZW5zLXJ1bGU7XG5cdFx0cGFkZGluZy10b3A6IDEwcHg7XG5cdH1cblxuXHQubGVucy1wcmV2aWV3LWxpbmUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdHBhZGRpbmc6IDNweCAwO1xuXG5cdFx0Ji50b3RhbCB7XG5cdFx0XHRtYXJnaW4tdG9wOiA2cHg7XG5cdFx0XHRwYWRkaW5nLXRvcDogOHB4O1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtb3B0aW9uLWdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjEwcHgsIDFmcikpO1xuXHRcdGdhcDogMTBweDtcblxuXHRcdCYudGhyZWUge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1vcHRpb24ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDExcHg7XG5cdFx0cGFkZGluZzogMTFweCAxM3B4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJvcmRlcjogMS41cHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblx0XHR1c2VyLXNlbGVjdDogbm9uZTtcblxuXHRcdD4gaSB7XG5cdFx0XHR3aWR0aDogMzBweDtcblx0XHRcdGhlaWdodDogMzBweDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHRcdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHR9XG5cblx0XHQ+IGRpdiB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuMztcblxuXHRcdFx0c21hbGwge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmxlbnMtb3B0aW9uLXByaWNlIHtcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogI2NiZDVlMDtcblx0XHR9XG5cblx0XHQmLnNlbGVjdGVkIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXG5cdFx0XHQ+IGkge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLmluY2x1ZGVkIHtcblx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblxuXHRcdFx0LmxlbnMtb3B0aW9uLXByaWNlIHtcblx0XHRcdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdGludC1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTBweDtcblx0fVxuXG5cdC5sZW5zLXRpbnQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNXB4O1xuXHRcdHdpZHRoOiA4NHB4O1xuXHRcdHBhZGRpbmc6IDEwcHggNHB4IDhweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRib3JkZXI6IDEuNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHRcdH1cblxuXHRcdCYuc2VsZWN0ZWQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdGludC1kb3Qge1xuXHRcdHdpZHRoOiAzOHB4O1xuXHRcdGhlaWdodDogMzhweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0Ym94LXNoYWRvdzogaW5zZXQgMCAtNnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE4KSwgMCAycHggNnB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG5cblx0XHQmLmNsZWFyIHtcblx0XHRcdGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoNDVkZWcsICR3aGl0ZSwgJHdoaXRlIDRweCwgJGxlbnMtcnVsZSA0cHgsICRsZW5zLXJ1bGUgOHB4KTtcblx0XHRcdGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0fVxuXG5cdFx0Ji5taXJyb3I6bm90KC5jbGVhcikge1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSA1NSUpO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXRpbnQtbmFtZSB7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0bGluZS1oZWlnaHQ6IDEuMjtcblx0fVxuXG5cdC5sZW5zLXRpbnQtcHJpY2Uge1xuXHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdC5sZW5zLWRlbnNpdHkge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXG5cdFx0LmxlbnMtbGFiZWwge1xuXHRcdFx0bWFyZ2luOiAwIDZweCAwIDA7XG5cdFx0fVxuXG5cdFx0LmNoaXAtc2VsZWN0IHtcblx0XHRcdHBhZGRpbmc6IDVweCAxMnB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQvKiBPcmRlciAmIGJpbGxpbmdcblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC5sZW5zLW1pc3NpbmctbGluayB7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRcdGNvbG9yOiBpbmhlcml0O1xuXHR9XG5cblx0LmxlbnMtYmlsbGluZy1sYXlvdXQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiAyMHB4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHR9XG5cblx0LmxlbnMtYmlsbGluZy1tYWluIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5sZW5zLWJpbGxpbmctc2lkZSB7XG5cdFx0ZmxleDogMCAwIDM0MHB4O1xuXHRcdHBvc2l0aW9uOiBzdGlja3k7XG5cdFx0dG9wOiAwO1xuXHR9XG5cblx0LyogT24gc21hbGxlciBzY3JlZW5zIHRoZSBpbnZvaWNlIGNhcmQgc3RvcHMgYmVpbmcgYSBzaWRlIGNvbHVtbiBhbmQgdGhlIHdob2xlIHN0ZXAgc3RhY2tzICovXG5cdEBtZWRpYSAobWF4LXdpZHRoOiAxMTAwcHgpIHtcblx0XHQubGVucy1iaWxsaW5nLWxheW91dCB7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdH1cblxuXHRcdC5sZW5zLWJpbGxpbmctc2lkZSB7XG5cdFx0XHRmbGV4OiAxIDEgYXV0bztcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0cG9zaXRpb246IHN0YXRpYztcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgbGFiIG9yZGVyIHJldmlld2VkIGF0IGEgZ2xhbmNlOiBvbmUgZmFjdCBwZXIgY2VsbCwgd3JhcHBpbmcgdG8gdGhlIHdpZHRoIHRoZXJlIGlzICovXG5cdC5sZW5zLW9yZGVyLWZhY3RzIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTUwcHgsIDFmcikpO1xuXHRcdGdhcDogMTBweCAxOHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDEycHg7XG5cdH1cblxuXHQubGVucy1vcmRlci1mYWN0IHtcblx0XHRtaW4td2lkdGg6IDA7XG5cblx0XHQ+IHNwYW4ge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR9XG5cblx0XHQ+IGIge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLW9yZGVyLW1lYXN1cmVzIHtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXG5cdFx0YSB7XG5cdFx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0fVxuXHR9XG5cblx0LyogSXRlbXMgYWRkZWQgYnkgaGFuZCB0byB0aGUgaW52b2ljZSAoYW4gZXllIGV4YW1pbmF0aW9uLCBzYXkpICovXG5cdC5sZW5zLWN1c3RvbS1pdGVtcyB7XG5cdFx0cGFkZGluZzogOHB4IDAgMnB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBkYXNoZWQgJGxlbnMtcnVsZTtcblx0fVxuXG5cdC5sZW5zLWN1c3RvbS1pdGVtLXJlbW92ZSB7XG5cdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XG5cdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWN1c3RvbS1hZGQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luOiA4cHggMDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRpbnB1dFt0eXBlPVwidGV4dFwiXSB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblxuXHRcdGlucHV0W3R5cGU9XCJudW1iZXJcIl0ge1xuXHRcdFx0ZmxleDogMCAwIDkwcHg7XG5cdFx0fVxuXG5cdFx0LmxlbnMtbWluaS1idG4ge1xuXHRcdFx0ZmxleDogMCAwIGF1dG87XG5cdFx0fVxuXG5cdFx0LyogVGhlIGJpbGxpbmcgaXRlbSBzZWFyY2ggcmVzdWx0cyAodWliLXR5cGVhaGVhZCkgKi9cblx0XHQuZHJvcGRvd24tbWVudSB7XG5cdFx0XHRtYXgtaGVpZ2h0OiAyNDBweDtcblx0XHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIG9uZS1zdGVwIHVuZG8gYmVzaWRlIGEgam9iJ3MgbmV4dC1zdGF0dXMgYnV0dG9uICovXG5cdC5sZW5zLXVuZG8tYnRuIHtcblx0XHRmbGV4OiAwIDAgYXV0bztcblx0fVxuXG5cdC5sZW5zLWJpbGwtcm93IHtcblx0XHRwYWRkaW5nLXRvcDogOXB4O1xuXHRcdHBhZGRpbmctYm90dG9tOiA5cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblxuXHRcdC5jb2wtZmVlIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtYmlsbC1raW5kIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0bWluLXdpZHRoOiA0NnB4O1xuXHRcdG1hcmdpbi1yaWdodDogOHB4O1xuXHRcdGZvbnQtc2l6ZTogOS41cHg7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdH1cblxuXHQubGVucy1kaXNjb3VudCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXG5cdFx0PiBzcGFuOmZpcnN0LWNoaWxkIHtcblx0XHRcdG1hcmdpbi1yaWdodDogNnB4O1xuXHRcdH1cblxuXHRcdC5mZWUtaW5wdXQge1xuXHRcdFx0d2lkdGg6IDExMHB4O1xuXHRcdH1cblxuXHRcdC5jaGlwLXNlbGVjdCB7XG5cdFx0XHRwYWRkaW5nOiA0cHggMTFweDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1iaWxsLXRvdGFscyB7XG5cdFx0bWFyZ2luLXRvcDogMTRweDtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHR3aWR0aDogMzAwcHg7XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXG5cdFx0PiBkaXYge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdHBhZGRpbmc6IDNweCAxNHB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0R3JleTtcblxuXHRcdFx0Ji5tdXRlZCB7XG5cdFx0XHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQmLmdyYW5kIHtcblx0XHRcdFx0bWFyZ2luLXRvcDogOHB4O1xuXHRcdFx0XHRwYWRkaW5nOiAxMHB4IDE0cHg7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtcGF5LXNwbGl0IHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcblx0XHRnYXA6IDEycHg7XG5cdFx0bWFyZ2luLXRvcDogMTRweDtcblxuXHRcdD4gZGl2IHtcblx0XHRcdHBhZGRpbmc6IDEycHggMTRweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXG5cdFx0XHQubGVucy1sYWJlbCB7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDJweDtcblx0XHRcdH1cblxuXHRcdFx0YiB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWludm9pY2UtY2FyZCB7XG5cdFx0Ji5zZW50IHtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDJweCAkZ3JlZW4tdHAtNDAsIDAgOHB4IDI0cHggJGdyZWVuLXRwLTIwO1xuXHRcdH1cblx0fVxuXG5cdC8qIEEgbGl0dGxlIHBhcGVyIGludm9pY2UgKi9cblx0LmxlbnMtaW52b2ljZS1kb2Mge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRwYWRkaW5nOiAxOHB4IDE4cHggMTRweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJveC1zaGFkb3c6IDAgNnB4IDE4cHggcmdiYSgxMCwgMzcsIDY0LCAwLjA4KTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblxuXHRcdCY6OmJlZm9yZSB7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHRyaWdodDogMDtcblx0XHRcdHRvcDogMDtcblx0XHRcdGhlaWdodDogNHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogOHB4IDhweCAwIDA7XG5cdFx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICRuYXZ5IDAlLCAkY3lhbiAxMDAlKTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1pbnZvaWNlLXRvcCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblx0fVxuXG5cdC5sZW5zLWludm9pY2UtcHJhY3RpY2Uge1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHR9XG5cblx0LmxlbnMtaW52b2ljZS1zdWIge1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG5cdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHR9XG5cblx0LmxlbnMtaW52b2ljZS1udW1iZXIge1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXG5cdFx0c21hbGwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1pbnZvaWNlLXRvIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDhweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogOHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDZweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblxuXHRcdC5sZW5zLWxhYmVsIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1pbnZvaWNlLWxpbmUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAzcHggMDtcblxuXHRcdHNwYW46Zmlyc3QtY2hpbGQge1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQmLnRvdGFsIHtcblx0XHRcdG1hcmdpbi10b3A6IDhweDtcblx0XHRcdHBhZGRpbmctdG9wOiA4cHg7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR9XG5cblx0XHQmLmR1ZSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtY2hhbm5lbC1saXN0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiA2cHg7XG5cblx0XHQuY2hpcC1zZWxlY3Qge1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtc2VudC1mbGFzaCB7XG5cdFx0bWFyZ2luLXRvcDogMTRweDtcblx0XHRwYWRkaW5nOiAxMHB4IDEycHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXG5cdC5sZW5zLXNlbmQtYnRuIHtcblx0XHRtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDsgLyogdGhlIGFjdGlvbiBiYXIgY2FwcyAuYnRuIGF0IDIwMHB4OyB0aGlzIGxhYmVsIGlzIGxvbmdlciAqL1xuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIExlYXZlIHByb21wdFxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LmxlbnMtY29uZmlybS1vdmVybGF5IHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0aW5zZXQ6IDA7XG5cdFx0ei1pbmRleDogMTA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXRwLTIwO1xuXHRcdGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuXHRcdGFuaW1hdGlvbjogbGVucy1mYWRlLWluIDAuMnMgZWFzZSBib3RoO1xuXHR9XG5cblx0LmxlbnMtY29uZmlybSB7XG5cdFx0d2lkdGg6IDQyMHB4O1xuXHRcdG1heC13aWR0aDogOTAlO1xuXG5cdFx0aDQge1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1jb25maXJtLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luLXRvcDogMTZweDtcblxuXHRcdC5idG4ge1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG59XG5cbkBrZXlmcmFtZXMgbGVucy1mYWRlLWluIHtcblx0ZnJvbSB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNnB4KTtcblx0fVxuXG5cdHRvIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdHRyYW5zZm9ybTogbm9uZTtcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIENvbnRhY3QgbGVucyBwYXRod2F5XG4vKiBDb250YWN0IGxlbnMgam9icyBzaGFyZSB0aGUgZ2xhc3NlcyBqb2IgZGlhbG9nLCB0aWxlIGFuZCBqb2IgbGlzdFxuLyogc3R5bGluZy4gT25seSB0aGUgcGllY2VzIGNvbnRhY3RzIGFkZCBhcmUgZGVmaW5lZCBoZXJlLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xubGVucy1jb250YWN0LWFydCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubGVucy1jb250YWN0LWFydCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiBhdXRvO1xuXHRvdmVyZmxvdzogdmlzaWJsZTtcblxuXHQubGVucy1jb250YWN0LWV5ZSB7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRmaWxsOiAkbmF2eTtcblx0XHRmaWxsLW9wYWNpdHk6IDAuMzU7XG5cdH1cbn1cblxuLyogR2xhc3NlcyAvIENvbnRhY3RzIHRhZyBiZXNpZGUgdGhlIGpvYiBudW1iZXIgKi9cbi5sZW5zLXR5cGUtdGFnIHtcblx0Zm9udC1zaXplOiAxMHB4O1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdHBhZGRpbmc6IDJweCA4cHg7XG5cdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdGNvbG9yOiAkbmF2eTtcblxuXHQmLmNvbnRhY3RzIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy10ZWFsLXBhbGU7XG5cdFx0Y29sb3I6ICR0ZWFsO1xuXHR9XG59XG5cbi5sZW5zLW1vZHVsZSB7XG5cdC8qIE5ldyBqb2I6IGdsYXNzZXMgb3IgY29udGFjdHMgKi9cblx0LmxlbnMtbmV3LXBpY2tlciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogc3RyZXRjaDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luOiAxMHB4IDEuMmVtIDRweDtcblx0XHRhbmltYXRpb246IGxlbnMtZmFkZS1pbiAwLjJzIGVhc2U7XG5cdH1cblxuXHQubGVucy1uZXctb3B0aW9uIHtcblx0XHRmbGV4OiAxO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEycHg7XG5cdFx0cGFkZGluZzogMTJweCAxNHB4O1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0Ym9yZGVyOiAxLjVweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0PiBpIHtcblx0XHRcdHdpZHRoOiAzNnB4O1xuXHRcdFx0aGVpZ2h0OiAzNnB4O1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHR9XG5cblx0XHQmOmxhc3Qtb2YtdHlwZSA+IGkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtdGVhbC1wYWxlO1xuXHRcdFx0Y29sb3I6ICR0ZWFsO1xuXHRcdH1cblxuXHRcdGIge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblxuXHRcdHNtYWxsIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtcmVvcmRlci1kdWUge1xuXHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cblx0XHRpIHtcblx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0fVxuXHR9XG59XG5cbi5sZW5zLWpvYnMtZGlhbG9nIHtcblx0LmxlbnMtam9icy1udW1iZXIgLmxlbnMtdHlwZS10YWcge1xuXHRcdG1hcmdpbi1sZWZ0OiA2cHg7XG5cdH1cblxuXHQvKiBBbGwgLyBHbGFzc2VzIC8gQ29udGFjdHMgLSBhIHNlZ21lbnRlZCBjb250cm9sIGFoZWFkIG9mIHRoZSBzdGFnZSBjaGlwcyAqL1xuXHQubGVucy1qb2JzLXR5cGVzIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdG1hcmdpbi1yaWdodDogNnB4O1xuXHR9XG5cblx0LmxlbnMtdHlwZS1jaGlwIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0cGFkZGluZzogNXB4IDEycHg7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0JiArIC5sZW5zLXR5cGUtY2hpcCB7XG5cdFx0XHRib3JkZXItbGVmdDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHR9XG5cblx0XHRiIHtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLWNhbnZhcztcblx0XHR9XG5cblx0XHQmLnNlbGVjdGVkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblxuXHRcdFx0YiB7XG5cdFx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi5sZW5zLWNvbnRhY3RzLWRpYWxvZyB7XG5cdC5sZW5zLXRpY2tldC1wcmV2aWV3IGxlbnMtY29udGFjdC1hcnQge1xuXHRcdHdpZHRoOiA4MCU7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cdH1cblxuXHQuY2wtdGlsZS1hcnQge1xuXHRcdHdpZHRoOiA5NnB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHBhZGRpbmc6IDhweCA0cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHR9XG5cblx0LyogVGhlIENMIFJ4IGhhcyBzaXggY29sdW1ucyB3aGVyZSB0aGUgZ2xhc3NlcyBSeCBoYXMgZWlnaHQgKi9cblx0LmNsLXJ4LWNhcmQgLmxlbnMtcngtdGFibGUge1xuXHRcdC5sZW5zLXJ4LWhlYWQsXG5cdFx0LmxlbnMtcngtcm93IHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogNzBweCByZXBlYXQoNiwgbWlubWF4KDAsIDFmcikpO1xuXHRcdH1cblxuXHRcdHNlbGVjdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0dGV4dC1hbGlnbi1sYXN0OiBjZW50ZXI7XG5cdFx0fVxuXG5cdFx0aW5wdXRbcmVhZG9ubHldIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLWNhbnZhcztcblx0XHR9XG5cdH1cblxuXHQuY2wtdmVydGV4LW5vdGUge1xuXHRcdG1hcmdpbjogMTBweCAwIDA7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHR9XG5cblx0LmNsLXRyaWFsLWNhcmQudHJpYWxsZWQge1xuXHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdH1cblxuXHQvKiBCb3hlcyBwZXIgZXllICovXG5cdC5jbC1ib3hlcyB7XG5cdFx0bWFyZ2luLXRvcDogMTZweDtcblx0fVxuXG5cdC5jbC1ib3gtcm93IHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMTcwcHggYXV0byAxZnIgYXV0bztcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTZweDtcblx0XHRwYWRkaW5nOiAxMHB4IDA7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRsZW5zLXJ1bGU7XG5cblx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHR9XG5cblx0XHQuZXllIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuMjU7XG5cblx0XHRcdHNtYWxsIHtcblx0XHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmNsLXN0ZXBwZXIge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHg7XG5cblx0XHQuYnRuIHtcblx0XHRcdHdpZHRoOiAzMHB4O1xuXHRcdFx0aGVpZ2h0OiAzMHB4O1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHR9XG5cdH1cblxuXHQuY2wtc3RlcHBlci12YWx1ZSB7XG5cdFx0bWluLXdpZHRoOiAzNHB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdH1cblxuXHQuY2wtYm94LWRlc2Mge1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQuY2wtYm94LXByaWNlIHtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC5sZW5zLW9wdGlvbi5kaXNhYmxlZCB7XG5cdFx0b3BhY2l0eTogMC40NTtcblx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHR9XG5cblx0LmxlbnMtYmlsbC1yb3cuY2wtc2F2aW5nIC5jb2wtZmVlIHtcblx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEpvYiBub3Rlc1xuLyogVGhlIHBvcG92ZXIgaXMgbW92ZWQgdG8gPGJvZHk+IChzZWUgbGVuc0pvYk5vdGVzLmNvbXBvbmVudC5qcyksIHNvXG4vKiB0aGVzZSBydWxlcyBhcmUgdG9wIGxldmVsIHJhdGhlciB0aGFuIG5lc3RlZCBpbiB0aGUgbW9kdWxlIG9yIGRpYWxvZy5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbmxlbnMtam9iLW5vdGVzIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubGVucy1qb2JzLWFjdGlvbnMgbGVucy1qb2Itbm90ZXMge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRtYXJnaW4tcmlnaHQ6IDZweDtcbn1cblxuLmxlbnMtbm90ZXMtYnRuIHtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGdhcDogNXB4O1xuXHRmb250LXNpemU6IDExcHg7XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdHBhZGRpbmc6IDRweCAxMHB4O1xuXHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRib3JkZXI6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGNvbG9yOiAkbGVucy1mYWludDtcblx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0Ji5oYXMtbm90ZXMge1xuXHRcdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkd2FybmluZy1ib3JkZXI7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1oaWdoLWJnO1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHR9XG5cblx0Jjpob3Zlcixcblx0Ji5vcGVuIHtcblx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxufVxuXG4ubGVucy1ub3Rlcy1wb3Age1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdC8qIEFib3ZlIG1kLWRpYWxvZyBhbmQgaXRzIGJhY2tkcm9wICovXG5cdHotaW5kZXg6IDExMDA7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdG1heC1oZWlnaHQ6IDM4MHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMTAsIDM3LCA2NCwgMC4xNik7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdGFuaW1hdGlvbjogbGVucy1mYWRlLWluIDAuMTVzIGVhc2U7XG5cblx0Ji5waW5uZWQge1xuXHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdH1cblxuXHQubGVucy1ub3Rlcy1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdHBhZGRpbmc6IDEwcHggMTRweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQubGVucy1ub3Rlcy1jbG9zZSB7XG5cdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtbm90ZXMtbGlzdCB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4taGVpZ2h0OiAwO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0cGFkZGluZzogNHB4IDE0cHg7XG5cdH1cblxuXHQubGVucy1ub3Rlcy1lbXB0eSB7XG5cdFx0cGFkZGluZzogMTJweCAwO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQubGVucy1ub3RlIHtcblx0XHRwYWRkaW5nOiA5cHggMDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLW5vdGUtbWV0YSB7XG5cdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXG5cdFx0YiB7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLW5vdGUtdGV4dCB7XG5cdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjQ1O1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0d2hpdGUtc3BhY2U6IHByZS13cmFwO1xuXHRcdHdvcmQtd3JhcDogYnJlYWstd29yZDtcblx0fVxuXG5cdC8qIFNpdHMgYmV0d2VlbiB0aGUgaGVhZGVyIGFuZCB0aGUgbmV3ZXN0IG5vdGUgKi9cblx0LmxlbnMtbm90ZXMtYWRkIHtcblx0XHRwYWRkaW5nOiAxMHB4IDE0cHggMTJweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cblx0XHR0ZXh0YXJlYSB7XG5cdFx0XHRyZXNpemU6IHZlcnRpY2FsO1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtbm90ZXMtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luLXRvcDogOHB4O1xuXG5cdFx0LmJ0biB7XG5cdFx0XHRwYWRkaW5nOiA0cHggMTJweDtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1ub3Rlcy1oaW50IHtcblx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjM7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBIYXJkIChtYWRlLXRvLW9yZGVyKSBjb250YWN0IGxlbnNlc1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxlbnMtdHlwZS10YWcuY3VzdG9tIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRjb2xvcjogJHdoaXRlO1xufVxuXG4ubGVucy1jb250YWN0cy1kaWFsb2cge1xuXHQuY2wtbWFkZS1jaGlwIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0fVxuXG5cdC8qIFRyaWFsIEJDLCBwb3dlciwgRElBLCBvdmVyLXJlZnJhY3Rpb24gc3BoZXJlLCBjeWwgYW5kIGF4aXMsIG9yZGVyIHBvd2VyLCBVc2UgKi9cblx0LmNsLXRyaWFsLXJ4LWNhcmQgLmxlbnMtcngtdGFibGUge1xuXHRcdC5sZW5zLXJ4LWhlYWQsXG5cdFx0LmxlbnMtcngtcm93IHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogNzBweCByZXBlYXQoNywgbWlubWF4KDAsIDFmcikpIDY0cHg7XG5cdFx0fVxuXHR9XG5cblx0LmNsLW9yZGVyLXBvd2VyIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQuY2wtY3VzdG9tLWNhcmQgLmxlbnMtcngtdGFibGUgc2VsZWN0LmZvcm0tY29udHJvbCB7XG5cdFx0cGFkZGluZzogNnB4IDJweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQvKiBMYWIgY29zdCBhbmQgbWFyZ2luIHVuZGVyIHRoZSBiaWxsaW5nIHRvdGFscyAtIG5ldmVyIG9uIHRoZSBpbnZvaWNlICovXG5cdC5jbC1tYXJnaW4ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHggMThweDtcblx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDhweCAxMnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXG5cdFx0c3BhbjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdFx0fVxuXG5cdFx0YiB7XG5cdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBGbG9hdGluZyBhY3Rpb24gYmFyIChqb2IgYW5kIHByZXNjcmlwdGlvbiBkaWFsb2dzKVxuLyogQmFjaywgdGhlIHN0ZXAgZG90cyBhbmQgdGhlIG5leHQgYWN0aW9uIGZsb2F0IG92ZXIgdGhlIGJvdHRvbSBvZiB0aGVcbi8qIHN0ZXAsIHNvIHRoZSBmb3JtIHJ1bnMgdW5kZXJuZWF0aCBpdCByYXRoZXIgdGhhbiBlbmRpbmcgYXQgYSBiYXIuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy1kaWFsb2cge1xuXHQubGVucy1wYW5lIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHQvKiBSb29tIGZvciB0aGUgYmFyIHVuZGVyIHRoZSBsYXN0IGNhcmQsIGFuZCBhIGZhZGUgc28gY29udGVudCBzbGlkZXMgdW5kZXIgaXQgKi9cblx0XHQuc2V0dGluZ3MtcGFuZS1ib2R5IHtcblx0XHRcdHBhZGRpbmctYm90dG9tOiAxMTJweDtcblx0XHR9XG5cblx0XHQmOjphZnRlciB7XG5cdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHJpZ2h0OiAwO1xuXHRcdFx0Ym90dG9tOiAwO1xuXHRcdFx0aGVpZ2h0OiA5NnB4O1xuXHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsICRsZW5zLWNhbnZhcyA3MCUpO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0XHR6LWluZGV4OiA0O1xuXHRcdH1cblx0fVxuXG5cdC5zZXR0aW5ncy1hY3Rpb24tYmFyLmxlbnMtZmxvYXQtYmFyIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogNTAlO1xuXHRcdGJvdHRvbTogMThweDtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG5cdFx0ei1pbmRleDogNTtcblx0XHR3aWR0aDogbWluKDgyMHB4LCBjYWxjKDEwMCUgLSA0OHB4KSk7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDE0cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6IDE4cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlLXRwLTkwO1xuXHRcdGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcblx0XHRib3gtc2hhZG93OiAwIDEycHggMzJweCByZ2JhKDEwLCAzNywgNjQsIDAuMTYpLCAwIDJweCA2cHggcmdiYSgxMCwgMzcsIDY0LCAwLjA2KTtcblxuXHRcdC8qIG5nQW5pbWF0ZSB3YWl0cyBvdXQgYW4gZWxlbWVudCdzIENTUyB0cmFuc2l0aW9uIGJlZm9yZSBpdCBhZGRzIG9yIHJlbW92ZXMgaXQsIHNvIHRoZVxuXHRcdCAgIGJ1dHRvbnMnIGhvdmVyIHRyYW5zaXRpb25zIGhlbGQgYSBsZWF2aW5nIGJ1dHRvbiBiZXNpZGUgdGhlIG9uZSByZXBsYWNpbmcgaXQgYW5kIGhlbGRcblx0XHQgICB0aGUgbmV3IG9uZSBiYWNrLiBCdXR0b25zIGhlcmUgYXBwZWFyIGFuZCBnbyBpbnN0YW50bHkuICovXG5cdFx0Lm5nLWVudGVyLFxuXHRcdC5uZy1sZWF2ZSxcblx0XHQubmctYW5pbWF0ZSB7XG5cdFx0XHR0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0fVxuXG5cdFx0LmJ0biB7XG5cdFx0XHRoZWlnaHQ6IDQwcHg7XG5cdFx0XHRwYWRkaW5nOiAwIDE4cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAxMnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZSwgYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLCBjb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRcdG9wYWNpdHk6IDAuNDU7XG5cdFx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRcdHRyYW5zZm9ybTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuYnRuLW5hdnkge1xuXHRcdFx0Ym94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKDAsIDUzLCAyMTAsIDAuMjgpO1xuXG5cdFx0XHQuZmEtYXJyb3ctcmlnaHQge1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogNHB4O1xuXHRcdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZTtcblx0XHRcdH1cblxuXHRcdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMTBweCAyMnB4IHJnYmEoMCwgNTMsIDIxMCwgMC4zNCk7XG5cblx0XHRcdFx0LmZhLWFycm93LXJpZ2h0IHtcblx0XHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoM3B4KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5idG4tY2FuY2VsIHtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDEycHg7XG5cdFx0fVxuXG5cdFx0LyogQmFjayBpcyB0aGUgcXVpZXQgd2F5IG91dCAtIG5vIGJveCB1bnRpbCBpdCBpcyBwb2ludGVkIGF0ICovXG5cdFx0LmxlbnMtYmFjay1idG4ge1xuXHRcdFx0cGFkZGluZzogMCAxNHB4IDAgMTBweDtcblx0XHRcdGJvcmRlcjogMDtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cblx0XHRcdC5mYSB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogNHB4O1xuXHRcdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHR9XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5sZW5zLWFjdGlvbi1taWQge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiAxMnB4O1xuXHRcdFx0cGFkZGluZzogMCA2cHg7XG5cdFx0fVxuXG5cdFx0LmFjdGlvbi1oaW50IHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRmb250LXN0eWxlOiBub3JtYWw7XG5cdFx0fVxuXHR9XG5cblx0LyogV2hlcmUgeW91IGFyZTogdGhlIGN1cnJlbnQgc3RlcCBhIHBpbGwsIGZpbmlzaGVkIG9uZXMgZmlsbGVkICovXG5cdC5sZW5zLXN0ZXAtZG90cyB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDVweDtcblx0XHRmbGV4LXNocmluazogMDtcblxuXHRcdGkge1xuXHRcdFx0d2lkdGg6IDdweDtcblx0XHRcdGhlaWdodDogN3B4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogN3B4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRcdHRyYW5zaXRpb246IHdpZHRoIDAuMnMgZWFzZSwgYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XG5cblx0XHRcdCYuZG9uZSB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRvcGFjaXR5OiAwLjQ1O1xuXHRcdFx0fVxuXG5cdFx0XHQmLm9uIHtcblx0XHRcdFx0d2lkdGg6IDIwcHg7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFByYWN0aWNlIHNldHRpbmdzOiBkaXNwZW5zaW5nIGV4dHJhc1xuLyogT25lIHJvdyBwZXIga2luZCBvZiBleHRyYSwgZWFjaCBpdGVtIGEgc21hbGwgY2FyZCAtIHRpY2ssIG5hbWUsIHByaWNlLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNldHRpbmdzLXNoZWxsIC5sZW5zLWV4dHJhcy1zZXR0aW5ncyB7XG5cdC5seC1maWVsZHNldCB7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5seC1yb3cge1xuXHRcdHBhZGRpbmc6IDE0cHggMDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5seC1yb3ctaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogNHB4IDE0cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblxuXHRcdGIge1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRcdGZvbnQtc2l6ZTogMTMuNXB4O1xuXHRcdH1cblxuXHRcdHNtYWxsIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHR9XG5cdH1cblxuXHQubHgtY291bnQge1xuXHRcdG1hcmdpbi1sZWZ0OiA4cHg7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdC5seC1pdGVtcyB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyMTBweCwgMWZyKSk7XG5cdFx0Z2FwOiAxMHB4O1xuXHR9XG5cblx0Lmx4LWl0ZW0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDZweDtcblx0XHRwYWRkaW5nOiA4cHggMTBweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcblxuXHRcdCYub2ZmIHtcblx0XHRcdG9wYWNpdHk6IDAuNTU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cdFx0fVxuXG5cdFx0Ji5uZXcge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdGhlaWdodDogMzBweDtcblx0XHRcdHBhZGRpbmc6IDRweCA4cHg7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHR9XG5cblx0XHQvKiBUaGUgY29tcGFjdCBwYWRkaW5nIGFib3ZlIHdvdWxkIHB1dCB0aGUgcHJpY2UgdW5kZXIgaXRzICQgLSBrZWVwIHRoZSBzaWduJ3Mgcm9vbSAqL1xuXHRcdC5mZWUtaW5wdXQge1xuXHRcdFx0LmZlZS1wcmVmaXgge1xuXHRcdFx0XHRsZWZ0OiA5cHg7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdFx0fVxuXG5cdFx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiAyMXB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5seC1pdGVtLXRvcCxcblx0Lmx4LWl0ZW0tYm90dG9tIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdH1cblxuXHQubHgtaXRlbS1ib3R0b20ge1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblxuXHRcdC5mZWUtaW5wdXQge1xuXHRcdFx0d2lkdGg6IDk2cHg7XG5cdFx0fVxuXHR9XG5cblx0Lmx4LW5hbWUge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdH1cblxuXHRcdCYuaGFzLWVycm9yIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdH1cblx0fVxuXG5cdC5seC1oaW50IHtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQubHgtaWNvbiB7XG5cdFx0d2lkdGg6IDE0cHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC8qIEEgc3dhdGNoLCBub3QgdGhlIGJyb3dzZXIncyBmdWxsIGNvbG91ciBidXR0b24gKi9cblx0Lmx4LWNvbG91ciB7XG5cdFx0ZmxleDogMCAwIDIycHg7XG5cdFx0d2lkdGg6IDIycHg7XG5cdFx0aGVpZ2h0OiAyMnB4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXG5cdFx0Jjo6LXdlYmtpdC1jb2xvci1zd2F0Y2gtd3JhcHBlciB7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdH1cblxuXHRcdCY6Oi13ZWJraXQtY29sb3Itc3dhdGNoIHtcblx0XHRcdGJvcmRlcjogMDtcblx0XHR9XG5cdH1cblxuXHQubHgtZGlzY2FyZCB7XG5cdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdH1cblx0fVxuXG5cdC5seC1mcmVlIHtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQubHgtdG9nZ2xlIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNXB4O1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHR9XG5cblx0Lmx4LXNlbGVjdCB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0ZmxleDogMTtcblx0fVxuXG5cdC5seC1hZGQge1xuXHRcdG1pbi1oZWlnaHQ6IDY0cHg7XG5cdFx0Ym9yZGVyOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHR9XG5cdH1cblxuXHQubHgtZmllbGRzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEycHggMjRweDtcblx0fVxuXG5cdC5seC1pbmxpbmUtZmllbGQge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblxuXHRcdC5mZWUtaW5wdXQge1xuXHRcdFx0d2lkdGg6IDk2cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogQSAlIHNpdHMgYWZ0ZXIgdGhlIG51bWJlciwgd2hlcmUgYSAkIHNpdHMgYmVmb3JlIGl0ICovXG5cdC5mZWUtaW5wdXQubHgtc3VmZml4IHtcblx0XHQuZmVlLXByZWZpeCB7XG5cdFx0XHRsZWZ0OiBhdXRvO1xuXHRcdFx0cmlnaHQ6IDExcHg7XG5cdFx0fVxuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDhweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDI0cHg7XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgWGVybyBpbnZvaWNpbmcgKGpvYiBkaWFsb2dzJyBpbnZvaWNlIGNhcmQpXG4vKiBXaGVyZSB0aGUgaW52b2ljZSBnb2VzIGluIFhlcm86IGxvZ2dlZCBpbiwgYW5kIHRoZSBwYXRpZW50J3MgY29udGFjdC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5sZW5zLWRpYWxvZyB7XG5cdC5sZW5zLXhlcm8ge1xuXHRcdG1hcmdpbi10b3A6IDE2cHg7XG5cdFx0cGFkZGluZzogMTJweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXG5cdFx0Ji5zdGVwLXJlYWR5IHtcblx0XHRcdGJvcmRlci1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXhlcm8taGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogOHB4O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5sZW5zLXhlcm8tb3JnIHtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0LyogXCJDaG9vc2UgYW5vdGhlclwiLCBiZXNpZGUgdGhlIGNvbnRhY3Qgd29ya2VkIG91dCBmb3IgdGhlIHVzZXI7IFwiSW52b2ljZSB3aXRob3V0IFhlcm9cIiAqL1xuXHQubGVucy14ZXJvLWNoYW5nZSB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQubGVucy14ZXJvLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0PiAuZmEge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdD4gc3Bhbjpub3QoLmxlbnMteGVyby1hY3Rpb25zKSB7XG5cdFx0XHRmbGV4OiAxIDEgMTYwcHg7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0fVxuXG5cdFx0Ji53YXJuaW5nID4gLmZhIHtcblx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0fVxuXG5cdFx0Ji5yZWFkeSA+IC5mYSB7XG5cdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHR9XG5cdH1cblxuXHQubGVucy14ZXJvLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHR9XG5cblx0LmxlbnMteGVyby1zZWFyY2gge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXG5cdFx0LmZhLXNwaW5uZXIge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0cmlnaHQ6IDEwcHg7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHR9XG5cdH1cblxuXHQubGVucy14ZXJvLXJlc3VsdHMge1xuXHRcdG1hcmdpbi10b3A6IDZweDtcblx0XHRtYXgtaGVpZ2h0OiAxNjhweDtcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdH1cblxuXHQubGVucy14ZXJvLXJlc3VsdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRnYXA6IDhweDtcblx0XHRwYWRkaW5nOiA2cHggMTBweDtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblxuXHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0Ym9yZGVyLXRvcDogMDtcblx0XHR9XG5cdH1cblxuXHQubGVucy14ZXJvLXJlc3VsdC1uYW1lIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0YiB7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXhlcm8tdGFrZW4ge1xuXHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdH1cblxuXHQubGVucy14ZXJvLWVtcHR5IHtcblx0XHRwYWRkaW5nOiA4cHggMTBweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQubGVucy14ZXJvLWNyZWF0ZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbi10b3A6IDhweDtcblx0fVxuXG5cdC8qIFJhaXNpbmcgYSBqb2Iga2VwdCBpbiBDYXRUcmF4OiB0aGUgYmFuayBhY2NvdW50IGZvciBpdHMgcGF5bWVudHMsIGFuZCB0aGUgYnV0dG9uICovXG5cdC5sZW5zLXhlcm8tcmFpc2Uge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXG5cdFx0LmxlbnMtcGF5bWVudC1hY2NvdW50IHtcblx0XHRcdGZsZXg6IDEgMSAyMjBweDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cblx0XHQubGVucy14ZXJvLWVycm9yIHtcblx0XHRcdGZsZXgtYmFzaXM6IDEwMCU7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMteGVyby1lcnJvciB7XG5cdFx0bWFyZ2luLXRvcDogNnB4O1xuXHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBUYWtpbmcgcGF5bWVudCAoam9iIGRpYWxvZ3MnIGludm9pY2UgY2FyZCwgYW5kIHRoZSBzdGF0dXMgZGlhbG9nKVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxlbnMtZGlhbG9nLFxuLmxlbnMtc3RhdHVzLWRpYWxvZyB7XG5cdC5sZW5zLXBheW1lbnQge1xuXHRcdG1hcmdpbi10b3A6IDE2cHg7XG5cdFx0cGFkZGluZy10b3A6IDE0cHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRsZW5zLXJ1bGU7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdH1cblxuXHQubGVucy1wYXltZW50LWhlYWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5sZW5zLXBheW1lbnQtYW1vdW50LFxuXHQubGVucy1wYXltZW50LW1ldGhvZHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblxuXHRcdC5jaGlwLXNlbGVjdCB7XG5cdFx0XHRwYWRkaW5nOiA0cHggMTBweDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1wYXltZW50LWFtb3VudCAuZmVlLWlucHV0IHtcblx0XHR3aWR0aDogMTIwcHg7XG5cdH1cblxuXHQubGVucy1wYXltZW50LWFjY291bnQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbjogMCAwIDEwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0fVxuXG5cdC5sZW5zLXBheW1lbnQtZm9vdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXG5cdFx0LmJ0biB7XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1wYXltZW50LXByb2JsZW0ge1xuXHRcdGZsZXg6IDE7XG5cdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0fVxuXG5cdC5sZW5zLXBhaWQtcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDhweDtcblx0XHRwYWRkaW5nOiA0cHggMDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0LmZhIHtcblx0XHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdH1cblxuXHRcdHNtYWxsIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdH1cblxuXHRcdCYuZnVsbCB7XG5cdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHR9XG5cdH1cblxuXHQvKiBXaGF0IHN0b3BzIHRoZSBpbnZvaWNlLCBvbiB0aGUgYWN0aW9uIGJhcjogdGhlIG9uZSB0aGluZyB0byBkbywgYW5kIGEgbGluayB0byBpdCAqL1xuXHQubGVucy1ibG9ja2VyIHtcblx0XHRmb250LXN0eWxlOiBub3JtYWw7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHR9XG5cblx0XHQuZmEge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA0cHg7XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgTGVucyBzdGVwOiB0aGUgUnggYW5kIGl0cyBBREQsIGFuZCBsZW5zZXMgaXQgY2FuJ3QgYmUgbWFkZSBpblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxlbnMtZGlhbG9nIHtcblx0LmxlbnMtcngtc3RyaXAge1xuXHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cdH1cblxuXHQuY2hpcC1zZWxlY3QudW5zdWl0YWJsZSB7XG5cdFx0b3BhY2l0eTogMC41O1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xuXHR9XG5cblx0LmxlbnMtb3B0aW9uLXRpbGUudW5zdWl0YWJsZSB7XG5cdFx0b3BhY2l0eTogMC41O1xuXHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdH1cblxuXHQubGVucy1maXQtbm90ZSB7XG5cdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXG5cdFx0Ji5iYWQge1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBPcmRlciAmIGJpbGxpbmc6IGl0ZW1zLCBkaXNjb3VudCBhbmQgdGhlIG9yZGVyIG5vdGVzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy1kaWFsb2cge1xuXHQubGVucy1pdGVtcyAubGVucy1kaXNjb3VudCB7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRcdD4gc3BhbjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDZweDtcblx0XHRcdG92ZXJmbG93OiB2aXNpYmxlO1xuXHRcdH1cblxuXHRcdC5mZWUtaW5wdXQge1xuXHRcdFx0d2lkdGg6IDk2cHg7XG5cdFx0fVxuXG5cdFx0LmNoaXAtc2VsZWN0IHtcblx0XHRcdHBhZGRpbmc6IDNweCA5cHg7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtb3JkZXItcGRmIHtcblx0XHRtYXJnaW46IDAgMCAxMHB4O1xuXHR9XG59XG5cbi8qIEJveGVzIG9uIGhhbmQgZm9yIGEgY29udGFjdCBsZW5zIGZyb20gaW52ZW50b3J5LCBieSB0aGUgYm94ZXMgdG8gc3VwcGx5ICovXG4ubGVucy1kaWFsb2cgLmNsLXN0b2NrLW5vdGUge1xuXHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblxuXHQmLnNob3J0IHtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU2VuZCBvcmRlciBkaWFsb2dcbi8qIFRoZSBzdGF0dXMgc3RlcCBmcm9tIHJlYWR5IHRvIG9yZGVyIHRvIG9yZGVyIHNlbnQsIG9wZW5lZCBmcm9tIHRoZVxuLyogZGFzaGJvYXJkIHRpbGUgYW5kIHRoZSBwcmFjdGljZSBqb2IgbGlzdC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5sZW5zLXN0YXR1cy1kaWFsb2cge1xuXHR3aWR0aDogNTIwcHg7XG5cdG1heC13aWR0aDogOTJ2dztcblxuXHRmb3JtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0bWFyZ2luOiAwO1xuXHR9XG5cblx0LmxlbnMtc3RhdHVzLWJvZHkge1xuXHRcdHBhZGRpbmc6IDE4cHggMjhweCAwO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHR9XG5cblx0LmxlbnMtc3RhdHVzLWpvYiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTRweDtcblx0XHRwYWRkaW5nOiAxMnB4IDE2cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLWNhbnZhcztcblx0fVxuXG5cdC5sZW5zLXN0YXR1cy1pY29uIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0d2lkdGg6IDQycHg7XG5cdFx0aGVpZ2h0OiA0MnB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDE4cHg7XG5cblx0XHQmLmNvbnRhY3RzIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLXRlYWwtcGFsZTtcblx0XHRcdGNvbG9yOiAkdGVhbDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1zdGF0dXMtam9iLXRleHQge1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5sZW5zLXN0YXR1cy1qb2ItdG9wIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogOHB4O1xuXG5cdFx0YiB7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXN0YXR1cy1qb2ItZGVzYyB7XG5cdFx0bWFyZ2luLXRvcDogM3B4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0LmxlbnMtc3RhdHVzLW1vdmUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDEycHg7XG5cdFx0bWFyZ2luOiAxNHB4IDAgMTJweDtcblxuXHRcdC5sZW5zLXN0YXR1cy1waWxsIHtcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdFx0cGFkZGluZzogNXB4IDEycHg7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtc3RhdHVzLWFycm93IHtcblx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHR9XG5cblx0LmxlbnMtc3RhdHVzLWZhY3RzIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblx0fVxuXG5cdC5sZW5zLXN0YXR1cy1mYWN0IHtcblx0XHRwYWRkaW5nOiA4cHggMTRweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXG5cdFx0c3BhbiB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHR9XG5cblx0XHRiIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXN0YXR1cy1sYWJlbCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0bWFyZ2luLWJvdHRvbTogNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cblx0XHRzbWFsbCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogNHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0fVxuXHR9XG5cblx0LmZvcm0tY29udHJvbCB7XG5cdFx0aGVpZ2h0OiAzOHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJvcmRlci1jb2xvcjogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cblx0XHQmOmZvY3VzIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtc3RhdHVzLW5vdGUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luOiAxMnB4IDAgNHB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cblx0XHRpIHtcblx0XHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQvKiBTb21ldGhpbmcgdW5wYWlkOiBhIHJlbWluZGVyLCB3aXRoIHRoZSBwYXltZW50IGZvcm0gdW5kZXIgaXQgKi9cblx0LmxlbnMtc3RhdHVzLXBheW1lbnQge1xuXHRcdG1hcmdpbi10b3A6IDE0cHg7XG5cblx0XHQubGVucy1wYXltZW50IHtcblx0XHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdFx0fVxuXG5cdFx0LyogVGhlIHNldHRpbmdzIGRpYWxvZ3MnIGNoaXBzIGFuZCBtb25leSBmaWVsZCwgd2hpY2ggdGhpcyBkaWFsb2cgc2l0cyBvdXRzaWRlICovXG5cdFx0LmNoaXAtc2VsZWN0IHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdHVzZXItc2VsZWN0OiBub25lO1xuXG5cdFx0XHQmLnNlbGVjdGVkIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5mZWUtaW5wdXQge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRcdC5mZWUtcHJlZml4IHtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRsZWZ0OiAxMHB4O1xuXHRcdFx0XHR0b3A6IDUwJTtcblx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdFx0fVxuXG5cdFx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiAyMnB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXN0YXR1cy1yZW1pbmRlciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0cGFkZGluZzogMTBweCAxNHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtaGlnaC1iZztcblx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXG5cdFx0LmZhIHtcblx0XHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHR9XG5cblx0XHQmLnBhaWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtc3RhdHVzLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0cGFkZGluZzogMTRweCAyOHB4IDIwcHg7XG5cblx0XHQvKiAuYnRuLW5hdnkgYW5kIC5idG4tY2FuY2VsIGZpbGwgdGhlaXIgY29udGFpbmVyIGZvciBmb3JtIGZvb3RlcnM7IGhlcmUgdGhleSBzaXplIHRvIHRoZWlyIGxhYmVsICovXG5cdFx0LmJ0biB7XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdG1pbi13aWR0aDogMTEwcHg7XG5cdFx0XHRtYXgtd2lkdGg6IG5vbmU7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBMZW5zIHByZXNjcmliaW5nXG4vKiBUaGUgcHJlc2NyaXB0aW9ucyB0aWxlIGFuZCBkaWFsb2dzIHJldXNlIHRoZSBsZW5zIGRpc3BlbnNpbmcgbW9kdWxlXG4vKiBhbmQgZGlhbG9nIHN0eWxlcyAoX2xlbnMtZGlzcGVuc2luZy5jc3MsIGltcG9ydGVkIGZpcnN0LCB3aGljaCBhbHNvXG4vKiBkZWZpbmVzIHRoZSAkbGVucy0qIHRva2VucyB1c2VkIGhlcmUpLiBPbmx5IHdoYXQgaXMgbmV3IGlzIGRlZmluZWQuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIC0tLSBTdGF0dXMgcGlsbDogY3VycmVudCAvIHN1cGVyc2VkZWQgLyBleHBpcmVkIC8gd2l0aGRyYXduIC8gZHJhZnQgLS0tICovXG4ubGVucy1yeC1waWxsIHtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGdhcDogNXB4O1xuXHRmb250LXNpemU6IDEwLjVweDtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRwYWRkaW5nOiAzcHggOXB4O1xuXHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRjb2xvcjogJG5hdnk7XG5cblx0Ji5yeC1jdXJyZW50IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMTA7XG5cdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdH1cblxuXHQmLnJ4LXN1cGVyc2VkZWQsXG5cdCYucngtZHJhZnQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHR9XG5cblx0Ji5yeC1leHBpcmVkLFxuXHQmLnJ4LXdpdGhkcmF3biB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1lcnJvci1iZztcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHR9XG5cblx0LyogQSBjb250YWN0IGxlbnMgZHJhZnQgd2hvc2UgdHJpYWwgcGFpciBpcyBvdXQga2VlcHMgdGhlIGRlZmF1bHQgbmF2eSAqL1xufVxuXG4vKiAtLS0gQSBwcmVzY3JpcHRpb24ncyBwb3dlcnMgYXMgYSBzbWFsbCB0YWJsZSwgb25lIHJvdyBwZXIgZXllIChsZW5zUnhUYWJsZSkgLS0tICovXG5sZW5zLXJ4LXRhYmxlIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG1heC13aWR0aDogMTAwJTtcblx0b3ZlcmZsb3cteDogYXV0bztcbn1cblxuLmxlbnMtcngtbWluaSB7XG5cdG1hcmdpbjogNnB4IDAgMnB4O1xuXHRib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuXHRmb250LXNpemU6IDEycHg7XG5cdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cblx0dGgsXG5cdHRkIHtcblx0XHRwYWRkaW5nOiAzcHggMCAzcHggMTZweDtcblx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0dGhlYWQgdGgge1xuXHRcdHBhZGRpbmctYm90dG9tOiA0cHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHR9XG5cblx0LyogVGhlIGV5ZSwgZG93biB0aGUgbGVmdCAqL1xuXHR0aDpmaXJzdC1jaGlsZCB7XG5cdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0fVxuXG5cdC5sZW5zLXJ4LW1pbmktdGFnIHtcblx0XHRtYXJnaW4tbGVmdDogNnB4O1xuXHRcdHBhZGRpbmc6IDFweCA2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0fVxuXG5cdC5sZW5zLXJ4LW1pbmktbm9uZSB7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cbn1cblxuLmxlbnMtcngtbWluaS1ub3RlLFxuLmxlbnMtcngtbWluaS1lbXB0eSB7XG5cdGZvbnQtc2l6ZTogMTFweDtcblx0Y29sb3I6ICRsZW5zLW11dGVkO1xufVxuXG4ubGVucy1yeC1taW5pLWVtcHR5IHtcblx0bWFyZ2luLXRvcDogNHB4O1xufVxuXG4vKiAtLS0gV2l0aGRyYXdpbmcgYW4gaXNzdWVkIHByZXNjcmlwdGlvbiwgZnJvbSB0aGUgdGlsZSAodGhlIGRpYWxvZyBpcyBqdXN0IHRoZSBjYXJkKSAtLS0gKi9cbi5sZW5zLXJ4LXdpdGhkcmF3LWRpYWxvZyB7XG5cdC8qIFdpZGUgZW5vdWdoIGZvciBhIGZ1bGwgc3BlY3RhY2xlIFJ4IC0gYWRkcywgcHJpc21zIGFuZCBQRHMgKi9cblx0LmxlbnMtY29uZmlybSB7XG5cdFx0d2lkdGg6IDU0MHB4O1xuXHRcdG1heC13aWR0aDogOTJ2dztcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHR9XG5cblx0LmxlbnMtcngtd2l0aGRyYXctd2hhdCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogNHB4O1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgRGFzaGJvYXJkIG1vZHVsZVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxlbnMtcngtbW9kdWxlIHtcblx0LmxlbnMtam9iIHtcblx0XHQmLnJ4LWN1cnJlbnQge1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6ICRncmVlbjtcblx0XHR9XG5cblx0XHQmLnJ4LWRyYWZ0IHtcblx0XHRcdGJvcmRlci1sZWZ0LWNvbG9yOiAkbGVucy1mYWludDtcblx0XHRcdGJvcmRlci1sZWZ0LXN0eWxlOiBkYXNoZWQ7XG5cdFx0fVxuXG5cdFx0Ji5yeC10cmlhbCB7XG5cdFx0XHRib3JkZXItbGVmdC1jb2xvcjogJG5hdnk7XG5cdFx0XHRib3JkZXItbGVmdC1zdHlsZTogZGFzaGVkO1xuXHRcdH1cblxuXHRcdCYucngtc3VwZXJzZWRlZCxcblx0XHQmLnJ4LWV4cGlyZWQge1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6ICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0XHRvcGFjaXR5OiAwLjg7XG5cdFx0fVxuXG5cdFx0Ji5yeC13aXRoZHJhd24ge1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdG9wYWNpdHk6IDAuODtcblx0XHR9XG5cdH1cblxuXHQubGVucy1yeC13aXRoZHJhd24tbm90ZSB7XG5cdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0fVxuXG5cdC5sZW5zLWpvYi10aHVtYiBsZW5zLWRlc2lnbi1hcnQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdH1cblxuXHQubGVucy1qb2ItdGh1bWIgLmxlbnMtZGVzaWduLWFydCB7XG5cdFx0d2lkdGg6IDU2cHg7XG5cdFx0aGVpZ2h0OiA1NnB4O1xuXHR9XG5cblx0LmxlbnMtam9iLWFjdGlvbnMge1xuXHRcdGFsaWduLXNlbGY6IGNlbnRlcjtcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFByZXNjcmlwdGlvbiBkaWFsb2dzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy1yeC1kaWFsb2cge1xuXHQubGVucy1yeC1wcmV2aWV3IGxlbnMtZGVzaWduLWFydCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0fVxuXG5cdC8qIEEgZGF0ZSBzaXRzIHdoZXJlIHRoZSBkaXNwZW5zaW5nIGRpYWxvZ3Mgc2hvdyBhIHByaWNlICovXG5cdC5sZW5zLXJ4LXZhbGlkIHtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdH1cblxuXHQvKiBUaGUgc3BlY3RhY2xlIFJ4OiBpdHMgcG93ZXJzIGFuZCBBRERzLCB0aGVuIGl0cyBwcmlzbXMgYW5kIHRoZSBtb25vY3VsYXIgUERzICovXG5cdC5sZW5zLXJ4LXNjcmlwdC1jYXJkIC5sZW5zLXJ4LXBvd2Vycyxcblx0LmxlbnMtcngtc2NyaXB0LWNhcmQgLmxlbnMtcngtcHJpc21zIHtcblx0XHQubGVucy1yeC1oZWFkLFxuXHRcdC5sZW5zLXJ4LXJvdyB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDcwcHggcmVwZWF0KDUsIG1pbm1heCgwLCAxZnIpKTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1yeC1icGQge1xuXHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMjAwcHgpO1xuXHR9XG5cblx0LyogQW4gZXllJ3MgYmFsYW5jZSBsZW5zLCBvciBubyBjb250YWN0IGxlbnM6IGEgdG9nZ2xlIHVuZGVyIGl0cyBuYW1lLCBhbmQgaXRzIHJvdyBncmV5ZWQgKi9cblx0LmxlbnMtZXllLXRvZ2dsZSB7XG5cdFx0YWxpZ24tc2VsZjogZmxleC1zdGFydDtcblx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0cGFkZGluZzogMXB4IDdweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0fVxuXG5cdFx0Ji5vbiB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXJ4LXJvdy5sZW5zLWV5ZS1vZmYgLmZvcm0tY29udHJvbCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHR9XG5cblx0LyogQSBiYWxhbmNlIGV5ZSBpcyBmbGFnZ2VkLCBub3QgZGlzYWJsZWQ6IGl0cyB2YWx1ZXMgc3RheSBhbmQgY2FuIHN0aWxsIGJlIGNoYW5nZWQgKi9cblx0LmxlbnMtcngtcm93LmxlbnMtZXllLWJhbGFuY2UgLmZvcm0tY29udHJvbCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0fVxuXG5cdC8qIFRoZSBpY29uLW9ubHkgY29weS1yaWdodC10by1sZWZ0IGJ1dHRvbiBpbiB0aGUgUnggY2FyZCBoZWFkZXJzLCBrZXB0IHNtYWxsIHNvIHRoZSBoZWFkZXIgc3RheXMgZmxhdCAqL1xuXHQubWQtYnV0dG9uLm1kLWZhYi5sZW5zLWNvcHktZXllLWJ0biB7XG5cdFx0bWFyZ2luOiAtNnB4IDA7XG5cdFx0d2lkdGg6IDM0cHg7XG5cdFx0aGVpZ2h0OiAzNHB4O1xuXHRcdG1pbi1oZWlnaHQ6IDM0cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDM0cHg7XG5cdH1cblxuXHQvKiBUaGUgY29tbWVudCB3cml0dGVuIHdpdGggdGhlIHJlZnJhY3Rpb24sIGluc2lkZSB0aGUgcmVmcmFjdGlvbiBub3RpY2UgKi9cblx0LmxlbnMtcngtcmVmcmFjdGlvbi1jb21tZW50IHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDRweDtcblx0XHR9XG5cdH1cblxuXHQvKiBDbGlja2FibGUgcmVjb21tZW5kYXRpb25zLCBncm91cGVkIHNvIHRoZSBsb25nIGxpc3Qgc3RheXMgc2Nhbm5hYmxlICovXG5cdC5sZW5zLXJlYy1ncm91cCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDZweDtcblxuXHRcdC5sZW5zLWNoaXAtcm93IHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1yZWMtZ3JvdXAtbGFiZWwge1xuXHRcdGZsZXg6IDAgMCAxMjVweDtcblx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuXHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0fVxuXG5cdC8qIFdoYXQgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBwcmVzY3JpcHRpb24sIGFuZCB3aGF0IHRvIGxvb2sgYXQgYmVmb3JlIGlzc3VpbmcgKi9cblx0LmxlbnMtcngtY2hhbmdlcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA0cHggMThweDtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cblx0XHQubGVucy1yeC1jaGFuZ2VzLWxhYmVsIHtcblx0XHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1yeC13YXJuaW5ncyB7XG5cdFx0bWFyZ2luOiAxMnB4IDAgMDtcblx0fVxuXG5cdC8qIFRoZSBwcmVzY3JpYmVyIGlzIHdob2V2ZXIgaXNzdWVzIGl0OiBzaG93biwgbm90IHR5cGVkICovXG5cdC5sZW5zLXJ4LXByZXNjcmliZXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRwYWRkaW5nOiA3cHggMDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblxuXHRcdHNtYWxsIHtcblx0XHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIEFuIGludmVudG9yeSBsZW5zJ3MgZXllIGlzIG9uZSBvZiBpdHMgYm94ZXM6IG9uZSBkcm9wZG93biBhY3Jvc3MgdGhlIHJvdyAqL1xuXHQubGVucy1yeC1yb3cgLmNsLWJveC1zZWxlY3Qge1xuXHRcdGdyaWQtY29sdW1uOiAyIC8gLTE7XG5cdH1cblxuXHQuY2wtbm8tYm94IHtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHR9XG5cblx0LyogQSB0cmlhbCByZXZpZXc6IG9uZSBjYXJkIHBlciBleWUgLSBvdmVyLXJlZnJhY3Rpb24gYW5kIFZBLCB0aGVuIHRoZSBmaXQgYXMgY2hpcHMgKi9cblx0LmxlbnMtdHJpYWwtZXllIHtcblx0XHQuY2FyZC1oZWFkZXItZmxleCBoNCBzbWFsbCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogNHB4O1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXRyaWFsLW1lYXN1cmVzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDE2cHg7XG5cblx0XHRsYWJlbCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdGdhcDogNHB4O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdC5sZW5zLWxhYmVsIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQubGVucy10cmlhbC1vciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDZweDtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0d2lkdGg6IDkwcHg7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGZpdCBhcyByb3dzIG9mIGNoaXBzLCBlYWNoIHdpdGggaXRzIG5hbWUgLSBjaGlwcyB0aGVpciBvd24gaGVpZ2h0LCBub3QgdGhlIHJvdydzICovXG5cdC5sZW5zLXRyaWFsLWZpdCB7XG5cdFx0bWFyZ2luLXRvcDogMTJweDtcblxuXHRcdC5sZW5zLWNoaXAtcm93IHtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRtYXJnaW4tdG9wOiA2cHg7XG5cdFx0fVxuXG5cdFx0LmxlbnMtbGFiZWwge1xuXHRcdFx0bWluLXdpZHRoOiA4NHB4O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXRyaWFsLXJvdGF0aW9uIHtcblx0XHR3aWR0aDogNzBweDtcblx0XHRoZWlnaHQ6IDMwcHg7XG5cdH1cblxuXHQvKiBFYXJsaWVyIHRyaWFscywgbmV3ZXN0IGZpcnN0ICovXG5cdC5sZW5zLXRyaWFsLWVhcmxpZXIge1xuXHRcdHBhZGRpbmc6IDEwcHggMDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICRsZW5zLXJ1bGU7XG5cblx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHR9XG5cdH1cblxuXHQubGVucy10cmlhbC1lYXJsaWVyLWhlYWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW4tYm90dG9tOiA0cHg7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC8qIEEgbGVucyB0aWxlIHdpdGggdGhlIGJveCB0aGUgcGF0aWVudCdzIHJlZnJhY3Rpb24gY29udmVydHMgdG8gKi9cblx0LmNsLXJ4LW1hdGNoIHtcblx0XHRtYXJnaW4tdG9wOiA2cHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0fVxuXG5cdC8qIEVhY2ggY29udGFjdCBsZW5zJ3MgZGV0YWlscywgYW5kIHRoZSBsZWZ0IGV5ZSdzIG93biBsZW5zICovXG5cdC5jbC1sZW5zLXNsb3Qge1xuXHRcdG1hcmdpbi1ib3R0b206IDEycHg7XG5cdFx0cGFkZGluZy1ib3R0b206IDEycHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRsZW5zLXJ1bGU7XG5cblx0XHQuY2wtbGVucy1zbG90LW5hbWUge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogOHB4O1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR9XG5cblx0XHQuY2wtc3RvY2stdHlwZSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiA4cHg7XG5cdFx0fVxuXHR9XG5cblx0LmNsLWxlZnQtbGVucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTJweDtcblx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXG5cdFx0LmxlbnMtbGFiZWwge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdG1heC13aWR0aDogMzYwcHg7XG5cdFx0fVxuXHR9XG5cblx0LyogTm90ZXMga2VlcCB0aGUgd3JpdGVyJ3MgbGluZSBicmVha3MgKi9cblx0LmxlbnMtbm90ZXMtdmFsdWUge1xuXHRcdHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcblx0fVxuXG5cdC5sZW5zLW5vdGVzLWhlbHAge1xuXHRcdG1hcmdpbjogOHB4IDAgMDtcblx0fVxuXG5cdC5sZW5zLXJ4LXN1YmhlYWQge1xuXHRcdG1hcmdpbjogMThweCAwIDZweDtcblx0XHRwYWRkaW5nLXRvcDogMTRweDtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG59XG5cbi8qIEEgbWFkZS10by1vcmRlciBsZW5zJ3Mgc3BlY2lmaWNhdGlvbiBoYXMgYSBuaW50aCBjb2x1bW46IGEgYmFjayB0b3JpYydzIHN0ZWVwIGJhc2UgY3VydmUgKi9cbi5sZW5zLWRpYWxvZyAuY2wtY3VzdG9tLWNhcmQgLmxlbnMtcngtdGFibGUge1xuXHQubGVucy1yeC1oZWFkLFxuXHQubGVucy1yeC1yb3cge1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogNzBweCByZXBlYXQoOSwgbWlubWF4KDAsIDFmcikpO1xuXHR9XG59XG5cbi8qIEZpZWxkIGxhYmVscyBzaXQgb24gdGhlaXIgZmllbGRzIC0gbm90IHVuZGVyIHRoZSBvbGQgZ2xvYmFsIC5sZW5zLWxhYmVsIG1hcmdpbiAoX2V4YW0uY3NzKSAqL1xuLmxlbnMtZGlhbG9nIC5sZW5zLXJ4LWV4dHJhIC5sZW5zLWxhYmVsIHtcblx0bWFyZ2luLXRvcDogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBDaG9vc2luZyBhIHByZXNjcmlwdGlvbiBpbiB0aGUgZGlzcGVuc2luZyBkaWFsb2dzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy1kaWFsb2cge1xuXHQubGVucy1yeC1waWNrLWxpc3Qge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDEwcHg7XG5cdH1cblxuXHQubGVucy1yeC1waWNrIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTRweDtcblx0XHRwYWRkaW5nOiAxMnB4IDQ0cHggMTJweCAxMnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJveC1zaGFkb3c6IDAgNnB4IDE4cHggcmdiYSgwLCA1MywgMjEwLCAwLjEpO1xuXHRcdH1cblxuXHRcdCYuc2VsZWN0ZWQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJveC1zaGFkb3c6IDAgNnB4IDE4cHggcmdiYSgwLCA1MywgMjEwLCAwLjE0KTtcblxuXHRcdFx0LmxlbnMtdGlsZS1jaGVjayB7XG5cdFx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMSk7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmxlbnMtdGlsZS1jaGVjayB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdHJpZ2h0OiAxMnB4O1xuXHRcdFx0bWFyZ2luLXRvcDogLTEycHg7XG5cdFx0XHR3aWR0aDogMjRweDtcblx0XHRcdGhlaWdodDogMjRweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHR0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2UsIG9wYWNpdHkgMC4xNXMgZWFzZTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1yeC1waWNrLWFydCB7XG5cdFx0ZmxleDogMCAwIGF1dG87XG5cblx0XHQubGVucy1kZXNpZ24tYXJ0IHtcblx0XHRcdHdpZHRoOiA1NnB4O1xuXHRcdFx0aGVpZ2h0OiA1NnB4O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXJ4LXBpY2stYm9keSB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdH1cblxuXHQubGVucy1yeC1waWNrLXRvcCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdH1cblxuXHQubGVucy1yeC1waWNrLXBvd2VycyB7XG5cdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHR9XG5cblx0LmxlbnMtcngtcGljay1tZXRhIHtcblx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXG5cdFx0aSB7XG5cdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHByZXNjcmliZWQgY29sdW1ucyBhcmUgZml4ZWQ7IG9ubHkgUEQgYW5kIGhlaWdodHMgYXJlIGVudGVyZWQgKi9cblx0LyogQSBQRCBvciBmaXR0aW5nIGhlaWdodCBub3QgbWVhc3VyZWQgaW4gdGhlIGZyYW1lIHlldCAqL1xuXHQubGVucy1yeC1tZWFzdXJlIC5mb3JtLWNvbnRyb2wubGVucy1tZWFzdXJlLW1pc3Npbmcge1xuXHRcdGJvcmRlci1jb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWhpZ2gtYmc7XG5cdH1cblxuXHQubGVucy1tZWFzdXJlLW5vdGljZSB7XG5cdFx0bWFyZ2luOiAxMnB4IDAgMDtcblx0fVxuXG5cdC5sZW5zLXJ4LW1lYXN1cmUgaW5wdXRbcmVhZG9ubHldIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQSBjb250YWN0IGxlbnMgZnJvbSBpbnZlbnRvcnk6IGl0cyB0eXBlIGFuZCByZXBsYWNlbWVudCwgc2V0IGhlcmVcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5sZW5zLWRpYWxvZyAuY2wtc3RvY2stdHlwZSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtd3JhcDogd3JhcDtcblx0Z2FwOiA4cHggMjRweDtcblx0bWFyZ2luLWJvdHRvbTogMTJweDtcblxuXHQubGVucy1jaGlwLXJvdyB7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQubGVucy1sYWJlbCB7XG5cdFx0bWFyZ2luOiAwIDRweCAwIDA7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQcmVzY3JpcHRpb24gaGlzdG9yeVxuLyogRWFybGllciBwcmVzY3JpcHRpb25zIGFuZCB3aGF0IHRoZSBwYXRpZW50IHdlYXJzIG5vdywgYmVzaWRlIHRoZSBSeFxuLyogYmVpbmcgd3JpdHRlbiBpbiB0aGUgcHJlc2NyaXB0aW9uIGRpYWxvZ3MuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy1kaWFsb2cgLmxlbnMtcngtaGlzdG9yeSB7XG5cdC8qIEFwYXJ0IGZyb20gdGhlIFJ4IGNhcmQgdW5kZXIgaXQgKi9cblx0bWFyZ2luLWJvdHRvbTogMThweDtcblxuXHQvKiBUaGUgb3RoZXIga2luZCwgaW4gb25lIGxpbmUgKi9cblx0LmxlbnMtaGlzdG9yeS1vdGhlciB7XG5cdFx0bWFyZ2luOiAwIDAgMTBweDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cblx0XHRpIHtcblx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1oaXN0b3J5LWxvYWRpbmcge1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0fVxuXG5cdC5sZW5zLWhpc3Rvcnktc2VjdGlvbiArIC5sZW5zLWhpc3Rvcnktc2VjdGlvbiB7XG5cdFx0bWFyZ2luLXRvcDogMTRweDtcblx0fVxuXG5cdC5sZW5zLWhpc3RvcnktbGFiZWwge1xuXHRcdG1hcmdpbi1ib3R0b206IDZweDtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdH1cblxuXHQubGVucy1oaXN0b3J5LXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAxMHB4IDA7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRsZW5zLXJ1bGU7XG5cblx0XHQmOmxhc3Qtb2YtdHlwZSB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdH1cblxuXHRcdC5sZW5zLW1pbmktYnRuIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1oaXN0b3J5LWljb24ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHR3aWR0aDogMzRweDtcblx0XHRoZWlnaHQ6IDM0cHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblxuXHRcdCYuY29udGFjdHMge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtdGVhbC1wYWxlO1xuXHRcdFx0Y29sb3I6ICR0ZWFsO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWhpc3RvcnktbWFpbiB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdH1cblxuXHQubGVucy1oaXN0b3J5LXRvcCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDhweDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC5sZW5zLWhpc3RvcnktcG93ZXJzIHtcblx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQubGVucy1oaXN0b3J5LW1ldGEge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogNHB4IDEycHg7XG5cdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdC5sZW5zLWhpc3RvcnktbW9yZSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdG1hcmdpbi10b3A6IDZweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgSW52ZW50b3J5IChwcm90b3R5cGUgbW9kYWwpXG4vKiBTY29wZWQgdG8gYC5zZXR0aW5ncy1zaGVsbC5pbnZlbnRvcnlgIHNvIGl0IHNpdHMgb24gdG9wIG9mXG4vKiBfc2V0dGluZ3MuY3NzIC0gdGhlIHJhaWwsIHBhbmUsIGNhcmRzLCBjaGlwcywgbm90aWNlcyBhbmQgZm9ybVxuLyogY29udHJvbHMgYWxsIGNvbWUgZnJvbSB0aGVyZS4gVGhpcyBmaWxlIG9ubHkgYWRkcyB0aGUgc3RvY2ssXG4vKiByZW9yZGVyIHRhYmxlcyBhbmQgdGhlIHNpZGUgcGFuZWwuXG4vKiBQYXRpZW50IGludm9pY2luZyAoLnNldHRpbmdzLXNoZWxsLmludm9pY2luZykgdXNlcyB0aGUgdGFibGVzLFxuLyogc3RhdHVzIHBpbGxzLCBub3RpY2VzIGFuZCBjb25maXJtcyB0b28sIHNvIGl0IGlzIGxpc3RlZCBhbG9uZ3NpZGU7XG4vKiB3aGF0IG9ubHkgaXQgbmVlZHMgaXMgaW4gX2ludm9pY2luZy5jc3MuIFRoZSB0YXNrIGxpc3QgYW5kIHN1cmdlcnlcbi8qIHdhaXRsaXN0ICguc2V0dGluZ3Mtc2hlbGwud29ya2xpc3QpIHVzZSB0aGUgc2lkZSBwYW5lbCBhcyB3ZWxsO1xuLyogdGhlaXJzIGlzIF93b3JrbGlzdHMuY3NzLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uaW52ZW50b3J5LWRpYWxvZyB7XG5cdG1pbi13aWR0aDogNzglO1xuXHR3aWR0aDogNzglO1xuXHRoZWlnaHQ6IDg4dmg7XG5cdG1heC1oZWlnaHQ6IDkydmg7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlci10b3Atd2lkdGg6IDA7XG5cblx0Lmludi1wcmFjdGljZS1uYW1lIHtcblx0XHRtYXJnaW4tbGVmdDogMTJweDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0b3BhY2l0eTogMC44O1xuXHR9XG5cblx0Lmludi1wcm90b3R5cGUtYmFkZ2Uge1xuXHRcdG1hcmdpbi1sZWZ0OiAxMHB4O1xuXHRcdHBhZGRpbmc6IDJweCA5cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHllbGxvdy1jdGE7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHR9XG59XG5cbi5zZXR0aW5ncy1zaGVsbC5pbnZlbnRvcnksXG4uc2V0dGluZ3Mtc2hlbGwuaW52b2ljaW5nLFxuLnNldHRpbmdzLXNoZWxsLndvcmtsaXN0IHtcblxuXHQvKiBSZW9yZGVyIGNvdW50IGluIHRoZSByYWlsIC0gYSBwaWxsLCB3aGl0ZSBvbiB0aGUgYWN0aXZlIHJvdyAqL1xuXHQuc2V0dGluZ3MtbmF2LWl0ZW0ge1xuXHRcdC5pbnYtY291bnQge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0XHRtaW4td2lkdGg6IDIwcHg7XG5cdFx0XHRwYWRkaW5nOiAxcHggN3B4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3ctY3RhO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHR9XG5cblx0XHQmLmFjdGl2ZSAuaW52LWNvdW50IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQvKiBTdWNjZXNzIGdyZWVuIGFuZCBlcnJvciByZWQsIHNvIHRoZSByZXN1bHQgb2YgYW4gYWN0aW9uIHJlYWRzIGFwYXJ0IGZyb20gdGhlIGluZm8gbm90aWNlcyAqL1xuXHQuc2V0dGluZ3Mtbm90aWNlLmludi1mbGFzaCB7XG5cdFx0Ji5zdWNjZXNzIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRncmVlbiBhbHBoYSgxMiUpKTtcblx0XHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgY29sb3IoJGdyZWVuIGFscGhhKDM1JSkpO1xuXHRcdH1cblxuXHRcdCYuZXJyb3Ige1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1lcnJvci1iZztcblx0XHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgY29sb3IoJGRhbmdlciBhbHBoYSgyNSUpKTtcblx0XHR9XG5cdH1cblxuXHQuaW52LXRvb2xiYXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdGZsZXg6IDEgMSAyMjBweDtcblx0XHRcdG1heC13aWR0aDogMzQwcHg7XG5cdFx0fVxuXG5cdFx0Lmludi1jYXRlZ29yeS1zZWxlY3QsXG5cdFx0Lmludi1zdGF0dXMtc2VsZWN0IHtcblx0XHRcdGZsZXg6IDAgMCAxNTBweDtcblx0XHR9XG5cblx0XHQuaW52LXNlYXJjaC1pbnB1dCB7XG5cdFx0XHRtYXgtd2lkdGg6IDQyMHB4O1xuXHRcdH1cblxuXHRcdC5idG4ge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtc2VhcmNoLWhpbnQge1xuXHRcdG1hcmdpbjogLThweCAwIDE0cHg7XG5cblx0XHQuZmEge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA0cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogQSBiYXJjb2RlIG5vdGhpbmcgaG9sZHMgeWV0OiBzYWlkIHBsYWlubHksIHdpdGggdGhlIHdheSB0byBhZGQgaXQgKi9cblx0Lmludi1iYXJjb2RlLW1pc3Mge1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDhweCAxMHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cblx0XHQuYnRuIHtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0bWFyZ2luOiAwIDAgMCBhdXRvO1xuXHRcdFx0cGFkZGluZzogM3B4IDEycHg7XG5cdFx0fVxuXHR9XG5cblx0Lmludi1tdXRlZCB7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdG1hcmdpbjogNnB4IDA7XG5cdH1cblxuXHQvKiBTaXplZCBsaWtlIHRoZSB0YWJsZSBpdCBzdGFuZHMgaW4gZm9yLCBzbyB0aGUgcGFuZSBkb2VzIG5vdCBqdW1wIHdoZW4gdGhlIHJvd3MgYXJyaXZlICovXG5cdC5pbnYtbG9hZGluZyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRtaW4taGVpZ2h0OiAyMjBweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblxuXHRcdC5mYSB7XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LyogU2F5cyB0aGUgbGlzdCBpcyBjb21wbGV0ZSwgc28gYW4gaW5maW5pdGUgc2Nyb2xsIGRvZXMgbm90IGxlYXZlIHRoZSByZWFkZXIgd2FpdGluZyBmb3IgbW9yZSAqL1xuXHQuaW52LWxpc3QtZW5kIHtcblx0XHRtYXJnaW46IDRweCAwIDE0cHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cblx0Lmludi1sb2FkLW1vcmUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDEycHg7XG5cdFx0bWFyZ2luOiA2cHggMCAxNHB4O1xuXHR9XG5cblx0Lmludi1lcnJvci10ZXh0IHtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJGRhbmdlcjtcblx0fVxuXG5cdC8qIElEcyBhcmUgc2hvd24gc28gYSB0ZXN0ZXIgY2FuIGVudGVyIGEgbW92ZSBieSBoYW5kIGFuZCBtYXRjaCByb3dzIGFnYWluc3QgRHluYW1vREIgKi9cblx0Lmludi1pZCxcblx0Lmludi1tb25vIHtcblx0XHRmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBtb25vc3BhY2U7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFRhYmxlcyAoU3RvY2ssIFJlb3JkZXIpXG5cdC8qIFRleHQgbGVmdCwgbnVtYmVycyByaWdodCBpbiB0YWJ1bGFyIGZpZ3VyZXMsIHNvIGNvbHVtbnMgb2YgcXVhbnRpdGllc1xuXHQvKiBsaW5lIHVwIGFuZCBjb21wYXJlIGF0IGEgZ2xhbmNlLiBSb3dzIGFyZSBzZXBhcmF0ZWQgYnkgcnVsZXMgcmF0aGVyXG5cdC8qIHRoYW4gc3RyaXBlcywgd2hpY2ggd291bGQgZmlnaHQgdGhlIG9wZW4gZGV0YWlsIGFuZCBlZGl0b3Igcm93cy5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuaW52LXRhYmxlLWJhciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblxuXHRcdC5pbnYtZmlsdGVyIHtcblx0XHRcdGZsZXg6IDAgMSAyNjBweDtcblx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdH1cblx0fVxuXG5cdC8qIFNjcm9sbHMgc2lkZXdheXMgcmF0aGVyIHRoYW4gc3F1YXNoaW5nIGNvbHVtbnMgd2hlbiB0aGUgZGlhbG9nIGlzIG5hcnJvdyAqL1xuXHQuaW52LXRhYmxlLXdyYXAge1xuXHRcdG92ZXJmbG93LXg6IGF1dG87XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHR9XG5cblx0LyogQ2hpbGQgY29tYmluYXRvcnMgdGhyb3VnaG91dDogYW4gb3BlbiBTdG9jayByb3cgaG9sZHMgYSB0YWJsZSBvZiBpdHMgb3duLCB3aGljaCBtdXN0IG5vdFxuXHQgICBwaWNrIHVwIHRoZSBvdXRlciB0YWJsZSdzIHJ1bGVzICovXG5cdC5pbnYtdGFibGUge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cblx0XHQ+IHRoZWFkID4gdHIgPiB0aCxcblx0XHQ+IHRib2R5ID4gdHIgPiB0aCxcblx0XHQ+IHRib2R5ID4gdHIgPiB0ZCB7XG5cdFx0XHRwYWRkaW5nOiAxMHB4IDEycHg7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHR9XG5cblx0XHQ+IHRoZWFkID4gdHIgPiB0aCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS1tb2RhbC1oZWFkZXI7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC8qIFJvdyBoZWFkZXJzIHJlYWQgYXMgdGhlIHJvdydzIG5hbWUsIG5vdCBhcyBhbm90aGVyIGNvbHVtbiBoZWFkaW5nICovXG5cdFx0PiB0Ym9keSA+IHRyID4gdGgge1xuXHRcdFx0bWluLXdpZHRoOiAxMjBweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXHRcdH1cblxuXHRcdD4gdGJvZHkgPiB0ciArIHRyID4gdGQsXG5cdFx0PiB0Ym9keSA+IHRyICsgdHIgPiB0aCxcblx0XHQ+IHRib2R5ICsgdGJvZHkgPiB0cjpmaXJzdC1jaGlsZCA+IHRkLFxuXHRcdD4gdGJvZHkgKyB0Ym9keSA+IHRyOmZpcnN0LWNoaWxkID4gdGgge1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHR9XG5cblx0XHQ+IHRoZWFkID4gdHIgPiAuaW52LW51bSxcblx0XHQ+IHRib2R5ID4gdHIgPiAuaW52LW51bSB7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC5pbnYtY29sLXRvZ2dsZSB7XG5cdFx0XHR3aWR0aDogMzZweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDA7XG5cdFx0fVxuXG5cdFx0Lmludi1jb2wtYWN0aW9ucyB7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0Lmludi1jZWxsLXByaW1hcnkge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVxuXG5cdFx0Lmludi1jZWxsLXNlY29uZGFyeSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0XHQuaW52LW1vbm8ge1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHR9XG5cblx0XHQuaW52LXVua25vd24ge1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0Y3Vyc29yOiBoZWxwO1xuXHRcdH1cblxuXHRcdD4gdGJvZHkuaXMtYXJjaGl2ZWQge1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0XHQ+IHRyID4gdGgge1xuXHRcdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyogQSB2YXJpYXRpb24gcm93IG9wZW5zIHRoZSBzaWRlIHBhbmVsLCBzbyB0aGUgd2hvbGUgcm93IGlzIGEgdGFyZ2V0ICovXG5cdFx0PiB0Ym9keSA+IHRyLmludi12YXJpYXRpb24tcm93IHtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0Jjpob3ZlciA+IHRkLFxuXHRcdFx0Jjpob3ZlciA+IHRoIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHQmLmlzLXNlbGVjdGVkID4gdGQsXG5cdFx0XHQmLmlzLXNlbGVjdGVkID4gdGgge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0fVxuXG5cdFx0XHQmLmlzLXNlbGVjdGVkID4gOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0Ym94LXNoYWRvdzogaW5zZXQgM3B4IDAgMCAkbmF2eTtcblx0XHRcdH1cblxuXHRcdFx0LyogQXJjaGl2ZWQgb24gaXRzIG93bjogc3RpbGwgbGlzdGVkIHdpdGggaXRzIGl0ZW0sIGJ1dCBvdXQgb2YgdXNlICovXG5cdFx0XHQmLmlzLWFyY2hpdmVkID4gdGQsXG5cdFx0XHQmLmlzLWFyY2hpdmVkIC5pbnYtcm93LWxpbmsge1xuXHRcdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lmludi1jb2wtb3BlbiB7XG5cdFx0XHR3aWR0aDogMjhweDtcblx0XHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSB2YXJpYXRpb24ncyBuYW1lOiB0aGUga2V5Ym9hcmQgcm91dGUgaW50byB0aGUgc2lkZSBwYW5lbCAqL1xuXHQuaW52LXJvdy1saW5rIHtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdFx0Zm9udDogaW5oZXJpdDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0fVxuXHR9XG5cblx0LyogT24gYSBuYXJyb3cgc2NyZWVuIHRoZSBsb3dlc3QtcHJpb3JpdHkgY29sdW1ucyBnbyBiZWZvcmUgdGhlIHRhYmxlIGhhcyB0byBzY3JvbGwuIENhdGVnb3J5XG5cdCAgIGlzIGluIHRoZSB0b29sYmFyIGFuZCB0aGUgYmFyY29kZSBpbiBhIHZhcmlhdGlvbidzIHNldHRpbmdzLCBzbyBub3RoaW5nIGlzIGxvc3QuICovXG5cdEBtZWRpYSAobWF4LXdpZHRoOiAxNTAwcHgpIHtcblx0XHQuaW52LXRhYmxlIC5pbnYtY29sLW9wdGlvbmFsIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGl0ZW0gcm93IG9wZW5zIGl0cyBkZXRhaWwsIHNvIHRoZSB3aG9sZSByb3cgaXMgYSB0YXJnZXQgKi9cblx0Lmludi1zdG9jay10YWJsZSB7XG5cdFx0Lmludi1pdGVtLXJvdyB7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRcdCY6aG92ZXIgdGQsXG5cdFx0XHQmOmhvdmVyIHRoIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRib2R5LmlzLW9wZW4gLmludi1pdGVtLXJvdyB0ZCxcblx0XHR0Ym9keS5pcy1vcGVuIC5pbnYtaXRlbS1yb3cgdGgge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtdG9nZ2xlIHtcblx0XHR3aWR0aDogMjZweDtcblx0XHRoZWlnaHQ6IDI2cHg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDExcHg7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXHR9XG5cblx0LyogQSBsYWJlbGxlZCBpY29uIGJ1dHRvbiAocGFuZWwgY2xvc2UsIHN0ZXBwZXIpLCBvdXRsaW5lZCBsaWtlIC5idG4tY2FuY2VsICovXG5cdC5pbnYtaWNvbi1idG4ge1xuXHRcdHdpZHRoOiAyOHB4O1xuXHRcdGhlaWdodDogMjhweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRjYW5jZWxCb3JkZXI7XG5cdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtbGlnaHQ7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LyogQWJicmV2aWF0ZWQgaGVhZGluZ3Mga2VlcCB0aGVpciBmdWxsIG5hbWUgb24gaG92ZXIsIHdpdGhvdXQgdGhlIGJyb3dzZXIncyBkb3R0ZWQgdW5kZXJsaW5lICovXG5cdC5pbnYtdGFibGUgYWJiclt0aXRsZV0ge1xuXHRcdGJvcmRlci1ib3R0b206IG5vbmU7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdGN1cnNvcjogaGVscDtcblx0fVxuXG5cdC8qIC5idG4tbmF2eSBhbmQgLmJ0bi1jYW5jZWwgZmlsbCB0aGVpciBjb250YWluZXIgZm9yIGZvcm0gZm9vdGVyczsgaGVyZSB0aGV5IHNpemUgdG8gdGhlaXIgbGFiZWwgKi9cblx0Lmludi1kZXRhaWwtZm9vdGVyLFxuXHQuaW52LWNvbmZpcm0ge1xuXHRcdC5idG4ge1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAzcHggMTJweDtcblx0XHR9XG5cdH1cblxuXHQvKiBTdGF0dXM6IGFuIGljb24gYW5kIGEgd29yZCBhcyB3ZWxsIGFzIGEgY29sb3VyLCBzbyBpdCByZWFkcyB3aXRob3V0IGNvbG91ciB2aXNpb24gKi9cblx0Lmludi1zdGF0dXMge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA1cHg7XG5cdFx0cGFkZGluZzogMnB4IDlweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHQmLmlzLW9rIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRncmVlbiBhbHBoYSgxMiUpKTtcblx0XHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdH1cblxuXHRcdCYuaXMtbG93IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtaGlnaC1iZztcblx0XHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdH1cblxuXHRcdCYuaXMtb3V0IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtZXJyb3ItYmc7XG5cdFx0XHRjb2xvcjogJG5vdGljZS1lcnJvcjtcblx0XHR9XG5cblx0XHQmLmlzLWFyY2hpdmVkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0fVxuXG5cdFx0LyogQSBjb250YWN0IGxlbnMgYm94IG9yZGVyZWQgaW4gZm9yIHRoZSBwYXRpZW50OiBleHBlY3RlZCwgc28gbmV1dHJhbCAqL1xuXHRcdCYuaXMtb3JkZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQuaW52LXNob3J0ZmFsbCB7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIEJhY2tvcmRlcnNcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiBQZW5kaW5nIC0+IE9yZGVyZWQgLT4gQXJyaXZlZCwgYXMgb25lIHNlZ21lbnRlZCBjb250cm9sOyB0aGUgc3RlcHMgYmVmb3JlIHRoZSBjdXJyZW50IG9uZSBhcmUgZG9uZSAqL1xuXHQuaW52LWJhY2tvcmRlcnMge1xuXHRcdC5pbnYtYmFja29yZGVyLXN0YXR1cyB7XG5cdFx0XHRtaW4td2lkdGg6IDI1MHB4O1xuXHRcdH1cblxuXHRcdC5pbnYtY2xvc2Utcm93ID4gdGQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtYm8tc3RlcHMge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0bWFyZ2luLWJvdHRvbTogNHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdH1cblxuXHQuaW52LWJvLXN0ZXAge1xuXHRcdHBhZGRpbmc6IDRweCAxMHB4O1xuXHRcdGJvcmRlcjogMDtcblx0XHRib3JkZXItbGVmdDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdGJvcmRlci1sZWZ0OiAwO1xuXHRcdH1cblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRwYWxlQmx1ZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmLmlzLWRvbmUge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCYuaXMtY3VycmVudCB7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXG5cdFx0JltkaXNhYmxlZF0ge1xuXHRcdFx0Y3Vyc29yOiBwcm9ncmVzcztcblx0XHR9XG5cdH1cblxuXHQuaW52LXN0YXR1cy5pcy1vcmRlcmVkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG5cblx0Lmludi1iby1jb25maXJtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXG5cdFx0c3BhbiB7XG5cdFx0XHRmbGV4OiAxIDEgMjQwcHg7XG5cdFx0fVxuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRmbGV4OiAxIDEgMjIwcHg7XG5cdFx0XHRoZWlnaHQ6IDMwcHg7XG5cdFx0fVxuXG5cdFx0LmJ0biB7XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQuaW52LWJvLWhpbnQge1xuXHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIEl0ZW0gZGV0YWlsIChhbiBvcGVuIFN0b2NrIHJvdylcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuaW52LWRldGFpbC1yb3cgPiB0ZCB7XG5cdFx0cGFkZGluZzogNHB4IDEycHggMTRweCAxNnB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRwYWxlQmx1ZTtcblx0fVxuXG5cdC5pbnYtZGV0YWlsIHtcblx0XHQuaW52LW11dGVkLFxuXHRcdC5pbnYtZXJyb3ItdGV4dCB7XG5cdFx0XHRtYXJnaW46IDhweCAwO1xuXHRcdH1cblx0fVxuXG5cdC8qIEFsc28gYW4gLmludi10YWJsZSwgc28gdGhlc2UgbWF0Y2ggaXRzIHNlbGVjdG9ycyB0byB3aW4gYnkgb3JkZXIgKi9cblx0Lmludi1zdWJ0YWJsZSB7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblxuXHRcdD4gdGhlYWQgPiB0ciA+IHRoLFxuXHRcdD4gdGJvZHkgPiB0ciA+IHRoLFxuXHRcdD4gdGJvZHkgPiB0ciA+IHRkIHtcblx0XHRcdHBhZGRpbmc6IDhweCAxMHB4O1xuXHRcdH1cblxuXHRcdD4gdGhlYWQgPiB0ciA+IHRoIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cdH1cblxuXHQvKiBBIGNvbnRhY3QgbGVuczogd2hhdCBpdCBpcywgb3ZlciBpdHMgYm94IHByZXNjcmlwdGlvbnMgKi9cblx0Lmludi1sZW5zLWRlc2NyaXB0aW9uIHtcblx0XHRtYXJnaW46IDAgMCA4cHg7XG5cdH1cblxuXHQvKiBDb250YWN0IGxlbnMgYm94ZXMgYXMgcm93cyBvZiBzbWFsbCBpbnB1dHMgLSBhIG5ldyBsZW5zJ3MsIG9yIG9uZXMgYmVpbmcgYWRkZWQgdG8gYSBsZW5zIC0gc2l6ZWRcblx0ICAgdG8gdGhlIGNhcmQsIHRoZSBiYXJjb2RlIHRha2luZyB3aGF0J3MgbGVmdCAqL1xuXHQuaW52LWJveC10YWJsZSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cblx0XHQ+IHRoZWFkID4gdHIgPiB0aCxcblx0XHQ+IHRib2R5ID4gdHIgPiB0ZCB7XG5cdFx0XHRwYWRkaW5nOiA0cHggNHB4O1xuXHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHR9XG5cblx0XHQ+IHRoZWFkID4gdHIgPiB0aCB7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRoZWlnaHQ6IDMycHg7XG5cdFx0XHRwYWRkaW5nOiA0cHggNnB4O1xuXHRcdH1cblxuXHRcdD4gdGJvZHkgPiB0ciA+IHRkOm50aC1jaGlsZCgtbiArIDgpIHtcblx0XHRcdHdpZHRoOiA5JTtcblx0XHR9XG5cdH1cblxuXHQuaW52LWFkZC1ib3hlcyB7XG5cdFx0bWFyZ2luLXRvcDogMTJweDtcblx0XHRwYWRkaW5nOiAxMnB4O1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cblx0XHRoNSB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdC5pbnYtZWRpdG9yLWFjdGlvbnMge1xuXHRcdFx0bWFyZ2luLXRvcDogOHB4O1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtZGV0YWlsLWZvb3RlciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luLXRvcDogMTBweDtcblxuXHRcdC5pbnYtc3BhY2VyIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0fVxuXG5cdFx0Lmludi1tdXRlZCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0LmJ0biB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0Lmludi1kZXRhaWwtbWV0YSB7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LyogVGhlIGFyY2hpdmUgY29uZmlybWF0aW9uIHJlcGxhY2VzIHRoZSBidXR0b24gaW4gcGxhY2UsIHNvIGl0IGlzIHJlYWQgaW4gY29udGV4dCAqL1xuXHQuaW52LWNvbmZpcm0ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogOHB4O1xuXHRcdHBhZGRpbmc6IDZweCAxMHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yKCRkYW5nZXIgYWxwaGEoMjUlKSk7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1lcnJvci1iZztcblx0XHRjb2xvcjogJG5vdGljZS1lcnJvcjtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgU2lkZSBwYW5lbCAob25lIHZhcmlhdGlvbidzIHN0b2NrIGFuZCBkZXRhaWxzKVxuXHQvKiBBIGNvbHVtbiBiZXNpZGUgdGhlIHBhbmUncyBjb250ZW50LCBuZXZlciBvdmVyIGl0OiB0aGUgcGFuZSBsYXlzIGl0c1xuXHQvKiBjaGlsZHJlbiBvdXQgaW4gYSByb3cgaGVyZSwgc28gb3BlbmluZyB0aGUgcGFuZWwgbmFycm93cyB0aGUgdGFibGVcblx0LyogcmF0aGVyIHRoYW4gaGlkaW5nIHBhcnQgb2YgaXQuIEVhY2ggc2Nyb2xscyBvbiBpdHMgb3duLlxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5zZXR0aW5ncy1wYW5lIHtcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXG5cdFx0PiAuc2V0dGluZ3MtcGFuZS1pbm5lciB7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0fVxuXHR9XG5cblx0LyogV2hhdCBpcyBsZWZ0IG9mIHRoZSB0YWJsZSBkcm9wcyBpdHMgc2Vjb25kYXJ5IGNvbHVtbnM7IHRoZSBvcGVuIGxpbmUncyBhcmUgaW4gdGhlIHBhbmVsICovXG5cdC5zZXR0aW5ncy1wYW5lLmhhcy1wYW5lbCAuaW52LXRhYmxlIC5pbnYtY29sLW9wdGlvbmFsLFxuXHQuc2V0dGluZ3MtcGFuZS5oYXMtcGFuZWwgLmludi10YWJsZSAuaW52LWNvbC1zZWNvbmRhcnkge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQuc2V0dGluZ3MtcGFuZSA+IC5pbnYtcGFuZWwge1xuXHRcdGZsZXg6IDAgMCBjbGFtcCgzMDBweCwgMzYlLCA0MDBweCk7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG5cblx0Lmludi1wYW5lbC1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRnYXA6IDEycHg7XG5cdFx0cGFkZGluZzogMThweCAyMHB4IDE0cHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblxuXHRcdGg0IHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTdweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtcGFuZWwtZXllYnJvdyB7XG5cdFx0bWFyZ2luOiAwIDAgMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0fVxuXG5cdC5pbnYtcGFuZWwtYm9keSB7XG5cdFx0ZmxleDogMTtcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHRcdHBhZGRpbmc6IDE2cHggMjBweCAyNHB4O1xuXG5cdFx0LnNldHRpbmdzLW5vdGljZSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxNHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBmaWd1cmVzIHRoZSBmb3JtcyBiZWxvdyBjaGFuZ2UsIHJlYWQgYXQgYSBnbGFuY2UgKi9cblx0Lmludi1wYW5lbC1zdW1tYXJ5IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogMjJweDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMTJweCAxNHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmV5LW1vZGFsLWhlYWRlcjtcblxuXHRcdGR0IHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDRweDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0fVxuXG5cdFx0ZGQge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtcGFuZWwtcXR5IHtcblx0XHRmb250LXNpemU6IDI0cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjE7XG5cdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHR9XG5cblx0Lmludi1wYW5lbC1xdHktc20ge1xuXHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHR9XG5cblx0Lmludi1wYW5lbC1zZWN0aW9uIHtcblx0XHRtYXJnaW4tdG9wOiAxOHB4O1xuXHRcdHBhZGRpbmctdG9wOiAxNnB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cblx0XHRoNSB7XG5cdFx0XHRtYXJnaW46IDAgMCA0cHg7XG5cdFx0XHRmb250LXNpemU6IDEzLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdFx0fVxuXG5cdFx0LmNvbnRyb2wtbGFiZWwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW46IDEycHggMCA0cHg7XG5cdFx0fVxuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdH1cblxuXHQuaW52LW9wdGlvbmFsIHtcblx0XHRtYXJnaW4tbGVmdDogNHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHR9XG5cblx0Lmludi1zdGVwcGVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cblx0XHQuaW52LWljb24tYnRuIHtcblx0XHRcdGZsZXg6IDAgMCBhdXRvO1xuXHRcdH1cblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0ZmxleDogMCAwIDkwcHg7XG5cdFx0XHR3aWR0aDogOTBweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0fVxuXG5cdFx0LyogVGhlIOKIkiAvICsgYnV0dG9ucyBiZXNpZGUgaXQgZG8gdGhlIHN0ZXBwaW5nLCBzbyB0aGUgYnJvd3NlcidzIG93biBzcGlubmVyIGFycm93cyBhcmUgaGlkZGVuLlxuXHRcdCAgIE9ubHkgb24gdGhlIG51bWJlciBib3ggLSB0aGUgdW5pdHMgc2VsZWN0IGJlc2lkZSBpdCBrZWVwcyBpdHMgZHJvcGRvd24gYXJyb3cuICovXG5cdFx0aW5wdXRbdHlwZT1cIm51bWJlclwiXSB7XG5cdFx0XHQtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcblx0XHRcdGFwcGVhcmFuY2U6IHRleHRmaWVsZDtcblxuXHRcdFx0Jjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblx0XHRcdCY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuXHRcdFx0XHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sLmludi1zdGVwcGVyLXVuaXQge1xuXHRcdFx0ZmxleDogMSAxIGF1dG87XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0fVxuXHR9XG5cblx0Lmludi1wYW5lbC1oaW50IHtcblx0XHRtYXJnaW46IDZweCAwIDA7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuXHRcdHN0cm9uZyB7XG5cdFx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC8qIEEgc2Vjb25kYXJ5IGFjdGlvbiB0aGF0IGZpbGxzIGEgZm9ybSBpbiwgcmF0aGVyIHRoYW4gc3VibWl0dGluZyBhbnl0aGluZyAqL1xuXHQuaW52LWxpbmstYnRuIHtcblx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdH1cblxuXHQuaW52LXBhbmVsLWZpZWxkcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDEycHg7XG5cblx0XHQ+IGRpdiB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtbW9uby1pbnB1dCB7XG5cdFx0Zm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIiwgbW9ub3NwYWNlO1xuXHR9XG5cblx0LyogRWFjaCBmb3JtJ3Mgc2F2ZSwgY2VudHJlZCB1bmRlciBpdHMgZmllbGRzLCB3aXRoIGFueXRoaW5nIGl0IG5lZWRzIHRvIHNheSBiZW5lYXRoIGl0ICovXG5cdC5pbnYtcGFuZWwtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luLXRvcDogMThweDtcblxuXHRcdC5pbnYtbXV0ZWQge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBwYW5lbCdzIHByaW1hcnkgYWN0aW9uOiBhIHNvbGlkLCBzcXVhcmVyIGJ1dHRvbiByYXRoZXIgdGhhbiB0aGUgcGlsbCB1c2VkIGluIGZvcm0gZm9vdGVycyAqL1xuXHQuaW52LXBhbmVsLXNhdmUge1xuXHRcdG1pbi13aWR0aDogMjAwcHg7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDlweCAyOHB4O1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDZweCBjb2xvcigkbmF2eSBhbHBoYSgyNSUpKTtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZGFya05hdnk7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblxuXHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdH1cblx0fVxuXG5cdC8qIE5ldyBpdGVtIGZvcm0gYWN0aW9ucyAqL1xuXHQuaW52LWVkaXRvci1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luLXRvcDogMTJweDtcblxuXHRcdC5hY3Rpb24taGludCB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHR9XG5cblx0XHQuaW52LXNwYWNlciB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdH1cblxuXHRcdC5idG4ge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0bWF4LXdpZHRoOiAyMjBweDtcblx0XHR9XG5cdH1cblxuXHQvKiBOZXcgaXRlbSBmb3JtOiBvbmUgY2FyZCBwZXIgdmFyaWF0aW9uICovXG5cdC5pbnYtaXRlbS1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRnYXA6IDEycHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0fVxuXG5cdC5pbnYtbmV3LXZhcmlhdGlvbiB7XG5cdFx0bWFyZ2luLXRvcDogMTRweDtcblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQYXRpZW50IGludm9pY2luZyAoTlopXG4vKiBCdWlsdCBvbiB0aGUgc2V0dGluZ3Mgc2hlbGwgKF9zZXR0aW5ncy5jc3MpIGxpa2UgdGhlIGNhbGVuZGFyLCBhbmRcbi8qIGxhaWQgb3V0IGxpa2UgYSBtYWlsIGNsaWVudDogdGhlIGludm9pY2VzIGFzIGEgc21hbGwgdGFibGUgb24gdGhlXG4vKiBsZWZ0LCB0aGUgb25lIG9wZW4gZHJhd24gYXMgYSBwcmludGVkIGludm9pY2Ugb24gdGhlIHJpZ2h0LCB3aXRoIGFcbi8qIGNvbXBhY3QgcGF5bWVudCBjYXJkIGJlc2lkZSBpdCAoYXMgdGhlIGludmVudG9yeSdzIHN0b2NrIGFkanVzdG1lbnQpLlxuLyogVGhlIGVkaXRvcidzIGxpbmUgdGFibGUsIHN0YXR1cyBwaWxscywgbm90aWNlcyBhbmQgY29uZmlybXMgY29tZVxuLyogZnJvbSBfaW52ZW50b3J5LmNzcywgd2hpY2ggbGlzdHMgdGhpcyBzaGVsbCBhbG9uZ3NpZGUgaXRzIG93bi5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogT25seSBhIGBmcm9tYCwgc28gaXQgZmFkZXMgdG8gd2hhdGV2ZXIgYmFja2dyb3VuZCB0aGUgZWxlbWVudCBoYXMgLSBhIHNlbGVjdGVkIHJvdydzIGluY2x1ZGVkICovXG5Aa2V5ZnJhbWVzIGludm9pY2luZy1mcmVzaCB7XG5cdGZyb20ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRncmVlbiBhbHBoYSgyNiUpKTtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIGludm9pY2luZy1wb3Age1xuXHQwJSxcblx0MTAwJSB7XG5cdFx0dHJhbnNmb3JtOiBzY2FsZSgxKTtcblx0fVxuXG5cdDQwJSB7XG5cdFx0dHJhbnNmb3JtOiBzY2FsZSgxLjE0KTtcblx0fVxufVxuXG4uaW52b2ljaW5nLWRpYWxvZyB7XG5cdG1pbi13aWR0aDogODglO1xuXHR3aWR0aDogODglO1xuXHRoZWlnaHQ6IDkwdmg7XG5cdG1heC1oZWlnaHQ6IDk0dmg7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlci10b3Atd2lkdGg6IDA7XG5cbn1cblxuLnNldHRpbmdzLXNoZWxsLmludm9pY2luZyB7XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFNoYXJlZCBjb250cm9scyAoYXMgdGhlIGNhbGVuZGFyJ3MgdG9vbGJhcilcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuY2FsLWJ0biB7XG5cdFx0aGVpZ2h0OiAzNHB4O1xuXHRcdHBhZGRpbmc6IDAgMTNweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdC5mYSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDVweDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMCwgNTMsIDIxMCwgMC4xNSk7XG5cdFx0fVxuXG5cdFx0JltkaXNhYmxlZF0ge1xuXHRcdFx0b3BhY2l0eTogMC40NTtcblx0XHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdFx0fVxuXG5cdFx0LmZhLWNoZXZyb24tbGVmdCB7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0fVxuXHR9XG5cblx0LmNhbC1pY29uLWJ0biB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0d2lkdGg6IDM0cHg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cblx0XHQuZmEge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNpbmctc2VhcmNoIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cblx0XHQ+IGkge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogMTFweDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdGhlaWdodDogMzRweDtcblx0XHRcdHBhZGRpbmctbGVmdDogMzFweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDI4cHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2luZy1zZWFyY2gtY2xlYXIge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0cmlnaHQ6IDZweDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0d2lkdGg6IDIycHg7XG5cdFx0XHRoZWlnaHQ6IDIycHg7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogLmJ0bi1jYW5jZWwgYW5kIC5idG4tbmF2eSBmaWxsIHRoZWlyIGNvbnRhaW5lciBmb3IgZm9ybSBmb290ZXJzOyB0aGVzZSBzaXplIHRvIHRoZWlyIGxhYmVsICovXG5cdC5pbnZvaWNpbmctbWluaS1idG4ge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogNHB4IDEycHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHR9XG5cblx0LnNldHRpbmdzLW5vdGljZSB7XG5cdFx0Lm5vdGljZS10ZXh0IHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0fVxuXG5cdFx0Lm5vdGljZS1kaXNtaXNzIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRcdHBhZGRpbmc6IDAgMnB4O1xuXHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0XHRvcGFjaXR5OiAwLjY7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0XHR9XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIEEgZHJhZnQgaXMgdGhlIHByYWN0aWNlJ3Mgb3duIHdvcmtpbmcgY29weSAtIG5hdnksIG5vdCB0aGUgZ3JleSBvZiBzb21ldGhpbmcgZmluaXNoZWQgd2l0aCAqL1xuXHQuaW52LXN0YXR1cy5pcy1kcmFmdCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQuaW52b2ljZS1vdmVyZHVlLXRleHQge1xuXHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgTGlzdCBjb2x1bW46IHRoZSBwYXRpZW50LCB0aGVpciBiYWxhbmNlLCBhbmQgdGhlaXIgaW52b2ljZXNcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuaW52b2ljaW5nLWxpc3Qge1xuXHRcdGZsZXg6IDAgMCAzMjBweDtcblx0XHR3aWR0aDogMzIwcHg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0fVxuXG5cdC5pbnZvaWNpbmctbGlzdC1oZWFkIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDE4cHggMTZweCAxNHB4O1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXHR9XG5cblx0Lmludm9pY2luZy1wYXRpZW50IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMnB4O1xuXHR9XG5cblx0Lmludm9pY2luZy1wYXRpZW50LXRleHQge1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5pbnZvaWNpbmctcGF0aWVudC1uYW1lIHtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHR9XG5cblx0Lmludm9pY2luZy1wYXRpZW50LXN1YiB7XG5cdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0Lmludm9pY2luZy1saXN0LXRvb2xzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdH1cblxuXHQuaW52b2ljaW5nLW5ldy1idG4ge1xuXHRcdGZsZXg6IDE7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogOHB4IDE0cHg7XG5cblx0XHQmLmlzLWN1cnJlbnQge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMCwgNTMsIDIxMCwgMC4yKTtcblx0XHR9XG5cdH1cblxuXHQvKiBPd2luZyAvIG92ZXJkdWUgLyBwYWlkLCBzaWRlIGJ5IHNpZGUgKi9cblx0Lmludm9pY2luZy1iYWxhbmNlIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogMTZweDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMTBweCAxNnB4O1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmYWZiZmU7XG5cdH1cblxuXHQuaW52b2ljaW5nLXN0YXQge1xuXHRcdG1pbi13aWR0aDogMDtcblxuXHRcdCYuaXMtb3ZlcmR1ZSAuaW52b2ljaW5nLXN0YXQtbGFiZWwsXG5cdFx0Ji5pcy1vdmVyZHVlIC5pbnZvaWNpbmctc3RhdC12YWx1ZSB7XG5cdFx0XHRjb2xvcjogJG5vdGljZS1lcnJvcjtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljaW5nLXN0YXQtbGFiZWwge1xuXHRcdG1hcmdpbi1ib3R0b206IDFweDtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC5pbnZvaWNpbmctc3RhdC12YWx1ZSB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDEzLjVweDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdCYuaXMtemVybyB7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHR9XG5cblx0XHQmLmlzLXBhaWQge1xuXHRcdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2luZy1saXN0LWl0ZW1zIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblxuXHRcdCY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcblx0XHRcdHdpZHRoOiA2cHg7XG5cdFx0fVxuXG5cdFx0Jjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjEpO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHR9XG5cdH1cblxuXHQvKiBBbiAuaW52LXRhYmxlLCB0aWdodGVuZWQgZm9yIHRoZSBuYXJyb3cgY29sdW1uOiBldmVyeSByb3cgYSBjbGljayB0YXJnZXQsIGFzIHRoZSBpbnZlbnRvcnkncy5cblx0ICAgVHdvIGNvbHVtbnMgLSB0aGUgZGF0ZSBvdmVyIGl0cyBtYWluIGl0ZW0sIHRoZSB0b3RhbCBvdmVyIGl0cyBzdGF0dXMgLSBmaXhlZCBzbyB0aGUgaXRlbSBpcyBjdXRcblx0ICAgc2hvcnQgcmF0aGVyIHRoYW4gd2lkZW5pbmcgdGhlIGxpc3QuICovXG5cdC5pbnZvaWNlLWxpc3QtdGFibGUge1xuXHRcdHRhYmxlLWxheW91dDogZml4ZWQ7XG5cblx0XHQuaW52b2ljZS1saXN0LXRvdGFsLWNvbCB7XG5cdFx0XHR3aWR0aDogMTEycHg7XG5cdFx0fVxuXG5cdFx0PiB0Ym9keSA+IHRyID4gdGgsXG5cdFx0PiB0Ym9keSA+IHRyID4gdGQge1xuXHRcdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0XHR9XG5cblx0XHQ+IHRoZWFkID4gdHIgPiB0aCxcblx0XHQ+IHRib2R5ID4gdHIgPiB0aCxcblx0XHQ+IHRib2R5ID4gdHIgPiB0ZCB7XG5cdFx0XHRwYWRkaW5nOiA4cHggMTBweDtcblx0XHR9XG5cblx0XHQ+IHRoZWFkID4gdHIgPiB0aCB7XG5cdFx0XHRwb3NpdGlvbjogc3RpY2t5O1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0ei1pbmRleDogMTtcblx0XHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdH1cblxuXHRcdD4gdGhlYWQgPiB0ciA+IDpmaXJzdC1jaGlsZCxcblx0XHQ+IHRib2R5ID4gdHIgPiA6Zmlyc3QtY2hpbGQge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAxNnB4O1xuXHRcdH1cblxuXHRcdD4gdGhlYWQgPiB0ciA+IDpsYXN0LWNoaWxkLFxuXHRcdD4gdGJvZHkgPiB0ciA+IDpsYXN0LWNoaWxkIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDE2cHg7XG5cdFx0fVxuXG5cdFx0PiB0Ym9keSA+IHRyID4gdGgge1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQuaW52LXN0YXR1cyB7XG5cdFx0XHRwYWRkaW5nOiAxcHggN3B4O1xuXHRcdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtbGlzdC1hbW91bnQgLmludi1zdGF0dXMge1xuXHRcdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdH1cblxuXHRcdC8qIFdoaWxlIHRoZSBlZGl0b3IgaXMgb3BlbiB0aGUgbGlzdCBpcyBzaG93biBidXQgbm90IHVzZWQgKi9cblx0XHQmLmlzLWxvY2tlZCA+IHRib2R5ID4gdHIge1xuXHRcdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHRcdFx0b3BhY2l0eTogMC42O1xuXG5cdFx0XHQmOmhvdmVyID4gdGQsXG5cdFx0XHQmOmhvdmVyID4gdGgge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiBDZW50cmVkLCB3aXRoIGFueSBpY29uIGtlcHQgYmVzaWRlIGl0cyB3b3JkcyByYXRoZXIgdGhhbiBwdXNoZWQgdG8gdGhlIG90aGVyIGVkZ2UgKi9cblx0Lmludm9pY2UtbGlzdC1pdGVtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogNHB4O1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRtYXJnaW4tdG9wOiAzcHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQuaW52b2ljZS1saXN0LWl0ZW0tbmFtZSB7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC5pbnZvaWNlLWxpc3QtaXRlbS1tb3JlIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0Lmludm9pY2luZy1saXN0LW5vdGUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0cGFkZGluZzogMThweCAxNnB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHQuZmEge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XG5cdFx0fVxuXG5cdFx0Ji5pcy1lcnJvciB7XG5cdFx0XHRjb2xvcjogJG5vdGljZS1lcnJvcjtcblx0XHR9XG5cdH1cblxuXHQvKiBXaG8gaW52b2ljZXMgZ28gdG8sIHRoZSBlbWFpbCB0aGV5IGFyZSBzZW50IHRvLCBhbmQgQUNDICovXG5cdC5pbnZvaWNpbmctbGlzdC1mb290IHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiA4cHg7XG5cdFx0cGFkZGluZzogMTJweCAxNnB4IDE0cHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWYxZjc7XG5cblx0XHQuZm9vdGVyLWxhYmVsIHtcblx0XHRcdGZvbnQtc2l6ZTogOXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHR9XG5cblx0XHQubGluay1hY3Rpb24ge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljaW5nLXhlcm8tcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogMTBweDtcblxuXHRcdD4gLmZhIHtcblx0XHRcdHdpZHRoOiAxNHB4O1xuXHRcdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0fVxuXG5cdFx0PiAuZmEtbGluayB7XG5cdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljaW5nLXhlcm8tdGV4dCB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdH1cblxuXHQvKiBUaGUgbGlua2VkIGNvbnRhY3QgaXMgYXJjaGl2ZWQgaW4gWGVybzoga2VwdCBjb21wYWN0IHRvIGZpdCB0aGUgcmFpbCAqL1xuXHQuc2V0dGluZ3Mtbm90aWNlLmludm9pY2luZy1hcmNoaXZlZCB7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogOHB4IDEwcHg7XG5cdFx0bWFyZ2luOiAxMHB4IDAgMDtcblx0XHRwYWRkaW5nOiAxMHB4IDEycHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHR9XG5cblx0LyogV3JhcHMgb250byBmdXJ0aGVyIGxpbmVzIHJhdGhlciB0aGFuIGJlaW5nIGN1dCBvZmYgLSBhIGxvbmcgbmFtZSwgb3Igb25lIGxvbmcgd29yZCwgc3RpbGwgc2hvd3MgaW4gZnVsbCAqL1xuXHQuaW52b2ljaW5nLXhlcm8tY29udGFjdCB7XG5cdFx0bWFyZ2luLXRvcDogMXB4O1xuXHRcdG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdH1cblxuXHQuaW52b2ljaW5nLW5vLWVtYWlsIHtcblx0XHRtYXJnaW4tdG9wOiAxcHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAjODc4YmEwO1xuXHR9XG5cblx0Lmludm9pY2luZy1lbWFpbC1mb3JtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luLWxlZnQ6IDI0cHg7XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdGhlaWdodDogMzJweDtcblx0XHRcdHBhZGRpbmc6IDVweCAxMHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2luZy1lbWFpbC1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0Z2FwOiA2cHg7XG5cdH1cblxuXHQuaW52b2ljaW5nLWVtYWlsLWVycm9yIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHR9XG5cblx0Lmludm9pY2Utc2VuZC1lbWFpbCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1heC13aWR0aDogNDIwcHg7XG5cdFx0bWFyZ2luLXRvcDogMTBweDtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdGhlaWdodDogMzJweDtcblx0XHRcdHBhZGRpbmc6IDVweCAxMHB4O1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNpbmcteGVyby1jb25maXJtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdG1hcmdpbi10b3A6IDhweDtcblxuXHRcdHNwYW4ge1xuXHRcdFx0ZmxleDogMSAxIDEwMCU7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2luZy1hY2MtbGluayB7XG5cdFx0YWxpZ24tc2VsZjogZmxleC1zdGFydDtcblx0XHRtYXJnaW4tbGVmdDogMjRweDtcblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBSZWFkaW5nIHBhbmVcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuc2V0dGluZ3MtcGFuZS1pbm5lciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR9XG5cblx0LyogVGhlIGNhbGVuZGFyJ3MgbG9hZGluZyBsaW5lLCBhY3Jvc3MgdGhlIHRvcCBvZiB0aGUgcGFuZSB3aGlsZSBhIHJlcXVlc3QgaXMgb3V0ICovXG5cdC5pbnZvaWNpbmctbG9hZGluZyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdHJpZ2h0OiAwO1xuXHRcdGhlaWdodDogM3B4O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0ei1pbmRleDogNjtcblx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblxuXHRcdHNwYW4ge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0bGVmdDogLTQwJTtcblx0XHRcdHdpZHRoOiA0MCU7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHRcdGFuaW1hdGlvbjogY2FsZW5kYXItbG9hZGluZyAxLjFzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNpbmctcmVhZGVyLWVtcHR5IHtcblx0XHRmbGV4OiAxO1xuXHRcdHBhZGRpbmc6IDI4cHg7XG5cblx0XHQuYnRuIHtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0bWFyZ2luOiAxOHB4IGF1dG8gMDtcblx0XHR9XG5cblx0XHQvKiBUaGUgYnV0dG9uJ3MgaWNvbiwgbm90IHRoZSBlbXB0eSBzdGF0ZSdzIGxhcmdlIG9uZSAoLnNldHRpbmdzLWVtcHR5IGkpICovXG5cdFx0LnNldHRpbmdzLWVtcHR5IC5idG4gaSB7XG5cdFx0XHRtYXJnaW46IDAgNnB4IDAgMDtcblx0XHRcdGZvbnQtc2l6ZTogaW5oZXJpdDtcblx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdH1cblx0fVxuXG5cdC8qIFdoYXQgY2FuIGJlIGRvbmUgd2l0aCB0aGUgb3BlbiBpbnZvaWNlLCBhbG9uZyB0aGUgdG9wIG9mIHRoZSBwYW5lICovXG5cdC5pbnZvaWNpbmctcmVhZGVyLXRvb2xzIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRwYWRkaW5nOiAxNHB4IDI4cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdH1cblxuXHQuaW52b2ljZS1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogOHB4O1xuXHR9XG5cblx0Lmludm9pY2UtYWN0aW9ucy1kaXZpZGVyIHtcblx0XHR3aWR0aDogMXB4O1xuXHRcdGhlaWdodDogMjJweDtcblx0XHRtYXJnaW46IDAgNHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmV5LWJvcmRlci1saWdodDtcblx0fVxuXG5cdC5pbnZvaWNlLWRlbGV0ZS1idG46bm90KFtkaXNhYmxlZF0pOmhvdmVyIHtcblx0XHRib3JkZXItY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXG5cdFx0LmZhIHtcblx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGludm9pY2UsIHdpdGggdGhlIHBheW1lbnQgY2FyZCBiZXNpZGUgaXQgd2hpbGUgYW55dGhpbmcgaXMgb3dpbmcgKi9cblx0Lmludm9pY2UtcmVhZGluZyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDIwcHg7XG5cdH1cblxuXHQvKiBUaGUgaW52b2ljZSdzIGNvbHVtbiwgd2hpY2ggc2V0cyB0aGUgaW52b2ljZSdzIHdpZHRoLiBJdHMgbWVzc2FnZXMgYW5kIGNvbmZpcm1hdGlvbnMgc2l0IGluIGl0IHRvbyxcblx0ICAgc28gbm9uZSBpcyBldmVyIHdpZGVyIHRoYW4gdGhlIGludm9pY2UgLSB3aXRoIHRoZSBwYXltZW50IGNhcmQgYmVzaWRlIGl0IG9yIG5vdC4gKi9cblx0Lmludm9pY2UtcmVhZGluZy1tYWluIHtcblx0XHRmbGV4OiAxIDEgYXV0bztcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0bWF4LXdpZHRoOiA4MjBweDtcblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBQYXltZW50IGNhcmQgLSBhcyBjb21wYWN0IGFzIHRoZSBpbnZlbnRvcnkncyBzdG9jayBhZGp1c3RtZW50OlxuXHQvKiB0aGUgYW1vdW50LCBob3cgaXQgd2FzIHBhaWQsIHdoZXJlIGl0IHdlbnQsIGFuZCBvbmUgYnV0dG9uXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0Lmludm9pY2UtcGF5LWNhcmQge1xuXHRcdHBvc2l0aW9uOiBzdGlja3k7XG5cdFx0dG9wOiAwO1xuXHRcdGZsZXg6IDAgMCAyNjBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiA4cHg7XG5cdFx0cGFkZGluZzogMTZweCAxNnB4IDE0cHg7XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdH1cblxuXHRcdC5pbnYtcGFuZWwtc2F2ZSB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1wYXktaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tYm90dG9tOiAycHg7XG5cblx0XHRoNSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmb250LXNpemU6IDEzLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdFx0fVxuXG5cdFx0c3BhbiB7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLXBheS1hbW91bnQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblxuXHRcdC5mZWUtaW5wdXQge1xuXHRcdFx0ZmxleDogMTtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHRcdH1cblxuXHRcdC5jaGlwLXNlbGVjdCB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdHBhZGRpbmc6IDZweCAxMnB4O1xuXHRcdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2UtcGF5LWhpbnQge1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cblx0Lmludm9pY2UtY29uZmlybSB7XG5cdFx0YiB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbi1ib3R0b206IDJweDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1jb25maXJtLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdH1cblxuXHQuaW52b2ljZS1jb25maXJtLWRlbGV0ZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFRoZSBwcmludGVkIGludm9pY2UgLSBhIHNoZWV0IG9mIHBhcGVyLCBhZnRlciB0aGUgbGVucyBkaXNwZW5zaW5nXG5cdC8qIGludm9pY2UgKC5sZW5zLWludm9pY2UtZG9jKVxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5pbnZvaWNlLWRvYyB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAzNHB4IDM4cHggMzBweDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgxMCwgMzcsIDY0LCAwLjA4KTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblxuXHRcdCY6OmJlZm9yZSB7XG5cdFx0XHRjb250ZW50OiAnJztcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHRyaWdodDogMDtcblx0XHRcdHRvcDogMDtcblx0XHRcdGhlaWdodDogNXB4O1xuXHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAkbmF2eSAwJSwgJGN5YW4gMTAwJSk7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2UtZG9jLWhlYWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGdhcDogMjBweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMjBweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZjFmNztcblx0fVxuXG5cdC5pbnZvaWNlLWRvYy1wcmFjdGljZSB7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQuaW52b2ljZS1kb2MtcHJhY3RpY2Utc3ViIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDJweCAxMnB4O1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQuaW52b2ljZS1kb2MtdGl0bGUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XG5cdFx0Z2FwOiA2cHg7XG5cdH1cblxuXHQuaW52b2ljZS1kb2Mtd29yZCB7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMjJweDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4xMmVtO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC5pbnZvaWNlLWRvYy1udW1iZXIge1xuXHRcdG1hcmdpbi10b3A6IC00cHg7XG5cdFx0Zm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIiwgbW9ub3NwYWNlO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC5pbnZvaWNlLWRvYy1tZXRhIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDE0cHggMzRweDtcblx0XHRtYXJnaW46IDIwcHggMCAyNHB4O1xuXG5cdFx0ZHQge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHR9XG5cblx0XHRkZCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXG5cdFx0XHRzbWFsbCB7XG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogVXAgdG8gMjU1IGNoYXJhY3RlcnMgdHlwZWQgaW4gWGVybywgc28gaXQgd3JhcHMgcmF0aGVyIHRoYW4gcHVzaGluZyB0aGUgZGF0ZXMgb2ZmIHRoZSBzaGVldCAqL1xuXHQuaW52b2ljZS1kb2MtcmVmZXJlbmNlIHtcblx0XHRmbGV4OiAwIDEgMjIwcHg7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuXHR9XG5cblx0Lmludm9pY2UtZG9jLXRvIHtcblx0XHRmbGV4OiAxIDEgMjIwcHg7XG5cblx0XHRkZCB7XG5cdFx0XHRiIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHR9XG5cblx0XHRcdHNwYW4ge1xuXHRcdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1kb2MtbGluZXMge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cblx0XHQ+IHRoZWFkID4gdHIgPiB0aCB7XG5cdFx0XHRwYWRkaW5nOiA4cHggMTBweDtcblx0XHRcdGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAkZGFya05hdnk7XG5cdFx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdD4gdGJvZHkgPiB0ciA+IHRoLFxuXHRcdD4gdGJvZHkgPiB0ciA+IHRkIHtcblx0XHRcdHBhZGRpbmc6IDExcHggMTBweDtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXHRcdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0fVxuXG5cdFx0PiB0Ym9keSA+IHRyID4gdGgge1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHR9XG5cblx0XHQ+IHRoZWFkID4gdHIgPiAubnVtLFxuXHRcdD4gdGJvZHkgPiB0ciA+IC5udW0ge1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHR9XG5cblx0XHQ+IHRoZWFkID4gdHIgPiB0aDpmaXJzdC1jaGlsZCxcblx0XHQ+IHRib2R5ID4gdHIgPiB0aDpmaXJzdC1jaGlsZCB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0fVxuXG5cdFx0PiB0aGVhZCA+IHRyID4gOmxhc3QtY2hpbGQsXG5cdFx0PiB0Ym9keSA+IHRyID4gOmxhc3QtY2hpbGQge1xuXHRcdFx0cGFkZGluZy1yaWdodDogMDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1kb2MtaXRlbSB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXHR9XG5cblx0Lmludm9pY2UtZG9jLWNvZGUge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0Lmludi1tb25vIHtcblx0XHRmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBtb25vc3BhY2U7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHR9XG5cblx0Lmludm9pY2UtZG9jLXRheCB7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQuaW52b2ljZS1kb2MtdG90YWxzIHtcblx0XHR3aWR0aDogMzIwcHg7XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdG1hcmdpbjogMThweCAwIDAgYXV0bztcblx0fVxuXG5cdC8qIFNoYXJlZCBieSB0aGUgcHJpbnRlZCBpbnZvaWNlJ3MgdG90YWxzIGFuZCB0aGUgZWRpdG9yJ3Mgc3VtbWFyeSAqL1xuXHQuaW52b2ljZS10b3RhbC1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiA0cHggMDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cblx0XHQmLm11dGVkIHtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0XHQmLnRvdGFsIHtcblx0XHRcdG1hcmdpbi10b3A6IDZweDtcblx0XHRcdHBhZGRpbmctdG9wOiA5cHg7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR9XG5cblx0XHQmLnBheW1lbnQge1xuXHRcdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cblx0XHRcdC5mYSB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogNHB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYuZHVlIHtcblx0XHRcdG1hcmdpbi10b3A6IDhweDtcblx0XHRcdHBhZGRpbmc6IDlweCAxMnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBGZWVkYmFjaywgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5lZFxuXHQvKiBBIGJ1dHRvbiBzaG93cyBpdCB3b3JraW5nIGFuZCB0aGVuIHRpY2tzOyB3aGF0IGNoYW5nZWQgaXNcblx0LyogaGlnaGxpZ2h0ZWQgZm9yIGEgbW9tZW50OyBhbiBlcnJvciBzaXRzIGJlc2lkZSB3aGF0IGZhaWxlZC5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuaW52b2ljZS1saXN0LXRhYmxlID4gdGJvZHkgPiB0ci5pcy1mcmVzaCA+IHRoLFxuXHQuaW52b2ljZS1saXN0LXRhYmxlID4gdGJvZHkgPiB0ci5pcy1mcmVzaCA+IHRkIHtcblx0XHRhbmltYXRpb246IGludm9pY2luZy1mcmVzaCAyLjRzIGVhc2Utb3V0O1xuXHR9XG5cblx0LyogQSBkZWxldGVkIGludm9pY2UncyByb3cgZmFkZXMgb3V0IG9mIHRoZSBsaXN0IChuZ0FuaW1hdGUpICovXG5cdC5pbnZvaWNlLWxpc3QtdGFibGUgPiB0Ym9keSA+IHRyLm5nLWxlYXZlIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC4zNXMgZWFzZTtcblx0fVxuXG5cdC5pbnZvaWNlLWxpc3QtdGFibGUgPiB0Ym9keSA+IHRyLm5nLWxlYXZlLm5nLWxlYXZlLWFjdGl2ZSB7XG5cdFx0b3BhY2l0eTogMDtcblx0fVxuXG5cdC5pbnZvaWNlLXRvdGFsLXJvdy5wYXltZW50LmlzLWZyZXNoIHtcblx0XHRtYXJnaW46IDAgLThweDtcblx0XHRwYWRkaW5nLWxlZnQ6IDhweDtcblx0XHRwYWRkaW5nLXJpZ2h0OiA4cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YW5pbWF0aW9uOiBpbnZvaWNpbmctZnJlc2ggMi40cyBlYXNlLW91dDtcblx0fVxuXG5cdC5pbnYtc3RhdHVzLmlzLWZyZXNoIHtcblx0XHRhbmltYXRpb246IGludm9pY2luZy1wb3AgMC41cyBlYXNlLW91dCAwLjE1cztcblx0fVxuXG5cdC8qIERvbmU6IGdyZWVuLCBhbmQgbm90IGRpbW1lZCBpZiB0aGUgYnV0dG9uIGlzIGJyaWVmbHkgZGlzYWJsZWQgd2hpbGUgdGhlIGxpc3QgcmVsb2FkcyAqL1xuXHQuY2FsLWJ0bi5pcy1kb25lLFxuXHQuY2FsLWJ0bi5pcy1kb25lOmhvdmVyOm5vdChbZGlzYWJsZWRdKSxcblx0LmNhbC1idG4uaXMtZG9uZVtkaXNhYmxlZF0ge1xuXHRcdGJvcmRlci1jb2xvcjogJGdyZWVuLXRwLTUwO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0wODtcblx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHRvcGFjaXR5OiAxO1xuXG5cdFx0LmZhIHtcblx0XHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtcGFuZWwtc2F2ZS5pcy1kb25lLFxuXHQuaW52LXBhbmVsLXNhdmUuaXMtZG9uZVtkaXNhYmxlZF0ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0Ym94LXNoYWRvdzogMCAycHggNnB4ICRncmVlbi10cC0zMDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHR9XG5cblx0Lmludm9pY2luZy1pbmxpbmUtZXJyb3Ige1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luOiA4cHggMCAwO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRsaW5lLWhlaWdodDogMS40NTtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXG5cdFx0LmZhIHtcblx0XHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHR9XG5cblx0XHQ+IHNwYW4ge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljaW5nLWlubGluZS1kaXNtaXNzIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRwYWRkaW5nOiAwIDJweDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0b3BhY2l0eTogMC42O1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRvcGFjaXR5OiAxO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLWVkaXRvci1lcnJvciB7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRtYXJnaW46IDAgYXV0byAwIDA7XG5cdH1cblxuXHQuaW52b2ljZS1pdGVtcy1lcnJvciB7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRtYXJnaW46IC04cHggMCAxNHB4O1xuXG5cdFx0LmxpbmstYWN0aW9uIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLXBheS1lcnJvciB7XG5cdFx0bWFyZ2luOiAwO1xuXHR9XG5cblx0LyogVGhlIGVtYWlsIGp1c3Qgc2F2ZWQ6IGEgc21hbGwgdGljayB0aGF0IHBvcHMgaW4gYmVzaWRlIGl0ICovXG5cdC5pbnZvaWNpbmctc2F2ZWQge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0bWFyZ2luLWxlZnQ6IDZweDtcblx0XHRwYWRkaW5nOiAxcHggOHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblxuXHRcdCYubmctZW50ZXIge1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMC44NSk7XG5cdFx0fVxuXG5cdFx0Ji5uZy1lbnRlci1hY3RpdmUge1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMSk7XG5cdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMThzIGVhc2UsIHRyYW5zZm9ybSAwLjIycyBjdWJpYy1iZXppZXIoMC4zNCwgMS41NiwgMC42NCwgMSk7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIENvbm5lY3QgdG8gWGVybyAoYmVmb3JlIHRoZSBsaXN0KTogb25lIGNlbnRyZWQgY2FyZCwgb25lIHN0ZXAgYXRcblx0LyogYSB0aW1lLCB3aXRoIHdoZXJlIGl0IGlzIGluIHRoZSB0d28gc3RlcHMgYWJvdmUgaXRcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuaW52b2ljaW5nLXNldHVwIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0fVxuXG5cdC5pbnZvaWNpbmctY29ubmVjdCB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiA1MjBweDtcblx0XHRtYXJnaW4tdG9wOiA0dmg7XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbm5lY3Qtc3RlcHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luOiAwIDAgMTZweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cblx0XHQ+IGxpIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiA3cHg7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0fVxuXG5cdFx0PiBsaS5pcy1jdXJyZW50IHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQ+IGxpLmlzLWRvbmUge1xuXHRcdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0fVxuXG5cdFx0Lmludm9pY2luZy1jb25uZWN0LWxpbmUge1xuXHRcdFx0ZmxleDogMCAwIDQwcHg7XG5cdFx0XHRoZWlnaHQ6IDFweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmV5LWJvcmRlci1saWdodDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbm5lY3QtZG90IHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdHdpZHRoOiAyMnB4O1xuXHRcdGhlaWdodDogMjJweDtcblx0XHRib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbm5lY3Qtc3RlcHMgPiBsaS5pcy1kb25lIC5pbnZvaWNpbmctY29ubmVjdC1kb3Qge1xuXHRcdGJvcmRlci1jb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbm5lY3QtY2FyZCB7XG5cdFx0cGFkZGluZzogMjhweCAzMHB4IDI0cHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0aDQge1xuXHRcdFx0bWFyZ2luOiAwIDAgOHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxN3B4O1xuXHRcdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdG1hcmdpbjogMCBhdXRvIDE2cHg7XG5cdFx0XHRtYXgtd2lkdGg6IDQyY2g7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41NTtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdH1cblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHR9XG5cblx0XHQuZmllbGQtaGVscCB7XG5cdFx0XHRtYXJnaW46IDEwcHggMCAwO1xuXHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbm5lY3QtaWNvbiB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHR3aWR0aDogNDhweDtcblx0XHRoZWlnaHQ6IDQ4cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAyMHB4O1xuXG5cdFx0Ji5pcy13YXJuaW5nIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtaGlnaC1iZztcblx0XHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNpbmctY29ubmVjdC1jaGVja2luZyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRwYWRkaW5nOiAyNHB4IDA7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuXHRcdC5mYSB7XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2luZy1jb25uZWN0LWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tdG9wOiAxOHB4O1xuXG5cdFx0LyogQ3JlYXRlIG9uIHRoZSBsZWZ0LCBsaW5rIG9uIHRoZSByaWdodCwgYXMgYSBkaWFsb2cncyBjYW5jZWwgYW5kIGNvbmZpcm0gKi9cblx0XHQmLmlzLXNwbGl0IHtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2luZy1jb25uZWN0LXByaW1hcnkge1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdG1pbi13aWR0aDogMTgwcHg7XG5cdFx0bWFyZ2luOiAwO1xuXHR9XG5cblx0LyogVW5kZXIgdGhlIGNhcmQsIHNvIGl0IHdpbnMgb3ZlciB0aGUgY2FyZCdzIGNlbnRyZWQgcGFyYWdyYXBoIHJ1bGUgKi9cblx0Lmludm9pY2luZy1jb25uZWN0LWNhcmQgLmludm9pY2luZy1jb25uZWN0LWVycm9yIHtcblx0XHRtYXgtd2lkdGg6IG5vbmU7XG5cdFx0bWFyZ2luOiAxMnB4IDAgMDtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHR9XG5cblx0LyogV2h5IHRoZSBwYXRpZW50IGlzIGJlaW5nIGxpbmtlZCBhZ2FpbiwgYWJvdmUgdGhlIHNlYXJjaCAqL1xuXHQuaW52b2ljaW5nLWNvbm5lY3QtY2FyZCAuc2V0dGluZ3Mtbm90aWNlLmludm9pY2luZy1saW5rLWxvc3Qge1xuXHRcdG1hcmdpbjogMCAwIDE0cHg7XG5cdFx0cGFkZGluZzogMTBweCAxMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHR9XG5cblx0Lmludm9pY2luZy1jb250YWN0LXNlYXJjaCB7XG5cdFx0ZmxleDogbm9uZTtcblx0XHR3aWR0aDogMTAwJTtcblxuXHRcdC5pbnZvaWNpbmctY29udGFjdC1idXN5IHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHJpZ2h0OiAxMHB4O1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LyogUGljayBvbmUsIHRoZW4gbGluayBpdDogZWFjaCByZXN1bHQgYSByb3cgd2l0aCBhIHJhZGlvIG1hcmsgKi9cblx0Lmludm9pY2luZy1jb250YWN0LXJlc3VsdHMge1xuXHRcdG1heC1oZWlnaHQ6IDI0MHB4O1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0bWFyZ2luLXRvcDogOHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHR9XG5cblx0Lmludm9pY2luZy1jb250YWN0LXJlc3VsdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRwYWRkaW5nOiA5cHggMTJweDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblxuXHRcdCYgKyAuaW52b2ljaW5nLWNvbnRhY3QtcmVzdWx0IHtcblx0XHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHRcdH1cblxuXHRcdCYuaXMtc2VsZWN0ZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHR9XG5cblx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNpbmctY29udGFjdC1yYWRpbyB7XG5cdFx0ZmxleDogMCAwIDE2cHg7XG5cdFx0d2lkdGg6IDE2cHg7XG5cdFx0aGVpZ2h0OiAxNnB4O1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkICRjYW5jZWxCb3JkZXI7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0fVxuXG5cdC5pbnZvaWNpbmctY29udGFjdC1yZXN1bHQuaXMtc2VsZWN0ZWQgPiAuaW52b2ljaW5nLWNvbnRhY3QtcmFkaW8ge1xuXHRcdGJvcmRlcjogNXB4IHNvbGlkICRuYXZ5O1xuXHR9XG5cblx0Lmludm9pY2luZy1jb250YWN0LXJlc3VsdC5pcy10YWtlbiA+IC5pbnZvaWNpbmctY29udGFjdC1yYWRpbyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0fVxuXG5cdC5pbnZvaWNpbmctY29udGFjdC1uYW1lIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbnRhY3QtcmVzdWx0LmlzLXRha2VuID4gLmludm9pY2luZy1jb250YWN0LW5hbWUge1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC5pbnZvaWNpbmctY29udGFjdC10YWtlbiB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHR9XG5cblx0Lmludm9pY2luZy1jb250YWN0LWVtcHR5IHtcblx0XHRwYWRkaW5nOiAxNHB4IDEycHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBFZGl0b3Jcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuaW52b2ljZS1iYWNrIHtcblx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXHR9XG5cblx0Lmludm9pY2UtZWRpdG9yLWdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSAyODBweDtcblx0XHRhbGlnbi1pdGVtczogc3RhcnQ7XG5cdFx0Z2FwOiAyMHB4O1xuXHR9XG5cblx0Lmludm9pY2UtZWRpdG9yLW1haW4sXG5cdC5pbnZvaWNlLWVkaXRvci1zaWRlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAyMHB4O1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5zZXR0aW5ncy1jYXJkIHtcblx0XHRwYWRkaW5nOiAyMHB4IDIycHg7XG5cdH1cblxuXHQuc2V0dGluZ3MtY2FyZCAuY2FyZC1oZWFkZXItZmxleCB7XG5cdFx0cGFkZGluZy1ib3R0b206IDEycHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblx0fVxuXG5cdC8qIENsaW5pYyBkYXRlLCBkdWUgZGF0ZSBhbmQgdGhlIHByZXNldCBiZXNpZGUgdGhlbSwgZWFjaCBvbmx5IGFzIHdpZGUgYXMgYSBkYXRlIG5lZWRzICovXG5cdC5pbnZvaWNlLWRhdGVzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiAxMnB4IDE2cHg7XG5cdH1cblxuXHQuaW52b2ljZS1kYXRlLWZpZWxkIHtcblx0XHRmbGV4OiAwIDAgMTYwcHg7XG5cdFx0d2lkdGg6IDE2MHB4O1xuXHR9XG5cblx0Lmludm9pY2UtZHVlLXByZXNldCB7XG5cdFx0ZmxleDogMCAwIDEzMHB4O1xuXHRcdHdpZHRoOiAxMzBweDtcblx0fVxuXG5cdC8qIEFzIHdpZGUgYXMgdGhlIGRhdGUgcm93IGFib3ZlIGl0OiB0d28gZGF0ZXMsIHRoZSBwcmVzZXQgYW5kIHRoZSBnYXBzIGJldHdlZW4gdGhlbSAqL1xuXHQuaW52b2ljZS1yZWZlcmVuY2UtZmllbGQge1xuXHRcdG1heC13aWR0aDogNDgycHg7XG5cdFx0bWFyZ2luLXRvcDogMTJweDtcblx0fVxuXG5cdC8qIE9uZSByb3cgaW4gZml4ZWQgY29sdW1uczogZmluZCB0aGUgaXRlbSwgc2V0IGl0cyBwcmljZSwgcXVhbnRpdHkgYW5kIGRpc2NvdW50LCBhZGQgaXQgKi9cblx0LyogQSB3cmFwcGluZyByb3cgcmF0aGVyIHRoYW4gZml4ZWQgY29sdW1uczogd2hlcmUgdGhlIGNhcmQgaXMgdG9vIG5hcnJvdyBmb3IgaXQgYWxsLCBBZGQgYW5kIENsZWFyIGdvXG5cdCAgIG9udG8gdGhlIG5leHQgbGluZSBpbnN0ZWFkIG9mIHJ1bm5pbmcgcGFzdCB0aGUgY2FyZCdzIGVkZ2UgKi9cblx0Lmludm9pY2UtYWRkLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXHRcdHBhZGRpbmc6IDEycHggMTRweDtcblx0XHRib3JkZXI6IDFweCBkYXNoZWQgcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmYWZmO1xuXG5cdFx0LmNvbnRyb2wtbGFiZWwge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNXB4O1xuXHRcdH1cblxuXHRcdC5kcm9wZG93bi1tZW51IHtcblx0XHRcdG1heC1oZWlnaHQ6IDI4MHB4O1xuXHRcdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHR9XG5cblx0XHQuaW52b2ljZS1hZGQtaXRlbSB7XG5cdFx0XHRmbGV4OiAxIDEgMTgwcHg7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRtYXgtd2lkdGg6IDMwMHB4O1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLWFkZC1wcmljZSB7XG5cdFx0XHRmbGV4OiAwIDAgMTEwcHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtYWRkLXZhcmlhdGlvbiB7XG5cdFx0XHRmbGV4OiAwIDEgMjAwcHg7XG5cdFx0XHRtaW4td2lkdGg6IDE1MHB4O1xuXHRcdH1cblxuXHRcdC8qIFNvbGQgYmV5b25kIHdoYXQgaXMgaW4gc3RvY2s6IHRoZSByZXN0IGdvZXMgb24gYmFja29yZGVyICovXG5cdFx0Lmludm9pY2UtYWRkLWJhY2tvcmRlciB7XG5cdFx0XHRmbGV4OiAxIDEgMTAwJTtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtYWRkLXF0eSB7XG5cdFx0XHRmbGV4OiAwIDAgNzBweDtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1hZGQtZGlzYyB7XG5cdFx0XHRmbGV4OiAwIDAgODBweDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1hZGQtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4OiAwIDAgYXV0bztcblx0XHRnYXA6IDZweDtcblx0fVxuXG5cdC5pbnZvaWNlLWFkZC1idG4sXG5cdC5pbnZvaWNlLWNsZWFyLWJ0biB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiA4cHggMTZweDtcblx0fVxuXG5cdC8qIC5idG4tY2FuY2VsJ3Mgb3duIHNpemUgaXMgYSBzbWFsbGVyIHBpbGw7IGhlcmUgaXQgbWF0Y2hlcyBBZGQgYmVzaWRlIGl0ICovXG5cdC5pbnZvaWNlLWNsZWFyLWJ0biB7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHR9XG5cblx0LyogVGhlIGNhbGVuZGFyJ3MgZGF0ZSBwaWNrZXJzOiByZWFkLW9ubHkgc28gdGhlIHBpY2tlciBpcyB1c2VkLCBidXQgbm90IGdyZXllZCBhcyBpZiBkaXNhYmxlZCAqL1xuXHRkYXRlcGlja2VyIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR3aWR0aDogMTAwJTtcblxuXHRcdC5mb3JtLWNvbnRyb2xbcmVhZG9ubHldIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLWxpbmVzLWVtcHR5IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHBhZGRpbmc6IDI2cHggMTZweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS1tb2RhbC1oZWFkZXI7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblxuXHRcdC5mYSB7XG5cdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0XHRjb2xvcjogI2MzYzlkYTtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1saW5lcy13cmFwIHtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHR9XG5cblx0Lmludm9pY2UtbGluZXMtdGFibGUge1xuXHRcdD4gdGJvZHkgPiB0ciA+IHRkIHtcblx0XHRcdHBhZGRpbmctdG9wOiA3cHg7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogN3B4O1xuXHRcdH1cblxuXHRcdC8qIE1vcmUgb2YgYW4gaW52ZW50b3J5IGxpbmUgdGhhbiBpcyBpbiBzdG9jazogdGhlIHJlc3QgZ29lcyBvbiBiYWNrb3JkZXIgKi9cblx0XHQuaW52b2ljZS1saW5lLWJhY2tvcmRlciB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbi10b3A6IDNweDtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdHBhZGRpbmc6IDZweCA5cHg7XG5cdFx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLWxpbmUtcXR5IHtcblx0XHRcdHdpZHRoOiA4NHB4O1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLWxpbmUtcHJpY2Uge1xuXHRcdFx0d2lkdGg6IDEyMHB4O1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLWxpbmUtZGlzYyB7XG5cdFx0XHR3aWR0aDogOTBweDtcblx0XHR9XG5cblx0XHQuaW52LWNvbC1hY3Rpb25zIHtcblx0XHRcdHdpZHRoOiAxJTtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1zdW1tYXJ5LWNhcmQgLmZpZWxkLWhlbHAge1xuXHRcdG1hcmdpbjogMTJweCAwIDA7XG5cdH1cblxuXHQuaW52b2ljZS1hY2MtY2FyZCAuYnRuIHtcblx0XHRhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuXHRcdG1hcmdpbi10b3A6IDEycHg7XG5cdH1cblxuXHQuaW52b2ljZS1lZGl0b3ItYmFyIC5hY3Rpb24taGludCB7XG5cdFx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdH1cblxuXHQvKiBBbiBpdGVtIHBpY2tlZCBidXQgbm90IGFkZGVkOiB0aGUgYWRkIHJvdyBpcyBtYXJrZWQsIGFuZCB0aGUgZm9vdGVyIHNheXMgc28gYmVzaWRlIHRoZSBidXR0b24gaXQgaG9sZHNcblx0ICAgYmFjaywgd2l0aCB0aGUgdHdvIHdheXMgcGFzdCBpdCAqL1xuXHQuaW52b2ljZS1hZGQtcm93LmlzLXBlbmRpbmcge1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICR5ZWxsb3ctY3RhO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY4ZTY7XG5cdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjU1LCAxNzEsIDAsIDAuMTUpO1xuXHR9XG5cblx0Lmludm9pY2UtcGVuZGluZy1hbGVydCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRtYXgtd2lkdGg6IDQyMHB4O1xuXHRcdHBhZGRpbmc6IDhweCAxMnB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICR5ZWxsb3ctY3RhO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY4ZTY7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0YW5pbWF0aW9uOiBpbnZvaWNpbmctcG9wIDAuMzVzIGVhc2U7XG5cblx0XHQ+IC5mYSB7XG5cdFx0XHRjb2xvcjogJHllbGxvdy1jdGE7XG5cdFx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtcGVuZGluZy10ZXh0IHtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cblx0XHRAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXHRcdFx0YW5pbWF0aW9uOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC8qIE1vbmV5IGZpZWxkczogdGhlICQgc2l0cyBpbnNpZGUgdGhlIGZpZWxkLCBzbyB0aGUgZmllbGQgaXMgYSBibG9jayB0aGUgJCBjYW4gYmUgcGxhY2VkIGluLCBhbmQgaXRzXG5cdCAgIHRleHQgc3RhcnRzIGNsZWFyIG9mIGl0LiBBZnRlciB0aGUgY29tcGFjdCB0YWJsZSBhbmQgY2FyZCBydWxlcywgd2hpY2ggd291bGQgb3RoZXJ3aXNlIHJlc2V0IHRoZVxuXHQgICBwYWRkaW5nIGFuZCBkcmF3IHRoZSAkIG92ZXIgdGhlIGZpZ3VyZXMuICovXG5cdC5mZWUtaW5wdXQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdC5mZWUtcHJlZml4IHtcblx0XHRcdGxlZnQ6IDEwcHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMTtcblx0XHR9XG5cdH1cblxuXHQuZmVlLWlucHV0ID4gLmZvcm0tY29udHJvbCxcblx0Lmludm9pY2UtbGluZXMtdGFibGUgLmZlZS1pbnB1dCA+IC5mb3JtLWNvbnRyb2wsXG5cdC5pbnZvaWNlLXBheS1hbW91bnQgLmZlZS1pbnB1dCA+IC5mb3JtLWNvbnRyb2wge1xuXHRcdHBhZGRpbmctbGVmdDogMjJweDtcblx0fVxuXG5cdC8qIExlYXZpbmcgd2l0aCB1bnNhdmVkIHdvcms6IGEgY2FyZCBvdmVyIHRoZSBlZGl0b3IsIHRoZSBlZGl0b3IgZGltbWVkIGJlaGluZCBpdCAqL1xuXHQuaW52b2ljZS1kaXNjYXJkLW92ZXJsYXkge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRpbnNldDogMDtcblx0XHR6LWluZGV4OiAyMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0cGFkZGluZzogMjRweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI4LCAzNSwgNjQsIDAuMzUpO1xuXHRcdGFuaW1hdGlvbjogaW52b2ljaW5nLWZyZXNoIDAuMTVzIGVhc2U7XG5cdH1cblxuXHQuaW52b2ljZS1kaXNjYXJkLWNhcmQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdHdpZHRoOiAzODBweDtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0cGFkZGluZzogMjRweCAyNHB4IDIwcHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGJveC1zaGFkb3c6IDAgMTJweCAzMnB4IHJnYmEoMjgsIDM1LCA2NCwgMC4yNSk7XG5cblx0XHRoNCB7XG5cdFx0XHRtYXJnaW46IDEwcHggMCA2cHg7XG5cdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDAgMCAxOHB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1kaXNjYXJkLWljb24ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0d2lkdGg6IDQ0cHg7XG5cdFx0aGVpZ2h0OiA0NHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWVycm9yLWJnO1xuXHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdGZvbnQtc2l6ZTogMThweDtcblx0fVxuXG5cdC5pbnZvaWNlLWRpc2NhcmQtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cblx0XHQuYnRuLWRhbmdlci1vdXRsaW5lIHtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yKCRkYW5nZXIgYWxwaGEoNTUlKSk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRjb2xvcjogJGRhbmdlcjtcblxuXHRcdFx0Jjpob3Zlcixcblx0XHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJGRhbmdlcjtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1lcnJvci1iZztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiBUYWtpbmcgYSBwYXltZW50LCBzdGVwIHR3bzogd2hhdCBpcyBhYm91dCB0byBiZSByZWNvcmRlZCwgYW5kIENvbmZpcm0gLSBzZXQgYXBhcnQgc28gaXQgY2FuJ3QgYmVcblx0ICAgbWlzdGFrZW4gZm9yIHRoZSBmaXJzdCBzdGVwICovXG5cdC5pbnZvaWNlLXBheS1jYXJkLmlzLWNvbmZpcm1pbmcge1xuXHRcdGJvcmRlci1jb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggJGdyZWVuLXRwLTA4O1xuXHR9XG5cblx0Lmludm9pY2UtcGF5LWNvbmZpcm0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0cGFkZGluZzogMTBweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMDg7XG5cdFx0YW5pbWF0aW9uOiBpbnZvaWNpbmctcG9wIDAuM3MgZWFzZTtcblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNDU7XG5cdFx0fVxuXG5cdFx0Lmludi1wYW5lbC1zYXZlIHtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1wYXktYmFjayB7XG5cdFx0XHRhbGlnbi1zZWxmOiBjZW50ZXI7XG5cdFx0fVxuXG5cdFx0QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0XHRcdGFuaW1hdGlvbjogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQvKiBuZ0FuaW1hdGUga2VlcHMgYW4gbmctaWYncyBvdXRnb2luZyBlbGVtZW50IG9uIHRoZSBwYWdlIGZvciBhcyBsb25nIGFzIGl0cyBhbmltYXRpb24gcnVucywgc28gQmFja1xuXHQgICBzaG93ZWQgdGhlIGNvbmZpcm0gcGFuZWwgYW5kIHRoZSBUYWtlIGJ1dHRvbiB0b2dldGhlciBmb3IgYSBtb21lbnQuIFRoZXkgc3dhcCBhdCBvbmNlLiAhaW1wb3J0YW50XG5cdCAgIGJlY2F1c2UgaXQgaGFzIHRvIGJlYXQgdGhlIHBhbmVsJ3Mgb3duIHBvcC1pbiBhbmltYXRpb24uICovXG5cdC5pbnZvaWNlLXBheS1jYXJkID4gLmludi1wYW5lbC1zYXZlLFxuXHQuaW52b2ljZS1wYXktY29uZmlybSB7XG5cdFx0Ji5uZy1lbnRlcixcblx0XHQmLm5nLWxlYXZlIHtcblx0XHRcdHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcblx0XHRcdGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFJlc3BvbnNpdmUgLSBsYXB0b3BzIGFuZCB0YWJsZXRzIChsYW5kc2NhcGUgYW5kIHBvcnRyYWl0KVxuLyogUGhvbmVzIGFyZSBub3QgZGVzaWduZWQgZm9yIHlldDogYmVsb3cgYSBwb3J0cmFpdCB0YWJsZXQgdGhlIGxpc3Rcbi8qIHNpbXBseSBzdGFja3MgYWJvdmUgdGhlIGludm9pY2UuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFNtYWxsIGxhcHRvcHMgYW5kIGxhbmRzY2FwZSB0YWJsZXRzOiB0aGUgcGF5bWVudCBjYXJkIG1vdmVzIGFib3ZlIHRoZSBpbnZvaWNlLCBsYWlkIG91dCBpbiBhIHJvdyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDEzMDBweCkge1xuXHQuc2V0dGluZ3Mtc2hlbGwuaW52b2ljaW5nIHtcblx0XHQuaW52b2ljZS1kb2Mtb3B0aW9uYWwge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1lZGl0b3ItZ3JpZCB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLXJlYWRpbmcge1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuXHRcdFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cdFx0fVxuXG5cdFx0LyogU3RhY2tlZCwgdGhlIGNvbHVtbiB0YWtlcyB0aGUgZnVsbCB3aWR0aCwgYW5kIHRoZSBpbnZvaWNlIGFuZCBpdHMgbWVzc2FnZXMgd2l0aCBpdCAqL1xuXHRcdC5pbnZvaWNlLXJlYWRpbmctbWFpbiB7XG5cdFx0XHRtYXgtd2lkdGg6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LyogQW1vdW50LCBob3csIHdoZXJlIGFuZCB0aGUgYnV0dG9uIG9uIG9uZSBsaW5lOyB0aGUgaGVhZGluZyBhbmQgYW55dGhpbmcgc2FpZCwgZnVsbCB3aWR0aCAqL1xuXHRcdC5pbnZvaWNlLXBheS1jYXJkIHtcblx0XHRcdHBvc2l0aW9uOiBzdGF0aWM7XG5cdFx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4yZnIpIG1pbm1heCgwLCAxZnIpIG1pbm1heCgwLCAxZnIpIGF1dG87XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiA4cHggMTBweDtcblxuXHRcdFx0Lmludm9pY2UtcGF5LWhlYWQsXG5cdFx0XHQuaW52b2ljaW5nLWlubGluZS1lcnJvcixcblx0XHRcdC5pbnZvaWNlLXBheS1oaW50IHtcblx0XHRcdFx0Z3JpZC1jb2x1bW46IDEgLyAtMTtcblx0XHRcdH1cblxuXHRcdFx0Lmludm9pY2UtcGF5LWhpbnQge1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0fVxuXG5cdFx0XHQuaW52LXBhbmVsLXNhdmUge1xuXHRcdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyogTGFuZHNjYXBlIHRhYmxldHMgKDEwMjQtMTEwMCk6IHRoZSBkaWFsb2cgdGFrZXMgbmVhcmx5IHRoZSB3aG9sZSBzY3JlZW4sIHRoZSBsaXN0IG5hcnJvd3MsIGFuZCB0aGVcbiAgIHN0YXR1cyBpbiBpdCBzaG93cyBhcyBpdHMgaWNvbiBhbG9uZSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDExMDBweCkge1xuXHQuaW52b2ljaW5nLWRpYWxvZyB7XG5cdFx0bWluLXdpZHRoOiA5NiU7XG5cdFx0d2lkdGg6IDk2JTtcblx0XHRoZWlnaHQ6IDk0dmg7XG5cdH1cblxuXHQuc2V0dGluZ3Mtc2hlbGwuaW52b2ljaW5nIHtcblx0XHQuaW52b2ljaW5nLWxpc3Qge1xuXHRcdFx0ZmxleC1iYXNpczogMjYwcHg7XG5cdFx0XHR3aWR0aDogMjYwcHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtbGlzdC10YWJsZSB7XG5cdFx0XHQuaW52b2ljZS1saXN0LXRvdGFsLWNvbCB7XG5cdFx0XHRcdHdpZHRoOiA5MnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQuaW52b2ljZS1zdGF0dXMtdGV4dCB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdC5pbnYtc3RhdHVzIHtcblx0XHRcdFx0cGFkZGluZzogMnB4IDZweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuaW52b2ljaW5nLXJlYWRlci10b29scyB7XG5cdFx0XHRwYWRkaW5nOiAxMnB4IDIwcHg7XG5cdFx0fVxuXG5cdFx0LnNldHRpbmdzLXBhbmUtYm9keSB7XG5cdFx0XHRwYWRkaW5nOiAyMHB4O1xuXHRcdH1cblxuXHRcdC8qIFRoZSBiaWxsaW5nIGl0ZW0gZ2V0cyBpdHMgb3duIGxpbmU7IHByaWNlLCBxdWFudGl0eSwgZGlzY291bnQgYW5kIEFkZCBzaGFyZSB0aGUgbmV4dCAqL1xuXHRcdC5pbnZvaWNlLWFkZC1yb3cgLmludm9pY2UtYWRkLWl0ZW0ge1xuXHRcdFx0ZmxleC1iYXNpczogMTAwJTtcblx0XHRcdG1heC13aWR0aDogMzgwcHg7XG5cdFx0fVxuXHR9XG59XG5cbi8qIFBvcnRyYWl0IHRhYmxldHMgKDc2OC05MDApOiBmdWxsIHdpZHRoLCBsaXN0IGFuZCBpbnZvaWNlIHN0aWxsIHNpZGUgYnkgc2lkZSAtIHRoZSBzZXR0aW5ncyBzaGVsbFxuICAgd291bGQgc3RhY2sgdGhlbSBoZXJlLCB3aGljaCBsZWF2ZXMgdG9vIGxpdHRsZSBvZiBlaXRoZXIgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuXHQuaW52b2ljaW5nLWRpYWxvZyB7XG5cdFx0bWluLXdpZHRoOiAxMDAlO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMTAwdmg7XG5cdFx0bWF4LWhlaWdodDogMTAwdmg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMDtcblx0fVxuXG5cdC5zZXR0aW5ncy1zaGVsbC5pbnZvaWNpbmcge1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cblx0XHQuaW52b2ljaW5nLWxpc3Qge1xuXHRcdFx0ZmxleC1iYXNpczogMjMwcHg7XG5cdFx0XHR3aWR0aDogMjMwcHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2luZy1saXN0LWhlYWQge1xuXHRcdFx0cGFkZGluZzogMTRweCAxMnB4IDEycHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2luZy1wYXRpZW50IC5zZXR0aW5ncy1hdmF0YXIge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQuaW52b2ljaW5nLWJhbGFuY2Uge1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0Z2FwOiA2cHggMTRweDtcblx0XHRcdHBhZGRpbmc6IDEwcHggMTJweDtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1saXN0LXRhYmxlIHtcblx0XHRcdD4gdGhlYWQgPiB0ciA+IDpmaXJzdC1jaGlsZCxcblx0XHRcdD4gdGJvZHkgPiB0ciA+IDpmaXJzdC1jaGlsZCB7XG5cdFx0XHRcdHBhZGRpbmctbGVmdDogMTJweDtcblx0XHRcdH1cblxuXHRcdFx0PiB0aGVhZCA+IHRyID4gOmxhc3QtY2hpbGQsXG5cdFx0XHQ+IHRib2R5ID4gdHIgPiA6bGFzdC1jaGlsZCB7XG5cdFx0XHRcdHBhZGRpbmctcmlnaHQ6IDEycHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lmludm9pY2luZy1saXN0LWZvb3Qge1xuXHRcdFx0cGFkZGluZzogMTBweCAxMnB4IDEycHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2luZy1hY2MtbGluayB7XG5cdFx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHR9XG5cblx0XHQuaW52b2ljaW5nLXJlYWRlci10b29scyB7XG5cdFx0XHRwYWRkaW5nOiAxMHB4IDE2cHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtYWN0aW9ucy1kaXZpZGVyIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LnNldHRpbmdzLXBhbmUtYm9keSB7XG5cdFx0XHRwYWRkaW5nOiAxNnB4O1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLWRvYyB7XG5cdFx0XHRwYWRkaW5nOiAyNHB4IDIwcHggMjBweDtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1kb2MtaGVhZCB7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtZG9jLWxpbmVzIHtcblx0XHRcdD4gdGhlYWQgPiB0ciA+IHRoLFxuXHRcdFx0PiB0Ym9keSA+IHRyID4gdGgsXG5cdFx0XHQ+IHRib2R5ID4gdHIgPiB0ZCB7XG5cdFx0XHRcdHBhZGRpbmctbGVmdDogNnB4O1xuXHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiA2cHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtcGF5LWNhcmQge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLWxpbmVzLXRhYmxlIHtcblx0XHRcdC5pbnZvaWNlLWxpbmUtcXR5IHtcblx0XHRcdFx0d2lkdGg6IDY0cHg7XG5cdFx0XHR9XG5cblx0XHRcdC5pbnZvaWNlLWxpbmUtcHJpY2Uge1xuXHRcdFx0XHR3aWR0aDogMTAwcHg7XG5cdFx0XHR9XG5cblx0XHRcdC5pbnZvaWNlLWxpbmUtZGlzYyB7XG5cdFx0XHRcdHdpZHRoOiA3MnB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5pbnZvaWNpbmctY29ubmVjdCB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblxuXHRcdC5pbnZvaWNpbmctY29ubmVjdC1jYXJkIHtcblx0XHRcdHBhZGRpbmc6IDIycHggMjBweCAyMHB4O1xuXHRcdH1cblx0fVxufVxuXG4vKiBCZWxvdyBhIHBvcnRyYWl0IHRhYmxldCAobm90IHlldCBkZXNpZ25lZCBmb3IpOiB0aGUgbGlzdCBzdGFja3MgYWJvdmUgdGhlIGludm9pY2UsIGtlcHQgc2hvcnQgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NTlweCkge1xuXHQuc2V0dGluZ3Mtc2hlbGwuaW52b2ljaW5nIHtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG5cdFx0Lmludm9pY2luZy1saXN0IHtcblx0XHRcdGZsZXg6IDAgMCBhdXRvO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXgtaGVpZ2h0OiA0MiU7XG5cdFx0XHRib3JkZXItcmlnaHQ6IG5vbmU7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdH1cblxuXHRcdC5pbnZvaWNpbmctbGlzdC1mb290IHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG59XG5cbi8qIFRvdWNoIHNjcmVlbnM6IHJvb20gZm9yIGEgZmluZ2VyIG9uIGV2ZXJ5IHJvdywgYnV0dG9uIGFuZCBmaWVsZCAqL1xuQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpIHtcblx0LnNldHRpbmdzLXNoZWxsLmludm9pY2luZyB7XG5cdFx0Lmludm9pY2UtbGlzdC10YWJsZSA+IHRib2R5ID4gdHIgPiB0aCxcblx0XHQuaW52b2ljZS1saXN0LXRhYmxlID4gdGJvZHkgPiB0ciA+IHRkIHtcblx0XHRcdHBhZGRpbmctdG9wOiAxMnB4O1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDEycHg7XG5cdFx0fVxuXG5cdFx0LmNhbC1idG4ge1xuXHRcdFx0aGVpZ2h0OiA0MHB4O1xuXHRcdH1cblxuXHRcdC5jYWwtaWNvbi1idG4ge1xuXHRcdFx0d2lkdGg6IDQwcHg7XG5cdFx0fVxuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRtaW4taGVpZ2h0OiA0MHB4O1xuXHRcdH1cblxuXHRcdC5jaGlwLXNlbGVjdCB7XG5cdFx0XHRwYWRkaW5nLXRvcDogOHB4O1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDhweDtcblx0XHR9XG5cblx0XHQuaW52LXBhbmVsLXNhdmUsXG5cdFx0Lmludm9pY2luZy1taW5pLWJ0biB7XG5cdFx0XHRtaW4taGVpZ2h0OiA0MHB4O1xuXHRcdH1cblxuXHRcdC5pbnZvaWNpbmctY29udGFjdC1yZXN1bHQge1xuXHRcdFx0cGFkZGluZy10b3A6IDEycHg7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMTJweDtcblx0XHR9XG5cblx0XHQubGluay1hY3Rpb24sXG5cdFx0Lmludm9pY2luZy1pbmxpbmUtZGlzbWlzcyB7XG5cdFx0XHRwYWRkaW5nOiA2cHggNHB4O1xuXHRcdH1cblx0fVxufVxuXG4vKiBBbnlvbmUgd2hvIGhhcyBhc2tlZCBmb3IgbGVzcyBtb3Rpb24gZ2V0cyB0aGUgdGlja3MgYW5kIHdvcmRzIHdpdGhvdXQgdGhlIGhpZ2hsaWdodCBvciBwb3AgKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cdC5zZXR0aW5ncy1zaGVsbC5pbnZvaWNpbmcge1xuXHRcdC5pcy1mcmVzaCxcblx0XHQuaXMtZnJlc2ggPiB0aCxcblx0XHQuaXMtZnJlc2ggPiB0ZCB7XG5cdFx0XHRhbmltYXRpb246IG5vbmU7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtbGlzdC10YWJsZSA+IHRib2R5ID4gdHIubmctbGVhdmUsXG5cdFx0Lmludm9pY2luZy1zYXZlZC5uZy1lbnRlci1hY3RpdmUge1xuXHRcdFx0dHJhbnNpdGlvbjogbm9uZTtcblx0XHR9XG5cdH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgV29ya2xpc3RzICh0YXNrcywgc3VyZ2VyeSB3YWl0bGlzdClcbi8qIEJ1aWx0IG9uIHRoZSBzZXR0aW5ncyBzaGVsbCAoX3NldHRpbmdzLmNzcykgbGlrZSB0aGUgY2FsZW5kYXIgYW5kXG4vKiBpbnZvaWNpbmc6IGZpbHRlcnMgaW4gdGhlIGxlZnQgcmFpbCwgdGhlIGxpc3QgYXMgYSB0YWJsZSwgYW5kIHRoZVxuLyogb3BlbiByb3cgaW4gYSBzaWRlIHBhbmVsIGJlc2lkZSBpdC4gVGhlIHRhYmxlLCBzdGF0dXMgcGlsbHMsIHNpZGVcbi8qIHBhbmVsLCBub3RpY2VzIGFuZCBjb25maXJtcyBjb21lIGZyb20gX2ludmVudG9yeS5jc3MsIHdoaWNoIGxpc3RzXG4vKiB0aGlzIHNoZWxsIGFsb25nc2lkZSBpdHMgb3duOyB0aGlzIGZpbGUgYWRkcyB3aGF0IG9ubHkgdGhlc2UgbmVlZC5cbi8qIFRoZSBuZXcgdGFzayBkaWFsb2cgdXNlcyB0aGUgc2FtZSBzaGVsbCwgbGFpZCBvdXQgYXMgb25lIGNvbHVtbi5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLndvcmtsaXN0LWRpYWxvZyB7XG5cdG1pbi13aWR0aDogODglO1xuXHR3aWR0aDogODglO1xuXHRoZWlnaHQ6IDkwdmg7XG5cdG1heC1oZWlnaHQ6IDk0dmg7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlci10b3Atd2lkdGg6IDA7XG59XG5cbi50YXNrLWNyZWF0ZS1kaWFsb2cge1xuXHR3aWR0aDogNjYwcHg7XG5cdG1heC13aWR0aDogOTR2dztcblx0bWF4LWhlaWdodDogOTJ2aDtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyLXRvcC13aWR0aDogMDtcbn1cbi8qIEFkZCB0byBzdXJnZXJ5IHdhaXRsaXN0OiB0aGUgbmV3IHRhc2sgZGlhbG9nLCB3aXRoIGEgc2xpbW1lciBwYXRpZW50IGhlYWRlciAqL1xuLnRhc2stY3JlYXRlLWRpYWxvZy53YWl0bGlzdC1hZGQtZGlhbG9nIHtcblx0LyogQSBzbGltbWVyIHBhdGllbnQgaGVhZGVyIHRoYW4gdGhlIG5ldyB0YXNrJ3MsIHRvIGxlYXZlIHRoZSBmaWVsZHMgcm9vbSAqL1xuXHQuc2V0dGluZ3Mtc2hlbGwud29ya2xpc3QudGFzay1jcmVhdGUgLndsLWNyZWF0ZS1oZWFkIHtcblx0XHRwYWRkaW5nOiAxMHB4IDI0cHg7XG5cblx0XHQuc2V0dGluZ3MtYXZhdGFyIHtcblx0XHRcdHdpZHRoOiAzNHB4O1xuXHRcdFx0aGVpZ2h0OiAzNHB4O1xuXHRcdH1cblx0fVxufVxuXG4uc2V0dGluZ3Mtc2hlbGwud29ya2xpc3Qge1xuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBMZWZ0IHJhaWxcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQud29ya2xpc3QtcmFpbCB7XG5cdFx0ZmxleC1iYXNpczogMjU2cHg7XG5cdFx0d2lkdGg6IDI1NnB4O1xuXHRcdHBhZGRpbmctYm90dG9tOiA4cHg7XG5cdH1cblxuXHQuc2V0dGluZ3MtbmF2LWl0ZW06Zm9jdXMtdmlzaWJsZSB7XG5cdFx0b3V0bGluZTogbm9uZTtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0fVxuXG5cdC5uYXYtaXRlbS10ZXh0IHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQvKiBIb3cgbWFueSBhcmUgYmVoaW5kIGVhY2ggZmlsdGVyIC0gd2hpdGUgb24gdGhlIGFjdGl2ZSByb3cgKi9cblx0LndsLWNvdW50IHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRtaW4td2lkdGg6IDIycHg7XG5cdFx0cGFkZGluZzogMXB4IDdweDtcblx0XHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0Y29sb3I6ICM3ZDgzOTk7XG5cdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXG5cdFx0LyogU29tZXRoaW5nIGluIHRoZSBsaXN0IGlzIG92ZXJkdWUgKi9cblx0XHQmLmlzLWFsZXJ0IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtZXJyb3ItYmc7XG5cdFx0XHRjb2xvcjogJG5vdGljZS1lcnJvcjtcblx0XHR9XG5cdH1cblxuXHQuc2V0dGluZ3MtbmF2LWl0ZW0uYWN0aXZlIC53bC1jb3VudCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkbmF2eTtcblxuXHRcdCYuaXMtYWxlcnQge1xuXHRcdFx0Y29sb3I6ICRub3RpY2UtZXJyb3I7XG5cdFx0fVxuXHR9XG5cblx0LyogUHJhY3RpY2VzOiB0aWNrIHRvIGFkZCBvbmUgYWxvbmdzaWRlIHRoZSBvdGhlcnMsIGNsaWNrIHRoZSBuYW1lIHRvIHNlZSBvbmx5IGl0IChhcyB0aGUgY2FsZW5kYXIpICovXG5cdC53bC10aWNrLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRwYWRkaW5nOiAycHggMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxcHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuXHRcdH1cblxuXHRcdC53bC1jaGVjayB7XG5cdFx0XHR3aWR0aDogMThweDtcblx0XHRcdGhlaWdodDogMThweDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRib3JkZXI6IDJweCBzb2xpZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdGZvbnQtc2l6ZTogOXB4O1xuXHRcdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0XHRcdH1cblxuXHRcdFx0LyogVGhlIGxhc3QgcHJhY3RpY2UgdGlja2VkIGNhbid0IGJlIHVudGlja2VkOyBpdCBzaG93cyBhcyB0aWNrZWQsIG5vdCBhcyBncmV5ZWQgb3V0ICovXG5cdFx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLmlzLXRpY2tlZCAud2wtY2hlY2sge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXG5cdFx0XHRpIHtcblx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQud2wtdGljay1uYW1lIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRwYWRkaW5nOiA2cHggMDtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuMzU7XG5cdFx0XHRvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji5pcy10aWNrZWQgLndsLXRpY2stbmFtZSB7XG5cdFx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHR9XG5cdH1cblxuXHQuc2V0dGluZ3MtbmF2LWZvb3RlciAud2wtbmV3LWJ0biB7XG5cdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdFx0cGFkZGluZzogN3B4IDE0cHg7XG5cblx0XHRpIHtcblx0XHRcdG1hcmdpbi1yaWdodDogNXB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIE5ldyB0YXNrIC8gQWRkIHRvIHdhaXRsaXN0IHN0YXkgaW4gdmlldyBhdCB0aGUgZm9vdCBvZiB0aGUgcmFpbCB3aGlsZSBpdHMgZmlsdGVycyBzY3JvbGwgcGFzdCAqL1xuXHRAbWVkaWEgKG1pbi13aWR0aDogOTAxcHgpIHtcblx0XHQvKiBObyBnYXAgdW5kZXIgdGhlIGZvb3RlciBmb3IgdGhlIGZpbHRlcnMgdG8gc2hvdyB0aHJvdWdoIGFzIHRoZXkgc2Nyb2xsICovXG5cdFx0LndvcmtsaXN0LXJhaWwge1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDA7XG5cdFx0fVxuXG5cdFx0LndvcmtsaXN0LXJhaWwgPiAuc2V0dGluZ3MtbmF2LWZvb3RlciB7XG5cdFx0XHRwb3NpdGlvbjogc3RpY2t5O1xuXHRcdFx0Ym90dG9tOiAwO1xuXHRcdFx0ei1pbmRleDogMjtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGJveC1zaGFkb3c6IDAgLTZweCAxMHB4IC04cHggcmdiYSgxMCwgMzcsIDY0LCAwLjE4KTtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgVG9vbGJhciBhYm92ZSB0aGUgbGlzdFxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC53bC10b29sYmFyIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTBweDtcblx0XHRwYWRkaW5nOiAxOHB4IDI0cHggMTRweDtcblx0fVxuXG5cdC53bC10aXRsZSB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0LndsLXRvdGFsIHtcblx0XHRwYWRkaW5nOiAycHggOXB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHR9XG5cblx0LndsLXNwYWNlciB7XG5cdFx0ZmxleDogMTtcblx0fVxuXG5cdC53bC1sb2FkaW5nLW1vcmUge1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQvKiBBIHNlYXJjaCBvbiBhIGxpbmUgb2YgaXRzIG93biBiZWxvdyB0aGUgdGl0bGU6IHRoZSBicmVhayB0YWtlcyB0aGUgcmVzdCBvZiB0aGUgdGl0bGUncyBsaW5lICovXG5cdC53bC1icmVhayB7XG5cdFx0ZmxleC1iYXNpczogMTAwJTtcblx0XHRoZWlnaHQ6IDA7XG5cdH1cblxuXHQud2wtc2VhcmNoLndsLXNlYXJjaC11bmRlciB7XG5cdFx0d2lkdGg6IDQyMHB4O1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0fVxuXG5cdC53bC1zZWFyY2gge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR3aWR0aDogMjgwcHg7XG5cblx0XHQ+IGkge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogMTFweDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdGhlaWdodDogMzRweDtcblx0XHRcdHBhZGRpbmctbGVmdDogMzFweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDI4cHg7XG5cdFx0fVxuXG5cdFx0LndsLXNlYXJjaC1jbGVhciB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRyaWdodDogNnB4O1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHR3aWR0aDogMjJweDtcblx0XHRcdGhlaWdodDogMjJweDtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuZm9ybS1jb250cm9sLndsLXNlbGVjdCB7XG5cdFx0d2lkdGg6IDE3MHB4O1xuXHRcdGhlaWdodDogMzRweDtcblx0XHRwYWRkaW5nLXRvcDogMDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0fVxuXG5cdC8qIEFzIHRoZSBjYWxlbmRhcidzIHRvb2xiYXIgYnV0dG9ucyAqL1xuXHQuY2FsLWJ0biB7XG5cdFx0aGVpZ2h0OiAzNHB4O1xuXHRcdHBhZGRpbmc6IDAgMTRweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHQuZmEge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0XHR9XG5cdH1cblxuXHQuY2FsLWljb24tYnRuIHtcblx0XHR3aWR0aDogMzRweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXG5cdC8qIFdoYXQganVzdCBoYXBwZW5lZCwgYmV0d2VlbiB0aGUgdG9vbGJhciBhbmQgdGhlIGxpc3QgLSB3aXRoIFVuZG8gd2hlcmUgaXQgY2FuIGJlICovXG5cdC5zZXR0aW5ncy1ub3RpY2Uud2wtbm90aWNlIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdG1hcmdpbjogMCAyNHB4IDEycHg7XG5cdFx0cGFkZGluZzogMTBweCAxNHB4O1xuXG5cdFx0Lm5vdGljZS10ZXh0IHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0fVxuXG5cdFx0Lmludi1saW5rLWJ0biB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR9XG5cblx0XHQubm90aWNlLWRpc21pc3Mge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0cGFkZGluZzogMCAycHg7XG5cdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdG9wYWNpdHk6IDAuNjtcblxuXHRcdFx0aSB7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdH1cblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHRvb2xiYXIgc2l0cyBhYm92ZSwgc28gdGhlIGJvZHkncyBvd24gdG9wIHBhZGRpbmcgd291bGQgZG91YmxlIHRoZSBnYXAgKi9cblx0LnNldHRpbmdzLXBhbmUtYm9keS53bC1ib2R5IHtcblx0XHRwYWRkaW5nOiAwIDI0cHggMjRweDtcblx0fVxuXG5cdC53bC1yZXRyeSB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWFyZ2luLXRvcDogNnB4O1xuXHRcdHBhZGRpbmc6IDZweCAyMnB4O1xuXHR9XG5cblx0LndsLW11dGVkIHtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgVGhlIGxpc3Rcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5cdC8qIENvbHVtbiBoZWFkaW5ncyB0aGF0IHNvcnQ6IHRoZSBoZWFkaW5nJ3Mgb3duIGxvb2ssIGFzIGEgYnV0dG9uICovXG5cdC53bC1zb3J0IHtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdGZvbnQ6IGluaGVyaXQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IGluaGVyaXQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdC5mYSB7XG5cdFx0XHRtYXJnaW4tbGVmdDogM3B4O1xuXHRcdH1cblxuXHRcdC53bC1zb3J0LWlkbGUge1xuXHRcdFx0b3BhY2l0eTogMC4zNTtcblx0XHR9XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXG5cdFx0XHQud2wtc29ydC1pZGxlIHtcblx0XHRcdFx0b3BhY2l0eTogMC44O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC53bC10YWJsZSB7XG5cdFx0PiB0Ym9keSA+IHRyID4gdGgsXG5cdFx0PiB0Ym9keSA+IHRyID4gdGQge1xuXHRcdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0XHR9XG5cblx0XHQud2wtY29sLWRhdGUge1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdFx0Lmludi1zdGF0dXMge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndsLWNvbC1leWUge1xuXHRcdFx0d2lkdGg6IDU2cHg7XG5cdFx0fVxuXG5cdFx0LndsLWNvbC1wcm9ncmVzcyxcblx0XHQud2wtY29sLXByZWFwcHJvdmFsIHtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0LndsLWNvbC1wcmVhcHByb3ZhbCB7XG5cdFx0XHR3aWR0aDogMSU7XG5cdFx0fVxuXG5cdFx0LyogUm93cyBhcmUgbm90IG9wZW5lZCBhbnkgbW9yZSAtIGV2ZXJ5dGhpbmcgaXMgY2hhbmdlZCBvbiB0aGVtICovXG5cdFx0PiB0Ym9keSA+IHRyID4gdGgsXG5cdFx0PiB0Ym9keSA+IHRyID4gdGQge1xuXHRcdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHRcdH1cblxuXHRcdC53bC1jb2wtYm9vayB7XG5cdFx0XHR3aWR0aDogMSU7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC8qIEEgYmxvY2sgcGVyIHBhdGllbnQ6IG5vIGxpbmVzIGJldHdlZW4gaXRzIGV5ZXMgYW5kIGNvbW1lbnRzLCBhIGxpbmUgYmV0d2VlbiBwYXRpZW50cyAqL1xuXHRcdD4gdGJvZHkud2wtZ3JvdXAge1xuXHRcdFx0PiB0ciA+IHRoLFxuXHRcdFx0PiB0ciA+IHRkIHtcblx0XHRcdFx0cGFkZGluZy10b3A6IDVweDtcblx0XHRcdFx0cGFkZGluZy1ib3R0b206IDVweDtcblx0XHRcdFx0Ym9yZGVyLXRvcDogbm9uZTtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHRcdH1cblxuXHRcdFx0PiB0cjpmaXJzdC1jaGlsZCA+IHRoLFxuXHRcdFx0PiB0cjpmaXJzdC1jaGlsZCA+IHRkIHtcblx0XHRcdFx0cGFkZGluZy10b3A6IDEycHg7XG5cdFx0XHR9XG5cblx0XHRcdD4gdHI6bGFzdC1jaGlsZCA+IHRkIHtcblx0XHRcdFx0cGFkZGluZy1ib3R0b206IDEycHg7XG5cdFx0XHR9XG5cblx0XHRcdD4gdHIgPiAud2wtY29sLXBhdGllbnQge1xuXHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogMTJweDtcblx0XHRcdH1cblxuXHRcdFx0LyogVGhlIHBhdGllbnQncyBsYXN0IGV5ZSBqdXN0IGRvbmUgKG9yIHRoZSBwYXRpZW50IHJlb3BlbmVkKTogaXQgZmFkZXMgYmVmb3JlIG1vdmluZyBsaXN0ICovXG5cdFx0XHQmLmlzLXNldHRsaW5nIHtcblx0XHRcdFx0b3BhY2l0eTogMC41O1xuXHRcdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNnMgZWFzZSAwLjJzO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qIEJldHdlZW4gb25lIHBhdGllbnQgYW5kIHRoZSBuZXh0OiBhIGZpcm1lciBsaW5lIHRoYW4gdGhlIGhhaXJsaW5lIGJldHdlZW4gYSBwYXRpZW50J3Mgb3duIGVudHJpZXMgKi9cblx0XHQ+IHRib2R5LndsLWdyb3VwICsgdGJvZHkud2wtZ3JvdXAgPiB0cjpmaXJzdC1jaGlsZCA+IHRoLFxuXHRcdD4gdGJvZHkud2wtZ3JvdXAgKyB0Ym9keS53bC1ncm91cCA+IHRyOmZpcnN0LWNoaWxkID4gdGQge1xuXHRcdFx0Ym9yZGVyLXRvcDogMnB4IHNvbGlkICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0fVxuXG5cdFx0LyogVGhlIHBhdGllbnQncyBleWVzIGFuZCB0aGVpciBjb21tZW50cywgYnJhY2tldGVkIHRvZ2V0aGVyIGRvd24gdGhlIGV5ZSBjb2x1bW4gLSBlYWNoIGV5ZSdzIGNlbGxcblx0XHQgICBzcGFucyBpdHMgY29tbWVudHMgKi9cblx0XHQ+IHRib2R5ID4gdHIud2wtZXllLWxpbmUgPiB0ZC53bC1jb2wtZXllIHtcblx0XHRcdGJveC1zaGFkb3c6IGluc2V0IDJweCAwIDAgJG5hdnktcGFsZTtcblx0XHR9XG5cblx0XHQvKiBBIGhhaXJsaW5lIGJldHdlZW4gb25lIG9mIHRoZSBwYXRpZW50J3MgZW50cmllcyBhbmQgdGhlIG5leHQgLSBmcm9tIHRoZSBleWUgY29sdW1uIG9uLCBhcyB0aGVcblx0XHQgICBwYXRpZW50J3Mgb3duIGNlbGwgc3BhbnMgdGhlbSBhbGwgKi9cblx0XHQ+IHRib2R5LndsLWdyb3VwID4gdHIud2wtZW50cnktc3RhcnQgPiB0ZCB7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcblx0XHR9XG5cblx0XHQvKiBBbiBleWUganVzdCBjb21wbGV0ZWQsIHdoaWxlIHRoZSBwYXRpZW50J3Mgb3RoZXJzIHdhaXQ6IGl0IGZhZGVzIGJlZm9yZSBpdCBsZWF2ZXMgdGhlIGJsb2NrICovXG5cdFx0PiB0Ym9keSA+IHRyLmlzLXNldHRsaW5nID4gdGQge1xuXHRcdFx0b3BhY2l0eTogMC40NTtcblx0XHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC42cyBlYXNlIDAuMnM7XG5cdFx0fVxuXG5cdFx0LyogVGhlIGxhc3QgY29sdW1uIGNsZWFyIG9mIHRoZSB0YWJsZSdzIHJpZ2h0IGVkZ2UsIGhvd2V2ZXIgbG9uZyB3aGF0IGlzIGluIGl0ICovXG5cdFx0PiB0aGVhZCA+IHRyID4gdGg6bGFzdC1jaGlsZCxcblx0XHQ+IHRib2R5ID4gdHIgPiB0ZC53bC1jb2wtcHJvZ3Jlc3Mge1xuXHRcdFx0cGFkZGluZy1yaWdodDogMjRweDtcblx0XHR9XG5cblx0XHQvKiBUaGUgc3VyZ2VvbiwgY2hhbmdlZCBpbiBwbGFjZSAqL1xuXHRcdC53bC1jb2wtc3VyZ2VvbiAud2wtY2hpcC1zZWxlY3Qgc2VsZWN0IHtcblx0XHRcdG1heC13aWR0aDogMTcwcHg7XG5cdFx0fVxuXG5cdFx0LyogVGhlIHJvdyBuYW1lIGlzIHRoZSBwYXRpZW50OyBhIGxvbmcgb25lIHdyYXBzIHJhdGhlciB0aGFuIHdpZGVuaW5nIHRoZSBjb2x1bW4gKi9cblx0XHQuaW52LXJvdy1saW5rIHtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHRhc2sgbGlzdDogYSBjZW50cmVkIGNvbHVtbiBvZiBjb21wYWN0IGNhcmRzLCBlYWNoIHdpdGggZXZlcnl0aGluZyBhYm91dCB0aGUgdGFzayBvbiBpdCBhbmRcblx0ICAgY2hhbmdlZCB0aGVyZS4gTGlnaHQ6IGEgaGFpcmxpbmUgYm9yZGVyLCB0aGUgbGFiZWwncyBjb2xvdXIgZG93biB0aGUgbGVmdCBlZGdlLiAqL1xuXHQud2wtY2FyZHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDZweDtcblx0XHRtYXgtd2lkdGg6IDgyMHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0fVxuXG5cdC53bC1jYXJkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogMTBweDtcblx0XHRwYWRkaW5nOiAxMHB4IDEycHggOXB4IDE2cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1sZWZ0OiAzcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHR0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLCBvcGFjaXR5IDAuNnMgZWFzZSAwLjJzO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItdG9wLWNvbG9yOiAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdFx0Ym9yZGVyLXJpZ2h0LWNvbG9yOiAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMnB4IDhweCAkbmF2eS10cC0wNTtcblx0XHR9XG5cblx0XHQvKiBKdXN0IGNvbXBsZXRlZCBvciByZW9wZW5lZDogdGhlIGJ1dHRvbiBzaG93cyBpdCB3b3JrZWQsIGFuZCB0aGUgY2FyZCBmYWRlcyBiZWZvcmUgaXQgbW92ZXMgdGFiICovXG5cdFx0Ji5pcy1zZXR0bGluZyB7XG5cdFx0XHRvcGFjaXR5OiAwLjU7XG5cdFx0fVxuXG5cdFx0Ji5pcy1kb25lIHtcblx0XHRcdC5pbnYtcm93LWxpbmsge1xuXHRcdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0XHRcdH1cblxuXHRcdFx0LndsLWNhcmQtZGVzYy10ZXh0IHtcblx0XHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC53bC1jYXJkLWJvZHkge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0LndsLWNhcmQtaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDRweCA4cHg7XG5cdH1cblxuXHQvKiBUaGUgcGF0aWVudCwgd2l0aCB3aGVuIHRoZSB0YXNrIGlzIGR1ZSBiZXNpZGUgdGhlbSAqL1xuXHQud2wtY2FyZC13aG8ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHggMTBweDtcblx0XHRmbGV4OiAxIDEgMTYwcHg7XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0LyogQSBsb25nIG5hbWUgd3JhcHMgcmF0aGVyIHRoYW4gcHVzaGluZyB0aGUgcGlja2VycyBhd2F5ICovXG5cdFx0Lmludi1yb3ctbGluayB7XG5cdFx0XHRmb250LXNpemU6IDEzLjVweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjM1O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcblx0XHRcdG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuXHRcdH1cblx0fVxuXG5cdC53bC1jYXJkLXN1YiB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0bWFyZ2luLXRvcDogMXB4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdH1cblxuXHQvKiBBIGxhYmVsIG9yIGFzc2lnbmVlIHBpY2tlciwgZHJlc3NlZCBhcyBhIGNoaXA6IHRoZSBzZWxlY3QgaXRzZWxmLCB3aXRob3V0IGl0cyBvd24gYm94ICovXG5cdC53bC1jaGlwLXNlbGVjdCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA1cHg7XG5cdFx0aGVpZ2h0OiAyNHB4O1xuXHRcdHBhZGRpbmc6IDAgOHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiA5OTlweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZSwgYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0LyogVGhlIGNoaXAgZ3Jvd3Mgd2l0aCB3aGF0IGl0IGhvbGRzOyB0aGUgbmFtZSBpdHNlbGYgbmV2ZXIgc3F1ZWV6ZXMgdG8gbm90aGluZyAqL1xuXHRcdHNlbGVjdCB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdG1heC13aWR0aDogMTkwcHg7XG5cdFx0XHRwYWRkaW5nOiAwIDE0cHggMCAwO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAtMTRweDtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0XHRmb250OiBpbmhlcml0O1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG5cdFx0XHQtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG5cdFx0XHRhcHBlYXJhbmNlOiBub25lO1xuXG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQ+IC5mYSB7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblxuXHRcdFx0Ji5pcy1zYXZlZCB7XG5cdFx0XHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53bC1jaGlwLWljb24ge1xuXHRcdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzLXdpdGhpbiB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdH1cblxuXHRcdCYuaXMtbWUge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdC8qIENoYW5nZWQsIGFuZCB3YWl0aW5nIGZvciBTYXZlICovXG5cdFx0Ji5pcy1jaGFuZ2VkIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0LyogTm90aGluZyBjaG9zZW4gLSBhIG5ldyBwcmFjdGljZSB3YW50cyBhIHBlcnNvbiBvciBsYWJlbCB0aGVyZSAtIGFuZCBTYXZlIHdhaXRzIGZvciBvbmUgKi9cblx0XHQmLmlzLXBlbmRpbmcge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LyogUm93IHR3byBvZiBhIHRhc2sgY2FyZDogaXRzIHBpY2tlcnMsIG9uIGEgbGluZSBvZiB0aGVpciBvd24sIGFuZCBTYXZlIG9uY2Ugb25lIGhhcyBjaGFuZ2VkICovXG5cdC53bC1jYXJkLWZpZWxkcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDVweCA2cHg7XG5cdFx0bWFyZ2luLXRvcDogNnB4O1xuXG5cdFx0LndsLWlubGluZS1zYXZlZCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogMnB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFdoZW4gaXQgaXMgZHVlLCBiZXNpZGUgdGhlIHBhdGllbnQsIHdpdGggT3ZlcmR1ZSBvciBEdWUgc29vbiBhZnRlciBpdCAqL1xuXHQud2wtY2FyZC1kdWUge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA1cHg7XG5cblx0XHQuaW52LXN0YXR1cyB7XG5cdFx0XHRwYWRkaW5nOiAwIDdweDtcblx0XHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBkdWUgZGF0ZTogYSBjaGlwIHRoYXQgb3BlbnMgdGhlIGJyb3dzZXIncyBkYXRlIHBpY2tlciwgYXMgdGhlIHdhaXRsaXN0J3Mgc3VyZ2VyeSBkYXRlIGJ1dHRvbiBkb2VzICovXG5cdC53bC1kdWUtcGljayB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXG5cdFx0LyogVW5kZXIgdGhlIGJ1dHRvbiwgc28gdGhlIHBpY2tlciBvcGVucyBiZXNpZGUgaXQ7IG5ldmVyIHNlZW4gb3IgY2xpY2tlZCBpdHNlbGYgKi9cblx0XHRpbnB1dFt0eXBlPVwiZGF0ZVwiXSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LyogQSBicm93c2VyIHRoYXQgY2FuJ3Qgb3BlbiB0aGUgcGlja2VyIGZyb20gdGhlIGJ1dHRvbiBnZXRzIHRoZSBkYXRlIGlucHV0IGl0c2VsZiAqL1xuXHRcdCYuaXMtdHlwaW5nIHtcblx0XHRcdC53bC1kdWUtYnRuIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblxuXHRcdFx0aW5wdXRbdHlwZT1cImRhdGVcIl0ge1xuXHRcdFx0XHRwb3NpdGlvbjogc3RhdGljO1xuXHRcdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdFx0aGVpZ2h0OiAyNHB4O1xuXHRcdFx0XHRwYWRkaW5nOiAwIDhweDtcblx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuXHRcdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdFx0cG9pbnRlci1ldmVudHM6IGF1dG87XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LndsLWR1ZS1idG4ge1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0fVxuXG5cdFx0Ji5pcy1vdmVyZHVlIHtcblx0XHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdH1cblxuXHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHR9XG5cdH1cblxuXHQud2wtZmllbGQtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDRweDtcblx0XHRtYXJnaW4tbGVmdDogMnB4O1xuXHRcdGFuaW1hdGlvbjogd2wtZmFkZS1pbiAwLjEycyBlYXNlO1xuXG5cdFx0YnV0dG9uIHtcblx0XHRcdG1pbi1oZWlnaHQ6IDI0cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdH1cblxuXHRcdC53bC1maWVsZC1jYW5jZWwge1xuXHRcdFx0d2lkdGg6IDI0cHg7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cblx0XHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53bC1maWVsZC1zYXZlIHtcblx0XHRcdHBhZGRpbmc6IDJweCAxMnB4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cblx0XHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJG5hdnkgc2hhZGUoMTUlKSk7XG5cdFx0XHR9XG5cblx0XHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdFx0b3BhY2l0eTogMC41O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC53bC1jYXJkLWRlbGV0ZSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0fVxuXG5cdC8qIEEgcHJhY3RpY2UsIGluIHRoZSBjb2xvdXIgaXQgaGFzIG9uIHRoZSBjYWxlbmRhciAqL1xuXHQud2wtcHJhY3RpY2UtdGFnIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNXB4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0LndsLWNvbC1wYXRpZW50IC53bC1wcmFjdGljZS10YWcge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0bWFyZ2luLXRvcDogM3B4O1xuXHR9XG5cblx0LndsLXByYWN0aWNlLWRvdCB7XG5cdFx0d2lkdGg6IDhweDtcblx0XHRoZWlnaHQ6IDhweDtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdH1cblxuXHQud2wtaWNvbi1idG4ge1xuXHRcdHdpZHRoOiAyNnB4O1xuXHRcdGhlaWdodDogMjZweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1lcnJvci1iZztcblx0XHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdH1cblx0fVxuXG5cdC53bC1jb25maXJtIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNXB4O1xuXHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cblx0XHRidXR0b24ge1xuXHRcdFx0cGFkZGluZzogMnB4IDlweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDZweDtcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cblx0XHQud2wtY29uZmlybS1ubyB7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHR9XG5cblx0XHQud2wtY29uZmlybS15ZXMge1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJG5vdGljZS1lcnJvcjtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtZXJyb3I7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBkZXNjcmlwdGlvbiwgYXMgd3JpdHRlbiAtIGEgY2xpY2sgYXdheSBmcm9tIGJlaW5nIGNoYW5nZWQuIFNhbWUgbWV0cmljcyBhcyBpdHMgZWRpdG9yLCBzbyB0aGVcblx0ICAgdGV4dCBkb2VzIG5vdCBtb3ZlIHdoZW4gaXQgYmVjb21lcyBhIGJveCB0byB3cml0ZSBpbi4gKi9cblx0LndsLWNhcmQtZGVzYyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luLWxlZnQ6IC05cHg7XG5cdFx0cGFkZGluZzogM3B4IDhweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRjdXJzb3I6IHRleHQ7XG5cdFx0dHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3JkZXItY29sb3I6ICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cblx0XHRcdC53bC1pbmxpbmUtcGVuY2lsIHtcblx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYuaXMtZW1wdHkgLndsLWNhcmQtZGVzYy10ZXh0IHtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHR9XG5cdH1cblxuXHQud2wtY2FyZC1kZXNjLXRleHQge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcblx0XHRvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcblx0fVxuXG5cdC53bC1kZXNjLWVkaXRvciB7XG5cdFx0bWFyZ2luLWxlZnQ6IC05cHg7XG5cblx0XHR0ZXh0YXJlYSB7XG5cdFx0XHRwYWRkaW5nOiAzcHggOHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogUm93IHR3bzogdGhlIGRlc2NyaXB0aW9uLCB3aXRoIHdoZW4gYW5kIGJ5IHdob20gdGhlIHRhc2sgd2FzIHJhaXNlZCBxdWlldGx5IGJlc2lkZSBpdCAqL1xuXHQud2wtY2FyZC1saW5lIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDRweCAxMnB4O1xuXHRcdG1hcmdpbi10b3A6IDJweDtcblxuXHRcdC53bC1jYXJkLWRlc2MsXG5cdFx0LndsLWRlc2MtZWRpdG9yIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0fVxuXG5cdFx0LndsLWNhcmQtZm9vdCB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdG1heC13aWR0aDogNDUlO1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0fVxuXHR9XG5cblx0LndsLWNhcmQtZm9vdCB7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjQ1O1xuXHR9XG5cblx0LyogRWFjaCBwaHJhc2Uga2VlcHMgdG9nZXRoZXIsIGFuZCBvbmx5IGJyZWFrcyBpdHNlbGYgd2hlbiBpdCBpcyBsb25nZXIgdGhhbiBhIHdob2xlIGxpbmUgKi9cblx0LndsLWZvb3QtcGFydCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcblx0fVxuXG5cdC8qIFdyaXRpbmcgaW4gcGxhY2UgLSBhIHdhaXRsaXN0IGNvbW1lbnQgb3IgYSB0YXNrIGRlc2NyaXB0aW9uLiBUaGUgYm94IGtlZXBzIHRoZSByZWFkIHN0YXRlJ3MgcGFkZGluZyxcblx0ICAgZm9udCBhbmQgY29ybmVycywgZ3Jvd3Mgd2l0aCB0aGUgdGV4dCwgYW5kIGl0cyBidXR0b25zIGZhZGUgaW4gc21hbGwgYmVuZWF0aCBpdC4gKi9cblx0LndsLWlubGluZS1wZW5jaWwge1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBlYXNlO1xuXHR9XG5cblx0LndsLWlubGluZS1zYXZlZCB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0LmZhIHtcblx0XHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdH1cblx0fVxuXG5cdC8qIG5nQW5pbWF0ZSBrZWVwcyBhbiBuZy1pZidzIG91dGdvaW5nIGVsZW1lbnQgb24gdGhlIHBhZ2UgZm9yIGFzIGxvbmcgYXMgaXRzIHRyYW5zaXRpb25zIHJ1biwgc28gdGhlXG5cdCAgIHJlYWQgYW5kIHdyaXRlIHN0YXRlcyB3b3VsZCBzaG93IHRvZ2V0aGVyIGZvciBhIG1vbWVudC4gSGVyZSB0aGV5IHN3YXAgYXQgb25jZS4gIWltcG9ydGFudCBiZWNhdXNlXG5cdCAgIGl0IGhhcyB0byBiZWF0IGVhY2ggZWxlbWVudCdzIG93biB0cmFuc2l0aW9uLCB3aGF0ZXZlciBpdCBpcy4gKi9cblx0LndsLXJvdy1jb21tZW50LFxuXHQud2wtY2FyZC1kZXNjLFxuXHQud2wtaW5saW5lLWVkaXRvciB7XG5cdFx0Ji5uZy1lbnRlcixcblx0XHQmLm5nLWxlYXZlIHtcblx0XHRcdHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcblx0XHRcdGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxuXG5cdC8qIEEgZGVzY3JpcHRpb24gb3IgY29tbWVudCBzaG93cyBmaXZlIGxpbmVzIGF0IG1vc3QsIGFuZCBzY3JvbGxzIGZvciB0aGUgcmVzdC4gSXRzIGVkaXRvciBncm93cyB3aXRoXG5cdCAgIHRoZSB0ZXh0IHRvIHR3ZWx2ZSBsaW5lcywgYW5kIHRoZW4gc2Nyb2xscyB0b28uICovXG5cdC53bC1jYXJkLWRlc2MtdGV4dCxcblx0LndsLXJvdy1jb21tZW50LXRleHQge1xuXHRcdG1heC1oZWlnaHQ6IDcuNWVtO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdH1cblxuXHQud2wtaW5saW5lLWVkaXRvciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdG1heC13aWR0aDogMTEwY2g7XG5cblx0XHR0ZXh0YXJlYSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdC8qIFNpemVkIHRvIGl0cyB0ZXh0IGJ5IHRoZSBicm93c2VyLCB3aGVyZSBpdCBjYW47IGVsc2V3aGVyZSB0aGUgY29udHJvbGxlciBtZWFzdXJlcyBpdCAqL1xuXHRcdFx0ZmllbGQtc2l6aW5nOiBjb250ZW50O1xuXHRcdFx0bWluLWhlaWdodDogMDtcblx0XHRcdG1heC1oZWlnaHQ6IGNhbGMoMThlbSArIDE0cHgpO1xuXHRcdFx0b3ZlcmZsb3cteDogaGlkZGVuO1xuXHRcdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggY29sb3IoJG5hdnkgYWxwaGEoMTAlKSk7XG5cdFx0XHRyZXNpemU6IG5vbmU7XG5cblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggY29sb3IoJG5hdnkgYWxwaGEoMTQlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LndsLWlubGluZS1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luLXRvcDogNXB4O1xuXHRcdGFuaW1hdGlvbjogd2wtZmFkZS1pbiAwLjEycyBlYXNlO1xuXG5cdFx0LndsLWNvdW50ZXIge1xuXHRcdFx0bWFyZ2luOiAwIGF1dG8gMCAwO1xuXHRcdH1cblxuXHRcdGJ1dHRvbiB7XG5cdFx0XHRtaW4taGVpZ2h0OiAyNHB4O1xuXHRcdFx0cGFkZGluZzogMnB4IDEycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdH1cblxuXHRcdC53bC1pbmxpbmUtY2FuY2VsIHtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53bC1pbmxpbmUtc2F2ZSB7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblxuXHRcdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkbmF2eSBzaGFkZSgxNSUpKTtcblx0XHRcdH1cblxuXHRcdFx0JltkaXNhYmxlZF0ge1xuXHRcdFx0XHRvcGFjaXR5OiAwLjU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGNhcmQncyBtYWluIGFjdGlvbiwgb24gaXRzIHJpZ2h0OiB0aGUgd2FpdGxpc3QncyBzdXJnZXJ5IGNvbXBsZXRlZCBidXR0b24sIGEgbGl0dGxlIHNtYWxsZXIgKi9cblx0LndsLWNhcmQtYWN0aW9uIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRhbGlnbi1zZWxmOiBjZW50ZXI7XG5cdFx0bWFyZ2luLWxlZnQ6IDRweDtcblxuXHRcdC53bC1yZW9wZW4ge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0fVxuXHR9XG5cblx0LndsLWNvbXBsZXRlLWJ0biB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRtaW4td2lkdGg6IDEwOHB4O1xuXHRcdG1pbi1oZWlnaHQ6IDMwcHg7XG5cdFx0cGFkZGluZzogNHB4IDE0cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgY29sb3IoJGZvcmVzdC1ncmVlbiBhbHBoYSg1NSUpKTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdGJveC1zaGFkb3c6IDAgMXB4IDJweCAkbmF2eS10cC0wNTtcblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJGdyZWVuIGFscGhhKDEwJSkpO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAycHggOHB4IGNvbG9yKCRmb3Jlc3QtZ3JlZW4gYWxwaGEoMTUlKSk7XG5cdFx0fVxuXG5cdFx0JjphY3RpdmU6bm90KFtkaXNhYmxlZF0pIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRncmVlbiBhbHBoYSgxOCUpKTtcblx0XHR9XG5cblx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRjdXJzb3I6IHByb2dyZXNzO1xuXHRcdH1cblxuXHRcdC8qIFNhdmVkOiBpdCBmaWxscywgYnJpZWZseSwgYmVmb3JlIHRoZSBjYXJkIG1vdmVzICovXG5cdFx0Ji5pcy1kb25lIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblx0fVxuXG5cdC8qIEEgdGFzayBsYWJlbDogaXRzIG93biBjb2xvdXIgYXMgYSBkb3QsIHNvIGFueSBjb2xvdXIgcmVhZHMgb24gdGhlIHBhbGUgcGlsbCAqL1xuXHQud2wtbGFiZWwge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWF4LXdpZHRoOiAxODBweDtcblx0XHRwYWRkaW5nOiAycHggMTBweCAycHggOHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0fVxuXG5cdC53bC1sYWJlbC1kb3Qge1xuXHRcdHdpZHRoOiA5cHg7XG5cdFx0aGVpZ2h0OiA5cHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuXHR9XG5cblx0LndsLW1lIHtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHR9XG5cblx0LndsLW5oaSB7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHR9XG5cblx0LndsLWV5ZSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHBhZGRpbmc6IDJweCA3cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuXG5cdFx0LyogUmlnaHQgZXllIHJlZCwgbGVmdCBleWUgYmx1ZSwgc28gd2hpY2ggaXMgd2hpY2ggaXMgc2VlbiBhdCBhIGdsYW5jZSAqL1xuXHRcdCYuaXMtb2Qge1xuXHRcdFx0Ym94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IGNvbG9yKCRleWUtb2QgYWxwaGEoMzAlKSk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZXllLW9kLXBhbGU7XG5cdFx0XHRjb2xvcjogJGV5ZS1vZDtcblx0XHR9XG5cblx0XHQmLmlzLW9zIHtcblx0XHRcdGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCBjb2xvcigkZXllLW9zIGFscGhhKDMwJSkpO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGV5ZS1vcy1wYWxlO1xuXHRcdFx0Y29sb3I6ICRleWUtb3M7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGNvbW1lbnRzLCBhcyB3cml0dGVuLCBhY3Jvc3MgdGhlIHJvdydzIHdpZHRoIC0gYSBjbGljayBhd2F5IGZyb20gYmVpbmcgY2hhbmdlZC4gU2FtZSBtZXRyaWNzIGFzXG5cdCAgIHRoZSBlZGl0b3IgYmVsb3csIGljb24gaW5jbHVkZWQsIHNvIHRoZSB0ZXh0IGRvZXMgbm90IG1vdmUgd2hlbiBpdCBiZWNvbWVzIGEgYm94IHRvIHdyaXRlIGluLiAqL1xuXHQud2wtcm93LWNvbW1lbnQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdGdhcDogN3B4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1heC13aWR0aDogMTEwY2g7XG5cdFx0cGFkZGluZzogNnB4IDEwcHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRjdXJzb3I6IHRleHQ7XG5cdFx0dHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdD4gLmZhOmZpcnN0LWNoaWxkIHtcblx0XHRcdHdpZHRoOiAxMnB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3JkZXItY29sb3I6ICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cblx0XHRcdC53bC1pbmxpbmUtcGVuY2lsIHtcblx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qIEFuIGVudHJ5IHdpdGggZXZlcnkgZXllIGRvbmU6IGl0cyBjb21tZW50cyBhcmUgcmVhZCwgbm90IGNoYW5nZWQgKi9cblx0XHQmLmlzLXJlYWRvbmx5IHtcblx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyogTm8gY29tbWVudCB5ZXQ6IGp1c3QgYSBxdWlldCB3YXkgdG8gYWRkIG9uZSAqL1xuXHRcdCYuaXMtZW1wdHkge1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRwYWRkaW5nOiAycHggMTBweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXG5cdFx0XHQ+IC5mYTpmaXJzdC1jaGlsZCB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdH1cblxuXHRcdFx0Jjpob3Zlcixcblx0XHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblxuXHRcdFx0XHQuZmEge1xuXHRcdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSB3aWR0aCBvZiB0aGUgYm94LCBzbyBhIGxvbmcgY29tbWVudCdzIHNjcm9sbGJhciBpcyBhdCBpdHMgZWRnZSwgbm90IGJlc2lkZSB0aGUgdGV4dCAqL1xuXHQud2wtcm93LWNvbW1lbnQtdGV4dCB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0d2hpdGUtc3BhY2U6IHByZS1saW5lO1xuXHRcdG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuXHR9XG5cblx0LndsLWNvbW1lbnQtZWRpdG9yIHtcblx0XHR0ZXh0YXJlYSB7XG5cdFx0XHRwYWRkaW5nOiA2cHggMTBweCA2cHggMjlweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0fVxuXG5cdFx0LyogV2hlcmUgdGhlIHJlYWQgc3RhdGUncyBpY29uIHdhcyAqL1xuXHRcdC53bC1lZGl0b3ItaWNvbiB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDEwcHg7XG5cdFx0XHRsZWZ0OiAxMXB4O1xuXHRcdFx0ei1pbmRleDogMTtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGNvbXBsZXRlIGJ1dHRvbnMgLSBhIHRhc2sncyBDb21wbGV0ZSwgYW4gZXllJ3MgU3VyZ2VyeSBjb21wbGV0ZWQgLSByZXdhcmQgdGhlIGNsaWNrOiBhIHNvZnQgZ3JlZW5cblx0ICAgc2hpbmUgY3Jvc3NlcyB0aGVtIG9uIGhvdmVyLCBhbmQgb25jZSBzYXZlZCB0aGV5IGZpbGwgZ3JlZW4sIGEgd2hpdGUgc2hpbmUgc3dlZXBzIGFjcm9zcywgYW5kIHRoZVxuXHQgICB0aWNrIHBvcHMuIFN0aWxsIGZvciBhbnlvbmUgd2hvIGhhcyBhc2tlZCBmb3IgbGVzcyBtb3Rpb24uICovXG5cdC53bC1jb21wbGV0ZS1idG4sXG5cdC53bC1zdXJnZXJ5LWJ0biB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjM1cyBlYXNlLCBib3JkZXItY29sb3IgMC4zNXMgZWFzZSwgY29sb3IgMC4zNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlO1xuXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IC03MCU7XG5cdFx0XHR3aWR0aDogNDUlO1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdHJhbnNwYXJlbnQgMCUsIGNvbG9yKCRncmVlbiBhbHBoYSgyOCUpKSA1MCUsIHRyYW5zcGFyZW50IDEwMCUpO1xuXHRcdFx0dHJhbnNmb3JtOiBza2V3WCgtMjBkZWcpO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSk6OmFmdGVyIHtcblx0XHRcdGFuaW1hdGlvbjogd2wtc2hpbmUgMC44cyBlYXNlO1xuXHRcdH1cblxuXHRcdCYuaXMtZG9uZSB7XG5cdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgxMDBkZWcsIHRyYW5zcGFyZW50IDAlLCBjb2xvcigkd2hpdGUgYWxwaGEoNjUlKSkgNTAlLCB0cmFuc3BhcmVudCAxMDAlKTtcblx0XHRcdFx0YW5pbWF0aW9uOiB3bC1zaGluZSAwLjZzIGVhc2UgMC4xcztcblx0XHRcdH1cblxuXHRcdFx0PiBpIHtcblx0XHRcdFx0YW5pbWF0aW9uOiB3bC1wb3AgMC40NXMgY3ViaWMtYmV6aWVyKDAuMzQsIDEuNTYsIDAuNjQsIDEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cdFx0XHR0cmFuc2l0aW9uOiBub25lO1xuXG5cdFx0XHQmOjphZnRlcixcblx0XHRcdCYuaXMtZG9uZTo6YWZ0ZXIsXG5cdFx0XHQmLmlzLWRvbmUgPiBpIHtcblx0XHRcdFx0YW5pbWF0aW9uOiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIFByZS1hcHByb3ZhbDogdGhlIHN1cmdlcnkgY29tcGxldGVkIGJ1dHRvbidzIGxvb2ssIHNtYWxsZXIgYW5kIGhhbGYgYXMgd2lkZSwgc28gaXQgcmVhZHMgYXMgdGhlIGxlc3NlclxuXHQgICBzdGVwLiBJbiB0aGUgYnJhbmQgcHVycGxlOiBub3QgZG9uZSwgYW4gZW1wdHkgY2lyY2xlOyBkb25lLCBhIHRpY2sgb24gYSBzb2Z0IHB1cnBsZSBmaWxsLiAqL1xuXHQud2wtc3RlcC1idG4ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHR3aWR0aDogOTJweDtcblx0XHRtaW4taGVpZ2h0OiAyNnB4O1xuXHRcdHBhZGRpbmc6IDNweCA5cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgY29sb3IoJGJyYW5kLXB1cnBsZSBhbHBoYSg0NSUpKTtcblx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkYnJhbmQtcHVycGxlO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRib3gtc2hhZG93OiAwIDFweCAycHggJG5hdnktdHAtMDU7XG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLCBib3JkZXItY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdCYgKyAud2wtc3RlcC1idG4ge1xuXHRcdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdH1cblxuXHRcdC8qIEEgY2hlY2tib3g6IGFuIGVtcHR5IHNxdWFyZSwgdGlja2VkIG9uY2UgdGhlIHN0ZXAgaXMgZG9uZSAqL1xuXHRcdC53bC1zdGVwLWJveCB7XG5cdFx0XHR3aWR0aDogMTJweDtcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0XHQmLmZhLXJlZ3VsYXIge1xuXHRcdFx0XHRjb2xvcjogY29sb3IoJGJyYW5kLXB1cnBsZSBhbHBoYSg2NSUpKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSxcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdGJvcmRlci1jb2xvcjogJGJyYW5kLXB1cnBsZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRicmFuZC1wdXJwbGUgYWxwaGEoOCUpKTtcblx0XHR9XG5cblx0XHQmLmlzLW9uIHtcblx0XHRcdGJvcmRlci1jb2xvcjogY29sb3IoJGJyYW5kLXB1cnBsZSBhbHBoYSg2MCUpKTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRicmFuZC1wdXJwbGUgYWxwaGEoMTMlKSk7XG5cdFx0fVxuXG5cdFx0JltkaXNhYmxlZF0ge1xuXHRcdFx0Y3Vyc29yOiBwcm9ncmVzcztcblx0XHR9XG5cdH1cblxuXHQvKiBTdXJnZXJ5IGNvbXBsZXRlZDogdGhlIHJvdydzIG1haW4gYWN0aW9uIC0gYW4gb3V0bGluZWQgYnV0dG9uLCBzcXVhcmUtY29ybmVyZWQgbGlrZSB0aGUgYXBwJ3Mgb3RoZXJcblx0ICAgYnV0dG9ucyBzbyBpdCByZWFkcyBhcyBzb21ldGhpbmcgdG8gcHJlc3MsIGFuZCBvbmx5IGZpbGxlZCB3aXRoIGEgc29mdCB0aW50IHdoZW4gcG9pbnRlZCBhdCAqL1xuXHQud2wtc3VyZ2VyeS1idG4ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiA3cHg7XG5cdFx0bWluLXdpZHRoOiAxNjBweDtcblx0XHRtaW4taGVpZ2h0OiAzNHB4O1xuXHRcdHBhZGRpbmc6IDZweCAxNHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yKCRmb3Jlc3QtZ3JlZW4gYWxwaGEoNTUlKSk7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0Ym94LXNoYWRvdzogMCAxcHggMnB4ICRuYXZ5LXRwLTA1O1xuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSksXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3JkZXItY29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkZ3JlZW4gYWxwaGEoMTAlKSk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDJweCA4cHggY29sb3IoJGZvcmVzdC1ncmVlbiBhbHBoYSgxNSUpKTtcblx0XHR9XG5cblx0XHQmOmFjdGl2ZTpub3QoW2Rpc2FibGVkXSkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJGdyZWVuIGFscGhhKDE4JSkpO1xuXHRcdH1cblxuXHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdGN1cnNvcjogcHJvZ3Jlc3M7XG5cdFx0fVxuXG5cdFx0LyogU2F2ZWQ6IGl0IGZpbGxzLCBicmllZmx5LCBiZWZvcmUgdGhlIHJvdyBtb3ZlcyAqL1xuXHRcdCYuaXMtZG9uZSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cdH1cblxuXHQvKiBDb21wbGV0ZWQ6IHdoZW4sIGFuZCB0aGUgd2F5IGJhY2sgdG8gV2FpdGluZyAtIHdyYXBwaW5nLCBzbyBpdCBpcyBubyB3aWRlciB0aGFuIHRoZSBidXR0b24gaXQgcmVwbGFjZXMgKi9cblx0LndsLWRvbmUtb24ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHggNnB4O1xuXHRcdG1heC13aWR0aDogMTYwcHg7XG5cdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcblx0fVxuXG5cdC8qIFwiU3VyZ2VyeSBjb21wbGV0ZWRcIiwgYW5kIHRoZSBkYXRlIG9uIGEgbGluZSBvZiBpdHMgb3duIGJlbG93IGl0ICovXG5cdC53bC1kb25lLXRleHQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDFweDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0LndsLWRvbmUtZGF0ZSB7XG5cdFx0cGFkZGluZy1sZWZ0OiAxOHB4O1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbWVkaXVtO1xuXHR9XG5cblx0LndsLXJlb3BlbiB7XG5cdFx0cGFkZGluZzogMnB4IDhweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdGJvcmRlci1yYWRpdXM6IDZweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblxuXHRcdC5mYSB7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSksXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBvdGhlciBleWUgaXMgYm9va2VkOiBhIGNvcHkgaWNvbiBsZWZ0IG9mIHRoZSBkYXRlIGJvb2tzIHRoaXMgb25lIGZvciB0aGUgc2FtZSBkYXkgLSBvciwgb25jZSBkb25lLFxuXHQgICBhIG5vdGUgc2F5cyBzby4gSXQgc2l0cyBpbiB0aGUgYm9va2luZydzIGd1dHRlciwgc28gdGhlIGRhdGUgYnV0dG9uIG5ldmVyIG1vdmVzIGZvciBpdC4gKi9cblx0LndsLXNhbWUtZGF5IHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiA1MCU7XG5cdFx0cmlnaHQ6IDEwMCU7XG5cdFx0d2lkdGg6IDI2cHg7XG5cdFx0aGVpZ2h0OiAyNnB4O1xuXHRcdG1hcmdpbi10b3A6IC0xM3B4O1xuXHRcdG1hcmdpbi1yaWdodDogNHB4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSxcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0fVxuXHR9XG5cblx0LndsLXNhbWUtZGF5LW5vdGUge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHR9XG5cblx0LyogQW4gZXllJ3MgYm9va2luZzogdGhlIHR3byB3YXlzIHRvIGJvb2sgLSB0aGUgZGF0ZSwgYW5kIHRoZSBjYWxlbmRhciAtIGFzIG1hdGNoaW5nIGJ1dHRvbnMgb2Ygb25lIHdpZHRoLFxuXHQgICB3aXRoIGEgZ3V0dGVyIG9uIHRoZSBsZWZ0IGZvciB0aGUgc2FtZS1kYXkgY29weSBpY29uLCBrZXB0IHdoZXRoZXIgaXQgc2hvd3Mgb3Igbm90ICovXG5cdC53bC1ib29raW5nIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0cGFkZGluZy1sZWZ0OiAzMHB4O1xuXG5cdFx0LndsLWRhdGUtYnRuIHtcblx0XHRcdHdpZHRoOiAxNTZweDtcblx0XHR9XG5cdH1cblxuXHQud2wtYm9va2luZy1kYXRlIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHR9XG5cblx0LyogQmVzaWRlIGEgYm9va2VkIGRhdGU6IGNsZWFyIGl0ICovXG5cdC53bC1kYXRlLWNsZWFyIHtcblx0XHR3aWR0aDogMjZweDtcblx0XHRoZWlnaHQ6IDI2cHg7XG5cdFx0bWFyZ2luLWxlZnQ6IDRweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1lcnJvci1iZztcblx0XHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdH1cblx0fVxuXG5cdC53bC10YWJsZSA+IHRib2R5ID4gdHI6aG92ZXIgLndsLWRhdGUtY2xlYXIsXG5cdC53bC1kYXRlLWNsZWFyOmZvY3VzLXZpc2libGUge1xuXHRcdG9wYWNpdHk6IDE7XG5cdH1cblxuXHQvKiBUaGUgc3VyZ2VyeSBkYXRlOiBhIGJ1dHRvbiB0aGF0IG9wZW5zIHRoZSBicm93c2VyJ3MgZGF0ZSBwaWNrZXIuIFVuYm9va2VkLCBpdCBzdGFuZHMgb3V0IGFzIHRoZSBuZXh0XG5cdCAgIHRoaW5nIHRvIGRvOyBib29rZWQsIGl0IHJlYWRzIGFzIHRoZSBkYXRlLCBhbmQgaXMgc3RpbGwgdGhlIHdheSB0byBjaGFuZ2UgaXQuICovXG5cdC53bC1kYXRlLXBpY2sge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cblx0XHQvKiBVbmRlciB0aGUgYnV0dG9uLCBzbyB0aGUgcGlja2VyIG9wZW5zIGJlc2lkZSBpdDsgbmV2ZXIgc2VlbiBvciBjbGlja2VkIGl0c2VsZiAqL1xuXHRcdGlucHV0W3R5cGU9XCJkYXRlXCJdIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHR9XG5cblx0XHQvKiBBIGJyb3dzZXIgdGhhdCBjYW4ndCBvcGVuIHRoZSBwaWNrZXIgZnJvbSB0aGUgYnV0dG9uIGdldHMgdGhlIGRhdGUgaW5wdXQgaXRzZWxmICovXG5cdFx0Ji5pcy10eXBpbmcge1xuXHRcdFx0LndsLWRhdGUtYnRuIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblxuXHRcdFx0aW5wdXRbdHlwZT1cImRhdGVcIl0ge1xuXHRcdFx0XHRwb3NpdGlvbjogc3RhdGljO1xuXHRcdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdFx0XHRwYWRkaW5nOiAycHggOHB4O1xuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkbmF2eTtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHRcdHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIFVuYm9va2VkOiBhbiBvdXRsaW5lZCBuYXZ5IGJ1dHRvbiwgdGhlIG5leHQgdGhpbmcgdG8gZG8uIEJvb2tlZDogdGhlIGRhdGUsIHF1aWV0ZXIgc3RpbGwsIGFuZCBzdGlsbFxuXHQgICB0aGUgd2F5IHRvIGNoYW5nZSBpdC4gRmlsbGVkIHdpdGggYSBzb2Z0IHRpbnQgb25seSB3aGVuIHBvaW50ZWQgYXQuICovXG5cdC53bC1kYXRlLWJ0biB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0XHRtaW4td2lkdGg6IDEyNHB4O1xuXHRcdG1pbi1oZWlnaHQ6IDM0cHg7XG5cdFx0cGFkZGluZzogNnB4IDE0cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgY29sb3IoJG5hdnkgYWxwaGEoNTUlKSk7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdGJveC1zaGFkb3c6IDAgMXB4IDJweCAkbmF2eS10cC0wNTtcblx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSxcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAycHggOHB4IGNvbG9yKCRuYXZ5IGFscGhhKDEyJSkpO1xuXHRcdH1cblxuXHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdGN1cnNvcjogcHJvZ3Jlc3M7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGNhbGVuZGFyIGJ1dHRvbiBxdWlldGVucyB3aXRoIHRoZSBkYXRlIG9uY2UgdGhlIGV5ZSBpcyBib29rZWQsIHNvIHRoZSB0d28gc3RpbGwgbWF0Y2ggKi9cblx0LndsLWRhdGUtcGljay5pcy1ib29rZWQgLndsLWRhdGUtYnRuLFxuXHQud2wtZGF0ZS1idG4uaXMtYm9va2VkIHtcblx0XHRib3JkZXItY29sb3I6ICRncmV5LWJvcmRlci1saWdodDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cblx0XHQuZmEtY2FsZW5kYXIsXG5cdFx0LmZhLWNhbGVuZGFyLXBsdXMtbyB7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0fVxuXG5cdFx0LmZhLWNoZWNrIHtcblx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSksXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdGJvcmRlci1jb2xvcjogY29sb3IoJG5hdnkgYWxwaGEoNTUlKSk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LndsLWRhdGUtcGljay5pcy1sYXJnZSAud2wtZGF0ZS1idG4ge1xuXHRcdG1pbi13aWR0aDogMTYwcHg7XG5cdFx0bWluLWhlaWdodDogNDBweDtcblx0XHRwYWRkaW5nOiA4cHggMjBweDtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdH1cblxuXHQud2wtY291bnRlciB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC8qIFJlYWQtb25seSBvbmx5IHNvIHRoZSBwaWNrZXIgaXMgdXNlZCByYXRoZXIgdGhhbiB0eXBlZCBvdmVyIC0gbm90IGRpc2FibGVkLCBzbyBpdCBzaG91bGQgbm90IGxvb2sgaXQgKi9cblx0ZGF0ZXBpY2tlciB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cblx0XHQuZm9ybS1jb250cm9sW3JlYWRvbmx5XTpub3QoW2Rpc2FibGVkXSkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgTmV3IHRhc2sgZGlhbG9nXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2V0dGluZ3Mtc2hlbGwud29ya2xpc3QudGFzay1jcmVhdGUge1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRtYXJnaW46IDA7XG5cblx0LndsLWNyZWF0ZS1oZWFkIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdHBhZGRpbmc6IDE4cHggMjhweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblxuXHRcdC5zZXR0aW5ncy1hdmF0YXIgaSB7XG5cdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHBhdGllbnQsIG9yIHRoZSBzZWFyY2ggZm9yIG9uZSwgdGFrZXMgdGhlIHJlc3Qgb2YgdGhlIGhlYWRlciAqL1xuXHQud2wtY3JlYXRlLXdobyB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cblx0XHQucGF0aWVudC1waWNrZXItZmllbGQge1xuXHRcdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdH1cblx0fVxuXG5cdC53bC1jcmVhdGUtcGF0aWVudC1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdGdhcDogMTBweDtcblxuXHRcdC5pbnYtbGluay1idG4ge1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHR9XG5cdH1cblxuXHQud2wtY3JlYXRlLWV5ZWJyb3cge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LndsLWNyZWF0ZS1wYXRpZW50IHtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAxN3B4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjM7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC53bC1jcmVhdGUtc3ViIHtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LnNldHRpbmdzLXBhbmUtYm9keSB7XG5cdFx0bWluLWhlaWdodDogMDtcblx0fVxuXG5cdC53bC1jcmVhdGUtY2FyZCB7XG5cdFx0cGFkZGluZzogMjJweCAyNHB4O1xuXHR9XG5cblx0LndsLWNyZWF0ZS1yb3cge1xuXHRcdG1hcmdpbi10b3A6IDE2cHg7XG5cdH1cblxuXHQud2wtcHJlc2V0cyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRnYXA6IDZweDtcblx0XHRtYXJnaW46IDEwcHggMCAxOHB4O1xuXG5cdFx0LmNoaXAtc2VsZWN0IHtcblx0XHRcdHBhZGRpbmc6IDRweCAxMnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0fVxuXHR9XG5cblx0LndsLWNyZWF0ZS1lcnJvciB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJG5vdGljZS1lcnJvcjtcblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIE5hcnJvd2VyIHNjcmVlbnNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQG1lZGlhIChtYXgtd2lkdGg6IDExMDBweCkge1xuXHQuc2V0dGluZ3Mtc2hlbGwud29ya2xpc3Qge1xuXHRcdC53bC1zZWFyY2gge1xuXHRcdFx0d2lkdGg6IDIyMHB4O1xuXHRcdH1cblx0fVxufVxuXG4vKiBfc2V0dGluZ3MuY3NzIGxheXMgdGhlIHJhaWwgb3V0IGFzIGEgcm93IGhlcmUgYW5kIGhpZGVzIGl0cyBmb290ZXI7IHRoZSBuZXcgdGFzayBidXR0b24gc3RheXMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuXHQuc2V0dGluZ3Mtc2hlbGwud29ya2xpc3Qge1xuXHRcdC5zZXR0aW5ncy1uYXYtZm9vdGVyIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiA4cHggMTBweDtcblx0XHRcdGJvcmRlci10b3A6IG5vbmU7XG5cblx0XHRcdC5mb290ZXItbGFiZWwsXG5cdFx0XHQuZm9vdGVyLXZhbHVlIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblxuXHRcdFx0LndsLW5ldy1idG4ge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndsLXRpY2stcm93IHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXG5cdFx0XHQud2wtdGljay1uYW1lIHtcblx0XHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQud2wtdG9vbGJhciB7XG5cdFx0XHRwYWRkaW5nOiAxNHB4IDE2cHggMTBweDtcblx0XHR9XG5cblx0XHQuc2V0dGluZ3Mtbm90aWNlLndsLW5vdGljZSB7XG5cdFx0XHRtYXJnaW46IDAgMTZweCAxMHB4O1xuXHRcdH1cblxuXHRcdC5zZXR0aW5ncy1wYW5lLWJvZHkud2wtYm9keSB7XG5cdFx0XHRwYWRkaW5nOiAwIDE2cHggMTZweDtcblx0XHR9XG5cblx0XHQud2wtc2VhcmNoIHtcblx0XHRcdGZsZXg6IDEgMSAyMDBweDtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdH1cblx0fVxufVxuXG5Aa2V5ZnJhbWVzIHdsLWZhZGUtaW4ge1xuXHRmcm9tIHtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIHdsLXNoaW5lIHtcblx0ZnJvbSB7XG5cdFx0bGVmdDogLTcwJTtcblx0fVxuXG5cdHRvIHtcblx0XHRsZWZ0OiAxMzAlO1xuXHR9XG59XG5cbkBrZXlmcmFtZXMgd2wtcG9wIHtcblx0MCUge1xuXHRcdHRyYW5zZm9ybTogc2NhbGUoMC40KTtcblx0fVxuXG5cdDEwMCUge1xuXHRcdHRyYW5zZm9ybTogc2NhbGUoMSk7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBBZGQgdG8gc3VyZ2VyeSB3YWl0bGlzdDogdGhlIGRpYWxvZyB0aGUgU3VyZ2VyeSBXYWl0bGlzdCdzIHJhaWxcbi8qIGJ1dHRvbiBvcGVucyAobGFpZCBvdXQgYXMgdGhlIG5ldyB0YXNrIGRpYWxvZykgYW5kIHRoZSByb3cgaXQgYWRkc1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNldHRpbmdzLXNoZWxsLndvcmtsaXN0LndhaXRsaXN0IHtcblx0LndsLWp1c3QtYWRkZWQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGNvbG9yOiAjMWY4YTRjO1xuXHR9XG5cblx0Lmludi10YWJsZSA+IHRib2R5LndsLWdyb3VwLmlzLWp1c3QtYWRkZWQgPiB0ciA+IHRoLFxuXHQuaW52LXRhYmxlID4gdGJvZHkud2wtZ3JvdXAuaXMtanVzdC1hZGRlZCA+IHRyID4gdGQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmMmZiZjU7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgUHJlZmVycmVkIHRpbWVmcmFtZTogdGhlIGVudHJ5J3MgcGlsbCwgdGhlIGxpbmUgdW5kZXIgaXQgc2F5aW5nIGhvd1xuXHQvKiBpdCBzdGFuZHMsIGFuZCB0aGUgcmFpbCdzIFRpbWVmcmFtZSBmaWx0ZXJzLCBjb2xvdXJlZCB0aGUgc2FtZSB3YXlcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiBUaGUgcGlsbCBvbiBvbmUgbGluZTsgdGhlIGxpbmUgdW5kZXIgaXQgd3JhcHMgcmF0aGVyIHRoYW4gd2lkZW5pbmcgdGhlIGNvbHVtbiAqL1xuXHQud2wtY29sLXRpbWVmcmFtZSB7XG5cdFx0bWluLXdpZHRoOiAxMTJweDtcblx0fVxuXG5cdC53bC10Zi1ub3RlIHtcblx0XHRtYXgtd2lkdGg6IDE0MHB4O1xuXHR9XG5cblx0LndsLXRmIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRwYWRkaW5nOiAycHggOXB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDEycHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmMWYzZjg7XG5cdFx0Y29sb3I6ICMzYzQ2NTg7XG5cblx0XHQmLmlzLWFzYXAge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjFlODtcblx0XHRcdGNvbG9yOiAjYzI0MTBjO1xuXHRcdH1cblxuXHRcdCYuaXMtb2sge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2VhZjdlZjtcblx0XHRcdGNvbG9yOiAjMWY4YTRjO1xuXHRcdH1cblxuXHRcdCYuaXMtc29vbiB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmNmUwO1xuXHRcdFx0Y29sb3I6ICNhMTYyMDc7XG5cdFx0fVxuXG5cdFx0Ji5pcy1sYXRlIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGVjZWM7XG5cdFx0XHRjb2xvcjogI2M2MjgyODtcblx0XHR9XG5cdH1cblxuXHQud2wtdGYtbm90ZSB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0bWFyZ2luLXRvcDogM3B4O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHQmLmlzLXNvb24ge1xuXHRcdFx0Y29sb3I6ICNhMTYyMDc7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdH1cblxuXHRcdCYuaXMtbGF0ZSB7XG5cdFx0XHRjb2xvcjogI2M2MjgyODtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0fVxuXHR9XG5cblx0LndsLXRmLWZpbHRlciB7XG5cdFx0Ji5pcy1sYXRlIGkge1xuXHRcdFx0Y29sb3I6ICNjNjI4Mjg7XG5cdFx0fVxuXG5cdFx0Ji5pcy1zb29uIGkge1xuXHRcdFx0Y29sb3I6ICNhMTYyMDc7XG5cdFx0fVxuXG5cdFx0Ji5pcy1hc2FwIGkge1xuXHRcdFx0Y29sb3I6ICNjMjQxMGM7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIEZpdHRpbmcgdGhlIHRhYmxlOiB0ZW4gY29sdW1ucyBpbiB0aGUgbW9kYWwgd2l0aG91dCBzY3JvbGxpbmcgaXRcblx0Lyogc2lkZXdheXMsIHNvIHRoZSBsYXN0IGNvbHVtbiAoU3VyZ2VyeSkgaXMgbmV2ZXIgb2ZmIHRoZSBlZGdlXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LndsLXRhYmxlIHtcblx0XHQ+IHRoZWFkID4gdHIgPiB0aCxcblx0XHQ+IHRib2R5ID4gdHIgPiB0aCxcblx0XHQ+IHRib2R5ID4gdHIgPiB0ZCB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDhweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDhweDtcblx0XHR9XG5cblx0XHQ+IHRib2R5ID4gdHIgPiB0ZC53bC1jb2wtcHJvZ3Jlc3Mge1xuXHRcdFx0cGFkZGluZy1yaWdodDogMTJweDtcblx0XHR9XG5cblx0XHQud2wtZGF0ZS1waWNrIC53bC1kYXRlLWJ0biB7XG5cdFx0XHR3aWR0aDogMTI4cHg7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuXHRcdH1cblxuXHRcdC53bC1jb2wtc3VyZ2VvbiAud2wtY2hpcC1zZWxlY3Qgc2VsZWN0IHtcblx0XHRcdG1heC13aWR0aDogMTI4cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogQ29tcGxldGUgc3VyZ2VyeTogYXMgd2lkZSBhcyBpdHMgd29yZHMsIG9udG8gdHdvIGxpbmVzIHdoZW4gdGhlIHRhYmxlIGlzIHNob3J0IG9mIHJvb20gKi9cblx0LndsLXN1cmdlcnktYnRuIHtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0bWF4LXdpZHRoOiAxMzJweDtcblx0XHRwYWRkaW5nOiA2cHggMTBweDtcblx0XHR3aGl0ZS1zcGFjZTogbm9ybWFsO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0bGluZS1oZWlnaHQ6IDEuMjU7XG5cdH1cbn1cblxuLyogQmVsb3cgYSB3aWRlIHNjcmVlbiB0aGUgbW9kYWwgdGFrZXMgbW9yZSBvZiB0aGUgd2luZG93LCBhbmQgdGhlIHJhaWwgZ2l2ZXMgdGhlIHRhYmxlIHJvb20gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiAxNjAwcHgpIHtcblx0LndvcmtsaXN0LWRpYWxvZyB7XG5cdFx0bWluLXdpZHRoOiA5NiU7XG5cdFx0d2lkdGg6IDk2JTtcblx0fVxuXG5cdC5zZXR0aW5ncy1zaGVsbC53b3JrbGlzdC53YWl0bGlzdCAud29ya2xpc3QtcmFpbCB7XG5cdFx0ZmxleC1iYXNpczogMjIwcHg7XG5cdFx0d2lkdGg6IDIyMHB4O1xuXHR9XG59XG5cbi8qIEEgbGFwdG9wIHNjcmVlbjogYSBsaXR0bGUgbGVzcyByb29tIGFnYWluIGZvciB0aGUgcmFpbCwgdGhlIGxpc3QncyBtYXJnaW5zIGFuZCB0aGUgd2lkZXN0IGNvbnRyb2xzICovXG5AbWVkaWEgKG1heC13aWR0aDogMTQwMHB4KSB7XG5cdC5zZXR0aW5ncy1zaGVsbC53b3JrbGlzdC53YWl0bGlzdCB7XG5cdFx0LndvcmtsaXN0LXJhaWwge1xuXHRcdFx0ZmxleC1iYXNpczogMTk2cHg7XG5cdFx0XHR3aWR0aDogMTk2cHg7XG5cdFx0fVxuXG5cdFx0LndsLWJvZHkge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAxNnB4O1xuXHRcdFx0cGFkZGluZy1yaWdodDogMTZweDtcblx0XHR9XG5cblx0XHQud2wtdGFibGUge1xuXHRcdFx0PiB0aGVhZCA+IHRyID4gdGgsXG5cdFx0XHQ+IHRib2R5ID4gdHIgPiB0aCxcblx0XHRcdD4gdGJvZHkgPiB0ciA+IHRkIHtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiA2cHg7XG5cdFx0XHRcdHBhZGRpbmctcmlnaHQ6IDZweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQud2wtdGFibGUgLndsLWRhdGUtcGljayAud2wtZGF0ZS1idG4ge1xuXHRcdFx0d2lkdGg6IDExMnB4O1xuXHRcdH1cblxuXHRcdC53bC10YWJsZSAud2wtY29sLXN1cmdlb24gLndsLWNoaXAtc2VsZWN0IHNlbGVjdCB7XG5cdFx0XHRtYXgtd2lkdGg6IDEwNHB4O1xuXHRcdH1cblx0fVxufVxuXG4uc2V0dGluZ3Mtc2hlbGwud29ya2xpc3QudGFzay1jcmVhdGUge1xuXHQvKiBUaGUgYWRkIGZvcm0gc2l0cyBpbnNpZGUgdGhlIHNoZWxsLCBzbyBpdHMgZWxlbWVudCBhbmQgdGhlIGZvcm0gY2FycnkgdGhlIHNoZWxsJ3MgY29sdW1uIG9uIHRvIGl0cyBib2R5XG5cdCAgIGFuZCBhY3Rpb24gYmFyLiBBbiBlbGVtZW50IGlzIGlubGluZSBieSBkZWZhdWx0LCB3aGljaCBsZXQgdGhlIGZvcm0gZ3JvdyBwYXN0IHRoZSBkaWFsb2cgYW5kIGl0c1xuXHQgICBidXR0b25zIGJlIGN1dCBvZmYgb25jZSBhIHByb2NlZHVyZSBsaXN0IG9wZW5lZDsgaGVsZCB0byB0aGUgZGlhbG9nJ3MgaGVpZ2h0LCBvbmx5IHRoZSBmaWVsZHMgc2Nyb2xsLiAqL1xuXHRzdXJnZXJ5LXdhaXRsaXN0LWFkZC1mb3JtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0ZmxleDogMSAxIGF1dG87XG5cdFx0bWluLWhlaWdodDogMDtcblx0fVxuXG5cdC53bC1jcmVhdGUtZm9ybSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLWhlaWdodDogMDtcblxuXHRcdC8qIE5ldmVyIHdpZGVyIHRoYW4gdGhlIGRpYWxvZzsgaXQgc2Nyb2xscyBkb3duIG9ubHkgd2hlbiB0aGUgd2luZG93IGlzIHRvbyBzaG9ydCBmb3IgdGhlIGZvcm0gKi9cblx0XHQuc2V0dGluZ3MtcGFuZS1ib2R5IHtcblx0XHRcdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0XHRcdHBhZGRpbmc6IDhweCAxNnB4O1xuXG5cdFx0XHQmLndsLW5vLXNjcm9sbCB7XG5cdFx0XHRcdG92ZXJmbG93LXk6IGhpZGRlbjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQud2wtY3JlYXRlLWNhcmQge1xuXHRcdFx0cGFkZGluZzogMTJweCAxOHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIExhaWQgb3V0IGFzIHRoZSBuZXcgdGFzayBmb3JtLCBpbiBmaWVsZC1ncmlkIHJvd3M7IHRoZXNlIGxpbmUgdXAgd2hhdCB0aGUgd2FpdGxpc3QncyBvd24gZmllbGRzIGJyaW5nICovXG5cdC53bC1jcmVhdGUtZm9ybSB7XG5cdFx0LyogTmF0aXZlIHJhZGlvcywgY2VudHJlZCBvbiB0aGVpciB0ZXh0ICovXG5cdFx0LnJhZGlvLWlubGluZSB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDZweDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRtaW4taGVpZ2h0OiAyNnB4O1xuXG5cdFx0XHRpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuXHRcdFx0XHRwb3NpdGlvbjogc3RhdGljO1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGV4dGFyZWEge1xuXHRcdFx0cmVzaXplOiB2ZXJ0aWNhbDtcblx0XHR9XG5cdH1cblxuXHQud2wtYWRkLW9wdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGNvbHVtbi1nYXA6IDE4cHg7XG5cdFx0cm93LWdhcDogNHB4O1xuXHRcdG1pbi1oZWlnaHQ6IDM1cHg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0fVxuXG5cdC8qIE9uZSB0aW1lZnJhbWUgb3B0aW9uIHRvIGEgbGluZSAqL1xuXHQud2wtdGltZWZyYW1lIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAycHg7XG5cblx0XHQucmFkaW8taW5saW5lIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRtaW4taGVpZ2h0OiAyOHB4O1xuXHRcdH1cblx0fVxuXG5cdC53bC10aW1lZnJhbWUtbGluZSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0fVxuXG5cdC53bC10aW1lZnJhbWUtd2Vla3Mge1xuXHRcdHdpZHRoOiA2NHB4O1xuXHRcdGhlaWdodDogMzBweDtcblx0XHRwYWRkaW5nOiA0cHggMTBweDtcblx0fVxuXG5cdC53bC10aW1lZnJhbWUtZGF0ZSB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0d2lkdGg6IDExMnB4O1xuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRoZWlnaHQ6IDMwcHg7XG5cdFx0XHRwYWRkaW5nOiA0cHggMTBweDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgcHJvY2VkdXJlIHNlYXJjaCAoc2hhcmVkIHdpdGggdGhlIG9wZXJhdGlvbiBub3RlKTogaXRzIGlucHV0IGFuZCBpdHMgYWRkIGJ1dHRvbiBvbiBvbmUgbGluZSwgYXRcblx0ICAgdGhlIGZpZWxkJ3MgZnVsbCB3aWR0aCwgZWFjaCBleWUncyBwcm9jZWR1cmVzIHN0YWNrZWQgKi9cblx0cHJvY2VkdXJlLXNlYXJjaC1ib3gge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXG5cdFx0KyBwcm9jZWR1cmUtc2VhcmNoLWJveCB7XG5cdFx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRcdH1cblxuXHRcdC5yb3cge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblx0XHRcdGdhcDogOHB4O1xuXHRcdFx0bWFyZ2luOiAwO1xuXG5cdFx0XHQmOjpiZWZvcmUsXG5cdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdD4gW2NsYXNzKj1cImNvbC1cIl0ge1xuXHRcdFx0XHRmbG9hdDogbm9uZTtcblx0XHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHR9XG5cblx0XHRcdD4gLmNvbC1tZC04IHtcblx0XHRcdFx0ZmxleDogMSAxIGF1dG87XG5cdFx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdH1cblxuXHRcdFx0PiAuY29sLW1kLTMge1xuXHRcdFx0XHRmbGV4OiAwIDAgYXV0bztcblx0XHRcdFx0bWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXG5cdFx0XHQ+IC5jb2wteHMtMTIge1xuXHRcdFx0XHRmbGV4OiAxIDEgYXV0bztcblx0XHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5yb3cgKyAucm93IHtcblx0XHRcdG1hcmdpbi10b3A6IDZweDtcblx0XHR9XG5cblx0XHQuYnRuLWFkZC1pbmNpc2lvbiB7XG5cdFx0XHRoZWlnaHQ6IDM1cHg7XG5cdFx0XHRtaW4td2lkdGg6IDM1cHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0LyogVGhlIGxpc3QncyBhbmQgQm9vdHN0cmFwJ3MgdGFibGUgbWFyZ2lucyBsZWZ0IGEgZ2FwIHVuZGVyIHRoZSBwcm9jZWR1cmVzIGFkZGVkICovXG5cdFx0LmJsdWUtYm94LFxuXHRcdC50YWJsZS1pbmNpc2lvbnMge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgYXV0b21hdGlvbiB0YXNrIChzaGFyZWQgd2l0aCB0aGUgcHJvZ3Jlc3Mgbm90ZSk6IGxhYmVsbGVkIGFuZCBzcGFjZWQgYXMgdGhlIGZpZWxkcyBhcm91bmQgaXQgKi9cblx0YXV0b21hdGlvbi10YXNrIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblxuXHRcdC5wcmUtb3AtZm9ybSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdH1cblxuXHRcdC5yb3cge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcblx0XHRcdG1hcmdpbi1yaWdodDogMDtcblxuXHRcdFx0PiBbY2xhc3MqPVwiY29sLVwiXSB7XG5cdFx0XHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKiBUaGUgcHJvZ3Jlc3Mgbm90ZSdzIG93biBsYWJlbCwgdGV4dCBjb2xvdXIgYW5kIG1hcmtlciBvZmZzZXRzLCB1bmRvbmUgdG8gbWF0Y2ggdGhlIG90aGVyIGZpZWxkcyAqL1xuXHRcdC5jb250cm9sLWxhYmVsIHtcblx0XHRcdGNvbG9yOiAjMzQzYTQwICFpbXBvcnRhbnQ7XG5cdFx0XHRmb250LXNpemU6IDExcHggIWltcG9ydGFudDtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG5cdFx0XHRtYXJnaW4tYm90dG9tOiA2cHg7XG5cdFx0fVxuXG5cdFx0LnJhZGlvLWlubGluZSxcblx0XHQubWFya2VyIHtcblx0XHRcdHBvc2l0aW9uOiBzdGF0aWM7XG5cdFx0XHRjb2xvcjogIzMzMzMzMztcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHR9XG5cblx0XHQuZm9ybS1ncm91cCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0Y29sdW1uLWdhcDogMThweDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXG5cdFx0LmhlYWQtbGluayB7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS42O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG5cblx0LyogQW5vdGhlciBwcmFjdGljZSdzIHBhdGllbnQ6IGxpc3RlZCwgYnV0IGFuIGVudHJ5IGlzIG9ubHkgYWRkZWQgd2hlcmUgdGhlIHBhdGllbnQgaXMgcmVnaXN0ZXJlZCAqL1xuXHQucGF0aWVudC1yZXN1bHQuaXMtdW5hdmFpbGFibGUge1xuXHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdFx0b3BhY2l0eTogMC42O1xuXHR9XG59XG5cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgSW1wb3J0ZWQgcGF0aWVudHNcbi8qIFRoZSByZXZpZXcgZGlhbG9nIChtZXJnZSBpbnRvIGFuIGV4aXN0aW5nIHBhdGllbnQsIG9yIGNvbmZpcm0gYXMgbmV3KSxcbi8qIHRoZSByZXZpZXcgbGlzdCBmcm9tIHRoZSBuYXYsIHRoZSBkaWFsb2cgZm9yIGEgcGF0aWVudCB0aGUgaW1wb3J0XG4vKiBjb3VsZG4ndCBjcmVhdGUsIGFuZCB0aGUgXCJOZWVkcyByZXZpZXdcIiBsYWJlbCBpbiBwYXRpZW50IHBpY2tlcnMgYW5kXG4vKiBzZWFyY2guXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFwiTmVlZHMgcmV2aWV3XCIgbmV4dCB0byBhIHBhdGllbnQgaW4gYSBwaWNrZXIgb3IgdGhlIHNlYXJjaCByZXN1bHRzICovXG4ucGF0aWVudC1vcHRpb24tcmV2aWV3IHtcblx0ZmxleC1zaHJpbms6IDA7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0bWFyZ2luLWxlZnQ6IDZweDtcblx0cGFkZGluZzogMXB4IDhweDtcblx0Ym9yZGVyOiAxcHggc29saWQgJHdhcm5pbmctYm9yZGVyO1xuXHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2FybmluZy1iZztcblx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vKiBUaGUgcmV2aWV3IGRpYWxvZyBhbmQgdGhlIHJldmlldyBsaXN0LiBOb3QgYnVpbHQgb24gLnNldHRpbmdzLXNoZWxsOiB0aGF0IGlzIHRoZSBTZXR0aW5ncyBkaWFsb2cnc1xuLyogc2lkZS1ieS1zaWRlIGZyYW1lIChhIGxlZnQgcmFpbCBiZXNpZGUgdGhlIGNvbnRlbnQpLCB3aGljaCB3b3VsZCBsYXkgdGhlc2Ugb3V0IGluIGNvbHVtbnMuICovXG4ucGktZGlhbG9nIHtcblx0d2lkdGg6IDg4MHB4O1xuXHRtYXgtd2lkdGg6IDk1dnc7XG5cdG1heC1oZWlnaHQ6IDkwdmg7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cblx0LyogUmVnaXN0ZXJpbmcgYSBuZXcgcGF0aWVudDogcm9vbSBmb3IgdGhlIHJlZ2lzdHJhdGlvbiBmb3JtJ3MgdGhyZWUgY29sdW1ucyAqL1xuXHQmLnBpLWRpYWxvZy0td2lkZSB7XG5cdFx0d2lkdGg6IDEyMDBweDtcblx0fVxuXG5cdC8qIEFuZ3VsYXIgTWF0ZXJpYWwgdHJhbnNpdGlvbnMgZXZlcnkgcHJvcGVydHkgb2YgYW4gb3BlbiBkaWFsb2csIHdoaWNoIGFuaW1hdGVkIHRoZSB3aWR0aCB3aGVuZXZlciB0aGUgc3RlcFxuXHQvKiBjaGFuZ2VkIGl0LiBPbmx5IHRoZSBkaWFsb2cncyBvcGVuIGFuZCBjbG9zZSBtb3ZlLiAqL1xuXHQmLm1kLXRyYW5zaXRpb24taW4sXG5cdCYubWQtdHJhbnNpdGlvbi1vdXQge1xuXHRcdHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHksIHRyYW5zZm9ybTtcblx0fVxuXG5cdC8qIFNpemVkIHRvIHRoZWlyIGxhYmVsLCBhcyBpbiB0aGUgY2xhaW0gZmxvdydzIGFjdGlvbiBiYXJzOiB0aGUgZ2xvYmFsIC5idG4tbmF2eSAvIC5idG4tY2FuY2VsIGFyZSBmdWxsLXdpZHRoXG5cdC8qIHNsYWJzIGNhcHBlZCBhdCAyMjBweCwgd2hpY2ggcmVhZCBhcyBmb3JtIGZpZWxkcyB3aGVuIHR3byBzaXQgc2lkZSBieSBzaWRlLiBOb3QgdGhlIHJlZ2lzdHJhdGlvbiBmb3JtJ3Mgb3duLiAqL1xuXHQucGktYWN0aW9ucyAuYnRuLFxuXHQucGktY2FuZGlkYXRlIC5idG4sXG5cdC5waS1saXN0IC5idG4sXG5cdC5waS1jYWxsb3V0IC5idG4sXG5cdC5waS11Yy1zZWFyY2ggLmJ0biB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdG1pbi13aWR0aDogOHJlbTtcblx0XHRwYWRkaW5nOiA3cHggMjJweDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdH1cblxuXHQvKiBXaG8gaXMgYmVpbmcgcmV2aWV3ZWQsIGFuZCB3aGVyZSB0aGUgcmV2aWV3IGlzIHVwIHRvICovXG5cdC5waS1pZGVudGl0eSB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTRweDtcblx0XHRwYWRkaW5nOiAxNnB4IDI4cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdH1cblxuXHQucGktYXZhdGFyIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHR3aWR0aDogNDRweDtcblx0XHRoZWlnaHQ6IDQ0cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICRuYXZ5IDAlLCAkZGFya05hdnkgMTAwJSk7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuXHRcdGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCA1MywgMjEwLCAwLjIpO1xuXHR9XG5cblx0LnBpLWlkZW50aXR5LXRleHQge1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5waS1pZGVudGl0eS1uYW1lIHtcblx0XHRmb250LXNpemU6IDE3cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0LnBpLWlkZW50aXR5LW1ldGEge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQucGktY2hpcCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRwYWRkaW5nOiAycHggMTBweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdH1cblxuXHQucGktY2hpcC0taW1wb3J0IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5waS1zdGVwcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW46IDAgMCAwIGF1dG87XG5cdFx0cGFkZGluZzogMDtcblx0XHRsaXN0LXN0eWxlOiBub25lO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuXHRcdGxpIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiA4cHg7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC5waS1zdGVwLWRvdCB7XG5cdFx0XHR3aWR0aDogMjRweDtcblx0XHRcdGhlaWdodDogMjRweDtcblx0XHRcdGJvcmRlcjogMS41cHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0fVxuXG5cdFx0bGkuaXMtY3VycmVudCB7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblxuXHRcdFx0LnBpLXN0ZXAtZG90IHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGkuaXMtZG9uZSAucGktc3RlcC1kb3Qge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW47XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW47XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblxuXHRcdC5waS1zdGVwcy1saW5lIHtcblx0XHRcdHdpZHRoOiAyOHB4O1xuXHRcdFx0aGVpZ2h0OiAxcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHN0ZXAgaXRzZWxmLCB3aGljaCBzY3JvbGxzIGJldHdlZW4gdGhlIGZpeGVkIGhlYWRlciBhbmQgZm9vdGVyICovXG5cdC5waS1ib2R5IHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHRwYWRkaW5nOiAyNHB4IDI4cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblx0fVxuXG5cdC5waS10aXRsZSB7XG5cdFx0bWFyZ2luOiAwIDAgNnB4O1xuXHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdH1cblxuXHQucGktbGVkZSB7XG5cdFx0bWF4LXdpZHRoOiA3MDBweDtcblx0XHRtYXJnaW46IDAgMCAxOHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU1O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC5waS1tdXRlZCB7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdH1cblxuXHQucGktZm9vdG5vdGUge1xuXHRcdG1hcmdpbjogMTBweCAycHggMDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQucGktc3RhdGUge1xuXHRcdHBhZGRpbmc6IDQ4cHggMDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LnBpLWNhcmQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0Ym94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuXHR9XG5cblx0LnBpLWNhcmQtLWZsdXNoIHtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG5cblx0LnBpLWNhbGxvdXQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDE2cHg7XG5cdFx0cGFkZGluZzogMTJweCAxNHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cblx0XHQ+IGkge1xuXHRcdFx0bWFyZ2luLXRvcDogM3B4O1xuXHRcdH1cblx0fVxuXG5cdC5waS1jYWxsb3V0LS1pbmZvIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdGJvcmRlci1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXG5cdFx0PiBpIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQucGktY2FsbG91dC0td2FybmluZyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdhcm5pbmctYmc7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkd2FybmluZy1ib3JkZXI7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cblx0XHRhIHtcblx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRcdH1cblx0fVxuXG5cdC5waS1jYWxsb3V0LS1zdWNjZXNzIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMDg7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW4tdHAtMzA7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblxuXHRcdD4gaSB7XG5cdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdH1cblx0fVxuXG5cdC5waS1jYWxsb3V0LS1lcnJvciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0LXRwLTE1O1xuXHRcdGJvcmRlci1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdH1cblxuXHQucGktdGFncyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luLXRvcDogNnB4O1xuXHR9XG5cblx0LnBpLXRhZyB7XG5cdFx0cGFkZGluZzogMnB4IDEwcHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJHdhcm5pbmctYm9yZGVyO1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXG5cdC8qIFN0ZXAgMTogcG9zc2libGUgZHVwbGljYXRlcyAqL1xuXHQucGktY2FuZGlkYXRlcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW46IDAgMCAxMnB4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0fVxuXG5cdC5waS1jYW5kaWRhdGUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE2cHg7XG5cdFx0cGFkZGluZzogMTZweCAxOHB4O1xuXG5cdFx0LmJ0biB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHR9XG5cdH1cblxuXHQucGktY2FuZGlkYXRlLXdobyB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdH1cblxuXHQucGktY2FuZGlkYXRlLW5hbWUge1xuXHRcdG1hcmdpbi1ib3R0b206IDZweDtcblx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0LnBpLWNhbmRpZGF0ZS1mYWN0cyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA0cHggMjJweDtcblx0XHRtYXJnaW46IDA7XG5cblx0XHQ+IGRpdiB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0Z2FwOiA2cHg7XG5cdFx0fVxuXG5cdFx0ZHQge1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0XHRkZCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdH1cblx0fVxuXG5cdC5waS1jYW5kaWRhdGUtYmxvY2tlZCB7XG5cdFx0bWFyZ2luLXRvcDogOHB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQucGktbmV3LXBhdGllbnQge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE0cHg7XG5cdFx0cGFkZGluZzogMTZweCAxOHB4O1xuXHRcdGJvcmRlci1zdHlsZTogZGFzaGVkO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZTtcblxuXHRcdD4gaTpmaXJzdC1jaGlsZCB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdHdpZHRoOiAzOHB4O1xuXHRcdFx0aGVpZ2h0OiAzOHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0fVxuXG5cdFx0PiBzcGFuIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdGdhcDogMnB4O1xuXHRcdH1cblxuXHRcdC5waS1uZXctcGF0aWVudC1nbyB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSksXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDRweCAxNHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4wOCk7XG5cdFx0fVxuXHR9XG5cblx0LyogU3RlcCAyOiBtZXJnaW5nICovXG5cdC5waS1jb21wYXJlIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuXG5cdFx0dGgsXG5cdFx0dGQge1xuXHRcdFx0cGFkZGluZzogMTFweCAxNnB4O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWYxZjc7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHR9XG5cblx0XHR0aGVhZCB0aCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC40cHg7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdHRib2R5IHRoIHtcblx0XHRcdHdpZHRoOiAyMCU7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR9XG5cblx0XHR0Ym9keSB0cjpsYXN0LWNoaWxkIHRoLFxuXHRcdHRib2R5IHRyOmxhc3QtY2hpbGQgdGQge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHR9XG5cblx0XHQvKiBUYWtpbmcgdGhlIGltcG9ydDogaXRzIHZhbHVlIGlzIHdoYXQgdGhlIHJlY29yZCB3aWxsIGhvbGQsIGFuZCB0aGUgZXhpc3Rpbmcgb25lIGlzIHJlcGxhY2VkICovXG5cdFx0dHIuaXMtdGFrZW4gdGQ6bnRoLWNoaWxkKDMpIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cblx0XHR0ci5pcy10YWtlbiB0ZDpudGgtY2hpbGQoMikgc3Bhbjpub3QoLnBpLW11dGVkKSB7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0XHR9XG5cblx0XHQucGktY29tcGFyZS10YWtlIHtcblx0XHRcdHdpZHRoOiAxMTBweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdFx0aW5wdXQge1xuXHRcdFx0XHR3aWR0aDogMTZweDtcblx0XHRcdFx0aGVpZ2h0OiAxNnB4O1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdH1cblxuXHRcdFx0aW5wdXRbZGlzYWJsZWRdIHtcblx0XHRcdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIFN0ZXAgMjogcmVnaXN0ZXJpbmcgLSB0aGUgZGFzaGJvYXJkJ3MgcmVnaXN0cmF0aW9uIGZvcm0sIGluIGEgY2FyZCBpbnN0ZWFkIG9mIHVuZGVyIGl0cyBuYXZ5IHJ1bGUgKi9cblx0LnBpLWZvcm0tY2FyZCB7XG5cdFx0cGFkZGluZzogOHB4IDhweCAwO1xuXG5cdFx0Lm9wZXJhdGlvbi1mb3JtIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDE2cHggMTJweCAwO1xuXHRcdFx0Ym9yZGVyLXRvcDogMDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgZm9vdGVyOiBhbHdheXMgaW4gdmlldywgd2l0aCB0aGUgc3RlcCdzIG1haW4gYWN0aW9uIG9uIHRoZSByaWdodC4gT3JkZXJlZCBhZnRlciB0aGUgY29udGVudCwgd2hpY2hcblx0LyogQW5ndWxhciBNYXRlcmlhbCBnaXZlcyBvcmRlcjogMS4gKi9cblx0LnBpLWFjdGlvbnMge1xuXHRcdG9yZGVyOiAyO1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0cGFkZGluZzogMTRweCAyOHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG5cdFx0LmJ0biB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0LnBpLWxpbmsge1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHR9XG5cdH1cblxuXHQucGktYWN0aW9ucy1tZXNzYWdlIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0fVxuXG5cdC5waS1hY3Rpb25zLWVycm9yIHtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHR9XG5cblx0LyogVGhlIHJldmlldyBsaXN0ICovXG5cdC5waS1saXN0IHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuXG5cdFx0dGgsXG5cdFx0dGQge1xuXHRcdFx0cGFkZGluZzogMTJweCAxNnB4O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWYxZjc7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHR9XG5cblx0XHR0aGVhZCB0aCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC40cHg7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdHRib2R5IHRyOmxhc3QtY2hpbGQgdGQge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHR9XG5cblx0XHQucGktbGlzdC1uYW1lIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblxuXHRcdC5waS1saXN0LWFjdGlvbiB7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0LyogV2hhdCBob2xkcyB0aGUgcGF0aWVudCBiYWNrLCBpbiB0aGUgcHJvZ3Jlc3MgdGFiJ3MgY29sb3VyczogZ3JlZW4gZm9yIGRldGFpbHMgdG8gY29tcGxldGUsIHdoaWNoIGNvdW50cyBhc1xuXHRcdC8qIGEgc3VjY2VzcywgYW5kIHNvZnQgcmVkIGZvciBkdXBsaWNhdGVzIGFuZCB1bmZpbmlzaGVkIG1lcmdlcyAqL1xuXHRcdC5waS1yZXNvbHZlIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogNnB4O1xuXHRcdFx0cGFkZGluZzogNHB4IDExcHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdFx0Y29sb3I6ICR0ZWFsO1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0XHR9XG5cblx0XHRcdCYuaXMtZmFpbGVkIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1lcnJvci1iZztcblx0XHRcdFx0Y29sb3I6ICRkYW5nZXI7XG5cblx0XHRcdFx0aSB7XG5cdFx0XHRcdFx0Y29sb3I6ICRyZWQtc29mdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5waS1udW0ge1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBsaXN0IGFuZCBpdHMgcHJvZ3Jlc3MsIGFzIHRhYnMgKi9cblx0LnBpLXRhYnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0bWFyZ2luOiAwIDAgMTZweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG5cblx0LnBpLXRhYiB7XG5cdFx0bWFyZ2luLWJvdHRvbTogLTFweDtcblx0XHRwYWRkaW5nOiA4cHggMTRweDtcblx0XHRib3JkZXI6IDA7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0Ji5pcy1jdXJyZW50IHtcblx0XHRcdGJvcmRlci1ib3R0b20tY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBwcm9ncmVzcyB0YWIgKi9cblx0LnBpLXByb2dyZXNzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxNnB4O1xuXG5cdFx0PiBkaXYge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRnYXA6IDE2cHg7XG5cdFx0fVxuXHR9XG5cblx0LnBpLXByb2dyZXNzLWhlYWRpbmcge1xuXHRcdG1hcmdpbjogMCAwIDhweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC40cHg7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQucGktcHJvZ3Jlc3MtaGVybyB7XG5cdFx0cGFkZGluZzogMThweCAyMHB4O1xuXHR9XG5cblx0LnBpLXByb2dyZXNzLWhlYWRsaW5lIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA0cHggMTJweDtcblx0fVxuXG5cdC5waS1wcm9ncmVzcy1wZXJjZW50IHtcblx0XHRmb250LXNpemU6IDM0cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRsaW5lLWhlaWdodDogMTtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0LnBpLXByb2dyZXNzLWNhcHRpb24ge1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHR9XG5cblx0LnBpLXByb2dyZXNzLXRyYWNrIHtcblx0XHRoZWlnaHQ6IDhweDtcblx0XHRtYXJnaW46IDE0cHggMCAxNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDRweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdH1cblxuXHQucGktcHJvZ3Jlc3MtZmlsbCB7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGJvcmRlci1yYWRpdXM6IDRweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW47XG5cdH1cblxuXHQucGktcHJvZ3Jlc3MtZmFjdHMge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuXHRcdGdhcDogMTJweDtcblx0XHRtYXJnaW46IDA7XG5cblx0XHRkdCB7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdGRkIHtcblx0XHRcdG1hcmdpbjogMnB4IDAgMDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBzdWNjZXNzZXMgaW4gYSByb3cgYWJvdmUgdGhlIGZhaWx1cmVzLCBzbyB0aGUgdGlja3MgbGluZSB1cCBhY3Jvc3MgdGhlIGRpYWxvZyAqL1xuXHQucGktcHJvZ3Jlc3MtZ3JvdXBzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxNnB4O1xuXHR9XG5cblx0LnBpLXN0YXQtZ3JpZCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG5cdFx0Z2FwOiA4cHg7XG5cdH1cblxuXHQvKiBFYWNoIG91dGNvbWUgZmlsbHMgaXRzIGNlbGwsIHNvIGEgcm93J3MgY2FyZHMgbGluZSB1cCB3aGV0aGVyIG9yIG5vdCB0aGV5IG9wZW4gdGhlIGxpc3QgKi9cblx0LnBpLXN0YXQtZ3JpZCA+IGRpdiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0fVxuXG5cdC5waS1zdGF0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXg6IDE7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDRweDtcblx0XHRwYWRkaW5nOiAxMnB4IDE0cHg7XG5cdH1cblxuXHQvKiBBIGNvdW50IG9mIHBhdGllbnRzIHN0aWxsIHRvIHJldmlldzogb3BlbnMgdGhlbSBvbiB0aGUgbGlzdCAqL1xuXHRidXR0b24ucGktc3RhdCB7XG5cdFx0Zm9udDogaW5oZXJpdDtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcblx0XHR9XG5cblx0XHQmOmhvdmVyIC5waS1zdGF0LWxpbmsgaSxcblx0XHQmOmZvY3VzLXZpc2libGUgLnBpLXN0YXQtbGluayBpIHtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpO1xuXHRcdH1cblx0fVxuXG5cdC5waS1zdGF0LWxpbmsge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luLXRvcDogYXV0bztcblx0XHRwYWRkaW5nLXRvcDogNHB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkbmF2eTtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2U7XG5cdFx0fVxuXHR9XG5cblx0LnBpLXN0YXQtdmFsdWUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRsaW5lLWhlaWdodDogMS4xO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdH1cblxuXHQucGktc3RhdC1pY29uIHtcblx0XHRmb250LXNpemU6IDE3cHg7XG5cblx0XHQmLmlzLW9rIHtcblx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0fVxuXG5cdFx0Ji5pcy1mYWlsZWQge1xuXHRcdFx0Y29sb3I6ICRyZWQtc29mdDtcblx0XHR9XG5cdH1cblxuXHQucGktc3RhdC1sYWJlbCB7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjM7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LyogQSBjYWxsb3V0IHdpdGggYW4gYWN0aW9uIG9mIGl0cyBvd24sIGF0IGl0cyBlbmQgKi9cblx0LnBpLWNhbGxvdXQtdGV4dCB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdH1cblxuXHQucGktY2FsbG91dC1hY3Rpb24ge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGFsaWduLXNlbGY6IGNlbnRlcjtcblx0fVxuXG5cdC8qIFRoZSBsaXN0J3MgZmlsdGVyOiBldmVyeSBwYXRpZW50IHRvIHJldmlldywgb25seSB0aG9zZSB0aGUgaW1wb3J0IGNvdWxkbid0IGNyZWF0ZSwgb3Igb25lIGdyb3VwIG9mIHRoZSByZXN0ICovXG5cdC5waS1maWx0ZXJzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW46IDAgMCAxNHB4O1xuXHR9XG5cblx0LnBpLWZpbHRlciB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRwYWRkaW5nOiA1cHggMTRweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHR9XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCYuaXMtY3VycmVudCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQvKiBIb3cgbWFueSB3ZXJlIG5vdCBjcmVhdGVkLCBpbiB0aGUgc29mdCByZWQgdGhlIGxpc3QgZ2l2ZXMgdGhlbSAqL1xuXHQucGktZmlsdGVyLWNvdW50IHtcblx0XHRwYWRkaW5nOiAwIDdweDtcblx0XHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtZXJyb3ItYmc7XG5cdFx0Y29sb3I6ICRkYW5nZXI7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdH1cblxuXHQvKiBBIHBhdGllbnQgdGhlIGltcG9ydCBjb3VsZG4ndCBjcmVhdGU6IHdoYXQgdGhlIHByZXZpb3VzIHN5c3RlbSBoZWxkLCBiZXNpZGUgdGhlaXIgcmVjb3JkcyAqL1xuXHQucGktdWMtZ3JpZCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDE2cHg7XG5cdH1cblxuXHQucGktdWMtcGFuZWwge1xuXHRcdHBhZGRpbmc6IDE0cHggMTZweDtcblxuXHRcdC5waS1wcm9ncmVzcy1oZWFkaW5nIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0LnBpLXVjLXNlY3Rpb25zIHtcblx0XHRcdG1hcmdpbi10b3A6IDEycHg7XG5cdFx0fVxuXHR9XG5cblx0LnBpLXVjLWZhY3RzIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWF4LWNvbnRlbnQgbWlubWF4KDAsIDFmcik7XG5cdFx0Z2FwOiA2cHggMTRweDtcblx0XHRtYXJnaW46IDA7XG5cblx0XHQ+IGRpdiB7XG5cdFx0XHRkaXNwbGF5OiBjb250ZW50cztcblx0XHR9XG5cblx0XHRkdCB7XG5cdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdGRkIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcblx0XHR9XG5cdH1cblxuXHQucGktdWMtZG9jdW1lbnRzIHtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMDtcblx0XHRsaXN0LXN0eWxlOiBub25lO1xuXG5cdFx0bGkge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDEwcHg7XG5cdFx0XHRwYWRkaW5nOiA3cHggMDtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXG5cdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQ+IGkge1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cblx0XHRcdC5waS1saW5rLFxuXHRcdFx0LnBpLW11dGVkIHtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0XHR9XG5cblx0XHRcdC5waS1saW5rIHtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5waS11Yy1kb2N1bWVudHMtbm90ZSB7XG5cdFx0bWFyZ2luOiA4cHggMCAwO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHR9XG5cblx0LyogQSByZWNvcmQsIHJlYWQgaW4gdGhlIFBERiB2aWV3ZXIgaW4gcGxhY2Ugb2YgdGhlIHBhdGllbnQncyBkZXRhaWxzICovXG5cdC5waS11Yy12aWV3ZXItaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0Z2FwOiA4cHggMTZweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMnB4O1xuXG5cdFx0LnBpLXRpdGxlIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQucGktdWMtdmlld2VyLW5hdiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDhweDtcblxuXHRcdC5idG4ge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBwYWdlcyBzY3JvbGwgaW5zaWRlIHRoZSB2aWV3ZXIsIHNpemVkIHNvIHRoZSBkaWFsb2cgaXRzZWxmIG5ldmVyIGhhcyB0bzogdGhlIHdpbmRvdydzIGhlaWdodCBsZXNzIHRoZVxuXHQgICBkaWFsb2cncyB0aXRsZSwgdGhlIHBhdGllbnQgYWJvdmUsIHRoZSByZWNvcmQncyBoZWFkaW5nIGFuZCB0aGUgdmlld2VyJ3MgdG9vbGJhciwgYW5kIHRoZSBhY3Rpb25zIGJlbG93ICovXG5cdC5waS11Yy12aWV3ZXIgLnBkZi1zY3JvbGwtdmlld2VyLXNjcm9sbCB7XG5cdFx0aGVpZ2h0OiBjYWxjKDkwdmggLSAzNjBweCk7XG5cdFx0bWluLWhlaWdodDogMjQwcHg7XG5cdFx0bWF4LWhlaWdodDogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0fVxuXG5cdC5waS11Yy1kb2N1bWVudC1kYXRlIHtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0LyogVGhlIHBhdGllbnQgY2hvc2VuIGZvciB0aGUgcmVjb3Jkcywgb24gaXRzIG93biBhYm92ZSB3aGF0IGFkZGluZyB0aGVtIG1lYW5zICovXG5cdC5waS11Yy10YXJnZXQge1xuXHRcdG1hcmdpbi1ib3R0b206IDE2cHg7XG5cdH1cblxuXHQucGktdWMtb3B0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMTBweDtcblx0fVxuXG5cdC5waS11Yy1zZWFyY2gge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDE2cHg7XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0fVxuXHR9XG5cblx0LyogQSBuYXJyb3cgd2luZG93OiB0aGUgb3V0Y29tZXMgYW5kIHRoZSBmYWN0cyBnbyB0d28gdG8gYSByb3csIGFuZCB0aGUgbm90LWNyZWF0ZWQgcGF0aWVudCdzIHBhbmVscyBzdGFjayAqL1xuXHRAbWVkaWEgKG1heC13aWR0aDogNzYwcHgpIHtcblx0XHQucGktc3RhdC1ncmlkLFxuXHRcdC5waS1wcm9ncmVzcy1mYWN0cyB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG5cdFx0fVxuXG5cdFx0LnBpLXVjLWdyaWQge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcblx0XHR9XG5cdH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgZU9yZGVycyAtIGxhYiBtZW51IGluIHRoZSBwYXRpZW50IGhlYWRlciwgYW5kIHRoZSBlT3JkZXJzIGhlbHBcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogR3JleWVkIG91dCB3aXRob3V0IHRoZSBlbGVjdHJvbmljIHByZXNjcmliaW5nIHBlcm1pc3Npb24uIFRoZSBsaW5rIHRha2VzIG5vIGNsaWNrcywgc28gaG92ZXJpbmcgdGhlXG4gICBpdGVtIHNob3dzIGl0cyB0aXRsZSwgd2hpY2ggc2F5cyB3aHkuICovXG4ucGF0aWVudC1oZWFkZXIgbGkuZW9yZGVycy1sb2NrZWQge1xuXHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uZW9yZGVycy1tZW51IHtcblx0dGV4dC1hbGlnbjogbGVmdDtcblx0LyogVGhlIHBvcG92ZXIgcmVuZGVycyBpbnNpZGUgdGhlIHBhdGllbnQgaGVhZGVyJ3MgbmF2IGxpc3QsIHdoaWNoIHNwYWNlcyBvdXQgaXRzIGxldHRlcnMgYW5kXG5cdCAgIHNocmlua3MgaXRzIHRleHQ7IHVuZG8gdGhhdCBmb3IgdGhlIG1lbnUuICovXG5cdGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG5cdGZvbnQtc2l6ZTogMTNweDtcblxuXHQvKiAuLi5hbmQgd2hpY2ggbGF5cyBldmVyeSBsaXN0IG91dCBhcyBhIGhvcml6b250YWwgcGlsbCBiYXIgKF9uYXYuY3NzLCAubmF2LXdyYXAtZmxleCAubmF2LW5hdi13cmFwXG5cdCAgIHVsIC8gbGkpLiBUaGUgY2hlY2tsaXN0IGlzIGEgcGxhaW4gdmVydGljYWwgbGlzdCwgc28gcmVzZXQgaXQgd2l0aCBzZWxlY3RvcnMgdGhhdCBvdXQtcmFuayB0aG9zZS4gKi9cblx0LmVvcmRlcnMtbWVudS1jYXJkIHVsLmVvcmRlcnMtY2hlY2tsaXN0IHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwYWRkaW5nOiAwO1xuXHRcdG1hcmdpbjogMDtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcblxuXHRcdD4gbGkge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdHBhZGRpbmc6IDVweCAwO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMDtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0fVxuXHR9XG5cblx0Lm1lbnUtYXJyb3cge1xuXHRcdGJvcmRlci1ib3R0b20tY29sb3I6ICR3aGl0ZTtcblx0fVxuXG5cdC5lb3JkZXJzLW1lbnUtY2FyZCB7XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDEwLCAzNywgNjQsIDAuMTIpO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdH1cblxuXHQuZW9yZGVycy1tZW51LWhlYWQge1xuXHRcdHBhZGRpbmc6IDEycHggMTZweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4xZW07XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdH1cblxuXHQuZW9yZGVycy1tZW51LWZvb3Qge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0cGFkZGluZzogMTJweCAxNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRiYWNrZ3JvdW5kOiAkcGFsZUJsdWU7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblxuXHRcdGEge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHR9XG5cdH1cbn1cblxuLyogV2hhdCBpcyBzdGlsbCBtaXNzaW5nIGJlZm9yZSBlT3JkZXJzIGNhbiBvcGVuICovXG4uZW9yZGVycy1zZXR1cC1wYW5lbCB7XG5cdG1hcmdpbjogMTJweDtcblx0cGFkZGluZzogMTJweDtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdGJhY2tncm91bmQ6ICR3YXJuaW5nLWJnO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkd2FybmluZy1ib3JkZXI7XG5cblx0aDUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRtYXJnaW46IDAgMCA4cHg7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGZvbnQtd2VpZ2h0OiA3MDA7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdH1cblxuXHQuZW9yZGVycy1kaXNtaXNzIHtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRwYWRkaW5nOiAycHggOXB4O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkd2FybmluZy1ib3JkZXI7XG5cdFx0Ym9yZGVyLXJhZGl1czogOTk5cHg7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHR9XG5cdH1cbn1cblxuLmVvcmRlcnMtY2hlY2tsaXN0IHtcblx0bGlzdC1zdHlsZTogbm9uZTtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwO1xuXG5cdGxpIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0cGFkZGluZzogNXB4IDA7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdH1cblxuXHQuZW9yZGVycy1jaGVjay1sYWJlbCB7XG5cdFx0ZmxleDogMTtcblxuXHRcdHNtYWxsIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblx0fVxufVxuXG4uZW9yZGVycy1jaGVjayB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0ZmxleDogbm9uZTtcblx0d2lkdGg6IDE4cHg7XG5cdGhlaWdodDogMThweDtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRmb250LXNpemU6IDEwcHg7XG5cdGNvbG9yOiAkd2hpdGU7XG5cblx0Ji5vayB7XG5cdFx0YmFja2dyb3VuZDogJGdyZWVuO1xuXHR9XG5cblx0Ji50b2RvIHtcblx0XHRiYWNrZ3JvdW5kOiAkb3JhbmdlO1xuXHR9XG59XG5cbi5lb3JkZXJzLWZpeCB7XG5cdHBhZGRpbmc6IDNweCA4cHg7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0Y29sb3I6ICRuYXZ5O1xuXHRiYWNrZ3JvdW5kOiAkd2hpdGU7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0Ym9yZGVyLXJhZGl1czogNnB4O1xuXG5cdCY6aG92ZXIge1xuXHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdH1cbn1cblxuLmVvcmRlcnMtYXNrIHtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRjb2xvcjogJHRleHQtbXV0ZWQ7XG59XG5cbi8qIE9uZSByb3cgcGVyIGxhYiAqL1xuLmVvcmRlcnMtbGFiIHtcblx0ZGlzcGxheTogZmxleDtcblx0Z2FwOiAxMnB4O1xuXHRwYWRkaW5nOiAxMnB4IDE2cHg7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OyAvKiBCb290c3RyYXAgdW5kZXJsaW5lcyBsaW5rcyBvbiBob3ZlcjsgdGhlIHJvdyBpcyB0aGUgbGluayAqL1xuXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQ6ICRwYWxlQmx1ZTtcblx0fVxuXG5cdC5lb3JkZXJzLWxhYi1iYXIge1xuXHRcdHdpZHRoOiAzcHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMnB4O1xuXHRcdGJhY2tncm91bmQ6ICRjeWFuO1xuXHR9XG5cblx0LmVvcmRlcnMtbGFiLWJvZHkge1xuXHRcdGZsZXg6IDE7XG5cdH1cblxuXHQuZW9yZGVycy1sYWItdGl0bGUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRjb2xvcjogJG5hdnk7XG5cblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IDEycHg7XG5cdFx0XHRoZWlnaHQ6IDEycHg7XG5cdFx0fVxuXHR9XG5cblx0LmVvcmRlcnMtbGFiLWRlc2Mge1xuXHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LmVvcmRlcnMtbGFiLWhpbnQge1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdH1cblxuXHQmLmJsb2NrZWQge1xuXHRcdC5lb3JkZXJzLWxhYi1iYXIge1xuXHRcdFx0YmFja2dyb3VuZDogJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHR9XG5cblx0XHQuZW9yZGVycy1sYWItdGl0bGUge1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblx0fVxufVxuXG4uZW9yZGVycy1waWxsIHtcblx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cblx0c3BhbiB7XG5cdFx0cGFkZGluZzogMnB4IDhweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRib3JkZXItcmFkaXVzOiA5OTlweDtcblx0fVxuXG5cdC5yZWFkeSB7XG5cdFx0YmFja2dyb3VuZDogJGdyZWVuLXRwLTEwO1xuXHRcdGNvbG9yOiAkZ3JlZW47XG5cdH1cblxuXHQud2FybiB7XG5cdFx0YmFja2dyb3VuZDogJHdhcm5pbmctYmc7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdH1cblxuXHQub3BlbiB7XG5cdFx0YmFja2dyb3VuZDogJG5hdnktcGFsZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cbn1cblxuLmVvcmRlcnMtaGlkZGVuLW5vdGUge1xuXHRwYWRkaW5nOiA5cHggMTZweDtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdGJvcmRlci10b3A6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG5cdGEge1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXdlaWdodDogNjAwO1xuXHR9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIGVPcmRlcnMgaGVscFxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLmVvcmRlcnMtaGVscCB7XG5cdHdpZHRoOiA4MjBweDtcblx0bWF4LXdpZHRoOiA5NXZ3O1xuXG5cdC5lb3JkZXJzLXRhYnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0cGFkZGluZzogMCAyMnB4O1xuXHRcdGJhY2tncm91bmQ6ICRwYWxlQmx1ZTtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG5cdFx0YnV0dG9uIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiA2cHg7XG5cdFx0XHRwYWRkaW5nOiAxMnB4IDE0cHg7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRcdGJvcmRlcjogMDtcblx0XHRcdGJvcmRlci1ib3R0b206IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuXHRcdFx0Ji5vbiB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogJGN5YW47XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmVvcmRlcnMtY291bnQge1xuXHRcdHBhZGRpbmc6IDFweCA2cHg7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0YmFja2dyb3VuZDogJG9yYW5nZTtcblx0XHRib3JkZXItcmFkaXVzOiA5OTlweDtcblx0fVxuXG5cdC5lb3JkZXJzLWhlbHAtYm9keSB7XG5cdFx0cGFkZGluZzogMjJweDtcblx0XHRtYXgtaGVpZ2h0OiA2MHZoO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdH1cblxuXHQuZW9yZGVycy1sZWFkIHtcblx0XHRtYXJnaW46IDAgMCAxNnB4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC5lb3JkZXJzLXN0ZXAge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdFx0cGFkZGluZzogMTRweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cblx0XHQmLnRvZG8ge1xuXHRcdFx0YmFja2dyb3VuZDogJHdhcm5pbmctYmc7XG5cdFx0XHRib3JkZXItY29sb3I6ICR3YXJuaW5nLWJvcmRlcjtcblxuXHRcdFx0LmVvcmRlcnMtc3RlcC1udW0ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAkb3JhbmdlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGg0IHtcblx0XHRcdG1hcmdpbjogMnB4IDAgNHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRsaW5lLWhlaWdodDogMS40NTtcblx0XHR9XG5cblx0XHQuYnRuIHtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cdH1cblxuXHQuZW9yZGVycy1zdGVwLW51bSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGZsZXg6IG5vbmU7XG5cdFx0d2lkdGg6IDI2cHg7XG5cdFx0aGVpZ2h0OiAyNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0YmFja2dyb3VuZDogJGdyZWVuO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0fVxuXG5cdC5lb3JkZXJzLXN0ZXAtYm9keSB7XG5cdFx0ZmxleDogMTtcblx0fVxuXG5cdC5lb3JkZXJzLXdobyB7XG5cdFx0bWFyZ2luLXRvcDogNnB4ICFpbXBvcnRhbnQ7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQuZW9yZGVycy1zdGF0dXMge1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0Y29sb3I6ICRncmVlbjtcblx0fVxuXG5cdC5lb3JkZXJzLXRhZyB7XG5cdFx0bWFyZ2luLWxlZnQ6IDRweDtcblx0XHRwYWRkaW5nOiAxcHggNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogNzAwO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0YmFja2dyb3VuZDogJHdhcm5pbmctYmc7XG5cdFx0Ym9yZGVyLXJhZGl1czogNHB4O1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdH1cblxuXHQuZW9yZGVycy1sYWItY2FyZCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRcdHN1bW1hcnkge1xuXHRcdFx0cGFkZGluZzogMTJweCAxNHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRcdHNwYW4ge1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogOHB4O1xuXHRcdFx0XHRmb250LXdlaWdodDogNDAwO1xuXHRcdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmW29wZW5dIHN1bW1hcnkge1xuXHRcdFx0YmFja2dyb3VuZDogJHBhbGVCbHVlO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHR9XG5cblx0XHQuZW9yZGVycy1jYXJkLWludHJvIHtcblx0XHRcdG1hcmdpbjogMTJweCAxNHB4IDA7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdH1cblxuXHRcdG9sIHtcblx0XHRcdG1hcmdpbjogMTJweCAxNHB4IDAgMTRweDtcblx0XHRcdHBhZGRpbmctbGVmdDogMThweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjY7XG5cblx0XHRcdHVsIHtcblx0XHRcdFx0bWFyZ2luOiAycHggMCA0cHg7XG5cdFx0XHRcdHBhZGRpbmctbGVmdDogMThweDtcblx0XHRcdFx0bGlzdC1zdHlsZTogZGlzYztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZW9yZGVycy1hZnRlciB7XG5cdFx0XHRtYXJnaW46IDEwcHggMTRweCAxMnB4O1xuXHRcdFx0cGFkZGluZzogOHB4IDEwcHg7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY3lhbi10cC0xMDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDZweDtcblx0XHR9XG5cdH1cblxuXHQuZW9yZGVycy1mYXEge1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cblx0XHRzdW1tYXJ5IHtcblx0XHRcdHBhZGRpbmc6IDEycHggMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDAgMCAxMnB4IDE4cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblx0fVxuXG5cdGEge1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0fVxuXG5cdC5lb3JkZXJzLWZvb3Qtbm90ZSB7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRhbGlnbi1zZWxmOiBjZW50ZXI7XG5cdH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUmVwb3J0cyAodGhlIHVzZXIncyBpbnRlcmFjdGl2ZSByZXBvcnRzIGRpYWxvZylcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogT3BlbmVkIGZyb20gdGhlIG5hdiBpbiB0aGUgc2FtZSB3aWRlIGRpYWxvZyBhcyB0aGUgdGFzayBhbmQgd2FpdGxpc3QgbGlzdHMgKC53b3JrbGlzdC1kaWFsb2cpLiAqL1xuLnJlcG9ydHMtZGlhbG9nIHtcblx0LyogVGhlIHRpdGxlLCB3aXRoIHdob3NlIHRoZSByZXBvcnQgb24gc2NyZWVuIGlzIHVuZGVyIGl0LCBjZW50cmVkIHRvZ2V0aGVyIGFzIG90aGVyIGRpYWxvZ3MgY2VudHJlXG5cdCAgIHRoZWlyIHRpdGxlLiBUaGUgc2hhcmVkIC5kaWFsb2ctdGl0bGUgY2VudHJlcyBpdHNlbGYgYWJzb2x1dGVseTsgaGVyZSB0aGUgcGFpciBpcyBjZW50cmVkIGluc3RlYWQuICovXG5cdC5yZXBvcnRzLWhlYWRpbmcge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0bWF4LXdpZHRoOiA3MCU7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcblxuXHRcdC5kaWFsb2ctdGl0bGUge1xuXHRcdFx0cG9zaXRpb246IHN0YXRpYztcblx0XHRcdHRyYW5zZm9ybTogbm9uZTtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjI7XG5cdFx0fVxuXHR9XG5cblx0LnJlcG9ydHMtdXBkYXRlZCB7XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdG1hcmdpbi10b3A6IDAuMTVyZW07XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0Zm9udC1zaXplOiAwLjg1cmVtO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQvKiBUaGUgcmVwb3J0IHN3aXRjaGVyOiBhIGNhcmQgcGVyIHJlcG9ydCwgdGhlIHVzZXIncyBvd24gZmlyc3QsIHRoZW4gdGhlIHByYWN0aWNlJ3MgYWZ0ZXIgYSBydWxlLiAqL1xuXHQucmVwb3J0cy1zd2l0Y2hlciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogc3RyZXRjaDtcblx0XHRnYXA6IDAuNzVyZW07XG5cdFx0cGFkZGluZzogMC43NXJlbSAxLjVyZW07XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS1tb2RhbC1oZWFkZXI7XG5cdFx0b3ZlcmZsb3cteDogYXV0bztcblx0fVxuXG5cdC5yZXBvcnRzLXN3aXRjaGVyLWdyb3VwIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXg6IDAgMCBhdXRvO1xuXHRcdGdhcDogMC41cmVtO1xuXG5cdFx0JiArIC5yZXBvcnRzLXN3aXRjaGVyLWdyb3VwIHtcblx0XHRcdHBhZGRpbmctbGVmdDogMC43NXJlbTtcblx0XHRcdGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdH1cblx0fVxuXG5cdC5yZXBvcnRzLWNhcmQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDAuNjVyZW07XG5cdFx0bWluLXdpZHRoOiAxMXJlbTtcblx0XHRtYXgtd2lkdGg6IDIwcmVtO1xuXHRcdHBhZGRpbmc6IDAuNXJlbSAxcmVtIDAuNXJlbSAwLjZyZW07XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0fVxuXG5cdFx0Ji5hY3RpdmUge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkY3lhbjtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCAkY3lhbiwgJHNoYWRvdy1zbTtcblx0XHR9XG5cblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogMnB4IHNvbGlkICRjeWFuO1xuXHRcdFx0b3V0bGluZS1vZmZzZXQ6IDJweDtcblx0XHR9XG5cdH1cblxuXHQvKiBXaG9zZSBpdCBpcywgYXQgYSBnbGFuY2U6IGEgcGVyc29uIG9uIG5hdnkgZm9yIHRoZSB1c2VyJ3Mgb3duLCBhIGJ1aWxkaW5nIG9uIHRlYWwgZm9yIHRoZSBwcmFjdGljZSdzLiAqL1xuXHQucmVwb3J0cy1jYXJkLWljb24ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleDogMCAwIGF1dG87XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHR3aWR0aDogMi4xcmVtO1xuXHRcdGhlaWdodDogMi4xcmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdGNvbG9yOiAkbmF2eTtcblxuXHRcdHNwYW4ge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHR9XG5cblx0XHRzdmcge1xuXHRcdFx0d2lkdGg6IDEuMXJlbTtcblx0XHRcdGhlaWdodDogMS4xcmVtO1xuXHRcdH1cblx0fVxuXG5cdC5yZXBvcnRzLWNhcmQuaXMtcHJhY3RpY2UgLnJlcG9ydHMtY2FyZC1pY29uIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdGVhbC1wYWxlO1xuXHRcdGNvbG9yOiAkdGVhbDtcblx0fVxuXG5cdC5yZXBvcnRzLWNhcmQtdGV4dCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRsaW5lLWhlaWdodDogMS4yNTtcblx0fVxuXG5cdC5yZXBvcnRzLWNhcmQtdGl0bGUsXG5cdC5yZXBvcnRzLWNhcmQtb3duZXIge1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC5yZXBvcnRzLWNhcmQtdGl0bGUge1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0Zm9udC1zaXplOiAwLjk1cmVtO1xuXHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdH1cblxuXHQucmVwb3J0cy1jYXJkLW93bmVyIHtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0Zm9udC1zaXplOiAwLjc4cmVtO1xuXHR9XG5cblx0LyogRmlsbHMgdGhlIGRpYWxvZyBiZWxvdyB0aGUgdG9vbGJhciBhbmQgdGhlIGNhcmRzLiBTYWlkIGhlcmUsIG5vdCBsZWZ0IHRvIEFuZ3VsYXIgTWF0ZXJpYWwgdHVybmluZyB0aGVcblx0ICAgdGVtcGxhdGUncyBmbGV4IGF0dHJpYnV0ZSBpbnRvIGEgY2xhc3MsIHNvIHRoZSBkYXNoYm9hcmQgYWx3YXlzIGhhcyB0aGUgcm9vbSBpdCBzaXplcyBpdHNlbGYgZnJvbS4gKi9cblx0LnJlcG9ydHMtYm9keSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleDogMSAxIGF1dG87XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRtaW4taGVpZ2h0OiAwO1xuXHR9XG5cblx0LnJlcG9ydHMtbWVzc2FnZSB7XG5cdFx0cGFkZGluZzogMnJlbTtcblx0XHRtYXgtd2lkdGg6IDQwcmVtO1xuXHRcdGNvbG9yOiAkdGV4dC1saWdodDtcblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMC43NXJlbTtcblx0XHR9XG5cdH1cblxuXHQucmVwb3J0cy1lcnJvciB7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdH1cblxuXHQvKiBGaWxscyB0aGUgZGlhbG9nIGJvZHkuIEVhY2ggcmVwb3J0J3MgY29tcG9uZW50IHN0eWxlcyBpdHNlbGYgaW5zaWRlIGl0cyBzaGFkb3cgcm9vdCBhbmQgc2l6ZXMgaXRzXG5cdCAgIGhvc3QgZnJvbSAtLWN0LWhlaWdodCwgc28gaXQgZ2V0cyBhIGRlZmluaXRlIGJveCB0byBmaWxsLCB3aGljaGV2ZXIgY29tcG9uZW50IGl0IGlzLiAqL1xuXHQucmVwb3J0cy1kYXNoYm9hcmQge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRmbGV4OiAxIDEgYXV0bztcblx0XHRtaW4taGVpZ2h0OiAwO1xuXHR9XG5cblx0cmVwb3J0LXZpZXcge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDA7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cblx0XHQ+ICoge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHQtLWN0LWhlaWdodDogMTAwJTtcblx0XHR9XG5cdH1cbn1cbiIsIi5tb2Rlcm4tbG9naW4tcGFnZSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdG1pbi1oZWlnaHQ6IDEwMHZoO1xuXHR3aWR0aDogMTAwJTtcblx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1zYW5zLXNlcmlmO1xuXHRmb250LXNpemU6IDE2cHg7XG5cdGNvbG9yOiAkd2hpdGU7XG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXHQtLXBhZ2UtYmctaW1hZ2U6IHVybCgnaHR0cHM6Ly9jYXR0cmF4LW1lZGlhLnMzLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20vaW1hZ2VzL3N1cmdlb25faW1hZ2VfY3JvcHBlZDIuanBnJyk7XG5cdC0tcGFnZS1iZy1wb3NpdGlvbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJG5hdnktYmctZ3JhZGllbnQtZGFyaywgJG5hdnktYmctZ3JhZGllbnQtbGlnaHQpLCB2YXIoLS1wYWdlLWJnLWltYWdlKTtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogdmFyKC0tcGFnZS1iZy1wb3NpdGlvbik7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cblx0bWFpbi5oZXJvLXNlY3Rpb24ge1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEuMmZyIDFmcjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNHJlbTtcblx0XHRwYWRkaW5nOiA1cmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0XHRmbGV4LWdyb3c6IDE7XG5cdFx0bWF4LXdpZHRoOiAxNDAwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogM3JlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cdFx0XHRnYXA6IDIuNXJlbTtcblx0XHR9XG5cdH1cbn1cblxuLmhlcm8tY29udGVudCB7XG5cdHBhZGRpbmctcmlnaHQ6IDJyZW07XG5cdGNvbG9yOiAkd2hpdGU7XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG5cdFx0cGFkZGluZy1yaWdodDogMDtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjsgLyogVGhpcyBjZW50ZXJzIHRoZSBjb250ZW50IG9uIG1vYmlsZSAqL1xuXHR9XG59XG5cbi5tYWluLWxvZ28ge1xuXHRtYXgtd2lkdGg6IDI4MHB4O1xuXHRtYXJnaW4tYm90dG9tOiAyLjVyZW07XG5cdGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggOHB4ICRibGFjay10cC0zMCk7XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHR9XG59XG5cbi5oZXJvLXRpdGxlIHtcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLXh4eGw7XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0bGluZS1oZWlnaHQ6IDEuMTU7XG5cdG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG5cdGNvbG9yOiAkd2hpdGU7XG5cdGxldHRlci1zcGFjaW5nOiAtMC4wM2VtO1xuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS14eGw7XG5cdH1cblxuXHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRmb250LXNpemU6IDJyZW07XG5cdH1cbn1cblxuLmhlcm8tc3VidGl0bGUge1xuXHRmb250LXNpemU6IDEuMTVyZW07XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbGlnaHQ7XG5cdG1hcmdpbi1ib3R0b206IDNyZW07XG5cdGNvbG9yOiAkd2hpdGUtdHAtODU7XG5cdGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcblxuXHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcblx0fVxufVxuXG4uYmVuZWZpdHMtbGlzdCB7XG5cdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdHBhZGRpbmc6IDA7XG5cdG1hcmdpbjogMDtcblxuXHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHQvKiBUaGlzIGFsbG93cyB0aGUgPHVsPiB0byBiZSBjZW50ZXJlZCBieSBpdHMgcGFyZW50J3MgdGV4dC1hbGlnbjpjZW50ZXIgKi9cblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdH1cblxuXHRsaSB7XG5cdFx0Zm9udC1zaXplOiAxLjA1cmVtO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdG1hcmdpbi1ib3R0b206IDEuMnJlbTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDsgLyogRml4ZXMgbGlzdCBpdGVtIHRleHQgYWxpZ25tZW50ICovXG5cdH1cblxuXHQuY2hlY2ttYXJrIHtcblx0XHRjb2xvcjogJGN5YW47XG5cdFx0Zm9udC1zaXplOiAxLjRyZW07XG5cdFx0bWFyZ2luLXJpZ2h0OiAxcmVtO1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHR9XG5cbn1cblxuLnByaXZhY3ktbGluayB7XG5cdG1hcmdpbi10b3A6IDJyZW07XG5cdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1zbTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRjb2xvcjogJHdoaXRlLXRwLTc1O1xuXG5cdGEge1xuXHRcdGNvbG9yOiAkY3lhbjtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0dHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRcdGNvbG9yOiAkY3lhbi1kYXJrZXI7XG5cdFx0fVxuXG5cdH1cbn1cblxuLnByb29mLXNlY3Rpb24ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGUtdHAtMDU7XG5cdHBhZGRpbmc6IDMuNXJlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICR3aGl0ZS10cC0xMDtcblx0Y29sb3I6ICR3aGl0ZTtcblx0Zm9udC1zaXplOiAwLjk1cmVtO1xufVxuXG4ucHJvb2YtdGl0bGUge1xuXHRmb250LXNpemU6IDIuMnJlbTtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRtYXJnaW4tYm90dG9tOiAzcmVtO1xuXHRjb2xvcjogJHdoaXRlO1xuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS14bDtcblx0fVxufVxuXG4udGVzdGltb25pYWxzLWhvcml6b250YWwge1xuXHRkaXNwbGF5OiBncmlkO1xuXHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMwMHB4LCAxZnIpKTtcblx0Z2FwOiAyLjVyZW07XG5cdG1heC13aWR0aDogMTIwMHB4O1xuXHRtYXJnaW46IDAgYXV0bztcblxuXHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblx0fVxufVxuXG4udGVzdGltb25pYWwtY2FyZC1ob3Jpem9udGFsIHtcblx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTEwO1xuXHRwYWRkaW5nOiAyLjVyZW07XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRib3gtc2hhZG93OiAwIDRweCAxNXB4ICRibGFjay10cC0yMDtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkd2hpdGUtdHAtMTU7XG5cblx0LnF1b3RlIHtcblx0XHRmb250LXNpemU6IDEuMDVyZW07XG5cdFx0bGluZS1oZWlnaHQ6IDEuNztcblx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdFx0Y29sb3I6ICR3aGl0ZS10cC05MDtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdH1cblxuXHRjaXRlIHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0XHRjb2xvcjogJGN5YW47XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0bWFyZ2luLXRvcDogYXV0bztcblx0fVxuXG59XG5cbi50ZXN0aW1vbmlhbC1hdmF0YXIge1xuXHR3aWR0aDogOTBweDtcblx0aGVpZ2h0OiA5MHB4O1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdG9iamVjdC1maXQ6IGNvdmVyO1xuXHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdGJvcmRlcjogM3B4IHNvbGlkICRjeWFuO1xuXHRib3gtc2hhZG93OiAwIDAgMCA1cHggJGN5YW4tdHAtMjA7XG59XG5cbi5wYWdlLWZvb3RlciB7XG5cdGRpc3BsYXk6IGdyaWQ7XG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG8gMWZyO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRwYWRkaW5nOiAxLjVyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXHR3aWR0aDogMTAwJTtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblxuXHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcblx0XHRnYXA6IDEuNXJlbTtcblx0XHRwYWRkaW5nOiAycmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0fVxuXG5cdC5jb3B5cmlnaHQge1xuXHRcdGdyaWQtY29sdW1uOiAyO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjb2xvcjogJHdoaXRlLXRwLTcwO1xuXHRcdGZvbnQtc2l6ZTogMC45NXJlbTtcblx0fVxuXG5cdC5wZW50ZXN0LWJhZGdlIHtcblx0XHRncmlkLWNvbHVtbjogMjtcblx0XHRqdXN0aWZ5LXNlbGY6IGVuZDtcblxuXHRcdGltZyB7XG5cdFx0XHRtYXgtd2lkdGg6IDMwMHB4O1xuXHRcdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdH1cblxuXHR9XG59XG5cbi52YWx1ZS1wcm9wLXNlY3Rpb24ge1xuXHRwYWRkaW5nOiA2LjVyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHRcdHBhZGRpbmc6IDNyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXHR9XG59XG5cbi52YWx1ZS1wcm9wLWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IGdyaWQ7XG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG5cdGdhcDogMi41cmVtO1xuXHRtYXgtd2lkdGg6IDEyMDBweDtcblx0bWFyZ2luOiAwIGF1dG87XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblx0XHRnYXA6IDJyZW07XG5cdH1cbn1cblxuLnZhbHVlLXByb3AtY2FyZCB7XG5cdGJhY2tncm91bmQ6ICR3aGl0ZS10cC0wNTtcblx0cGFkZGluZzogMi41cmVtIDJyZW07XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXhsO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkd2hpdGUtdHAtMTU7XG5cdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cdGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG5cdCY6aG92ZXIge1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTEwO1xuXHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctbGc7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkY3lhbi10cC01MDtcblxuXHRcdC50aXRsZS1yZWZlcnJhbCB7XG5cdFx0XHRjb2xvcjogJGN5YW47XG5cdFx0fVxuXG5cdFx0Lmljb24tbWFuYWdlbWVudCxcblx0XHQudGl0bGUtbWFuYWdlbWVudCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRncmVlbi10cC01MDtcblx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0fVxuXG5cdFx0Lmljb24tbWFuYWdlbWVudCB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkZ3JlZW4tdHAtMjA7XG5cdFx0fVxuXG5cdFx0Lmljb24tdGVjaCxcblx0XHQudGl0bGUtdGVjaCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICR5ZWxsb3ctdHAtNTA7XG5cdFx0XHRjb2xvcjogJHllbGxvdztcblx0XHR9XG5cblx0XHQuaWNvbi10ZWNoIHtcblx0XHRcdGJhY2tncm91bmQ6ICR5ZWxsb3ctdHAtMjA7XG5cdFx0fVxuXG5cdFx0LnZhbHVlLXByb3AtaWNvbi13cmFwcGVyIHtcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMS4xKSByb3RhdGUoNWRlZyk7XG5cdFx0fVxuXG5cdH1cbn1cblxuLnZhbHVlLXByb3AtaWNvbi13cmFwcGVyIHtcblx0d2lkdGg6IDgwcHg7XG5cdGhlaWdodDogODBweDtcblx0bWFyZ2luOiAwIGF1dG8gMS41cmVtIGF1dG87XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi52YWx1ZS1wcm9wLWljb24ge1xuXHRmb250LXNpemU6ICRmb250LXNpemUteHhsO1xuXHRsaW5lLWhlaWdodDogMTtcbn1cblxuLmljb24tcmVmZXJyYWwge1xuXHRiYWNrZ3JvdW5kOiAkY3lhbi10cC0xMDtcblxuXHQudmFsdWUtcHJvcC1pY29uIHtcblx0XHRjb2xvcjogJGN5YW47XG5cdH1cblxufVxuXG4udGl0bGUtcmVmZXJyYWwsXG4uaWNvbi1yZWZlcnJhbCAudmFsdWUtcHJvcC1pY29uIHtcblx0Y29sb3I6ICRjeWFuO1xufVxuXG4uaWNvbi1tYW5hZ2VtZW50IHtcblx0YmFja2dyb3VuZDogJGdyZWVuLXRwLTEwO1xuXG5cdC52YWx1ZS1wcm9wLWljb24ge1xuXHRcdGNvbG9yOiAkZ3JlZW47XG5cdH1cblxufVxuXG4udGl0bGUtbWFuYWdlbWVudCxcbi5pY29uLW1hbmFnZW1lbnQgLnZhbHVlLXByb3AtaWNvbiB7XG5cdGNvbG9yOiAkZ3JlZW47XG59XG5cbi5pY29uLXRlY2gge1xuXHRiYWNrZ3JvdW5kOiAkeWVsbG93LXRwLTEwO1xuXG5cdC52YWx1ZS1wcm9wLWljb24ge1xuXHRcdGNvbG9yOiAkeWVsbG93O1xuXHR9XG5cbn1cblxuLnRpdGxlLXRlY2gsXG4uaWNvbi10ZWNoIC52YWx1ZS1wcm9wLWljb24ge1xuXHRjb2xvcjogJHllbGxvdztcbn1cblxuLnZhbHVlLXByb3AtdGl0bGUge1xuXHRmb250LXNpemU6ICRmb250LXNpemUtbGc7XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdG1hcmdpbjogMCAwIDFyZW0gMDtcblx0dHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlO1xufVxuXG4udmFsdWUtcHJvcC10ZXh0IHtcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdGNvbG9yOiAkd2hpdGUtdHAtODU7XG5cdGxpbmUtaGVpZ2h0OiAxLjc7XG5cdG1hcmdpbjogMDtcblx0ZmxleC1ncm93OiAxO1xufVxuXG4uYnRuLXNlZS1tb3JlIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRhbGlnbi1zZWxmOiBjZW50ZXI7XG5cdG1hcmdpbi10b3A6IGF1dG87XG5cdHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xuXHRib3JkZXI6IDJweCBzb2xpZCAkd2hpdGUtdHAtNjA7XG5cdGJvcmRlci1yYWRpdXM6IDUwcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRjb2xvcjogJHdoaXRlO1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0Zm9udC1zaXplOiAwLjhyZW07XG5cdGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlLXRwLTEwO1xuXHRcdGJvcmRlci1jb2xvcjogJGN5YW47XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuXHR9XG5cbn1cblxuLmZlYXR1cmVzLW92ZXJ2aWV3IHtcblx0cGFkZGluZy10b3A6IDJyZW07XG5cdHBhZGRpbmctYm90dG9tOiA0cmVtO1xuXG5cdC5mZWF0dXJlcy1ncmlkIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzIwcHgsIDFmcikpO1xuXHRcdGdhcDogMnJlbTtcblx0fVxuXG59XG5cbi5mZWF0dXJlLWNhdGVnb3J5LXNlY3Rpb24ge1xuXHRtYXgtd2lkdGg6IDE0MDBweDtcblx0bWFyZ2luOiAwIGF1dG8gNHJlbSBhdXRvO1xuXHRwYWRkaW5nOiAwIDFyZW07XG59XG5cbi5jYXRlZ29yeS1oZWFkZXIge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdG1hcmdpbi1ib3R0b206IDNyZW07XG5cblx0aDIge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS14eGw7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdG1hcmdpbjogMCAwIDAuNzVyZW0gMDtcblx0fVxuXG5cdHAge1xuXHRcdGZvbnQtc2l6ZTogMS4xNXJlbTtcblx0XHRtYXgtd2lkdGg6IDc1MHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdGNvbG9yOiAkd2hpdGUtdHAtODU7XG5cdFx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXHR9XG5cblx0Ji5vcHRvbWV0cnkgaDIge1xuICAgICAgICBjb2xvcjogJGN5YW47XG4gICAgfVxuXG4gICAgJi5vcGh0aGFsbW9sb2d5IGgyIHtcbiAgICAgICAgY29sb3I6ICRncmVlbjtcbiAgICB9XG5cbiAgICAmLm1hbmFnZW1lbnQgaDIge1xuICAgICAgICBjb2xvcjogJHllbGxvdztcbiAgICB9XG5cbiAgICAmLmhvc3BpdGFscyBoMiB7XG4gICAgICAgIGNvbG9yOiAkbGF2ZW5kZXI7XG4gICAgfVxuXG59XG5cbi5jYXRlZ29yeS1pY29uIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRmb250LXNpemU6ICRmb250LXNpemUteHhsO1xuXHR3aWR0aDogODBweDtcblx0aGVpZ2h0OiA4MHB4O1xuXHRsaW5lLWhlaWdodDogODBweDtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdHBhZGRpbmctdG9wOiAycmVtO1xuXHRiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtMTA7XG5cdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cblx0Ji5vcHRvbWV0cnkge1xuXHRcdGNvbG9yOiAkY3lhbjtcblx0XHRib3JkZXI6IDJweCBzb2xpZCAkY3lhbi10cC0zMDtcblx0fVxuXG5cdCYub3BodGhhbG1vbG9neSB7XG5cdFx0Y29sb3I6ICRncmVlbjtcblx0XHRib3JkZXI6IDJweCBzb2xpZCAkZ3JlZW4tdHAtMzA7XG5cdH1cblxuXHQmLm1hbmFnZW1lbnQge1xuXHRcdGNvbG9yOiAkeWVsbG93O1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkICR5ZWxsb3ctdHAtMzA7XG5cdH1cblxuXHQmLmhvc3BpdGFscyB7XG5cdFx0Y29sb3I6ICRsYXZlbmRlcjtcblx0XHRib3JkZXI6IDJweCBzb2xpZCAkbGF2ZW5kZXItdHAtMzA7XG5cdH1cbn1cblxuLmZlYXR1cmVzLWdyaWQge1xuXHRkaXNwbGF5OiBncmlkO1xuXHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuXHRnYXA6IDJyZW07XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdH1cbn1cblxuLmZlYXR1cmUtY2FyZCB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0cGFkZGluZzogMi41cmVtIDJyZW07XG5cdGJhY2tncm91bmQ6ICR3aGl0ZS10cC0wNTtcblx0Ym9yZGVyOiAxcHggc29saWQgJHdoaXRlLXRwLTE1O1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZSwgYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7XG5cblx0Jjpob3ZlciB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpO1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZS10cC0xMDtcblx0fVxuXG59XG5cbi5mZWF0dXJlLWljb24ge1xuXHRmb250LXNpemU6IDIuOHJlbTtcblx0bWFyZ2luLWJvdHRvbTogMS41cmVtO1xuXHRjb2xvcjogJGN5YW47XG59XG5cbi5mZWF0dXJlLXRpdGxlIHtcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLWxnO1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRtYXJnaW46IDAgMCAwLjc1cmVtIDA7XG5cdGNvbG9yOiAkd2hpdGU7XG59XG5cbi5mZWF0dXJlLWRlc2NyaXB0aW9uIHtcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdGNvbG9yOiAkd2hpdGUtdHAtODU7XG5cdGxpbmUtaGVpZ2h0OiAxLjc7XG5cdG1hcmdpbjogMDtcbn1cblxuLmZpbmFsLWN0YS1zZWN0aW9uIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRwYWRkaW5nOiA0cmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0YmFja2dyb3VuZC1jb2xvcjogJGJsYWNrLXRwLTIwO1xuXG5cdC5idG4tbmF2LWRlbW8ge1xuXHRcdGZvbnQtc2l6ZTogMS4ycmVtO1xuXHRcdHBhZGRpbmc6IDFyZW0gMi41cmVtO1xuXHR9XG5cbn1cblxuLmZlYXR1cmVzLWRpc2NsYWltZXIge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdHBhZGRpbmc6IDJyZW0gJHNlY3Rpb24tcGFkZGluZy14IDFyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXHRtYXgtd2lkdGg6IDgwMHB4O1xuXHRtYXJnaW46IDAgYXV0bztcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuXHRjb2xvcjogJHdoaXRlLXRwLTYwO1xuXHRsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG59XG5cbi5zZWN0aW9uLXRpdGxlIHtcblx0QG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG5cdFx0Zm9udC1zaXplOiAycmVtO1xuXHR9XG59XG5cbi5mdWxsLXNjcmVlbi1sb2FkZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICB6LWluZGV4OiA5OTk5OTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn0iLCIubW9kZXJuLWxvZ2luLXBhZ2Uge1xuXHQubG9naW4tY2FyZCB7XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdHBhZGRpbmc6IDNyZW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0Ym94LXNoYWRvdzogJHNoYWRvdy1tZDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXgtd2lkdGg6IDQ1MHB4O1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHRcdFx0cGFkZGluZzogMi41cmVtO1xuXHRcdH1cblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdFx0cGFkZGluZzogMnJlbSAxLjVyZW07XG5cdFx0fVxuXHR9XG5cblx0LnByb2Nlc3Npbmctb3ZlcmxheSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtOTA7XG5cdFx0YmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHR6LWluZGV4OiAxMDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdGdhcDogMXJlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcblx0fVxuXG5cdC5zcGlubmVyIHtcblx0XHR3aWR0aDogNDBweDtcblx0XHRoZWlnaHQ6IDQwcHg7XG5cdFx0Ym9yZGVyOiA0cHggc29saWQgJG5hdnktdHAtMjA7XG5cdFx0Ym9yZGVyLXRvcC1jb2xvcjogJGN5YW47XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGFuaW1hdGlvbjogc3Bpbm5lci1yb3RhdGlvbiAwLjhzIGxpbmVhciBpbmZpbml0ZTtcblx0fVxuXG5cdC5sb2dpbi1wYW5lbCB7XG5cdFx0LmJ0bjpmb2N1cy12aXNpYmxlLCBhOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogMnB4IHNvbGlkICRjeWFuO1xuXHRcdFx0b3V0bGluZS1vZmZzZXQ6IDJweDtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0fVxuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG5cdFx0XHRwYWRkaW5nOiAycmVtO1xuXHRcdH1cblxuXHR9XG5cblx0LnRleHQtZGFuZ2VyIHtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbWVkaXVtO1xuXHR9XG5cblx0LnRleHQtc3VjY2VzcyB7XG5cdFx0Y29sb3I6ICRncmVlbi1zdWNjZXNzLWFsdDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0fVxuXG5cdC50ZXh0LWNlbnRlciB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cblx0LmxvZ2luLXBhbmVsLXRleHQge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXHRcdG1hcmdpbjogMCBhdXRvIDEuNXJlbSBhdXRvO1xuXHRcdG1heC13aWR0aDogOTAlO1xuXHR9XG5cblx0LnZlcmlmeS1pbnB1dC1jb250YWluZXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiAwLjc1cmVtO1xuXHRcdG1hcmdpbjogMnJlbSBhdXRvO1xuXG5cdFx0aW5wdXQge1xuXHRcdFx0d2lkdGg6IDQ1cHg7XG5cdFx0XHRoZWlnaHQ6IDU1cHg7XG5cdFx0XHRmb250LXNpemU6ICRmb250LXNpemUteGw7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRwYWRkaW5nOiAwLjVyZW07XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR9XG5cblx0fVxuXG5cdC5mb3JtLWFjdGlvbnMtY2VudGVyZWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRtYXJnaW4tdG9wOiAxLjhyZW07XG5cdFx0Z2FwOiAxcmVtO1xuXHR9XG5cblx0LmZvcm0tZ3JvdXAge1xuXHRcdG1hcmdpbi1ib3R0b206IDEuNXJlbTtcblxuXHRcdGxhYmVsIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAwLjk1cmVtO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwLjZyZW07XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHR9XG5cblx0fVxuXG5cdC5mb3JtLWNvbnRyb2wge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IDFyZW0gMS4ycmVtO1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY7XG5cblx0XHQmOmZvY3VzIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3JkZXItY29sb3I6ICRjeWFuO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4ICRjeWFuLXRwLTI1O1xuXHRcdH1cblxuXHR9XG5cblx0LmZvcm0tYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDFyZW07XG5cdFx0bWFyZ2luLXRvcDogMS44cmVtO1xuXHR9XG5cblx0LmJ0biB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdHBhZGRpbmc6IDFyZW0gMS41cmVtO1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdFx0cGFkZGluZzogMC44cmVtIDFyZW07XG5cdFx0XHRmb250LXNpemU6IDAuOTVyZW07XG5cdFx0fVxuXHR9XG5cblx0LmJ0bi1sb2dpbiB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGN5YW47XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRib3gtc2hhZG93OiAkc2hhZG93LWN5YW4tc207XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjeWFuLWRhcmtlcjtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcblx0XHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctY3lhbi1tZDtcblx0XHR9XG5cblx0fVxuXG5cdC5idG4tbG9zdCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRvcGFjaXR5OiAwLjk7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXRwLTA1O1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctc207XG5cdFx0fVxuXG5cdH1cblxuXHQuZGV2LXdhcm5pbmcge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3YXJuaW5nLWJnO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICR3YXJuaW5nLWJvcmRlcjtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRwYWRkaW5nOiAxcmVtO1xuXHRcdG1hcmdpbi1ib3R0b206IDEuNXJlbTtcblx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtc207XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDhweCAkYmxhY2stdHAtMTA7XG5cdH1cblxuXHQubG9naW4tdGl0bGUge1xuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdFx0Zm9udC1zaXplOiAxLjZyZW07XG5cdFx0fVxuXHR9XG5cbn1cblxuQGtleWZyYW1lcyBzcGlubmVyLXJvdGF0aW9uIHtcblx0dG8ge1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cdH1cbn0iLCIuYWJvdXQtcGFnZSB7XG4gICAgLyogT3ZlcnJpZGUgdGhlIHZhcmlhYmxlIGZvciB0aGlzIHNwZWNpZmljIHBhZ2UgKi9cbiAgICAtLXBhZ2UtYmctaW1hZ2U6IHVybCgnaHR0cHM6Ly9jYXR0cmF4LW1lZGlhLnMzLmFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20vaW1hZ2VzL3N1cmdlb25faW1hZ2VfY3JvcHBlZDIuanBnJyk7XG4gICAgLS1wYWdlLWJnLXBvc2l0aW9uOiBjZW50ZXI7XG59XG5cbi5tb2Rlcm4tbG9naW4tcGFnZSB7XG5cbiAgICAuYWJvdXQtc2VjdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IDRyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuICAgIH1cblxuICAgIC5hYm91dC1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDkwMHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6ICR3aGl0ZS10cC05MDtcblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1saWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR3aGl0ZS10cC0yMDtcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIH1cblxuICAgICAgICAuc3Vic2VjdGlvbi10aXRsZSB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUteGw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDRyZW07XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICB1bCB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZS10cC04NTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMi41cmVtO1xuXG4gICAgICAgICAgICBpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICB0b3A6IDRweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGN5YW47XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0cm9uZyB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmltcGFjdC1zZWN0aW9uIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGJsYWNrLXRwLTMwO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcbiAgICAgICAgcGFkZGluZzogNHJlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkd2hpdGUtdHAtMTA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkd2hpdGUtdHAtMTA7XG4gICAgfVxuXG4gICAgLmltcGFjdC1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDAuNWZyKTtcbiAgICAgICAgZ2FwOiAwcmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmltcGFjdC1jYXJkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW1wYWN0LW51bWJlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMy41cmVtO1xuICAgICAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG4gICAgICAgIGNvbG9yOiAkY3lhbjtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDIwcHggJGN5YW4tdHAtMjA7XG4gICAgfVxuXG4gICAgLmltcGFjdC1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkd2hpdGUtdHAtODA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG4gICAgfVxuXG4gICAgLmNsaWVudC1sb2dvcy1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogM3JlbSAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgfVxuXG4gICAgLmNsaWVudC1sb2dvcy1tYXJxdWVlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgYmxhY2sgMTAlLCBibGFjayA5MCUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgLXdlYmtpdC1tYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50LCBibGFjayAxMCUsIGJsYWNrIDkwJSwgdHJhbnNwYXJlbnQpO1xuICAgIH1cblxuICAgIC5jbGllbnQtbG9nb3MtdHJhY2sge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRyZW07XG4gICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgICAgYW5pbWF0aW9uOiBjbGllbnQtbG9nb3Mtc2Nyb2xsIDQwcyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNsaWVudC1sb2dvIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBoZWlnaHQ6IDcwcHg7XG4gICAgICAgIG1pbi13aWR0aDogMTUwcHg7XG4gICAgICAgIG9wYWNpdHk6IDAuNjsgXG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiA2MHB4O1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxODBweDtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgY2xpZW50LWxvZ29zLXNjcm9sbCB7XG4gICAgZnJvbSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAubW9kZXJuLWxvZ2luLXBhZ2Uge1xuICAgICAgICAuYWJvdXQtc2VjdGlvbiwgLmltcGFjdC1zZWN0aW9uIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmltcGFjdC1jb250YWluZXIge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICAgICAgZ2FwOiAycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmltcGFjdC1udW1iZXIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2xpZW50LWxvZ29zLXRyYWNrIHtcbiAgICAgICAgICAgIGdhcDogMnJlbTtcbiAgICAgICAgfVxuICAgIH1cbn0iLCIucHJpY2luZy1wYWdlIHtcblx0LS1wYWdlLWJnLWltYWdlOiB1cmwoJ2h0dHBzOi8vY2F0dHJheC1tZWRpYS5zMy5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2ltYWdlcy9zdXJnZW9uX2ltYWdlX2Nyb3BwZWQyLmpwZycpO1xuXHQtLXBhZ2UtYmctcG9zaXRpb246IGNlbnRlciAxMTAlO1xufVxuXG4ubW9kZXJuLWxvZ2luLXBhZ2Uge1xuXHQucHJpY2luZy1zZWN0aW9uIHtcblx0XHRwYWRkaW5nOiAzcmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0fVxuXG5cdC5wcmljaW5nLWdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKTtcblx0XHRnYXA6IDJyZW07XG5cdFx0bWF4LXdpZHRoOiAxNjAwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cblx0XHRAbWVkaWEgKG1pbi13aWR0aDogMTIwMXB4KSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdFx0Z2FwOiAwO1xuXG5cdFx0XHQucHJpY2luZy1jYXJkIHtcblx0XHRcdFx0d2lkdGg6IGNhbGMoKDEwMCUgLSAxNHJlbSkgLyA1KTtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAyLjVyZW07XG5cblx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOm50aC1jaGlsZCgyKSB7XG5cdFx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogNC44cmVtO1xuXG5cdFx0XHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0XHR0b3A6IDE1JTtcblx0XHRcdFx0XHRcdGJvdHRvbTogMTUlO1xuXHRcdFx0XHRcdFx0cmlnaHQ6IC0yLjdyZW07XG5cdFx0XHRcdFx0XHR3aWR0aDogMnB4O1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlLXRwLTIwO1xuXHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMXB4O1xuICAgICAgICBcdFx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Jjpob3Zlcjo6YWZ0ZXIge1xuXHRcdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdCY6bnRoLWNoaWxkKDMpIHtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOm50aC1jaGlsZCg0KSB7XG5cdFx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAyLjhyZW07XG5cdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA1LjRyZW07XG5cblx0XHRcdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdFx0XHRjb250ZW50OiAnJztcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHRcdHRvcDogMTUlO1xuXHRcdFx0XHRcdFx0Ym90dG9tOiAxNSU7XG5cdFx0XHRcdFx0XHRyaWdodDogLTIuNXJlbTtcblx0XHRcdFx0XHRcdHdpZHRoOiAycHg7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGUtdHAtMjA7XG5cdFx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiAxcHg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDE0MDBweCkge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG5cdFx0XHQucHJpY2luZy1jYXJkIHtcblx0XHRcdFx0d2lkdGg6IDQ1JTtcblx0XHRcdFx0bWFyZ2luOiAxcmVtO1xuXG5cdFx0XHRcdCY6bnRoLWNoaWxkKDIpLFxuXHRcdFx0XHQmOm50aC1jaGlsZCgzKSxcblx0XHRcdFx0JjpudGgtY2hpbGQoNCkge1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMXJlbTtcblx0XHRcdFx0XHRtYXJnaW4tbGVmdDogMXJlbTtcblxuXHRcdFx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG5cdFx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cblx0XHRcdC5wcmljaW5nLWNhcmQge1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5wcmljaW5nLWNhcmQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtMDU7XG5cdFx0cGFkZGluZzogMi41cmVtIDJyZW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMteGw7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJHdoaXRlLXRwLTE1O1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cdFx0YmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCk7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtMTA7XG5cdFx0XHRib3gtc2hhZG93OiAkc2hhZG93LWxnO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkY3lhbi10cC01MDtcblx0XHR9XG5cblx0XHQmLnBvcHVsYXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkY3lhbjtcblx0XHRcdGJvcmRlci13aWR0aDogMnB4O1xuXHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMTBweCA0MHB4ICRjeWFuLXRwLTIwO1xuXG5cdFx0XHQmOjpiZWZvcmUge1xuXHRcdFx0XHRjb250ZW50OiAnTW9zdCBQb3B1bGFyJztcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHR0b3A6IDE4cHg7XG5cdFx0XHRcdHJpZ2h0OiAtMzVweDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGN5YW47XG5cdFx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRcdHBhZGRpbmc6IDAuNXJlbSAzcmVtO1xuXHRcdFx0XHRmb250LXNpemU6IDAuODVyZW07XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgNHB4IDEwcHggJGJsYWNrLXRwLTIwO1xuXHRcdFx0fVxuXG5cdFx0XHRAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XG5cdFx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMSk7XG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHQmLnJlY29tbWVuZGVkIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJGN5YW47XG5cdFx0XHRib3JkZXItd2lkdGg6IDJweDtcblx0XHRcdGJveC1zaGFkb3c6IDAgMTBweCA0MHB4ICRjeWFuLXRwLTIwO1xuXHRcdH1cblxuXHRcdC5idG4ge1xuXHRcdFx0bWFyZ2luLXRvcDogYXV0bztcblx0XHR9XG5cblx0fVxuXG5cdC5wcmljaW5nLXJvaSB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGZvbnQtc2l6ZTogMC45NXJlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0XHRjb2xvcjogJHdoaXRlLXRwLTkwO1xuXHRcdGJhY2tncm91bmQ6ICRjeWFuLXRwLTEwO1xuXHRcdHBhZGRpbmc6IDAuOHJlbSAxcmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdG1hcmdpbi1ib3R0b206IDIuNXJlbTtcblx0fVxuXG5cdC5wcmljaW5nLXRpdGxlIHtcblx0XHRmb250LXNpemU6IDEuNXJlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0bWFyZ2luOiAwIDAgMXJlbSAwO1xuXHR9XG5cblx0LnByaWNpbmctcHJpY2Uge1xuXHRcdGZvbnQtc2l6ZTogMi44cmVtO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogJGN5YW47XG5cdFx0bWFyZ2luLWJvdHRvbTogMC43NXJlbTtcblxuXHRcdC5wcmljZS1wZXJpb2Qge1xuXHRcdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdGNvbG9yOiAkd2hpdGUtdHAtNzA7XG5cdFx0fVxuXG5cdH1cblxuXHQucHJpY2luZy1kZXNjcmlwdGlvbiB7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdFx0Y29sb3I6ICR3aGl0ZS10cC04NTtcblx0XHRsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG5cdFx0bWFyZ2luLWJvdHRvbTogMnJlbTtcblx0fVxuXG5cdC5mZWF0dXJlcy1saXN0IHtcblx0XHRsaXN0LXN0eWxlOiBub25lO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bWFyZ2luOiAwIDAgMnJlbSAwO1xuXHRcdGZsZXgtZ3JvdzogMTtcblxuXHRcdGxpIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiAwLjc1cmVtO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMXJlbTtcblx0XHRcdGZvbnQtc2l6ZTogMC45NXJlbTtcblx0XHRcdGNvbG9yOiAkd2hpdGUtdHAtOTA7XG5cblx0XHRcdCYuZGlzYWJsZWQge1xuXHRcdFx0XHRjb2xvcjogJHdoaXRlLXRwLTUwO1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdC5mYS1jaGVjay1jaXJjbGUge1xuXHRcdFx0Y29sb3I6ICRncmVlbjtcblx0XHRcdGZvbnQtc2l6ZTogMS4ycmVtO1xuXHRcdH1cblxuXHRcdC5mYS10aW1lcy1jaXJjbGUge1xuXHRcdFx0Y29sb3I6ICR3aGl0ZS10cC00MDtcblx0XHRcdGZvbnQtc2l6ZTogMS4ycmVtO1xuXHRcdH1cblxuXHR9XG5cblx0LmJ0bi1zZWNvbmRhcnkge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGN5YW47XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjeWFuO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cblx0fVxuXG5cdC8qIEFkZC1vbnM6IGV4dHJhcyBib3VnaHQgb24gdG9wIG9mIGEgcGxhbiByYXRoZXIgdGhhbiBpbnN0ZWFkIG9mIG9uZSwgc28gdGhleSBzaXQgYmVsb3cgdGhlXG5cdCAgIHBsYW4gZ3JpZCBpbiBhIG5hcnJvd2VyIHRocmVlLWFjcm9zcyByb3cgb2YgdGhlaXIgb3duLiAqL1xuXHQuYWRkb24tc2VjdGlvbiB7XG5cdFx0cGFkZGluZzogMXJlbSAkc2VjdGlvbi1wYWRkaW5nLXggNHJlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cdFx0bWF4LXdpZHRoOiAxNjAwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRcdHBhZGRpbmc6IDFyZW0gJHNlY3Rpb24tcGFkZGluZy14IDNyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXHRcdH1cblxuXHR9XG5cblx0LmFkZG9uLWRpdmlkZXIge1xuXHRcdGhlaWdodDogMXB4O1xuXHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsICR3aGl0ZS10cC0yMCwgdHJhbnNwYXJlbnQpO1xuXHRcdG1hcmdpbi1ib3R0b206IDNyZW07XG5cdH1cblxuXHQuYWRkb24taGVhZGVyIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0bWFyZ2luLWJvdHRvbTogM3JlbTtcblxuXHRcdGgyIHtcblx0XHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS14eGw7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0bWFyZ2luOiAwIDAgMXJlbSAwO1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdFx0XHRjb2xvcjogJHdoaXRlLXRwLTg1O1xuXHRcdFx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXHRcdFx0bWF4LXdpZHRoOiA4MDBweDtcblx0XHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdH1cblxuXHR9XG5cblx0LyogT25lIGdyb3VwIHBlciBhZGQtb24uIFRoZXJlIGlzIG9ubHkgdHJhbnNjcmlwdGlvbiB0b2RheSwgYnV0IHRoZSBzcGFjaW5nIGlzIHNldCB1cCBzbyBhXG5cdCAgIHNlY29uZCBncm91cCBjYW4gYmUgZHJvcHBlZCBpbiBiZWxvdyB3aXRob3V0IHRvdWNoaW5nIGFueXRoaW5nIGVsc2UuICovXG5cdC8qIE5hcnJvd2VyIHRoYW4gdGhlIHNlY3Rpb24gaXQgc2l0cyBpbjogdGhyZWUgY2FyZHMgc3RyZXRjaGVkIGFjcm9zcyB0aGUgZnVsbCAxNjAwcHggd291bGQgZWFjaFxuXHQgICBlbmQgdXAgd2lkZXIgdGhhbiBhIHBsYW4gY2FyZCBhYm92ZSB0aGVtLiBBdCAxMjAwIHRoZXkgbGFuZCBjbG9zZSB0byBvbmUuICovXG5cdC5hZGRvbi1ncm91cCB7XG5cdFx0bWF4LXdpZHRoOiAxMjAwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG8gNHJlbSBhdXRvO1xuXG5cdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXG5cdH1cblxuXHQuYWRkb24tZ3JvdXAtaGVhZGVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogMS4yNXJlbTtcblx0XHRtYXJnaW4tYm90dG9tOiAycmVtO1xuXG5cdFx0LmFkZG9uLWdyb3VwLWljb24ge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0d2lkdGg6IDU2cHg7XG5cdFx0XHRoZWlnaHQ6IDU2cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRcdGJhY2tncm91bmQ6ICRjeWFuLXRwLTEwO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGN5YW4tdHAtMzA7XG5cdFx0XHRjb2xvcjogJGN5YW47XG5cdFx0XHRmb250LXNpemU6IDEuNXJlbTtcblx0XHR9XG5cblx0XHRoMyB7XG5cdFx0XHRmb250LXNpemU6ICRmb250LXNpemUtbGc7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdG1hcmdpbjogMCAwIDAuNXJlbSAwO1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0Zm9udC1zaXplOiAwLjk1cmVtO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZS10cC04NTtcblx0XHRcdGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcblx0XHRcdG1heC13aWR0aDogOTAwcHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0Z2FwOiAxcmVtO1xuXHRcdH1cblxuXHR9XG5cblx0LmFkZG9uLWdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuXHRcdGdhcDogMnJlbTtcblx0XHRhbGlnbi1pdGVtczogc3RyZXRjaDtcblxuXHRcdC8qIFR3byBhY3Jvc3MgYmVmb3JlIG9uZTogdGhyZWUgY2FyZHMgYXQgdGFibGV0IHdpZHRoIGxlYXZlIG5vIHJvb20gZm9yIHRoZSBmZWF0dXJlIGxpc3RzLiAqL1xuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcblx0XHRcdGdhcDogMS41cmVtO1xuXHRcdH1cblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdFx0fVxuXG5cdH1cblxuXHQuYWRkb24tY2FyZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZS10cC0wNTtcblx0XHRwYWRkaW5nOiAycmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXhsO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICR3aGl0ZS10cC0xNTtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuXHRcdGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuXHRcdFx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTEwO1xuXHRcdFx0Ym94LXNoYWRvdzogJHNoYWRvdy1sZztcblx0XHRcdGJvcmRlci1jb2xvcjogJGN5YW4tdHAtNTA7XG5cdFx0fVxuXG5cdFx0Ji5yZWNvbW1lbmRlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRjeWFuO1xuXHRcdFx0Ym9yZGVyLXdpZHRoOiAycHg7XG5cdFx0XHRib3gtc2hhZG93OiAwIDEwcHggNDBweCAkY3lhbi10cC0yMDtcblx0XHR9XG5cblx0XHQvKiBEaWFsbGVkIGJhY2sgZnJvbSB0aGUgcGxhbiBjYXJkcyBhYm92ZTogYW4gYWRkLW9uIG11c3Qgbm90IG91dC1zaG91dCB0aGUgcGxhbiBpdFxuXHRcdCAgIGF0dGFjaGVzIHRvLiAqL1xuXHRcdC5wcmljaW5nLXRpdGxlIHtcblx0XHRcdGZvbnQtc2l6ZTogMS4zNXJlbTtcblx0XHRcdG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG5cdFx0fVxuXG5cdFx0LnByaWNpbmctcHJpY2Uge1xuXHRcdFx0Zm9udC1zaXplOiAyLjRyZW07XG5cdFx0fVxuXG5cdFx0LnByaWNpbmctZGVzY3JpcHRpb24ge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMS41cmVtO1xuXHRcdH1cblxuXHRcdC5mZWF0dXJlcy1saXN0IHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDEuNXJlbTtcblx0XHR9XG5cblx0XHQuYnRuIHtcblx0XHRcdG1hcmdpbi10b3A6IGF1dG87XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cblx0fVxuXG5cdC8qIFRoZSB0cmlhbCBpcyBub3QgYSBwYWlkIHRpZXIsIHNvIGl0IGlzIG1hcmtlZCBvdXQgcmF0aGVyIHRoYW4gbGVmdCB0byByZWFkIGFzIGEgdGhpcmRcblx0ICAgcHJpY2UgcG9pbnQuICovXG5cdC5hZGRvbi1jYXJkLnRyaWFsIHtcblx0XHRib3JkZXItY29sb3I6ICRncmVlbi10cC00MDtcblx0XHRiYWNrZ3JvdW5kOiAkZ3JlZW4tdHAtMDg7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJGdyZWVuLXRwLTcwO1xuXHRcdH1cblxuXHRcdC5wcmljaW5nLXByaWNlIHtcblx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0fVxuXG5cdH1cblxuXHQvKiBTaXRzIGFib3ZlIHRoZSB0cmlhbCBjYXJkJ3Mgb3duIGJ1dHRvbiwgd2hpY2ggaG9sZHMgdGhlIGJvdHRvbSBzbG90IHNvIGFsbCB0aHJlZSBjYXJkc1xuXHQgICBsaW5lIHVwIGFsb25nIHRoZSBib3R0b20uICovXG5cdC5hZGRvbi1jdGEtbm90ZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDAuNnJlbTtcblx0XHRtYXJnaW4tdG9wOiBhdXRvO1xuXHRcdG1hcmdpbi1ib3R0b206IDEuNXJlbTtcblx0XHRwYWRkaW5nOiAwLjlyZW0gMXJlbTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtMTA7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJHdoaXRlLXRwLTE1O1xuXHRcdGZvbnQtc2l6ZTogMC44NXJlbTtcblx0XHRsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG5cdFx0Y29sb3I6ICR3aGl0ZS10cC04NTtcblxuXHRcdGkge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRtYXJnaW4tdG9wOiAwLjJyZW07XG5cdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdH1cblxuXHR9XG5cblx0LmFkZG9uLWJhZGdlIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAtMC43NXJlbTtcblx0XHRyaWdodDogMS41cmVtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjeWFuO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0cGFkZGluZzogMC4zcmVtIDFyZW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0Zm9udC1zaXplOiAwLjc1cmVtO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0Ym94LXNoYWRvdzogMCA0cHggMTBweCAkYmxhY2stdHAtMjA7XG5cblx0XHQmLmZyZWUge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuO1xuXHRcdH1cblxuXHR9XG5cbn0iLCIuZmVhdHVyZXMtcGFnZSB7XG5cdC0tcGFnZS1iZy1pbWFnZTogdXJsKCdodHRwczovL2ltYWdlcy51bnNwbGFzaC5jb20vcGhvdG8tMTUyMjA3MTgyMDA4MS0wMDlmMDEyOWM3MWM/cT04MCZ3PTIwNzAmYXV0bz1mb3JtYXQmZml0PWNyb3AnKTtcblx0LS1wYWdlLWJnLXBvc2l0aW9uOiBjZW50ZXIgODAlO1xufVxuXG4ubW9kZXJuLWxvZ2luLXBhZ2Uge1xuXHQuZmVhdHVyZXMtZ3JpZCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuXHRcdGdhcDogMnJlbTtcblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdFx0fVxuXHR9XG5cblx0LmZlYXR1cmVzLW92ZXJ2aWV3IC5mZWF0dXJlcy1ncmlkIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzIwcHgsIDFmcikpO1xuXHRcdGdhcDogMnJlbTtcblx0fVxuXG5cdC5mZWF0dXJlLWNhcmQge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRwYWRkaW5nOiAyLjVyZW0gMnJlbTtcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtMDU7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJHdoaXRlLXRwLTE1O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCk7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtMTA7XG5cdFx0fVxuXG5cdH1cblxuXHQuZmVhdHVyZS1pY29uIHtcblx0XHRmb250LXNpemU6IDIuOHJlbTtcblx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdFx0Y29sb3I6ICRjeWFuO1xuXHR9XG5cblx0LmZlYXR1cmUtdGl0bGUge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1sZztcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdG1hcmdpbjogMCAwIDAuNzVyZW0gMDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHR9XG5cblx0LmZlYXR1cmUtZGVzY3JpcHRpb24ge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdGNvbG9yOiAkd2hpdGUtdHAtODU7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNztcblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQuZmluYWwtY3RhLXNlY3Rpb24ge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRwYWRkaW5nOiA0cmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2stdHAtMjA7XG5cdH1cblxuXHQuZmVhdHVyZXMtZGlzY2xhaW1lciB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHBhZGRpbmc6IDJyZW0gJHNlY3Rpb24tcGFkZGluZy14IDFyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXHRcdG1heC13aWR0aDogODAwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuXHRcdGNvbG9yOiAkd2hpdGUtdHAtNjA7XG5cdFx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXHR9XG5cblx0LnNlY3Rpb24tdGl0bGUge1xuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHRcdFx0Zm9udC1zaXplOiAycmVtO1xuXHRcdH1cblx0fVxuXG59XG5cbi5jb21pbmctc29vbi1iYW5uZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMThweDtcblx0cmlnaHQ6IC0zNXB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93LWN0YTtcblx0Y29sb3I6ICRibGFjaztcblx0cGFkZGluZzogNnB4IDM1cHg7XG5cdGZvbnQtc2l6ZTogMC44cmVtO1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcblx0Ym94LXNoYWRvdzogMCA0cHggNnB4ICRibGFjay10cC0xMDtcblx0bGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuXHR6LWluZGV4OiAxMDtcbn0iLCIubW9kZXJuLWxvZ2luLXBhZ2Uge1xuXHQuZGVtby1oZXJvIHtcblx0XHRwYWRkaW5nOiA0cmVtICRzZWN0aW9uLXBhZGRpbmcteCAzcmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHQuaGVyby10aXRsZSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdFx0fVxuXG5cdFx0Lmhlcm8tc3VidGl0bGUge1xuXHRcdFx0bWF4LXdpZHRoOiA4MDBweDtcblx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHR9XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRcdHBhZGRpbmc6IDNyZW0gJHNlY3Rpb24tcGFkZGluZy14IDJyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXHRcdH1cblxuXHR9XG5cblx0LmRlbW8tc2VjdGlvbiB7XG5cdFx0cGFkZGluZzogM3JlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRcdHBhZGRpbmc6IDIuNXJlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cdFx0fVxuXHR9XG5cblx0LmRlbW8tY29udGFpbmVyIHtcblx0XHRtYXgtd2lkdGg6IDExMDBweDtcblx0XHRtYXJnaW46IDAgYXV0bztcblx0XHRwYWRkaW5nOiAwIDFyZW07XG5cdH1cblxuXHQudmlkZW8td3JhcHBlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7XG5cdFx0aGVpZ2h0OiAwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMteGw7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJHdoaXRlLXRwLTE1O1xuXHRcdGJveC1zaGFkb3c6IDAgMTBweCA0MHB4ICRibGFjay10cC0zMDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XG5cblx0XHRpZnJhbWUge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdH1cblxuXHR9XG5cblx0LnNlY3Rpb24tdGl0bGUge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS14eGw7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRtYXJnaW4tYm90dG9tOiAxcmVtO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdH1cblxuXHQuc2VjdGlvbi1zdWJ0aXRsZSB7XG5cdFx0Zm9udC1zaXplOiAxLjE1cmVtO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbGlnaHQ7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdG1heC13aWR0aDogNzUwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG8gMy41cmVtIGF1dG87XG5cdFx0Y29sb3I6ICR3aGl0ZS10cC04NTtcblx0XHRsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG5cdH1cblxuXHQuZm9ybS1jb250YWluZXIge1xuXHRcdG1heC13aWR0aDogNjUwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdHBhZGRpbmc6IDNyZW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0Ym94LXNoYWRvdzogJHNoYWRvdy1tZDtcblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdFx0cGFkZGluZzogMnJlbSAxLjVyZW07XG5cdFx0fVxuXHR9XG5cblx0LmJ0bi1wcmltYXJ5IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY3lhbjtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctY3lhbi1zbTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGN5YW4tZGFya2VyO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xuXHRcdFx0Ym94LXNoYWRvdzogJHNoYWRvdy1jeWFuLW1kO1xuXHRcdH1cblxuXHRcdCY6ZGlzYWJsZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXktZGlzYWJsZWQ7XG5cdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdHRyYW5zZm9ybTogbm9uZTtcblx0XHR9XG5cblx0fVxuXG5cdC5zdWNjZXNzLW1lc3NhZ2Uge1xuXHRcdG1heC13aWR0aDogNjUwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0cGFkZGluZzogMi41cmVtO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRiYWNrZ3JvdW5kOiAkZ3JlZW4tdHAtMTA7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZWVuLXRwLTcwO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cblx0XHRoNCB7XG5cdFx0XHRmb250LXNpemU6ICRmb250LXNpemUteGw7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdFx0bWFyZ2luOiAwIDAgMXJlbSAwO1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0Zm9udC1zaXplOiAxLjFyZW07XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG5cdFx0XHRjb2xvcjogJHdoaXRlLXRwLTkwO1xuXHRcdH1cblxuXHR9XG59XG5cbi5tb2Rlcm4tbW9kYWwtYmFja2Ryb3Age1xuXHRiYWNrZ3JvdW5kOiAkbmF2eS1iYWNrZHJvcDtcblx0YmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuXHQtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbn1cblxuLm1vZGVybi1tb2RhbC13aW5kb3cge1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdHRvcDogMDtcblx0bGVmdDogMDtcblx0cmlnaHQ6IDA7XG5cdGJvdHRvbTogMDtcblx0ei1pbmRleDogMTA1MDtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG5cdC5tb2RhbC1jb250ZW50IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXhsO1xuXHRcdGJveC1zaGFkb3c6IDAgMTJweCA0MHB4ICRibGFjay10cC00MDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRtYXgtd2lkdGg6IDUwMHB4O1xuXHRcdHdpZHRoOiA5MCU7XG5cdFx0cG9pbnRlci1ldmVudHM6IGF1dG87XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdGFuaW1hdGlvbjogbW9kYWxGYWRlSW4gMC4zcyBlYXNlLW91dCBmb3J3YXJkcztcblx0fVxuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdC5tb2RhbC1jb250ZW50IHtcblx0XHRcdHdpZHRoOiA5NSU7XG5cdFx0XHRtYXJnaW46IDFyZW07XG5cdFx0fVxuXHR9XG5cbn1cblxuQGtleWZyYW1lcyBtb2RhbEZhZGVJbiB7XG5cdGZyb20ge1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMHB4KTtcblx0fVxuXG5cdHRvIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcblx0fVxufVxuXG4ubW9kYWwtaGVhZGVyIHtcblx0cGFkZGluZzogMS41cmVtIDJyZW07XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXktbW9kYWwtaGVhZGVyO1xuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdHBhZGRpbmc6IDEuMnJlbSAxLjVyZW07XG5cdH1cbn1cblxuLm1vZGFsLXRpdGxlIHtcblx0Zm9udC1zaXplOiAxLjY1cmVtO1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZy1yaWdodDogMnJlbTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdGZvbnQtc2l6ZTogMS40cmVtO1xuXHR9XG59XG5cbi5jbG9zZS1idG4ge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMXJlbTtcblx0cmlnaHQ6IDFyZW07XG5cdGZvbnQtc2l6ZTogMi4ycmVtO1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWxpZ2h0O1xuXHRjb2xvcjogJHRleHQtY2xvc2UtYnRuO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xuXHRib3JkZXI6IG5vbmU7XG5cdG9wYWNpdHk6IDAuNztcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZSwgY29sb3IgMC4ycyBlYXNlLCB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuXHQvLyBBZGRlZCB0cmFuc2Zvcm0gXG5cdCY6aG92ZXIge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuXHR9XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0dG9wOiAwLjhyZW07XG5cdFx0cmlnaHQ6IDAuOHJlbTtcblx0XHRmb250LXNpemU6IDJyZW07XG5cdH1cblxufVxuXG4ubW9kYWwtYm9keSB7XG5cdHBhZGRpbmc6IDIuNXJlbSAycmVtO1xuXG5cdC5mb3JtLWdyb3VwIHtcblx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdH1cblxuXHQuZm9ybS1jb250cm9sOmZvY3VzIHtcblx0XHRib3JkZXItY29sb3I6ICRjeWFuO1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCAkY3lhbi10cC0yNTtcblx0fVxuXG5cdC5idG4tcHJpbWFyeSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0cGFkZGluZzogMS4xcmVtO1xuXHRcdGZvbnQtc2l6ZTogMS4xcmVtO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRtYXJnaW4tdG9wOiAwLjVyZW07XG5cdH1cblxuXHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRwYWRkaW5nOiAxLjhyZW0gMS41cmVtO1xuXG5cdFx0LmJ0bi1wcmltYXJ5IHtcblx0XHRcdHBhZGRpbmc6IDFyZW07XG5cdFx0XHRmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcblx0XHR9XG5cdH1cblxufVxuXG4ubW9kYWwtc3VidGl0bGUge1xuXHRmb250LXNpemU6IDEuMDVyZW07XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbGlnaHQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0bWFyZ2luLWJvdHRvbTogMnJlbTtcblx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0Zm9udC1zaXplOiAwLjk1cmVtO1xuXHR9XG59XG5cbi5tb2RhbC1zdWNjZXNzIHtcblx0YmFja2dyb3VuZDogJGdyZWVuLXRwLTA4O1xuXHRib3JkZXI6IDFweCBzb2xpZCAkZ3JlZW4tdHAtNDA7XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRwYWRkaW5nOiAxLjVyZW07XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0bWFyZ2luLXRvcDogMS41cmVtO1xuXHRjb2xvcjogJHRleHQtZGFyaztcblxuXHRoNCB7XG5cdFx0Zm9udC1zaXplOiAxLjZyZW07XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0bWFyZ2luOiAwIDAgMC44cmVtIDA7XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRcdGZvbnQtc2l6ZTogMS40cmVtO1xuXHRcdH1cblx0fVxuXG5cdHAge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcblx0XHRjb2xvcjogJHRleHQtbGlnaHQ7XG5cdH1cblxuXHQuZmEtY2hlY2stY2lyY2xlIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDAuNzVyZW07XG5cdFx0Y29sb3I6ICRncmVlbjtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUteGw7XG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0fVxufVxuXG4vKiBTaXRzIGFib3ZlIHRoZSBzdWJtaXQgYnV0dG9uIHJhdGhlciB0aGFuIHJlcGxhY2luZyB0aGUgZm9ybSwgYmVjYXVzZSB0aGUgZGV0YWlscyBhcmUgc3RpbGxcbiAgIGZpbGxlZCBpbiBhbmQgcmV0cnlpbmcgaXMgdXN1YWxseSBhbGwgdGhhdCBpcyBuZWVkZWQuICovXG4ubW9kYWwtZXJyb3Ige1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0Z2FwOiAwLjc1cmVtO1xuXHRiYWNrZ3JvdW5kOiByZ2JhKDE2OSwgNjgsIDY2LCAwLjA4KTtcblx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgxNjksIDY4LCA2NiwgMC40KTtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdHBhZGRpbmc6IDFyZW0gMS4yNXJlbTtcblx0bWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuXHRsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG5cdGNvbG9yOiAkZGFuZ2VyO1xuXG5cdGkge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdG1hcmdpbi10b3A6IDAuMTVyZW07XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdH1cbn0iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFNlYXQgbW9kYWxzIChwcmljaW5nIHBhZ2UgYWRkLW9ucylcbi8qXG4vKiBUaGUgdHdvIG1vZGFscyBvcGVuZWQgZnJvbSB0aGUgQUkgdHJhbnNjcmlwdGlvbiBhZGQtb24gY2FyZHM6IGJ1eWluZyBzZWF0cywgYW5kIGhhbmRpbmcgdGhlbVxuLyogb3V0LiBCb3RoIHNoYXJlIHRoZSBjaHJvbWUgKC5tb2RhbC1oZWFkZXIsIC5tb2RhbC1ib2R5LCAubW9kYWwtdGl0bGUsIC5jbG9zZS1idG4pIHdpdGggdGhlXG4vKiBib29rLWEtZGVtbyBtb2RhbCBpbiBfd2Vic2l0ZV9ib29rX2RlbW8uY3NzLCBhbmQgdGhlIGFzc2lnbiBtb2RhbCByZXVzZXMgdGhlIHRhYmxlLCBhdmF0YXIgYW5kXG4vKiB0aWVyIHNlbGVjdG9yIHN0eWxpbmcgZnJvbSBfdHJhbnNjcmlwdGlvbi1zZWF0cy5jc3MuIE9ubHkgd2hhdCBpcyBzcGVjaWZpYyB0byB0aGVzZSB0d28gbGl2ZXNcbi8qIGhlcmUuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEJvdGggYXJlIHdpZGVyIHRoYW4gdGhlIHNoYXJlZCA1MDBweCBkZW1vIG1vZGFsOiB0aGUgcHVyY2hhc2Ugc3RlcCBjYXJyaWVzIHR3byB0aWVyIGNhcmRzLCBhXG4gICBzdGVwcGVyIGVhY2ggYW5kIGEgcHJpY2VkIHN1bW1hcnksIGFuZCB0aGUgYXNzaWduIG1vZGFsIGNhcnJpZXMgYSB0YWJsZSBvZiB0aGUgd2hvbGUgcHJhY3RpY2UuXG4gICBDYXBwZWQgYXQgdGhlIHZpZXdwb3J0IHdpdGggdGhlIGJvZHkgc2Nyb2xsaW5nIGluc2lkZSwgYmVjYXVzZSBib3RoIHJ1biBvZmYgYSBsYXB0b3Agc2NyZWVuLiAqL1xuLnNlYXQtcHVyY2hhc2Utd2luZG93LFxuLnNlYXQtYXNzaWduLXdpbmRvdyB7XG5cdC5tb2RhbC1jb250ZW50IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0bWF4LWhlaWdodDogOTB2aDtcblx0fVxufVxuXG4uc2VhdC1wdXJjaGFzZS13aW5kb3cge1xuXHQubW9kYWwtY29udGVudCB7XG5cdFx0bWF4LXdpZHRoOiA3MjBweDtcblx0fVxufVxuXG4uc2VhdC1hc3NpZ24td2luZG93IHtcblx0Lm1vZGFsLWNvbnRlbnQge1xuXHRcdG1heC13aWR0aDogOTAwcHg7XG5cdH1cbn1cblxuLnNlYXQtcHVyY2hhc2UtbW9kYWwge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRtaW4taGVpZ2h0OiAwO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0Lm1vZGFsLWhlYWRlciB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdH1cblxuXHQvKiBtaW4taGVpZ2h0IG92ZXJyaWRlcyB0aGUgbWluLWNvbnRlbnQgZmxvb3IgYSBmbGV4IGl0ZW0gZ2V0cyBieSBkZWZhdWx0LCB3aXRob3V0IHdoaWNoIHRoZVxuXHQgICBib2R5IHJlZnVzZXMgdG8gc2hyaW5rIGFuZCBzY3JvbGxzIHRoZSB3aG9sZSBwYWdlIGluc3RlYWQgb2YgaXRzZWxmLiAqL1xuXHQubW9kYWwtYm9keSB7XG5cdFx0bWluLWhlaWdodDogMDtcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHR9XG5cblx0LyogRXZlcnkgc3RlcCBpbiBoZXJlIGlzIGEgc2VydmVyIHJvdW5kIHRyaXAgLSBzaWduaW5nIGluLCBwcmljaW5nLCBjaGFyZ2luZyBhIGNhcmQgLSBzbyB0aGVcblx0ICAgd2hvbGUgbW9kYWwgaXMgYmxvY2tlZCByYXRoZXIgdGhhbiBlYWNoIGNvbnRyb2wgZGlzYWJsZWQgb25lIGF0IGEgdGltZS4gKi9cblx0LnNlYXQtcHVyY2hhc2Utb3ZlcmxheSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDFyZW07XG5cdFx0ei1pbmRleDogMTA7XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTkwO1xuXHRcdGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xuXHRcdC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0fVxuXG5cdC5zcGlubmVyIHtcblx0XHR3aWR0aDogNDBweDtcblx0XHRoZWlnaHQ6IDQwcHg7XG5cdFx0Ym9yZGVyOiA0cHggc29saWQgJG5hdnktdHAtMjA7XG5cdFx0Ym9yZGVyLXRvcC1jb2xvcjogJGN5YW47XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGFuaW1hdGlvbjogc3Bpbm5lci1yb3RhdGlvbiAwLjhzIGxpbmVhciBpbmZpbml0ZTtcblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLWRldi13YXJuaW5nIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAwLjI1cmVtO1xuXHRcdHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcblx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZDogJHllbGxvdy10cC0xMDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkeWVsbG93LXRwLTUwO1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1zbTtcblx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblxuXHRcdHN0cm9uZyB7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuXHRcdH1cblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLWZvb3Rub3RlIHtcblx0XHRtYXJnaW46IDEuNXJlbSAwIDAgMDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuXHRcdGEge1xuXHRcdFx0Y29sb3I6ICRjeWFuLWRhcms7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdH1cblx0fVxuXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIFR3by1mYWN0b3IgY29kZSBib3hlc1xuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQuc2VhdC1jb2RlLWlucHV0cyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDAuNnJlbTtcblx0XHRtYXJnaW46IDEuNXJlbSAwIDAuNXJlbSAwO1xuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHR3aWR0aDogNDhweDtcblx0XHRcdGhlaWdodDogNTZweDtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRmb250LXNpemU6IDEuNnJlbTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0XHRnYXA6IDAuMzVyZW07XG5cblx0XHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0XHR3aWR0aDogNDBweDtcblx0XHRcdFx0aGVpZ2h0OiA0OHB4O1xuXHRcdFx0XHRmb250LXNpemU6IDEuM3JlbTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQvKiBQcmFjdGljZSBwaWNrZXJcblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LnNlYXQtcHJhY3RpY2UtbGlzdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMC43NXJlbTtcblx0fVxuXG5cdC5zZWF0LXByYWN0aWNlLW9wdGlvbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRnYXA6IDFyZW07XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0cGFkZGluZzogMXJlbSAxLjI1cmVtO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0YmFja2dyb3VuZDogJGdyZXktbW9kYWwtaGVhZGVyO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMgZWFzZSwgYmFja2dyb3VuZCAwLjJzIGVhc2U7XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRjeWFuO1xuXHRcdFx0YmFja2dyb3VuZDogJGN5YW4tdHAtMDU7XG5cdFx0fVxuXG5cdFx0LyogVGhlIG9uZSBhbHJlYWR5IGxvYWRlZCwgc28gc3dpdGNoaW5nIGF3YXkgYW5kIGJhY2sgaXMgbm90IGEgZ3Vlc3MuICovXG5cdFx0Ji5jdXJyZW50IHtcblx0XHRcdGJvcmRlci1jb2xvcjogJGN5YW47XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY3lhbi10cC0wNTtcblx0XHR9XG5cblx0XHQuc2VhdC1wcmFjdGljZS1uYW1lIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cblx0XHQuc2VhdC1wcmFjdGljZS1jdXJyZW50IHtcblx0XHRcdGZvbnQtc2l6ZTogMC43NXJlbTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdFx0Y29sb3I6ICRjeWFuLWRhcms7XG5cdFx0fVxuXG5cdFx0aSB7XG5cdFx0XHRjb2xvcjogJGN5YW47XG5cdFx0fVxuXHR9XG5cblx0LyogTmFtZXMgdGhlIHByYWN0aWNlIGJlaW5nIHdvcmtlZCBvbiwgYW5kIGNhcnJpZXMgdGhlIHdheSB0byBzd2FwIHRvIGFub3RoZXIuIFNpdHMgYXQgdGhlIHRvcFxuXHQgICBvZiBib3RoIG1vZGFsczogYSBncm91cCBzZXR0aW5nIHVwIHNldmVyYWwgbmVlZHMgdG8gc2VlIHdoaWNoIG9uZSBpdCBpcyBvbiBiZWZvcmUgaXQgcmVhZHNcblx0ICAgYW55dGhpbmcgYmVsb3cuICovXG5cdC5zZWF0LXByYWN0aWNlLWJhciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRnYXA6IDFyZW07XG5cdFx0cGFkZGluZzogMC43NXJlbSAxcmVtO1xuXHRcdG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZDogJG5hdnktdHAtMDU7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG5cdFx0LmJ0biB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDAuNHJlbSAwLjlyZW07XG5cdFx0XHRmb250LXNpemU6IDAuNzVyZW07XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHR9XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRcdGdhcDogMC42cmVtO1xuXHRcdH1cblx0fVxuXG5cdC5zZWF0LXByYWN0aWNlLWJhci1sYWJlbCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMC42cmVtO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtc207XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0c3Ryb25nIHtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXG5cdFx0aSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogQnV5aW5nXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC5zZWF0LXB1cmNoYXNlLWxvYWRpbmcge1xuXHRcdHBhZGRpbmc6IDIuNXJlbSAwO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHRpIHtcblx0XHRcdG1hcmdpbi1yaWdodDogMC41cmVtO1xuXHRcdFx0Y29sb3I6ICRjeWFuO1xuXHRcdH1cblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLXRpZXJzIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcblx0XHRnYXA6IDFyZW07XG5cdFx0bWFyZ2luLWJvdHRvbTogMS41cmVtO1xuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgdGllciB3aG9zZSBidXR0b24gd2FzIGNsaWNrZWQgb24gdGhlIHByaWNpbmcgcGFnZSwgc28gdGhlIHZpc2l0b3IgY2FuIHNlZSB0aGF0IHRoZVxuXHQgICBtb2RhbCBvcGVuZWQgb24gdGhlIHNlYXQgdGhleSBhY3R1YWxseSBhc2tlZCBmb3IuICovXG5cdC5zZWF0LXB1cmNoYXNlLXRpZXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDAuNnJlbTtcblx0XHRwYWRkaW5nOiAxLjI1cmVtO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGU7XG5cblx0XHQmLnNlbGVjdGVkIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJGN5YW47XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggJGN5YW4tdHAtMTA7XG5cdFx0fVxuXHR9XG5cblx0LnNlYXQtcHVyY2hhc2UtdGllci1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0Z2FwOiAwLjVyZW07XG5cblx0XHRoNCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmb250LXNpemU6IDEuMXJlbTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXHR9XG5cblx0LnNlYXQtcHVyY2hhc2UtdGllci1wcmljZSB7XG5cdFx0Zm9udC1zaXplOiAxLjE1cmVtO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdHNtYWxsIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAwLjdyZW07XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdH1cblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLXRpZXItaW5jbHVkZWQge1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtc207XG5cdFx0Y29sb3I6ICR0ZXh0LWxpZ2h0O1xuXHR9XG5cblx0LnNlYXQtcHVyY2hhc2UtdGllci1zdGF0ZSB7XG5cdFx0Zm9udC1zaXplOiAwLjhyZW07XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogUHJpY2VkIHN1bW1hcnkuIEV2ZXJ5IGZpZ3VyZSBpbiBoZXJlIGNvbWVzIGJhY2sgZnJvbSB0aGUgc2VydmVyLlxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQuc2VhdC1wdXJjaGFzZS1zdW1tYXJ5IHtcblx0XHRwYWRkaW5nOiAxLjI1cmVtO1xuXHRcdG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZDogJGdyZXktbW9kYWwtaGVhZGVyO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLXN1bW1hcnktbG9hZGluZyxcblx0LnNlYXQtcHVyY2hhc2Utc3VtbWFyeS1lbXB0eSB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1zbTtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHRpIHtcblx0XHRcdG1hcmdpbi1yaWdodDogMC40cmVtO1xuXHRcdFx0Y29sb3I6ICRjeWFuO1xuXHRcdH1cblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLWxpbmUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGdhcDogMXJlbTtcblx0XHRwYWRkaW5nOiAwLjRyZW0gMDtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtc207XG5cdFx0Y29sb3I6ICR0ZXh0LWxpZ2h0O1xuXG5cdFx0c21hbGwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDAuNzVyZW07XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0fVxuXG5cdFx0c3Ryb25nIHtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblxuXHRcdCYudG90YWwge1xuXHRcdFx0bWFyZ2luLXRvcDogMC40cmVtO1xuXHRcdFx0cGFkZGluZy10b3A6IDAuNzVyZW07XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR9XG5cblx0XHQmLmR1ZSB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwLjVyZW07XG5cdFx0XHRwYWRkaW5nOiAwLjc1cmVtO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY3lhbi10cC0xMDtcblxuXHRcdFx0c3Ryb25nIHtcblx0XHRcdFx0Y29sb3I6ICRjeWFuLWRhcms7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LnNlYXQtcHVyY2hhc2UtbmV4dCB7XG5cdFx0bWFyZ2luOiAwLjc1cmVtIDAgMCAwO1xuXHRcdGZvbnQtc2l6ZTogMC44cmVtO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLWNhcmRzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAwLjZyZW07XG5cdFx0bWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLWNhcmQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDAuOXJlbTtcblx0XHRwYWRkaW5nOiAwLjhyZW0gMXJlbTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1zbTtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHQ+IGkge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRmb250LXNpemU6IDEuMXJlbTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQuYnRuIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZzogMC40cmVtIDAuOXJlbTtcblx0XHRcdGZvbnQtc2l6ZTogMC43NXJlbTtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdH1cblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBsYWJlbCBhbmQgdGhlIGNhcmQgaXRzZWxmIHN0YWNrLCBhbmQgdGFrZSB3aGF0ZXZlciB3aWR0aCBpcyBsZWZ0IG9uY2UgdGhlIGljb24gYW5kIHRoZVxuXHQgICBjaGFuZ2UgYnV0dG9uIGhhdmUgaGFkIHRoZWlycy4gKi9cblx0LnNlYXQtcHVyY2hhc2UtY2FyZC1kZXRhaWwge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRmbGV4OiAxIDEgYXV0bztcblx0XHRtaW4td2lkdGg6IDA7XG5cblx0XHRzdHJvbmcge1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR9XG5cdH1cblxuXHQuc2VhdC1wdXJjaGFzZS1ub3RlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAwLjc1cmVtO1xuXHRcdHBhZGRpbmc6IDAuOXJlbSAxLjFyZW07XG5cdFx0bWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtc207XG5cdFx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXG5cdFx0aSB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHR9XG5cblx0XHQuYnRuIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZzogMC40cmVtIDAuOXJlbTtcblx0XHRcdGZvbnQtc2l6ZTogMC43NXJlbTtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdH1cblxuXHRcdCYuaW5mbyB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkbmF2eS10cC0wNTtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGNvbG9yOiAkdGV4dC1saWdodDtcblxuXHRcdFx0aSB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLndhcm5pbmcge1xuXHRcdFx0YmFja2dyb3VuZDogJHllbGxvdy10cC0xMDtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICR5ZWxsb3ctdHAtNTA7XG5cdFx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHR9XG5cblx0XHQmLnN1Y2Nlc3Mge1xuXHRcdFx0YmFja2dyb3VuZDogJGdyZWVuLXRwLTA4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZWVuLXRwLTQwO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLXZhbGlkYXRpb24ge1xuXHRcdG1hcmdpbi1ib3R0b206IDFyZW07XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuXHRcdGNvbG9yOiAkZGFuZ2VyO1xuXG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDAuNHJlbTtcblx0XHR9XG5cdH1cblxuXHQuc2VhdC1wdXJjaGFzZS1zdHJpcGUge1xuXHRcdHBhZGRpbmc6IDFyZW07XG5cdFx0bWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogQnV0dG9uc1xuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC8qIC5tb2RhbC1ib2R5IGluIF93ZWJzaXRlX2Jvb2tfZGVtby5jc3Mgc2l6ZXMgdGhlIHByaW1hcnkgQ1RBLCBidXQgaXRzIGNvbG91ciBpcyBkZWNsYXJlZFxuXHQgICBpbnNpZGUgLm1vZGVybi1sb2dpbi1wYWdlIC0gYW5kIGEgbW9kYWwgYXBwZW5kZWQgdG8gdGhlIGJvZHkgc2l0cyBvdXRzaWRlIHRoYXQuIFJlc3RhdGVkXG5cdCAgIGhlcmUgc28gdGhlIENUQSBtYXRjaGVzIHRoZSBwcmljaW5nIHBhZ2UgaXQgd2FzIGNsaWNrZWQgZnJvbS4gKi9cblx0LmJ0bi1wcmltYXJ5IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY3lhbjtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3gtc2hhZG93OiAkc2hhZG93LWN5YW4tc207XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY3lhbi1kYXJrZXI7XG5cdFx0XHRib3gtc2hhZG93OiAkc2hhZG93LWN5YW4tbWQ7XG5cdFx0fVxuXG5cdFx0JltkaXNhYmxlZF0ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXktZGlzYWJsZWQ7XG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdFx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcblx0XHR9XG5cdH1cblxuXHQuYnRuLW91dGxpbmUtY3lhbiB7XG5cdFx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGN5YW47XG5cdFx0Y29sb3I6ICRjeWFuLWRhcms7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZDogJGN5YW47XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblx0fVxuXG5cdC5idG4tcGxhaW4ge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1hcmdpbi10b3A6IDAuNzVyZW07XG5cdFx0cGFkZGluZzogMC45cmVtO1xuXHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBBc3NpZ24gc2VhdHMgbW9kYWxcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnNlYXQtYXNzaWduLW1vZGFsIHtcblx0LyogVGhlIGNvdW50IHNpdHMgaGFyZCByaWdodCBvZiB0aGUgc2VhcmNoIGJveC4gVGhlIGFwcCdzIGNvcHkgb2YgdGhpcyB0b29sYmFyIHVzZXMgQW5ndWxhclxuXHQgICBNYXRlcmlhbCdzIGZsZXggYXR0cmlidXRlIGZvciB0aGUgZ2FwLCB3aGljaCBoYXMgbm8gcGxhY2UgaW4gYSBwbGFpbiBCb290c3RyYXAgbW9kYWwuICovXG5cdC5zZWF0LXRhYmxlLXRvb2xiYXIge1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdH1cblxuXHQvKiBUaGUgdGFibGUgaXMgdGhlIHRhbGwgcGFydCwgc28gaXQgc2Nyb2xscyBpbnNpZGUgaXRzZWxmIHJhdGhlciB0aGFuIHB1c2hpbmcgdGhlIGFjdGlvbnNcblx0ICAgYmVsb3cgdGhlIGZvbGQgb24gYSBwcmFjdGljZSB3aXRoIGEgbG9uZyBzdGFmZiBsaXN0LiAqL1xuXHQuc2VhdC10YWJsZS13cmFwcGVyIHtcblx0XHRtYXgtaGVpZ2h0OiA0MnZoO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdH1cblxuXHQuc2VhdC1hc3NpZ24tYWN0aW9ucyB7XG5cdFx0bWFyZ2luLXRvcDogMS41cmVtO1xuXG5cdFx0LmJ0bi1wbGFpbiB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwLjc1cmVtO1xuXHRcdH1cblx0fVxuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdC5zZWF0LXNlYXJjaCB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdH1cbn1cbiIsIi5tb2Rlcm4tbG9naW4tcGFnZSB7XG5cblx0LnBhZ2UtaGVhZGVyIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1oZWFkZXItYmc7XG5cdFx0cGFkZGluZzogMC43NXJlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cdFx0cGFkZGluZy10b3A6IDAuNXJlbTtcblx0XHRtYXJnaW4tdG9wOiAwcmVtO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkd2hpdGUtdHAtMTU7XG5cdFx0YmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG5cdFx0cG9zaXRpb246IHN0aWNreTtcblx0XHR0b3A6IDA7XG5cdFx0ei1pbmRleDogMTAwMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHR9XG5cblx0LmhlYWRlci1jb250YWluZXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiAxNDAwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cdH1cblxuXHQubmF2LWxvZ28ge1xuXHRcdGhlaWdodDogNTBweDtcblx0XHR3aWR0aDogYXV0bztcblx0XHRmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMXB4IDRweCAkYmxhY2stdHAtMzApO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdH1cblxuXHQubWFpbi1uYXYgdWwge1xuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMXJlbTtcblx0fVxuXG5cdC5uYXYtbGluayB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlLXRwLTEwO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICR3aGl0ZS10cC0yMDtcblx0XHRiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcblx0XHQtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdHBhZGRpbmc6IDAuNnJlbSAxLjJyZW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGUtdHAtMjA7XG5cdFx0XHRib3JkZXItY29sb3I6ICR3aGl0ZS10cC01MDtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcblx0XHR9XG5cdH1cblxuXHQuYnRuLW5hdi1kZW1vIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93LWN0YTtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdHBhZGRpbmc6IDAuOHJlbSAxLjhyZW07XG5cdFx0Zm9udC1zaXplOiAxLjE1cmVtO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cdFx0Ym94LXNoYWRvdzogMCA0cHggMTVweCAkYmxhY2stdHAtMTA7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRtYXgtd2lkdGg6IDI1cmVtO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93O1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAzcHggMjBweCAkeWVsbG93O1xuXHRcdH1cblx0fVxufSJdfQ== */
