/*! tailwindcss v2.1.4 | MIT License | https://tailwindcss.com *//*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */

/*
Document
========
*/

/**
Use a better box model (opinionated).
*/

*,
::before,
::after {
	box-sizing: border-box;
}

/**
Use a more readable tab size (opinionated).
*/

html {
	-moz-tab-size: 4;
	tab-size: 4;
}

/**
1. Correct the line height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
*/

html {
	line-height: 1.15; /* 1 */
	-webkit-text-size-adjust: 100%; /* 2 */
}

/*
Sections
========
*/

/**
Remove the margin in all browsers.
*/

body {
	margin: 0;
}

/**
Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
*/

body {
	font-family:
		system-ui,
		-apple-system, /* Firefox supports this but not yet `system-ui` */
		'Segoe UI',
		Roboto,
		Helvetica,
		Arial,
		sans-serif,
		'Apple Color Emoji',
		'Segoe UI Emoji';
}

/*
Grouping content
================
*/

/**
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
*/

hr {
	height: 0; /* 1 */
	color: inherit; /* 2 */
}

/*
Text-level semantics
====================
*/

/**
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr[title] {
	text-decoration: underline dotted;
}

/**
Add the correct font weight in Edge and Safari.
*/

b,
strong {
	font-weight: bolder;
}

/**
1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
2. Correct the odd 'em' font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
	font-family:
		ui-monospace,
		SFMono-Regular,
		Consolas,
		'Liberation Mono',
		Menlo,
		monospace; /* 1 */
	font-size: 1em; /* 2 */
}

/**
Add the correct font size in all browsers.
*/

small {
	font-size: 80%;
}

/**
Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
*/

sub,
sup {
	font-size: 75%;
	line-height: 0;
	position: relative;
	vertical-align: baseline;
}

sub {
	bottom: -0.25em;
}

sup {
	top: -0.5em;
}

/*
Tabular data
============
*/

/**
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
*/

table {
	text-indent: 0; /* 1 */
	border-color: inherit; /* 2 */
}

/*
Forms
=====
*/

/**
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
*/

button,
input,
optgroup,
select,
textarea {
	font-family: inherit; /* 1 */
	font-size: 100%; /* 1 */
	line-height: 1.15; /* 1 */
	margin: 0; /* 2 */
}

/**
Remove the inheritance of text transform in Edge and Firefox.
1. Remove the inheritance of text transform in Firefox.
*/

button,
select { /* 1 */
	text-transform: none;
}

/**
Correct the inability to style clickable types in iOS and Safari.
*/

button,
[type='button'],
[type='reset'],
[type='submit'] {
	-webkit-appearance: button;
}

/**
Remove the inner border and padding in Firefox.
*/

::-moz-focus-inner {
	border-style: none;
	padding: 0;
}

/**
Restore the focus styles unset by the previous rule.
*/

:-moz-focusring {
	outline: 1px dotted ButtonText;
}

/**
Remove the additional ':invalid' styles in Firefox.
See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
*/

:-moz-ui-invalid {
	box-shadow: none;
}

/**
Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
*/

legend {
	padding: 0;
}

/**
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
	vertical-align: baseline;
}

/**
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
	height: auto;
}

/**
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
	-webkit-appearance: textfield; /* 1 */
	outline-offset: -2px; /* 2 */
}

/**
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
	-webkit-appearance: none;
}

/**
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to 'inherit' in Safari.
*/

::-webkit-file-upload-button {
	-webkit-appearance: button; /* 1 */
	font: inherit; /* 2 */
}

/*
Interactive
===========
*/

/*
Add the correct display in Chrome and Safari.
*/

summary {
	display: list-item;
}/**
 * Manually forked from SUIT CSS Base: https://github.com/suitcss/base
 * A thin layer on top of normalize.css that provides a starting point more
 * suitable for web applications.
 */

/**
 * Removes the default spacing and border for appropriate elements.
 */

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

button {
  background-color: transparent;
  background-image: none;
}

/**
 * Work around a Firefox/IE bug where the transparent `button` background
 * results in a loss of the default `button` focus styles.
 */

button:focus {
  outline: 1px dotted;
  outline: 5px auto -webkit-focus-ring-color;
}

fieldset {
  margin: 0;
  padding: 0;
}

ol,
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

/**
 * Tailwind custom reset styles
 */

/**
 * 1. Use the user's configured `sans` font-family (with Tailwind's default
 *    sans-serif font stack as a fallback) as a sane default.
 * 2. Use Tailwind's default "normal" line-height so the user isn't forced
 *    to override it to ensure consistency even when using the default theme.
 */

html {
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */
  line-height: 1.5; /* 2 */
}


/**
 * Inherit font-family and line-height from `html` so users can set them as
 * a class directly on the `html` element.
 */

body {
  font-family: inherit;
  line-height: inherit;
}

/**
 * 1. Prevent padding and border from affecting element width.
 *
 *    We used to set this in the html element and inherit from
 *    the parent element for everything else. This caused issues
 *    in shadow-dom-enhanced elements like <details> where the content
 *    is wrapped by a div with box-sizing set to `content-box`.
 *
 *    https://github.com/mozdevs/cssremedy/issues/4
 *
 *
 * 2. Allow adding a border to an element by just adding a border-width.
 *
 *    By default, the way the browser specifies that an element should have no
 *    border is by setting it's border-style to `none` in the user-agent
 *    stylesheet.
 *
 *    In order to easily add borders to elements by just setting the `border-width`
 *    property, we change the default border-style for all elements to `solid`, and
 *    use border-width to hide them instead. This way our `border` utilities only
 *    need to set the `border-width` property instead of the entire `border`
 *    shorthand, making our border utilities much more straightforward to compose.
 *
 *    https://github.com/tailwindcss/tailwindcss/pull/116
 */

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e4e4e7; /* 2 */
}

/*
 * Ensure horizontal rules are visible by default
 */

hr {
  border-top-width: 1px;
}

/**
 * Undo the `border-style: none` reset that Normalize applies to images so that
 * our `border-{width}` utilities have the expected effect.
 *
 * The Normalize reset is unnecessary for us since we default the border-width
 * to 0 on all elements.
 *
 * https://github.com/tailwindcss/tailwindcss/issues/362
 */

img {
  border-style: solid;
}

textarea {
  resize: vertical;
}

input::placeholder,
textarea::placeholder {
  opacity: 1;
  color: #a1a1aa;
}

button,
[role="button"] {
  cursor: pointer;
}

table {
  border-collapse: collapse;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/**
 * Reset links to optimize for opt-in styling instead of
 * opt-out.
 */

a {
  color: inherit;
  text-decoration: inherit;
}

/**
 * Reset form element properties that are easy to forget to
 * style explicitly so you don't inadvertently introduce
 * styles that deviate from your design system. These styles
 * supplement a partial reset that is already applied by
 * normalize.css.
 */

button,
input,
optgroup,
select,
textarea {
  padding: 0;
  line-height: inherit;
  color: inherit;
}

/**
 * Use the configured 'mono' font family for elements that
 * are expected to be rendered with a monospace font, falling
 * back to the system monospace stack if there is no configured
 * 'mono' font family.
 */

pre,
code,
kbd,
samp {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

/**
 * Make replaced elements `display: block` by default as that's
 * the behavior you want almost all of the time. Inspired by
 * CSS Remedy, with `svg` added as well.
 *
 * https://github.com/mozdevs/cssremedy/issues/14
 */

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block;
  vertical-align: middle;
}

/**
 * Constrain images and videos to the parent width and preserve
 * their intrinsic aspect ratio.
 *
 * https://github.com/mozdevs/cssremedy/issues/14
 */

img,
video {
  max-width: 100%;
  height: auto;
}

* {
	--tw-shadow: 0 0 #0000;
	--tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
	--tw-ring-offset-width: 0px;
	--tw-ring-offset-color: #fff;
	--tw-ring-color: rgba(59, 130, 246, 0.5);
	--tw-ring-offset-shadow: 0 0 #0000;
	--tw-ring-shadow: 0 0 #0000;
}
.container {
	width: 100%;
}
@media (min-width: 640px) {

	.container {
		max-width: 640px;
	}
}
@media (min-width: 768px) {

	.container {
		max-width: 768px;
	}
}
@media (min-width: 1024px) {

	.container {
		max-width: 1024px;
	}
}
@media (min-width: 1280px) {

	.container {
		max-width: 1280px;
	}
}
@media (min-width: 1536px) {

	.container {
		max-width: 1536px;
	}
}
.visible {
	visibility: visible;
}
.relative {
	position: relative;
}
.absolute {
	position: absolute;
}
.sticky {
	position: sticky;
}
.fixed {
	position: fixed;
}
.top-0 {
	top: 0px;
}
.left-0 {
	left: 0px;
}
.right-0 {
	right: 0px;
}
.bottom-0 {
	bottom: 0px;
}
.z-10 {
	z-index: 10;
}
.col-span-2 {
	grid-column: span 2 / span 2;
}
.col-span-full {
	grid-column: 1 / -1;
}
.mx-auto {
	margin-left: auto;
	margin-right: auto;
}
.mx-36 {
	margin-left: 9rem;
	margin-right: 9rem;
}
.my-4 {
	margin-top: 1rem;
	margin-bottom: 1rem;
}
.mt-20 {
	margin-top: 5rem;
}
.mt-1 {
	margin-top: 0.25rem;
}
.mb-4 {
	margin-bottom: 1rem;
}
.mt-2 {
	margin-top: 0.5rem;
}
.mt-auto {
	margin-top: auto;
}
.mr-24 {
	margin-right: 6rem;
}
.mt-24 {
	margin-top: 6rem;
}
.mb-auto {
	margin-bottom: auto;
}
.mt-28 {
	margin-top: 7rem;
}
.block {
	display: block;
}
.inline-block {
	display: inline-block;
}
.flex {
	display: flex;
}
.table {
	display: table;
}
.grid {
	display: grid;
}
.contents {
	display: contents;
}
.hidden {
	display: none;
}
.h-auto {
	height: auto;
}
.h-full {
	height: 100%;
}
.h-screen {
	height: 100vh;
}
.h-10 {
	height: 2.5rem;
}
.min-h-screen {
	min-height: 100vh;
}
.w-4\/6 {
	width: 66.666667%;
}
.w-full {
	width: 100%;
}
.w-40 {
	width: 10rem;
}
.max-w-md {
	max-width: 28rem;
}
.flex-initial {
	flex: 0 1 auto;
}
.flex-auto {
	flex: 1 1 auto;
}
.flex-grow {
	flex-grow: 1;
}
.transform {
	--tw-translate-x: 0;
	--tw-translate-y: 0;
	--tw-rotate: 0;
	--tw-skew-x: 0;
	--tw-skew-y: 0;
	--tw-scale-x: 1;
	--tw-scale-y: 1;
	transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.cursor-pointer {
	cursor: pointer;
}
.select-none {
	user-select: none;
}
.grid-cols-1 {
	grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-4 {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}
.flex-col {
	flex-direction: column;
}
.flex-row {
	flex-direction: row;
}
.content-center {
	align-content: center;
}
.items-center {
	align-items: center;
}
.justify-between {
	justify-content: space-between;
}
.justify-center {
	justify-content: center;
}
.justify-end {
	justify-content: flex-end;
}
.gap-2 {
	gap: 0.5rem;
}
.space-x-16 > :not([hidden]) ~ :not([hidden]) {
	--tw-space-x-reverse: 0;
	margin-right: calc(4rem * var(--tw-space-x-reverse));
	margin-left: calc(4rem * calc(1 - var(--tw-space-x-reverse)));
}
.space-x-1 > :not([hidden]) ~ :not([hidden]) {
	--tw-space-x-reverse: 0;
	margin-right: calc(0.25rem * var(--tw-space-x-reverse));
	margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));
}
.space-x-12 > :not([hidden]) ~ :not([hidden]) {
	--tw-space-x-reverse: 0;
	margin-right: calc(3rem * var(--tw-space-x-reverse));
	margin-left: calc(3rem * calc(1 - var(--tw-space-x-reverse)));
}
.self-end {
	align-self: flex-end;
}
.overflow-hidden {
	overflow: hidden;
}
.rounded-lg {
	border-radius: 0.5rem;
}
.border {
	border-width: 1px;
}
.border-2 {
	border-width: 2px;
}
.border-t {
	border-top-width: 1px;
}
.border-t-2 {
	border-top-width: 2px;
}
.border-none {
	border-style: none;
}
.border-gray-500 {
	--tw-border-opacity: 1;
	border-color: rgba(113, 113, 122, var(--tw-border-opacity));
}
.border-blue-500 {
	--tw-border-opacity: 1;
	border-color: rgba(59, 130, 246, var(--tw-border-opacity));
}
.border-red-500 {
	--tw-border-opacity: 1;
	border-color: rgba(239, 68, 68, var(--tw-border-opacity));
}
.border-green-500 {
	--tw-border-opacity: 1;
	border-color: rgba(34, 197, 94, var(--tw-border-opacity));
}
.border-gray-300 {
	--tw-border-opacity: 1;
	border-color: rgba(212, 212, 216, var(--tw-border-opacity));
}
.bg-coolGray-200 {
	--tw-bg-opacity: 1;
	background-color: rgba(229, 231, 235, var(--tw-bg-opacity));
}
.bg-gray-100 {
	--tw-bg-opacity: 1;
	background-color: rgba(244, 244, 245, var(--tw-bg-opacity));
}
.bg-amber-100 {
	--tw-bg-opacity: 1;
	background-color: rgba(254, 243, 199, var(--tw-bg-opacity));
}
.bg-blue-600 {
	--tw-bg-opacity: 1;
	background-color: rgba(37, 99, 235, var(--tw-bg-opacity));
}
.bg-red-600 {
	--tw-bg-opacity: 1;
	background-color: rgba(220, 38, 38, var(--tw-bg-opacity));
}
.bg-green-600 {
	--tw-bg-opacity: 1;
	background-color: rgba(22, 163, 74, var(--tw-bg-opacity));
}
.bg-white {
	--tw-bg-opacity: 1;
	background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
}
.bg-black {
	--tw-bg-opacity: 1;
	background-color: rgba(0, 0, 0, var(--tw-bg-opacity));
}
.bg-opacity-50 {
	--tw-bg-opacity: 0.5;
}
.bg-center {
	background-position: center;
}
.bg-no-repeat {
	background-repeat: no-repeat;
}
.object-scale-down {
	object-fit: scale-down;
}
.p-12 {
	padding: 3rem;
}
.p-2 {
	padding: 0.5rem;
}
.py-7 {
	padding-top: 1.75rem;
	padding-bottom: 1.75rem;
}
.px-4 {
	padding-left: 1rem;
	padding-right: 1rem;
}
.py-1 {
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
}
.py-2 {
	padding-top: 0.5rem;
	padding-bottom: 0.5rem;
}
.px-2 {
	padding-left: 0.5rem;
	padding-right: 0.5rem;
}
.px-8 {
	padding-left: 2rem;
	padding-right: 2rem;
}
.py-4 {
	padding-top: 1rem;
	padding-bottom: 1rem;
}
.px-20 {
	padding-left: 5rem;
	padding-right: 5rem;
}
.px-16 {
	padding-left: 4rem;
	padding-right: 4rem;
}
.px-24 {
	padding-left: 6rem;
	padding-right: 6rem;
}
.py-16 {
	padding-top: 4rem;
	padding-bottom: 4rem;
}
.pt-5 {
	padding-top: 1.25rem;
}
.pr-8 {
	padding-right: 2rem;
}
.pt-2 {
	padding-top: 0.5rem;
}
.pb-4 {
	padding-bottom: 1rem;
}
.pl-3 {
	padding-left: 0.75rem;
}
.pr-24 {
	padding-right: 6rem;
}
.pt-28 {
	padding-top: 7rem;
}
.pt-8 {
	padding-top: 2rem;
}
.pb-2 {
	padding-bottom: 0.5rem;
}
.pr-2 {
	padding-right: 0.5rem;
}
.text-center {
	text-align: center;
}
.align-middle {
	vertical-align: middle;
}
.text-2xl {
	font-size: 1.5rem;
	line-height: 2rem;
}
.text-4xl {
	font-size: 2.25rem;
	line-height: 2.5rem;
}
.text-sm {
	font-size: 0.875rem;
	line-height: 1.25rem;
}
.text-3xl {
	font-size: 1.875rem;
	line-height: 2.25rem;
}
.font-semibold {
	font-weight: 600;
}
.font-bold {
	font-weight: 700;
}
.font-extrabold {
	font-weight: 800;
}
.uppercase {
	text-transform: uppercase;
}
.tracking-wider {
	letter-spacing: 0.05em;
}
.text-gray-800 {
	--tw-text-opacity: 1;
	color: rgba(39, 39, 42, var(--tw-text-opacity));
}
.text-black {
	--tw-text-opacity: 1;
	color: rgba(0, 0, 0, var(--tw-text-opacity));
}
.text-amber-800 {
	--tw-text-opacity: 1;
	color: rgba(146, 64, 14, var(--tw-text-opacity));
}
.text-white {
	--tw-text-opacity: 1;
	color: rgba(255, 255, 255, var(--tw-text-opacity));
}
.text-red-600 {
	--tw-text-opacity: 1;
	color: rgba(220, 38, 38, var(--tw-text-opacity));
}
.text-gray-500 {
	--tw-text-opacity: 1;
	color: rgba(113, 113, 122, var(--tw-text-opacity));
}
.text-gray-400 {
	--tw-text-opacity: 1;
	color: rgba(161, 161, 170, var(--tw-text-opacity));
}
.shadow-lg {
	--tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
	box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.filter {
	--tw-blur: var(--tw-empty,/*!*/ /*!*/);
	--tw-brightness: var(--tw-empty,/*!*/ /*!*/);
	--tw-contrast: var(--tw-empty,/*!*/ /*!*/);
	--tw-grayscale: var(--tw-empty,/*!*/ /*!*/);
	--tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/);
	--tw-invert: var(--tw-empty,/*!*/ /*!*/);
	--tw-saturate: var(--tw-empty,/*!*/ /*!*/);
	--tw-sepia: var(--tw-empty,/*!*/ /*!*/);
	--tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/);
	filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.transition {
	transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
	transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
	transition-duration: 150ms;
}

/* Fix for Zend Debug Bar */
#ZFDebug_debug {
  float: left;
}
#ZFDebug_debug div {
  float: left;
}
#ZFDebug_debug span {
  float: left;
}
#ZFDebug_debug span img {
  float: left;
  margin-right: 4px;
}
.bg-hafele-gray {
  --tw-bg-opacity: 1;
  background-color: rgba(241, 241, 241, var(--tw-bg-opacity));
  /*@apply bg-coolGray-100;*/
}
.bg-size-45 {
  background-size: 45%;
}
.bg-opacity-0 {
  opacity: 0;
}

.bg-opacity-25 {
  opacity: 0.25;
}

.bg-opacity-50 {
  opacity: 0.5;
}

.bg-opacity-75 {
  opacity: 0.75;
}

.bg-opacity-100 {
  opacity: 1;
}
/* TODO: Fix purge config */

/* Login Form */
/* Note: Due to the nature of how the form is output, we can't style it nice with classes so must use custom css. */
form#login input[name=username], form#login input[name=password] {
  padding: 13px;
  width: 100%;
  border-radius: 0px;
  /*height: 51px;*/
}

form#login input[name=password] {
  margin-top: 1rem;
}

form#login input[type=submit] {
  color: red;
  text-transform: uppercase;
  display: none;
}
/* Add the arrow on right side of Login submit button text. */
form#login dd#login-element::after {
  color: red;
  padding-left: 1px;
  font-size: 15pt;
  content: "> todo hide this";
  display: none;
}

form#login #username-label, form#login #password-label {
  display: none;
}

.btn--login {
  color: #FC0026;
}

.btn--forgot-password {
  color: black;
}
/* End of Login Form */

/* Fixed width only on sm and up */
@media (min-width: 640px) {
  .w-fixed {
    flex: 0 1 500px;
    min-width: 230px;
  }
}

/* Make orders table a little bit bigger and more readable. */
.order-filter-block {
	display: flex;
	flex-direction: row;
	align-items: center;
}
.order-filter-block > :not([hidden]) ~ :not([hidden]) {
	--tw-space-x-reverse: 0;
	margin-right: calc(2rem * var(--tw-space-x-reverse));
	margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)));
}
.order-filter-block {
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
}

.order-filter-search input {
  height: 40px;
}

div.orderlist table {
  width: 66vw;
}

div.orderlist table th, div.orderlist table th a {
  font-size: 1em;
}

div.orderlist table td, div.orderlist table td a {
  font-size: 1em;
}

div.orderlist a:link {
  color: #333;
  text-decoration: none;
  font-weight: bold;
}

div.orderlist .order-action {
  font-size: 1em;
  text-transform: capitalize;
}

div.orderlist table {
  background: #aaa;
  border-collapse: collapse;
}

div.orderlist table th {
  text-align: left;
  background: #dcd8c9;
  padding: 4px 1px;
}

div.orderlist table th, div.orderlist table th a {
  color: #333;
  text-decoration: none;
}

div.orderlist table td {
  padding: 1px 1px;
}

div.orderlist table tbody tr:nth-child(odd) {
  background: #e3e1d8;
}

div.orderlist table tbody tr:nth-child(even) {
  background: #fff;
}

div.orderlist table tr {
  border: 1px solid #1c1c1c;
}

a.order-filter {
  color: #333;
  font-weight: bold;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

a.order-filter:hover {
	--tw-translate-y: -0.125rem;
	--tw-bg-opacity: 1;
	background-color: rgba(228, 228, 231, var(--tw-bg-opacity));
}

a.order-filter:active {
	--tw-bg-opacity: 1;
	background-color: rgba(244, 244, 245, var(--tw-bg-opacity));
}

/* End of orders table */

/* Zend Theme Phtml Exception */
.zend-view-exception {
	display: block;
	width: 100%;
	border-radius: 0.5rem;
	border-width: 1px;
	border-width: 2px;
	--tw-border-opacity: 1;
	border-color: rgba(239, 68, 68, var(--tw-border-opacity));
	--tw-bg-opacity: 1;
	background-color: rgba(220, 38, 38, var(--tw-bg-opacity));
	padding-left: 0.5rem;
	padding-right: 0.5rem;
	padding-top: 1rem;
	padding-bottom: 1rem;
	--tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
	box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}


/* Styling the Bench Add/Edit screen. */

#controlPanel {
  -webkit-user-drag: none;
  -moz-user-select: none;
  -ms-user-select: none;
  position: absolute;
  right: initial;
  left: 0px;
  top: 0px;
  bottom: 0px;
  /*width: 170px;*/
  width: 25rem;
  padding: 3px;
  background: #f4f4f4;
  border-left: none;
  border-right: solid 1px #d1d1d1;
  z-index: 1;
}

#container #main-canvas-wrap {
  position: absolute;
  left: 25rem;
  right: 0px;
  top: 0px;
  bottom: 70px;
  margin: 0;
  padding: 0;
  float: left;
  overflow: hidden;
}

#main-canvas {
  width: 100%;
  height: 100%;
}

 .color_img {
  width: 142px; /* For some reason eneds to be 2 pixels larger for the border to show? */
}

/* Make the message/error text smaller. */
#msgBox {
  font-size: 2em;
  left: 25rem;
  right: 0px;
  height: initial;
}

#msgBox .error {

}
/* End of Styling Bench Add/Edit screen. */

/* jQuery UI Dialogs */
.ui-dialog {
  border: none;
  border-radius: 0;
}
.ui-dialog-titlebar {
  border: none;
  border-radius: 0px;
  background: none;
}
.ui-dialog-title {
  font-size: 1.8em;
  font-weight: normal;
  text-align: center;
  width: 100%;
  padding-top: 0.5rem;
  padding-bottom: 0.85rem;
  padding-left: 2rem;
  padding-right: 2rem;
}

.ui-dialog-title::after {
  display: block;
  position: absolute;
  left: 5rem;
  right: 5rem;
  padding-top: 0.85rem;
  border-bottom: 2px solid #969696;
  content: "";
}

#dialog-form select, #dialog-form input[type=text] {
  border: 2px solid #969696;
  border-radius: 0px;
  padding: 1em;
  width: 100%;
  font-size: 1.2em;
}

.ui-dialog-buttonpane.ui-widget-content.ui-helper-clearfix {
  border: none;
}

#dialog-form label {
  font-size: 1.5em;
}

#dialog-form .bench-shape-label {
  font-size: 1.5em;
}

#chooseBenchPiece input[type=radio] {
  opacity: 0;
  position: fixed;
  width: 0;
}
#chooseBenchPiece label {
  display: inline-block;
  padding: 5px 5px;
  margin: 4px;
  font-family: sans-serif, Arial;
  font-size: 16px;
  border: 2px solid #FFFFFF;
  border-radius: 0px;
}

#chooseBenchPiece input[type=radio]:checked + label {
  background-color:#fefefe;
  border-color: #D20A28;
}

#dialog-form .q_left {
  border: none;
  height: auto;
}

div.ui-dialog-buttonpane button {
  background: none !important;
  border: none !important;
  color: #D20A28 !important;
}

#dialog-form select[name=mode_select], #dialog-form input[name=customer_name], #dialog-form input[name=job_name] {
  margin-bottom: 0.75rem;
}

.ui-button-text {
  font-size: 1.4em;
}

/*.ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable {*/
/*  background-color: #FF00FF;*/
/*  border: none;*/
/*}*/

/* End of jQuery UI Dialogs */

.hover\:-translate-y-0\.5:hover {
	--tw-translate-y: -0.125rem;
}

.hover\:-translate-y-0:hover {
	--tw-translate-y: 0px;
}

.hover\:border-b-2:hover {
	border-bottom-width: 2px;
}

.hover\:bg-gray-200:hover {
	--tw-bg-opacity: 1;
	background-color: rgba(228, 228, 231, var(--tw-bg-opacity));
}

.hover\:bg-amber-200:hover {
	--tw-bg-opacity: 1;
	background-color: rgba(253, 230, 138, var(--tw-bg-opacity));
}

.hover\:text-gray-700:hover {
	--tw-text-opacity: 1;
	color: rgba(63, 63, 70, var(--tw-text-opacity));
}

.active\:bg-gray-100:active {
	--tw-bg-opacity: 1;
	background-color: rgba(244, 244, 245, var(--tw-bg-opacity));
}

.active\:bg-amber-100:active {
	--tw-bg-opacity: 1;
	background-color: rgba(254, 243, 199, var(--tw-bg-opacity));
}

.group:hover .group-hover\:block {
	display: block;
}

@media (min-width: 640px) {

	.sm\:col-span-2 {
		grid-column: span 2 / span 2;
	}

	.sm\:flex {
		display: flex;
	}

	.sm\:w-auto {
		width: auto;
	}

	.sm\:flex-col {
		flex-direction: column;
	}

	.sm\:flex-row {
		flex-direction: row;
	}

	.sm\:self-center {
		align-self: center;
	}

	.sm\:px-6 {
		padding-left: 1.5rem;
		padding-right: 1.5rem;
	}

	.sm\:py-0 {
		padding-top: 0px;
		padding-bottom: 0px;
	}

	.sm\:px-10 {
		padding-left: 2.5rem;
		padding-right: 2.5rem;
	}

	.sm\:py-1 {
		padding-top: 0.25rem;
		padding-bottom: 0.25rem;
	}

	.sm\:pb-0 {
		padding-bottom: 0px;
	}

	.sm\:pt-2 {
		padding-top: 0.5rem;
	}
}

@media (min-width: 768px) {

	.md\:text-5xl {
		font-size: 3rem;
		line-height: 1;
	}
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxubyBzb3VyY2U+IiwiPGlucHV0IGNzcyBBRHl0TGY+IiwiPGlucHV0IGNzcyBNRm9qcmk+IiwiLi4vLi4vLi4vLi4vdWkvc3JjL3RhaWx3aW5kY3NzL2F1L2hhZmVsZS9oYWZlbGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlFQUFBLEFDQUEsK0ZBQStGOztBQUUvRjs7O0VBR0U7O0FBRUY7O0VBRUU7O0FBRUY7OztDQUdDLHVCQUF1QjtDQUN2Qjs7QUFFRDs7RUFFRTs7QUFFRjtDQUNDLGlCQUFpQjtDQUNqQixZQUFZO0NBQ1o7O0FBRUQ7OztFQUdFOztBQUVGO0NBQ0Msa0JBQWtCLENBQUMsT0FBTztDQUMxQiwrQkFBK0IsQ0FBQyxPQUFPO0NBQ3ZDOztBQUVEOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUFFRjtDQUNDLFVBQVU7Q0FDVjs7QUFFRDs7RUFFRTs7QUFFRjtDQUNDOzs7Ozs7Ozs7bUJBU2tCO0NBQ2xCOztBQUVEOzs7RUFHRTs7QUFFRjs7O0VBR0U7O0FBRUY7Q0FDQyxVQUFVLENBQUMsT0FBTztDQUNsQixlQUFlLENBQUMsT0FBTztDQUN2Qjs7QUFFRDs7O0VBR0U7O0FBRUY7O0VBRUU7O0FBRUY7Q0FDQyxrQ0FBa0M7Q0FDbEM7O0FBRUQ7O0VBRUU7O0FBRUY7O0NBRUMsb0JBQW9CO0NBQ3BCOztBQUVEOzs7RUFHRTs7QUFFRjs7OztDQUlDOzs7Ozs7WUFNVyxDQUFDLE9BQU87Q0FDbkIsZUFBZSxDQUFDLE9BQU87Q0FDdkI7O0FBRUQ7O0VBRUU7O0FBRUY7Q0FDQyxlQUFlO0NBQ2Y7O0FBRUQ7O0VBRUU7O0FBRUY7O0NBRUMsZUFBZTtDQUNmLGVBQWU7Q0FDZixtQkFBbUI7Q0FDbkIseUJBQXlCO0NBQ3pCOztBQUVEO0NBQ0MsZ0JBQWdCO0NBQ2hCOztBQUVEO0NBQ0MsWUFBWTtDQUNaOztBQUVEOzs7RUFHRTs7QUFFRjs7O0VBR0U7O0FBRUY7Q0FDQyxlQUFlLENBQUMsT0FBTztDQUN2QixzQkFBc0IsQ0FBQyxPQUFP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MERBQUE7Q0FBQTtBQUFBO0NBQUEsdUJBQUE7Q0FBQSw0REFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBLDREQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUEsNERBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQSw0REFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBLDBEQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUEsMERBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQSwwREFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBLDREQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUEsc0RBQUE7Q0FBQTtBQUFBO0NBQUEscUJBQUE7Q0FBQTtBQUFBO0NBQUEsNEJBQUE7Q0FBQTtBQUFBO0NBQUEsNkJBQUE7Q0FBQTtBQUFBO0NBQUEsdUJBQUE7Q0FBQTtBQUFBO0NBQUEsY0FBQTtDQUFBO0FBQUE7Q0FBQSxnQkFBQTtDQUFBO0FBQUE7Q0FBQSxxQkFBQTtDQUFBLHdCQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEscUJBQUE7Q0FBQSx3QkFBQTtDQUFBO0FBQUE7Q0FBQSxvQkFBQTtDQUFBLHVCQUFBO0NBQUE7QUFBQTtDQUFBLHFCQUFBO0NBQUEsc0JBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQSxvQkFBQTtDQUFBO0FBQUE7Q0FBQSxrQkFBQTtDQUFBLHFCQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQSxvQkFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBLG9CQUFBO0NBQUE7QUFBQTtDQUFBLGtCQUFBO0NBQUEscUJBQUE7Q0FBQTtBQUFBO0NBQUEscUJBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEscUJBQUE7Q0FBQTtBQUFBO0NBQUEsc0JBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FB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Q2xCOztBQUVELHVFQUF1RTtBQUN2RSxnQ0FBZ0M7QUFDaEMsbUJBQW1CO0FBQ25CLEtBQUs7O0FBRUwsOEJBQThCOztBSG5VOUI7Q0FBQSw0QkFBQTtDQUFBOztBQUFBO0NBQUEsc0JBQUE7Q0FBQTs7QUFBQTtDQUFBLHlCQUFBO0NBQUE7O0FBQUE7Q0FBQSxtQkFBQTtDQUFBLDREQUFBO0NBQUE7O0FBQUE7Q0FBQSxtQkFBQTtDQUFBLDREQUFBO0NBQUE7O0FBQUE7Q0FBQSxxQkFBQTtDQUFBLGdEQUFBO0NBQUE7O0FBQUE7Q0FBQSxtQkFBQTtDQUFBLDREQUFBO0NBQUE7O0FBQUE7Q0FBQSxtQkFBQTtDQUFBLDREQUFBO0NBQUE7O0FBQUE7Q0FBQSxlQUFBO0NBQUE7O0FBQUE7O0NBQUE7RUFBQSw2QkFBQTtFQUFBOztDQUFBO0VBQUEsY0FBQTtFQUFBOztDQUFBO0VBQUEsWUFBQTtFQUFBOztDQUFBO0VBQUEsdUJBQUE7RUFBQTs7Q0FBQTtFQUFBLG9CQUFBO0VBQUE7O0NBQUE7RUFBQSxtQkFBQTtFQUFBOztDQUFBO0VBQUEscUJBQUE7RUFBQSxzQkFBQTtFQUFBOztDQUFBO0VBQUEsaUJBQUE7RUFBQSxvQkFBQTtFQUFBOztDQUFBO0VBQUEscUJBQUE7RUFBQSxzQkFBQTtFQUFBOztDQUFBO0VBQUEscUJBQUE7RUFBQSx3QkFBQTtFQUFBOztDQUFBO0VBQUEsb0JBQUE7RUFBQTs7Q0FBQTtFQUFBLG9CQUFBO0VBQUE7Q0FBQTs7QUFBQTs7Q0FBQTtFQUFBLGdCQUFBO0VBQUEsZUFBQTtFQUFBO0NBQUEiLCJmaWxlIjoiaGFmZWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLyohIG1vZGVybi1ub3JtYWxpemUgdjEuMS4wIHwgTUlUIExpY2Vuc2UgfCBodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL21vZGVybi1ub3JtYWxpemUgKi9cblxuLypcbkRvY3VtZW50XG49PT09PT09PVxuKi9cblxuLyoqXG5Vc2UgYSBiZXR0ZXIgYm94IG1vZGVsIChvcGluaW9uYXRlZCkuXG4qL1xuXG4qLFxuOjpiZWZvcmUsXG46OmFmdGVyIHtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLyoqXG5Vc2UgYSBtb3JlIHJlYWRhYmxlIHRhYiBzaXplIChvcGluaW9uYXRlZCkuXG4qL1xuXG5odG1sIHtcblx0LW1vei10YWItc2l6ZTogNDtcblx0dGFiLXNpemU6IDQ7XG59XG5cbi8qKlxuMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG4qL1xuXG5odG1sIHtcblx0bGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cblx0LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qXG5TZWN0aW9uc1xuPT09PT09PT1cbiovXG5cbi8qKlxuUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzLlxuKi9cblxuYm9keSB7XG5cdG1hcmdpbjogMDtcbn1cblxuLyoqXG5JbXByb3ZlIGNvbnNpc3RlbmN5IG9mIGRlZmF1bHQgZm9udHMgaW4gYWxsIGJyb3dzZXJzLiAoaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9tb2Rlcm4tbm9ybWFsaXplL2lzc3Vlcy8zKVxuKi9cblxuYm9keSB7XG5cdGZvbnQtZmFtaWx5OlxuXHRcdHN5c3RlbS11aSxcblx0XHQtYXBwbGUtc3lzdGVtLCAvKiBGaXJlZm94IHN1cHBvcnRzIHRoaXMgYnV0IG5vdCB5ZXQgYHN5c3RlbS11aWAgKi9cblx0XHQnU2Vnb2UgVUknLFxuXHRcdFJvYm90byxcblx0XHRIZWx2ZXRpY2EsXG5cdFx0QXJpYWwsXG5cdFx0c2Fucy1zZXJpZixcblx0XHQnQXBwbGUgQ29sb3IgRW1vamknLFxuXHRcdCdTZWdvZSBVSSBFbW9qaSc7XG59XG5cbi8qXG5Hcm91cGluZyBjb250ZW50XG49PT09PT09PT09PT09PT09XG4qL1xuXG4vKipcbjEuIEFkZCB0aGUgY29ycmVjdCBoZWlnaHQgaW4gRmlyZWZveC5cbjIuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIG9mIGJvcmRlciBjb2xvciBpbiBGaXJlZm94LiAoaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNjU1KVxuKi9cblxuaHIge1xuXHRoZWlnaHQ6IDA7IC8qIDEgKi9cblx0Y29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cbn1cblxuLypcblRleHQtbGV2ZWwgc2VtYW50aWNzXG49PT09PT09PT09PT09PT09PT09PVxuKi9cblxuLyoqXG5BZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiovXG5cbmFiYnJbdGl0bGVdIHtcblx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xufVxuXG4vKipcbkFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBFZGdlIGFuZCBTYWZhcmkuXG4qL1xuXG5iLFxuc3Ryb25nIHtcblx0Zm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cblxuLyoqXG4xLiBJbXByb3ZlIGNvbnNpc3RlbmN5IG9mIGRlZmF1bHQgZm9udHMgaW4gYWxsIGJyb3dzZXJzLiAoaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9tb2Rlcm4tbm9ybWFsaXplL2lzc3Vlcy8zKVxuMi4gQ29ycmVjdCB0aGUgb2RkICdlbScgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuKi9cblxuY29kZSxcbmtiZCxcbnNhbXAsXG5wcmUge1xuXHRmb250LWZhbWlseTpcblx0XHR1aS1tb25vc3BhY2UsXG5cdFx0U0ZNb25vLVJlZ3VsYXIsXG5cdFx0Q29uc29sYXMsXG5cdFx0J0xpYmVyYXRpb24gTW9ubycsXG5cdFx0TWVubG8sXG5cdFx0bW9ub3NwYWNlOyAvKiAxICovXG5cdGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qKlxuQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG5zbWFsbCB7XG5cdGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcblByZXZlbnQgJ3N1YicgYW5kICdzdXAnIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG5zdWIsXG5zdXAge1xuXHRmb250LXNpemU6IDc1JTtcblx0bGluZS1oZWlnaHQ6IDA7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0dmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuXHRib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG5cdHRvcDogLTAuNWVtO1xufVxuXG4vKlxuVGFidWxhciBkYXRhXG49PT09PT09PT09PT1cbiovXG5cbi8qKlxuMS4gUmVtb3ZlIHRleHQgaW5kZW50YXRpb24gZnJvbSB0YWJsZSBjb250ZW50cyBpbiBDaHJvbWUgYW5kIFNhZmFyaS4gKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTk5OTA4OCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTI5NylcbjIuIENvcnJlY3QgdGFibGUgYm9yZGVyIGNvbG9yIGluaGVyaXRhbmNlIGluIGFsbCBDaHJvbWUgYW5kIFNhZmFyaS4gKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTkzNTcyOSwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTAxNilcbiovXG5cbnRhYmxlIHtcblx0dGV4dC1pbmRlbnQ6IDA7IC8qIDEgKi9cblx0Ym9yZGVyLWNvbG9yOiBpbmhlcml0OyAvKiAyICovXG59XG5cbi8qXG5Gb3Jtc1xuPT09PT1cbiovXG5cbi8qKlxuMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4yLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4qL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuXHRmb250LWZhbWlseTogaW5oZXJpdDsgLyogMSAqL1xuXHRmb250LXNpemU6IDEwMCU7IC8qIDEgKi9cblx0bGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cblx0bWFyZ2luOiAwOyAvKiAyICovXG59XG5cbi8qKlxuUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlIGFuZCBGaXJlZm94LlxuMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuKi9cblxuYnV0dG9uLFxuc2VsZWN0IHsgLyogMSAqL1xuXHR0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG5Db3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuKi9cblxuYnV0dG9uLFxuW3R5cGU9J2J1dHRvbiddLFxuW3R5cGU9J3Jlc2V0J10sXG5bdHlwZT0nc3VibWl0J10ge1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxuLyoqXG5SZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuKi9cblxuOjotbW96LWZvY3VzLWlubmVyIHtcblx0Ym9yZGVyLXN0eWxlOiBub25lO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKipcblJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiovXG5cbjotbW96LWZvY3VzcmluZyB7XG5cdG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cblxuLyoqXG5SZW1vdmUgdGhlIGFkZGl0aW9uYWwgJzppbnZhbGlkJyBzdHlsZXMgaW4gRmlyZWZveC5cblNlZTogaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvZ2Vja28tZGV2L2Jsb2IvMmY5ZWFjZDlkM2Q5OTVjOTM3YjQyNTFhNTU1N2Q5NWQ0OTRjOWJlMS9sYXlvdXQvc3R5bGUvcmVzL2Zvcm1zLmNzcyNMNzI4LUw3MzdcbiovXG5cbjotbW96LXVpLWludmFsaWQge1xuXHRib3gtc2hhZG93OiBub25lO1xufVxuXG4vKipcblJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXQgJ2ZpZWxkc2V0JyBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG5sZWdlbmQge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKipcbkFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lIGFuZCBGaXJlZm94LlxuKi9cblxucHJvZ3Jlc3Mge1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8qKlxuQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gU2FmYXJpLlxuKi9cblxuOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcblx0aGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbjEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4qL1xuXG5bdHlwZT0nc2VhcmNoJ10ge1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuXHRvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xufVxuXG4vKipcblJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbiovXG5cbjo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG5cdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4xLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byAnaW5oZXJpdCcgaW4gU2FmYXJpLlxuKi9cblxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG5cdC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXG5cdGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cbn1cblxuLypcbkludGVyYWN0aXZlXG49PT09PT09PT09PVxuKi9cblxuLypcbkFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIENocm9tZSBhbmQgU2FmYXJpLlxuKi9cblxuc3VtbWFyeSB7XG5cdGRpc3BsYXk6IGxpc3QtaXRlbTtcbn1cbiIsIi8qKlxuICogTWFudWFsbHkgZm9ya2VkIGZyb20gU1VJVCBDU1MgQmFzZTogaHR0cHM6Ly9naXRodWIuY29tL3N1aXRjc3MvYmFzZVxuICogQSB0aGluIGxheWVyIG9uIHRvcCBvZiBub3JtYWxpemUuY3NzIHRoYXQgcHJvdmlkZXMgYSBzdGFydGluZyBwb2ludCBtb3JlXG4gKiBzdWl0YWJsZSBmb3Igd2ViIGFwcGxpY2F0aW9ucy5cbiAqL1xuXG4vKipcbiAqIFJlbW92ZXMgdGhlIGRlZmF1bHQgc3BhY2luZyBhbmQgYm9yZGVyIGZvciBhcHByb3ByaWF0ZSBlbGVtZW50cy5cbiAqL1xuXG5ibG9ja3F1b3RlLFxuZGwsXG5kZCxcbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNixcbmhyLFxuZmlndXJlLFxucCxcbnByZSB7XG4gIG1hcmdpbjogMDtcbn1cblxuYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG59XG5cbi8qKlxuICogV29yayBhcm91bmQgYSBGaXJlZm94L0lFIGJ1ZyB3aGVyZSB0aGUgdHJhbnNwYXJlbnQgYGJ1dHRvbmAgYmFja2dyb3VuZFxuICogcmVzdWx0cyBpbiBhIGxvc3Mgb2YgdGhlIGRlZmF1bHQgYGJ1dHRvbmAgZm9jdXMgc3R5bGVzLlxuICovXG5cbmJ1dHRvbjpmb2N1cyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQ7XG4gIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtcbn1cblxuZmllbGRzZXQge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbm9sLFxudWwge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogVGFpbHdpbmQgY3VzdG9tIHJlc2V0IHN0eWxlc1xuICovXG5cbi8qKlxuICogMS4gVXNlIHRoZSB1c2VyJ3MgY29uZmlndXJlZCBgc2Fuc2AgZm9udC1mYW1pbHkgKHdpdGggVGFpbHdpbmQncyBkZWZhdWx0XG4gKiAgICBzYW5zLXNlcmlmIGZvbnQgc3RhY2sgYXMgYSBmYWxsYmFjaykgYXMgYSBzYW5lIGRlZmF1bHQuXG4gKiAyLiBVc2UgVGFpbHdpbmQncyBkZWZhdWx0IFwibm9ybWFsXCIgbGluZS1oZWlnaHQgc28gdGhlIHVzZXIgaXNuJ3QgZm9yY2VkXG4gKiAgICB0byBvdmVycmlkZSBpdCB0byBlbnN1cmUgY29uc2lzdGVuY3kgZXZlbiB3aGVuIHVzaW5nIHRoZSBkZWZhdWx0IHRoZW1lLlxuICovXG5cbmh0bWwge1xuICBmb250LWZhbWlseTogdGhlbWUoJ2ZvbnRGYW1pbHkuc2FucycsIHVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgXCJOb3RvIFNhbnNcIiwgc2Fucy1zZXJpZiwgXCJBcHBsZSBDb2xvciBFbW9qaVwiLCBcIlNlZ29lIFVJIEVtb2ppXCIsIFwiU2Vnb2UgVUkgU3ltYm9sXCIsIFwiTm90byBDb2xvciBFbW9qaVwiKTsgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS41OyAvKiAyICovXG59XG5cblxuLyoqXG4gKiBJbmhlcml0IGZvbnQtZmFtaWx5IGFuZCBsaW5lLWhlaWdodCBmcm9tIGBodG1sYCBzbyB1c2VycyBjYW4gc2V0IHRoZW0gYXNcbiAqIGEgY2xhc3MgZGlyZWN0bHkgb24gdGhlIGBodG1sYCBlbGVtZW50LlxuICovXG5cbmJvZHkge1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi8qKlxuICogMS4gUHJldmVudCBwYWRkaW5nIGFuZCBib3JkZXIgZnJvbSBhZmZlY3RpbmcgZWxlbWVudCB3aWR0aC5cbiAqXG4gKiAgICBXZSB1c2VkIHRvIHNldCB0aGlzIGluIHRoZSBodG1sIGVsZW1lbnQgYW5kIGluaGVyaXQgZnJvbVxuICogICAgdGhlIHBhcmVudCBlbGVtZW50IGZvciBldmVyeXRoaW5nIGVsc2UuIFRoaXMgY2F1c2VkIGlzc3Vlc1xuICogICAgaW4gc2hhZG93LWRvbS1lbmhhbmNlZCBlbGVtZW50cyBsaWtlIDxkZXRhaWxzPiB3aGVyZSB0aGUgY29udGVudFxuICogICAgaXMgd3JhcHBlZCBieSBhIGRpdiB3aXRoIGJveC1zaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAuXG4gKlxuICogICAgaHR0cHM6Ly9naXRodWIuY29tL21vemRldnMvY3NzcmVtZWR5L2lzc3Vlcy80XG4gKlxuICpcbiAqIDIuIEFsbG93IGFkZGluZyBhIGJvcmRlciB0byBhbiBlbGVtZW50IGJ5IGp1c3QgYWRkaW5nIGEgYm9yZGVyLXdpZHRoLlxuICpcbiAqICAgIEJ5IGRlZmF1bHQsIHRoZSB3YXkgdGhlIGJyb3dzZXIgc3BlY2lmaWVzIHRoYXQgYW4gZWxlbWVudCBzaG91bGQgaGF2ZSBub1xuICogICAgYm9yZGVyIGlzIGJ5IHNldHRpbmcgaXQncyBib3JkZXItc3R5bGUgdG8gYG5vbmVgIGluIHRoZSB1c2VyLWFnZW50XG4gKiAgICBzdHlsZXNoZWV0LlxuICpcbiAqICAgIEluIG9yZGVyIHRvIGVhc2lseSBhZGQgYm9yZGVycyB0byBlbGVtZW50cyBieSBqdXN0IHNldHRpbmcgdGhlIGBib3JkZXItd2lkdGhgXG4gKiAgICBwcm9wZXJ0eSwgd2UgY2hhbmdlIHRoZSBkZWZhdWx0IGJvcmRlci1zdHlsZSBmb3IgYWxsIGVsZW1lbnRzIHRvIGBzb2xpZGAsIGFuZFxuICogICAgdXNlIGJvcmRlci13aWR0aCB0byBoaWRlIHRoZW0gaW5zdGVhZC4gVGhpcyB3YXkgb3VyIGBib3JkZXJgIHV0aWxpdGllcyBvbmx5XG4gKiAgICBuZWVkIHRvIHNldCB0aGUgYGJvcmRlci13aWR0aGAgcHJvcGVydHkgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGBib3JkZXJgXG4gKiAgICBzaG9ydGhhbmQsIG1ha2luZyBvdXIgYm9yZGVyIHV0aWxpdGllcyBtdWNoIG1vcmUgc3RyYWlnaHRmb3J3YXJkIHRvIGNvbXBvc2UuXG4gKlxuICogICAgaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kY3NzL3RhaWx3aW5kY3NzL3B1bGwvMTE2XG4gKi9cblxuKixcbjo6YmVmb3JlLFxuOjphZnRlciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgYm9yZGVyLXdpZHRoOiAwOyAvKiAyICovXG4gIGJvcmRlci1zdHlsZTogc29saWQ7IC8qIDIgKi9cbiAgYm9yZGVyLWNvbG9yOiB0aGVtZSgnYm9yZGVyQ29sb3IuREVGQVVMVCcsIGN1cnJlbnRDb2xvcik7IC8qIDIgKi9cbn1cblxuLypcbiAqIEVuc3VyZSBob3Jpem9udGFsIHJ1bGVzIGFyZSB2aXNpYmxlIGJ5IGRlZmF1bHRcbiAqL1xuXG5ociB7XG4gIGJvcmRlci10b3Atd2lkdGg6IDFweDtcbn1cblxuLyoqXG4gKiBVbmRvIHRoZSBgYm9yZGVyLXN0eWxlOiBub25lYCByZXNldCB0aGF0IE5vcm1hbGl6ZSBhcHBsaWVzIHRvIGltYWdlcyBzbyB0aGF0XG4gKiBvdXIgYGJvcmRlci17d2lkdGh9YCB1dGlsaXRpZXMgaGF2ZSB0aGUgZXhwZWN0ZWQgZWZmZWN0LlxuICpcbiAqIFRoZSBOb3JtYWxpemUgcmVzZXQgaXMgdW5uZWNlc3NhcnkgZm9yIHVzIHNpbmNlIHdlIGRlZmF1bHQgdGhlIGJvcmRlci13aWR0aFxuICogdG8gMCBvbiBhbGwgZWxlbWVudHMuXG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kY3NzL3RhaWx3aW5kY3NzL2lzc3Vlcy8zNjJcbiAqL1xuXG5pbWcge1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xufVxuXG50ZXh0YXJlYSB7XG4gIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbmlucHV0OjpwbGFjZWhvbGRlcixcbnRleHRhcmVhOjpwbGFjZWhvbGRlciB7XG4gIG9wYWNpdHk6IDE7XG4gIGNvbG9yOiB0aGVtZSgnY29sb3JzLmdyYXkuNDAwJywgI2ExYTFhYSk7XG59XG5cbmJ1dHRvbixcbltyb2xlPVwiYnV0dG9uXCJdIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNiB7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi8qKlxuICogUmVzZXQgbGlua3MgdG8gb3B0aW1pemUgZm9yIG9wdC1pbiBzdHlsaW5nIGluc3RlYWQgb2ZcbiAqIG9wdC1vdXQuXG4gKi9cblxuYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG59XG5cbi8qKlxuICogUmVzZXQgZm9ybSBlbGVtZW50IHByb3BlcnRpZXMgdGhhdCBhcmUgZWFzeSB0byBmb3JnZXQgdG9cbiAqIHN0eWxlIGV4cGxpY2l0bHkgc28geW91IGRvbid0IGluYWR2ZXJ0ZW50bHkgaW50cm9kdWNlXG4gKiBzdHlsZXMgdGhhdCBkZXZpYXRlIGZyb20geW91ciBkZXNpZ24gc3lzdGVtLiBUaGVzZSBzdHlsZXNcbiAqIHN1cHBsZW1lbnQgYSBwYXJ0aWFsIHJlc2V0IHRoYXQgaXMgYWxyZWFkeSBhcHBsaWVkIGJ5XG4gKiBub3JtYWxpemUuY3NzLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIHBhZGRpbmc6IDA7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLyoqXG4gKiBVc2UgdGhlIGNvbmZpZ3VyZWQgJ21vbm8nIGZvbnQgZmFtaWx5IGZvciBlbGVtZW50cyB0aGF0XG4gKiBhcmUgZXhwZWN0ZWQgdG8gYmUgcmVuZGVyZWQgd2l0aCBhIG1vbm9zcGFjZSBmb250LCBmYWxsaW5nXG4gKiBiYWNrIHRvIHRoZSBzeXN0ZW0gbW9ub3NwYWNlIHN0YWNrIGlmIHRoZXJlIGlzIG5vIGNvbmZpZ3VyZWRcbiAqICdtb25vJyBmb250IGZhbWlseS5cbiAqL1xuXG5wcmUsXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiB0aGVtZSgnZm9udEZhbWlseS5tb25vJywgdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlKTtcbn1cblxuLyoqXG4gKiBNYWtlIHJlcGxhY2VkIGVsZW1lbnRzIGBkaXNwbGF5OiBibG9ja2AgYnkgZGVmYXVsdCBhcyB0aGF0J3NcbiAqIHRoZSBiZWhhdmlvciB5b3Ugd2FudCBhbG1vc3QgYWxsIG9mIHRoZSB0aW1lLiBJbnNwaXJlZCBieVxuICogQ1NTIFJlbWVkeSwgd2l0aCBgc3ZnYCBhZGRlZCBhcyB3ZWxsLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTRcbiAqL1xuXG5pbWcsXG5zdmcsXG52aWRlbyxcbmNhbnZhcyxcbmF1ZGlvLFxuaWZyYW1lLFxuZW1iZWQsXG5vYmplY3Qge1xuICBkaXNwbGF5OiBibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLyoqXG4gKiBDb25zdHJhaW4gaW1hZ2VzIGFuZCB2aWRlb3MgdG8gdGhlIHBhcmVudCB3aWR0aCBhbmQgcHJlc2VydmVcbiAqIHRoZWlyIGludHJpbnNpYyBhc3BlY3QgcmF0aW8uXG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL21vemRldnMvY3NzcmVtZWR5L2lzc3Vlcy8xNFxuICovXG5cbmltZyxcbnZpZGVvIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG59XG4iLCJAdGFpbHdpbmQgYmFzZTtcbkB0YWlsd2luZCBjb21wb25lbnRzO1xuQHRhaWx3aW5kIHV0aWxpdGllcztcblxuLyogRml4IGZvciBaZW5kIERlYnVnIEJhciAqL1xuI1pGRGVidWdfZGVidWcge1xuICBmbG9hdDogbGVmdDtcbn1cbiNaRkRlYnVnX2RlYnVnIGRpdiB7XG4gIGZsb2F0OiBsZWZ0O1xufVxuI1pGRGVidWdfZGVidWcgc3BhbiB7XG4gIGZsb2F0OiBsZWZ0O1xufVxuI1pGRGVidWdfZGVidWcgc3BhbiBpbWcge1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLXJpZ2h0OiA0cHg7XG59XG4uYmctaGFmZWxlLWdyYXkge1xuICAtLXR3LWJnLW9wYWNpdHk6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQxLCAyNDEsIDI0MSwgdmFyKC0tdHctYmctb3BhY2l0eSkpO1xuICAvKkBhcHBseSBiZy1jb29sR3JheS0xMDA7Ki9cbn1cbi5iZy1zaXplLTQ1IHtcbiAgYmFja2dyb3VuZC1zaXplOiA0NSU7XG59XG4uYmctb3BhY2l0eS0wIHtcbiAgb3BhY2l0eTogMDtcbn1cblxuLmJnLW9wYWNpdHktMjUge1xuICBvcGFjaXR5OiAwLjI1O1xufVxuXG4uYmctb3BhY2l0eS01MCB7XG4gIG9wYWNpdHk6IDAuNTtcbn1cblxuLmJnLW9wYWNpdHktNzUge1xuICBvcGFjaXR5OiAwLjc1O1xufVxuXG4uYmctb3BhY2l0eS0xMDAge1xuICBvcGFjaXR5OiAxO1xufVxuLyogVE9ETzogRml4IHB1cmdlIGNvbmZpZyAqL1xuXG4vKiBMb2dpbiBGb3JtICovXG4vKiBOb3RlOiBEdWUgdG8gdGhlIG5hdHVyZSBvZiBob3cgdGhlIGZvcm0gaXMgb3V0cHV0LCB3ZSBjYW4ndCBzdHlsZSBpdCBuaWNlIHdpdGggY2xhc3NlcyBzbyBtdXN0IHVzZSBjdXN0b20gY3NzLiAqL1xuZm9ybSNsb2dpbiBpbnB1dFtuYW1lPXVzZXJuYW1lXSwgZm9ybSNsb2dpbiBpbnB1dFtuYW1lPXBhc3N3b3JkXSB7XG4gIHBhZGRpbmc6IDEzcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiAwcHg7XG4gIC8qaGVpZ2h0OiA1MXB4OyovXG59XG5cbmZvcm0jbG9naW4gaW5wdXRbbmFtZT1wYXNzd29yZF0ge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xufVxuXG5mb3JtI2xvZ2luIGlucHV0W3R5cGU9c3VibWl0XSB7XG4gIGNvbG9yOiByZWQ7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKiBBZGQgdGhlIGFycm93IG9uIHJpZ2h0IHNpZGUgb2YgTG9naW4gc3VibWl0IGJ1dHRvbiB0ZXh0LiAqL1xuZm9ybSNsb2dpbiBkZCNsb2dpbi1lbGVtZW50OjphZnRlciB7XG4gIGNvbG9yOiByZWQ7XG4gIHBhZGRpbmctbGVmdDogMXB4O1xuICBmb250LXNpemU6IDE1cHQ7XG4gIGNvbnRlbnQ6IFwiPiB0b2RvIGhpZGUgdGhpc1wiO1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5mb3JtI2xvZ2luICN1c2VybmFtZS1sYWJlbCwgZm9ybSNsb2dpbiAjcGFzc3dvcmQtbGFiZWwge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uYnRuLS1sb2dpbiB7XG4gIGNvbG9yOiAjRkMwMDI2O1xufVxuXG4uYnRuLS1mb3Jnb3QtcGFzc3dvcmQge1xuICBjb2xvcjogYmxhY2s7XG59XG4vKiBFbmQgb2YgTG9naW4gRm9ybSAqL1xuXG4vKiBGaXhlZCB3aWR0aCBvbmx5IG9uIHNtIGFuZCB1cCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC53LWZpeGVkIHtcbiAgICBmbGV4OiAwIDEgNTAwcHg7XG4gICAgbWluLXdpZHRoOiAyMzBweDtcbiAgfVxufVxuXG4vKiBNYWtlIG9yZGVycyB0YWJsZSBhIGxpdHRsZSBiaXQgYmlnZ2VyIGFuZCBtb3JlIHJlYWRhYmxlLiAqL1xuLm9yZGVyLWZpbHRlci1ibG9jayB7XG4gIEBhcHBseSBmbGV4IGZsZXgtcm93IHNwYWNlLXgtOCBpdGVtcy1jZW50ZXIgcHktMTtcbn1cblxuLm9yZGVyLWZpbHRlci1zZWFyY2ggaW5wdXQge1xuICBoZWlnaHQ6IDQwcHg7XG59XG5cbmRpdi5vcmRlcmxpc3QgdGFibGUge1xuICB3aWR0aDogNjZ2dztcbn1cblxuZGl2Lm9yZGVybGlzdCB0YWJsZSB0aCwgZGl2Lm9yZGVybGlzdCB0YWJsZSB0aCBhIHtcbiAgZm9udC1zaXplOiAxZW07XG59XG5cbmRpdi5vcmRlcmxpc3QgdGFibGUgdGQsIGRpdi5vcmRlcmxpc3QgdGFibGUgdGQgYSB7XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuXG5kaXYub3JkZXJsaXN0IGE6bGluayB7XG4gIGNvbG9yOiAjMzMzO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG5kaXYub3JkZXJsaXN0IC5vcmRlci1hY3Rpb24ge1xuICBmb250LXNpemU6IDFlbTtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG59XG5cbmRpdi5vcmRlcmxpc3QgdGFibGUge1xuICBiYWNrZ3JvdW5kOiAjYWFhO1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xufVxuXG5kaXYub3JkZXJsaXN0IHRhYmxlIHRoIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgYmFja2dyb3VuZDogI2RjZDhjOTtcbiAgcGFkZGluZzogNHB4IDFweDtcbn1cblxuZGl2Lm9yZGVybGlzdCB0YWJsZSB0aCwgZGl2Lm9yZGVybGlzdCB0YWJsZSB0aCBhIHtcbiAgY29sb3I6ICMzMzM7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuZGl2Lm9yZGVybGlzdCB0YWJsZSB0ZCB7XG4gIHBhZGRpbmc6IDFweCAxcHg7XG59XG5cbmRpdi5vcmRlcmxpc3QgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICBiYWNrZ3JvdW5kOiAjZTNlMWQ4O1xufVxuXG5kaXYub3JkZXJsaXN0IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChldmVuKSB7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG59XG5cbmRpdi5vcmRlcmxpc3QgdGFibGUgdHIge1xuICBib3JkZXI6IDFweCBzb2xpZCAjMWMxYzFjO1xufVxuXG5hLm9yZGVyLWZpbHRlciB7XG4gIGNvbG9yOiAjMzMzO1xuICBmb250LXdlaWdodDogYm9sZDtcblxuICBAYXBwbHkgaG92ZXI6YmctZ3JheS0yMDAgaG92ZXI6LXRyYW5zbGF0ZS15LTAuNSBhY3RpdmU6YmctZ3JheS0xMDAgdHJhbnNmb3JtIHRyYW5zaXRpb247XG59XG5cbi8qIEVuZCBvZiBvcmRlcnMgdGFibGUgKi9cblxuLyogWmVuZCBUaGVtZSBQaHRtbCBFeGNlcHRpb24gKi9cbi56ZW5kLXZpZXctZXhjZXB0aW9uIHtcbiAgQGFwcGx5IGJvcmRlciBib3JkZXItMiBib3JkZXItcmVkLTUwMCBweC0yIHB5LTQgYmctcmVkLTYwMCByb3VuZGVkLWxnIHNoYWRvdy1sZyBibG9jayB3LWZ1bGxcbn1cblxuXG4vKiBTdHlsaW5nIHRoZSBCZW5jaCBBZGQvRWRpdCBzY3JlZW4uICovXG5cbiNjb250cm9sUGFuZWwge1xuICAtd2Via2l0LXVzZXItZHJhZzogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiBpbml0aWFsO1xuICBsZWZ0OiAwcHg7XG4gIHRvcDogMHB4O1xuICBib3R0b206IDBweDtcbiAgLyp3aWR0aDogMTcwcHg7Ki9cbiAgd2lkdGg6IDI1cmVtO1xuICBwYWRkaW5nOiAzcHg7XG4gIGJhY2tncm91bmQ6ICNmNGY0ZjQ7XG4gIGJvcmRlci1sZWZ0OiBub25lO1xuICBib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAjZDFkMWQxO1xuICB6LWluZGV4OiAxO1xufVxuXG4jY29udGFpbmVyICNtYWluLWNhbnZhcy13cmFwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAyNXJlbTtcbiAgcmlnaHQ6IDBweDtcbiAgdG9wOiAwcHg7XG4gIGJvdHRvbTogNzBweDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBmbG9hdDogbGVmdDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuI21haW4tY2FudmFzIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuIC5jb2xvcl9pbWcge1xuICB3aWR0aDogMTQycHg7IC8qIEZvciBzb21lIHJlYXNvbiBlbmVkcyB0byBiZSAyIHBpeGVscyBsYXJnZXIgZm9yIHRoZSBib3JkZXIgdG8gc2hvdz8gKi9cbn1cblxuLyogTWFrZSB0aGUgbWVzc2FnZS9lcnJvciB0ZXh0IHNtYWxsZXIuICovXG4jbXNnQm94IHtcbiAgZm9udC1zaXplOiAyZW07XG4gIGxlZnQ6IDI1cmVtO1xuICByaWdodDogMHB4O1xuICBoZWlnaHQ6IGluaXRpYWw7XG59XG5cbiNtc2dCb3ggLmVycm9yIHtcblxufVxuLyogRW5kIG9mIFN0eWxpbmcgQmVuY2ggQWRkL0VkaXQgc2NyZWVuLiAqL1xuXG4vKiBqUXVlcnkgVUkgRGlhbG9ncyAqL1xuLnVpLWRpYWxvZyB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cbi51aS1kaWFsb2ctdGl0bGViYXIge1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbn1cbi51aS1kaWFsb2ctdGl0bGUge1xuICBmb250LXNpemU6IDEuOGVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLXRvcDogMC41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC44NXJlbTtcbiAgcGFkZGluZy1sZWZ0OiAycmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xufVxuXG4udWktZGlhbG9nLXRpdGxlOjphZnRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDVyZW07XG4gIHJpZ2h0OiA1cmVtO1xuICBwYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICM5Njk2OTY7XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG5cbiNkaWFsb2ctZm9ybSBzZWxlY3QsICNkaWFsb2ctZm9ybSBpbnB1dFt0eXBlPXRleHRdIHtcbiAgYm9yZGVyOiAycHggc29saWQgIzk2OTY5NjtcbiAgYm9yZGVyLXJhZGl1czogMHB4O1xuICBwYWRkaW5nOiAxZW07XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LXNpemU6IDEuMmVtO1xufVxuXG4udWktZGlhbG9nLWJ1dHRvbnBhbmUudWktd2lkZ2V0LWNvbnRlbnQudWktaGVscGVyLWNsZWFyZml4IHtcbiAgYm9yZGVyOiBub25lO1xufVxuXG4jZGlhbG9nLWZvcm0gbGFiZWwge1xuICBmb250LXNpemU6IDEuNWVtO1xufVxuXG4jZGlhbG9nLWZvcm0gLmJlbmNoLXNoYXBlLWxhYmVsIHtcbiAgZm9udC1zaXplOiAxLjVlbTtcbn1cblxuI2Nob29zZUJlbmNoUGllY2UgaW5wdXRbdHlwZT1yYWRpb10ge1xuICBvcGFjaXR5OiAwO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHdpZHRoOiAwO1xufVxuI2Nob29zZUJlbmNoUGllY2UgbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDVweCA1cHg7XG4gIG1hcmdpbjogNHB4O1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZiwgQXJpYWw7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgYm9yZGVyOiAycHggc29saWQgI0ZGRkZGRjtcbiAgYm9yZGVyLXJhZGl1czogMHB4O1xufVxuXG4jY2hvb3NlQmVuY2hQaWVjZSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkICsgbGFiZWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiNmZWZlZmU7XG4gIGJvcmRlci1jb2xvcjogI0QyMEEyODtcbn1cblxuI2RpYWxvZy1mb3JtIC5xX2xlZnQge1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogYXV0bztcbn1cblxuZGl2LnVpLWRpYWxvZy1idXR0b25wYW5lIGJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjRDIwQTI4ICFpbXBvcnRhbnQ7XG59XG5cbiNkaWFsb2ctZm9ybSBzZWxlY3RbbmFtZT1tb2RlX3NlbGVjdF0sICNkaWFsb2ctZm9ybSBpbnB1dFtuYW1lPWN1c3RvbWVyX25hbWVdLCAjZGlhbG9nLWZvcm0gaW5wdXRbbmFtZT1qb2JfbmFtZV0ge1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xufVxuXG4udWktYnV0dG9uLXRleHQge1xuICBmb250LXNpemU6IDEuNGVtO1xufVxuXG4vKi51aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgdWktZHJhZ2dhYmxlIHsqL1xuLyogIGJhY2tncm91bmQtY29sb3I6ICNGRjAwRkY7Ki9cbi8qICBib3JkZXI6IG5vbmU7Ki9cbi8qfSovXG5cbi8qIEVuZCBvZiBqUXVlcnkgVUkgRGlhbG9ncyAqL1xuIl19 */