From c0d71d82e84fa6a29c175640dfdbb007cdd1bd04 Mon Sep 17 00:00:00 2001 From: Mayuran Visakan Date: Sun, 9 Jul 2023 00:26:11 +0100 Subject: [PATCH] Split up css --- .github/TODO.md | 5 +- css/styles.css | 1162 +++++++++++++++++++++++ esbuild.config.mjs | 9 +- src/css/codeblocks.css | 486 ++++++++++ src/css/inlineCode.css | 57 ++ src/css/pdfExport.css | 9 + src/css/pickr.css | 5 + src/css/pluginCompatibility.css | 162 ++++ src/styles.css | 75 ++ styles.css | 1542 +++++++++++++++++++------------ 10 files changed, 2918 insertions(+), 594 deletions(-) create mode 100644 css/styles.css create mode 100644 src/css/codeblocks.css create mode 100644 src/css/inlineCode.css create mode 100644 src/css/pdfExport.css create mode 100644 src/css/pickr.css create mode 100644 src/css/pluginCompatibility.css create mode 100644 src/styles.css diff --git a/.github/TODO.md b/.github/TODO.md index 7765833..be9782b 100644 --- a/.github/TODO.md +++ b/.github/TODO.md @@ -1,11 +1,10 @@ # TODO -1. Split up CSS files as described on Obsidian discord -2. Check through: +1. Check through: - `package.json` - `package-lock.json` - `eslintrc` -3. Update github: +2. Update github: - Better issue templates using [yaml](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository) - [Example 1](https://github.com/javalent/admonitions/tree/main/.github/ISSUE_TEMPLATE) - [Example 2](https://github.com/obsidian-tasks-group/obsidian-tasks/tree/main/.github/ISSUE_TEMPLATE) diff --git a/css/styles.css b/css/styles.css new file mode 100644 index 0000000..00c0aa5 --- /dev/null +++ b/css/styles.css @@ -0,0 +1,1162 @@ +/* src/css/codeblocks.css */ +.code-styler-pre-parent { + margin-bottom: 16px; +} +.code-styler pre.code-styler-pre { + background: var(--code-styler-codeblock-background-colour) !important; + border-radius: var(--border-radius) !important; + min-height: unset; + padding: 0px !important; + overflow: hidden !important; +} +.code-styler pre.code-styler-pre[class*=language-] { + background: linear-gradient(90deg, var(--language-border-colour), var(--language-border-colour) var(--language-border-width), var(--code-styler-codeblock-background-colour) var(--language-border-width), var(--code-styler-codeblock-background-colour) 100%) !important; + padding-left: var(--language-border-width) !important; +} +.code-styler pre.code-styler-pre code { + display: grid; + grid-template-columns: min-content auto; + grid-template-rows: auto; + padding-top: var(--code-padding) !important; + padding-bottom: var(--code-padding) !important; + padding-left: 0px !important; + padding-right: 0px !important; + border-radius: 0px !important; + background: none !important; + transition: + max-height ease-in-out var(--duration-button), + padding ease-in-out var(--duration-button), + border-top ease-in-out var(--duration-button); + max-height: 0; + overflow-x: scroll; +} +.code-styler pre.code-styler-pre code:not(:has(> input[style*="display: inline;"])):active { + --line-wrapping: var(--line-active-wrapping) !important; +} +.code-styler pre.code-styler-pre.code-styler-collapsed code { + padding-top: 0 !important; + padding-bottom: 0 !important; +} +.code-styler pre.code-styler-pre::before, +.code-styler pre.code-styler-pre::after { + content: none !important; +} +.markdown-source-view.mod-cm6 .cm-embed-block pre.code-styler-pre { + margin: 1em 0px; +} +.code-styler .markdown-source-view [class*=code-styler-line].HyperMD-codeblock-begin { + border-top-left-radius: 0px !important; + border-top-right-radius: 0px !important; + border-top: none !important; +} +.code-styler .markdown-source-view [class*=code-styler-line].HyperMD-codeblock-end { + border-bottom-left-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container + .HyperMD-codeblock-begin, +body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has(img.code-styler-icon)) + .HyperMD-codeblock-begin, +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*="code-styler-header-language-tag-"])) + .HyperMD-codeblock-begin, +body .markdown-source-view :not([class^="code-styler-header-container"]) + [class*=code-styler-line].HyperMD-codeblock-begin, +body .markdown-source-view [class*=code-styler-line].HyperMD-codeblock-begin:nth-of-type(1) { + border-top-left-radius: var(--border-radius) !important; + border-top-right-radius: var(--border-radius) !important; +} +.code-styler .markdown-source-view .HyperMD-codeblock[class*=code-styler-line] { + background: linear-gradient(90deg, var(--gradient-background-colour) var(--gradient-highlights-colour-stop), transparent 100%), var(--code-styler-codeblock-background-colour) !important; + overflow: hidden; + padding: 0 !important; + padding-left: var(--size-4-4) !important; +} +.code-styler .markdown-source-view .HyperMD-codeblock[class*=code-styler-line][class*=language-] { + background: linear-gradient(90deg, var(--language-border-colour), var(--language-border-colour) var(--language-border-width), var(--gradient-background-colour) var(--language-border-width) var(--gradient-highlights-colour-stop), transparent 100%), var(--code-styler-codeblock-background-colour) !important; +} +.code-styler .markdown-source-view .HyperMD-codeblock[class*=code-styler-line][class*=language-] [class^=code-styler-line-number] { + margin-left: var(--language-border-width); +} +body:not([class*="code-styler-show-langicons"]) .code-styler-header-container-specific div:has(> img.code-styler-icon), +body:not(.code-styler-show-langicons-always) .code-styler-header-container div:has(> img.code-styler-icon) { + display: none; +} +body:not([class*="code-styler-show-langnames"]) .code-styler-header-container-specific [class^=code-styler-header-language-tag], +body:not(.code-styler-show-langnames-always) .code-styler-header-container [class^=code-styler-header-language-tag] { + display: none; +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .code-styler-header-container, +body:not(.code-styler-show-langnames-always) .code-styler-header-container:not(:has(img.code-styler-icon)) { + display: none !important; +} +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not([class*="language-"]), +body pre.code-styler-pre:not([class*="language-"]) .code-styler-header-container { + display: none !important; +} +[class^=code-styler-header-container] { + font-size: var(--header-font-size); + user-select: none; + height: var(--container-height); + min-height: var(--container-min-height); + padding-top: var(--header-padding); + margin-top: 0px !important; + display: flex !important; + overflow: visible; + transition: border-bottom ease-in-out var(--duration-button); + box-sizing: content-box; +} +.markdown-source-view :not(pre.code-styler-pre) > [class^=code-styler-header-container] { + background: linear-gradient(var(--code-styler-header-background-colour) 0%, var(--code-styler-header-background-colour) calc(100% - var(--header-separator-width)), var(--code-styler-header-separator-colour) calc(100% - var(--header-separator-width)), var(--code-styler-header-separator-colour) 100%) var(--language-border-width) bottom/100% border-box no-repeat, var(--language-border-colour) !important; + padding-left: var(--language-border-width); + border-top-left-radius: var(--border-radius); + border-top-right-radius: var(--border-radius); + padding-bottom: var(--header-separator-width); + border-top: var(--code-styler-header-border); + border-left: var(--code-styler-header-border); + border-right: var(--code-styler-header-border); +} +pre.code-styler-pre [class^=code-styler-header-container] { + background-color: var(--code-styler-header-background-colour); + border-bottom: var(--header-separator-width) solid var(--code-styler-header-separator-colour); +} +.markdown-source-view :not(pre.code-styler-pre) > [class^=code-styler-header-container]:not(:has(+ .HyperMD-codeblock-begin)) { + background: linear-gradient(var(--code-styler-header-background-colour) 0%, var(--code-styler-header-background-colour) 100%) var(--language-border-width) bottom/100% border-box no-repeat, var(--language-border-colour) !important; + padding-bottom: var(--header-padding); + border-bottom-left-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); + border-bottom: var(--code-styler-header-border); + border-bottom: var(--collapsed-bottom-border); +} +pre.code-styler-pre.code-styler-collapsed [class^=code-styler-header-container] { + border-bottom: var(--collapsed-bottom-border); +} +[class^=code-styler-header-container] [class^=code-styler-header-language-tag] { + display: flex; + justify-content: center; + align-content: center; + flex-direction: column; + height: 100%; + padding-left: var(--header-spacing); + padding-right: var(--header-spacing); + margin-right: var(--header-spacing); + padding-top: calc(1em * var(--header-inner-vertical-padding)); + padding-bottom: calc(1em * var(--header-inner-vertical-padding)); + font-size: inherit; + border-radius: var(--border-radius) var(--border-radius) 0px 0px; + background-color: var(--code-styler-header-language-tag-background-colour); + color: var(--code-styler-header-language-tag-text-colour); + font-weight: var(--code-styler-header-language-tag-text-bold, normal); + font-style: var(--code-styler-header-language-tag-text-italic, normal); + text-align: center; + transition: border-radius ease-in-out var(--duration-button), padding ease-in-out var(--duration-button); +} +.markdown-source-view :not(pre.code-styler-pre) > [class^=code-styler-header-container]:not(:has(+ .HyperMD-codeblock-begin)) [class^=code-styler-header-language-tag], +pre.code-styler-pre.code-styler-collapsed [class^=code-styler-header-container] [class^=code-styler-header-language-tag] { + border-radius: var(--border-radius); +} +.code-styler-header-text { + display: flex; + justify-content: center; + align-content: center; + flex-direction: column; + padding-left: 0px; + padding-top: calc(1em * var(--header-inner-vertical-padding)); + padding-bottom: calc(1em * var(--header-inner-vertical-padding)); + font-size: inherit; + color: var(--code-styler-header-text-colour); + font-weight: var(--code-styler-header-title-text-bold, normal); + font-style: var(--code-styler-header-title-text-italic, normal); + transition: padding ease-in-out var(--duration-button); +} +body:not([class*="code-styler-show-langicons"]) .code-styler-header-container-specific [class^=code-styler-header-language-tag], +body:not(.code-styler-show-langicons-always) .code-styler-header-container [class^=code-styler-header-language-tag], +body .code-styler-header-container-specific:not(:has(div > img.code-styler-icon)) [class^=code-styler-header-language-tag] { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +body:not([class*="code-styler-show-langicons"]):not([class*="code-styler-show-langnames"]) .code-styler-header-container-specific .code-styler-header-text, +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames) .code-styler-header-container .code-styler-header-text, +body .code-styler-header-container-specific:not(:has([class^="code-styler-header-language-tag-"])) .code-styler-header-text { + padding-left: var(--header-spacing); +} +div:has(> img.code-styler-icon) { + display: inline-flex; + justify-content: center; + align-content: center; + flex-direction: column; + padding-top: calc(1em * var(--header-inner-vertical-padding)); + padding-bottom: calc(1em * var(--header-inner-vertical-padding)); + padding-left: var(--header-spacing); + padding-right: var(--header-spacing); + transition: padding ease-in-out var(--duration-button); +} +.code-styler-icon { + width: var(--language-icon-size); + height: var(--language-icon-size); + filter: var(--language-icon-filter); + margin: 0 !important; + border: none !important; +} +pre.code-styler-pre [class^=code-styler-line-highlighted] > .code-styler-line-text { + background-image: linear-gradient(90deg, var(--gradient-background-colour) 0% var(--gradient-highlights-colour-stop), var(--code-styler-codeblock-background-colour) 100%); +} +.code-styler-line-highlighted { + --gradient-background-colour: var(--code-styler-default-highlight-colour) !important; +} +.code-styler-active-line-highlight .cm-active, +.code-styler-active-line-highlight-editor .cm-active { + background: linear-gradient(to right, var(--code-styler-active-editor-line-colour), var(--gradient-highlights-colour-stop), transparent) !important; +} +.code-styler-active-line-highlight .markdown-source-view .HyperMD-codeblock[class*=code-styler-line].cm-active, +.code-styler-active-line-highlight-codeblock .markdown-source-view .HyperMD-codeblock[class*=code-styler-line].cm-active { + background: linear-gradient(to right, var(--code-styler-active-codeblock-line-colour), var(--gradient-highlights-colour-stop), var(--code-styler-codeblock-background-colour)) !important; +} +.code-styler:not(.code-styler-show-line-numbers) .code-styler-line-number, +.code-styler-line-number-hide { + display: none; +} +pre.code-styler-pre > code > div:first-child > [class^=code-styler-line-number] { + box-shadow: 0px calc(-1 * var(--code-padding)) var(--code-styler-gutter-background-colour); + transition: box-shadow ease-in-out var(--duration-button); +} +pre.code-styler-pre.code-styler-collapsed > code > div:first-child > [class^=code-styler-line-number] { + box-shadow: 0px 0px var(--code-styler-gutter-background-colour); +} +pre.code-styler-pre > code > div:last-child > [class^=code-styler-line-number] { + box-shadow: 0px var(--code-padding) var(--code-styler-gutter-background-colour); +} +pre.code-styler-pre > code > div:only-child > [class^=code-styler-line-number] { + box-shadow: 0px calc(-1 * var(--code-padding)) var(--code-styler-gutter-background-colour), 0px var(--code-padding) var(--code-styler-gutter-background-colour); +} +[class^=code-styler-line-number] { + padding-left: calc(4px + var(--language-border-width)); + padding-right: 8px; + text-align: right; + min-width: var(--line-number-gutter-min-width); + background-color: var(--code-styler-gutter-background-colour); + font-size: var(--code-size); + font-family: var(--font-monospace); + color: var(--code-styler-gutter-text-colour); + user-select: none; +} +.markdown-source-view .HyperMD-codeblock .code-styler-line-number, +.markdown-source-view .HyperMD-codeblock .code-styler-line-number-specific { + padding-top: var(--line-number-height-correction); + position: absolute; + box-sizing: content-box; + display: inline-block; + height: 100%; + min-width: calc(var(--line-number-gutter-min-width) - 12px); + overflow-x: auto; + direction: rtl; + left: 0; +} +.markdown-source-view .HyperMD-codeblock-begin .code-styler-line-number, +.markdown-source-view .HyperMD-codeblock-begin .code-styler-line-number-specific, +.markdown-source-view .HyperMD-codeblock-end .code-styler-line-number, +.markdown-source-view .HyperMD-codeblock-end .code-styler-line-number-specific { + width: var(--line-number-gutter-width); +} +pre.code-styler-pre [class^=code-styler-line-number] { + white-space: nowrap; + grid-column: 1; + position: sticky; + top: -1px; + left: 0; + border-top: var(--line-number-height-correction) solid transparent; +} +pre.code-styler-pre div:last-child > [class^=code-styler-line-number] { + width: unset; +} +.code-styler-gutter-highlight pre.code-styler-pre [class*=code-styler-line-highlighted] [class^=code-styler-line-number] { + background-color: var(--gradient-background-colour); +} +.code-styler-active-line-highlight.code-styler-gutter-highlight .markdown-source-view .HyperMD-codeblock[class*=code-styler-line].cm-active [class^=code-styler-line-number], +.code-styler-active-line-highlight-codeblock.code-styler-gutter-highlight .markdown-source-view .HyperMD-codeblock[class*=code-styler-line].cm-active [class^=code-styler-line-number], +.code-styler-gutter-highlight [class*=code-styler-line-highlighted] [class^=code-styler-line-number] { + background-color: rgba(0, 0, 0, 0); +} +.code-styler-gutter-active-line .cm-active [class^=code-styler-line-number] { + color: var(--code-styler-gutter-active-text-colour); +} +.code-styler.code-styler-show-line-numbers .markdown-source-view .HyperMD-codeblock:has(.code-styler-line-number), +.code-styler.code-styler-show-line-numbers .markdown-source-view .HyperMD-codeblock:has(.code-styler-line-number-specific) { + padding-left: calc(12px + var(--language-border-width) + var(--line-number-gutter-width) + var(--line-number-gutter-padding)) !important; +} +.code-styler .markdown-source-view .HyperMD-codeblock[class*=code-styler-line]::before { + content: none !important; +} +pre.code-styler-pre > code > div[class*=code-styler-line] { + display: contents !important; +} +pre.code-styler-pre .code-styler-line-text { + flex-basis: 100%; + padding-left: var(--line-number-gutter-padding); + grid-column: 2; +} +.HyperMD-codeblock:has(> .cm-widgetBuffer) { + white-space: nowrap; +} +.HyperMD-codeblock:has(> .cm-widgetBuffer) > .cm-hmd-codeblock { + white-space: break-spaces; +} +@keyframes outdent { + from { + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + clip-path: var(--polygon-in); + } + to { + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); + } +} +@keyframes indent { + from { + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); + } + to { + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + clip-path: var(--polygon-in); + } +} +@keyframes reverse-outdent { + from { + clip-path: var(--polygon-in); + } + to { + clip-path: var(--polygon-out); + } +} +@keyframes reverse-indent { + from { + clip-path: var(--polygon-out); + } + to { + clip-path: var(--polygon-in); + } +} +.markdown-rendered pre.code-styler-pre button { + transition: visibility var(--duration-button), opacity var(--duration-button); + visibility: visible; + opacity: 1; + display: unset !important; + color: var(--code-styler-button-colour) !important; + background: transparent !important; + box-shadow: none; + font-family: var(--font-interface); + font-size: var(--font-ui-smaller); + margin: 0; + padding: 0 !important; + border: none !important; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +pre.code-styler-pre:not(.code-styler-collapsed):not(:hover) button, +pre.code-styler-pre.code-styler-collapsed button, +pre.code-styler-pre:not(.code-styler-collapsed):not(:hover) [class^=code-styler-header-container]::after { + visibility: hidden; + opacity: 0; +} +[class^=code-styler-header-container]::after { + position: relative; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + margin-right: var(--header-button-spacing); + content: "\200b"; + width: 20px; + height: 20px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' xml:space='preserve'%3E%3Cpath d='M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + visibility: visible; + opacity: 1; + scale: 0.8; + transition: + transform var(--duration-button) ease-out, + visibility var(--duration-button), + opacity var(--duration-button), + scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); +} +pre.code-styler-pre.code-styler-collapsed [class^=code-styler-header-container]::after, +.markdown-source-view :not(pre.code-styler-pre) > [class^=code-styler-header-container]:not(:has(+ .HyperMD-codeblock-begin))::after { + transform: rotate(-90deg); +} +[class^=code-styler-header-container]:hover::after { + scale: 1; +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) pre.code-styler-pre:has(.code-styler-header-container) button.copy-code-button, +body:not(.code-styler-show-langnames-always) pre.code-styler-pre:not(:has(.code-styler-header-container-specific)):not(:has(.code-styler-header-container img.code-styler-icon)) button.copy-code-button, +body pre.code-styler-pre:not([class*="language-"]):has(.code-styler-header-container) button.copy-code-button { + top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)) !important; + --copy-code-header-right-margin: 12px; +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container + .HyperMD-codeblock-begin, +body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has(img.code-styler-icon)) + .HyperMD-codeblock-begin, +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*="code-styler-header-language-tag-"])) + .HyperMD-codeblock-begin { + overflow: hidden; +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container + .HyperMD-codeblock-begin span.code-block-flair, +body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has(img.code-styler-icon)) + .HyperMD-codeblock-begin span.code-block-flair, +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*="code-styler-header-language-tag-"])) + .HyperMD-codeblock-begin span.code-block-flair { + top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)) !important; + --copy-code-header-right-margin: 12px; +} +pre.code-styler-pre button.copy-code-button { + transform: translateY(-50%); + top: max(calc(0.5 * var(--container-height) * 1), calc(0.5 * var(--container-min-height) * 1)) !important; + bottom: unset !important; +} +pre.code-styler-pre button.copy-code-button, +pre.code-styler-pre button.run-code-button, +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair { + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + will-change: margin-right, clip-path; + clip-path: var(--polygon-in); +} +pre.code-styler-pre button.copy-code-button:not(:active), +pre.code-styler-pre button.run-code-button:not(:active), +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair:not(:active) { + animation: indent var(--duration-button); +} +pre.code-styler-pre button.copy-code-button:hover, +pre.code-styler-pre button.run-code-button:hover, +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair:hover { + background-color: transparent; + animation: outdent var(--duration-button); + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); +} +pre.code-styler-pre button.copy-code-button:active, +pre.code-styler-pre button.run-code-button:active, +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair:active { + scale: 0.95; + transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); +} +pre.code-styler-pre button.copy-code-button::before, +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair::before { + content: "\200b"; + display: inline-block; + width: 14px; + height: 14px; + padding-right: 4px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z'/%3E%3Cpath d='M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z'/%3E%3Cpath d='M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + vertical-align: 1px; +} +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair { + transform: translateY(-50%); + font-size: 0; + top: min(calc(-0.5 * var(--container-height) * 1.1 - var(--header-separator-width)), calc(-0.5 * var(--container-min-height) * 1.1 - var(--header-separator-width))) !important; + right: 0; + visibility: hidden; + padding: 0; + position: absolute; + line-height: initial !important; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair > * { + width: 0px; +} +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair::before { + visibility: visible; + opacity: 1; + vertical-align: -1px; + font-size: var(--font-ui-smaller); +} +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair::after { + visibility: visible; + opacity: 1; + font-size: var(--font-ui-smaller); + content: "Copy"; + color: var(--code-styler-button-colour); +} +.markdown-source-view.mod-cm6 .HyperMD-codeblock-begin.code-styler-line { + overflow: visible; +} + +/* src/css/inlineCode.css */ +.code-styler .cm-s-obsidian span.cm-inline-code, +.code-styler .markdown-rendered :not(pre) > code { + font-weight: var(--code-styler-inline-font-weight); + color: var(--code-styler-inline-colour); + background-color: var(--code-styler-inline-background-colour) !important; + border-radius: var(--code-styler-inline-border-radius) !important; + padding: var(--code-styler-inline-padding-vertical) var(--code-styler-inline-padding-horizontal) !important; + margin: 0px var(--code-styler-inline-margin-horizontal) !important; +} +.code-styler .cm-s-obsidian span.cm-formatting-code { + color: var(--code-styler-inline-colour-active); + display: inline !important; +} +.code-styler .cm-s-obsidian span.cm-formatting-code:has(+ span.cm-inline-code:not(.cm-formatting-code)) { + color: var(--code-styler-inline-colour-active); + border-radius: var(--code-styler-inline-border-radius) 0px 0px var(--code-styler-inline-border-radius) !important; + padding-left: var(--code-styler-inline-padding-horizontal) !important; + padding-right: 0px !important; + margin-left: var(--code-styler-inline-margin-horizontal) !important; + margin-right: 0px !important; +} +.code-styler .cm-s-obsidian span.cm-formatting-code + span.cm-inline-code:not(.cm-formatting-code) { + color: var(--code-styler-inline-colour-active); + border-radius: 0px !important; + padding-left: 0px !important; + padding-right: 0px !important; + margin: 0px 0px !important; +} +.code-styler .cm-s-obsidian span.cm-inline-code:not(.cm-formatting-code) + span.cm-formatting-code { + color: var(--code-styler-inline-colour-active); + border-radius: 0px var(--code-styler-inline-border-radius) var(--code-styler-inline-border-radius) 0px !important; + padding-left: 0px !important; + padding-right: var(--code-styler-inline-padding-horizontal) !important; + margin-left: 0px !important; + margin-right: var(--code-styler-inline-margin-horizontal) !important; +} +.code-styler .markdown-rendered :not(pre) > code img.code-styler-inline-icon { + height: calc(var(--code-size) * 1.2); + margin-bottom: 2px; + vertical-align: middle; +} +.code-styler .markdown-rendered :not(pre) > code .code-styler-inline-title { + font-weight: var(--code-styler-inline-title-font-weight); + color: var(--code-styler-inline-title-color); +} +.code-styler .markdown-rendered :not(pre) > code .code-styler-inline-title::after { + content: "\ff5c"; + color: var(--code-styler-inline-title-color); +} +.code-styler .markdown-rendered :not(pre) > code span:has(> img.code-styler-inline-icon) { + padding-right: 8px; +} + +/* src/css/pdfExport.css */ +div.print { + --line-wrapping: pre-wrap !important; +} +.code-styler div.print pre.code-styler-pre code { + max-height: unset; +} +.code-styler div.print pre.code-styler-pre.code-styler-collapsed code { + display: none !important; +} + +/* src/css/pickr.css */ +.pickr { + position: relative; + overflow: visible; + transform: translateY(0); +} +.pickr * { + box-sizing: border-box; + outline: none; + border: none; + appearance: none; + -webkit-appearance: none; +} +.pickr .pcr-button { + position: relative; + height: 2em; + width: 2em; + padding: 0.5em; + cursor: pointer; + font-family: + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + "Roboto", + "Helvetica Neue", + Arial, + sans-serif; + border-radius: .15em; + background: url('data:image/svg+xml;utf8, ') no-repeat center; + background-size: 0; + transition: all 0.3s; +} +.pickr .pcr-button::before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('data:image/svg+xml;utf8, '); + background-size: .5em; + border-radius: .15em; + z-index: -1; +} +.pickr .pcr-button::before { + z-index: initial; +} +.pickr .pcr-button::after { + position: absolute; + content: ""; + top: 0; + left: 0; + height: 100%; + width: 100%; + transition: background 0.3s; + background: var(--pcr-color); + border-radius: .15em; +} +.pickr .pcr-button.clear { + background-size: 70%; +} +.pickr .pcr-button.clear::before { + opacity: 0; +} +.pickr .pcr-button.clear:focus { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color); +} +.pickr .pcr-button.disabled { + cursor: not-allowed; +} +.pickr *, +.pcr-app * { + box-sizing: border-box; + outline: none; + border: none; + appearance: none; + -webkit-appearance: none; +} +.pickr input:focus, +.pickr input.pcr-active, +.pickr button:focus, +.pickr button.pcr-active, +.pcr-app input:focus, +.pcr-app input.pcr-active, +.pcr-app button:focus, +.pcr-app button.pcr-active { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color); +} +.pickr .pcr-palette, +.pickr .pcr-slider, +.pcr-app .pcr-palette, +.pcr-app .pcr-slider { + transition: box-shadow 0.3s; +} +.pickr .pcr-palette:focus, +.pickr .pcr-slider:focus, +.pcr-app .pcr-palette:focus, +.pcr-app .pcr-slider:focus { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(0, 0, 0, 0.25); +} +.pcr-app { + position: fixed; + display: flex; + flex-direction: column; + z-index: 10000; + border-radius: 0.1em; + background: #fff; + opacity: 0; + visibility: hidden; + transition: opacity 0.3s, visibility 0s 0.3s; + font-family: + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + "Roboto", + "Helvetica Neue", + Arial, + sans-serif; + box-shadow: 0 0.15em 1.5em 0 rgba(0, 0, 0, 0.1), 0 0 1em 0 rgba(0, 0, 0, 0.03); + left: 0; + top: 0; +} +.pcr-app.visible { + transition: opacity 0.3s; + visibility: visible; + opacity: 1; +} +.pcr-app .pcr-swatches { + display: flex; + flex-wrap: wrap; + margin-top: 0.75em; +} +.pcr-app .pcr-swatches.pcr-last { + margin: 0; +} +@supports (display: grid) { + .pcr-app .pcr-swatches { + display: grid; + align-items: center; + grid-template-columns: repeat(auto-fit, 1.75em); + } +} +.pcr-app .pcr-swatches > button { + font-size: 1em; + position: relative; + width: calc(1.75em - 10px); + height: calc(1.75em - 10px); + border-radius: 0.15em; + cursor: pointer; + margin: 2.5px; + flex-shrink: 0; + justify-self: center; + transition: all 0.15s; + overflow: hidden; + background: transparent; + z-index: 1; +} +.pcr-app .pcr-swatches > button::before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('data:image/svg+xml;utf8, '); + background-size: 6px; + border-radius: .15em; + z-index: -1; +} +.pcr-app .pcr-swatches > button::after { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: var(--pcr-color); + border: 1px solid rgba(0, 0, 0, 0.05); + border-radius: 0.15em; + box-sizing: border-box; +} +.pcr-app .pcr-swatches > button:hover { + filter: brightness(1.05); +} +.pcr-app .pcr-swatches > button:not(.pcr-active) { + box-shadow: none; +} +.pcr-app .pcr-interaction { + display: flex; + flex-wrap: wrap; + align-items: center; + margin: 0 -0.2em 0 -0.2em; +} +.pcr-app .pcr-interaction > * { + margin: 0 0.2em; +} +.pcr-app .pcr-interaction input { + letter-spacing: 0.07em; + font-size: 0.75em; + text-align: center; + cursor: pointer; + color: #75797e; + background: #f1f3f4; + border-radius: .15em; + transition: all 0.15s; + padding: 0.45em 0.5em; + margin-top: 0.75em; +} +.pcr-app .pcr-interaction input:hover { + filter: brightness(0.975); +} +.pcr-app .pcr-interaction input:focus { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(66, 133, 244, 0.75); +} +.pcr-app .pcr-interaction .pcr-result { + color: #75797e; + text-align: left; + flex: 1 1 8em; + min-width: 8em; + transition: all 0.2s; + border-radius: .15em; + background: #f1f3f4; + cursor: text; +} +.pcr-app .pcr-interaction .pcr-result::-moz-selection { + background: #4285f4; + color: #fff; +} +.pcr-app .pcr-interaction .pcr-result::selection { + background: #4285f4; + color: #fff; +} +.pcr-app .pcr-interaction .pcr-type.active { + color: #fff; + background: #4285f4; +} +.pcr-app .pcr-interaction .pcr-save, +.pcr-app .pcr-interaction .pcr-cancel, +.pcr-app .pcr-interaction .pcr-clear { + color: #fff; + width: auto; +} +.pcr-app .pcr-interaction .pcr-save, +.pcr-app .pcr-interaction .pcr-cancel, +.pcr-app .pcr-interaction .pcr-clear { + color: #fff; +} +.pcr-app .pcr-interaction .pcr-save:hover, +.pcr-app .pcr-interaction .pcr-cancel:hover, +.pcr-app .pcr-interaction .pcr-clear:hover { + filter: brightness(0.925); +} +.pcr-app .pcr-interaction .pcr-save { + background: #4285f4; +} +.pcr-app .pcr-interaction .pcr-clear, +.pcr-app .pcr-interaction .pcr-cancel { + background: #f44250; +} +.pcr-app .pcr-interaction .pcr-clear:focus, +.pcr-app .pcr-interaction .pcr-cancel:focus { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(244, 66, 80, 0.75); +} +.pcr-app .pcr-selection .pcr-picker { + position: absolute; + height: 18px; + width: 18px; + border: 2px solid #fff; + border-radius: 100%; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.pcr-app .pcr-selection .pcr-color-palette, +.pcr-app .pcr-selection .pcr-color-chooser, +.pcr-app .pcr-selection .pcr-color-opacity { + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + display: flex; + flex-direction: column; + cursor: grab; + cursor: -webkit-grab; +} +.pcr-app .pcr-selection .pcr-color-palette:active, +.pcr-app .pcr-selection .pcr-color-chooser:active, +.pcr-app .pcr-selection .pcr-color-opacity:active { + cursor: grabbing; + cursor: -webkit-grabbing; +} +.pcr-app[data-theme=nano] { + width: 14.25em; + max-width: 95vw; +} +.pcr-app[data-theme=nano] .pcr-swatches { + margin-top: .6em; + padding: 0 .6em; +} +.pcr-app[data-theme=nano] .pcr-interaction { + padding: 0 .6em .6em .6em; +} +.pcr-app[data-theme=nano] .pcr-selection { + display: grid; + grid-gap: .6em; + grid-template-columns: 1fr 4fr; + grid-template-rows: 5fr auto auto; + align-items: center; + height: 10.5em; + width: 100%; + align-self: flex-start; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-preview { + grid-area: 2 / 1 / 4 / 1; + height: 100%; + width: 100%; + display: flex; + flex-direction: row; + justify-content: center; + margin-left: .6em; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-preview .pcr-last-color { + display: none; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-preview .pcr-current-color { + position: relative; + background: var(--pcr-color); + width: 2em; + height: 2em; + border-radius: 50em; + overflow: hidden; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-preview .pcr-current-color::before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('data:image/svg+xml;utf8, '); + background-size: .5em; + border-radius: .15em; + z-index: -1; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-palette { + grid-area: 1 / 1 / 2 / 3; + width: 100%; + height: 100%; + z-index: 1; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-palette .pcr-palette { + border-radius: .15em; + width: 100%; + height: 100%; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-palette .pcr-palette::before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('data:image/svg+xml;utf8, '); + background-size: .5em; + border-radius: .15em; + z-index: -1; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser { + grid-area: 2 / 2 / 2 / 2; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity { + grid-area: 3 / 2 / 3 / 2; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser, +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity { + height: 0.5em; + margin: 0 .6em; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser .pcr-picker, +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity .pcr-picker { + top: 50%; + transform: translateY(-50%); +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser .pcr-slider, +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity .pcr-slider { + flex-grow: 1; + border-radius: 50em; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser .pcr-slider { + background: linear-gradient(to right, red, #ff0, lime, cyan, blue, #f0f, red); +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity .pcr-slider { + background: linear-gradient(to right, transparent, black), url('data:image/svg+xml;utf8, '); + background-size: 100%, 0.25em; +} +.pcr-app .pcr-swatches > button { + padding: 0; +} + +/* src/css/pluginCompatibility.css */ +pre.code-styler-pre code ~ code.language-output { + display: block; + margin-bottom: 0; + padding-bottom: calc(2.5 * var(--code-padding)) !important; + padding-left: calc(var(--line-number-gutter-padding)) !important; + border-top: var(--header-separator-width) solid var(--code-styler-header-separator-colour); +} +pre.code-styler-pre.code-styler-collapsed code ~ code.language-output { + border-top-color: transparent; + border-top-width: 0; +} +pre.code-styler-pre:hover code ~ code.language-output { + margin-bottom: 0; +} +pre.code-styler-pre code ~ code.language-output input.interactive-stdin { + color: var(--text-normal); + background-color: var(--code-styler-codeblock-background-colour); + padding: 2px 8px; + border-color: var(--code-comment); + border-style: solid; + border-radius: 5px; + border-width: 1px; +} +pre.code-styler-pre code ~ code.language-output hr { + display: none; +} +pre.code-styler-pre button.run-code-button { + --copy-code-header-right-margin: 12px; + --dent-difference: 24px; + height: 14px; + margin-bottom: 6px !important; +} +pre.code-styler-pre.code-styler-collapsed button.run-code-button { + top: 500px; +} +pre.code-styler-pre button.run-code-button::before { + content: "\200b"; + display: inline-block; + width: 14px; + height: 14px; + padding-right: 4px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + vertical-align: 0px; +} +pre.code-styler-pre button.clear-button-disabled, +pre.code-styler-pre button.run-button-disabled { + display: none !important; +} +pre.code-styler-pre button.clear-button { + height: 14px; + margin-bottom: 6px !important; + margin-left: calc(var(--language-border-width) + 12px); + will-change: margin-right, clip-path; + clip-path: var(--polygon-in); +} +pre.code-styler-pre button.clear-button::before { + content: "\200b"; + display: inline-block; + width: 14px; + height: 14px; + padding-right: 4px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M16 4 6 14l1.41 1.41L15 7.83V28h2V7.83l7.59 7.58L26 14 16 4z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M16 4 6 14l1.41 1.41L15 7.83V28h2V7.83l7.59 7.58L26 14 16 4z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + vertical-align: 0px; +} +pre.code-styler-pre button.clear-button:not(:active) { + animation: reverse-indent var(--duration-button); +} +pre.code-styler-pre button.clear-button:hover { + background-color: transparent; + animation: reverse-outdent var(--duration-button); + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); +} +pre.code-styler-pre button.clear-button:active { + scale: 0.95; + transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); +} +.code-styler-pre-parent.has-run-code-button .load-state-indicator { + color: none; + background: none; + z-index: 10; +} +.code-styler-pre-parent.has-run-code-button .load-state-indicator::before { + box-shadow: none; +} +.code-styler-pre-parent.has-run-code-button .load-state-indicator svg { + color: var(--code-styler-button-colour); +} +.code-styler-pre-parent.has-run-code-button .load-state-indicator svg:hover { + color: var(--code-styler-button-active-colour); +} +.code-styler-pre-parent.has-run-code-button .load-state-indicator.visible { + transform: translateX(0); +} +.block-language-preview pre.code-styler-pre code { + white-space: unset; +} +pre.code-styler-pre span.code-block-line_num-wrap, +pre.code-styler-pre div.code-block-highlight-wrap { + display: none; +} +.markdown-source-view.mod-cm6 .cm-embed-block .code-styler-pre-parent + .edit-block-button::after { + content: "Edit Block"; + font-size: var(--font-ui-smaller); + padding-left: 4px; +} +.markdown-source-view.mod-cm6 .cm-embed-block:not(:hover) .code-styler-pre-parent + .edit-block-button { + visibility: hidden; + opacity: 0; +} +.markdown-source-view.mod-cm6 .cm-embed-block .code-styler-pre-parent + .edit-block-button { + --copy-code-header-right-margin: calc(2.2 * var(--header-button-spacing)); + --dent-difference: 0px; + --polygon-in: polygon(0 0, 18px 0, 18px 36px, 0 36px); + transition: visibility var(--duration-button), opacity var(--duration-button); + visibility: visible; + opacity: 1; + z-index: 10; + transform: translateY(-50%); + top: max(calc(0.5 * var(--container-height) * 1), calc(0.5 * var(--container-min-height) * 1)); + margin: 0; + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + will-change: margin-right, clip-path; + clip-path: var(--polygon-in); + padding: 0; +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .cm-embed-block .code-styler-pre-parent:has(pre.code-styler-pre .code-styler-header-container) + .edit-block-button, +body:not(.code-styler-show-langnames-always) .cm-embed-block .code-styler-pre-parent:not(:has(pre.code-styler-pre .code-styler-header-container-specific)):not(:has(pre.code-styler-pre .code-styler-header-container img.code-styler-icon)) + .edit-block-button, +body .cm-embed-block .code-styler-pre-parent:has(pre.code-styler-pre:not([class*="language-"]) .code-styler-header-container) + .edit-block-button { + --copy-code-header-right-margin: 4px; + top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)); +} +.markdown-source-view.mod-cm6 .cm-embed-block:hover .code-styler-pre-parent + .edit-block-button:hover { + background: transparent; + animation: reverse-outdent var(--duration-button); + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); +} +.markdown-source-view.mod-cm6 .cm-embed-block:hover .code-styler-pre-parent + .edit-block-button:active { + scale: 0.95; + transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); +} +div.block-language-include pre.code-styler-pre button.copy-code-button { + margin: 0; + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); +} +div.block-language-include pre.code-styler-pre button.copy-code-button:hover { + margin-right: var(--copy-code-header-right-margin); +} + +/* src/css/styles.css */ +body { + --border-radius: 10px; + --gradient-background-colour: transparent; + --code-padding: 8px; + --container-height: calc(var(--language-icon-size) + 2 * var(--header-inner-vertical-padding) * var(--header-font-size)); + --container-min-height: calc((var(--header-font-size) + 2 * var(--header-inner-vertical-padding) * var(--header-font-size)) * var(--line-height-normal)); + --language-border-colour: var(--code-styler-codeblock-background-colour); + --language-border-width: 0px; + --header-font-size: var(--code-size); + --header-padding: 0px; + --header-inner-vertical-padding: 0.3; + --header-spacing: 15px; + --header-button-spacing: 14px; + --header-separator-width: 2px; + --header-separator-width-padding: var(--header-separator-width); + --code-styler-header-border: none; + --collapsed-bottom-border: 0 solid transparent; + --language-icon-size: 28px; + --language-icon-filter: none; + --gradient-highlights-colour-stop: 100%; + --line-number-height-correction: 2px; + --line-number-gutter-padding: 16px; + --line-number-gutter-min-width: 32.67px; + --line-wrapping: pre-wrap; + --line-active-wrapping: var(--line-wrapping); + --code-styler-button-colour: var(--text-muted); + --code-styler-button-active-colour: white; + --duration-button: 240ms; + --dent-difference: 30px; + --polygon-in: polygon(0 0, 16px 0, 16px 36px, 0 36px); + --polygon-out: polygon(0 0, 100% 0, 100% 100%, 0 100%); + --copy-code-header-right-margin: calc(3 * var(--header-button-spacing)); + --code-styler-inline-font-weight: 400; + --code-styler-inline-border-radius: 6px; + --code-styler-inline-padding-vertical: 5px; + --code-styler-inline-padding-horizontal: 5px; + --code-styler-inline-margin-horizontal: 0px; + --code-styler-inline-colour: var(--code-normal); + --code-styler-inline-colour-active: var(--code-normal); + --code-styler-inline-background-colour: var(--code-background); +} +.setting-item.code-styler-spaced .checkbox-container + .pickr { + padding-left: 10px; +} +.code-styler-donation { + width: 70%; + margin: 0 auto; + text-align: center; +} +.code-styler-setting-text-area textarea { + width: 400px; + height: 220px; +} +/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2Nzcy9jb2RlYmxvY2tzLmNzcyIsICIuLi9zcmMvY3NzL2lubGluZUNvZGUuY3NzIiwgIi4uL3NyYy9jc3MvcGRmRXhwb3J0LmNzcyIsICIuLi9zcmMvY3NzL3BpY2tyLmNzcyIsICIuLi9zcmMvY3NzL3BsdWdpbkNvbXBhdGliaWxpdHkuY3NzIiwgIi4uL3NyYy9jc3Mvc3R5bGVzLmNzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqIFByZSBlbGVtZW50cyAqL1xuLmNvZGUtc3R5bGVyLXByZS1wYXJlbnR7XG5cdG1hcmdpbi1ib3R0b206IDE2cHg7XG59XG4uY29kZS1zdHlsZXIgcHJlLmNvZGUtc3R5bGVyLXByZSB7XG5cdGJhY2tncm91bmQ6IHZhcigtLWNvZGUtc3R5bGVyLWNvZGVibG9jay1iYWNrZ3JvdW5kLWNvbG91cikgIWltcG9ydGFudDtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cykgIWltcG9ydGFudDtcblx0bWluLWhlaWdodDogdW5zZXQ7XG5cdHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgcHJlLmNvZGUtc3R5bGVyLXByZVtjbGFzcyo9J2xhbmd1YWdlLSddIHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSwgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLWNvbG91cikgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpLCB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpIDEwMCUpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIHByZS5jb2RlLXN0eWxlci1wcmUgY29kZSB7XG5cdGRpc3BsYXk6IGdyaWQ7XG5cdGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWluLWNvbnRlbnQgYXV0bztcblx0Z3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvO1xuXHRwYWRkaW5nLXRvcDogdmFyKC0tY29kZS1wYWRkaW5nKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWJvdHRvbTogdmFyKC0tY29kZS1wYWRkaW5nKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwcHggIWltcG9ydGFudDtcblx0Ym9yZGVyLXJhZGl1czogMHB4ICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcblx0dHJhbnNpdGlvbjogbWF4LWhlaWdodCBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBwYWRkaW5nIGVhc2UtaW4tb3V0IHZhcigtLWR1cmF0aW9uLWJ1dHRvbiksIGJvcmRlci10b3AgZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0bWF4LWhlaWdodDogMDtcblx0b3ZlcmZsb3cteDogc2Nyb2xsO1xufVxuLmNvZGUtc3R5bGVyIHByZS5jb2RlLXN0eWxlci1wcmUgY29kZTpub3QoOmhhcyggPiBpbnB1dFtzdHlsZSo9XCJkaXNwbGF5OiBpbmxpbmU7XCJdKSk6YWN0aXZlIHtcblx0LS1saW5lLXdyYXBwaW5nOiB2YXIoLS1saW5lLWFjdGl2ZS13cmFwcGluZykgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCBjb2RlIHtcblx0cGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcblx0cGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlOjpiZWZvcmUsXG4uY29kZS1zdHlsZXIgcHJlLmNvZGUtc3R5bGVyLXByZTo6YWZ0ZXIge1xuXHRjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuY20tZW1iZWQtYmxvY2sgcHJlLmNvZGUtc3R5bGVyLXByZSB7XG5cdG1hcmdpbjogMWVtIDBweDtcbn1cblxuLyoqIEVkaXRpbmcgTW9kZSBCb2R5ICovXG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IFtjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luIHtcblx0Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMHB4ICFpbXBvcnRhbnQ7XG5cdGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwcHggIWltcG9ydGFudDtcblx0Ym9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIC5tYXJrZG93bi1zb3VyY2UtdmlldyBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXS5IeXBlck1ELWNvZGVibG9jay1lbmQge1xuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcblx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xufVxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cyk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKCBpbWcuY29kZS1zdHlsZXItaWNvbikpICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKFtjbGFzcyo9J2NvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctJ10pKSArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbixcbmJvZHkgLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QoW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddKSArIFtjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uSHlwZXJNRC1jb2RlYmxvY2stYmVnaW46bnRoLW9mLXR5cGUoMSkgeyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpICFpbXBvcnRhbnQ7XG5cdGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIC5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2tbY2xhc3MqPSdjb2RlLXN0eWxlci1saW5lJ10ge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWdyYWRpZW50LWJhY2tncm91bmQtY29sb3VyKSB2YXIoLS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wKSwgdHJhbnNwYXJlbnQgMTAwJSksIHZhcigtLWNvZGUtc3R5bGVyLWNvZGVibG9jay1iYWNrZ3JvdW5kLWNvbG91cikgIWltcG9ydGFudDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IHZhcigtLXNpemUtNC00KSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIC5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2tbY2xhc3MqPSdjb2RlLXN0eWxlci1saW5lJ11bY2xhc3MqPSdsYW5ndWFnZS0nXSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLWNvbG91ciksIHZhcigtLWxhbmd1YWdlLWJvcmRlci1jb2xvdXIpIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCksIHZhcigtLWdyYWRpZW50LWJhY2tncm91bmQtY29sb3VyKSB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpIHZhcigtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3ApLCB0cmFuc3BhcmVudCAxMDAlKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIC5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2tbY2xhc3MqPSdjb2RlLXN0eWxlci1saW5lJ11bY2xhc3MqPSdsYW5ndWFnZS0nXSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0bWFyZ2luLWxlZnQ6IHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCk7XG59XG5cbi8qKiBIZWFkZXIgc3R5bGluZyAqL1xuYm9keTpub3QoW2NsYXNzKj0nY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMnXSkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWMgZGl2Omhhcyg+IGltZy5jb2RlLXN0eWxlci1pY29uKSxcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIGRpdjpoYXMoPiBpbWcuY29kZS1zdHlsZXItaWNvbikge1xuXHRkaXNwbGF5OiBub25lO1xufVxuYm9keTpub3QoW2NsYXNzKj0nY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMnXSkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWMgW2NsYXNzXj1cImNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIsXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcjpub3QoOmhhcyggaW1nLmNvZGUtc3R5bGVyLWljb24pKSB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbmJvZHkgLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcjpub3QoW2NsYXNzKj0nbGFuZ3VhZ2UtJ10pLFxuYm9keSBwcmUuY29kZS1zdHlsZXItcHJlOm5vdChbY2xhc3MqPSdsYW5ndWFnZS0nXSkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIge1xuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5bY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ10ge1xuXHRmb250LXNpemU6IHZhcigtLWhlYWRlci1mb250LXNpemUpO1xuXHR1c2VyLXNlbGVjdDogbm9uZTtcblx0aGVpZ2h0OiB2YXIoLS1jb250YWluZXItaGVpZ2h0KTtcblx0bWluLWhlaWdodDogdmFyKC0tY29udGFpbmVyLW1pbi1oZWlnaHQpO1xuXHRwYWRkaW5nLXRvcDogdmFyKC0taGVhZGVyLXBhZGRpbmcpO1xuXHRtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsgIFxuXHRkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xuXHR0cmFuc2l0aW9uOiBib3JkZXItYm90dG9tIGVhc2UtaW4tb3V0IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ10ge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJhY2tncm91bmQtY29sb3VyKSAwJSx2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYmFja2dyb3VuZC1jb2xvdXIpIGNhbGMoMTAwJSAtIHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpKSwgdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLXNlcGFyYXRvci1jb2xvdXIpIGNhbGMoMTAwJSAtIHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpKSwgdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLXNlcGFyYXRvci1jb2xvdXIpIDEwMCUpIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCkgYm90dG9tLzEwMCUgYm9yZGVyLWJveCBuby1yZXBlYXQsdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLWNvbG91cikgIWltcG9ydGFudDtcblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpO1xuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRwYWRkaW5nLWJvdHRvbTogdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCk7XG5cdGJvcmRlci10b3A6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1ib3JkZXIpO1xuXHRib3JkZXItbGVmdDogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJvcmRlcik7XG5cdGJvcmRlci1yaWdodDogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJvcmRlcik7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG91cik7XG5cdGJvcmRlci1ib3R0b206IHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpIHNvbGlkIHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1zZXBhcmF0b3ItY29sb3VyKTtcbn1cbi5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddOm5vdCg6aGFzKCsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luKSkge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJhY2tncm91bmQtY29sb3VyKSAwJSx2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYmFja2dyb3VuZC1jb2xvdXIpIDEwMCUpIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCkgYm90dG9tLzEwMCUgYm9yZGVyLWJveCBuby1yZXBlYXQsdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLWNvbG91cikgIWltcG9ydGFudDtcblx0cGFkZGluZy1ib3R0b206IHZhcigtLWhlYWRlci1wYWRkaW5nKTtcblx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG5cdGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJvcmRlcik7XG5cdGJvcmRlci1ib3R0b206IHZhcigtLWNvbGxhcHNlZC1ib3R0b20tYm9yZGVyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdGJvcmRlci1ib3R0b206IHZhcigtLWNvbGxhcHNlZC1ib3R0b20tYm9yZGVyKTtcbn1cbltjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRhbGlnbi1jb250ZW50OiBjZW50ZXI7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGhlaWdodDogMTAwJTtcblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1oZWFkZXItc3BhY2luZyk7XG5cdHBhZGRpbmctcmlnaHQ6IHZhcigtLWhlYWRlci1zcGFjaW5nKTtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1oZWFkZXItc3BhY2luZyk7XG5cdHBhZGRpbmctdG9wOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdHBhZGRpbmctYm90dG9tOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdGZvbnQtc2l6ZTogaW5oZXJpdDtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cykgdmFyKC0tYm9yZGVyLXJhZGl1cykgMHB4IDBweDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy1iYWNrZ3JvdW5kLWNvbG91cik7XG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLXRleHQtY29sb3VyKTtcblx0Zm9udC13ZWlnaHQ6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctdGV4dC1ib2xkLCBub3JtYWwpO1xuXHRmb250LXN0eWxlOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLXRleHQtaXRhbGljLCBub3JtYWwpO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdHRyYW5zaXRpb246IGJvcmRlci1yYWRpdXMgZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSwgcGFkZGluZyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ106bm90KDpoYXMoKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4pKSBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSxcbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSB7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xufVxuLmNvZGUtc3R5bGVyLWhlYWRlci10ZXh0IHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0cGFkZGluZy1sZWZ0OiAwcHg7XG5cdHBhZGRpbmctdG9wOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdHBhZGRpbmctYm90dG9tOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdGZvbnQtc2l6ZTogaW5oZXJpdDtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci10ZXh0LWNvbG91cik7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItdGl0bGUtdGV4dC1ib2xkLCBub3JtYWwpO1xuXHRmb250LXN0eWxlOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItdGl0bGUtdGV4dC1pdGFsaWMsIG5vcm1hbCk7XG5cdHRyYW5zaXRpb246IHBhZGRpbmcgZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcbn1cbmJvZHk6bm90KFtjbGFzcyo9J2NvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zJ10pIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdLFxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cykgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIgW2NsYXNzXj1cImNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0sXG5ib2R5IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljOm5vdCg6aGFzKCBkaXYgPiBpbWcuY29kZS1zdHlsZXItaWNvbikpIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHsgLyo/IERlcGVuZGluZyBvbiBoZWFkZXIgdmlzaWJpbGl0eSAqL1xuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDtcbn1cbmJvZHk6bm90KFtjbGFzcyo9J2NvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zJ10pOm5vdChbY2xhc3MqPSdjb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcyddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYyAuY29kZS1zdHlsZXItaGVhZGVyLXRleHQsXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciAuY29kZS1zdHlsZXItaGVhZGVyLXRleHQsXG5ib2R5IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljOm5vdCg6aGFzKCBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy1cIl0pKSAuY29kZS1zdHlsZXItaGVhZGVyLXRleHQgeyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdHBhZGRpbmctbGVmdDogdmFyKC0taGVhZGVyLXNwYWNpbmcpO1xufVxuZGl2Omhhcyg+IGltZy5jb2RlLXN0eWxlci1pY29uKSB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0YWxpZ24tY29udGVudDogY2VudGVyO1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRwYWRkaW5nLXRvcDogY2FsYygxZW0gKiB2YXIoLS1oZWFkZXItaW5uZXItdmVydGljYWwtcGFkZGluZykpO1xuXHRwYWRkaW5nLWJvdHRvbTogY2FsYygxZW0gKiB2YXIoLS1oZWFkZXItaW5uZXItdmVydGljYWwtcGFkZGluZykpO1xuXHRwYWRkaW5nLWxlZnQ6IHZhcigtLWhlYWRlci1zcGFjaW5nKTtcblx0cGFkZGluZy1yaWdodDogdmFyKC0taGVhZGVyLXNwYWNpbmcpO1xuXHR0cmFuc2l0aW9uOiBwYWRkaW5nIGVhc2UtaW4tb3V0IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG59XG4uY29kZS1zdHlsZXItaWNvbiB7XG5cdHdpZHRoOiB2YXIoLS1sYW5ndWFnZS1pY29uLXNpemUpO1xuXHRoZWlnaHQ6IHZhcigtLWxhbmd1YWdlLWljb24tc2l6ZSk7XG5cdGZpbHRlcjogdmFyKC0tbGFuZ3VhZ2UtaWNvbi1maWx0ZXIpO1xuXHRtYXJnaW46IDAgIWltcG9ydGFudDtcblx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qKiBMaW5lcyAqL1xucHJlLmNvZGUtc3R5bGVyLXByZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLWhpZ2hsaWdodGVkJ10gPiAuY29kZS1zdHlsZXItbGluZS10ZXh0IHtcblx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1ncmFkaWVudC1iYWNrZ3JvdW5kLWNvbG91cikgMCUgdmFyKC0tZ3JhZGllbnQtaGlnaGxpZ2h0cy1jb2xvdXItc3RvcCksIHZhcigtLWNvZGUtc3R5bGVyLWNvZGVibG9jay1iYWNrZ3JvdW5kLWNvbG91cikgMTAwJSk7XG59XG4uY29kZS1zdHlsZXItbGluZS1oaWdobGlnaHRlZCB7XG5cdC0tZ3JhZGllbnQtYmFja2dyb3VuZC1jb2xvdXI6IHZhcigtLWNvZGUtc3R5bGVyLWRlZmF1bHQtaGlnaGxpZ2h0LWNvbG91cikgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQgLmNtLWFjdGl2ZSxcbi5jb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQtZWRpdG9yIC5jbS1hY3RpdmUge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHZhcigtLWNvZGUtc3R5bGVyLWFjdGl2ZS1lZGl0b3ItbGluZS1jb2xvdXIpLCB2YXIoLS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wKSwgdHJhbnNwYXJlbnQpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0IC5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2tbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXS5jbS1hY3RpdmUsXG4uY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LWNvZGVibG9jayAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uY20tYWN0aXZlIHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB2YXIoLS1jb2RlLXN0eWxlci1hY3RpdmUtY29kZWJsb2NrLWxpbmUtY29sb3VyKSwgdmFyKC0tZ3JhZGllbnQtaGlnaGxpZ2h0cy1jb2xvdXItc3RvcCksIHZhcigtLWNvZGUtc3R5bGVyLWNvZGVibG9jay1iYWNrZ3JvdW5kLWNvbG91cikpICFpbXBvcnRhbnQ7XG59XG5cbi8qKiBMaW5lIG51bWJlcnMgKi9cbi5jb2RlLXN0eWxlcjpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGluZS1udW1iZXJzKSAuY29kZS1zdHlsZXItbGluZS1udW1iZXIsXG4uY29kZS1zdHlsZXItbGluZS1udW1iZXItaGlkZSB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlID4gY29kZSA+IGRpdjpmaXJzdC1jaGlsZCA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10geyAvKj8gTWFpbnRhaW4gZ3V0dGVyIGNvbG91ciB3aGVuIHBhZGRlZCAqL1xuXHRib3gtc2hhZG93OiAwcHggY2FsYygtMSAqIHZhcigtLWNvZGUtcGFkZGluZykpIHZhcigtLWNvZGUtc3R5bGVyLWd1dHRlci1iYWNrZ3JvdW5kLWNvbG91cik7XG5cdHRyYW5zaXRpb246IGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkID4gY29kZSA+IGRpdjpmaXJzdC1jaGlsZCA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10geyAvKj8gTWFpbnRhaW4gZ3V0dGVyIGNvbG91ciB3aGVuIHBhZGRlZCAqL1xuXHRib3gtc2hhZG93OiAwcHggMHB4IHZhcigtLWNvZGUtc3R5bGVyLWd1dHRlci1iYWNrZ3JvdW5kLWNvbG91cik7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlID4gY29kZSA+IGRpdjpsYXN0LWNoaWxkID4gW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7IC8qPyBNYWludGFpbiBndXR0ZXIgY29sb3VyIHdoZW4gcGFkZGVkICovXG5cdGJveC1zaGFkb3c6IDBweCB2YXIoLS1jb2RlLXBhZGRpbmcpIHZhcigtLWNvZGUtc3R5bGVyLWd1dHRlci1iYWNrZ3JvdW5kLWNvbG91cik7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlID4gY29kZSA+IGRpdjpvbmx5LWNoaWxkID4gW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7IC8qPyBNYWludGFpbiBndXR0ZXIgY29sb3VyIHdoZW4gcGFkZGVkICovXG5cdGJveC1zaGFkb3c6IDBweCBjYWxjKC0xICogdmFyKC0tY29kZS1wYWRkaW5nKSkgdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKSwwcHggdmFyKC0tY29kZS1wYWRkaW5nKSB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItYmFja2dyb3VuZC1jb2xvdXIpO1xufVxuW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7XG5cdHBhZGRpbmctbGVmdDogY2FsYyg0cHggKyB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpKTtcblx0cGFkZGluZy1yaWdodDogOHB4O1xuXHR0ZXh0LWFsaWduOiByaWdodDtcblx0bWluLXdpZHRoOiB2YXIoLS1saW5lLW51bWJlci1ndXR0ZXItbWluLXdpZHRoKTtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcblx0Zm9udC1zaXplOiB2YXIoLS1jb2RlLXNpemUpO1xuXHRmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vc3BhY2UpO1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLXRleHQtY29sb3VyKTtcblx0dXNlci1zZWxlY3Q6IG5vbmU7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrIC5jb2RlLXN0eWxlci1saW5lLW51bWJlcixcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2sgLmNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyLXNwZWNpZmljIHtcblx0cGFkZGluZy10b3A6IHZhcigtLWxpbmUtbnVtYmVyLWhlaWdodC1jb3JyZWN0aW9uKTtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdG1pbi13aWR0aDogY2FsYyh2YXIoLS1saW5lLW51bWJlci1ndXR0ZXItbWluLXdpZHRoKSAtIDEycHgpO1xuXHRvdmVyZmxvdy14OiBhdXRvO1xuXHRkaXJlY3Rpb246IHJ0bDtcblx0bGVmdDogMDtcbn1cbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4gLmNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyLFxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiAuY29kZS1zdHlsZXItbGluZS1udW1iZXItc3BlY2lmaWMsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrLWVuZCAuY29kZS1zdHlsZXItbGluZS1udW1iZXIsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrLWVuZCAuY29kZS1zdHlsZXItbGluZS1udW1iZXItc3BlY2lmaWMge1xuXHR3aWR0aDogdmFyKC0tbGluZS1udW1iZXItZ3V0dGVyLXdpZHRoKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdGdyaWQtY29sdW1uOiAxO1xuXHRwb3NpdGlvbjogc3RpY2t5O1xuXHR0b3A6IC0xcHg7XG5cdGxlZnQ6IDA7XG5cdGJvcmRlci10b3A6IHZhcigtLWxpbmUtbnVtYmVyLWhlaWdodC1jb3JyZWN0aW9uKSBzb2xpZCB0cmFuc3BhcmVudDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgZGl2Omxhc3QtY2hpbGQgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0d2lkdGg6IHVuc2V0O1xufVxuLmNvZGUtc3R5bGVyLWd1dHRlci1oaWdobGlnaHQgcHJlLmNvZGUtc3R5bGVyLXByZSBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZS1oaWdobGlnaHRlZFwiXSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ3JhZGllbnQtYmFja2dyb3VuZC1jb2xvdXIpO1xufVxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC5jb2RlLXN0eWxlci1ndXR0ZXItaGlnaGxpZ2h0IC5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2tbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXS5jbS1hY3RpdmUgW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSxcbi5jb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWd1dHRlci1oaWdobGlnaHQgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLmNtLWFjdGl2ZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddLFxuLmNvZGUtc3R5bGVyLWd1dHRlci1oaWdobGlnaHQgW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmUtaGlnaGxpZ2h0ZWRcIl0gW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7XG5cdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMCk7XG59XG4uY29kZS1zdHlsZXItZ3V0dGVyLWFjdGl2ZS1saW5lIC5jbS1hY3RpdmUgW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXXtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWd1dHRlci1hY3RpdmUtdGV4dC1jb2xvdXIpO1xufVxuLmNvZGUtc3R5bGVyLmNvZGUtc3R5bGVyLXNob3ctbGluZS1udW1iZXJzIC5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2s6aGFzKC5jb2RlLXN0eWxlci1saW5lLW51bWJlciksXG4uY29kZS1zdHlsZXIuY29kZS1zdHlsZXItc2hvdy1saW5lLW51bWJlcnMgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jazpoYXMoLmNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyLXNwZWNpZmljKSB7XG5cdHBhZGRpbmctbGVmdDogY2FsYygxMnB4ICsgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSArIHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci13aWR0aCkgKyB2YXIoLS1saW5lLW51bWJlci1ndXR0ZXItcGFkZGluZykpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXTo6YmVmb3JlIHtcblx0Y29udGVudDogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiogTGluZSB0ZXh0ICovXG5wcmUuY29kZS1zdHlsZXItcHJlID4gY29kZSA+IGRpdltjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXSB7XG5cdGRpc3BsYXk6IGNvbnRlbnRzICFpbXBvcnRhbnQ7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIC5jb2RlLXN0eWxlci1saW5lLXRleHQge1xuXHRmbGV4LWJhc2lzOiAxMDAlO1xuXHRwYWRkaW5nLWxlZnQ6IHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1wYWRkaW5nKTtcblx0Z3JpZC1jb2x1bW46IDI7XG59XG4uSHlwZXJNRC1jb2RlYmxvY2s6aGFzKD4gLmNtLXdpZGdldEJ1ZmZlcikgeyAvKj8gUHJldmVudCBMaW5lIFdyYXBzICovXG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uSHlwZXJNRC1jb2RlYmxvY2s6aGFzKD4gLmNtLXdpZGdldEJ1ZmZlcikgPiAuY20taG1kLWNvZGVibG9jayB7IC8qPyBQcmV2ZW50IExpbmUgV3JhcHMgKi9cblx0d2hpdGUtc3BhY2U6IGJyZWFrLXNwYWNlcztcbn1cblxuLyoqIEJ1dHRvbnMgKi9cbkBrZXlmcmFtZXMgb3V0ZGVudCB7XG5cdGZyb20ge1xuXHRcdG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbikgLSB2YXIoLS1kZW50LWRpZmZlcmVuY2UpKTtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xuXHR9XG5cdHRvIHtcblx0XHRtYXJnaW4tcmlnaHQ6IHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKTtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcblx0fVxufVxuQGtleWZyYW1lcyBpbmRlbnQge1xuXHRmcm9tIHtcblx0XHRtYXJnaW4tcmlnaHQ6IHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKTtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcblx0fVxuXHR0byB7XG5cdFx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKSAtIHZhcigtLWRlbnQtZGlmZmVyZW5jZSkpO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1pbik7XG5cdH1cbn1cbkBrZXlmcmFtZXMgcmV2ZXJzZS1vdXRkZW50IHtcblx0ZnJvbSB7XG5cdFx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcblx0fVxuXHR0byB7XG5cdFx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLW91dCk7XG5cdH1cbn1cbkBrZXlmcmFtZXMgcmV2ZXJzZS1pbmRlbnQge1xuXHRmcm9tIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcblx0fVxuXHR0byB7XG5cdFx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcblx0fVxufVxuLm1hcmtkb3duLXJlbmRlcmVkIHByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uIHtcbiAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IHZhcigtLWR1cmF0aW9uLWJ1dHRvbiksIG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTtcblx0b3BhY2l0eTogMTtcblx0ZGlzcGxheTogdW5zZXQgIWltcG9ydGFudDtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1jb2xvdXIpICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG5cdGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWludGVyZmFjZSk7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZm9udC11aS1zbWFsbGVyKTtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmU6bm90KC5jb2RlLXN0eWxlci1jb2xsYXBzZWQpOm5vdCg6aG92ZXIpIGJ1dHRvbixcbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIGJ1dHRvbixcbnByZS5jb2RlLXN0eWxlci1wcmU6bm90KC5jb2RlLXN0eWxlci1jb2xsYXBzZWQpOm5vdCg6aG92ZXIpIFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTo6YWZ0ZXIge1xuXHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdG9wYWNpdHk6IDBcbn1cbltjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTo6YWZ0ZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHRvcDogMDtcblx0Ym90dG9tOiAwO1xuXHRsZWZ0OiAwO1xuXHRyaWdodDogMDtcblx0bWFyZ2luOiBhdXRvO1xuXHRtYXJnaW4tcmlnaHQ6IHZhcigtLWhlYWRlci1idXR0b24tc3BhY2luZyk7XG5cdGNvbnRlbnQ6IFwiXFwyMDBiXCI7XG5cdHdpZHRoOiAyMHB4O1xuXHRoZWlnaHQ6IDIwcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1jb2xvdXIpO1xuXHQtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInIHhtbDpzcGFjZT0ncHJlc2VydmUnJTNFJTNDcGF0aCBkPSdNMTYgMjIgNiAxMmwxLjQtMS40IDguNiA4LjYgOC42LTguNkwyNiAxMnonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicvJTNFJTNDL3N2ZyUzRVwiKTtcblx0LXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyBmaWxsPSdub25lJyBzdHJva2U9J2N1cnJlbnRDb2xvcicgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnICUzRSUzQ3BvbHlsaW5lIHBvaW50cz0nNiA5IDEyIDE1IDE4IDknLyUzRSUzQy9zdmclM0VcIik7XG5cdG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdG9wYWNpdHk6IDE7XG5cdHNjYWxlOiAwLjg7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLWJ1dHRvbikgZWFzZS1vdXQsIHZpc2liaWxpdHkgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSwgb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBzY2FsZSB2YXIoLS1kdXJhdGlvbi1idXR0b24pIGN1YmljLWJlemllcigwLjQsIDAuMTQsIDAuMywgMSk7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCBbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ106OmFmdGVyLFxuLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ106bm90KDpoYXMoKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4pKTo6YWZ0ZXIge1xuXHR0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufVxuW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddOmhvdmVyOjphZnRlciB7XG5cdHNjYWxlOiAxO1xufVxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cyk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIHByZS5jb2RlLXN0eWxlci1wcmU6aGFzKCAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcikgYnV0dG9uLmNvcHktY29kZS1idXR0b24sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSBwcmUuY29kZS1zdHlsZXItcHJlOm5vdCg6aGFzKCAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYykpOm5vdCg6aGFzKCAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciBpbWcuY29kZS1zdHlsZXItaWNvbikpIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uLFxuYm9keSBwcmUuY29kZS1zdHlsZXItcHJlOm5vdChbY2xhc3MqPSdsYW5ndWFnZS0nXSk6aGFzKC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyKSBidXR0b24uY29weS1jb2RlLWJ1dHRvbiB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0dG9wOiBjYWxjKDAuNSAqIHZhcigtLWZvbnQtdGV4dC1zaXplKSAqIDAuODc1ICogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKSkgIWltcG9ydGFudDtcblx0LS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbjogMTJweDtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLFxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcjpub3QoOmhhcyggaW1nLmNvZGUtc3R5bGVyLWljb24pKSArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbixcbmJvZHkgLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcjpub3QoOmhhcyhbY2xhc3MqPSdjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLSddKSkgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4geyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiBzcGFuLmNvZGUtYmxvY2stZmxhaXIsXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKCBpbWcuY29kZS1zdHlsZXItaWNvbikpICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luIHNwYW4uY29kZS1ibG9jay1mbGFpcixcbmJvZHkgLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcjpub3QoOmhhcyhbY2xhc3MqPSdjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLSddKSkgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4gc3Bhbi5jb2RlLWJsb2NrLWZsYWlyIHsgLyo/IERlcGVuZGluZyBvbiBoZWFkZXIgdmlzaWJpbGl0eSAqL1xuXHR0b3A6IGNhbGMoMC41ICogdmFyKC0tZm9udC10ZXh0LXNpemUpICogMC44NzUgKiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpKSAhaW1wb3J0YW50O1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiAxMnB4O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbiB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0dG9wOiBtYXgoY2FsYygwLjUgKiB2YXIoLS1jb250YWluZXItaGVpZ2h0KSAqIDEpLGNhbGMoMC41ICogdmFyKC0tY29udGFpbmVyLW1pbi1oZWlnaHQpICogMSkpICFpbXBvcnRhbnQ7XG5cdGJvdHRvbTogdW5zZXQgIWltcG9ydGFudDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNvcHktY29kZS1idXR0b24sXG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5ydW4tY29kZS1idXR0b24sIC8qPyBFeGVjdXRlIENvZGUgUGx1Z2luIENvbXBhdGliaWxpdHkgKi9cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpciB7XG5cdG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbikgLSB2YXIoLS1kZW50LWRpZmZlcmVuY2UpKTtcblx0d2lsbC1jaGFuZ2U6IG1hcmdpbi1yaWdodCwgY2xpcC1wYXRoO1xuXHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbjpub3QoOmFjdGl2ZSksXG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5ydW4tY29kZS1idXR0b246bm90KDphY3RpdmUpLCAvKj8gRXhlY3V0ZSBDb2RlIFBsdWdpbiBDb21wYXRpYmlsaXR5ICovXG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuSHlwZXJNRC1jb2RlYmxvY2suY29kZS1zdHlsZXItbGluZSBzcGFuLmNvZGUtYmxvY2stZmxhaXI6bm90KDphY3RpdmUpIHtcblx0YW5pbWF0aW9uOiBpbmRlbnQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNvcHktY29kZS1idXR0b246aG92ZXIsXG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5ydW4tY29kZS1idXR0b246aG92ZXIsIC8qPyBFeGVjdXRlIENvZGUgUGx1Z2luIENvbXBhdGliaWxpdHkgKi9cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpcjpob3Zlcntcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGFuaW1hdGlvbjogb3V0ZGVudCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xuXHRtYXJnaW4tcmlnaHQ6IHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKTtcblx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLW91dCk7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOmFjdGl2ZSxcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbjphY3RpdmUsIC8qPyBFeGVjdXRlIENvZGUgUGx1Z2luIENvbXBhdGliaWxpdHkgKi9cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpcjphY3RpdmUge1xuXHRzY2FsZTogMC45NTtcblx0dHJhbnNpdGlvbjogc2NhbGUgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSBjdWJpYy1iZXppZXIoMC40LCAwLjE0LCAwLjMsIDEpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbjo6YmVmb3JlLFxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcMjAwYlwiO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHdpZHRoOiAxNHB4O1xuXHRoZWlnaHQ6IDE0cHg7XG5cdHBhZGRpbmctcmlnaHQ6IDRweDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG5cdC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMiclM0UlM0NwYXRoIGQ9J00yOCAxMHYxOEgxMFYxMGgxOG0wLTJIMTBhMiAyIDAgMCAwLTIgMnYxOGEyIDIgMCAwIDAgMiAyaDE4YTIgMiAwIDAgMCAyLTJWMTBhMiAyIDAgMCAwLTItMlonLyUzRSUzQ3BhdGggZD0nTTQgMThIMlY0YTIgMiAwIDAgMSAyLTJoMTR2Mkg0WicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6JyBkYXRhLW5hbWU9JyZsdDtUcmFuc3BhcmVudCBSZWN0YW5nbGUmZ3Q7Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHQtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInJTNFJTNDcGF0aCBkPSdNMjggMTB2MThIMTBWMTBoMThtMC0ySDEwYTIgMiAwIDAgMC0yIDJ2MThhMiAyIDAgMCAwIDIgMmgxOGEyIDIgMCAwIDAgMi0yVjEwYTIgMiAwIDAgMC0yLTJaJy8lM0UlM0NwYXRoIGQ9J000IDE4SDJWNGEyIDIgMCAwIDEgMi0yaDE0djJINFonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicgZGF0YS1uYW1lPScmbHQ7VHJhbnNwYXJlbnQgUmVjdGFuZ2xlJmd0OycvJTNFJTNDL3N2ZyUzRVwiKTtcblx0bWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0dmVydGljYWwtYWxpZ246IDFweDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpciB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0Zm9udC1zaXplOiAwO1xuXHR0b3A6IG1pbihjYWxjKC0wLjUgKiB2YXIoLS1jb250YWluZXItaGVpZ2h0KSAqIDEuMSAtIHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpKSxjYWxjKC0wLjUgKiB2YXIoLS1jb250YWluZXItbWluLWhlaWdodCkgKiAxLjEgLSB2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKSkpICFpbXBvcnRhbnQ7XG5cdHJpZ2h0OiAwO1xuXHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdHBhZGRpbmc6IDA7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0bGluZS1oZWlnaHQ6IGluaXRpYWwgIWltcG9ydGFudDtcblx0bWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuSHlwZXJNRC1jb2RlYmxvY2suY29kZS1zdHlsZXItbGluZSBzcGFuLmNvZGUtYmxvY2stZmxhaXIgPiAqIHtcblx0d2lkdGg6IDBweDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpcjo6YmVmb3JlIHtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTtcblx0b3BhY2l0eTogMTtcblx0dmVydGljYWwtYWxpZ246IC0xcHg7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZm9udC11aS1zbWFsbGVyKTtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpcjo6YWZ0ZXIge1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRvcGFjaXR5OiAxO1xuXHRmb250LXNpemU6IHZhcigtLWZvbnQtdWktc21hbGxlcik7XG5cdGNvbnRlbnQ6ICdDb3B5Jztcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1jb2xvdXIpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLmNvZGUtc3R5bGVyLWxpbmUge1xuXHRvdmVyZmxvdzogdmlzaWJsZTtcbn1cbiIsICIvKiogSW5saW5lIENvZGUgKi9cbi5jb2RlLXN0eWxlciAuY20tcy1vYnNpZGlhbiBzcGFuLmNtLWlubGluZS1jb2RlLFxuLmNvZGUtc3R5bGVyIC5tYXJrZG93bi1yZW5kZXJlZCA6bm90KHByZSkgPiBjb2RlIHtcblx0Zm9udC13ZWlnaHQ6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1mb250LXdlaWdodCk7XG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtY29sb3VyKTtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJhY2tncm91bmQtY29sb3VyKSAhaW1wb3J0YW50O1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYm9yZGVyLXJhZGl1cykgIWltcG9ydGFudDtcblx0cGFkZGluZzogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctdmVydGljYWwpIHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1wYWRkaW5nLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG5cdG1hcmdpbjogMHB4IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1tYXJnaW4taG9yaXpvbnRhbCkgIWltcG9ydGFudDtcbn1cblxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20tZm9ybWF0dGluZy1jb2RlIHsgLyo/IFN0YW5kYWxvbmUgYmFja3RpY2tzICovXG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtY29sb3VyLWFjdGl2ZSk7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xufVxuXG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1mb3JtYXR0aW5nLWNvZGU6aGFzKCsgc3Bhbi5jbS1pbmxpbmUtY29kZTpub3QoLmNtLWZvcm1hdHRpbmctY29kZSkpIHsvKj8gRmlyc3QgYmFja3RpY2sgKi9cblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlKTtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpIDBweCAwcHggdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctaG9yaXpvbnRhbCkgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtbWFyZ2luLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5jb2RlLXN0eWxlciAuY20tcy1vYnNpZGlhbiBzcGFuLmNtLWZvcm1hdHRpbmctY29kZSArIHNwYW4uY20taW5saW5lLWNvZGU6bm90KC5jbS1mb3JtYXR0aW5nLWNvZGUpIHsgLyo/IElubmVyIGNvZGUgd2l0aCBiYWNrdGlja3MgKi9cblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlKTtcblx0Ym9yZGVyLXJhZGl1czogMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xuXHRtYXJnaW46IDBweCAwcHggIWltcG9ydGFudDtcbn1cblxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20taW5saW5lLWNvZGU6bm90KC5jbS1mb3JtYXR0aW5nLWNvZGUpICsgc3Bhbi5jbS1mb3JtYXR0aW5nLWNvZGUgey8qPyBMYXN0IGJhY2t0aWNrICovXG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtY29sb3VyLWFjdGl2ZSk7XG5cdGJvcmRlci1yYWRpdXM6IDBweCB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYm9yZGVyLXJhZGl1cykgdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpIDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy1ob3Jpem9udGFsKSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLW1hcmdpbi1ob3Jpem9udGFsKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIC5tYXJrZG93bi1yZW5kZXJlZCA6bm90KHByZSkgPiBjb2RlIGltZy5jb2RlLXN0eWxlci1pbmxpbmUtaWNvbiB7XG5cdGhlaWdodDogY2FsYyh2YXIoLS1jb2RlLXNpemUpICogMS4yKTtcblx0bWFyZ2luLWJvdHRvbTogMnB4O1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmNvZGUtc3R5bGVyIC5tYXJrZG93bi1yZW5kZXJlZCA6bm90KHByZSkgPiBjb2RlIC5jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGUge1xuXHRmb250LXdlaWdodDogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXRpdGxlLWZvbnQtd2VpZ2h0KTtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS10aXRsZS1jb2xvcik7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXJlbmRlcmVkIDpub3QocHJlKSA+IGNvZGUgLmNvZGUtc3R5bGVyLWlubGluZS10aXRsZTo6YWZ0ZXIge1xuXHRjb250ZW50OiAnXFxGRjVDJztcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS10aXRsZS1jb2xvcik7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXJlbmRlcmVkIDpub3QocHJlKSA+IGNvZGUgc3BhbjpoYXMoID4gaW1nLmNvZGUtc3R5bGVyLWlubGluZS1pY29uKSB7XG5cdHBhZGRpbmctcmlnaHQ6IDhweDtcbn1cbiIsICJkaXYucHJpbnQge1xuXHQtLWxpbmUtd3JhcHBpbmc6IHByZS13cmFwICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgZGl2LnByaW50IHByZS5jb2RlLXN0eWxlci1wcmUgY29kZSB7XG5cdG1heC1oZWlnaHQ6IHVuc2V0O1xufVxuLmNvZGUtc3R5bGVyIGRpdi5wcmludCBwcmUuY29kZS1zdHlsZXItcHJlLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCBjb2RlIHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuIiwgIi8qKiBQaWNrciAxLjguMiBNSVQgfCBodHRwczovL2dpdGh1Yi5jb20vU2ltb253ZXAvcGlja3IgKi9cbi5waWNrciB7cG9zaXRpb246IHJlbGF0aXZlO292ZXJmbG93OiB2aXNpYmxlO3RyYW5zZm9ybTogdHJhbnNsYXRlWSgwKX0gIC5waWNrciAqIHtib3gtc2l6aW5nOiBib3JkZXItYm94O291dGxpbmU6IG5vbmU7Ym9yZGVyOiBub25lO2FwcGVhcmFuY2U6IG5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lfSAgLnBpY2tyIC5wY3ItYnV0dG9uIHtwb3NpdGlvbjogcmVsYXRpdmU7aGVpZ2h0OiAyZW07d2lkdGg6IDJlbTtwYWRkaW5nOiAwLjVlbTtjdXJzb3I6IHBvaW50ZXI7Zm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBcIlJvYm90b1wiLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO2JvcmRlci1yYWRpdXM6IC4xNWVtO2JhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTAgNTBcIiBzdHJva2U9XCIlMjM0MjQ0NUFcIiBzdHJva2Utd2lkdGg9XCI1cHhcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCI+PHBhdGggZD1cIk00NSw0NUw1LDVcIj48L3BhdGg+PHBhdGggZD1cIk00NSw1TDUsNDVcIj48L3BhdGg+PC9zdmc+Jykgbm8tcmVwZWF0IGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6IDA7dHJhbnNpdGlvbjogYWxsIDAuM3N9ICAucGlja3IgLnBjci1idXR0b246OmJlZm9yZSB7cG9zaXRpb246IGFic29sdXRlO2NvbnRlbnQ6ICcnO3RvcDogMDtsZWZ0OiAwO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtiYWNrZ3JvdW5kOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIgMlwiPjxwYXRoIGZpbGw9XCJ3aGl0ZVwiIGQ9XCJNMSwwSDJWMUgxVjBaTTAsMUgxVjJIMFYxWlwiLz48cGF0aCBmaWxsPVwiZ3JheVwiIGQ9XCJNMCwwSDFWMUgwVjBaTTEsMUgyVjJIMVYxWlwiLz48L3N2Zz4nKTtiYWNrZ3JvdW5kLXNpemU6IC41ZW07Ym9yZGVyLXJhZGl1czogLjE1ZW07ei1pbmRleDogLTF9ICAucGlja3IgLnBjci1idXR0b246OmJlZm9yZSB7ei1pbmRleDogaW5pdGlhbH0gIC5waWNrciAucGNyLWJ1dHRvbjo6YWZ0ZXIge3Bvc2l0aW9uOiBhYnNvbHV0ZTtjb250ZW50OiAnJzt0b3A6IDA7bGVmdDogMDtoZWlnaHQ6IDEwMCU7d2lkdGg6IDEwMCU7dHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzO2JhY2tncm91bmQ6IHZhcigtLXBjci1jb2xvcik7Ym9yZGVyLXJhZGl1czogLjE1ZW19ICAucGlja3IgLnBjci1idXR0b24uY2xlYXIge2JhY2tncm91bmQtc2l6ZTogNzAlfSAgLnBpY2tyIC5wY3ItYnV0dG9uLmNsZWFyOjpiZWZvcmUge29wYWNpdHk6IDB9ICAucGlja3IgLnBjci1idXR0b24uY2xlYXI6Zm9jdXMge2JveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpLCAwIDAgMCAzcHggdmFyKC0tcGNyLWNvbG9yKX0gIC5waWNrciAucGNyLWJ1dHRvbi5kaXNhYmxlZCB7Y3Vyc29yOiBub3QtYWxsb3dlZH0gIC5waWNrciAqLCAucGNyLWFwcCAqIHtib3gtc2l6aW5nOiBib3JkZXItYm94O291dGxpbmU6IG5vbmU7Ym9yZGVyOiBub25lO2FwcGVhcmFuY2U6IG5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lfSAgLnBpY2tyIGlucHV0OmZvY3VzLCAucGlja3IgaW5wdXQucGNyLWFjdGl2ZSwgLnBpY2tyIGJ1dHRvbjpmb2N1cywgLnBpY2tyIGJ1dHRvbi5wY3ItYWN0aXZlLCAucGNyLWFwcCBpbnB1dDpmb2N1cywgLnBjci1hcHAgaW5wdXQucGNyLWFjdGl2ZSwgLnBjci1hcHAgYnV0dG9uOmZvY3VzLCAucGNyLWFwcCBidXR0b24ucGNyLWFjdGl2ZSB7Ym94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NSksIDAgMCAwIDNweCB2YXIoLS1wY3ItY29sb3IpfSAgLnBpY2tyIC5wY3ItcGFsZXR0ZSwgLnBpY2tyIC5wY3Itc2xpZGVyLCAucGNyLWFwcCAucGNyLXBhbGV0dGUsIC5wY3ItYXBwIC5wY3Itc2xpZGVyIHt0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuM3N9ICAucGlja3IgLnBjci1wYWxldHRlOmZvY3VzLCAucGlja3IgLnBjci1zbGlkZXI6Zm9jdXMsIC5wY3ItYXBwIC5wY3ItcGFsZXR0ZTpmb2N1cywgLnBjci1hcHAgLnBjci1zbGlkZXI6Zm9jdXMge2JveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpLCAwIDAgMCAzcHggcmdiYSgwLCAwLCAwLCAwLjI1KX0gIC5wY3ItYXBwIHtwb3NpdGlvbjogZml4ZWQ7ZGlzcGxheTogZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO3otaW5kZXg6IDEwMDAwO2JvcmRlci1yYWRpdXM6IDAuMWVtO2JhY2tncm91bmQ6ICNmZmY7b3BhY2l0eTogMDt2aXNpYmlsaXR5OiBoaWRkZW47dHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzLCB2aXNpYmlsaXR5IDBzIDAuM3M7Zm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBcIlJvYm90b1wiLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO2JveC1zaGFkb3c6IDAgMC4xNWVtIDEuNWVtIDAgcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDAgMWVtIDAgcmdiYSgwLCAwLCAwLCAwLjAzKTtsZWZ0OiAwO3RvcDogMH0gIC5wY3ItYXBwLnZpc2libGUge3RyYW5zaXRpb246IG9wYWNpdHkgMC4zczt2aXNpYmlsaXR5OiB2aXNpYmxlO29wYWNpdHk6IDF9ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzIHtkaXNwbGF5OiBmbGV4O2ZsZXgtd3JhcDogd3JhcDttYXJnaW4tdG9wOiAwLjc1ZW19ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzLnBjci1sYXN0IHttYXJnaW46IDB9ICBAc3VwcG9ydHMgKGRpc3BsYXk6IGdyaWQpIHsgIC5wY3ItYXBwIC5wY3Itc3dhdGNoZXMge2Rpc3BsYXk6IGdyaWQ7YWxpZ24taXRlbXM6IGNlbnRlcjtncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgMS43NWVtKX0gIH0gIC5wY3ItYXBwIC5wY3Itc3dhdGNoZXMgPiBidXR0b24ge2ZvbnQtc2l6ZTogMWVtO3Bvc2l0aW9uOiByZWxhdGl2ZTt3aWR0aDogY2FsYygxLjc1ZW0gLSAxMHB4KTtoZWlnaHQ6IGNhbGMoMS43NWVtIC0gMTBweCk7Ym9yZGVyLXJhZGl1czogMC4xNWVtO2N1cnNvcjogcG9pbnRlcjttYXJnaW46IDIuNXB4O2ZsZXgtc2hyaW5rOiAwO2p1c3RpZnktc2VsZjogY2VudGVyO3RyYW5zaXRpb246IGFsbCAwLjE1cztvdmVyZmxvdzogaGlkZGVuO2JhY2tncm91bmQ6IHRyYW5zcGFyZW50O3otaW5kZXg6IDF9ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzID4gYnV0dG9uOjpiZWZvcmUge3Bvc2l0aW9uOiBhYnNvbHV0ZTtjb250ZW50OiAnJzt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyIDJcIj48cGF0aCBmaWxsPVwid2hpdGVcIiBkPVwiTTEsMEgyVjFIMVYwWk0wLDFIMVYySDBWMVpcIi8+PHBhdGggZmlsbD1cImdyYXlcIiBkPVwiTTAsMEgxVjFIMFYwWk0xLDFIMlYySDFWMVpcIi8+PC9zdmc+Jyk7YmFja2dyb3VuZC1zaXplOiA2cHg7Ym9yZGVyLXJhZGl1czogLjE1ZW07ei1pbmRleDogLTF9ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzID4gYnV0dG9uOjphZnRlciB7Y29udGVudDogJyc7cG9zaXRpb246IGFic29sdXRlO3RvcDogMDtsZWZ0OiAwO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtiYWNrZ3JvdW5kOiB2YXIoLS1wY3ItY29sb3IpO2JvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNSk7Ym9yZGVyLXJhZGl1czogMC4xNWVtO2JveC1zaXppbmc6IGJvcmRlci1ib3h9ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzID4gYnV0dG9uOmhvdmVyIHtmaWx0ZXI6IGJyaWdodG5lc3MoMS4wNSl9ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzID4gYnV0dG9uOm5vdCgucGNyLWFjdGl2ZSkge2JveC1zaGFkb3c6IG5vbmV9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIHtkaXNwbGF5OiBmbGV4O2ZsZXgtd3JhcDogd3JhcDthbGlnbi1pdGVtczogY2VudGVyO21hcmdpbjogMCAtMC4yZW0gMCAtMC4yZW19ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uID4gKiB7bWFyZ2luOiAwIDAuMmVtfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiBpbnB1dCB7bGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtmb250LXNpemU6IDAuNzVlbTt0ZXh0LWFsaWduOiBjZW50ZXI7Y3Vyc29yOiBwb2ludGVyO2NvbG9yOiAjNzU3OTdlO2JhY2tncm91bmQ6ICNmMWYzZjQ7Ym9yZGVyLXJhZGl1czogLjE1ZW07dHJhbnNpdGlvbjogYWxsIDAuMTVzO3BhZGRpbmc6IDAuNDVlbSAwLjVlbTttYXJnaW4tdG9wOiAwLjc1ZW19ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIGlucHV0OmhvdmVyIHtmaWx0ZXI6IGJyaWdodG5lc3MoMC45NzUpfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiBpbnB1dDpmb2N1cyB7Ym94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NSksIDAgMCAwIDNweCByZ2JhKDY2LCAxMzMsIDI0NCwgMC43NSl9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItcmVzdWx0IHtjb2xvcjogIzc1Nzk3ZTt0ZXh0LWFsaWduOiBsZWZ0O2ZsZXg6IDEgMSA4ZW07bWluLXdpZHRoOiA4ZW07dHJhbnNpdGlvbjogYWxsIDAuMnM7Ym9yZGVyLXJhZGl1czogLjE1ZW07YmFja2dyb3VuZDogI2YxZjNmNDtjdXJzb3I6IHRleHR9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItcmVzdWx0OjotbW96LXNlbGVjdGlvbiB7YmFja2dyb3VuZDogIzQyODVmNDtjb2xvcjogI2ZmZn0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1yZXN1bHQ6OnNlbGVjdGlvbiB7YmFja2dyb3VuZDogIzQyODVmNDtjb2xvcjogI2ZmZn0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci10eXBlLmFjdGl2ZSB7Y29sb3I6ICNmZmY7YmFja2dyb3VuZDogIzQyODVmNH0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1zYXZlLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2FuY2VsLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2xlYXIge2NvbG9yOiAjZmZmO3dpZHRoOiBhdXRvfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXNhdmUsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jYW5jZWwsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jbGVhciB7Y29sb3I6ICNmZmZ9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3Itc2F2ZTpob3ZlciwgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNhbmNlbDpob3ZlciwgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNsZWFyOmhvdmVyIHtmaWx0ZXI6IGJyaWdodG5lc3MoMC45MjUpfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXNhdmUge2JhY2tncm91bmQ6ICM0Mjg1ZjR9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2xlYXIsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jYW5jZWwge2JhY2tncm91bmQ6ICNmNDQyNTB9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2xlYXI6Zm9jdXMsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jYW5jZWw6Zm9jdXMge2JveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpLCAwIDAgMCAzcHggcmdiYSgyNDQsIDY2LCA4MCwgMC43NSl9ICAucGNyLWFwcCAucGNyLXNlbGVjdGlvbiAucGNyLXBpY2tlciB7cG9zaXRpb246IGFic29sdXRlO2hlaWdodDogMThweDt3aWR0aDogMThweDtib3JkZXI6IDJweCBzb2xpZCAjZmZmO2JvcmRlci1yYWRpdXM6IDEwMCU7LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTstbW96LXVzZXItc2VsZWN0OiBub25lOy1tcy11c2VyLXNlbGVjdDogbm9uZTt1c2VyLXNlbGVjdDogbm9uZX0gIC5wY3ItYXBwIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcGFsZXR0ZSwgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1jaG9vc2VyLCAucGNyLWFwcCAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLW9wYWNpdHkge3Bvc2l0aW9uOiByZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0OiBub25lOy1tb3otdXNlci1zZWxlY3Q6IG5vbmU7LW1zLXVzZXItc2VsZWN0OiBub25lO3VzZXItc2VsZWN0OiBub25lO2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtjdXJzb3I6IGdyYWI7Y3Vyc29yOiAtd2Via2l0LWdyYWJ9ICAucGNyLWFwcCAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXBhbGV0dGU6YWN0aXZlLCAucGNyLWFwcCAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLWNob29zZXI6YWN0aXZlLCAucGNyLWFwcCAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLW9wYWNpdHk6YWN0aXZlIHtjdXJzb3I6IGdyYWJiaW5nO2N1cnNvcjogLXdlYmtpdC1ncmFiYmluZ30gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSB7d2lkdGg6IDE0LjI1ZW07bWF4LXdpZHRoOiA5NXZ3fSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc3dhdGNoZXMge21hcmdpbi10b3A6IC42ZW07cGFkZGluZzogMCAuNmVtfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3ItaW50ZXJhY3Rpb24ge3BhZGRpbmc6IDAgLjZlbSAuNmVtIC42ZW19ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24ge2Rpc3BsYXk6IGdyaWQ7Z3JpZC1nYXA6IC42ZW07Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgNGZyO2dyaWQtdGVtcGxhdGUtcm93czogNWZyIGF1dG8gYXV0bzthbGlnbi1pdGVtczogY2VudGVyO2hlaWdodDogMTAuNWVtO3dpZHRoOiAxMDAlO2FsaWduLXNlbGY6IGZsZXgtc3RhcnR9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wcmV2aWV3IHtncmlkLWFyZWE6IDIgLyAxIC8gNCAvIDE7aGVpZ2h0OiAxMDAlO3dpZHRoOiAxMDAlO2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdztqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjttYXJnaW4tbGVmdDogLjZlbX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXByZXZpZXcgLnBjci1sYXN0LWNvbG9yIHtkaXNwbGF5OiBub25lfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcHJldmlldyAucGNyLWN1cnJlbnQtY29sb3Ige3Bvc2l0aW9uOiByZWxhdGl2ZTtiYWNrZ3JvdW5kOiB2YXIoLS1wY3ItY29sb3IpO3dpZHRoOiAyZW07aGVpZ2h0OiAyZW07Ym9yZGVyLXJhZGl1czogNTBlbTtvdmVyZmxvdzogaGlkZGVufSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcHJldmlldyAucGNyLWN1cnJlbnQtY29sb3I6OmJlZm9yZSB7cG9zaXRpb246IGFic29sdXRlO2NvbnRlbnQ6ICcnO3RvcDogMDtsZWZ0OiAwO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtiYWNrZ3JvdW5kOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIgMlwiPjxwYXRoIGZpbGw9XCJ3aGl0ZVwiIGQ9XCJNMSwwSDJWMUgxVjBaTTAsMUgxVjJIMFYxWlwiLz48cGF0aCBmaWxsPVwiZ3JheVwiIGQ9XCJNMCwwSDFWMUgwVjBaTTEsMUgyVjJIMVYxWlwiLz48L3N2Zz4nKTtiYWNrZ3JvdW5kLXNpemU6IC41ZW07Ym9yZGVyLXJhZGl1czogLjE1ZW07ei1pbmRleDogLTF9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wYWxldHRlIHtncmlkLWFyZWE6IDEgLyAxIC8gMiAvIDM7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO3otaW5kZXg6IDF9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wYWxldHRlIC5wY3ItcGFsZXR0ZSB7Ym9yZGVyLXJhZGl1czogLjE1ZW07d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcGFsZXR0ZSAucGNyLXBhbGV0dGU6OmJlZm9yZSB7cG9zaXRpb246IGFic29sdXRlO2NvbnRlbnQ6ICcnO3RvcDogMDtsZWZ0OiAwO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtiYWNrZ3JvdW5kOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIgMlwiPjxwYXRoIGZpbGw9XCJ3aGl0ZVwiIGQ9XCJNMSwwSDJWMUgxVjBaTTAsMUgxVjJIMFYxWlwiLz48cGF0aCBmaWxsPVwiZ3JheVwiIGQ9XCJNMCwwSDFWMUgwVjBaTTEsMUgyVjJIMVYxWlwiLz48L3N2Zz4nKTtiYWNrZ3JvdW5kLXNpemU6IC41ZW07Ym9yZGVyLXJhZGl1czogLjE1ZW07ei1pbmRleDogLTF9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1jaG9vc2VyIHtncmlkLWFyZWE6IDIgLyAyIC8gMiAvIDJ9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5IHtncmlkLWFyZWE6IDMgLyAyIC8gMyAvIDJ9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1jaG9vc2VyLCAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5IHtoZWlnaHQ6IDAuNWVtO21hcmdpbjogMCAuNmVtfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciAucGNyLXBpY2tlciwgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3Itb3BhY2l0eSAucGNyLXBpY2tlciB7dG9wOiA1MCU7dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciAucGNyLXNsaWRlciwgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3Itb3BhY2l0eSAucGNyLXNsaWRlciB7ZmxleC1ncm93OiAxO2JvcmRlci1yYWRpdXM6IDUwZW19ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1jaG9vc2VyIC5wY3Itc2xpZGVyIHtiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJlZCwgI2ZmMCwgbGltZSwgY3lhbiwgYmx1ZSwgI2YwZiwgcmVkKX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLW9wYWNpdHkgLnBjci1zbGlkZXIge2JhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQsIGJsYWNrKSwgdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyIDJcIj48cGF0aCBmaWxsPVwid2hpdGVcIiBkPVwiTTEsMEgyVjFIMVYwWk0wLDFIMVYySDBWMVpcIi8+PHBhdGggZmlsbD1cImdyYXlcIiBkPVwiTTAsMEgxVjFIMFYwWk0xLDFIMlYySDFWMVpcIi8+PC9zdmc+Jyk7YmFja2dyb3VuZC1zaXplOiAxMDAlLCAwLjI1ZW19XG4ucGNyLWFwcCAucGNyLXN3YXRjaGVzID4gYnV0dG9uIHtcblx0cGFkZGluZzogMDtcbn1cbiIsICIvKiogRXhlY3V0ZSBDb2RlIFBsdWdpbiAqL1xucHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQge1xuXHRkaXNwbGF5OiBibG9jaztcblx0bWFyZ2luLWJvdHRvbTogMDtcblx0cGFkZGluZy1ib3R0b206IGNhbGMoMi41ICogdmFyKC0tY29kZS1wYWRkaW5nKSkgIWltcG9ydGFudDtcblx0cGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1wYWRkaW5nKSkgIWltcG9ydGFudDtcblx0Ym9yZGVyLXRvcDogdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkgc29saWQgdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLXNlcGFyYXRvci1jb2xvdXIpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgY29kZSB+IGNvZGUubGFuZ3VhZ2Utb3V0cHV0IHtcblx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci10b3Atd2lkdGg6IDA7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlOmhvdmVyIGNvZGUgfiBjb2RlLmxhbmd1YWdlLW91dHB1dCB7XG5cdG1hcmdpbi1ib3R0b206IDA7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGNvZGUgfiBjb2RlLmxhbmd1YWdlLW91dHB1dCBpbnB1dC5pbnRlcmFjdGl2ZS1zdGRpbiB7XG4gICAgY29sb3I6IHZhcigtLXRleHQtbm9ybWFsKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpO1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2RlLWNvbW1lbnQpO1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItcmFkaXVzOiA1cHg7XG5cdGJvcmRlci13aWR0aDogMXB4O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQgaHIge1xuXHRkaXNwbGF5OiBub25lO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24ucnVuLWNvZGUtYnV0dG9uIHtcblx0LS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbjogMTJweDtcblx0LS1kZW50LWRpZmZlcmVuY2U6IDI0cHg7XG5cdGhlaWdodDogMTRweDtcblx0bWFyZ2luLWJvdHRvbTogNnB4ICFpbXBvcnRhbnQ7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCBidXR0b24ucnVuLWNvZGUtYnV0dG9uIHtcblx0dG9wOiA1MDBweDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbjo6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXDIwMGJcIjtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxNHB4O1xuXHRwYWRkaW5nLXJpZ2h0OiA0cHg7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1jb2xvdXIpO1xuXHQtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInJTNFJTNDcGF0aCBkPSdNNyAyOGExIDEgMCAwIDEtMS0xVjVhMSAxIDAgMCAxIDEuNDgyLS44NzZsMjAgMTFhMSAxIDAgMCAxIDAgMS43NTJsLTIwIDExQTEgMSAwIDAgMSA3IDI4WicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6JyBkYXRhLW5hbWU9JyZsdDtUcmFuc3BhcmVudCBSZWN0YW5nbGUmZ3Q7Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHQtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInJTNFJTNDcGF0aCBkPSdNNyAyOGExIDEgMCAwIDEtMS0xVjVhMSAxIDAgMCAxIDEuNDgyLS44NzZsMjAgMTFhMSAxIDAgMCAxIDAgMS43NTJsLTIwIDExQTEgMSAwIDAgMSA3IDI4WicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6JyBkYXRhLW5hbWU9JyZsdDtUcmFuc3BhcmVudCBSZWN0YW5nbGUmZ3Q7Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHRtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogMHB4O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY2xlYXItYnV0dG9uLWRpc2FibGVkLFxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24ucnVuLWJ1dHRvbi1kaXNhYmxlZCB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNsZWFyLWJ1dHRvbiB7XG5cdGhlaWdodDogMTRweDtcblx0bWFyZ2luLWJvdHRvbTogNnB4ICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiBjYWxjKHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCkgKyAxMnB4KTtcblx0d2lsbC1jaGFuZ2U6IG1hcmdpbi1yaWdodCwgY2xpcC1wYXRoO1xuXHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY2xlYXItYnV0dG9uOjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcMjAwYlwiO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHdpZHRoOiAxNHB4O1xuXHRoZWlnaHQ6IDE0cHg7XG5cdHBhZGRpbmctcmlnaHQ6IDRweDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG5cdC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMiclM0UlM0NwYXRoIGQ9J00xNiA0IDYgMTRsMS40MSAxLjQxTDE1IDcuODNWMjhoMlY3LjgzbDcuNTkgNy41OEwyNiAxNCAxNiA0eicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6JyBkYXRhLW5hbWU9JyZsdDtUcmFuc3BhcmVudCBSZWN0YW5nbGUmZ3Q7Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHQtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInJTNFJTNDcGF0aCBkPSdNMTYgNCA2IDE0bDEuNDEgMS40MUwxNSA3LjgzVjI4aDJWNy44M2w3LjU5IDcuNThMMjYgMTQgMTYgNHonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicgZGF0YS1uYW1lPScmbHQ7VHJhbnNwYXJlbnQgUmVjdGFuZ2xlJmd0OycvJTNFJTNDL3N2ZyUzRVwiKTtcblx0bWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0dmVydGljYWwtYWxpZ246IDBweDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNsZWFyLWJ1dHRvbjpub3QoOmFjdGl2ZSkge1xuXHRhbmltYXRpb246IHJldmVyc2UtaW5kZW50IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jbGVhci1idXR0b246aG92ZXJ7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRhbmltYXRpb246IHJldmVyc2Utb3V0ZGVudCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xuXHRtYXJnaW4tcmlnaHQ6IHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKTtcblx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLW91dCk7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jbGVhci1idXR0b246YWN0aXZlIHtcblx0c2NhbGU6IDAuOTU7XG5cdHRyYW5zaXRpb246IHNjYWxlIHZhcigtLWR1cmF0aW9uLWJ1dHRvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4xNCwgMC4zLCAxKTtcbn1cbi5jb2RlLXN0eWxlci1wcmUtcGFyZW50Lmhhcy1ydW4tY29kZS1idXR0b24gLmxvYWQtc3RhdGUtaW5kaWNhdG9yIHtcblx0Y29sb3I6IG5vbmU7XG5cdGJhY2tncm91bmQ6IG5vbmU7XG5cdHotaW5kZXg6IDEwO1xufVxuLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQuaGFzLXJ1bi1jb2RlLWJ1dHRvbiAubG9hZC1zdGF0ZS1pbmRpY2F0b3I6OmJlZm9yZSB7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG59XG4uY29kZS1zdHlsZXItcHJlLXBhcmVudC5oYXMtcnVuLWNvZGUtYnV0dG9uIC5sb2FkLXN0YXRlLWluZGljYXRvciBzdmcge1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG59XG4uY29kZS1zdHlsZXItcHJlLXBhcmVudC5oYXMtcnVuLWNvZGUtYnV0dG9uIC5sb2FkLXN0YXRlLWluZGljYXRvciBzdmc6aG92ZXIge1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWFjdGl2ZS1jb2xvdXIpO1xufVxuLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQuaGFzLXJ1bi1jb2RlLWJ1dHRvbiAubG9hZC1zdGF0ZS1pbmRpY2F0b3IudmlzaWJsZSB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbn1cblxuLyoqIEVtYmVkIENvZGUgUGx1Z2luICovXG4uYmxvY2stbGFuZ3VhZ2UtcHJldmlldyBwcmUuY29kZS1zdHlsZXItcHJlIGNvZGUge1xuXHR3aGl0ZS1zcGFjZTogdW5zZXQ7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIHNwYW4uY29kZS1ibG9jay1saW5lX251bS13cmFwLFxucHJlLmNvZGUtc3R5bGVyLXByZSBkaXYuY29kZS1ibG9jay1oaWdobGlnaHQtd3JhcCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuY20tZW1iZWQtYmxvY2sgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQgKyAuZWRpdC1ibG9jay1idXR0b246OmFmdGVyIHtcblx0Y29udGVudDogJ0VkaXQgQmxvY2snO1xuXHRmb250LXNpemU6IHZhcigtLWZvbnQtdWktc21hbGxlcik7XG5cdHBhZGRpbmctbGVmdDogNHB4O1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLmNtLWVtYmVkLWJsb2NrOm5vdCg6aG92ZXIpIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50ICsgLmVkaXQtYmxvY2stYnV0dG9uIHtcblx0dmlzaWJpbGl0eTogaGlkZGVuO1xuXHRvcGFjaXR5OiAwXG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuY20tZW1iZWQtYmxvY2sgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQgKyAuZWRpdC1ibG9jay1idXR0b24ge1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiBjYWxjKDIuMiAqIHZhcigtLWhlYWRlci1idXR0b24tc3BhY2luZykpO1xuXHQtLWRlbnQtZGlmZmVyZW5jZTogMHB4O1xuXHQtLXBvbHlnb24taW46IHBvbHlnb24oMCAwLCAxOHB4IDAsIDE4cHggMzZweCwgMCAzNnB4KTtcbiAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IHZhcigtLWR1cmF0aW9uLWJ1dHRvbiksIG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTtcblx0b3BhY2l0eTogMTtcblx0ei1pbmRleDogMTA7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0dG9wOiBtYXgoY2FsYygwLjUgKiB2YXIoLS1jb250YWluZXItaGVpZ2h0KSAqIDEpLGNhbGMoMC41ICogdmFyKC0tY29udGFpbmVyLW1pbi1oZWlnaHQpICogMSkpO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbikgLSB2YXIoLS1kZW50LWRpZmZlcmVuY2UpKTtcblx0d2lsbC1jaGFuZ2U6IG1hcmdpbi1yaWdodCwgY2xpcC1wYXRoO1xuXHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xuXHRwYWRkaW5nOiAwO1xufVxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cyk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jbS1lbWJlZC1ibG9jayAuY29kZS1zdHlsZXItcHJlLXBhcmVudDpoYXMoIHByZS5jb2RlLXN0eWxlci1wcmUgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIpICsgLmVkaXQtYmxvY2stYnV0dG9uLFxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgLmNtLWVtYmVkLWJsb2NrIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50Om5vdCg6aGFzKCBwcmUuY29kZS1zdHlsZXItcHJlIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljKSk6bm90KDpoYXMoIHByZS5jb2RlLXN0eWxlci1wcmUgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIgaW1nLmNvZGUtc3R5bGVyLWljb24pKSArIC5lZGl0LWJsb2NrLWJ1dHRvbixcbmJvZHkgLmNtLWVtYmVkLWJsb2NrIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50OmhhcyggcHJlLmNvZGUtc3R5bGVyLXByZTpub3QoW2NsYXNzKj0nbGFuZ3VhZ2UtJ10pIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyKSArIC5lZGl0LWJsb2NrLWJ1dHRvbiB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0LS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbjogNHB4O1xuXHR0b3A6IGNhbGMoMC41ICogdmFyKC0tZm9udC10ZXh0LXNpemUpICogMC44NzUgKiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpKTtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5jbS1lbWJlZC1ibG9jazpob3ZlciAuY29kZS1zdHlsZXItcHJlLXBhcmVudCArIC5lZGl0LWJsb2NrLWJ1dHRvbjpob3ZlciB7XG5cdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRhbmltYXRpb246IHJldmVyc2Utb3V0ZGVudCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xuXHRtYXJnaW4tcmlnaHQ6IHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKTtcblx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLW91dCk7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuY20tZW1iZWQtYmxvY2s6aG92ZXIgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQgKyAuZWRpdC1ibG9jay1idXR0b246YWN0aXZlIHtcblx0c2NhbGU6IDAuOTU7XG5cdHRyYW5zaXRpb246IHNjYWxlIHZhcigtLWR1cmF0aW9uLWJ1dHRvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4xNCwgMC4zLCAxKTtcbn1cblxuLyoqIEZpbGUgSW5jbHVkZSBQbHVnaW4gKi9cbmRpdi5ibG9jay1sYW5ndWFnZS1pbmNsdWRlIHByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNvcHktY29kZS1idXR0b24ge1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbikgLSB2YXIoLS1kZW50LWRpZmZlcmVuY2UpKTtcbn1cbmRpdi5ibG9jay1sYW5ndWFnZS1pbmNsdWRlIHByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNvcHktY29kZS1idXR0b246aG92ZXIge1xuXHRtYXJnaW4tcmlnaHQ6IHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKTtcbn1cbiIsICIvKiogRGVmaW5lIENTUyB2YXJpYWJsZXMgKi9cbkBpbXBvcnQgXCIuL2NvZGVibG9ja3MuY3NzXCI7XG5AaW1wb3J0IFwiLi9pbmxpbmVDb2RlLmNzc1wiO1xuQGltcG9ydCBcIi4vcGRmRXhwb3J0LmNzc1wiO1xuQGltcG9ydCBcIi4vcGlja3IuY3NzXCI7XG5AaW1wb3J0IFwiLi9wbHVnaW5Db21wYXRpYmlsaXR5LmNzc1wiO1xuXG5ib2R5IHtcblx0LyogQ29kZWJsb2NrIEJvZHkgKi9cblx0LS1ib3JkZXItcmFkaXVzOiAxMHB4O1xuXHQtLWdyYWRpZW50LWJhY2tncm91bmQtY29sb3VyOiB0cmFuc3BhcmVudDtcblx0LS1jb2RlLXBhZGRpbmc6IDhweDtcblx0LS1jb250YWluZXItaGVpZ2h0OiBjYWxjKHZhcigtLWxhbmd1YWdlLWljb24tc2l6ZSkgKyAyICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpICogdmFyKC0taGVhZGVyLWZvbnQtc2l6ZSkpO1xuXHQtLWNvbnRhaW5lci1taW4taGVpZ2h0OiBjYWxjKCh2YXIoLS1oZWFkZXItZm9udC1zaXplKSArIDIgKiB2YXIoLS1oZWFkZXItaW5uZXItdmVydGljYWwtcGFkZGluZykgKiB2YXIoLS1oZWFkZXItZm9udC1zaXplKSkgKiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpKTtcblx0LS1sYW5ndWFnZS1ib3JkZXItY29sb3VyOiB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpO1xuXHQtLWxhbmd1YWdlLWJvcmRlci13aWR0aDogMHB4O1xuXG5cdC8qIEhlYWRlciAqL1xuXHQtLWhlYWRlci1mb250LXNpemU6IHZhcigtLWNvZGUtc2l6ZSk7XG5cdC0taGVhZGVyLXBhZGRpbmc6IDBweDtcblx0LS1oZWFkZXItaW5uZXItdmVydGljYWwtcGFkZGluZzogMC4zO1xuXHQtLWhlYWRlci1zcGFjaW5nOiAxNXB4O1xuXHQtLWhlYWRlci1idXR0b24tc3BhY2luZzogMTRweDtcblx0LS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoOiAycHg7XG5cdC0taGVhZGVyLXNlcGFyYXRvci13aWR0aC1wYWRkaW5nOiB2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKTtcblx0LS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyOiBub25lO1xuXHQtLWNvbGxhcHNlZC1ib3R0b20tYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXHQtLWxhbmd1YWdlLWljb24tc2l6ZTogMjhweDtcblx0LS1sYW5ndWFnZS1pY29uLWZpbHRlcjogbm9uZTtcblxuXHQvKiBMaW5lcyAqL1xuXHQtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3A6IDEwMCU7XG5cblx0LyogTGluZSBOdW1iZXJzICovXG5cdC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb246IDJweDtcblx0LS1saW5lLW51bWJlci1ndXR0ZXItcGFkZGluZzogMTZweDtcblx0LS1saW5lLW51bWJlci1ndXR0ZXItbWluLXdpZHRoOiAzMi42N3B4O1xuXG5cdC8qIExpbmUgVGV4dCAqL1xuXHQtLWxpbmUtd3JhcHBpbmc6IHByZS13cmFwO1xuXHQtLWxpbmUtYWN0aXZlLXdyYXBwaW5nOiB2YXIoLS1saW5lLXdyYXBwaW5nKTtcblxuXHQvKiBCdXR0b25zICovXG5cdC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cjogdmFyKC0tdGV4dC1tdXRlZCk7XG5cdC0tY29kZS1zdHlsZXItYnV0dG9uLWFjdGl2ZS1jb2xvdXI6IHdoaXRlO1xuXHQtLWR1cmF0aW9uLWJ1dHRvbjogMjQwbXM7XG5cdC0tZGVudC1kaWZmZXJlbmNlOiAzMHB4O1xuXHQtLXBvbHlnb24taW46IHBvbHlnb24oMCAwLCAxNnB4IDAsIDE2cHggMzZweCwgMCAzNnB4KTtcblx0LS1wb2x5Z29uLW91dDogcG9seWdvbigwIDAsIDEwMCUgMCwgMTAwJSAxMDAlLCAwIDEwMCUpO1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiBjYWxjKDMgKiB2YXIoLS1oZWFkZXItYnV0dG9uLXNwYWNpbmcpKTtcblxuXHQvKiBJbmxpbmUgQ29kZSAqL1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1mb250LXdlaWdodDogNDAwO1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzOiA2cHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctdmVydGljYWw6IDVweDtcblx0LS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy1ob3Jpem9udGFsOiA1cHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLW1hcmdpbi1ob3Jpem9udGFsOiAwcHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLWNvbG91cjogdmFyKC0tY29kZS1ub3JtYWwpO1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlOiB2YXIoLS1jb2RlLW5vcm1hbCk7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLWJhY2tncm91bmQtY29sb3VyOiB2YXIoLS1jb2RlLWJhY2tncm91bmQpO1xufVxuXG4vKiogU2V0dGluZ3MgKi9cbi5zZXR0aW5nLWl0ZW0uY29kZS1zdHlsZXItc3BhY2VkIC5jaGVja2JveC1jb250YWluZXIgKyAucGlja3Ige1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG4uY29kZS1zdHlsZXItZG9uYXRpb24ge1xuXHR3aWR0aDogNzAlO1xuXHRtYXJnaW46IDAgYXV0bztcblx0dGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmNvZGUtc3R5bGVyLXNldHRpbmctdGV4dC1hcmVhIHRleHRhcmVhIHtcblx0d2lkdGg6IDQwMHB4O1xuXHRoZWlnaHQ6IDIyMHB4O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUlEO0FBQ0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFJRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBSUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFBQTtBQUlDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBSUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUlEO0FBQUE7QUFFRTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBR0Y7QUFBQTtBQUVFO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFHRjtBQUFBO0FBRUU7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBR0Y7QUFBQTtBQUVFO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdGO0FBQ0k7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDRztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFSjtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTs7O0FDbmVEO0FBQUE7QUFFQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdEO0FBQ0M7QUFDQTtBQUFBO0FBR0Q7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0Q7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBOzs7QUN2REQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBOzs7QUNORDtBQUFRO0FBQW1CO0FBQWtCO0FBQUE7QUFBMkI7QUFBVTtBQUF1QjtBQUFjO0FBQWE7QUFBaUI7QUFBQTtBQUEyQjtBQUFvQjtBQUFtQjtBQUFZO0FBQVc7QUFBZTtBQUFnQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBHO0FBQXFCO0FBQXFQO0FBQW1CO0FBQUE7QUFBdUI7QUFBNEI7QUFBbUI7QUFBWTtBQUFPO0FBQVE7QUFBWTtBQUFhO0FBQWtOO0FBQXNCO0FBQXFCO0FBQUE7QUFBYztBQUE0QjtBQUFBO0FBQW1CO0FBQTJCO0FBQW1CO0FBQVk7QUFBTztBQUFRO0FBQWE7QUFBWTtBQUE0QjtBQUE2QjtBQUFBO0FBQXVCO0FBQTBCO0FBQUE7QUFBdUI7QUFBa0M7QUFBQTtBQUFhO0FBQWdDO0FBQUE7QUFBOEU7QUFBNkI7QUFBQTtBQUFzQjtBQUFBO0FBQXNCO0FBQXVCO0FBQWM7QUFBYTtBQUFpQjtBQUFBO0FBQTJCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBZ007QUFBQTtBQUE4RTtBQUFBO0FBQUE7QUFBQTtBQUFzRjtBQUFBO0FBQThCO0FBQUE7QUFBQTtBQUFBO0FBQThHO0FBQUE7QUFBaUY7QUFBVTtBQUFnQjtBQUFjO0FBQXVCO0FBQWU7QUFBcUI7QUFBaUI7QUFBVztBQUFtQjtBQUE2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBHO0FBQStFO0FBQVE7QUFBQTtBQUFTO0FBQWtCO0FBQXlCO0FBQW9CO0FBQUE7QUFBYTtBQUF3QjtBQUFjO0FBQWdCO0FBQUE7QUFBcUI7QUFBaUM7QUFBQTtBQUFZO0FBQTZCO0FBQXdCO0FBQWM7QUFBb0I7QUFBQTtBQUFBO0FBQXFEO0FBQWlDO0FBQWU7QUFBbUI7QUFBMkI7QUFBNEI7QUFBc0I7QUFBZ0I7QUFBYztBQUFlO0FBQXFCO0FBQXNCO0FBQWlCO0FBQXdCO0FBQUE7QUFBYTtBQUF5QztBQUFtQjtBQUFZO0FBQU87QUFBUTtBQUFZO0FBQWE7QUFBa047QUFBcUI7QUFBcUI7QUFBQTtBQUFjO0FBQXdDO0FBQVk7QUFBbUI7QUFBTztBQUFRO0FBQVk7QUFBYTtBQUE2QjtBQUFzQztBQUFzQjtBQUFBO0FBQXlCO0FBQXVDO0FBQUE7QUFBMkI7QUFBa0Q7QUFBQTtBQUFtQjtBQUEyQjtBQUFjO0FBQWdCO0FBQW9CO0FBQUE7QUFBNEI7QUFBK0I7QUFBQTtBQUFrQjtBQUFpQztBQUF1QjtBQUFrQjtBQUFtQjtBQUFnQjtBQUFlO0FBQW9CO0FBQXFCO0FBQXNCO0FBQXNCO0FBQUE7QUFBcUI7QUFBdUM7QUFBQTtBQUE0QjtBQUF1QztBQUFBO0FBQXNGO0FBQXVDO0FBQWU7QUFBaUI7QUFBYztBQUFlO0FBQXFCO0FBQXFCO0FBQW9CO0FBQUE7QUFBZTtBQUF1RDtBQUFvQjtBQUFBO0FBQWM7QUFBa0Q7QUFBb0I7QUFBQTtBQUFjO0FBQTRDO0FBQVk7QUFBQTtBQUFzQjtBQUFBO0FBQUE7QUFBa0g7QUFBWTtBQUFBO0FBQWM7QUFBQTtBQUFBO0FBQWtIO0FBQUE7QUFBYztBQUFBO0FBQUE7QUFBb0k7QUFBQTtBQUE0QjtBQUFxQztBQUFBO0FBQXNCO0FBQUE7QUFBNkU7QUFBQTtBQUFzQjtBQUFBO0FBQXlGO0FBQUE7QUFBcUY7QUFBcUM7QUFBbUI7QUFBYTtBQUFZO0FBQXVCO0FBQW9CO0FBQTBCO0FBQXVCO0FBQXNCO0FBQUE7QUFBb0I7QUFBQTtBQUFBO0FBQW9JO0FBQW1CO0FBQTBCO0FBQXVCO0FBQXNCO0FBQWtCO0FBQWM7QUFBdUI7QUFBYTtBQUFBO0FBQXVCO0FBQUE7QUFBQTtBQUF5SjtBQUFpQjtBQUFBO0FBQTJCO0FBQTZCO0FBQWU7QUFBQTtBQUFrQjtBQUEyQztBQUFpQjtBQUFBO0FBQWtCO0FBQThDO0FBQUE7QUFBNEI7QUFBNEM7QUFBYztBQUFlO0FBQStCO0FBQWtDO0FBQW9CO0FBQWU7QUFBWTtBQUFBO0FBQXlCO0FBQStEO0FBQXlCO0FBQWE7QUFBWTtBQUFjO0FBQW9CO0FBQXdCO0FBQUE7QUFBb0I7QUFBK0U7QUFBQTtBQUFnQjtBQUFrRjtBQUFtQjtBQUE2QjtBQUFXO0FBQVk7QUFBb0I7QUFBQTtBQUFtQjtBQUEwRjtBQUFtQjtBQUFZO0FBQU87QUFBUTtBQUFZO0FBQWE7QUFBa047QUFBc0I7QUFBcUI7QUFBQTtBQUFjO0FBQStEO0FBQXlCO0FBQVk7QUFBYTtBQUFBO0FBQWE7QUFBNEU7QUFBcUI7QUFBWTtBQUFBO0FBQWU7QUFBb0Y7QUFBbUI7QUFBWTtBQUFPO0FBQVE7QUFBWTtBQUFhO0FBQWtOO0FBQXNCO0FBQXFCO0FBQUE7QUFBYztBQUErRDtBQUFBO0FBQTJCO0FBQStEO0FBQUE7QUFBMkI7QUFBQTtBQUE4SDtBQUFjO0FBQUE7QUFBaUI7QUFBQTtBQUFzSjtBQUFTO0FBQUE7QUFBOEI7QUFBQTtBQUFzSjtBQUFhO0FBQUE7QUFBc0I7QUFBMkU7QUFBQTtBQUFnRjtBQUEyRTtBQUFpUTtBQUFBO0FBQ2w4UztBQUNDO0FBQUE7OztBQ0ZEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0g7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUlEO0FBQ0M7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUlEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBOzs7QUN6SkQ7QUFFQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUlEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K */ diff --git a/esbuild.config.mjs b/esbuild.config.mjs index be2cafe..ae6a744 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -15,7 +15,10 @@ const context = await esbuild.context({ banner: { js: banner, }, - entryPoints: ["src/main.ts"], + entryPoints: [ + "src/main.ts", + "src/styles.css", + ], bundle: true, external: [ "obsidian", @@ -37,7 +40,7 @@ const context = await esbuild.context({ logLevel: "info", sourcemap: prod ? false : "inline", treeShaking: true, - outfile: "main.js", + outdir: "./", }); if (prod) { @@ -45,4 +48,4 @@ if (prod) { process.exit(0); } else { await context.watch(); -} \ No newline at end of file +} diff --git a/src/css/codeblocks.css b/src/css/codeblocks.css new file mode 100644 index 0000000..9898cab --- /dev/null +++ b/src/css/codeblocks.css @@ -0,0 +1,486 @@ +/** Pre elements */ +.code-styler-pre-parent{ + margin-bottom: 16px; +} +.code-styler pre.code-styler-pre { + background: var(--code-styler-codeblock-background-colour) !important; + border-radius: var(--border-radius) !important; + min-height: unset; + padding: 0px !important; + overflow: hidden !important; +} +.code-styler pre.code-styler-pre[class*='language-'] { + background: linear-gradient(90deg, var(--language-border-colour), var(--language-border-colour) var(--language-border-width), var(--code-styler-codeblock-background-colour) var(--language-border-width), var(--code-styler-codeblock-background-colour) 100%) !important; + padding-left: var(--language-border-width) !important; +} +.code-styler pre.code-styler-pre code { + display: grid; + grid-template-columns: min-content auto; + grid-template-rows: auto; + padding-top: var(--code-padding) !important; + padding-bottom: var(--code-padding) !important; + padding-left: 0px !important; + padding-right: 0px !important; + border-radius: 0px !important; + background: none !important; + transition: max-height ease-in-out var(--duration-button), padding ease-in-out var(--duration-button), border-top ease-in-out var(--duration-button); + max-height: 0; + overflow-x: scroll; +} +.code-styler pre.code-styler-pre code:not(:has( > input[style*="display: inline;"])):active { + --line-wrapping: var(--line-active-wrapping) !important; +} +.code-styler pre.code-styler-pre.code-styler-collapsed code { + padding-top: 0 !important; + padding-bottom: 0 !important; +} +.code-styler pre.code-styler-pre::before, +.code-styler pre.code-styler-pre::after { + content: none !important; +} +.markdown-source-view.mod-cm6 .cm-embed-block pre.code-styler-pre { + margin: 1em 0px; +} + +/** Editing Mode Body */ +.code-styler .markdown-source-view [class*="code-styler-line"].HyperMD-codeblock-begin { + border-top-left-radius: 0px !important; + border-top-right-radius: 0px !important; + border-top: none !important; +} +.code-styler .markdown-source-view [class*="code-styler-line"].HyperMD-codeblock-end { + border-bottom-left-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container + .HyperMD-codeblock-begin, +body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has( img.code-styler-icon)) + .HyperMD-codeblock-begin, +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*='code-styler-header-language-tag-'])) + .HyperMD-codeblock-begin, +body .markdown-source-view :not([class^='code-styler-header-container']) + [class*="code-styler-line"].HyperMD-codeblock-begin, +body .markdown-source-view [class*="code-styler-line"].HyperMD-codeblock-begin:nth-of-type(1) { /*? Depending on header visibility */ + border-top-left-radius: var(--border-radius) !important; + border-top-right-radius: var(--border-radius) !important; +} +.code-styler .markdown-source-view .HyperMD-codeblock[class*='code-styler-line'] { + background: linear-gradient(90deg, var(--gradient-background-colour) var(--gradient-highlights-colour-stop), transparent 100%), var(--code-styler-codeblock-background-colour) !important; + overflow: hidden; + padding: 0 !important; + padding-left: var(--size-4-4) !important; +} +.code-styler .markdown-source-view .HyperMD-codeblock[class*='code-styler-line'][class*='language-'] { + background: linear-gradient(90deg, var(--language-border-colour), var(--language-border-colour) var(--language-border-width), var(--gradient-background-colour) var(--language-border-width) var(--gradient-highlights-colour-stop), transparent 100%), var(--code-styler-codeblock-background-colour) !important; +} +.code-styler .markdown-source-view .HyperMD-codeblock[class*='code-styler-line'][class*='language-'] [class^='code-styler-line-number'] { + margin-left: var(--language-border-width); +} + +/** Header styling */ +body:not([class*='code-styler-show-langicons']) .code-styler-header-container-specific div:has(> img.code-styler-icon), +body:not(.code-styler-show-langicons-always) .code-styler-header-container div:has(> img.code-styler-icon) { + display: none; +} +body:not([class*='code-styler-show-langnames']) .code-styler-header-container-specific [class^="code-styler-header-language-tag"], +body:not(.code-styler-show-langnames-always) .code-styler-header-container [class^="code-styler-header-language-tag"] { + display: none; +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .code-styler-header-container, +body:not(.code-styler-show-langnames-always) .code-styler-header-container:not(:has( img.code-styler-icon)) { + display: none !important; +} +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not([class*='language-']), +body pre.code-styler-pre:not([class*='language-']) .code-styler-header-container { + display: none !important; +} +[class^='code-styler-header-container'] { + font-size: var(--header-font-size); + user-select: none; + height: var(--container-height); + min-height: var(--container-min-height); + padding-top: var(--header-padding); + margin-top: 0px !important; + display: flex !important; + overflow: visible; + transition: border-bottom ease-in-out var(--duration-button); + box-sizing: content-box; +} +.markdown-source-view :not(pre.code-styler-pre) > [class^='code-styler-header-container'] { + background: linear-gradient(var(--code-styler-header-background-colour) 0%,var(--code-styler-header-background-colour) calc(100% - var(--header-separator-width)), var(--code-styler-header-separator-colour) calc(100% - var(--header-separator-width)), var(--code-styler-header-separator-colour) 100%) var(--language-border-width) bottom/100% border-box no-repeat,var(--language-border-colour) !important; + padding-left: var(--language-border-width); + border-top-left-radius: var(--border-radius); + border-top-right-radius: var(--border-radius); + padding-bottom: var(--header-separator-width); + border-top: var(--code-styler-header-border); + border-left: var(--code-styler-header-border); + border-right: var(--code-styler-header-border); +} +pre.code-styler-pre [class^='code-styler-header-container'] { + background-color: var(--code-styler-header-background-colour); + border-bottom: var(--header-separator-width) solid var(--code-styler-header-separator-colour); +} +.markdown-source-view :not(pre.code-styler-pre) > [class^='code-styler-header-container']:not(:has(+ .HyperMD-codeblock-begin)) { + background: linear-gradient(var(--code-styler-header-background-colour) 0%,var(--code-styler-header-background-colour) 100%) var(--language-border-width) bottom/100% border-box no-repeat,var(--language-border-colour) !important; + padding-bottom: var(--header-padding); + border-bottom-left-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); + border-bottom: var(--code-styler-header-border); + border-bottom: var(--collapsed-bottom-border); +} +pre.code-styler-pre.code-styler-collapsed [class^='code-styler-header-container'] { + border-bottom: var(--collapsed-bottom-border); +} +[class^='code-styler-header-container'] [class^="code-styler-header-language-tag"] { + display: flex; + justify-content: center; + align-content: center; + flex-direction: column; + height: 100%; + padding-left: var(--header-spacing); + padding-right: var(--header-spacing); + margin-right: var(--header-spacing); + padding-top: calc(1em * var(--header-inner-vertical-padding)); + padding-bottom: calc(1em * var(--header-inner-vertical-padding)); + font-size: inherit; + border-radius: var(--border-radius) var(--border-radius) 0px 0px; + background-color: var(--code-styler-header-language-tag-background-colour); + color: var(--code-styler-header-language-tag-text-colour); + font-weight: var(--code-styler-header-language-tag-text-bold, normal); + font-style: var(--code-styler-header-language-tag-text-italic, normal); + text-align: center; + transition: border-radius ease-in-out var(--duration-button), padding ease-in-out var(--duration-button); +} +.markdown-source-view :not(pre.code-styler-pre) > [class^='code-styler-header-container']:not(:has(+ .HyperMD-codeblock-begin)) [class^="code-styler-header-language-tag"], +pre.code-styler-pre.code-styler-collapsed [class^='code-styler-header-container'] [class^="code-styler-header-language-tag"] { + border-radius: var(--border-radius); +} +.code-styler-header-text { + display: flex; + justify-content: center; + align-content: center; + flex-direction: column; + padding-left: 0px; + padding-top: calc(1em * var(--header-inner-vertical-padding)); + padding-bottom: calc(1em * var(--header-inner-vertical-padding)); + font-size: inherit; + color: var(--code-styler-header-text-colour); + font-weight: var(--code-styler-header-title-text-bold, normal); + font-style: var(--code-styler-header-title-text-italic, normal); + transition: padding ease-in-out var(--duration-button); +} +body:not([class*='code-styler-show-langicons']) .code-styler-header-container-specific [class^="code-styler-header-language-tag"], +body:not(.code-styler-show-langicons-always) .code-styler-header-container [class^="code-styler-header-language-tag"], +body .code-styler-header-container-specific:not(:has( div > img.code-styler-icon)) [class^="code-styler-header-language-tag"] { /*? Depending on header visibility */ + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +body:not([class*='code-styler-show-langicons']):not([class*='code-styler-show-langnames']) .code-styler-header-container-specific .code-styler-header-text, +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames) .code-styler-header-container .code-styler-header-text, +body .code-styler-header-container-specific:not(:has( [class^="code-styler-header-language-tag-"])) .code-styler-header-text { /*? Depending on header visibility */ + padding-left: var(--header-spacing); +} +div:has(> img.code-styler-icon) { + display: inline-flex; + justify-content: center; + align-content: center; + flex-direction: column; + padding-top: calc(1em * var(--header-inner-vertical-padding)); + padding-bottom: calc(1em * var(--header-inner-vertical-padding)); + padding-left: var(--header-spacing); + padding-right: var(--header-spacing); + transition: padding ease-in-out var(--duration-button); +} +.code-styler-icon { + width: var(--language-icon-size); + height: var(--language-icon-size); + filter: var(--language-icon-filter); + margin: 0 !important; + border: none !important; +} + +/** Lines */ +pre.code-styler-pre [class^='code-styler-line-highlighted'] > .code-styler-line-text { + background-image: linear-gradient(90deg, var(--gradient-background-colour) 0% var(--gradient-highlights-colour-stop), var(--code-styler-codeblock-background-colour) 100%); +} +.code-styler-line-highlighted { + --gradient-background-colour: var(--code-styler-default-highlight-colour) !important; +} +.code-styler-active-line-highlight .cm-active, +.code-styler-active-line-highlight-editor .cm-active { + background: linear-gradient(to right, var(--code-styler-active-editor-line-colour), var(--gradient-highlights-colour-stop), transparent) !important; +} +.code-styler-active-line-highlight .markdown-source-view .HyperMD-codeblock[class*="code-styler-line"].cm-active, +.code-styler-active-line-highlight-codeblock .markdown-source-view .HyperMD-codeblock[class*="code-styler-line"].cm-active { + background: linear-gradient(to right, var(--code-styler-active-codeblock-line-colour), var(--gradient-highlights-colour-stop), var(--code-styler-codeblock-background-colour)) !important; +} + +/** Line numbers */ +.code-styler:not(.code-styler-show-line-numbers) .code-styler-line-number, +.code-styler-line-number-hide { + display: none; +} +pre.code-styler-pre > code > div:first-child > [class^='code-styler-line-number'] { /*? Maintain gutter colour when padded */ + box-shadow: 0px calc(-1 * var(--code-padding)) var(--code-styler-gutter-background-colour); + transition: box-shadow ease-in-out var(--duration-button); +} +pre.code-styler-pre.code-styler-collapsed > code > div:first-child > [class^='code-styler-line-number'] { /*? Maintain gutter colour when padded */ + box-shadow: 0px 0px var(--code-styler-gutter-background-colour); +} +pre.code-styler-pre > code > div:last-child > [class^='code-styler-line-number'] { /*? Maintain gutter colour when padded */ + box-shadow: 0px var(--code-padding) var(--code-styler-gutter-background-colour); +} +pre.code-styler-pre > code > div:only-child > [class^='code-styler-line-number'] { /*? Maintain gutter colour when padded */ + box-shadow: 0px calc(-1 * var(--code-padding)) var(--code-styler-gutter-background-colour),0px var(--code-padding) var(--code-styler-gutter-background-colour); +} +[class^='code-styler-line-number'] { + padding-left: calc(4px + var(--language-border-width)); + padding-right: 8px; + text-align: right; + min-width: var(--line-number-gutter-min-width); + background-color: var(--code-styler-gutter-background-colour); + font-size: var(--code-size); + font-family: var(--font-monospace); + color: var(--code-styler-gutter-text-colour); + user-select: none; +} +.markdown-source-view .HyperMD-codeblock .code-styler-line-number, +.markdown-source-view .HyperMD-codeblock .code-styler-line-number-specific { + padding-top: var(--line-number-height-correction); + position: absolute; + box-sizing: content-box; + display: inline-block; + height: 100%; + min-width: calc(var(--line-number-gutter-min-width) - 12px); + overflow-x: auto; + direction: rtl; + left: 0; +} +.markdown-source-view .HyperMD-codeblock-begin .code-styler-line-number, +.markdown-source-view .HyperMD-codeblock-begin .code-styler-line-number-specific, +.markdown-source-view .HyperMD-codeblock-end .code-styler-line-number, +.markdown-source-view .HyperMD-codeblock-end .code-styler-line-number-specific { + width: var(--line-number-gutter-width); +} +pre.code-styler-pre [class^='code-styler-line-number'] { + white-space: nowrap; + grid-column: 1; + position: sticky; + top: -1px; + left: 0; + border-top: var(--line-number-height-correction) solid transparent; +} +pre.code-styler-pre div:last-child > [class^='code-styler-line-number'] { + width: unset; +} +.code-styler-gutter-highlight pre.code-styler-pre [class*="code-styler-line-highlighted"] [class^='code-styler-line-number'] { + background-color: var(--gradient-background-colour); +} +.code-styler-active-line-highlight.code-styler-gutter-highlight .markdown-source-view .HyperMD-codeblock[class*="code-styler-line"].cm-active [class^='code-styler-line-number'], +.code-styler-active-line-highlight-codeblock.code-styler-gutter-highlight .markdown-source-view .HyperMD-codeblock[class*="code-styler-line"].cm-active [class^='code-styler-line-number'], +.code-styler-gutter-highlight [class*="code-styler-line-highlighted"] [class^='code-styler-line-number'] { + background-color: rgba(0,0,0,0); +} +.code-styler-gutter-active-line .cm-active [class^='code-styler-line-number']{ + color: var(--code-styler-gutter-active-text-colour); +} +.code-styler.code-styler-show-line-numbers .markdown-source-view .HyperMD-codeblock:has(.code-styler-line-number), +.code-styler.code-styler-show-line-numbers .markdown-source-view .HyperMD-codeblock:has(.code-styler-line-number-specific) { + padding-left: calc(12px + var(--language-border-width) + var(--line-number-gutter-width) + var(--line-number-gutter-padding)) !important; +} +.code-styler .markdown-source-view .HyperMD-codeblock[class*='code-styler-line']::before { + content: none !important; +} + +/** Line text */ +pre.code-styler-pre > code > div[class*='code-styler-line'] { + display: contents !important; +} +pre.code-styler-pre .code-styler-line-text { + flex-basis: 100%; + padding-left: var(--line-number-gutter-padding); + grid-column: 2; +} +.HyperMD-codeblock:has(> .cm-widgetBuffer) { /*? Prevent Line Wraps */ + white-space: nowrap; +} +.HyperMD-codeblock:has(> .cm-widgetBuffer) > .cm-hmd-codeblock { /*? Prevent Line Wraps */ + white-space: break-spaces; +} + +/** Buttons */ +@keyframes outdent { + from { + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + clip-path: var(--polygon-in); + } + to { + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); + } +} +@keyframes indent { + from { + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); + } + to { + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + clip-path: var(--polygon-in); + } +} +@keyframes reverse-outdent { + from { + clip-path: var(--polygon-in); + } + to { + clip-path: var(--polygon-out); + } +} +@keyframes reverse-indent { + from { + clip-path: var(--polygon-out); + } + to { + clip-path: var(--polygon-in); + } +} +.markdown-rendered pre.code-styler-pre button { + transition: visibility var(--duration-button), opacity var(--duration-button); + visibility: visible; + opacity: 1; + display: unset !important; + color: var(--code-styler-button-colour) !important; + background: transparent !important; + box-shadow: none; + font-family: var(--font-interface); + font-size: var(--font-ui-smaller); + margin: 0; + padding: 0 !important; + border: none !important; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +pre.code-styler-pre:not(.code-styler-collapsed):not(:hover) button, +pre.code-styler-pre.code-styler-collapsed button, +pre.code-styler-pre:not(.code-styler-collapsed):not(:hover) [class^='code-styler-header-container']::after { + visibility: hidden; + opacity: 0 +} +[class^='code-styler-header-container']::after { + position: relative; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + margin-right: var(--header-button-spacing); + content: "\200b"; + width: 20px; + height: 20px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' xml:space='preserve'%3E%3Cpath d='M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + visibility: visible; + opacity: 1; + scale: 0.8; + transition: transform var(--duration-button) ease-out, visibility var(--duration-button), opacity var(--duration-button), scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); +} +pre.code-styler-pre.code-styler-collapsed [class^='code-styler-header-container']::after, +.markdown-source-view :not(pre.code-styler-pre) > [class^='code-styler-header-container']:not(:has(+ .HyperMD-codeblock-begin))::after { + transform: rotate(-90deg); +} +[class^='code-styler-header-container']:hover::after { + scale: 1; +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) pre.code-styler-pre:has( .code-styler-header-container) button.copy-code-button, +body:not(.code-styler-show-langnames-always) pre.code-styler-pre:not(:has( .code-styler-header-container-specific)):not(:has( .code-styler-header-container img.code-styler-icon)) button.copy-code-button, +body pre.code-styler-pre:not([class*='language-']):has(.code-styler-header-container) button.copy-code-button { /*? Depending on header visibility */ + top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)) !important; + --copy-code-header-right-margin: 12px; +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container + .HyperMD-codeblock-begin, +body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has( img.code-styler-icon)) + .HyperMD-codeblock-begin, +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*='code-styler-header-language-tag-'])) + .HyperMD-codeblock-begin { /*? Depending on header visibility */ + overflow: hidden; +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container + .HyperMD-codeblock-begin span.code-block-flair, +body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has( img.code-styler-icon)) + .HyperMD-codeblock-begin span.code-block-flair, +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*='code-styler-header-language-tag-'])) + .HyperMD-codeblock-begin span.code-block-flair { /*? Depending on header visibility */ + top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)) !important; + --copy-code-header-right-margin: 12px; +} +pre.code-styler-pre button.copy-code-button { + transform: translateY(-50%); + top: max(calc(0.5 * var(--container-height) * 1),calc(0.5 * var(--container-min-height) * 1)) !important; + bottom: unset !important; +} +pre.code-styler-pre button.copy-code-button, +pre.code-styler-pre button.run-code-button, /*? Execute Code Plugin Compatibility */ +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair { + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + will-change: margin-right, clip-path; + clip-path: var(--polygon-in); +} +pre.code-styler-pre button.copy-code-button:not(:active), +pre.code-styler-pre button.run-code-button:not(:active), /*? Execute Code Plugin Compatibility */ +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair:not(:active) { + animation: indent var(--duration-button); +} +pre.code-styler-pre button.copy-code-button:hover, +pre.code-styler-pre button.run-code-button:hover, /*? Execute Code Plugin Compatibility */ +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair:hover{ + background-color: transparent; + animation: outdent var(--duration-button); + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); +} +pre.code-styler-pre button.copy-code-button:active, +pre.code-styler-pre button.run-code-button:active, /*? Execute Code Plugin Compatibility */ +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair:active { + scale: 0.95; + transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); +} +pre.code-styler-pre button.copy-code-button::before, +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair::before { + content: "\200b"; + display: inline-block; + width: 14px; + height: 14px; + padding-right: 4px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z'/%3E%3Cpath d='M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z'/%3E%3Cpath d='M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + vertical-align: 1px; +} +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair { + transform: translateY(-50%); + font-size: 0; + top: min(calc(-0.5 * var(--container-height) * 1.1 - var(--header-separator-width)),calc(-0.5 * var(--container-min-height) * 1.1 - var(--header-separator-width))) !important; + right: 0; + visibility: hidden; + padding: 0; + position: absolute; + line-height: initial !important; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair > * { + width: 0px; +} +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair::before { + visibility: visible; + opacity: 1; + vertical-align: -1px; + font-size: var(--font-ui-smaller); +} +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair::after { + visibility: visible; + opacity: 1; + font-size: var(--font-ui-smaller); + content: 'Copy'; + color: var(--code-styler-button-colour); +} +.markdown-source-view.mod-cm6 .HyperMD-codeblock-begin.code-styler-line { + overflow: visible; +} diff --git a/src/css/inlineCode.css b/src/css/inlineCode.css new file mode 100644 index 0000000..7f07c4c --- /dev/null +++ b/src/css/inlineCode.css @@ -0,0 +1,57 @@ +/** Inline Code */ +.code-styler .cm-s-obsidian span.cm-inline-code, +.code-styler .markdown-rendered :not(pre) > code { + font-weight: var(--code-styler-inline-font-weight); + color: var(--code-styler-inline-colour); + background-color: var(--code-styler-inline-background-colour) !important; + border-radius: var(--code-styler-inline-border-radius) !important; + padding: var(--code-styler-inline-padding-vertical) var(--code-styler-inline-padding-horizontal) !important; + margin: 0px var(--code-styler-inline-margin-horizontal) !important; +} + +.code-styler .cm-s-obsidian span.cm-formatting-code { /*? Standalone backticks */ + color: var(--code-styler-inline-colour-active); + display: inline !important; +} + +.code-styler .cm-s-obsidian span.cm-formatting-code:has(+ span.cm-inline-code:not(.cm-formatting-code)) {/*? First backtick */ + color: var(--code-styler-inline-colour-active); + border-radius: var(--code-styler-inline-border-radius) 0px 0px var(--code-styler-inline-border-radius) !important; + padding-left: var(--code-styler-inline-padding-horizontal) !important; + padding-right: 0px !important; + margin-left: var(--code-styler-inline-margin-horizontal) !important; + margin-right: 0px !important; +} + +.code-styler .cm-s-obsidian span.cm-formatting-code + span.cm-inline-code:not(.cm-formatting-code) { /*? Inner code with backticks */ + color: var(--code-styler-inline-colour-active); + border-radius: 0px !important; + padding-left: 0px !important; + padding-right: 0px !important; + margin: 0px 0px !important; +} + +.code-styler .cm-s-obsidian span.cm-inline-code:not(.cm-formatting-code) + span.cm-formatting-code {/*? Last backtick */ + color: var(--code-styler-inline-colour-active); + border-radius: 0px var(--code-styler-inline-border-radius) var(--code-styler-inline-border-radius) 0px !important; + padding-left: 0px !important; + padding-right: var(--code-styler-inline-padding-horizontal) !important; + margin-left: 0px !important; + margin-right: var(--code-styler-inline-margin-horizontal) !important; +} +.code-styler .markdown-rendered :not(pre) > code img.code-styler-inline-icon { + height: calc(var(--code-size) * 1.2); + margin-bottom: 2px; + vertical-align: middle; +} +.code-styler .markdown-rendered :not(pre) > code .code-styler-inline-title { + font-weight: var(--code-styler-inline-title-font-weight); + color: var(--code-styler-inline-title-color); +} +.code-styler .markdown-rendered :not(pre) > code .code-styler-inline-title::after { + content: '\FF5C'; + color: var(--code-styler-inline-title-color); +} +.code-styler .markdown-rendered :not(pre) > code span:has( > img.code-styler-inline-icon) { + padding-right: 8px; +} diff --git a/src/css/pdfExport.css b/src/css/pdfExport.css new file mode 100644 index 0000000..d14ef5a --- /dev/null +++ b/src/css/pdfExport.css @@ -0,0 +1,9 @@ +div.print { + --line-wrapping: pre-wrap !important; +} +.code-styler div.print pre.code-styler-pre code { + max-height: unset; +} +.code-styler div.print pre.code-styler-pre.code-styler-collapsed code { + display: none !important; +} diff --git a/src/css/pickr.css b/src/css/pickr.css new file mode 100644 index 0000000..ff55eaa --- /dev/null +++ b/src/css/pickr.css @@ -0,0 +1,5 @@ +/** Pickr 1.8.2 MIT | https://github.com/Simonwep/pickr */ +.pickr {position: relative;overflow: visible;transform: translateY(0)} .pickr * {box-sizing: border-box;outline: none;border: none;appearance: none;-webkit-appearance: none} .pickr .pcr-button {position: relative;height: 2em;width: 2em;padding: 0.5em;cursor: pointer;font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;border-radius: .15em;background: url('data:image/svg+xml;utf8, ') no-repeat center;background-size: 0;transition: all 0.3s} .pickr .pcr-button::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: .5em;border-radius: .15em;z-index: -1} .pickr .pcr-button::before {z-index: initial} .pickr .pcr-button::after {position: absolute;content: '';top: 0;left: 0;height: 100%;width: 100%;transition: background 0.3s;background: var(--pcr-color);border-radius: .15em} .pickr .pcr-button.clear {background-size: 70%} .pickr .pcr-button.clear::before {opacity: 0} .pickr .pcr-button.clear:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color)} .pickr .pcr-button.disabled {cursor: not-allowed} .pickr *, .pcr-app * {box-sizing: border-box;outline: none;border: none;appearance: none;-webkit-appearance: none} .pickr input:focus, .pickr input.pcr-active, .pickr button:focus, .pickr button.pcr-active, .pcr-app input:focus, .pcr-app input.pcr-active, .pcr-app button:focus, .pcr-app button.pcr-active {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color)} .pickr .pcr-palette, .pickr .pcr-slider, .pcr-app .pcr-palette, .pcr-app .pcr-slider {transition: box-shadow 0.3s} .pickr .pcr-palette:focus, .pickr .pcr-slider:focus, .pcr-app .pcr-palette:focus, .pcr-app .pcr-slider:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(0, 0, 0, 0.25)} .pcr-app {position: fixed;display: flex;flex-direction: column;z-index: 10000;border-radius: 0.1em;background: #fff;opacity: 0;visibility: hidden;transition: opacity 0.3s, visibility 0s 0.3s;font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;box-shadow: 0 0.15em 1.5em 0 rgba(0, 0, 0, 0.1), 0 0 1em 0 rgba(0, 0, 0, 0.03);left: 0;top: 0} .pcr-app.visible {transition: opacity 0.3s;visibility: visible;opacity: 1} .pcr-app .pcr-swatches {display: flex;flex-wrap: wrap;margin-top: 0.75em} .pcr-app .pcr-swatches.pcr-last {margin: 0} @supports (display: grid) { .pcr-app .pcr-swatches {display: grid;align-items: center;grid-template-columns: repeat(auto-fit, 1.75em)} } .pcr-app .pcr-swatches > button {font-size: 1em;position: relative;width: calc(1.75em - 10px);height: calc(1.75em - 10px);border-radius: 0.15em;cursor: pointer;margin: 2.5px;flex-shrink: 0;justify-self: center;transition: all 0.15s;overflow: hidden;background: transparent;z-index: 1} .pcr-app .pcr-swatches > button::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: 6px;border-radius: .15em;z-index: -1} .pcr-app .pcr-swatches > button::after {content: '';position: absolute;top: 0;left: 0;width: 100%;height: 100%;background: var(--pcr-color);border: 1px solid rgba(0, 0, 0, 0.05);border-radius: 0.15em;box-sizing: border-box} .pcr-app .pcr-swatches > button:hover {filter: brightness(1.05)} .pcr-app .pcr-swatches > button:not(.pcr-active) {box-shadow: none} .pcr-app .pcr-interaction {display: flex;flex-wrap: wrap;align-items: center;margin: 0 -0.2em 0 -0.2em} .pcr-app .pcr-interaction > * {margin: 0 0.2em} .pcr-app .pcr-interaction input {letter-spacing: 0.07em;font-size: 0.75em;text-align: center;cursor: pointer;color: #75797e;background: #f1f3f4;border-radius: .15em;transition: all 0.15s;padding: 0.45em 0.5em;margin-top: 0.75em} .pcr-app .pcr-interaction input:hover {filter: brightness(0.975)} .pcr-app .pcr-interaction input:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(66, 133, 244, 0.75)} .pcr-app .pcr-interaction .pcr-result {color: #75797e;text-align: left;flex: 1 1 8em;min-width: 8em;transition: all 0.2s;border-radius: .15em;background: #f1f3f4;cursor: text} .pcr-app .pcr-interaction .pcr-result::-moz-selection {background: #4285f4;color: #fff} .pcr-app .pcr-interaction .pcr-result::selection {background: #4285f4;color: #fff} .pcr-app .pcr-interaction .pcr-type.active {color: #fff;background: #4285f4} .pcr-app .pcr-interaction .pcr-save, .pcr-app .pcr-interaction .pcr-cancel, .pcr-app .pcr-interaction .pcr-clear {color: #fff;width: auto} .pcr-app .pcr-interaction .pcr-save, .pcr-app .pcr-interaction .pcr-cancel, .pcr-app .pcr-interaction .pcr-clear {color: #fff} .pcr-app .pcr-interaction .pcr-save:hover, .pcr-app .pcr-interaction .pcr-cancel:hover, .pcr-app .pcr-interaction .pcr-clear:hover {filter: brightness(0.925)} .pcr-app .pcr-interaction .pcr-save {background: #4285f4} .pcr-app .pcr-interaction .pcr-clear, .pcr-app .pcr-interaction .pcr-cancel {background: #f44250} .pcr-app .pcr-interaction .pcr-clear:focus, .pcr-app .pcr-interaction .pcr-cancel:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(244, 66, 80, 0.75)} .pcr-app .pcr-selection .pcr-picker {position: absolute;height: 18px;width: 18px;border: 2px solid #fff;border-radius: 100%;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none} .pcr-app .pcr-selection .pcr-color-palette, .pcr-app .pcr-selection .pcr-color-chooser, .pcr-app .pcr-selection .pcr-color-opacity {position: relative;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;display: flex;flex-direction: column;cursor: grab;cursor: -webkit-grab} .pcr-app .pcr-selection .pcr-color-palette:active, .pcr-app .pcr-selection .pcr-color-chooser:active, .pcr-app .pcr-selection .pcr-color-opacity:active {cursor: grabbing;cursor: -webkit-grabbing} .pcr-app[data-theme='nano'] {width: 14.25em;max-width: 95vw} .pcr-app[data-theme='nano'] .pcr-swatches {margin-top: .6em;padding: 0 .6em} .pcr-app[data-theme='nano'] .pcr-interaction {padding: 0 .6em .6em .6em} .pcr-app[data-theme='nano'] .pcr-selection {display: grid;grid-gap: .6em;grid-template-columns: 1fr 4fr;grid-template-rows: 5fr auto auto;align-items: center;height: 10.5em;width: 100%;align-self: flex-start} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview {grid-area: 2 / 1 / 4 / 1;height: 100%;width: 100%;display: flex;flex-direction: row;justify-content: center;margin-left: .6em} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-last-color {display: none} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-current-color {position: relative;background: var(--pcr-color);width: 2em;height: 2em;border-radius: 50em;overflow: hidden} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-current-color::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: .5em;border-radius: .15em;z-index: -1} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette {grid-area: 1 / 1 / 2 / 3;width: 100%;height: 100%;z-index: 1} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette .pcr-palette {border-radius: .15em;width: 100%;height: 100%} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette .pcr-palette::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: .5em;border-radius: .15em;z-index: -1} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser {grid-area: 2 / 2 / 2 / 2} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity {grid-area: 3 / 2 / 3 / 2} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity {height: 0.5em;margin: 0 .6em} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-picker, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-picker {top: 50%;transform: translateY(-50%)} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-slider, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-slider {flex-grow: 1;border-radius: 50em} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-slider {background: linear-gradient(to right, red, #ff0, lime, cyan, blue, #f0f, red)} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-slider {background: linear-gradient(to right, transparent, black), url('data:image/svg+xml;utf8, ');background-size: 100%, 0.25em} +.pcr-app .pcr-swatches > button { + padding: 0; +} diff --git a/src/css/pluginCompatibility.css b/src/css/pluginCompatibility.css new file mode 100644 index 0000000..6ac910e --- /dev/null +++ b/src/css/pluginCompatibility.css @@ -0,0 +1,162 @@ +/** Execute Code Plugin */ +pre.code-styler-pre code ~ code.language-output { + display: block; + margin-bottom: 0; + padding-bottom: calc(2.5 * var(--code-padding)) !important; + padding-left: calc(var(--line-number-gutter-padding)) !important; + border-top: var(--header-separator-width) solid var(--code-styler-header-separator-colour); +} +pre.code-styler-pre.code-styler-collapsed code ~ code.language-output { + border-top-color: transparent; + border-top-width: 0; +} +pre.code-styler-pre:hover code ~ code.language-output { + margin-bottom: 0; +} +pre.code-styler-pre code ~ code.language-output input.interactive-stdin { + color: var(--text-normal); + background-color: var(--code-styler-codeblock-background-colour); + padding: 2px 8px; + border-color: var(--code-comment); + border-style: solid; + border-radius: 5px; + border-width: 1px; +} +pre.code-styler-pre code ~ code.language-output hr { + display: none; +} +pre.code-styler-pre button.run-code-button { + --copy-code-header-right-margin: 12px; + --dent-difference: 24px; + height: 14px; + margin-bottom: 6px !important; +} +pre.code-styler-pre.code-styler-collapsed button.run-code-button { + top: 500px; +} +pre.code-styler-pre button.run-code-button::before { + content: "\200b"; + display: inline-block; + width: 14px; + height: 14px; + padding-right: 4px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + vertical-align: 0px; +} +pre.code-styler-pre button.clear-button-disabled, +pre.code-styler-pre button.run-button-disabled { + display: none !important; +} +pre.code-styler-pre button.clear-button { + height: 14px; + margin-bottom: 6px !important; + margin-left: calc(var(--language-border-width) + 12px); + will-change: margin-right, clip-path; + clip-path: var(--polygon-in); +} +pre.code-styler-pre button.clear-button::before { + content: "\200b"; + display: inline-block; + width: 14px; + height: 14px; + padding-right: 4px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M16 4 6 14l1.41 1.41L15 7.83V28h2V7.83l7.59 7.58L26 14 16 4z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M16 4 6 14l1.41 1.41L15 7.83V28h2V7.83l7.59 7.58L26 14 16 4z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + vertical-align: 0px; +} +pre.code-styler-pre button.clear-button:not(:active) { + animation: reverse-indent var(--duration-button); +} +pre.code-styler-pre button.clear-button:hover{ + background-color: transparent; + animation: reverse-outdent var(--duration-button); + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); +} +pre.code-styler-pre button.clear-button:active { + scale: 0.95; + transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); +} +.code-styler-pre-parent.has-run-code-button .load-state-indicator { + color: none; + background: none; + z-index: 10; +} +.code-styler-pre-parent.has-run-code-button .load-state-indicator::before { + box-shadow: none; +} +.code-styler-pre-parent.has-run-code-button .load-state-indicator svg { + color: var(--code-styler-button-colour); +} +.code-styler-pre-parent.has-run-code-button .load-state-indicator svg:hover { + color: var(--code-styler-button-active-colour); +} +.code-styler-pre-parent.has-run-code-button .load-state-indicator.visible { + transform: translateX(0); +} + +/** Embed Code Plugin */ +.block-language-preview pre.code-styler-pre code { + white-space: unset; +} +pre.code-styler-pre span.code-block-line_num-wrap, +pre.code-styler-pre div.code-block-highlight-wrap { + display: none; +} +.markdown-source-view.mod-cm6 .cm-embed-block .code-styler-pre-parent + .edit-block-button::after { + content: 'Edit Block'; + font-size: var(--font-ui-smaller); + padding-left: 4px; +} +.markdown-source-view.mod-cm6 .cm-embed-block:not(:hover) .code-styler-pre-parent + .edit-block-button { + visibility: hidden; + opacity: 0 +} +.markdown-source-view.mod-cm6 .cm-embed-block .code-styler-pre-parent + .edit-block-button { + --copy-code-header-right-margin: calc(2.2 * var(--header-button-spacing)); + --dent-difference: 0px; + --polygon-in: polygon(0 0, 18px 0, 18px 36px, 0 36px); + transition: visibility var(--duration-button), opacity var(--duration-button); + visibility: visible; + opacity: 1; + z-index: 10; + transform: translateY(-50%); + top: max(calc(0.5 * var(--container-height) * 1),calc(0.5 * var(--container-min-height) * 1)); + margin: 0; + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + will-change: margin-right, clip-path; + clip-path: var(--polygon-in); + padding: 0; +} +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .cm-embed-block .code-styler-pre-parent:has( pre.code-styler-pre .code-styler-header-container) + .edit-block-button, +body:not(.code-styler-show-langnames-always) .cm-embed-block .code-styler-pre-parent:not(:has( pre.code-styler-pre .code-styler-header-container-specific)):not(:has( pre.code-styler-pre .code-styler-header-container img.code-styler-icon)) + .edit-block-button, +body .cm-embed-block .code-styler-pre-parent:has( pre.code-styler-pre:not([class*='language-']) .code-styler-header-container) + .edit-block-button { /*? Depending on header visibility */ + --copy-code-header-right-margin: 4px; + top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)); +} +.markdown-source-view.mod-cm6 .cm-embed-block:hover .code-styler-pre-parent + .edit-block-button:hover { + background: transparent; + animation: reverse-outdent var(--duration-button); + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); +} +.markdown-source-view.mod-cm6 .cm-embed-block:hover .code-styler-pre-parent + .edit-block-button:active { + scale: 0.95; + transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); +} + +/** File Include Plugin */ +div.block-language-include pre.code-styler-pre button.copy-code-button { + margin: 0; + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); +} +div.block-language-include pre.code-styler-pre button.copy-code-button:hover { + margin-right: var(--copy-code-header-right-margin); +} diff --git a/src/styles.css b/src/styles.css new file mode 100644 index 0000000..e0a4e8c --- /dev/null +++ b/src/styles.css @@ -0,0 +1,75 @@ +/** Define CSS variables */ +@import "./css/codeblocks.css"; +@import "./css/inlineCode.css"; +@import "./css/pdfExport.css"; +@import "./css/pickr.css"; +@import "./css/pluginCompatibility.css"; + +body { + /* Codeblock Body */ + --border-radius: 10px; + --gradient-background-colour: transparent; + --code-padding: 8px; + --container-height: calc(var(--language-icon-size) + 2 * var(--header-inner-vertical-padding) * var(--header-font-size)); + --container-min-height: calc((var(--header-font-size) + 2 * var(--header-inner-vertical-padding) * var(--header-font-size)) * var(--line-height-normal)); + --language-border-colour: var(--code-styler-codeblock-background-colour); + --language-border-width: 0px; + + /* Header */ + --header-font-size: var(--code-size); + --header-padding: 0px; + --header-inner-vertical-padding: 0.3; + --header-spacing: 15px; + --header-button-spacing: 14px; + --header-separator-width: 2px; + --header-separator-width-padding: var(--header-separator-width); + --code-styler-header-border: none; + --collapsed-bottom-border: 0 solid transparent; + --language-icon-size: 28px; + --language-icon-filter: none; + + /* Lines */ + --gradient-highlights-colour-stop: 100%; + + /* Line Numbers */ + --line-number-height-correction: 2px; + --line-number-gutter-padding: 16px; + --line-number-gutter-min-width: 32.67px; + + /* Line Text */ + --line-wrapping: pre-wrap; + --line-active-wrapping: var(--line-wrapping); + + /* Buttons */ + --code-styler-button-colour: var(--text-muted); + --code-styler-button-active-colour: white; + --duration-button: 240ms; + --dent-difference: 30px; + --polygon-in: polygon(0 0, 16px 0, 16px 36px, 0 36px); + --polygon-out: polygon(0 0, 100% 0, 100% 100%, 0 100%); + --copy-code-header-right-margin: calc(3 * var(--header-button-spacing)); + + /* Inline Code */ + --code-styler-inline-font-weight: 400; + --code-styler-inline-border-radius: 6px; + --code-styler-inline-padding-vertical: 5px; + --code-styler-inline-padding-horizontal: 5px; + --code-styler-inline-margin-horizontal: 0px; + --code-styler-inline-colour: var(--code-normal); + --code-styler-inline-colour-active: var(--code-normal); + --code-styler-inline-background-colour: var(--code-background); +} + +/** Settings */ +.setting-item.code-styler-spaced .checkbox-container + .pickr { + padding-left: 10px; +} +.code-styler-donation { + width: 70%; + margin: 0 auto; + text-align: center; +} +.code-styler-setting-text-area textarea { + width: 400px; + height: 220px; +} diff --git a/styles.css b/styles.css index c513715..d2b1804 100644 --- a/styles.css +++ b/styles.css @@ -1,796 +1,1162 @@ -/** Define CSS variables */ -body { - /* Codeblock Body */ - --border-radius: 10px; - --gradient-background-colour: transparent; - --code-padding: 8px; - --container-height: calc(var(--language-icon-size) + 2 * var(--header-inner-vertical-padding) * var(--header-font-size)); - --container-min-height: calc((var(--header-font-size) + 2 * var(--header-inner-vertical-padding) * var(--header-font-size)) * var(--line-height-normal)); - --language-border-colour: var(--code-styler-codeblock-background-colour); - --language-border-width: 0px; - - /* Header */ - --header-font-size: var(--code-size); - --header-padding: 0px; - --header-inner-vertical-padding: 0.3; - --header-spacing: 15px; - --header-button-spacing: 14px; - --header-separator-width: 2px; - --header-separator-width-padding: var(--header-separator-width); - --code-styler-header-border: none; - --collapsed-bottom-border: 0 solid transparent; - --language-icon-size: 28px; - --language-icon-filter: none; - - /* Lines */ - --gradient-highlights-colour-stop: 100%; - - /* Line Numbers */ - --line-number-height-correction: 2px; - --line-number-gutter-padding: 16px; - --line-number-gutter-min-width: 32.67px; - - /* Line Text */ - --line-wrapping: pre-wrap; - --line-active-wrapping: var(--line-wrapping); - - /* Buttons */ - --code-styler-button-colour: var(--text-muted); - --code-styler-button-active-colour: white; - --duration-button: 240ms; - --dent-difference: 30px; - --polygon-in: polygon(0 0, 16px 0, 16px 36px, 0 36px); - --polygon-out: polygon(0 0, 100% 0, 100% 100%, 0 100%); - --copy-code-header-right-margin: calc(3 * var(--header-button-spacing)); - - /* Inline Code */ - --code-styler-inline-font-weight: 400; - --code-styler-inline-border-radius: 6px; - --code-styler-inline-padding-vertical: 5px; - --code-styler-inline-padding-horizontal: 5px; - --code-styler-inline-margin-horizontal: 0px; - --code-styler-inline-colour: var(--code-normal); - --code-styler-inline-colour-active: var(--code-normal); - --code-styler-inline-background-colour: var(--code-background); -} - -/*! Codeblock Styler */ -/** Pre elements */ -.code-styler-pre-parent{ - margin-bottom: 16px; +/* src/css/codeblocks.css */ +.code-styler-pre-parent { + margin-bottom: 16px; } .code-styler pre.code-styler-pre { - background: var(--code-styler-codeblock-background-colour) !important; - border-radius: var(--border-radius) !important; - min-height: unset; - padding: 0px !important; - overflow: hidden !important; + background: var(--code-styler-codeblock-background-colour) !important; + border-radius: var(--border-radius) !important; + min-height: unset; + padding: 0px !important; + overflow: hidden !important; } -.code-styler pre.code-styler-pre[class*='language-'] { - background: linear-gradient(90deg, var(--language-border-colour), var(--language-border-colour) var(--language-border-width), var(--code-styler-codeblock-background-colour) var(--language-border-width), var(--code-styler-codeblock-background-colour) 100%) !important; - padding-left: var(--language-border-width) !important; +.code-styler pre.code-styler-pre[class*=language-] { + background: linear-gradient(90deg, var(--language-border-colour), var(--language-border-colour) var(--language-border-width), var(--code-styler-codeblock-background-colour) var(--language-border-width), var(--code-styler-codeblock-background-colour) 100%) !important; + padding-left: var(--language-border-width) !important; } .code-styler pre.code-styler-pre code { - display: grid; - grid-template-columns: min-content auto; - grid-template-rows: auto; - padding-top: var(--code-padding) !important; - padding-bottom: var(--code-padding) !important; - padding-left: 0px !important; - padding-right: 0px !important; - border-radius: 0px !important; - background: none !important; - transition: max-height ease-in-out var(--duration-button), padding ease-in-out var(--duration-button), border-top ease-in-out var(--duration-button); - max-height: 0; - overflow-x: scroll; + display: grid; + grid-template-columns: min-content auto; + grid-template-rows: auto; + padding-top: var(--code-padding) !important; + padding-bottom: var(--code-padding) !important; + padding-left: 0px !important; + padding-right: 0px !important; + border-radius: 0px !important; + background: none !important; + transition: + max-height ease-in-out var(--duration-button), + padding ease-in-out var(--duration-button), + border-top ease-in-out var(--duration-button); + max-height: 0; + overflow-x: scroll; } -.code-styler pre.code-styler-pre code:not(:has( > input[style*="display: inline;"])):active { - --line-wrapping: var(--line-active-wrapping) !important; +.code-styler pre.code-styler-pre code:not(:has(> input[style*="display: inline;"])):active { + --line-wrapping: var(--line-active-wrapping) !important; } .code-styler pre.code-styler-pre.code-styler-collapsed code { - padding-top: 0 !important; - padding-bottom: 0 !important; + padding-top: 0 !important; + padding-bottom: 0 !important; } .code-styler pre.code-styler-pre::before, .code-styler pre.code-styler-pre::after { - content: none !important; + content: none !important; } .markdown-source-view.mod-cm6 .cm-embed-block pre.code-styler-pre { - margin: 1em 0px; + margin: 1em 0px; } - -/** Editing Mode Body */ -.code-styler .markdown-source-view [class*="code-styler-line"].HyperMD-codeblock-begin { - border-top-left-radius: 0px !important; - border-top-right-radius: 0px !important; - border-top: none !important; +.code-styler .markdown-source-view [class*=code-styler-line].HyperMD-codeblock-begin { + border-top-left-radius: 0px !important; + border-top-right-radius: 0px !important; + border-top: none !important; } -.code-styler .markdown-source-view [class*="code-styler-line"].HyperMD-codeblock-end { - border-bottom-left-radius: var(--border-radius); - border-bottom-right-radius: var(--border-radius); +.code-styler .markdown-source-view [class*=code-styler-line].HyperMD-codeblock-end { + border-bottom-left-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); } body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container + .HyperMD-codeblock-begin, -body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has( img.code-styler-icon)) + .HyperMD-codeblock-begin, -body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*='code-styler-header-language-tag-'])) + .HyperMD-codeblock-begin, -body .markdown-source-view :not([class^='code-styler-header-container']) + [class*="code-styler-line"].HyperMD-codeblock-begin, -body .markdown-source-view [class*="code-styler-line"].HyperMD-codeblock-begin:nth-of-type(1) { /*? Depending on header visibility */ - border-top-left-radius: var(--border-radius) !important; - border-top-right-radius: var(--border-radius) !important; +body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has(img.code-styler-icon)) + .HyperMD-codeblock-begin, +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*="code-styler-header-language-tag-"])) + .HyperMD-codeblock-begin, +body .markdown-source-view :not([class^="code-styler-header-container"]) + [class*=code-styler-line].HyperMD-codeblock-begin, +body .markdown-source-view [class*=code-styler-line].HyperMD-codeblock-begin:nth-of-type(1) { + border-top-left-radius: var(--border-radius) !important; + border-top-right-radius: var(--border-radius) !important; } -.code-styler .markdown-source-view .HyperMD-codeblock[class*='code-styler-line'] { - background: linear-gradient(90deg, var(--gradient-background-colour) var(--gradient-highlights-colour-stop), transparent 100%), var(--code-styler-codeblock-background-colour) !important; - overflow: hidden; - padding: 0 !important; - padding-left: var(--size-4-4) !important; +.code-styler .markdown-source-view .HyperMD-codeblock[class*=code-styler-line] { + background: linear-gradient(90deg, var(--gradient-background-colour) var(--gradient-highlights-colour-stop), transparent 100%), var(--code-styler-codeblock-background-colour) !important; + overflow: hidden; + padding: 0 !important; + padding-left: var(--size-4-4) !important; } -.code-styler .markdown-source-view .HyperMD-codeblock[class*='code-styler-line'][class*='language-'] { - background: linear-gradient(90deg, var(--language-border-colour), var(--language-border-colour) var(--language-border-width), var(--gradient-background-colour) var(--language-border-width) var(--gradient-highlights-colour-stop), transparent 100%), var(--code-styler-codeblock-background-colour) !important; +.code-styler .markdown-source-view .HyperMD-codeblock[class*=code-styler-line][class*=language-] { + background: linear-gradient(90deg, var(--language-border-colour), var(--language-border-colour) var(--language-border-width), var(--gradient-background-colour) var(--language-border-width) var(--gradient-highlights-colour-stop), transparent 100%), var(--code-styler-codeblock-background-colour) !important; } -.code-styler .markdown-source-view .HyperMD-codeblock[class*='code-styler-line'][class*='language-'] [class^='code-styler-line-number'] { - margin-left: var(--language-border-width); +.code-styler .markdown-source-view .HyperMD-codeblock[class*=code-styler-line][class*=language-] [class^=code-styler-line-number] { + margin-left: var(--language-border-width); } - -/** Header styling */ -body:not([class*='code-styler-show-langicons']) .code-styler-header-container-specific div:has(> img.code-styler-icon), +body:not([class*="code-styler-show-langicons"]) .code-styler-header-container-specific div:has(> img.code-styler-icon), body:not(.code-styler-show-langicons-always) .code-styler-header-container div:has(> img.code-styler-icon) { - display: none; + display: none; } -body:not([class*='code-styler-show-langnames']) .code-styler-header-container-specific [class^="code-styler-header-language-tag"], -body:not(.code-styler-show-langnames-always) .code-styler-header-container [class^="code-styler-header-language-tag"] { - display: none; +body:not([class*="code-styler-show-langnames"]) .code-styler-header-container-specific [class^=code-styler-header-language-tag], +body:not(.code-styler-show-langnames-always) .code-styler-header-container [class^=code-styler-header-language-tag] { + display: none; } body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .code-styler-header-container, -body:not(.code-styler-show-langnames-always) .code-styler-header-container:not(:has( img.code-styler-icon)) { - display: none !important; +body:not(.code-styler-show-langnames-always) .code-styler-header-container:not(:has(img.code-styler-icon)) { + display: none !important; } -body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not([class*='language-']), -body pre.code-styler-pre:not([class*='language-']) .code-styler-header-container { - display: none !important; +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not([class*="language-"]), +body pre.code-styler-pre:not([class*="language-"]) .code-styler-header-container { + display: none !important; } -[class^='code-styler-header-container'] { - font-size: var(--header-font-size); - user-select: none; - height: var(--container-height); - min-height: var(--container-min-height); - padding-top: var(--header-padding); - margin-top: 0px !important; - display: flex !important; - overflow: visible; - transition: border-bottom ease-in-out var(--duration-button); - box-sizing: content-box; +[class^=code-styler-header-container] { + font-size: var(--header-font-size); + user-select: none; + height: var(--container-height); + min-height: var(--container-min-height); + padding-top: var(--header-padding); + margin-top: 0px !important; + display: flex !important; + overflow: visible; + transition: border-bottom ease-in-out var(--duration-button); + box-sizing: content-box; } -.markdown-source-view :not(pre.code-styler-pre) > [class^='code-styler-header-container'] { - background: linear-gradient(var(--code-styler-header-background-colour) 0%,var(--code-styler-header-background-colour) calc(100% - var(--header-separator-width)), var(--code-styler-header-separator-colour) calc(100% - var(--header-separator-width)), var(--code-styler-header-separator-colour) 100%) var(--language-border-width) bottom/100% border-box no-repeat,var(--language-border-colour) !important; - padding-left: var(--language-border-width); - border-top-left-radius: var(--border-radius); - border-top-right-radius: var(--border-radius); - padding-bottom: var(--header-separator-width); - border-top: var(--code-styler-header-border); - border-left: var(--code-styler-header-border); - border-right: var(--code-styler-header-border); +.markdown-source-view :not(pre.code-styler-pre) > [class^=code-styler-header-container] { + background: linear-gradient(var(--code-styler-header-background-colour) 0%, var(--code-styler-header-background-colour) calc(100% - var(--header-separator-width)), var(--code-styler-header-separator-colour) calc(100% - var(--header-separator-width)), var(--code-styler-header-separator-colour) 100%) var(--language-border-width) bottom/100% border-box no-repeat, var(--language-border-colour) !important; + padding-left: var(--language-border-width); + border-top-left-radius: var(--border-radius); + border-top-right-radius: var(--border-radius); + padding-bottom: var(--header-separator-width); + border-top: var(--code-styler-header-border); + border-left: var(--code-styler-header-border); + border-right: var(--code-styler-header-border); } -pre.code-styler-pre [class^='code-styler-header-container'] { - background-color: var(--code-styler-header-background-colour); - border-bottom: var(--header-separator-width) solid var(--code-styler-header-separator-colour); +pre.code-styler-pre [class^=code-styler-header-container] { + background-color: var(--code-styler-header-background-colour); + border-bottom: var(--header-separator-width) solid var(--code-styler-header-separator-colour); } -.markdown-source-view :not(pre.code-styler-pre) > [class^='code-styler-header-container']:not(:has(+ .HyperMD-codeblock-begin)) { - background: linear-gradient(var(--code-styler-header-background-colour) 0%,var(--code-styler-header-background-colour) 100%) var(--language-border-width) bottom/100% border-box no-repeat,var(--language-border-colour) !important; - padding-bottom: var(--header-padding); - border-bottom-left-radius: var(--border-radius); - border-bottom-right-radius: var(--border-radius); - border-bottom: var(--code-styler-header-border); - border-bottom: var(--collapsed-bottom-border); +.markdown-source-view :not(pre.code-styler-pre) > [class^=code-styler-header-container]:not(:has(+ .HyperMD-codeblock-begin)) { + background: linear-gradient(var(--code-styler-header-background-colour) 0%, var(--code-styler-header-background-colour) 100%) var(--language-border-width) bottom/100% border-box no-repeat, var(--language-border-colour) !important; + padding-bottom: var(--header-padding); + border-bottom-left-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); + border-bottom: var(--code-styler-header-border); + border-bottom: var(--collapsed-bottom-border); } -pre.code-styler-pre.code-styler-collapsed [class^='code-styler-header-container'] { - border-bottom: var(--collapsed-bottom-border); +pre.code-styler-pre.code-styler-collapsed [class^=code-styler-header-container] { + border-bottom: var(--collapsed-bottom-border); } -[class^='code-styler-header-container'] [class^="code-styler-header-language-tag"] { - display: flex; - justify-content: center; - align-content: center; - flex-direction: column; - height: 100%; - padding-left: var(--header-spacing); - padding-right: var(--header-spacing); - margin-right: var(--header-spacing); - padding-top: calc(1em * var(--header-inner-vertical-padding)); - padding-bottom: calc(1em * var(--header-inner-vertical-padding)); - font-size: inherit; - border-radius: var(--border-radius) var(--border-radius) 0px 0px; - background-color: var(--code-styler-header-language-tag-background-colour); - color: var(--code-styler-header-language-tag-text-colour); - font-weight: var(--code-styler-header-language-tag-text-bold, normal); - font-style: var(--code-styler-header-language-tag-text-italic, normal); - text-align: center; - transition: border-radius ease-in-out var(--duration-button), padding ease-in-out var(--duration-button); +[class^=code-styler-header-container] [class^=code-styler-header-language-tag] { + display: flex; + justify-content: center; + align-content: center; + flex-direction: column; + height: 100%; + padding-left: var(--header-spacing); + padding-right: var(--header-spacing); + margin-right: var(--header-spacing); + padding-top: calc(1em * var(--header-inner-vertical-padding)); + padding-bottom: calc(1em * var(--header-inner-vertical-padding)); + font-size: inherit; + border-radius: var(--border-radius) var(--border-radius) 0px 0px; + background-color: var(--code-styler-header-language-tag-background-colour); + color: var(--code-styler-header-language-tag-text-colour); + font-weight: var(--code-styler-header-language-tag-text-bold, normal); + font-style: var(--code-styler-header-language-tag-text-italic, normal); + text-align: center; + transition: border-radius ease-in-out var(--duration-button), padding ease-in-out var(--duration-button); } -.markdown-source-view :not(pre.code-styler-pre) > [class^='code-styler-header-container']:not(:has(+ .HyperMD-codeblock-begin)) [class^="code-styler-header-language-tag"], -pre.code-styler-pre.code-styler-collapsed [class^='code-styler-header-container'] [class^="code-styler-header-language-tag"] { - border-radius: var(--border-radius); +.markdown-source-view :not(pre.code-styler-pre) > [class^=code-styler-header-container]:not(:has(+ .HyperMD-codeblock-begin)) [class^=code-styler-header-language-tag], +pre.code-styler-pre.code-styler-collapsed [class^=code-styler-header-container] [class^=code-styler-header-language-tag] { + border-radius: var(--border-radius); } .code-styler-header-text { - display: flex; - justify-content: center; - align-content: center; - flex-direction: column; - padding-left: 0px; - padding-top: calc(1em * var(--header-inner-vertical-padding)); - padding-bottom: calc(1em * var(--header-inner-vertical-padding)); - font-size: inherit; - color: var(--code-styler-header-text-colour); - font-weight: var(--code-styler-header-title-text-bold, normal); - font-style: var(--code-styler-header-title-text-italic, normal); - transition: padding ease-in-out var(--duration-button); + display: flex; + justify-content: center; + align-content: center; + flex-direction: column; + padding-left: 0px; + padding-top: calc(1em * var(--header-inner-vertical-padding)); + padding-bottom: calc(1em * var(--header-inner-vertical-padding)); + font-size: inherit; + color: var(--code-styler-header-text-colour); + font-weight: var(--code-styler-header-title-text-bold, normal); + font-style: var(--code-styler-header-title-text-italic, normal); + transition: padding ease-in-out var(--duration-button); } -body:not([class*='code-styler-show-langicons']) .code-styler-header-container-specific [class^="code-styler-header-language-tag"], -body:not(.code-styler-show-langicons-always) .code-styler-header-container [class^="code-styler-header-language-tag"], -body .code-styler-header-container-specific:not(:has( div > img.code-styler-icon)) [class^="code-styler-header-language-tag"] { /*? Depending on header visibility */ - border-top-left-radius: 0 !important; - border-bottom-left-radius: 0 !important; +body:not([class*="code-styler-show-langicons"]) .code-styler-header-container-specific [class^=code-styler-header-language-tag], +body:not(.code-styler-show-langicons-always) .code-styler-header-container [class^=code-styler-header-language-tag], +body .code-styler-header-container-specific:not(:has(div > img.code-styler-icon)) [class^=code-styler-header-language-tag] { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; } -body:not([class*='code-styler-show-langicons']):not([class*='code-styler-show-langnames']) .code-styler-header-container-specific .code-styler-header-text, +body:not([class*="code-styler-show-langicons"]):not([class*="code-styler-show-langnames"]) .code-styler-header-container-specific .code-styler-header-text, body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames) .code-styler-header-container .code-styler-header-text, -body .code-styler-header-container-specific:not(:has( [class^="code-styler-header-language-tag-"])) .code-styler-header-text { /*? Depending on header visibility */ - padding-left: var(--header-spacing); +body .code-styler-header-container-specific:not(:has([class^="code-styler-header-language-tag-"])) .code-styler-header-text { + padding-left: var(--header-spacing); } div:has(> img.code-styler-icon) { - display: inline-flex; - justify-content: center; - align-content: center; - flex-direction: column; - padding-top: calc(1em * var(--header-inner-vertical-padding)); - padding-bottom: calc(1em * var(--header-inner-vertical-padding)); - padding-left: var(--header-spacing); - padding-right: var(--header-spacing); - transition: padding ease-in-out var(--duration-button); + display: inline-flex; + justify-content: center; + align-content: center; + flex-direction: column; + padding-top: calc(1em * var(--header-inner-vertical-padding)); + padding-bottom: calc(1em * var(--header-inner-vertical-padding)); + padding-left: var(--header-spacing); + padding-right: var(--header-spacing); + transition: padding ease-in-out var(--duration-button); } .code-styler-icon { - width: var(--language-icon-size); - height: var(--language-icon-size); - filter: var(--language-icon-filter); - margin: 0 !important; - border: none !important; + width: var(--language-icon-size); + height: var(--language-icon-size); + filter: var(--language-icon-filter); + margin: 0 !important; + border: none !important; } - -/** Lines */ -pre.code-styler-pre [class^='code-styler-line-highlighted'] > .code-styler-line-text { - background-image: linear-gradient(90deg, var(--gradient-background-colour) 0% var(--gradient-highlights-colour-stop), var(--code-styler-codeblock-background-colour) 100%); +pre.code-styler-pre [class^=code-styler-line-highlighted] > .code-styler-line-text { + background-image: linear-gradient(90deg, var(--gradient-background-colour) 0% var(--gradient-highlights-colour-stop), var(--code-styler-codeblock-background-colour) 100%); } .code-styler-line-highlighted { - --gradient-background-colour: var(--code-styler-default-highlight-colour) !important; + --gradient-background-colour: var(--code-styler-default-highlight-colour) !important; } .code-styler-active-line-highlight .cm-active, .code-styler-active-line-highlight-editor .cm-active { - background: linear-gradient(to right, var(--code-styler-active-editor-line-colour), var(--gradient-highlights-colour-stop), transparent) !important; + background: linear-gradient(to right, var(--code-styler-active-editor-line-colour), var(--gradient-highlights-colour-stop), transparent) !important; } -.code-styler-active-line-highlight .markdown-source-view .HyperMD-codeblock[class*="code-styler-line"].cm-active, -.code-styler-active-line-highlight-codeblock .markdown-source-view .HyperMD-codeblock[class*="code-styler-line"].cm-active { - background: linear-gradient(to right, var(--code-styler-active-codeblock-line-colour), var(--gradient-highlights-colour-stop), var(--code-styler-codeblock-background-colour)) !important; +.code-styler-active-line-highlight .markdown-source-view .HyperMD-codeblock[class*=code-styler-line].cm-active, +.code-styler-active-line-highlight-codeblock .markdown-source-view .HyperMD-codeblock[class*=code-styler-line].cm-active { + background: linear-gradient(to right, var(--code-styler-active-codeblock-line-colour), var(--gradient-highlights-colour-stop), var(--code-styler-codeblock-background-colour)) !important; } - -/** Line numbers */ .code-styler:not(.code-styler-show-line-numbers) .code-styler-line-number, .code-styler-line-number-hide { - display: none; + display: none; } -pre.code-styler-pre > code > div:first-child > [class^='code-styler-line-number'] { /*? Maintain gutter colour when padded */ - box-shadow: 0px calc(-1 * var(--code-padding)) var(--code-styler-gutter-background-colour); - transition: box-shadow ease-in-out var(--duration-button); +pre.code-styler-pre > code > div:first-child > [class^=code-styler-line-number] { + box-shadow: 0px calc(-1 * var(--code-padding)) var(--code-styler-gutter-background-colour); + transition: box-shadow ease-in-out var(--duration-button); } -pre.code-styler-pre.code-styler-collapsed > code > div:first-child > [class^='code-styler-line-number'] { /*? Maintain gutter colour when padded */ - box-shadow: 0px 0px var(--code-styler-gutter-background-colour); +pre.code-styler-pre.code-styler-collapsed > code > div:first-child > [class^=code-styler-line-number] { + box-shadow: 0px 0px var(--code-styler-gutter-background-colour); } -pre.code-styler-pre > code > div:last-child > [class^='code-styler-line-number'] { /*? Maintain gutter colour when padded */ - box-shadow: 0px var(--code-padding) var(--code-styler-gutter-background-colour); +pre.code-styler-pre > code > div:last-child > [class^=code-styler-line-number] { + box-shadow: 0px var(--code-padding) var(--code-styler-gutter-background-colour); } -pre.code-styler-pre > code > div:only-child > [class^='code-styler-line-number'] { /*? Maintain gutter colour when padded */ - box-shadow: 0px calc(-1 * var(--code-padding)) var(--code-styler-gutter-background-colour),0px var(--code-padding) var(--code-styler-gutter-background-colour); +pre.code-styler-pre > code > div:only-child > [class^=code-styler-line-number] { + box-shadow: 0px calc(-1 * var(--code-padding)) var(--code-styler-gutter-background-colour), 0px var(--code-padding) var(--code-styler-gutter-background-colour); } -[class^='code-styler-line-number'] { - padding-left: calc(4px + var(--language-border-width)); - padding-right: 8px; - text-align: right; - min-width: var(--line-number-gutter-min-width); - background-color: var(--code-styler-gutter-background-colour); - font-size: var(--code-size); - font-family: var(--font-monospace); - color: var(--code-styler-gutter-text-colour); - user-select: none; +[class^=code-styler-line-number] { + padding-left: calc(4px + var(--language-border-width)); + padding-right: 8px; + text-align: right; + min-width: var(--line-number-gutter-min-width); + background-color: var(--code-styler-gutter-background-colour); + font-size: var(--code-size); + font-family: var(--font-monospace); + color: var(--code-styler-gutter-text-colour); + user-select: none; } .markdown-source-view .HyperMD-codeblock .code-styler-line-number, .markdown-source-view .HyperMD-codeblock .code-styler-line-number-specific { - padding-top: var(--line-number-height-correction); - position: absolute; - box-sizing: content-box; - display: inline-block; - height: 100%; - min-width: calc(var(--line-number-gutter-min-width) - 12px); - overflow-x: auto; - direction: rtl; - left: 0; + padding-top: var(--line-number-height-correction); + position: absolute; + box-sizing: content-box; + display: inline-block; + height: 100%; + min-width: calc(var(--line-number-gutter-min-width) - 12px); + overflow-x: auto; + direction: rtl; + left: 0; } .markdown-source-view .HyperMD-codeblock-begin .code-styler-line-number, .markdown-source-view .HyperMD-codeblock-begin .code-styler-line-number-specific, .markdown-source-view .HyperMD-codeblock-end .code-styler-line-number, .markdown-source-view .HyperMD-codeblock-end .code-styler-line-number-specific { - width: var(--line-number-gutter-width); + width: var(--line-number-gutter-width); } -pre.code-styler-pre [class^='code-styler-line-number'] { - white-space: nowrap; - grid-column: 1; - position: sticky; - top: -1px; - left: 0; - border-top: var(--line-number-height-correction) solid transparent; +pre.code-styler-pre [class^=code-styler-line-number] { + white-space: nowrap; + grid-column: 1; + position: sticky; + top: -1px; + left: 0; + border-top: var(--line-number-height-correction) solid transparent; } -pre.code-styler-pre div:last-child > [class^='code-styler-line-number'] { - width: unset; +pre.code-styler-pre div:last-child > [class^=code-styler-line-number] { + width: unset; } -.code-styler-gutter-highlight pre.code-styler-pre [class*="code-styler-line-highlighted"] [class^='code-styler-line-number'] { - background-color: var(--gradient-background-colour); +.code-styler-gutter-highlight pre.code-styler-pre [class*=code-styler-line-highlighted] [class^=code-styler-line-number] { + background-color: var(--gradient-background-colour); } -.code-styler-active-line-highlight.code-styler-gutter-highlight .markdown-source-view .HyperMD-codeblock[class*="code-styler-line"].cm-active [class^='code-styler-line-number'], -.code-styler-active-line-highlight-codeblock.code-styler-gutter-highlight .markdown-source-view .HyperMD-codeblock[class*="code-styler-line"].cm-active [class^='code-styler-line-number'], -.code-styler-gutter-highlight [class*="code-styler-line-highlighted"] [class^='code-styler-line-number'] { - background-color: rgba(0,0,0,0); +.code-styler-active-line-highlight.code-styler-gutter-highlight .markdown-source-view .HyperMD-codeblock[class*=code-styler-line].cm-active [class^=code-styler-line-number], +.code-styler-active-line-highlight-codeblock.code-styler-gutter-highlight .markdown-source-view .HyperMD-codeblock[class*=code-styler-line].cm-active [class^=code-styler-line-number], +.code-styler-gutter-highlight [class*=code-styler-line-highlighted] [class^=code-styler-line-number] { + background-color: rgba(0, 0, 0, 0); } -.code-styler-gutter-active-line .cm-active [class^='code-styler-line-number']{ - color: var(--code-styler-gutter-active-text-colour); +.code-styler-gutter-active-line .cm-active [class^=code-styler-line-number] { + color: var(--code-styler-gutter-active-text-colour); } .code-styler.code-styler-show-line-numbers .markdown-source-view .HyperMD-codeblock:has(.code-styler-line-number), .code-styler.code-styler-show-line-numbers .markdown-source-view .HyperMD-codeblock:has(.code-styler-line-number-specific) { - padding-left: calc(12px + var(--language-border-width) + var(--line-number-gutter-width) + var(--line-number-gutter-padding)) !important; + padding-left: calc(12px + var(--language-border-width) + var(--line-number-gutter-width) + var(--line-number-gutter-padding)) !important; } -.code-styler .markdown-source-view .HyperMD-codeblock[class*='code-styler-line']::before { - content: none !important; +.code-styler .markdown-source-view .HyperMD-codeblock[class*=code-styler-line]::before { + content: none !important; } - -/** Line text */ -pre.code-styler-pre > code > div[class*='code-styler-line'] { - display: contents !important; +pre.code-styler-pre > code > div[class*=code-styler-line] { + display: contents !important; } pre.code-styler-pre .code-styler-line-text { - flex-basis: 100%; - padding-left: var(--line-number-gutter-padding); - grid-column: 2; + flex-basis: 100%; + padding-left: var(--line-number-gutter-padding); + grid-column: 2; } -.HyperMD-codeblock:has(> .cm-widgetBuffer) { /*? Prevent Line Wraps */ - white-space: nowrap; +.HyperMD-codeblock:has(> .cm-widgetBuffer) { + white-space: nowrap; } -.HyperMD-codeblock:has(> .cm-widgetBuffer) > .cm-hmd-codeblock { /*? Prevent Line Wraps */ - white-space: break-spaces; +.HyperMD-codeblock:has(> .cm-widgetBuffer) > .cm-hmd-codeblock { + white-space: break-spaces; } - -/** Buttons */ @keyframes outdent { - from { - margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); - clip-path: var(--polygon-in); - } - to { - margin-right: var(--copy-code-header-right-margin); - clip-path: var(--polygon-out); - } + from { + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + clip-path: var(--polygon-in); + } + to { + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); + } } @keyframes indent { - from { - margin-right: var(--copy-code-header-right-margin); - clip-path: var(--polygon-out); - } - to { - margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); - clip-path: var(--polygon-in); - } + from { + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); + } + to { + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + clip-path: var(--polygon-in); + } } @keyframes reverse-outdent { - from { - clip-path: var(--polygon-in); - } - to { - clip-path: var(--polygon-out); - } + from { + clip-path: var(--polygon-in); + } + to { + clip-path: var(--polygon-out); + } } @keyframes reverse-indent { - from { - clip-path: var(--polygon-out); - } - to { - clip-path: var(--polygon-in); - } + from { + clip-path: var(--polygon-out); + } + to { + clip-path: var(--polygon-in); + } } .markdown-rendered pre.code-styler-pre button { - transition: visibility var(--duration-button), opacity var(--duration-button); - visibility: visible; - opacity: 1; - display: unset !important; - color: var(--code-styler-button-colour) !important; - background: transparent !important; - box-shadow: none; - font-family: var(--font-interface); - font-size: var(--font-ui-smaller); - margin: 0; - padding: 0 !important; - border: none !important; - margin-top: 0 !important; - margin-bottom: 0 !important; + transition: visibility var(--duration-button), opacity var(--duration-button); + visibility: visible; + opacity: 1; + display: unset !important; + color: var(--code-styler-button-colour) !important; + background: transparent !important; + box-shadow: none; + font-family: var(--font-interface); + font-size: var(--font-ui-smaller); + margin: 0; + padding: 0 !important; + border: none !important; + margin-top: 0 !important; + margin-bottom: 0 !important; } pre.code-styler-pre:not(.code-styler-collapsed):not(:hover) button, pre.code-styler-pre.code-styler-collapsed button, -pre.code-styler-pre:not(.code-styler-collapsed):not(:hover) [class^='code-styler-header-container']::after { - visibility: hidden; - opacity: 0 +pre.code-styler-pre:not(.code-styler-collapsed):not(:hover) [class^=code-styler-header-container]::after { + visibility: hidden; + opacity: 0; } -[class^='code-styler-header-container']::after { - position: relative; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: auto; - margin-right: var(--header-button-spacing); - content: "\200b"; - width: 20px; - height: 20px; - background-color: var(--code-styler-button-colour); - -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' xml:space='preserve'%3E%3Cpath d='M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z'/%3E%3C/svg%3E"); - -webkit-mask-repeat: no-repeat; - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); - mask-repeat: no-repeat; - visibility: visible; - opacity: 1; - scale: 0.8; - transition: transform var(--duration-button) ease-out, visibility var(--duration-button), opacity var(--duration-button), scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); +[class^=code-styler-header-container]::after { + position: relative; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + margin-right: var(--header-button-spacing); + content: "\200b"; + width: 20px; + height: 20px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' xml:space='preserve'%3E%3Cpath d='M16 22 6 12l1.4-1.4 8.6 8.6 8.6-8.6L26 12z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + visibility: visible; + opacity: 1; + scale: 0.8; + transition: + transform var(--duration-button) ease-out, + visibility var(--duration-button), + opacity var(--duration-button), + scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); } -pre.code-styler-pre.code-styler-collapsed [class^='code-styler-header-container']::after, -.markdown-source-view :not(pre.code-styler-pre) > [class^='code-styler-header-container']:not(:has(+ .HyperMD-codeblock-begin))::after { - transform: rotate(-90deg); +pre.code-styler-pre.code-styler-collapsed [class^=code-styler-header-container]::after, +.markdown-source-view :not(pre.code-styler-pre) > [class^=code-styler-header-container]:not(:has(+ .HyperMD-codeblock-begin))::after { + transform: rotate(-90deg); } -[class^='code-styler-header-container']:hover::after { - scale: 1; +[class^=code-styler-header-container]:hover::after { + scale: 1; } -body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) pre.code-styler-pre:has( .code-styler-header-container) button.copy-code-button, -body:not(.code-styler-show-langnames-always) pre.code-styler-pre:not(:has( .code-styler-header-container-specific)):not(:has( .code-styler-header-container img.code-styler-icon)) button.copy-code-button, -body pre.code-styler-pre:not([class*='language-']):has(.code-styler-header-container) button.copy-code-button { /*? Depending on header visibility */ - top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)) !important; - --copy-code-header-right-margin: 12px; +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) pre.code-styler-pre:has(.code-styler-header-container) button.copy-code-button, +body:not(.code-styler-show-langnames-always) pre.code-styler-pre:not(:has(.code-styler-header-container-specific)):not(:has(.code-styler-header-container img.code-styler-icon)) button.copy-code-button, +body pre.code-styler-pre:not([class*="language-"]):has(.code-styler-header-container) button.copy-code-button { + top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)) !important; + --copy-code-header-right-margin: 12px; } body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container + .HyperMD-codeblock-begin, -body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has( img.code-styler-icon)) + .HyperMD-codeblock-begin, -body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*='code-styler-header-language-tag-'])) + .HyperMD-codeblock-begin { /*? Depending on header visibility */ - overflow: hidden; +body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has(img.code-styler-icon)) + .HyperMD-codeblock-begin, +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*="code-styler-header-language-tag-"])) + .HyperMD-codeblock-begin { + overflow: hidden; } body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container + .HyperMD-codeblock-begin span.code-block-flair, -body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has( img.code-styler-icon)) + .HyperMD-codeblock-begin span.code-block-flair, -body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*='code-styler-header-language-tag-'])) + .HyperMD-codeblock-begin span.code-block-flair { /*? Depending on header visibility */ - top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)) !important; - --copy-code-header-right-margin: 12px; +body:not(.code-styler-show-langnames-always) .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has(img.code-styler-icon)) + .HyperMD-codeblock-begin span.code-block-flair, +body .markdown-source-view :not(pre.code-styler-pre) > .code-styler-header-container:not(:has([class*="code-styler-header-language-tag-"])) + .HyperMD-codeblock-begin span.code-block-flair { + top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)) !important; + --copy-code-header-right-margin: 12px; } pre.code-styler-pre button.copy-code-button { - transform: translateY(-50%); - top: max(calc(0.5 * var(--container-height) * 1),calc(0.5 * var(--container-min-height) * 1)) !important; - bottom: unset !important; + transform: translateY(-50%); + top: max(calc(0.5 * var(--container-height) * 1), calc(0.5 * var(--container-min-height) * 1)) !important; + bottom: unset !important; } pre.code-styler-pre button.copy-code-button, -pre.code-styler-pre button.run-code-button, /*? Execute Code Plugin Compatibility */ +pre.code-styler-pre button.run-code-button, .markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair { - margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); - will-change: margin-right, clip-path; - clip-path: var(--polygon-in); + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + will-change: margin-right, clip-path; + clip-path: var(--polygon-in); } pre.code-styler-pre button.copy-code-button:not(:active), -pre.code-styler-pre button.run-code-button:not(:active), /*? Execute Code Plugin Compatibility */ +pre.code-styler-pre button.run-code-button:not(:active), .markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair:not(:active) { - animation: indent var(--duration-button); + animation: indent var(--duration-button); } pre.code-styler-pre button.copy-code-button:hover, -pre.code-styler-pre button.run-code-button:hover, /*? Execute Code Plugin Compatibility */ -.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair:hover{ - background-color: transparent; - animation: outdent var(--duration-button); - margin-right: var(--copy-code-header-right-margin); - clip-path: var(--polygon-out); +pre.code-styler-pre button.run-code-button:hover, +.markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair:hover { + background-color: transparent; + animation: outdent var(--duration-button); + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); } pre.code-styler-pre button.copy-code-button:active, -pre.code-styler-pre button.run-code-button:active, /*? Execute Code Plugin Compatibility */ +pre.code-styler-pre button.run-code-button:active, .markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair:active { - scale: 0.95; - transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); + scale: 0.95; + transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); } pre.code-styler-pre button.copy-code-button::before, .markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair::before { - content: "\200b"; - display: inline-block; - width: 14px; - height: 14px; - padding-right: 4px; - background-color: var(--code-styler-button-colour); - -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z'/%3E%3Cpath d='M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); - -webkit-mask-repeat: no-repeat; - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z'/%3E%3Cpath d='M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); - mask-repeat: no-repeat; - vertical-align: 1px; + content: "\200b"; + display: inline-block; + width: 14px; + height: 14px; + padding-right: 4px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z'/%3E%3Cpath d='M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M28 10v18H10V10h18m0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2Z'/%3E%3Cpath d='M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + vertical-align: 1px; } .markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair { - transform: translateY(-50%); - font-size: 0; - top: min(calc(-0.5 * var(--container-height) * 1.1 - var(--header-separator-width)),calc(-0.5 * var(--container-min-height) * 1.1 - var(--header-separator-width))) !important; - right: 0; - visibility: hidden; - padding: 0; - position: absolute; - line-height: initial !important; - margin-top: 0 !important; - margin-bottom: 0 !important; + transform: translateY(-50%); + font-size: 0; + top: min(calc(-0.5 * var(--container-height) * 1.1 - var(--header-separator-width)), calc(-0.5 * var(--container-min-height) * 1.1 - var(--header-separator-width))) !important; + right: 0; + visibility: hidden; + padding: 0; + position: absolute; + line-height: initial !important; + margin-top: 0 !important; + margin-bottom: 0 !important; } .markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair > * { - width: 0px; + width: 0px; } .markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair::before { - visibility: visible; - opacity: 1; - vertical-align: -1px; - font-size: var(--font-ui-smaller); + visibility: visible; + opacity: 1; + vertical-align: -1px; + font-size: var(--font-ui-smaller); } .markdown-source-view.mod-cm6 .HyperMD-codeblock.code-styler-line span.code-block-flair::after { - visibility: visible; - opacity: 1; - font-size: var(--font-ui-smaller); - content: 'Copy'; - color: var(--code-styler-button-colour); + visibility: visible; + opacity: 1; + font-size: var(--font-ui-smaller); + content: "Copy"; + color: var(--code-styler-button-colour); } .markdown-source-view.mod-cm6 .HyperMD-codeblock-begin.code-styler-line { - overflow: visible; + overflow: visible; } -/** Inline Code */ +/* src/css/inlineCode.css */ .code-styler .cm-s-obsidian span.cm-inline-code, .code-styler .markdown-rendered :not(pre) > code { - font-weight: var(--code-styler-inline-font-weight); - color: var(--code-styler-inline-colour); - background-color: var(--code-styler-inline-background-colour) !important; - border-radius: var(--code-styler-inline-border-radius) !important; - padding: var(--code-styler-inline-padding-vertical) var(--code-styler-inline-padding-horizontal) !important; - margin: 0px var(--code-styler-inline-margin-horizontal) !important; + font-weight: var(--code-styler-inline-font-weight); + color: var(--code-styler-inline-colour); + background-color: var(--code-styler-inline-background-colour) !important; + border-radius: var(--code-styler-inline-border-radius) !important; + padding: var(--code-styler-inline-padding-vertical) var(--code-styler-inline-padding-horizontal) !important; + margin: 0px var(--code-styler-inline-margin-horizontal) !important; } - -.code-styler .cm-s-obsidian span.cm-formatting-code { /*? Standalone backticks */ - color: var(--code-styler-inline-colour-active); - display: inline !important; +.code-styler .cm-s-obsidian span.cm-formatting-code { + color: var(--code-styler-inline-colour-active); + display: inline !important; } - -.code-styler .cm-s-obsidian span.cm-formatting-code:has(+ span.cm-inline-code:not(.cm-formatting-code)) {/*? First backtick */ - color: var(--code-styler-inline-colour-active); - border-radius: var(--code-styler-inline-border-radius) 0px 0px var(--code-styler-inline-border-radius) !important; - padding-left: var(--code-styler-inline-padding-horizontal) !important; - padding-right: 0px !important; - margin-left: var(--code-styler-inline-margin-horizontal) !important; - margin-right: 0px !important; +.code-styler .cm-s-obsidian span.cm-formatting-code:has(+ span.cm-inline-code:not(.cm-formatting-code)) { + color: var(--code-styler-inline-colour-active); + border-radius: var(--code-styler-inline-border-radius) 0px 0px var(--code-styler-inline-border-radius) !important; + padding-left: var(--code-styler-inline-padding-horizontal) !important; + padding-right: 0px !important; + margin-left: var(--code-styler-inline-margin-horizontal) !important; + margin-right: 0px !important; } - -.code-styler .cm-s-obsidian span.cm-formatting-code + span.cm-inline-code:not(.cm-formatting-code) { /*? Inner code with backticks */ - color: var(--code-styler-inline-colour-active); - border-radius: 0px !important; - padding-left: 0px !important; - padding-right: 0px !important; - margin: 0px 0px !important; +.code-styler .cm-s-obsidian span.cm-formatting-code + span.cm-inline-code:not(.cm-formatting-code) { + color: var(--code-styler-inline-colour-active); + border-radius: 0px !important; + padding-left: 0px !important; + padding-right: 0px !important; + margin: 0px 0px !important; } - -.code-styler .cm-s-obsidian span.cm-inline-code:not(.cm-formatting-code) + span.cm-formatting-code {/*? Last backtick */ - color: var(--code-styler-inline-colour-active); - border-radius: 0px var(--code-styler-inline-border-radius) var(--code-styler-inline-border-radius) 0px !important; - padding-left: 0px !important; - padding-right: var(--code-styler-inline-padding-horizontal) !important; - margin-left: 0px !important; - margin-right: var(--code-styler-inline-margin-horizontal) !important; +.code-styler .cm-s-obsidian span.cm-inline-code:not(.cm-formatting-code) + span.cm-formatting-code { + color: var(--code-styler-inline-colour-active); + border-radius: 0px var(--code-styler-inline-border-radius) var(--code-styler-inline-border-radius) 0px !important; + padding-left: 0px !important; + padding-right: var(--code-styler-inline-padding-horizontal) !important; + margin-left: 0px !important; + margin-right: var(--code-styler-inline-margin-horizontal) !important; } .code-styler .markdown-rendered :not(pre) > code img.code-styler-inline-icon { - height: calc(var(--code-size) * 1.2); - margin-bottom: 2px; - vertical-align: middle; + height: calc(var(--code-size) * 1.2); + margin-bottom: 2px; + vertical-align: middle; } .code-styler .markdown-rendered :not(pre) > code .code-styler-inline-title { - font-weight: var(--code-styler-inline-title-font-weight); - color: var(--code-styler-inline-title-color); + font-weight: var(--code-styler-inline-title-font-weight); + color: var(--code-styler-inline-title-color); } .code-styler .markdown-rendered :not(pre) > code .code-styler-inline-title::after { - content: '\FF5C'; - color: var(--code-styler-inline-title-color); + content: "\ff5c"; + color: var(--code-styler-inline-title-color); } -.code-styler .markdown-rendered :not(pre) > code span:has( > img.code-styler-inline-icon) { - padding-right: 8px; +.code-styler .markdown-rendered :not(pre) > code span:has(> img.code-styler-inline-icon) { + padding-right: 8px; } -/** Settings */ -.setting-item.code-styler-spaced .checkbox-container + .pickr { - padding-left: 10px; -} -.code-styler-donation { - width: 70%; - margin: 0 auto; - text-align: center; -} -.code-styler-setting-text-area textarea { - width: 400px; - height: 220px; -} - -/** Pickr 1.8.2 MIT | https://github.com/Simonwep/pickr */ -.pickr {position: relative;overflow: visible;transform: translateY(0)} .pickr * {box-sizing: border-box;outline: none;border: none;appearance: none;-webkit-appearance: none} .pickr .pcr-button {position: relative;height: 2em;width: 2em;padding: 0.5em;cursor: pointer;font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;border-radius: .15em;background: url('data:image/svg+xml;utf8, ') no-repeat center;background-size: 0;transition: all 0.3s} .pickr .pcr-button::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: .5em;border-radius: .15em;z-index: -1} .pickr .pcr-button::before {z-index: initial} .pickr .pcr-button::after {position: absolute;content: '';top: 0;left: 0;height: 100%;width: 100%;transition: background 0.3s;background: var(--pcr-color);border-radius: .15em} .pickr .pcr-button.clear {background-size: 70%} .pickr .pcr-button.clear::before {opacity: 0} .pickr .pcr-button.clear:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color)} .pickr .pcr-button.disabled {cursor: not-allowed} .pickr *, .pcr-app * {box-sizing: border-box;outline: none;border: none;appearance: none;-webkit-appearance: none} .pickr input:focus, .pickr input.pcr-active, .pickr button:focus, .pickr button.pcr-active, .pcr-app input:focus, .pcr-app input.pcr-active, .pcr-app button:focus, .pcr-app button.pcr-active {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color)} .pickr .pcr-palette, .pickr .pcr-slider, .pcr-app .pcr-palette, .pcr-app .pcr-slider {transition: box-shadow 0.3s} .pickr .pcr-palette:focus, .pickr .pcr-slider:focus, .pcr-app .pcr-palette:focus, .pcr-app .pcr-slider:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(0, 0, 0, 0.25)} .pcr-app {position: fixed;display: flex;flex-direction: column;z-index: 10000;border-radius: 0.1em;background: #fff;opacity: 0;visibility: hidden;transition: opacity 0.3s, visibility 0s 0.3s;font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;box-shadow: 0 0.15em 1.5em 0 rgba(0, 0, 0, 0.1), 0 0 1em 0 rgba(0, 0, 0, 0.03);left: 0;top: 0} .pcr-app.visible {transition: opacity 0.3s;visibility: visible;opacity: 1} .pcr-app .pcr-swatches {display: flex;flex-wrap: wrap;margin-top: 0.75em} .pcr-app .pcr-swatches.pcr-last {margin: 0} @supports (display: grid) { .pcr-app .pcr-swatches {display: grid;align-items: center;grid-template-columns: repeat(auto-fit, 1.75em)} } .pcr-app .pcr-swatches > button {font-size: 1em;position: relative;width: calc(1.75em - 10px);height: calc(1.75em - 10px);border-radius: 0.15em;cursor: pointer;margin: 2.5px;flex-shrink: 0;justify-self: center;transition: all 0.15s;overflow: hidden;background: transparent;z-index: 1} .pcr-app .pcr-swatches > button::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: 6px;border-radius: .15em;z-index: -1} .pcr-app .pcr-swatches > button::after {content: '';position: absolute;top: 0;left: 0;width: 100%;height: 100%;background: var(--pcr-color);border: 1px solid rgba(0, 0, 0, 0.05);border-radius: 0.15em;box-sizing: border-box} .pcr-app .pcr-swatches > button:hover {filter: brightness(1.05)} .pcr-app .pcr-swatches > button:not(.pcr-active) {box-shadow: none} .pcr-app .pcr-interaction {display: flex;flex-wrap: wrap;align-items: center;margin: 0 -0.2em 0 -0.2em} .pcr-app .pcr-interaction > * {margin: 0 0.2em} .pcr-app .pcr-interaction input {letter-spacing: 0.07em;font-size: 0.75em;text-align: center;cursor: pointer;color: #75797e;background: #f1f3f4;border-radius: .15em;transition: all 0.15s;padding: 0.45em 0.5em;margin-top: 0.75em} .pcr-app .pcr-interaction input:hover {filter: brightness(0.975)} .pcr-app .pcr-interaction input:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(66, 133, 244, 0.75)} .pcr-app .pcr-interaction .pcr-result {color: #75797e;text-align: left;flex: 1 1 8em;min-width: 8em;transition: all 0.2s;border-radius: .15em;background: #f1f3f4;cursor: text} .pcr-app .pcr-interaction .pcr-result::-moz-selection {background: #4285f4;color: #fff} .pcr-app .pcr-interaction .pcr-result::selection {background: #4285f4;color: #fff} .pcr-app .pcr-interaction .pcr-type.active {color: #fff;background: #4285f4} .pcr-app .pcr-interaction .pcr-save, .pcr-app .pcr-interaction .pcr-cancel, .pcr-app .pcr-interaction .pcr-clear {color: #fff;width: auto} .pcr-app .pcr-interaction .pcr-save, .pcr-app .pcr-interaction .pcr-cancel, .pcr-app .pcr-interaction .pcr-clear {color: #fff} .pcr-app .pcr-interaction .pcr-save:hover, .pcr-app .pcr-interaction .pcr-cancel:hover, .pcr-app .pcr-interaction .pcr-clear:hover {filter: brightness(0.925)} .pcr-app .pcr-interaction .pcr-save {background: #4285f4} .pcr-app .pcr-interaction .pcr-clear, .pcr-app .pcr-interaction .pcr-cancel {background: #f44250} .pcr-app .pcr-interaction .pcr-clear:focus, .pcr-app .pcr-interaction .pcr-cancel:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(244, 66, 80, 0.75)} .pcr-app .pcr-selection .pcr-picker {position: absolute;height: 18px;width: 18px;border: 2px solid #fff;border-radius: 100%;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none} .pcr-app .pcr-selection .pcr-color-palette, .pcr-app .pcr-selection .pcr-color-chooser, .pcr-app .pcr-selection .pcr-color-opacity {position: relative;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;display: flex;flex-direction: column;cursor: grab;cursor: -webkit-grab} .pcr-app .pcr-selection .pcr-color-palette:active, .pcr-app .pcr-selection .pcr-color-chooser:active, .pcr-app .pcr-selection .pcr-color-opacity:active {cursor: grabbing;cursor: -webkit-grabbing} .pcr-app[data-theme='nano'] {width: 14.25em;max-width: 95vw} .pcr-app[data-theme='nano'] .pcr-swatches {margin-top: .6em;padding: 0 .6em} .pcr-app[data-theme='nano'] .pcr-interaction {padding: 0 .6em .6em .6em} .pcr-app[data-theme='nano'] .pcr-selection {display: grid;grid-gap: .6em;grid-template-columns: 1fr 4fr;grid-template-rows: 5fr auto auto;align-items: center;height: 10.5em;width: 100%;align-self: flex-start} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview {grid-area: 2 / 1 / 4 / 1;height: 100%;width: 100%;display: flex;flex-direction: row;justify-content: center;margin-left: .6em} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-last-color {display: none} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-current-color {position: relative;background: var(--pcr-color);width: 2em;height: 2em;border-radius: 50em;overflow: hidden} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-current-color::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: .5em;border-radius: .15em;z-index: -1} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette {grid-area: 1 / 1 / 2 / 3;width: 100%;height: 100%;z-index: 1} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette .pcr-palette {border-radius: .15em;width: 100%;height: 100%} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette .pcr-palette::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: .5em;border-radius: .15em;z-index: -1} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser {grid-area: 2 / 2 / 2 / 2} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity {grid-area: 3 / 2 / 3 / 2} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity {height: 0.5em;margin: 0 .6em} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-picker, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-picker {top: 50%;transform: translateY(-50%)} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-slider, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-slider {flex-grow: 1;border-radius: 50em} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-slider {background: linear-gradient(to right, red, #ff0, lime, cyan, blue, #f0f, red)} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-slider {background: linear-gradient(to right, transparent, black), url('data:image/svg+xml;utf8, ');background-size: 100%, 0.25em} -.pcr-app .pcr-swatches > button { - padding: 0; -} - -/*! Codeblock Styler PDF Styling */ +/* src/css/pdfExport.css */ div.print { - --line-wrapping: pre-wrap !important; + --line-wrapping: pre-wrap !important; } .code-styler div.print pre.code-styler-pre code { - max-height: unset; + max-height: unset; } .code-styler div.print pre.code-styler-pre.code-styler-collapsed code { - display: none !important; + display: none !important; } -/*! Plugin Compatibility */ -/** Execute Code Plugin */ +/* src/css/pickr.css */ +.pickr { + position: relative; + overflow: visible; + transform: translateY(0); +} +.pickr * { + box-sizing: border-box; + outline: none; + border: none; + appearance: none; + -webkit-appearance: none; +} +.pickr .pcr-button { + position: relative; + height: 2em; + width: 2em; + padding: 0.5em; + cursor: pointer; + font-family: + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + "Roboto", + "Helvetica Neue", + Arial, + sans-serif; + border-radius: .15em; + background: url('data:image/svg+xml;utf8, ') no-repeat center; + background-size: 0; + transition: all 0.3s; +} +.pickr .pcr-button::before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('data:image/svg+xml;utf8, '); + background-size: .5em; + border-radius: .15em; + z-index: -1; +} +.pickr .pcr-button::before { + z-index: initial; +} +.pickr .pcr-button::after { + position: absolute; + content: ""; + top: 0; + left: 0; + height: 100%; + width: 100%; + transition: background 0.3s; + background: var(--pcr-color); + border-radius: .15em; +} +.pickr .pcr-button.clear { + background-size: 70%; +} +.pickr .pcr-button.clear::before { + opacity: 0; +} +.pickr .pcr-button.clear:focus { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color); +} +.pickr .pcr-button.disabled { + cursor: not-allowed; +} +.pickr *, +.pcr-app * { + box-sizing: border-box; + outline: none; + border: none; + appearance: none; + -webkit-appearance: none; +} +.pickr input:focus, +.pickr input.pcr-active, +.pickr button:focus, +.pickr button.pcr-active, +.pcr-app input:focus, +.pcr-app input.pcr-active, +.pcr-app button:focus, +.pcr-app button.pcr-active { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color); +} +.pickr .pcr-palette, +.pickr .pcr-slider, +.pcr-app .pcr-palette, +.pcr-app .pcr-slider { + transition: box-shadow 0.3s; +} +.pickr .pcr-palette:focus, +.pickr .pcr-slider:focus, +.pcr-app .pcr-palette:focus, +.pcr-app .pcr-slider:focus { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(0, 0, 0, 0.25); +} +.pcr-app { + position: fixed; + display: flex; + flex-direction: column; + z-index: 10000; + border-radius: 0.1em; + background: #fff; + opacity: 0; + visibility: hidden; + transition: opacity 0.3s, visibility 0s 0.3s; + font-family: + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + "Roboto", + "Helvetica Neue", + Arial, + sans-serif; + box-shadow: 0 0.15em 1.5em 0 rgba(0, 0, 0, 0.1), 0 0 1em 0 rgba(0, 0, 0, 0.03); + left: 0; + top: 0; +} +.pcr-app.visible { + transition: opacity 0.3s; + visibility: visible; + opacity: 1; +} +.pcr-app .pcr-swatches { + display: flex; + flex-wrap: wrap; + margin-top: 0.75em; +} +.pcr-app .pcr-swatches.pcr-last { + margin: 0; +} +@supports (display: grid) { + .pcr-app .pcr-swatches { + display: grid; + align-items: center; + grid-template-columns: repeat(auto-fit, 1.75em); + } +} +.pcr-app .pcr-swatches > button { + font-size: 1em; + position: relative; + width: calc(1.75em - 10px); + height: calc(1.75em - 10px); + border-radius: 0.15em; + cursor: pointer; + margin: 2.5px; + flex-shrink: 0; + justify-self: center; + transition: all 0.15s; + overflow: hidden; + background: transparent; + z-index: 1; +} +.pcr-app .pcr-swatches > button::before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('data:image/svg+xml;utf8, '); + background-size: 6px; + border-radius: .15em; + z-index: -1; +} +.pcr-app .pcr-swatches > button::after { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: var(--pcr-color); + border: 1px solid rgba(0, 0, 0, 0.05); + border-radius: 0.15em; + box-sizing: border-box; +} +.pcr-app .pcr-swatches > button:hover { + filter: brightness(1.05); +} +.pcr-app .pcr-swatches > button:not(.pcr-active) { + box-shadow: none; +} +.pcr-app .pcr-interaction { + display: flex; + flex-wrap: wrap; + align-items: center; + margin: 0 -0.2em 0 -0.2em; +} +.pcr-app .pcr-interaction > * { + margin: 0 0.2em; +} +.pcr-app .pcr-interaction input { + letter-spacing: 0.07em; + font-size: 0.75em; + text-align: center; + cursor: pointer; + color: #75797e; + background: #f1f3f4; + border-radius: .15em; + transition: all 0.15s; + padding: 0.45em 0.5em; + margin-top: 0.75em; +} +.pcr-app .pcr-interaction input:hover { + filter: brightness(0.975); +} +.pcr-app .pcr-interaction input:focus { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(66, 133, 244, 0.75); +} +.pcr-app .pcr-interaction .pcr-result { + color: #75797e; + text-align: left; + flex: 1 1 8em; + min-width: 8em; + transition: all 0.2s; + border-radius: .15em; + background: #f1f3f4; + cursor: text; +} +.pcr-app .pcr-interaction .pcr-result::-moz-selection { + background: #4285f4; + color: #fff; +} +.pcr-app .pcr-interaction .pcr-result::selection { + background: #4285f4; + color: #fff; +} +.pcr-app .pcr-interaction .pcr-type.active { + color: #fff; + background: #4285f4; +} +.pcr-app .pcr-interaction .pcr-save, +.pcr-app .pcr-interaction .pcr-cancel, +.pcr-app .pcr-interaction .pcr-clear { + color: #fff; + width: auto; +} +.pcr-app .pcr-interaction .pcr-save, +.pcr-app .pcr-interaction .pcr-cancel, +.pcr-app .pcr-interaction .pcr-clear { + color: #fff; +} +.pcr-app .pcr-interaction .pcr-save:hover, +.pcr-app .pcr-interaction .pcr-cancel:hover, +.pcr-app .pcr-interaction .pcr-clear:hover { + filter: brightness(0.925); +} +.pcr-app .pcr-interaction .pcr-save { + background: #4285f4; +} +.pcr-app .pcr-interaction .pcr-clear, +.pcr-app .pcr-interaction .pcr-cancel { + background: #f44250; +} +.pcr-app .pcr-interaction .pcr-clear:focus, +.pcr-app .pcr-interaction .pcr-cancel:focus { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(244, 66, 80, 0.75); +} +.pcr-app .pcr-selection .pcr-picker { + position: absolute; + height: 18px; + width: 18px; + border: 2px solid #fff; + border-radius: 100%; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.pcr-app .pcr-selection .pcr-color-palette, +.pcr-app .pcr-selection .pcr-color-chooser, +.pcr-app .pcr-selection .pcr-color-opacity { + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + display: flex; + flex-direction: column; + cursor: grab; + cursor: -webkit-grab; +} +.pcr-app .pcr-selection .pcr-color-palette:active, +.pcr-app .pcr-selection .pcr-color-chooser:active, +.pcr-app .pcr-selection .pcr-color-opacity:active { + cursor: grabbing; + cursor: -webkit-grabbing; +} +.pcr-app[data-theme=nano] { + width: 14.25em; + max-width: 95vw; +} +.pcr-app[data-theme=nano] .pcr-swatches { + margin-top: .6em; + padding: 0 .6em; +} +.pcr-app[data-theme=nano] .pcr-interaction { + padding: 0 .6em .6em .6em; +} +.pcr-app[data-theme=nano] .pcr-selection { + display: grid; + grid-gap: .6em; + grid-template-columns: 1fr 4fr; + grid-template-rows: 5fr auto auto; + align-items: center; + height: 10.5em; + width: 100%; + align-self: flex-start; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-preview { + grid-area: 2 / 1 / 4 / 1; + height: 100%; + width: 100%; + display: flex; + flex-direction: row; + justify-content: center; + margin-left: .6em; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-preview .pcr-last-color { + display: none; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-preview .pcr-current-color { + position: relative; + background: var(--pcr-color); + width: 2em; + height: 2em; + border-radius: 50em; + overflow: hidden; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-preview .pcr-current-color::before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('data:image/svg+xml;utf8, '); + background-size: .5em; + border-radius: .15em; + z-index: -1; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-palette { + grid-area: 1 / 1 / 2 / 3; + width: 100%; + height: 100%; + z-index: 1; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-palette .pcr-palette { + border-radius: .15em; + width: 100%; + height: 100%; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-palette .pcr-palette::before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url('data:image/svg+xml;utf8, '); + background-size: .5em; + border-radius: .15em; + z-index: -1; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser { + grid-area: 2 / 2 / 2 / 2; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity { + grid-area: 3 / 2 / 3 / 2; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser, +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity { + height: 0.5em; + margin: 0 .6em; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser .pcr-picker, +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity .pcr-picker { + top: 50%; + transform: translateY(-50%); +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser .pcr-slider, +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity .pcr-slider { + flex-grow: 1; + border-radius: 50em; +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser .pcr-slider { + background: linear-gradient(to right, red, #ff0, lime, cyan, blue, #f0f, red); +} +.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity .pcr-slider { + background: linear-gradient(to right, transparent, black), url('data:image/svg+xml;utf8, '); + background-size: 100%, 0.25em; +} +.pcr-app .pcr-swatches > button { + padding: 0; +} + +/* src/css/pluginCompatibility.css */ pre.code-styler-pre code ~ code.language-output { - display: block; - margin-bottom: 0; - padding-bottom: calc(2.5 * var(--code-padding)) !important; - padding-left: calc(var(--line-number-gutter-padding)) !important; - border-top: var(--header-separator-width) solid var(--code-styler-header-separator-colour); + display: block; + margin-bottom: 0; + padding-bottom: calc(2.5 * var(--code-padding)) !important; + padding-left: calc(var(--line-number-gutter-padding)) !important; + border-top: var(--header-separator-width) solid var(--code-styler-header-separator-colour); } pre.code-styler-pre.code-styler-collapsed code ~ code.language-output { - border-top-color: transparent; - border-top-width: 0; + border-top-color: transparent; + border-top-width: 0; } pre.code-styler-pre:hover code ~ code.language-output { - margin-bottom: 0; + margin-bottom: 0; } pre.code-styler-pre code ~ code.language-output input.interactive-stdin { - color: var(--text-normal); - background-color: var(--code-styler-codeblock-background-colour); - padding: 2px 8px; - border-color: var(--code-comment); - border-style: solid; - border-radius: 5px; - border-width: 1px; + color: var(--text-normal); + background-color: var(--code-styler-codeblock-background-colour); + padding: 2px 8px; + border-color: var(--code-comment); + border-style: solid; + border-radius: 5px; + border-width: 1px; } pre.code-styler-pre code ~ code.language-output hr { - display: none; + display: none; } pre.code-styler-pre button.run-code-button { - --copy-code-header-right-margin: 12px; - --dent-difference: 24px; - height: 14px; - margin-bottom: 6px !important; + --copy-code-header-right-margin: 12px; + --dent-difference: 24px; + height: 14px; + margin-bottom: 6px !important; } pre.code-styler-pre.code-styler-collapsed button.run-code-button { - top: 500px; + top: 500px; } pre.code-styler-pre button.run-code-button::before { - content: "\200b"; - display: inline-block; - width: 14px; - height: 14px; - padding-right: 4px; - background-color: var(--code-styler-button-colour); - -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); - -webkit-mask-repeat: no-repeat; - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); - mask-repeat: no-repeat; - vertical-align: 0px; + content: "\200b"; + display: inline-block; + width: 14px; + height: 14px; + padding-right: 4px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28Z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + vertical-align: 0px; } pre.code-styler-pre button.clear-button-disabled, pre.code-styler-pre button.run-button-disabled { - display: none !important; + display: none !important; } pre.code-styler-pre button.clear-button { - height: 14px; - margin-bottom: 6px !important; - margin-left: calc(var(--language-border-width) + 12px); - will-change: margin-right, clip-path; - clip-path: var(--polygon-in); + height: 14px; + margin-bottom: 6px !important; + margin-left: calc(var(--language-border-width) + 12px); + will-change: margin-right, clip-path; + clip-path: var(--polygon-in); } pre.code-styler-pre button.clear-button::before { - content: "\200b"; - display: inline-block; - width: 14px; - height: 14px; - padding-right: 4px; - background-color: var(--code-styler-button-colour); - -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M16 4 6 14l1.41 1.41L15 7.83V28h2V7.83l7.59 7.58L26 14 16 4z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); - -webkit-mask-repeat: no-repeat; - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M16 4 6 14l1.41 1.41L15 7.83V28h2V7.83l7.59 7.58L26 14 16 4z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); - mask-repeat: no-repeat; - vertical-align: 0px; + content: "\200b"; + display: inline-block; + width: 14px; + height: 14px; + padding-right: 4px; + background-color: var(--code-styler-button-colour); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M16 4 6 14l1.41 1.41L15 7.83V28h2V7.83l7.59 7.58L26 14 16 4z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='M16 4 6 14l1.41 1.41L15 7.83V28h2V7.83l7.59 7.58L26 14 16 4z'/%3E%3Cpath fill='none' d='M0 0h32v32H0z' data-name='<Transparent Rectangle>'/%3E%3C/svg%3E"); + mask-repeat: no-repeat; + vertical-align: 0px; } pre.code-styler-pre button.clear-button:not(:active) { - animation: reverse-indent var(--duration-button); + animation: reverse-indent var(--duration-button); } -pre.code-styler-pre button.clear-button:hover{ - background-color: transparent; - animation: reverse-outdent var(--duration-button); - margin-right: var(--copy-code-header-right-margin); - clip-path: var(--polygon-out); +pre.code-styler-pre button.clear-button:hover { + background-color: transparent; + animation: reverse-outdent var(--duration-button); + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); } pre.code-styler-pre button.clear-button:active { - scale: 0.95; - transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); + scale: 0.95; + transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); } .code-styler-pre-parent.has-run-code-button .load-state-indicator { - color: none; - background: none; - z-index: 10; + color: none; + background: none; + z-index: 10; } .code-styler-pre-parent.has-run-code-button .load-state-indicator::before { - box-shadow: none; + box-shadow: none; } .code-styler-pre-parent.has-run-code-button .load-state-indicator svg { - color: var(--code-styler-button-colour); + color: var(--code-styler-button-colour); } .code-styler-pre-parent.has-run-code-button .load-state-indicator svg:hover { - color: var(--code-styler-button-active-colour); + color: var(--code-styler-button-active-colour); } .code-styler-pre-parent.has-run-code-button .load-state-indicator.visible { - transform: translateX(0); + transform: translateX(0); } - -/** Embed Code Plugin */ .block-language-preview pre.code-styler-pre code { - white-space: unset; + white-space: unset; } pre.code-styler-pre span.code-block-line_num-wrap, pre.code-styler-pre div.code-block-highlight-wrap { - display: none; + display: none; } .markdown-source-view.mod-cm6 .cm-embed-block .code-styler-pre-parent + .edit-block-button::after { - content: 'Edit Block'; - font-size: var(--font-ui-smaller); - padding-left: 4px; + content: "Edit Block"; + font-size: var(--font-ui-smaller); + padding-left: 4px; } .markdown-source-view.mod-cm6 .cm-embed-block:not(:hover) .code-styler-pre-parent + .edit-block-button { - visibility: hidden; - opacity: 0 + visibility: hidden; + opacity: 0; } .markdown-source-view.mod-cm6 .cm-embed-block .code-styler-pre-parent + .edit-block-button { - --copy-code-header-right-margin: calc(2.2 * var(--header-button-spacing)); - --dent-difference: 0px; - --polygon-in: polygon(0 0, 18px 0, 18px 36px, 0 36px); - transition: visibility var(--duration-button), opacity var(--duration-button); - visibility: visible; - opacity: 1; - z-index: 10; - transform: translateY(-50%); - top: max(calc(0.5 * var(--container-height) * 1),calc(0.5 * var(--container-min-height) * 1)); - margin: 0; - margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); - will-change: margin-right, clip-path; - clip-path: var(--polygon-in); - padding: 0; + --copy-code-header-right-margin: calc(2.2 * var(--header-button-spacing)); + --dent-difference: 0px; + --polygon-in: polygon(0 0, 18px 0, 18px 36px, 0 36px); + transition: visibility var(--duration-button), opacity var(--duration-button); + visibility: visible; + opacity: 1; + z-index: 10; + transform: translateY(-50%); + top: max(calc(0.5 * var(--container-height) * 1), calc(0.5 * var(--container-min-height) * 1)); + margin: 0; + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + will-change: margin-right, clip-path; + clip-path: var(--polygon-in); + padding: 0; } -body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .cm-embed-block .code-styler-pre-parent:has( pre.code-styler-pre .code-styler-header-container) + .edit-block-button, -body:not(.code-styler-show-langnames-always) .cm-embed-block .code-styler-pre-parent:not(:has( pre.code-styler-pre .code-styler-header-container-specific)):not(:has( pre.code-styler-pre .code-styler-header-container img.code-styler-icon)) + .edit-block-button, -body .cm-embed-block .code-styler-pre-parent:has( pre.code-styler-pre:not([class*='language-']) .code-styler-header-container) + .edit-block-button { /*? Depending on header visibility */ - --copy-code-header-right-margin: 4px; - top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)); +body:not(.code-styler-show-langicons-always):not(.code-styler-show-langnames-always) .cm-embed-block .code-styler-pre-parent:has(pre.code-styler-pre .code-styler-header-container) + .edit-block-button, +body:not(.code-styler-show-langnames-always) .cm-embed-block .code-styler-pre-parent:not(:has(pre.code-styler-pre .code-styler-header-container-specific)):not(:has(pre.code-styler-pre .code-styler-header-container img.code-styler-icon)) + .edit-block-button, +body .cm-embed-block .code-styler-pre-parent:has(pre.code-styler-pre:not([class*="language-"]) .code-styler-header-container) + .edit-block-button { + --copy-code-header-right-margin: 4px; + top: calc(0.5 * var(--font-text-size) * 0.875 * var(--line-height-normal)); } .markdown-source-view.mod-cm6 .cm-embed-block:hover .code-styler-pre-parent + .edit-block-button:hover { - background: transparent; - animation: reverse-outdent var(--duration-button); - margin-right: var(--copy-code-header-right-margin); - clip-path: var(--polygon-out); + background: transparent; + animation: reverse-outdent var(--duration-button); + margin-right: var(--copy-code-header-right-margin); + clip-path: var(--polygon-out); } .markdown-source-view.mod-cm6 .cm-embed-block:hover .code-styler-pre-parent + .edit-block-button:active { - scale: 0.95; - transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); + scale: 0.95; + transition: scale var(--duration-button) cubic-bezier(0.4, 0.14, 0.3, 1); } - -/** File Include Plugin */ div.block-language-include pre.code-styler-pre button.copy-code-button { - margin: 0; - margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); + margin: 0; + margin-right: calc(var(--copy-code-header-right-margin) - var(--dent-difference)); } div.block-language-include pre.code-styler-pre button.copy-code-button:hover { - margin-right: var(--copy-code-header-right-margin); + margin-right: var(--copy-code-header-right-margin); } + +/* src/styles.css */ +body { + --border-radius: 10px; + --gradient-background-colour: transparent; + --code-padding: 8px; + --container-height: calc(var(--language-icon-size) + 2 * var(--header-inner-vertical-padding) * var(--header-font-size)); + --container-min-height: calc((var(--header-font-size) + 2 * var(--header-inner-vertical-padding) * var(--header-font-size)) * var(--line-height-normal)); + --language-border-colour: var(--code-styler-codeblock-background-colour); + --language-border-width: 0px; + --header-font-size: var(--code-size); + --header-padding: 0px; + --header-inner-vertical-padding: 0.3; + --header-spacing: 15px; + --header-button-spacing: 14px; + --header-separator-width: 2px; + --header-separator-width-padding: var(--header-separator-width); + --code-styler-header-border: none; + --collapsed-bottom-border: 0 solid transparent; + --language-icon-size: 28px; + --language-icon-filter: none; + --gradient-highlights-colour-stop: 100%; + --line-number-height-correction: 2px; + --line-number-gutter-padding: 16px; + --line-number-gutter-min-width: 32.67px; + --line-wrapping: pre-wrap; + --line-active-wrapping: var(--line-wrapping); + --code-styler-button-colour: var(--text-muted); + --code-styler-button-active-colour: white; + --duration-button: 240ms; + --dent-difference: 30px; + --polygon-in: polygon(0 0, 16px 0, 16px 36px, 0 36px); + --polygon-out: polygon(0 0, 100% 0, 100% 100%, 0 100%); + --copy-code-header-right-margin: calc(3 * var(--header-button-spacing)); + --code-styler-inline-font-weight: 400; + --code-styler-inline-border-radius: 6px; + --code-styler-inline-padding-vertical: 5px; + --code-styler-inline-padding-horizontal: 5px; + --code-styler-inline-margin-horizontal: 0px; + --code-styler-inline-colour: var(--code-normal); + --code-styler-inline-colour-active: var(--code-normal); + --code-styler-inline-background-colour: var(--code-background); +} +.setting-item.code-styler-spaced .checkbox-container + .pickr { + padding-left: 10px; +} +.code-styler-donation { + width: 70%; + margin: 0 auto; + text-align: center; +} +.code-styler-setting-text-area textarea { + width: 400px; + height: 220px; +} +/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2Nzcy9jb2RlYmxvY2tzLmNzcyIsICJzcmMvY3NzL2lubGluZUNvZGUuY3NzIiwgInNyYy9jc3MvcGRmRXhwb3J0LmNzcyIsICJzcmMvY3NzL3BpY2tyLmNzcyIsICJzcmMvY3NzL3BsdWdpbkNvbXBhdGliaWxpdHkuY3NzIiwgInNyYy9zdHlsZXMuY3NzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiogUHJlIGVsZW1lbnRzICovXG4uY29kZS1zdHlsZXItcHJlLXBhcmVudHtcblx0bWFyZ2luLWJvdHRvbTogMTZweDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlIHtcblx0YmFja2dyb3VuZDogdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAhaW1wb3J0YW50O1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKSAhaW1wb3J0YW50O1xuXHRtaW4taGVpZ2h0OiB1bnNldDtcblx0cGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG5cdG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlW2NsYXNzKj0nbGFuZ3VhZ2UtJ10ge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWxhbmd1YWdlLWJvcmRlci1jb2xvdXIpLCB2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpLCB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCksIHZhcigtLWNvZGUtc3R5bGVyLWNvZGVibG9jay1iYWNrZ3JvdW5kLWNvbG91cikgMTAwJSkgIWltcG9ydGFudDtcblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgcHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlIHtcblx0ZGlzcGxheTogZ3JpZDtcblx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW4tY29udGVudCBhdXRvO1xuXHRncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG87XG5cdHBhZGRpbmctdG9wOiB2YXIoLS1jb2RlLXBhZGRpbmcpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctYm90dG9tOiB2YXIoLS1jb2RlLXBhZGRpbmcpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItcmFkaXVzOiAwcHggIWltcG9ydGFudDtcblx0YmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuXHR0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IGVhc2UtaW4tb3V0IHZhcigtLWR1cmF0aW9uLWJ1dHRvbiksIHBhZGRpbmcgZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSwgYm9yZGVyLXRvcCBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xuXHRtYXgtaGVpZ2h0OiAwO1xuXHRvdmVyZmxvdy14OiBzY3JvbGw7XG59XG4uY29kZS1zdHlsZXIgcHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlOm5vdCg6aGFzKCA+IGlucHV0W3N0eWxlKj1cImRpc3BsYXk6IGlubGluZTtcIl0pKTphY3RpdmUge1xuXHQtLWxpbmUtd3JhcHBpbmc6IHZhcigtLWxpbmUtYWN0aXZlLXdyYXBwaW5nKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIHByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIGNvZGUge1xuXHRwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIHByZS5jb2RlLXN0eWxlci1wcmU6OmJlZm9yZSxcbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlOjphZnRlciB7XG5cdGNvbnRlbnQ6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5jbS1lbWJlZC1ibG9jayBwcmUuY29kZS1zdHlsZXItcHJlIHtcblx0bWFyZ2luOiAxZW0gMHB4O1xufVxuXG4vKiogRWRpdGluZyBNb2RlIEJvZHkgKi9cbi5jb2RlLXN0eWxlciAubWFya2Rvd24tc291cmNlLXZpZXcgW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4ge1xuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwcHggIWltcG9ydGFudDtcblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IFtjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLkh5cGVyTUQtY29kZWJsb2NrLWVuZCB7XG5cdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG59XG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoIGltZy5jb2RlLXN0eWxlci1pY29uKSkgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5IC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoW2NsYXNzKj0nY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy0nXSkpICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ10pICsgW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5IC5tYXJrZG93bi1zb3VyY2UtdmlldyBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXS5IeXBlck1ELWNvZGVibG9jay1iZWdpbjpudGgtb2YtdHlwZSgxKSB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cykgIWltcG9ydGFudDtcblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tZ3JhZGllbnQtYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3ApLCB0cmFuc3BhcmVudCAxMDAlKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tc2l6ZS00LTQpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXVtjbGFzcyo9J2xhbmd1YWdlLSddIHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSwgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLWNvbG91cikgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSwgdmFyKC0tZ3JhZGllbnQtYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCkgdmFyKC0tZ3JhZGllbnQtaGlnaGxpZ2h0cy1jb2xvdXItc3RvcCksIHRyYW5zcGFyZW50IDEwMCUpLCB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXVtjbGFzcyo9J2xhbmd1YWdlLSddIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHRtYXJnaW4tbGVmdDogdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKTtcbn1cblxuLyoqIEhlYWRlciBzdHlsaW5nICovXG5ib2R5Om5vdChbY2xhc3MqPSdjb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucyddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYyBkaXY6aGFzKD4gaW1nLmNvZGUtc3R5bGVyLWljb24pLFxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cykgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIgZGl2Omhhcyg+IGltZy5jb2RlLXN0eWxlci1pY29uKSB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5ib2R5Om5vdChbY2xhc3MqPSdjb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcyddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYyBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSxcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKCBpbWcuY29kZS1zdHlsZXItaWNvbikpIHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdChbY2xhc3MqPSdsYW5ndWFnZS0nXSksXG5ib2R5IHByZS5jb2RlLXN0eWxlci1wcmU6bm90KFtjbGFzcyo9J2xhbmd1YWdlLSddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbltjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdGZvbnQtc2l6ZTogdmFyKC0taGVhZGVyLWZvbnQtc2l6ZSk7XG5cdHVzZXItc2VsZWN0OiBub25lO1xuXHRoZWlnaHQ6IHZhcigtLWNvbnRhaW5lci1oZWlnaHQpO1xuXHRtaW4taGVpZ2h0OiB2YXIoLS1jb250YWluZXItbWluLWhlaWdodCk7XG5cdHBhZGRpbmctdG9wOiB2YXIoLS1oZWFkZXItcGFkZGluZyk7XG5cdG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyAgXG5cdGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcblx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdHRyYW5zaXRpb246IGJvcmRlci1ib3R0b20gZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0Ym94LXNpemluZzogY29udGVudC1ib3g7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYmFja2dyb3VuZC1jb2xvdXIpIDAlLHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG91cikgY2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLCB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItc2VwYXJhdG9yLWNvbG91cikgY2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLCB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItc2VwYXJhdG9yLWNvbG91cikgMTAwJSkgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSBib3R0b20vMTAwJSBib3JkZXItYm94IG5vLXJlcGVhdCx2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCk7XG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG5cdHBhZGRpbmctYm90dG9tOiB2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKTtcblx0Ym9yZGVyLXRvcDogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJvcmRlcik7XG5cdGJvcmRlci1sZWZ0OiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcblx0Ym9yZGVyLXJpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIHtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJhY2tncm91bmQtY29sb3VyKTtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkgc29saWQgdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLXNlcGFyYXRvci1jb2xvdXIpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ106bm90KDpoYXMoKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4pKSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYmFja2dyb3VuZC1jb2xvdXIpIDAlLHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG91cikgMTAwJSkgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSBib3R0b20vMTAwJSBib3JkZXItYm94IG5vLXJlcGVhdCx2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWJvdHRvbTogdmFyKC0taGVhZGVyLXBhZGRpbmcpO1xuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcblx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItYm90dG9tOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0tY29sbGFwc2VkLWJvdHRvbS1ib3JkZXIpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIHtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0tY29sbGFwc2VkLWJvdHRvbS1ib3JkZXIpO1xufVxuW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0aGVpZ2h0OiAxMDAlO1xuXHRwYWRkaW5nLWxlZnQ6IHZhcigtLWhlYWRlci1zcGFjaW5nKTtcblx0cGFkZGluZy1yaWdodDogdmFyKC0taGVhZGVyLXNwYWNpbmcpO1xuXHRtYXJnaW4tcmlnaHQ6IHZhcigtLWhlYWRlci1zcGFjaW5nKTtcblx0cGFkZGluZy10b3A6IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0cGFkZGluZy1ib3R0b206IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0Zm9udC1zaXplOiBpbmhlcml0O1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKSB2YXIoLS1ib3JkZXItcmFkaXVzKSAwcHggMHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLWJhY2tncm91bmQtY29sb3VyKTtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctdGV4dC1jb2xvdXIpO1xuXHRmb250LXdlaWdodDogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy10ZXh0LWJvbGQsIG5vcm1hbCk7XG5cdGZvbnQtc3R5bGU6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctdGV4dC1pdGFsaWMsIG5vcm1hbCk7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0dHJhbnNpdGlvbjogYm9yZGVyLXJhZGl1cyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBwYWRkaW5nIGVhc2UtaW4tb3V0IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTpub3QoOmhhcygrIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbikpIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdLFxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG59XG4uY29kZS1zdHlsZXItaGVhZGVyLXRleHQge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0YWxpZ24tY29udGVudDogY2VudGVyO1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRwYWRkaW5nLWxlZnQ6IDBweDtcblx0cGFkZGluZy10b3A6IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0cGFkZGluZy1ib3R0b206IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0Zm9udC1zaXplOiBpbmhlcml0O1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLXRleHQtY29sb3VyKTtcblx0Zm9udC13ZWlnaHQ6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci10aXRsZS10ZXh0LWJvbGQsIG5vcm1hbCk7XG5cdGZvbnQtc3R5bGU6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci10aXRsZS10ZXh0LWl0YWxpYywgbm9ybWFsKTtcblx0dHJhbnNpdGlvbjogcGFkZGluZyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxuYm9keTpub3QoW2NsYXNzKj0nY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMnXSkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWMgW2NsYXNzXj1cImNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSxcbmJvZHkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWM6bm90KDpoYXMoIGRpdiA+IGltZy5jb2RlLXN0eWxlci1pY29uKSkgW2NsYXNzXj1cImNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0geyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50O1xufVxuYm9keTpub3QoW2NsYXNzKj0nY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMnXSk6bm90KFtjbGFzcyo9J2NvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzJ10pIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCxcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCxcbmJvZHkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWM6bm90KDpoYXMoIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLVwiXSkpIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1oZWFkZXItc3BhY2luZyk7XG59XG5kaXY6aGFzKD4gaW1nLmNvZGUtc3R5bGVyLWljb24pIHtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRhbGlnbi1jb250ZW50OiBjZW50ZXI7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdHBhZGRpbmctdG9wOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdHBhZGRpbmctYm90dG9tOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0taGVhZGVyLXNwYWNpbmcpO1xuXHRwYWRkaW5nLXJpZ2h0OiB2YXIoLS1oZWFkZXItc3BhY2luZyk7XG5cdHRyYW5zaXRpb246IHBhZGRpbmcgZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcbn1cbi5jb2RlLXN0eWxlci1pY29uIHtcblx0d2lkdGg6IHZhcigtLWxhbmd1YWdlLWljb24tc2l6ZSk7XG5cdGhlaWdodDogdmFyKC0tbGFuZ3VhZ2UtaWNvbi1zaXplKTtcblx0ZmlsdGVyOiB2YXIoLS1sYW5ndWFnZS1pY29uLWZpbHRlcik7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyoqIExpbmVzICovXG5wcmUuY29kZS1zdHlsZXItcHJlIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtaGlnaGxpZ2h0ZWQnXSA+IC5jb2RlLXN0eWxlci1saW5lLXRleHQge1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWdyYWRpZW50LWJhY2tncm91bmQtY29sb3VyKSAwJSB2YXIoLS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAxMDAlKTtcbn1cbi5jb2RlLXN0eWxlci1saW5lLWhpZ2hsaWdodGVkIHtcblx0LS1ncmFkaWVudC1iYWNrZ3JvdW5kLWNvbG91cjogdmFyKC0tY29kZS1zdHlsZXItZGVmYXVsdC1oaWdobGlnaHQtY29sb3VyKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodCAuY20tYWN0aXZlLFxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1lZGl0b3IgLmNtLWFjdGl2ZSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tY29kZS1zdHlsZXItYWN0aXZlLWVkaXRvci1saW5lLWNvbG91ciksIHZhcigtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3ApLCB0cmFuc3BhcmVudCkgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLmNtLWFjdGl2ZSxcbi5jb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQtY29kZWJsb2NrIC5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2tbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXS5jbS1hY3RpdmUge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHZhcigtLWNvZGUtc3R5bGVyLWFjdGl2ZS1jb2RlYmxvY2stbGluZS1jb2xvdXIpLCB2YXIoLS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSkgIWltcG9ydGFudDtcbn1cblxuLyoqIExpbmUgbnVtYmVycyAqL1xuLmNvZGUtc3R5bGVyOm5vdCguY29kZS1zdHlsZXItc2hvdy1saW5lLW51bWJlcnMpIC5jb2RlLXN0eWxlci1saW5lLW51bWJlcixcbi5jb2RlLXN0eWxlci1saW5lLW51bWJlci1oaWRlIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgPiBjb2RlID4gZGl2OmZpcnN0LWNoaWxkID4gW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7IC8qPyBNYWludGFpbiBndXR0ZXIgY29sb3VyIHdoZW4gcGFkZGVkICovXG5cdGJveC1zaGFkb3c6IDBweCBjYWxjKC0xICogdmFyKC0tY29kZS1wYWRkaW5nKSkgdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcblx0dHJhbnNpdGlvbjogYm94LXNoYWRvdyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgPiBjb2RlID4gZGl2OmZpcnN0LWNoaWxkID4gW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7IC8qPyBNYWludGFpbiBndXR0ZXIgY29sb3VyIHdoZW4gcGFkZGVkICovXG5cdGJveC1zaGFkb3c6IDBweCAwcHggdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgPiBjb2RlID4gZGl2Omxhc3QtY2hpbGQgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHsgLyo/IE1haW50YWluIGd1dHRlciBjb2xvdXIgd2hlbiBwYWRkZWQgKi9cblx0Ym94LXNoYWRvdzogMHB4IHZhcigtLWNvZGUtcGFkZGluZykgdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgPiBjb2RlID4gZGl2Om9ubHktY2hpbGQgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHsgLyo/IE1haW50YWluIGd1dHRlciBjb2xvdXIgd2hlbiBwYWRkZWQgKi9cblx0Ym94LXNoYWRvdzogMHB4IGNhbGMoLTEgKiB2YXIoLS1jb2RlLXBhZGRpbmcpKSB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItYmFja2dyb3VuZC1jb2xvdXIpLDBweCB2YXIoLS1jb2RlLXBhZGRpbmcpIHZhcigtLWNvZGUtc3R5bGVyLWd1dHRlci1iYWNrZ3JvdW5kLWNvbG91cik7XG59XG5bY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0cGFkZGluZy1sZWZ0OiBjYWxjKDRweCArIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCkpO1xuXHRwYWRkaW5nLXJpZ2h0OiA4cHg7XG5cdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRtaW4td2lkdGg6IHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1taW4td2lkdGgpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItYmFja2dyb3VuZC1jb2xvdXIpO1xuXHRmb250LXNpemU6IHZhcigtLWNvZGUtc2l6ZSk7XG5cdGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9zcGFjZSk7XG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItdGV4dC1jb2xvdXIpO1xuXHR1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2sgLmNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyLFxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jayAuY29kZS1zdHlsZXItbGluZS1udW1iZXItc3BlY2lmaWMge1xuXHRwYWRkaW5nLXRvcDogdmFyKC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb24pO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGhlaWdodDogMTAwJTtcblx0bWluLXdpZHRoOiBjYWxjKHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1taW4td2lkdGgpIC0gMTJweCk7XG5cdG92ZXJmbG93LXg6IGF1dG87XG5cdGRpcmVjdGlvbjogcnRsO1xuXHRsZWZ0OiAwO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiAuY29kZS1zdHlsZXItbGluZS1udW1iZXIsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luIC5jb2RlLXN0eWxlci1saW5lLW51bWJlci1zcGVjaWZpYyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2stZW5kIC5jb2RlLXN0eWxlci1saW5lLW51bWJlcixcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2stZW5kIC5jb2RlLXN0eWxlci1saW5lLW51bWJlci1zcGVjaWZpYyB7XG5cdHdpZHRoOiB2YXIoLS1saW5lLW51bWJlci1ndXR0ZXItd2lkdGgpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0Z3JpZC1jb2x1bW46IDE7XG5cdHBvc2l0aW9uOiBzdGlja3k7XG5cdHRvcDogLTFweDtcblx0bGVmdDogMDtcblx0Ym9yZGVyLXRvcDogdmFyKC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb24pIHNvbGlkIHRyYW5zcGFyZW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBkaXY6bGFzdC1jaGlsZCA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHR3aWR0aDogdW5zZXQ7XG59XG4uY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCBwcmUuY29kZS1zdHlsZXItcHJlIFtjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lLWhpZ2hsaWdodGVkXCJdIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ncmFkaWVudC1iYWNrZ3JvdW5kLWNvbG91cik7XG59XG4uY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LmNvZGUtc3R5bGVyLWd1dHRlci1oaWdobGlnaHQgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLmNtLWFjdGl2ZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddLFxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1jb2RlYmxvY2suY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uY20tYWN0aXZlIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10sXG4uY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZS1oaWdobGlnaHRlZFwiXSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwKTtcbn1cbi5jb2RlLXN0eWxlci1ndXR0ZXItYWN0aXZlLWxpbmUgLmNtLWFjdGl2ZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlcidde1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWFjdGl2ZS10ZXh0LWNvbG91cik7XG59XG4uY29kZS1zdHlsZXIuY29kZS1zdHlsZXItc2hvdy1saW5lLW51bWJlcnMgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jazpoYXMoLmNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyKSxcbi5jb2RlLXN0eWxlci5jb2RlLXN0eWxlci1zaG93LWxpbmUtbnVtYmVycyAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrOmhhcyguY29kZS1zdHlsZXItbGluZS1udW1iZXItc3BlY2lmaWMpIHtcblx0cGFkZGluZy1sZWZ0OiBjYWxjKDEycHggKyB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpICsgdmFyKC0tbGluZS1udW1iZXItZ3V0dGVyLXdpZHRoKSArIHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1wYWRkaW5nKSkgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrW2NsYXNzKj0nY29kZS1zdHlsZXItbGluZSddOjpiZWZvcmUge1xuXHRjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qKiBMaW5lIHRleHQgKi9cbnByZS5jb2RlLXN0eWxlci1wcmUgPiBjb2RlID4gZGl2W2NsYXNzKj0nY29kZS1zdHlsZXItbGluZSddIHtcblx0ZGlzcGxheTogY29udGVudHMgIWltcG9ydGFudDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgLmNvZGUtc3R5bGVyLWxpbmUtdGV4dCB7XG5cdGZsZXgtYmFzaXM6IDEwMCU7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tbGluZS1udW1iZXItZ3V0dGVyLXBhZGRpbmcpO1xuXHRncmlkLWNvbHVtbjogMjtcbn1cbi5IeXBlck1ELWNvZGVibG9jazpoYXMoPiAuY20td2lkZ2V0QnVmZmVyKSB7IC8qPyBQcmV2ZW50IExpbmUgV3JhcHMgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5IeXBlck1ELWNvZGVibG9jazpoYXMoPiAuY20td2lkZ2V0QnVmZmVyKSA+IC5jbS1obWQtY29kZWJsb2NrIHsgLyo/IFByZXZlbnQgTGluZSBXcmFwcyAqL1xuXHR3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzO1xufVxuXG4vKiogQnV0dG9ucyAqL1xuQGtleWZyYW1lcyBvdXRkZW50IHtcblx0ZnJvbSB7XG5cdFx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKSAtIHZhcigtLWRlbnQtZGlmZmVyZW5jZSkpO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1pbik7XG5cdH1cblx0dG8ge1xuXHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG59XG5Aa2V5ZnJhbWVzIGluZGVudCB7XG5cdGZyb20ge1xuXHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG5cdHRvIHtcblx0XHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pIC0gdmFyKC0tZGVudC1kaWZmZXJlbmNlKSk7XG5cdFx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcblx0fVxufVxuQGtleWZyYW1lcyByZXZlcnNlLW91dGRlbnQge1xuXHRmcm9tIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xuXHR9XG5cdHRvIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcblx0fVxufVxuQGtleWZyYW1lcyByZXZlcnNlLWluZGVudCB7XG5cdGZyb20ge1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG5cdHRvIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xuXHR9XG59XG4ubWFya2Rvd24tcmVuZGVyZWQgcHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24ge1xuICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSwgb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRvcGFjaXR5OiAxO1xuXHRkaXNwbGF5OiB1bnNldCAhaW1wb3J0YW50O1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cikgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0Ym94LXNoYWRvdzogbm9uZTtcblx0Zm9udC1mYW1pbHk6IHZhcigtLWZvbnQtaW50ZXJmYWNlKTtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXVpLXNtYWxsZXIpO1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcblx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcblx0bWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZTpub3QoLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCk6bm90KDpob3ZlcikgYnV0dG9uLFxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgYnV0dG9uLFxucHJlLmNvZGUtc3R5bGVyLXByZTpub3QoLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCk6bm90KDpob3ZlcikgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddOjphZnRlciB7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0b3BhY2l0eTogMFxufVxuW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddOjphZnRlciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0dG9wOiAwO1xuXHRib3R0b206IDA7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xuXHRtYXJnaW46IGF1dG87XG5cdG1hcmdpbi1yaWdodDogdmFyKC0taGVhZGVyLWJ1dHRvbi1zcGFjaW5nKTtcblx0Y29udGVudDogXCJcXDIwMGJcIjtcblx0d2lkdGg6IDIwcHg7XG5cdGhlaWdodDogMjBweDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG5cdC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMicgeG1sOnNwYWNlPSdwcmVzZXJ2ZSclM0UlM0NwYXRoIGQ9J00xNiAyMiA2IDEybDEuNC0xLjQgOC42IDguNiA4LjYtOC42TDI2IDEyeicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHQtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInIGZpbGw9J25vbmUnIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgJTNFJTNDcG9seWxpbmUgcG9pbnRzPSc2IDkgMTIgMTUgMTggOScvJTNFJTNDL3N2ZyUzRVwiKTtcblx0bWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTtcblx0b3BhY2l0eTogMTtcblx0c2NhbGU6IDAuODtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tYnV0dG9uKSBlYXNlLW91dCwgdmlzaWJpbGl0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLWJ1dHRvbiksIHNjYWxlIHZhcigtLWR1cmF0aW9uLWJ1dHRvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4xNCwgMC4zLCAxKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTo6YWZ0ZXIsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTpub3QoOmhhcygrIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbikpOjphZnRlciB7XG5cdHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG59XG5bY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ106aG92ZXI6OmFmdGVyIHtcblx0c2NhbGU6IDE7XG59XG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgcHJlLmNvZGUtc3R5bGVyLXByZTpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyKSBidXR0b24uY29weS1jb2RlLWJ1dHRvbixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIHByZS5jb2RlLXN0eWxlci1wcmU6bm90KDpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljKSk6bm90KDpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIGltZy5jb2RlLXN0eWxlci1pY29uKSkgYnV0dG9uLmNvcHktY29kZS1idXR0b24sXG5ib2R5IHByZS5jb2RlLXN0eWxlci1wcmU6bm90KFtjbGFzcyo9J2xhbmd1YWdlLSddKTpoYXMoLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIpIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uIHsgLyo/IERlcGVuZGluZyBvbiBoZWFkZXIgdmlzaWJpbGl0eSAqL1xuXHR0b3A6IGNhbGMoMC41ICogdmFyKC0tZm9udC10ZXh0LXNpemUpICogMC44NzUgKiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpKSAhaW1wb3J0YW50O1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiAxMnB4O1xufVxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cyk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKCBpbWcuY29kZS1zdHlsZXItaWNvbikpICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKFtjbGFzcyo9J2NvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctJ10pKSArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luIHNwYW4uY29kZS1ibG9jay1mbGFpcixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoIGltZy5jb2RlLXN0eWxlci1pY29uKSkgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4gc3Bhbi5jb2RlLWJsb2NrLWZsYWlyLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKFtjbGFzcyo9J2NvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctJ10pKSArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiBzcGFuLmNvZGUtYmxvY2stZmxhaXIgeyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdHRvcDogY2FsYygwLjUgKiB2YXIoLS1mb250LXRleHQtc2l6ZSkgKiAwLjg3NSAqIHZhcigtLWxpbmUtaGVpZ2h0LW5vcm1hbCkpICFpbXBvcnRhbnQ7XG5cdC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW46IDEycHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHR0b3A6IG1heChjYWxjKDAuNSAqIHZhcigtLWNvbnRhaW5lci1oZWlnaHQpICogMSksY2FsYygwLjUgKiB2YXIoLS1jb250YWluZXItbWluLWhlaWdodCkgKiAxKSkgIWltcG9ydGFudDtcblx0Ym90dG9tOiB1bnNldCAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbixcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbiwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyIHtcblx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKSAtIHZhcigtLWRlbnQtZGlmZmVyZW5jZSkpO1xuXHR3aWxsLWNoYW5nZTogbWFyZ2luLXJpZ2h0LCBjbGlwLXBhdGg7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1pbik7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOm5vdCg6YWN0aXZlKSxcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbjpub3QoOmFjdGl2ZSksIC8qPyBFeGVjdXRlIENvZGUgUGx1Z2luIENvbXBhdGliaWxpdHkgKi9cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpcjpub3QoOmFjdGl2ZSkge1xuXHRhbmltYXRpb246IGluZGVudCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbjpob3ZlcixcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbjpob3ZlciwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOmhvdmVye1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0YW5pbWF0aW9uOiBvdXRkZW50IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNvcHktY29kZS1idXR0b246YWN0aXZlLFxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24ucnVuLWNvZGUtYnV0dG9uOmFjdGl2ZSwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOmFjdGl2ZSB7XG5cdHNjYWxlOiAwLjk1O1xuXHR0cmFuc2l0aW9uOiBzY2FsZSB2YXIoLS1kdXJhdGlvbi1idXR0b24pIGN1YmljLWJlemllcigwLjQsIDAuMTQsIDAuMywgMSk7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOjpiZWZvcmUsXG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuSHlwZXJNRC1jb2RlYmxvY2suY29kZS1zdHlsZXItbGluZSBzcGFuLmNvZGUtYmxvY2stZmxhaXI6OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFwyMDBiXCI7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6IDE0cHg7XG5cdGhlaWdodDogMTRweDtcblx0cGFkZGluZy1yaWdodDogNHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1idXR0b24tY29sb3VyKTtcblx0LXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTI4IDEwdjE4SDEwVjEwaDE4bTAtMkgxMGEyIDIgMCAwIDAtMiAydjE4YTIgMiAwIDAgMCAyIDJoMThhMiAyIDAgMCAwIDItMlYxMGEyIDIgMCAwIDAtMi0yWicvJTNFJTNDcGF0aCBkPSdNNCAxOEgyVjRhMiAyIDAgMCAxIDItMmgxNHYySDRaJy8lM0UlM0NwYXRoIGZpbGw9J25vbmUnIGQ9J00wIDBoMzJ2MzJIMHonIGRhdGEtbmFtZT0nJmx0O1RyYW5zcGFyZW50IFJlY3RhbmdsZSZndDsnLyUzRSUzQy9zdmclM0VcIik7XG5cdC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0bWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMiclM0UlM0NwYXRoIGQ9J00yOCAxMHYxOEgxMFYxMGgxOG0wLTJIMTBhMiAyIDAgMCAwLTIgMnYxOGEyIDIgMCAwIDAgMiAyaDE4YTIgMiAwIDAgMCAyLTJWMTBhMiAyIDAgMCAwLTItMlonLyUzRSUzQ3BhdGggZD0nTTQgMThIMlY0YTIgMiAwIDAgMSAyLTJoMTR2Mkg0WicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6JyBkYXRhLW5hbWU9JyZsdDtUcmFuc3BhcmVudCBSZWN0YW5nbGUmZ3Q7Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHRtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogMXB4O1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRmb250LXNpemU6IDA7XG5cdHRvcDogbWluKGNhbGMoLTAuNSAqIHZhcigtLWNvbnRhaW5lci1oZWlnaHQpICogMS4xIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLGNhbGMoLTAuNSAqIHZhcigtLWNvbnRhaW5lci1taW4taGVpZ2h0KSAqIDEuMSAtIHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpKSkgIWltcG9ydGFudDtcblx0cmlnaHQ6IDA7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsaW5lLWhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpciA+ICoge1xuXHR3aWR0aDogMHB4O1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOjpiZWZvcmUge1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRvcGFjaXR5OiAxO1xuXHR2ZXJ0aWNhbC1hbGlnbjogLTFweDtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXVpLXNtYWxsZXIpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOjphZnRlciB7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdG9wYWNpdHk6IDE7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZm9udC11aS1zbWFsbGVyKTtcblx0Y29udGVudDogJ0NvcHknO1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4uY29kZS1zdHlsZXItbGluZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuIiwgIi8qKiBJbmxpbmUgQ29kZSAqL1xuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20taW5saW5lLWNvZGUsXG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXJlbmRlcmVkIDpub3QocHJlKSA+IGNvZGUge1xuXHRmb250LXdlaWdodDogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWZvbnQtd2VpZ2h0KTtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXIpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYmFja2dyb3VuZC1jb2xvdXIpICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy12ZXJ0aWNhbCkgdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctaG9yaXpvbnRhbCkgIWltcG9ydGFudDtcblx0bWFyZ2luOiAwcHggdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLW1hcmdpbi1ob3Jpem9udGFsKSAhaW1wb3J0YW50O1xufVxuXG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1mb3JtYXR0aW5nLWNvZGUgeyAvKj8gU3RhbmRhbG9uZSBiYWNrdGlja3MgKi9cblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlKTtcblx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG59XG5cbi5jb2RlLXN0eWxlciAuY20tcy1vYnNpZGlhbiBzcGFuLmNtLWZvcm1hdHRpbmctY29kZTpoYXMoKyBzcGFuLmNtLWlubGluZS1jb2RlOm5vdCguY20tZm9ybWF0dGluZy1jb2RlKSkgey8qPyBGaXJzdCBiYWNrdGljayAqL1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWNvbG91ci1hY3RpdmUpO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYm9yZGVyLXJhZGl1cykgMHB4IDBweCB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYm9yZGVyLXJhZGl1cykgIWltcG9ydGFudDtcblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy1ob3Jpem9udGFsKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwcHggIWltcG9ydGFudDtcblx0bWFyZ2luLWxlZnQ6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1tYXJnaW4taG9yaXpvbnRhbCkgIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDtcbn1cblxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20tZm9ybWF0dGluZy1jb2RlICsgc3Bhbi5jbS1pbmxpbmUtY29kZTpub3QoLmNtLWZvcm1hdHRpbmctY29kZSkgeyAvKj8gSW5uZXIgY29kZSB3aXRoIGJhY2t0aWNrcyAqL1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWNvbG91ci1hY3RpdmUpO1xuXHRib3JkZXItcmFkaXVzOiAwcHggIWltcG9ydGFudDtcblx0cGFkZGluZy1sZWZ0OiAwcHggIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG5cdG1hcmdpbjogMHB4IDBweCAhaW1wb3J0YW50O1xufVxuXG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1pbmxpbmUtY29kZTpub3QoLmNtLWZvcm1hdHRpbmctY29kZSkgKyBzcGFuLmNtLWZvcm1hdHRpbmctY29kZSB7Lyo/IExhc3QgYmFja3RpY2sgKi9cblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlKTtcblx0Ym9yZGVyLXJhZGl1czogMHB4IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzKSB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYm9yZGVyLXJhZGl1cykgMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1wYWRkaW5nLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtbWFyZ2luLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXJlbmRlcmVkIDpub3QocHJlKSA+IGNvZGUgaW1nLmNvZGUtc3R5bGVyLWlubGluZS1pY29uIHtcblx0aGVpZ2h0OiBjYWxjKHZhcigtLWNvZGUtc2l6ZSkgKiAxLjIpO1xuXHRtYXJnaW4tYm90dG9tOiAycHg7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXJlbmRlcmVkIDpub3QocHJlKSA+IGNvZGUgLmNvZGUtc3R5bGVyLWlubGluZS10aXRsZSB7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGUtZm9udC13ZWlnaHQpO1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXRpdGxlLWNvbG9yKTtcbn1cbi5jb2RlLXN0eWxlciAubWFya2Rvd24tcmVuZGVyZWQgOm5vdChwcmUpID4gY29kZSAuY29kZS1zdHlsZXItaW5saW5lLXRpdGxlOjphZnRlciB7XG5cdGNvbnRlbnQ6ICdcXEZGNUMnO1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXRpdGxlLWNvbG9yKTtcbn1cbi5jb2RlLXN0eWxlciAubWFya2Rvd24tcmVuZGVyZWQgOm5vdChwcmUpID4gY29kZSBzcGFuOmhhcyggPiBpbWcuY29kZS1zdHlsZXItaW5saW5lLWljb24pIHtcblx0cGFkZGluZy1yaWdodDogOHB4O1xufVxuIiwgImRpdi5wcmludCB7XG5cdC0tbGluZS13cmFwcGluZzogcHJlLXdyYXAgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciBkaXYucHJpbnQgcHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlIHtcblx0bWF4LWhlaWdodDogdW5zZXQ7XG59XG4uY29kZS1zdHlsZXIgZGl2LnByaW50IHByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIGNvZGUge1xuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4iLCAiLyoqIFBpY2tyIDEuOC4yIE1JVCB8IGh0dHBzOi8vZ2l0aHViLmNvbS9TaW1vbndlcC9waWNrciAqL1xuLnBpY2tyIHtwb3NpdGlvbjogcmVsYXRpdmU7b3ZlcmZsb3c6IHZpc2libGU7dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApfSAgLnBpY2tyICoge2JveC1zaXppbmc6IGJvcmRlci1ib3g7b3V0bGluZTogbm9uZTtib3JkZXI6IG5vbmU7YXBwZWFyYW5jZTogbm9uZTstd2Via2l0LWFwcGVhcmFuY2U6IG5vbmV9ICAucGlja3IgLnBjci1idXR0b24ge3Bvc2l0aW9uOiByZWxhdGl2ZTtoZWlnaHQ6IDJlbTt3aWR0aDogMmVtO3BhZGRpbmc6IDAuNWVtO2N1cnNvcjogcG9pbnRlcjtmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7Ym9yZGVyLXJhZGl1czogLjE1ZW07YmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MCA1MFwiIHN0cm9rZT1cIiUyMzQyNDQ1QVwiIHN0cm9rZS13aWR0aD1cIjVweFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj48cGF0aCBkPVwiTTQ1LDQ1TDUsNVwiPjwvcGF0aD48cGF0aCBkPVwiTTQ1LDVMNSw0NVwiPjwvcGF0aD48L3N2Zz4nKSBuby1yZXBlYXQgY2VudGVyO2JhY2tncm91bmQtc2l6ZTogMDt0cmFuc2l0aW9uOiBhbGwgMC4zc30gIC5waWNrciAucGNyLWJ1dHRvbjo6YmVmb3JlIHtwb3NpdGlvbjogYWJzb2x1dGU7Y29udGVudDogJyc7dG9wOiAwO2xlZnQ6IDA7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO2JhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMiAyXCI+PHBhdGggZmlsbD1cIndoaXRlXCIgZD1cIk0xLDBIMlYxSDFWMFpNMCwxSDFWMkgwVjFaXCIvPjxwYXRoIGZpbGw9XCJncmF5XCIgZD1cIk0wLDBIMVYxSDBWMFpNMSwxSDJWMkgxVjFaXCIvPjwvc3ZnPicpO2JhY2tncm91bmQtc2l6ZTogLjVlbTtib3JkZXItcmFkaXVzOiAuMTVlbTt6LWluZGV4OiAtMX0gIC5waWNrciAucGNyLWJ1dHRvbjo6YmVmb3JlIHt6LWluZGV4OiBpbml0aWFsfSAgLnBpY2tyIC5wY3ItYnV0dG9uOjphZnRlciB7cG9zaXRpb246IGFic29sdXRlO2NvbnRlbnQ6ICcnO3RvcDogMDtsZWZ0OiAwO2hlaWdodDogMTAwJTt3aWR0aDogMTAwJTt0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuM3M7YmFja2dyb3VuZDogdmFyKC0tcGNyLWNvbG9yKTtib3JkZXItcmFkaXVzOiAuMTVlbX0gIC5waWNrciAucGNyLWJ1dHRvbi5jbGVhciB7YmFja2dyb3VuZC1zaXplOiA3MCV9ICAucGlja3IgLnBjci1idXR0b24uY2xlYXI6OmJlZm9yZSB7b3BhY2l0eTogMH0gIC5waWNrciAucGNyLWJ1dHRvbi5jbGVhcjpmb2N1cyB7Ym94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NSksIDAgMCAwIDNweCB2YXIoLS1wY3ItY29sb3IpfSAgLnBpY2tyIC5wY3ItYnV0dG9uLmRpc2FibGVkIHtjdXJzb3I6IG5vdC1hbGxvd2VkfSAgLnBpY2tyICosIC5wY3ItYXBwICoge2JveC1zaXppbmc6IGJvcmRlci1ib3g7b3V0bGluZTogbm9uZTtib3JkZXI6IG5vbmU7YXBwZWFyYW5jZTogbm9uZTstd2Via2l0LWFwcGVhcmFuY2U6IG5vbmV9ICAucGlja3IgaW5wdXQ6Zm9jdXMsIC5waWNrciBpbnB1dC5wY3ItYWN0aXZlLCAucGlja3IgYnV0dG9uOmZvY3VzLCAucGlja3IgYnV0dG9uLnBjci1hY3RpdmUsIC5wY3ItYXBwIGlucHV0OmZvY3VzLCAucGNyLWFwcCBpbnB1dC5wY3ItYWN0aXZlLCAucGNyLWFwcCBidXR0b246Zm9jdXMsIC5wY3ItYXBwIGJ1dHRvbi5wY3ItYWN0aXZlIHtib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSwgMCAwIDAgM3B4IHZhcigtLXBjci1jb2xvcil9ICAucGlja3IgLnBjci1wYWxldHRlLCAucGlja3IgLnBjci1zbGlkZXIsIC5wY3ItYXBwIC5wY3ItcGFsZXR0ZSwgLnBjci1hcHAgLnBjci1zbGlkZXIge3RyYW5zaXRpb246IGJveC1zaGFkb3cgMC4zc30gIC5waWNrciAucGNyLXBhbGV0dGU6Zm9jdXMsIC5waWNrciAucGNyLXNsaWRlcjpmb2N1cywgLnBjci1hcHAgLnBjci1wYWxldHRlOmZvY3VzLCAucGNyLWFwcCAucGNyLXNsaWRlcjpmb2N1cyB7Ym94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NSksIDAgMCAwIDNweCByZ2JhKDAsIDAsIDAsIDAuMjUpfSAgLnBjci1hcHAge3Bvc2l0aW9uOiBmaXhlZDtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47ei1pbmRleDogMTAwMDA7Ym9yZGVyLXJhZGl1czogMC4xZW07YmFja2dyb3VuZDogI2ZmZjtvcGFjaXR5OiAwO3Zpc2liaWxpdHk6IGhpZGRlbjt0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MsIHZpc2liaWxpdHkgMHMgMC4zcztmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7Ym94LXNoYWRvdzogMCAwLjE1ZW0gMS41ZW0gMCByZ2JhKDAsIDAsIDAsIDAuMSksIDAgMCAxZW0gMCByZ2JhKDAsIDAsIDAsIDAuMDMpO2xlZnQ6IDA7dG9wOiAwfSAgLnBjci1hcHAudmlzaWJsZSB7dHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzO3Zpc2liaWxpdHk6IHZpc2libGU7b3BhY2l0eTogMX0gIC5wY3ItYXBwIC5wY3Itc3dhdGNoZXMge2Rpc3BsYXk6IGZsZXg7ZmxleC13cmFwOiB3cmFwO21hcmdpbi10b3A6IDAuNzVlbX0gIC5wY3ItYXBwIC5wY3Itc3dhdGNoZXMucGNyLWxhc3Qge21hcmdpbjogMH0gIEBzdXBwb3J0cyAoZGlzcGxheTogZ3JpZCkgeyAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyB7ZGlzcGxheTogZ3JpZDthbGlnbi1pdGVtczogY2VudGVyO2dyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCAxLjc1ZW0pfSAgfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbiB7Zm9udC1zaXplOiAxZW07cG9zaXRpb246IHJlbGF0aXZlO3dpZHRoOiBjYWxjKDEuNzVlbSAtIDEwcHgpO2hlaWdodDogY2FsYygxLjc1ZW0gLSAxMHB4KTtib3JkZXItcmFkaXVzOiAwLjE1ZW07Y3Vyc29yOiBwb2ludGVyO21hcmdpbjogMi41cHg7ZmxleC1zaHJpbms6IDA7anVzdGlmeS1zZWxmOiBjZW50ZXI7dHJhbnNpdGlvbjogYWxsIDAuMTVzO292ZXJmbG93OiBoaWRkZW47YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7ei1pbmRleDogMX0gIC5wY3ItYXBwIC5wY3Itc3dhdGNoZXMgPiBidXR0b246OmJlZm9yZSB7cG9zaXRpb246IGFic29sdXRlO2NvbnRlbnQ6ICcnO3RvcDogMDtsZWZ0OiAwO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtiYWNrZ3JvdW5kOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIgMlwiPjxwYXRoIGZpbGw9XCJ3aGl0ZVwiIGQ9XCJNMSwwSDJWMUgxVjBaTTAsMUgxVjJIMFYxWlwiLz48cGF0aCBmaWxsPVwiZ3JheVwiIGQ9XCJNMCwwSDFWMUgwVjBaTTEsMUgyVjJIMVYxWlwiLz48L3N2Zz4nKTtiYWNrZ3JvdW5kLXNpemU6IDZweDtib3JkZXItcmFkaXVzOiAuMTVlbTt6LWluZGV4OiAtMX0gIC5wY3ItYXBwIC5wY3Itc3dhdGNoZXMgPiBidXR0b246OmFmdGVyIHtjb250ZW50OiAnJztwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAwO2xlZnQ6IDA7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO2JhY2tncm91bmQ6IHZhcigtLXBjci1jb2xvcik7Ym9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjA1KTtib3JkZXItcmFkaXVzOiAwLjE1ZW07Ym94LXNpemluZzogYm9yZGVyLWJveH0gIC5wY3ItYXBwIC5wY3Itc3dhdGNoZXMgPiBidXR0b246aG92ZXIge2ZpbHRlcjogYnJpZ2h0bmVzcygxLjA1KX0gIC5wY3ItYXBwIC5wY3Itc3dhdGNoZXMgPiBidXR0b246bm90KC5wY3ItYWN0aXZlKSB7Ym94LXNoYWRvdzogbm9uZX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24ge2Rpc3BsYXk6IGZsZXg7ZmxleC13cmFwOiB3cmFwO2FsaWduLWl0ZW1zOiBjZW50ZXI7bWFyZ2luOiAwIC0wLjJlbSAwIC0wLjJlbX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gPiAqIHttYXJnaW46IDAgMC4yZW19ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIGlucHV0IHtsZXR0ZXItc3BhY2luZzogMC4wN2VtO2ZvbnQtc2l6ZTogMC43NWVtO3RleHQtYWxpZ246IGNlbnRlcjtjdXJzb3I6IHBvaW50ZXI7Y29sb3I6ICM3NTc5N2U7YmFja2dyb3VuZDogI2YxZjNmNDtib3JkZXItcmFkaXVzOiAuMTVlbTt0cmFuc2l0aW9uOiBhbGwgMC4xNXM7cGFkZGluZzogMC40NWVtIDAuNWVtO21hcmdpbi10b3A6IDAuNzVlbX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gaW5wdXQ6aG92ZXIge2ZpbHRlcjogYnJpZ2h0bmVzcygwLjk3NSl9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIGlucHV0OmZvY3VzIHtib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSwgMCAwIDAgM3B4IHJnYmEoNjYsIDEzMywgMjQ0LCAwLjc1KX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1yZXN1bHQge2NvbG9yOiAjNzU3OTdlO3RleHQtYWxpZ246IGxlZnQ7ZmxleDogMSAxIDhlbTttaW4td2lkdGg6IDhlbTt0cmFuc2l0aW9uOiBhbGwgMC4ycztib3JkZXItcmFkaXVzOiAuMTVlbTtiYWNrZ3JvdW5kOiAjZjFmM2Y0O2N1cnNvcjogdGV4dH0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1yZXN1bHQ6Oi1tb3otc2VsZWN0aW9uIHtiYWNrZ3JvdW5kOiAjNDI4NWY0O2NvbG9yOiAjZmZmfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXJlc3VsdDo6c2VsZWN0aW9uIHtiYWNrZ3JvdW5kOiAjNDI4NWY0O2NvbG9yOiAjZmZmfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXR5cGUuYWN0aXZlIHtjb2xvcjogI2ZmZjtiYWNrZ3JvdW5kOiAjNDI4NWY0fSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXNhdmUsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jYW5jZWwsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jbGVhciB7Y29sb3I6ICNmZmY7d2lkdGg6IGF1dG99ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3Itc2F2ZSwgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNhbmNlbCwgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNsZWFyIHtjb2xvcjogI2ZmZn0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1zYXZlOmhvdmVyLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2FuY2VsOmhvdmVyLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2xlYXI6aG92ZXIge2ZpbHRlcjogYnJpZ2h0bmVzcygwLjkyNSl9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3Itc2F2ZSB7YmFja2dyb3VuZDogIzQyODVmNH0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jbGVhciwgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNhbmNlbCB7YmFja2dyb3VuZDogI2Y0NDI1MH0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jbGVhcjpmb2N1cywgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNhbmNlbDpmb2N1cyB7Ym94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NSksIDAgMCAwIDNweCByZ2JhKDI0NCwgNjYsIDgwLCAwLjc1KX0gIC5wY3ItYXBwIC5wY3Itc2VsZWN0aW9uIC5wY3ItcGlja2VyIHtwb3NpdGlvbjogYWJzb2x1dGU7aGVpZ2h0OiAxOHB4O3dpZHRoOiAxOHB4O2JvcmRlcjogMnB4IHNvbGlkICNmZmY7Ym9yZGVyLXJhZGl1czogMTAwJTstd2Via2l0LXVzZXItc2VsZWN0OiBub25lOy1tb3otdXNlci1zZWxlY3Q6IG5vbmU7LW1zLXVzZXItc2VsZWN0OiBub25lO3VzZXItc2VsZWN0OiBub25lfSAgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wYWxldHRlLCAucGNyLWFwcCAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLWNob29zZXIsIC5wY3ItYXBwIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3Itb3BhY2l0eSB7cG9zaXRpb246IHJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7LW1vei11c2VyLXNlbGVjdDogbm9uZTstbXMtdXNlci1zZWxlY3Q6IG5vbmU7dXNlci1zZWxlY3Q6IG5vbmU7ZGlzcGxheTogZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2N1cnNvcjogZ3JhYjtjdXJzb3I6IC13ZWJraXQtZ3JhYn0gIC5wY3ItYXBwIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcGFsZXR0ZTphY3RpdmUsIC5wY3ItYXBwIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlcjphY3RpdmUsIC5wY3ItYXBwIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3Itb3BhY2l0eTphY3RpdmUge2N1cnNvcjogZ3JhYmJpbmc7Y3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIHt3aWR0aDogMTQuMjVlbTttYXgtd2lkdGg6IDk1dnd9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zd2F0Y2hlcyB7bWFyZ2luLXRvcDogLjZlbTtwYWRkaW5nOiAwIC42ZW19ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1pbnRlcmFjdGlvbiB7cGFkZGluZzogMCAuNmVtIC42ZW0gLjZlbX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiB7ZGlzcGxheTogZ3JpZDtncmlkLWdhcDogLjZlbTtncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciA0ZnI7Z3JpZC10ZW1wbGF0ZS1yb3dzOiA1ZnIgYXV0byBhdXRvO2FsaWduLWl0ZW1zOiBjZW50ZXI7aGVpZ2h0OiAxMC41ZW07d2lkdGg6IDEwMCU7YWxpZ24tc2VsZjogZmxleC1zdGFydH0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXByZXZpZXcge2dyaWQtYXJlYTogMiAvIDEgLyA0IC8gMTtoZWlnaHQ6IDEwMCU7d2lkdGg6IDEwMCU7ZGlzcGxheTogZmxleDtmbGV4LWRpcmVjdGlvbjogcm93O2p1c3RpZnktY29udGVudDogY2VudGVyO21hcmdpbi1sZWZ0OiAuNmVtfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcHJldmlldyAucGNyLWxhc3QtY29sb3Ige2Rpc3BsYXk6IG5vbmV9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wcmV2aWV3IC5wY3ItY3VycmVudC1jb2xvciB7cG9zaXRpb246IHJlbGF0aXZlO2JhY2tncm91bmQ6IHZhcigtLXBjci1jb2xvcik7d2lkdGg6IDJlbTtoZWlnaHQ6IDJlbTtib3JkZXItcmFkaXVzOiA1MGVtO292ZXJmbG93OiBoaWRkZW59ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wcmV2aWV3IC5wY3ItY3VycmVudC1jb2xvcjo6YmVmb3JlIHtwb3NpdGlvbjogYWJzb2x1dGU7Y29udGVudDogJyc7dG9wOiAwO2xlZnQ6IDA7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO2JhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMiAyXCI+PHBhdGggZmlsbD1cIndoaXRlXCIgZD1cIk0xLDBIMlYxSDFWMFpNMCwxSDFWMkgwVjFaXCIvPjxwYXRoIGZpbGw9XCJncmF5XCIgZD1cIk0wLDBIMVYxSDBWMFpNMSwxSDJWMkgxVjFaXCIvPjwvc3ZnPicpO2JhY2tncm91bmQtc2l6ZTogLjVlbTtib3JkZXItcmFkaXVzOiAuMTVlbTt6LWluZGV4OiAtMX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXBhbGV0dGUge2dyaWQtYXJlYTogMSAvIDEgLyAyIC8gMzt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7ei1pbmRleDogMX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXBhbGV0dGUgLnBjci1wYWxldHRlIHtib3JkZXItcmFkaXVzOiAuMTVlbTt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCV9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wYWxldHRlIC5wY3ItcGFsZXR0ZTo6YmVmb3JlIHtwb3NpdGlvbjogYWJzb2x1dGU7Y29udGVudDogJyc7dG9wOiAwO2xlZnQ6IDA7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO2JhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMiAyXCI+PHBhdGggZmlsbD1cIndoaXRlXCIgZD1cIk0xLDBIMlYxSDFWMFpNMCwxSDFWMkgwVjFaXCIvPjxwYXRoIGZpbGw9XCJncmF5XCIgZD1cIk0wLDBIMVYxSDBWMFpNMSwxSDJWMkgxVjFaXCIvPjwvc3ZnPicpO2JhY2tncm91bmQtc2l6ZTogLjVlbTtib3JkZXItcmFkaXVzOiAuMTVlbTt6LWluZGV4OiAtMX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLWNob29zZXIge2dyaWQtYXJlYTogMiAvIDIgLyAyIC8gMn0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLW9wYWNpdHkge2dyaWQtYXJlYTogMyAvIDIgLyAzIC8gMn0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLWNob29zZXIsIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLW9wYWNpdHkge2hlaWdodDogMC41ZW07bWFyZ2luOiAwIC42ZW19ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1jaG9vc2VyIC5wY3ItcGlja2VyLCAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5IC5wY3ItcGlja2VyIHt0b3A6IDUwJTt0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSl9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1jaG9vc2VyIC5wY3Itc2xpZGVyLCAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5IC5wY3Itc2xpZGVyIHtmbGV4LWdyb3c6IDE7Ym9yZGVyLXJhZGl1czogNTBlbX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLWNob29zZXIgLnBjci1zbGlkZXIge2JhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmVkLCAjZmYwLCBsaW1lLCBjeWFuLCBibHVlLCAjZjBmLCByZWQpfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3Itb3BhY2l0eSAucGNyLXNsaWRlciB7YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgYmxhY2spLCB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIgMlwiPjxwYXRoIGZpbGw9XCJ3aGl0ZVwiIGQ9XCJNMSwwSDJWMUgxVjBaTTAsMUgxVjJIMFYxWlwiLz48cGF0aCBmaWxsPVwiZ3JheVwiIGQ9XCJNMCwwSDFWMUgwVjBaTTEsMUgyVjJIMVYxWlwiLz48L3N2Zz4nKTtiYWNrZ3JvdW5kLXNpemU6IDEwMCUsIDAuMjVlbX1cbi5wY3ItYXBwIC5wY3Itc3dhdGNoZXMgPiBidXR0b24ge1xuXHRwYWRkaW5nOiAwO1xufVxuIiwgIi8qKiBFeGVjdXRlIENvZGUgUGx1Z2luICovXG5wcmUuY29kZS1zdHlsZXItcHJlIGNvZGUgfiBjb2RlLmxhbmd1YWdlLW91dHB1dCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRtYXJnaW4tYm90dG9tOiAwO1xuXHRwYWRkaW5nLWJvdHRvbTogY2FsYygyLjUgKiB2YXIoLS1jb2RlLXBhZGRpbmcpKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tbGluZS1udW1iZXItZ3V0dGVyLXBhZGRpbmcpKSAhaW1wb3J0YW50O1xuXHRib3JkZXItdG9wOiB2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItc2VwYXJhdG9yLWNvbG91cik7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQge1xuXHRib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0Ym9yZGVyLXRvcC13aWR0aDogMDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmU6aG92ZXIgY29kZSB+IGNvZGUubGFuZ3VhZ2Utb3V0cHV0IHtcblx0bWFyZ2luLWJvdHRvbTogMDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgY29kZSB+IGNvZGUubGFuZ3VhZ2Utb3V0cHV0IGlucHV0LmludGVyYWN0aXZlLXN0ZGluIHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1ub3JtYWwpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWNvZGVibG9jay1iYWNrZ3JvdW5kLWNvbG91cik7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvZGUtY29tbWVudCk7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci1yYWRpdXM6IDVweDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGNvZGUgfiBjb2RlLmxhbmd1YWdlLW91dHB1dCBociB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5ydW4tY29kZS1idXR0b24ge1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiAxMnB4O1xuXHQtLWRlbnQtZGlmZmVyZW5jZTogMjRweDtcblx0aGVpZ2h0OiAxNHB4O1xuXHRtYXJnaW4tYm90dG9tOiA2cHggIWltcG9ydGFudDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIGJ1dHRvbi5ydW4tY29kZS1idXR0b24ge1xuXHR0b3A6IDUwMHB4O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24ucnVuLWNvZGUtYnV0dG9uOjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcMjAwYlwiO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHdpZHRoOiAxNHB4O1xuXHRoZWlnaHQ6IDE0cHg7XG5cdHBhZGRpbmctcmlnaHQ6IDRweDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG5cdC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMiclM0UlM0NwYXRoIGQ9J003IDI4YTEgMSAwIDAgMS0xLTFWNWExIDEgMCAwIDEgMS40ODItLjg3NmwyMCAxMWExIDEgMCAwIDEgMCAxLjc1MmwtMjAgMTFBMSAxIDAgMCAxIDcgMjhaJy8lM0UlM0NwYXRoIGZpbGw9J25vbmUnIGQ9J00wIDBoMzJ2MzJIMHonIGRhdGEtbmFtZT0nJmx0O1RyYW5zcGFyZW50IFJlY3RhbmdsZSZndDsnLyUzRSUzQy9zdmclM0VcIik7XG5cdC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0bWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMiclM0UlM0NwYXRoIGQ9J003IDI4YTEgMSAwIDAgMS0xLTFWNWExIDEgMCAwIDEgMS40ODItLjg3NmwyMCAxMWExIDEgMCAwIDEgMCAxLjc1MmwtMjAgMTFBMSAxIDAgMCAxIDcgMjhaJy8lM0UlM0NwYXRoIGZpbGw9J25vbmUnIGQ9J00wIDBoMzJ2MzJIMHonIGRhdGEtbmFtZT0nJmx0O1RyYW5zcGFyZW50IFJlY3RhbmdsZSZndDsnLyUzRSUzQy9zdmclM0VcIik7XG5cdG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdHZlcnRpY2FsLWFsaWduOiAwcHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jbGVhci1idXR0b24tZGlzYWJsZWQsXG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5ydW4tYnV0dG9uLWRpc2FibGVkIHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY2xlYXItYnV0dG9uIHtcblx0aGVpZ2h0OiAxNHB4O1xuXHRtYXJnaW4tYm90dG9tOiA2cHggIWltcG9ydGFudDtcblx0bWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSArIDEycHgpO1xuXHR3aWxsLWNoYW5nZTogbWFyZ2luLXJpZ2h0LCBjbGlwLXBhdGg7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1pbik7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jbGVhci1idXR0b246OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFwyMDBiXCI7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6IDE0cHg7XG5cdGhlaWdodDogMTRweDtcblx0cGFkZGluZy1yaWdodDogNHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1idXR0b24tY29sb3VyKTtcblx0LXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTE2IDQgNiAxNGwxLjQxIDEuNDFMMTUgNy44M1YyOGgyVjcuODNsNy41OSA3LjU4TDI2IDE0IDE2IDR6Jy8lM0UlM0NwYXRoIGZpbGw9J25vbmUnIGQ9J00wIDBoMzJ2MzJIMHonIGRhdGEtbmFtZT0nJmx0O1RyYW5zcGFyZW50IFJlY3RhbmdsZSZndDsnLyUzRSUzQy9zdmclM0VcIik7XG5cdC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0bWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMiclM0UlM0NwYXRoIGQ9J00xNiA0IDYgMTRsMS40MSAxLjQxTDE1IDcuODNWMjhoMlY3LjgzbDcuNTkgNy41OEwyNiAxNCAxNiA0eicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6JyBkYXRhLW5hbWU9JyZsdDtUcmFuc3BhcmVudCBSZWN0YW5nbGUmZ3Q7Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHRtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogMHB4O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY2xlYXItYnV0dG9uOm5vdCg6YWN0aXZlKSB7XG5cdGFuaW1hdGlvbjogcmV2ZXJzZS1pbmRlbnQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNsZWFyLWJ1dHRvbjpob3Zlcntcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGFuaW1hdGlvbjogcmV2ZXJzZS1vdXRkZW50IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNsZWFyLWJ1dHRvbjphY3RpdmUge1xuXHRzY2FsZTogMC45NTtcblx0dHJhbnNpdGlvbjogc2NhbGUgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSBjdWJpYy1iZXppZXIoMC40LCAwLjE0LCAwLjMsIDEpO1xufVxuLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQuaGFzLXJ1bi1jb2RlLWJ1dHRvbiAubG9hZC1zdGF0ZS1pbmRpY2F0b3Ige1xuXHRjb2xvcjogbm9uZTtcblx0YmFja2dyb3VuZDogbm9uZTtcblx0ei1pbmRleDogMTA7XG59XG4uY29kZS1zdHlsZXItcHJlLXBhcmVudC5oYXMtcnVuLWNvZGUtYnV0dG9uIC5sb2FkLXN0YXRlLWluZGljYXRvcjo6YmVmb3JlIHtcblx0Ym94LXNoYWRvdzogbm9uZTtcbn1cbi5jb2RlLXN0eWxlci1wcmUtcGFyZW50Lmhhcy1ydW4tY29kZS1idXR0b24gLmxvYWQtc3RhdGUtaW5kaWNhdG9yIHN2ZyB7XG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1idXR0b24tY29sb3VyKTtcbn1cbi5jb2RlLXN0eWxlci1wcmUtcGFyZW50Lmhhcy1ydW4tY29kZS1idXR0b24gLmxvYWQtc3RhdGUtaW5kaWNhdG9yIHN2Zzpob3ZlciB7XG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1idXR0b24tYWN0aXZlLWNvbG91cik7XG59XG4uY29kZS1zdHlsZXItcHJlLXBhcmVudC5oYXMtcnVuLWNvZGUtYnV0dG9uIC5sb2FkLXN0YXRlLWluZGljYXRvci52aXNpYmxlIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xufVxuXG4vKiogRW1iZWQgQ29kZSBQbHVnaW4gKi9cbi5ibG9jay1sYW5ndWFnZS1wcmV2aWV3IHByZS5jb2RlLXN0eWxlci1wcmUgY29kZSB7XG5cdHdoaXRlLXNwYWNlOiB1bnNldDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgc3Bhbi5jb2RlLWJsb2NrLWxpbmVfbnVtLXdyYXAsXG5wcmUuY29kZS1zdHlsZXItcHJlIGRpdi5jb2RlLWJsb2NrLWhpZ2hsaWdodC13cmFwIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5jbS1lbWJlZC1ibG9jayAuY29kZS1zdHlsZXItcHJlLXBhcmVudCArIC5lZGl0LWJsb2NrLWJ1dHRvbjo6YWZ0ZXIge1xuXHRjb250ZW50OiAnRWRpdCBCbG9jayc7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZm9udC11aS1zbWFsbGVyKTtcblx0cGFkZGluZy1sZWZ0OiA0cHg7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuY20tZW1iZWQtYmxvY2s6bm90KDpob3ZlcikgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQgKyAuZWRpdC1ibG9jay1idXR0b24ge1xuXHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdG9wYWNpdHk6IDBcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5jbS1lbWJlZC1ibG9jayAuY29kZS1zdHlsZXItcHJlLXBhcmVudCArIC5lZGl0LWJsb2NrLWJ1dHRvbiB7XG5cdC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW46IGNhbGMoMi4yICogdmFyKC0taGVhZGVyLWJ1dHRvbi1zcGFjaW5nKSk7XG5cdC0tZGVudC1kaWZmZXJlbmNlOiAwcHg7XG5cdC0tcG9seWdvbi1pbjogcG9seWdvbigwIDAsIDE4cHggMCwgMThweCAzNnB4LCAwIDM2cHgpO1xuICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSwgb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRvcGFjaXR5OiAxO1xuXHR6LWluZGV4OiAxMDtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHR0b3A6IG1heChjYWxjKDAuNSAqIHZhcigtLWNvbnRhaW5lci1oZWlnaHQpICogMSksY2FsYygwLjUgKiB2YXIoLS1jb250YWluZXItbWluLWhlaWdodCkgKiAxKSk7XG5cdG1hcmdpbjogMDtcblx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKSAtIHZhcigtLWRlbnQtZGlmZmVyZW5jZSkpO1xuXHR3aWxsLWNoYW5nZTogbWFyZ2luLXJpZ2h0LCBjbGlwLXBhdGg7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1pbik7XG5cdHBhZGRpbmc6IDA7XG59XG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgLmNtLWVtYmVkLWJsb2NrIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50OmhhcyggcHJlLmNvZGUtc3R5bGVyLXByZSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcikgKyAuZWRpdC1ibG9jay1idXR0b24sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAuY20tZW1iZWQtYmxvY2sgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQ6bm90KDpoYXMoIHByZS5jb2RlLXN0eWxlci1wcmUgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWMpKTpub3QoOmhhcyggcHJlLmNvZGUtc3R5bGVyLXByZSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciBpbWcuY29kZS1zdHlsZXItaWNvbikpICsgLmVkaXQtYmxvY2stYnV0dG9uLFxuYm9keSAuY20tZW1iZWQtYmxvY2sgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQ6aGFzKCBwcmUuY29kZS1zdHlsZXItcHJlOm5vdChbY2xhc3MqPSdsYW5ndWFnZS0nXSkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIpICsgLmVkaXQtYmxvY2stYnV0dG9uIHsgLyo/IERlcGVuZGluZyBvbiBoZWFkZXIgdmlzaWJpbGl0eSAqL1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiA0cHg7XG5cdHRvcDogY2FsYygwLjUgKiB2YXIoLS1mb250LXRleHQtc2l6ZSkgKiAwLjg3NSAqIHZhcigtLWxpbmUtaGVpZ2h0LW5vcm1hbCkpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLmNtLWVtYmVkLWJsb2NrOmhvdmVyIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50ICsgLmVkaXQtYmxvY2stYnV0dG9uOmhvdmVyIHtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdGFuaW1hdGlvbjogcmV2ZXJzZS1vdXRkZW50IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5jbS1lbWJlZC1ibG9jazpob3ZlciAuY29kZS1zdHlsZXItcHJlLXBhcmVudCArIC5lZGl0LWJsb2NrLWJ1dHRvbjphY3RpdmUge1xuXHRzY2FsZTogMC45NTtcblx0dHJhbnNpdGlvbjogc2NhbGUgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSBjdWJpYy1iZXppZXIoMC40LCAwLjE0LCAwLjMsIDEpO1xufVxuXG4vKiogRmlsZSBJbmNsdWRlIFBsdWdpbiAqL1xuZGl2LmJsb2NrLWxhbmd1YWdlLWluY2x1ZGUgcHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbiB7XG5cdG1hcmdpbjogMDtcblx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKSAtIHZhcigtLWRlbnQtZGlmZmVyZW5jZSkpO1xufVxuZGl2LmJsb2NrLWxhbmd1YWdlLWluY2x1ZGUgcHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbjpob3ZlciB7XG5cdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xufVxuIiwgIi8qKiBEZWZpbmUgQ1NTIHZhcmlhYmxlcyAqL1xuQGltcG9ydCBcIi4vY3NzL2NvZGVibG9ja3MuY3NzXCI7XG5AaW1wb3J0IFwiLi9jc3MvaW5saW5lQ29kZS5jc3NcIjtcbkBpbXBvcnQgXCIuL2Nzcy9wZGZFeHBvcnQuY3NzXCI7XG5AaW1wb3J0IFwiLi9jc3MvcGlja3IuY3NzXCI7XG5AaW1wb3J0IFwiLi9jc3MvcGx1Z2luQ29tcGF0aWJpbGl0eS5jc3NcIjtcblxuYm9keSB7XG5cdC8qIENvZGVibG9jayBCb2R5ICovXG5cdC0tYm9yZGVyLXJhZGl1czogMTBweDtcblx0LS1ncmFkaWVudC1iYWNrZ3JvdW5kLWNvbG91cjogdHJhbnNwYXJlbnQ7XG5cdC0tY29kZS1wYWRkaW5nOiA4cHg7XG5cdC0tY29udGFpbmVyLWhlaWdodDogY2FsYyh2YXIoLS1sYW5ndWFnZS1pY29uLXNpemUpICsgMiAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSAqIHZhcigtLWhlYWRlci1mb250LXNpemUpKTtcblx0LS1jb250YWluZXItbWluLWhlaWdodDogY2FsYygodmFyKC0taGVhZGVyLWZvbnQtc2l6ZSkgKyAyICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpICogdmFyKC0taGVhZGVyLWZvbnQtc2l6ZSkpICogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKSk7XG5cdC0tbGFuZ3VhZ2UtYm9yZGVyLWNvbG91cjogdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKTtcblx0LS1sYW5ndWFnZS1ib3JkZXItd2lkdGg6IDBweDtcblxuXHQvKiBIZWFkZXIgKi9cblx0LS1oZWFkZXItZm9udC1zaXplOiB2YXIoLS1jb2RlLXNpemUpO1xuXHQtLWhlYWRlci1wYWRkaW5nOiAwcHg7XG5cdC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmc6IDAuMztcblx0LS1oZWFkZXItc3BhY2luZzogMTVweDtcblx0LS1oZWFkZXItYnV0dG9uLXNwYWNpbmc6IDE0cHg7XG5cdC0taGVhZGVyLXNlcGFyYXRvci13aWR0aDogMnB4O1xuXHQtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgtcGFkZGluZzogdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCk7XG5cdC0tY29kZS1zdHlsZXItaGVhZGVyLWJvcmRlcjogbm9uZTtcblx0LS1jb2xsYXBzZWQtYm90dG9tLWJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudDtcblx0LS1sYW5ndWFnZS1pY29uLXNpemU6IDI4cHg7XG5cdC0tbGFuZ3VhZ2UtaWNvbi1maWx0ZXI6IG5vbmU7XG5cblx0LyogTGluZXMgKi9cblx0LS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wOiAxMDAlO1xuXG5cdC8qIExpbmUgTnVtYmVycyAqL1xuXHQtLWxpbmUtbnVtYmVyLWhlaWdodC1jb3JyZWN0aW9uOiAycHg7XG5cdC0tbGluZS1udW1iZXItZ3V0dGVyLXBhZGRpbmc6IDE2cHg7XG5cdC0tbGluZS1udW1iZXItZ3V0dGVyLW1pbi13aWR0aDogMzIuNjdweDtcblxuXHQvKiBMaW5lIFRleHQgKi9cblx0LS1saW5lLXdyYXBwaW5nOiBwcmUtd3JhcDtcblx0LS1saW5lLWFjdGl2ZS13cmFwcGluZzogdmFyKC0tbGluZS13cmFwcGluZyk7XG5cblx0LyogQnV0dG9ucyAqL1xuXHQtLWNvZGUtc3R5bGVyLWJ1dHRvbi1jb2xvdXI6IHZhcigtLXRleHQtbXV0ZWQpO1xuXHQtLWNvZGUtc3R5bGVyLWJ1dHRvbi1hY3RpdmUtY29sb3VyOiB3aGl0ZTtcblx0LS1kdXJhdGlvbi1idXR0b246IDI0MG1zO1xuXHQtLWRlbnQtZGlmZmVyZW5jZTogMzBweDtcblx0LS1wb2x5Z29uLWluOiBwb2x5Z29uKDAgMCwgMTZweCAwLCAxNnB4IDM2cHgsIDAgMzZweCk7XG5cdC0tcG9seWdvbi1vdXQ6IHBvbHlnb24oMCAwLCAxMDAlIDAsIDEwMCUgMTAwJSwgMCAxMDAlKTtcblx0LS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbjogY2FsYygzICogdmFyKC0taGVhZGVyLWJ1dHRvbi1zcGFjaW5nKSk7XG5cblx0LyogSW5saW5lIENvZGUgKi9cblx0LS1jb2RlLXN0eWxlci1pbmxpbmUtZm9udC13ZWlnaHQ6IDQwMDtcblx0LS1jb2RlLXN0eWxlci1pbmxpbmUtYm9yZGVyLXJhZGl1czogNnB4O1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1wYWRkaW5nLXZlcnRpY2FsOiA1cHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctaG9yaXpvbnRhbDogNXB4O1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1tYXJnaW4taG9yaXpvbnRhbDogMHB4O1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXI6IHZhcigtLWNvZGUtbm9ybWFsKTtcblx0LS1jb2RlLXN0eWxlci1pbmxpbmUtY29sb3VyLWFjdGl2ZTogdmFyKC0tY29kZS1ub3JtYWwpO1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1iYWNrZ3JvdW5kLWNvbG91cjogdmFyKC0tY29kZS1iYWNrZ3JvdW5kKTtcbn1cblxuLyoqIFNldHRpbmdzICovXG4uc2V0dGluZy1pdGVtLmNvZGUtc3R5bGVyLXNwYWNlZCAuY2hlY2tib3gtY29udGFpbmVyICsgLnBpY2tyIHtcblx0cGFkZGluZy1sZWZ0OiAxMHB4O1xufVxuLmNvZGUtc3R5bGVyLWRvbmF0aW9uIHtcblx0d2lkdGg6IDcwJTtcblx0bWFyZ2luOiAwIGF1dG87XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5jb2RlLXN0eWxlci1zZXR0aW5nLXRleHQtYXJlYSB0ZXh0YXJlYSB7XG5cdHdpZHRoOiA0MDBweDtcblx0aGVpZ2h0OiAyMjBweDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFDQTtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFJRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBSUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUlEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBQUE7QUFJQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUlEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFJRDtBQUFBO0FBRUU7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUdGO0FBQUE7QUFFRTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBR0Y7QUFBQTtBQUVFO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdGO0FBQUE7QUFFRTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFHRjtBQUNJO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0c7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUo7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7OztBQ25lRDtBQUFBO0FBRUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHRDtBQUNDO0FBQ0E7QUFBQTtBQUdEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTs7O0FDdkREO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTs7O0FDTkQ7QUFBUTtBQUFtQjtBQUFrQjtBQUFBO0FBQTJCO0FBQVU7QUFBdUI7QUFBYztBQUFhO0FBQWlCO0FBQUE7QUFBMkI7QUFBb0I7QUFBbUI7QUFBWTtBQUFXO0FBQWU7QUFBZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRztBQUFxQjtBQUFxUDtBQUFtQjtBQUFBO0FBQXVCO0FBQTRCO0FBQW1CO0FBQVk7QUFBTztBQUFRO0FBQVk7QUFBYTtBQUFrTjtBQUFzQjtBQUFxQjtBQUFBO0FBQWM7QUFBNEI7QUFBQTtBQUFtQjtBQUEyQjtBQUFtQjtBQUFZO0FBQU87QUFBUTtBQUFhO0FBQVk7QUFBNEI7QUFBNkI7QUFBQTtBQUF1QjtBQUEwQjtBQUFBO0FBQXVCO0FBQWtDO0FBQUE7QUFBYTtBQUFnQztBQUFBO0FBQThFO0FBQTZCO0FBQUE7QUFBc0I7QUFBQTtBQUFzQjtBQUF1QjtBQUFjO0FBQWE7QUFBaUI7QUFBQTtBQUEyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWdNO0FBQUE7QUFBOEU7QUFBQTtBQUFBO0FBQUE7QUFBc0Y7QUFBQTtBQUE4QjtBQUFBO0FBQUE7QUFBQTtBQUE4RztBQUFBO0FBQWlGO0FBQVU7QUFBZ0I7QUFBYztBQUF1QjtBQUFlO0FBQXFCO0FBQWlCO0FBQVc7QUFBbUI7QUFBNkM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRztBQUErRTtBQUFRO0FBQUE7QUFBUztBQUFrQjtBQUF5QjtBQUFvQjtBQUFBO0FBQWE7QUFBd0I7QUFBYztBQUFnQjtBQUFBO0FBQXFCO0FBQWlDO0FBQUE7QUFBWTtBQUE2QjtBQUF3QjtBQUFjO0FBQW9CO0FBQUE7QUFBQTtBQUFxRDtBQUFpQztBQUFlO0FBQW1CO0FBQTJCO0FBQTRCO0FBQXNCO0FBQWdCO0FBQWM7QUFBZTtBQUFxQjtBQUFzQjtBQUFpQjtBQUF3QjtBQUFBO0FBQWE7QUFBeUM7QUFBbUI7QUFBWTtBQUFPO0FBQVE7QUFBWTtBQUFhO0FBQWtOO0FBQXFCO0FBQXFCO0FBQUE7QUFBYztBQUF3QztBQUFZO0FBQW1CO0FBQU87QUFBUTtBQUFZO0FBQWE7QUFBNkI7QUFBc0M7QUFBc0I7QUFBQTtBQUF5QjtBQUF1QztBQUFBO0FBQTJCO0FBQWtEO0FBQUE7QUFBbUI7QUFBMkI7QUFBYztBQUFnQjtBQUFvQjtBQUFBO0FBQTRCO0FBQStCO0FBQUE7QUFBa0I7QUFBaUM7QUFBdUI7QUFBa0I7QUFBbUI7QUFBZ0I7QUFBZTtBQUFvQjtBQUFxQjtBQUFzQjtBQUFzQjtBQUFBO0FBQXFCO0FBQXVDO0FBQUE7QUFBNEI7QUFBdUM7QUFBQTtBQUFzRjtBQUF1QztBQUFlO0FBQWlCO0FBQWM7QUFBZTtBQUFxQjtBQUFxQjtBQUFvQjtBQUFBO0FBQWU7QUFBdUQ7QUFBb0I7QUFBQTtBQUFjO0FBQWtEO0FBQW9CO0FBQUE7QUFBYztBQUE0QztBQUFZO0FBQUE7QUFBc0I7QUFBQTtBQUFBO0FBQWtIO0FBQVk7QUFBQTtBQUFjO0FBQUE7QUFBQTtBQUFrSDtBQUFBO0FBQWM7QUFBQTtBQUFBO0FBQW9JO0FBQUE7QUFBNEI7QUFBcUM7QUFBQTtBQUFzQjtBQUFBO0FBQTZFO0FBQUE7QUFBc0I7QUFBQTtBQUF5RjtBQUFBO0FBQXFGO0FBQXFDO0FBQW1CO0FBQWE7QUFBWTtBQUF1QjtBQUFvQjtBQUEwQjtBQUF1QjtBQUFzQjtBQUFBO0FBQW9CO0FBQUE7QUFBQTtBQUFvSTtBQUFtQjtBQUEwQjtBQUF1QjtBQUFzQjtBQUFrQjtBQUFjO0FBQXVCO0FBQWE7QUFBQTtBQUF1QjtBQUFBO0FBQUE7QUFBeUo7QUFBaUI7QUFBQTtBQUEyQjtBQUE2QjtBQUFlO0FBQUE7QUFBa0I7QUFBMkM7QUFBaUI7QUFBQTtBQUFrQjtBQUE4QztBQUFBO0FBQTRCO0FBQTRDO0FBQWM7QUFBZTtBQUErQjtBQUFrQztBQUFvQjtBQUFlO0FBQVk7QUFBQTtBQUF5QjtBQUErRDtBQUF5QjtBQUFhO0FBQVk7QUFBYztBQUFvQjtBQUF3QjtBQUFBO0FBQW9CO0FBQStFO0FBQUE7QUFBZ0I7QUFBa0Y7QUFBbUI7QUFBNkI7QUFBVztBQUFZO0FBQW9CO0FBQUE7QUFBbUI7QUFBMEY7QUFBbUI7QUFBWTtBQUFPO0FBQVE7QUFBWTtBQUFhO0FBQWtOO0FBQXNCO0FBQXFCO0FBQUE7QUFBYztBQUErRDtBQUF5QjtBQUFZO0FBQWE7QUFBQTtBQUFhO0FBQTRFO0FBQXFCO0FBQVk7QUFBQTtBQUFlO0FBQW9GO0FBQW1CO0FBQVk7QUFBTztBQUFRO0FBQVk7QUFBYTtBQUFrTjtBQUFzQjtBQUFxQjtBQUFBO0FBQWM7QUFBK0Q7QUFBQTtBQUEyQjtBQUErRDtBQUFBO0FBQTJCO0FBQUE7QUFBOEg7QUFBYztBQUFBO0FBQWlCO0FBQUE7QUFBc0o7QUFBUztBQUFBO0FBQThCO0FBQUE7QUFBc0o7QUFBYTtBQUFBO0FBQXNCO0FBQTJFO0FBQUE7QUFBZ0Y7QUFBMkU7QUFBaVE7QUFBQTtBQUNsOFM7QUFDQztBQUFBOzs7QUNGRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDSTtBQUNBO0FBQ0E7QUFDQTtBQUNIO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFJRDtBQUNDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0c7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFJRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTs7O0FDekpEO0FBRUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg== */