/*
 * Services page redesign — page-scoped styles.
 * Active only on body.services-redesign (the /services/ directory and single
 * service pages). The markup carries the design's inline styles; this file
 * adds the hover/motion, the base font, and responsive breakpoints.
 */

.sln-services {
	font-family: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
	color: #1A1D21;
}

/* The hero supplies its own top spacing; drop the theme's default gap. */
body.services-redesign .content {
	padding-top: 0;
}

/* Hover / motion (ported from the design's <style> block). */
.sln-services .sln-card-link {
	-webkit-transition: border-color .25s ease, -webkit-transform .25s ease, -webkit-box-shadow .25s ease;
	transition: border-color .25s ease, -webkit-transform .25s ease, -webkit-box-shadow .25s ease;
	transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
	transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease, -webkit-transform .25s ease, -webkit-box-shadow .25s ease;
}
.sln-services .sln-card-link:hover {
	-webkit-transform: translateY(-4px);
	        transform: translateY(-4px);
	-webkit-box-shadow: 0 18px 50px -18px rgba(78, 67, 58, 0.35);
	        box-shadow: 0 18px 50px -18px rgba(78, 67, 58, 0.35);
}
.sln-services .sln-arrow {
	-webkit-transition: -webkit-transform .2s ease;
	transition: -webkit-transform .2s ease;
	transition: transform .2s ease;
	transition: transform .2s ease, -webkit-transform .2s ease;
	display: inline-block;
}
.sln-services .sln-card-link:hover .sln-arrow {
	-webkit-transform: translateX(5px);
	        transform: translateX(5px);
}
/*
 * Buttons reproduce the homepage button hover exactly (main.css .button-standart):
 * on hover a circle rises from below and fills the button with the opposite
 * brand color (orange buttons -> blue, blue buttons -> orange), the label/arrow
 * stay white, plus a soft shadow. The fill lives in a ::before circle that
 * animates top:100% -> top:50%.
 *
 * isolation:isolate + ::before{z-index:-1} keeps the rising circle above the
 * button's own background but BELOW the in-flow label/arrow, so the text stays
 * readable without needing to wrap it in a <span> in the markup.
 */
.sln-services .sln-btn {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	-webkit-transition: -webkit-box-shadow .2s linear;
	transition: -webkit-box-shadow .2s linear;
	transition: box-shadow .2s linear;
	transition: box-shadow .2s linear, -webkit-box-shadow .2s linear;
}
.sln-services .sln-btn::before {
	content: "";
	position: absolute;
	z-index: -1;
	top: 100%;
	left: 50%;
	width: calc(100% + 12.5rem);
	height: calc(100% + 12.5rem);
	border-radius: 50%;
	background-color: #157ED9; /* orange buttons fill blue on hover */
	-webkit-transform: translateX(-50%);
	        transform: translateX(-50%);
	-webkit-transition: all .4s ease;
	transition: all .4s ease;
}
.sln-services .sln-btn[style*="#157ED9"]::before {
	background-color: #ED1C24; /* blue buttons fill red on hover (matches homepage) */
}
.sln-services .sln-btn:hover {
	-webkit-box-shadow: 0 0 0.625rem rgba(26, 29, 33, 0.3);
	        box-shadow: 0 0 0.625rem rgba(26, 29, 33, 0.3);
}
.sln-services .sln-btn:hover::before {
	top: 50%;
	-webkit-transform: translateX(-50%) translateY(-50%);
	        transform: translateX(-50%) translateY(-50%);
}
.sln-services .sln-btn:hover .sln-arrow {
	-webkit-transform: translateX(4px);
	        transform: translateX(4px);
}
/*
 * Secondary "ghost" button (e.g. Get the free plugin): a soft tinted pill.
 * It is NOT a card, so it must not borrow the card-lift hover; a gentle
 * background deepen keeps it consistent with the other secondary buttons.
 */
.sln-services .sln-btn-ghost {
	-webkit-transition: background-color .2s ease;
	transition: background-color .2s ease;
}
.sln-services .sln-btn-ghost:hover {
	background: rgba(253, 150, 55, 0.3) !important;
}
.sln-services ::-moz-selection {
	background: rgba(253, 150, 55, 0.25);
}
.sln-services ::selection {
	background: rgba(253, 150, 55, 0.25);
}

/* Tablet */
@media (max-width: 992px) {
	.sln-services .sln-showcase-grid {
		grid-template-columns: 1fr !important;
	}
	.sln-services .sln-h1 {
		font-size: 44px !important;
	}
	.sln-services .sln-h2 {
		font-size: 34px !important;
	}
}

/* Mobile */
@media (max-width: 600px) {
	.sln-services .sln-sec {
		padding-left: 20px !important;
		padding-right: 20px !important;
	}
	.sln-services .sln-hero {
		padding-top: 56px !important;
	}
	.sln-services .sln-hero-cta {
		-ms-flex-wrap: wrap !important;
		    flex-wrap: wrap !important;
		-webkit-box-pack: center !important;
		    -ms-flex-pack: center !important;
		        justify-content: center !important;
	}
	.sln-services .sln-h1 {
		font-size: 32px !important;
	}
	.sln-services .sln-h2 {
		font-size: 28px !important;
	}
	.sln-services .sln-showcase-grid > div {
		min-height: 360px !important;
	}
	.sln-services .sln-showcase-side {
		min-height: 0 !important;
	}
	.sln-services .sln-cta {
		padding: 32px 24px !important;
	}
	.sln-services .sln-cta-h {
		font-size: 22px !important;
	}
	.sln-services .sln-dir-inner {
		padding: 56px 20px 64px !important;
	}
	.sln-services .sln-grid {
		grid-template-columns: 1fr !important;
	}
}

/*
 * Hosting page layout grids.
 * These live here (not in inline styles) because WordPress's the_content
 * filter mangles inline CSS values containing nested function calls such as
 * repeat(...minmax(...)) — the trailing "))" gets rewritten into a "</span>".
 * Stylesheet CSS is not run through the_content, so it is safe.
 */
.sln-services .sln-host-hero {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 0.92fr);
	gap: 56px;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
}
.sln-services .sln-feature-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
}
.sln-services .sln-pillar-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 24px;
}

/* Custom Development page (Custom Development.dc.html) layout grids. */
.sln-services .sln-cd-pillars {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 24px;
}
.sln-services .sln-cd-split {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
	gap: 48px;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
}
.sln-services .sln-cd-steps {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 24px;
}
.sln-services .sln-cd-cta {
	background: #D0E6FF;
}

/* Solin Streaks page (Solin Streaks.dc.html) layout grids. */
.sln-services .sln-streaks-build {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: 24px;
}
.sln-services .sln-streaks-pair {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(420px, 1fr));
	gap: 28px;
	-webkit-box-align: start;
	    -ms-flex-align: start;
	        align-items: start;
}
.sln-services .sln-streaks-prow {
	display: grid;
	grid-template-columns: 1.15fr 2fr 1fr;
	gap: 28px;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
}
.sln-services .sln-streaks-penguin {
	-webkit-filter: drop-shadow(0 6px 10px rgba(40, 90, 150, 0.25));
	        filter: drop-shadow(0 6px 10px rgba(40, 90, 150, 0.25));
}
.sln-services .sln-card {
	-webkit-transition: -webkit-transform .25s ease, -webkit-box-shadow .25s ease;
	transition: -webkit-transform .25s ease, -webkit-box-shadow .25s ease;
	transition: transform .25s ease, box-shadow .25s ease;
	transition: transform .25s ease, box-shadow .25s ease, -webkit-transform .25s ease, -webkit-box-shadow .25s ease;
}
.sln-services .sln-card:hover {
	-webkit-transform: translateY(-4px);
	        transform: translateY(-4px);
	-webkit-box-shadow: 0 18px 44px -22px rgba(78, 67, 58, 0.4);
	        box-shadow: 0 18px 44px -22px rgba(78, 67, 58, 0.4);
}
.sln-services .sln-board {
	-webkit-transition: -webkit-transform .3s ease, -webkit-box-shadow .3s ease;
	transition: -webkit-transform .3s ease, -webkit-box-shadow .3s ease;
	transition: transform .3s ease, box-shadow .3s ease;
	transition: transform .3s ease, box-shadow .3s ease, -webkit-transform .3s ease, -webkit-box-shadow .3s ease;
}
.sln-services .sln-board:hover {
	-webkit-transform: translateY(-3px);
	        transform: translateY(-3px);
}

@media (max-width: 900px) {
	.sln-services .sln-streaks-split {
		grid-template-columns: 1fr !important;
	}
	.sln-services .sln-streaks-prow {
		grid-template-columns: 1fr;
		gap: 8px;
	}
}

/* Card / step hover, ported from the design's <style> block. */
.sln-services .sln-pillar {
	-webkit-transition: -webkit-transform .25s ease, -webkit-box-shadow .25s ease;
	transition: -webkit-transform .25s ease, -webkit-box-shadow .25s ease;
	transition: transform .25s ease, box-shadow .25s ease;
	transition: transform .25s ease, box-shadow .25s ease, -webkit-transform .25s ease, -webkit-box-shadow .25s ease;
}
.sln-services .sln-pillar:hover {
	-webkit-transform: translateY(-4px);
	        transform: translateY(-4px);
	-webkit-box-shadow: 0 18px 44px -22px rgba(78, 67, 58, 0.4);
	        box-shadow: 0 18px 44px -22px rgba(78, 67, 58, 0.4);
}
.sln-services .sln-step {
	-webkit-transition: -webkit-transform .2s ease;
	transition: -webkit-transform .2s ease;
	transition: transform .2s ease;
	transition: transform .2s ease, -webkit-transform .2s ease;
}
.sln-services .sln-step:hover {
	-webkit-transform: translateY(-3px);
	        transform: translateY(-3px);
}

/*
 * The hosting pricing table is the theme's real "subscription-plans" ACF
 * block (styled by main.css / _subscription-plans.scss), not a page-scoped
 * reimplementation — so no plan-card styles live here.
 */

@media (max-width: 900px) {
	.sln-services .sln-host-hero,
	.sln-services .sln-feature-grid,
	.sln-services .sln-pillar-grid,
	.sln-services .sln-cd-split {
		grid-template-columns: 1fr;
	}
	.sln-services .sln-cd-steps {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 600px) {
	.sln-services .sln-cd-steps {
		grid-template-columns: 1fr;
	}
	.sln-services .sln-cd-cta {
		padding: 44px 24px !important;
	}
	.sln-services .sln-cd-cta h2 {
		font-size: 34px !important;
	}
}

/*# sourceMappingURL=data:application/json;base64,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MEJBQTBCO0NBQzNCO0FBQ0QiLCJmaWxlIjoic2VydmljZXMuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFNlcnZpY2VzIHBhZ2UgcmVkZXNpZ24g4oCUIHBhZ2Utc2NvcGVkIHN0eWxlcy5cbiAqIEFjdGl2ZSBvbmx5IG9uIGJvZHkuc2VydmljZXMtcmVkZXNpZ24gKHRoZSAvc2VydmljZXMvIGRpcmVjdG9yeSBhbmQgc2luZ2xlXG4gKiBzZXJ2aWNlIHBhZ2VzKS4gVGhlIG1hcmt1cCBjYXJyaWVzIHRoZSBkZXNpZ24ncyBpbmxpbmUgc3R5bGVzOyB0aGlzIGZpbGVcbiAqIGFkZHMgdGhlIGhvdmVyL21vdGlvbiwgdGhlIGJhc2UgZm9udCwgYW5kIHJlc3BvbnNpdmUgYnJlYWtwb2ludHMuXG4gKi9cblxuLnNsbi1zZXJ2aWNlcyB7XG5cdGZvbnQtZmFtaWx5OiAnT3V0Zml0JywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCBzYW5zLXNlcmlmO1xuXHRjb2xvcjogIzFBMUQyMTtcbn1cblxuLyogVGhlIGhlcm8gc3VwcGxpZXMgaXRzIG93biB0b3Agc3BhY2luZzsgZHJvcCB0aGUgdGhlbWUncyBkZWZhdWx0IGdhcC4gKi9cbmJvZHkuc2VydmljZXMtcmVkZXNpZ24gLmNvbnRlbnQge1xuXHRwYWRkaW5nLXRvcDogMDtcbn1cblxuLyogSG92ZXIgLyBtb3Rpb24gKHBvcnRlZCBmcm9tIHRoZSBkZXNpZ24ncyA8c3R5bGU+IGJsb2NrKS4gKi9cbi5zbG4tc2VydmljZXMgLnNsbi1jYXJkLWxpbmsge1xuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjI1cyBlYXNlLCBib3gtc2hhZG93IC4yNXMgZWFzZSwgYm9yZGVyLWNvbG9yIC4yNXMgZWFzZTtcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1jYXJkLWxpbms6aG92ZXIge1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG5cdGJveC1zaGFkb3c6IDAgMThweCA1MHB4IC0xOHB4IHJnYmEoNzgsIDY3LCA1OCwgMC4zNSk7XG59XG4uc2xuLXNlcnZpY2VzIC5zbG4tYXJyb3cge1xuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjJzIGVhc2U7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1jYXJkLWxpbms6aG92ZXIgLnNsbi1hcnJvdyB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1cHgpO1xufVxuLypcbiAqIEJ1dHRvbnMgcmVwcm9kdWNlIHRoZSBob21lcGFnZSBidXR0b24gaG92ZXIgZXhhY3RseSAobWFpbi5jc3MgLmJ1dHRvbi1zdGFuZGFydCk6XG4gKiBvbiBob3ZlciBhIGNpcmNsZSByaXNlcyBmcm9tIGJlbG93IGFuZCBmaWxscyB0aGUgYnV0dG9uIHdpdGggdGhlIG9wcG9zaXRlXG4gKiBicmFuZCBjb2xvciAob3JhbmdlIGJ1dHRvbnMgLT4gYmx1ZSwgYmx1ZSBidXR0b25zIC0+IG9yYW5nZSksIHRoZSBsYWJlbC9hcnJvd1xuICogc3RheSB3aGl0ZSwgcGx1cyBhIHNvZnQgc2hhZG93LiBUaGUgZmlsbCBsaXZlcyBpbiBhIDo6YmVmb3JlIGNpcmNsZSB0aGF0XG4gKiBhbmltYXRlcyB0b3A6MTAwJSAtPiB0b3A6NTAlLlxuICpcbiAqIGlzb2xhdGlvbjppc29sYXRlICsgOjpiZWZvcmV7ei1pbmRleDotMX0ga2VlcHMgdGhlIHJpc2luZyBjaXJjbGUgYWJvdmUgdGhlXG4gKiBidXR0b24ncyBvd24gYmFja2dyb3VuZCBidXQgQkVMT1cgdGhlIGluLWZsb3cgbGFiZWwvYXJyb3csIHNvIHRoZSB0ZXh0IHN0YXlzXG4gKiByZWFkYWJsZSB3aXRob3V0IG5lZWRpbmcgdG8gd3JhcCBpdCBpbiBhIDxzcGFuPiBpbiB0aGUgbWFya3VwLlxuICovXG4uc2xuLXNlcnZpY2VzIC5zbG4tYnRuIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRpc29sYXRpb246IGlzb2xhdGU7XG5cdHRyYW5zaXRpb246IGJveC1zaGFkb3cgLjJzIGxpbmVhcjtcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1idG46OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXCI7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ei1pbmRleDogLTE7XG5cdHRvcDogMTAwJTtcblx0bGVmdDogNTAlO1xuXHR3aWR0aDogY2FsYygxMDAlICsgMTIuNXJlbSk7XG5cdGhlaWdodDogY2FsYygxMDAlICsgMTIuNXJlbSk7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0YmFja2dyb3VuZC1jb2xvcjogIzE1N0VEOTsgLyogb3JhbmdlIGJ1dHRvbnMgZmlsbCBibHVlIG9uIGhvdmVyICovXG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcblx0dHJhbnNpdGlvbjogYWxsIC40cyBlYXNlO1xufVxuLnNsbi1zZXJ2aWNlcyAuc2xuLWJ0bltzdHlsZSo9XCIjMTU3RUQ5XCJdOjpiZWZvcmUge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRUQxQzI0OyAvKiBibHVlIGJ1dHRvbnMgZmlsbCByZWQgb24gaG92ZXIgKG1hdGNoZXMgaG9tZXBhZ2UpICovXG59XG4uc2xuLXNlcnZpY2VzIC5zbG4tYnRuOmhvdmVyIHtcblx0Ym94LXNoYWRvdzogMCAwIDAuNjI1cmVtIHJnYmEoMjYsIDI5LCAzMywgMC4zKTtcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1idG46aG92ZXI6OmJlZm9yZSB7XG5cdHRvcDogNTAlO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKTtcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1idG46aG92ZXIgLnNsbi1hcnJvdyB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpO1xufVxuLypcbiAqIFNlY29uZGFyeSBcImdob3N0XCIgYnV0dG9uIChlLmcuIEdldCB0aGUgZnJlZSBwbHVnaW4pOiBhIHNvZnQgdGludGVkIHBpbGwuXG4gKiBJdCBpcyBOT1QgYSBjYXJkLCBzbyBpdCBtdXN0IG5vdCBib3Jyb3cgdGhlIGNhcmQtbGlmdCBob3ZlcjsgYSBnZW50bGVcbiAqIGJhY2tncm91bmQgZGVlcGVuIGtlZXBzIGl0IGNvbnNpc3RlbnQgd2l0aCB0aGUgb3RoZXIgc2Vjb25kYXJ5IGJ1dHRvbnMuXG4gKi9cbi5zbG4tc2VydmljZXMgLnNsbi1idG4tZ2hvc3Qge1xuXHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycyBlYXNlO1xufVxuLnNsbi1zZXJ2aWNlcyAuc2xuLWJ0bi1naG9zdDpob3ZlciB7XG5cdGJhY2tncm91bmQ6IHJnYmEoMjUzLCAxNTAsIDU1LCAwLjMpICFpbXBvcnRhbnQ7XG59XG4uc2xuLXNlcnZpY2VzIDo6c2VsZWN0aW9uIHtcblx0YmFja2dyb3VuZDogcmdiYSgyNTMsIDE1MCwgNTUsIDAuMjUpO1xufVxuXG4vKiBUYWJsZXQgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHQuc2xuLXNlcnZpY2VzIC5zbG4tc2hvd2Nhc2UtZ3JpZCB7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDtcblx0fVxuXHQuc2xuLXNlcnZpY2VzIC5zbG4taDEge1xuXHRcdGZvbnQtc2l6ZTogNDRweCAhaW1wb3J0YW50O1xuXHR9XG5cdC5zbG4tc2VydmljZXMgLnNsbi1oMiB7XG5cdFx0Zm9udC1zaXplOiAzNHB4ICFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLyogTW9iaWxlICovXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcblx0LnNsbi1zZXJ2aWNlcyAuc2xuLXNlYyB7XG5cdFx0cGFkZGluZy1sZWZ0OiAyMHB4ICFpbXBvcnRhbnQ7XG5cdFx0cGFkZGluZy1yaWdodDogMjBweCAhaW1wb3J0YW50O1xuXHR9XG5cdC5zbG4tc2VydmljZXMgLnNsbi1oZXJvIHtcblx0XHRwYWRkaW5nLXRvcDogNTZweCAhaW1wb3J0YW50O1xuXHR9XG5cdC5zbG4tc2VydmljZXMgLnNsbi1oZXJvLWN0YSB7XG5cdFx0ZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcblx0fVxuXHQuc2xuLXNlcnZpY2VzIC5zbG4taDEge1xuXHRcdGZvbnQtc2l6ZTogMzJweCAhaW1wb3J0YW50O1xuXHR9XG5cdC5zbG4tc2VydmljZXMgLnNsbi1oMiB7XG5cdFx0Zm9udC1zaXplOiAyOHB4ICFpbXBvcnRhbnQ7XG5cdH1cblx0LnNsbi1zZXJ2aWNlcyAuc2xuLXNob3djYXNlLWdyaWQgPiBkaXYge1xuXHRcdG1pbi1oZWlnaHQ6IDM2MHB4ICFpbXBvcnRhbnQ7XG5cdH1cblx0LnNsbi1zZXJ2aWNlcyAuc2xuLXNob3djYXNlLXNpZGUge1xuXHRcdG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDtcblx0fVxuXHQuc2xuLXNlcnZpY2VzIC5zbG4tY3RhIHtcblx0XHRwYWRkaW5nOiAzMnB4IDI0cHggIWltcG9ydGFudDtcblx0fVxuXHQuc2xuLXNlcnZpY2VzIC5zbG4tY3RhLWgge1xuXHRcdGZvbnQtc2l6ZTogMjJweCAhaW1wb3J0YW50O1xuXHR9XG5cdC5zbG4tc2VydmljZXMgLnNsbi1kaXItaW5uZXIge1xuXHRcdHBhZGRpbmc6IDU2cHggMjBweCA2NHB4ICFpbXBvcnRhbnQ7XG5cdH1cblx0LnNsbi1zZXJ2aWNlcyAuc2xuLWdyaWQge1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLypcbiAqIEhvc3RpbmcgcGFnZSBsYXlvdXQgZ3JpZHMuXG4gKiBUaGVzZSBsaXZlIGhlcmUgKG5vdCBpbiBpbmxpbmUgc3R5bGVzKSBiZWNhdXNlIFdvcmRQcmVzcydzIHRoZV9jb250ZW50XG4gKiBmaWx0ZXIgbWFuZ2xlcyBpbmxpbmUgQ1NTIHZhbHVlcyBjb250YWluaW5nIG5lc3RlZCBmdW5jdGlvbiBjYWxscyBzdWNoIGFzXG4gKiByZXBlYXQoLi4ubWlubWF4KC4uLikpIOKAlCB0aGUgdHJhaWxpbmcgXCIpKVwiIGdldHMgcmV3cml0dGVuIGludG8gYSBcIjwvc3Bhbj5cIi5cbiAqIFN0eWxlc2hlZXQgQ1NTIGlzIG5vdCBydW4gdGhyb3VnaCB0aGVfY29udGVudCwgc28gaXQgaXMgc2FmZS5cbiAqL1xuLnNsbi1zZXJ2aWNlcyAuc2xuLWhvc3QtaGVybyB7XG5cdGRpc3BsYXk6IGdyaWQ7XG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgbWlubWF4KDAsIDAuOTJmcik7XG5cdGdhcDogNTZweDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1mZWF0dXJlLWdyaWQge1xuXHRkaXNwbGF5OiBncmlkO1xuXHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG5cdGdhcDogMjRweDtcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1waWxsYXItZ3JpZCB7XG5cdGRpc3BsYXk6IGdyaWQ7XG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcblx0Z2FwOiAyNHB4O1xufVxuXG4vKiBDdXN0b20gRGV2ZWxvcG1lbnQgcGFnZSAoQ3VzdG9tIERldmVsb3BtZW50LmRjLmh0bWwpIGxheW91dCBncmlkcy4gKi9cbi5zbG4tc2VydmljZXMgLnNsbi1jZC1waWxsYXJzIHtcblx0ZGlzcGxheTogZ3JpZDtcblx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyODBweCwgMWZyKSk7XG5cdGdhcDogMjRweDtcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1jZC1zcGxpdCB7XG5cdGRpc3BsYXk6IGdyaWQ7XG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuMTVmcikgbWlubWF4KDAsIDAuODVmcik7XG5cdGdhcDogNDhweDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1jZC1zdGVwcyB7XG5cdGRpc3BsYXk6IGdyaWQ7XG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcblx0Z2FwOiAyNHB4O1xufVxuLnNsbi1zZXJ2aWNlcyAuc2xuLWNkLWN0YSB7XG5cdGJhY2tncm91bmQ6ICNEMEU2RkY7XG59XG5cbi8qIFNvbGluIFN0cmVha3MgcGFnZSAoU29saW4gU3RyZWFrcy5kYy5odG1sKSBsYXlvdXQgZ3JpZHMuICovXG4uc2xuLXNlcnZpY2VzIC5zbG4tc3RyZWFrcy1idWlsZCB7XG5cdGRpc3BsYXk6IGdyaWQ7XG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzAwcHgsIDFmcikpO1xuXHRnYXA6IDI0cHg7XG59XG4uc2xuLXNlcnZpY2VzIC5zbG4tc3RyZWFrcy1wYWlyIHtcblx0ZGlzcGxheTogZ3JpZDtcblx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg0MjBweCwgMWZyKSk7XG5cdGdhcDogMjhweDtcblx0YWxpZ24taXRlbXM6IHN0YXJ0O1xufVxuLnNsbi1zZXJ2aWNlcyAuc2xuLXN0cmVha3MtcHJvdyB7XG5cdGRpc3BsYXk6IGdyaWQ7XG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMS4xNWZyIDJmciAxZnI7XG5cdGdhcDogMjhweDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1zdHJlYWtzLXBlbmd1aW4ge1xuXHRmaWx0ZXI6IGRyb3Atc2hhZG93KDAgNnB4IDEwcHggcmdiYSg0MCwgOTAsIDE1MCwgMC4yNSkpO1xufVxuLnNsbi1zZXJ2aWNlcyAuc2xuLWNhcmQge1xuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjI1cyBlYXNlLCBib3gtc2hhZG93IC4yNXMgZWFzZTtcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1jYXJkOmhvdmVyIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuXHRib3gtc2hhZG93OiAwIDE4cHggNDRweCAtMjJweCByZ2JhKDc4LCA2NywgNTgsIDAuNCk7XG59XG4uc2xuLXNlcnZpY2VzIC5zbG4tYm9hcmQge1xuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2UsIGJveC1zaGFkb3cgLjNzIGVhc2U7XG59XG4uc2xuLXNlcnZpY2VzIC5zbG4tYm9hcmQ6aG92ZXIge1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuXHQuc2xuLXNlcnZpY2VzIC5zbG4tc3RyZWFrcy1zcGxpdCB7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDtcblx0fVxuXHQuc2xuLXNlcnZpY2VzIC5zbG4tc3RyZWFrcy1wcm93IHtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblx0XHRnYXA6IDhweDtcblx0fVxufVxuXG4vKiBDYXJkIC8gc3RlcCBob3ZlciwgcG9ydGVkIGZyb20gdGhlIGRlc2lnbidzIDxzdHlsZT4gYmxvY2suICovXG4uc2xuLXNlcnZpY2VzIC5zbG4tcGlsbGFyIHtcblx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIC4yNXMgZWFzZSwgYm94LXNoYWRvdyAuMjVzIGVhc2U7XG59XG4uc2xuLXNlcnZpY2VzIC5zbG4tcGlsbGFyOmhvdmVyIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuXHRib3gtc2hhZG93OiAwIDE4cHggNDRweCAtMjJweCByZ2JhKDc4LCA2NywgNTgsIDAuNCk7XG59XG4uc2xuLXNlcnZpY2VzIC5zbG4tc3RlcCB7XG5cdHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMnMgZWFzZTtcbn1cbi5zbG4tc2VydmljZXMgLnNsbi1zdGVwOmhvdmVyIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xufVxuXG4vKlxuICogVGhlIGhvc3RpbmcgcHJpY2luZyB0YWJsZSBpcyB0aGUgdGhlbWUncyByZWFsIFwic3Vic2NyaXB0aW9uLXBsYW5zXCIgQUNGXG4gKiBibG9jayAoc3R5bGVkIGJ5IG1haW4uY3NzIC8gX3N1YnNjcmlwdGlvbi1wbGFucy5zY3NzKSwgbm90IGEgcGFnZS1zY29wZWRcbiAqIHJlaW1wbGVtZW50YXRpb24g4oCUIHNvIG5vIHBsYW4tY2FyZCBzdHlsZXMgbGl2ZSBoZXJlLlxuICovXG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuXHQuc2xuLXNlcnZpY2VzIC5zbG4taG9zdC1oZXJvLFxuXHQuc2xuLXNlcnZpY2VzIC5zbG4tZmVhdHVyZS1ncmlkLFxuXHQuc2xuLXNlcnZpY2VzIC5zbG4tcGlsbGFyLWdyaWQsXG5cdC5zbG4tc2VydmljZXMgLnNsbi1jZC1zcGxpdCB7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdH1cblx0LnNsbi1zZXJ2aWNlcyAuc2xuLWNkLXN0ZXBzIHtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG5cdH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG5cdC5zbG4tc2VydmljZXMgLnNsbi1jZC1zdGVwcyB7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdH1cblx0LnNsbi1zZXJ2aWNlcyAuc2xuLWNkLWN0YSB7XG5cdFx0cGFkZGluZzogNDRweCAyNHB4ICFpbXBvcnRhbnQ7XG5cdH1cblx0LnNsbi1zZXJ2aWNlcyAuc2xuLWNkLWN0YSBoMiB7XG5cdFx0Zm9udC1zaXplOiAzNHB4ICFpbXBvcnRhbnQ7XG5cdH1cbn1cbiJdfQ== */