@aws/mynah-ui 3.0.2 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","mappings":"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","sources":["../webpack/universalModuleDefinition",".././src/styles/styles.scss",".././node_modules/css-loader/dist/runtime/api.js",".././node_modules/css-loader/dist/runtime/sourceMaps.js",".././node_modules/escape-html/index.js",".././node_modules/prismjs/components/prism-bash.min.js",".././node_modules/prismjs/components/prism-c.min.js",".././node_modules/prismjs/components/prism-clike.min.js",".././node_modules/prismjs/components/prism-csharp.min.js",".././node_modules/prismjs/components/prism-css.min.js",".././node_modules/prismjs/components/prism-java.min.js",".././node_modules/prismjs/components/prism-javascript.min.js",".././node_modules/prismjs/components/prism-json.min.js",".././node_modules/prismjs/components/prism-jsx.min.js",".././node_modules/prismjs/components/prism-less.min.js",".././node_modules/prismjs/components/prism-lua.min.js",".././node_modules/prismjs/components/prism-markdown.min.js",".././node_modules/prismjs/components/prism-markup.min.js",".././node_modules/prismjs/components/prism-mongodb.min.js",".././node_modules/prismjs/components/prism-objectivec.min.js",".././node_modules/prismjs/components/prism-python.min.js",".././node_modules/prismjs/components/prism-regex.min.js",".././node_modules/prismjs/components/prism-scala.min.js",".././node_modules/prismjs/components/prism-scss.min.js",".././node_modules/prismjs/components/prism-tsx.min.js",".././node_modules/prismjs/components/prism-typescript.min.js",".././node_modules/prismjs/components/prism-xml-doc.min.js",".././node_modules/prismjs/plugins/keep-markup/prism-keep-markup.js",".././node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js",".././node_modules/prismjs/prism.js","webpack://MynahUI/./src/styles/styles.scss?203b",".././node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js",".././node_modules/style-loader/dist/runtime/insertBySelector.js",".././node_modules/style-loader/dist/runtime/insertStyleElement.js",".././node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js",".././node_modules/style-loader/dist/runtime/styleDomAPI.js",".././node_modules/style-loader/dist/runtime/styleTagTransform.js",".././src/components/icon/icons/block.svg",".././src/components/icon/icons/calendar.svg",".././src/components/icon/icons/cancel.svg",".././src/components/icon/icons/chat.svg",".././src/components/icon/icons/code-block.svg",".././src/components/icon/icons/copy.svg",".././src/components/icon/icons/cursor-insert.svg",".././src/components/icon/icons/doc.svg",".././src/components/icon/icons/down-open.svg",".././src/components/icon/icons/ellipsis.svg",".././src/components/icon/icons/envelope-send.svg",".././src/components/icon/icons/error.svg",".././src/components/icon/icons/external.svg",".././src/components/icon/icons/eye.svg",".././src/components/icon/icons/info.svg",".././src/components/icon/icons/left-open.svg",".././src/components/icon/icons/light-bulb.svg",".././src/components/icon/icons/link.svg",".././src/components/icon/icons/megaphone.svg",".././src/components/icon/icons/menu.svg",".././src/components/icon/icons/minus.svg",".././src/components/icon/icons/mynah.svg",".././src/components/icon/icons/notification.svg",".././src/components/icon/icons/ok-circled.svg",".././src/components/icon/icons/ok.svg",".././src/components/icon/icons/pause.svg",".././src/components/icon/icons/play.svg",".././src/components/icon/icons/plus.svg",".././src/components/icon/icons/refresh.svg",".././src/components/icon/icons/resize-full.svg",".././src/components/icon/icons/resize-small.svg",".././src/components/icon/icons/revert.svg",".././src/components/icon/icons/right-open.svg",".././src/components/icon/icons/search.svg",".././src/components/icon/icons/star.svg",".././src/components/icon/icons/text-select.svg",".././src/components/icon/icons/thumbs-down.svg",".././src/components/icon/icons/thumbs-up.svg",".././src/components/icon/icons/up-open.svg",".././src/components/icon/icons/user.svg",".././src/components/icon/icons/warning.svg",".././src/components/button.ts",".././src/components/card/card-body.ts",".././src/components/card/card.ts",".././src/components/chat-item/chat-item-card.ts",".././src/components/chat-item/chat-item-followup.ts",".././src/components/chat-item/chat-item-relevance-vote.ts",".././src/components/chat-item/chat-item-source-links.ts",".././src/components/chat-item/chat-item-tree-view-license.ts",".././src/components/chat-item/chat-item-tree-view-wrapper.ts",".././src/components/chat-item/chat-item-tree-view.ts",".././src/components/chat-item/chat-prompt-input-command.ts",".././src/components/chat-item/chat-prompt-input-info.ts",".././src/components/chat-item/chat-prompt-input.ts",".././src/components/chat-item/chat-wrapper.ts",".././src/components/chat-item/prompt-input/code-snippet-widget.ts",".././src/components/chat-item/prompt-input/code-snippet.ts",".././src/components/chat-item/prompt-input/prompt-text-input.ts",".././src/components/chat-item/prompt-input/send-button.ts",".././src/components/collapsible-content.ts",".././src/components/feedback-form/feedback-form-comment.ts",".././src/components/feedback-form/feedback-form.ts",".././src/components/icon.ts",".././src/components/icon/icon-importer.ts",".././src/components/navigation-tabs.ts",".././src/components/notification.ts",".././src/components/overlay.ts",".././src/components/source-link/source-link-body.ts",".././src/components/source-link/source-link-header.ts",".././src/components/source-link/source-link.ts",".././src/components/syntax-highlighter.ts",".././src/components/toggle.ts",".././src/helper/config.ts",".././src/helper/date-time.ts",".././src/helper/dom.ts",".././src/helper/events.ts",".././src/helper/file-tree.ts",".././src/helper/guid.ts",".././src/helper/store.ts",".././src/helper/tabs-store.ts",".././src/helper/url.ts",".././src/static.ts",".././node_modules/unescape-html/index.js",".././node_modules/marked/lib/marked.cjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/nonce",".././src/main.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MynahUI\"] = factory();\n\telse\n\t\troot[\"MynahUI\"] = factory();\n})(self, () => {\nreturn ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--mynah-font-family: var(--vscode-font-family), system-ui, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", \\\"Amazon Ember\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\"Open Sans\\\", \\\"Helvetica Neue\\\", sans-serif;font-size:var(--vscode-font-size, 13px);font-family:var(--mynah-font-family, \\\"system-ui\\\");--mynah-max-width: 2560px;--mynah-sizing-base: 0.25rem;--mynah-sizing-half: calc(var(--mynah-sizing-base) / 2);--mynah-sizing-1: var(--mynah-sizing-base);--mynah-sizing-2: calc(var(--mynah-sizing-base) * 2);--mynah-sizing-3: calc(var(--mynah-sizing-base) * 3);--mynah-sizing-4: calc(var(--mynah-sizing-base) * 4);--mynah-sizing-5: calc(var(--mynah-sizing-base) * 5);--mynah-sizing-6: calc(var(--mynah-sizing-base) * 6);--mynah-sizing-7: calc(var(--mynah-sizing-base) * 7);--mynah-sizing-8: calc(var(--mynah-sizing-base) * 8);--mynah-sizing-9: calc(var(--mynah-sizing-base) * 9);--mynah-sizing-10: calc(var(--mynah-sizing-base) * 10);--mynah-sizing-11: calc(var(--mynah-sizing-base) * 11);--mynah-sizing-12: calc(var(--mynah-sizing-base) * 12);--mynah-sizing-13: calc(var(--mynah-sizing-base) * 13);--mynah-sizing-14: calc(var(--mynah-sizing-base) * 14);--mynah-sizing-15: calc(var(--mynah-sizing-base) * 15);--mynah-sizing-16: calc(var(--mynah-sizing-base) * 16);--mynah-sizing-17: calc(var(--mynah-sizing-base) * 17);--mynah-sizing-18: calc(var(--mynah-sizing-base) * 18);--mynah-button-border-width: 1px;--mynah-border-width: 1px;--mynah-color-text-default: var(--vscode-foreground);--mynah-color-text-strong: var(--vscode-input-foreground);--mynah-color-text-weak: var(--vscode-disabledForeground);--mynah-color-text-link: var(--vscode-textLink-foreground);--mynah-color-text-input: var(--vscode-input-foreground);--mynah-color-bg: var(--vscode-sideBar-background);--mynah-color-bg-alt: var(--vscode-editorPane-background, var(--mynah-color-bg));--mynah-color-tab-active: var(--vscode-tab-activeBackground, var(--vscode-editor-background, var(--mynah-card-bg)));--mynah-color-light: rgba(0, 0, 0, 0.05);--mynah-color-deep: var(--vscode-checkbox-background);--mynah-color-deep-reverse: var(--vscode-checkbox-foreground);--mynah-color-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));--mynah-color-input-bg: var(--vscode-input-background);--mynah-color-highlight: rgba(255, 179, 0, 0.25);--mynah-color-highlight-text: #886411;--mynah-color-context-must-contain: #c7ebce;--mynah-color-context-should-contain: var(--vscode-sideBar-background);--mynah-color-context-must-not-contain: #f3cac7;--mynah-color-context-reverse: rgba(0, 0, 0, 0.5);--mynah-color-context-filter: 0.975;--mynah-color-syntax-bg: var(--vscode-terminal-dropBackground);--mynah-color-syntax-variable: var(--vscode-debugTokenExpression-name);--mynah-color-syntax-function: var(--vscode-gitDecoration-modifiedResourceForeground);--mynah-color-syntax-operator: var(--vscode-debugTokenExpression-name);--mynah-color-syntax-attr-value: var(--vscode-debugIcon-stepBackForeground);--mynah-color-syntax-attr: var(--vscode-debugTokenExpression-string);--mynah-color-syntax-property: var(--vscode-terminal-ansiCyan);--mynah-color-syntax-comment: var(--vscode-debugConsole-sourceForeground);--mynah-color-syntax-code: var(--vscode-terminal-ansiBlue);--mynah-syntax-code-font-family: var(--vscode-editor-font-family);--mynah-syntax-code-font-size: var(--vscode-editor-font-size, var(--mynah-font-size-medium));--mynah-color-status-info: var(--vscode-editorInfo-foreground);--mynah-color-status-success: var(--vscode-terminal-ansiGreen);--mynah-color-status-warning: var(--vscode-editorWarning-foreground);--mynah-color-status-error: var(--vscode-editorError-foreground);--mynah-color-button: var(--vscode-button-background);--mynah-color-button-reverse: var(--vscode-button-foreground);--mynah-color-alternate: var(--vscode-button-secondaryBackground);--mynah-color-alternate-reverse: var(--vscode-button-secondaryForeground);--mynah-color-code-bg: rgba(0, 0, 0, 0.25);--mynah-color-code-text: var(--vscode-textPreformat-foreground);--mynah-color-main: var(--vscode-button-background);--mynah-color-main-reverse: var(--vscode-button-foreground);--mynah-card-bg: var(--vscode-editor-background);--mynah-shadow-generic: none;--mynah-shadow-card: none;--mynah-shadow-card-more: none;--mynah-shadow-card-active: none;--mynah-shadow-prioritization-menu: none;--mynah-shadow-feedback-form: none;--mynah-font-size-xxsmall: 0.75rem;--mynah-font-size-xsmall: 0.85rem;--mynah-font-size-small: 0.95rem;--mynah-font-size-medium: 1rem;--mynah-font-size-large: 1.125rem;--mynah-font-size-xlarge: 1.175rem;--mynah-card-radius: var(--mynah-sizing-2);--mynah-button-radius: var(--mynah-sizing-1);--mynah-bottom-panel-transition: all 550ms cubic-bezier(0.25, 0, 0, 1);--mynah-very-short-transition: all 400ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-transform: transform 350ms cubic-bezier(0.85, 0.15, 0, 1);--mynah-long-transition: all 520ms cubic-bezier(0.35, 1, 0.15, 1);--mynah-pretty-long-transition: all 600ms cubic-bezier(0.25, 1, 0, 1);--mynah-very-long-transition: all 1400ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition: all 400ms cubic-bezier(0.85, 0.15, 0, 1);--mynah-short-transition-rev: all 420ms cubic-bezier(0.35, 1, 0, 1);--mynah-short-transition-rev-opacity: opacity 550ms cubic-bezier(0.35, 1, 0, 1);--mynah-short-transition-reflection: all 800ms cubic-bezier(0.25, 1, 0, 1), opacity 650ms 300ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-turbo: all 400ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-turbo-bounce: all 500ms cubic-bezier(0.25, 1, 0, 1), transform 600ms cubic-bezier(0.25, 4, 0, 1);--mynah-short-transition-bounce: all 650ms cubic-bezier(0.25, 1, 0, 1), transform 900ms cubic-bezier(0.15, 1.25, 0, 1);--mynah-text-flow-transition: all 650ms cubic-bezier(0.25, 1, 0, 1), transform 900ms cubic-bezier(0.15, 1.25, 0, 1), max-height 1100ms cubic-bezier(0.35, 1, 0, 1);--mynah-mask-image: linear-gradient( to bottom, black var(--mynah-sizing-8), black calc(100% - var(--mynah-sizing-14)), transparent );--mynah-mask-image-rev: linear-gradient(to bottom, transparent 0%, transparent 80%, black 100%);--mynah-mask-image-main: linear-gradient( to bottom, transparent, black var(--mynah-sizing-6), black calc(100% - var(--mynah-sizing-6)), transparent );--mynah-mask-image-main-rev: linear-gradient(to bottom, black, transparent calc(100% - 2px), transparent);--mynah-mask-image-skeleton: linear-gradient( to bottom, black var(--mynah-sizing-8), black calc(50% - var(--mynah-sizing-14)), transparent );--mynah-policy-group-filter: saturate(0.5) brightness(0.85)}@keyframes horizontal-roll{0%{background-position:0% bottom}100%{background-position:-200% bottom}}@keyframes bounce{from{transform:translate3d(0, 0, 0)}to{transform:translate3d(0, calc(-1 * var(--mynah-sizing-2)), 0)}}#mynah-wrapper{display:flex;flex-flow:column nowrap;margin:0 auto;width:100%;max-width:var(--mynah-max-width);box-sizing:border-box;height:100%;position:relative;overflow:hidden;justify-content:stretch;align-items:stretch}#mynah-wrapper>.mynah-ui-tab-contents-wrapper{flex:1;position:relative}button.mynah-button{border:none;min-width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);border-radius:var(--mynah-button-radius);background-color:var(--mynah-color-button);color:var(--mynah-color-button-reverse);box-shadow:var(--mynah-shadow-generic);cursor:pointer;transition:var(--mynah-very-short-transition);display:inline-flex;justify-content:center;align-items:center;outline:none;overflow:hidden;position:relative;transform:translate3d(0, 0, 0) scale(1.00001);padding:0;filter:brightness(0.9);opacity:.85}button.mynah-button.mynah-bottom-block-close-button{position:absolute;align-self:flex-end;transform:translate3d(var(--mynah-sizing-2), calc(-100% - var(--mynah-sizing-6)), 0px);background-color:var(--mynah-card-bg);color:var(--mynah-color-text-default);box-shadow:var(--mynah-shadow-feedback-form)}button.mynah-button[disabled=disabled]{opacity:.25 !important;pointer-events:none}button.mynah-button.mynah-button-secondary{background-color:transparent;color:inherit;box-shadow:none;opacity:.75;height:var(--mynah-sizing-6)}button.mynah-button.mynah-button-secondary:focus-visible,button.mynah-button.mynah-button-secondary:hover{opacity:1}button.mynah-button.mynah-button-secondary:active{box-shadow:none}button.mynah-button:focus-visible,button.mynah-button:hover{filter:brightness(1);opacity:1}button.mynah-button:active{filter:brightness(0.9);opacity:.85}button.mynah-button.mynah-icon-button{width:var(--mynah-sizing-10);height:var(--mynah-sizing-10)}button.mynah-button>.mynah-mutating-next-icon{width:var(--mynah-sizing-6);height:var(--mynah-sizing-6);transform:translate3d(0, 0, 0) rotateZ(0deg);transition:var(--mynah-short-transition-turbo);transform-origin:center center;display:inline-flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;justify-content:center;align-items:center}button.mynah-button>.mynah-mutating-next-icon>i{font-size:var(--mynah-font-size-xlarge)}button.mynah-button>.mynah-mutating-next-icon>i.mynah-loading-spinner{min-width:var(--mynah-sizing-5);min-height:var(--mynah-sizing-5);border:3px solid currentColor;opacity:.5;box-sizing:border-box;border-top-color:rgba(0,0,0,0);border-radius:var(--mynah-sizing-5);animation:spin 1s infinite linear}button.mynah-button>.mynah-mutating-next-icon>i:nth-child(2){display:none}button.mynah-button>.mynah-search-history-icon{width:var(--mynah-sizing-6);height:var(--mynah-sizing-6);transform:translate3d(0, 0, 0) rotateZ(0deg);transition:var(--mynah-short-transition-turbo);transform-origin:center center;display:inline-flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;justify-content:center;align-items:center}button.mynah-button>.mynah-search-history-icon>i{font-size:2rem}button.mynah-button>.mynah-search-history-icon>i.mynah-history-icon{min-width:var(--mynah-sizing-5);min-height:var(--mynah-sizing-5);border:3px solid currentColor;opacity:.5;box-sizing:border-box;border-top-color:rgba(0,0,0,0);border-radius:var(--mynah-button-radius);animation:spin 1s infinite linear}button.mynah-button>.mynah-search-history-icon>i:nth-child(2){display:none}button.mynah-button.mynah-button-wait{background-color:var(--mynah-color-light);color:var(--mynah-color-text-default);box-shadow:0 5px 10px -10px var(--mynah-color-light);pointer-events:none}button.mynah-button.mynah-button-wait>.mynah-mutating-next-icon>i:first-child{display:none}button.mynah-button.mynah-button-wait>.mynah-mutating-next-icon>i:nth-child(2){display:block}button.mynah-button>span{white-space:nowrap;font-size:var(--mynah-font-size-medium);max-width:35vw;transition:var(--mynah-very-long-transition);overflow:hidden;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;padding-left:var(--mynah-sizing-3);padding-right:var(--mynah-sizing-3)}button.mynah-button>i+span{padding-left:var(--mynah-sizing-base)}.mynah-toggle-container{flex-flow:row nowrap;max-width:100%;overflow:hidden;align-items:center;position:relative;background:var(--mynah-color-context-should-contain);color:var(--mynah-color-context-reverse);justify-content:flex-start;overflow-y:hidden;overflow-x:auto;display:flex}.mynah-toggle-container>span{overflow:hidden;height:100%;min-width:var(--mynah-sizing-8);max-width:calc(3*var(--mynah-sizing-15));flex-shrink:0}.mynah-toggle-container>span>.mynah-toggle-option{display:none}.mynah-toggle-container>span>.mynah-toggle-option:not(:first-child)+.mynah-toggle-option-label{margin-left:calc(-1*var(--mynah-sizing-1))}.mynah-toggle-container>span>.mynah-toggle-option:not(:checked)+.mynah-toggle-option-label.indication:after{content:\\\"\\\";position:absolute;top:50%;margin-top:calc(-1*var(--mynah-sizing-half));left:var(--mynah-sizing-2);height:var(--mynah-sizing-1);width:var(--mynah-sizing-1);background-color:var(--mynah-color-status-success);border-radius:var(--mynah-sizing-1);border:1px solid var(--mynah-color-text-weak);opacity:.75}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label{cursor:pointer;pointer-events:all;position:relative;z-index:100;padding:0 var(--mynah-sizing-3) 0 var(--mynah-sizing-5);height:100%;box-sizing:border-box;display:inline-flex;overflow:hidden;justify-content:stretch;align-items:center;color:var(--mynah-color-text-weak);border-right:1px solid var(--mynah-color-border-default);border-top:1px solid transparent;background-color:var(--mynah-color-bg);opacity:.75;max-width:100%}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label,.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label *{user-select:none}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label>span{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label>.mynah-toggle-close-button{margin-left:var(--mynah-sizing-3);font-size:var(--mynah-font-size-xsmall);min-width:1em}.mynah-toggle-container>span>.mynah-toggle-option:checked+.mynah-toggle-option-label{border-top-color:var(--mynah-color-button);color:var(--mynah-color-text-default);opacity:1;background-color:var(--mynah-color-tab-active)}.mynah-toggle-container>span>.mynah-toggle-option[disabled=disabled]{pointer-events:none !important}.mynah-toggle-container>span>.mynah-toggle-option[disabled=disabled]+.mynah-toggle-option-label{pointer-events:none !important;opacity:.25}.mynah-toggle-container.mynah-toggle-direction-vertical{flex-flow:column nowrap;gap:var(--mynah-sizing-3)}.mynah-toggle-disabled-tooltip-container{max-width:30vw;display:inline-block;padding:var(--mynah-sizing-3);font-size:80%;opacity:.85}.mynah-ui-icon{font-style:normal;font-weight:normal;display:inline-flex;width:1em;height:1em;font-variant:normal;text-transform:none;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;color:inherit;background-color:currentColor}.mynah-ui-icon>span{display:none}.mynah-nav-tabs-wrapper{border-top:var(--mynah-button-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-color-bg);display:flex;align-items:center;overflow:hidden;box-shadow:var(--mynah-shadow-generic);z-index:100;min-height:var(--mynah-sizing-10);max-height:var(--mynah-sizing-10);position:relative}.mynah-nav-tabs-wrapper:after{content:\\\"\\\";position:absolute;left:0;right:0;bottom:0;width:auto;height:var(--mynah-button-border-width);background-color:var(--mynah-color-border-default)}.mynah-nav-tabs-wrapper>.mynah-toggle-container{height:100%;background:none;box-sizing:border-box}.mynah-nav-tabs-wrapper>.mynah-toggle-container>span{white-space:nowrap}.mynah-nav-tabs-wrapper:empty{display:none}.mynah-nav-tabs-wrapper.mynah-nav-tabs-loading,.mynah-nav-tabs-wrapper.mynah-nav-tabs-loading *{pointer-events:none}.mynah-card{text-decoration:none;outline:none;position:relative;transition:var(--mynah-short-transition-rev);box-sizing:border-box;display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-3);transform:translate3d(0, 0, 0);flex:auto 0 0;width:100%;overflow:hidden;border-radius:var(--mynah-card-radius)}.mynah-card.padding-none{padding:0}.mynah-card.padding-small{padding:var(--mynah-sizing-1)}.mynah-card.padding-medium{padding:var(--mynah-sizing-3)}.mynah-card.padding-large{padding:var(--mynah-sizing-5)}.mynah-card.background{background-color:var(--mynah-card-bg)}.mynah-card.border{border:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-card>*{z-index:10;position:relative}.mynah-card>.mynah-source-link-header{display:flex;justify-content:space-between;align-items:center;opacity:1;gap:var(--mynah-sizing-2);transition:var(--mynah-very-short-transition)}.mynah-card>.mynah-source-link-header>.mynah-source-thumbnail{font-style:normal;font-weight:normal;display:none;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);font-variant:normal;text-transform:none;border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:100%;background-size:85%;background-clip:content-box;background-position:center center;background-repeat:no-repeat;align-self:flex-start;box-sizing:border-box;background-color:var(--mynah-card-bg);position:relative;overflow:hidden}.mynah-card>.mynah-source-link-header>.mynah-source-thumbnail:after{content:\\\"\\\";pointer-events:none;box-sizing:border-box;position:absolute;top:0;left:0;right:0;bottom:0;width:auto;height:auto;border:2px solid var(--mynah-card-bg);border-radius:100%}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper{flex:1 1 0;display:flex;flex-flow:column nowrap;align-items:flex-start;gap:var(--mynah-sizing-half);max-width:100%;overflow:hidden;cursor:pointer}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper:hover>.mynah-source-link-title>.mynah-source-link-expand-icon{opacity:.75;align-self:baseline}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-title{font-size:var(--mynah-font-size-medium);font-weight:500;color:var(--mynah-color-text-strong);width:100%;display:inline-flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-2);white-space:normal;text-overflow:ellipsis;text-decoration:none;outline:none;overflow:hidden}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-title>.mynah-source-link-expand-icon{transition:var(--mynah-short-transition-rev);opacity:0;color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);display:inline;padding:var(--mynah-sizing-1)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url{font-size:var(--mynah-font-size-xsmall);font-weight:300;color:var(--mynah-color-text-link);white-space:nowrap;text-overflow:ellipsis;text-decoration:none;outline:none;overflow:hidden;max-width:100%;position:relative;padding-bottom:var(--mynah-sizing-1);display:inline-block;transition:var(--mynah-short-transition-rev)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url:after{content:\\\"\\\";position:relative;display:block;bottom:0;left:0;width:100%;height:1px;border-radius:var(--mynah-sizing-half);background-color:currentColor;transform:translate3d(-30%, 0, 0);transition:var(--mynah-short-transition-rev);opacity:0}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url:hover:after{transform:translate3d(0, 0, 0);opacity:1}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:not(:last-child):after{content:\\\">\\\";margin-left:var(--mynah-sizing-1);margin-right:var(--mynah-sizing-1)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:nth-child(3)~span:not(:last-child){display:none}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:last-child{font-weight:bold}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:nth-child(3):not(:last-child):after{content:\\\"> ... >\\\"}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block{display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-1);margin-bottom:var(--mynah-sizing-half)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block:empty{display:none}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item{display:inline-flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-1);padding:calc(var(--mynah-sizing-half)*3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:var(--mynah-button-radius);opacity:.75}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-icon{opacity:.5;font-size:var(--mynah-font-size-medium);color:var(--mynah-color-text-weak)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-title-meta-block-item-text{font-size:var(--mynah-font-size-xxsmall);color:var(--mynah-color-text-weak)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-title-meta-block-item-text::first-letter{text-transform:capitalize}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer{border-color:green;position:relative}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer:before{content:\\\"\\\";border-radius:var(--mynah-button-radius);position:absolute;top:0;left:0;right:0;bottom:0;background-color:green;opacity:.04}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer>.mynah-icon{opacity:1;color:green;border-radius:var(--mynah-button-radius);width:var(--mynah-sizing-3);height:var(--mynah-sizing-3)}.mynah-card>.mynah-card-body{flex:1;overflow:hidden;position:relative;display:block}.mynah-card>.mynah-card-body>*:not(pre){font-size:var(--mynah-font-size-medium)}.mynah-card>.mynah-card-body span[start][end]{display:none}.mynah-card>.mynah-card-body>p:first-child,.mynah-card>.mynah-card-body>p:first-child h1:first-child,.mynah-card>.mynah-card-body>p:first-child h2:first-child,.mynah-card>.mynah-card-body>p:first-child h3:first-child,.mynah-card>.mynah-card-body>p:first-child h4:first-child,.mynah-card>.mynah-card-body>p:first-child h5:first-child{margin-top:0}.mynah-card>.mynah-card-body>p:first-child:last-of-type,.mynah-card>.mynah-card-body>p p:first-child{margin:0}.mynah-card>.mynah-card-body>*:not(div):not(pre),.mynah-card>.mynah-card-body>div>*:not(div):not(pre){margin-block-start:.75em;margin-block-end:.75em;padding-bottom:1px !important;user-select:text}.mynah-card>.mynah-card-body>*:not(div):not(pre):first-child,.mynah-card>.mynah-card-body>div>*:not(div):not(pre):first-child{margin-block-start:0}.mynah-card>.mynah-card-body>*:not(div):not(pre):empty,.mynah-card>.mynah-card-body>div>*:not(div):not(pre):empty{display:none}.mynah-card>.mynah-card-body>p:last-of-type,.mynah-card>.mynah-card-body>div>p:last-of-type{margin-block-end:0}.mynah-card>.mynah-card-body mark[reference-tracker],.mynah-card>.mynah-card-body>div mark[reference-tracker]{background-color:var(--mynah-color-highlight);color:inherit;cursor:help}.mynah-card>.mynah-card-body .amzn-mynah-search-result-highlight,.mynah-card>.mynah-card-body>div .amzn-mynah-search-result-highlight{background-color:var(--mynah-color-highlight);color:var(--mynah-color-highlight-text)}.mynah-card>.mynah-card-body .amzn-mynah-search-result-ellipsis,.mynah-card>.mynah-card-body>div .amzn-mynah-search-result-ellipsis{display:inline-block;position:relative;padding-left:var(--mynah-sizing-2);margin-top:var(--mynah-sizing-1);margin-bottom:var(--mynah-sizing-1);font-size:calc(1em + var(--mynah-sizing-1)) !important;user-select:none;cursor:default;height:var(--mynah-sizing-7)}.mynah-card>.mynah-card-body .amzn-mynah-search-result-ellipsis:before,.mynah-card>.mynah-card-body>div .amzn-mynah-search-result-ellipsis:before{pointer-events:none;content:\\\"\\\";width:calc(1em + var(--mynah-sizing-2));height:calc(1em + var(--mynah-sizing-2));position:absolute;left:0;top:0;background-color:currentColor;opacity:.1;border-radius:var(--mynah-sizing-1)}.mynah-card>.mynah-card-votes-wrapper{align-items:center;gap:var(--mynah-sizing-2);display:flex;align-items:center;justify-content:flex-end;border-top:1px solid var(--mynah-color-border-default);padding-top:var(--mynah-sizing-3);font-size:var(--mynah-font-size-small)}.mynah-card>.mynah-card-votes-wrapper>span.mynah-feedback-thanks{overflow:hidden}.mynah-card>.mynah-card-votes-wrapper>.mynah-button>span{padding:0;font-size:var(--mynah-font-size-small);color:var(--mynah-color-text-link)}.mynah-card>.mynah-card-votes-wrapper>.mynah-vote-text{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-small)}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote{position:relative;overflow:visible;display:inline-flex;align-items:center;box-sizing:border-box;gap:var(--mynah-sizing-3)}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-radio{display:none}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label{z-index:10;cursor:pointer;font-size:var(--mynah-font-size-small);transition:var(--mynah-short-transition);width:var(--mynah-sizing-5);height:var(--mynah-sizing-5);display:inline-flex;justify-content:center;align-items:center;color:var(--mynah-color-text-weak);opacity:.5}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label>*{pointer-events:none}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label>i{height:calc(var(--mynah-sizing-6) + var(--mynah-sizing-half))}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-up-radio:checked~.mynah-vote-up{color:var(--mynah-color-text-default);opacity:1}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-down-radio:checked~.mynah-vote-down{color:var(--mynah-color-text-default);opacity:1}#mynah-feedback-form-wrapper{display:flex;flex-flow:column nowrap;position:absolute;bottom:0;left:var(--mynah-sizing-2);right:var(--mynah-sizing-2);width:auto;box-sizing:border-box;z-index:9999999;opacity:0;transform:translate3d(0, 5vh, 0);transition:var(--mynah-bottom-panel-transition);overflow:visible}#mynah-feedback-form-wrapper:before{transition:all 400ms cubic-bezier(0.25, 0, 0, 1);content:\\\"\\\";position:absolute;right:calc(-1*var(--mynah-sizing-2));bottom:0;left:0;width:100vw;height:100vh;background-color:#000;opacity:0;pointer-events:none;transform:translate3d(0, 0, 0) scale(2);transform-origin:center center;z-index:-1}#mynah-feedback-form-wrapper>.mynah-bottom-block-close-button{transform:translate3d(calc(-1 * var(--mynah-sizing-1)), calc(-100% - var(--mynah-sizing-3)), 0px)}#mynah-feedback-form-wrapper+#mynah-wrapper{transition:var(--mynah-bottom-panel-transition)}#mynah-feedback-form-wrapper:not(.mynah-feedback-form-show),#mynah-feedback-form-wrapper:not(.mynah-feedback-form-show) *{pointer-events:none !important}#mynah-feedback-form-wrapper.mynah-feedback-form-show{opacity:1;transform:translate3d(0, 0, 0)}#mynah-feedback-form-wrapper.mynah-feedback-form-show:before{opacity:.15}#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper{transform:translate3d(0, 0px, 0) scale(0.95);transform-origin:top center;opacity:.25}#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper,#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper *{pointer-events:none !important}.mynah-feedback-form{pointer-events:all;box-sizing:border-box;transition:var(--mynah-short-transition-rev);transform:translate3d(0, 0, 0);display:flex;flex-flow:column;gap:var(--mynah-sizing-4);align-items:stretch;transform-origin:right bottom;z-index:10;position:relative;border:var(--mynah-button-border-width) solid var(--mynah-color-border-default);border-top-right-radius:var(--mynah-card-radius);border-top-left-radius:var(--mynah-card-radius);border-bottom:none;box-shadow:0px -25px 20px -25px rgba(0,0,0,.15);background-color:var(--mynah-color-bg);padding:var(--mynah-sizing-4)}.mynah-feedback-form>.mynah-feedback-form-header{display:flex;box-sizing:border-box;align-items:center;margin-bottom:var(--mynah-sizing-4)}.mynah-feedback-form>.mynah-feedback-form-header>h4{flex:1;margin:0}.mynah-feedback-form>.mynah-feedback-form-comment{background-color:transparent;padding:var(--mynah-sizing-3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);resize:none;width:100%;height:100px;max-height:25vh;border-radius:var(--mynah-sizing-2);font-size:var(--mynah-font-size-small);outline:none;color:var(--mynah-color-text-input);background-color:var(--mynah-card-bg);box-sizing:border-box;font-family:inherit}.mynah-feedback-form>.mynah-feedback-form-select-wrapper{position:relative;display:flex;box-sizing:border-box;padding:var(--mynah-sizing-3);justify-content:flex-end;align-items:center}.mynah-feedback-form>.mynah-feedback-form-select-wrapper>.mynah-feedback-form-select{position:absolute;width:100%;left:0;color:var(--mynah-color-text-default);border-radius:var(--mynah-card-radius);padding:var(--mynah-sizing-3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);-webkit-appearance:none;appearance:none;text-indent:1px;text-overflow:clip;outline:none}.mynah-feedback-form>.mynah-feedback-form-select-wrapper>.mynah-feedback-form-select-handle{color:var(--mynah-color-text-weak);pointer-events:none}.mynah-feedback-form>.mynah-feedback-form-buttons-container{display:flex;justify-content:flex-end;align-items:center;gap:var(--mynah-sizing-1);box-sizing:border-box}.mynah-overlay{position:fixed;left:0;top:0;width:100%;height:100%;overflow:hidden;box-sizing:border-box;pointer-events:none;z-index:1000000}.mynah-overlay.mynah-overlay-dim-outside:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-bg);transition:var(--mynah-short-transition-rev-opacity);opacity:.45}.mynah-overlay>.mynah-overlay-container{--overlayLeftPos: 0;--overlayTopPos: 0;--overlayInnerHorizontalOrigin: left;--overlayInnerVerticalOrigin: top;position:absolute;display:block;overflow:visible;border-radius:var(--mynah-card-radius);transform:translate3d(var(--overlayLeftPos), var(--overlayTopPos), 0)}.mynah-overlay>.mynah-overlay-container .mynah-card,.mynah-overlay>.mynah-overlay-container .mynah-card *{pointer-events:none !important}.mynah-overlay>.mynah-overlay-container .mynah-card .mynah-syntax-highlighter-copy-buttons,.mynah-overlay>.mynah-overlay-container .mynah-card * .mynah-syntax-highlighter-copy-buttons{display:none}.mynah-overlay>.mynah-overlay-container .mynah-card .mynah-syntax-highlighter-copy-buttons~*:last-child,.mynah-overlay>.mynah-overlay-container .mynah-card * .mynah-syntax-highlighter-copy-buttons~*:last-child{margin-bottom:0 !important}.mynah-overlay>.mynah-overlay-container.background:before{content:\\\"\\\";background-color:transparent;transition:var(--mynah-short-transition-rev);position:absolute;top:calc(var(--mynah-button-border-width)*-1);left:calc(var(--mynah-button-border-width)*-1);right:calc(var(--mynah-button-border-width)*-1);bottom:calc(var(--mynah-button-border-width)*-1);width:auto;height:auto;pointer-events:none;box-sizing:border-box;opacity:0;border:var(--mynah-button-border-width) solid var(--mynah-color-border-default);box-shadow:var(--mynah-shadow-prioritization-menu)}.mynah-overlay>.mynah-overlay-container.background:after{content:\\\"\\\";position:absolute;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);left:0;top:0;opacity:0;border:var(--mynah-sizing-4);background-color:var(--mynah-card-bg);border-radius:inherit;transition:var(--mynah-short-transition-rev);transition-delay:20ms}.mynah-overlay>.mynah-overlay-container.horizontal-direction-to-left,.mynah-overlay>.mynah-overlay-container.horizontal-direction-from-end-to-left{--overlayLeftPos: -100%;--overlayInnerHorizontalOrigin: right}.mynah-overlay>.mynah-overlay-container.horizontal-direction-to-left:after,.mynah-overlay>.mynah-overlay-container.horizontal-direction-from-end-to-left:after{left:calc(100% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.horizontal-direction-at-center{--overlayInnerHorizontalOrigin: center;--overlayLeftPos: -50%}.mynah-overlay>.mynah-overlay-container.horizontal-direction-at-center:after{left:calc(50% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.vertical-direction-to-top,.mynah-overlay>.mynah-overlay-container.vertical-direction-from-end-to-top{--overlayTopPos: -100%;--overlayInnerVerticalOrigin: bottom}.mynah-overlay>.mynah-overlay-container.vertical-direction-to-top:after,.mynah-overlay>.mynah-overlay-container.vertical-direction-from-end-to-top:after{top:calc(100% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.vertical-direction-at-center{--overlayInnerVerticalOrigin: center;--overlayTopPos: -50%}.mynah-overlay>.mynah-overlay-container.vertical-direction-at-center:after{top:calc(50% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container>.mynah-overlay-inner-container{display:inline-block;overflow:hidden;z-index:10;position:relative;transform:translate3d(0, 0, 0) scale(0.85);transform-origin:var(--overlayInnerHorizontalOrigin) var(--overlayInnerVerticalOrigin);transition:var(--mynah-short-transition-rev);width:100%}.mynah-overlay>.mynah-overlay-container:before{transform:translate3d(0, 0, 0) scale(0.85);transition:var(--mynah-short-transition-rev)}.mynah-overlay>.mynah-overlay-container>.mynah-overlay-inner-container,.mynah-overlay>.mynah-overlay-container:before{opacity:0;transition-delay:0ms}.mynah-overlay:not(.mynah-overlay-open),.mynah-overlay:not(.mynah-overlay-open) *{pointer-events:none !important}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{transform:translate3d(0, 0, 0) scale(1)}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container:before{transform:translate3d(0, 0, 0) scale(1);transition-delay:50ms;opacity:1}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{transition-delay:20ms}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{opacity:1}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container:after{transition-delay:0ms;left:0;top:0;width:100%;height:100%;opacity:1}.mynah-overlay.mynah-overlay-open.mynah-overlay-close-on-outside-click{pointer-events:all}.mynah-notification{display:inline-flex;flex-flow:row nowrap;align-items:flex-start;justify-content:flex-start;gap:var(--mynah-sizing-3);padding:var(--mynah-sizing-5);overflow:hidden;position:relative}.mynah-notification.mynah-notification-clickable{pointer-events:all;cursor:pointer}.mynah-notification>.mynah-ui-icon{font-size:var(--mynah-sizing-6)}.mynah-notification>.mynah-ui-icon-ok-circled{color:var(--mynah-color-status-success)}.mynah-notification>.mynah-ui-icon-info{color:var(--mynah-color-status-info)}.mynah-notification>.mynah-ui-icon-warning{color:var(--mynah-color-status-warning)}.mynah-notification>.mynah-ui-icon-error{color:var(--mynah-color-status-error)}.mynah-notification>.mynah-notification-container{flex:1;max-width:50vw;min-width:200px;display:inline-flex;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start;gap:var(--mynah-sizing-3);overflow:hidden;position:relative}.mynah-notification>.mynah-notification-container>.mynah-notification-title{margin:0}.mynah-notification>.mynah-notification-container>.mynah-notification-title:empty{display:none}.mynah-notification>.mynah-notification-container>.mynah-notification-content{font-size:var(--mynah-font-size-small);display:flex;flex-flow:column nowrap;justify-content:flex-start;align-items:flex-start;gap:var(--mynah-sizing-2)}.mynah-notification>.mynah-notification-container>.mynah-notification-content>.mynah-button{align-self:stretch;background-color:var(--mynah-color-alternate);color:var(--mynah-color-alternate-reverse)}.mynah-syntax-highlighter{display:flex;flex-flow:column nowrap;box-sizing:border-box;overflow:hidden;margin:var(--mynah-sizing-1) 0;background-color:var(--mynah-card-bg);max-width:100%;border:var(--mynah-border-width) solid var(--mynah-color-border-default);position:relative;border-radius:var(--mynah-card-radius);line-height:normal;color:var(--mynah-color-text-default)}.mynah-syntax-highlighter+*:not(:empty){margin-top:var(--mynah-sizing-2)}.mynah-syntax-highlighter:before,.mynah-syntax-highlighter>.line-numbers-rows:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-syntax-bg);opacity:.2;pointer-events:none;user-select:none}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:flex;align-items:center;justify-content:flex-end;padding:var(--mynah-sizing-half);padding-left:var(--mynah-sizing-3);order:256000;box-sizing:border-box;margin:0;margin-block:0 !important;position:relative;border-top:1px solid var(--mynah-color-border-default)}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-border-default);opacity:.25}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons>.mynah-syntax-highlighter-language{flex:1;font-size:var(--mynah-font-size-xsmall);display:inline-block;opacity:.65;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons .mynah-button{min-width:var(--mynah-sizing-6);height:calc(var(--mynah-sizing-6) + var(--mynah-sizing-half))}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons .mynah-button *{font-size:var(--mynah-font-size-xsmall);color:var(--mynah-color-text-strong)}.mynah-syntax-highlighter.mynah-inline-code{display:inline-flex;max-width:100%;line-height:normal;padding:0 !important;margin:0;margin-block-start:0;margin-block-end:0;overflow:visible;border:none;color:var(--mynah-color-syntax-attr);margin-left:2px;margin-right:2px;padding-bottom:1px !important;margin-bottom:-1px;background-color:transparent !important}.mynah-syntax-highlighter.mynah-inline-code>pre{padding:0}.mynah-syntax-highlighter.mynah-inline-code:after{content:\\\"\\\";position:absolute;box-sizing:border-box;top:0;height:100%;left:-2px;width:calc(100% + 4px);border-radius:calc(var(--mynah-card-radius)/2);border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);z-index:-1}.mynah-syntax-highlighter.mynah-inline-code:before{left:-2px;width:calc(100% + 4px);border-radius:calc(var(--mynah-card-radius)/2);box-sizing:border-box}.mynah-syntax-highlighter>pre{padding:var(--mynah-sizing-2);margin:0;overflow-x:auto;overflow-y:hidden;position:relative}.mynah-syntax-highlighter>pre *,.mynah-syntax-highlighter>pre{font-size:var(--mynah-syntax-code-font-size) !important;font-family:var(--mynah-syntax-code-font-family) !important}.mynah-syntax-highlighter>pre>code{color:var(--mynah-color-syntax-code);filter:brightness(0.95);white-space:pre}.mynah-syntax-highlighter>pre>code,.mynah-syntax-highlighter>pre{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:4;hyphens:none}.mynah-syntax-highlighter>pre>code::selection,.mynah-syntax-highlighter>pre::selection{text-shadow:none;background:#b3d4fc}.mynah-syntax-highlighter>pre .token.comment,.mynah-syntax-highlighter>pre .token.prolog,.mynah-syntax-highlighter>pre .token.doctype,.mynah-syntax-highlighter>pre .token.cdata{color:var(--mynah-color-syntax-comment)}.mynah-syntax-highlighter>pre .token.punctuation{color:currentColor}.mynah-syntax-highlighter>pre .token.namespace{opacity:.7}.mynah-syntax-highlighter>pre .token.property,.mynah-syntax-highlighter>pre .token.tag,.mynah-syntax-highlighter>pre .token.boolean,.mynah-syntax-highlighter>pre .token.number,.mynah-syntax-highlighter>pre .token.constant,.mynah-syntax-highlighter>pre .token.symbol,.mynah-syntax-highlighter>pre .token.deleted{color:var(--mynah-color-syntax-property)}.mynah-syntax-highlighter>pre .token.selector,.mynah-syntax-highlighter>pre .token.attr-name,.mynah-syntax-highlighter>pre .token.string,.mynah-syntax-highlighter>pre .token.char,.mynah-syntax-highlighter>pre .token.builtin,.mynah-syntax-highlighter>pre .token.inserted{color:var(--mynah-color-syntax-attr)}.mynah-syntax-highlighter>pre .token.operator,.mynah-syntax-highlighter>pre .token.entity,.mynah-syntax-highlighter>pre .token.url,.mynah-syntax-highlighter>pre .language-css .token.string,.mynah-syntax-highlighter>pre .style .token.string{color:var(--mynah-color-syntax-operator)}.mynah-syntax-highlighter>pre .token.atrule,.mynah-syntax-highlighter>pre .token.attr-value,.mynah-syntax-highlighter>pre .token.class-name,.mynah-syntax-highlighter>pre .token.keyword{color:var(--mynah-color-syntax-attr-value)}.mynah-syntax-highlighter>pre .token.function{color:var(--mynah-color-syntax-function);font-weight:500}.mynah-syntax-highlighter>pre .token.regex,.mynah-syntax-highlighter>pre .token.important,.mynah-syntax-highlighter>pre .token.variable{color:var(--mynah-color-syntax-variable);font-weight:500}.mynah-syntax-highlighter>pre .token.important,.mynah-syntax-highlighter>pre .token.bold{font-weight:bold}.mynah-syntax-highlighter>pre .token.italic{font-style:italic}.mynah-syntax-highlighter>pre .token.entity{cursor:help}.mynah-syntax-highlighter>pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber;position:relative}.mynah-syntax-highlighter>.line-numbers-rows{position:absolute;background-color:inherit;top:var(--mynah-sizing-2);font-size:100%;left:0;width:var(--mynah-sizing-12);overflow:hidden;text-overflow:clip;letter-spacing:-1px;border-right:1px solid var(--mynah-color-border-default)}.mynah-syntax-highlighter>.line-numbers-rows>span,.mynah-syntax-highlighter>.line-numbers-rows{pointer-events:none;user-select:none}.mynah-syntax-highlighter>.line-numbers-rows>span{display:block;color:var(--mynah-color-border-default);padding-right:.8em;text-align:right}.mynah-ui-syntax-highlighter-highlight-tooltip{max-width:80vw;min-width:10vw;max-height:80vh;background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);border:var(--mynah-border-width) solid var(--mynah-color-border-default);padding:var(--mynah-sizing-5)}.mynah-ui-syntax-highlighter-highlight-tooltip .mynah-card-body>p:first-child:last-of-type,.mynah-ui-syntax-highlighter-highlight-tooltip .mynah-card-body>p p:first-child{margin:0}.mynah-chat-related-content-preview-wrapper{max-width:80vw;max-height:80vh}.mynah-chat-related-content-preview-wrapper>.mynah-chat-related-content-preview-content{padding:var(--mynah-sizing-3);background-color:var(--mynah-card-bg);border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:var(--mynah-card-radius)}.mynah-chat-prompt-overlay-buttons-container{display:inline-flex;flex-flow:column nowrap;gap:var(--mynah-sizing-2);justify-content:flex-start;align-items:flex-start}.mynah-chat-wrapper{transition:var(--mynah-bottom-panel-transition);position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;flex-flow:column nowrap;overflow:hidden;justify-content:space-around;align-items:stretch;display:none}.mynah-chat-wrapper>div[class^=mynah-chat]{width:100%;max-width:100%;box-sizing:border-box;padding-left:var(--mynah-sizing-4);padding-right:var(--mynah-sizing-4)}.mynah-chat-wrapper:after{transition:all 400ms cubic-bezier(0.25, 0, 0, 1);content:\\\"\\\";position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;background-color:#000;z-index:1000;opacity:0;pointer-events:none;transform:translate3d(0, 0, 0) scale(2);transform-origin:center center}.mynah-chat-wrapper>.mynah-chat-items-container{display:flex;flex:1 1 0%;overflow-x:hidden;overflow-y:auto;flex-flow:column-reverse nowrap;align-items:flex-start;padding:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card{display:inline-flex;flex-flow:column nowrap;position:relative;max-width:90%;transition:var(--mynah-text-flow-transition);transform:translate3d(0, var(--mynah-sizing-12), 0) scale(1, 0.95);opacity:0;transform-origin:center bottom}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card:not(:first-of-type){max-height:initial !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-no-content{display:none !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-spacer{display:block;width:100%;height:var(--mynah-sizing-6);order:10000}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card~.mynah-chat-item-temporary-element,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card~* .mynah-chat-item-temporary-element{display:none !important;visibility:hidden !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card~.mynah-chat-item-temporary-element~.mynah-chat-item-spacer,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card~* .mynah-chat-item-temporary-element~.mynah-chat-item-spacer{display:none;height:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card{max-width:100%;width:100%;padding:var(--mynah-sizing-3) 0 var(--mynah-sizing-3) 0;border-top:1px solid var(--mynah-color-border-default);margin-top:var(--mynah-sizing-3);padding-bottom:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-title{font-size:var(--mynah-font-size-large)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>span.invisible{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-items-spinner{display:none;position:absolute;bottom:var(--mynah-sizing-2);left:50%;margin-left:-50px;width:100px;top:49%;margin-top:calc(-1*var(--mynah-sizing-2));height:var(--mynah-sizing-4);overflow:visible;z-index:10000;gap:var(--mynah-sizing-2);justify-content:center;align-items:end;transform:translate3d(0px, calc(-1 * var(--mynah-sizing-2)), 0px)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-items-spinner>span{animation:bounce 500ms infinite cubic-bezier(0.5, 0, 0.15, 1) alternate;display:inline-block;width:var(--mynah-sizing-2);height:var(--mynah-sizing-2);border-radius:var(--mynah-sizing-2);background-color:var(--mynah-color-text-weak);opacity:.5}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-items-spinner>span:nth-child(2){animation-delay:150ms}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-items-spinner>span:nth-child(3){animation-delay:300ms}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-code-result{min-width:70%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card a{pointer-events:bounding-box;color:var(--mynah-color-text-link)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.reveal{opacity:1;transform:translate3d(0, 0, 0) scale(1, 1)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-card-icon-wrapper{background-color:var(--mynah-color-alternate);color:var(--mynah-color-alternate-reverse);padding:var(--mynah-sizing-2);border-radius:100%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body{padding-left:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>.mynah-syntax-highlighter{filter:contrast(1.15) brightness(0.85)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h1:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h2:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h3:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h4:first-child{margin-top:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content{margin-top:var(--mynah-sizing-3);padding-top:var(--mynah-sizing-4);border-top:var(--mynah-button-border-width) solid var(--mynah-color-border-default)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-title{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);margin:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content .mynah-source-link-title{font-size:var(--mynah-font-size-small);font-weight:400}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card :hover::before{box-shadow:var(--mynah-shadow-card) !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question{display:inline-flex;flex-flow:column nowrap;position:relative;gap:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-text{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);font-style:italic}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper{display:inline-flex;flex-flow:row wrap;max-width:100%;gap:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option{padding:var(--mynah-sizing-2);color:var(--mynah-color-text-default);border:var(--mynah-border-width) solid currentColor;border-radius:var(--mynah-card-radius);cursor:pointer;font-size:var(--mynah-font-size-xsmall);max-width:100%;overflow:hidden;display:inline-flex;gap:var(--mynah-sizing-2);align-items:center}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option:not(:hover){opacity:.75}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-success{color:var(--mynah-color-status-success)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-error{color:var(--mynah-color-status-error)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-warning{color:var(--mynah-color-status-warning)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-info{color:var(--mynah-color-status-info)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content{display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-2);overflow:hidden;position:relative}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item{max-width:100%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card{padding:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item .amzn-mynah-search-result-highlight{background-color:inherit;color:inherit}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:not(:nth-of-type(1)){display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:nth-of-type(1){margin-bottom:calc(-1*var(--mynah-sizing-4));pointer-events:none;position:relative;-webkit-mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-12)), transparent 100%);-webkit-mask-size:100% 100%;mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-12)), transparent 100%);mask-size:100% 100%;-webkit-mask-image:linear-gradient(to top, transparent var(--mynah-sizing-1), black 70%)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:nth-of-type(2)~.mynah-chat-item-card-related-content-show-more{display:flex}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more{display:none;max-width:80%;z-index:10000;margin-block-start:0;margin-block-end:0;align-self:center;height:var(--mynah-sizing-8);filter:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more>span,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more>i{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--mynah-font-size-xsmall)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt{align-self:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-chat-item-card-icon-wrapper{align-self:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-followup-question,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-followup-question,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content{align-items:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card{box-shadow:0px 0px 5px -5px var(--mynah-color-button);padding:var(--mynah-sizing-4);background-color:var(--mynah-color-button);border-bottom-right-radius:0;border:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card>.mynah-card-body{color:var(--mynah-color-button-reverse)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card{background-color:var(--mynah-color-status-warning)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream.mynah-chat-item-empty.stream-ended{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-card{border-bottom-left-radius:0;max-height:100%;flex:1}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-icon-wrapper{align-self:flex-start}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact{opacity:1}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header{opacity:1}.mynah-chat-wrapper.loading>.mynah-chat-items-container{padding-bottom:var(--mynah-sizing-14)}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child>.mynah-card{min-width:100px;min-height:var(--mynah-sizing-13)}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child>.mynah-card>.mynah-card-votes-wrapper{display:none}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child.mynah-chat-item-empty>.mynah-chat-items-spinner{display:inline-flex}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child:not(.mynah-chat-item-empty):before{content:\\\"\\\";pointer-events:none;position:absolute;overflow:hidden;border-bottom-right-radius:var(--mynah-card-radius);bottom:calc(var(--mynah-sizing-6) + var(--mynah-border-width));left:var(--mynah-border-width);right:var(--mynah-border-width);width:auto;height:var(--mynah-sizing-2);box-sizing:border-box;z-index:10;background-image:linear-gradient(90deg, var(--mynah-color-button) 0%, rgba(255, 255, 255, 0) 25%, rgba(255, 255, 255, 0) 50%, var(--mynah-color-button) 100%);background-position:0% bottom;background-size:200% var(--mynah-sizing-half);background-repeat:repeat-x;animation:horizontal-roll 1250ms linear infinite both}.mynah-chat-wrapper.loading>.mynah-chat-overflowing-intermediate-block{display:flex;flex-flow:column nowrap;max-height:0;overflow:visible;justify-content:flex-end}.mynah-chat-wrapper.loading>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button{display:inline-flex}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block{display:flex;flex-flow:column nowrap;max-height:0;overflow:visible;justify-content:flex-end;align-items:center;border-bottom:1px solid var(--mynah-color-border-default)}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block.hidden{display:none}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button{margin-bottom:var(--mynah-sizing-2);display:none;min-height:var(--mynah-sizing-8);background-color:var(--mynah-card-bg);padding-left:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button:active{box-shadow:none;filter:none}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button *{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper{display:block;padding:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt{display:flex;flex-flow:column nowrap;overflow:hidden;box-sizing:border-box;border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);padding:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper{display:flex;flex-flow:row nowrap;overflow:hidden;box-sizing:border-box;gap:var(--mynah-sizing-1);align-items:flex-start;position:relative;color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper{align-self:flex-start;display:inline-flex;align-items:center;position:relative;gap:var(--mynah-sizing-1);box-sizing:border-box}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper.hidden{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper>.mynah-chat-prompt-input-command-text{user-select:none;cursor:pointer;font-family:var(--mynah-font-family);font-size:var(--mynah-font-size-large);color:var(--mynah-color-text-input);font-weight:bold}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper{display:block;width:100%;position:relative;align-self:center}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input{font-family:var(--mynah-font-family);border:none;resize:none;background-color:rgba(0,0,0,0);font-size:var(--mynah-font-size-large);color:var(--mynah-color-text-input);outline:none;width:100%;max-height:20vh;min-height:1.5rem}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input::placeholder{color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input:not(.mynah-chat-prompt-input-sizer){position:absolute;height:100%;top:0;left:0;padding:0}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input-sizer{display:block;width:100%;opacity:0;visibility:hidden;pointer-events:none;overflow:hidden;white-space:pre-wrap;word-break:break-word}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button{background-color:transparent;width:auto;min-width:0;height:auto;padding-top:1px}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button i{font-size:calc(2*var(--mynah-font-size-xsmall));color:var(--mynah-color-button);height:var(--mynah-sizing-6);padding-left:0}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper.no-text~.mynah-chat-prompt-button:not([disabled]),.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button[disabled]{pointer-events:none;opacity:.25}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper.no-text~.mynah-chat-prompt-button:not([disabled]) i,.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button[disabled] i{color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper:empty{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item{position:relative;display:inline-block;max-width:250px;cursor:pointer}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:after{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;border-radius:var(--mynah-card-radius);opacity:0;transition:var(--mynah-short-transition-rev);z-index:8000;background-color:var(--mynah-color-alternate)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-chat-attachment-delete-icon{color:var(--mynah-color-alternate-reverse);opacity:0;transition:var(--mynah-short-transition-rev);position:absolute;left:50%;top:50%;width:30px;height:30px;margin-left:-15px;margin-top:-15px;z-index:9000}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-chat-attachment-delete-icon>i{width:30px;height:30px}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:hover:after{opacity:.75}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:hover>.mynah-chat-attachment-delete-icon{opacity:1}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card{pointer-events:none !important}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card *{pointer-events:none !important}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card>.mynah-card-body{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper.input-has-focus>.mynah-chat-prompt{border:var(--mynah-border-width) solid var(--mynah-color-button)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt-chars-indicator{width:100%;font-size:var(--mynah-font-size-xsmall);padding-top:var(--mynah-sizing-2);opacity:.5;display:flex;align-items:center;justify-content:flex-end;font-style:italic}.mynah-chat-wrapper>.mynah-chat-prompt-input-info{display:flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;padding:0 var(--mynah-sizing-4) var(--mynah-sizing-4) var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-prompt-input-info:empty{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-input-info>*{margin:0;margin-block-start:0;margin-block-end:0;margin-top:0;margin-bottom:0}.mynah-chat-command-selector{display:flex;box-sizing:border-box;background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);width:100%;pointer-events:all;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start;border:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-chat-command-selector>.mynah-chat-command-selector-group{display:flex;box-sizing:border-box;width:100%;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start;padding:var(--mynah-sizing-2)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-group-title{margin:0;color:var(--mynah-color-text-weak);opacity:.75;padding:var(--mynah-sizing-2) var(--mynah-sizing-3)}.mynah-chat-command-selector>.mynah-chat-command-selector-group:not(:last-child){border-bottom:1px solid var(--mynah-color-border-default)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command{display:flex;box-sizing:border-box;width:100%;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start;overflow:hidden;cursor:pointer;padding:var(--mynah-sizing-2) var(--mynah-sizing-3);color:var(--mynah-color-text-default);border-radius:var(--mynah-card-radius);transition:var(--mynah-short-transition-rev);gap:var(--mynah-sizing-1)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command{background-color:var(--mynah-color-button)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover *,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command *{color:var(--mynah-color-button-reverse)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command>.mynah-chat-command-selector-command-name{font-family:var(--mynah-font-family);font-size:var(--mynah-font-size-large);font-weight:bold;flex:0 1 0%}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command>.mynah-chat-command-selector-command-description{font-size:var(--mynah-font-size-small);opacity:.75;flex:1 0 100%}.mynah-chat-item-tree-view-wrapper{margin:0;margin-block-end:0 !important;margin-block-start:0 !important}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container{background-color:var(--mynah-card-bg);color:var(--mynah-color-text-default);margin-block-start:0 !important;margin-block-end:0 !important;position:relative;border-radius:var(--mynah-card-radius);border:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;position:relative;padding:var(--mynah-sizing-3);gap:var(--mynah-sizing-3);border-bottom:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title>h4{margin:0}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-border-default);opacity:.25;pointer-events:none}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view{padding:var(--mynah-sizing-3);overflow:hidden;box-sizing:border-box;width:100%;overflow-y:hidden;overflow-x:auto}.mynah-chat-item-tree-view-wrapper-label{border-top-left-radius:var(--mynah-card-radius);border-top-right-radius:var(--mynah-card-radius);background-color:var(--mynah-color-alternate);margin-bottom:0px;padding:var(--mynah-sizing-4)}.mynah-chat-item-tree-view-wrapper-feedback-label{padding-left:var(--mynah-sizing-4)}.mynah-chat-item-tree-view-wrapper-feedback-div{float:right}.mynah-chat-item-tree-view-wrapper-feedback-div button:first-child{margin-right:var(--mynah-sizing-2)}.mynah-chat-item-tree-view-license{color:var(--mynah-color-text-weak)}.mynah-chat-item-tree-view-license:before{content:\\\"\\\";position:absolute;left:0;right:0;top:0;bottom:0;background-color:var(--mynah-color-button);opacity:.07;pointer-events:none}.mynah-chat-item-tree-view-license ul{margin:0;padding-left:var(--mynah-sizing-8)}.mynah-chat-item-tree-view-license ul>li:not(:first-child){margin-top:var(--mynah-sizing-2)}.mynah-chat-item-tree-view-license ul>li .mynah-card-body p{margin:0}.mynah-chat-item-tree-view-license .mynah-chat-item-tree-view-license-dropdown-button>span{max-width:unset}.outer-container{display:flex}.outer-container:not(:empty){margin-top:var(--mynah-sizing-3)}.snippet-card-container.vertical-overflow pre{position:relative;-webkit-mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-16)), transparent 100%);-webkit-mask-size:100% 100%;mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-16)), transparent 100%);mask-size:100% 100%}.snippet-card-container{max-width:calc(5*var(--mynah-sizing-18));max-height:var(--mynah-sizing-10)}.snippet-card-container>.mynah-button{position:absolute;background-color:var(--mynah-card-bg) !important;width:var(--mynah-sizing-7) !important;min-width:var(--mynah-sizing-7) !important;max-width:var(--mynah-sizing-7) !important;height:var(--mynah-sizing-7) !important;border-radius:100%;right:calc(-1*var(--mynah-sizing-2));top:calc(-1*var(--mynah-sizing-2));border:var(--mynah-border-width) solid var(--mynah-color-border-default);opacity:1 !important;filter:brightness(0.95)}.snippet-card-container:not(:hover)>.mynah-button{display:none}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter{border:none}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter pre{text-overflow:ellipsis}.snippet-card-container-preview{max-width:80vw;max-height:70vh}.snippet-card-container-preview>.mynah-card-body>.mynah-syntax-highlighter{max-height:calc(70vh - var(--mynah-sizing-12)) !important}.snippet-card-container,.snippet-card-container-preview{position:relative;overflow:visible;width:100%;box-sizing:border-box}.snippet-card-container>.mynah-card-body,.snippet-card-container-preview>.mynah-card-body{max-height:100%}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter,.snippet-card-container-preview>.mynah-card-body>.mynah-syntax-highlighter{user-select:none;pointer-events:none;margin:0;max-height:100%;overflow:hidden}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons,.snippet-card-container-preview>.mynah-card-body>.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:none}.snippet-card-container pre,.snippet-card-container-preview pre{text-overflow:ellipsis}.mynah-collapsible-content-wrapper{display:block;box-sizing:border-box;width:100%;overflow:hidden;position:relative}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox{display:none}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label{box-sizing:border-box;display:flex;flex-flow:column nowrap;overflow:hidden;align-items:flex-start;justify-content:stretch;padding:var(--mynah-sizing-2);gap:var(--mynah-sizing-2)}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-title-wrapper{gap:var(--mynah-sizing-2);display:flex;flex-flow:row nowrap;box-sizing:border-box;width:100%;overflow:hidden;justify-content:flex-start;align-items:flex-start;pointer-events:all;cursor:pointer;user-select:none}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-title-wrapper>.mynah-collapsible-content-label-title-text{flex:1;overflow:hidden}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-content-wrapper{overflow:hidden;box-sizing:border-box;width:100%}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox:checked+.mynah-collapsible-content-label>.mynah-collapsible-content-label-content-wrapper{display:none}body,html{background-color:var(--mynah-color-bg);color:var(--mynah-color-text-default);height:100%;width:100%;overflow:hidden;margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-weight:600}::-webkit-scrollbar{width:2px;height:2px;opacity:.25}::-webkit-scrollbar:horizontal{width:0px;height:0px}*:focus{outline:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/styles/_variables.scss\",\"webpack://./src/styles/_animations.scss\",\"webpack://./src/styles/components/_main-container.scss\",\"webpack://./src/styles/components/_button.scss\",\"webpack://./src/styles/components/_toggle.scss\",\"webpack://./src/styles/components/_icon.scss\",\"webpack://./src/styles/components/_nav-tabs.scss\",\"webpack://./src/styles/components/card/_card.scss\",\"webpack://./src/styles/components/_source-link-header.scss\",\"webpack://./src/styles/components/card/_card-body.scss\",\"webpack://./src/styles/components/_votes-wrapper.scss\",\"webpack://./src/styles/components/_feedback-form.scss\",\"webpack://./src/styles/components/_overlay.scss\",\"webpack://./src/styles/components/_notification.scss\",\"webpack://./src/styles/components/_syntax-highlighter.scss\",\"webpack://./src/styles/components/chat/_chat-wrapper.scss\",\"webpack://./src/styles/components/chat/_chat-items-container.scss\",\"webpack://./src/styles/_mixins.scss\",\"webpack://./src/styles/components/chat/_chat-overflowing-intermediate-block.scss\",\"webpack://./src/styles/components/chat/_chat-prompt-wrapper.scss\",\"webpack://./src/styles/components/chat/_chat-command-selector.scss\",\"webpack://./src/styles/components/chat/_chat-item-tree-view.scss\",\"webpack://./src/styles/components/chat/_chat-prompt-code-snippet.scss\",\"webpack://./src/styles/components/_collapsible-content.scss\",\"webpack://./src/styles/styles.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\":root {\\n --mynah-font-family: var(--vscode-font-family), system-ui, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\",\\n \\\"Amazon Ember\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\"Open Sans\\\", \\\"Helvetica Neue\\\", sans-serif;\\n font-size: var(--vscode-font-size, 13px);\\n font-family: var(--mynah-font-family, \\\"system-ui\\\");\\n --mynah-max-width: 2560px;\\n --mynah-sizing-base: 0.25rem;\\n --mynah-sizing-half: calc(var(--mynah-sizing-base) / 2);\\n --mynah-sizing-1: var(--mynah-sizing-base);\\n --mynah-sizing-2: calc(var(--mynah-sizing-base) * 2);\\n --mynah-sizing-3: calc(var(--mynah-sizing-base) * 3);\\n --mynah-sizing-4: calc(var(--mynah-sizing-base) * 4);\\n --mynah-sizing-5: calc(var(--mynah-sizing-base) * 5);\\n --mynah-sizing-6: calc(var(--mynah-sizing-base) * 6);\\n --mynah-sizing-7: calc(var(--mynah-sizing-base) * 7);\\n --mynah-sizing-8: calc(var(--mynah-sizing-base) * 8);\\n --mynah-sizing-9: calc(var(--mynah-sizing-base) * 9);\\n --mynah-sizing-10: calc(var(--mynah-sizing-base) * 10);\\n --mynah-sizing-11: calc(var(--mynah-sizing-base) * 11);\\n --mynah-sizing-12: calc(var(--mynah-sizing-base) * 12);\\n --mynah-sizing-13: calc(var(--mynah-sizing-base) * 13);\\n --mynah-sizing-14: calc(var(--mynah-sizing-base) * 14);\\n --mynah-sizing-15: calc(var(--mynah-sizing-base) * 15);\\n --mynah-sizing-16: calc(var(--mynah-sizing-base) * 16);\\n --mynah-sizing-17: calc(var(--mynah-sizing-base) * 17);\\n --mynah-sizing-18: calc(var(--mynah-sizing-base) * 18);\\n --mynah-button-border-width: 1px;\\n --mynah-border-width: 1px;\\n\\n --mynah-color-text-default: var(--vscode-foreground);\\n --mynah-color-text-strong: var(--vscode-input-foreground);\\n --mynah-color-text-weak: var(--vscode-disabledForeground);\\n --mynah-color-text-link: var(--vscode-textLink-foreground);\\n --mynah-color-text-input: var(--vscode-input-foreground);\\n\\n --mynah-color-bg: var(--vscode-sideBar-background);\\n --mynah-color-bg-alt: var(--vscode-editorPane-background, var(--mynah-color-bg));\\n --mynah-color-tab-active: var(--vscode-tab-activeBackground, var(--vscode-editor-background, var(--mynah-card-bg)));\\n --mynah-color-light: rgba(0, 0, 0, 0.05);\\n\\n --mynah-color-deep: var(--vscode-checkbox-background);\\n --mynah-color-deep-reverse: var(--vscode-checkbox-foreground);\\n --mynah-color-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));\\n --mynah-color-input-bg: var(--vscode-input-background);\\n\\n --mynah-color-highlight: rgba(255, 179, 0, 0.25);\\n --mynah-color-highlight-text: #886411;\\n\\n --mynah-color-context-must-contain: #c7ebce;\\n --mynah-color-context-should-contain: var(--vscode-sideBar-background);\\n --mynah-color-context-must-not-contain: #f3cac7;\\n --mynah-color-context-reverse: rgba(0, 0, 0, 0.5);\\n --mynah-color-context-filter: 0.975;\\n\\n --mynah-color-syntax-bg: var(--vscode-terminal-dropBackground);\\n --mynah-color-syntax-variable: var(--vscode-debugTokenExpression-name);\\n --mynah-color-syntax-function: var(--vscode-gitDecoration-modifiedResourceForeground);\\n --mynah-color-syntax-operator: var(--vscode-debugTokenExpression-name);\\n --mynah-color-syntax-attr-value: var(--vscode-debugIcon-stepBackForeground);\\n --mynah-color-syntax-attr: var(--vscode-debugTokenExpression-string);\\n --mynah-color-syntax-property: var(--vscode-terminal-ansiCyan);\\n --mynah-color-syntax-comment: var(--vscode-debugConsole-sourceForeground);\\n --mynah-color-syntax-code: var(--vscode-terminal-ansiBlue);\\n --mynah-syntax-code-font-family: var(--vscode-editor-font-family);\\n --mynah-syntax-code-font-size: var(--vscode-editor-font-size, var(--mynah-font-size-medium));\\n\\n --mynah-color-status-info: var(--vscode-editorInfo-foreground);\\n --mynah-color-status-success: var(--vscode-terminal-ansiGreen);\\n --mynah-color-status-warning: var(--vscode-editorWarning-foreground);\\n --mynah-color-status-error: var(--vscode-editorError-foreground);\\n\\n --mynah-color-button: var(--vscode-button-background);\\n --mynah-color-button-reverse: var(--vscode-button-foreground);\\n\\n --mynah-color-alternate: var(--vscode-button-secondaryBackground);\\n --mynah-color-alternate-reverse: var(--vscode-button-secondaryForeground);\\n\\n --mynah-color-code-bg: rgba(0, 0, 0, 0.25);\\n --mynah-color-code-text: var(--vscode-textPreformat-foreground);\\n\\n --mynah-color-main: var(--vscode-button-background);\\n --mynah-color-main-reverse: var(--vscode-button-foreground);\\n\\n --mynah-card-bg: var(--vscode-editor-background);\\n\\n --mynah-shadow-generic: none; //0 5px 10px -10px rgba(0, 0, 0, 0.25);\\n --mynah-shadow-card: none; //0 10px 20px -15px rgba(0, 0, 0, 0.25);\\n --mynah-shadow-card-more: none; //0 10px 20px -10px rgba(0, 0, 0, 0.5);\\n --mynah-shadow-card-active: none; //0 10px 20px -10px rgba(0, 0, 0, 0.5);\\n --mynah-shadow-prioritization-menu: none; //0 10px 20px -10px #e7e7e7;\\n --mynah-shadow-feedback-form: none; //0 0px 40px 0px var(--mynah-color-bg);\\n\\n --mynah-font-size-xxsmall: 0.75rem;\\n --mynah-font-size-xsmall: 0.85rem;\\n --mynah-font-size-small: 0.95rem;\\n --mynah-font-size-medium: 1rem;\\n --mynah-font-size-large: 1.125rem;\\n --mynah-font-size-xlarge: 1.175rem;\\n\\n --mynah-card-radius: var(--mynah-sizing-2);\\n --mynah-button-radius: var(--mynah-sizing-1);\\n\\n --mynah-bottom-panel-transition: all 550ms cubic-bezier(0.25, 0, 0, 1);\\n --mynah-very-short-transition: all 400ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-transform: transform 350ms cubic-bezier(0.85, 0.15, 0, 1);\\n --mynah-long-transition: all 520ms cubic-bezier(0.35, 1, 0.15, 1);\\n --mynah-pretty-long-transition: all 600ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-very-long-transition: all 1400ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition: all 400ms cubic-bezier(0.85, 0.15, 0, 1);\\n --mynah-short-transition-rev: all 420ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-short-transition-rev-opacity: opacity 550ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-short-transition-reflection: all 800ms cubic-bezier(0.25, 1, 0, 1),\\n opacity 650ms 300ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-turbo: all 400ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-turbo-bounce: all 500ms cubic-bezier(0.25, 1, 0, 1),\\n transform 600ms cubic-bezier(0.25, 4, 0, 1);\\n --mynah-short-transition-bounce: all 650ms cubic-bezier(0.25, 1, 0, 1),\\n transform 900ms cubic-bezier(0.15, 1.25, 0, 1);\\n --mynah-text-flow-transition: all 650ms cubic-bezier(0.25, 1, 0, 1),\\n transform 900ms cubic-bezier(0.15, 1.25, 0, 1), max-height 1100ms cubic-bezier(0.35, 1, 0, 1);\\n\\n --mynah-mask-image: linear-gradient(\\n to bottom,\\n black var(--mynah-sizing-8),\\n black calc(100% - var(--mynah-sizing-14)),\\n transparent\\n );\\n --mynah-mask-image-rev: linear-gradient(to bottom, transparent 0%, transparent 80%, black 100%);\\n --mynah-mask-image-main: linear-gradient(\\n to bottom,\\n transparent,\\n black var(--mynah-sizing-6),\\n black calc(100% - var(--mynah-sizing-6)),\\n transparent\\n );\\n --mynah-mask-image-main-rev: linear-gradient(to bottom, black, transparent calc(100% - 2px), transparent);\\n\\n --mynah-mask-image-skeleton: linear-gradient(\\n to bottom,\\n black var(--mynah-sizing-8),\\n black calc(50% - var(--mynah-sizing-14)),\\n transparent\\n );\\n\\n --mynah-policy-group-filter: saturate(0.5) brightness(0.85);\\n}\\n\",\"@keyframes horizontal-roll {\\n 0% {\\n background-position: 0% bottom;\\n }\\n 100% {\\n background-position: -200% bottom;\\n }\\n}\\n\\n@keyframes bounce {\\n from {\\n transform: translate3d(0, 0, 0);\\n }\\n to {\\n transform: translate3d(0, calc(-1 * var(--mynah-sizing-2)), 0);\\n }\\n}\\n\",\"$smoothbezier: cubic-bezier(0.25, 0, 0, 1);\\n$smoothduration: 400ms;\\n#mynah-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n margin: 0 auto;\\n width: 100%;\\n max-width: var(--mynah-max-width);\\n box-sizing: border-box;\\n height: 100%;\\n position: relative;\\n overflow: hidden;\\n justify-content: stretch;\\n align-items: stretch;\\n\\n > .mynah-ui-tab-contents-wrapper {\\n flex: 1;\\n position: relative;\\n }\\n}\\n\",\"button.mynah-button {\\n border: none;\\n min-width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n border-radius: var(--mynah-button-radius);\\n background-color: var(--mynah-color-button);\\n color: var(--mynah-color-button-reverse);\\n box-shadow: var(--mynah-shadow-generic);\\n cursor: pointer;\\n transition: var(--mynah-very-short-transition);\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n outline: none;\\n overflow: hidden;\\n position: relative;\\n transform: translate3d(0, 0, 0) scale(1.00001);\\n padding: 0;\\n filter: brightness(0.9);\\n opacity: 0.85;\\n &.mynah-bottom-block-close-button {\\n position: absolute;\\n align-self: flex-end;\\n transform: translate3d(var(--mynah-sizing-2), calc(-100% - var(--mynah-sizing-6)), 0px);\\n background-color: var(--mynah-card-bg);\\n color: var(--mynah-color-text-default);\\n box-shadow: var(--mynah-shadow-feedback-form);\\n }\\n &[disabled=\\\"disabled\\\"] {\\n opacity: 0.25 !important;\\n pointer-events: none;\\n }\\n &.mynah-button-secondary {\\n background-color: transparent;\\n color: inherit;\\n box-shadow: none;\\n opacity: 0.75;\\n height: var(--mynah-sizing-6);\\n &:focus-visible,\\n &:hover {\\n opacity: 1;\\n }\\n &:active {\\n box-shadow: none;\\n }\\n }\\n &:focus-visible,\\n &:hover {\\n filter: brightness(1);\\n opacity: 1;\\n }\\n &:active {\\n filter: brightness(0.9);\\n opacity: 0.85;\\n }\\n &.mynah-icon-button {\\n width: var(--mynah-sizing-10);\\n height: var(--mynah-sizing-10);\\n }\\n > .mynah-mutating-next-icon {\\n width: var(--mynah-sizing-6);\\n height: var(--mynah-sizing-6);\\n transform: translate3d(0, 0, 0) rotateZ(0deg);\\n transition: var(--mynah-short-transition-turbo);\\n transform-origin: center center;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n justify-content: center;\\n align-items: center;\\n > i {\\n font-size: var(--mynah-font-size-xlarge);\\n &.mynah-loading-spinner {\\n min-width: var(--mynah-sizing-5);\\n min-height: var(--mynah-sizing-5);\\n border: 3px solid currentColor;\\n opacity: 0.5;\\n box-sizing: border-box;\\n border-top-color: rgba(0, 0, 0, 0);\\n border-radius: var(--mynah-sizing-5);\\n animation: spin 1s infinite linear;\\n }\\n &:nth-child(2) {\\n display: none;\\n }\\n }\\n }\\n > .mynah-search-history-icon {\\n width: var(--mynah-sizing-6);\\n height: var(--mynah-sizing-6);\\n transform: translate3d(0, 0, 0) rotateZ(0deg);\\n transition: var(--mynah-short-transition-turbo);\\n transform-origin: center center;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n justify-content: center;\\n align-items: center;\\n > i {\\n font-size: 2rem;\\n &.mynah-history-icon {\\n min-width: var(--mynah-sizing-5);\\n min-height: var(--mynah-sizing-5);\\n border: 3px solid currentColor;\\n opacity: 0.5;\\n box-sizing: border-box;\\n border-top-color: rgba(0, 0, 0, 0);\\n border-radius: var(--mynah-button-radius);\\n animation: spin 1s infinite linear;\\n }\\n &:nth-child(2) {\\n display: none;\\n }\\n }\\n }\\n &.mynah-button-wait {\\n background-color: var(--mynah-color-light);\\n color: var(--mynah-color-text-default);\\n box-shadow: 0 5px 10px -10px var(--mynah-color-light);\\n pointer-events: none;\\n > .mynah-mutating-next-icon > i {\\n &:first-child {\\n display: none;\\n }\\n &:nth-child(2) {\\n display: block;\\n }\\n }\\n }\\n > span {\\n white-space: nowrap;\\n font-size: var(--mynah-font-size-medium);\\n max-width: 35vw;\\n transition: var(--mynah-very-long-transition);\\n overflow: hidden;\\n box-sizing: border-box;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding-left: var(--mynah-sizing-3);\\n padding-right: var(--mynah-sizing-3);\\n }\\n > i + span {\\n padding-left: var(--mynah-sizing-base);\\n }\\n}\\n\",\".mynah-toggle-container {\\n flex-flow: row nowrap;\\n max-width: 100%;\\n overflow: hidden;\\n align-items: center;\\n position: relative;\\n background: var(--mynah-color-context-should-contain);\\n color: var(--mynah-color-context-reverse);\\n justify-content: flex-start;\\n overflow-y: hidden;\\n overflow-x: auto;\\n display: flex;\\n > span {\\n overflow: hidden;\\n height: 100%;\\n min-width: var(--mynah-sizing-8);\\n max-width: calc(3 * var(--mynah-sizing-15));\\n flex-shrink: 0;\\n > .mynah-toggle-option {\\n display: none;\\n &:not(:first-child) + .mynah-toggle-option-label {\\n margin-left: calc(-1 * var(--mynah-sizing-1));\\n }\\n &:not(:checked) + .mynah-toggle-option-label {\\n &.indication:after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 50%;\\n margin-top: calc(-1 * var(--mynah-sizing-half));\\n left: var(--mynah-sizing-2);\\n height: var(--mynah-sizing-1);\\n width: var(--mynah-sizing-1);\\n background-color: var(--mynah-color-status-success);\\n border-radius: var(--mynah-sizing-1);\\n border: 1px solid var(--mynah-color-text-weak);\\n opacity: 0.75;\\n }\\n }\\n & + .mynah-toggle-option-label {\\n cursor: pointer;\\n pointer-events: all;\\n position: relative;\\n z-index: 100;\\n padding: 0 var(--mynah-sizing-3) 0 var(--mynah-sizing-5);\\n height: 100%;\\n box-sizing: border-box;\\n display: inline-flex;\\n overflow: hidden;\\n justify-content: stretch;\\n align-items: center;\\n color: var(--mynah-color-text-weak);\\n border-right: 1px solid var(--mynah-color-border-default);\\n border-top: 1px solid transparent;\\n background-color: var(--mynah-color-bg);\\n opacity: 0.75;\\n max-width: 100%;\\n &,\\n & * {\\n user-select: none;\\n }\\n > span {\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 100%;\\n display: block;\\n }\\n > .mynah-toggle-close-button {\\n margin-left: var(--mynah-sizing-3);\\n font-size: var(--mynah-font-size-xsmall);\\n min-width: 1em;\\n }\\n }\\n &:checked + .mynah-toggle-option-label {\\n border-top-color: var(--mynah-color-button);\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n background-color: var(--mynah-color-tab-active);\\n }\\n &[disabled=\\\"disabled\\\"] {\\n pointer-events: none !important;\\n & + .mynah-toggle-option-label {\\n pointer-events: none !important;\\n opacity: 0.25;\\n }\\n }\\n }\\n }\\n\\n &.mynah-toggle-direction-vertical {\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-3);\\n }\\n}\\n\\n.mynah-toggle-disabled-tooltip-container {\\n max-width: 30vw;\\n display: inline-block;\\n padding: var(--mynah-sizing-3);\\n font-size: 80%;\\n opacity: 0.85;\\n}\\n\",\".mynah-ui-icon {\\n font-style: normal;\\n font-weight: normal;\\n display: inline-flex;\\n width: 1em;\\n height: 1em;\\n font-variant: normal;\\n text-transform: none;\\n -webkit-mask-size: 100%;\\n mask-size: 100%;\\n -webkit-mask-position: center center;\\n mask-position: center center;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n color: inherit;\\n background-color: currentColor;\\n > span {\\n display: none;\\n }\\n}\\n\",\".mynah-nav-tabs-wrapper {\\n border-top: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-color-bg);\\n display: flex;\\n align-items: center;\\n overflow: hidden;\\n box-shadow: var(--mynah-shadow-generic);\\n z-index: 100;\\n min-height: var(--mynah-sizing-10);\\n max-height: var(--mynah-sizing-10);\\n position: relative;\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n width: auto;\\n height: var(--mynah-button-border-width);\\n background-color: var(--mynah-color-border-default);\\n }\\n\\n > .mynah-toggle-container {\\n height: 100%;\\n background: none;\\n box-sizing: border-box;\\n > span {\\n white-space: nowrap;\\n }\\n }\\n &:empty {\\n display: none;\\n }\\n\\n &.mynah-nav-tabs-loading,\\n &.mynah-nav-tabs-loading * {\\n pointer-events: none;\\n }\\n}\\n\",\".mynah-card {\\n text-decoration: none;\\n outline: none;\\n position: relative;\\n transition: var(--mynah-short-transition-rev);\\n box-sizing: border-box;\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-3);\\n transform: translate3d(0, 0, 0);\\n flex: auto 0 0;\\n width: 100%;\\n overflow: hidden;\\n border-radius: var(--mynah-card-radius);\\n\\n &.padding {\\n &-none {\\n padding: 0;\\n }\\n &-small {\\n padding: var(--mynah-sizing-1);\\n }\\n &-medium {\\n padding: var(--mynah-sizing-3);\\n }\\n &-large {\\n padding: var(--mynah-sizing-5);\\n }\\n }\\n &.background {\\n background-color: var(--mynah-card-bg);\\n }\\n &.border {\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n }\\n\\n > * {\\n z-index: 10;\\n position: relative;\\n }\\n\\n @import '../source-link-header';\\n @import 'card-body';\\n @import '../votes-wrapper';\\n}\\n\",\"> .mynah-source-link-header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n opacity: 1;\\n gap: var(--mynah-sizing-2);\\n transition: var(--mynah-very-short-transition);\\n > .mynah-source-thumbnail {\\n font-style: normal;\\n font-weight: normal;\\n display: none;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n font-variant: normal;\\n text-transform: none;\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: 100%;\\n background-size: 85%;\\n background-clip: content-box;\\n background-position: center center;\\n background-repeat: no-repeat;\\n align-self: flex-start;\\n box-sizing: border-box;\\n background-color: var(--mynah-card-bg);\\n position: relative;\\n overflow: hidden;\\n &:after {\\n content: \\\"\\\";\\n pointer-events: none;\\n box-sizing: border-box;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n width: auto;\\n height: auto;\\n border: 2px solid var(--mynah-card-bg);\\n border-radius: 100%;\\n }\\n }\\n > .mynah-source-link-title-wrapper {\\n flex: 1 1 0;\\n display: flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n gap: var(--mynah-sizing-half);\\n max-width: 100%;\\n overflow: hidden;\\n cursor: pointer;\\n &:hover > .mynah-source-link-title > .mynah-source-link-expand-icon {\\n opacity: 0.75;\\n align-self: baseline;\\n }\\n > .mynah-source-link-title {\\n font-size: var(--mynah-font-size-medium);\\n font-weight: 500;\\n color: var(--mynah-color-text-strong);\\n width: 100%;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-2);\\n white-space: normal;\\n text-overflow: ellipsis;\\n text-decoration: none;\\n outline: none;\\n overflow: hidden;\\n > .mynah-source-link-expand-icon {\\n transition: var(--mynah-short-transition-rev);\\n opacity: 0;\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n display: inline;\\n padding: var(--mynah-sizing-1);\\n }\\n }\\n > .mynah-source-link-url {\\n font-size: var(--mynah-font-size-xsmall);\\n font-weight: 300;\\n color: var(--mynah-color-text-link);\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n text-decoration: none;\\n outline: none;\\n overflow: hidden;\\n max-width: 100%;\\n position: relative;\\n padding-bottom: var(--mynah-sizing-1);\\n display: inline-block;\\n transition: var(--mynah-short-transition-rev);\\n &:after {\\n content: \\\"\\\";\\n position: relative;\\n display: block;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 1px;\\n border-radius: var(--mynah-sizing-half);\\n background-color: currentColor;\\n transform: translate3d(-30%, 0, 0);\\n transition: var(--mynah-short-transition-rev);\\n opacity: 0;\\n }\\n &:hover {\\n &:after {\\n transform: translate3d(0, 0, 0);\\n opacity: 1;\\n }\\n }\\n > span {\\n &:not(:last-child):after {\\n content: \\\">\\\";\\n margin-left: var(--mynah-sizing-1);\\n margin-right: var(--mynah-sizing-1);\\n }\\n &:nth-child(3) ~ span:not(:last-child) {\\n display: none;\\n }\\n &:last-child {\\n font-weight: bold;\\n }\\n &:nth-child(3):not(:last-child):after {\\n content: \\\"> ... >\\\";\\n }\\n }\\n }\\n > .mynah-title-meta-block {\\n display: flex;\\n flex-flow: row wrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-1);\\n margin-bottom: var(--mynah-sizing-half);\\n &:empty {\\n display: none;\\n }\\n > .mynah-title-meta-block-item {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-1);\\n padding: calc(var(--mynah-sizing-half) * 3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: var(--mynah-button-radius);\\n opacity: 0.75;\\n > .mynah-icon {\\n opacity: 0.5;\\n font-size: var(--mynah-font-size-medium);\\n color: var(--mynah-color-text-weak);\\n }\\n > .mynah-title-meta-block-item-text {\\n font-size: var(--mynah-font-size-xxsmall);\\n color: var(--mynah-color-text-weak);\\n &::first-letter {\\n text-transform: capitalize;\\n }\\n }\\n &.approved-answer {\\n border-color: green;\\n position: relative;\\n &:before {\\n content: \\\"\\\";\\n border-radius: var(--mynah-button-radius);\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: green;\\n opacity: 0.04;\\n }\\n > .mynah-icon {\\n opacity: 1;\\n color: green;\\n border-radius: var(--mynah-button-radius);\\n width: var(--mynah-sizing-3);\\n height: var(--mynah-sizing-3);\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"> .mynah-card-body {\\n flex: 1;\\n overflow: hidden;\\n position: relative;\\n display: block;\\n\\n > *:not(pre) {\\n font-size: var(--mynah-font-size-medium);\\n }\\n span[start][end] {\\n display: none;\\n }\\n > p:first-child {\\n &,\\n & h1:first-child,\\n & h2:first-child,\\n & h3:first-child,\\n & h4:first-child,\\n & h5:first-child {\\n margin-top: 0;\\n }\\n }\\n > p:first-child:last-of-type,\\n > p p:first-child {\\n margin: 0;\\n }\\n &,\\n & > div {\\n > *:not(div):not(pre) {\\n margin-block-start: 0.75em;\\n margin-block-end: 0.75em;\\n padding-bottom: 1px !important;\\n &:first-child {\\n margin-block-start: 0;\\n }\\n user-select: text;\\n &:empty {\\n display: none;\\n }\\n }\\n > p:last-of-type {\\n margin-block-end: 0;\\n }\\n mark[reference-tracker] {\\n background-color: var(--mynah-color-highlight);\\n color: inherit;\\n cursor: help;\\n }\\n .amzn-mynah-search-result-highlight {\\n background-color: var(--mynah-color-highlight);\\n color: var(--mynah-color-highlight-text);\\n }\\n .amzn-mynah-search-result-ellipsis {\\n display: inline-block;\\n position: relative;\\n padding-left: var(--mynah-sizing-2);\\n margin-top: var(--mynah-sizing-1);\\n margin-bottom: var(--mynah-sizing-1);\\n font-size: calc(1em + var(--mynah-sizing-1)) !important;\\n user-select: none;\\n cursor: default;\\n height: var(--mynah-sizing-7);\\n\\n &:before {\\n pointer-events: none;\\n content: \\\"\\\";\\n width: calc(1em + var(--mynah-sizing-2));\\n height: calc(1em + var(--mynah-sizing-2));\\n position: absolute;\\n left: 0;\\n top: 0;\\n background-color: currentColor;\\n opacity: 0.1;\\n border-radius: var(--mynah-sizing-1);\\n }\\n }\\n }\\n}\\n\",\"> .mynah-card-votes-wrapper {\\n align-items: center;\\n gap: var(--mynah-sizing-2);\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n border-top: 1px solid var(--mynah-color-border-default);\\n padding-top: var(--mynah-sizing-3);\\n font-size: var(--mynah-font-size-small);\\n > span.mynah-feedback-thanks {\\n overflow: hidden;\\n }\\n > .mynah-button > span {\\n padding: 0;\\n font-size: var(--mynah-font-size-small);\\n color: var(--mynah-color-text-link);\\n }\\n > .mynah-vote-text {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-small);\\n }\\n > .mynah-card-vote {\\n position: relative;\\n overflow: visible;\\n display: inline-flex;\\n align-items: center;\\n box-sizing: border-box;\\n gap: var(--mynah-sizing-3);\\n > .mynah-vote-radio {\\n display: none;\\n }\\n > .mynah-vote-label {\\n z-index: 10;\\n cursor: pointer;\\n font-size: var(--mynah-font-size-small);\\n transition: var(--mynah-short-transition);\\n width: var(--mynah-sizing-5);\\n height: var(--mynah-sizing-5);\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n color: var(--mynah-color-text-weak);\\n opacity: 0.5;\\n > * {\\n pointer-events: none;\\n }\\n > i {\\n height: calc(var(--mynah-sizing-6) + var(--mynah-sizing-half));\\n }\\n }\\n > .mynah-vote-up-radio:checked {\\n & ~ .mynah-vote-up {\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n }\\n }\\n > .mynah-vote-down-radio:checked {\\n & ~ .mynah-vote-down {\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n }\\n }\\n }\\n}\\n\",\"#mynah-feedback-form-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n position: absolute;\\n bottom: 0;\\n left: var(--mynah-sizing-2);\\n right: var(--mynah-sizing-2);\\n width: auto;\\n box-sizing: border-box;\\n z-index: 9999999;\\n opacity: 0;\\n transform: translate3d(0, 5vh, 0);\\n transition: var(--mynah-bottom-panel-transition);\\n overflow: visible;\\n &:before {\\n transition: all 400ms cubic-bezier(0.25, 0, 0, 1);\\n content: \\\"\\\";\\n position: absolute;\\n right: calc(-1 * var(--mynah-sizing-2));\\n bottom: 0;\\n left: 0;\\n width: 100vw;\\n height: 100vh;\\n background-color: black;\\n opacity: 0;\\n pointer-events: none;\\n transform: translate3d(0, 0, 0) scale(2);\\n transform-origin: center center;\\n z-index: -1;\\n }\\n > .mynah-bottom-block-close-button {\\n transform: translate3d(calc(-1 * var(--mynah-sizing-1)), calc(-100% - var(--mynah-sizing-3)), 0px);\\n }\\n & + #mynah-wrapper {\\n transition: var(--mynah-bottom-panel-transition);\\n }\\n &:not(.mynah-feedback-form-show) {\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n &.mynah-feedback-form-show {\\n opacity: 1;\\n transform: translate3d(0, 0, 0);\\n &:before {\\n opacity: 0.15;\\n }\\n & + #mynah-wrapper {\\n transform: translate3d(0, 0px, 0) scale(0.95);\\n transform-origin: top center;\\n opacity: 0.25;\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n }\\n}\\n\\n.mynah-feedback-form {\\n pointer-events: all;\\n box-sizing: border-box;\\n transition: var(--mynah-short-transition-rev);\\n transform: translate3d(0, 0, 0);\\n display: flex;\\n flex-flow: column;\\n gap: var(--mynah-sizing-4);\\n align-items: stretch;\\n transform-origin: right bottom;\\n z-index: 10;\\n position: relative;\\n border: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n border-top-right-radius: var(--mynah-card-radius);\\n border-top-left-radius: var(--mynah-card-radius);\\n border-bottom: none;\\n box-shadow: 0px -25px 20px -25px rgba(0, 0, 0, 0.15);\\n background-color: var(--mynah-color-bg);\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-feedback-form-header {\\n display: flex;\\n box-sizing: border-box;\\n align-items: center;\\n margin-bottom: var(--mynah-sizing-4);\\n > h4 {\\n flex: 1;\\n margin: 0;\\n }\\n }\\n\\n > .mynah-feedback-form-comment {\\n background-color: transparent;\\n padding: var(--mynah-sizing-3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n resize: none;\\n width: 100%;\\n height: 100px;\\n max-height: 25vh;\\n border-radius: var(--mynah-sizing-2);\\n font-size: var(--mynah-font-size-small);\\n outline: none;\\n color: var(--mynah-color-text-input);\\n background-color: var(--mynah-card-bg);\\n box-sizing: border-box;\\n font-family: inherit;\\n }\\n\\n > .mynah-feedback-form-select-wrapper {\\n position: relative;\\n display: flex;\\n box-sizing: border-box;\\n padding: var(--mynah-sizing-3);\\n justify-content: flex-end;\\n align-items: center;\\n > .mynah-feedback-form-select {\\n position: absolute;\\n width: 100%;\\n left: 0;\\n color: var(--mynah-color-text-default);\\n border-radius: var(--mynah-card-radius);\\n padding: var(--mynah-sizing-3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n -webkit-appearance: none;\\n appearance: none;\\n text-indent: 1px;\\n text-overflow: clip;\\n outline: none;\\n }\\n > .mynah-feedback-form-select-handle {\\n color: var(--mynah-color-text-weak);\\n pointer-events: none;\\n }\\n }\\n\\n > .mynah-feedback-form-buttons-container {\\n display: flex;\\n justify-content: flex-end;\\n align-items: center;\\n gap: var(--mynah-sizing-1);\\n box-sizing: border-box;\\n }\\n}\\n\",\".mynah-overlay {\\n position: fixed;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n box-sizing: border-box;\\n pointer-events: none;\\n z-index: 1000000;\\n &.mynah-overlay-dim-outside {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-bg);\\n transition: var(--mynah-short-transition-rev-opacity);\\n opacity: 0.45;\\n }\\n }\\n > .mynah-overlay-container {\\n --overlayLeftPos: 0;\\n --overlayTopPos: 0;\\n --overlayInnerHorizontalOrigin: left;\\n --overlayInnerVerticalOrigin: top;\\n position: absolute;\\n display: block;\\n overflow: visible;\\n border-radius: var(--mynah-card-radius);\\n\\n .mynah-card,\\n .mynah-card * {\\n pointer-events: none !important;\\n .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n & ~ *:last-child {\\n margin-bottom: 0 !important;\\n }\\n }\\n }\\n\\n &.background {\\n &:before {\\n content: \\\"\\\";\\n background-color: transparent;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n top: calc(var(--mynah-button-border-width) * -1);\\n left: calc(var(--mynah-button-border-width) * -1);\\n right: calc(var(--mynah-button-border-width) * -1);\\n bottom: calc(var(--mynah-button-border-width) * -1);\\n width: auto;\\n height: auto;\\n pointer-events: none;\\n box-sizing: border-box;\\n opacity: 0;\\n border: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n box-shadow: var(--mynah-shadow-prioritization-menu);\\n }\\n\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n left: 0;\\n top: 0;\\n opacity: 0;\\n border: var(--mynah-sizing-4);\\n background-color: var(--mynah-card-bg);\\n border-radius: inherit;\\n transition: var(--mynah-short-transition-rev);\\n transition-delay: 20ms;\\n }\\n }\\n\\n &.horizontal-direction {\\n &-to-left,\\n &-from-end-to-left {\\n --overlayLeftPos: -100%;\\n --overlayInnerHorizontalOrigin: right;\\n &:after {\\n left: calc(100% - var(--mynah-sizing-4));\\n }\\n }\\n &-at-center {\\n --overlayInnerHorizontalOrigin: center;\\n --overlayLeftPos: -50%;\\n &:after {\\n left: calc(50% - var(--mynah-sizing-4));\\n }\\n }\\n }\\n &.vertical-direction {\\n &-to-top,\\n &-from-end-to-top {\\n --overlayTopPos: -100%;\\n --overlayInnerVerticalOrigin: bottom;\\n &:after {\\n top: calc(100% - var(--mynah-sizing-4));\\n }\\n }\\n &-at-center {\\n --overlayInnerVerticalOrigin: center;\\n --overlayTopPos: -50%;\\n &:after {\\n top: calc(50% - var(--mynah-sizing-4));\\n }\\n }\\n }\\n\\n > .mynah-overlay-inner-container {\\n display: inline-block;\\n overflow: hidden;\\n z-index: 10;\\n position: relative;\\n transform: translate3d(0, 0, 0) scale(0.85);\\n transform-origin: var(--overlayInnerHorizontalOrigin) var(--overlayInnerVerticalOrigin);\\n transition: var(--mynah-short-transition-rev);\\n width: 100%;\\n }\\n &:before {\\n transform: translate3d(0, 0, 0) scale(0.85);\\n transition: var(--mynah-short-transition-rev);\\n }\\n > .mynah-overlay-inner-container,\\n &:before {\\n opacity: 0;\\n transition-delay: 0ms;\\n }\\n\\n transform: translate3d(var(--overlayLeftPos), var(--overlayTopPos), 0);\\n }\\n &:not(.mynah-overlay-open) {\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n\\n &.mynah-overlay-open {\\n > .mynah-overlay-container {\\n > .mynah-overlay-inner-container {\\n transform: translate3d(0, 0, 0) scale(1);\\n }\\n &:before {\\n transform: translate3d(0, 0, 0) scale(1);\\n transition-delay: 50ms;\\n opacity: 1;\\n }\\n > .mynah-overlay-inner-container {\\n transition-delay: 20ms;\\n }\\n > .mynah-overlay-inner-container {\\n opacity: 1;\\n }\\n &:after {\\n transition-delay: 0ms;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n opacity: 1;\\n }\\n }\\n &.mynah-overlay-close-on-outside-click {\\n pointer-events: all;\\n }\\n }\\n}\\n\",\".mynah-notification {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-3);\\n padding: var(--mynah-sizing-5);\\n overflow: hidden;\\n position: relative;\\n &.mynah-notification-clickable {\\n pointer-events: all;\\n cursor: pointer;\\n }\\n > .mynah-ui-icon {\\n font-size: var(--mynah-sizing-6);\\n &- {\\n &ok-circled {\\n color: var(--mynah-color-status-success);\\n }\\n &info {\\n color: var(--mynah-color-status-info);\\n }\\n &warning {\\n color: var(--mynah-color-status-warning);\\n }\\n &error {\\n color: var(--mynah-color-status-error);\\n }\\n }\\n }\\n > .mynah-notification-container {\\n flex: 1;\\n max-width: 50vw;\\n min-width: 200px;\\n display: inline-flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-3);\\n overflow: hidden;\\n position: relative;\\n > .mynah-notification-title {\\n margin: 0;\\n &:empty {\\n display: none;\\n }\\n }\\n > .mynah-notification-content {\\n font-size: var(--mynah-font-size-small);\\n display: flex;\\n flex-flow: column nowrap;\\n justify-content: flex-start;\\n align-items: flex-start;\\n gap: var(--mynah-sizing-2);\\n > .mynah-button {\\n align-self: stretch;\\n background-color: var(--mynah-color-alternate);\\n color: var(--mynah-color-alternate-reverse);\\n }\\n }\\n }\\n}\\n\",\".mynah-syntax-highlighter {\\n display: flex;\\n flex-flow: column nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n margin: var(--mynah-sizing-1) 0;\\n background-color: var(--mynah-card-bg);\\n max-width: 100%;\\n & + *:not(:empty) {\\n margin-top: var(--mynah-sizing-2);\\n }\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n position: relative;\\n border-radius: var(--mynah-card-radius);\\n line-height: normal;\\n color: var(--mynah-color-text-default);\\n &:before,\\n & > .line-numbers-rows:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-syntax-bg);\\n opacity: 0.2;\\n pointer-events: none;\\n user-select: none;\\n }\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n padding: var(--mynah-sizing-half);\\n padding-left: var(--mynah-sizing-3);\\n order: 256000;\\n box-sizing: border-box;\\n margin: 0;\\n margin-block: 0 !important;\\n position: relative;\\n border-top: 1px solid var(--mynah-color-border-default);\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-border-default);\\n opacity: 0.25;\\n }\\n > .mynah-syntax-highlighter-language {\\n flex: 1;\\n font-size: var(--mynah-font-size-xsmall);\\n display: inline-block;\\n opacity: 0.65;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n .mynah-button {\\n min-width: var(--mynah-sizing-6);\\n height: calc(var(--mynah-sizing-6) + var(--mynah-sizing-half));\\n * {\\n font-size: var(--mynah-font-size-xsmall);\\n color: var(--mynah-color-text-strong);\\n }\\n }\\n }\\n &.mynah-inline-code {\\n display: inline-flex;\\n max-width: 100%;\\n line-height: normal;\\n padding: 0 !important;\\n margin: 0;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n overflow: visible;\\n border: none;\\n color: var(--mynah-color-syntax-attr);\\n margin-left: 2px;\\n margin-right: 2px;\\n padding-bottom: 1px !important;\\n margin-bottom: -1px;\\n background-color: transparent !important;\\n > pre {\\n padding: 0;\\n }\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n box-sizing: border-box;\\n top: 0;\\n height: 100%;\\n left: -2px;\\n width: calc(100% + 4px);\\n border-radius: calc(var(--mynah-card-radius) / 2);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n z-index: -1;\\n }\\n &:before {\\n left: -2px;\\n width: calc(100% + 4px);\\n border-radius: calc(var(--mynah-card-radius) / 2);\\n box-sizing: border-box;\\n }\\n }\\n > pre {\\n padding: var(--mynah-sizing-2);\\n margin: 0;\\n overflow-x: auto;\\n overflow-y: hidden;\\n position: relative;\\n\\n *,\\n & {\\n font-size: var(--mynah-syntax-code-font-size) !important;\\n font-family: var(--mynah-syntax-code-font-family) !important;\\n }\\n > code {\\n color: var(--mynah-color-syntax-code);\\n filter: brightness(0.95);\\n white-space: pre;\\n }\\n\\n > code,\\n & {\\n text-align: left;\\n white-space: pre;\\n word-spacing: normal;\\n word-break: normal;\\n word-wrap: normal;\\n tab-size: 4;\\n hyphens: none;\\n }\\n > code::selection,\\n &::selection {\\n text-shadow: none;\\n background: #b3d4fc;\\n }\\n\\n .token.comment,\\n .token.prolog,\\n .token.doctype,\\n .token.cdata {\\n color: var(--mynah-color-syntax-comment);\\n }\\n\\n .token.punctuation {\\n color: currentColor;\\n }\\n\\n .token.namespace {\\n opacity: 0.7;\\n }\\n\\n .token.property,\\n .token.tag,\\n .token.boolean,\\n .token.number,\\n .token.constant,\\n .token.symbol,\\n .token.deleted {\\n color: var(--mynah-color-syntax-property);\\n }\\n\\n .token.selector,\\n .token.attr-name,\\n .token.string,\\n .token.char,\\n .token.builtin,\\n .token.inserted {\\n color: var(--mynah-color-syntax-attr);\\n }\\n\\n .token.operator,\\n .token.entity,\\n .token.url,\\n .language-css .token.string,\\n .style .token.string {\\n color: var(--mynah-color-syntax-operator);\\n }\\n\\n .token.atrule,\\n .token.attr-value,\\n .token.class-name,\\n .token.keyword {\\n color: var(--mynah-color-syntax-attr-value);\\n }\\n\\n .token.function {\\n color: var(--mynah-color-syntax-function);\\n font-weight: 500;\\n }\\n \\n .token.regex,\\n .token.important,\\n .token.variable {\\n color: var(--mynah-color-syntax-variable);\\n font-weight: 500;\\n }\\n\\n .token.important,\\n .token.bold {\\n font-weight: bold;\\n }\\n .token.italic {\\n font-style: italic;\\n }\\n\\n .token.entity {\\n cursor: help;\\n }\\n\\n &.line-numbers {\\n position: relative;\\n padding-left: 3.8em;\\n counter-reset: linenumber;\\n position: relative;\\n }\\n }\\n > .line-numbers-rows {\\n position: absolute;\\n background-color: inherit;\\n > span,\\n & {\\n pointer-events: none;\\n user-select: none;\\n }\\n top: var(--mynah-sizing-2);\\n font-size: 100%;\\n left: 0;\\n width: var(--mynah-sizing-12);\\n overflow: hidden;\\n text-overflow: clip;\\n letter-spacing: -1px;\\n border-right: 1px solid var(--mynah-color-border-default);\\n\\n > span {\\n display: block;\\n color: var(--mynah-color-border-default);\\n padding-right: 0.8em;\\n text-align: right;\\n }\\n }\\n}\\n\\n.mynah-ui-syntax-highlighter-highlight-tooltip {\\n max-width: 80vw;\\n min-width: 10vw;\\n max-height: 80vh;\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n padding: var(--mynah-sizing-5);\\n .mynah-card-body {\\n > p:first-child:last-of-type,\\n > p p:first-child {\\n margin: 0;\\n }\\n }\\n}\\n\",\".mynah-chat-related-content-preview-wrapper {\\n max-width: 80vw;\\n max-height: 80vh;\\n > .mynah-chat-related-content-preview-content {\\n padding: var(--mynah-sizing-3);\\n background-color: var(--mynah-card-bg);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: var(--mynah-card-radius);\\n }\\n}\\n.mynah-chat-prompt-overlay-buttons-container {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-2);\\n justify-content: flex-start;\\n align-items: flex-start;\\n}\\n.mynah-chat-wrapper {\\n transition: var(--mynah-bottom-panel-transition);\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: auto;\\n height: auto;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n justify-content: space-around;\\n align-items: stretch;\\n display: none;\\n > div[class^=\\\"mynah-chat\\\"] {\\n width: 100%;\\n max-width: 100%;\\n box-sizing: border-box;\\n padding-left: var(--mynah-sizing-4);\\n padding-right: var(--mynah-sizing-4);\\n }\\n &:after {\\n transition: all $smoothduration $smoothbezier;\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: auto;\\n height: auto;\\n background-color: black;\\n z-index: 1000;\\n opacity: 0;\\n pointer-events: none;\\n transform: translate3d(0, 0, 0) scale(2);\\n transform-origin: center center;\\n }\\n\\n @import \\\"chat-items-container\\\";\\n @import \\\"chat-overflowing-intermediate-block\\\";\\n @import \\\"chat-prompt-wrapper\\\";\\n}\\n\\n@import 'chat-command-selector';\\n@import \\\"chat-item-tree-view\\\";\\n@import \\\"chat-prompt-code-snippet\\\";\\n\",\"> .mynah-chat-items-container {\\n display: flex;\\n flex: 1 1 0%;\\n overflow-x: hidden;\\n overflow-y: auto;\\n flex-flow: column-reverse nowrap;\\n align-items: flex-start;\\n padding: var(--mynah-sizing-4);\\n .mynah-chat-item-card {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n position: relative;\\n max-width: 90%;\\n transition: var(--mynah-text-flow-transition);\\n transform: translate3d(0, var(--mynah-sizing-12), 0) scale(1, 0.95);\\n opacity: 0;\\n transform-origin: center bottom;\\n &:not(:first-of-type) {\\n max-height: initial !important;\\n }\\n &.mynah-chat-item-no-content {\\n display: none !important;\\n }\\n > .mynah-chat-item-spacer {\\n display: block;\\n width: 100%;\\n height: var(--mynah-sizing-6);\\n order: 10000;\\n }\\n & ~ .mynah-chat-item-temporary-element,\\n & ~ * .mynah-chat-item-temporary-element {\\n display: none !important;\\n visibility: hidden !important;\\n & ~ .mynah-chat-item-spacer {\\n display: none;\\n height: 0;\\n }\\n }\\n\\n .mynah-chat-item-card {\\n max-width: 100%;\\n width: 100%;\\n padding: var(--mynah-sizing-3) 0 var(--mynah-sizing-3) 0;\\n border-top: 1px solid var(--mynah-color-border-default);\\n margin-top: var(--mynah-sizing-3);\\n padding-bottom: 0;\\n .mynah-chat-item-card-related-content > .mynah-chat-item-card-related-content-title {\\n font-size: var(--mynah-font-size-large);\\n }\\n }\\n\\n > span.invisible {\\n display: none;\\n }\\n\\n > .mynah-chat-items-spinner {\\n display: none;\\n position: absolute;\\n bottom: var(--mynah-sizing-2);\\n left: 50%;\\n margin-left: -50px;\\n width: 100px;\\n top: 49%;\\n margin-top: calc(-1 * var(--mynah-sizing-2));\\n height: var(--mynah-sizing-4);\\n overflow: visible;\\n z-index: 10000;\\n gap: var(--mynah-sizing-2);\\n justify-content: center;\\n align-items: end;\\n transform: translate3d(0px, calc(-1 * var(--mynah-sizing-2)), 0px);\\n > span {\\n animation: bounce 500ms infinite cubic-bezier(0.5, 0, 0.15, 1) alternate;\\n display: inline-block;\\n width: var(--mynah-sizing-2);\\n height: var(--mynah-sizing-2);\\n border-radius: var(--mynah-sizing-2);\\n background-color: var(--mynah-color-text-weak);\\n opacity: 0.5;\\n &:nth-child(2) {\\n animation-delay: 150ms;\\n }\\n &:nth-child(3) {\\n animation-delay: 300ms;\\n }\\n }\\n }\\n &.mynah-chat-item-code-result {\\n min-width: 70%;\\n }\\n a {\\n pointer-events: bounding-box;\\n color: var(--mynah-color-text-link);\\n }\\n &.reveal {\\n opacity: 1;\\n transform: translate3d(0, 0, 0) scale(1, 1);\\n }\\n > .mynah-chat-item-card-icon-wrapper {\\n background-color: var(--mynah-color-alternate);\\n color: var(--mynah-color-alternate-reverse);\\n padding: var(--mynah-sizing-2);\\n border-radius: 100%;\\n }\\n > .mynah-card {\\n > .mynah-card-body {\\n & > div {\\n > .mynah-syntax-highlighter {\\n filter: contrast(1.15) brightness(0.85);\\n }\\n > h1,\\n > h2,\\n > h3,\\n > h4 {\\n &:first-child {\\n margin-top: 0;\\n }\\n }\\n }\\n > .mynah-chat-item-card-related-content {\\n margin-top: var(--mynah-sizing-3);\\n padding-top: var(--mynah-sizing-4);\\n border-top: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n > .mynah-chat-item-card-related-content-title {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n margin: 0;\\n }\\n .mynah-source-link-title {\\n font-size: var(--mynah-font-size-small);\\n font-weight: 400;\\n }\\n }\\n padding-left: 0;\\n }\\n :hover::before {\\n box-shadow: var(--mynah-shadow-card) !important;\\n }\\n }\\n\\n > .mynah-chat-item-followup-question {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n position: relative;\\n gap: var(--mynah-sizing-2);\\n > .mynah-chat-item-followup-question-text {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n font-style: italic;\\n }\\n > .mynah-chat-item-followup-question-options-wrapper {\\n display: inline-flex;\\n flex-flow: row wrap;\\n max-width: 100%;\\n gap: var(--mynah-sizing-2);\\n > .mynah-chat-item-followup-question-option {\\n padding: var(--mynah-sizing-2);\\n color: var(--mynah-color-text-default);\\n border: var(--mynah-border-width) solid currentColor;\\n border-radius: var(--mynah-card-radius);\\n cursor: pointer;\\n font-size: var(--mynah-font-size-xsmall);\\n max-width: 100%;\\n overflow: hidden;\\n display: inline-flex;\\n gap: var(--mynah-sizing-2);\\n align-items: center;\\n &:not(:hover) {\\n opacity: 0.75;\\n }\\n &-status {\\n &-success {\\n color: var(--mynah-color-status-success);\\n }\\n &-error {\\n color: var(--mynah-color-status-error);\\n }\\n &-warning {\\n color: var(--mynah-color-status-warning);\\n }\\n &-info {\\n color: var(--mynah-color-status-info);\\n }\\n }\\n }\\n }\\n }\\n\\n .mynah-chat-item-card-related-content {\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-2);\\n overflow: hidden;\\n position: relative;\\n > .mynah-chat-item-card-related-content-item {\\n max-width: 100%;\\n > .mynah-card {\\n padding: 0;\\n }\\n .amzn-mynah-search-result-highlight {\\n background-color: inherit;\\n color: inherit;\\n }\\n }\\n &:not(.expanded) {\\n > .mynah-chat-item-card-related-content-item {\\n $maxItems: 1;\\n $selector: \\\"&\\\";\\n @for $i from 1 through $maxItems {\\n $selector: #{$selector} + \\\":not(:nth-of-type(\\\" + #{$i} + \\\"))\\\";\\n }\\n #{$selector} {\\n display: none;\\n }\\n &:nth-of-type(#{$maxItems}) {\\n margin-bottom: calc(-1 * var(--mynah-sizing-4));\\n pointer-events: none;\\n @include list-fader-bottom(var(--mynah-sizing-12));\\n -webkit-mask-image: linear-gradient(to top, transparent var(--mynah-sizing-1), black 70%);\\n }\\n &:nth-of-type(#{$maxItems + 1}) {\\n & ~ .mynah-chat-item-card-related-content-show-more {\\n display: flex;\\n }\\n }\\n }\\n }\\n\\n > .mynah-chat-item-card-related-content-show-more {\\n display: none;\\n max-width: 80%;\\n z-index: 10000;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n align-self: center;\\n height: var(--mynah-sizing-8);\\n filter: none;\\n > span,\\n > i {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n font-size: var(--mynah-font-size-xsmall);\\n }\\n }\\n }\\n &.mynah-chat-item-system-prompt,\\n &.mynah-chat-item-prompt {\\n align-self: flex-end;\\n > .mynah-chat-item-card-icon-wrapper {\\n align-self: flex-end;\\n }\\n .mynah-chat-item-followup-question,\\n .mynah-chat-item-card-related-content {\\n align-items: flex-end;\\n }\\n\\n .mynah-syntax-highlighter {\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n }\\n }\\n\\n .mynah-chat-item-card-related-content > .mynah-card,\\n > .mynah-card {\\n box-shadow: 0px 0px 5px -5px var(--mynah-color-button);\\n padding: var(--mynah-sizing-4);\\n background-color: var(--mynah-color-button);\\n border-bottom-right-radius: 0;\\n border: none;\\n &,\\n > .mynah-card-body {\\n color: var(--mynah-color-button-reverse);\\n }\\n }\\n }\\n &.mynah-chat-item-system-prompt {\\n > .mynah-card {\\n background-color: var(--mynah-color-status-warning);\\n }\\n }\\n\\n &.mynah-chat-item-answer-stream.mynah-chat-item-empty.stream-ended {\\n display: none;\\n }\\n &.mynah-chat-item-answer,\\n &.mynah-chat-item-answer-stream {\\n > .mynah-card {\\n border-bottom-left-radius: 0;\\n max-height: 100%;\\n flex: 1;\\n }\\n }\\n &.mynah-chat-item-ai-prompt,\\n &.mynah-chat-item-answer,\\n &.mynah-chat-item-answer-stream {\\n > .mynah-chat-item-card-icon-wrapper {\\n align-self: flex-start;\\n }\\n > .mynah-chat-item-card-related-content {\\n > .mynah-chat-item-card-related-content-item > .mynah-card-compact {\\n opacity: 1;\\n > .mynah-source-link-header {\\n opacity: 1;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n&.loading {\\n > .mynah-chat-items-container {\\n padding-bottom: var(--mynah-sizing-14);\\n > .mynah-chat-item-card.mynah-chat-item-answer-stream {\\n &:first-child {\\n > .mynah-card {\\n min-width: 100px;\\n min-height: var(--mynah-sizing-13);\\n > .mynah-card-votes-wrapper {\\n display: none;\\n }\\n }\\n &.mynah-chat-item-empty > .mynah-chat-items-spinner {\\n display: inline-flex;\\n }\\n &:not(.mynah-chat-item-empty):before {\\n content: \\\"\\\";\\n pointer-events: none;\\n position: absolute;\\n overflow: hidden;\\n border-bottom-right-radius: var(--mynah-card-radius);\\n bottom: calc(var(--mynah-sizing-6) + var(--mynah-border-width));\\n left: var(--mynah-border-width);\\n right: var(--mynah-border-width);\\n width: auto;\\n height: var(--mynah-sizing-2);\\n box-sizing: border-box;\\n z-index: 10;\\n background-image: linear-gradient(\\n 90deg,\\n var(--mynah-color-button) 0%,\\n rgba(255, 255, 255, 0) 25%,\\n rgba(255, 255, 255, 0) 50%,\\n var(--mynah-color-button) 100%\\n );\\n background-position: 0% bottom;\\n background-size: 200% var(--mynah-sizing-half);\\n background-repeat: repeat-x;\\n animation: horizontal-roll 1250ms linear infinite both;\\n }\\n }\\n }\\n }\\n}\\n\",\"@mixin background-shadow {\\n overflow: visible;\\n &:before {\\n content: \\\"\\\";\\n background-color: transparent;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n border-radius: inherit;\\n box-shadow: var(--mynah-shadow-card);\\n pointer-events: none;\\n filter: brightness(50%) saturate(250%) contrast(250%);\\n opacity: 0.4;\\n }\\n}\\n\\n@mixin lighten-darken {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n backdrop-filter: brightness(var(--mynah-color-context-filter));\\n }\\n}\\n\\n@mixin list-fader {\\n position: relative;\\n $listFader: linear-gradient(\\n to bottom,\\n transparent 0%,\\n black var(--mynah-sizing-6),\\n black calc(100% - var(--mynah-sizing-6)),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n\\n@mixin list-fader-bottom($height: var(--mynah-sizing-6)) {\\n position: relative;\\n $listFader: linear-gradient(\\n to bottom,\\n black 30%,\\n black calc(100% - $height),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n@mixin list-fader-right($height: var(--mynah-sizing-6)) {\\n position: relative;\\n $listFader: linear-gradient(\\n to right,\\n black 30%,\\n black calc(100% - $height),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n\\n@mixin context-pill-group-background {\\n &:after,\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 2;\\n border-radius: calc(var(--mynah-button-radius) * 3 / 2);\\n border: var(--mynah-border-width) solid transparent;\\n }\\n &:after {\\n background-color: var(--mynah-card-bg);\\n z-index: 1;\\n }\\n}\\n\\n@mixin chatMode {\\n &[mode=\\\"chat\\\"] {\\n @content;\\n }\\n}\\n\",\"&.loading {\\n > .mynah-chat-overflowing-intermediate-block {\\n display: flex;\\n flex-flow: column nowrap;\\n max-height: 0;\\n overflow: visible;\\n justify-content: flex-end;\\n > .mynah-chat-stop-chat-response-button {\\n display: inline-flex;\\n }\\n }\\n}\\n> .mynah-chat-overflowing-intermediate-block {\\n display: flex;\\n flex-flow: column nowrap;\\n max-height: 0;\\n overflow: visible;\\n justify-content: flex-end;\\n align-items: center;\\n border-bottom: 1px solid var(--mynah-color-border-default);\\n &.hidden {\\n display: none;\\n }\\n > .mynah-chat-stop-chat-response-button {\\n margin-bottom: var(--mynah-sizing-2);\\n display: none;\\n min-height: var(--mynah-sizing-8);\\n background-color: var(--mynah-card-bg);\\n padding-left: var(--mynah-sizing-2);\\n &:active {\\n box-shadow: none;\\n filter: none;\\n }\\n * {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n }\\n }\\n}\\n\",\"> .mynah-chat-prompt-wrapper {\\n display: block;\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-chat-prompt {\\n display: flex;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n box-sizing: border-box;\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-chat-prompt-input-wrapper {\\n display: flex;\\n flex-flow: row nowrap;\\n overflow: hidden;\\n box-sizing: border-box;\\n gap: var(--mynah-sizing-1);\\n align-items: flex-start;\\n position: relative;\\n color: var(--mynah-color-text-weak);\\n > .mynah-chat-prompt-input-command-wrapper {\\n align-self: flex-start;\\n display: inline-flex;\\n align-items: center;\\n position: relative;\\n gap: var(--mynah-sizing-1);\\n box-sizing: border-box;\\n &.hidden {\\n display: none;\\n }\\n > .mynah-chat-prompt-input-command-text {\\n user-select: none;\\n cursor: pointer;\\n font-family: var(--mynah-font-family);\\n font-size: var(--mynah-font-size-large);\\n color: var(--mynah-color-text-input);\\n font-weight: bold;\\n }\\n }\\n > .mynah-chat-prompt-input-inner-wrapper {\\n display: block;\\n width: 100%;\\n position: relative;\\n align-self: center;\\n > .mynah-chat-prompt-input {\\n font-family: var(--mynah-font-family);\\n border: none;\\n resize: none;\\n background-color: rgba(0, 0, 0, 0);\\n font-size: var(--mynah-font-size-large);\\n color: var(--mynah-color-text-input);\\n outline: none;\\n width: 100%;\\n max-height: 20vh;\\n min-height: 1.5rem;\\n &::placeholder {\\n color: var(--mynah-color-text-weak);\\n }\\n &:not(.mynah-chat-prompt-input-sizer) {\\n position: absolute;\\n height: 100%;\\n top: 0;\\n left: 0;\\n padding: 0;\\n }\\n }\\n > .mynah-chat-prompt-input-sizer {\\n display: block;\\n width: 100%;\\n opacity: 0;\\n visibility: hidden;\\n pointer-events: none;\\n overflow: hidden;\\n white-space: pre-wrap;\\n word-break: break-word;\\n }\\n & ~ .mynah-chat-prompt-button {\\n background-color: transparent;\\n width: auto;\\n min-width: 0;\\n height: auto;\\n padding-top: 1px;\\n i {\\n font-size: calc(2 * var(--mynah-font-size-xsmall));\\n color: var(--mynah-color-button);\\n height: var(--mynah-sizing-6);\\n padding-left: 0;\\n }\\n }\\n &.no-text ~ .mynah-chat-prompt-button:not([disabled]),\\n & ~ .mynah-chat-prompt-button[disabled] {\\n pointer-events: none;\\n opacity: 0.25;\\n i {\\n color: var(--mynah-color-text-weak);\\n }\\n }\\n }\\n }\\n > .mynah-chat-prompt-attachment-wrapper {\\n &:empty {\\n display: none;\\n }\\n > .mynah-chat-attachment-item {\\n position: relative;\\n display: inline-block;\\n max-width: 250px;\\n cursor: pointer;\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n border-radius: var(--mynah-card-radius);\\n opacity: 0;\\n transition: var(--mynah-short-transition-rev);\\n z-index: 8000;\\n background-color: var(--mynah-color-alternate);\\n }\\n > .mynah-chat-attachment-delete-icon {\\n color: var(--mynah-color-alternate-reverse);\\n opacity: 0;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n width: 30px;\\n height: 30px;\\n margin-left: -15px;\\n margin-top: -15px;\\n z-index: 9000;\\n > i {\\n width: 30px;\\n height: 30px;\\n }\\n }\\n &:hover {\\n &:after {\\n opacity: 0.75;\\n }\\n > .mynah-chat-attachment-delete-icon {\\n opacity: 1;\\n }\\n }\\n > .mynah-card {\\n pointer-events: none !important;\\n * {\\n pointer-events: none !important;\\n }\\n > .mynah-card-body {\\n display: none;\\n }\\n }\\n }\\n }\\n }\\n &.input-has-focus > .mynah-chat-prompt {\\n border: var(--mynah-border-width) solid var(--mynah-color-button);\\n }\\n\\n > .mynah-chat-prompt-chars-indicator {\\n width: 100%;\\n font-size: var(--mynah-font-size-xsmall);\\n padding-top: var(--mynah-sizing-2);\\n opacity: 0.5;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n font-style: italic;\\n }\\n}\\n\\n> .mynah-chat-prompt-input-info {\\n display: flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n padding: 0 var(--mynah-sizing-4) var(--mynah-sizing-4) var(--mynah-sizing-4);\\n &:empty {\\n display: none;\\n }\\n > * {\\n margin: 0;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n }\\n}\\n\",\".mynah-chat-command-selector {\\n display: flex;\\n box-sizing: border-box;\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n width: 100%;\\n pointer-events: all;\\n flex-flow: column nowrap;\\n align-items: stretch;\\n justify-content: flex-start;\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n > .mynah-chat-command-selector-group {\\n display: flex;\\n box-sizing: border-box;\\n width: 100%;\\n flex-flow: column nowrap;\\n align-items: stretch;\\n justify-content: flex-start;\\n padding: var(--mynah-sizing-2);\\n > .mynah-chat-command-selector-group-title {\\n margin: 0;\\n color: var(--mynah-color-text-weak);\\n opacity: 0.75;\\n padding: var(--mynah-sizing-2) var(--mynah-sizing-3);\\n }\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid var(--mynah-color-border-default);\\n }\\n\\n > .mynah-chat-command-selector-command {\\n display: flex;\\n box-sizing: border-box;\\n width: 100%;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n overflow: hidden;\\n cursor: pointer;\\n padding: var(--mynah-sizing-2) var(--mynah-sizing-3);\\n color: var(--mynah-color-text-default);\\n border-radius: var(--mynah-card-radius);\\n transition: var(--mynah-short-transition-rev);\\n gap: var(--mynah-sizing-1);\\n &:hover,\\n &.target-command {\\n background-color: var(--mynah-color-button);\\n &,\\n & * {\\n color: var(--mynah-color-button-reverse);\\n }\\n }\\n > .mynah-chat-command-selector-command-name {\\n font-family: var(--mynah-font-family);\\n font-size: var(--mynah-font-size-large);\\n font-weight: bold;\\n flex: 0 1 0%;\\n }\\n > .mynah-chat-command-selector-command-description {\\n font-size: var(--mynah-font-size-small);\\n opacity: 0.75;\\n flex: 1 0 100%;\\n }\\n }\\n }\\n}\\n\",\".mynah-chat-item-tree-view-wrapper {\\n margin: 0;\\n margin-block-end: 0 !important;\\n margin-block-start: 0 !important;\\n > .mynah-chat-item-tree-view-wrapper-container {\\n background-color: var(--mynah-card-bg);\\n color: var(--mynah-color-text-default);\\n margin-block-start: 0 !important;\\n margin-block-end: 0 !important;\\n position: relative;\\n border-radius: var(--mynah-card-radius);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n > .mynah-chat-item-tree-view-wrapper-title {\\n display: flex;\\n flex-flow: row nowrap;\\n justify-content: flex-start;\\n align-items: center;\\n position: relative;\\n padding: var(--mynah-sizing-3);\\n gap: var(--mynah-sizing-3);\\n border-bottom: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n > h4 {\\n margin: 0;\\n }\\n\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-border-default);\\n opacity: 0.25;\\n pointer-events: none;\\n }\\n }\\n > .mynah-chat-item-tree-view {\\n padding: var(--mynah-sizing-3);\\n overflow: hidden;\\n box-sizing: border-box;\\n width: 100%;\\n overflow-y: hidden;\\n overflow-x: auto;\\n }\\n }\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-label {\\n border-top-left-radius: var(--mynah-card-radius);\\n border-top-right-radius: var(--mynah-card-radius);\\n background-color: var(--mynah-color-alternate);\\n margin-bottom: 0px;\\n padding: var(--mynah-sizing-4);\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-feedback-label {\\n padding-left: var(--mynah-sizing-4);\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-feedback-div {\\n float: right;\\n\\n button:first-child {\\n margin-right: var(--mynah-sizing-2);\\n }\\n}\\n\\n.mynah-chat-item-tree-view-license {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n background-color: var(--mynah-color-button);\\n opacity: 0.07;\\n pointer-events: none;\\n }\\n\\n color: var(--mynah-color-text-weak);\\n\\n ul {\\n margin: 0;\\n padding-left: var(--mynah-sizing-8);\\n > li {\\n &:not(:first-child) {\\n margin-top: var(--mynah-sizing-2);\\n }\\n .mynah-card-body p {\\n margin: 0;\\n }\\n }\\n }\\n\\n .mynah-chat-item-tree-view-license-dropdown-button > span {\\n max-width: unset;\\n }\\n}\\n\",\".outer-container {\\n display: flex;\\n &:not(:empty) {\\n margin-top: var(--mynah-sizing-3);\\n }\\n}\\n\\n.snippet-card-container.vertical-overflow {\\n & pre {\\n // Show fading effect at the bottom when overflowing\\n @include list-fader-bottom(var(--mynah-sizing-16));\\n }\\n}\\n\\n.snippet-card-container {\\n max-width: calc(5 * var(--mynah-sizing-18));\\n max-height: var(--mynah-sizing-10);\\n > .mynah-button {\\n position: absolute;\\n background-color: var(--mynah-card-bg) !important;\\n width: var(--mynah-sizing-7) !important;\\n min-width: var(--mynah-sizing-7) !important;\\n max-width: var(--mynah-sizing-7) !important;\\n height: var(--mynah-sizing-7) !important;\\n border-radius: 100%;\\n right: calc(-1 * var(--mynah-sizing-2));\\n top: calc(-1 * var(--mynah-sizing-2));\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n opacity: 1 !important;\\n filter: brightness(0.95);\\n }\\n &:not(:hover) {\\n > .mynah-button {\\n display: none;\\n }\\n }\\n > .mynah-card-body > .mynah-syntax-highlighter {\\n border: none;\\n & pre {\\n text-overflow: ellipsis;\\n }\\n }\\n}\\n\\n.snippet-card-container-preview {\\n max-width: 80vw;\\n max-height: 70vh;\\n > .mynah-card-body {\\n > .mynah-syntax-highlighter {\\n max-height: calc(70vh - var(--mynah-sizing-12)) !important;\\n }\\n }\\n}\\n.snippet-card-container,\\n.snippet-card-container-preview {\\n position: relative;\\n overflow: visible;\\n width: 100%;\\n box-sizing: border-box;\\n > .mynah-card-body {\\n max-height: 100%;\\n > .mynah-syntax-highlighter {\\n user-select: none;\\n pointer-events: none;\\n margin: 0;\\n max-height: 100%;\\n overflow: hidden;\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n }\\n }\\n }\\n & pre {\\n text-overflow: ellipsis;\\n }\\n}\\n\",\".mynah-collapsible-content-wrapper {\\n display: block;\\n box-sizing: border-box;\\n width: 100%;\\n overflow: hidden;\\n position: relative;\\n > .mynah-collapsible-content-checkbox {\\n display: none;\\n & + .mynah-collapsible-content-label {\\n box-sizing: border-box;\\n display: flex;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n align-items: flex-start;\\n justify-content: stretch;\\n padding: var(--mynah-sizing-2);\\n gap: var(--mynah-sizing-2);\\n > .mynah-collapsible-content-label-title-wrapper {\\n gap: var(--mynah-sizing-2);\\n display: flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n width: 100%;\\n overflow: hidden;\\n justify-content: flex-start;\\n align-items: flex-start;\\n pointer-events: all;\\n cursor: pointer;\\n user-select: none;\\n > .mynah-collapsible-content-label-title-text {\\n flex: 1;\\n overflow: hidden;\\n }\\n }\\n > .mynah-collapsible-content-label-content-wrapper {\\n overflow: hidden;\\n box-sizing: border-box;\\n width: 100%;\\n }\\n }\\n\\n &:checked + .mynah-collapsible-content-label {\\n > .mynah-collapsible-content-label-content-wrapper {\\n display: none;\\n }\\n }\\n }\\n}\\n\",\"@import \\\"mixins\\\";\\n@import \\\"variables\\\";\\n@import \\\"animations\\\";\\n@import \\\"dark\\\";\\n@import \\\"favicons\\\";\\n\\n// Components\\n@import \\\"./components/main-container\\\";\\n@import \\\"./components/button\\\";\\n@import \\\"./components/toggle\\\";\\n@import \\\"./components/icon\\\";\\n@import \\\"./components/nav-tabs\\\";\\n@import \\\"./components/card/card\\\";\\n@import \\\"./components/feedback-form\\\";\\n@import \\\"./components/overlay\\\";\\n@import \\\"./components/notification\\\";\\n@import \\\"./components/syntax-highlighter\\\";\\n@import \\\"./components/chat/chat-wrapper\\\";\\n@import \\\"./components/collapsible-content\\\";\\n\\nbody,\\nhtml {\\n background-color: var(--mynah-color-bg);\\n color: var(--mynah-color-text-default);\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n margin: 0;\\n padding: 0;\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-weight: 600;\\n}\\n\\n::-webkit-scrollbar {\\n width: 2px;\\n height: 2px;\\n opacity: 0.25;\\n &:horizontal {\\n width: 0px;\\n height: 0px;\\n }\\n}\\n\\n*:focus {\\n outline: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '&quot;';\n break;\n case 38: // &\n escape = '&amp;';\n break;\n case 39: // '\n escape = '&#39;';\n break;\n case 60: // <\n escape = '&lt;';\n break;\n case 62: // >\n escape = '&gt;';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","!function(e){var t=\"\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b\",a={pattern:/(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,lookbehind:!0,alias:\"punctuation\",inside:null},n={bash:a,environment:{pattern:RegExp(\"\\\\$\"+t),alias:\"constant\"},variable:[{pattern:/\\$?\\(\\([\\s\\S]+?\\)\\)/,greedy:!0,inside:{variable:[{pattern:/(^\\$\\(\\([\\s\\S]+)\\)\\)/,lookbehind:!0},/^\\$\\(\\(/],number:/\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,operator:/--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,punctuation:/\\(\\(?|\\)\\)?|,|;/}},{pattern:/\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,greedy:!0,inside:{variable:/^\\$\\(|^`|\\)$|`$/}},{pattern:/\\$\\{[^}]+\\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,punctuation:/[\\[\\]]/,environment:{pattern:RegExp(\"(\\\\{)\"+t),lookbehind:!0,alias:\"constant\"}}},/\\$(?:\\w+|[#?*!@$])/],entity:/\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\\s*\\/.*/,alias:\"important\"},comment:{pattern:/(^|[^\"{\\\\$])#.*/,lookbehind:!0},\"function-name\":[{pattern:/(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,lookbehind:!0,alias:\"function\"},{pattern:/\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,alias:\"function\"}],\"for-or-select\":{pattern:/(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,alias:\"variable\",lookbehind:!0},\"assign-left\":{pattern:/(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,inside:{environment:{pattern:RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\"+t),lookbehind:!0,alias:\"constant\"}},alias:\"variable\",lookbehind:!0},parameter:{pattern:/(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,alias:\"variable\",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,lookbehind:!0,greedy:!0,inside:{bash:a}},{pattern:/(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,lookbehind:!0,greedy:!0,inside:n},{pattern:/(^|[^$\\\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,greedy:!0,inside:{entity:n.entity}}],environment:{pattern:RegExp(\"\\\\$?\"+t),alias:\"constant\"},variable:n.variable,function:{pattern:/(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,lookbehind:!0,alias:\"class-name\"},boolean:{pattern:/(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,lookbehind:!0},\"file-descriptor\":{pattern:/\\B&\\d\\b/,alias:\"important\"},operator:{pattern:/\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,inside:{\"file-descriptor\":{pattern:/^\\d/,alias:\"important\"}}},punctuation:/\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,number:{pattern:/(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,lookbehind:!0}},a.inside=e.languages.bash;for(var s=[\"comment\",\"function-name\",\"for-or-select\",\"assign-left\",\"parameter\",\"string\",\"environment\",\"function\",\"keyword\",\"builtin\",\"boolean\",\"file-descriptor\",\"operator\",\"punctuation\",\"number\"],o=n.variable[1].inside,i=0;i<s.length;i++)o[s[i]]=e.languages.bash[s[i]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash}(Prism);","Prism.languages.c=Prism.languages.extend(\"clike\",{comment:{pattern:/\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,greedy:!0},string:{pattern:/\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,greedy:!0},\"class-name\":{pattern:/(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,lookbehind:!0},keyword:/\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,function:/\\b[a-z_]\\w*(?=\\s*\\()/i,number:/(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore(\"c\",\"string\",{char:{pattern:/'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,greedy:!0}}),Prism.languages.insertBefore(\"c\",\"string\",{macro:{pattern:/(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,lookbehind:!0,greedy:!0,alias:\"property\",inside:{string:[{pattern:/^(#\\s*include\\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.languages.c.comment,\"macro-name\":[{pattern:/(^#\\s*define\\s+)\\w+\\b(?!\\()/i,lookbehind:!0},{pattern:/(^#\\s*define\\s+)\\w+\\b(?=\\()/i,lookbehind:!0,alias:\"function\"}],directive:{pattern:/^(#\\s*)[a-z]+/,lookbehind:!0,alias:\"keyword\"},\"directive-hash\":/^#/,punctuation:/##|\\\\(?=[\\r\\n])/,expression:{pattern:/\\S[\\s\\S]*/,inside:Prism.languages.c}}}}),Prism.languages.insertBefore(\"c\",\"function\",{constant:/\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/}),delete Prism.languages.c.boolean;","Prism.languages.clike={comment:[{pattern:/(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\\\:])\\/\\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\\\]/}},keyword:/\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,boolean:/\\b(?:false|true)\\b/,function:/\\b\\w+(?=\\()/,number:/\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,punctuation:/[{}[\\];(),.:]/};","!function(e){function n(e,n){return e.replace(/<<(\\d+)>>/g,(function(e,s){return\"(?:\"+n[+s]+\")\"}))}function s(e,s,a){return RegExp(n(e,s),a||\"\")}function a(e,n){for(var s=0;s<n;s++)e=e.replace(/<<self>>/g,(function(){return\"(?:\"+e+\")\"}));return e.replace(/<<self>>/g,\"[^\\\\s\\\\S]\")}var t=\"bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void\",r=\"class enum interface record struct\",i=\"add alias and ascending async await by descending from(?=\\\\s*(?:\\\\w|$)) get global group into init(?=\\\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\\\s*{)\",o=\"abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield\";function l(e){return\"\\\\b(?:\"+e.trim().replace(/ /g,\"|\")+\")\\\\b\"}var d=l(r),p=RegExp(l(t+\" \"+r+\" \"+i+\" \"+o)),c=l(r+\" \"+i+\" \"+o),u=l(t+\" \"+r+\" \"+o),g=a(\"<(?:[^<>;=+\\\\-*/%&|^]|<<self>>)*>\",2),b=a(\"\\\\((?:[^()]|<<self>>)*\\\\)\",2),h=\"@?\\\\b[A-Za-z_]\\\\w*\\\\b\",f=n(\"<<0>>(?:\\\\s*<<1>>)?\",[h,g]),m=n(\"(?!<<0>>)<<1>>(?:\\\\s*\\\\.\\\\s*<<1>>)*\",[c,f]),k=\"\\\\[\\\\s*(?:,\\\\s*)*\\\\]\",y=n(\"<<0>>(?:\\\\s*(?:\\\\?\\\\s*)?<<1>>)*(?:\\\\s*\\\\?)?\",[m,k]),w=n(\"[^,()<>[\\\\];=+\\\\-*/%&|^]|<<0>>|<<1>>|<<2>>\",[g,b,k]),v=n(\"\\\\(<<0>>+(?:,<<0>>+)+\\\\)\",[w]),x=n(\"(?:<<0>>|<<1>>)(?:\\\\s*(?:\\\\?\\\\s*)?<<2>>)*(?:\\\\s*\\\\?)?\",[v,m,k]),$={keyword:p,punctuation:/[<>()?,.:[\\]]/},_=\"'(?:[^\\r\\n'\\\\\\\\]|\\\\\\\\.|\\\\\\\\[Uux][\\\\da-fA-F]{1,8})'\",B='\"(?:\\\\\\\\.|[^\\\\\\\\\"\\r\\n])*\"';e.languages.csharp=e.languages.extend(\"clike\",{string:[{pattern:s(\"(^|[^$\\\\\\\\])<<0>>\",['@\"(?:\"\"|\\\\\\\\[^]|[^\\\\\\\\\"])*\"(?!\")']),lookbehind:!0,greedy:!0},{pattern:s(\"(^|[^@$\\\\\\\\])<<0>>\",[B]),lookbehind:!0,greedy:!0}],\"class-name\":[{pattern:s(\"(\\\\busing\\\\s+static\\\\s+)<<0>>(?=\\\\s*;)\",[m]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\busing\\\\s+<<0>>\\\\s*=\\\\s*)<<1>>(?=\\\\s*;)\",[h,x]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\busing\\\\s+)<<0>>(?=\\\\s*=)\",[h]),lookbehind:!0},{pattern:s(\"(\\\\b<<0>>\\\\s+)<<1>>\",[d,f]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\bcatch\\\\s*\\\\(\\\\s*)<<0>>\",[m]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\bwhere\\\\s+)<<0>>\",[h]),lookbehind:!0},{pattern:s(\"(\\\\b(?:is(?:\\\\s+not)?|as)\\\\s+)<<0>>\",[y]),lookbehind:!0,inside:$},{pattern:s(\"\\\\b<<0>>(?=\\\\s+(?!<<1>>|with\\\\s*\\\\{)<<2>>(?:\\\\s*[=,;:{)\\\\]]|\\\\s+(?:in|when)\\\\b))\",[x,u,h]),inside:$}],keyword:p,number:/(?:\\b0(?:x[\\da-f_]*[\\da-f]|b[01_]*[01])|(?:\\B\\.\\d+(?:_+\\d+)*|\\b\\d+(?:_+\\d+)*(?:\\.\\d+(?:_+\\d+)*)?)(?:e[-+]?\\d+(?:_+\\d+)*)?)(?:[dflmu]|lu|ul)?\\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\\1|~|\\?\\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\\?\\.?|::|[{}[\\];(),.:]/}),e.languages.insertBefore(\"csharp\",\"number\",{range:{pattern:/\\.\\./,alias:\"operator\"}}),e.languages.insertBefore(\"csharp\",\"punctuation\",{\"named-parameter\":{pattern:s(\"([(,]\\\\s*)<<0>>(?=\\\\s*:)\",[h]),lookbehind:!0,alias:\"punctuation\"}}),e.languages.insertBefore(\"csharp\",\"class-name\",{namespace:{pattern:s(\"(\\\\b(?:namespace|using)\\\\s+)<<0>>(?:\\\\s*\\\\.\\\\s*<<0>>)*(?=\\\\s*[;{])\",[h]),lookbehind:!0,inside:{punctuation:/\\./}},\"type-expression\":{pattern:s(\"(\\\\b(?:default|sizeof|typeof)\\\\s*\\\\(\\\\s*(?!\\\\s))(?:[^()\\\\s]|\\\\s(?!\\\\s)|<<0>>)*(?=\\\\s*\\\\))\",[b]),lookbehind:!0,alias:\"class-name\",inside:$},\"return-type\":{pattern:s(\"<<0>>(?=\\\\s+(?:<<1>>\\\\s*(?:=>|[({]|\\\\.\\\\s*this\\\\s*\\\\[)|this\\\\s*\\\\[))\",[x,m]),inside:$,alias:\"class-name\"},\"constructor-invocation\":{pattern:s(\"(\\\\bnew\\\\s+)<<0>>(?=\\\\s*[[({])\",[x]),lookbehind:!0,inside:$,alias:\"class-name\"},\"generic-method\":{pattern:s(\"<<0>>\\\\s*<<1>>(?=\\\\s*\\\\()\",[h,g]),inside:{function:s(\"^<<0>>\",[h]),generic:{pattern:RegExp(g),alias:\"class-name\",inside:$}}},\"type-list\":{pattern:s(\"\\\\b((?:<<0>>\\\\s+<<1>>|record\\\\s+<<1>>\\\\s*<<5>>|where\\\\s+<<2>>)\\\\s*:\\\\s*)(?:<<3>>|<<4>>|<<1>>\\\\s*<<5>>|<<6>>)(?:\\\\s*,\\\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\\\s*(?:where|[{;]|=>|$))\",[d,f,h,x,p.source,b,\"\\\\bnew\\\\s*\\\\(\\\\s*\\\\)\"]),lookbehind:!0,inside:{\"record-arguments\":{pattern:s(\"(^(?!new\\\\s*\\\\()<<0>>\\\\s*)<<1>>\",[f,b]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:p,\"class-name\":{pattern:RegExp(x),greedy:!0,inside:$},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\\t ]*)#.*/m,lookbehind:!0,alias:\"property\",inside:{directive:{pattern:/(#)\\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\\b/,lookbehind:!0,alias:\"keyword\"}}}});var E=B+\"|\"+_,R=n(\"/(?![*/])|//[^\\r\\n]*[\\r\\n]|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/|<<0>>\",[E]),z=a(n(\"[^\\\"'/()]|<<0>>|\\\\(<<self>>*\\\\)\",[R]),2),S=\"\\\\b(?:assembly|event|field|method|module|param|property|return|type)\\\\b\",j=n(\"<<0>>(?:\\\\s*\\\\(<<1>>*\\\\))?\",[m,z]);e.languages.insertBefore(\"csharp\",\"class-name\",{attribute:{pattern:s(\"((?:^|[^\\\\s\\\\w>)?])\\\\s*\\\\[\\\\s*)(?:<<0>>\\\\s*:\\\\s*)?<<1>>(?:\\\\s*,\\\\s*<<1>>)*(?=\\\\s*\\\\])\",[S,j]),lookbehind:!0,greedy:!0,inside:{target:{pattern:s(\"^<<0>>(?=\\\\s*:)\",[S]),alias:\"keyword\"},\"attribute-arguments\":{pattern:s(\"\\\\(<<0>>*\\\\)\",[z]),inside:e.languages.csharp},\"class-name\":{pattern:RegExp(m),inside:{punctuation:/\\./}},punctuation:/[:,]/}}});var A=\":[^}\\r\\n]+\",F=a(n(\"[^\\\"'/()]|<<0>>|\\\\(<<self>>*\\\\)\",[R]),2),P=n(\"\\\\{(?!\\\\{)(?:(?![}:])<<0>>)*<<1>>?\\\\}\",[F,A]),U=a(n(\"[^\\\"'/()]|/(?!\\\\*)|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/|<<0>>|\\\\(<<self>>*\\\\)\",[E]),2),Z=n(\"\\\\{(?!\\\\{)(?:(?![}:])<<0>>)*<<1>>?\\\\}\",[U,A]);function q(n,a){return{interpolation:{pattern:s(\"((?:^|[^{])(?:\\\\{\\\\{)*)<<0>>\",[n]),lookbehind:!0,inside:{\"format-string\":{pattern:s(\"(^\\\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\\\}$)\",[a,A]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\\{|\\}$/,expression:{pattern:/[\\s\\S]+/,alias:\"language-csharp\",inside:e.languages.csharp}}},string:/[\\s\\S]+/}}e.languages.insertBefore(\"csharp\",\"string\",{\"interpolation-string\":[{pattern:s('(^|[^\\\\\\\\])(?:\\\\$@|@\\\\$)\"(?:\"\"|\\\\\\\\[^]|\\\\{\\\\{|<<0>>|[^\\\\\\\\{\"])*\"',[P]),lookbehind:!0,greedy:!0,inside:q(P,F)},{pattern:s('(^|[^@\\\\\\\\])\\\\$\"(?:\\\\\\\\.|\\\\{\\\\{|<<0>>|[^\\\\\\\\\"{])*\"',[Z]),lookbehind:!0,greedy:!0,inside:q(Z,U)}],char:{pattern:RegExp(_),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism);","!function(s){var e=/(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;s.languages.css={comment:/\\/\\*[\\s\\S]*?\\*\\//,atrule:{pattern:RegExp(\"@[\\\\w-](?:[^;{\\\\s\\\"']|\\\\s+(?!\\\\s)|\"+e.source+\")*?(?:;|(?=\\\\s*\\\\{))\"),inside:{rule:/^@[\\w-]+/,\"selector-function-argument\":{pattern:/(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,lookbehind:!0,alias:\"selector\"},keyword:{pattern:/(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,lookbehind:!0}}},url:{pattern:RegExp(\"\\\\burl\\\\((?:\"+e.source+\"|(?:[^\\\\\\\\\\r\\n()\\\"']|\\\\\\\\[^])*)\\\\)\",\"i\"),greedy:!0,inside:{function:/^url/i,punctuation:/^\\(|\\)$/,string:{pattern:RegExp(\"^\"+e.source+\"$\"),alias:\"url\"}}},selector:{pattern:RegExp(\"(^|[{}\\\\s])[^{}\\\\s](?:[^{};\\\"'\\\\s]|\\\\s+(?![\\\\s{])|\"+e.source+\")*(?=\\\\s*\\\\{)\"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,lookbehind:!0},important:/!important\\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined(\"style\",\"css\"),t.tag.addAttribute(\"style\",\"css\"))}(Prism);","!function(e){var n=/\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\\s*[(){}[\\]<>=%~.:,;?+\\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/,t=\"(?:[a-z]\\\\w*\\\\s*\\\\.\\\\s*)*(?:[A-Z]\\\\w*\\\\s*\\\\.\\\\s*)*\",s={pattern:RegExp(\"(^|[^\\\\w.])\"+t+\"[A-Z](?:[\\\\d_A-Z]*[a-z]\\\\w*)?\\\\b\"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,inside:{punctuation:/\\./}},punctuation:/\\./}};e.languages.java=e.languages.extend(\"clike\",{string:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,lookbehind:!0,greedy:!0},\"class-name\":[s,{pattern:RegExp(\"(^|[^\\\\w.])\"+t+\"[A-Z]\\\\w*(?=\\\\s+\\\\w+\\\\s*[;,=()]|\\\\s*(?:\\\\[[\\\\s,]*\\\\]\\\\s*)?::\\\\s*new\\\\b)\"),lookbehind:!0,inside:s.inside},{pattern:RegExp(\"(\\\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\\\s+)\"+t+\"[A-Z]\\\\w*\\\\b\"),lookbehind:!0,inside:s.inside}],keyword:n,function:[e.languages.clike.function,{pattern:/(::\\s*)[a-z_]\\w*/,lookbehind:!0}],number:/\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\\b[A-Z][A-Z_\\d]+\\b/}),e.languages.insertBefore(\"java\",\"string\",{\"triple-quoted-string\":{pattern:/\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,greedy:!0,alias:\"string\"},char:{pattern:/'(?:\\\\.|[^'\\\\\\r\\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore(\"java\",\"class-name\",{annotation:{pattern:/(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,lookbehind:!0,alias:\"punctuation\"},generics:{pattern:/<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{\"class-name\":s,keyword:n,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(\"(\\\\bimport\\\\s+)\"+t+\"(?:[A-Z]\\\\w*|\\\\*)(?=\\\\s*;)\"),lookbehind:!0,inside:{namespace:s.inside.namespace,punctuation:/\\./,operator:/\\*/,\"class-name\":/\\w+/}},{pattern:RegExp(\"(\\\\bimport\\\\s+static\\\\s+)\"+t+\"(?:\\\\w+|\\\\*)(?=\\\\s*;)\"),lookbehind:!0,alias:\"static\",inside:{namespace:s.inside.namespace,static:/\\b\\w+$/,punctuation:/\\./,operator:/\\*/,\"class-name\":/\\w+/}}],namespace:{pattern:RegExp(\"(\\\\b(?:exports|import(?:\\\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\\\s+)(?!<keyword>)[a-z]\\\\w*(?:\\\\.[a-z]\\\\w*)*\\\\.?\".replace(/<keyword>/g,(function(){return n.source}))),lookbehind:!0,inside:{punctuation:/\\./}}})}(Prism);","Prism.languages.javascript=Prism.languages.extend(\"clike\",{\"class-name\":[Prism.languages.clike[\"class-name\"],{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\\})\\s*)catch\\b/,lookbehind:!0},{pattern:/(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,lookbehind:!0}],function:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,number:{pattern:RegExp(\"(^|[^\\\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\\\dA-Fa-f]+(?:_[\\\\dA-Fa-f]+)*n?|\\\\d+(?:_\\\\d+)*n|(?:\\\\d+(?:_\\\\d+)*(?:\\\\.(?:\\\\d+(?:_\\\\d+)*)?)?|\\\\.\\\\d+(?:_\\\\d+)*)(?:[Ee][+-]?\\\\d+(?:_\\\\d+)*)?)(?![\\\\w$])\"),lookbehind:!0},operator:/--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/}),Prism.languages.javascript[\"class-name\"][0].pattern=/(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/,Prism.languages.insertBefore(\"javascript\",\"keyword\",{regex:{pattern:RegExp(\"((?:^|[^$\\\\w\\\\xA0-\\\\uFFFF.\\\"'\\\\])\\\\s]|\\\\b(?:return|yield))\\\\s*)/(?:(?:\\\\[(?:[^\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}|(?:\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\])*\\\\])*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\\\s|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/)*(?:$|[\\r\\n,.;:})\\\\]]|//))\"),lookbehind:!0,greedy:!0,inside:{\"regex-source\":{pattern:/^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,lookbehind:!0,alias:\"language-regex\",inside:Prism.languages.regex},\"regex-delimiter\":/^\\/|\\/$/,\"regex-flags\":/^[a-z]+$/}},\"function-variable\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,alias:\"function\"},parameter:[{pattern:/(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/}),Prism.languages.insertBefore(\"javascript\",\"string\",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:\"comment\"},\"template-string\":{pattern:/`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,greedy:!0,inside:{\"template-punctuation\":{pattern:/^`|`$/,alias:\"string\"},interpolation:{pattern:/((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,lookbehind:!0,inside:{\"interpolation-punctuation\":{pattern:/^\\$\\{|\\}$/,alias:\"punctuation\"},rest:Prism.languages.javascript}},string:/[\\s\\S]+/}},\"string-property\":{pattern:/((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,lookbehind:!0,greedy:!0,alias:\"property\"}}),Prism.languages.insertBefore(\"javascript\",\"operator\",{\"literal-property\":{pattern:/((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,lookbehind:!0,alias:\"property\"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined(\"script\",\"javascript\"),Prism.languages.markup.tag.addAttribute(\"on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)\",\"javascript\")),Prism.languages.js=Prism.languages.javascript;","Prism.languages.json={property:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,greedy:!0},number:/-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,punctuation:/[{}[\\],]/,operator:/:/,boolean:/\\b(?:false|true)\\b/,null:{pattern:/\\bnull\\b/,alias:\"keyword\"}},Prism.languages.webmanifest=Prism.languages.json;","!function(t){var n=t.util.clone(t.languages.javascript),e=\"(?:\\\\{<S>*\\\\.{3}(?:[^{}]|<BRACES>)*\\\\})\";function a(t,n){return t=t.replace(/<S>/g,(function(){return\"(?:\\\\s|//.*(?!.)|/\\\\*(?:[^*]|\\\\*(?!/))\\\\*/)\"})).replace(/<BRACES>/g,(function(){return\"(?:\\\\{(?:\\\\{(?:\\\\{[^{}]*\\\\}|[^{}])*\\\\}|[^{}])*\\\\})\"})).replace(/<SPREAD>/g,(function(){return e})),RegExp(t,n)}e=a(e).source,t.languages.jsx=t.languages.extend(\"markup\",n),t.languages.jsx.tag.pattern=a(\"</?(?:[\\\\w.:-]+(?:<S>+(?:[\\\\w.:$-]+(?:=(?:\\\"(?:\\\\\\\\[^]|[^\\\\\\\\\\\"])*\\\"|'(?:\\\\\\\\[^]|[^\\\\\\\\'])*'|[^\\\\s{'\\\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*/?)?>\"),t.languages.jsx.tag.inside.tag.pattern=/^<\\/?[^\\s>\\/]*/,t.languages.jsx.tag.inside[\"attr-value\"].pattern=/=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/,t.languages.jsx.tag.inside.tag.inside[\"class-name\"]=/^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/,t.languages.jsx.tag.inside.comment=n.comment,t.languages.insertBefore(\"inside\",\"attr-name\",{spread:{pattern:a(\"<SPREAD>\"),inside:t.languages.jsx}},t.languages.jsx.tag),t.languages.insertBefore(\"inside\",\"special-attr\",{script:{pattern:a(\"=<BRACES>\"),alias:\"language-javascript\",inside:{\"script-punctuation\":{pattern:/^=(?=\\{)/,alias:\"punctuation\"},rest:t.languages.jsx}}},t.languages.jsx.tag);var s=function(t){return t?\"string\"==typeof t?t:\"string\"==typeof t.content?t.content:t.content.map(s).join(\"\"):\"\"},g=function(n){for(var e=[],a=0;a<n.length;a++){var o=n[a],i=!1;if(\"string\"!=typeof o&&(\"tag\"===o.type&&o.content[0]&&\"tag\"===o.content[0].type?\"</\"===o.content[0].content[0].content?e.length>0&&e[e.length-1].tagName===s(o.content[0].content[1])&&e.pop():\"/>\"===o.content[o.content.length-1].content||e.push({tagName:s(o.content[0].content[1]),openedBraces:0}):e.length>0&&\"punctuation\"===o.type&&\"{\"===o.content?e[e.length-1].openedBraces++:e.length>0&&e[e.length-1].openedBraces>0&&\"punctuation\"===o.type&&\"}\"===o.content?e[e.length-1].openedBraces--:i=!0),(i||\"string\"==typeof o)&&e.length>0&&0===e[e.length-1].openedBraces){var r=s(o);a<n.length-1&&(\"string\"==typeof n[a+1]||\"plain-text\"===n[a+1].type)&&(r+=s(n[a+1]),n.splice(a+1,1)),a>0&&(\"string\"==typeof n[a-1]||\"plain-text\"===n[a-1].type)&&(r=s(n[a-1])+r,n.splice(a-1,1),a--),n[a]=new t.Token(\"plain-text\",r,null,r)}o.content&&\"string\"!=typeof o.content&&g(o.content)}};t.hooks.add(\"after-tokenize\",(function(t){\"jsx\"!==t.language&&\"tsx\"!==t.language||g(t.tokens)}))}(Prism);","Prism.languages.less=Prism.languages.extend(\"css\",{comment:[/\\/\\*[\\s\\S]*?\\*\\//,{pattern:/(^|[^\\\\])\\/\\/.*/,lookbehind:!0}],atrule:{pattern:/@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,inside:{variable:/@+[\\w-]+/}},property:/(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/,operator:/[+\\-*\\/]/}),Prism.languages.insertBefore(\"less\",\"property\",{variable:[{pattern:/@[\\w-]+\\s*:/,inside:{punctuation:/:/}},/@@?[\\w-]+/],\"mixin-usage\":{pattern:/([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,lookbehind:!0,alias:\"function\"}});","Prism.languages.lua={comment:/^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,string:{pattern:/([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[^z]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,greedy:!0},number:/\\b0x[a-f\\d]+(?:\\.[a-f\\d]*)?(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|(?:\\.\\d*)?(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,keyword:/\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,function:/(?!\\d)\\w+(?=\\s*(?:[({]))/,operator:[/[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\\.\\.(?!\\.)/,lookbehind:!0}],punctuation:/[\\[\\](){},;]|\\.+|:+/};","!function(n){function e(n){return n=n.replace(/<inner>/g,(function(){return\"(?:\\\\\\\\.|[^\\\\\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))\"})),RegExp(\"((?:^|[^\\\\\\\\])(?:\\\\\\\\{2})*)(?:\"+n+\")\")}var t=\"(?:\\\\\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\\\\\|\\r\\n`])+\",a=\"\\\\|?__(?:\\\\|__)+\\\\|?(?:(?:\\n|\\r\\n?)|(?![^]))\".replace(/__/g,(function(){return t})),i=\"\\\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\\\|?(?:\\n|\\r\\n?)\";n.languages.markdown=n.languages.extend(\"markup\",{}),n.languages.insertBefore(\"markdown\",\"prolog\",{\"front-matter-block\":{pattern:/(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,\"front-matter\":{pattern:/\\S+(?:\\s+\\S+)*/,alias:[\"yaml\",\"language-yaml\"],inside:n.languages.yaml}}},blockquote:{pattern:/^>(?:[\\t ]*>)*/m,alias:\"punctuation\"},table:{pattern:RegExp(\"^\"+a+i+\"(?:\"+a+\")*\",\"m\"),inside:{\"table-data-rows\":{pattern:RegExp(\"^(\"+a+i+\")(?:\"+a+\")*$\"),lookbehind:!0,inside:{\"table-data\":{pattern:RegExp(t),inside:n.languages.markdown},punctuation:/\\|/}},\"table-line\":{pattern:RegExp(\"^(\"+a+\")\"+i+\"$\"),lookbehind:!0,inside:{punctuation:/\\||:?-{3,}:?/}},\"table-header-row\":{pattern:RegExp(\"^\"+a+\"$\"),inside:{\"table-header\":{pattern:RegExp(t),alias:\"important\",inside:n.languages.markdown},punctuation:/\\|/}}}},code:[{pattern:/((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,lookbehind:!0,alias:\"keyword\"},{pattern:/^```[\\s\\S]*?^```$/m,greedy:!0,inside:{\"code-block\":{pattern:/^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,lookbehind:!0},\"code-language\":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,alias:\"important\",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\\s*)#.+/m,lookbehind:!0,alias:\"important\",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,lookbehind:!0,alias:\"punctuation\"},list:{pattern:/(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,lookbehind:!0,alias:\"punctuation\"},\"url-reference\":{pattern:/!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,inside:{variable:{pattern:/^(!?\\[)[^\\]]+/,lookbehind:!0},string:/(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,punctuation:/^[\\[\\]!:]|[<>]/},alias:\"url\"},bold:{pattern:e(\"\\\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\\\b|\\\\*\\\\*(?:(?!\\\\*)<inner>|\\\\*(?:(?!\\\\*)<inner>)+\\\\*)+\\\\*\\\\*\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\\s\\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\\*\\*|__/}},italic:{pattern:e(\"\\\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\\\b|\\\\*(?:(?!\\\\*)<inner>|\\\\*\\\\*(?:(?!\\\\*)<inner>)+\\\\*\\\\*)+\\\\*\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\\s\\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:e(\"(~~?)(?:(?!~)<inner>)+\\\\2\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\\s\\S]+(?=\\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},\"code-snippet\":{pattern:/(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:[\"code\",\"keyword\"]},url:{pattern:e('!?\\\\[(?:(?!\\\\])<inner>)+\\\\](?:\\\\([^\\\\s)]+(?:[\\t ]+\"(?:\\\\\\\\.|[^\"\\\\\\\\])*\")?\\\\)|[ \\t]?\\\\[(?:(?!\\\\])<inner>)+\\\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\\[)[^\\]]+(?=\\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,lookbehind:!0},url:{pattern:/(^\\]\\()[^\\s)]+/,lookbehind:!0},string:{pattern:/(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,lookbehind:!0}}}}),[\"url\",\"bold\",\"italic\",\"strike\"].forEach((function(e){[\"url\",\"bold\",\"italic\",\"strike\",\"code-snippet\"].forEach((function(t){e!==t&&(n.languages.markdown[e].inside.content.inside[t]=n.languages.markdown[t])}))})),n.hooks.add(\"after-tokenize\",(function(n){\"markdown\"!==n.language&&\"md\"!==n.language||function n(e){if(e&&\"string\"!=typeof e)for(var t=0,a=e.length;t<a;t++){var i=e[t];if(\"code\"===i.type){var r=i.content[1],o=i.content[3];if(r&&o&&\"code-language\"===r.type&&\"code-block\"===o.type&&\"string\"==typeof r.content){var l=r.content.replace(/\\b#/g,\"sharp\").replace(/\\b\\+\\+/g,\"pp\"),s=\"language-\"+(l=(/[a-z][\\w-]*/i.exec(l)||[\"\"])[0].toLowerCase());o.alias?\"string\"==typeof o.alias?o.alias=[o.alias,s]:o.alias.push(s):o.alias=[s]}}else n(i.content)}}(n.tokens)})),n.hooks.add(\"wrap\",(function(e){if(\"code-block\"===e.type){for(var t=\"\",a=0,i=e.classes.length;a<i;a++){var s=e.classes[a],d=/language-(.+)/.exec(s);if(d){t=d[1];break}}var p=n.languages[t];if(p)e.content=n.highlight(e.content.replace(r,\"\").replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi,(function(n,e){var t;return\"#\"===(e=e.toLowerCase())[0]?(t=\"x\"===e[1]?parseInt(e.slice(2),16):Number(e.slice(1)),l(t)):o[e]||n})),p,t);else if(t&&\"none\"!==t&&n.plugins.autoloader){var u=\"md-\"+(new Date).valueOf()+\"-\"+Math.floor(1e16*Math.random());e.attributes.id=u,n.plugins.autoloader.loadLanguages(t,(function(){var e=document.getElementById(u);e&&(e.innerHTML=n.highlight(e.textContent,n.languages[t],t))}))}}}));var r=RegExp(n.languages.markup.tag.pattern.source,\"gi\"),o={amp:\"&\",lt:\"<\",gt:\">\",quot:'\"'},l=String.fromCodePoint||String.fromCharCode;n.languages.md=n.languages.markdown}(Prism);","Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\\s\\S])*?-->/,greedy:!0},prolog:{pattern:/<\\?[\\s\\S]+?\\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,greedy:!0,inside:{\"internal-subset\":{pattern:/(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/\"[^\"]*\"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\\]]/,\"doctype-tag\":/^DOCTYPE/i,name:/[^\\s<>'\"]+/}},cdata:{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,greedy:!0},tag:{pattern:/<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,greedy:!0,inside:{tag:{pattern:/^<\\/?[^\\s>\\/]+/,inside:{punctuation:/^<\\/?/,namespace:/^[^\\s>\\/:]+:/}},\"special-attr\":[],\"attr-value\":{pattern:/=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:\"attr-equals\"},{pattern:/^(\\s*)[\"']|[\"']$/,lookbehind:!0}]}},punctuation:/\\/?>/,\"attr-name\":{pattern:/[^\\s>\\/]+/,inside:{namespace:/^[^\\s>\\/:]+:/}}}},entity:[{pattern:/&[\\da-z]{1,8};/i,alias:\"named-entity\"},/&#x?[\\da-f]{1,8};/i]},Prism.languages.markup.tag.inside[\"attr-value\"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside[\"internal-subset\"].inside=Prism.languages.markup,Prism.hooks.add(\"wrap\",(function(a){\"entity\"===a.type&&(a.attributes.title=a.content.replace(/&amp;/,\"&\"))})),Object.defineProperty(Prism.languages.markup.tag,\"addInlined\",{value:function(a,e){var s={};s[\"language-\"+e]={pattern:/(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^<!\\[CDATA\\[|\\]\\]>$/i;var t={\"included-cdata\":{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,inside:s}};t[\"language-\"+e]={pattern:/[\\s\\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp(\"(<__[^>]*>)(?:<!\\\\[CDATA\\\\[(?:[^\\\\]]|\\\\](?!\\\\]>))*\\\\]\\\\]>|(?!<!\\\\[CDATA\\\\[)[^])*?(?=</__>)\".replace(/__/g,(function(){return a})),\"i\"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore(\"markup\",\"cdata\",n)}}),Object.defineProperty(Prism.languages.markup.tag,\"addAttribute\",{value:function(a,e){Prism.languages.markup.tag.inside[\"special-attr\"].push({pattern:RegExp(\"(^|[\\\"'\\\\s])(?:\"+a+\")\\\\s*=\\\\s*(?:\\\"[^\\\"]*\\\"|'[^']*'|[^\\\\s'\\\">=]+(?=[\\\\s>]))\",\"i\"),lookbehind:!0,inside:{\"attr-name\":/^[^\\s=]+/,\"attr-value\":{pattern:/=[\\s\\S]+/,inside:{value:{pattern:/(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,lookbehind:!0,alias:[e,\"language-\"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:\"attr-equals\"},/\"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend(\"markup\",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;","!function($){var e=[\"$eq\",\"$gt\",\"$gte\",\"$in\",\"$lt\",\"$lte\",\"$ne\",\"$nin\",\"$and\",\"$not\",\"$nor\",\"$or\",\"$exists\",\"$type\",\"$expr\",\"$jsonSchema\",\"$mod\",\"$regex\",\"$text\",\"$where\",\"$geoIntersects\",\"$geoWithin\",\"$near\",\"$nearSphere\",\"$all\",\"$elemMatch\",\"$size\",\"$bitsAllClear\",\"$bitsAllSet\",\"$bitsAnyClear\",\"$bitsAnySet\",\"$comment\",\"$elemMatch\",\"$meta\",\"$slice\",\"$currentDate\",\"$inc\",\"$min\",\"$max\",\"$mul\",\"$rename\",\"$set\",\"$setOnInsert\",\"$unset\",\"$addToSet\",\"$pop\",\"$pull\",\"$push\",\"$pullAll\",\"$each\",\"$position\",\"$slice\",\"$sort\",\"$bit\",\"$addFields\",\"$bucket\",\"$bucketAuto\",\"$collStats\",\"$count\",\"$currentOp\",\"$facet\",\"$geoNear\",\"$graphLookup\",\"$group\",\"$indexStats\",\"$limit\",\"$listLocalSessions\",\"$listSessions\",\"$lookup\",\"$match\",\"$merge\",\"$out\",\"$planCacheStats\",\"$project\",\"$redact\",\"$replaceRoot\",\"$replaceWith\",\"$sample\",\"$set\",\"$skip\",\"$sort\",\"$sortByCount\",\"$unionWith\",\"$unset\",\"$unwind\",\"$setWindowFields\",\"$abs\",\"$accumulator\",\"$acos\",\"$acosh\",\"$add\",\"$addToSet\",\"$allElementsTrue\",\"$and\",\"$anyElementTrue\",\"$arrayElemAt\",\"$arrayToObject\",\"$asin\",\"$asinh\",\"$atan\",\"$atan2\",\"$atanh\",\"$avg\",\"$binarySize\",\"$bsonSize\",\"$ceil\",\"$cmp\",\"$concat\",\"$concatArrays\",\"$cond\",\"$convert\",\"$cos\",\"$dateFromParts\",\"$dateToParts\",\"$dateFromString\",\"$dateToString\",\"$dayOfMonth\",\"$dayOfWeek\",\"$dayOfYear\",\"$degreesToRadians\",\"$divide\",\"$eq\",\"$exp\",\"$filter\",\"$first\",\"$floor\",\"$function\",\"$gt\",\"$gte\",\"$hour\",\"$ifNull\",\"$in\",\"$indexOfArray\",\"$indexOfBytes\",\"$indexOfCP\",\"$isArray\",\"$isNumber\",\"$isoDayOfWeek\",\"$isoWeek\",\"$isoWeekYear\",\"$last\",\"$last\",\"$let\",\"$literal\",\"$ln\",\"$log\",\"$log10\",\"$lt\",\"$lte\",\"$ltrim\",\"$map\",\"$max\",\"$mergeObjects\",\"$meta\",\"$min\",\"$millisecond\",\"$minute\",\"$mod\",\"$month\",\"$multiply\",\"$ne\",\"$not\",\"$objectToArray\",\"$or\",\"$pow\",\"$push\",\"$radiansToDegrees\",\"$range\",\"$reduce\",\"$regexFind\",\"$regexFindAll\",\"$regexMatch\",\"$replaceOne\",\"$replaceAll\",\"$reverseArray\",\"$round\",\"$rtrim\",\"$second\",\"$setDifference\",\"$setEquals\",\"$setIntersection\",\"$setIsSubset\",\"$setUnion\",\"$size\",\"$sin\",\"$slice\",\"$split\",\"$sqrt\",\"$stdDevPop\",\"$stdDevSamp\",\"$strcasecmp\",\"$strLenBytes\",\"$strLenCP\",\"$substr\",\"$substrBytes\",\"$substrCP\",\"$subtract\",\"$sum\",\"$switch\",\"$tan\",\"$toBool\",\"$toDate\",\"$toDecimal\",\"$toDouble\",\"$toInt\",\"$toLong\",\"$toObjectId\",\"$toString\",\"$toLower\",\"$toUpper\",\"$trim\",\"$trunc\",\"$type\",\"$week\",\"$year\",\"$zip\",\"$count\",\"$dateAdd\",\"$dateDiff\",\"$dateSubtract\",\"$dateTrunc\",\"$getField\",\"$rand\",\"$sampleRate\",\"$setField\",\"$unsetField\",\"$comment\",\"$explain\",\"$hint\",\"$max\",\"$maxTimeMS\",\"$min\",\"$orderby\",\"$query\",\"$returnKey\",\"$showDiskLoc\",\"$natural\"],t=\"(?:\"+(e=e.map((function($){return $.replace(\"$\",\"\\\\$\")}))).join(\"|\")+\")\\\\b\";$.languages.mongodb=$.languages.extend(\"javascript\",{}),$.languages.insertBefore(\"mongodb\",\"string\",{property:{pattern:/(?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)(?=\\s*:)/,greedy:!0,inside:{keyword:RegExp(\"^(['\\\"])?\"+t+\"(?:\\\\1)?$\")}}}),$.languages.mongodb.string.inside={url:{pattern:/https?:\\/\\/[-\\w@:%.+~#=]{1,256}\\.[a-z0-9()]{1,6}\\b[-\\w()@:%+.~#?&/=]*/i,greedy:!0},entity:{pattern:/\\b(?:(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\b/,greedy:!0}},$.languages.insertBefore(\"mongodb\",\"constant\",{builtin:{pattern:RegExp(\"\\\\b(?:\"+[\"ObjectId\",\"Code\",\"BinData\",\"DBRef\",\"Timestamp\",\"NumberLong\",\"NumberDecimal\",\"MaxKey\",\"MinKey\",\"RegExp\",\"ISODate\",\"UUID\"].join(\"|\")+\")\\\\b\"),alias:\"keyword\"}})}(Prism);","Prism.languages.objectivec=Prism.languages.extend(\"c\",{string:{pattern:/@?\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,greedy:!0},keyword:/\\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,operator:/-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/}),delete Prism.languages.objectivec[\"class-name\"],Prism.languages.objc=Prism.languages.objectivec;","Prism.languages.python={comment:{pattern:/(^|[^\\\\])#.*/,lookbehind:!0,greedy:!0},\"string-interpolation\":{pattern:/(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,lookbehind:!0,inside:{\"format-spec\":{pattern:/(:)[^:(){}]+(?=\\}$)/,lookbehind:!0},\"conversion-option\":{pattern:/![sra](?=[:}]$)/,alias:\"punctuation\"},rest:null}},string:/[\\s\\S]+/}},\"triple-quoted-string\":{pattern:/(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,greedy:!0,alias:\"string\"},string:{pattern:/(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,greedy:!0},function:{pattern:/((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,lookbehind:!0},\"class-name\":{pattern:/(\\bclass\\s+)\\w+/i,lookbehind:!0},decorator:{pattern:/(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,lookbehind:!0,alias:[\"annotation\",\"punctuation\"],inside:{punctuation:/\\./}},keyword:/\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,builtin:/\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,boolean:/\\b(?:False|None|True)\\b/,number:/\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,operator:/[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\\];(),.:]/},Prism.languages.python[\"string-interpolation\"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;","!function(a){var e={pattern:/\\\\[\\\\(){}[\\]^$+*?|.]/,alias:\"escape\"},n=/\\\\(?:x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u\\{[\\da-fA-F]+\\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/,t=\"(?:[^\\\\\\\\-]|\"+n.source+\")\",s=RegExp(t+\"-\"+t),i={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:\"variable\"};a.languages.regex={\"char-class\":{pattern:/((?:^|[^\\\\])(?:\\\\\\\\)*)\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/,lookbehind:!0,inside:{\"char-class-negation\":{pattern:/(^\\[)\\^/,lookbehind:!0,alias:\"operator\"},\"char-class-punctuation\":{pattern:/^\\[|\\]$/,alias:\"punctuation\"},range:{pattern:s,inside:{escape:n,\"range-punctuation\":{pattern:/-/,alias:\"operator\"}}},\"special-escape\":e,\"char-set\":{pattern:/\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,alias:\"class-name\"},escape:n}},\"special-escape\":e,\"char-set\":{pattern:/\\.|\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,alias:\"class-name\"},backreference:[{pattern:/\\\\(?![123][0-7]{2})[1-9]/,alias:\"keyword\"},{pattern:/\\\\k<[^<>']+>/,alias:\"keyword\",inside:{\"group-name\":i}}],anchor:{pattern:/[$^]|\\\\[ABbGZz]/,alias:\"function\"},escape:n,group:[{pattern:/\\((?:\\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:\"punctuation\",inside:{\"group-name\":i}},{pattern:/\\)/,alias:\"punctuation\"}],quantifier:{pattern:/(?:[+*?]|\\{\\d+(?:,\\d*)?\\})[?+]?/,alias:\"number\"},alternation:{pattern:/\\|/,alias:\"keyword\"}}}(Prism);","Prism.languages.scala=Prism.languages.extend(\"java\",{\"triple-quoted-string\":{pattern:/\"\"\"[\\s\\S]*?\"\"\"/,greedy:!0,alias:\"string\"},string:{pattern:/(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},keyword:/<-|=>|\\b(?:abstract|case|catch|class|def|derives|do|else|enum|extends|extension|final|finally|for|forSome|given|if|implicit|import|infix|inline|lazy|match|new|null|object|opaque|open|override|package|private|protected|return|sealed|self|super|this|throw|trait|transparent|try|type|using|val|var|while|with|yield)\\b/,number:/\\b0x(?:[\\da-f]*\\.)?[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e\\d+)?[dfl]?/i,builtin:/\\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\\b/,symbol:/'[^\\d\\s\\\\]\\w*/}),Prism.languages.insertBefore(\"scala\",\"triple-quoted-string\",{\"string-interpolation\":{pattern:/\\b[a-z]\\w*(?:\"\"\"(?:[^$]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*?\"\"\"|\"(?:[^$\"\\r\\n]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*\")/i,greedy:!0,inside:{id:{pattern:/^\\w+/,greedy:!0,alias:\"function\"},escape:{pattern:/\\\\\\$\"|\\$[$\"]/,greedy:!0,alias:\"symbol\"},interpolation:{pattern:/\\$(?:\\w+|\\{(?:[^{}]|\\{[^{}]*\\})*\\})/,greedy:!0,inside:{punctuation:/^\\$\\{?|\\}$/,expression:{pattern:/[\\s\\S]+/,inside:Prism.languages.scala}}},string:/[\\s\\S]+/}}}),delete Prism.languages.scala[\"class-name\"],delete Prism.languages.scala.function,delete Prism.languages.scala.constant;","Prism.languages.scss=Prism.languages.extend(\"css\",{comment:{pattern:/(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,lookbehind:!0},atrule:{pattern:/@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,inside:{rule:/@[\\w-]+/}},url:/(?:[-a-z]+-)?url(?=\\()/i,selector:{pattern:/(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:\"important\"},placeholder:/%[-\\w]+/,variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}},property:{pattern:/(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,inside:{variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}}}),Prism.languages.insertBefore(\"scss\",\"atrule\",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore(\"scss\",\"important\",{variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}),Prism.languages.insertBefore(\"scss\",\"function\",{\"module-modifier\":{pattern:/\\b(?:as|hide|show|with)\\b/i,alias:\"keyword\"},placeholder:{pattern:/%[-\\w]+/,alias:\"selector\"},statement:{pattern:/\\B!(?:default|optional)\\b/i,alias:\"keyword\"},boolean:/\\b(?:false|true)\\b/,null:{pattern:/\\bnull\\b/,alias:\"keyword\"},operator:{pattern:/(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|not|or)(?=\\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss;","!function(e){var a=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend(\"jsx\",a),delete e.languages.tsx.parameter,delete e.languages.tsx[\"literal-property\"];var t=e.languages.tsx.tag;t.pattern=RegExp(\"(^|[^\\\\w$]|(?=</))(?:\"+t.pattern.source+\")\",t.pattern.flags),t.lookbehind=!0}(Prism);","!function(e){e.languages.typescript=e.languages.extend(\"javascript\",{\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/}),e.languages.typescript.keyword.push(/\\b(?:abstract|declare|is|keyof|readonly|require)\\b/,/\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/,/\\btype\\b(?=\\s*(?:[\\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript[\"literal-property\"];var s=e.languages.extend(\"typescript\",{});delete s[\"class-name\"],e.languages.typescript[\"class-name\"].inside=s,e.languages.insertBefore(\"typescript\",\"function\",{decorator:{pattern:/@[$\\w\\xA0-\\uFFFF]+/,inside:{at:{pattern:/^@/,alias:\"operator\"},function:/^[\\s\\S]+/}},\"generic-function\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,greedy:!0,inside:{function:/^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,generic:{pattern:/<[\\s\\S]+/,alias:\"class-name\",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);","!function(a){function e(e,n){a.languages[e]&&a.languages.insertBefore(e,\"comment\",{\"doc-comment\":n})}var n=a.languages.markup.tag,t={pattern:/\\/\\/\\/.*/,greedy:!0,alias:\"comment\",inside:{tag:n}},g={pattern:/'''.*/,greedy:!0,alias:\"comment\",inside:{tag:n}};e(\"csharp\",t),e(\"fsharp\",t),e(\"vbnet\",g)}(Prism);","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined' || !document.createRange) {\n\t\treturn;\n\t}\n\n\tPrism.plugins.KeepMarkup = true;\n\n\tPrism.hooks.add('before-highlight', function (env) {\n\t\tif (!env.element.children.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Prism.util.isActive(env.element, 'keep-markup', true)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar dropTokens = Prism.util.isActive(env.element, 'drop-tokens', false);\n\t\t/**\n\t\t * Returns whether the given element should be kept.\n\t\t *\n\t\t * @param {HTMLElement} element\n\t\t * @returns {boolean}\n\t\t */\n\t\tfunction shouldKeep(element) {\n\t\t\tif (dropTokens && element.nodeName.toLowerCase() === 'span' && element.classList.contains('token')) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tvar pos = 0;\n\t\tvar data = [];\n\t\tfunction processElement(element) {\n\t\t\tif (!shouldKeep(element)) {\n\t\t\t\t// don't keep this element and just process its children\n\t\t\t\tprocessChildren(element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar o = {\n\t\t\t\t// Store original element so we can restore it after highlighting\n\t\t\t\telement: element,\n\t\t\t\tposOpen: pos\n\t\t\t};\n\t\t\tdata.push(o);\n\n\t\t\tprocessChildren(element);\n\n\t\t\to.posClose = pos;\n\t\t}\n\t\tfunction processChildren(element) {\n\t\t\tfor (var i = 0, l = element.childNodes.length; i < l; i++) {\n\t\t\t\tvar child = element.childNodes[i];\n\t\t\t\tif (child.nodeType === 1) { // element\n\t\t\t\t\tprocessElement(child);\n\t\t\t\t} else if (child.nodeType === 3) { // text\n\t\t\t\t\tpos += child.data.length;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tprocessChildren(env.element);\n\n\t\tif (data.length) {\n\t\t\t// data is an array of all existing tags\n\t\t\tenv.keepMarkup = data;\n\t\t}\n\t});\n\n\tPrism.hooks.add('after-highlight', function (env) {\n\t\tif (env.keepMarkup && env.keepMarkup.length) {\n\n\t\t\tvar walk = function (elt, nodeState) {\n\t\t\t\tfor (var i = 0, l = elt.childNodes.length; i < l; i++) {\n\n\t\t\t\t\tvar child = elt.childNodes[i];\n\n\t\t\t\t\tif (child.nodeType === 1) { // element\n\t\t\t\t\t\tif (!walk(child, nodeState)) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (child.nodeType === 3) { // text\n\t\t\t\t\t\tif (!nodeState.nodeStart && nodeState.pos + child.data.length > nodeState.node.posOpen) {\n\t\t\t\t\t\t\t// We found the start position\n\t\t\t\t\t\t\tnodeState.nodeStart = child;\n\t\t\t\t\t\t\tnodeState.nodeStartPos = nodeState.node.posOpen - nodeState.pos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (nodeState.nodeStart && nodeState.pos + child.data.length >= nodeState.node.posClose) {\n\t\t\t\t\t\t\t// We found the end position\n\t\t\t\t\t\t\tnodeState.nodeEnd = child;\n\t\t\t\t\t\t\tnodeState.nodeEndPos = nodeState.node.posClose - nodeState.pos;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnodeState.pos += child.data.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (nodeState.nodeStart && nodeState.nodeEnd) {\n\t\t\t\t\t\t// Select the range and wrap it with the element\n\t\t\t\t\t\tvar range = document.createRange();\n\t\t\t\t\t\trange.setStart(nodeState.nodeStart, nodeState.nodeStartPos);\n\t\t\t\t\t\trange.setEnd(nodeState.nodeEnd, nodeState.nodeEndPos);\n\t\t\t\t\t\tnodeState.node.element.innerHTML = '';\n\t\t\t\t\t\tnodeState.node.element.appendChild(range.extractContents());\n\t\t\t\t\t\trange.insertNode(nodeState.node.element);\n\t\t\t\t\t\trange.detach();\n\n\t\t\t\t\t\t// Process is over\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t};\n\n\t\t\t// For each tag, we walk the DOM to reinsert it\n\t\t\tenv.keepMarkup.forEach(function (node) {\n\t\t\t\twalk(env.element, {\n\t\t\t\t\tnode: node,\n\t\t\t\t\tpos: 0\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Store new highlightedCode for later hooks calls\n\t\t\tenv.highlightedCode = env.element.innerHTML;\n\t\t}\n\t});\n}());\n","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t/**\n\t * Plugin name which is used as a class name for <pre> which is activating the plugin\n\t *\n\t * @type {string}\n\t */\n\tvar PLUGIN_NAME = 'line-numbers';\n\n\t/**\n\t * Regular expression used for determining line breaks\n\t *\n\t * @type {RegExp}\n\t */\n\tvar NEW_LINE_EXP = /\\n(?!$)/g;\n\n\n\t/**\n\t * Global exports\n\t */\n\tvar config = Prism.plugins.lineNumbers = {\n\t\t/**\n\t\t * Get node for provided line number\n\t\t *\n\t\t * @param {Element} element pre element\n\t\t * @param {number} number line number\n\t\t * @returns {Element|undefined}\n\t\t */\n\t\tgetLine: function (element, number) {\n\t\t\tif (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar lineNumberRows = element.querySelector('.line-numbers-rows');\n\t\t\tif (!lineNumberRows) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1;\n\t\t\tvar lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);\n\n\t\t\tif (number < lineNumberStart) {\n\t\t\t\tnumber = lineNumberStart;\n\t\t\t}\n\t\t\tif (number > lineNumberEnd) {\n\t\t\t\tnumber = lineNumberEnd;\n\t\t\t}\n\n\t\t\tvar lineIndex = number - lineNumberStart;\n\n\t\t\treturn lineNumberRows.children[lineIndex];\n\t\t},\n\n\t\t/**\n\t\t * Resizes the line numbers of the given element.\n\t\t *\n\t\t * This function will not add line numbers. It will only resize existing ones.\n\t\t *\n\t\t * @param {HTMLElement} element A `<pre>` element with line numbers.\n\t\t * @returns {void}\n\t\t */\n\t\tresize: function (element) {\n\t\t\tresizeElements([element]);\n\t\t},\n\n\t\t/**\n\t\t * Whether the plugin can assume that the units font sizes and margins are not depended on the size of\n\t\t * the current viewport.\n\t\t *\n\t\t * Setting this to `true` will allow the plugin to do certain optimizations for better performance.\n\t\t *\n\t\t * Set this to `false` if you use any of the following CSS units: `vh`, `vw`, `vmin`, `vmax`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tassumeViewportIndependence: true\n\t};\n\n\t/**\n\t * Resizes the given elements.\n\t *\n\t * @param {HTMLElement[]} elements\n\t */\n\tfunction resizeElements(elements) {\n\t\telements = elements.filter(function (e) {\n\t\t\tvar codeStyles = getStyles(e);\n\t\t\tvar whiteSpace = codeStyles['white-space'];\n\t\t\treturn whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line';\n\t\t});\n\n\t\tif (elements.length == 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar infos = elements.map(function (element) {\n\t\t\tvar codeElement = element.querySelector('code');\n\t\t\tvar lineNumbersWrapper = element.querySelector('.line-numbers-rows');\n\t\t\tif (!codeElement || !lineNumbersWrapper) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t/** @type {HTMLElement} */\n\t\t\tvar lineNumberSizer = element.querySelector('.line-numbers-sizer');\n\t\t\tvar codeLines = codeElement.textContent.split(NEW_LINE_EXP);\n\n\t\t\tif (!lineNumberSizer) {\n\t\t\t\tlineNumberSizer = document.createElement('span');\n\t\t\t\tlineNumberSizer.className = 'line-numbers-sizer';\n\n\t\t\t\tcodeElement.appendChild(lineNumberSizer);\n\t\t\t}\n\n\t\t\tlineNumberSizer.innerHTML = '0';\n\t\t\tlineNumberSizer.style.display = 'block';\n\n\t\t\tvar oneLinerHeight = lineNumberSizer.getBoundingClientRect().height;\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\treturn {\n\t\t\t\telement: element,\n\t\t\t\tlines: codeLines,\n\t\t\t\tlineHeights: [],\n\t\t\t\toneLinerHeight: oneLinerHeight,\n\t\t\t\tsizer: lineNumberSizer,\n\t\t\t};\n\t\t}).filter(Boolean);\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lines = info.lines;\n\t\t\tvar lineHeights = info.lineHeights;\n\t\t\tvar oneLinerHeight = info.oneLinerHeight;\n\n\t\t\tlineHeights[lines.length - 1] = undefined;\n\t\t\tlines.forEach(function (line, index) {\n\t\t\t\tif (line && line.length > 1) {\n\t\t\t\t\tvar e = lineNumberSizer.appendChild(document.createElement('span'));\n\t\t\t\t\te.style.display = 'block';\n\t\t\t\t\te.textContent = line;\n\t\t\t\t} else {\n\t\t\t\t\tlineHeights[index] = oneLinerHeight;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lineHeights = info.lineHeights;\n\n\t\t\tvar childIndex = 0;\n\t\t\tfor (var i = 0; i < lineHeights.length; i++) {\n\t\t\t\tif (lineHeights[i] === undefined) {\n\t\t\t\t\tlineHeights[i] = lineNumberSizer.children[childIndex++].getBoundingClientRect().height;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar wrapper = info.element.querySelector('.line-numbers-rows');\n\n\t\t\tlineNumberSizer.style.display = 'none';\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\tinfo.lineHeights.forEach(function (height, lineNumber) {\n\t\t\t\twrapper.children[lineNumber].style.height = height + 'px';\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Returns style declarations for the element\n\t *\n\t * @param {Element} element\n\t */\n\tfunction getStyles(element) {\n\t\tif (!element) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn window.getComputedStyle ? getComputedStyle(element) : (element.currentStyle || null);\n\t}\n\n\tvar lastWidth = undefined;\n\twindow.addEventListener('resize', function () {\n\t\tif (config.assumeViewportIndependence && lastWidth === window.innerWidth) {\n\t\t\treturn;\n\t\t}\n\t\tlastWidth = window.innerWidth;\n\n\t\tresizeElements(Array.prototype.slice.call(document.querySelectorAll('pre.' + PLUGIN_NAME)));\n\t});\n\n\tPrism.hooks.add('complete', function (env) {\n\t\tif (!env.code) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar code = /** @type {Element} */ (env.element);\n\t\tvar pre = /** @type {HTMLElement} */ (code.parentNode);\n\n\t\t// works only for <code> wrapped inside <pre> (not inline)\n\t\tif (!pre || !/pre/i.test(pre.nodeName)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Abort if line numbers already exists\n\t\tif (code.querySelector('.line-numbers-rows')) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only add line numbers if <code> or one of its ancestors has the `line-numbers` class\n\t\tif (!Prism.util.isActive(code, PLUGIN_NAME)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove the class 'line-numbers' from the <code>\n\t\tcode.classList.remove(PLUGIN_NAME);\n\t\t// Add the class 'line-numbers' to the <pre>\n\t\tpre.classList.add(PLUGIN_NAME);\n\n\t\tvar match = env.code.match(NEW_LINE_EXP);\n\t\tvar linesNum = match ? match.length + 1 : 1;\n\t\tvar lineNumbersWrapper;\n\n\t\tvar lines = new Array(linesNum + 1).join('<span></span>');\n\n\t\tlineNumbersWrapper = document.createElement('span');\n\t\tlineNumbersWrapper.setAttribute('aria-hidden', 'true');\n\t\tlineNumbersWrapper.className = 'line-numbers-rows';\n\t\tlineNumbersWrapper.innerHTML = lines;\n\n\t\tif (pre.hasAttribute('data-start')) {\n\t\t\tpre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);\n\t\t}\n\n\t\tenv.element.appendChild(lineNumbersWrapper);\n\n\t\tresizeElements([pre]);\n\n\t\tPrism.hooks.run('line-numbers', env);\n\t});\n\n\tPrism.hooks.add('line-numbers', function (env) {\n\t\tenv.plugins = env.plugins || {};\n\t\tenv.plugins.lineNumbers = true;\n\t});\n\n}());\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t// at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t// at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading…';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '✖ Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQ3MV80MzEzKSI+IDxwYXRoIGQ9Ik02IDExLjI1QzguODk5NSAxMS4yNSAxMS4yNSA4Ljg5OTUgMTEuMjUgNkMxMS4yNSAzLjEwMDUxIDguODk5NSAwLjc1IDYgMC43NUMzLjEwMDUxIDAuNzUgMC43NSAzLjEwMDUxIDAuNzUgNkMwLjc1IDguODk5NSAzLjEwMDUxIDExLjI1IDYgMTEuMjVaIiBzdHJva2U9IiM5QkE3QjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPHBhdGggZD0iTTguMjUgNkgzLjc1IiBzdHJva2U9IiM5QkE3QjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQ3MV80MzEzIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FsZW5kYXIiPiA8cGF0aCBkPSJNMjAsM2gtMXYyYzAsMS4xMDQtMC44OTYsMi0yLDJzLTItMC44OTYtMi0yVjNIOXYyYzAsMS4xMDQtMC44OTYsMi0yLDJTNSw2LjEwNCw1LDVWM0g0QzIuODk1LDMsMiwzLjg5NSwyLDV2MTR2MSBjMCwxLjEwNSwwLjg5NSwyLDIsMmgxNmMxLjEwNSwwLDItMC44OTUsMi0ydi0xVjVDMjIsMy44OTUsMjEuMTA1LDMsMjAsM3ogTTcsMTguNUM3LDE4Ljc3NSw2Ljc3NSwxOSw2LjUsMTloLTEgQzUuMjI1LDE5LDUsMTguNzc1LDUsMTguNXYtMUM1LDE3LjIyNSw1LjIyNSwxNyw1LjUsMTdoMUM2Ljc3NSwxNyw3LDE3LjIyNSw3LDE3LjVWMTguNXogTTcsMTQuNUM3LDE0Ljc3NSw2Ljc3NSwxNSw2LjUsMTVoLTEgQzUuMjI1LDE1LDUsMTQuNzc1LDUsMTQuNXYtMUM1LDEzLjIyNSw1LjIyNSwxMyw1LjUsMTNoMUM2Ljc3NSwxMyw3LDEzLjIyNSw3LDEzLjVWMTQuNXogTTcsMTAuNUM3LDEwLjc3NSw2Ljc3NSwxMSw2LjUsMTFoLTEgQzUuMjI1LDExLDUsMTAuNzc1LDUsMTAuNXYtMUM1LDkuMjI1LDUuMjI1LDksNS41LDloMUM2Ljc3NSw5LDcsOS4yMjUsNyw5LjVWMTAuNXogTTExLDE4LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTksOSwxOC43NzUsOSwxOC41di0xQzksMTcuMjI1LDkuMjI1LDE3LDkuNSwxN2gxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTguNXogTTExLDE0LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTUsOSwxNC43NzUsOSwxNC41di0xQzksMTMuMjI1LDkuMjI1LDEzLDkuNSwxM2gxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTQuNXogTTExLDEwLjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTEsOSwxMC43NzUsOSwxMC41di0xQzksOS4yMjUsOS4yMjUsOSw5LjUsOWgxQzEwLjc3NSw5LDExLDkuMjI1LDExLDkuNVYxMC41eiBNMTUsMTguNWMwLDAuMjc1LTAuMjI1LDAuNS0wLjUsMC41aC0xIGMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNVYxOC41eiBNMTUsMTQuNWMwLDAuMjc1LTAuMjI1LDAuNS0wLjUsMC41IGgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNVYxNC41eiBNMTUsMTAuNSBjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMUMxMyw5LjIyNSwxMy4yMjUsOSwxMy41LDloMUMxNC43NzUsOSwxNSw5LjIyNSwxNSw5LjVWMTAuNXogTTE5LDE4LjUgYzAsMC4yNzUtMC4yMjUsMC41LTAuNSwwLjVoLTFjLTAuMjc1LDAtMC41LTAuMjI1LTAuNS0wLjV2LTFjMC0wLjI3NSwwLjIyNS0wLjUsMC41LTAuNWgxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTguNXogTTE5LDE0LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNSBWMTQuNXogTTE5LDEwLjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMUMxNyw5LjIyNSwxNy4yMjUsOSwxNy41LDloMUMxOC43NzUsOSwxOSw5LjIyNSwxOSw5LjUgVjEwLjV6IE02LDVWMmMwLTAuNTUyLDAuNDQ4LTEsMS0xczEsMC40NDgsMSwxdjNjMCwwLjU1Mi0wLjQ0OCwxLTEsMVM2LDUuNTUyLDYsNXogTTE2LDVWMmMwLTAuNTUyLDAuNDQ3LTEsMS0xczEsMC40NDgsMSwxdjMgYzAsMC41NTItMC40NDcsMS0xLDFTMTYsNS41NTIsMTYsNXoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDI0IDI0OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+IDxnIGlkPSJjYW5jZWwiPiA8cGF0aCBkPSJNMTkuMDcxLDE3LjY1N0wxMy40MTQsMTJsNS42NTctNS42NTdjMC4zOS0wLjM5LDAuMzktMS4wMjQsMC0xLjQxNHMtMS4wMjQtMC4zOS0xLjQxNCwwTDEyLDEwLjU4Nkw2LjM0Myw0LjkyOSBjLTAuMzktMC4zOS0xLjAyNC0wLjM5LTEuNDE0LDBzLTAuMzksMS4wMjQsMCwxLjQxNEwxMC41ODYsMTJsLTUuNjU3LDUuNjU3Yy0wLjM5MSwwLjM5MS0wLjM5LDEuMDI0LDAsMS40MTRzMS4wMjMsMC4zOTEsMS40MTQsMCBMMTIsMTMuNDE0bDUuNjU3LDUuNjU3YzAuMzksMC4zOSwxLjAyNCwwLjM5LDEuNDE0LDBTMTkuNDYyLDE4LjA0NywxOS4wNzEsMTcuNjU3eiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic21zIj4gPHBhdGggZD0iTTE4LjQ4MSwxMGgtMS45NDdjLTIuMTg4LDAtNC4xNDIsMS42MDItNC40NzksMy44NDhDMTEuNjMsMTYuNjc4LDEzLjY5OCwxOSwxNi4zNDcsMTloMS4xSDE4IGMwLjI2NCwwLjQwOSwwLjQ3NCwxLjA0MiwwLjQ3NCwxLjU3MWMwLDAuMjY1LTAuMDM5LDAuNjExLTAuMTE0LDAuOTM5Yy0wLjA3NSwwLjMyOSwwLjI1MiwwLjYwNCwwLjUzNiwwLjQ0MSBjMS45NjgtMS4xMzIsNC4wNDctNC4zMTcsNC4xMDMtNy4yNTlDMjMuMDQ4LDEyLjExMiwyMC45NjUsMTAsMTguNDgxLDEweiIvPiA8cGF0aCBzdHlsZT0ib3BhY2l0eTowLjU7IiBkPSJNMTYuOTIxLDcuNDUxQzE2LjQzMSw0LjI2OSwxMy41ODgsMiwxMC40MDYsMkg3LjU3M0MzLjk2LDIsMC45Myw0Ljk5MiwxLjAwMSw4LjY0OCBjMC4wODIsNC4xNjgsMy4xMDUsOC42NzksNS45NjgsMTAuMjgzYzAuNDE0LDAuMjMyLDAuODg5LTAuMTU5LDAuNzgtMC42MjRjLTAuMTA5LTAuNDY2LTAuMTY2LTAuOTU1LTAuMTY2LTEuMzMxIGMwLTAuNzUsMC4wMzMtMS4zOTYsMC40MTctMS45NzZoMC44MDRoMS42YzAuMjA2LDAsMC40MS0wLjAxNSwwLjYxMi0wLjAzNWMtMC4wMjktMC40MTctMC4wMTUtMC44NDEsMC4wNDktMS4yNjYgQzExLjQ2NywxMS4wMiwxMy44MTgsOSwxNi41MzMsOWgwLjQzM0MxNy4wMTIsOC40OTYsMTcuMDAyLDcuOTc4LDE2LjkyMSw3LjQ1MXoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzY0KSI+IDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMS44MTA2NiA2LjAwMDA2TDMuOTA1MzMgMy45MDUzOEwyLjg0NDY3IDIuODQ0NzNMMC4yMTk2NyA1LjQ2OTczQy0wLjA3MzIyMzMgNS43NjI2MiAtMC4wNzMyMjMzIDYuMjM3NDkgMC4yMTk2NyA2LjUzMDM4TDIuODQ0NjcgOS4xNTU0TDMuOTA1MzMgOC4wOTQ3NUwxLjgxMDY2IDYuMDAwMDZaTTQuMTU5NTggOC40ODg0Mkw2LjQ1NDU4IDIuOTM4NEw3Ljg0MDcyIDMuNTExNkw1LjU0NTc0IDkuMDYxNTdMNC4xNTk1OCA4LjQ4ODQyWk0xMS43ODAzIDUuNDY5NzNMOS4xNTUzMiAyLjg0NDczTDguMDk0NjcgMy45MDUzOEwxMC4xODkzIDYuMDAwMDZMOC4wOTQ2NyA4LjA5NDc1TDkuMTU1MzIgOS4xNTU0TDExLjc4MDMgNi41MzAzOEMxMi4wNzMyIDYuMjM3NDkgMTIuMDczMiA1Ljc2MjYyIDExLjc4MDMgNS40Njk3M1oiIGZpbGw9IndoaXRlIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzY0Ij4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE4OV80Mjk4OSkiPiA8cGF0aCBkPSJNNy41IDQuNUgxLjVWMTAuNUg3LjVWNC41WiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNMy43NSA0LjVWMS41SDEwLjVWOC4yNUg3LjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPC9nPiA8ZGVmcz4gPGNsaXBQYXRoIGlkPSJjbGlwMF8xODlfNDI5ODkiPiA8cmVjdCB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9IndoaXRlIiAvPiA8L2NsaXBQYXRoPiA8L2RlZnM+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDIuMjVDMCAxLjgzNTc5IDAuMzM1Nzg2IDEuNSAwLjc1IDEuNUgxMS4yNUMxMS42NjQyIDEuNSAxMiAxLjgzNTc5IDEyIDIuMjVWNC41SDEwLjVWM0gxLjVWOC4yNUg0LjVWOS43NUgwLjc1QzAuMzM1Nzg2IDkuNzUgMCA5LjQxNDIzIDAgOVYyLjI1Wk05Ljc1IDcuNUgxMlY5SDkuNzVWMTEuMjVIOC4yNVY5SDZWNy41SDguMjVWNS4yNUg5Ljc1VjcuNVoiIGZpbGw9IndoaXRlIiAvPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTExLjcwNjcgMy4yNjY2N0wxMi4wMjY3IDQuMDEzMzNWMTIuOTczM0wxMS4wMTMzIDEzLjk4NjdIMkwwLjk4NjY2NyAxMi45NzMzVjAuOTczMzMzTDIgMC4wMTMzMzMzSDguMDI2NjdMOC43MiAwLjI4TDExLjcwNjcgMy4yNjY2N1pNMTEuMDEzMyAxMi45NzMzVjQuOTczMzNINy4wMTMzM1YwLjk3MzMzM0gyVjEyLjk3MzNIMTEuMDEzM1pNOC4wMjY2NyA0LjAxMzMzSDExLjAxMzNMOC4wMjY2NyAwLjk3MzMzM1Y0LjAxMzMzWiIgZmlsbD0iI0M1QzVDNSIvPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wLjc1IDMuODU2NjZMMS43MTMzNSAyLjg5MzMxTDYgNy4xNzk0M0wxMC4yODY3IDIuODkzMzFMMTEuMjUgMy44NTY2Nkw2IDkuMTA2NjZMMC43NSAzLjg1NjY2WiIgZmlsbD0iI0QxRDVEQiIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4gPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTEyIDEzLjc1QzEyLjk2NjUgMTMuNzUgMTMuNzUgMTIuOTY2NSAxMy43NSAxMkMxMy43NSAxMS4wMzM1IDEyLjk2NjUgMTAuMjUgMTIgMTAuMjVDMTEuMDMzNSAxMC4yNSAxMC4yNSAxMS4wMzM1IDEwLjI1IDEyQzEwLjI1IDEyLjk2NjUgMTEuMDMzNSAxMy43NSAxMiAxMy43NVoiIGZpbGw9IiMwMDAwMDAiLz4gPHBhdGggZD0iTTEyIDYuNzVDMTIuOTY2NSA2Ljc1IDEzLjc1IDUuOTY2NSAxMy43NSA1QzEzLjc1IDQuMDMzNSAxMi45NjY1IDMuMjUgMTIgMy4yNUMxMS4wMzM1IDMuMjUgMTAuMjUgNC4wMzM1IDEwLjI1IDVDMTAuMjUgNS45NjY1IDExLjAzMzUgNi43NSAxMiA2Ljc1WiIgZmlsbD0iIzAwMDAwMCIvPiA8cGF0aCBkPSJNMTIgMjAuNzVDMTIuOTY2NSAyMC43NSAxMy43NSAxOS45NjY1IDEzLjc1IDE5QzEzLjc1IDE4LjAzMzUgMTIuOTY2NSAxNy4yNSAxMiAxNy4yNUMxMS4wMzM1IDE3LjI1IDEwLjI1IDE4LjAzMzUgMTAuMjUgMTlDMTAuMjUgMTkuOTY2NSAxMS4wMzM1IDIwLjc1IDEyIDIwLjc1WiIgZmlsbD0iIzAwMDAwMCIvPiA8L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjQ0Nzk5IDAuMTA2NjkxQzEuMDc4ODYgLTAuMDc3OTk5OSAwLjYzNDE5MiAtMC4wMTY5MjYxIDAuMzI4NTI4IDAuMjYwNDQ0QzAuMDIyODY0NCAwLjUzNzgxMyAtMC4wODA5OCAwLjk3NDQ4MiAwLjA2NzEwMDEgMS4zNTk3NkwyLjYyMTIyIDguMDA1MDVMMC4wNjcyODQ3IDE0LjYzOTdDLTAuMDgwOTg2OSAxNS4wMjQ5IDAuMDIyNjE2OCAxNS40NjE2IDAuMzI4MTEgMTUuNzM5MUMwLjYzMzYwNCAxNi4wMTY2IDEuMDc4MjIgMTYuMDc4IDEuNDQ3NDQgMTUuODkzNUwxNS40NDY0IDguODk5OTFDMTUuNzg1MyA4LjczMDYzIDE1Ljk5OTQgOC4zODQ0MiAxNS45OTk1IDguMDA1NjRDMTUuOTk5NiA3LjYyNjg1IDE1Ljc4NTcgNy4yODA1MiAxNS40NDcgNy4xMTEwM0wxLjQ0Nzk5IDAuMTA2NjkxWk00LjM3OTYxIDcuMDA1MzNMMi44NTkwMyAzLjA0OTA3TDEwLjc2NjEgNy4wMDUzM0g0LjM3OTYxWk00LjM3OTIzIDkuMDA1MzNMMi44NTk5NCAxMi45NTIyTDEwLjc2MDIgOS4wMDUzM0g0LjM3OTIzWiIgZmlsbD0iIzA5NzJEMyIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iZXJyb3JfaW5saW5lIj4gPHBhdGggZD0iTTEyLDFDNS45MiwxLDEsNS45MiwxLDEyYzAsNi4wOCw0LjkyLDExLDExLDExczExLTQuOTIsMTEtMTFDMjMsNS45MiwxOC4wOCwxLDEyLDF6IE0xMiwxOGMtMC41NSwwLTEtMC40NS0xLTFzMC40NS0xLDEtMSBzMSwwLjQ1LDEsMVMxMi41NSwxOCwxMiwxOHogTTEzLDEzLjg3NkMxMywxNC40OTUsMTIuNTUsMTUsMTIsMTVzLTEtMC41MDUtMS0xLjEyNFY3LjEyNEMxMSw2LjUwNSwxMS40NSw2LDEyLDZzMSwwLjUwNSwxLDEuMTI0IFYxMy44NzZ6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYzKSI+IDxwYXRoIGQ9Ik03LjUgMS41SDEwLjVWNC41IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgLz4gPHBhdGggZD0iTTQuNSA3LjVMMTAuNSAxLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMTAuNSA2Ljc4NlYxMC41SDEuNVYxLjVINS4yNSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzYzIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icmVkZXllIj4gPHBhdGggc3R5bGU9Im9wYWNpdHk6MC41OyIgZD0iTTE1LDEyYy0xLjEwNSwwLTItMC44OTUtMi0yYzAtMC42NCwwLjMwNi0xLjIwMiwwLjc3My0xLjU2OUMxMy4yMzYsOC4xNjQsMTIuNjQsOCwxMiw4IGMtMi4yMDksMC00LDEuNzkxLTQsNGMwLDIuMjA5LDEuNzkxLDQsNCw0czQtMS43OTEsNC00YzAtMC4wOS0wLjAyMS0wLjE3NC0wLjAyNi0wLjI2M0MxNS42ODQsMTEuOSwxNS4zNTUsMTIsMTUsMTJ6Ii8+IDxwYXRoIGQ9Ik0yMi44NDIsMTEuNDZDMjIuNjUyLDExLjE2LDE4LjAwMSw0LDEyLDRTMS4zNDgsMTEuMTYsMS4xNTgsMTEuNDZjLTAuMjEsMC4zMy0wLjIxLDAuNzUsMCwxLjA4IEMxLjM0OCwxMi44NCw1Ljk5OSwyMCwxMiwyMHMxMC42NTItNy4xNiwxMC44NDItNy40NkMyMy4wNTMsMTIuMjEsMjMuMDUzLDExLjc5LDIyLjg0MiwxMS40NnogTTEyLDE3IGMtMi43NjIsMC01LjAwMS0yLjIzOS01LjAwMS01UzkuMjM4LDcsMTIsN3M1LjAwMSwyLjIzOSw1LjAwMSw1UzE0Ljc2MiwxNywxMiwxN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iaW5mb3JtYXRpb24iPiA8cGF0aCBkPSJNMTIsMUM1LjkyNSwxLDEsNS45MjUsMSwxMnM0LjkyNSwxMSwxMSwxMXMxMS00LjkyNSwxMS0xMVMxOC4wNzUsMSwxMiwxeiBNMTQsMTdjMCwxLjEwNS0wLjg5NSwyLTIsMnMtMi0wLjg5NS0yLTJ2LTUgYzAtMS4xMDUsMC44OTUtMiwyLTJzMiwwLjg5NSwyLDJWMTd6IE0xMiw4Yy0xLjEwNSwwLTItMC44OTUtMi0yYzAtMS4xMDUsMC44OTUtMiwyLTJzMiwwLjg5NSwyLDJDMTQsNy4xMDUsMTMuMTA1LDgsMTIsOHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FyZXRfbGVmdCI+IDxwYXRoIGQ9Ik0xNCwxOGMtMC4yNTYsMC0wLjUxMi0wLjA5OC0wLjcwNy0wLjI5M2wtNS01Yy0wLjM5MS0wLjM5MS0wLjM5MS0xLjAyMywwLTEuNDE0bDUtNWMwLjM5MS0wLjM5MSwxLjAyMy0wLjM5MSwxLjQxNCwwIHMwLjM5MSwxLjAyMywwLDEuNDE0TDEwLjQxNCwxMmw0LjI5Myw0LjI5M2MwLjM5MSwwLjM5MSwwLjM5MSwxLjAyMywwLDEuNDE0QzE0LjUxMiwxNy45MDIsMTQuMjU2LDE4LDE0LDE4eiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibGlnaHQiPiA8cGF0aCBkPSJNNy4xMDYsMTNoOS43ODlDMTguMTkyLDExLjcyOSwxOSw5Ljk2LDE5LDhjMC0zLjg2Ni0zLjEzNC03LTctN1M1LDQuMTM0LDUsOEM1LDkuOTYsNS44MDgsMTEuNzI5LDcuMTA2LDEzeiIvPiA8cGF0aCBzdHlsZT0ib3BhY2l0eTowLjU7IiBkPSJNMTQsMjFoMXYxYzAsMC41NTMtMC40NDcsMS0xLDFoLTRjLTAuNTUyLDAtMS0wLjQ0Ny0xLTF2LTFoMUgxNHogTTcsMTRjMCwwLDEsMS41LDEsM2MwLDEsMCwyLDEsM2g2IGMxLTEsMS0yLDEtM2MwLTEuNSwxLTMsMS0zSDd6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iaHlwZXJsaW5rIj4gPHBhdGggZD0iTTE2LjUsNWgtNGMtMi4xMywwLTMuOTgsMS4yMi00Ljg5LDNoMi40NWMwLjYzLTAuNjIsMS40OS0xLDIuNDQtMWg0YzEuOTMsMCwzLjUsMS41NywzLjUsMy41UzE4LjQzLDE0LDE2LjUsMTRoLTQgYy0xLjM5LDAtMi42LTAuODItMy4xNS0ySDcuMjFjMC42NSwyLjMsMi43OCw0LDUuMjksNGg0YzMuMDMsMCw1LjUtMi40Nyw1LjUtNS41QzIyLDcuNDcsMTkuNTMsNSwxNi41LDV6IE0xMS41LDE4aC00IEM1LjU3LDE4LDQsMTYuNDMsNCwxNC41UzUuNTcsMTEsNy41LDExaDRjMS4zOSwwLDIuNiwwLjgyLDMuMTUsMmgyLjE0Yy0wLjY1LTIuMy0yLjc4LTQtNS4yOS00aC00QzQuNDcsOSwyLDExLjQ3LDIsMTQuNSBDMiwxNy41Myw0LjQ3LDIwLDcuNSwyMGg0YzIuMTMsMCwzLjk4LTEuMjIsNC44OS0zaC0yLjQ1QzEzLjMxLDE3LjYyLDEyLjQ1LDE4LDExLjUsMTh6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iYW5ub3VuY2VyIj4gPHBhdGggZD0iTTIwLjg5OSwxOS4zOTRsLTYuNDktMTUuMDk1bC0xMS4xNCwxMS4xNGw4LjUzMSwzLjY1M2wtMS42NjksMS44MjFjLTAuMTA2LDAuMTE3LTAuMTUyLDAuMjc2LTAuMTIzLDAuNDMyIGMwLjAzLDAuMTU1LDAuMTMxLDAuMjg3LDAuMjcyLDAuMzU2bDIuNTcxLDEuMjVjMC4wNywwLjAzNCwwLjE0NSwwLjA1LDAuMjE5LDAuMDVjMC4xMzcsMCwwLjI3Mi0wLjA1NywwLjM2OS0wLjE2M2wyLTIuMTg3IGwyLjk0MiwxLjI2TDIwLjg5OSwxOS4zOTR6Ii8+IDxwYXRoIHN0eWxlPSJvcGFjaXR5OjAuNTsiIGQ9Ik05LjUsNkM5LjMzOSw2LDkuMTgsNS45MjIsOS4wODQsNS43NzdsLTItM2MtMC4xNTMtMC4yMy0wLjA5MS0wLjU0LDAuMTM5LTAuNjkzIHMwLjU0MS0wLjA5MiwwLjY5MywwLjEzOWwyLDNjMC4xNTMsMC4yMywwLjA5MSwwLjU0LTAuMTM5LDAuNjkzQzkuNjkyLDUuOTczLDkuNTk2LDYsOS41LDZ6IE00LjkxNiwxMC43NzcgYzAuMTUzLTAuMjMsMC4wOTEtMC41NC0wLjEzOS0wLjY5M2wtMy0yQzEuNTQ1LDcuOTMsMS4yMzYsNy45OTMsMS4wODQsOC4yMjNjLTAuMTUzLDAuMjMtMC4wOTEsMC41NCwwLjEzOSwwLjY5M2wzLDIgQzQuMzA4LDEwLjk3Myw0LjQwNCwxMSw0LjUsMTFDNC42NjEsMTEsNC44MiwxMC45MjIsNC45MTYsMTAuNzc3eiBNNi44NTQsNy44NTRjMC4xOTUtMC4xOTUsMC4xOTUtMC41MTIsMC0wLjcwN2wtNC00IGMtMC4xOTUtMC4xOTUtMC41MTItMC4xOTUtMC43MDcsMHMtMC4xOTUsMC41MTIsMCwwLjcwN2w0LDRDNi4yNDQsNy45NTEsNi4zNzIsOCw2LjUsOFM2Ljc1Niw3Ljk1MSw2Ljg1NCw3Ljg1NHogTTE4Ljg1NCwyMi44NTQgbDMtM2MwLjE5NS0wLjE5NSwwLjE5NS0wLjUxMiwwLTAuNzA3cy0wLjUxMi0wLjE5NS0wLjcwNywwbC0zLDNjLTAuMTk1LDAuMTk1LTAuMTk1LDAuNTEyLDAsMC43MDcgQzE4LjI0NCwyMi45NTEsMTguMzcyLDIzLDE4LjUsMjNTMTguNzU2LDIyLjk1MSwxOC44NTQsMjIuODU0eiBNMi44NTQsMTUuODU0bDEyLTEyYzAuMTk1LTAuMTk1LDAuMTk1LTAuNTEyLDAtMC43MDcgcy0wLjUxMi0wLjE5NS0wLjcwNywwbC0xMiwxMmMtMC4xOTUsMC4xOTUtMC4xOTUsMC41MTIsMCwwLjcwN0MyLjI0NCwxNS45NTEsMi4zNzIsMTYsMi41LDE2UzIuNzU2LDE1Ljk1MSwyLjg1NCwxNS44NTR6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibWVudSI+IDxwYXRoIGQ9Ik0yMSw4SDNDMi40NDgsOCwyLDcuNTUyLDIsN3MwLjQ0OC0xLDEtMWgxOGMwLjU1MywwLDEsMC40NDgsMSwxUzIxLjU1Myw4LDIxLDh6IE0yMiwxMmMwLTAuNTUyLTAuNDQ3LTEtMS0xSDMgYy0wLjU1MiwwLTEsMC40NDgtMSwxczAuNDQ4LDEsMSwxaDE4QzIxLjU1MywxMywyMiwxMi41NTIsMjIsMTJ6IE0yMiwxN2MwLTAuNTUzLTAuNDQ3LTEtMS0xSDNjLTAuNTUyLDAtMSwwLjQ0Ny0xLDFzMC40NDgsMSwxLDEgaDE4QzIxLjU1MywxOCwyMiwxNy41NTMsMjIsMTd6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icmVtb3ZlIj4gPHBhdGggZD0iTTIxLDEzSDNjLTAuNTUyLDAtMS0wLjQ0OC0xLTFzMC40NDgtMSwxLTFoMThjMC41NTIsMCwxLDAuNDQ4LDEsMVMyMS41NTIsMTMsMjEsMTN6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiBpZD0ic3ZnNDEiIHdpZHRoPSIyMi45NDU4MThtbSIgaGVpZ2h0PSIyNS45MjU4NDRtbSIgdmlld0JveD0iMCAwIDg2LjcyNDM1IDk3Ljk4NzQ0MyIgc29kaXBvZGk6ZG9jbmFtZT0iTXluYWhJY29uV2hpdGUuc3ZnIiBpbmtzY2FwZTp2ZXJzaW9uPSIxLjEgKGM0ZThmOWUsIDIwMjEtMDUtMjQpIiB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPiA8c29kaXBvZGk6bmFtZWR2aWV3IGlkPSJuYW1lZHZpZXc2IiBwYWdlY29sb3I9IiNmZmZmZmYiIGJvcmRlcmNvbG9yPSIjNjY2NjY2IiBib3JkZXJvcGFjaXR5PSIxLjAiIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiIHNob3dncmlkPSJmYWxzZSIgdW5pdHM9Im1tIiBmaXQtbWFyZ2luLXRvcD0iMCIgZml0LW1hcmdpbi1sZWZ0PSIwIiBmaXQtbWFyZ2luLXJpZ2h0PSIwIiBmaXQtbWFyZ2luLWJvdHRvbT0iMCIgaW5rc2NhcGU6em9vbT0iMi4yNTAwMDAxIiBpbmtzY2FwZTpjeD0iNTQuODg4ODg3IiBpbmtzY2FwZTpjeT0iODMuMzMzMzMxIiBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjEyOTYiIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDMiIGlua3NjYXBlOndpbmRvdy14PSIwIiBpbmtzY2FwZTp3aW5kb3cteT0iMjMiIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9Imc0NyIgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9Im1tIiAvPiA8ZGVmcyBpZD0iZGVmczQ1IiAvPiA8ZyBpZD0iZzQ3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTEwLjU3MjU3LC04OS4zNDQxMzUpIj4gPHBhdGggaWQ9InBhdGgxMTkiIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuNjY2NjY3IiBkPSJtIDEzMi4zMDczLDE3NS42OTcyOCBjIC0xMC45OTE5LC02LjM5MTk2IC0yMC41NDgzLC0xMS43MTUyNiAtMjEuMDE0NzMsLTEyLjM1MzE0IC0xLC0xIC0wLjY2NjY2LC03LjEyMzE5IC0wLjY2NjY2LC0yNS4wOTAyNSAwLC0yMy40NDI5MiAwLjAwNCwtMjMuNTA2MTkgMS41LC0yNS4xMzk0NSAyLjI2NjQxLC0yLjQ3Mzk5IDM5LjY3MSwtMjMuNzcwMzA1IDQxLjc0OTg2LC0yMy43NzAzMDUgMi4wMDU4LDAgNDAuMzc5NDQsMjEuOTA4MTk1IDQyLjI2ODgxLDI0LjEzMjAwNSAxLjAyNzg2LDEuMjA5ODEgMS4xNTU3OCwyLjcxNDY4IDEuMTUyMjgsOS45NzEwOCBsIC0wLjAwNCw4Ljg5NjkyIGMgLTIuNDU5NDIsMS40Mzk5NCAtNS42MzMwNCwyLjY5MjU5IC03Ljk2NjE3LDQuMDM4NjQgLTAuMzcxOCwtMC4xNTMyNyAtMC4wNjg3LC0xLjAzODYzIC0wLjA1NDQsLTguODI2NTQgMC4wMjA2LC0xMS4yMTIxIDAuMDIwNiwtOS4yMTIxIC0xLjUxODY4LC0xMC4zMTg3NiAtMS41MjExNCwtMS4wOTM2NSAtMzIuNTE5MzMsLTE4LjU2MDAwOCAtMzMuODQ0MTYsLTE4LjU2MDAwOCAtMS4yNTIzNSwwIC0zMS4wNDUyOSwxNi45Njg1NjggLTMzLjExNjU5LDE4Ljg2MTU0OCAtMS40OTAxOCwxLjM2MTg5IC0xLjUsMS40OTg2NiAtMS41LDIwLjg4NzQgdiAxOS41MTY1MyBsIDIuMTY2NjcsMS42MDIyOSBjIDEuMTkxNjcsMC44ODEyNyA4LjQ4MzAzLDUuMjQ2NTQgMTYuMjAzMDMsOS43MDA2IDEwLjI1NTM0LDUuOTE2ODQgMTQuNjMzNjgsOC4wOTgzIDE2LjI1MzgxLDguMDk4MyAxLjYxNjk0LDAgNi4yMTA5MywtMi4yODA3NCAxNi45NjM2NCwtOC40MjE4IDguMTEwNCwtNC42MzE5OCAxNS4xODIwNCwtOS40ODY3MyAxNi4xNzAwNSwtMTAuMTg5NDUgMi4xNjY2NiwtMS41NDEwMyAyLjI0MjgsLTAuNzIyNDkgMi4yNDI4LC02LjIxODg5IHYgLTguMTY5ODYgYyAzLjM5NTIxLC0xLjg4NTk2IDYuMzcxNzgsLTMuMjg2OCA4LC00IDAsMiA3LjFlLTQsNS41ODU5OCAtMC4xMjA3OSwxMS43MDYxNSAtMC4yMDg5OCwxMC41MjY1NSAtMC4yNDA1LDEwLjcyNzI5IC0xLjg3OTIxLDExLjk2NjA3IC00LjAzMzQ2LDMuMDQ5MDggLTQwLjEwNzk0LDIzLjMyNjU0IC00MS40Nzg3NywyMy4zMTUyMSAtMC44MzY2NywtMC4wMDcgLTEwLjUxNDYsLTUuMjQyMzQgLTIxLjUwNjUsLTExLjYzNDI5IHogbSA2Ljk4NTI3LC0xMy4yNDU3NCAtMTMsLTcuNTI2NCAtMC4xODE3LC0xMi4xMjM4MyBjIC0wLjEyOTU3LC04LjY0NDk4IDAuMDMzNSwtMTIuMTIzODQgMC41Njg0MSwtMTIuMTIzODQgMC40MTI1NywwIDIuMjE5MDMsMC44MjUgNC4wMTQzNiwxLjgzMzMzIGwgMy4yNjQyNSwxLjgzMzM0IDYuNmUtNCw3LjM5NjY3IGMgMy40ZS00LDQuMzMwODQgMC4xMzU4NSw3LjQ3NDA5IDAuMzM0MDIsOC42MDMzMyA0LDIgNC4wMTIxMiwxLjk3OTEzIDkuMDUzODUsNC45MDE3MiAxMS4xODMwNiw2LjQ4MjYgOS42NTg0MSw2LjQ4MyAyMC45MjkyNCwtMC4wMDUgbCA5LjY2MzA1LC01LjU2MzA2IDAuMDEwMywtMTEuNTE3MTIgMC4wMTAzLC0xMS41MTcxMiAtMS44MzMzMywwLjk1NzQzIGMgLTEuMDA4MzQsMC41MjY1OSAtNS4yODMzNCwyLjkzMjY5IC05LjUsNS4zNDY4OSAtNC4yMTY2NywyLjQxNDIgLTguMTMyNDUsNC4zOTEwNiAtOC43MDE3NCw0LjM5MzAyIC0xLjEyNjk5LDAuMDA0IC0yMi44ODM1MiwtMTIuMTQ0MjIgLTI0LjgyMjk0LC0xMy44NjAyOCAtMC42NTUyNSwtMC41Nzk3OCAtMC44MDg3MywtMS4xMzY0OCAtMSwtMi4wMDI3NyAwLjI3ODA4LC0xLjM3ODY4IDIxLjE5MTI3LC0xMi4xMzM3MSAyNS43ODkyNSwtMTQuODAwMDUgMS40MDIwMiwwLjY2NjM0IDEyLjA2ODc2LDYuNTQyNDggMTIuMDY4NzYsNi41NDI0OCAtMi4zNzA1NywxLjcyOTcgLTQuNjY4MjcsMy4zNjg0MiAtNi42NjY3NCw1LjEyMzg2IC00LC0yIC0zLjQ4NzYzLC0xLjY5OTg0IC01LjQ2MTM1LC0yLjY0MTA0IC0zLjE3MjI4LDEuOTQzMTcgLTQuNTM4NjUsMi42NDEwNCAtOS44NzE5MSw2LjA0Nzg0IDIuMzMzMjYsMS41OTMyIDcuMzMzMjYsNC41OTMyIDkuOTUwNTcsNS41OTM1MyAyLjM4MjY5LC0xLjAwMDMzIDIuMzgyNjksLTEuMDAwMzMgMTAuNzgzNTYsLTUuMDg5OTYgOS45NzI5MiwtNC44NTQ5MiA4Ljg3NjYsLTUuNTIyNTcgMTQuNTc3MDYsLTEuOTI0MDIgbCAyLjcxMjA0LDEuNzEyMDMgLTAuMTc4MjgsMTYuMzg1NDEgLTAuNTExNjksMTUuOTE2MjEgLTEyLjY2NjU5LDguMDMxOTcgYyAtNi45ODU4LDQuNDI5NzUgLTEzLjMzMzQxLDYuOTY4MDMgLTE0LjY2NjY3LDcuNTgyNDYgLTEuNjY2NzQsLTAuNjE0NDMgLTcuMzQyMTEsLTMuMjY2MTIgLTE0LjY2NjY3LC03LjUwNjcgeiIgLz4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYwKSI+IDxwYXRoIGQ9Ik02IDEuNjI1QzMuMzc1IDEuNjI1IDMuMzc1IDUuMTI1IDMuMzc1IDUuMTI1TDAuNzUgOC4yNUgxMS4yNUw4LjYyNSA1LjEyNUM4LjYyNSA1LjEyNSA4LjYyNSAxLjYyNSA2IDEuNjI1WiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNNC4yNSA4LjYyNVY5LjVDNC4yNSA5Ljk2NDEzIDQuNDM0MzcgMTAuNDA5MiA0Ljc2MjU2IDEwLjczNzRDNS4wOTA3NSAxMS4wNjU2IDUuNTM1ODcgMTEuMjUgNiAxMS4yNUM2LjQ2NDEzIDExLjI1IDYuOTA5MjQgMTEuMDY1NiA3LjIzNzQzIDEwLjczNzRDNy41NjU2MiAxMC40MDkyIDcuNzUgOS45NjQxMyA3Ljc1IDkuNVY4LjYyNSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNNiAwLjc1VjEuNjI1IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPC9nPiA8ZGVmcz4gPGNsaXBQYXRoIGlkPSJjbGlwMF80MjZfMjM2MCI+IDxyZWN0IHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgZmlsbD0id2hpdGUiIC8+IDwvY2xpcFBhdGg+IDwvZGVmcz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibGlzdF9jaGVjayI+IDxwYXRoIGQ9Ik0xMiwyM0M1LjkzNSwyMywxLDE4LjA2NSwxLDEyUzUuOTM1LDEsMTIsMWMxLjgzNywwLDMuNjU3LDAuNDYzLDUuMjYzLDEuMzM5YzAuNDg0LDAuMjY1LDAuNjYzLDAuODcyLDAuMzk4LDEuMzU3IHMtMC44NzIsMC42NjQtMS4zNTcsMC4zOTlDMTQuOTkyLDMuMzc4LDEzLjUwNCwzLDEyLDNjLTQuOTYyLDAtOSw0LjAzOC05LDljMCw0Ljk2Myw0LjAzOCw5LDksOWM0Ljk2MywwLDktNC4wMzcsOS05IGMwLTAuNTMzLTAuMDUyLTEuMDcxLTAuMTU3LTEuNjQ0Yy0wLjEwMS0wLjU0MywwLjI1OS0xLjA2NSwwLjgwMi0xLjE2NWMwLjU1Mi0wLjA5OSwxLjA2NCwwLjI2LDEuMTY1LDAuODAyIEMyMi45MzgsMTAuNjg4LDIzLDExLjM0NCwyMywxMkMyMywxOC4wNjUsMTguMDY1LDIzLDEyLDIzeiBNMTEuNzA3LDE1LjcwN2w5LTljMC4zOTEtMC4zOTEsMC4zOTEtMS4wMjMsMC0xLjQxNCBzLTEuMDIzLTAuMzkxLTEuNDE0LDBMMTEsMTMuNTg2bC0zLjI5My0zLjI5M2MtMC4zOTEtMC4zOTEtMS4wMjMtMC4zOTEtMS40MTQsMHMtMC4zOTEsMS4wMjMsMCwxLjQxNGw0LDQgQzEwLjQ4OCwxNS45MDIsMTAuNzQ0LDE2LDExLDE2UzExLjUxMiwxNS45MDIsMTEuNzA3LDE1LjcwN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjY1ODMgNS41NzAyTDAuNzUgNi40Nzg1TDQuMjI3MzUgOS45NTU4NUwxMS4yNSAyLjkzMzJMMTAuMzQxNyAyLjAyNDlMNC4yMjczNSA4LjEzOTI1TDEuNjU4MyA1LjU3MDJaIiBmaWxsPSJ3aGl0ZSIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icGF1c2UiPiA8cGF0aCBkPSJNOSwyMkg2Yy0wLjU1LDAtMS0wLjQ1LTEtMVYzYzAtMC41NSwwLjQ1LTEsMS0xaDNjMC41NSwwLDEsMC40NSwxLDF2MThDMTAsMjEuNTUsOS41NSwyMiw5LDIyeiBNMTksMjFWMyBjMC0wLjU1LTAuNDUtMS0xLTFoLTNjLTAuNTUsMC0xLDAuNDUtMSwxdjE4YzAsMC41NSwwLjQ1LDEsMSwxaDNDMTguNTUsMjIsMTksMjEuNTUsMTksMjF6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icGxheSI+IDxwYXRoIGQ9Ik0yMS41NDksMTEuMjA4TDcuMzI4LDIuMTNDNy4wNTIsMS45NTUsNi43MTUsMS45NTcsNi40NDEsMi4xMzZDNi4xNjgsMi4zMTUsNiwyLjY0NCw2LDN2MTggYzAsMC4zNTQsMC4xNjcsMC42ODMsMC40MzksMC44NjJDNi41NzgsMjEuOTU0LDYuNzMzLDIyLDYuODg5LDIyYzAuMTQ5LDAsMC4yOTgtMC4wNDIsMC40MzMtMC4xMjdsMTQuMjIzLTguOTIyIGMwLjI4LTAuMTc2LDAuNDU1LTAuNTA5LDAuNDU2LTAuODdDMjIuMDAxLDExLjcyLDIxLjgyOSwxMS4zODYsMjEuNTQ5LDExLjIwOHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iYWRkIj4gPHBhdGggZD0iTTIxLDExaC04VjNjMC0wLjU1Mi0wLjQ0OC0xLTEtMXMtMSwwLjQ0OC0xLDF2OEgzYy0wLjU1MiwwLTEsMC40NDgtMSwxczAuNDQ4LDEsMSwxaDh2OGMwLDAuNTUzLDAuNDQ4LDEsMSwxczEtMC40NDcsMS0xIHYtOGg4YzAuNTUyLDAsMS0wLjQ0OCwxLTFTMjEuNTUyLDExLDIxLDExeiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02IDEwLjUwMDJDOC40ODUyOCAxMC41MDAyIDEwLjUgOC40ODU0NyAxMC41IDYuMDAwMTlIMTJDMTIgOS4zMTM4OSA5LjMxMzcxIDEyLjAwMDIgNiAxMi4wMDAyQzIuNjg2MjkgMTIuMDAwMiAwIDkuMzEzODkgMCA2LjAwMDE5QzAgMi42ODY0OCAyLjY4NjI5IDAuMDAwMTg1NTIyIDUuOTkzNjYgMC4wMDAyMTIzMzZDNy43NDc3NCAtMC4wMTQ2MjA3IDkuMzg1MiAwLjc0ODUgMTAuNSAyLjAzMTc4VjAuMDAwMTg1NTIySDEyVjQuNTAwMTlINy41VjMuMDAwMTlIOS4zNTQwN0M4LjUyMjU5IDIuMDUyMjQgNy4zMDYxMiAxLjQ4OTE2IDYgMS41MDAxOUMzLjUxNDcyIDEuNTAwMTkgMS41IDMuNTE0OSAxLjUgNi4wMDAxOUMxLjUgOC40ODU0NyAzLjUxNDcyIDEwLjUwMDIgNiAxMC41MDAyWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYyKSI+IDxwYXRoIGQ9Ik02Ljc1IDEuNUgxMC41VjUuMjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNNS4yNSAxLjVIMS41VjUuMjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNNS4yNSAxMC41SDEuNVY2Ljc1IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgLz4gPHBhdGggZD0iTTYuNzUgMTAuNUgxMC41VjYuNzUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMS41IDEuNUwxMC41IDEwLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMTAuNSAxLjVMMS41IDEwLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzYyIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibWluaW1pemVfeDQwX21pcnJvcmVkIj4gPHBhdGggZD0iTTQuMDI0LDE0LjM0N2MtMC4wNTcsMC4xNzktMC4wMSwwLjM3NCwwLjEyMywwLjUwNmwxLjc5MywxLjc5M2wtMy42NDgsMy42NDhjLTAuMzg5LDAuMzg5LTAuMzg5LDEuMDI1LDAsMS40MTQgYzAuMzg5LDAuMzg5LDEuMDI1LDAuMzg5LDEuNDE0LDBsMy42NDgtMy42NDhsMS43OTMsMS43OTNjMC4xMzIsMC4xMzIsMC4zMjgsMC4xOCwwLjUwNiwwLjEyM2MwLjE3OC0wLjA1NywwLjMxLTAuMjA5LDAuMzQtMC4zOTQgbDEtNmMwLjAyNS0wLjE1OC0wLjAyNS0wLjMyMS0wLjE0LTAuNDM2Yy0wLjExNC0wLjExNC0wLjI3Ny0wLjE2NS0wLjQzNi0wLjE0bC02LDFDNC4yMzMsMTQuMDM3LDQuMDgxLDE0LjE2OSw0LjAyNCwxNC4zNDd6IE0xNC4zNDcsNC4wMjRjMC4xNzktMC4wNTcsMC4zNzQtMC4wMSwwLjUwNiwwLjEyM2wxLjc5MywxLjc5M2wzLjY0OC0zLjY0OGMwLjM4OS0wLjM4OSwxLjAyNS0wLjM4OSwxLjQxNCwwIGMwLjM4OSwwLjM4OSwwLjM4OSwxLjAyNSwwLDEuNDE0TDE4LjA2LDcuMzU0bDEuNzkzLDEuNzkzYzAuMTMyLDAuMTMyLDAuMTgsMC4zMjgsMC4xMjMsMC41MDZjLTAuMDU3LDAuMTc4LTAuMjA5LDAuMzEtMC4zOTQsMC4zNCBsLTYsMWMtMC4xNTgsMC4wMjUtMC4zMjEtMC4wMjUtMC40MzYtMC4xNGMtMC4xMTQtMC4xMTQtMC4xNjUtMC4yNzctMC4xNC0wLjQzNmwxLTZDMTQuMDM3LDQuMjMzLDE0LjE2OSw0LjA4MSwxNC4zNDcsNC4wMjR6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjk2OTk0IDcuMDYwNUw1LjAzMDQ0IDZMNC4wNjA2OSA1LjAzMDI1SDcuMjE4OTRDOC42MjUxOSA1LjAzMDI1IDkuMDAwMTkgNi40NDQ3NSA5LjAwMDE5IDcuMjgwMjVDOS4wMDAxOSA3Ljg5NiA4LjgyNDY5IDguNDgzMjUgOC41MTcxOSA4Ljg5Mjc1QzguMjAwNjkgOS4zMTU3NSA3Ljc2MzQ0IDkuNTMwMjUgNy4yMTg5NCA5LjUzMDI1SDMuMDAwMTlWMTEuMDMwMkg3LjIxODk0QzguMjMyMTkgMTEuMDMwMiA5LjExODY5IDEwLjU5MDcgOS43MTcxOSA5Ljc5Mjc1QzEwLjIyMTkgOS4xMiAxMC41MDAyIDguMjI3NSAxMC41MDAyIDcuMjgwMjVDMTAuNTAwMiA1LjQxNjUgOS4zNzI5NCAzLjUzMDI1IDcuMjE4OTQgMy41MzAyNUg0LjA2MDY5TDUuMDMwNDQgMi41NjA1TDMuOTY5OTQgMS41TDEuNzE5OTQgMy43NUMxLjQyNjY5IDQuMDQzMjUgMS40MjY2OSA0LjUxNzI1IDEuNzE5OTQgNC44MTA1TDMuOTY5OTQgNy4wNjA1WiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMDgwIiBoZWlnaHQ9IjEwODAiIHZpZXdCb3g9IjAgMCAxMDgwIDEwODAiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZGVzYz5DcmVhdGVkIHdpdGggRmFicmljLmpzIDUuMi40PC9kZXNjPiA8ZGVmcz4gPC9kZWZzPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDU0MCA1NDApIiBpZD0iZGJkNzU1MWEtNWNhNy00YzVmLWFlOTgtNzE4OGI0YjNlZGViIiA+IDxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiIHg9Ii01NDAiIHk9Ii01NDAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjEwODAiIGhlaWdodD0iMTA4MCIgLz4gPC9nPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDU0MCA1NDApIiBpZD0iM2ZlNzcxZGYtYjJiYy00NzRhLWE1NDAtYThlYWM4NTI1NzFlIiA+IDwvZz4gPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAtOTAgOTAgMCA1NDAgNTQwKSIgPiA8cGF0aCBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtZGFzaG9mZnNldDogMDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDQ7IGZpbGw6IHJnYigyMDksMjEzLDIxOSk7IGZpbGwtcnVsZTogZXZlbm9kZDsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIHRyYW5zbGF0ZSgtNiwgLTYpIiBkPSJNIDAuNzUgMy44NTY2NiBMIDEuNzEzMzUgMi44OTMzMSBMIDYgNy4xNzk0MyBMIDEwLjI4NjcgMi44OTMzMSBMIDExLjI1IDMuODU2NjYgTCA2IDkuMTA2NjYgTCAwLjc1IDMuODU2NjYgWiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPiA8L2c+IDwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic2VhcmNoIj4gPHBhdGggZD0iTTIyLjcwNywyMS4yOTNsLTUuNjgyLTUuNjgyQzE4LjI1OCwxNC4wNzEsMTksMTIuMTIyLDE5LDEwYzAtNC45NjItNC4wMzctOS05LTljLTQuOTYyLDAtOSw0LjAzOC05LDljMCw0Ljk2Myw0LjAzOCw5LDksOSBjMi4xMjIsMCw0LjA3MS0wLjc0Miw1LjYxMS0xLjk3NWw1LjY4Miw1LjY4MkMyMS40ODgsMjIuOTAyLDIxLjc0NCwyMywyMiwyM3MwLjUxMi0wLjA5OCwwLjcwNy0wLjI5MyBDMjMuMDk4LDIyLjMxNiwyMy4wOTgsMjEuNjg0LDIyLjcwNywyMS4yOTN6IE0xMCwxN2MtMy44NiwwLTctMy4xNDEtNy03YzAtMy44NiwzLjE0LTcsNy03YzMuODU5LDAsNywzLjE0LDcsNyBDMTcsMTMuODU5LDEzLjg1OSwxNywxMCwxN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic3Rhcl9vbiI+IDxwYXRoIGQ9Ik0yMi4xNDMsOC4yNjdsLTEuNTY5LTAuMjI4djBsLTQuODItMC43bC0yLjAxOC00LjA4NGMwLDAsMCwwLDAsMGwtMC44MzktMS42OTljLTAuMzY3LTAuNzQzLTEuNDI2LTAuNzQzLTEuNzkzLDAgbC0wLjgzOSwxLjY5OWMwLDAsMCwwLDAsMEw4LjI0Niw3LjM0TDIuNjc4LDguMTQ4YzAsMCwwLDAsMCwwTDEuODU3LDguMjY3Yy0wLjgyLDAuMTE5LTEuMTQ4LDEuMTI3LTAuNTU0LDEuNzA2bDAuNTk0LDAuNTc5bDAsMCBsNC4wMjgsMy45MjNsLTEuMDIyLDUuOTUyYzAsMCwwLDAsMCwwbC0wLjA2OSwwLjQwMmMtMC4xNCwwLjgxNywwLjcxNywxLjQ0LDEuNDUsMS4wNTRsMC42NDUtMC4zMzhsMCwwTDEyLDE4Ljg4Mmw0LjU5LDIuNDFsMCwwIGwxLjEyNSwwLjU5YzAuNzM0LDAuMzg1LDEuNTkxLTAuMjM4LDEuNDUtMS4wNTVsLTAuMjM0LTEuMzY0bDAsMGwtMC44NTctNC45OTFsMy44MjctMy43MjdsMCwwbDAuNzk2LTAuNzc1IEMyMy4yOTEsOS4zOTQsMjIuOTYzLDguMzg2LDIyLjE0Myw4LjI2N3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic2VsZWN0X3RleHQiPiA8cGF0aCBkPSJNMSw5aDJ2MkgxVjl6IE0xLDdoMlY1SDFWN3ogTTUsMjNoMnYtMkg1VjIzeiBNMSwzaDJWMUgxVjN6IE0xLDIzaDJ2LTJIMVYyM3ogTTExLDFIOXYyaDJWMXogTTE1LDFoLTJ2MmgyVjF6IE03LDFINXYyaDIgVjF6IE05LDIzaDJ2LTJIOVYyM3ogTTEsMTloMnYtMkgxVjE5eiBNMSwxNWgydi0ySDFWMTV6IE0yMSwxMWgyVjloLTJWMTF6IE0xMywyM2gydi0yaC0yVjIzeiBNMjEsMTVoMnYtMmgtMlYxNXogTTIxLDdoMlY1aC0yVjd6IE0yMSwxdjJoMlYxSDIxeiBNMjEsMTloMnYtMmgtMlYxOXogTTIxLDIzaDJ2LTJoLTJWMjN6IE0xNywyM2gydi0yaC0yVjIzeiBNMTcsM2gyVjFoLTJWM3ogTTE3Ljg5NSw3LjMwMyBDMTcuOTY1LDcuMjE5LDE4LDcuMDkzLDE4LDYuOTE4VjUuNTA0YzAtMC4xODktMC4wMzUtMC4zMjItMC4xMDUtMC4zOTJDMTcuODE4LDUuMDM1LDE3LjY4NSw1LDE3LjQ5Niw1SDE1LjVoLTAuNzc1aC01LjQ1SDguNSBINi41MDRDNi4zMjksNSw2LjE5Niw1LjAzNSw2LjExOSw1LjExMkM2LjAzNSw1LjE4Miw2LDUuMzE1LDYsNS41MDR2MS40MTRjMCwwLjE3NSwwLjAzNSwwLjMwMSwwLjExOSwwLjM4NSBjMC4wNzcsMC4wODQsMC4yMSwwLjExOSwwLjM4NSwwLjExOUg4LjVoMC43NzVoMS4yMTN2MTEuMDc0YzAsMC4xNzUsMC4wMzUsMC4zMDEsMC4xMTksMC4zODVDMTAuNjg0LDE4Ljk1OCwxMC44MTcsMTksMTAuOTkyLDE5IGgyLjAxNmMwLjE4OSwwLDAuMzIyLTAuMDQyLDAuMzk5LTAuMTE5YzAuMDctMC4wODQsMC4xMDUtMC4yMSwwLjEwNS0wLjM4NVY3LjQyMmgxLjIxM0gxNS41aDEuOTk2IEMxNy42ODUsNy40MjIsMTcuODE4LDcuMzg3LDE3Ljg5NSw3LjMwM3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjUgMC43NUMxLjA4NTc5IDAuNzUgMC43NSAxLjA4NTc5IDAuNzUgMS41VjYuNzVDMC43NSA3LjE2NDIxIDEuMDg1NzkgNy41IDEuNSA3LjVIMy4zMjU1Mkw1LjA3OTUxIDEwLjQyMTFMNS4wODA4NyAxMC40MjM0QzUuMzg4MjkgMTAuOTMxMyA1Ljk0NTcyIDExLjI1IDYuNTQ3NSAxMS4yNUM3LjQ5NDIxIDExLjI1IDguMjU3NSAxMC40ODY3IDguMjU3NSA5LjU0VjguMjg3NUg5LjMzNzVDMTAuODAyIDguMjg3NSAxMS44Njg5IDYuOTEzMzYgMTEuNTIwOCA1LjQ5ODMyTDExLjUyMDIgNS40OTYwM0wxMC43NjMxIDIuNDYwMDNMMTAuNzYyOCAyLjQ1ODk2QzEwLjUxNSAxLjQ1ODU2IDkuNjE1OTEgMC43NSA4LjU4IDAuNzVIMy43NUgxLjVaTTIuMjUgNlYyLjI1SDNWNkgyLjI1Wk00LjUgNi41NDIxM0w2LjM2NDEzIDkuNjQ2NjVMNi4zNjQ1NSA5LjY0NzM1QzYuNDAyMjUgOS43MDkwNiA2LjQ3NDU1IDkuNzUgNi41NDc1IDkuNzVDNi42NjU3OSA5Ljc1IDYuNzU3NSA5LjY1ODI5IDYuNzU3NSA5LjU0VjcuNTM3NUM2Ljc1NzUgNy4xMjMyOSA3LjA5MzI5IDYuNzg3NSA3LjUwNzUgNi43ODc1SDkuMzM3NUM5LjgyMjY4IDYuNzg3NSAxMC4xODA2IDYuMzMyMjcgMTAuMDY0NSA1Ljg1NzY1TDEwLjA2NDIgNS44NTY2OUw5LjMwNzI5IDIuODIxNDhMOS4zMDY5MiAyLjgxOTk4QzkuMjI0MzQgMi40ODU5NCA4LjkyMzcyIDIuMjUgOC41OCAyLjI1SDQuNVY2LjU0MjEzWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02LjM2NDU1IDIuMzUyNjRMNi4zNjQxMiAyLjM1MzM1TDQuNSA1LjQ1Nzg3VjkuNzVIOC41OEM4LjkyMzcyIDkuNzUgOS4yMjQzNCA5LjUxNDA2IDkuMzA2OTEgOS4xODAwMkwxMC4wNjQyIDYuMTQzMzJMMTAuMDY0NCA2LjE0MjQ4QzEwLjE4MDcgNS42Njc4MSA5LjgyMjcxIDUuMjEyNSA5LjMzNzUgNS4yMTI1SDcuNTA3NUM3LjA5MzI5IDUuMjEyNSA2Ljc1NzUgNC44NzY3MSA2Ljc1NzUgNC40NjI1VjIuNDZDNi43NTc1IDIuMzQxNzEgNi42NjU3OSAyLjI1IDYuNTQ3NSAyLjI1QzYuNDc0NTUgMi4yNSA2LjQwMjI2IDIuMjkwOTQgNi4zNjQ1NSAyLjM1MjY0Wk0zIDkuNzVWNkgyLjI1VjkuNzVIM1pNMy4zMjU1MiA0LjVMNS4wNzk1MSAxLjU3ODkxTDUuMDgwODcgMS41NzY2NEM1LjM4ODI5IDEuMDY4NzQgNS45NDU3MyAwLjc1IDYuNTQ3NSAwLjc1QzcuNDk0MjIgMC43NSA4LjI1NzUgMS41MTMyOSA4LjI1NzUgMi40NlYzLjcxMjVIOS4zMzc1QzEwLjgwMiAzLjcxMjUgMTEuODY4OSA1LjA4NjY2IDExLjUyMDggNi41MDE2OUwxMS41MjAyIDYuNTAzOTlMMTAuNzYzMSA5LjUzOTk3TDEwLjc2MjkgOS41NDA3NkMxMC41MTUyIDEwLjU0MTMgOS42MTYwMSAxMS4yNSA4LjU4IDExLjI1SDEuNUMxLjA4NTc5IDExLjI1IDAuNzUgMTAuOTE0MiAwLjc1IDEwLjVWNS4yNUMwLjc1IDQuODM1NzkgMS4wODU3OSA0LjUgMS41IDQuNUgzLjMyNTUyWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FyZXRfdXAiPiA8cGF0aCBkPSJNMTcsMTVjLTAuMjU2LDAtMC41MTItMC4wOTgtMC43MDctMC4yOTNMMTIsMTAuNDE0bC00LjI5Myw0LjI5M2MtMC4zOTEsMC4zOTEtMS4wMjMsMC4zOTEtMS40MTQsMHMtMC4zOTEtMS4wMjMsMC0xLjQxNCBsNS01YzAuMzkxLTAuMzkxLDEuMDIzLTAuMzkxLDEuNDE0LDBsNSw1YzAuMzkxLDAuMzkxLDAuMzkxLDEuMDIzLDAsMS40MTRDMTcuNTEyLDE0LjkwMiwxNy4yNTYsMTUsMTcsMTV6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icHJvZmlsZSI+IDxwYXRoIGQ9Ik03LDZjMC0yLjc2MSwyLjIzOS01LDUtNXM1LDIuMjM5LDUsNXMtMi4yMzksNS01LDVTNyw4Ljc2MSw3LDZ6IE0yMS45NDgsMTguNjg0QzIwLjg2OCwxNS40NDMsMTcuMDE1LDEyLDEyLDEyIHMtOC44NjksMy40NDMtOS45NDksNi42ODRjLTAuMTIsMC4zNTktMC4wMjYsMC43NTYsMC4yNDIsMS4wMjNDNC40MTcsMjEuODMsNy44NjQsMjMsMTIsMjNjNC4xMzcsMCw3LjU4NC0xLjE3LDkuNzA3LTMuMjkzIEMyMS45NzUsMTkuNDM5LDIyLjA2OCwxOS4wNDMsMjEuOTQ4LDE4LjY4NHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0id2FybmluZyI+IDxwYXRoIGQ9Ik0yMS44NTcsMTguNDgybC05LTE1LjAzYy0wLjM2MS0wLjYwNC0xLjM1NC0wLjYwNC0xLjcxNSwwbC05LDE1LjAzYy0wLjE4NiwwLjMwOS0wLjE5LDAuNjk1LTAuMDEzLDEuMDEgQzIuMzA3LDE5LjgwNiwyLjY0LDIwLDMsMjBoMThjMC4zNiwwLDAuNjkyLTAuMTk0LDAuODctMC41MDhDMjIuMDQ4LDE5LjE3NywyMi4wNDMsMTguNzkyLDIxLjg1NywxOC40ODJ6IE0xMiwxOCBjLTAuNTUyLDAtMS0wLjQ0OC0xLTFjMC0wLjU1MiwwLjQ0OC0xLDEtMXMxLDAuNDQ4LDEsMUMxMywxNy41NTIsMTIuNTUyLDE4LDEyLDE4eiBNMTMsMTRjMCwwLjU1My0wLjQ0OCwxLTEsMXMtMS0wLjQ0Ny0xLTFWOCBjMC0wLjU1MiwwLjQ0OC0xLDEtMXMxLDAuNDQ4LDEsMVYxNHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nexport interface ButtonProps {\n classNames?: string[];\n attributes?: Record<string, string>;\n icon?: HTMLElement | ExtendedHTMLElement | string;\n label?: HTMLElement | ExtendedHTMLElement | string;\n children?: Array<HTMLElement | ExtendedHTMLElement | string>;\n primary?: boolean;\n additionalEvents?: Record<string, (event?: any) => any>;\n onClick: (e: Event) => void;\n}\nexport class Button {\n render: ExtendedHTMLElement;\n constructor (props: ButtonProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'button',\n classNames: [\n 'mynah-button',\n ...(props.primary === false ? [ 'mynah-button-secondary' ] : []),\n ...(props.classNames !== undefined ? props.classNames : []),\n ],\n attributes: { ...props.attributes },\n events: {\n ...props.additionalEvents,\n click: props.onClick,\n },\n children: [\n ...(props.icon !== undefined ? [ props.icon ] : []),\n ...(props.label !== undefined ? [ { type: 'span', classNames: [ 'mynah-button-label' ], children: [ props.label ] } ] : []),\n ...(props.children ?? []),\n ],\n });\n }\n\n updateLabel = (label: HTMLElement | ExtendedHTMLElement | string): void => {\n (this.render.querySelector('.mynah-button-label') as ExtendedHTMLElement).replaceWith(\n DomBuilder.getInstance().build({ type: 'span', classNames: [ 'mynah-button-label' ], children: [ label ] })\n );\n };\n\n setEnabled = (enabled: boolean): void => {\n if (enabled) {\n this.render.removeAttribute('disabled');\n } else {\n this.render.setAttribute('disabled', 'disabled');\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n OnCopiedToClipboardFunction,\n OnInsertToCursorPositionFunction,\n ReferenceTrackerInformation,\n} from '../../static';\nimport { marked } from 'marked';\nimport unescapeHTML from 'unescape-html';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { SyntaxHighlighter } from '../syntax-highlighter';\nimport { generateUID } from '../../helper/guid';\n\nconst PREVIEW_DELAY = 500;\nexport const highlightersWithTooltip = {\n start: {\n markupStart: '<mark ',\n markupAttributes: (markerIndex: string) => `marker-index=${markerIndex}`,\n markupEnd: ' reference-tracker>'\n },\n end: {\n markup: '</mark>',\n },\n};\n\nexport interface CardBodyProps {\n body: string;\n children?: Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject>;\n highlightRangeWithTooltip?: ReferenceTrackerInformation[];\n onLinkClick?: (url: string, e: MouseEvent) => void;\n onCopiedToClipboard?: OnCopiedToClipboardFunction;\n onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n}\nexport class CardBody {\n render: ExtendedHTMLElement;\n props: CardBodyProps;\n private highlightRangeTooltip: Overlay | null;\n private highlightRangeTooltipTimeout: ReturnType<typeof setTimeout>;\n constructor (props: CardBodyProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-body' ],\n children: [\n ...this.getContentBodyChildren(this.props),\n ...(this.props.children ?? [])\n ],\n });\n\n Array.from(this.render.querySelectorAll('mark[reference-tracker]')).forEach((highlightRangeElement) => {\n highlightRangeElement.addEventListener('mouseenter', (e) => {\n const index = parseInt((e.target as HTMLElement).getAttribute('marker-index') ?? '0');\n if (props.highlightRangeWithTooltip?.[index] !== undefined) {\n this.showHighlightRangeTooltip(e as MouseEvent, props.highlightRangeWithTooltip[index].information);\n }\n });\n highlightRangeElement.addEventListener('mouseleave', this.hideHighlightRangeTooltip);\n });\n }\n\n private readonly processNode = (node: HTMLElement, contentString: string, matchingLanguage?: string): HTMLElement => {\n const elementFromNode: HTMLElement = node;\n if (elementFromNode.tagName?.toLowerCase() === 'a') {\n const url = elementFromNode.getAttribute('href') ?? '';\n return DomBuilder.getInstance().build(\n {\n type: 'a',\n events: {\n click: (e: MouseEvent) => {\n if (this.props.onLinkClick !== undefined) {\n this.props.onLinkClick(url, e);\n }\n },\n },\n attributes: { href: elementFromNode.getAttribute('href') ?? '', target: '_blank' },\n innerHTML: elementFromNode.innerHTML,\n });\n }\n if ((elementFromNode.tagName?.toLowerCase() === 'pre' && elementFromNode.querySelector('code') !== null) ||\n elementFromNode.tagName?.toLowerCase() === 'code'\n ) {\n const isBlockCode = elementFromNode.tagName?.toLowerCase() === 'pre' || elementFromNode.innerHTML.match(/\\r|\\n/) !== null;\n const codeElement = (elementFromNode.tagName?.toLowerCase() === 'pre' ? elementFromNode.querySelector('code') : elementFromNode);\n const snippetLanguage = Array.from(codeElement?.classList ?? []).find(className => className.match('language-'))?.replace('language-', '');\n const codeString = codeElement?.innerHTML ?? '';\n\n const highlighter = new SyntaxHighlighter({\n codeStringWithMarkup: unescapeHTML(codeString),\n language: snippetLanguage?.trim() !== '' ? snippetLanguage : matchingLanguage,\n keepHighlights: true,\n showCopyOptions: isBlockCode,\n block: isBlockCode,\n onCopiedToClipboard: (type, text) => {\n if (this.props.onCopiedToClipboard != null) {\n this.props.onCopiedToClipboard(type, text, this.getReferenceTrackerInformationFromElement(highlighter));\n }\n },\n onInsertToCursorPosition: (type, text) => {\n if (this.props.onInsertToCursorPosition != null) {\n this.props.onInsertToCursorPosition(type, text, this.getReferenceTrackerInformationFromElement(highlighter));\n }\n }\n }).render;\n return highlighter;\n }\n\n elementFromNode.childNodes.forEach((child) => {\n elementFromNode.replaceChild(this.processNode(child as HTMLElement, contentString), child);\n });\n return elementFromNode;\n };\n\n private readonly getReferenceTrackerInformationFromElement = (element: ExtendedHTMLElement | HTMLElement): ReferenceTrackerInformation[] => {\n // cloning the element\n // since we're gonna inject some unique items\n // to get the start indexes\n const codeElement = element.querySelector('code')?.cloneNode(true) as HTMLElement;\n\n if (codeElement !== undefined) {\n const markerElements = codeElement.querySelectorAll('mark[reference-tracker]');\n if (markerElements.length > 0) {\n return (Array.from(markerElements) as HTMLElement[]).map((mark: HTMLElement, index: number) => {\n // Generating a unique identifier element\n // to get the start index of it inside the code block\n const startIndexText = `__MARK${index}_${generateUID()}_START__`;\n const startIndexTextElement = DomBuilder.getInstance().build({\n type: 'span',\n innerHTML: startIndexText\n });\n // Injecting that unique identifier for the start index inside the current mark element\n mark.insertAdjacentElement('afterbegin', startIndexTextElement);\n // finding that text inside the code element's inner text\n // to get the startIndex\n const startIndex = codeElement.innerText.indexOf(startIndexText);\n\n // when we get the start index, we need to remove the element\n // to get the next one's start index properly\n // we don't need to calculate the end index because it will be available\n startIndexTextElement.remove();\n\n // find the original reference tracker information\n const originalRefTrackerInfo = this.props.highlightRangeWithTooltip?.[parseInt(mark.getAttribute('marker-index') ?? '0')];\n return {\n ...originalRefTrackerInfo,\n recommendationContentSpan: {\n start: startIndex,\n end: startIndex + (\n (originalRefTrackerInfo?.recommendationContentSpan.end ?? 0) -\n (originalRefTrackerInfo?.recommendationContentSpan.start ?? 0))\n }\n };\n }) as ReferenceTrackerInformation[];\n }\n }\n\n return [];\n };\n\n private readonly showHighlightRangeTooltip = (e: MouseEvent, tooltipText: string): void => {\n clearTimeout(this.highlightRangeTooltipTimeout);\n this.highlightRangeTooltipTimeout = setTimeout(() => {\n this.highlightRangeTooltip = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: (e.currentTarget ?? e.target) as HTMLElement,\n removeOtherOverlays: true,\n dimOutside: false,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-ui-syntax-highlighter-highlight-tooltip' ],\n children: [\n new CardBody({\n body: tooltipText,\n }).render\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n };\n\n private readonly hideHighlightRangeTooltip = (): void => {\n clearTimeout(this.highlightRangeTooltipTimeout);\n if (this.highlightRangeTooltip !== null) {\n this.highlightRangeTooltip?.close();\n this.highlightRangeTooltip = null;\n }\n };\n\n private readonly getContentBodyChildren = (props: CardBodyProps): Array<HTMLElement | ExtendedHTMLElement | DomBuilderObject> => {\n let incomingBody = props.body;\n if (props.body !== undefined && props.highlightRangeWithTooltip !== undefined && props.highlightRangeWithTooltip.length > 0) {\n props.highlightRangeWithTooltip.forEach((highlightRangeWithTooltip, index) => {\n if (incomingBody !== undefined) {\n const generatedStartMarkup = `${highlightersWithTooltip.start.markupStart}${highlightersWithTooltip.start.markupAttributes(index.toString())}${highlightersWithTooltip.start.markupEnd}`;\n let calculatedStartIndex = (highlightRangeWithTooltip.recommendationContentSpan.start + (index * (generatedStartMarkup.length + highlightersWithTooltip.end.markup.length)));\n let calculatedEndIndex = (calculatedStartIndex + generatedStartMarkup.length - highlightRangeWithTooltip.recommendationContentSpan.start) + highlightRangeWithTooltip.recommendationContentSpan.end;\n if (calculatedEndIndex > incomingBody.length) {\n calculatedStartIndex = incomingBody.length - 1;\n }\n if (calculatedEndIndex > incomingBody.length) {\n calculatedEndIndex = incomingBody.length - 1;\n }\n incomingBody = incomingBody.slice(0, calculatedStartIndex) + generatedStartMarkup + incomingBody.slice(calculatedStartIndex);\n incomingBody = incomingBody.slice(0, calculatedEndIndex) + highlightersWithTooltip.end.markup + incomingBody.slice(calculatedEndIndex);\n }\n });\n }\n\n return [\n ...(Array.from(\n DomBuilder.getInstance().build({\n type: 'div',\n innerHTML: `${marked((incomingBody), { breaks: true })}`,\n }).childNodes\n ).map(node => {\n const processedNode = this.processNode(node as HTMLElement, props.body);\n if (processedNode.querySelectorAll !== undefined) {\n Array.from(processedNode.querySelectorAll('*:empty')).forEach(emptyElement => { emptyElement.remove(); });\n }\n return processedNode;\n }))\n ];\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { EngagementType } from '../../static';\n\n/**\n * We'll not consider it as an engagement if the total spend time is lower than below constant and won't trigger the event\n */\nconst ENGAGEMENT_DURATION_LIMIT = 3000;\n\n/**\n * This 6(px) and 300(ms) are coming from a behavioral research and browser reaction to input devices to count the action as a mouse movement or a click event\n */\nconst ENGAGEMENT_MIN_SELECTION_DISTANCE = 6;\nconst ENGAGEMENT_MIN_CLICK_DURATION = 300;\nexport interface CardProps extends Partial<DomBuilderObject> {\n border?: boolean;\n background?: boolean;\n padding?: 'small' | 'medium' | 'large' | 'none';\n children?: Array<HTMLElement | ExtendedHTMLElement | string>;\n onCardEngaged?: (engagement: {\n engagementDurationTillTrigger: number;\n engagementType: EngagementType;\n totalMouseDistanceTraveled: {\n x: number;\n y: number;\n };\n selectionDistanceTraveled?: { x: number; y: number; selectedText?: string | undefined };\n }) => void;\n}\nexport class Card {\n private readonly props: CardProps;\n private engagementStartTime: number = -1;\n private totalMouseDistanceTraveled: { x: number; y: number } = { x: 0, y: 0 };\n private previousMousePosition!: { x: number; y: number };\n private mouseDownInfo!: { x: number; y: number; time: number };\n render: ExtendedHTMLElement;\n constructor (props: CardProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [\n 'mynah-card',\n `padding-${props.padding ?? 'large'}`,\n props.border !== false ? 'border' : '',\n props.background !== false ? 'background' : '',\n ...(props.classNames ?? [])\n ],\n persistent: props.persistent,\n innerHTML: props.innerHTML,\n children: [\n ...(props.children ?? []),\n ],\n events: {\n ...props.events,\n ...(props.onCardEngaged !== undefined\n ? {\n mouseenter: e => {\n if (this.engagementStartTime === -1) {\n this.engagementStartTime = new Date().getTime();\n this.previousMousePosition = { x: e.clientX, y: e.clientY };\n this.totalMouseDistanceTraveled = { x: 0, y: 0 };\n }\n },\n mousemove: e => {\n if (this.engagementStartTime === -1) {\n this.engagementStartTime = new Date().getTime();\n }\n this.totalMouseDistanceTraveled = {\n x:\n this.totalMouseDistanceTraveled.x +\n Math.abs(e.clientX - this.previousMousePosition.x),\n y:\n this.totalMouseDistanceTraveled.y +\n Math.abs(e.clientY - this.previousMousePosition.y),\n };\n this.previousMousePosition = { x: e.clientX, y: e.clientY };\n },\n mousedown: e => {\n this.mouseDownInfo = { x: e.clientX, y: e.clientY, time: new Date().getTime() };\n },\n mouseup: e => {\n const mouseUpInfo = { x: e.clientX, y: e.clientY, time: new Date().getTime() };\n if (\n this.mouseDownInfo !== undefined && // in case of down is prevented by default by some listener\n (Math.abs(this.mouseDownInfo.x - mouseUpInfo.x) > ENGAGEMENT_MIN_SELECTION_DISTANCE ||\n Math.abs(this.mouseDownInfo.y - mouseUpInfo.y) >\n ENGAGEMENT_MIN_SELECTION_DISTANCE) &&\n mouseUpInfo.time - this.mouseDownInfo.time > ENGAGEMENT_MIN_CLICK_DURATION\n ) {\n this.handleEngagement({\n x: Math.abs(this.mouseDownInfo.x - mouseUpInfo.x),\n y: Math.abs(this.mouseDownInfo.y - mouseUpInfo.y),\n selectedText: window?.getSelection()?.toString(),\n });\n }\n },\n mouseleave: () => {\n const engagementEndTime = new Date().getTime();\n if (this.engagementStartTime !== -1 && engagementEndTime - this.engagementStartTime > ENGAGEMENT_DURATION_LIMIT) {\n this.handleEngagement();\n } else {\n this.resetEngagement();\n }\n },\n }\n : {})\n },\n attributes: props.attributes\n });\n }\n\n private readonly resetEngagement = (): void => {\n this.engagementStartTime = -1;\n this.totalMouseDistanceTraveled = { x: 0, y: 0 };\n this.previousMousePosition = { x: 0, y: 0 };\n this.mouseDownInfo = { x: 0, y: 0, time: -1 };\n };\n\n private readonly handleEngagement = (interactionDistanceTraveled?: {\n x: number;\n y: number;\n selectedText?: string;\n }): void => {\n if (this.props.onCardEngaged !== undefined) {\n this.props.onCardEngaged({\n engagementDurationTillTrigger: new Date().getTime() - this.engagementStartTime,\n engagementType:\n interactionDistanceTraveled !== undefined ? EngagementType.INTERACTION : EngagementType.TIME,\n totalMouseDistanceTraveled: this.totalMouseDistanceTraveled,\n selectionDistanceTraveled:\n Boolean(interactionDistanceTraveled?.x ?? 0) && Boolean(interactionDistanceTraveled?.y)\n ? interactionDistanceTraveled\n : undefined,\n });\n }\n this.resetEngagement();\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport { ChatItem, ChatItemType, MynahEventNames } from '../../static';\nimport { Card } from '../card/card';\nimport { CardBody } from '../card/card-body';\nimport { Icon, MynahIcons } from '../icon';\nimport { ChatItemFollowUpContainer } from './chat-item-followup';\nimport { ChatItemSourceLinksContainer } from './chat-item-source-links';\nimport { ChatItemRelevanceVote } from './chat-item-relevance-vote';\nimport { ChatItemTreeViewWrapper } from './chat-item-tree-view-wrapper';\n\nconst MAX_HEIGHT_TRESHOLD = 100;\nexport interface ChatItemCardProps {\n tabId: string;\n chatItem: ChatItem;\n}\nexport class ChatItemCard {\n readonly props: ChatItemCardProps;\n render: ExtendedHTMLElement;\n contentBody: CardBody;\n chatAvatar: ExtendedHTMLElement;\n private updateTimer: ReturnType<typeof setTimeout>;\n constructor (props: ChatItemCardProps) {\n this.props = props;\n this.chatAvatar = this.getChatAvatar();\n MynahUITabsStore.getInstance()\n .getTabDataStore(this.props.tabId)\n .subscribe('showChatAvatars', (value: boolean) => {\n if (value) {\n this.chatAvatar = this.getChatAvatar();\n this.render.insertChild('afterbegin', this.chatAvatar);\n } else {\n this.chatAvatar.remove();\n }\n });\n this.render = this.generateCard();\n }\n\n private readonly generateCard = (): ExtendedHTMLElement => {\n const generatedCard = DomBuilder.getInstance().build({\n type: 'div',\n classNames: this.getCardClasses(),\n attributes: {\n messageId: this.props.chatItem.messageId ?? 'unknown',\n },\n children: [\n ...this.getCardContent(),\n DomBuilder.getInstance().build({\n type: 'span',\n persistent: true,\n classNames: [ 'mynah-chat-item-spacer' ],\n }),\n ...(this.props.chatItem.type === ChatItemType.ANSWER_STREAM\n ? [\n DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-chat-items-spinner' ],\n children: [ { type: 'span' }, { type: 'span' }, { type: 'span' } ],\n }),\n ]\n : []),\n ],\n });\n\n setTimeout(() => {\n generatedCard.addClass('reveal');\n }, 50);\n\n return generatedCard;\n };\n\n private readonly getCardClasses = (): string[] => {\n const emptyCheckDom = DomBuilder.getInstance().build({\n type: 'span',\n innerHTML: typeof this.props.chatItem.body === 'string' ? this.props.chatItem.body : '',\n });\n const isChatItemEmpty = emptyCheckDom.innerText.trim() === '';\n const isNoContent =\n isChatItemEmpty &&\n this.props.chatItem.followUp === undefined &&\n this.props.chatItem.relatedContent === undefined &&\n this.props.chatItem.type === ChatItemType.ANSWER;\n return [\n 'mynah-chat-item-card',\n `mynah-chat-item-${this.props.chatItem.type ?? ChatItemType.ANSWER}`,\n ...(isChatItemEmpty ? [ 'mynah-chat-item-empty' ] : []),\n ...(isNoContent ? [ 'mynah-chat-item-no-content' ] : []),\n ];\n };\n\n private readonly getCardContent = (): Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject> => {\n return [\n ...(MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('showChatAvatars') === true ? [ this.chatAvatar ] : []),\n ...(this.props.chatItem.body !== undefined || this.props.chatItem.fileList !== undefined\n ? [\n new Card({\n onCardEngaged: engagement => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_ITEM_ENGAGEMENT, {\n engagement,\n messageId: this.props.chatItem.messageId,\n });\n },\n children: [\n ((): ExtendedHTMLElement => {\n const commonBodyProps = {\n body: this.props.chatItem.body ?? '',\n onLinkClick: (url: string, e: MouseEvent) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.LINK_CLICK, {\n messageId: this.props.chatItem.messageId,\n link: url,\n event: e,\n });\n }\n };\n if (this.props.chatItem.type === ChatItemType.CODE_RESULT && this.props.chatItem.fileList !== undefined) {\n const { filePaths = [], deletedFiles = [] } = this.props.chatItem.fileList;\n const referenceSuggestionLabel = this.props.chatItem.body ?? '';\n this.contentBody = new CardBody({\n ...commonBodyProps,\n ...{\n body: '' // Reset the body, since the tree view has the fully rendered element\n },\n children: [\n new ChatItemTreeViewWrapper({\n tabId: this.props.tabId,\n messageId: this.props.chatItem.messageId ?? '',\n files: filePaths,\n deletedFiles,\n references: this.props.chatItem.codeReference ?? [],\n referenceSuggestionLabel\n }).render\n ],\n });\n } else {\n this.contentBody = new CardBody({\n ...commonBodyProps,\n highlightRangeWithTooltip: this.props.chatItem.codeReference,\n children:\n this.props.chatItem.relatedContent !== undefined\n ? [\n new ChatItemSourceLinksContainer({\n messageId: this.props.chatItem.messageId ?? 'unknown',\n tabId: this.props.tabId,\n relatedContent: this.props.chatItem.relatedContent?.content,\n title: this.props.chatItem.relatedContent?.title,\n }).render,\n ]\n : [],\n onCopiedToClipboard: (type, text, referenceTrackerInformation) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.COPY_CODE_TO_CLIPBOARD, {\n messageId: this.props.chatItem.messageId,\n type,\n text,\n referenceTrackerInformation,\n });\n },\n onInsertToCursorPosition: (type, text, referenceTrackerInformation) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.INSERT_CODE_TO_CURSOR_POSITION, {\n messageId: this.props.chatItem.messageId,\n type,\n text,\n referenceTrackerInformation,\n });\n },\n });\n }\n return this.contentBody.render;\n })(),\n ...(this.props.chatItem.canBeVoted === true && this.props.chatItem.messageId !== undefined\n ? [ new ChatItemRelevanceVote({ tabId: this.props.tabId, messageId: this.props.chatItem.messageId }).render ]\n : []),\n ],\n }).render,\n ]\n : ''),\n this.props.chatItem.followUp?.text !== undefined ? new ChatItemFollowUpContainer({ tabId: this.props.tabId, chatItem: this.props.chatItem }).render : '',\n ];\n };\n\n private readonly getChatAvatar = (): ExtendedHTMLElement =>\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-icon-wrapper' ],\n children: [ new Icon({ icon: this.props.chatItem.type === ChatItemType.PROMPT ? MynahIcons.USER : MynahIcons.MYNAH }).render ],\n });\n\n public readonly updateCard = (updateWith: Partial<ChatItem>): void => {\n this.props.chatItem = {\n ...this.props.chatItem,\n ...updateWith,\n };\n if (this.updateTimer !== undefined) {\n clearTimeout(this.updateTimer);\n }\n this.render.style.maxHeight = `${this.render.getBoundingClientRect().height + MAX_HEIGHT_TRESHOLD}px`;\n this.render.update({\n classNames: [ ...this.getCardClasses(), 'reveal' ],\n children: this.getCardContent(),\n });\n setTimeout(() => {\n this.render.style.maxHeight = `${\n (this.render.querySelector('.mynah-card-body') as HTMLElement).scrollHeight + MAX_HEIGHT_TRESHOLD\n }px`;\n this.updateTimer = setTimeout(() => {\n this.render.style.maxHeight = 'initial';\n }, 1000);\n }, 10);\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { marked } from 'marked';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { ChatItem, MynahEventNames } from '../../static';\nimport { Icon } from '../icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\n\nconst PREVIEW_DELAY = 250;\nconst MAX_LENGTH = 40;\nexport interface ChatItemFollowUpProps {tabId: string; chatItem: ChatItem}\nexport class ChatItemFollowUpContainer {\n private readonly props: ChatItemFollowUpProps;\n render: ExtendedHTMLElement;\n private followupTooltip: Overlay | null;\n private followupTooltipTimeout: ReturnType<typeof setTimeout>;\n constructor (props: ChatItemFollowUpProps) {\n this.props = props;\n this.props.chatItem = props.chatItem;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question', 'mynah-chat-item-temporary-element' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question-text' ],\n children: [ this.props.chatItem.followUp?.text ?? '' ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question-options-wrapper' ],\n children: this.props.chatItem.followUp?.options?.map(followUpOption => (\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question-option', `mynah-chat-item-followup-question-option-status-${followUpOption.status ?? 'default'}` ],\n children: [\n ...(followUpOption.icon !== undefined\n ? [\n new Icon({ icon: followUpOption.icon }).render\n ]\n : []),\n followUpOption.pillText.length > MAX_LENGTH ? `${followUpOption.pillText.substring(0, MAX_LENGTH - 3)}...` : followUpOption.pillText\n ],\n events: {\n click: (e) => {\n this.hideCroppedFollowupText();\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.FOLLOW_UP_CLICKED, { tabId: this.props.tabId, messageId: this.props.chatItem.messageId, followUpOption });\n if ((this.render.parentElement as ExtendedHTMLElement)?.hasClass('mynah-chat-item-empty')) {\n this.render.parentElement?.remove();\n };\n },\n ...(followUpOption.pillText.length > MAX_LENGTH\n ? {\n mouseover: (e) => {\n this.showCroppedFollowupText(e, followUpOption.pillText);\n },\n mouseleave: this.hideCroppedFollowupText\n }\n : {})\n }\n }\n )) as DomBuilderObject[]\n },\n ]\n });\n\n Array.from(this.render.getElementsByClassName('mynah-chat-item-followup-question-option')).forEach(option => {\n option.innerHTML = marked(option.innerHTML, { breaks: true }).replace('<p>', '').replace('</p>', '');\n });\n Array.from(this.render.getElementsByTagName('a')).forEach(a => {\n const url = a.href;\n\n a.onclick = (event?: MouseEvent) => {\n MynahUIGlobalEvents\n .getInstance()\n .dispatch(MynahEventNames.LINK_CLICK, {\n tabId: this.props.tabId,\n messageId: this.props.chatItem.messageId,\n link: url,\n event,\n });\n };\n });\n }\n\n private readonly showCroppedFollowupText = (e: MouseEvent, content: string): void => {\n if (content.trim() !== undefined) {\n clearTimeout(this.followupTooltipTimeout);\n this.followupTooltipTimeout = setTimeout(() => {\n const elm: HTMLElement = e.target as HTMLElement;\n this.followupTooltip = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-content' ],\n innerHTML: marked(content, { breaks: true }).replace('<p>', '').replace('</p>', '')\n }\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n }\n };\n\n private readonly hideCroppedFollowupText = (): void => {\n clearTimeout(this.followupTooltipTimeout);\n if (this.followupTooltip !== null) {\n this.followupTooltip?.close();\n this.followupTooltip = null;\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FeedbackPayload, MynahEventNames, RelevancyVoteType } from '../../static';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { Icon, MynahIcons } from '../icon';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { Button } from '../button';\nimport { Config } from '../../helper/config';\n\nconst THANKS_REMOVAL_DURATION = 3500;\nexport interface ChatItemRelevanceVoteProps {\n tabId: string;\n messageId: string;\n}\nexport class ChatItemRelevanceVote {\n private readonly votingId: string;\n private sendFeedbackListenerId: string | undefined;\n render: ExtendedHTMLElement;\n props: ChatItemRelevanceVoteProps;\n constructor (props: ChatItemRelevanceVoteProps) {\n this.props = props;\n this.votingId = `${this.props.tabId}-${this.props.messageId}`;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-votes-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-card-vote' ],\n children: [\n {\n type: 'input',\n events: {\n change: (e: Event) => {\n this.handleVoteChange(RelevancyVoteType.UP);\n },\n },\n attributes: {\n type: 'radio',\n id: `${this.votingId}-vote-up`,\n name: `${this.votingId}-vote`,\n value: 'up',\n },\n classNames: [ 'mynah-vote-radio', 'mynah-vote-up-radio' ],\n },\n {\n type: 'input',\n events: {\n change: (e: Event) => {\n this.handleVoteChange(RelevancyVoteType.DOWN);\n },\n },\n attributes: {\n type: 'radio',\n id: `${this.votingId}-vote-down`,\n name: `${this.votingId}-vote`,\n value: 'down',\n },\n classNames: [ 'mynah-vote-radio', 'mynah-vote-down-radio' ],\n },\n {\n type: 'label',\n attributes: { for: `${this.votingId}-vote-up` },\n classNames: [ 'mynah-vote-label', 'mynah-vote-up' ],\n children: [ new Icon({ icon: MynahIcons.THUMBS_UP }).render ],\n },\n {\n type: 'label',\n attributes: { for: `${this.votingId}-vote-down` },\n classNames: [ 'mynah-vote-label', 'mynah-vote-down' ],\n children: [ new Icon({ icon: MynahIcons.THUMBS_DOWN }).render ],\n },\n ],\n },\n ],\n });\n }\n\n private readonly handleVoteChange = (vote: RelevancyVoteType): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CARD_VOTE, { messageId: this.props.messageId, tabId: this.props.tabId, vote });\n const newChildren = [\n Config.getInstance().config.texts.feedbackThanks,\n ...(vote === RelevancyVoteType.DOWN\n ? [\n new Button({\n label: Config.getInstance().config.texts.feedbackReportButtonLabel,\n onClick: () => {\n if (this.sendFeedbackListenerId === undefined) {\n this.sendFeedbackListenerId = MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FEEDBACK_SET, (data: FeedbackPayload) => {\n if (data.messageId === this.props.messageId && data.tabId === this.props.tabId) {\n MynahUIGlobalEvents.getInstance().removeListener(MynahEventNames.FEEDBACK_SET, this.sendFeedbackListenerId as string);\n this.render.remove();\n }\n });\n }\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SHOW_FEEDBACK_FORM, { tabId: this.props.tabId, messageId: this.props.messageId });\n },\n primary: false\n }).render\n ]\n : [])\n ];\n this.render.replaceChildren(...newChildren);\n\n if (vote === RelevancyVoteType.UP) {\n setTimeout(() => {\n this.render.remove();\n }, THANKS_REMOVAL_DURATION);\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { MynahEventNames, SourceLink } from '../../static';\nimport { Button } from '../button';\nimport { Card } from '../card/card';\nimport { Icon, MynahIcons } from '../icon';\nimport { SourceLinkHeader } from '../source-link/source-link-header';\n\nconst MAX_ITEMS = 1;\nexport interface ChatItemSourceLinksContainerProps {\n tabId: string;\n messageId: string;\n title?: string;\n relatedContent?: SourceLink[];\n}\nexport class ChatItemSourceLinksContainer {\n private readonly props: ChatItemSourceLinksContainerProps;\n private readonly showMoreButtonBlock: Button;\n render: ExtendedHTMLElement;\n chatAvatar: ExtendedHTMLElement;\n constructor (props: ChatItemSourceLinksContainerProps) {\n this.props = props;\n this.showMoreButtonBlock = new Button({\n classNames: [ 'mynah-chat-item-card-related-content-show-more' ],\n primary: false,\n icon: new Icon({ icon: MynahIcons.DOWN_OPEN }).render,\n onClick: () => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SHOW_MORE_WEB_RESULTS_CLICK, { messageId: this.props.messageId });\n this.showMoreButtonBlock.render.remove();\n (this.render).addClass('expanded');\n },\n label: 'Show more',\n });\n\n if (this.props.relatedContent !== undefined) {\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-related-content',\n this.props.relatedContent !== undefined && this.props.relatedContent.length <= MAX_ITEMS ? 'expanded' : '' ],\n children: [\n ...(this.props.title !== undefined\n ? [ {\n type: 'span',\n classNames: [ 'mynah-chat-item-card-related-content-title' ],\n children: [ this.props.title ],\n } ]\n : []),\n ...this.props.relatedContent.map(sourceLink => DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-related-content-item' ],\n children: [\n new Card({\n background: false,\n border: false,\n padding: 'none',\n children: [\n new SourceLinkHeader({\n sourceLink,\n showCardOnHover: true,\n onClick: (e) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SOURCE_LINK_CLICK, {\n messageId: this.props.messageId,\n link: sourceLink.url,\n event: e\n });\n }\n }).render\n ]\n }).render\n ]\n })),\n this.showMoreButtonBlock.render\n ]\n });\n }\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { ReferenceTrackerInformation } from '../../static';\nimport { CardBody } from '../card/card-body';\nimport { CollapsibleContent } from '../collapsible-content';\n\nexport interface ChatItemTreeViewLicenseProps {\n referenceSuggestionLabel: string;\n references: ReferenceTrackerInformation[];\n}\n\nexport class ChatItemTreeViewLicense {\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewLicenseProps) {\n // If no references are found then just return an empty div\n if (props.references.length === 0) {\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'empty' ]\n });\n return;\n }\n\n this.render = new CollapsibleContent({\n title: Config.getInstance().config.texts.codeSuggestionWithReferenceTitle,\n classNames: [ 'mynah-chat-item-tree-view-license' ],\n children: [ this.buildDropdownChildren(props.references) ]\n }).render;\n }\n\n private readonly buildDropdownChildren = (references: ReferenceTrackerInformation[]): ExtendedHTMLElement => DomBuilder.getInstance().build({\n type: 'ul',\n classNames: [ 'mynah-chat-item-tree-view-license-container' ],\n children: references.map(ref => ({\n type: 'li',\n children: [\n new CardBody({\n body: ref.information\n }).render\n ]\n })),\n });\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { fileListToTree } from '../../helper/file-tree';\nimport { ReferenceTrackerInformation } from '../../static';\nimport { ChatItemTreeView } from './chat-item-tree-view';\nimport { ChatItemTreeViewLicense } from './chat-item-tree-view-license';\n\nexport interface ChatItemTreeViewWrapperProps {\n tabId: string;\n messageId: string;\n files: string[];\n deletedFiles: string[];\n referenceSuggestionLabel: string;\n references: ReferenceTrackerInformation[];\n}\n\nexport class ChatItemTreeViewWrapper {\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewWrapperProps) {\n const license = new ChatItemTreeViewLicense({\n referenceSuggestionLabel: props.referenceSuggestionLabel,\n references: props.references\n }).render;\n\n const tree = new ChatItemTreeView({\n messageId: props.messageId,\n tabId: props.tabId,\n node: fileListToTree(props.files, props.deletedFiles),\n }).render;\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper-container' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper-title' ],\n children: [\n {\n type: 'h4',\n children: [ `${Config.getInstance().config.texts.codeSuggestions}` ]\n },\n {\n type: 'span',\n children: [ `${props.files.length} ${Config.getInstance().config.texts.files}` ]\n },\n ]\n },\n license,\n tree,\n ]\n },\n {\n type: 'p',\n children: [ Config.getInstance().config.texts.clickFileToViewDiff ]\n }\n ]\n });\n }\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { cancelEvent, MynahUIGlobalEvents } from '../../helper/events';\nimport { FileNode, TreeNode } from '../../helper/file-tree';\nimport { MynahEventNames } from '../../static';\nimport { Button } from '../button';\nimport { Icon, MynahIcons } from '../icon';\n\nexport interface ChatItemTreeViewProps {\n node: TreeNode;\n depth?: number;\n tabId: string;\n messageId: string;\n}\n\nexport class ChatItemTreeView {\n private readonly node: TreeNode;\n private isOpen: boolean;\n private readonly depth: number;\n private readonly tabId: string;\n private readonly messageId: string;\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewProps) {\n this.node = props.node;\n this.tabId = props.tabId;\n this.messageId = props.messageId;\n this.isOpen = true;\n this.depth = props.depth ?? 0;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: this.getClassNames(),\n children: [ ...(this.node.type === 'folder' ? this.buildFolderNode() : this.buildFileNode()) ],\n });\n }\n\n getClassNames (): string[] {\n return [\n 'mynah-chat-item-tree-view',\n this.node.type === 'file' ? 'mynah-chat-tree-view-file' : `mynah-chat-tree-view-folder-${this.isOpen ? 'open' : 'closed'}`,\n ];\n }\n\n updateTree (): void {\n this.render.update({\n classNames: this.getClassNames(),\n children: [ ...(this.node.type === 'folder' ? this.buildFolderNode() : this.buildFileNode()) ],\n });\n }\n\n buildFolderChildren (): ExtendedHTMLElement[] {\n if (this.node.type !== 'folder') return [];\n\n const folderChildren = this.isOpen\n ? this.node.children.map(childNode =>\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-pull-request-item' ],\n children: [ new ChatItemTreeView({ node: childNode, depth: this.depth + 1, tabId: this.tabId, messageId: this.messageId }).render ],\n })\n )\n : [];\n return folderChildren;\n }\n\n buildFolderNode (): ExtendedHTMLElement[] {\n if (this.node.type !== 'folder') return [];\n\n const folderItem = new Button({\n icon: new Icon({ icon: this.isOpen ? MynahIcons.DOWN_OPEN : MynahIcons.RIGHT_OPEN }).render,\n label: `${this.node.name} ${this.node.children.length} files`,\n primary: false,\n onClick: e => {\n cancelEvent(e);\n this.isOpen = !this.isOpen;\n this.updateTree();\n },\n }).render;\n folderItem.style.paddingLeft = `${15 * this.depth}px`;\n const childrenItems = this.buildFolderChildren();\n return [ folderItem, ...childrenItems ];\n }\n\n buildFileNode (): ExtendedHTMLElement[] {\n if (this.node.type !== 'file') return [];\n\n const fileItem = new Button({\n // Eye is temporary until file addition/file removal is finished\n icon: new Icon({ icon: MynahIcons.DOC }).render,\n label: this.node.name,\n primary: false,\n onClick: () => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.OPEN_DIFF, {\n tabId: this.tabId,\n messageId: this.messageId,\n filePath: (this.node as FileNode).filePath,\n deleted: (this.node as FileNode).deleted,\n });\n },\n }).render;\n fileItem.style.paddingLeft = `${15 * this.depth}px`;\n if (this.node.deleted) {\n fileItem.style.textDecoration = 'line-through';\n }\n return [ fileItem ];\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\n\nexport interface ChatPromptInputCommandProps {\n command: string;\n onRemoveClick: () => void;\n}\nexport class ChatPromptInputCommand {\n render: ExtendedHTMLElement;\n private readonly props: ChatPromptInputCommandProps;\n private readonly promptTextInputCommand: ExtendedHTMLElement;\n constructor (props: ChatPromptInputCommandProps) {\n this.props = props;\n this.promptTextInputCommand = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input-command-text' ],\n events: {\n click: this.props.onRemoveClick\n }\n });\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input-command-wrapper', this.props.command === '' ? 'hidden' : '' ],\n children: [\n this.promptTextInputCommand,\n ]\n });\n }\n\n setCommand = (command: string): void => {\n if (command.trim() === '') {\n this.render.addClass('hidden');\n } else {\n this.render.removeClass('hidden');\n }\n this.promptTextInputCommand.innerText = command;\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { marked } from 'marked';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\n\nexport interface ChatPromptInputInfoProps{\n tabId: string;\n}\nexport class ChatPromptInputInfo {\n render: ExtendedHTMLElement;\n constructor (props: ChatPromptInputInfoProps) {\n MynahUITabsStore.getInstance().addListenerToDataStore(props.tabId, 'promptInputInfo', (newInfo) => {\n this.render.update({\n innerHTML: marked.parse(newInfo, { breaks: true })\n });\n });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-chat-prompt-input-info' ],\n innerHTML: marked.parse(MynahUITabsStore.getInstance().getTabDataStore(props.tabId)?.getValue('promptInputInfo') ?? '', { breaks: true })\n });\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { KeyMap, MynahEventNames, QuickActionCommand, QuickActionCommandGroup, SourceLink } from '../../static';\nimport { MynahUIGlobalEvents, cancelEvent } from '../../helper/events';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport escapeHTML from 'escape-html';\nimport { ChatPromptInputCommand } from './chat-prompt-input-command';\nimport { CodeSnippet } from './prompt-input/code-snippet';\nimport { SendButton } from './prompt-input/send-button';\nimport { PromptTextInput } from './prompt-input/prompt-text-input';\n\nexport const MAX_USER_INPUT = 4000;\nexport interface ChatPromptInputProps {\n tabId: string;\n}\nexport class ChatPromptInput {\n render: ExtendedHTMLElement;\n private readonly props: ChatPromptInputProps;\n private readonly attachmentWrapper: ExtendedHTMLElement;\n private readonly promptTextInput: PromptTextInput;\n private readonly promptTextInputCommand: ChatPromptInputCommand;\n private readonly remainingCharsIndicator: ExtendedHTMLElement;\n private readonly sendButton: SendButton;\n private readonly codeSnippet: CodeSnippet;\n private quickActionCommands: QuickActionCommandGroup[];\n private commandSelector: Overlay;\n private commandSelectorOpen: boolean = false;\n private selectedCommand: string = '';\n private attachment?: SourceLink;\n private filteredCommandsList: QuickActionCommandGroup[];\n constructor (props: ChatPromptInputProps) {\n this.props = props;\n this.quickActionCommands = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('quickActionCommands') as QuickActionCommandGroup[];\n this.promptTextInputCommand = new ChatPromptInputCommand({\n command: '',\n onRemoveClick: () => {\n this.selectedCommand = '';\n this.promptTextInputCommand.setCommand('');\n }\n });\n this.promptTextInput = new PromptTextInput({\n tabId: this.props.tabId,\n onKeydown: this.handleInputKeydown,\n onInput: () => this.updateAvailableCharactersIndicator(),\n });\n this.remainingCharsIndicator = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-chars-indicator' ],\n innerHTML: `${MAX_USER_INPUT - this.promptTextInput.getTextInputValue().length}/${MAX_USER_INPUT}`\n });\n this.sendButton = new SendButton({\n tabId: this.props.tabId,\n onClick: () => {\n this.sendPrompt();\n },\n });\n\n this.codeSnippet = new CodeSnippet({\n tabId: this.props.tabId,\n });\n\n this.attachmentWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-attachment-wrapper' ],\n children: [\n this.codeSnippet.render\n ]\n });\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-prompt' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-prompt-input-wrapper' ],\n children: [\n this.promptTextInputCommand.render,\n this.promptTextInput.render,\n this.sendButton.render,\n ]\n },\n this.attachmentWrapper\n ]\n },\n this.remainingCharsIndicator,\n ],\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.ADD_CODE_SNIPPET, (selectedCodeSnippet: string | undefined) => {\n // Code snippet will have a limit of MAX_USER_INPUT - 100 - current prompt text length\n // If exceeding that, we will crop it\n const textInputLength = this.promptTextInput.getTextInputValue().trim().length;\n const currentSelectedCodeMaxLength = MAX_USER_INPUT - 100 - textInputLength;\n const croppedSelectedCodeSnippet = (selectedCodeSnippet ?? '')?.slice(0, currentSelectedCodeMaxLength);\n this.codeSnippet.updateSelectedCodeSnippet(croppedSelectedCodeSnippet);\n // Also update the limit on prompt text given the selected code\n this.promptTextInput.updateTextInputMaxLength(MAX_USER_INPUT - 100 - croppedSelectedCodeSnippet.length);\n this.updateAvailableCharactersIndicator();\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.REMOVE_CODE_SNIPPET, () => {\n this.promptTextInput.updateTextInputMaxLength(MAX_USER_INPUT - 100);\n this.codeSnippet.clear();\n // Update the limit on prompt text given the selected code\n this.updateAvailableCharactersIndicator();\n });\n\n setTimeout(() => {\n this.promptTextInput.focus();\n }, 500);\n }\n\n private readonly updateAvailableCharactersIndicator = (): void => {\n const totalCharsUsed =\n this.promptTextInput.getTextInputValue().trim().length +\n (MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('selectedCodeSnippet') as string ?? '').length;\n this.remainingCharsIndicator.update({\n innerHTML: `${MAX_USER_INPUT - totalCharsUsed}/${MAX_USER_INPUT}`\n });\n };\n\n private readonly handleInputKeydown = (e: KeyboardEvent): void => {\n if (!this.commandSelectorOpen) {\n this.quickActionCommands = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('quickActionCommands') as QuickActionCommandGroup[];\n if (e.key === KeyMap.BACKSPACE && this.selectedCommand !== '' && this.promptTextInput.getTextInputValue() === '') {\n cancelEvent(e);\n this.clearTextArea();\n } else if (e.key === KeyMap.ENTER && !e.shiftKey && !e.ctrlKey) {\n cancelEvent(e);\n this.sendPrompt();\n } else if (this.selectedCommand === '' && this.quickActionCommands.length > 0 && e.key === KeyMap.SLASH && this.promptTextInput.getTextInputValue() === '') {\n // Show available quick actions\n if (this.commandSelector !== undefined) {\n this.commandSelector.close();\n }\n this.filteredCommandsList = [ ...this.quickActionCommands ];\n this.commandSelector = new Overlay({\n closeOnOutsideClick: true,\n referenceElement: this.render,\n dimOutside: false,\n stretchWidth: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n onClose: () => {\n this.commandSelectorOpen = false;\n },\n children: [\n this.getQuickCommandActions(this.quickActionCommands)\n ],\n });\n\n this.commandSelectorOpen = true;\n }\n } else {\n const blockedKeys = [ KeyMap.ENTER, KeyMap.ESCAPE, KeyMap.SPACE, KeyMap.TAB, KeyMap.BACK_SLASH, KeyMap.SLASH ] as string[];\n const navigationalKeys = [ KeyMap.ARROW_UP, KeyMap.ARROW_DOWN ] as string[];\n if (blockedKeys.includes(e.key)) {\n e.preventDefault();\n if (e.key === KeyMap.ENTER || e.key === KeyMap.TAB || e.key === KeyMap.SPACE) {\n // let quickAction: QuickActionCommand;\n const targetElement = this.commandSelector.render.querySelector('.target-command') ?? this.commandSelector.render.querySelector('.mynah-chat-command-selector-command');\n this.handleCommandSelection({\n command: targetElement?.getAttribute('command') ?? '',\n placeholder: targetElement?.getAttribute('placeholder') ?? undefined,\n });\n }\n if (this.commandSelector !== undefined) {\n this.commandSelector.close();\n }\n } else if (navigationalKeys.includes(e.key)) {\n e.preventDefault();\n const commandElements = Array.from(this.commandSelector.render.querySelectorAll('.mynah-chat-command-selector-command'));\n let lastActiveElement = commandElements.findIndex(commandElement => commandElement.classList.contains('target-command'));\n lastActiveElement = lastActiveElement === -1 ? commandElements.length : lastActiveElement;\n let nextElement: number;\n if (e.key === KeyMap.ARROW_UP) {\n if (lastActiveElement > 0) {\n nextElement = lastActiveElement - 1;\n } else {\n nextElement = commandElements.length - 1;\n }\n } else {\n if (lastActiveElement < commandElements.length - 1) {\n nextElement = lastActiveElement + 1;\n } else {\n nextElement = 0;\n }\n }\n\n commandElements[lastActiveElement]?.classList.remove('target-command');\n commandElements[nextElement].classList.add('target-command');\n if (commandElements[nextElement].getAttribute('prompt') !== null) {\n this.promptTextInput.updateTextInputValue(commandElements[nextElement].getAttribute('prompt') as string);\n }\n } else {\n if (this.commandSelector !== undefined) {\n setTimeout(() => {\n if (this.promptTextInput.getTextInputValue() === '') {\n this.commandSelector.close();\n } else {\n this.filteredCommandsList = [];\n [ ...this.quickActionCommands ].forEach((quickActionGroup: QuickActionCommandGroup) => {\n const newQuickActionCommandGroup = { ...quickActionGroup };\n newQuickActionCommandGroup.commands = newQuickActionCommandGroup\n .commands.filter(command => command.command.match(new RegExp(`${this.promptTextInput.getTextInputValue().substring(1)}` ?? '', 'gi')));\n if (newQuickActionCommandGroup.commands.length > 0) {\n this.filteredCommandsList.push(newQuickActionCommandGroup);\n }\n });\n this.commandSelector.updateContent([ this.getQuickCommandActions(this.filteredCommandsList) ]);\n }\n }, 1);\n }\n }\n }\n };\n\n private readonly getQuickCommandActions = (quickCommandList: QuickActionCommandGroup[]): ExtendedHTMLElement => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector' ],\n children: quickCommandList.map((quickActionCommandGroup) => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-group' ],\n children: [\n ...(quickActionCommandGroup.groupName !== undefined\n ? [ DomBuilder.getInstance().build({\n type: 'h4',\n classNames: [ 'mynah-chat-command-selector-group-title' ],\n children: [ quickActionCommandGroup.groupName ]\n }) ]\n : []),\n ...(quickActionCommandGroup.commands.map(quickActionCommand => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command' ],\n attributes: {\n ...quickActionCommand\n },\n events: {\n click: () => {\n this.handleCommandSelection(quickActionCommand);\n }\n },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command-name' ],\n children: [ quickActionCommand.command ]\n },\n ...(quickActionCommand.description !== undefined\n ? [ {\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command-description' ],\n children: [ quickActionCommand.description ]\n } ]\n : [])\n ]\n });\n }))\n ]\n });\n })\n });\n };\n\n private readonly handleCommandSelection = (quickActionCommand: QuickActionCommand): void => {\n this.selectedCommand = quickActionCommand.command;\n this.promptTextInput.updateTextInputValue('');\n if (quickActionCommand.placeholder !== undefined) {\n this.promptTextInputCommand.setCommand(this.selectedCommand);\n this.promptTextInput.updateTextInputPlaceholder(quickActionCommand.placeholder);\n } else {\n this.sendPrompt();\n }\n this.commandSelector.close();\n this.promptTextInput.focus();\n };\n\n public readonly clearTextArea = (): void => {\n this.selectedCommand = '';\n this.promptTextInput.clear();\n this.promptTextInput.updateTextInputMaxLength(MAX_USER_INPUT - 100);\n this.promptTextInputCommand.setCommand('');\n this.attachmentWrapper.clear();\n this.codeSnippet.clear();\n this.attachment = undefined;\n this.updateAvailableCharactersIndicator();\n };\n\n public readonly addText = (textToAdd: string): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.ADD_CODE_SNIPPET, textToAdd);\n };\n\n private readonly sendPrompt = (): void => {\n const currentInputValue = this.promptTextInput.getTextInputValue();\n if (currentInputValue.trim() !== '' || this.selectedCommand.trim() !== '') {\n const selectedCodeSnippet: string | undefined = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('selectedCodeSnippet');\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_PROMPT, {\n tabId: this.props.tabId,\n prompt: {\n prompt: currentInputValue + (selectedCodeSnippet ?? ''),\n escapedPrompt: escapeHTML(currentInputValue + (selectedCodeSnippet ?? '')),\n ...(this.selectedCommand !== '' ? { command: this.selectedCommand } : {}),\n attachment: this.attachment\n }\n });\n this.clearTextArea();\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport { ChatItem, ChatItemType } from '../../static';\nimport { Button } from '../button';\nimport { Icon, MynahIcons } from '../icon';\nimport { ChatItemCard } from './chat-item-card';\nimport { ChatPromptInput } from './chat-prompt-input';\nimport { ChatPromptInputInfo } from './chat-prompt-input-info';\n\nexport interface ChatWrapperProps {\n onStopChatResponse?: (tabId: string) => void;\n tabId: string;\n}\nexport class ChatWrapper {\n private readonly props: ChatWrapperProps;\n private readonly chatItemsContainer: ExtendedHTMLElement;\n private readonly intermediateBlockContainer: ExtendedHTMLElement;\n private readonly promptInputElement: ExtendedHTMLElement;\n private readonly promptInput: ChatPromptInput;\n private readonly promptInfo: ExtendedHTMLElement;\n private lastChatItemCard: ChatItemCard | null;\n render: ExtendedHTMLElement;\n constructor (props: ChatWrapperProps) {\n this.props = props;\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('chatItems', (chatItems: ChatItem[]) => {\n const chatItemToInsert: ChatItem = chatItems[chatItems.length - 1];\n if (this.chatItemsContainer.children.length === chatItems.length) {\n const lastItem = this.chatItemsContainer.children.item(0);\n if (lastItem !== null) {\n lastItem.innerHTML = new ChatItemCard({ tabId: this.props.tabId, chatItem: chatItemToInsert }).render.innerHTML;\n }\n } else if (chatItems.length > 0) {\n if (this.chatItemsContainer.children.length === 0) {\n chatItems.forEach(chatItem => {\n this.insertChatItem(chatItem);\n });\n } else {\n this.insertChatItem(chatItemToInsert);\n }\n } else {\n this.chatItemsContainer.clear(true);\n }\n });\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('loadingChat', (loadingChat: boolean) => {\n if (loadingChat) {\n this.render.addClass('loading');\n } else {\n this.render.removeClass('loading');\n }\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('cancelButtonWhenLoading', (showCancelButton: boolean) => {\n if (showCancelButton) {\n this.intermediateBlockContainer.removeClass('hidden');\n } else {\n this.intermediateBlockContainer.addClass('hidden');\n }\n });\n\n this.promptInput = new ChatPromptInput({ tabId: this.props.tabId });\n this.promptInputElement = this.promptInput.render;\n this.promptInfo = new ChatPromptInputInfo({ tabId: this.props.tabId }).render;\n this.chatItemsContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-items-container' ],\n persistent: true,\n children: [],\n });\n\n this.intermediateBlockContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-overflowing-intermediate-block',\n ...(MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('cancelButtonWhenLoading') === false ? [ 'hidden' ] : []) ],\n children: [\n ...(this.props?.onStopChatResponse !== undefined\n ? [ new Button({\n classNames: [ 'mynah-chat-stop-chat-response-button' ],\n label: Config.getInstance().config.texts.stopGenerating,\n icon: new Icon({ icon: MynahIcons.BLOCK }).render,\n onClick: () => {\n if ((this.props?.onStopChatResponse) !== undefined) {\n this.props?.onStopChatResponse(this.props.tabId);\n }\n },\n }).render ]\n : [])\n ]\n });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-wrapper' ],\n attributes: {\n 'mynah-tab-id': this.props.tabId,\n },\n persistent: true,\n children: [\n {\n type: 'style',\n children: [ `\n .mynah-nav-tabs-wrapper[selected-tab=\"${this.props.tabId}\"] + .mynah-ui-tab-contents-wrapper > .mynah-chat-wrapper[mynah-tab-id=\"${this.props.tabId}\"]{\n display: flex;\n }\n .mynah-nav-tabs-wrapper[selected-tab=\"${this.props.tabId}\"] + .mynah-ui-tab-contents-wrapper > .mynah-chat-wrapper:not([mynah-tab-id=\"${this.props.tabId}\"]) * {\n pointer-events: none !important;\n }` ],\n },\n this.chatItemsContainer,\n this.intermediateBlockContainer,\n this.promptInputElement,\n this.promptInfo\n ]\n });\n\n const initChatItems = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('chatItems');\n if (initChatItems.length > 0) {\n initChatItems.forEach((chatItem: ChatItem) => this.insertChatItem(chatItem));\n }\n }\n\n private readonly insertChatItem = (chatItem: ChatItem): void => {\n const chatItemCard = new ChatItemCard({\n tabId: this.props.tabId,\n chatItem\n });\n if (chatItem.type === ChatItemType.ANSWER_STREAM) {\n this.lastChatItemCard?.render.addClass('stream-ended');\n this.lastChatItemCard = chatItemCard;\n } else if (\n (chatItem.type === ChatItemType.ANSWER ||\n chatItem.type === ChatItemType.PROMPT ||\n chatItem.type === ChatItemType.AI_PROMPT ||\n chatItem.type === ChatItemType.SYSTEM_PROMPT) && chatItem.body !== undefined) {\n this.lastChatItemCard?.render.addClass('stream-ended');\n this.lastChatItemCard = null;\n }\n this.chatItemsContainer.insertChild('afterbegin', chatItemCard.render);\n if (chatItem.type === ChatItemType.PROMPT || chatItem.type === ChatItemType.SYSTEM_PROMPT) {\n // Make sure we scroll the chat window to the bottom\n // Only if it is a PROMPT\n this.chatItemsContainer.scrollTop = this.chatItemsContainer.scrollHeight + 500;\n }\n };\n\n public updateLastChatAnswer = (updateWith: Partial<ChatItem>): void => {\n if (this.lastChatItemCard !== null) {\n this.lastChatItemCard.updateCard(updateWith);\n }\n };\n\n public addToPrompt = (textToAdd: string): void => {\n this.promptInput.addText(textToAdd);\n };\n}\n","import { ExtendedHTMLElement } from '../../../helper/dom';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../../overlay';\nimport { Icon, MynahIcons } from '../../icon';\nimport { Button } from '../../button';\nimport { MynahUIGlobalEvents, cancelEvent } from '../../../helper/events';\nimport { MynahEventNames } from '../../../static';\nimport { Card } from '../../card/card';\nimport { CardBody } from '../../card/card-body';\n\nexport interface ICodeSnippetWidgetProps {\n tabId: string;\n markdownText: string;\n}\n\nexport class CodeSnippetWidget {\n private readonly props: ICodeSnippetWidgetProps;\n private previewOverlay: Overlay | undefined;\n render: ExtendedHTMLElement;\n constructor (props: ICodeSnippetWidgetProps) {\n this.props = props;\n this.render = this.renderCodeSnippetWidget(this.props.markdownText);\n }\n\n private readonly showPreviewOverLay = (markdownText: string): void => {\n this.previewOverlay = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: this.render,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n new Card({\n classNames: [ 'snippet-card-container-preview' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n ]\n }).render\n ],\n });\n };\n\n private readonly closePreviewOverLay = (): void => {\n if (this.previewOverlay !== undefined) {\n this.previewOverlay.close();\n this.previewOverlay = undefined;\n }\n };\n\n private readonly renderCodeSnippetWidget = (markdownText: string): ExtendedHTMLElement => {\n return new Card({\n padding: 'none',\n events: {\n mouseenter: () => {\n this.showPreviewOverLay(markdownText);\n },\n mouseleave: () => {\n this.closePreviewOverLay();\n },\n },\n classNames: [ 'snippet-card-container' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n new Button({\n classNames: [ 'code-snippet-close-button' ],\n onClick: e => {\n cancelEvent(e);\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.REMOVE_CODE_SNIPPET, this.props.tabId);\n this.closePreviewOverLay();\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render,\n primary: false,\n }).render,\n ],\n }).render;\n };\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { CodeSnippetWidget } from './code-snippet-widget';\n\nexport interface ICodeSnippetProps {\n tabId: string;\n}\n\nexport interface ISelectCodeSnippetEvent {\n tabId: string;\n selectedCodeSnippet?: string;\n}\n\nexport class CodeSnippet {\n private readonly _props: ICodeSnippetProps;\n private readonly _render: ExtendedHTMLElement;\n constructor (props: ICodeSnippetProps) {\n this._props = props;\n\n this._render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'outer-container' ],\n persistent: true,\n });\n }\n\n public get render (): ExtendedHTMLElement {\n return this._render;\n }\n\n public readonly updateSelectedCodeSnippet = (selectedCodeSnippet: string | undefined): void => {\n this._render.clear();\n if (selectedCodeSnippet !== undefined && selectedCodeSnippet !== '') {\n this._render.insertChild(\n 'afterbegin',\n new CodeSnippetWidget({\n tabId: this._props.tabId,\n markdownText: selectedCodeSnippet,\n }).render\n );\n const isCodeOverflowVertically =\n (this._render.getBoundingClientRect()?.height ?? 0) < (this._render.getElementsByTagName('code')?.[0]?.getBoundingClientRect()?.height ?? 0);\n if (isCodeOverflowVertically) {\n this._render.children[0].classList.add('vertical-overflow');\n }\n }\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId)?.updateStore({\n selectedCodeSnippet,\n });\n };\n\n public readonly clear = (): void => {\n this._render.clear();\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId)?.updateStore({\n selectedCodeSnippet: undefined,\n });\n };\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { MAX_USER_INPUT } from '../chat-prompt-input';\n\nexport interface IPromptTextInputProps {\n tabId: string;\n onKeydown: (e: KeyboardEvent) => void;\n onInput?: (e: KeyboardEvent) => void;\n}\n\nexport class PromptTextInput {\n private readonly _props: IPromptTextInputProps;\n private readonly _render: ExtendedHTMLElement;\n private readonly _promptTextInputSizer: ExtendedHTMLElement;\n private readonly _promptTextInput: ExtendedHTMLElement;\n constructor (props: IPromptTextInputProps) {\n this._props = props;\n\n const initialDisabledState = MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputDisabledState') as boolean;\n\n this._promptTextInputSizer = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input', 'mynah-chat-prompt-input-sizer' ],\n });\n\n this._promptTextInput = DomBuilder.getInstance().build({\n type: 'textarea',\n classNames: [ 'mynah-chat-prompt-input' ],\n attributes: {\n ...(initialDisabledState ? { disabled: 'disabled' } : {}),\n tabindex: '1',\n rows: '1',\n maxlength: MAX_USER_INPUT.toString(),\n type: 'text',\n placeholder: MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputPlaceholder'),\n value: '',\n },\n events: {\n keydown: this._props.onKeydown,\n input: (e: KeyboardEvent) => {\n // Set the appropriate prompt input height\n this.updatePromptTextInputSizer();\n // Additional handler\n if (this._props.onInput !== undefined) {\n this._props.onInput(e);\n }\n },\n focus: () => {\n this.render.addClass('input-has-focus');\n },\n blur: () => {\n this.render.removeClass('input-has-focus');\n }\n },\n });\n\n this._render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-input-inner-wrapper', 'no-text' ],\n children: [\n this._promptTextInputSizer,\n this._promptTextInput,\n ]\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).subscribe('promptInputDisabledState', (isDisabled: boolean) => {\n if (isDisabled) {\n this._promptTextInput.setAttribute('disabled', 'disabled');\n } else {\n // Enable the input field and focus on it\n this._promptTextInput.removeAttribute('disabled');\n this._promptTextInput.focus();\n }\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).subscribe('promptInputPlaceholder', (placeholderText: string) => {\n if (placeholderText !== undefined) {\n this._promptTextInput.update({\n attributes: {\n placeholder: placeholderText\n }\n });\n }\n });\n }\n\n get render (): ExtendedHTMLElement {\n return this._render;\n }\n\n private readonly updatePromptTextInputSizer = (): void => {\n if (this._promptTextInput.value.trim() !== '') {\n this._render.removeClass('no-text');\n } else {\n this._render.addClass('no-text');\n }\n this._promptTextInputSizer.innerHTML = this._promptTextInput.value.replace(/\\n/g, '</br>&nbsp;');\n };\n\n public readonly clear = (): void => {\n this._promptTextInputSizer.innerHTML = '';\n this.updateTextInputValue('');\n const defaultPlaceholder = MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputPlaceholder');\n this.updateTextInputPlaceholder(defaultPlaceholder);\n this._render.addClass('no-text');\n };\n\n public readonly focus = (): void => {\n this._promptTextInput.focus();\n this.updateTextInputValue('');\n };\n\n public readonly getTextInputValue = (): string => {\n return this._promptTextInput.value;\n };\n\n public readonly updateTextInputValue = (value: string): void => {\n this._promptTextInput.value = value;\n };\n\n public readonly updateTextInputMaxLength = (maxLength: number): void => {\n this._promptTextInput.update({\n attributes: {\n maxlength: maxLength.toString(),\n }\n });\n };\n\n public readonly updateTextInputPlaceholder = (text: string): void => {\n this._promptTextInput.update({\n attributes: {\n placeholder: text,\n }\n });\n };\n}\n","import { ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { Button } from '../../button';\nimport { Icon, MynahIcons } from '../../icon';\n\nexport interface ISendButtonProps {\n tabId: string;\n onClick: () => void;\n}\n\nexport class SendButton {\n private readonly _props: ISendButtonProps;\n private readonly _render: ExtendedHTMLElement;\n constructor (props: ISendButtonProps) {\n this._props = props;\n\n const initialDisabledState = MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputDisabledState') as boolean;\n\n this._render = new Button({\n classNames: [ 'mynah-icon-button', 'mynah-chat-prompt-button' ],\n attributes: {\n ...(initialDisabledState ? { disabled: 'disabled' } : {}),\n tabindex: '5'\n },\n icon: new Icon({ icon: MynahIcons.ENVELOPE_SEND }).render,\n onClick: () => {\n this._props.onClick();\n },\n }).render;\n\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).subscribe('promptInputDisabledState', (isDisabled: boolean) => {\n if (isDisabled) {\n this.render.setAttribute('disabled', 'disabled');\n } else {\n this.render.removeAttribute('disabled');\n }\n });\n }\n\n get render (): ExtendedHTMLElement {\n return this._render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// eslint-disable @typescript-eslint/restrict-template-expressions\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../helper/dom';\nimport { generateUID } from '../helper/guid';\nimport { Icon, MynahIcons } from './icon';\n\ninterface CollapsibleContentProps {\n title: string | ExtendedHTMLElement | HTMLElement | DomBuilderObject;\n children: Array<string | ExtendedHTMLElement | HTMLElement | DomBuilderObject>;\n classNames?: string[];\n initialCollapsedState?: boolean;\n onCollapseStateChange?: (collapsed: boolean) => void;\n}\nexport class CollapsibleContent {\n render: ExtendedHTMLElement;\n private readonly props: Required<CollapsibleContentProps>;\n private readonly uid: string;\n private icon: ExtendedHTMLElement;\n constructor (props: CollapsibleContentProps) {\n this.uid = generateUID();\n this.props = {\n initialCollapsedState: true,\n onCollapseStateChange: () => {},\n classNames: [],\n ...props\n };\n this.icon = new Icon({ icon: this.props.initialCollapsedState ? MynahIcons.RIGHT_OPEN : MynahIcons.DOWN_OPEN }).render;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-collapsible-content-wrapper', ...this.props.classNames ],\n children: [\n {\n type: 'input',\n classNames: [ 'mynah-collapsible-content-checkbox' ],\n attributes: {\n type: 'checkbox',\n name: this.uid,\n id: this.uid,\n ...(this.props.initialCollapsedState ? { checked: 'checked' } : {})\n },\n events: {\n change: (e) => {\n const val = e.currentTarget.checked;\n const newIcon = new Icon({\n icon: val === true ? MynahIcons.RIGHT_OPEN : MynahIcons.DOWN_OPEN\n }).render;\n this.icon.replaceWith(newIcon);\n this.icon = newIcon;\n this.props.onCollapseStateChange(val);\n }\n },\n },\n {\n type: 'label',\n classNames: [ 'mynah-collapsible-content-label' ],\n attributes: {\n for: this.uid,\n },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-collapsible-content-label-title-wrapper' ],\n children: [\n this.icon,\n {\n type: 'span',\n classNames: [ 'mynah-collapsible-content-label-title-text' ],\n children: [ this.props.title ]\n }\n ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-collapsible-content-label-content-wrapper' ],\n children: this.props.children\n },\n ],\n },\n ],\n });\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\n\nexport interface FeedbackFormCommentProps {\n onChange?: (comment: string) => void;\n initComment?: string;\n}\nexport class FeedbackFormComment {\n render: ExtendedHTMLElement;\n\n constructor (props: FeedbackFormCommentProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'textarea',\n events: {\n keyup: (e: InputEvent) => {\n if (props.onChange !== undefined) {\n props.onChange(this.render.value);\n }\n },\n },\n classNames: [ 'mynah-feedback-form-comment' ],\n attributes: {\n value: props.initComment ?? '',\n },\n });\n }\n\n getComment = (): string => this.render.value;\n clear = (): void => { this.render.value = ''; };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FeedbackPayload, MynahEventNames, MynahPortalNames } from '../../static';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { Button } from '../button';\nimport { FeedbackFormComment } from './feedback-form-comment';\nimport { cancelEvent, MynahUIGlobalEvents } from '../../helper/events';\nimport { Icon, MynahIcons } from '../icon';\nimport { Config } from '../../helper/config';\n\nexport interface FeedbackFormProps {\n initPayload?: FeedbackPayload;\n}\nexport class FeedbackForm {\n private feedbackFormWrapper: ExtendedHTMLElement;\n private readonly feedbackSelect: ExtendedHTMLElement;\n private readonly feedbackOptionsWrapper: ExtendedHTMLElement;\n private readonly feedbackComment: FeedbackFormComment;\n private readonly feedbackSubmitButton: Button;\n private feedbackPayload: FeedbackPayload = { messageId: '', selectedOption: '', tabId: '', comment: '' };\n public readonly feedbackFormContainer: ExtendedHTMLElement;\n\n constructor (props?: FeedbackFormProps) {\n this.feedbackPayload = {\n selectedOption: Config.getInstance().config.feedbackOptions[0].value,\n messageId: '',\n tabId: '',\n comment: '',\n ...props?.initPayload\n };\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SHOW_FEEDBACK_FORM, (data: {messageId: string; tabId: string}) => {\n if (this.feedbackFormWrapper === undefined) {\n this.feedbackFormWrapper = DomBuilder.getInstance().createPortal(\n MynahPortalNames.FEEDBACK_FORM,\n {\n type: 'div',\n attributes: {\n id: 'mynah-feedback-form-wrapper'\n },\n children: [\n this.feedbackFormContainer\n ]\n },\n 'afterbegin'\n );\n }\n this.feedbackPayload.messageId = data.messageId;\n this.feedbackPayload.tabId = data.tabId;\n setTimeout(() => {\n this.show();\n }, 5);\n });\n\n this.feedbackSelect = DomBuilder.getInstance().build({\n type: 'select',\n attributes: { value: Config.getInstance().config.feedbackOptions[0].value },\n classNames: [ 'mynah-feedback-form-select' ],\n events: {\n change: () => {\n this.feedbackPayload.selectedOption = this.feedbackSelect.value;\n }\n },\n children:\n Config.getInstance().config.feedbackOptions.map(option => ({\n type: 'option',\n attributes: { value: option.value },\n children: [ option.label ]\n })) as DomBuilderObject[]\n });\n this.feedbackOptionsWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-feedback-form-select-wrapper' ],\n children: [\n this.feedbackSelect,\n new Icon({ icon: MynahIcons.DOWN_OPEN, classNames: [ 'mynah-feedback-form-select-handle' ] }).render ]\n });\n\n this.feedbackComment = new FeedbackFormComment({\n onChange: (comment: string) => {\n this.feedbackPayload.comment = comment;\n },\n initComment: this.feedbackPayload?.comment,\n });\n\n this.feedbackSubmitButton = new Button({\n label: Config.getInstance().config.texts.submit,\n onClick: () => {\n this.onFeedbackSet(this.feedbackPayload);\n this.close();\n },\n });\n\n this.feedbackFormContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-feedback-form' ],\n events: { click: cancelEvent },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-feedback-form-header' ],\n children: [\n {\n type: 'h4',\n children: [ Config.getInstance().config.texts.feedbackFormTitle ]\n },\n new Button({\n primary: false,\n onClick: () => {\n this.close();\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render\n }).render\n ]\n },\n {\n type: 'span',\n children: [ Config.getInstance().config.texts.feedbackFormOptionsLabel ],\n },\n this.feedbackOptionsWrapper,\n {\n type: 'span',\n children: [ Config.getInstance().config.texts.feedbackFormCommentLabel ],\n },\n this.feedbackComment.render,\n {\n type: 'div',\n classNames: [ 'mynah-feedback-form-buttons-container' ],\n children: [\n new Button({\n primary: false,\n label: Config.getInstance().config.texts.cancel,\n onClick: () => {\n this.close();\n }\n }).render,\n this.feedbackSubmitButton.render\n ]\n }\n ],\n });\n }\n\n private readonly onFeedbackSet = (feedbackData: FeedbackPayload): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.FEEDBACK_SET, feedbackData);\n };\n\n close = (): void => {\n this.feedbackComment.clear();\n this.feedbackSelect.value = Config.getInstance().config.feedbackOptions[0].value;\n this.feedbackPayload = {\n messageId: '',\n selectedOption: Config.getInstance().config.feedbackOptions[0].value,\n tabId: '',\n comment: ''\n };\n this.feedbackFormWrapper.removeClass('mynah-feedback-form-show');\n };\n\n show = (): void => {\n this.feedbackFormWrapper.addClass('mynah-feedback-form-show');\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { MynahUIIconImporter } from './icon/icon-importer';\n\nexport enum MynahIcons {\n MYNAH = 'mynah',\n MENU = 'menu',\n MINUS = 'minus',\n SEARCH = 'search',\n PLUS = 'plus',\n CHAT = 'chat',\n LINK = 'link',\n DOC = 'doc',\n EXTERNAL = 'external',\n CANCEL = 'cancel',\n CALENDAR = 'calendar',\n MEGAPHONE = 'megaphone',\n NOTIFICATION = 'notification',\n EYE = 'eye',\n ELLIPSIS = 'ellipsis',\n OK = 'ok',\n UP_OPEN = 'up-open',\n DOWN_OPEN = 'down-open',\n RIGHT_OPEN = 'right-open',\n LEFT_OPEN = 'left-open',\n RESIZE_FULL = 'resize-full',\n RESIZE_SMALL = 'resize-small',\n BLOCK = 'block',\n OK_CIRCLED = 'ok-circled',\n INFO = 'info',\n WARNING = 'warning',\n ERROR = 'error',\n THUMBS_UP = 'thumbs-up',\n THUMBS_DOWN = 'thumbs-down',\n STAR = 'star',\n LIGHT_BULB = 'light-bulb',\n ENVELOPE_SEND = 'envelope-send',\n REFRESH = 'refresh',\n USER = 'user',\n PLAY = 'play',\n PAUSE = 'pause',\n CODE_BLOCK = 'code-block',\n COPY = 'copy',\n CURSOR_INSERT = 'cursor-insert',\n TEXT_SELECT = 'text-select',\n REVERT = 'revert',\n}\n\nexport interface IconProps {\n icon: MynahIcons;\n classNames?: string[];\n}\nexport class Icon {\n render: ExtendedHTMLElement;\n constructor (props: IconProps) {\n MynahUIIconImporter.getInstance();\n this.render = DomBuilder.getInstance().build({\n type: 'i',\n classNames: [\n 'mynah-ui-icon',\n `mynah-ui-icon-${props.icon}`,\n ...(props.classNames !== undefined ? props.classNames : []),\n ],\n children: [ {\n type: 'span',\n attributes: {\n 'aria-hidden': 'true'\n },\n children: [ props.icon ]\n } ]\n });\n }\n}\n","/* eslint-disable @typescript-eslint/no-extraneous-class */\n/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder } from '../../helper/dom';\nimport { MynahIcons } from '../icon';\n// ICONS\nimport MYNAH from './icons/mynah.svg';\nimport MENU from './icons/menu.svg';\nimport MINUS from './icons/minus.svg';\nimport SEARCH from './icons/search.svg';\nimport PLUS from './icons/plus.svg';\nimport CHAT from './icons/chat.svg';\nimport LINK from './icons/link.svg';\nimport DOC from './icons/doc.svg';\nimport EXTERNAL from './icons/external.svg';\nimport CANCEL from './icons/cancel.svg';\nimport CALENDAR from './icons/calendar.svg';\nimport MEGAPHONE from './icons/megaphone.svg';\nimport NOTIFICATION from './icons/notification.svg';\nimport EYE from './icons/eye.svg';\nimport ELLIPSIS from './icons/ellipsis.svg';\nimport OK from './icons/ok.svg';\nimport UP_OPEN from './icons/up-open.svg';\nimport DOWN_OPEN from './icons/down-open.svg';\nimport RIGHT_OPEN from './icons/right-open.svg';\nimport LEFT_OPEN from './icons/left-open.svg';\nimport RESIZE_FULL from './icons/resize-full.svg';\nimport RESIZE_SMALL from './icons/resize-small.svg';\nimport BLOCK from './icons/block.svg';\nimport OK_CIRCLED from './icons/ok-circled.svg';\nimport INFO from './icons/info.svg';\nimport WARNING from './icons/warning.svg';\nimport ERROR from './icons/error.svg';\nimport THUMBS_UP from './icons/thumbs-up.svg';\nimport THUMBS_DOWN from './icons/thumbs-down.svg';\nimport STAR from './icons/star.svg';\nimport LIGHT_BULB from './icons/light-bulb.svg';\nimport ENVELOPE_SEND from './icons/envelope-send.svg';\nimport REFRESH from './icons/refresh.svg';\nimport USER from './icons/user.svg';\nimport PLAY from './icons/play.svg';\nimport PAUSE from './icons/pause.svg';\nimport CODE_BLOCK from './icons/code-block.svg';\nimport COPY from './icons/copy.svg';\nimport CURSOR_INSERT from './icons/cursor-insert.svg';\nimport TEXT_SELECT from './icons/text-select.svg';\nimport REVERT from './icons/revert.svg';\n\nexport class MynahUIIconImporter {\n private static instance: MynahUIIconImporter;\n private constructor () {\n const mynahIconMappings = {\n MYNAH,\n MENU,\n MINUS,\n SEARCH,\n PLUS,\n CHAT,\n LINK,\n DOC,\n EXTERNAL,\n CANCEL,\n CALENDAR,\n MEGAPHONE,\n NOTIFICATION,\n EYE,\n ELLIPSIS,\n OK,\n UP_OPEN,\n DOWN_OPEN,\n RIGHT_OPEN,\n LEFT_OPEN,\n RESIZE_FULL,\n RESIZE_SMALL,\n BLOCK,\n OK_CIRCLED,\n INFO,\n WARNING,\n ERROR,\n THUMBS_UP,\n THUMBS_DOWN,\n STAR,\n LIGHT_BULB,\n ENVELOPE_SEND,\n REFRESH,\n USER,\n PLAY,\n PAUSE,\n CODE_BLOCK,\n COPY,\n CURSOR_INSERT,\n TEXT_SELECT,\n REVERT\n };\n DomBuilder.getInstance().createPortal('mynah-ui-icons', {\n type: 'style',\n attributes: {\n type: 'text/css'\n },\n children: [ `\n ${Object.keys(MynahIcons).map(iconKey => {\n const iconName = MynahIcons[iconKey as keyof typeof MynahIcons];\n return `\n .mynah-ui-icon-${iconName} {\n --mynah-ui-icon-${iconName}: url(${mynahIconMappings[iconKey as keyof typeof mynahIconMappings]});\n -webkit-mask-image: var(--mynah-ui-icon-${iconName});\n mask-image: var(--mynah-ui-icon-${iconName});\n }`;\n }).join('')}\n ` ]\n }, 'beforebegin');\n }\n\n public static getInstance = (): MynahUIIconImporter => {\n if (MynahUIIconImporter.instance === undefined) {\n MynahUIIconImporter.instance = new MynahUIIconImporter();\n }\n\n return MynahUIIconImporter.instance;\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { MynahUITabsStore } from '../helper/tabs-store';\nimport { MynahUITabStoreTab } from '../static';\nimport { Button } from './button';\nimport { Card } from './card/card';\nimport { CardBody } from './card/card-body';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from './overlay';\nimport { Toggle, ToggleOption } from './toggle';\n\nexport interface TabsProps {\n onChange?: (selectedTabId: string) => void;\n}\nexport class Tabs {\n render: ExtendedHTMLElement;\n private tabIdTitleSubscriptions: Record<string, string> = {};\n private tabIdChatItemsSubscriptions: Record<string, string> = {};\n private toggleGroup: Toggle;\n private previewOverlay: Overlay | undefined;\n private readonly props: TabsProps;\n\n constructor (props: TabsProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-nav-tabs-wrapper' ],\n events: {\n dblclick: (e) => {\n cancelEvent(e);\n if (MynahUITabsStore.getInstance().tabsLength() < Config.getInstance().config.maxTabs) {\n MynahUITabsStore.getInstance().addTab();\n }\n }\n },\n children: this.getTabsRender(MynahUITabsStore.getInstance().getSelectedTabId()),\n });\n\n MynahUITabsStore.getInstance().addListener('add', (tabId, tabData) => {\n this.assignListener(tabId);\n this.toggleGroup.addOption({\n value: tabId,\n label: tabData?.store?.tabTitle,\n selected: tabData?.isSelected\n });\n this.render.setAttribute('selected-tab', tabId);\n });\n MynahUITabsStore.getInstance().addListener('remove', (tabId, newSelectedTab?: MynahUITabStoreTab) => {\n this.removeListenerAssignments(tabId);\n this.toggleGroup.removeOption(tabId);\n if (newSelectedTab !== undefined) {\n this.toggleGroup.snapToOption(MynahUITabsStore.getInstance().getSelectedTabId());\n }\n this.render.setAttribute('selected-tab', MynahUITabsStore.getInstance().getSelectedTabId());\n });\n MynahUITabsStore.getInstance().addListener('selectedTabChange', (selectedTabId) => {\n this.render.setAttribute('selected-tab', selectedTabId);\n this.toggleGroup.setValue(selectedTabId);\n });\n }\n\n private readonly getTabOptionsFromTabStoreData = (): ToggleOption[] => {\n const tabs = MynahUITabsStore.getInstance().getAllTabs();\n return Object.keys(tabs).map((tabId: string) => {\n const tabOption = {\n value: tabId,\n label: tabs[tabId].store?.tabTitle,\n selected: tabs[tabId].isSelected\n };\n return tabOption;\n });\n };\n\n private readonly getTabsRender = (selectedTabId?: string): ExtendedHTMLElement[] => {\n const tabs = this.getTabOptionsFromTabStoreData();\n tabs.forEach(tab => {\n this.assignListener(tab.value);\n });\n this.toggleGroup = new Toggle({\n onChange: (selectedTabId: string) => {\n MynahUITabsStore.getInstance().selectTab(selectedTabId);\n if (this.props.onChange !== undefined) {\n this.props.onChange(selectedTabId);\n }\n },\n onRemove: (selectedTabId) => {\n MynahUITabsStore.getInstance().removeTab(selectedTabId);\n },\n name: 'mynah-main-tabs',\n options: tabs,\n value: selectedTabId\n });\n return [\n this.toggleGroup.render,\n new Button({\n classNames: [ 'mynah-toggle-close-button' ],\n additionalEvents: {\n mouseenter: (e) => {\n if (MynahUITabsStore.getInstance().tabsLength() === Config.getInstance().config.maxTabs) {\n this.showPreviewOverLay(e.currentTarget, Config.getInstance().config.texts.noMoreTabsTooltip);\n }\n },\n mouseleave: () => {\n this.closePreviewOverLay();\n },\n },\n onClick: (e) => {\n cancelEvent(e);\n if (MynahUITabsStore.getInstance().tabsLength() < Config.getInstance().config.maxTabs) {\n MynahUITabsStore.getInstance().addTab();\n }\n },\n icon: new Icon({ icon: MynahIcons.PLUS }).render,\n primary: false\n }).render\n ];\n };\n\n private readonly showPreviewOverLay = (elm: HTMLElement, markdownText: string): void => {\n this.previewOverlay = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n horizontalDirection: OverlayHorizontalDirection.CENTER,\n children: [\n new Card({\n classNames: [ 'snippet-card-container-preview' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n ]\n }).render\n ],\n });\n };\n\n private readonly closePreviewOverLay = (): void => {\n if (this.previewOverlay !== undefined) {\n this.previewOverlay.close();\n this.previewOverlay = undefined;\n }\n };\n\n private readonly assignListener = (tabId: string): void => {\n this.tabIdTitleSubscriptions[tabId] = MynahUITabsStore.getInstance().addListenerToDataStore(tabId, 'tabTitle', (title) => {\n this.toggleGroup.updateOptionTitle(tabId, title);\n }) ?? '';\n this.tabIdChatItemsSubscriptions[tabId] = MynahUITabsStore.getInstance().addListenerToDataStore(tabId, 'chatItems', () => {\n this.toggleGroup.updateOptionIndicator(tabId, true);\n }) ?? '';\n };\n\n private readonly removeListenerAssignments = (tabId: string): void => {\n MynahUITabsStore.getInstance().removeListenerFromDataStore(tabId, this.tabIdTitleSubscriptions[tabId], 'tabTitle');\n MynahUITabsStore.getInstance().removeListenerFromDataStore(tabId, this.tabIdChatItemsSubscriptions[tabId], 'chatItems');\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilderObject, DS, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { NotificationType } from '../static';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection, OVERLAY_MARGIN } from './overlay';\n\ntype NotificationContentType = string | ExtendedHTMLElement | HTMLElement | DomBuilderObject;\n\nexport interface NotificationProps {\n duration?: number;\n type?: NotificationType;\n title?: string;\n content: NotificationContentType | NotificationContentType[];\n onNotificationClick?: () => void;\n onNotificationHide?: () => void;\n}\n\nexport class Notification {\n private notificationOverlay!: Overlay;\n private readonly duration;\n private readonly type;\n private readonly props;\n\n constructor (props: NotificationProps) {\n this.duration = props.duration !== undefined ? props.duration : 5000;\n this.type = props.type ?? NotificationType.INFO;\n this.props = props;\n }\n\n public notify (): void {\n this.notificationOverlay = new Overlay({\n referencePoint: {\n left: Math.max(document.documentElement.clientWidth ?? 0, window.innerWidth ?? 0),\n top: this.getNextCalculatedTop(),\n },\n dimOutside: false,\n closeOnOutsideClick: false,\n horizontalDirection: OverlayHorizontalDirection.TO_LEFT,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n onClose: this.props.onNotificationHide,\n children: [\n {\n type: 'div',\n classNames: [\n 'mynah-notification',\n this.props.onNotificationClick !== undefined ? 'mynah-notification-clickable' : '',\n ],\n events: {\n click: e => {\n cancelEvent(e);\n if (this.props.onNotificationClick !== undefined) {\n this.props.onNotificationClick();\n this.notificationOverlay?.close();\n }\n },\n },\n children: [\n new Icon({ icon: this.type.toString() as MynahIcons }).render,\n {\n type: 'div',\n classNames: [ 'mynah-notification-container' ],\n children: [\n {\n type: 'h3',\n classNames: [ 'mynah-notification-title' ],\n children: [ this.props.title ?? '' ],\n },\n {\n type: 'div',\n classNames: [ 'mynah-notification-content' ],\n children: this.getChildren(this.props.content),\n },\n ],\n },\n ],\n },\n ],\n });\n\n if (this.duration !== -1) {\n setTimeout(() => {\n this.notificationOverlay?.close();\n }, this.duration);\n }\n }\n\n /**\n * Calculates the top according to the previously shown and still visible notifications\n * @returns number\n */\n private readonly getNextCalculatedTop = (): number => {\n const prevNotifications = DS('.mynah-notification');\n if (prevNotifications.length > 0) {\n const prevNotificationRectangle = prevNotifications[prevNotifications.length - 1].getBoundingClientRect();\n return prevNotificationRectangle.top + prevNotificationRectangle.height + OVERLAY_MARGIN;\n }\n return 0;\n };\n\n private readonly getChildren = (content: NotificationContentType | NotificationContentType[]): NotificationContentType[] => {\n if (content instanceof Array) {\n return content;\n }\n return [ content ];\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/brace-style */\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../helper/dom';\nimport { generateUID } from '../helper/guid';\nimport { MynahPortalNames } from '../static';\n\nexport const OVERLAY_MARGIN = 8;\n/**\n * The horizontal creation direction of the overlay\n */\nexport enum OverlayHorizontalDirection {\n /**\n * starts from the left edge of the reference element and opens to left\n */\n TO_LEFT = 'horizontal-direction-to-left',\n /**\n * starts from the right edge of the reference element and opens to left\n */\n END_TO_LEFT = 'horizontal-direction-from-end-to-left',\n /**\n * starts from the right edge of the reference element and opens to right\n */\n TO_RIGHT = 'horizontal-direction-to-right',\n /**\n * starts from the left edge of the reference element and opens to right\n */\n START_TO_RIGHT = 'horizontal-direction-from-start-to-right',\n /**\n * starts and opens at the center of the reference element\n */\n CENTER = 'horizontal-direction-at-center',\n}\n\n/**\n * The vertical creation direction of the overlay\n */\nexport enum OverlayVerticalDirection {\n /**\n * starts from the bottom edge of the reference element and opens to bottom\n */\n TO_BOTTOM = 'vertical-direction-to-bottom',\n /**\n * starts from the top edge of the reference element and opens to bottom\n */\n START_TO_BOTTOM = 'vertical-direction-from-start-to-bottom',\n /**\n * starts from the top edge of the reference element and opens to top\n */\n TO_TOP = 'vertical-direction-to-top',\n /**\n * starts from the bottom edge of the reference element and opens to top\n */\n END_TO_TOP = 'vertical-direction-from-end-to-top',\n /**\n * starts and opens at the center of the reference element\n */\n CENTER = 'vertical-direction-at-center',\n}\n\nexport interface OverlayProps {\n referenceElement?: HTMLElement | ExtendedHTMLElement;\n referencePoint?: { top: number; left: number };\n children: Array<HTMLElement | ExtendedHTMLElement | DomBuilderObject>;\n horizontalDirection?: OverlayHorizontalDirection;\n verticalDirection?: OverlayVerticalDirection;\n stretchWidth?: boolean;\n dimOutside?: boolean;\n closeOnOutsideClick?: boolean;\n background?: boolean;\n onClose?: () => void;\n removeOtherOverlays?: boolean;\n}\nexport class Overlay {\n render: ExtendedHTMLElement;\n private readonly container: ExtendedHTMLElement;\n private readonly innerContainer: ExtendedHTMLElement;\n private readonly guid = generateUID();\n private readonly onClose;\n\n constructor (props: OverlayProps) {\n const horizontalDirection = props.horizontalDirection ?? OverlayHorizontalDirection.TO_RIGHT;\n const verticalDirection = props.verticalDirection ?? OverlayVerticalDirection.START_TO_BOTTOM;\n this.onClose = props.onClose;\n const dimOutside = props.dimOutside !== false;\n const closeOnOutsideClick = props.closeOnOutsideClick !== false;\n\n const calculatedTop = this.getCalculatedTop(verticalDirection, props.referenceElement, props.referencePoint);\n const calculatedLeft = this.getCalculatedLeft(horizontalDirection, props.referenceElement, props.referencePoint);\n const calculatedWidth = props.stretchWidth === true ? this.getCalculatedWidth(props.referenceElement) : 0;\n\n this.innerContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-overlay-inner-container' ],\n children: props.children,\n });\n\n this.container = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-overlay-container', horizontalDirection, verticalDirection, props.background !== false ? 'background' : '' ],\n attributes: {\n style: `top: ${calculatedTop}px; left: ${calculatedLeft}px; ${calculatedWidth !== 0 ? `width: ${calculatedWidth}px;` : ''}`,\n },\n children: [ this.innerContainer ],\n });\n\n if (props.removeOtherOverlays === true) {\n DomBuilder.getInstance().removeAllPortals(MynahPortalNames.OVERLAY);\n }\n\n // this is a portal that goes over all the other items\n // to make it as an overlay item\n this.render = DomBuilder.getInstance().createPortal(\n `${MynahPortalNames.OVERLAY}-${this.guid}`,\n {\n type: 'div',\n attributes: { id: `mynah-overlay-${this.guid}` },\n classNames: [\n 'mynah-overlay',\n ...(dimOutside ? [ 'mynah-overlay-dim-outside' ] : []),\n ...(closeOnOutsideClick ? [ 'mynah-overlay-close-on-outside-click' ] : []),\n ],\n events: {\n click: closeOnOutsideClick ? this.close : () => {},\n },\n children: [ this.container ],\n },\n 'beforeend'\n );\n\n const containerRectangle = this.container.getBoundingClientRect();\n const winHeight = Math.max(document.documentElement.clientHeight ?? 0, window.innerHeight ?? 0);\n const winWidth = Math.max(document.documentElement.clientWidth ?? 0, window.innerWidth ?? 0);\n\n // if it will open at the center of the reference element or point\n // we only need the half of both measurements\n const comparingWidth =\n horizontalDirection === OverlayHorizontalDirection.CENTER\n ? containerRectangle.width / 2\n : containerRectangle.width;\n const comparingHeight =\n verticalDirection === OverlayVerticalDirection.CENTER\n ? containerRectangle.height / 2\n : containerRectangle.height;\n\n // if overlay will open to right or at center\n // we're checking if it exceeds from the right edge of the window\n if (\n horizontalDirection !== OverlayHorizontalDirection.TO_LEFT &&\n horizontalDirection !== OverlayHorizontalDirection.END_TO_LEFT &&\n comparingWidth + OVERLAY_MARGIN + calculatedLeft > winWidth\n ) {\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedLeft - (comparingWidth + OVERLAY_MARGIN + calculatedLeft - winWidth) + 'px';\n }\n // else if the direction is selected as a one that goes to the left,\n // we need to check if it is exceeding from the left edge of the window\n else if (calculatedLeft + comparingWidth - containerRectangle.width < OVERLAY_MARGIN) {\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedLeft + (OVERLAY_MARGIN - calculatedLeft + (comparingWidth - containerRectangle.width)) + 'px';\n }\n\n // if overlay will open to bottom or at center\n // we're checking if it exceeds from the bottom edge of the window\n if (\n verticalDirection !== OverlayVerticalDirection.TO_TOP &&\n verticalDirection !== OverlayVerticalDirection.END_TO_TOP &&\n comparingHeight + OVERLAY_MARGIN + calculatedTop > winHeight\n ) {\n this.container.style.top =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedTop - (comparingHeight + OVERLAY_MARGIN + calculatedTop - winHeight) + 'px';\n }\n // else if the direction is selected as a one that goes to the top,\n // we need to check if it is exceeding from the top edge of the window\n else if (calculatedTop + comparingHeight - containerRectangle.height < OVERLAY_MARGIN) {\n this.container.style.top =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedTop + (OVERLAY_MARGIN - calculatedTop + (comparingHeight - containerRectangle.height)) + 'px';\n }\n\n // we need to delay the class toggle\n // to avoid the skipping of the transition comes from css\n // for a known js-css relation problem\n setTimeout(() => {\n this.render.addClass('mynah-overlay-open');\n\n if (closeOnOutsideClick) {\n window.addEventListener('blur', this.windowBlurHandler.bind(this));\n window.addEventListener('resize', this.windowBlurHandler.bind(this));\n }\n }, 10);\n }\n\n close = (): void => {\n this.render.removeClass('mynah-overlay-open');\n // In this timeout, we're waiting the close animation to be ended\n setTimeout(() => {\n this.render.remove();\n }, 250);\n if (this.onClose !== undefined) {\n this.onClose();\n }\n };\n\n private readonly windowBlurHandler = (): void => {\n this.close();\n window.removeEventListener('blur', this.windowBlurHandler.bind(this));\n window.removeEventListener('resize', this.windowBlurHandler.bind(this));\n };\n\n private readonly getCalculatedLeft = (\n horizontalDirection: OverlayHorizontalDirection,\n referenceElement?: HTMLElement | ExtendedHTMLElement,\n referencePoint?: { top?: number; left: number }\n ): number => {\n const referenceRectangle =\n referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : referencePoint !== undefined\n ? { left: referencePoint.left, width: 0 }\n : { left: 0, width: 0 };\n\n switch (horizontalDirection.toString()) {\n case OverlayHorizontalDirection.TO_RIGHT:\n return referenceRectangle.left + referenceRectangle.width + OVERLAY_MARGIN;\n case OverlayHorizontalDirection.START_TO_RIGHT:\n return referenceRectangle.left;\n case OverlayHorizontalDirection.TO_LEFT:\n return referenceRectangle.left - OVERLAY_MARGIN;\n case OverlayHorizontalDirection.END_TO_LEFT:\n return referenceRectangle.left + referenceRectangle.width;\n case OverlayHorizontalDirection.CENTER:\n return referenceRectangle.left + referenceRectangle.width / 2;\n default:\n return 0;\n }\n };\n\n private readonly getCalculatedWidth = (\n referenceElement?: HTMLElement | ExtendedHTMLElement\n ): number => {\n return (referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : { width: 0 }).width;\n };\n\n private readonly getCalculatedTop = (\n verticalDirection: OverlayVerticalDirection,\n referenceElement?: HTMLElement | ExtendedHTMLElement,\n referencePoint?: { top: number; left?: number }\n ): number => {\n const referenceRectangle =\n referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : referencePoint !== undefined\n ? { top: referencePoint.top, height: 0 }\n : { top: 0, height: 0 };\n\n switch (verticalDirection.toString()) {\n case OverlayVerticalDirection.TO_BOTTOM:\n return referenceRectangle.top + referenceRectangle.height + OVERLAY_MARGIN;\n case OverlayVerticalDirection.START_TO_BOTTOM:\n return referenceRectangle.top;\n case OverlayVerticalDirection.TO_TOP:\n return referenceRectangle.top - OVERLAY_MARGIN;\n case OverlayVerticalDirection.END_TO_TOP:\n return referenceRectangle.top + referenceRectangle.height;\n case OverlayVerticalDirection.CENTER:\n return referenceRectangle.top + referenceRectangle.height / 2;\n default:\n return referenceRectangle.top;\n }\n };\n\n public updateContent = (children: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>): void => {\n this.innerContainer.update({ children });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n ReferenceTrackerInformation,\n SourceLink,\n} from '../../static';\nimport { CardBody } from '../card/card-body';\n\nexport interface SourceLinkBodyProps {\n suggestion: Partial<SourceLink>;\n children?: Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject>;\n highlightRangeWithTooltip?: ReferenceTrackerInformation[];\n}\nexport class SourceLinkBody {\n render: ExtendedHTMLElement;\n props: SourceLinkBodyProps;\n constructor (props: SourceLinkBodyProps) {\n this.props = props;\n this.render = new CardBody({\n highlightRangeWithTooltip: props.highlightRangeWithTooltip,\n body: this.props.suggestion.body ?? '',\n children: this.props.children,\n }).render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getTimeDiff } from '../../helper/date-time';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { getOrigin } from '../../helper/url';\nimport { SourceLink, SourceLinkMetaData } from '../../static';\nimport { Icon, MynahIcons } from '../icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { SourceLinkCard } from './source-link';\n\nconst PREVIEW_DELAY = 500;\nexport interface SourceLinkHeaderProps {\n sourceLink: SourceLink;\n showCardOnHover?: boolean;\n onClick?: (e?: MouseEvent) => void;\n}\nexport class SourceLinkHeader {\n private sourceLinkPreview: Overlay | null;\n private sourceLinkPreviewTimeout: ReturnType<typeof setTimeout>;\n render: ExtendedHTMLElement;\n constructor (props: SourceLinkHeaderProps) {\n const splitUrl = props.sourceLink.url\n .replace(/^(http|https):\\/\\//, '')\n .split('/');\n if (splitUrl[splitUrl.length - 1].trim() === '') {\n splitUrl.pop();\n }\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-source-link-header' ],\n ...(props.showCardOnHover === true\n ? {\n events: {\n mouseenter: (e) => {\n this.showLinkPreview(e, props.sourceLink);\n },\n mouseleave: this.hideLinkPreview,\n }\n }\n : {}),\n attributes: {\n origin: getOrigin(props.sourceLink.url)\n },\n children: [\n {\n type: 'span',\n classNames: [ 'mynah-source-thumbnail' ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-source-link-title-wrapper' ],\n children: [\n {\n type: 'a',\n classNames: [ 'mynah-source-link-title' ],\n events: {\n ...(props.onClick !== undefined && {\n click: props.onClick,\n }),\n },\n attributes: { href: props.sourceLink.url, target: '_blank' },\n children: [ props.sourceLink.title, {\n type: 'div',\n classNames: [ 'mynah-source-link-expand-icon' ],\n children: [ new Icon({ icon: MynahIcons.EXTERNAL }).render ],\n } ],\n },\n {\n type: 'a',\n classNames: [ 'mynah-source-link-url' ],\n events: {\n ...(props.onClick !== undefined && {\n click: props.onClick,\n }),\n },\n attributes: { href: props.sourceLink.url, target: '_blank' },\n innerHTML: splitUrl.map(urlPart => `<span>${urlPart}</span>`).join(''),\n },\n ...((props.sourceLink.metadata != null) ? [ this.getSourceMetaBlock(props.sourceLink.metadata) ] : []),\n ],\n },\n ],\n });\n }\n\n private readonly getSourceMetaBlock = (metadataUnion?: Record<string, SourceLinkMetaData>): DomBuilderObject => {\n const metaItems: any[] = [];\n if (metadataUnion !== null && metadataUnion !== undefined) {\n Object.keys(metadataUnion).forEach(metadataKey => {\n const metadata = metadataUnion[metadataKey];\n if (metadata.isAccepted === true) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item', 'approved-answer' ],\n children: [\n new Icon({ icon: MynahIcons.OK }).render,\n ]\n });\n }\n\n if (metadata.lastActivityDate !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.CALENDAR }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ getTimeDiff((new Date()).getTime() - metadata.lastActivityDate, 2) ]\n }\n ]\n });\n }\n\n if (metadata.answerCount !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.CHAT }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ metadata.answerCount.toString() ]\n }\n ]\n });\n }\n\n if (metadata.stars !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.STAR }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.stars.toString()} contributors` ]\n }\n ]\n });\n }\n\n if (metadata.forks !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.DOWN_OPEN }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.forks.toString()} forks` ]\n }\n ]\n });\n }\n\n if (metadata.score !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.THUMBS_UP }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.score.toString()}` ]\n }\n ]\n });\n }\n });\n }\n\n return {\n type: 'span',\n classNames: [ 'mynah-title-meta-block' ],\n children: metaItems\n };\n };\n\n private readonly showLinkPreview = (e: MouseEvent, sourceLink: SourceLink): void => {\n if (sourceLink.body !== undefined) {\n clearTimeout(this.sourceLinkPreviewTimeout);\n this.sourceLinkPreviewTimeout = setTimeout(() => {\n const elm: HTMLElement = e.target as HTMLElement;\n this.sourceLinkPreview = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-wrapper' ],\n children: [\n new SourceLinkCard({ sourceLink }).render\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n }\n };\n\n private readonly hideLinkPreview = (): void => {\n clearTimeout(this.sourceLinkPreviewTimeout);\n if (this.sourceLinkPreview !== null) {\n this.sourceLinkPreview?.close();\n this.sourceLinkPreview = null;\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ExtendedHTMLElement } from '../../helper/dom';\nimport { SourceLink } from '../../static';\nimport { Card } from '../card/card';\nimport { SourceLinkBody } from './source-link-body';\nimport { SourceLinkHeader } from './source-link-header';\n\nexport interface SourceLinkCardProps {sourceLink: SourceLink; compact?: 'flat' | true}\nexport class SourceLinkCard {\n private readonly sourceLink: SourceLink;\n render: ExtendedHTMLElement;\n constructor (props: SourceLinkCardProps) {\n this.sourceLink = props.sourceLink;\n this.render = new Card({\n children: [\n new SourceLinkHeader({\n sourceLink: this.sourceLink\n }).render,\n ...(this.sourceLink.body !== undefined ? [ new SourceLinkBody({ suggestion: this.sourceLink }).render ] : []),\n ],\n }).render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { highlightElement } from 'prismjs';\n\nimport 'prismjs/components/prism-markup.min';\nimport 'prismjs/components/prism-xml-doc.min';\nimport 'prismjs/components/prism-css.min';\nimport 'prismjs/components/prism-clike.min'; // default\nimport 'prismjs/components/prism-javascript.min';\nimport 'prismjs/components/prism-typescript.min';\nimport 'prismjs/components/prism-jsx.min';\nimport 'prismjs/components/prism-tsx.min';\nimport 'prismjs/components/prism-lua.min';\nimport 'prismjs/components/prism-java.min';\nimport 'prismjs/components/prism-json.min';\nimport 'prismjs/components/prism-markdown.min';\nimport 'prismjs/components/prism-mongodb.min';\nimport 'prismjs/components/prism-c.min';\nimport 'prismjs/components/prism-bash.min';\nimport 'prismjs/components/prism-csharp.min';\nimport 'prismjs/components/prism-objectivec.min';\nimport 'prismjs/components/prism-python.min';\nimport 'prismjs/components/prism-regex.min';\nimport 'prismjs/components/prism-scala.min';\nimport 'prismjs/components/prism-scss.min';\nimport 'prismjs/components/prism-less.min';\n\nimport 'prismjs/plugins/line-numbers/prism-line-numbers.js';\nimport 'prismjs/plugins/keep-markup/prism-keep-markup.js';\nimport {\n CodeSelectionType,\n OnCopiedToClipboardFunction,\n OnInsertToCursorPositionFunction,\n} from '../static';\nimport { Button } from './button';\nimport { Notification } from './notification';\nimport { Icon, MynahIcons } from './icon';\nimport { cancelEvent } from '../helper/events';\nimport { Config } from '../helper/config';\nimport { highlightersWithTooltip } from './card/card-body';\nimport escapeHTML from 'escape-html';\nimport unescapeHTML from 'unescape-html';\n\nconst IMPORTED_LANGS = [\n 'markup',\n 'xml',\n 'css',\n 'clike',\n 'javascript',\n 'typescript',\n 'jsx',\n 'tsx',\n 'lua',\n 'java',\n 'json',\n 'markdown',\n 'mongodb',\n 'c',\n 'bash',\n 'csharp',\n 'objectivec',\n 'python',\n 'regex',\n 'scala',\n 'scss',\n 'less',\n];\nconst DEFAULT_LANG = 'clike';\n\n// they'll be used to replaced within the code, so making them unique is a must\nexport const highlighters = {\n start: {\n markup: '<span class=\"amzn-mynah-search-result-highlight\">',\n textReplacement: '__mynahhighlighterstart__',\n },\n end: {\n markup: '</span>',\n textReplacement: '__mynahhighlighterend__',\n },\n};\nexport const ellipsis = {\n start: {\n markup: '<span class=\"amzn-mynah-search-result-ellipsis\">',\n textReplacement: '__mynahcodeellipsisstart__',\n },\n end: {\n markup: '</span>',\n textReplacement: '__mynahcodeellipsisend__',\n },\n};\n\nexport interface SyntaxHighlighterProps {\n codeStringWithMarkup: string;\n language?: string;\n keepHighlights?: boolean;\n showLineNumbers?: boolean;\n block?: boolean;\n startingLineNumber?: number;\n showCopyOptions?: boolean;\n onCopiedToClipboard?: OnCopiedToClipboardFunction;\n onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n}\n\nexport class SyntaxHighlighter {\n private readonly onCopiedToClipboard?: OnCopiedToClipboardFunction;\n private readonly onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n render: ExtendedHTMLElement;\n\n constructor (props: SyntaxHighlighterProps) {\n this.onCopiedToClipboard = props.onCopiedToClipboard;\n this.onInsertToCursorPosition = props.onInsertToCursorPosition;\n\n let codeMarkup = unescapeHTML(props.codeStringWithMarkup);\n // Replacing the incoming markups with keyword matching static texts\n if (props.keepHighlights === true) {\n codeMarkup = codeMarkup\n .replace(new RegExp(highlighters.start.markup, 'g'), highlighters.start.textReplacement)\n .replace(new RegExp(highlighters.end.markup, 'g'), highlighters.end.textReplacement)\n .replace(new RegExp(ellipsis.start.markup, 'g'), ellipsis.start.textReplacement)\n .replace(new RegExp(ellipsis.end.markup, 'g'), ellipsis.end.textReplacement);\n }\n\n let escapedCodeBlock = escapeHTML(codeMarkup);\n\n // Convert reference tracker escaped markups back to original incoming from the parent\n escapedCodeBlock = escapedCodeBlock\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.start.markupStart), 'g'), highlightersWithTooltip.start.markupStart)\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.start.markupEnd), 'g'), highlightersWithTooltip.start.markupEnd)\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.end.markup), 'g'), highlightersWithTooltip.end.markup);\n\n const preElement = DomBuilder.getInstance().build({\n type: 'pre',\n classNames: [ 'keep-markup',\n `language-${props.language !== undefined && IMPORTED_LANGS.includes(props.language) ? props.language : DEFAULT_LANG}`,\n ...(props.showLineNumbers === true ? [ 'line-numbers' ] : []),\n ],\n children: [\n {\n type: 'code',\n innerHTML: escapedCodeBlock,\n }\n ],\n events: {\n copy: (e) => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCodeContextMenu();\n if (selectedCode.code.length > 0) { this.copyToClipboard(selectedCode.code, selectedCode.type); }\n }\n }\n });\n highlightElement(preElement);\n\n // replacing back the keyword matchings for incoming highlights to markup for highlighting code\n if (props.keepHighlights === true) {\n preElement.innerHTML = preElement.innerHTML\n .replace(new RegExp(highlighters.start.textReplacement, 'g'), highlighters.start.markup)\n .replace(new RegExp(highlighters.end.textReplacement, 'g'), highlighters.end.markup)\n .replace(new RegExp(ellipsis.start.textReplacement, 'g'), ellipsis.start.markup)\n .replace(new RegExp(ellipsis.end.textReplacement, 'g'), ellipsis.end.markup);\n }\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-syntax-highlighter',\n ...(props.block !== true ? [ 'mynah-inline-code' ] : []),\n ],\n children: [\n ...(props.showCopyOptions === true\n ? [\n {\n type: 'div',\n classNames: [ 'mynah-syntax-highlighter-copy-buttons' ],\n children: [\n ...(props.language !== undefined\n ? [ {\n type: 'span',\n classNames: [ 'mynah-syntax-highlighter-language' ],\n children: [ props.language ]\n } ]\n : []),\n new Button({\n icon: new Icon({ icon: MynahIcons.CURSOR_INSERT }).render,\n label: Config.getInstance().config.texts.insertAtCursorLabel,\n attributes: { title: Config.getInstance().config.texts.insertAtCursorLabel },\n primary: false,\n onClick: e => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCode();\n if (this.onInsertToCursorPosition !== undefined) {\n this.onInsertToCursorPosition(\n selectedCode.type,\n selectedCode.code,\n );\n }\n },\n additionalEvents: { mousedown: cancelEvent },\n }).render,\n new Button({\n icon: new Icon({ icon: MynahIcons.COPY }).render,\n label: Config.getInstance().config.texts.copy,\n attributes: { title: Config.getInstance().config.texts.copy },\n primary: false,\n onClick: e => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCode();\n this.copyToClipboard(selectedCode.code, selectedCode.type);\n },\n additionalEvents: { mousedown: cancelEvent },\n }).render,\n ],\n },\n ]\n : []),\n preElement,\n ...(props.showLineNumbers === true\n ? [\n {\n type: 'span',\n classNames: [ 'line-numbers-rows' ],\n children: (preElement.innerHTML).split(/\\n/).slice(0, -1).map((n: string, i: number) => ({\n type: 'span',\n innerHTML: String(i + (props.startingLineNumber ?? 1)),\n })),\n }\n ]\n : [])\n ],\n });\n }\n\n private readonly getSelectedCodeContextMenu = (): {\n code: string;\n type: CodeSelectionType;\n } => ({\n code: document.getSelection()?.toString() ?? '',\n type: 'selection'\n });\n\n private readonly getSelectedCode = (): {\n code: string;\n type: CodeSelectionType;\n } => ({\n code: this.render.querySelector('pre')?.innerText ?? '',\n type: 'block'\n });\n\n private readonly copyToClipboard = (\n textToSendClipboard: string,\n type?: CodeSelectionType,\n notificationText?: string,\n ): void => {\n if (!document.hasFocus()) {\n window.focus();\n }\n navigator.clipboard\n .writeText(textToSendClipboard)\n .then(() => {\n if (this.onCopiedToClipboard !== undefined) {\n this.onCopiedToClipboard(\n type,\n textToSendClipboard,\n // this.highlightRangeWithTooltip\n );\n }\n if (notificationText !== undefined) {\n // eslint-disable no-new\n new Notification({\n content: notificationText,\n title: Config.getInstance().config.texts.copyToClipboard,\n duration: 2000,\n }).notify();\n }\n })\n .catch(e => {\n //\n });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// eslint-disable @typescript-eslint/restrict-template-expressions\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { Button } from './button';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from './overlay';\n\nexport interface ToggleOption {\n label?: ExtendedHTMLElement | string | HTMLElement;\n icon?: MynahIcons;\n disabled?: boolean;\n selected?: boolean;\n value: string;\n disabledTooltip?: string | ExtendedHTMLElement;\n}\ninterface ToggleOptionRenderProps extends ToggleOption {\n name: string;\n onChange?: (selectedValue: string) => void;\n onRemove?: (selectedValue: string) => void;\n}\nclass ToggleOptionItem {\n render: ExtendedHTMLElement;\n private readonly props: ToggleOptionRenderProps;\n private disabledTooltip?: Overlay;\n private disabledTooltipTimer: ReturnType<typeof setTimeout>;\n constructor (props: ToggleOptionRenderProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n attributes: {\n key: `${this.props.name}-${this.props.value}`,\n title: this.props.label as string ?? '',\n },\n events: {\n ...(this.props.disabled === true && this.props.disabledTooltip !== undefined\n ? {\n mouseenter: () => {\n this.disabledTooltipTimer = setTimeout(() => {\n this.disabledTooltip = new Overlay({\n children: [ {\n type: 'span',\n classNames: [ 'mynah-toggle-disabled-tooltip-container' ],\n children: [ this.props.disabledTooltip ?? '' ]\n } ],\n closeOnOutsideClick: false,\n dimOutside: false,\n referenceElement: this.render,\n horizontalDirection: OverlayHorizontalDirection.CENTER,\n verticalDirection: OverlayVerticalDirection.TO_TOP\n });\n }, 500);\n },\n mouseleave: () => {\n clearTimeout(this.disabledTooltipTimer);\n if (this.disabledTooltip !== undefined) {\n this.disabledTooltip.close();\n setTimeout(() => {\n this.disabledTooltip = undefined;\n }, 50);\n }\n }\n }\n : {})\n },\n children: [\n {\n type: 'input',\n classNames: [ 'mynah-toggle-option' ],\n attributes: {\n type: 'radio',\n id: `${this.props.name}-${this.props.value}`,\n value: this.props.value,\n name: this.props.name,\n ...(this.props.selected === true ? { checked: 'checked' } : {}),\n ...(this.props.disabled === true ? { disabled: 'disabled' } : {}),\n },\n events: {\n change: () => {\n if (this.props.onChange != null) {\n this.props.onChange(this.props.value);\n }\n }\n },\n },\n {\n type: 'label',\n classNames: [ 'mynah-toggle-option-label' ],\n attributes: {\n for: `${this.props.name}-${this.props.value}`,\n },\n events: {\n dblclick: (e) => {\n cancelEvent(e);\n },\n auxclick: () => {\n if (this.props.onRemove !== undefined) {\n this.props.onRemove(this.props.value);\n }\n }\n },\n children: [\n this.props.icon !== undefined ? new Icon({ icon: props.icon as MynahIcons }).render : '',\n {\n type: 'span',\n classNames: [ 'mynah-toggle-option-label-text' ],\n children: [ this.props.label ?? '' ]\n },\n this.props.onRemove !== undefined\n ? new Button({\n classNames: [ 'mynah-toggle-close-button' ],\n onClick: () => {\n if (this.props.onRemove !== undefined) {\n this.props.onRemove(this.props.value);\n }\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render,\n primary: false\n }).render\n : ''\n ],\n },\n ],\n });\n }\n}\nexport interface ToggleProps {\n options: ToggleOption[];\n direction?: 'horizontal' | 'vertical';\n value?: string | null;\n name: string;\n disabled?: boolean;\n onChange?: (selectedValue: string) => void;\n onRemove?: (selectedValue: string) => void;\n}\nexport class Toggle {\n render: ExtendedHTMLElement;\n private readonly props: ToggleProps;\n private currentValue?: string | null;\n\n constructor (props: ToggleProps) {\n this.props = { direction: 'horizontal', ...props };\n this.currentValue = this.props.value;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-toggle-container', 'mynah-toggle-type-tabs', `mynah-toggle-direction-${this.props.direction as string}` ],\n attributes: { disabled: props.disabled === true ? 'disabled' : '' },\n children: this.getChildren(props.value),\n events: {\n wheel: this.transformScroll\n }\n });\n }\n\n private readonly transformScroll = (e: WheelEvent): void => {\n if (e.deltaY === 0) {\n return;\n }\n this.render.scrollLeft += e.deltaY;\n cancelEvent(e);\n };\n\n private readonly getChildren = (value?: string | null): any[] => [\n ...this.props.options.map(option => {\n return new ToggleOptionItem({\n ...option,\n selected: value === option.value,\n name: this.props.name,\n onChange: this.updateSelectionRender,\n onRemove: this.props.onRemove\n }).render;\n })\n ];\n\n private readonly updateSelectionRender = (value: string): void => {\n if (this.props.onChange !== undefined) {\n this.props.onChange(value);\n }\n };\n\n setValue = (value: string): void => {\n if (value !== this.getValue()) {\n this.currentValue = value;\n const elmToCheck = this.render.querySelector(`#${this.props.name}-${value}`);\n if (elmToCheck !== undefined) {\n (elmToCheck as HTMLInputElement).click();\n (elmToCheck as HTMLInputElement).checked = true;\n ((elmToCheck as HTMLInputElement).nextSibling as HTMLLabelElement).classList.remove('indication');\n }\n }\n };\n\n addOption = (option: ToggleOption): void => {\n this.props.options.push(option);\n this.render.appendChild(new ToggleOptionItem({\n ...option,\n name: this.props.name,\n onChange: this.updateSelectionRender,\n onRemove: this.props.onRemove\n }).render);\n if (option.selected === true) {\n this.setValue(option.value);\n this.snapToOption(option.value);\n }\n };\n\n removeOption = (value: string): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck = this.render.querySelector(`span[key=\"${this.props.name}-${value}\"]`);\n if (elmToCheck !== undefined) {\n elmToCheck?.remove();\n }\n };\n\n updateOptionTitle = (value: string, title: string): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck = this.render.querySelector(`span[key=\"${this.props.name}-${value}\"] .mynah-toggle-option-label-text`);\n if (elmToCheck !== undefined) {\n (elmToCheck as HTMLSpanElement).innerHTML = title;\n }\n };\n\n updateOptionIndicator = (value: string, indication: boolean): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck: HTMLLabelElement | null = this.render.querySelector(`label[for=\"${this.props.name}-${value}\"]`);\n if (elmToCheck !== null) {\n if (indication && value !== this.getValue()) {\n elmToCheck.classList.add('indication');\n } else {\n elmToCheck.classList.remove('indication');\n }\n }\n };\n\n snapToOption = (value: string): void => {\n const elmToCheck = this.render.querySelector(`#${this.props.name}-${value}`);\n if (elmToCheck !== undefined) {\n this.render.scrollLeft = (elmToCheck?.parentNode as HTMLElement).offsetLeft;\n }\n };\n\n getValue = (): string | undefined | null => this.currentValue;\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ConfigModel } from '../static';\n\nconst configDefaults: ConfigModel = {\n maxTabs: 1000,\n feedbackOptions: [\n {\n value: 'inaccurate-response',\n label: 'Inaccurate response',\n },\n {\n value: 'harmful-content',\n label: 'Harmful content'\n },\n {\n value: 'overlap',\n label: 'Overlaps with existing content'\n },\n {\n value: 'incorrect-syntax',\n label: 'Incorrect syntax'\n },\n {\n value: 'buggy-code',\n label: 'Buggy code'\n },\n {\n value: 'low-quality',\n label: 'Low quality'\n },\n {\n value: 'other',\n label: 'Other'\n }\n ],\n texts: {\n mainTitle: 'AWS Q',\n copy: 'Copy',\n insertAtCursorLabel: 'Insert at cursor',\n feedbackFormTitle: 'Report an issue',\n feedbackFormOptionsLabel: 'What type of issue would you like to report?',\n feedbackFormCommentLabel: 'Description of issue (optional):',\n feedbackThanks: 'Thanks!',\n feedbackReportButtonLabel: 'Report an issue',\n codeSuggestions: 'Code Suggestions',\n files: 'file(s)',\n clickFileToViewDiff: 'Click on a file to view diff.',\n showMore: 'Show more',\n save: 'Save',\n cancel: 'Cancel',\n submit: 'Submit',\n stopGenerating: 'Stop generating',\n copyToClipboard: 'Copied to clipboard',\n noMoreTabsTooltip: 'You\\'ve reached maximum number of tabs you can simultaneously use.',\n codeSuggestionWithReferenceTitle: 'Some suggestions contain code with references.'\n }\n};\nexport class Config {\n private static instance: Config;\n public config: ConfigModel;\n private constructor (config?: Partial<ConfigModel>) {\n this.config = { ...configDefaults, ...config };\n }\n\n public static getInstance (config?: Partial<ConfigModel>): Config {\n if (Config.instance === undefined) {\n Config.instance = new Config(config);\n }\n\n return Config.instance;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const getTimeDiff = (differenceInMs: number, show?: {\n years?: boolean;\n months?: boolean;\n weeks?: boolean;\n days?: boolean;\n hours?: boolean;\n minutes?: boolean;\n} | 1 | 2 | 3 | 4 | 5 | 6, separator?: string): string => {\n // get total seconds for the difference\n let delta = Math.abs(differenceInMs) / 1000;\n\n // calculate (and subtract) whole years\n const years = Math.floor(delta / (86_400 * 30 * 12));\n delta -= years * (86_400 * 30 * 12);\n\n // calculate (and subtract) whole months\n const months = Math.floor(delta / (86_400 * 30));\n delta -= months * (86_400 * 30);\n\n // calculate (and subtract) whole weeks\n const weeks = Math.floor(delta / (86_400 * 7));\n delta -= weeks * (86_400 * 7);\n\n // calculate (and subtract) whole days\n const days = Math.floor(delta / 86_400);\n delta -= days * 86_400;\n\n // calculate (and subtract) whole hours\n const hours = Math.floor(delta / 3_600) % 24;\n delta -= hours * 3_600;\n\n // calculate (and subtract) whole minutes\n const minutes = Math.floor(delta / 60) % 60;\n delta -= minutes * 60;\n\n const combined = [];\n if (years !== 0 && (show === undefined || typeof show !== 'object' || show.years !== false)) {\n combined.push(`${years}yr`);\n }\n if (months !== 0 && (show === undefined || typeof show !== 'object' || show.months !== false)) {\n combined.push(`${months}mo`);\n }\n if (weeks !== 0 && (show === undefined || typeof show !== 'object' || show.weeks !== false)) {\n combined.push(`${weeks}we`);\n }\n if (days !== 0 && (show === undefined || typeof show !== 'object' || show.days !== false)) {\n combined.push(`${days}da`);\n }\n if (hours !== 0 && (show === undefined || typeof show !== 'object' || show.hours !== false)) {\n combined.push(`${hours}hr`);\n }\n if (minutes !== 0 && (show === undefined || typeof show !== 'object' || show.minutes !== false)) {\n combined.push(`${minutes}min`);\n }\n\n if (years + months + weeks + days + hours + minutes === 0) {\n return '1min';\n }\n\n if (show !== undefined && typeof show === 'number') {\n combined.splice(show, combined.length);\n }\n return combined.join(separator ?? ' ');\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MynahPortalNames } from '../static';\nimport { cancelEvent } from './events';\n\n/* eslint-disable @typescript-eslint/method-signature-style */\n/* eslint-disable @typescript-eslint/consistent-type-assertions */\n/* eslint-disable @typescript-eslint/prefer-optional-chain */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\nexport const DS: typeof document.querySelectorAll = document.querySelectorAll.bind(document);\n\nexport interface DomBuilderObject {\n type: string;\n attributes?: Record<string, string> | undefined;\n classNames?: string[] | undefined;\n events?: Record<string, (event?: any) => any> | undefined;\n children?: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement> | undefined;\n innerHTML?: string | undefined;\n persistent?: boolean | undefined;\n}\n\nexport interface DomBuilderObjectFilled {\n attributes?: Record<string, string | undefined>;\n classNames?: string[];\n events?: Record<string, (event?: any) => any>;\n children?: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>;\n innerHTML?: string | undefined;\n persistent?: boolean;\n}\n\nconst EmptyDomBuilderObject: DomBuilderObject = {\n type: 'div',\n attributes: {},\n classNames: [],\n events: {},\n children: [],\n innerHTML: undefined,\n persistent: false,\n};\n\nexport interface ExtendedHTMLElement extends HTMLInputElement {\n addClass(className: string): ExtendedHTMLElement;\n removeClass(className: string): ExtendedHTMLElement;\n toggleClass(className: string): ExtendedHTMLElement;\n hasClass(className: string): boolean;\n insertChild(\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend',\n child:\n | string\n | DomBuilderObject\n | HTMLElement\n | ExtendedHTMLElement\n | Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>\n ): ExtendedHTMLElement;\n clear(removePersistent?: boolean): ExtendedHTMLElement;\n builderObject: DomBuilderObject;\n update(builderObject: DomBuilderObjectFilled): ExtendedHTMLElement;\n}\n\nexport class DomBuilder {\n private static instance: DomBuilder;\n root: ExtendedHTMLElement;\n private portals: Record<string, ExtendedHTMLElement> = {};\n\n private constructor (rootSelector: string) {\n this.root = DS(rootSelector)[0] as ExtendedHTMLElement;\n this.extendDomFunctionality(this.root);\n }\n\n public static getInstance (rootSelector?: string): DomBuilder {\n if (!DomBuilder.instance) {\n DomBuilder.instance = new DomBuilder(rootSelector !== undefined ? rootSelector : 'body');\n }\n\n return DomBuilder.instance;\n }\n\n addClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n if (className !== '') {\n this.classList.add(className);\n // eslint-disable-next-line @typescript-eslint/prefer-includes\n if (this.builderObject.classNames?.indexOf(className) === -1) {\n this.builderObject.classNames = [ ...this.builderObject.classNames, className ];\n }\n }\n return this;\n };\n\n removeClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n this.classList.remove(className);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (this.builderObject.classNames !== undefined && this.builderObject.classNames.includes(className)) {\n this.builderObject.classNames.splice(this.builderObject.classNames.indexOf(className), 1);\n }\n return this;\n };\n\n toggleClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n if (this.classList.contains(className)) {\n this.removeClass(className);\n } else {\n this.addClass(className);\n }\n return this;\n };\n\n hasClass = function (this: ExtendedHTMLElement, className: string): boolean {\n return this.classList.contains(className);\n };\n\n insertChild = function (\n this: ExtendedHTMLElement,\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend',\n child: string | HTMLElement | ExtendedHTMLElement | Array<string | HTMLElement | ExtendedHTMLElement>\n ): ExtendedHTMLElement {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (child) {\n if (child instanceof Array) {\n child.forEach(childItem => {\n if (childItem instanceof Element) {\n this.insertAdjacentElement(position, childItem);\n } else if (typeof childItem === 'string') {\n this.insertAdjacentText(position, childItem);\n }\n });\n } else {\n if (child instanceof Element) {\n this.insertAdjacentElement(position, child);\n } else if (typeof child === 'string') {\n this.insertAdjacentText(position, child);\n }\n }\n }\n return this;\n };\n\n clearChildren = function (this: ExtendedHTMLElement, removePersistent: boolean): ExtendedHTMLElement {\n Array.from(this.childNodes).forEach((child: ExtendedHTMLElement | ChildNode) => {\n if (\n removePersistent ||\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n !(child as ExtendedHTMLElement).builderObject ||\n (child as ExtendedHTMLElement).builderObject.persistent !== true\n ) {\n child.remove();\n }\n });\n return this;\n };\n\n extendDomFunctionality = function (this: DomBuilder, domElement: HTMLElement): ExtendedHTMLElement {\n const extendedElement: ExtendedHTMLElement = domElement as ExtendedHTMLElement;\n extendedElement.addClass = this.addClass.bind(extendedElement);\n extendedElement.removeClass = this.removeClass.bind(extendedElement);\n extendedElement.toggleClass = this.toggleClass.bind(extendedElement);\n extendedElement.hasClass = this.hasClass.bind(extendedElement);\n extendedElement.insertChild = this.insertChild.bind(extendedElement);\n extendedElement.clear = this.clearChildren.bind(extendedElement);\n return extendedElement;\n };\n\n build = (domBuilderObject: DomBuilderObject): ExtendedHTMLElement => {\n const readyToBuildObject: DomBuilderObject = { ...EmptyDomBuilderObject, ...domBuilderObject };\n const buildedDom = document.createElement(readyToBuildObject.type);\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n buildedDom.classList.add(...(readyToBuildObject.classNames?.filter(className => className !== '') || []));\n\n Object.keys(readyToBuildObject.events ?? {}).forEach((eventName: string) =>\n buildedDom.addEventListener(\n eventName,\n readyToBuildObject.events ? readyToBuildObject.events[eventName] : cancelEvent\n )\n );\n\n Object.keys(readyToBuildObject.attributes ?? {}).forEach(attributeName =>\n buildedDom.setAttribute(\n attributeName,\n readyToBuildObject.attributes !== undefined ? readyToBuildObject.attributes[attributeName] : ''\n )\n );\n\n if (typeof readyToBuildObject.innerHTML === 'string') {\n buildedDom.innerHTML = readyToBuildObject.innerHTML;\n } else if (readyToBuildObject.children !== undefined && readyToBuildObject.children?.length > 0) {\n this.insertChild.apply(buildedDom as ExtendedHTMLElement, [\n 'beforeend',\n [\n ...(readyToBuildObject.children).map(\n (child: string | ExtendedHTMLElement | HTMLElement | DomBuilderObject) => {\n if (typeof child === 'string' || child instanceof HTMLElement) {\n return child;\n }\n return this.build(child);\n }\n ),\n ],\n ]);\n };\n\n (buildedDom as ExtendedHTMLElement).builderObject = readyToBuildObject;\n (buildedDom as ExtendedHTMLElement).update = (builderObject: DomBuilderObjectFilled): ExtendedHTMLElement => {\n return this.update(buildedDom as ExtendedHTMLElement, builderObject);\n };\n this.extendDomFunctionality(buildedDom);\n return buildedDom as ExtendedHTMLElement;\n };\n\n update = function (\n domToUpdate: ExtendedHTMLElement,\n domBuilderObject: DomBuilderObjectFilled\n ): ExtendedHTMLElement {\n if (domToUpdate.builderObject) {\n if (domBuilderObject.classNames !== undefined) {\n domToUpdate.classList.remove(...(domToUpdate.builderObject.classNames as string[]));\n domToUpdate.classList.add(...domBuilderObject.classNames.filter(className => className !== ''));\n }\n\n Object.keys(domBuilderObject.events ?? {}).forEach(eventName => {\n if (domToUpdate.builderObject.events !== undefined && domToUpdate.builderObject.events[eventName]) {\n domToUpdate.removeEventListener(eventName, domToUpdate.builderObject.events[eventName]);\n }\n if (domBuilderObject.events !== undefined && domBuilderObject.events[eventName] !== undefined) {\n domToUpdate.addEventListener(eventName, domBuilderObject.events[eventName]);\n }\n });\n\n Object.keys(domBuilderObject.attributes ?? {}).forEach(attributeName => {\n if (\n domBuilderObject.attributes !== undefined &&\n domBuilderObject.attributes[attributeName] === undefined\n ) {\n domToUpdate.removeAttribute(attributeName);\n } else if (domBuilderObject.attributes !== undefined) {\n domToUpdate.setAttribute(attributeName, domBuilderObject.attributes[attributeName] as string);\n }\n });\n\n if (typeof domBuilderObject.innerHTML === 'string') {\n domToUpdate.innerHTML = domBuilderObject.innerHTML;\n } else if (domBuilderObject.children !== undefined && domBuilderObject.children.length > 0) {\n domToUpdate.clear();\n domToUpdate.insertChild('beforeend', domBuilderObject.children);\n }\n\n domToUpdate.builderObject = { ...EmptyDomBuilderObject, ...domBuilderObject } as DomBuilderObject;\n } else {\n console.warn('element was not created with dom builder');\n }\n return domToUpdate;\n };\n\n createPortal = (\n portalName: string,\n builderObject: DomBuilderObject,\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend'\n ): ExtendedHTMLElement => {\n const portalDom = this.build(builderObject);\n this.root.insertChild(position || 'beforeend', portalDom);\n this.portals[portalName] = portalDom;\n return portalDom;\n };\n\n getPortal = (portalName: string): ExtendedHTMLElement => this.portals[portalName];\n removePortal = (portalName: string): void => this.portals[portalName]?.remove();\n removeAllPortals = (portalsWithName: MynahPortalNames): void => {\n Object.keys(this.portals).forEach(portalName => {\n if (portalName.match(portalsWithName) !== null) {\n this.portals[portalName].remove();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.portals[portalName];\n }\n });\n };\n}\n\nexport const htmlDecode = (input: string): string => {\n const e = document.createElement('textarea');\n e.innerHTML = input;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue ?? input;\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahEventNames } from '../static';\nimport { generateUID } from './guid';\n\nexport const cancelEvent = (event: Event): boolean => {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n return false;\n};\n\nexport class MynahUIGlobalEvents {\n private static instance: MynahUIGlobalEvents;\n private readonly listeners: Record<MynahEventNames, Record<string, (value?: any) => void>>;\n\n private constructor () {\n this.listeners = { ...this.listeners };\n }\n\n public static getInstance = (): MynahUIGlobalEvents => {\n if (MynahUIGlobalEvents.instance === undefined) {\n MynahUIGlobalEvents.instance = new MynahUIGlobalEvents();\n }\n\n return MynahUIGlobalEvents.instance;\n };\n\n /**\n * Subscribe to value changes of a specific item in data store\n * @param eventKey One of the keys in MynahUIDataModel\n * @param handler function will be called with optional data field\n * @returns listenerId which will be necessary to removeListener\n */\n public addListener = (eventKey: MynahEventNames, handler: (data?: any) => void): string => {\n const listenerId: string = generateUID();\n if (this.listeners[eventKey] === undefined) {\n this.listeners[eventKey] = {};\n }\n this.listeners[eventKey][listenerId] = handler;\n return listenerId;\n };\n\n /**\n * Unsubscribe from changes of a specific item in data store\n * @param eventKey One of the keys in MynahUIDataModel\n * @param listenerId listenerId which is returned from addListener function\n */\n public removeListener = (eventKey: MynahEventNames, listenerId: string): void => {\n if (this.listeners[eventKey]?.[listenerId] !== undefined) {\n delete this.listeners[eventKey][listenerId];\n }\n };\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public dispatch = (eventKey: MynahEventNames, data?: any): void => {\n if (this.listeners[eventKey] !== undefined) {\n Object.keys(this.listeners[eventKey]).forEach((listenerId: string) => {\n this.listeners[eventKey][listenerId](data);\n });\n }\n };\n}\n","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type TreeNode = FolderNode | FileNode;\nexport interface FileNode {\n name: string;\n type: 'file';\n filePath: string;\n deleted: boolean;\n}\nexport interface FolderNode {\n name: string;\n type: 'folder';\n children: Array<FolderNode | FileNode>;\n}\n\n/*\n * Converts a list of file Paths into a tree\n *\n * @input: The list of path in string format\n * Example Input:\n * modifiedFilePaths: [\n * \"project/src/hello.js\",\n * ]\n * deletedFilePaths: [\n * \"project/src/goodbye.js\",\n * ]\n *\n * Example output:\n * {\n * name: 'Changes',\n * type: 'folder',\n * children: [{\n * name: 'project',\n * type: 'folder',\n * children: [{\n * name: 'src',\n * type: 'folder',\n * children: [\n * { name: 'hello.js', type: 'file', filePath: 'project/src/hello.js', deleted: false },\n * { name: 'goodbye.js', type: 'file', filePath: 'project/src/goodbye.js', deleted: true },\n * ]\n * }]\n * }]\n * }\n */\nexport const fileListToTree = (modifiedFilePaths: string[], deletedFilePaths: string[] = []): TreeNode => {\n return [ ...splitFilePaths(modifiedFilePaths, false), ...splitFilePaths(deletedFilePaths, true) ].reduce<TreeNode>(\n (acc, { filePath, deleted }) => {\n // pointer to keep track of the current tree node\n let currentNode = acc;\n for (let i = 0; i < filePath.length; i++) {\n const fileOrFolder = filePath[i];\n // we can assume the leaf of each branch is a file. the LLM doesn't generate\n // empty folder changes\n if (i === filePath.length - 1) {\n // the parent of a file is always a folder\n (currentNode as FolderNode).children.push({\n type: 'file',\n name: fileOrFolder,\n filePath: filePath.join('/'),\n deleted,\n });\n break;\n } else {\n const oldItem = (currentNode as FolderNode).children.find(({ name }) => name === fileOrFolder);\n if (oldItem != null) {\n currentNode = oldItem;\n } else {\n // if the current fileOrFolder is not in the list, add it as a folder and move the pointer\n const newItem: FolderNode = { name: fileOrFolder, type: 'folder', children: [] };\n (currentNode as FolderNode).children.push(newItem);\n currentNode = newItem;\n }\n }\n }\n return acc;\n },\n // Start off with a root folder called Changes\n { name: 'Changes', type: 'folder', children: [] }\n );\n};\n\nconst splitFilePaths = (paths: string[], deleted: boolean): Array<{ filePath: string[]; deleted: boolean }> =>\n paths\n // split file path by folder. ignore dot folders\n .map(filePath => ({ filePath: filePath.split('/').filter(item => item !== undefined && item !== '.'), deleted }));\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const generateUID = (): string => {\n const firstPart: number = (Math.random() * 46656) | 0;\n const secondPart: number = (Math.random() * 46656) | 0;\n return `000${firstPart.toString(36)}`.slice(-3) + `000${secondPart.toString(36)}`.slice(-3);\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahEventNames, MynahUIDataModel } from '../static';\nimport { Config } from './config';\nimport { MynahUIGlobalEvents } from './events';\nimport { generateUID } from './guid';\n\nconst PrimitiveObjectTypes = [ 'string', 'number', 'boolean' ];\nexport class EmptyMynahUIDataModel {\n data: Required<MynahUIDataModel>;\n constructor (defaults?: MynahUIDataModel | null) {\n this.data = {\n tabTitle: Config.getInstance().config.texts.mainTitle,\n loadingChat: false,\n cancelButtonWhenLoading: true,\n showChatAvatars: false,\n quickActionCommands: [],\n promptInputPlaceholder: '',\n promptInputInfo: '',\n promptInputDisabledState: false,\n chatItems: [],\n selectedCodeSnippet: '',\n ...defaults\n };\n }\n}\nexport class MynahUIDataStore {\n private readonly subscriptions: Record<keyof MynahUIDataModel, Record<string, (newValue?: any, oldValue?: any) => void>>;\n private readonly tabId: string;\n private store: Required<MynahUIDataModel> = (new EmptyMynahUIDataModel()).data;\n private defaults: MynahUIDataModel | null = null;\n\n constructor (tabId: string, initialData?: MynahUIDataModel) {\n this.tabId = tabId;\n this.store = Object.assign(this.store, initialData);\n this.subscriptions = Object.create({});\n (Object.keys(this.store) as Array<keyof MynahUIDataModel>).forEach((storeKey) => {\n Object.assign(this.subscriptions, { [storeKey]: {} });\n });\n }\n\n /**\n * Sets the defaults to use while clearing the store\n * @param defaults partial set of MynahUIDataModel for defaults\n */\n public setDefaults = (defaults: MynahUIDataModel | null): void => {\n this.defaults = defaults;\n };\n\n /**\n * Get the defaults to use while generating an empty store data\n */\n public getDefaults = (): MynahUIDataModel | null => this.defaults;\n\n /**\n * Subscribe to value changes of a specific item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @param handler function will be called when value of the given key is updated in store with new and old values\n * @returns subscriptionId which needed to unsubscribe\n */\n public subscribe = (storeKey: keyof MynahUIDataModel, handler: (newValue: any, oldValue?: any) => void): string => {\n const subscriptionId: string = generateUID();\n this.subscriptions[storeKey][subscriptionId] = handler;\n return subscriptionId;\n };\n\n /**\n * Unsubscribe from changes of a specific item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @param subscriptionId subscriptionId which is returned from subscribe function\n */\n public unsubscribe = (storeKey: keyof MynahUIDataModel, subscriptionId: string): void => {\n if (this.subscriptions[storeKey]?.[subscriptionId] !== undefined) {\n delete this.subscriptions[storeKey][subscriptionId];\n }\n };\n\n /**\n * Returns current value of an item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @returns value of the given key in data store\n */\n public getValue = (storeKey: keyof MynahUIDataModel): any => structuredClone(this.store[storeKey]);\n\n /**\n * Returns current value of an item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @returns value of the given key in data store\n */\n public getDefaultValue = (storeKey: keyof MynahUIDataModel): any => (new EmptyMynahUIDataModel(this.defaults)).data[storeKey];\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public updateStore = (data: MynahUIDataModel, skipSubscribers?: boolean): void => {\n if (skipSubscribers !== true) {\n (Object.keys(data) as Array<keyof MynahUIDataModel>).forEach(storeKey => {\n Object.keys(this.subscriptions[storeKey]).forEach((subscriptionId: string) => {\n if (!PrimitiveObjectTypes.includes(typeof data[storeKey]) || data[storeKey] !== this.store[storeKey]) {\n this.subscriptions[storeKey][subscriptionId](data[storeKey], this.store[storeKey]);\n }\n });\n });\n }\n this.store = Object.assign(structuredClone(this.store), data);\n };\n\n /**\n * Clears store data and informs all the subscribers\n */\n public resetStore = (): void => {\n this.updateStore((new EmptyMynahUIDataModel(structuredClone(this.defaults))).data);\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.RESET_STORE, { tabId: this.tabId });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahUIDataModel, MynahUITabStoreModel, MynahUITabStoreTab } from '../static';\nimport { Config } from './config';\nimport { generateUID } from './guid';\nimport { MynahUIDataStore } from './store';\n\ninterface TabStoreSubscription {\n 'add': Record<string, (tabId: string, tabData?: MynahUITabStoreTab) => void>;\n 'remove': Record<string, (tabId: string, newSelectedTab?: MynahUITabStoreTab) => void>;\n 'update': Record<string, (tabId: string, tabData?: MynahUITabStoreTab) => void>;\n 'selectedTabChange': Record<string, (tabId: string, previousSelectedTab?: MynahUITabStoreTab) => void>;\n}\nexport class EmptyMynahUITabsStoreModel {\n data: Required<MynahUITabStoreModel>;\n constructor () {\n const guid = generateUID();\n this.data = {\n [guid]: {\n isSelected: true,\n store: {},\n }\n };\n }\n}\nexport class MynahUITabsStore {\n private static instance: MynahUITabsStore;\n private readonly subscriptions: TabStoreSubscription = {\n add: {},\n remove: {},\n update: {},\n selectedTabChange: {}\n };\n\n private readonly tabDefaults: MynahUITabStoreTab = {};\n private readonly tabsStore: Required<MynahUITabStoreModel> = {};\n private readonly tabsDataStore: Record<string, MynahUIDataStore> = {};\n\n private constructor (initialData?: MynahUITabStoreModel, defaults?: MynahUITabStoreTab) {\n this.tabsStore = Object.assign(this.tabsStore, initialData);\n if (defaults != null) {\n this.tabDefaults = defaults;\n }\n if ((initialData != null) && Object.keys(initialData).length > 0) {\n Object.keys(initialData).forEach((tabId: string) => {\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId, initialData[tabId].store ?? {});\n });\n }\n }\n\n private readonly deselectAllTabs = (): void => {\n Object.keys(this.tabsStore).forEach(tabId => {\n this.tabsStore[tabId].isSelected = false;\n });\n };\n\n public readonly addTab = (tabData?: MynahUITabStoreTab): string | undefined => {\n if (Object.keys(this.tabsStore).length < Config.getInstance().config.maxTabs) {\n const tabId = generateUID();\n this.deselectAllTabs();\n this.tabsStore[tabId] = { ...this.tabDefaults, ...tabData, isSelected: true };\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId, this.tabsStore[tabId].store ?? {});\n this.informSubscribers('add', tabId, this.tabsStore[tabId]);\n this.informSubscribers('selectedTabChange', tabId, this.tabsStore[tabId]);\n return tabId;\n }\n };\n\n public readonly removeTab = (tabId: string): string => {\n const wasSelected = this.tabsStore[tabId].isSelected ?? false;\n let newSelectedTab: MynahUITabStoreTab | undefined;\n delete this.tabsStore[tabId];\n this.tabsDataStore[tabId].resetStore();\n delete this.tabsDataStore[tabId];\n if (wasSelected) {\n const tabIds = Object.keys(this.tabsStore);\n if (tabIds.length > 0) {\n this.deselectAllTabs();\n this.selectTab(tabIds[tabIds.length - 1]);\n newSelectedTab = this.tabsStore[this.getSelectedTabId()];\n }\n }\n this.informSubscribers('remove', tabId, newSelectedTab);\n return tabId;\n };\n\n public readonly selectTab = (tabId: string): void => {\n this.deselectAllTabs();\n this.tabsStore[tabId].isSelected = true;\n this.informSubscribers('selectedTabChange', tabId, this.tabsStore[tabId]);\n };\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public updateTab = (tabId: string, tabData?: Partial<MynahUITabStoreTab>, skipSubscribers?: boolean): void => {\n if (this.tabsStore[tabId] !== undefined) {\n if (tabData?.isSelected === true && this.getSelectedTabId() !== tabId) {\n this.deselectAllTabs();\n this.informSubscribers('selectedTabChange', tabId);\n }\n this.tabsStore[tabId] = { ...this.tabsStore[tabId], ...tabData };\n if (tabData?.store !== undefined) {\n if (this.tabsDataStore[tabId] === undefined) {\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId);\n }\n this.tabsDataStore[tabId].updateStore(tabData?.store);\n }\n if (skipSubscribers !== true) {\n this.informSubscribers('update', tabId, this.tabsStore[tabId]);\n }\n }\n };\n\n public static getInstance = (initialData?: MynahUITabStoreModel, defaults?: MynahUITabStoreTab): MynahUITabsStore => {\n if (MynahUITabsStore.instance === undefined) {\n MynahUITabsStore.instance = new MynahUITabsStore(initialData, defaults);\n }\n\n return MynahUITabsStore.instance;\n };\n\n /**\n * Subscribe to changes of the tabsStore\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public addListener = (eventName: keyof TabStoreSubscription, handler: (tabId: string, tabData?: MynahUITabStoreTab) => void): string => {\n const subscriptionId: string = generateUID();\n this.subscriptions[eventName][subscriptionId] = handler;\n return subscriptionId;\n };\n\n /**\n * Subscribe to changes of the tabs' data store\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public addListenerToDataStore = (tabId: string, storeKey: keyof MynahUIDataModel, handler: (newValue: any, oldValue?: any) => void): string | null => {\n if (this.tabsDataStore[tabId] !== undefined) {\n return this.tabsDataStore[tabId].subscribe(storeKey, handler);\n }\n return null;\n };\n\n /**\n * Unsubscribe from changes of the tabs' data store\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public removeListenerFromDataStore = (tabId: string, subscriptionId: string, storeKey: keyof MynahUIDataModel): void => {\n if (this.tabsDataStore[tabId] !== undefined) {\n this.tabsDataStore[tabId].unsubscribe(storeKey, subscriptionId);\n }\n };\n\n /**\n * Unsubscribe from changes of the tabs store\n * @param subscriptionId subscriptionId which is returned from subscribe function\n */\n public removeListener = (eventName: keyof TabStoreSubscription, subscriptionId: string): void => {\n if (this.subscriptions[eventName][subscriptionId] !== undefined) {\n delete this.subscriptions[eventName][subscriptionId];\n }\n };\n\n private readonly informSubscribers = (eventName: keyof TabStoreSubscription, tabId: string, tabData?: MynahUITabStoreTab): void => {\n const subscriberKeys = Object.keys(this.subscriptions[eventName]);\n subscriberKeys.forEach(subscriberKey => {\n this.subscriptions[eventName][subscriberKey](tabId, tabData);\n });\n };\n\n /**\n * Returns the tab\n * @param tabId Tab Id\n * @returns info of the tab\n */\n public getTab = (tabId: string): MynahUITabStoreTab | null => this.tabsStore[tabId] ?? null;\n\n /**\n * Returns the tab\n * @param tabId Tab Id\n * @returns info of the tab\n */\n public getAllTabs = (): MynahUITabStoreModel => structuredClone(this.tabsStore);\n\n /**\n * Returns the data store of the tab\n * @param tabId Tab Id\n * @returns data of the tab\n */\n public getTabDataStore = (tabId: string): MynahUIDataStore => this.tabsDataStore[tabId];\n\n /**\n * Returns the data of the tab\n * @param tabId Tab Id\n * @returns data of the tab\n */\n public getSelectedTabId = (): string => {\n const tabIds = Object.keys(this.tabsStore);\n return tabIds.find(tabId => this.tabsStore[tabId].isSelected === true) ?? '';\n };\n\n /**\n * Clears store data and informs all the subscribers\n */\n public removeAllTabs = (): void => {\n Object.keys(this.tabsStore).forEach(tabId => {\n this.removeTab(tabId);\n });\n };\n\n /**\n * Get all tabs length\n * @returns tabs length\n */\n public tabsLength = (): number => Object.keys(this.tabsStore).length;\n}\n","export const getOrigin = (site: string): string => {\n let result = '';\n try {\n result = new URL(site).origin;\n } catch (err) {\n result = 'unknown';\n }\n return result;\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MynahIcons } from './components/icon';\n\nexport interface QuickActionCommand {\n command: string;\n description?: string;\n placeholder?: string;\n}\nexport interface QuickActionCommandGroup {\n groupName?: string;\n commands: QuickActionCommand[];\n}\n/**\n * data store model to update the mynah ui partially or fully\n */\nexport interface MynahUIDataModel {\n /**\n * Tab title\n * */\n tabTitle?: string;\n /**\n * Chat screen loading animation state (mainly use during the stream or getting the initial answer)\n */\n loadingChat?: boolean;\n /**\n * Show chat avatars or not\n * */\n showChatAvatars?: boolean;\n /**\n * Show cancel button while loading the chat\n * */\n cancelButtonWhenLoading?: boolean;\n /**\n * Quick Action commands to show when user hits / to the input initially\n */\n quickActionCommands?: QuickActionCommandGroup[];\n /**\n * Placeholder to be shown on prompt input\n */\n promptInputPlaceholder?: string;\n /**\n * Info block to be shown under prompt input\n */\n promptInputInfo?: string;\n /**\n * Prompt input field disabled state, set to tru to disable it\n */\n promptInputDisabledState?: boolean;\n /**\n * List of chat item objects to be shown on the web suggestions search screen\n */\n chatItems?: ChatItem[];\n // TODO\n selectedCodeSnippet?: string;\n}\n\nexport interface MynahUITabStoreTab {\n /**\n * Is tab selected\n */\n isSelected?: boolean;\n /**\n * Tab items data store\n */\n store?: MynahUIDataModel;\n}\n/**\n * tabs store model to update the tabs partially or fully\n */\nexport interface MynahUITabStoreModel {\n [tabId: string]: MynahUITabStoreTab;\n}\n\nexport enum MynahEventNames {\n RESET_STORE = 'resetStore',\n FEEDBACK_SET = 'feedbackSet',\n CARD_VOTE = 'cardVote',\n SOURCE_LINK_CLICK = 'sourceLinkClick',\n LINK_CLICK = 'linkClick',\n CHAT_ITEM_ENGAGEMENT = 'chatItemEngagement',\n COPY_CODE_TO_CLIPBOARD = 'copyCodeToClipboard',\n INSERT_CODE_TO_CURSOR_POSITION = 'insertCodeToCursorPosition',\n CHAT_PROMPT = 'chatPrompt',\n FOLLOW_UP_CLICKED = 'followUpClicked',\n SHOW_MORE_WEB_RESULTS_CLICK = 'showMoreWebResultsClick',\n SHOW_FEEDBACK_FORM = 'showFeedbackForm',\n OPEN_DIFF = 'openDiff',\n ADD_CODE_SNIPPET = 'addCodeSnippet',\n REMOVE_CODE_SNIPPET = 'removeCodeSnippet',\n};\n\nexport enum MynahPortalNames {\n WRAPPER = 'wrapper',\n SIDE_NAV = 'sideNav',\n OVERLAY = 'overlay',\n FEEDBACK_FORM = 'feedbackForm',\n};\n\nexport interface SourceLinkMetaData {\n stars?: number; // repo stars\n forks?: number; // repo forks\n answerCount?: number; // total answers if it is a question\n isOfficialDoc?: boolean; // is suggestion comes from an official api doc\n isAccepted?: boolean; // is accepted or not if it is an answer\n score?: number; // relative score according to the up and down votes for a question or an answer\n lastActivityDate?: number; // creation or last update date for question or answer\n}\n\nexport interface SourceLink {\n title: string;\n id?: string;\n url: string;\n body?: string;\n type?: string;\n metadata?: Record<string, SourceLinkMetaData>;\n}\nexport enum ChatItemType {\n PROMPT = 'prompt',\n SYSTEM_PROMPT = 'system-prompt',\n AI_PROMPT = 'ai-prompt',\n ANSWER = 'answer',\n ANSWER_STREAM = 'answer-stream',\n ANSWER_PART = 'answer-part',\n CODE_RESULT = 'code-result',\n}\n\nexport interface ChatItem {\n body?: string;\n type: ChatItemType;\n messageId?: string;\n canBeVoted?: boolean;\n followUp?: {\n text?: string;\n options?: ChatItemFollowUp[];\n };\n relatedContent?: {\n title?: string;\n content: SourceLink[];\n };\n codeReference?: ReferenceTrackerInformation[];\n fileList?: {\n filePaths?: string[];\n deletedFiles?: string[];\n };\n}\n\nexport interface ChatPrompt {\n prompt?: string;\n escapedPrompt?: string;\n command?: string;\n attachment?: SourceLink;\n}\n\nexport interface ChatItemFollowUp extends ChatPrompt {\n type?: string;\n pillText: string;\n status?: 'info' | 'success' | 'warning' | 'error';\n icon?: MynahIcons;\n}\n\nexport enum KeyMap {\n ESCAPE = 'Escape',\n ENTER = 'Enter',\n BACKSPACE = 'Backspace',\n SPACE = ' ',\n DELETE = 'Delete',\n ARROW_UP = 'ArrowUp',\n ARROW_DOWN = 'ArrowDown',\n ARROW_LEFT = 'ArrowLeft',\n ARROW_RIGHT = 'ArrowRight',\n PAGE_UP = 'PageUp',\n PAGED_OWN = 'PageDown',\n HOME = 'Home',\n END = 'End',\n META = 'Meta',\n TAB = 'Tab',\n SHIFT = 'Shift',\n CONTROL = 'Control',\n ALT = 'Alt',\n SLASH = '/',\n BACK_SLASH = '\\\\'\n}\n\nexport interface ReferenceTrackerInformation {\n licenseName?: string;\n repository?: string;\n url?: string;\n recommendationContentSpan: {\n start: number;\n end: number;\n };\n information: string;\n}\n\nexport type CodeSelectionType = 'selection' | 'block';\nexport type OnCopiedToClipboardFunction = (type?: CodeSelectionType, text?: string, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\nexport type OnInsertToCursorPositionFunction = (type?: CodeSelectionType, text?: string, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n\nexport enum RelevancyVoteType {\n UP = 'upvote',\n DOWN = 'downvote',\n}\n\n/**\n * 'interaction' will be set if there was a potential text selection or a click input was triggered by the user.\n * If this is a selection selectionDistanceTraveled object will also be filled\n * 'timespend' will be set basically if there is no interaction except mouse movements in a time spent longer than the ENGAGEMENT_DURATION_LIMIT\n * Don't forget that in 'timespend' case, user should leave the suggestion card at some point to count it as an interaction.\n * (They need to go back to the code or move to another card instead)\n */\nexport enum EngagementType {\n INTERACTION = 'interaction',\n TIME = 'timespend',\n}\n\nexport interface Engagement {\n /**\n * Engagement type\n */\n engagementType: EngagementType;\n /**\n * Total duration in ms till the engagement triggered.\n */\n engagementDurationTillTrigger: number;\n /**\n * Total mouse movement in x and y directions till the engagement triggered.\n * To avoid confusion: this is not the distance between start and end points, this is the total traveled distance.\n */\n totalMouseDistanceTraveled: { x: number; y: number };\n /**\n * If the engagementType is \"interaction\" and this object has a value, you can assume it as a text selection.\n * If the engagementType is \"interaction\" but this object is not defined, you can assume it as a click\n */\n selectionDistanceTraveled?: { x: number; y: number; selectedText?: string };\n}\n\nexport interface FeedbackPayload {\n messageId: string;\n tabId: string;\n selectedOption: string;\n comment?: string;\n}\n\nexport enum NotificationType {\n INFO = MynahIcons.INFO,\n SUCCESS = MynahIcons.OK_CIRCLED,\n WARNING = MynahIcons.WARNING,\n ERROR = MynahIcons.ERROR,\n}\n\nexport interface ConfigModel {\n texts: {\n mainTitle: string;\n feedbackFormTitle: string;\n feedbackFormOptionsLabel: string;\n feedbackFormCommentLabel: string;\n feedbackThanks: string;\n feedbackReportButtonLabel: string;\n codeSuggestions: string;\n clickFileToViewDiff: string;\n files: string;\n insertAtCursorLabel: string;\n copy: string;\n showMore: string;\n save: string;\n cancel: string;\n submit: string;\n stopGenerating: string;\n copyToClipboard: string;\n noMoreTabsTooltip: string;\n codeSuggestionWithReferenceTitle: string;\n };\n feedbackOptions: Array<{\n label: string;\n value: string;\n }>;\n maxTabs: number;\n}\n","'use strict'\n\n/**\n * un-escape special characters in the given string of html.\n *\n * @param {String} html\n * @return {String}\n */\n\nmodule.exports = function (html) {\n return String(html)\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, '\\'')\n .replace(/&#x3A;/g, ':')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&')\n}\n","/**\n * marked v7.0.5 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n'use strict';\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: false,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: false,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\nexports.defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n }\n catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n }\n else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n }\n else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n }\n else {\n return base + href;\n }\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\nfunction checkDeprecations(opt, callback) {\n if (!opt || opt.silent) {\n return;\n }\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n // TODO: Fix this rules type\n rules;\n lexer;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c, tokens: [] };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n const align = item.align[i];\n if (align) {\n if (/^ *-+: *$/.test(align)) {\n item.align[i] = 'right';\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align[i] = 'center';\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align[i] = 'left';\n }\n else {\n item.align[i] = null;\n }\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => {\n return { text: c, tokens: [] };\n });\n }\n // parse child tokens inside headers and cells\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n const raw = [...src].slice(0, lLength + match.index + rLength + 1).join('');\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n }\n else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nblock.normal = { ...block };\n/**\n * GFM Block Grammar\n */\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nblock.pedantic = {\n ...block.normal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^((?![*_])[\\spunctuation])/\n};\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\ninline._punctuation = '\\\\p{P}$+<=>`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.anyPunctuation = edit(inline.anyPunctuation, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\ninline.normal = { ...inline };\n/**\n * Pedantic Inline Grammar\n */\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\ninline.breaks = {\n ...inline.gfm,\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n\n/**\n * smartypants text replacement\n */\nfunction smartypants(text) {\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n}\n/**\n * mangle email addresses\n */\nfunction mangle(text) {\n let out = '';\n for (let i = 0; i < text.length; i++) {\n const ch = Math.random() > 0.5\n ? 'x' + text.charCodeAt(i).toString(16)\n : text.charCodeAt(i).toString();\n out += '&#' + ch + ';';\n }\n return out;\n}\n/**\n * Block Lexer\n */\nclass _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n }\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass _Slugger {\n seen;\n constructor() {\n this.seen = {};\n }\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n /**\n * Convert string to unique id\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n options;\n renderer;\n textRenderer;\n slugger;\n constructor(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n }\n else {\n itemBody += checkbox;\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(genericToken[childTokens], callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop];\n const rendererKey = prop;\n const prevRenderer = renderer[rendererKey];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop];\n const tokenizerKey = prop;\n const prevTokenizer = tokenizer[tokenizerKey];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop];\n const hooksKey = prop;\n const prevHook = hooks[hooksKey];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n hooks[hooksKey] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n #parseMarkdown(lexer, parser) {\n return (src, optOrCallback, callback) => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n checkDeprecations(opt, callback);\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (callback) {\n const resultCallback = callback;\n const highlight = opt.highlight;\n let tokens;\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n }\n catch (e) {\n return throwError(e);\n }\n const done = (err) => {\n let out;\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n }\n catch (e) {\n err = e;\n }\n }\n opt.highlight = highlight;\n return err\n ? throwError(err)\n : resultCallback(null, out);\n };\n if (!highlight || highlight.length < 3) {\n return done();\n }\n delete opt.highlight;\n if (!tokens.length)\n return done();\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n if (pending === 0) {\n done();\n }\n return;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async, callback) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt, callback) {\n return markedInstance.parse(src, opt, callback);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = exports.defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexports.Hooks = _Hooks;\nexports.Lexer = _Lexer;\nexports.Marked = Marked;\nexports.Parser = _Parser;\nexports.Renderer = _Renderer;\nexports.Slugger = _Slugger;\nexports.TextRenderer = _TextRenderer;\nexports.Tokenizer = _Tokenizer;\nexports.getDefaults = _getDefaults;\nexports.lexer = lexer;\nexports.marked = marked;\nexports.options = options;\nexports.parse = parse;\nexports.parseInline = parseInline;\nexports.parser = parser;\nexports.setOptions = setOptions;\nexports.use = use;\nexports.walkTokens = walkTokens;\n//# sourceMappingURL=marked.cjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Notification } from './components/notification';\nimport { DomBuilder, ExtendedHTMLElement } from './helper/dom';\nimport {\n MynahPortalNames,\n RelevancyVoteType,\n FeedbackPayload,\n MynahUIDataModel,\n MynahEventNames,\n NotificationType,\n ChatItem,\n ChatItemFollowUp,\n ChatPrompt,\n MynahUITabStoreModel,\n MynahUITabStoreTab,\n ConfigModel,\n ReferenceTrackerInformation,\n CodeSelectionType,\n Engagement,\n} from './static';\nimport { MynahUIGlobalEvents } from './helper/events';\nimport { Tabs } from './components/navigation-tabs';\nimport { ChatWrapper } from './components/chat-item/chat-wrapper';\nimport { FeedbackForm } from './components/feedback-form/feedback-form';\nimport { MynahUITabsStore } from './helper/tabs-store';\nimport { Config } from './helper/config';\nimport './styles/styles.scss';\n\nexport {\n FeedbackPayload,\n RelevancyVoteType,\n EngagementType,\n Engagement,\n MynahUIDataModel,\n NotificationType,\n ChatItem,\n ChatItemFollowUp,\n ChatItemType,\n ChatPrompt,\n SourceLink\n} from './static';\nexport {\n ToggleOption\n} from './components/toggle';\nexport {\n MynahIcons\n} from './components/icon';\n\nexport interface MynahUIProps {\n rootSelector?: string;\n defaults?: MynahUITabStoreTab;\n tabs?: MynahUITabStoreModel;\n config?: Partial<ConfigModel>;\n onShowMoreWebResultsClick?: (tabId: string, messageId: string) => void;\n onReady?: () => void;\n onVote?: (tabId: string, messageId: string, vote: RelevancyVoteType) => void;\n onStopChatResponse?: (tabId: string) => void;\n onResetStore?: (tabId: string) => void;\n onChatPrompt?: (tabId: string, prompt: ChatPrompt) => void;\n onFollowUpClicked?: (tabId: string, messageId: string, followUp: ChatItemFollowUp) => void;\n onTabChange?: (tabId: string) => void;\n onTabAdd?: (tabId: string) => void;\n onTabRemove?: (tabId: string) => void;\n onChatItemEngagement?: (tabId: string, messageId: string, engagement: Engagement) => void;\n onCopyCodeToClipboard?: (tabId: string, messageId: string, code?: string, type?: CodeSelectionType, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n onCodeInsertToCursorPosition?: (tabId: string, messageId: string, code?: string, type?: CodeSelectionType, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n onSourceLinkClick?: (tabId: string, messageId: string, link: string, mouseEvent?: MouseEvent) => void;\n onLinkClick?: (tabId: string, messageId: string, link: string, mouseEvent?: MouseEvent) => void;\n onSendFeedback?: (tabId: string, feedbackPayload: FeedbackPayload) => void;\n onOpenDiff?: (tabId: string, filePath: string, deleted: boolean, messageId?: string) => void;\n}\n\nexport class MynahUI {\n private readonly props: MynahUIProps;\n private readonly wrapper: ExtendedHTMLElement;\n private readonly tabsWrapper: ExtendedHTMLElement;\n private readonly tabContentsWrapper: ExtendedHTMLElement;\n private readonly feedbackForm?: FeedbackForm;\n private readonly chatWrappers: Record<string, ChatWrapper> = {};\n\n constructor (props: MynahUIProps) {\n this.props = props;\n Config.getInstance(props.config);\n DomBuilder.getInstance(props.rootSelector);\n MynahUITabsStore.getInstance(this.props.tabs, this.props.defaults);\n MynahUIGlobalEvents.getInstance();\n\n const initTabs = MynahUITabsStore.getInstance().getAllTabs();\n this.tabContentsWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-ui-tab-contents-wrapper' ],\n children: Object.keys(initTabs).map((tabId: string) => {\n this.chatWrappers[tabId] = new ChatWrapper({\n tabId,\n onStopChatResponse: props.onStopChatResponse,\n });\n return this.chatWrappers[tabId].render;\n })\n });\n\n if (props.onSendFeedback !== undefined) {\n this.feedbackForm = new FeedbackForm();\n }\n\n this.tabsWrapper = new Tabs({\n onChange: (selectedTabId: string) => {\n if (this.props.onTabChange !== undefined) {\n this.props.onTabChange(selectedTabId);\n }\n }\n }).render;\n\n this.tabsWrapper.setAttribute('selected-tab', MynahUITabsStore.getInstance().getSelectedTabId());\n\n this.wrapper = DomBuilder.getInstance().createPortal(\n MynahPortalNames.WRAPPER,\n {\n type: 'div',\n attributes: {\n id: 'mynah-wrapper'\n },\n children: [\n this.tabsWrapper,\n this.tabContentsWrapper,\n ]\n },\n 'afterbegin'\n );\n\n MynahUITabsStore.getInstance().addListener('add', (tabId: string) => {\n this.chatWrappers[tabId] = new ChatWrapper({\n tabId,\n onStopChatResponse: props.onStopChatResponse,\n });\n this.tabContentsWrapper.appendChild(this.chatWrappers[tabId].render);\n if (this.props.onTabAdd !== undefined) {\n this.props.onTabAdd(tabId);\n }\n });\n MynahUITabsStore.getInstance().addListener('remove', (tabId: string) => {\n this.chatWrappers[tabId].render.remove();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.chatWrappers[tabId];\n if (this.props.onTabRemove !== undefined) {\n this.props.onTabRemove(tabId);\n }\n });\n\n this.addGlobalListeners();\n setTimeout(() => {\n if (this.props.onReady !== undefined) {\n this.props.onReady();\n }\n }, 100);\n }\n\n private readonly addGlobalListeners = (): void => {\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CHAT_PROMPT, (data: {tabId: string; prompt: ChatPrompt}) => {\n if (this.props.onChatPrompt !== undefined) {\n this.props.onChatPrompt(data.tabId, data.prompt);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FOLLOW_UP_CLICKED, (data: {\n tabId: string;\n messageId: string;\n followUpOption: ChatItemFollowUp;\n }) => {\n if (this.props.onFollowUpClicked !== undefined) {\n this.props.onFollowUpClicked(data.tabId, data.messageId, data.followUpOption);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SHOW_MORE_WEB_RESULTS_CLICK, (data: {messageId: string}) => {\n if (this.props.onShowMoreWebResultsClick !== undefined) {\n this.props.onShowMoreWebResultsClick(MynahUITabsStore.getInstance().getSelectedTabId(), data.messageId);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FEEDBACK_SET, (feedbackData) => {\n if (this.props.onSendFeedback !== undefined) {\n this.props.onSendFeedback(MynahUITabsStore.getInstance().getSelectedTabId(), feedbackData);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CHAT_ITEM_ENGAGEMENT, (data: { engagement: Engagement; messageId: string }) => {\n if (this.props.onChatItemEngagement !== undefined) {\n this.props.onChatItemEngagement(MynahUITabsStore.getInstance().getSelectedTabId(), data.messageId, data.engagement);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.COPY_CODE_TO_CLIPBOARD, (data) => {\n if (this.props.onCopyCodeToClipboard !== undefined) {\n this.props.onCopyCodeToClipboard(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.text,\n data.type,\n data.referenceTrackerInformation\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.INSERT_CODE_TO_CURSOR_POSITION, (data) => {\n if (this.props.onCodeInsertToCursorPosition !== undefined) {\n this.props.onCodeInsertToCursorPosition(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.text,\n data.type,\n data.referenceTrackerInformation\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SOURCE_LINK_CLICK, (data) => {\n if (this.props.onSourceLinkClick !== undefined) {\n this.props.onSourceLinkClick(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.link,\n data.event\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.LINK_CLICK, (data) => {\n if (this.props.onLinkClick !== undefined) {\n this.props.onLinkClick(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.link,\n data.event\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CARD_VOTE, (data) => {\n if (this.props.onVote !== undefined) {\n this.props.onVote(\n data.tabId,\n data.messageId,\n data.vote\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.RESET_STORE, (data: {tabId: string}) => {\n if (this.props.onResetStore !== undefined) {\n this.props.onResetStore(data.tabId);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.OPEN_DIFF, (data) => {\n if (this.props.onOpenDiff !== undefined) {\n this.props.onOpenDiff(data.tabId, data.filePath, data.deleted, data.messageId);\n }\n });\n };\n\n public addToUserPrompt = (tabId: string, prompt: string): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n this.chatWrappers[tabId].addToPrompt(prompt);\n }\n };\n\n /**\n * Adds a new answer on the chat window\n * @param tabId Corresponding tab ID.\n * @param answer An ChatItem object.\n */\n public addChatItem = (tabId: string, chatItem: ChatItem): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n MynahUITabsStore.getInstance().getTabDataStore(tabId).updateStore({\n chatItems: [\n ...MynahUITabsStore.getInstance().getTabDataStore(tabId).getValue('chatItems'),\n chatItem\n ]\n });\n }\n };\n\n /**\n * Updates the body of the last ChatItemType.ANSWER_STREAM chat item\n * @param body new body stream as string.\n */\n public updateLastChatAnswer = (tabId: string, updateWith: Partial<ChatItem>): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n this.chatWrappers[tabId].updateLastChatAnswer(updateWith);\n }\n };\n\n /**\n * Updates only the UI with the given data for the given tab\n * Send tab id as an empty string to open a new tab!\n * If max tabs reached, will not return tabId\n * @param data A full or partial set of data with values.\n */\n public updateStore = (tabId: string | '', data: MynahUIDataModel): string | undefined => {\n if (tabId === '') {\n return MynahUITabsStore.getInstance().addTab({ store: { ...data } });\n } else if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n MynahUITabsStore.getInstance().updateTab(tabId, { store: { ...data } });\n }\n return tabId;\n };\n\n /**\n * Simply creates and shows a notification\n * @param props NotificationProps\n */\n public notify = (props: {\n duration?: number;\n type?: NotificationType;\n title?: string;\n content: string;\n onNotificationClick?: () => void;\n onNotificationHide?: () => void;\n }): void => {\n new Notification({\n ...props,\n onNotificationClick: () => {},\n }).notify();\n };\n}\n"],"names":["root","factory","exports","module","define","amd","self","___CSS_LOADER_EXPORT___","push","id","cssWithMappingToString","list","toString","this","map","item","content","needLayer","concat","length","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","sourceURLs","sources","source","sourceRoot","matchHtmlRegExp","string","escape","str","match","exec","html","index","lastIndex","charCodeAt","substring","e","t","a","pattern","lookbehind","alias","inside","n","bash","environment","RegExp","variable","greedy","number","operator","punctuation","entity","languages","shebang","comment","parameter","function","keyword","builtin","boolean","s","o","sh","shell","Prism","c","extend","insertBefore","char","macro","directive","expression","constant","clike","replace","r","l","trim","d","p","u","g","b","h","f","m","y","w","v","x","$","_","B","csharp","range","namespace","generic","preprocessor","E","R","z","S","j","attribute","target","A","F","P","U","Z","q","interpolation","dotnet","cs","css","atrule","rule","url","selector","property","important","rest","markup","tag","addInlined","addAttribute","java","annotation","generics","import","static","javascript","regex","hashbang","js","json","null","webmanifest","util","clone","jsx","spread","script","type","tagName","pop","openedBraces","splice","Token","hooks","add","language","tokens","less","lua","markdown","yaml","blockquote","table","code","title","hr","bold","italic","strike","forEach","toLowerCase","classes","highlight","parseInt","slice","Number","plugins","autoloader","Date","valueOf","Math","floor","random","attributes","loadLanguages","document","getElementById","innerHTML","textContent","amp","lt","gt","quot","String","fromCodePoint","fromCharCode","md","prolog","doctype","name","cdata","Object","defineProperty","value","mathml","svg","xml","ssml","atom","rss","mongodb","objectivec","objc","python","decorator","py","backreference","anchor","group","quantifier","alternation","scala","symbol","scss","parent","placeholder","statement","typescript","tsx","flags","at","ts","createRange","KeepMarkup","env","element","children","isActive","dropTokens","pos","processChildren","keepMarkup","processElement","nodeName","classList","contains","shouldKeep","posOpen","posClose","childNodes","child","nodeType","walk","elt","nodeState","nodeStart","node","nodeStartPos","nodeEnd","nodeEndPos","setStart","setEnd","appendChild","extractContents","insertNode","detach","highlightedCode","PLUGIN_NAME","NEW_LINE_EXP","config","lineNumbers","getLine","lineNumberRows","querySelector","lineNumberStart","getAttribute","lineNumberEnd","lineIndex","resize","resizeElements","assumeViewportIndependence","lastWidth","window","addEventListener","innerWidth","Array","prototype","call","querySelectorAll","pre","test","remove","lineNumbersWrapper","linesNum","lines","createElement","setAttribute","className","hasAttribute","style","counterReset","run","elements","filter","whiteSpace","getComputedStyle","currentStyle","infos","codeElement","lineNumberSizer","codeLines","split","display","oneLinerHeight","getBoundingClientRect","height","lineHeights","sizer","Boolean","info","line","childIndex","wrapper","lineNumber","_self","lang","uniqueId","plainTextGrammar","manual","disableWorkerMessageHandler","encode","isArray","objId","obj","deepClone","visited","key","hasOwnProperty","getLanguage","parentElement","setLanguage","currentScript","Error","err","src","stack","scripts","getElementsByTagName","defaultActivation","no","plain","plaintext","text","txt","redef","before","insert","grammar","ret","token","newToken","old","DFS","callback","propertyType","highlightAll","async","highlightAllUnder","container","apply","highlightElement","insertHighlightedCode","Worker","worker","filename","onmessage","evt","postMessage","immediateClose","tokenize","tokenList","LinkedList","addAfter","head","matchGrammar","array","next","tail","toArray","all","callbacks","matchedStr","matchPattern","lookbehindLength","startNode","startPos","rematch","patterns","cause","patternObj","global","currentNode","reach","removeCount","from","to","matchStr","after","removeFrom","prev","removeRange","nestedRematch","newNode","count","aliases","message","parse","close","highlightAutomaticallyCallback","readyState","defer","requestAnimationFrame","setTimeout","WorkerGlobalScope","includedCdataInside","def","attrName","Element","matches","msMatchesSelector","webkitMatchesSelector","EXTENSIONS","STATUS_ATTR","STATUS_LOADING","STATUS_LOADED","SELECTOR","extension","success","error","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","start","comma","end","parseRange","max","min","statusText","send","loadFile","fileHighlight","logged","console","warn","arguments","options","styleTagTransform","setAttributes","domAPI","insertStyleElement","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","idCountMap","identifiers","base","indexByIdentifier","sourceMap","references","updater","addElementStyle","byIndex","api","update","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","memo","styleTarget","HTMLIFrameElement","contentDocument","getTarget","styleElement","nonce","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","constructor","props","updateLabel","label","render","replaceWith","DomBuilder","getInstance","build","classNames","setEnabled","enabled","removeAttribute","primary","events","additionalEvents","click","onClick","icon","highlightersWithTooltip","markupStart","markupAttributes","markerIndex","markupEnd","CardBody","processNode","contentString","matchingLanguage","elementFromNode","onLinkClick","href","isBlockCode","snippetLanguage","find","codeString","highlighter","SyntaxHighlighter","codeStringWithMarkup","keepHighlights","showCopyOptions","block","onCopiedToClipboard","getReferenceTrackerInformationFromElement","onInsertToCursorPosition","replaceChild","cloneNode","markerElements","mark","startIndexText","generateUID","startIndexTextElement","insertAdjacentElement","startIndex","innerText","indexOf","originalRefTrackerInfo","highlightRangeWithTooltip","recommendationContentSpan","showHighlightRangeTooltip","tooltipText","clearTimeout","highlightRangeTooltipTimeout","highlightRangeTooltip","Overlay","background","closeOnOutsideClick","referenceElement","currentTarget","removeOtherOverlays","dimOutside","verticalDirection","OverlayVerticalDirection","TO_TOP","horizontalDirection","OverlayHorizontalDirection","START_TO_RIGHT","body","hideHighlightRangeTooltip","getContentBodyChildren","incomingBody","generatedStartMarkup","calculatedStartIndex","calculatedEndIndex","marked","breaks","processedNode","emptyElement","highlightRangeElement","information","engagementStartTime","totalMouseDistanceTraveled","resetEngagement","previousMousePosition","mouseDownInfo","time","handleEngagement","interactionDistanceTraveled","onCardEngaged","engagementDurationTillTrigger","getTime","engagementType","EngagementType","INTERACTION","TIME","selectionDistanceTraveled","padding","border","persistent","mouseenter","clientX","clientY","mousemove","abs","mousedown","mouseup","mouseUpInfo","selectedText","getSelection","mouseleave","engagementEndTime","generateCard","generatedCard","getCardClasses","messageId","chatItem","getCardContent","ChatItemType","ANSWER_STREAM","addClass","isChatItemEmpty","isNoContent","followUp","relatedContent","ANSWER","MynahUITabsStore","getTabDataStore","tabId","getValue","chatAvatar","fileList","Card","engagement","MynahUIGlobalEvents","dispatch","MynahEventNames","CHAT_ITEM_ENGAGEMENT","commonBodyProps","LINK_CLICK","link","event","CODE_RESULT","filePaths","deletedFiles","referenceSuggestionLabel","contentBody","ChatItemTreeViewWrapper","files","codeReference","ChatItemSourceLinksContainer","referenceTrackerInformation","COPY_CODE_TO_CLIPBOARD","INSERT_CODE_TO_CURSOR_POSITION","canBeVoted","ChatItemRelevanceVote","ChatItemFollowUpContainer","getChatAvatar","Icon","PROMPT","MynahIcons","USER","MYNAH","updateCard","updateWith","updateTimer","maxHeight","scrollHeight","subscribe","insertChild","showCroppedFollowupText","followupTooltipTimeout","elm","followupTooltip","hideCroppedFollowupText","followUpOption","pillText","MAX_LENGTH","FOLLOW_UP_CLICKED","hasClass","mouseover","getElementsByClassName","option","onclick","handleVoteChange","vote","CARD_VOTE","newChildren","Config","texts","feedbackThanks","RelevancyVoteType","DOWN","Button","feedbackReportButtonLabel","sendFeedbackListenerId","addListener","FEEDBACK_SET","removeListener","SHOW_FEEDBACK_FORM","replaceChildren","UP","votingId","change","for","THUMBS_UP","THUMBS_DOWN","showMoreButtonBlock","DOWN_OPEN","SHOW_MORE_WEB_RESULTS_CLICK","sourceLink","SourceLinkHeader","showCardOnHover","SOURCE_LINK_CLICK","buildDropdownChildren","ref","CollapsibleContent","codeSuggestionWithReferenceTitle","license","ChatItemTreeViewLicense","tree","ChatItemTreeView","fileListToTree","codeSuggestions","clickFileToViewDiff","isOpen","depth","getClassNames","buildFolderNode","buildFileNode","updateTree","buildFolderChildren","childNode","folderItem","RIGHT_OPEN","cancelEvent","paddingLeft","fileItem","DOC","OPEN_DIFF","filePath","deleted","textDecoration","setCommand","command","removeClass","promptTextInputCommand","onRemoveClick","addListenerToDataStore","newInfo","MAX_USER_INPUT","commandSelectorOpen","selectedCommand","updateAvailableCharactersIndicator","totalCharsUsed","promptTextInput","getTextInputValue","remainingCharsIndicator","handleInputKeydown","blockedKeys","KeyMap","ENTER","ESCAPE","SPACE","TAB","BACK_SLASH","SLASH","navigationalKeys","ARROW_UP","ARROW_DOWN","includes","preventDefault","targetElement","commandSelector","handleCommandSelection","commandElements","nextElement","lastActiveElement","findIndex","commandElement","updateTextInputValue","filteredCommandsList","quickActionCommands","quickActionGroup","newQuickActionCommandGroup","commands","updateContent","getQuickCommandActions","BACKSPACE","clearTextArea","shiftKey","ctrlKey","stretchWidth","onClose","sendPrompt","quickCommandList","quickActionCommandGroup","groupName","quickActionCommand","description","updateTextInputPlaceholder","focus","clear","updateTextInputMaxLength","attachmentWrapper","codeSnippet","attachment","addText","textToAdd","ADD_CODE_SNIPPET","currentInputValue","selectedCodeSnippet","CHAT_PROMPT","prompt","escapedPrompt","ChatPromptInputCommand","PromptTextInput","onKeydown","onInput","sendButton","SendButton","CodeSnippet","textInputLength","currentSelectedCodeMaxLength","croppedSelectedCodeSnippet","updateSelectedCodeSnippet","REMOVE_CODE_SNIPPET","insertChatItem","chatItemCard","ChatItemCard","lastChatItemCard","AI_PROMPT","SYSTEM_PROMPT","chatItemsContainer","scrollTop","updateLastChatAnswer","addToPrompt","promptInput","chatItems","chatItemToInsert","lastItem","loadingChat","showCancelButton","intermediateBlockContainer","ChatPromptInput","promptInputElement","promptInfo","ChatPromptInputInfo","onStopChatResponse","stopGenerating","BLOCK","initChatItems","showPreviewOverLay","markdownText","previewOverlay","closePreviewOverLay","renderCodeSnippetWidget","CANCEL","_render","CodeSnippetWidget","_props","updateStore","updatePromptTextInputSizer","_promptTextInput","_promptTextInputSizer","defaultPlaceholder","maxLength","maxlength","initialDisabledState","disabled","tabindex","rows","keydown","input","blur","isDisabled","placeholderText","ENVELOPE_SEND","uid","initialCollapsedState","onCollapseStateChange","checked","val","newIcon","getComment","keyup","onChange","initComment","feedbackPayload","selectedOption","onFeedbackSet","feedbackData","feedbackComment","feedbackSelect","feedbackOptions","feedbackFormWrapper","show","initPayload","createPortal","MynahPortalNames","FEEDBACK_FORM","feedbackFormContainer","feedbackOptionsWrapper","FeedbackFormComment","feedbackSubmitButton","submit","feedbackFormTitle","feedbackFormOptionsLabel","feedbackFormCommentLabel","cancel","MynahUIIconImporter","mynahIconMappings","MENU","MINUS","SEARCH","PLUS","CHAT","LINK","EXTERNAL","CALENDAR","MEGAPHONE","NOTIFICATION","EYE","ELLIPSIS","OK","UP_OPEN","LEFT_OPEN","RESIZE_FULL","RESIZE_SMALL","OK_CIRCLED","INFO","WARNING","ERROR","STAR","LIGHT_BULB","REFRESH","PLAY","PAUSE","CODE_BLOCK","COPY","CURSOR_INSERT","TEXT_SELECT","REVERT","keys","iconKey","iconName","instance","tabIdTitleSubscriptions","tabIdChatItemsSubscriptions","getTabOptionsFromTabStoreData","tabs","getAllTabs","store","tabTitle","selected","isSelected","getTabsRender","selectedTabId","tab","assignListener","toggleGroup","Toggle","selectTab","onRemove","removeTab","tabsLength","maxTabs","noMoreTabsTooltip","addTab","TO_BOTTOM","CENTER","updateOptionTitle","updateOptionIndicator","removeListenerAssignments","removeListenerFromDataStore","dblclick","getSelectedTabId","tabData","addOption","newSelectedTab","removeOption","snapToOption","setValue","getNextCalculatedTop","prevNotifications","DS","prevNotificationRectangle","top","OVERLAY_MARGIN","getChildren","duration","NotificationType","notify","notificationOverlay","referencePoint","left","documentElement","clientWidth","TO_LEFT","onNotificationHide","onNotificationClick","guid","windowBlurHandler","removeEventListener","bind","getCalculatedLeft","referenceRectangle","width","TO_RIGHT","END_TO_LEFT","getCalculatedWidth","getCalculatedTop","START_TO_BOTTOM","END_TO_TOP","innerContainer","calculatedTop","calculatedLeft","calculatedWidth","removeAllPortals","OVERLAY","containerRectangle","winHeight","clientHeight","innerHeight","winWidth","comparingWidth","comparingHeight","suggestion","getSourceMetaBlock","metadataUnion","metaItems","metadataKey","metadata","isAccepted","lastActivityDate","getTimeDiff","answerCount","stars","forks","score","showLinkPreview","sourceLinkPreviewTimeout","sourceLinkPreview","SourceLinkCard","hideLinkPreview","splitUrl","origin","getOrigin","urlPart","SourceLinkBody","IMPORTED_LANGS","highlighters","textReplacement","ellipsis","getSelectedCodeContextMenu","getSelectedCode","copyToClipboard","textToSendClipboard","notificationText","hasFocus","navigator","clipboard","writeText","then","Notification","catch","codeMarkup","escapedCodeBlock","preElement","showLineNumbers","copy","selectedCode","insertAtCursorLabel","startingLineNumber","ToggleOptionItem","disabledTooltip","disabledTooltipTimer","auxclick","transformScroll","deltaY","scrollLeft","updateSelectionRender","currentValue","elmToCheck","nextSibling","indication","offsetLeft","direction","wheel","configDefaults","mainTitle","showMore","save","differenceInMs","separator","delta","years","months","weeks","days","hours","minutes","combined","EmptyDomBuilderObject","rootSelector","portals","builderObject","toggleClass","position","childItem","insertAdjacentText","clearChildren","removePersistent","extendDomFunctionality","domElement","extendedElement","domBuilderObject","readyToBuildObject","buildedDom","eventName","attributeName","HTMLElement","domToUpdate","portalName","portalDom","getPortal","removePortal","portalsWithName","htmlDecode","nodeValue","stopPropagation","stopImmediatePropagation","eventKey","handler","listenerId","listeners","modifiedFilePaths","deletedFilePaths","splitFilePaths","reduce","acc","fileOrFolder","oldItem","newItem","paths","firstPart","secondPart","PrimitiveObjectTypes","EmptyMynahUIDataModel","defaults","cancelButtonWhenLoading","showChatAvatars","promptInputPlaceholder","promptInputInfo","promptInputDisabledState","initialData","setDefaults","getDefaults","storeKey","subscriptionId","subscriptions","unsubscribe","structuredClone","getDefaultValue","skipSubscribers","assign","resetStore","RESET_STORE","create","selectedTabChange","tabDefaults","tabsStore","tabsDataStore","deselectAllTabs","MynahUIDataStore","informSubscribers","wasSelected","tabIds","updateTab","subscriberKey","getTab","removeAllTabs","site","URL","_getDefaults","baseUrl","extensions","gfm","headerIds","headerPrefix","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartypants","tokenizer","walkTokens","xhtml","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","unescapeTest","charAt","caret","edit","opt","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","prot","decodeURIComponent","baseUrls","justDomain","rtrim","relativeBase","protocol","domain","resolveUrl","encodeURI","noopTest","splitCells","tableRow","cells","offset","escaped","curr","shift","invert","suffLen","currChar","outputLink","cap","raw","lexer","state","inLink","inlineTokens","_Tokenizer","rules","space","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","indentCodeCompensation","inline","_escapes","heading","trimmed","blockTokens","bull","isordered","ordered","loose","items","itemRegex","itemContents","endsWithBlankLine","endEarly","repeat","nextLine","indent","trimLeft","search","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","ischecked","istask","task","trimRight","spacers","hasMultipleLineBreaks","some","paragraph","header","align","row","lheading","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","level","findClosingBracket","linkLen","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","out","_punctuation","blockSkip","anyPunctuation","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","_Lexer","inlineQueue","lex","lexInline","lastToken","cutSrc","lastParagraphClipped","leading","extTokenizer","startBlock","Infinity","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","lastIndexOf","startInline","_Renderer","infostring","quote","slugger","slug","listitem","checkbox","tablerow","tablecell","cleanHref","image","_TextRenderer","_Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","_Parser","textRenderer","parseInline","renderers","genericToken","parser","headingToken","codeToken","tableToken","cell","blockquoteToken","listToken","itemBody","unshift","htmlToken","paragraphToken","textToken","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","_Hooks","Set","preprocess","postprocess","Marked","setOptions","Parser","Renderer","TextRenderer","Lexer","Tokenizer","Slugger","Hooks","args","use","values","childTokens","pack","opts","ext","prevRenderer","extLevel","prop","rendererFunc","rendererKey","tokenizerFunc","tokenizerKey","prevTokenizer","hooksFunc","hooksKey","prevHook","passThroughHooks","has","arg","Promise","resolve","packWalktokens","optOrCallback","origOpt","throwError","checkDeprecations","resultCallback","done","pending","msg","reject","markedInstance","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","enumerable","get","globalThis","Function","Symbol","toStringTag","nc","chatWrappers","addGlobalListeners","onChatPrompt","onFollowUpClicked","onShowMoreWebResultsClick","onSendFeedback","onChatItemEngagement","onCopyCodeToClipboard","onCodeInsertToCursorPosition","onSourceLinkClick","onVote","onResetStore","onOpenDiff","addToUserPrompt","addChatItem","initTabs","tabContentsWrapper","ChatWrapper","feedbackForm","FeedbackForm","tabsWrapper","Tabs","onTabChange","WRAPPER","onTabAdd","onTabRemove","onReady"],"sourceRoot":""}
1
+ {"version":3,"file":"main.js","mappings":"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","sources":["../webpack/universalModuleDefinition",".././src/styles/styles.scss",".././node_modules/css-loader/dist/runtime/api.js",".././node_modules/css-loader/dist/runtime/sourceMaps.js",".././node_modules/escape-html/index.js",".././node_modules/prismjs/components/prism-bash.min.js",".././node_modules/prismjs/components/prism-c.min.js",".././node_modules/prismjs/components/prism-clike.min.js",".././node_modules/prismjs/components/prism-csharp.min.js",".././node_modules/prismjs/components/prism-css.min.js",".././node_modules/prismjs/components/prism-java.min.js",".././node_modules/prismjs/components/prism-javascript.min.js",".././node_modules/prismjs/components/prism-json.min.js",".././node_modules/prismjs/components/prism-jsx.min.js",".././node_modules/prismjs/components/prism-less.min.js",".././node_modules/prismjs/components/prism-lua.min.js",".././node_modules/prismjs/components/prism-markdown.min.js",".././node_modules/prismjs/components/prism-markup.min.js",".././node_modules/prismjs/components/prism-mongodb.min.js",".././node_modules/prismjs/components/prism-objectivec.min.js",".././node_modules/prismjs/components/prism-python.min.js",".././node_modules/prismjs/components/prism-regex.min.js",".././node_modules/prismjs/components/prism-scala.min.js",".././node_modules/prismjs/components/prism-scss.min.js",".././node_modules/prismjs/components/prism-tsx.min.js",".././node_modules/prismjs/components/prism-typescript.min.js",".././node_modules/prismjs/components/prism-xml-doc.min.js",".././node_modules/prismjs/plugins/keep-markup/prism-keep-markup.js",".././node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js",".././node_modules/prismjs/prism.js","webpack://MynahUI/./src/styles/styles.scss?203b",".././node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js",".././node_modules/style-loader/dist/runtime/insertBySelector.js",".././node_modules/style-loader/dist/runtime/insertStyleElement.js",".././node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js",".././node_modules/style-loader/dist/runtime/styleDomAPI.js",".././node_modules/style-loader/dist/runtime/styleTagTransform.js",".././src/components/icon/icons/block.svg",".././src/components/icon/icons/calendar.svg",".././src/components/icon/icons/cancel.svg",".././src/components/icon/icons/chat.svg",".././src/components/icon/icons/code-block.svg",".././src/components/icon/icons/copy.svg",".././src/components/icon/icons/cursor-insert.svg",".././src/components/icon/icons/doc.svg",".././src/components/icon/icons/down-open.svg",".././src/components/icon/icons/ellipsis.svg",".././src/components/icon/icons/envelope-send.svg",".././src/components/icon/icons/error.svg",".././src/components/icon/icons/external.svg",".././src/components/icon/icons/eye.svg",".././src/components/icon/icons/info.svg",".././src/components/icon/icons/left-open.svg",".././src/components/icon/icons/light-bulb.svg",".././src/components/icon/icons/link.svg",".././src/components/icon/icons/megaphone.svg",".././src/components/icon/icons/menu.svg",".././src/components/icon/icons/minus.svg",".././src/components/icon/icons/mynah.svg",".././src/components/icon/icons/notification.svg",".././src/components/icon/icons/ok-circled.svg",".././src/components/icon/icons/ok.svg",".././src/components/icon/icons/pause.svg",".././src/components/icon/icons/play.svg",".././src/components/icon/icons/plus.svg",".././src/components/icon/icons/refresh.svg",".././src/components/icon/icons/resize-full.svg",".././src/components/icon/icons/resize-small.svg",".././src/components/icon/icons/revert.svg",".././src/components/icon/icons/right-open.svg",".././src/components/icon/icons/search.svg",".././src/components/icon/icons/star.svg",".././src/components/icon/icons/text-select.svg",".././src/components/icon/icons/thumbs-down.svg",".././src/components/icon/icons/thumbs-up.svg",".././src/components/icon/icons/up-open.svg",".././src/components/icon/icons/user.svg",".././src/components/icon/icons/warning.svg",".././src/components/button.ts",".././src/components/card/card-body.ts",".././src/components/card/card.ts",".././src/components/chat-item/chat-item-card.ts",".././src/components/chat-item/chat-item-followup.ts",".././src/components/chat-item/chat-item-relevance-vote.ts",".././src/components/chat-item/chat-item-source-links.ts",".././src/components/chat-item/chat-item-tree-view-license.ts",".././src/components/chat-item/chat-item-tree-view-wrapper.ts",".././src/components/chat-item/chat-item-tree-view.ts",".././src/components/chat-item/chat-prompt-input-command.ts",".././src/components/chat-item/chat-prompt-input-info.ts",".././src/components/chat-item/chat-prompt-input.ts",".././src/components/chat-item/chat-wrapper.ts",".././src/components/chat-item/prompt-input/code-snippet-widget.ts",".././src/components/chat-item/prompt-input/code-snippet.ts",".././src/components/chat-item/prompt-input/prompt-text-input.ts",".././src/components/chat-item/prompt-input/send-button.ts",".././src/components/collapsible-content.ts",".././src/components/feedback-form/feedback-form-comment.ts",".././src/components/feedback-form/feedback-form.ts",".././src/components/icon.ts",".././src/components/icon/icon-importer.ts",".././src/components/navigation-tabs.ts",".././src/components/notification.ts",".././src/components/overlay.ts",".././src/components/source-link/source-link-body.ts",".././src/components/source-link/source-link-header.ts",".././src/components/source-link/source-link.ts",".././src/components/syntax-highlighter.ts",".././src/components/toggle.ts",".././src/helper/config.ts",".././src/helper/date-time.ts",".././src/helper/dom.ts",".././src/helper/events.ts",".././src/helper/file-tree.ts",".././src/helper/guid.ts",".././src/helper/store.ts",".././src/helper/tabs-store.ts",".././src/helper/url.ts",".././src/static.ts",".././node_modules/unescape-html/index.js",".././node_modules/marked/lib/marked.cjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/nonce",".././src/main.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MynahUI\"] = factory();\n\telse\n\t\troot[\"MynahUI\"] = factory();\n})(self, () => {\nreturn ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--mynah-font-family: var(--vscode-font-family), system-ui, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", \\\"Amazon Ember\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\"Open Sans\\\", \\\"Helvetica Neue\\\", sans-serif;font-size:var(--vscode-font-size, 13px);font-family:var(--mynah-font-family, \\\"system-ui\\\");--mynah-max-width: 2560px;--mynah-sizing-base: 0.25rem;--mynah-sizing-half: calc(var(--mynah-sizing-base) / 2);--mynah-sizing-1: var(--mynah-sizing-base);--mynah-sizing-2: calc(var(--mynah-sizing-base) * 2);--mynah-sizing-3: calc(var(--mynah-sizing-base) * 3);--mynah-sizing-4: calc(var(--mynah-sizing-base) * 4);--mynah-sizing-5: calc(var(--mynah-sizing-base) * 5);--mynah-sizing-6: calc(var(--mynah-sizing-base) * 6);--mynah-sizing-7: calc(var(--mynah-sizing-base) * 7);--mynah-sizing-8: calc(var(--mynah-sizing-base) * 8);--mynah-sizing-9: calc(var(--mynah-sizing-base) * 9);--mynah-sizing-10: calc(var(--mynah-sizing-base) * 10);--mynah-sizing-11: calc(var(--mynah-sizing-base) * 11);--mynah-sizing-12: calc(var(--mynah-sizing-base) * 12);--mynah-sizing-13: calc(var(--mynah-sizing-base) * 13);--mynah-sizing-14: calc(var(--mynah-sizing-base) * 14);--mynah-sizing-15: calc(var(--mynah-sizing-base) * 15);--mynah-sizing-16: calc(var(--mynah-sizing-base) * 16);--mynah-sizing-17: calc(var(--mynah-sizing-base) * 17);--mynah-sizing-18: calc(var(--mynah-sizing-base) * 18);--mynah-button-border-width: 1px;--mynah-border-width: 1px;--mynah-color-text-default: var(--vscode-foreground);--mynah-color-text-strong: var(--vscode-input-foreground);--mynah-color-text-weak: var(--vscode-disabledForeground);--mynah-color-text-link: var(--vscode-textLink-foreground);--mynah-color-text-input: var(--vscode-input-foreground);--mynah-color-bg: var(--vscode-sideBar-background);--mynah-color-bg-alt: var(--vscode-editorPane-background, var(--mynah-color-bg));--mynah-color-tab-active: var(--vscode-tab-activeBackground, var(--vscode-editor-background, var(--mynah-card-bg)));--mynah-color-light: rgba(0, 0, 0, 0.05);--mynah-color-deep: var(--vscode-checkbox-background);--mynah-color-deep-reverse: var(--vscode-checkbox-foreground);--mynah-color-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));--mynah-color-input-bg: var(--vscode-input-background);--mynah-color-highlight: rgba(255, 179, 0, 0.25);--mynah-color-highlight-text: #886411;--mynah-color-context-must-contain: #c7ebce;--mynah-color-context-should-contain: var(--vscode-sideBar-background);--mynah-color-context-must-not-contain: #f3cac7;--mynah-color-context-reverse: rgba(0, 0, 0, 0.5);--mynah-color-context-filter: 0.975;--mynah-color-syntax-bg: var(--vscode-terminal-dropBackground);--mynah-color-syntax-variable: var(--vscode-debugTokenExpression-name);--mynah-color-syntax-function: var(--vscode-gitDecoration-modifiedResourceForeground);--mynah-color-syntax-operator: var(--vscode-debugTokenExpression-name);--mynah-color-syntax-attr-value: var(--vscode-debugIcon-stepBackForeground);--mynah-color-syntax-attr: var(--vscode-debugTokenExpression-string);--mynah-color-syntax-property: var(--vscode-terminal-ansiCyan);--mynah-color-syntax-comment: var(--vscode-debugConsole-sourceForeground);--mynah-color-syntax-code: var(--vscode-terminal-ansiBlue);--mynah-syntax-code-font-family: var(--vscode-editor-font-family);--mynah-syntax-code-font-size: var(--vscode-editor-font-size, var(--mynah-font-size-medium));--mynah-color-status-info: var(--vscode-editorInfo-foreground);--mynah-color-status-success: var(--vscode-terminal-ansiGreen);--mynah-color-status-warning: var(--vscode-editorWarning-foreground);--mynah-color-status-error: var(--vscode-editorError-foreground);--mynah-color-button: var(--vscode-button-background);--mynah-color-button-reverse: var(--vscode-button-foreground);--mynah-color-alternate: var(--vscode-button-secondaryBackground);--mynah-color-alternate-reverse: var(--vscode-button-secondaryForeground);--mynah-color-code-bg: rgba(0, 0, 0, 0.25);--mynah-color-code-text: var(--vscode-textPreformat-foreground);--mynah-color-main: var(--vscode-button-background);--mynah-color-main-reverse: var(--vscode-button-foreground);--mynah-card-bg: var(--vscode-editor-background);--mynah-shadow-generic: none;--mynah-shadow-card: none;--mynah-shadow-card-more: none;--mynah-shadow-card-active: none;--mynah-shadow-prioritization-menu: none;--mynah-shadow-feedback-form: none;--mynah-font-size-xxsmall: 0.75rem;--mynah-font-size-xsmall: 0.85rem;--mynah-font-size-small: 0.95rem;--mynah-font-size-medium: 1rem;--mynah-font-size-large: 1.125rem;--mynah-font-size-xlarge: 1.175rem;--mynah-card-radius: var(--mynah-sizing-2);--mynah-button-radius: var(--mynah-sizing-1);--mynah-bottom-panel-transition: all 550ms cubic-bezier(0.25, 0, 0, 1);--mynah-very-short-transition: all 400ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-transform: transform 350ms cubic-bezier(0.85, 0.15, 0, 1);--mynah-long-transition: all 520ms cubic-bezier(0.35, 1, 0.15, 1);--mynah-pretty-long-transition: all 600ms cubic-bezier(0.25, 1, 0, 1);--mynah-very-long-transition: all 1400ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition: all 400ms cubic-bezier(0.85, 0.15, 0, 1);--mynah-short-transition-rev: all 420ms cubic-bezier(0.35, 1, 0, 1);--mynah-short-transition-rev-opacity: opacity 550ms cubic-bezier(0.35, 1, 0, 1);--mynah-short-transition-reflection: all 800ms cubic-bezier(0.25, 1, 0, 1), opacity 650ms 300ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-turbo: all 400ms cubic-bezier(0.25, 1, 0, 1);--mynah-short-transition-turbo-bounce: all 500ms cubic-bezier(0.25, 1, 0, 1), transform 600ms cubic-bezier(0.25, 4, 0, 1);--mynah-short-transition-bounce: all 650ms cubic-bezier(0.25, 1, 0, 1), transform 900ms cubic-bezier(0.15, 1.25, 0, 1);--mynah-text-flow-transition: all 650ms cubic-bezier(0.25, 1, 0, 1), transform 900ms cubic-bezier(0.15, 1.25, 0, 1), max-height 1100ms cubic-bezier(0.35, 1, 0, 1);--mynah-mask-image: linear-gradient( to bottom, black var(--mynah-sizing-8), black calc(100% - var(--mynah-sizing-14)), transparent );--mynah-mask-image-rev: linear-gradient(to bottom, transparent 0%, transparent 80%, black 100%);--mynah-mask-image-main: linear-gradient( to bottom, transparent, black var(--mynah-sizing-6), black calc(100% - var(--mynah-sizing-6)), transparent );--mynah-mask-image-main-rev: linear-gradient(to bottom, black, transparent calc(100% - 2px), transparent);--mynah-mask-image-skeleton: linear-gradient( to bottom, black var(--mynah-sizing-8), black calc(50% - var(--mynah-sizing-14)), transparent );--mynah-policy-group-filter: saturate(0.5) brightness(0.85)}@keyframes horizontal-roll{0%{background-position:0% bottom}100%{background-position:-200% bottom}}@keyframes bounce{from{transform:translate3d(0, 0, 0)}to{transform:translate3d(0, calc(-1 * var(--mynah-sizing-2)), 0)}}#mynah-wrapper{display:flex;flex-flow:column nowrap;margin:0 auto;width:100%;max-width:var(--mynah-max-width);box-sizing:border-box;height:100%;position:relative;overflow:hidden;justify-content:stretch;align-items:stretch}#mynah-wrapper>.mynah-ui-tab-contents-wrapper{flex:1;position:relative}button.mynah-button{border:none;min-width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);border-radius:var(--mynah-button-radius);background-color:var(--mynah-color-button);color:var(--mynah-color-button-reverse);box-shadow:var(--mynah-shadow-generic);cursor:pointer;transition:var(--mynah-very-short-transition);display:inline-flex;justify-content:center;align-items:center;outline:none;overflow:hidden;position:relative;transform:translate3d(0, 0, 0) scale(1.00001);padding:0;filter:brightness(0.9);opacity:.85}button.mynah-button.mynah-bottom-block-close-button{position:absolute;align-self:flex-end;transform:translate3d(var(--mynah-sizing-2), calc(-100% - var(--mynah-sizing-6)), 0px);background-color:var(--mynah-card-bg);color:var(--mynah-color-text-default);box-shadow:var(--mynah-shadow-feedback-form)}button.mynah-button[disabled=disabled]{opacity:.25 !important;pointer-events:none}button.mynah-button.mynah-button-secondary{background-color:transparent;color:inherit;box-shadow:none;opacity:.75;height:var(--mynah-sizing-6)}button.mynah-button.mynah-button-secondary:focus-visible,button.mynah-button.mynah-button-secondary:hover{opacity:1}button.mynah-button.mynah-button-secondary:active{box-shadow:none}button.mynah-button:focus-visible,button.mynah-button:hover{filter:brightness(1);opacity:1}button.mynah-button:active{filter:brightness(0.9);opacity:.85}button.mynah-button.mynah-icon-button{width:var(--mynah-sizing-10);height:var(--mynah-sizing-10)}button.mynah-button>.mynah-mutating-next-icon{width:var(--mynah-sizing-6);height:var(--mynah-sizing-6);transform:translate3d(0, 0, 0) rotateZ(0deg);transition:var(--mynah-short-transition-turbo);transform-origin:center center;display:inline-flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;justify-content:center;align-items:center}button.mynah-button>.mynah-mutating-next-icon>i{font-size:var(--mynah-font-size-xlarge)}button.mynah-button>.mynah-mutating-next-icon>i.mynah-loading-spinner{min-width:var(--mynah-sizing-5);min-height:var(--mynah-sizing-5);border:3px solid currentColor;opacity:.5;box-sizing:border-box;border-top-color:rgba(0,0,0,0);border-radius:var(--mynah-sizing-5);animation:spin 1s infinite linear}button.mynah-button>.mynah-mutating-next-icon>i:nth-child(2){display:none}button.mynah-button>.mynah-search-history-icon{width:var(--mynah-sizing-6);height:var(--mynah-sizing-6);transform:translate3d(0, 0, 0) rotateZ(0deg);transition:var(--mynah-short-transition-turbo);transform-origin:center center;display:inline-flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;justify-content:center;align-items:center}button.mynah-button>.mynah-search-history-icon>i{font-size:2rem}button.mynah-button>.mynah-search-history-icon>i.mynah-history-icon{min-width:var(--mynah-sizing-5);min-height:var(--mynah-sizing-5);border:3px solid currentColor;opacity:.5;box-sizing:border-box;border-top-color:rgba(0,0,0,0);border-radius:var(--mynah-button-radius);animation:spin 1s infinite linear}button.mynah-button>.mynah-search-history-icon>i:nth-child(2){display:none}button.mynah-button.mynah-button-wait{background-color:var(--mynah-color-light);color:var(--mynah-color-text-default);box-shadow:0 5px 10px -10px var(--mynah-color-light);pointer-events:none}button.mynah-button.mynah-button-wait>.mynah-mutating-next-icon>i:first-child{display:none}button.mynah-button.mynah-button-wait>.mynah-mutating-next-icon>i:nth-child(2){display:block}button.mynah-button>span{white-space:nowrap;font-size:var(--mynah-font-size-medium);max-width:35vw;transition:var(--mynah-very-long-transition);overflow:hidden;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;padding-left:var(--mynah-sizing-3);padding-right:var(--mynah-sizing-3)}button.mynah-button>i+span{padding-left:var(--mynah-sizing-base)}.mynah-toggle-container{flex-flow:row nowrap;max-width:100%;overflow:hidden;align-items:center;position:relative;background:var(--mynah-color-context-should-contain);color:var(--mynah-color-context-reverse);justify-content:flex-start;overflow-y:hidden;overflow-x:auto;display:flex}.mynah-toggle-container>span{overflow:hidden;height:100%;min-width:var(--mynah-sizing-8);max-width:calc(3*var(--mynah-sizing-15));flex-shrink:0}.mynah-toggle-container>span>.mynah-toggle-option{display:none}.mynah-toggle-container>span>.mynah-toggle-option:not(:first-child)+.mynah-toggle-option-label{margin-left:calc(-1*var(--mynah-sizing-1))}.mynah-toggle-container>span>.mynah-toggle-option:not(:checked)+.mynah-toggle-option-label.indication:after{content:\\\"\\\";position:absolute;top:50%;margin-top:calc(-1*var(--mynah-sizing-half));left:var(--mynah-sizing-2);height:var(--mynah-sizing-1);width:var(--mynah-sizing-1);background-color:var(--mynah-color-status-success);border-radius:var(--mynah-sizing-1);border:1px solid var(--mynah-color-text-weak);opacity:.75}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label{cursor:pointer;pointer-events:all;position:relative;z-index:100;padding:0 var(--mynah-sizing-3) 0 var(--mynah-sizing-5);height:100%;box-sizing:border-box;display:inline-flex;overflow:hidden;justify-content:stretch;align-items:center;color:var(--mynah-color-text-weak);border-right:1px solid var(--mynah-color-border-default);border-top:1px solid transparent;background-color:var(--mynah-color-bg);opacity:.75;max-width:100%}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label,.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label *{user-select:none}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label>span{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.mynah-toggle-container>span>.mynah-toggle-option+.mynah-toggle-option-label>.mynah-toggle-close-button{margin-left:var(--mynah-sizing-3);font-size:var(--mynah-font-size-xsmall);min-width:1em}.mynah-toggle-container>span>.mynah-toggle-option:checked+.mynah-toggle-option-label{border-top-color:var(--mynah-color-button);color:var(--mynah-color-text-default);opacity:1;background-color:var(--mynah-color-tab-active)}.mynah-toggle-container>span>.mynah-toggle-option[disabled=disabled]{pointer-events:none !important}.mynah-toggle-container>span>.mynah-toggle-option[disabled=disabled]+.mynah-toggle-option-label{pointer-events:none !important;opacity:.25}.mynah-toggle-container.mynah-toggle-direction-vertical{flex-flow:column nowrap;gap:var(--mynah-sizing-3)}.mynah-toggle-disabled-tooltip-container{max-width:30vw;display:inline-block;padding:var(--mynah-sizing-3);font-size:80%;opacity:.85}.mynah-ui-icon{font-style:normal;font-weight:normal;display:inline-flex;width:1em;height:1em;font-variant:normal;text-transform:none;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;color:inherit;background-color:currentColor}.mynah-ui-icon>span{display:none}.mynah-nav-tabs-wrapper{border-top:var(--mynah-button-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-color-bg);display:flex;align-items:center;overflow:hidden;box-shadow:var(--mynah-shadow-generic);z-index:100;min-height:var(--mynah-sizing-10);max-height:var(--mynah-sizing-10);position:relative}.mynah-nav-tabs-wrapper:after{content:\\\"\\\";position:absolute;left:0;right:0;bottom:0;width:auto;height:var(--mynah-button-border-width);background-color:var(--mynah-color-border-default)}.mynah-nav-tabs-wrapper>.mynah-toggle-container{height:100%;background:none;box-sizing:border-box}.mynah-nav-tabs-wrapper>.mynah-toggle-container>span{white-space:nowrap}.mynah-nav-tabs-wrapper:empty{display:none}.mynah-nav-tabs-wrapper.mynah-nav-tabs-loading,.mynah-nav-tabs-wrapper.mynah-nav-tabs-loading *{pointer-events:none}.mynah-card{text-decoration:none;outline:none;position:relative;transition:var(--mynah-short-transition-rev);box-sizing:border-box;display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-3);transform:translate3d(0, 0, 0);flex:auto 0 0;width:100%;overflow:hidden;border-radius:var(--mynah-card-radius)}.mynah-card.padding-none{padding:0}.mynah-card.padding-small{padding:var(--mynah-sizing-1)}.mynah-card.padding-medium{padding:var(--mynah-sizing-3)}.mynah-card.padding-large{padding:var(--mynah-sizing-5)}.mynah-card.background{background-color:var(--mynah-card-bg)}.mynah-card.border{border:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-card>*{z-index:10;position:relative}.mynah-card>.mynah-source-link-header{display:flex;justify-content:space-between;align-items:center;opacity:1;gap:var(--mynah-sizing-2);transition:var(--mynah-very-short-transition)}.mynah-card>.mynah-source-link-header>.mynah-source-thumbnail{font-style:normal;font-weight:normal;display:none;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);font-variant:normal;text-transform:none;border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:100%;background-size:85%;background-clip:content-box;background-position:center center;background-repeat:no-repeat;align-self:flex-start;box-sizing:border-box;background-color:var(--mynah-card-bg);position:relative;overflow:hidden}.mynah-card>.mynah-source-link-header>.mynah-source-thumbnail:after{content:\\\"\\\";pointer-events:none;box-sizing:border-box;position:absolute;top:0;left:0;right:0;bottom:0;width:auto;height:auto;border:2px solid var(--mynah-card-bg);border-radius:100%}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper{flex:1 1 0;display:flex;flex-flow:column nowrap;align-items:flex-start;gap:var(--mynah-sizing-half);max-width:100%;overflow:hidden;cursor:pointer}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper:hover>.mynah-source-link-title>.mynah-source-link-expand-icon{opacity:.75;align-self:baseline}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-title{font-size:var(--mynah-font-size-medium);font-weight:500;color:var(--mynah-color-text-strong);width:100%;display:inline-flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-2);white-space:normal;text-overflow:ellipsis;text-decoration:none;outline:none;overflow:hidden}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-title>.mynah-source-link-expand-icon{transition:var(--mynah-short-transition-rev);opacity:0;color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);display:inline;padding:var(--mynah-sizing-1)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url{font-size:var(--mynah-font-size-xsmall);font-weight:300;color:var(--mynah-color-text-link);white-space:nowrap;text-overflow:ellipsis;text-decoration:none;outline:none;overflow:hidden;max-width:100%;position:relative;padding-bottom:var(--mynah-sizing-1);display:inline-block;transition:var(--mynah-short-transition-rev)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url:after{content:\\\"\\\";position:relative;display:block;bottom:0;left:0;width:100%;height:1px;border-radius:var(--mynah-sizing-half);background-color:currentColor;transform:translate3d(-30%, 0, 0);transition:var(--mynah-short-transition-rev);opacity:0}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url:hover:after{transform:translate3d(0, 0, 0);opacity:1}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:not(:last-child):after{content:\\\">\\\";margin-left:var(--mynah-sizing-1);margin-right:var(--mynah-sizing-1)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:nth-child(3)~span:not(:last-child){display:none}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:last-child{font-weight:bold}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-source-link-url>span:nth-child(3):not(:last-child):after{content:\\\"> ... >\\\"}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block{display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-1);margin-bottom:var(--mynah-sizing-half)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block:empty{display:none}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item{display:inline-flex;flex-flow:row nowrap;align-items:center;justify-content:flex-start;gap:var(--mynah-sizing-1);padding:calc(var(--mynah-sizing-half)*3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:var(--mynah-button-radius);opacity:.75}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-icon{opacity:.5;font-size:var(--mynah-font-size-medium);color:var(--mynah-color-text-weak)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-title-meta-block-item-text{font-size:var(--mynah-font-size-xxsmall);color:var(--mynah-color-text-weak)}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item>.mynah-title-meta-block-item-text::first-letter{text-transform:capitalize}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer{border-color:green;position:relative}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer:before{content:\\\"\\\";border-radius:var(--mynah-button-radius);position:absolute;top:0;left:0;right:0;bottom:0;background-color:green;opacity:.04}.mynah-card>.mynah-source-link-header>.mynah-source-link-title-wrapper>.mynah-title-meta-block>.mynah-title-meta-block-item.approved-answer>.mynah-icon{opacity:1;color:green;border-radius:var(--mynah-button-radius);width:var(--mynah-sizing-3);height:var(--mynah-sizing-3)}.mynah-card>.mynah-card-body{flex:1;overflow:hidden;position:relative;display:block}.mynah-card>.mynah-card-body>*:not(pre){font-size:var(--mynah-font-size-medium)}.mynah-card>.mynah-card-body span[start][end]{display:none}.mynah-card>.mynah-card-body>p:first-child,.mynah-card>.mynah-card-body>p:first-child h1:first-child,.mynah-card>.mynah-card-body>p:first-child h2:first-child,.mynah-card>.mynah-card-body>p:first-child h3:first-child,.mynah-card>.mynah-card-body>p:first-child h4:first-child,.mynah-card>.mynah-card-body>p:first-child h5:first-child{margin-top:0}.mynah-card>.mynah-card-body>p:first-child:last-of-type,.mynah-card>.mynah-card-body>p p:first-child{margin:0}.mynah-card>.mynah-card-body>*:not(div):not(pre),.mynah-card>.mynah-card-body>div>*:not(div):not(pre){margin-block-start:.75em;margin-block-end:.75em;padding-bottom:1px !important;user-select:text}.mynah-card>.mynah-card-body>*:not(div):not(pre):first-child,.mynah-card>.mynah-card-body>div>*:not(div):not(pre):first-child{margin-block-start:0}.mynah-card>.mynah-card-body>*:not(div):not(pre):empty,.mynah-card>.mynah-card-body>div>*:not(div):not(pre):empty{display:none}.mynah-card>.mynah-card-body>p:last-of-type,.mynah-card>.mynah-card-body>div>p:last-of-type{margin-block-end:0}.mynah-card>.mynah-card-body mark[reference-tracker],.mynah-card>.mynah-card-body>div mark[reference-tracker]{background-color:var(--mynah-color-highlight);color:inherit;cursor:help}.mynah-card>.mynah-card-body .amzn-mynah-search-result-highlight,.mynah-card>.mynah-card-body>div .amzn-mynah-search-result-highlight{background-color:var(--mynah-color-highlight);color:var(--mynah-color-highlight-text)}.mynah-card>.mynah-card-body .amzn-mynah-search-result-ellipsis,.mynah-card>.mynah-card-body>div .amzn-mynah-search-result-ellipsis{display:inline-block;position:relative;padding-left:var(--mynah-sizing-2);margin-top:var(--mynah-sizing-1);margin-bottom:var(--mynah-sizing-1);font-size:calc(1em + var(--mynah-sizing-1)) !important;user-select:none;cursor:default;height:var(--mynah-sizing-7)}.mynah-card>.mynah-card-body .amzn-mynah-search-result-ellipsis:before,.mynah-card>.mynah-card-body>div .amzn-mynah-search-result-ellipsis:before{pointer-events:none;content:\\\"\\\";width:calc(1em + var(--mynah-sizing-2));height:calc(1em + var(--mynah-sizing-2));position:absolute;left:0;top:0;background-color:currentColor;opacity:.1;border-radius:var(--mynah-sizing-1)}.mynah-card>.mynah-card-votes-wrapper{align-items:center;gap:var(--mynah-sizing-2);display:flex;align-items:center;justify-content:flex-end;border-top:1px solid var(--mynah-color-border-default);padding-top:var(--mynah-sizing-3);font-size:var(--mynah-font-size-small)}.mynah-card>.mynah-card-votes-wrapper>span.mynah-feedback-thanks{overflow:hidden}.mynah-card>.mynah-card-votes-wrapper>.mynah-button>span{padding:0;font-size:var(--mynah-font-size-small);color:var(--mynah-color-text-link)}.mynah-card>.mynah-card-votes-wrapper>.mynah-vote-text{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-small)}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote{position:relative;overflow:visible;display:inline-flex;align-items:center;box-sizing:border-box;gap:var(--mynah-sizing-3)}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-radio{display:none}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label{z-index:10;cursor:pointer;font-size:var(--mynah-font-size-small);transition:var(--mynah-short-transition);width:var(--mynah-sizing-5);height:var(--mynah-sizing-5);display:inline-flex;justify-content:center;align-items:center;color:var(--mynah-color-text-weak);opacity:.5}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label>*{pointer-events:none}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-label>i{height:calc(var(--mynah-sizing-6) + var(--mynah-sizing-half))}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-up-radio:checked~.mynah-vote-up{color:var(--mynah-color-text-default);opacity:1}.mynah-card>.mynah-card-votes-wrapper>.mynah-card-vote>.mynah-vote-down-radio:checked~.mynah-vote-down{color:var(--mynah-color-text-default);opacity:1}#mynah-feedback-form-wrapper{display:flex;flex-flow:column nowrap;position:absolute;bottom:0;left:var(--mynah-sizing-2);right:var(--mynah-sizing-2);width:auto;box-sizing:border-box;z-index:9999999;opacity:0;transform:translate3d(0, 5vh, 0);transition:var(--mynah-bottom-panel-transition);overflow:visible}#mynah-feedback-form-wrapper:before{transition:all 400ms cubic-bezier(0.25, 0, 0, 1);content:\\\"\\\";position:absolute;right:calc(-1*var(--mynah-sizing-2));bottom:0;left:0;width:100vw;height:100vh;background-color:#000;opacity:0;pointer-events:none;transform:translate3d(0, 0, 0) scale(2);transform-origin:center center;z-index:-1}#mynah-feedback-form-wrapper>.mynah-bottom-block-close-button{transform:translate3d(calc(-1 * var(--mynah-sizing-1)), calc(-100% - var(--mynah-sizing-3)), 0px)}#mynah-feedback-form-wrapper+#mynah-wrapper{transition:var(--mynah-bottom-panel-transition)}#mynah-feedback-form-wrapper:not(.mynah-feedback-form-show),#mynah-feedback-form-wrapper:not(.mynah-feedback-form-show) *{pointer-events:none !important}#mynah-feedback-form-wrapper.mynah-feedback-form-show{opacity:1;transform:translate3d(0, 0, 0)}#mynah-feedback-form-wrapper.mynah-feedback-form-show:before{opacity:.15}#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper{transform:translate3d(0, 0px, 0) scale(0.95);transform-origin:top center;opacity:.25}#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper,#mynah-feedback-form-wrapper.mynah-feedback-form-show+#mynah-wrapper *{pointer-events:none !important}.mynah-feedback-form{pointer-events:all;box-sizing:border-box;transition:var(--mynah-short-transition-rev);transform:translate3d(0, 0, 0);display:flex;flex-flow:column;gap:var(--mynah-sizing-4);align-items:stretch;transform-origin:right bottom;z-index:10;position:relative;border:var(--mynah-button-border-width) solid var(--mynah-color-border-default);border-top-right-radius:var(--mynah-card-radius);border-top-left-radius:var(--mynah-card-radius);border-bottom:none;box-shadow:0px -25px 20px -25px rgba(0,0,0,.15);background-color:var(--mynah-color-bg);padding:var(--mynah-sizing-4)}.mynah-feedback-form>.mynah-feedback-form-header{display:flex;box-sizing:border-box;align-items:center;margin-bottom:var(--mynah-sizing-4)}.mynah-feedback-form>.mynah-feedback-form-header>h4{flex:1;margin:0}.mynah-feedback-form>.mynah-feedback-form-comment{background-color:transparent;padding:var(--mynah-sizing-3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);resize:none;width:100%;height:100px;max-height:25vh;border-radius:var(--mynah-sizing-2);font-size:var(--mynah-font-size-small);outline:none;color:var(--mynah-color-text-input);background-color:var(--mynah-card-bg);box-sizing:border-box;font-family:inherit}.mynah-feedback-form>.mynah-feedback-form-select-wrapper{position:relative;display:flex;box-sizing:border-box;padding:var(--mynah-sizing-3);justify-content:flex-end;align-items:center}.mynah-feedback-form>.mynah-feedback-form-select-wrapper>.mynah-feedback-form-select{position:absolute;width:100%;left:0;color:var(--mynah-color-text-default);border-radius:var(--mynah-card-radius);padding:var(--mynah-sizing-3);border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);-webkit-appearance:none;appearance:none;text-indent:1px;text-overflow:clip;outline:none}.mynah-feedback-form>.mynah-feedback-form-select-wrapper>.mynah-feedback-form-select-handle{color:var(--mynah-color-text-weak);pointer-events:none}.mynah-feedback-form>.mynah-feedback-form-buttons-container{display:flex;justify-content:flex-end;align-items:center;gap:var(--mynah-sizing-1);box-sizing:border-box}.mynah-overlay{position:fixed;left:0;top:0;width:100%;height:100%;overflow:hidden;box-sizing:border-box;pointer-events:none;z-index:1000000}.mynah-overlay.mynah-overlay-dim-outside:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-bg);transition:var(--mynah-short-transition-rev-opacity);opacity:.45}.mynah-overlay>.mynah-overlay-container{--overlayLeftPos: 0;--overlayTopPos: 0;--overlayInnerHorizontalOrigin: left;--overlayInnerVerticalOrigin: top;position:absolute;display:block;overflow:visible;border-radius:var(--mynah-card-radius);transform:translate3d(var(--overlayLeftPos), var(--overlayTopPos), 0)}.mynah-overlay>.mynah-overlay-container .mynah-card,.mynah-overlay>.mynah-overlay-container .mynah-card *{pointer-events:none !important}.mynah-overlay>.mynah-overlay-container .mynah-card .mynah-syntax-highlighter-copy-buttons,.mynah-overlay>.mynah-overlay-container .mynah-card * .mynah-syntax-highlighter-copy-buttons{display:none}.mynah-overlay>.mynah-overlay-container .mynah-card .mynah-syntax-highlighter-copy-buttons~*:last-child,.mynah-overlay>.mynah-overlay-container .mynah-card * .mynah-syntax-highlighter-copy-buttons~*:last-child{margin-bottom:0 !important}.mynah-overlay>.mynah-overlay-container.background:before{content:\\\"\\\";background-color:transparent;transition:var(--mynah-short-transition-rev);position:absolute;top:calc(var(--mynah-button-border-width)*-1);left:calc(var(--mynah-button-border-width)*-1);right:calc(var(--mynah-button-border-width)*-1);bottom:calc(var(--mynah-button-border-width)*-1);width:auto;height:auto;pointer-events:none;box-sizing:border-box;opacity:0;border:var(--mynah-button-border-width) solid var(--mynah-color-border-default);box-shadow:var(--mynah-shadow-prioritization-menu)}.mynah-overlay>.mynah-overlay-container.background:after{content:\\\"\\\";position:absolute;width:var(--mynah-sizing-8);height:var(--mynah-sizing-8);left:0;top:0;opacity:0;border:var(--mynah-sizing-4);background-color:var(--mynah-card-bg);border-radius:inherit;transition:var(--mynah-short-transition-rev);transition-delay:20ms}.mynah-overlay>.mynah-overlay-container.horizontal-direction-to-left,.mynah-overlay>.mynah-overlay-container.horizontal-direction-from-end-to-left{--overlayLeftPos: -100%;--overlayInnerHorizontalOrigin: right}.mynah-overlay>.mynah-overlay-container.horizontal-direction-to-left:after,.mynah-overlay>.mynah-overlay-container.horizontal-direction-from-end-to-left:after{left:calc(100% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.horizontal-direction-at-center{--overlayInnerHorizontalOrigin: center;--overlayLeftPos: -50%}.mynah-overlay>.mynah-overlay-container.horizontal-direction-at-center:after{left:calc(50% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.vertical-direction-to-top,.mynah-overlay>.mynah-overlay-container.vertical-direction-from-end-to-top{--overlayTopPos: -100%;--overlayInnerVerticalOrigin: bottom}.mynah-overlay>.mynah-overlay-container.vertical-direction-to-top:after,.mynah-overlay>.mynah-overlay-container.vertical-direction-from-end-to-top:after{top:calc(100% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container.vertical-direction-at-center{--overlayInnerVerticalOrigin: center;--overlayTopPos: -50%}.mynah-overlay>.mynah-overlay-container.vertical-direction-at-center:after{top:calc(50% - var(--mynah-sizing-4))}.mynah-overlay>.mynah-overlay-container>.mynah-overlay-inner-container{display:inline-block;overflow:hidden;z-index:10;position:relative;transform:translate3d(0, 0, 0) scale(0.85);transform-origin:var(--overlayInnerHorizontalOrigin) var(--overlayInnerVerticalOrigin);transition:var(--mynah-short-transition-rev);width:100%}.mynah-overlay>.mynah-overlay-container:before{transform:translate3d(0, 0, 0) scale(0.85);transition:var(--mynah-short-transition-rev)}.mynah-overlay>.mynah-overlay-container>.mynah-overlay-inner-container,.mynah-overlay>.mynah-overlay-container:before{opacity:0;transition-delay:0ms}.mynah-overlay:not(.mynah-overlay-open),.mynah-overlay:not(.mynah-overlay-open) *{pointer-events:none !important}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{transform:translate3d(0, 0, 0) scale(1)}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container:before{transform:translate3d(0, 0, 0) scale(1);transition-delay:50ms;opacity:1}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{transition-delay:20ms}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container>.mynah-overlay-inner-container{opacity:1}.mynah-overlay.mynah-overlay-open>.mynah-overlay-container:after{transition-delay:0ms;left:0;top:0;width:100%;height:100%;opacity:1}.mynah-overlay.mynah-overlay-open.mynah-overlay-close-on-outside-click{pointer-events:all}.mynah-notification{display:inline-flex;flex-flow:row nowrap;align-items:flex-start;justify-content:flex-start;gap:var(--mynah-sizing-3);padding:var(--mynah-sizing-5);overflow:hidden;position:relative}.mynah-notification.mynah-notification-clickable{pointer-events:all;cursor:pointer}.mynah-notification>.mynah-ui-icon{font-size:var(--mynah-sizing-6)}.mynah-notification>.mynah-ui-icon-ok-circled{color:var(--mynah-color-status-success)}.mynah-notification>.mynah-ui-icon-info{color:var(--mynah-color-status-info)}.mynah-notification>.mynah-ui-icon-warning{color:var(--mynah-color-status-warning)}.mynah-notification>.mynah-ui-icon-error{color:var(--mynah-color-status-error)}.mynah-notification>.mynah-notification-container{flex:1;max-width:50vw;min-width:200px;display:inline-flex;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start;gap:var(--mynah-sizing-3);overflow:hidden;position:relative}.mynah-notification>.mynah-notification-container>.mynah-notification-title{margin:0}.mynah-notification>.mynah-notification-container>.mynah-notification-title:empty{display:none}.mynah-notification>.mynah-notification-container>.mynah-notification-content{font-size:var(--mynah-font-size-small);display:flex;flex-flow:column nowrap;justify-content:flex-start;align-items:flex-start;gap:var(--mynah-sizing-2)}.mynah-notification>.mynah-notification-container>.mynah-notification-content>.mynah-button{align-self:stretch;background-color:var(--mynah-color-alternate);color:var(--mynah-color-alternate-reverse)}.mynah-syntax-highlighter{display:flex;flex-flow:column nowrap;box-sizing:border-box;overflow:hidden;margin:var(--mynah-sizing-1) 0;background-color:var(--mynah-card-bg);max-width:100%;border:var(--mynah-border-width) solid var(--mynah-color-border-default);position:relative;border-radius:var(--mynah-card-radius);line-height:normal;color:var(--mynah-color-text-default)}.mynah-syntax-highlighter+*:not(:empty){margin-top:var(--mynah-sizing-2)}.mynah-syntax-highlighter:before,.mynah-syntax-highlighter>.line-numbers-rows:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-syntax-bg);opacity:.2;pointer-events:none;user-select:none}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:flex;align-items:center;justify-content:flex-end;padding:var(--mynah-sizing-half);padding-left:var(--mynah-sizing-3);order:256000;box-sizing:border-box;margin:0;margin-block:0 !important;position:relative;border-top:1px solid var(--mynah-color-border-default)}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-border-default);opacity:.25}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons>.mynah-syntax-highlighter-language{flex:1;font-size:var(--mynah-font-size-xsmall);display:inline-block;opacity:.65;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons .mynah-button{min-width:var(--mynah-sizing-6);height:calc(var(--mynah-sizing-6) + var(--mynah-sizing-half))}.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons .mynah-button *{font-size:var(--mynah-font-size-xsmall);color:var(--mynah-color-text-strong)}.mynah-syntax-highlighter.mynah-inline-code{display:inline-flex;max-width:100%;line-height:normal;padding:0 !important;margin:0;margin-block-start:0;margin-block-end:0;overflow:visible;border:none;color:var(--mynah-color-syntax-attr);margin-left:2px;margin-right:2px;padding-bottom:1px !important;margin-bottom:-1px;background-color:transparent !important}.mynah-syntax-highlighter.mynah-inline-code>pre{padding:0}.mynah-syntax-highlighter.mynah-inline-code:after{content:\\\"\\\";position:absolute;box-sizing:border-box;top:0;height:100%;left:-2px;width:calc(100% + 4px);border-radius:calc(var(--mynah-card-radius)/2);border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);z-index:-1}.mynah-syntax-highlighter.mynah-inline-code:before{left:-2px;width:calc(100% + 4px);border-radius:calc(var(--mynah-card-radius)/2);box-sizing:border-box}.mynah-syntax-highlighter>pre{padding:var(--mynah-sizing-2);margin:0;overflow-x:auto;overflow-y:hidden;position:relative}.mynah-syntax-highlighter>pre *,.mynah-syntax-highlighter>pre{font-size:var(--mynah-syntax-code-font-size) !important;font-family:var(--mynah-syntax-code-font-family) !important}.mynah-syntax-highlighter>pre>code{color:var(--mynah-color-syntax-code);filter:brightness(0.95);white-space:pre}.mynah-syntax-highlighter>pre>code,.mynah-syntax-highlighter>pre{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;tab-size:4;hyphens:none}.mynah-syntax-highlighter>pre>code::selection,.mynah-syntax-highlighter>pre::selection{text-shadow:none;background:#b3d4fc}.mynah-syntax-highlighter>pre .token.comment,.mynah-syntax-highlighter>pre .token.prolog,.mynah-syntax-highlighter>pre .token.doctype,.mynah-syntax-highlighter>pre .token.cdata{color:var(--mynah-color-syntax-comment)}.mynah-syntax-highlighter>pre .token.punctuation{color:currentColor}.mynah-syntax-highlighter>pre .token.namespace{opacity:.7}.mynah-syntax-highlighter>pre .token.property,.mynah-syntax-highlighter>pre .token.tag,.mynah-syntax-highlighter>pre .token.boolean,.mynah-syntax-highlighter>pre .token.number,.mynah-syntax-highlighter>pre .token.constant,.mynah-syntax-highlighter>pre .token.symbol,.mynah-syntax-highlighter>pre .token.deleted{color:var(--mynah-color-syntax-property)}.mynah-syntax-highlighter>pre .token.selector,.mynah-syntax-highlighter>pre .token.attr-name,.mynah-syntax-highlighter>pre .token.string,.mynah-syntax-highlighter>pre .token.char,.mynah-syntax-highlighter>pre .token.builtin,.mynah-syntax-highlighter>pre .token.inserted{color:var(--mynah-color-syntax-attr)}.mynah-syntax-highlighter>pre .token.operator,.mynah-syntax-highlighter>pre .token.entity,.mynah-syntax-highlighter>pre .token.url,.mynah-syntax-highlighter>pre .language-css .token.string,.mynah-syntax-highlighter>pre .style .token.string{color:var(--mynah-color-syntax-operator)}.mynah-syntax-highlighter>pre .token.atrule,.mynah-syntax-highlighter>pre .token.attr-value,.mynah-syntax-highlighter>pre .token.class-name,.mynah-syntax-highlighter>pre .token.keyword{color:var(--mynah-color-syntax-attr-value)}.mynah-syntax-highlighter>pre .token.function{color:var(--mynah-color-syntax-function);font-weight:500}.mynah-syntax-highlighter>pre .token.regex,.mynah-syntax-highlighter>pre .token.important,.mynah-syntax-highlighter>pre .token.variable{color:var(--mynah-color-syntax-variable);font-weight:500}.mynah-syntax-highlighter>pre .token.important,.mynah-syntax-highlighter>pre .token.bold{font-weight:bold}.mynah-syntax-highlighter>pre .token.italic{font-style:italic}.mynah-syntax-highlighter>pre .token.entity{cursor:help}.mynah-syntax-highlighter>pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber;position:relative}.mynah-syntax-highlighter>.line-numbers-rows{position:absolute;background-color:inherit;top:var(--mynah-sizing-2);font-size:100%;left:0;width:var(--mynah-sizing-12);overflow:hidden;text-overflow:clip;letter-spacing:-1px;border-right:1px solid var(--mynah-color-border-default)}.mynah-syntax-highlighter>.line-numbers-rows>span,.mynah-syntax-highlighter>.line-numbers-rows{pointer-events:none;user-select:none}.mynah-syntax-highlighter>.line-numbers-rows>span{display:block;color:var(--mynah-color-border-default);padding-right:.8em;text-align:right}.mynah-ui-syntax-highlighter-highlight-tooltip{max-width:80vw;min-width:10vw;max-height:80vh;background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);border:var(--mynah-border-width) solid var(--mynah-color-border-default);padding:var(--mynah-sizing-5)}.mynah-ui-syntax-highlighter-highlight-tooltip .mynah-card-body>p:first-child:last-of-type,.mynah-ui-syntax-highlighter-highlight-tooltip .mynah-card-body>p p:first-child{margin:0}.mynah-chat-related-content-preview-wrapper{max-width:80vw;max-height:80vh}.mynah-chat-related-content-preview-wrapper>.mynah-chat-related-content-preview-content{padding:var(--mynah-sizing-3);background-color:var(--mynah-card-bg);border:var(--mynah-border-width) solid var(--mynah-color-border-default);border-radius:var(--mynah-card-radius)}.mynah-chat-prompt-overlay-buttons-container{display:inline-flex;flex-flow:column nowrap;gap:var(--mynah-sizing-2);justify-content:flex-start;align-items:flex-start}.mynah-chat-wrapper{transition:var(--mynah-bottom-panel-transition);position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;flex-flow:column nowrap;overflow:hidden;justify-content:space-around;align-items:stretch;display:none}.mynah-chat-wrapper>div[class^=mynah-chat]{width:100%;max-width:100%;box-sizing:border-box;padding-left:var(--mynah-sizing-4);padding-right:var(--mynah-sizing-4)}.mynah-chat-wrapper:after{transition:all 400ms cubic-bezier(0.25, 0, 0, 1);content:\\\"\\\";position:absolute;top:0;right:0;bottom:0;left:0;width:auto;height:auto;background-color:#000;z-index:1000;opacity:0;pointer-events:none;transform:translate3d(0, 0, 0) scale(2);transform-origin:center center}.mynah-chat-wrapper>.mynah-chat-items-container{display:flex;flex:1 1 0%;overflow-x:hidden;overflow-y:auto;flex-flow:column-reverse nowrap;align-items:flex-start;padding:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card{display:inline-flex;flex-flow:column nowrap;position:relative;max-width:90%;transition:var(--mynah-text-flow-transition);transform:translate3d(0, var(--mynah-sizing-12), 0) scale(1, 0.95);opacity:0;transform-origin:center bottom}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card:not(:first-of-type){max-height:initial !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-no-content{display:none !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-spacer{display:block;width:100%;height:var(--mynah-sizing-6);order:10000}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card~.mynah-chat-item-temporary-element,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card~* .mynah-chat-item-temporary-element{display:none !important;visibility:hidden !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card~.mynah-chat-item-temporary-element~.mynah-chat-item-spacer,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card~* .mynah-chat-item-temporary-element~.mynah-chat-item-spacer{display:none;height:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card{max-width:100%;width:100%;padding:var(--mynah-sizing-3) 0 var(--mynah-sizing-3) 0;border-top:1px solid var(--mynah-color-border-default);margin-top:var(--mynah-sizing-3);padding-bottom:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-title{font-size:var(--mynah-font-size-large)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>span.invisible{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-items-spinner{display:none;position:absolute;bottom:var(--mynah-sizing-2);left:50%;margin-left:-50px;width:100px;top:49%;margin-top:calc(-1*var(--mynah-sizing-2));height:var(--mynah-sizing-4);overflow:visible;z-index:10000;gap:var(--mynah-sizing-2);justify-content:center;align-items:end;transform:translate3d(0px, calc(-1 * var(--mynah-sizing-2)), 0px)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-items-spinner>span{animation:bounce 500ms infinite cubic-bezier(0.5, 0, 0.15, 1) alternate;display:inline-block;width:var(--mynah-sizing-2);height:var(--mynah-sizing-2);border-radius:var(--mynah-sizing-2);background-color:var(--mynah-color-text-weak);opacity:.5}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-items-spinner>span:nth-child(2){animation-delay:150ms}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-items-spinner>span:nth-child(3){animation-delay:300ms}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-code-result{min-width:70%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card a{pointer-events:bounding-box;color:var(--mynah-color-text-link)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.reveal{opacity:1;transform:translate3d(0, 0, 0) scale(1, 1)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-card-icon-wrapper{background-color:var(--mynah-color-alternate);color:var(--mynah-color-alternate-reverse);padding:var(--mynah-sizing-2);border-radius:100%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body{padding-left:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>.mynah-syntax-highlighter{filter:contrast(1.15) brightness(0.85)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h1:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h2:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h3:first-child,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>div>h4:first-child{margin-top:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content{margin-top:var(--mynah-sizing-3);padding-top:var(--mynah-sizing-4);border-top:var(--mynah-button-border-width) solid var(--mynah-color-border-default)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-title{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);margin:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card>.mynah-card-body>.mynah-chat-item-card-related-content .mynah-source-link-title{font-size:var(--mynah-font-size-small);font-weight:400}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-card :hover::before{box-shadow:var(--mynah-shadow-card) !important}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question{display:inline-flex;flex-flow:column nowrap;position:relative;gap:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-text{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall);font-style:italic}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper{display:inline-flex;flex-flow:row wrap;max-width:100%;gap:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option{padding:var(--mynah-sizing-2);color:var(--mynah-color-text-default);border:var(--mynah-border-width) solid currentColor;border-radius:var(--mynah-card-radius);cursor:pointer;font-size:var(--mynah-font-size-xsmall);max-width:100%;overflow:hidden;display:inline-flex;gap:var(--mynah-sizing-2);align-items:center}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option:not(:hover){opacity:.75}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-success{color:var(--mynah-color-status-success)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-error{color:var(--mynah-color-status-error)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-warning{color:var(--mynah-color-status-warning)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card>.mynah-chat-item-followup-question>.mynah-chat-item-followup-question-options-wrapper>.mynah-chat-item-followup-question-option-status-info{color:var(--mynah-color-status-info)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content{display:flex;flex-flow:column nowrap;gap:var(--mynah-sizing-2);overflow:hidden;position:relative}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item{max-width:100%}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card{padding:0}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item .amzn-mynah-search-result-highlight{background-color:inherit;color:inherit}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:not(:nth-of-type(1)){display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:nth-of-type(1){margin-bottom:calc(-1*var(--mynah-sizing-4));pointer-events:none;position:relative;-webkit-mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-12)), transparent 100%);-webkit-mask-size:100% 100%;mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-12)), transparent 100%);mask-size:100% 100%;-webkit-mask-image:linear-gradient(to top, transparent var(--mynah-sizing-1), black 70%)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content:not(.expanded)>.mynah-chat-item-card-related-content-item:nth-of-type(2)~.mynah-chat-item-card-related-content-show-more{display:flex}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more{display:none;max-width:80%;z-index:10000;margin-block-start:0;margin-block-end:0;align-self:center;height:var(--mynah-sizing-8);filter:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more>span,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card .mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-show-more>i{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--mynah-font-size-xsmall)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt{align-self:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-chat-item-card-icon-wrapper{align-self:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-followup-question,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-followup-question,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content{align-items:flex-end}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card{box-shadow:0px 0px 5px -5px var(--mynah-color-button);padding:var(--mynah-sizing-4);background-color:var(--mynah-color-button);border-bottom-right-radius:0;border:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt .mynah-chat-item-card-related-content>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt .mynah-chat-item-card-related-content>.mynah-card>.mynah-card-body,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-prompt>.mynah-card>.mynah-card-body{color:var(--mynah-color-button-reverse)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-system-prompt>.mynah-card{background-color:var(--mynah-color-status-warning)}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream.mynah-chat-item-empty.stream-ended{display:none}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-card,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-card{border-bottom-left-radius:0;max-height:100%;flex:1}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-icon-wrapper,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-icon-wrapper{align-self:flex-start}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact{opacity:1}.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-ai-prompt>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header,.mynah-chat-wrapper>.mynah-chat-items-container .mynah-chat-item-card.mynah-chat-item-answer-stream>.mynah-chat-item-card-related-content>.mynah-chat-item-card-related-content-item>.mynah-card-compact>.mynah-source-link-header{opacity:1}.mynah-chat-wrapper.loading>.mynah-chat-items-container{padding-bottom:var(--mynah-sizing-14)}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child>.mynah-card{min-width:100px;min-height:var(--mynah-sizing-13)}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child>.mynah-card>.mynah-card-votes-wrapper{display:none}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child.mynah-chat-item-empty>.mynah-chat-items-spinner{display:inline-flex}.mynah-chat-wrapper.loading>.mynah-chat-items-container>.mynah-chat-item-card.mynah-chat-item-answer-stream:first-child:not(.mynah-chat-item-empty):before{content:\\\"\\\";pointer-events:none;position:absolute;overflow:hidden;border-bottom-right-radius:var(--mynah-card-radius);bottom:calc(var(--mynah-sizing-6) + var(--mynah-border-width));left:var(--mynah-border-width);right:var(--mynah-border-width);width:auto;height:var(--mynah-sizing-2);box-sizing:border-box;z-index:10;background-image:linear-gradient(90deg, var(--mynah-color-button) 0%, rgba(255, 255, 255, 0) 25%, rgba(255, 255, 255, 0) 50%, var(--mynah-color-button) 100%);background-position:0% bottom;background-size:200% var(--mynah-sizing-half);background-repeat:repeat-x;animation:horizontal-roll 1250ms linear infinite both}.mynah-chat-wrapper.loading>.mynah-chat-overflowing-intermediate-block{display:flex;flex-flow:column nowrap;max-height:0;overflow:visible;justify-content:flex-end}.mynah-chat-wrapper.loading>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button{display:inline-flex}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block{display:flex;flex-flow:column nowrap;max-height:0;overflow:visible;justify-content:flex-end;align-items:center;border-bottom:1px solid var(--mynah-color-border-default)}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block.hidden{display:none}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button{margin-bottom:var(--mynah-sizing-2);display:none;min-height:var(--mynah-sizing-8);background-color:var(--mynah-card-bg);padding-left:var(--mynah-sizing-2)}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button:active{box-shadow:none;filter:none}.mynah-chat-wrapper>.mynah-chat-overflowing-intermediate-block>.mynah-chat-stop-chat-response-button *{color:var(--mynah-color-text-weak);font-size:var(--mynah-font-size-xsmall)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper{display:block;padding:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt{display:flex;flex-flow:column nowrap;overflow:hidden;box-sizing:border-box;border:var(--mynah-border-width) solid var(--mynah-color-border-default);background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);padding:var(--mynah-sizing-4)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper{display:flex;flex-flow:row nowrap;overflow:hidden;box-sizing:border-box;gap:var(--mynah-sizing-1);align-items:flex-start;position:relative;color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper{align-self:flex-start;display:inline-flex;align-items:center;position:relative;gap:var(--mynah-sizing-1);box-sizing:border-box}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper.hidden{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-command-wrapper>.mynah-chat-prompt-input-command-text{user-select:none;cursor:pointer;font-family:var(--mynah-font-family);font-size:var(--mynah-font-size-large);color:var(--mynah-color-text-input);font-weight:bold}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper{display:block;width:100%;position:relative;align-self:center}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input{font-family:var(--mynah-font-family);border:none;resize:none;background-color:rgba(0,0,0,0);font-size:var(--mynah-font-size-large);color:var(--mynah-color-text-input);outline:none;width:100%;max-height:20vh;min-height:1.5rem}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input::placeholder{color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input:not(.mynah-chat-prompt-input-sizer){position:absolute;height:100%;top:0;left:0;padding:0}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper>.mynah-chat-prompt-input-sizer{display:block;width:100%;opacity:0;visibility:hidden;pointer-events:none;overflow:hidden;white-space:pre-wrap;word-break:break-word}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button{background-color:transparent;width:auto;min-width:0;height:auto;padding-top:1px}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button i{font-size:calc(2*var(--mynah-font-size-xsmall));color:var(--mynah-color-button);height:var(--mynah-sizing-6);padding-left:0}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper.no-text~.mynah-chat-prompt-button:not([disabled]),.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button[disabled]{pointer-events:none;opacity:.25}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper.no-text~.mynah-chat-prompt-button:not([disabled]) i,.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-input-wrapper>.mynah-chat-prompt-input-inner-wrapper~.mynah-chat-prompt-button[disabled] i{color:var(--mynah-color-text-weak)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper:empty{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item{position:relative;display:inline-block;max-width:250px;cursor:pointer}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:after{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;border-radius:var(--mynah-card-radius);opacity:0;transition:var(--mynah-short-transition-rev);z-index:8000;background-color:var(--mynah-color-alternate)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-chat-attachment-delete-icon{color:var(--mynah-color-alternate-reverse);opacity:0;transition:var(--mynah-short-transition-rev);position:absolute;left:50%;top:50%;width:30px;height:30px;margin-left:-15px;margin-top:-15px;z-index:9000}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-chat-attachment-delete-icon>i{width:30px;height:30px}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:hover:after{opacity:.75}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item:hover>.mynah-chat-attachment-delete-icon{opacity:1}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card{pointer-events:none !important}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card *{pointer-events:none !important}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt>.mynah-chat-prompt-attachment-wrapper>.mynah-chat-attachment-item>.mynah-card>.mynah-card-body{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper.input-has-focus>.mynah-chat-prompt{border:var(--mynah-border-width) solid var(--mynah-color-button)}.mynah-chat-wrapper>.mynah-chat-prompt-wrapper>.mynah-chat-prompt-chars-indicator{width:100%;font-size:var(--mynah-font-size-xsmall);padding-top:var(--mynah-sizing-2);opacity:.5;display:flex;align-items:center;justify-content:flex-end;font-style:italic}.mynah-chat-wrapper>.mynah-chat-prompt-input-info{display:flex;flex-flow:row nowrap;box-sizing:border-box;overflow:hidden;padding:0 var(--mynah-sizing-4) var(--mynah-sizing-2) var(--mynah-sizing-4);font-size:var(--mynah-font-size-xsmall)}.mynah-chat-wrapper>.mynah-chat-prompt-input-info:empty{display:none}.mynah-chat-wrapper>.mynah-chat-prompt-input-info>*{margin:0;margin-block-start:0;margin-block-end:0;margin-top:0;margin-bottom:0}.mynah-chat-command-selector{display:flex;box-sizing:border-box;background-color:var(--mynah-card-bg);border-radius:var(--mynah-card-radius);width:100%;pointer-events:all;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start}.mynah-chat-command-selector>.mynah-chat-command-selector-group{display:flex;box-sizing:border-box;width:100%;flex-flow:column nowrap;align-items:stretch;justify-content:flex-start;padding:var(--mynah-sizing-2)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-group-title{margin:0;color:var(--mynah-color-text-weak);opacity:.75;padding:var(--mynah-sizing-2) var(--mynah-sizing-3)}.mynah-chat-command-selector>.mynah-chat-command-selector-group:not(:last-child){border-bottom:1px solid var(--mynah-color-border-default)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command{display:flex;box-sizing:border-box;width:100%;flex-flow:column nowrap;align-items:flex-start;justify-content:flex-start;overflow:hidden;cursor:pointer;padding:var(--mynah-sizing-2) var(--mynah-sizing-3);color:var(--mynah-color-text-default);border-radius:var(--mynah-card-radius);transition:var(--mynah-short-transition-rev);gap:var(--mynah-sizing-1)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command{background-color:var(--mynah-color-button)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command:hover *,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command,.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command.target-command *{color:var(--mynah-color-button-reverse)}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command>.mynah-chat-command-selector-command-name{font-family:var(--mynah-font-family);font-size:var(--mynah-font-size-large);font-weight:bold;flex:0 1 0%}.mynah-chat-command-selector>.mynah-chat-command-selector-group>.mynah-chat-command-selector-command>.mynah-chat-command-selector-command-description{font-size:var(--mynah-font-size-small);opacity:.75;flex:1 0 100%}.mynah-chat-item-tree-view-wrapper{margin:0;margin-block-end:0 !important;margin-block-start:0 !important}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container{background-color:var(--mynah-card-bg);color:var(--mynah-color-text-default);margin-block-start:0 !important;margin-block-end:0 !important;position:relative;border-radius:var(--mynah-card-radius);border:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;position:relative;padding:var(--mynah-sizing-3);gap:var(--mynah-sizing-3);border-bottom:var(--mynah-border-width) solid var(--mynah-color-border-default)}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title>h4{margin:0}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view-wrapper-title:before{content:\\\"\\\";position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--mynah-color-border-default);opacity:.25;pointer-events:none}.mynah-chat-item-tree-view-wrapper>.mynah-chat-item-tree-view-wrapper-container>.mynah-chat-item-tree-view{padding:var(--mynah-sizing-3);overflow:hidden;box-sizing:border-box;width:100%;overflow-y:hidden;overflow-x:auto}.mynah-chat-item-tree-view-wrapper-label{border-top-left-radius:var(--mynah-card-radius);border-top-right-radius:var(--mynah-card-radius);background-color:var(--mynah-color-alternate);margin-bottom:0px;padding:var(--mynah-sizing-4)}.mynah-chat-item-tree-view-wrapper-feedback-label{padding-left:var(--mynah-sizing-4)}.mynah-chat-item-tree-view-wrapper-feedback-div{float:right}.mynah-chat-item-tree-view-wrapper-feedback-div button:first-child{margin-right:var(--mynah-sizing-2)}.mynah-chat-item-tree-view-license{color:var(--mynah-color-text-weak)}.mynah-chat-item-tree-view-license:before{content:\\\"\\\";position:absolute;left:0;right:0;top:0;bottom:0;background-color:var(--mynah-color-button);opacity:.07;pointer-events:none}.mynah-chat-item-tree-view-license ul{margin:0;padding-left:var(--mynah-sizing-8)}.mynah-chat-item-tree-view-license ul>li:not(:first-child){margin-top:var(--mynah-sizing-2)}.mynah-chat-item-tree-view-license ul>li .mynah-card-body p{margin:0}.mynah-chat-item-tree-view-license .mynah-chat-item-tree-view-license-dropdown-button>span{max-width:unset}.outer-container{display:flex}.outer-container:not(:empty){margin-top:var(--mynah-sizing-3)}.snippet-card-container.vertical-overflow pre{position:relative;-webkit-mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-16)), transparent 100%);-webkit-mask-size:100% 100%;mask-image:linear-gradient(to bottom, black 30%, black calc(100% - var(--mynah-sizing-16)), transparent 100%);mask-size:100% 100%}.snippet-card-container{max-width:calc(5*var(--mynah-sizing-18));max-height:var(--mynah-sizing-10)}.snippet-card-container>.mynah-button{position:absolute;background-color:var(--mynah-card-bg) !important;width:var(--mynah-sizing-7) !important;min-width:var(--mynah-sizing-7) !important;max-width:var(--mynah-sizing-7) !important;height:var(--mynah-sizing-7) !important;border-radius:100%;right:calc(-1*var(--mynah-sizing-2));top:calc(-1*var(--mynah-sizing-2));border:var(--mynah-border-width) solid var(--mynah-color-border-default);opacity:1 !important;filter:brightness(0.95)}.snippet-card-container:not(:hover)>.mynah-button{display:none}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter{border:none}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter pre{text-overflow:ellipsis}.snippet-card-container-preview{max-width:80vw;max-height:70vh}.snippet-card-container-preview>.mynah-card-body>.mynah-syntax-highlighter{max-height:calc(70vh - var(--mynah-sizing-12)) !important}.snippet-card-container,.snippet-card-container-preview{position:relative;overflow:visible;width:100%;box-sizing:border-box}.snippet-card-container>.mynah-card-body,.snippet-card-container-preview>.mynah-card-body{max-height:100%}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter,.snippet-card-container-preview>.mynah-card-body>.mynah-syntax-highlighter{user-select:none;pointer-events:none;margin:0;max-height:100%;overflow:hidden}.snippet-card-container>.mynah-card-body>.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons,.snippet-card-container-preview>.mynah-card-body>.mynah-syntax-highlighter>.mynah-syntax-highlighter-copy-buttons{display:none}.snippet-card-container pre,.snippet-card-container-preview pre{text-overflow:ellipsis}.mynah-collapsible-content-wrapper{display:block;box-sizing:border-box;width:100%;overflow:hidden;position:relative}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox{display:none}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label{box-sizing:border-box;display:flex;flex-flow:column nowrap;overflow:hidden;align-items:flex-start;justify-content:stretch;padding:var(--mynah-sizing-2);gap:var(--mynah-sizing-2)}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-title-wrapper{gap:var(--mynah-sizing-2);display:flex;flex-flow:row nowrap;box-sizing:border-box;width:100%;overflow:hidden;justify-content:flex-start;align-items:flex-start;pointer-events:all;cursor:pointer;user-select:none}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-title-wrapper>.mynah-collapsible-content-label-title-text{flex:1;overflow:hidden}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox+.mynah-collapsible-content-label>.mynah-collapsible-content-label-content-wrapper{overflow:hidden;box-sizing:border-box;width:100%}.mynah-collapsible-content-wrapper>.mynah-collapsible-content-checkbox:checked+.mynah-collapsible-content-label>.mynah-collapsible-content-label-content-wrapper{display:none}body,html{background-color:var(--mynah-color-bg);color:var(--mynah-color-text-default);height:100%;width:100%;overflow:hidden;margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-weight:600}::-webkit-scrollbar{width:2px;height:2px;opacity:.25}::-webkit-scrollbar:horizontal{width:0px;height:0px}*:focus{outline:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/styles/_variables.scss\",\"webpack://./src/styles/_animations.scss\",\"webpack://./src/styles/components/_main-container.scss\",\"webpack://./src/styles/components/_button.scss\",\"webpack://./src/styles/components/_toggle.scss\",\"webpack://./src/styles/components/_icon.scss\",\"webpack://./src/styles/components/_nav-tabs.scss\",\"webpack://./src/styles/components/card/_card.scss\",\"webpack://./src/styles/components/_source-link-header.scss\",\"webpack://./src/styles/components/card/_card-body.scss\",\"webpack://./src/styles/components/_votes-wrapper.scss\",\"webpack://./src/styles/components/_feedback-form.scss\",\"webpack://./src/styles/components/_overlay.scss\",\"webpack://./src/styles/components/_notification.scss\",\"webpack://./src/styles/components/_syntax-highlighter.scss\",\"webpack://./src/styles/components/chat/_chat-wrapper.scss\",\"webpack://./src/styles/components/chat/_chat-items-container.scss\",\"webpack://./src/styles/_mixins.scss\",\"webpack://./src/styles/components/chat/_chat-overflowing-intermediate-block.scss\",\"webpack://./src/styles/components/chat/_chat-prompt-wrapper.scss\",\"webpack://./src/styles/components/chat/_chat-command-selector.scss\",\"webpack://./src/styles/components/chat/_chat-item-tree-view.scss\",\"webpack://./src/styles/components/chat/_chat-prompt-code-snippet.scss\",\"webpack://./src/styles/components/_collapsible-content.scss\",\"webpack://./src/styles/styles.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\":root {\\n --mynah-font-family: var(--vscode-font-family), system-ui, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\",\\n \\\"Amazon Ember\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\"Open Sans\\\", \\\"Helvetica Neue\\\", sans-serif;\\n font-size: var(--vscode-font-size, 13px);\\n font-family: var(--mynah-font-family, \\\"system-ui\\\");\\n --mynah-max-width: 2560px;\\n --mynah-sizing-base: 0.25rem;\\n --mynah-sizing-half: calc(var(--mynah-sizing-base) / 2);\\n --mynah-sizing-1: var(--mynah-sizing-base);\\n --mynah-sizing-2: calc(var(--mynah-sizing-base) * 2);\\n --mynah-sizing-3: calc(var(--mynah-sizing-base) * 3);\\n --mynah-sizing-4: calc(var(--mynah-sizing-base) * 4);\\n --mynah-sizing-5: calc(var(--mynah-sizing-base) * 5);\\n --mynah-sizing-6: calc(var(--mynah-sizing-base) * 6);\\n --mynah-sizing-7: calc(var(--mynah-sizing-base) * 7);\\n --mynah-sizing-8: calc(var(--mynah-sizing-base) * 8);\\n --mynah-sizing-9: calc(var(--mynah-sizing-base) * 9);\\n --mynah-sizing-10: calc(var(--mynah-sizing-base) * 10);\\n --mynah-sizing-11: calc(var(--mynah-sizing-base) * 11);\\n --mynah-sizing-12: calc(var(--mynah-sizing-base) * 12);\\n --mynah-sizing-13: calc(var(--mynah-sizing-base) * 13);\\n --mynah-sizing-14: calc(var(--mynah-sizing-base) * 14);\\n --mynah-sizing-15: calc(var(--mynah-sizing-base) * 15);\\n --mynah-sizing-16: calc(var(--mynah-sizing-base) * 16);\\n --mynah-sizing-17: calc(var(--mynah-sizing-base) * 17);\\n --mynah-sizing-18: calc(var(--mynah-sizing-base) * 18);\\n --mynah-button-border-width: 1px;\\n --mynah-border-width: 1px;\\n\\n --mynah-color-text-default: var(--vscode-foreground);\\n --mynah-color-text-strong: var(--vscode-input-foreground);\\n --mynah-color-text-weak: var(--vscode-disabledForeground);\\n --mynah-color-text-link: var(--vscode-textLink-foreground);\\n --mynah-color-text-input: var(--vscode-input-foreground);\\n\\n --mynah-color-bg: var(--vscode-sideBar-background);\\n --mynah-color-bg-alt: var(--vscode-editorPane-background, var(--mynah-color-bg));\\n --mynah-color-tab-active: var(--vscode-tab-activeBackground, var(--vscode-editor-background, var(--mynah-card-bg)));\\n --mynah-color-light: rgba(0, 0, 0, 0.05);\\n\\n --mynah-color-deep: var(--vscode-checkbox-background);\\n --mynah-color-deep-reverse: var(--vscode-checkbox-foreground);\\n --mynah-color-border-default: var(--vscode-panel-border, var(--vscode-tab-border, rgba(0, 0, 0, 0.1)));\\n --mynah-color-input-bg: var(--vscode-input-background);\\n\\n --mynah-color-highlight: rgba(255, 179, 0, 0.25);\\n --mynah-color-highlight-text: #886411;\\n\\n --mynah-color-context-must-contain: #c7ebce;\\n --mynah-color-context-should-contain: var(--vscode-sideBar-background);\\n --mynah-color-context-must-not-contain: #f3cac7;\\n --mynah-color-context-reverse: rgba(0, 0, 0, 0.5);\\n --mynah-color-context-filter: 0.975;\\n\\n --mynah-color-syntax-bg: var(--vscode-terminal-dropBackground);\\n --mynah-color-syntax-variable: var(--vscode-debugTokenExpression-name);\\n --mynah-color-syntax-function: var(--vscode-gitDecoration-modifiedResourceForeground);\\n --mynah-color-syntax-operator: var(--vscode-debugTokenExpression-name);\\n --mynah-color-syntax-attr-value: var(--vscode-debugIcon-stepBackForeground);\\n --mynah-color-syntax-attr: var(--vscode-debugTokenExpression-string);\\n --mynah-color-syntax-property: var(--vscode-terminal-ansiCyan);\\n --mynah-color-syntax-comment: var(--vscode-debugConsole-sourceForeground);\\n --mynah-color-syntax-code: var(--vscode-terminal-ansiBlue);\\n --mynah-syntax-code-font-family: var(--vscode-editor-font-family);\\n --mynah-syntax-code-font-size: var(--vscode-editor-font-size, var(--mynah-font-size-medium));\\n\\n --mynah-color-status-info: var(--vscode-editorInfo-foreground);\\n --mynah-color-status-success: var(--vscode-terminal-ansiGreen);\\n --mynah-color-status-warning: var(--vscode-editorWarning-foreground);\\n --mynah-color-status-error: var(--vscode-editorError-foreground);\\n\\n --mynah-color-button: var(--vscode-button-background);\\n --mynah-color-button-reverse: var(--vscode-button-foreground);\\n\\n --mynah-color-alternate: var(--vscode-button-secondaryBackground);\\n --mynah-color-alternate-reverse: var(--vscode-button-secondaryForeground);\\n\\n --mynah-color-code-bg: rgba(0, 0, 0, 0.25);\\n --mynah-color-code-text: var(--vscode-textPreformat-foreground);\\n\\n --mynah-color-main: var(--vscode-button-background);\\n --mynah-color-main-reverse: var(--vscode-button-foreground);\\n\\n --mynah-card-bg: var(--vscode-editor-background);\\n\\n --mynah-shadow-generic: none; //0 5px 10px -10px rgba(0, 0, 0, 0.25);\\n --mynah-shadow-card: none; //0 10px 20px -15px rgba(0, 0, 0, 0.25);\\n --mynah-shadow-card-more: none; //0 10px 20px -10px rgba(0, 0, 0, 0.5);\\n --mynah-shadow-card-active: none; //0 10px 20px -10px rgba(0, 0, 0, 0.5);\\n --mynah-shadow-prioritization-menu: none; //0 10px 20px -10px #e7e7e7;\\n --mynah-shadow-feedback-form: none; //0 0px 40px 0px var(--mynah-color-bg);\\n\\n --mynah-font-size-xxsmall: 0.75rem;\\n --mynah-font-size-xsmall: 0.85rem;\\n --mynah-font-size-small: 0.95rem;\\n --mynah-font-size-medium: 1rem;\\n --mynah-font-size-large: 1.125rem;\\n --mynah-font-size-xlarge: 1.175rem;\\n\\n --mynah-card-radius: var(--mynah-sizing-2);\\n --mynah-button-radius: var(--mynah-sizing-1);\\n\\n --mynah-bottom-panel-transition: all 550ms cubic-bezier(0.25, 0, 0, 1);\\n --mynah-very-short-transition: all 400ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-transform: transform 350ms cubic-bezier(0.85, 0.15, 0, 1);\\n --mynah-long-transition: all 520ms cubic-bezier(0.35, 1, 0.15, 1);\\n --mynah-pretty-long-transition: all 600ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-very-long-transition: all 1400ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition: all 400ms cubic-bezier(0.85, 0.15, 0, 1);\\n --mynah-short-transition-rev: all 420ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-short-transition-rev-opacity: opacity 550ms cubic-bezier(0.35, 1, 0, 1);\\n --mynah-short-transition-reflection: all 800ms cubic-bezier(0.25, 1, 0, 1),\\n opacity 650ms 300ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-turbo: all 400ms cubic-bezier(0.25, 1, 0, 1);\\n --mynah-short-transition-turbo-bounce: all 500ms cubic-bezier(0.25, 1, 0, 1),\\n transform 600ms cubic-bezier(0.25, 4, 0, 1);\\n --mynah-short-transition-bounce: all 650ms cubic-bezier(0.25, 1, 0, 1),\\n transform 900ms cubic-bezier(0.15, 1.25, 0, 1);\\n --mynah-text-flow-transition: all 650ms cubic-bezier(0.25, 1, 0, 1),\\n transform 900ms cubic-bezier(0.15, 1.25, 0, 1), max-height 1100ms cubic-bezier(0.35, 1, 0, 1);\\n\\n --mynah-mask-image: linear-gradient(\\n to bottom,\\n black var(--mynah-sizing-8),\\n black calc(100% - var(--mynah-sizing-14)),\\n transparent\\n );\\n --mynah-mask-image-rev: linear-gradient(to bottom, transparent 0%, transparent 80%, black 100%);\\n --mynah-mask-image-main: linear-gradient(\\n to bottom,\\n transparent,\\n black var(--mynah-sizing-6),\\n black calc(100% - var(--mynah-sizing-6)),\\n transparent\\n );\\n --mynah-mask-image-main-rev: linear-gradient(to bottom, black, transparent calc(100% - 2px), transparent);\\n\\n --mynah-mask-image-skeleton: linear-gradient(\\n to bottom,\\n black var(--mynah-sizing-8),\\n black calc(50% - var(--mynah-sizing-14)),\\n transparent\\n );\\n\\n --mynah-policy-group-filter: saturate(0.5) brightness(0.85);\\n}\\n\",\"@keyframes horizontal-roll {\\n 0% {\\n background-position: 0% bottom;\\n }\\n 100% {\\n background-position: -200% bottom;\\n }\\n}\\n\\n@keyframes bounce {\\n from {\\n transform: translate3d(0, 0, 0);\\n }\\n to {\\n transform: translate3d(0, calc(-1 * var(--mynah-sizing-2)), 0);\\n }\\n}\\n\",\"$smoothbezier: cubic-bezier(0.25, 0, 0, 1);\\n$smoothduration: 400ms;\\n#mynah-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n margin: 0 auto;\\n width: 100%;\\n max-width: var(--mynah-max-width);\\n box-sizing: border-box;\\n height: 100%;\\n position: relative;\\n overflow: hidden;\\n justify-content: stretch;\\n align-items: stretch;\\n\\n > .mynah-ui-tab-contents-wrapper {\\n flex: 1;\\n position: relative;\\n }\\n}\\n\",\"button.mynah-button {\\n border: none;\\n min-width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n border-radius: var(--mynah-button-radius);\\n background-color: var(--mynah-color-button);\\n color: var(--mynah-color-button-reverse);\\n box-shadow: var(--mynah-shadow-generic);\\n cursor: pointer;\\n transition: var(--mynah-very-short-transition);\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n outline: none;\\n overflow: hidden;\\n position: relative;\\n transform: translate3d(0, 0, 0) scale(1.00001);\\n padding: 0;\\n filter: brightness(0.9);\\n opacity: 0.85;\\n &.mynah-bottom-block-close-button {\\n position: absolute;\\n align-self: flex-end;\\n transform: translate3d(var(--mynah-sizing-2), calc(-100% - var(--mynah-sizing-6)), 0px);\\n background-color: var(--mynah-card-bg);\\n color: var(--mynah-color-text-default);\\n box-shadow: var(--mynah-shadow-feedback-form);\\n }\\n &[disabled=\\\"disabled\\\"] {\\n opacity: 0.25 !important;\\n pointer-events: none;\\n }\\n &.mynah-button-secondary {\\n background-color: transparent;\\n color: inherit;\\n box-shadow: none;\\n opacity: 0.75;\\n height: var(--mynah-sizing-6);\\n &:focus-visible,\\n &:hover {\\n opacity: 1;\\n }\\n &:active {\\n box-shadow: none;\\n }\\n }\\n &:focus-visible,\\n &:hover {\\n filter: brightness(1);\\n opacity: 1;\\n }\\n &:active {\\n filter: brightness(0.9);\\n opacity: 0.85;\\n }\\n &.mynah-icon-button {\\n width: var(--mynah-sizing-10);\\n height: var(--mynah-sizing-10);\\n }\\n > .mynah-mutating-next-icon {\\n width: var(--mynah-sizing-6);\\n height: var(--mynah-sizing-6);\\n transform: translate3d(0, 0, 0) rotateZ(0deg);\\n transition: var(--mynah-short-transition-turbo);\\n transform-origin: center center;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n justify-content: center;\\n align-items: center;\\n > i {\\n font-size: var(--mynah-font-size-xlarge);\\n &.mynah-loading-spinner {\\n min-width: var(--mynah-sizing-5);\\n min-height: var(--mynah-sizing-5);\\n border: 3px solid currentColor;\\n opacity: 0.5;\\n box-sizing: border-box;\\n border-top-color: rgba(0, 0, 0, 0);\\n border-radius: var(--mynah-sizing-5);\\n animation: spin 1s infinite linear;\\n }\\n &:nth-child(2) {\\n display: none;\\n }\\n }\\n }\\n > .mynah-search-history-icon {\\n width: var(--mynah-sizing-6);\\n height: var(--mynah-sizing-6);\\n transform: translate3d(0, 0, 0) rotateZ(0deg);\\n transition: var(--mynah-short-transition-turbo);\\n transform-origin: center center;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n justify-content: center;\\n align-items: center;\\n > i {\\n font-size: 2rem;\\n &.mynah-history-icon {\\n min-width: var(--mynah-sizing-5);\\n min-height: var(--mynah-sizing-5);\\n border: 3px solid currentColor;\\n opacity: 0.5;\\n box-sizing: border-box;\\n border-top-color: rgba(0, 0, 0, 0);\\n border-radius: var(--mynah-button-radius);\\n animation: spin 1s infinite linear;\\n }\\n &:nth-child(2) {\\n display: none;\\n }\\n }\\n }\\n &.mynah-button-wait {\\n background-color: var(--mynah-color-light);\\n color: var(--mynah-color-text-default);\\n box-shadow: 0 5px 10px -10px var(--mynah-color-light);\\n pointer-events: none;\\n > .mynah-mutating-next-icon > i {\\n &:first-child {\\n display: none;\\n }\\n &:nth-child(2) {\\n display: block;\\n }\\n }\\n }\\n > span {\\n white-space: nowrap;\\n font-size: var(--mynah-font-size-medium);\\n max-width: 35vw;\\n transition: var(--mynah-very-long-transition);\\n overflow: hidden;\\n box-sizing: border-box;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding-left: var(--mynah-sizing-3);\\n padding-right: var(--mynah-sizing-3);\\n }\\n > i + span {\\n padding-left: var(--mynah-sizing-base);\\n }\\n}\\n\",\".mynah-toggle-container {\\n flex-flow: row nowrap;\\n max-width: 100%;\\n overflow: hidden;\\n align-items: center;\\n position: relative;\\n background: var(--mynah-color-context-should-contain);\\n color: var(--mynah-color-context-reverse);\\n justify-content: flex-start;\\n overflow-y: hidden;\\n overflow-x: auto;\\n display: flex;\\n > span {\\n overflow: hidden;\\n height: 100%;\\n min-width: var(--mynah-sizing-8);\\n max-width: calc(3 * var(--mynah-sizing-15));\\n flex-shrink: 0;\\n > .mynah-toggle-option {\\n display: none;\\n &:not(:first-child) + .mynah-toggle-option-label {\\n margin-left: calc(-1 * var(--mynah-sizing-1));\\n }\\n &:not(:checked) + .mynah-toggle-option-label {\\n &.indication:after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 50%;\\n margin-top: calc(-1 * var(--mynah-sizing-half));\\n left: var(--mynah-sizing-2);\\n height: var(--mynah-sizing-1);\\n width: var(--mynah-sizing-1);\\n background-color: var(--mynah-color-status-success);\\n border-radius: var(--mynah-sizing-1);\\n border: 1px solid var(--mynah-color-text-weak);\\n opacity: 0.75;\\n }\\n }\\n & + .mynah-toggle-option-label {\\n cursor: pointer;\\n pointer-events: all;\\n position: relative;\\n z-index: 100;\\n padding: 0 var(--mynah-sizing-3) 0 var(--mynah-sizing-5);\\n height: 100%;\\n box-sizing: border-box;\\n display: inline-flex;\\n overflow: hidden;\\n justify-content: stretch;\\n align-items: center;\\n color: var(--mynah-color-text-weak);\\n border-right: 1px solid var(--mynah-color-border-default);\\n border-top: 1px solid transparent;\\n background-color: var(--mynah-color-bg);\\n opacity: 0.75;\\n max-width: 100%;\\n &,\\n & * {\\n user-select: none;\\n }\\n > span {\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 100%;\\n display: block;\\n }\\n > .mynah-toggle-close-button {\\n margin-left: var(--mynah-sizing-3);\\n font-size: var(--mynah-font-size-xsmall);\\n min-width: 1em;\\n }\\n }\\n &:checked + .mynah-toggle-option-label {\\n border-top-color: var(--mynah-color-button);\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n background-color: var(--mynah-color-tab-active);\\n }\\n &[disabled=\\\"disabled\\\"] {\\n pointer-events: none !important;\\n & + .mynah-toggle-option-label {\\n pointer-events: none !important;\\n opacity: 0.25;\\n }\\n }\\n }\\n }\\n\\n &.mynah-toggle-direction-vertical {\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-3);\\n }\\n}\\n\\n.mynah-toggle-disabled-tooltip-container {\\n max-width: 30vw;\\n display: inline-block;\\n padding: var(--mynah-sizing-3);\\n font-size: 80%;\\n opacity: 0.85;\\n}\\n\",\".mynah-ui-icon {\\n font-style: normal;\\n font-weight: normal;\\n display: inline-flex;\\n width: 1em;\\n height: 1em;\\n font-variant: normal;\\n text-transform: none;\\n -webkit-mask-size: 100%;\\n mask-size: 100%;\\n -webkit-mask-position: center center;\\n mask-position: center center;\\n -webkit-mask-repeat: no-repeat;\\n mask-repeat: no-repeat;\\n color: inherit;\\n background-color: currentColor;\\n > span {\\n display: none;\\n }\\n}\\n\",\".mynah-nav-tabs-wrapper {\\n border-top: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-color-bg);\\n display: flex;\\n align-items: center;\\n overflow: hidden;\\n box-shadow: var(--mynah-shadow-generic);\\n z-index: 100;\\n min-height: var(--mynah-sizing-10);\\n max-height: var(--mynah-sizing-10);\\n position: relative;\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n width: auto;\\n height: var(--mynah-button-border-width);\\n background-color: var(--mynah-color-border-default);\\n }\\n\\n > .mynah-toggle-container {\\n height: 100%;\\n background: none;\\n box-sizing: border-box;\\n > span {\\n white-space: nowrap;\\n }\\n }\\n &:empty {\\n display: none;\\n }\\n\\n &.mynah-nav-tabs-loading,\\n &.mynah-nav-tabs-loading * {\\n pointer-events: none;\\n }\\n}\\n\",\".mynah-card {\\n text-decoration: none;\\n outline: none;\\n position: relative;\\n transition: var(--mynah-short-transition-rev);\\n box-sizing: border-box;\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-3);\\n transform: translate3d(0, 0, 0);\\n flex: auto 0 0;\\n width: 100%;\\n overflow: hidden;\\n border-radius: var(--mynah-card-radius);\\n\\n &.padding {\\n &-none {\\n padding: 0;\\n }\\n &-small {\\n padding: var(--mynah-sizing-1);\\n }\\n &-medium {\\n padding: var(--mynah-sizing-3);\\n }\\n &-large {\\n padding: var(--mynah-sizing-5);\\n }\\n }\\n &.background {\\n background-color: var(--mynah-card-bg);\\n }\\n &.border {\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n }\\n\\n > * {\\n z-index: 10;\\n position: relative;\\n }\\n\\n @import '../source-link-header';\\n @import 'card-body';\\n @import '../votes-wrapper';\\n}\\n\",\"> .mynah-source-link-header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n opacity: 1;\\n gap: var(--mynah-sizing-2);\\n transition: var(--mynah-very-short-transition);\\n > .mynah-source-thumbnail {\\n font-style: normal;\\n font-weight: normal;\\n display: none;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n font-variant: normal;\\n text-transform: none;\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: 100%;\\n background-size: 85%;\\n background-clip: content-box;\\n background-position: center center;\\n background-repeat: no-repeat;\\n align-self: flex-start;\\n box-sizing: border-box;\\n background-color: var(--mynah-card-bg);\\n position: relative;\\n overflow: hidden;\\n &:after {\\n content: \\\"\\\";\\n pointer-events: none;\\n box-sizing: border-box;\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n width: auto;\\n height: auto;\\n border: 2px solid var(--mynah-card-bg);\\n border-radius: 100%;\\n }\\n }\\n > .mynah-source-link-title-wrapper {\\n flex: 1 1 0;\\n display: flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n gap: var(--mynah-sizing-half);\\n max-width: 100%;\\n overflow: hidden;\\n cursor: pointer;\\n &:hover > .mynah-source-link-title > .mynah-source-link-expand-icon {\\n opacity: 0.75;\\n align-self: baseline;\\n }\\n > .mynah-source-link-title {\\n font-size: var(--mynah-font-size-medium);\\n font-weight: 500;\\n color: var(--mynah-color-text-strong);\\n width: 100%;\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-2);\\n white-space: normal;\\n text-overflow: ellipsis;\\n text-decoration: none;\\n outline: none;\\n overflow: hidden;\\n > .mynah-source-link-expand-icon {\\n transition: var(--mynah-short-transition-rev);\\n opacity: 0;\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n display: inline;\\n padding: var(--mynah-sizing-1);\\n }\\n }\\n > .mynah-source-link-url {\\n font-size: var(--mynah-font-size-xsmall);\\n font-weight: 300;\\n color: var(--mynah-color-text-link);\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n text-decoration: none;\\n outline: none;\\n overflow: hidden;\\n max-width: 100%;\\n position: relative;\\n padding-bottom: var(--mynah-sizing-1);\\n display: inline-block;\\n transition: var(--mynah-short-transition-rev);\\n &:after {\\n content: \\\"\\\";\\n position: relative;\\n display: block;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 1px;\\n border-radius: var(--mynah-sizing-half);\\n background-color: currentColor;\\n transform: translate3d(-30%, 0, 0);\\n transition: var(--mynah-short-transition-rev);\\n opacity: 0;\\n }\\n &:hover {\\n &:after {\\n transform: translate3d(0, 0, 0);\\n opacity: 1;\\n }\\n }\\n > span {\\n &:not(:last-child):after {\\n content: \\\">\\\";\\n margin-left: var(--mynah-sizing-1);\\n margin-right: var(--mynah-sizing-1);\\n }\\n &:nth-child(3) ~ span:not(:last-child) {\\n display: none;\\n }\\n &:last-child {\\n font-weight: bold;\\n }\\n &:nth-child(3):not(:last-child):after {\\n content: \\\"> ... >\\\";\\n }\\n }\\n }\\n > .mynah-title-meta-block {\\n display: flex;\\n flex-flow: row wrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-1);\\n margin-bottom: var(--mynah-sizing-half);\\n &:empty {\\n display: none;\\n }\\n > .mynah-title-meta-block-item {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: center;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-1);\\n padding: calc(var(--mynah-sizing-half) * 3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: var(--mynah-button-radius);\\n opacity: 0.75;\\n > .mynah-icon {\\n opacity: 0.5;\\n font-size: var(--mynah-font-size-medium);\\n color: var(--mynah-color-text-weak);\\n }\\n > .mynah-title-meta-block-item-text {\\n font-size: var(--mynah-font-size-xxsmall);\\n color: var(--mynah-color-text-weak);\\n &::first-letter {\\n text-transform: capitalize;\\n }\\n }\\n &.approved-answer {\\n border-color: green;\\n position: relative;\\n &:before {\\n content: \\\"\\\";\\n border-radius: var(--mynah-button-radius);\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: green;\\n opacity: 0.04;\\n }\\n > .mynah-icon {\\n opacity: 1;\\n color: green;\\n border-radius: var(--mynah-button-radius);\\n width: var(--mynah-sizing-3);\\n height: var(--mynah-sizing-3);\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"> .mynah-card-body {\\n flex: 1;\\n overflow: hidden;\\n position: relative;\\n display: block;\\n\\n > *:not(pre) {\\n font-size: var(--mynah-font-size-medium);\\n }\\n span[start][end] {\\n display: none;\\n }\\n > p:first-child {\\n &,\\n & h1:first-child,\\n & h2:first-child,\\n & h3:first-child,\\n & h4:first-child,\\n & h5:first-child {\\n margin-top: 0;\\n }\\n }\\n > p:first-child:last-of-type,\\n > p p:first-child {\\n margin: 0;\\n }\\n &,\\n & > div {\\n > *:not(div):not(pre) {\\n margin-block-start: 0.75em;\\n margin-block-end: 0.75em;\\n padding-bottom: 1px !important;\\n &:first-child {\\n margin-block-start: 0;\\n }\\n user-select: text;\\n &:empty {\\n display: none;\\n }\\n }\\n > p:last-of-type {\\n margin-block-end: 0;\\n }\\n mark[reference-tracker] {\\n background-color: var(--mynah-color-highlight);\\n color: inherit;\\n cursor: help;\\n }\\n .amzn-mynah-search-result-highlight {\\n background-color: var(--mynah-color-highlight);\\n color: var(--mynah-color-highlight-text);\\n }\\n .amzn-mynah-search-result-ellipsis {\\n display: inline-block;\\n position: relative;\\n padding-left: var(--mynah-sizing-2);\\n margin-top: var(--mynah-sizing-1);\\n margin-bottom: var(--mynah-sizing-1);\\n font-size: calc(1em + var(--mynah-sizing-1)) !important;\\n user-select: none;\\n cursor: default;\\n height: var(--mynah-sizing-7);\\n\\n &:before {\\n pointer-events: none;\\n content: \\\"\\\";\\n width: calc(1em + var(--mynah-sizing-2));\\n height: calc(1em + var(--mynah-sizing-2));\\n position: absolute;\\n left: 0;\\n top: 0;\\n background-color: currentColor;\\n opacity: 0.1;\\n border-radius: var(--mynah-sizing-1);\\n }\\n }\\n }\\n}\\n\",\"> .mynah-card-votes-wrapper {\\n align-items: center;\\n gap: var(--mynah-sizing-2);\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n border-top: 1px solid var(--mynah-color-border-default);\\n padding-top: var(--mynah-sizing-3);\\n font-size: var(--mynah-font-size-small);\\n > span.mynah-feedback-thanks {\\n overflow: hidden;\\n }\\n > .mynah-button > span {\\n padding: 0;\\n font-size: var(--mynah-font-size-small);\\n color: var(--mynah-color-text-link);\\n }\\n > .mynah-vote-text {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-small);\\n }\\n > .mynah-card-vote {\\n position: relative;\\n overflow: visible;\\n display: inline-flex;\\n align-items: center;\\n box-sizing: border-box;\\n gap: var(--mynah-sizing-3);\\n > .mynah-vote-radio {\\n display: none;\\n }\\n > .mynah-vote-label {\\n z-index: 10;\\n cursor: pointer;\\n font-size: var(--mynah-font-size-small);\\n transition: var(--mynah-short-transition);\\n width: var(--mynah-sizing-5);\\n height: var(--mynah-sizing-5);\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n color: var(--mynah-color-text-weak);\\n opacity: 0.5;\\n > * {\\n pointer-events: none;\\n }\\n > i {\\n height: calc(var(--mynah-sizing-6) + var(--mynah-sizing-half));\\n }\\n }\\n > .mynah-vote-up-radio:checked {\\n & ~ .mynah-vote-up {\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n }\\n }\\n > .mynah-vote-down-radio:checked {\\n & ~ .mynah-vote-down {\\n color: var(--mynah-color-text-default);\\n opacity: 1;\\n }\\n }\\n }\\n}\\n\",\"#mynah-feedback-form-wrapper {\\n display: flex;\\n flex-flow: column nowrap;\\n position: absolute;\\n bottom: 0;\\n left: var(--mynah-sizing-2);\\n right: var(--mynah-sizing-2);\\n width: auto;\\n box-sizing: border-box;\\n z-index: 9999999;\\n opacity: 0;\\n transform: translate3d(0, 5vh, 0);\\n transition: var(--mynah-bottom-panel-transition);\\n overflow: visible;\\n &:before {\\n transition: all 400ms cubic-bezier(0.25, 0, 0, 1);\\n content: \\\"\\\";\\n position: absolute;\\n right: calc(-1 * var(--mynah-sizing-2));\\n bottom: 0;\\n left: 0;\\n width: 100vw;\\n height: 100vh;\\n background-color: black;\\n opacity: 0;\\n pointer-events: none;\\n transform: translate3d(0, 0, 0) scale(2);\\n transform-origin: center center;\\n z-index: -1;\\n }\\n > .mynah-bottom-block-close-button {\\n transform: translate3d(calc(-1 * var(--mynah-sizing-1)), calc(-100% - var(--mynah-sizing-3)), 0px);\\n }\\n & + #mynah-wrapper {\\n transition: var(--mynah-bottom-panel-transition);\\n }\\n &:not(.mynah-feedback-form-show) {\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n &.mynah-feedback-form-show {\\n opacity: 1;\\n transform: translate3d(0, 0, 0);\\n &:before {\\n opacity: 0.15;\\n }\\n & + #mynah-wrapper {\\n transform: translate3d(0, 0px, 0) scale(0.95);\\n transform-origin: top center;\\n opacity: 0.25;\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n }\\n}\\n\\n.mynah-feedback-form {\\n pointer-events: all;\\n box-sizing: border-box;\\n transition: var(--mynah-short-transition-rev);\\n transform: translate3d(0, 0, 0);\\n display: flex;\\n flex-flow: column;\\n gap: var(--mynah-sizing-4);\\n align-items: stretch;\\n transform-origin: right bottom;\\n z-index: 10;\\n position: relative;\\n border: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n border-top-right-radius: var(--mynah-card-radius);\\n border-top-left-radius: var(--mynah-card-radius);\\n border-bottom: none;\\n box-shadow: 0px -25px 20px -25px rgba(0, 0, 0, 0.15);\\n background-color: var(--mynah-color-bg);\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-feedback-form-header {\\n display: flex;\\n box-sizing: border-box;\\n align-items: center;\\n margin-bottom: var(--mynah-sizing-4);\\n > h4 {\\n flex: 1;\\n margin: 0;\\n }\\n }\\n\\n > .mynah-feedback-form-comment {\\n background-color: transparent;\\n padding: var(--mynah-sizing-3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n resize: none;\\n width: 100%;\\n height: 100px;\\n max-height: 25vh;\\n border-radius: var(--mynah-sizing-2);\\n font-size: var(--mynah-font-size-small);\\n outline: none;\\n color: var(--mynah-color-text-input);\\n background-color: var(--mynah-card-bg);\\n box-sizing: border-box;\\n font-family: inherit;\\n }\\n\\n > .mynah-feedback-form-select-wrapper {\\n position: relative;\\n display: flex;\\n box-sizing: border-box;\\n padding: var(--mynah-sizing-3);\\n justify-content: flex-end;\\n align-items: center;\\n > .mynah-feedback-form-select {\\n position: absolute;\\n width: 100%;\\n left: 0;\\n color: var(--mynah-color-text-default);\\n border-radius: var(--mynah-card-radius);\\n padding: var(--mynah-sizing-3);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n -webkit-appearance: none;\\n appearance: none;\\n text-indent: 1px;\\n text-overflow: clip;\\n outline: none;\\n }\\n > .mynah-feedback-form-select-handle {\\n color: var(--mynah-color-text-weak);\\n pointer-events: none;\\n }\\n }\\n\\n > .mynah-feedback-form-buttons-container {\\n display: flex;\\n justify-content: flex-end;\\n align-items: center;\\n gap: var(--mynah-sizing-1);\\n box-sizing: border-box;\\n }\\n}\\n\",\".mynah-overlay {\\n position: fixed;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n box-sizing: border-box;\\n pointer-events: none;\\n z-index: 1000000;\\n &.mynah-overlay-dim-outside {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-bg);\\n transition: var(--mynah-short-transition-rev-opacity);\\n opacity: 0.45;\\n }\\n }\\n > .mynah-overlay-container {\\n --overlayLeftPos: 0;\\n --overlayTopPos: 0;\\n --overlayInnerHorizontalOrigin: left;\\n --overlayInnerVerticalOrigin: top;\\n position: absolute;\\n display: block;\\n overflow: visible;\\n border-radius: var(--mynah-card-radius);\\n\\n .mynah-card,\\n .mynah-card * {\\n pointer-events: none !important;\\n .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n & ~ *:last-child {\\n margin-bottom: 0 !important;\\n }\\n }\\n }\\n\\n &.background {\\n &:before {\\n content: \\\"\\\";\\n background-color: transparent;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n top: calc(var(--mynah-button-border-width) * -1);\\n left: calc(var(--mynah-button-border-width) * -1);\\n right: calc(var(--mynah-button-border-width) * -1);\\n bottom: calc(var(--mynah-button-border-width) * -1);\\n width: auto;\\n height: auto;\\n pointer-events: none;\\n box-sizing: border-box;\\n opacity: 0;\\n border: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n box-shadow: var(--mynah-shadow-prioritization-menu);\\n }\\n\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n width: var(--mynah-sizing-8);\\n height: var(--mynah-sizing-8);\\n left: 0;\\n top: 0;\\n opacity: 0;\\n border: var(--mynah-sizing-4);\\n background-color: var(--mynah-card-bg);\\n border-radius: inherit;\\n transition: var(--mynah-short-transition-rev);\\n transition-delay: 20ms;\\n }\\n }\\n\\n &.horizontal-direction {\\n &-to-left,\\n &-from-end-to-left {\\n --overlayLeftPos: -100%;\\n --overlayInnerHorizontalOrigin: right;\\n &:after {\\n left: calc(100% - var(--mynah-sizing-4));\\n }\\n }\\n &-at-center {\\n --overlayInnerHorizontalOrigin: center;\\n --overlayLeftPos: -50%;\\n &:after {\\n left: calc(50% - var(--mynah-sizing-4));\\n }\\n }\\n }\\n &.vertical-direction {\\n &-to-top,\\n &-from-end-to-top {\\n --overlayTopPos: -100%;\\n --overlayInnerVerticalOrigin: bottom;\\n &:after {\\n top: calc(100% - var(--mynah-sizing-4));\\n }\\n }\\n &-at-center {\\n --overlayInnerVerticalOrigin: center;\\n --overlayTopPos: -50%;\\n &:after {\\n top: calc(50% - var(--mynah-sizing-4));\\n }\\n }\\n }\\n\\n > .mynah-overlay-inner-container {\\n display: inline-block;\\n overflow: hidden;\\n z-index: 10;\\n position: relative;\\n transform: translate3d(0, 0, 0) scale(0.85);\\n transform-origin: var(--overlayInnerHorizontalOrigin) var(--overlayInnerVerticalOrigin);\\n transition: var(--mynah-short-transition-rev);\\n width: 100%;\\n }\\n &:before {\\n transform: translate3d(0, 0, 0) scale(0.85);\\n transition: var(--mynah-short-transition-rev);\\n }\\n > .mynah-overlay-inner-container,\\n &:before {\\n opacity: 0;\\n transition-delay: 0ms;\\n }\\n\\n transform: translate3d(var(--overlayLeftPos), var(--overlayTopPos), 0);\\n }\\n &:not(.mynah-overlay-open) {\\n &,\\n & * {\\n pointer-events: none !important;\\n }\\n }\\n\\n &.mynah-overlay-open {\\n > .mynah-overlay-container {\\n > .mynah-overlay-inner-container {\\n transform: translate3d(0, 0, 0) scale(1);\\n }\\n &:before {\\n transform: translate3d(0, 0, 0) scale(1);\\n transition-delay: 50ms;\\n opacity: 1;\\n }\\n > .mynah-overlay-inner-container {\\n transition-delay: 20ms;\\n }\\n > .mynah-overlay-inner-container {\\n opacity: 1;\\n }\\n &:after {\\n transition-delay: 0ms;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n opacity: 1;\\n }\\n }\\n &.mynah-overlay-close-on-outside-click {\\n pointer-events: all;\\n }\\n }\\n}\\n\",\".mynah-notification {\\n display: inline-flex;\\n flex-flow: row nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-3);\\n padding: var(--mynah-sizing-5);\\n overflow: hidden;\\n position: relative;\\n &.mynah-notification-clickable {\\n pointer-events: all;\\n cursor: pointer;\\n }\\n > .mynah-ui-icon {\\n font-size: var(--mynah-sizing-6);\\n &- {\\n &ok-circled {\\n color: var(--mynah-color-status-success);\\n }\\n &info {\\n color: var(--mynah-color-status-info);\\n }\\n &warning {\\n color: var(--mynah-color-status-warning);\\n }\\n &error {\\n color: var(--mynah-color-status-error);\\n }\\n }\\n }\\n > .mynah-notification-container {\\n flex: 1;\\n max-width: 50vw;\\n min-width: 200px;\\n display: inline-flex;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n gap: var(--mynah-sizing-3);\\n overflow: hidden;\\n position: relative;\\n > .mynah-notification-title {\\n margin: 0;\\n &:empty {\\n display: none;\\n }\\n }\\n > .mynah-notification-content {\\n font-size: var(--mynah-font-size-small);\\n display: flex;\\n flex-flow: column nowrap;\\n justify-content: flex-start;\\n align-items: flex-start;\\n gap: var(--mynah-sizing-2);\\n > .mynah-button {\\n align-self: stretch;\\n background-color: var(--mynah-color-alternate);\\n color: var(--mynah-color-alternate-reverse);\\n }\\n }\\n }\\n}\\n\",\".mynah-syntax-highlighter {\\n display: flex;\\n flex-flow: column nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n margin: var(--mynah-sizing-1) 0;\\n background-color: var(--mynah-card-bg);\\n max-width: 100%;\\n & + *:not(:empty) {\\n margin-top: var(--mynah-sizing-2);\\n }\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n position: relative;\\n border-radius: var(--mynah-card-radius);\\n line-height: normal;\\n color: var(--mynah-color-text-default);\\n &:before,\\n & > .line-numbers-rows:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-syntax-bg);\\n opacity: 0.2;\\n pointer-events: none;\\n user-select: none;\\n }\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n padding: var(--mynah-sizing-half);\\n padding-left: var(--mynah-sizing-3);\\n order: 256000;\\n box-sizing: border-box;\\n margin: 0;\\n margin-block: 0 !important;\\n position: relative;\\n border-top: 1px solid var(--mynah-color-border-default);\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-border-default);\\n opacity: 0.25;\\n }\\n > .mynah-syntax-highlighter-language {\\n flex: 1;\\n font-size: var(--mynah-font-size-xsmall);\\n display: inline-block;\\n opacity: 0.65;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n .mynah-button {\\n min-width: var(--mynah-sizing-6);\\n height: calc(var(--mynah-sizing-6) + var(--mynah-sizing-half));\\n * {\\n font-size: var(--mynah-font-size-xsmall);\\n color: var(--mynah-color-text-strong);\\n }\\n }\\n }\\n &.mynah-inline-code {\\n display: inline-flex;\\n max-width: 100%;\\n line-height: normal;\\n padding: 0 !important;\\n margin: 0;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n overflow: visible;\\n border: none;\\n color: var(--mynah-color-syntax-attr);\\n margin-left: 2px;\\n margin-right: 2px;\\n padding-bottom: 1px !important;\\n margin-bottom: -1px;\\n background-color: transparent !important;\\n > pre {\\n padding: 0;\\n }\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n box-sizing: border-box;\\n top: 0;\\n height: 100%;\\n left: -2px;\\n width: calc(100% + 4px);\\n border-radius: calc(var(--mynah-card-radius) / 2);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n z-index: -1;\\n }\\n &:before {\\n left: -2px;\\n width: calc(100% + 4px);\\n border-radius: calc(var(--mynah-card-radius) / 2);\\n box-sizing: border-box;\\n }\\n }\\n > pre {\\n padding: var(--mynah-sizing-2);\\n margin: 0;\\n overflow-x: auto;\\n overflow-y: hidden;\\n position: relative;\\n\\n *,\\n & {\\n font-size: var(--mynah-syntax-code-font-size) !important;\\n font-family: var(--mynah-syntax-code-font-family) !important;\\n }\\n > code {\\n color: var(--mynah-color-syntax-code);\\n filter: brightness(0.95);\\n white-space: pre;\\n }\\n\\n > code,\\n & {\\n text-align: left;\\n white-space: pre;\\n word-spacing: normal;\\n word-break: normal;\\n word-wrap: normal;\\n tab-size: 4;\\n hyphens: none;\\n }\\n > code::selection,\\n &::selection {\\n text-shadow: none;\\n background: #b3d4fc;\\n }\\n\\n .token.comment,\\n .token.prolog,\\n .token.doctype,\\n .token.cdata {\\n color: var(--mynah-color-syntax-comment);\\n }\\n\\n .token.punctuation {\\n color: currentColor;\\n }\\n\\n .token.namespace {\\n opacity: 0.7;\\n }\\n\\n .token.property,\\n .token.tag,\\n .token.boolean,\\n .token.number,\\n .token.constant,\\n .token.symbol,\\n .token.deleted {\\n color: var(--mynah-color-syntax-property);\\n }\\n\\n .token.selector,\\n .token.attr-name,\\n .token.string,\\n .token.char,\\n .token.builtin,\\n .token.inserted {\\n color: var(--mynah-color-syntax-attr);\\n }\\n\\n .token.operator,\\n .token.entity,\\n .token.url,\\n .language-css .token.string,\\n .style .token.string {\\n color: var(--mynah-color-syntax-operator);\\n }\\n\\n .token.atrule,\\n .token.attr-value,\\n .token.class-name,\\n .token.keyword {\\n color: var(--mynah-color-syntax-attr-value);\\n }\\n\\n .token.function {\\n color: var(--mynah-color-syntax-function);\\n font-weight: 500;\\n }\\n \\n .token.regex,\\n .token.important,\\n .token.variable {\\n color: var(--mynah-color-syntax-variable);\\n font-weight: 500;\\n }\\n\\n .token.important,\\n .token.bold {\\n font-weight: bold;\\n }\\n .token.italic {\\n font-style: italic;\\n }\\n\\n .token.entity {\\n cursor: help;\\n }\\n\\n &.line-numbers {\\n position: relative;\\n padding-left: 3.8em;\\n counter-reset: linenumber;\\n position: relative;\\n }\\n }\\n > .line-numbers-rows {\\n position: absolute;\\n background-color: inherit;\\n > span,\\n & {\\n pointer-events: none;\\n user-select: none;\\n }\\n top: var(--mynah-sizing-2);\\n font-size: 100%;\\n left: 0;\\n width: var(--mynah-sizing-12);\\n overflow: hidden;\\n text-overflow: clip;\\n letter-spacing: -1px;\\n border-right: 1px solid var(--mynah-color-border-default);\\n\\n > span {\\n display: block;\\n color: var(--mynah-color-border-default);\\n padding-right: 0.8em;\\n text-align: right;\\n }\\n }\\n}\\n\\n.mynah-ui-syntax-highlighter-highlight-tooltip {\\n max-width: 80vw;\\n min-width: 10vw;\\n max-height: 80vh;\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n padding: var(--mynah-sizing-5);\\n .mynah-card-body {\\n > p:first-child:last-of-type,\\n > p p:first-child {\\n margin: 0;\\n }\\n }\\n}\\n\",\".mynah-chat-related-content-preview-wrapper {\\n max-width: 80vw;\\n max-height: 80vh;\\n > .mynah-chat-related-content-preview-content {\\n padding: var(--mynah-sizing-3);\\n background-color: var(--mynah-card-bg);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n border-radius: var(--mynah-card-radius);\\n }\\n}\\n.mynah-chat-prompt-overlay-buttons-container {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-2);\\n justify-content: flex-start;\\n align-items: flex-start;\\n}\\n.mynah-chat-wrapper {\\n transition: var(--mynah-bottom-panel-transition);\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: auto;\\n height: auto;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n justify-content: space-around;\\n align-items: stretch;\\n display: none;\\n > div[class^=\\\"mynah-chat\\\"] {\\n width: 100%;\\n max-width: 100%;\\n box-sizing: border-box;\\n padding-left: var(--mynah-sizing-4);\\n padding-right: var(--mynah-sizing-4);\\n }\\n &:after {\\n transition: all $smoothduration $smoothbezier;\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n width: auto;\\n height: auto;\\n background-color: black;\\n z-index: 1000;\\n opacity: 0;\\n pointer-events: none;\\n transform: translate3d(0, 0, 0) scale(2);\\n transform-origin: center center;\\n }\\n\\n @import \\\"chat-items-container\\\";\\n @import \\\"chat-overflowing-intermediate-block\\\";\\n @import \\\"chat-prompt-wrapper\\\";\\n}\\n\\n@import 'chat-command-selector';\\n@import \\\"chat-item-tree-view\\\";\\n@import \\\"chat-prompt-code-snippet\\\";\\n\",\"> .mynah-chat-items-container {\\n display: flex;\\n flex: 1 1 0%;\\n overflow-x: hidden;\\n overflow-y: auto;\\n flex-flow: column-reverse nowrap;\\n align-items: flex-start;\\n padding: var(--mynah-sizing-4);\\n .mynah-chat-item-card {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n position: relative;\\n max-width: 90%;\\n transition: var(--mynah-text-flow-transition);\\n transform: translate3d(0, var(--mynah-sizing-12), 0) scale(1, 0.95);\\n opacity: 0;\\n transform-origin: center bottom;\\n &:not(:first-of-type) {\\n max-height: initial !important;\\n }\\n &.mynah-chat-item-no-content {\\n display: none !important;\\n }\\n > .mynah-chat-item-spacer {\\n display: block;\\n width: 100%;\\n height: var(--mynah-sizing-6);\\n order: 10000;\\n }\\n & ~ .mynah-chat-item-temporary-element,\\n & ~ * .mynah-chat-item-temporary-element {\\n display: none !important;\\n visibility: hidden !important;\\n & ~ .mynah-chat-item-spacer {\\n display: none;\\n height: 0;\\n }\\n }\\n\\n .mynah-chat-item-card {\\n max-width: 100%;\\n width: 100%;\\n padding: var(--mynah-sizing-3) 0 var(--mynah-sizing-3) 0;\\n border-top: 1px solid var(--mynah-color-border-default);\\n margin-top: var(--mynah-sizing-3);\\n padding-bottom: 0;\\n .mynah-chat-item-card-related-content > .mynah-chat-item-card-related-content-title {\\n font-size: var(--mynah-font-size-large);\\n }\\n }\\n\\n > span.invisible {\\n display: none;\\n }\\n\\n > .mynah-chat-items-spinner {\\n display: none;\\n position: absolute;\\n bottom: var(--mynah-sizing-2);\\n left: 50%;\\n margin-left: -50px;\\n width: 100px;\\n top: 49%;\\n margin-top: calc(-1 * var(--mynah-sizing-2));\\n height: var(--mynah-sizing-4);\\n overflow: visible;\\n z-index: 10000;\\n gap: var(--mynah-sizing-2);\\n justify-content: center;\\n align-items: end;\\n transform: translate3d(0px, calc(-1 * var(--mynah-sizing-2)), 0px);\\n > span {\\n animation: bounce 500ms infinite cubic-bezier(0.5, 0, 0.15, 1) alternate;\\n display: inline-block;\\n width: var(--mynah-sizing-2);\\n height: var(--mynah-sizing-2);\\n border-radius: var(--mynah-sizing-2);\\n background-color: var(--mynah-color-text-weak);\\n opacity: 0.5;\\n &:nth-child(2) {\\n animation-delay: 150ms;\\n }\\n &:nth-child(3) {\\n animation-delay: 300ms;\\n }\\n }\\n }\\n &.mynah-chat-item-code-result {\\n min-width: 70%;\\n }\\n a {\\n pointer-events: bounding-box;\\n color: var(--mynah-color-text-link);\\n }\\n &.reveal {\\n opacity: 1;\\n transform: translate3d(0, 0, 0) scale(1, 1);\\n }\\n > .mynah-chat-item-card-icon-wrapper {\\n background-color: var(--mynah-color-alternate);\\n color: var(--mynah-color-alternate-reverse);\\n padding: var(--mynah-sizing-2);\\n border-radius: 100%;\\n }\\n > .mynah-card {\\n > .mynah-card-body {\\n & > div {\\n > .mynah-syntax-highlighter {\\n filter: contrast(1.15) brightness(0.85);\\n }\\n > h1,\\n > h2,\\n > h3,\\n > h4 {\\n &:first-child {\\n margin-top: 0;\\n }\\n }\\n }\\n > .mynah-chat-item-card-related-content {\\n margin-top: var(--mynah-sizing-3);\\n padding-top: var(--mynah-sizing-4);\\n border-top: var(--mynah-button-border-width) solid var(--mynah-color-border-default);\\n > .mynah-chat-item-card-related-content-title {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n margin: 0;\\n }\\n .mynah-source-link-title {\\n font-size: var(--mynah-font-size-small);\\n font-weight: 400;\\n }\\n }\\n padding-left: 0;\\n }\\n :hover::before {\\n box-shadow: var(--mynah-shadow-card) !important;\\n }\\n }\\n\\n > .mynah-chat-item-followup-question {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n position: relative;\\n gap: var(--mynah-sizing-2);\\n > .mynah-chat-item-followup-question-text {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n font-style: italic;\\n }\\n > .mynah-chat-item-followup-question-options-wrapper {\\n display: inline-flex;\\n flex-flow: row wrap;\\n max-width: 100%;\\n gap: var(--mynah-sizing-2);\\n > .mynah-chat-item-followup-question-option {\\n padding: var(--mynah-sizing-2);\\n color: var(--mynah-color-text-default);\\n border: var(--mynah-border-width) solid currentColor;\\n border-radius: var(--mynah-card-radius);\\n cursor: pointer;\\n font-size: var(--mynah-font-size-xsmall);\\n max-width: 100%;\\n overflow: hidden;\\n display: inline-flex;\\n gap: var(--mynah-sizing-2);\\n align-items: center;\\n &:not(:hover) {\\n opacity: 0.75;\\n }\\n &-status {\\n &-success {\\n color: var(--mynah-color-status-success);\\n }\\n &-error {\\n color: var(--mynah-color-status-error);\\n }\\n &-warning {\\n color: var(--mynah-color-status-warning);\\n }\\n &-info {\\n color: var(--mynah-color-status-info);\\n }\\n }\\n }\\n }\\n }\\n\\n .mynah-chat-item-card-related-content {\\n display: flex;\\n flex-flow: column nowrap;\\n gap: var(--mynah-sizing-2);\\n overflow: hidden;\\n position: relative;\\n > .mynah-chat-item-card-related-content-item {\\n max-width: 100%;\\n > .mynah-card {\\n padding: 0;\\n }\\n .amzn-mynah-search-result-highlight {\\n background-color: inherit;\\n color: inherit;\\n }\\n }\\n &:not(.expanded) {\\n > .mynah-chat-item-card-related-content-item {\\n $maxItems: 1;\\n $selector: \\\"&\\\";\\n @for $i from 1 through $maxItems {\\n $selector: #{$selector} + \\\":not(:nth-of-type(\\\" + #{$i} + \\\"))\\\";\\n }\\n #{$selector} {\\n display: none;\\n }\\n &:nth-of-type(#{$maxItems}) {\\n margin-bottom: calc(-1 * var(--mynah-sizing-4));\\n pointer-events: none;\\n @include list-fader-bottom(var(--mynah-sizing-12));\\n -webkit-mask-image: linear-gradient(to top, transparent var(--mynah-sizing-1), black 70%);\\n }\\n &:nth-of-type(#{$maxItems + 1}) {\\n & ~ .mynah-chat-item-card-related-content-show-more {\\n display: flex;\\n }\\n }\\n }\\n }\\n\\n > .mynah-chat-item-card-related-content-show-more {\\n display: none;\\n max-width: 80%;\\n z-index: 10000;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n align-self: center;\\n height: var(--mynah-sizing-8);\\n filter: none;\\n > span,\\n > i {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n font-size: var(--mynah-font-size-xsmall);\\n }\\n }\\n }\\n &.mynah-chat-item-system-prompt,\\n &.mynah-chat-item-prompt {\\n align-self: flex-end;\\n > .mynah-chat-item-card-icon-wrapper {\\n align-self: flex-end;\\n }\\n .mynah-chat-item-followup-question,\\n .mynah-chat-item-card-related-content {\\n align-items: flex-end;\\n }\\n\\n .mynah-syntax-highlighter {\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n }\\n }\\n\\n .mynah-chat-item-card-related-content > .mynah-card,\\n > .mynah-card {\\n box-shadow: 0px 0px 5px -5px var(--mynah-color-button);\\n padding: var(--mynah-sizing-4);\\n background-color: var(--mynah-color-button);\\n border-bottom-right-radius: 0;\\n border: none;\\n &,\\n > .mynah-card-body {\\n color: var(--mynah-color-button-reverse);\\n }\\n }\\n }\\n &.mynah-chat-item-system-prompt {\\n > .mynah-card {\\n background-color: var(--mynah-color-status-warning);\\n }\\n }\\n\\n &.mynah-chat-item-answer-stream.mynah-chat-item-empty.stream-ended {\\n display: none;\\n }\\n &.mynah-chat-item-answer,\\n &.mynah-chat-item-answer-stream {\\n > .mynah-card {\\n border-bottom-left-radius: 0;\\n max-height: 100%;\\n flex: 1;\\n }\\n }\\n &.mynah-chat-item-ai-prompt,\\n &.mynah-chat-item-answer,\\n &.mynah-chat-item-answer-stream {\\n > .mynah-chat-item-card-icon-wrapper {\\n align-self: flex-start;\\n }\\n > .mynah-chat-item-card-related-content {\\n > .mynah-chat-item-card-related-content-item > .mynah-card-compact {\\n opacity: 1;\\n > .mynah-source-link-header {\\n opacity: 1;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n&.loading {\\n > .mynah-chat-items-container {\\n padding-bottom: var(--mynah-sizing-14);\\n > .mynah-chat-item-card.mynah-chat-item-answer-stream {\\n &:first-child {\\n > .mynah-card {\\n min-width: 100px;\\n min-height: var(--mynah-sizing-13);\\n > .mynah-card-votes-wrapper {\\n display: none;\\n }\\n }\\n &.mynah-chat-item-empty > .mynah-chat-items-spinner {\\n display: inline-flex;\\n }\\n &:not(.mynah-chat-item-empty):before {\\n content: \\\"\\\";\\n pointer-events: none;\\n position: absolute;\\n overflow: hidden;\\n border-bottom-right-radius: var(--mynah-card-radius);\\n bottom: calc(var(--mynah-sizing-6) + var(--mynah-border-width));\\n left: var(--mynah-border-width);\\n right: var(--mynah-border-width);\\n width: auto;\\n height: var(--mynah-sizing-2);\\n box-sizing: border-box;\\n z-index: 10;\\n background-image: linear-gradient(\\n 90deg,\\n var(--mynah-color-button) 0%,\\n rgba(255, 255, 255, 0) 25%,\\n rgba(255, 255, 255, 0) 50%,\\n var(--mynah-color-button) 100%\\n );\\n background-position: 0% bottom;\\n background-size: 200% var(--mynah-sizing-half);\\n background-repeat: repeat-x;\\n animation: horizontal-roll 1250ms linear infinite both;\\n }\\n }\\n }\\n }\\n}\\n\",\"@mixin background-shadow {\\n overflow: visible;\\n &:before {\\n content: \\\"\\\";\\n background-color: transparent;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n border-radius: inherit;\\n box-shadow: var(--mynah-shadow-card);\\n pointer-events: none;\\n filter: brightness(50%) saturate(250%) contrast(250%);\\n opacity: 0.4;\\n }\\n}\\n\\n@mixin lighten-darken {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n backdrop-filter: brightness(var(--mynah-color-context-filter));\\n }\\n}\\n\\n@mixin list-fader {\\n position: relative;\\n $listFader: linear-gradient(\\n to bottom,\\n transparent 0%,\\n black var(--mynah-sizing-6),\\n black calc(100% - var(--mynah-sizing-6)),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n\\n@mixin list-fader-bottom($height: var(--mynah-sizing-6)) {\\n position: relative;\\n $listFader: linear-gradient(\\n to bottom,\\n black 30%,\\n black calc(100% - $height),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n@mixin list-fader-right($height: var(--mynah-sizing-6)) {\\n position: relative;\\n $listFader: linear-gradient(\\n to right,\\n black 30%,\\n black calc(100% - $height),\\n transparent 100%\\n );\\n -webkit-mask-image: $listFader;\\n -webkit-mask-size: 100% 100%;\\n mask-image: $listFader;\\n mask-size: 100% 100%;\\n}\\n\\n@mixin context-pill-group-background {\\n &:after,\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 2;\\n border-radius: calc(var(--mynah-button-radius) * 3 / 2);\\n border: var(--mynah-border-width) solid transparent;\\n }\\n &:after {\\n background-color: var(--mynah-card-bg);\\n z-index: 1;\\n }\\n}\\n\\n@mixin chatMode {\\n &[mode=\\\"chat\\\"] {\\n @content;\\n }\\n}\\n\",\"&.loading {\\n > .mynah-chat-overflowing-intermediate-block {\\n display: flex;\\n flex-flow: column nowrap;\\n max-height: 0;\\n overflow: visible;\\n justify-content: flex-end;\\n > .mynah-chat-stop-chat-response-button {\\n display: inline-flex;\\n }\\n }\\n}\\n> .mynah-chat-overflowing-intermediate-block {\\n display: flex;\\n flex-flow: column nowrap;\\n max-height: 0;\\n overflow: visible;\\n justify-content: flex-end;\\n align-items: center;\\n border-bottom: 1px solid var(--mynah-color-border-default);\\n &.hidden {\\n display: none;\\n }\\n > .mynah-chat-stop-chat-response-button {\\n margin-bottom: var(--mynah-sizing-2);\\n display: none;\\n min-height: var(--mynah-sizing-8);\\n background-color: var(--mynah-card-bg);\\n padding-left: var(--mynah-sizing-2);\\n &:active {\\n box-shadow: none;\\n filter: none;\\n }\\n * {\\n color: var(--mynah-color-text-weak);\\n font-size: var(--mynah-font-size-xsmall);\\n }\\n }\\n}\\n\",\"> .mynah-chat-prompt-wrapper {\\n display: block;\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-chat-prompt {\\n display: flex;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n box-sizing: border-box;\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n padding: var(--mynah-sizing-4);\\n\\n > .mynah-chat-prompt-input-wrapper {\\n display: flex;\\n flex-flow: row nowrap;\\n overflow: hidden;\\n box-sizing: border-box;\\n gap: var(--mynah-sizing-1);\\n align-items: flex-start;\\n position: relative;\\n color: var(--mynah-color-text-weak);\\n > .mynah-chat-prompt-input-command-wrapper {\\n align-self: flex-start;\\n display: inline-flex;\\n align-items: center;\\n position: relative;\\n gap: var(--mynah-sizing-1);\\n box-sizing: border-box;\\n &.hidden {\\n display: none;\\n }\\n > .mynah-chat-prompt-input-command-text {\\n user-select: none;\\n cursor: pointer;\\n font-family: var(--mynah-font-family);\\n font-size: var(--mynah-font-size-large);\\n color: var(--mynah-color-text-input);\\n font-weight: bold;\\n }\\n }\\n > .mynah-chat-prompt-input-inner-wrapper {\\n display: block;\\n width: 100%;\\n position: relative;\\n align-self: center;\\n > .mynah-chat-prompt-input {\\n font-family: var(--mynah-font-family);\\n border: none;\\n resize: none;\\n background-color: rgba(0, 0, 0, 0);\\n font-size: var(--mynah-font-size-large);\\n color: var(--mynah-color-text-input);\\n outline: none;\\n width: 100%;\\n max-height: 20vh;\\n min-height: 1.5rem;\\n &::placeholder {\\n color: var(--mynah-color-text-weak);\\n }\\n &:not(.mynah-chat-prompt-input-sizer) {\\n position: absolute;\\n height: 100%;\\n top: 0;\\n left: 0;\\n padding: 0;\\n }\\n }\\n > .mynah-chat-prompt-input-sizer {\\n display: block;\\n width: 100%;\\n opacity: 0;\\n visibility: hidden;\\n pointer-events: none;\\n overflow: hidden;\\n white-space: pre-wrap;\\n word-break: break-word;\\n }\\n & ~ .mynah-chat-prompt-button {\\n background-color: transparent;\\n width: auto;\\n min-width: 0;\\n height: auto;\\n padding-top: 1px;\\n i {\\n font-size: calc(2 * var(--mynah-font-size-xsmall));\\n color: var(--mynah-color-button);\\n height: var(--mynah-sizing-6);\\n padding-left: 0;\\n }\\n }\\n &.no-text ~ .mynah-chat-prompt-button:not([disabled]),\\n & ~ .mynah-chat-prompt-button[disabled] {\\n pointer-events: none;\\n opacity: 0.25;\\n i {\\n color: var(--mynah-color-text-weak);\\n }\\n }\\n }\\n }\\n > .mynah-chat-prompt-attachment-wrapper {\\n &:empty {\\n display: none;\\n }\\n > .mynah-chat-attachment-item {\\n position: relative;\\n display: inline-block;\\n max-width: 250px;\\n cursor: pointer;\\n &:after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n border-radius: var(--mynah-card-radius);\\n opacity: 0;\\n transition: var(--mynah-short-transition-rev);\\n z-index: 8000;\\n background-color: var(--mynah-color-alternate);\\n }\\n > .mynah-chat-attachment-delete-icon {\\n color: var(--mynah-color-alternate-reverse);\\n opacity: 0;\\n transition: var(--mynah-short-transition-rev);\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n width: 30px;\\n height: 30px;\\n margin-left: -15px;\\n margin-top: -15px;\\n z-index: 9000;\\n > i {\\n width: 30px;\\n height: 30px;\\n }\\n }\\n &:hover {\\n &:after {\\n opacity: 0.75;\\n }\\n > .mynah-chat-attachment-delete-icon {\\n opacity: 1;\\n }\\n }\\n > .mynah-card {\\n pointer-events: none !important;\\n * {\\n pointer-events: none !important;\\n }\\n > .mynah-card-body {\\n display: none;\\n }\\n }\\n }\\n }\\n }\\n &.input-has-focus > .mynah-chat-prompt {\\n border: var(--mynah-border-width) solid var(--mynah-color-button);\\n }\\n\\n > .mynah-chat-prompt-chars-indicator {\\n width: 100%;\\n font-size: var(--mynah-font-size-xsmall);\\n padding-top: var(--mynah-sizing-2);\\n opacity: 0.5;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n font-style: italic;\\n }\\n}\\n\\n> .mynah-chat-prompt-input-info {\\n display: flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n overflow: hidden;\\n padding: 0 var(--mynah-sizing-4) var(--mynah-sizing-2) var(--mynah-sizing-4);\\n font-size: var(--mynah-font-size-xsmall);\\n &:empty {\\n display: none;\\n }\\n > * {\\n margin: 0;\\n margin-block-start: 0;\\n margin-block-end: 0;\\n margin-top: 0;\\n margin-bottom: 0;\\n }\\n}\\n\",\".mynah-chat-command-selector {\\n display: flex;\\n box-sizing: border-box;\\n background-color: var(--mynah-card-bg);\\n border-radius: var(--mynah-card-radius);\\n width: 100%;\\n pointer-events: all;\\n flex-flow: column nowrap;\\n align-items: stretch;\\n justify-content: flex-start;\\n > .mynah-chat-command-selector-group {\\n display: flex;\\n box-sizing: border-box;\\n width: 100%;\\n flex-flow: column nowrap;\\n align-items: stretch;\\n justify-content: flex-start;\\n padding: var(--mynah-sizing-2);\\n > .mynah-chat-command-selector-group-title {\\n margin: 0;\\n color: var(--mynah-color-text-weak);\\n opacity: 0.75;\\n padding: var(--mynah-sizing-2) var(--mynah-sizing-3);\\n }\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid var(--mynah-color-border-default);\\n }\\n\\n > .mynah-chat-command-selector-command {\\n display: flex;\\n box-sizing: border-box;\\n width: 100%;\\n flex-flow: column nowrap;\\n align-items: flex-start;\\n justify-content: flex-start;\\n overflow: hidden;\\n cursor: pointer;\\n padding: var(--mynah-sizing-2) var(--mynah-sizing-3);\\n color: var(--mynah-color-text-default);\\n border-radius: var(--mynah-card-radius);\\n transition: var(--mynah-short-transition-rev);\\n gap: var(--mynah-sizing-1);\\n &:hover,\\n &.target-command {\\n background-color: var(--mynah-color-button);\\n &,\\n & * {\\n color: var(--mynah-color-button-reverse);\\n }\\n }\\n > .mynah-chat-command-selector-command-name {\\n font-family: var(--mynah-font-family);\\n font-size: var(--mynah-font-size-large);\\n font-weight: bold;\\n flex: 0 1 0%;\\n }\\n > .mynah-chat-command-selector-command-description {\\n font-size: var(--mynah-font-size-small);\\n opacity: 0.75;\\n flex: 1 0 100%;\\n }\\n }\\n }\\n}\\n\",\".mynah-chat-item-tree-view-wrapper {\\n margin: 0;\\n margin-block-end: 0 !important;\\n margin-block-start: 0 !important;\\n > .mynah-chat-item-tree-view-wrapper-container {\\n background-color: var(--mynah-card-bg);\\n color: var(--mynah-color-text-default);\\n margin-block-start: 0 !important;\\n margin-block-end: 0 !important;\\n position: relative;\\n border-radius: var(--mynah-card-radius);\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n > .mynah-chat-item-tree-view-wrapper-title {\\n display: flex;\\n flex-flow: row nowrap;\\n justify-content: flex-start;\\n align-items: center;\\n position: relative;\\n padding: var(--mynah-sizing-3);\\n gap: var(--mynah-sizing-3);\\n border-bottom: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n > h4 {\\n margin: 0;\\n }\\n\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n background-color: var(--mynah-color-border-default);\\n opacity: 0.25;\\n pointer-events: none;\\n }\\n }\\n > .mynah-chat-item-tree-view {\\n padding: var(--mynah-sizing-3);\\n overflow: hidden;\\n box-sizing: border-box;\\n width: 100%;\\n overflow-y: hidden;\\n overflow-x: auto;\\n }\\n }\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-label {\\n border-top-left-radius: var(--mynah-card-radius);\\n border-top-right-radius: var(--mynah-card-radius);\\n background-color: var(--mynah-color-alternate);\\n margin-bottom: 0px;\\n padding: var(--mynah-sizing-4);\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-feedback-label {\\n padding-left: var(--mynah-sizing-4);\\n}\\n\\n.mynah-chat-item-tree-view-wrapper-feedback-div {\\n float: right;\\n\\n button:first-child {\\n margin-right: var(--mynah-sizing-2);\\n }\\n}\\n\\n.mynah-chat-item-tree-view-license {\\n &:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n background-color: var(--mynah-color-button);\\n opacity: 0.07;\\n pointer-events: none;\\n }\\n\\n color: var(--mynah-color-text-weak);\\n\\n ul {\\n margin: 0;\\n padding-left: var(--mynah-sizing-8);\\n > li {\\n &:not(:first-child) {\\n margin-top: var(--mynah-sizing-2);\\n }\\n .mynah-card-body p {\\n margin: 0;\\n }\\n }\\n }\\n\\n .mynah-chat-item-tree-view-license-dropdown-button > span {\\n max-width: unset;\\n }\\n}\\n\",\".outer-container {\\n display: flex;\\n &:not(:empty) {\\n margin-top: var(--mynah-sizing-3);\\n }\\n}\\n\\n.snippet-card-container.vertical-overflow {\\n & pre {\\n // Show fading effect at the bottom when overflowing\\n @include list-fader-bottom(var(--mynah-sizing-16));\\n }\\n}\\n\\n.snippet-card-container {\\n max-width: calc(5 * var(--mynah-sizing-18));\\n max-height: var(--mynah-sizing-10);\\n > .mynah-button {\\n position: absolute;\\n background-color: var(--mynah-card-bg) !important;\\n width: var(--mynah-sizing-7) !important;\\n min-width: var(--mynah-sizing-7) !important;\\n max-width: var(--mynah-sizing-7) !important;\\n height: var(--mynah-sizing-7) !important;\\n border-radius: 100%;\\n right: calc(-1 * var(--mynah-sizing-2));\\n top: calc(-1 * var(--mynah-sizing-2));\\n border: var(--mynah-border-width) solid var(--mynah-color-border-default);\\n opacity: 1 !important;\\n filter: brightness(0.95);\\n }\\n &:not(:hover) {\\n > .mynah-button {\\n display: none;\\n }\\n }\\n > .mynah-card-body > .mynah-syntax-highlighter {\\n border: none;\\n & pre {\\n text-overflow: ellipsis;\\n }\\n }\\n}\\n\\n.snippet-card-container-preview {\\n max-width: 80vw;\\n max-height: 70vh;\\n > .mynah-card-body {\\n > .mynah-syntax-highlighter {\\n max-height: calc(70vh - var(--mynah-sizing-12)) !important;\\n }\\n }\\n}\\n.snippet-card-container,\\n.snippet-card-container-preview {\\n position: relative;\\n overflow: visible;\\n width: 100%;\\n box-sizing: border-box;\\n > .mynah-card-body {\\n max-height: 100%;\\n > .mynah-syntax-highlighter {\\n user-select: none;\\n pointer-events: none;\\n margin: 0;\\n max-height: 100%;\\n overflow: hidden;\\n > .mynah-syntax-highlighter-copy-buttons {\\n display: none;\\n }\\n }\\n }\\n & pre {\\n text-overflow: ellipsis;\\n }\\n}\\n\",\".mynah-collapsible-content-wrapper {\\n display: block;\\n box-sizing: border-box;\\n width: 100%;\\n overflow: hidden;\\n position: relative;\\n > .mynah-collapsible-content-checkbox {\\n display: none;\\n & + .mynah-collapsible-content-label {\\n box-sizing: border-box;\\n display: flex;\\n flex-flow: column nowrap;\\n overflow: hidden;\\n align-items: flex-start;\\n justify-content: stretch;\\n padding: var(--mynah-sizing-2);\\n gap: var(--mynah-sizing-2);\\n > .mynah-collapsible-content-label-title-wrapper {\\n gap: var(--mynah-sizing-2);\\n display: flex;\\n flex-flow: row nowrap;\\n box-sizing: border-box;\\n width: 100%;\\n overflow: hidden;\\n justify-content: flex-start;\\n align-items: flex-start;\\n pointer-events: all;\\n cursor: pointer;\\n user-select: none;\\n > .mynah-collapsible-content-label-title-text {\\n flex: 1;\\n overflow: hidden;\\n }\\n }\\n > .mynah-collapsible-content-label-content-wrapper {\\n overflow: hidden;\\n box-sizing: border-box;\\n width: 100%;\\n }\\n }\\n\\n &:checked + .mynah-collapsible-content-label {\\n > .mynah-collapsible-content-label-content-wrapper {\\n display: none;\\n }\\n }\\n }\\n}\\n\",\"@import \\\"mixins\\\";\\n@import \\\"variables\\\";\\n@import \\\"animations\\\";\\n@import \\\"dark\\\";\\n@import \\\"favicons\\\";\\n\\n// Components\\n@import \\\"./components/main-container\\\";\\n@import \\\"./components/button\\\";\\n@import \\\"./components/toggle\\\";\\n@import \\\"./components/icon\\\";\\n@import \\\"./components/nav-tabs\\\";\\n@import \\\"./components/card/card\\\";\\n@import \\\"./components/feedback-form\\\";\\n@import \\\"./components/overlay\\\";\\n@import \\\"./components/notification\\\";\\n@import \\\"./components/syntax-highlighter\\\";\\n@import \\\"./components/chat/chat-wrapper\\\";\\n@import \\\"./components/collapsible-content\\\";\\n\\nbody,\\nhtml {\\n background-color: var(--mynah-color-bg);\\n color: var(--mynah-color-text-default);\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n margin: 0;\\n padding: 0;\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-weight: 600;\\n}\\n\\n::-webkit-scrollbar {\\n width: 2px;\\n height: 2px;\\n opacity: 0.25;\\n &:horizontal {\\n width: 0px;\\n height: 0px;\\n }\\n}\\n\\n*:focus {\\n outline: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '&quot;';\n break;\n case 38: // &\n escape = '&amp;';\n break;\n case 39: // '\n escape = '&#39;';\n break;\n case 60: // <\n escape = '&lt;';\n break;\n case 62: // >\n escape = '&gt;';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","!function(e){var t=\"\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b\",a={pattern:/(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,lookbehind:!0,alias:\"punctuation\",inside:null},n={bash:a,environment:{pattern:RegExp(\"\\\\$\"+t),alias:\"constant\"},variable:[{pattern:/\\$?\\(\\([\\s\\S]+?\\)\\)/,greedy:!0,inside:{variable:[{pattern:/(^\\$\\(\\([\\s\\S]+)\\)\\)/,lookbehind:!0},/^\\$\\(\\(/],number:/\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,operator:/--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,punctuation:/\\(\\(?|\\)\\)?|,|;/}},{pattern:/\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,greedy:!0,inside:{variable:/^\\$\\(|^`|\\)$|`$/}},{pattern:/\\$\\{[^}]+\\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,punctuation:/[\\[\\]]/,environment:{pattern:RegExp(\"(\\\\{)\"+t),lookbehind:!0,alias:\"constant\"}}},/\\$(?:\\w+|[#?*!@$])/],entity:/\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\\s*\\/.*/,alias:\"important\"},comment:{pattern:/(^|[^\"{\\\\$])#.*/,lookbehind:!0},\"function-name\":[{pattern:/(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,lookbehind:!0,alias:\"function\"},{pattern:/\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,alias:\"function\"}],\"for-or-select\":{pattern:/(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,alias:\"variable\",lookbehind:!0},\"assign-left\":{pattern:/(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,inside:{environment:{pattern:RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\"+t),lookbehind:!0,alias:\"constant\"}},alias:\"variable\",lookbehind:!0},parameter:{pattern:/(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,alias:\"variable\",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,lookbehind:!0,greedy:!0,inside:n},{pattern:/((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,lookbehind:!0,greedy:!0,inside:{bash:a}},{pattern:/(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,lookbehind:!0,greedy:!0,inside:n},{pattern:/(^|[^$\\\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,greedy:!0,inside:{entity:n.entity}}],environment:{pattern:RegExp(\"\\\\$?\"+t),alias:\"constant\"},variable:n.variable,function:{pattern:/(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,lookbehind:!0,alias:\"class-name\"},boolean:{pattern:/(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,lookbehind:!0},\"file-descriptor\":{pattern:/\\B&\\d\\b/,alias:\"important\"},operator:{pattern:/\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,inside:{\"file-descriptor\":{pattern:/^\\d/,alias:\"important\"}}},punctuation:/\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,number:{pattern:/(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,lookbehind:!0}},a.inside=e.languages.bash;for(var s=[\"comment\",\"function-name\",\"for-or-select\",\"assign-left\",\"parameter\",\"string\",\"environment\",\"function\",\"keyword\",\"builtin\",\"boolean\",\"file-descriptor\",\"operator\",\"punctuation\",\"number\"],o=n.variable[1].inside,i=0;i<s.length;i++)o[s[i]]=e.languages.bash[s[i]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash}(Prism);","Prism.languages.c=Prism.languages.extend(\"clike\",{comment:{pattern:/\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,greedy:!0},string:{pattern:/\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,greedy:!0},\"class-name\":{pattern:/(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,lookbehind:!0},keyword:/\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,function:/\\b[a-z_]\\w*(?=\\s*\\()/i,number:/(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore(\"c\",\"string\",{char:{pattern:/'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,greedy:!0}}),Prism.languages.insertBefore(\"c\",\"string\",{macro:{pattern:/(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,lookbehind:!0,greedy:!0,alias:\"property\",inside:{string:[{pattern:/^(#\\s*include\\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.languages.c.comment,\"macro-name\":[{pattern:/(^#\\s*define\\s+)\\w+\\b(?!\\()/i,lookbehind:!0},{pattern:/(^#\\s*define\\s+)\\w+\\b(?=\\()/i,lookbehind:!0,alias:\"function\"}],directive:{pattern:/^(#\\s*)[a-z]+/,lookbehind:!0,alias:\"keyword\"},\"directive-hash\":/^#/,punctuation:/##|\\\\(?=[\\r\\n])/,expression:{pattern:/\\S[\\s\\S]*/,inside:Prism.languages.c}}}}),Prism.languages.insertBefore(\"c\",\"function\",{constant:/\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/}),delete Prism.languages.c.boolean;","Prism.languages.clike={comment:[{pattern:/(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\\\:])\\/\\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\\\]/}},keyword:/\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,boolean:/\\b(?:false|true)\\b/,function:/\\b\\w+(?=\\()/,number:/\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,punctuation:/[{}[\\];(),.:]/};","!function(e){function n(e,n){return e.replace(/<<(\\d+)>>/g,(function(e,s){return\"(?:\"+n[+s]+\")\"}))}function s(e,s,a){return RegExp(n(e,s),a||\"\")}function a(e,n){for(var s=0;s<n;s++)e=e.replace(/<<self>>/g,(function(){return\"(?:\"+e+\")\"}));return e.replace(/<<self>>/g,\"[^\\\\s\\\\S]\")}var t=\"bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void\",r=\"class enum interface record struct\",i=\"add alias and ascending async await by descending from(?=\\\\s*(?:\\\\w|$)) get global group into init(?=\\\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\\\s*{)\",o=\"abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield\";function l(e){return\"\\\\b(?:\"+e.trim().replace(/ /g,\"|\")+\")\\\\b\"}var d=l(r),p=RegExp(l(t+\" \"+r+\" \"+i+\" \"+o)),c=l(r+\" \"+i+\" \"+o),u=l(t+\" \"+r+\" \"+o),g=a(\"<(?:[^<>;=+\\\\-*/%&|^]|<<self>>)*>\",2),b=a(\"\\\\((?:[^()]|<<self>>)*\\\\)\",2),h=\"@?\\\\b[A-Za-z_]\\\\w*\\\\b\",f=n(\"<<0>>(?:\\\\s*<<1>>)?\",[h,g]),m=n(\"(?!<<0>>)<<1>>(?:\\\\s*\\\\.\\\\s*<<1>>)*\",[c,f]),k=\"\\\\[\\\\s*(?:,\\\\s*)*\\\\]\",y=n(\"<<0>>(?:\\\\s*(?:\\\\?\\\\s*)?<<1>>)*(?:\\\\s*\\\\?)?\",[m,k]),w=n(\"[^,()<>[\\\\];=+\\\\-*/%&|^]|<<0>>|<<1>>|<<2>>\",[g,b,k]),v=n(\"\\\\(<<0>>+(?:,<<0>>+)+\\\\)\",[w]),x=n(\"(?:<<0>>|<<1>>)(?:\\\\s*(?:\\\\?\\\\s*)?<<2>>)*(?:\\\\s*\\\\?)?\",[v,m,k]),$={keyword:p,punctuation:/[<>()?,.:[\\]]/},_=\"'(?:[^\\r\\n'\\\\\\\\]|\\\\\\\\.|\\\\\\\\[Uux][\\\\da-fA-F]{1,8})'\",B='\"(?:\\\\\\\\.|[^\\\\\\\\\"\\r\\n])*\"';e.languages.csharp=e.languages.extend(\"clike\",{string:[{pattern:s(\"(^|[^$\\\\\\\\])<<0>>\",['@\"(?:\"\"|\\\\\\\\[^]|[^\\\\\\\\\"])*\"(?!\")']),lookbehind:!0,greedy:!0},{pattern:s(\"(^|[^@$\\\\\\\\])<<0>>\",[B]),lookbehind:!0,greedy:!0}],\"class-name\":[{pattern:s(\"(\\\\busing\\\\s+static\\\\s+)<<0>>(?=\\\\s*;)\",[m]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\busing\\\\s+<<0>>\\\\s*=\\\\s*)<<1>>(?=\\\\s*;)\",[h,x]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\busing\\\\s+)<<0>>(?=\\\\s*=)\",[h]),lookbehind:!0},{pattern:s(\"(\\\\b<<0>>\\\\s+)<<1>>\",[d,f]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\bcatch\\\\s*\\\\(\\\\s*)<<0>>\",[m]),lookbehind:!0,inside:$},{pattern:s(\"(\\\\bwhere\\\\s+)<<0>>\",[h]),lookbehind:!0},{pattern:s(\"(\\\\b(?:is(?:\\\\s+not)?|as)\\\\s+)<<0>>\",[y]),lookbehind:!0,inside:$},{pattern:s(\"\\\\b<<0>>(?=\\\\s+(?!<<1>>|with\\\\s*\\\\{)<<2>>(?:\\\\s*[=,;:{)\\\\]]|\\\\s+(?:in|when)\\\\b))\",[x,u,h]),inside:$}],keyword:p,number:/(?:\\b0(?:x[\\da-f_]*[\\da-f]|b[01_]*[01])|(?:\\B\\.\\d+(?:_+\\d+)*|\\b\\d+(?:_+\\d+)*(?:\\.\\d+(?:_+\\d+)*)?)(?:e[-+]?\\d+(?:_+\\d+)*)?)(?:[dflmu]|lu|ul)?\\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\\1|~|\\?\\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\\?\\.?|::|[{}[\\];(),.:]/}),e.languages.insertBefore(\"csharp\",\"number\",{range:{pattern:/\\.\\./,alias:\"operator\"}}),e.languages.insertBefore(\"csharp\",\"punctuation\",{\"named-parameter\":{pattern:s(\"([(,]\\\\s*)<<0>>(?=\\\\s*:)\",[h]),lookbehind:!0,alias:\"punctuation\"}}),e.languages.insertBefore(\"csharp\",\"class-name\",{namespace:{pattern:s(\"(\\\\b(?:namespace|using)\\\\s+)<<0>>(?:\\\\s*\\\\.\\\\s*<<0>>)*(?=\\\\s*[;{])\",[h]),lookbehind:!0,inside:{punctuation:/\\./}},\"type-expression\":{pattern:s(\"(\\\\b(?:default|sizeof|typeof)\\\\s*\\\\(\\\\s*(?!\\\\s))(?:[^()\\\\s]|\\\\s(?!\\\\s)|<<0>>)*(?=\\\\s*\\\\))\",[b]),lookbehind:!0,alias:\"class-name\",inside:$},\"return-type\":{pattern:s(\"<<0>>(?=\\\\s+(?:<<1>>\\\\s*(?:=>|[({]|\\\\.\\\\s*this\\\\s*\\\\[)|this\\\\s*\\\\[))\",[x,m]),inside:$,alias:\"class-name\"},\"constructor-invocation\":{pattern:s(\"(\\\\bnew\\\\s+)<<0>>(?=\\\\s*[[({])\",[x]),lookbehind:!0,inside:$,alias:\"class-name\"},\"generic-method\":{pattern:s(\"<<0>>\\\\s*<<1>>(?=\\\\s*\\\\()\",[h,g]),inside:{function:s(\"^<<0>>\",[h]),generic:{pattern:RegExp(g),alias:\"class-name\",inside:$}}},\"type-list\":{pattern:s(\"\\\\b((?:<<0>>\\\\s+<<1>>|record\\\\s+<<1>>\\\\s*<<5>>|where\\\\s+<<2>>)\\\\s*:\\\\s*)(?:<<3>>|<<4>>|<<1>>\\\\s*<<5>>|<<6>>)(?:\\\\s*,\\\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\\\s*(?:where|[{;]|=>|$))\",[d,f,h,x,p.source,b,\"\\\\bnew\\\\s*\\\\(\\\\s*\\\\)\"]),lookbehind:!0,inside:{\"record-arguments\":{pattern:s(\"(^(?!new\\\\s*\\\\()<<0>>\\\\s*)<<1>>\",[f,b]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:p,\"class-name\":{pattern:RegExp(x),greedy:!0,inside:$},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\\t ]*)#.*/m,lookbehind:!0,alias:\"property\",inside:{directive:{pattern:/(#)\\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\\b/,lookbehind:!0,alias:\"keyword\"}}}});var E=B+\"|\"+_,R=n(\"/(?![*/])|//[^\\r\\n]*[\\r\\n]|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/|<<0>>\",[E]),z=a(n(\"[^\\\"'/()]|<<0>>|\\\\(<<self>>*\\\\)\",[R]),2),S=\"\\\\b(?:assembly|event|field|method|module|param|property|return|type)\\\\b\",j=n(\"<<0>>(?:\\\\s*\\\\(<<1>>*\\\\))?\",[m,z]);e.languages.insertBefore(\"csharp\",\"class-name\",{attribute:{pattern:s(\"((?:^|[^\\\\s\\\\w>)?])\\\\s*\\\\[\\\\s*)(?:<<0>>\\\\s*:\\\\s*)?<<1>>(?:\\\\s*,\\\\s*<<1>>)*(?=\\\\s*\\\\])\",[S,j]),lookbehind:!0,greedy:!0,inside:{target:{pattern:s(\"^<<0>>(?=\\\\s*:)\",[S]),alias:\"keyword\"},\"attribute-arguments\":{pattern:s(\"\\\\(<<0>>*\\\\)\",[z]),inside:e.languages.csharp},\"class-name\":{pattern:RegExp(m),inside:{punctuation:/\\./}},punctuation:/[:,]/}}});var A=\":[^}\\r\\n]+\",F=a(n(\"[^\\\"'/()]|<<0>>|\\\\(<<self>>*\\\\)\",[R]),2),P=n(\"\\\\{(?!\\\\{)(?:(?![}:])<<0>>)*<<1>>?\\\\}\",[F,A]),U=a(n(\"[^\\\"'/()]|/(?!\\\\*)|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/|<<0>>|\\\\(<<self>>*\\\\)\",[E]),2),Z=n(\"\\\\{(?!\\\\{)(?:(?![}:])<<0>>)*<<1>>?\\\\}\",[U,A]);function q(n,a){return{interpolation:{pattern:s(\"((?:^|[^{])(?:\\\\{\\\\{)*)<<0>>\",[n]),lookbehind:!0,inside:{\"format-string\":{pattern:s(\"(^\\\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\\\}$)\",[a,A]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\\{|\\}$/,expression:{pattern:/[\\s\\S]+/,alias:\"language-csharp\",inside:e.languages.csharp}}},string:/[\\s\\S]+/}}e.languages.insertBefore(\"csharp\",\"string\",{\"interpolation-string\":[{pattern:s('(^|[^\\\\\\\\])(?:\\\\$@|@\\\\$)\"(?:\"\"|\\\\\\\\[^]|\\\\{\\\\{|<<0>>|[^\\\\\\\\{\"])*\"',[P]),lookbehind:!0,greedy:!0,inside:q(P,F)},{pattern:s('(^|[^@\\\\\\\\])\\\\$\"(?:\\\\\\\\.|\\\\{\\\\{|<<0>>|[^\\\\\\\\\"{])*\"',[Z]),lookbehind:!0,greedy:!0,inside:q(Z,U)}],char:{pattern:RegExp(_),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism);","!function(s){var e=/(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;s.languages.css={comment:/\\/\\*[\\s\\S]*?\\*\\//,atrule:{pattern:RegExp(\"@[\\\\w-](?:[^;{\\\\s\\\"']|\\\\s+(?!\\\\s)|\"+e.source+\")*?(?:;|(?=\\\\s*\\\\{))\"),inside:{rule:/^@[\\w-]+/,\"selector-function-argument\":{pattern:/(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,lookbehind:!0,alias:\"selector\"},keyword:{pattern:/(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,lookbehind:!0}}},url:{pattern:RegExp(\"\\\\burl\\\\((?:\"+e.source+\"|(?:[^\\\\\\\\\\r\\n()\\\"']|\\\\\\\\[^])*)\\\\)\",\"i\"),greedy:!0,inside:{function:/^url/i,punctuation:/^\\(|\\)$/,string:{pattern:RegExp(\"^\"+e.source+\"$\"),alias:\"url\"}}},selector:{pattern:RegExp(\"(^|[{}\\\\s])[^{}\\\\s](?:[^{};\\\"'\\\\s]|\\\\s+(?![\\\\s{])|\"+e.source+\")*(?=\\\\s*\\\\{)\"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,lookbehind:!0},important:/!important\\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined(\"style\",\"css\"),t.tag.addAttribute(\"style\",\"css\"))}(Prism);","!function(e){var n=/\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\\s*[(){}[\\]<>=%~.:,;?+\\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/,t=\"(?:[a-z]\\\\w*\\\\s*\\\\.\\\\s*)*(?:[A-Z]\\\\w*\\\\s*\\\\.\\\\s*)*\",s={pattern:RegExp(\"(^|[^\\\\w.])\"+t+\"[A-Z](?:[\\\\d_A-Z]*[a-z]\\\\w*)?\\\\b\"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,inside:{punctuation:/\\./}},punctuation:/\\./}};e.languages.java=e.languages.extend(\"clike\",{string:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,lookbehind:!0,greedy:!0},\"class-name\":[s,{pattern:RegExp(\"(^|[^\\\\w.])\"+t+\"[A-Z]\\\\w*(?=\\\\s+\\\\w+\\\\s*[;,=()]|\\\\s*(?:\\\\[[\\\\s,]*\\\\]\\\\s*)?::\\\\s*new\\\\b)\"),lookbehind:!0,inside:s.inside},{pattern:RegExp(\"(\\\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\\\s+)\"+t+\"[A-Z]\\\\w*\\\\b\"),lookbehind:!0,inside:s.inside}],keyword:n,function:[e.languages.clike.function,{pattern:/(::\\s*)[a-z_]\\w*/,lookbehind:!0}],number:/\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\\b[A-Z][A-Z_\\d]+\\b/}),e.languages.insertBefore(\"java\",\"string\",{\"triple-quoted-string\":{pattern:/\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,greedy:!0,alias:\"string\"},char:{pattern:/'(?:\\\\.|[^'\\\\\\r\\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore(\"java\",\"class-name\",{annotation:{pattern:/(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,lookbehind:!0,alias:\"punctuation\"},generics:{pattern:/<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{\"class-name\":s,keyword:n,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(\"(\\\\bimport\\\\s+)\"+t+\"(?:[A-Z]\\\\w*|\\\\*)(?=\\\\s*;)\"),lookbehind:!0,inside:{namespace:s.inside.namespace,punctuation:/\\./,operator:/\\*/,\"class-name\":/\\w+/}},{pattern:RegExp(\"(\\\\bimport\\\\s+static\\\\s+)\"+t+\"(?:\\\\w+|\\\\*)(?=\\\\s*;)\"),lookbehind:!0,alias:\"static\",inside:{namespace:s.inside.namespace,static:/\\b\\w+$/,punctuation:/\\./,operator:/\\*/,\"class-name\":/\\w+/}}],namespace:{pattern:RegExp(\"(\\\\b(?:exports|import(?:\\\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\\\s+)(?!<keyword>)[a-z]\\\\w*(?:\\\\.[a-z]\\\\w*)*\\\\.?\".replace(/<keyword>/g,(function(){return n.source}))),lookbehind:!0,inside:{punctuation:/\\./}}})}(Prism);","Prism.languages.javascript=Prism.languages.extend(\"clike\",{\"class-name\":[Prism.languages.clike[\"class-name\"],{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\\})\\s*)catch\\b/,lookbehind:!0},{pattern:/(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,lookbehind:!0}],function:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,number:{pattern:RegExp(\"(^|[^\\\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\\\dA-Fa-f]+(?:_[\\\\dA-Fa-f]+)*n?|\\\\d+(?:_\\\\d+)*n|(?:\\\\d+(?:_\\\\d+)*(?:\\\\.(?:\\\\d+(?:_\\\\d+)*)?)?|\\\\.\\\\d+(?:_\\\\d+)*)(?:[Ee][+-]?\\\\d+(?:_\\\\d+)*)?)(?![\\\\w$])\"),lookbehind:!0},operator:/--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/}),Prism.languages.javascript[\"class-name\"][0].pattern=/(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/,Prism.languages.insertBefore(\"javascript\",\"keyword\",{regex:{pattern:RegExp(\"((?:^|[^$\\\\w\\\\xA0-\\\\uFFFF.\\\"'\\\\])\\\\s]|\\\\b(?:return|yield))\\\\s*)/(?:(?:\\\\[(?:[^\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}|(?:\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\])*\\\\])*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\\\s|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/)*(?:$|[\\r\\n,.;:})\\\\]]|//))\"),lookbehind:!0,greedy:!0,inside:{\"regex-source\":{pattern:/^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,lookbehind:!0,alias:\"language-regex\",inside:Prism.languages.regex},\"regex-delimiter\":/^\\/|\\/$/,\"regex-flags\":/^[a-z]+$/}},\"function-variable\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,alias:\"function\"},parameter:[{pattern:/(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/}),Prism.languages.insertBefore(\"javascript\",\"string\",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:\"comment\"},\"template-string\":{pattern:/`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,greedy:!0,inside:{\"template-punctuation\":{pattern:/^`|`$/,alias:\"string\"},interpolation:{pattern:/((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,lookbehind:!0,inside:{\"interpolation-punctuation\":{pattern:/^\\$\\{|\\}$/,alias:\"punctuation\"},rest:Prism.languages.javascript}},string:/[\\s\\S]+/}},\"string-property\":{pattern:/((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,lookbehind:!0,greedy:!0,alias:\"property\"}}),Prism.languages.insertBefore(\"javascript\",\"operator\",{\"literal-property\":{pattern:/((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,lookbehind:!0,alias:\"property\"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined(\"script\",\"javascript\"),Prism.languages.markup.tag.addAttribute(\"on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)\",\"javascript\")),Prism.languages.js=Prism.languages.javascript;","Prism.languages.json={property:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,greedy:!0},number:/-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,punctuation:/[{}[\\],]/,operator:/:/,boolean:/\\b(?:false|true)\\b/,null:{pattern:/\\bnull\\b/,alias:\"keyword\"}},Prism.languages.webmanifest=Prism.languages.json;","!function(t){var n=t.util.clone(t.languages.javascript),e=\"(?:\\\\{<S>*\\\\.{3}(?:[^{}]|<BRACES>)*\\\\})\";function a(t,n){return t=t.replace(/<S>/g,(function(){return\"(?:\\\\s|//.*(?!.)|/\\\\*(?:[^*]|\\\\*(?!/))\\\\*/)\"})).replace(/<BRACES>/g,(function(){return\"(?:\\\\{(?:\\\\{(?:\\\\{[^{}]*\\\\}|[^{}])*\\\\}|[^{}])*\\\\})\"})).replace(/<SPREAD>/g,(function(){return e})),RegExp(t,n)}e=a(e).source,t.languages.jsx=t.languages.extend(\"markup\",n),t.languages.jsx.tag.pattern=a(\"</?(?:[\\\\w.:-]+(?:<S>+(?:[\\\\w.:$-]+(?:=(?:\\\"(?:\\\\\\\\[^]|[^\\\\\\\\\\\"])*\\\"|'(?:\\\\\\\\[^]|[^\\\\\\\\'])*'|[^\\\\s{'\\\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*/?)?>\"),t.languages.jsx.tag.inside.tag.pattern=/^<\\/?[^\\s>\\/]*/,t.languages.jsx.tag.inside[\"attr-value\"].pattern=/=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/,t.languages.jsx.tag.inside.tag.inside[\"class-name\"]=/^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/,t.languages.jsx.tag.inside.comment=n.comment,t.languages.insertBefore(\"inside\",\"attr-name\",{spread:{pattern:a(\"<SPREAD>\"),inside:t.languages.jsx}},t.languages.jsx.tag),t.languages.insertBefore(\"inside\",\"special-attr\",{script:{pattern:a(\"=<BRACES>\"),alias:\"language-javascript\",inside:{\"script-punctuation\":{pattern:/^=(?=\\{)/,alias:\"punctuation\"},rest:t.languages.jsx}}},t.languages.jsx.tag);var s=function(t){return t?\"string\"==typeof t?t:\"string\"==typeof t.content?t.content:t.content.map(s).join(\"\"):\"\"},g=function(n){for(var e=[],a=0;a<n.length;a++){var o=n[a],i=!1;if(\"string\"!=typeof o&&(\"tag\"===o.type&&o.content[0]&&\"tag\"===o.content[0].type?\"</\"===o.content[0].content[0].content?e.length>0&&e[e.length-1].tagName===s(o.content[0].content[1])&&e.pop():\"/>\"===o.content[o.content.length-1].content||e.push({tagName:s(o.content[0].content[1]),openedBraces:0}):e.length>0&&\"punctuation\"===o.type&&\"{\"===o.content?e[e.length-1].openedBraces++:e.length>0&&e[e.length-1].openedBraces>0&&\"punctuation\"===o.type&&\"}\"===o.content?e[e.length-1].openedBraces--:i=!0),(i||\"string\"==typeof o)&&e.length>0&&0===e[e.length-1].openedBraces){var r=s(o);a<n.length-1&&(\"string\"==typeof n[a+1]||\"plain-text\"===n[a+1].type)&&(r+=s(n[a+1]),n.splice(a+1,1)),a>0&&(\"string\"==typeof n[a-1]||\"plain-text\"===n[a-1].type)&&(r=s(n[a-1])+r,n.splice(a-1,1),a--),n[a]=new t.Token(\"plain-text\",r,null,r)}o.content&&\"string\"!=typeof o.content&&g(o.content)}};t.hooks.add(\"after-tokenize\",(function(t){\"jsx\"!==t.language&&\"tsx\"!==t.language||g(t.tokens)}))}(Prism);","Prism.languages.less=Prism.languages.extend(\"css\",{comment:[/\\/\\*[\\s\\S]*?\\*\\//,{pattern:/(^|[^\\\\])\\/\\/.*/,lookbehind:!0}],atrule:{pattern:/@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,inside:{variable:/@+[\\w-]+/}},property:/(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/,operator:/[+\\-*\\/]/}),Prism.languages.insertBefore(\"less\",\"property\",{variable:[{pattern:/@[\\w-]+\\s*:/,inside:{punctuation:/:/}},/@@?[\\w-]+/],\"mixin-usage\":{pattern:/([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,lookbehind:!0,alias:\"function\"}});","Prism.languages.lua={comment:/^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,string:{pattern:/([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[^z]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,greedy:!0},number:/\\b0x[a-f\\d]+(?:\\.[a-f\\d]*)?(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|(?:\\.\\d*)?(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,keyword:/\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,function:/(?!\\d)\\w+(?=\\s*(?:[({]))/,operator:[/[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\\.\\.(?!\\.)/,lookbehind:!0}],punctuation:/[\\[\\](){},;]|\\.+|:+/};","!function(n){function e(n){return n=n.replace(/<inner>/g,(function(){return\"(?:\\\\\\\\.|[^\\\\\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))\"})),RegExp(\"((?:^|[^\\\\\\\\])(?:\\\\\\\\{2})*)(?:\"+n+\")\")}var t=\"(?:\\\\\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\\\\\|\\r\\n`])+\",a=\"\\\\|?__(?:\\\\|__)+\\\\|?(?:(?:\\n|\\r\\n?)|(?![^]))\".replace(/__/g,(function(){return t})),i=\"\\\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\\\|?(?:\\n|\\r\\n?)\";n.languages.markdown=n.languages.extend(\"markup\",{}),n.languages.insertBefore(\"markdown\",\"prolog\",{\"front-matter-block\":{pattern:/(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,\"front-matter\":{pattern:/\\S+(?:\\s+\\S+)*/,alias:[\"yaml\",\"language-yaml\"],inside:n.languages.yaml}}},blockquote:{pattern:/^>(?:[\\t ]*>)*/m,alias:\"punctuation\"},table:{pattern:RegExp(\"^\"+a+i+\"(?:\"+a+\")*\",\"m\"),inside:{\"table-data-rows\":{pattern:RegExp(\"^(\"+a+i+\")(?:\"+a+\")*$\"),lookbehind:!0,inside:{\"table-data\":{pattern:RegExp(t),inside:n.languages.markdown},punctuation:/\\|/}},\"table-line\":{pattern:RegExp(\"^(\"+a+\")\"+i+\"$\"),lookbehind:!0,inside:{punctuation:/\\||:?-{3,}:?/}},\"table-header-row\":{pattern:RegExp(\"^\"+a+\"$\"),inside:{\"table-header\":{pattern:RegExp(t),alias:\"important\",inside:n.languages.markdown},punctuation:/\\|/}}}},code:[{pattern:/((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,lookbehind:!0,alias:\"keyword\"},{pattern:/^```[\\s\\S]*?^```$/m,greedy:!0,inside:{\"code-block\":{pattern:/^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,lookbehind:!0},\"code-language\":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,alias:\"important\",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\\s*)#.+/m,lookbehind:!0,alias:\"important\",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,lookbehind:!0,alias:\"punctuation\"},list:{pattern:/(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,lookbehind:!0,alias:\"punctuation\"},\"url-reference\":{pattern:/!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,inside:{variable:{pattern:/^(!?\\[)[^\\]]+/,lookbehind:!0},string:/(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,punctuation:/^[\\[\\]!:]|[<>]/},alias:\"url\"},bold:{pattern:e(\"\\\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\\\b|\\\\*\\\\*(?:(?!\\\\*)<inner>|\\\\*(?:(?!\\\\*)<inner>)+\\\\*)+\\\\*\\\\*\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\\s\\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\\*\\*|__/}},italic:{pattern:e(\"\\\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\\\b|\\\\*(?:(?!\\\\*)<inner>|\\\\*\\\\*(?:(?!\\\\*)<inner>)+\\\\*\\\\*)+\\\\*\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\\s\\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:e(\"(~~?)(?:(?!~)<inner>)+\\\\2\"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\\s\\S]+(?=\\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},\"code-snippet\":{pattern:/(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:[\"code\",\"keyword\"]},url:{pattern:e('!?\\\\[(?:(?!\\\\])<inner>)+\\\\](?:\\\\([^\\\\s)]+(?:[\\t ]+\"(?:\\\\\\\\.|[^\"\\\\\\\\])*\")?\\\\)|[ \\t]?\\\\[(?:(?!\\\\])<inner>)+\\\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\\[)[^\\]]+(?=\\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,lookbehind:!0},url:{pattern:/(^\\]\\()[^\\s)]+/,lookbehind:!0},string:{pattern:/(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,lookbehind:!0}}}}),[\"url\",\"bold\",\"italic\",\"strike\"].forEach((function(e){[\"url\",\"bold\",\"italic\",\"strike\",\"code-snippet\"].forEach((function(t){e!==t&&(n.languages.markdown[e].inside.content.inside[t]=n.languages.markdown[t])}))})),n.hooks.add(\"after-tokenize\",(function(n){\"markdown\"!==n.language&&\"md\"!==n.language||function n(e){if(e&&\"string\"!=typeof e)for(var t=0,a=e.length;t<a;t++){var i=e[t];if(\"code\"===i.type){var r=i.content[1],o=i.content[3];if(r&&o&&\"code-language\"===r.type&&\"code-block\"===o.type&&\"string\"==typeof r.content){var l=r.content.replace(/\\b#/g,\"sharp\").replace(/\\b\\+\\+/g,\"pp\"),s=\"language-\"+(l=(/[a-z][\\w-]*/i.exec(l)||[\"\"])[0].toLowerCase());o.alias?\"string\"==typeof o.alias?o.alias=[o.alias,s]:o.alias.push(s):o.alias=[s]}}else n(i.content)}}(n.tokens)})),n.hooks.add(\"wrap\",(function(e){if(\"code-block\"===e.type){for(var t=\"\",a=0,i=e.classes.length;a<i;a++){var s=e.classes[a],d=/language-(.+)/.exec(s);if(d){t=d[1];break}}var p=n.languages[t];if(p)e.content=n.highlight(e.content.replace(r,\"\").replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi,(function(n,e){var t;return\"#\"===(e=e.toLowerCase())[0]?(t=\"x\"===e[1]?parseInt(e.slice(2),16):Number(e.slice(1)),l(t)):o[e]||n})),p,t);else if(t&&\"none\"!==t&&n.plugins.autoloader){var u=\"md-\"+(new Date).valueOf()+\"-\"+Math.floor(1e16*Math.random());e.attributes.id=u,n.plugins.autoloader.loadLanguages(t,(function(){var e=document.getElementById(u);e&&(e.innerHTML=n.highlight(e.textContent,n.languages[t],t))}))}}}));var r=RegExp(n.languages.markup.tag.pattern.source,\"gi\"),o={amp:\"&\",lt:\"<\",gt:\">\",quot:'\"'},l=String.fromCodePoint||String.fromCharCode;n.languages.md=n.languages.markdown}(Prism);","Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\\s\\S])*?-->/,greedy:!0},prolog:{pattern:/<\\?[\\s\\S]+?\\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,greedy:!0,inside:{\"internal-subset\":{pattern:/(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/\"[^\"]*\"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\\]]/,\"doctype-tag\":/^DOCTYPE/i,name:/[^\\s<>'\"]+/}},cdata:{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,greedy:!0},tag:{pattern:/<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,greedy:!0,inside:{tag:{pattern:/^<\\/?[^\\s>\\/]+/,inside:{punctuation:/^<\\/?/,namespace:/^[^\\s>\\/:]+:/}},\"special-attr\":[],\"attr-value\":{pattern:/=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:\"attr-equals\"},{pattern:/^(\\s*)[\"']|[\"']$/,lookbehind:!0}]}},punctuation:/\\/?>/,\"attr-name\":{pattern:/[^\\s>\\/]+/,inside:{namespace:/^[^\\s>\\/:]+:/}}}},entity:[{pattern:/&[\\da-z]{1,8};/i,alias:\"named-entity\"},/&#x?[\\da-f]{1,8};/i]},Prism.languages.markup.tag.inside[\"attr-value\"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside[\"internal-subset\"].inside=Prism.languages.markup,Prism.hooks.add(\"wrap\",(function(a){\"entity\"===a.type&&(a.attributes.title=a.content.replace(/&amp;/,\"&\"))})),Object.defineProperty(Prism.languages.markup.tag,\"addInlined\",{value:function(a,e){var s={};s[\"language-\"+e]={pattern:/(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^<!\\[CDATA\\[|\\]\\]>$/i;var t={\"included-cdata\":{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,inside:s}};t[\"language-\"+e]={pattern:/[\\s\\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp(\"(<__[^>]*>)(?:<!\\\\[CDATA\\\\[(?:[^\\\\]]|\\\\](?!\\\\]>))*\\\\]\\\\]>|(?!<!\\\\[CDATA\\\\[)[^])*?(?=</__>)\".replace(/__/g,(function(){return a})),\"i\"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore(\"markup\",\"cdata\",n)}}),Object.defineProperty(Prism.languages.markup.tag,\"addAttribute\",{value:function(a,e){Prism.languages.markup.tag.inside[\"special-attr\"].push({pattern:RegExp(\"(^|[\\\"'\\\\s])(?:\"+a+\")\\\\s*=\\\\s*(?:\\\"[^\\\"]*\\\"|'[^']*'|[^\\\\s'\\\">=]+(?=[\\\\s>]))\",\"i\"),lookbehind:!0,inside:{\"attr-name\":/^[^\\s=]+/,\"attr-value\":{pattern:/=[\\s\\S]+/,inside:{value:{pattern:/(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,lookbehind:!0,alias:[e,\"language-\"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:\"attr-equals\"},/\"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend(\"markup\",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;","!function($){var e=[\"$eq\",\"$gt\",\"$gte\",\"$in\",\"$lt\",\"$lte\",\"$ne\",\"$nin\",\"$and\",\"$not\",\"$nor\",\"$or\",\"$exists\",\"$type\",\"$expr\",\"$jsonSchema\",\"$mod\",\"$regex\",\"$text\",\"$where\",\"$geoIntersects\",\"$geoWithin\",\"$near\",\"$nearSphere\",\"$all\",\"$elemMatch\",\"$size\",\"$bitsAllClear\",\"$bitsAllSet\",\"$bitsAnyClear\",\"$bitsAnySet\",\"$comment\",\"$elemMatch\",\"$meta\",\"$slice\",\"$currentDate\",\"$inc\",\"$min\",\"$max\",\"$mul\",\"$rename\",\"$set\",\"$setOnInsert\",\"$unset\",\"$addToSet\",\"$pop\",\"$pull\",\"$push\",\"$pullAll\",\"$each\",\"$position\",\"$slice\",\"$sort\",\"$bit\",\"$addFields\",\"$bucket\",\"$bucketAuto\",\"$collStats\",\"$count\",\"$currentOp\",\"$facet\",\"$geoNear\",\"$graphLookup\",\"$group\",\"$indexStats\",\"$limit\",\"$listLocalSessions\",\"$listSessions\",\"$lookup\",\"$match\",\"$merge\",\"$out\",\"$planCacheStats\",\"$project\",\"$redact\",\"$replaceRoot\",\"$replaceWith\",\"$sample\",\"$set\",\"$skip\",\"$sort\",\"$sortByCount\",\"$unionWith\",\"$unset\",\"$unwind\",\"$setWindowFields\",\"$abs\",\"$accumulator\",\"$acos\",\"$acosh\",\"$add\",\"$addToSet\",\"$allElementsTrue\",\"$and\",\"$anyElementTrue\",\"$arrayElemAt\",\"$arrayToObject\",\"$asin\",\"$asinh\",\"$atan\",\"$atan2\",\"$atanh\",\"$avg\",\"$binarySize\",\"$bsonSize\",\"$ceil\",\"$cmp\",\"$concat\",\"$concatArrays\",\"$cond\",\"$convert\",\"$cos\",\"$dateFromParts\",\"$dateToParts\",\"$dateFromString\",\"$dateToString\",\"$dayOfMonth\",\"$dayOfWeek\",\"$dayOfYear\",\"$degreesToRadians\",\"$divide\",\"$eq\",\"$exp\",\"$filter\",\"$first\",\"$floor\",\"$function\",\"$gt\",\"$gte\",\"$hour\",\"$ifNull\",\"$in\",\"$indexOfArray\",\"$indexOfBytes\",\"$indexOfCP\",\"$isArray\",\"$isNumber\",\"$isoDayOfWeek\",\"$isoWeek\",\"$isoWeekYear\",\"$last\",\"$last\",\"$let\",\"$literal\",\"$ln\",\"$log\",\"$log10\",\"$lt\",\"$lte\",\"$ltrim\",\"$map\",\"$max\",\"$mergeObjects\",\"$meta\",\"$min\",\"$millisecond\",\"$minute\",\"$mod\",\"$month\",\"$multiply\",\"$ne\",\"$not\",\"$objectToArray\",\"$or\",\"$pow\",\"$push\",\"$radiansToDegrees\",\"$range\",\"$reduce\",\"$regexFind\",\"$regexFindAll\",\"$regexMatch\",\"$replaceOne\",\"$replaceAll\",\"$reverseArray\",\"$round\",\"$rtrim\",\"$second\",\"$setDifference\",\"$setEquals\",\"$setIntersection\",\"$setIsSubset\",\"$setUnion\",\"$size\",\"$sin\",\"$slice\",\"$split\",\"$sqrt\",\"$stdDevPop\",\"$stdDevSamp\",\"$strcasecmp\",\"$strLenBytes\",\"$strLenCP\",\"$substr\",\"$substrBytes\",\"$substrCP\",\"$subtract\",\"$sum\",\"$switch\",\"$tan\",\"$toBool\",\"$toDate\",\"$toDecimal\",\"$toDouble\",\"$toInt\",\"$toLong\",\"$toObjectId\",\"$toString\",\"$toLower\",\"$toUpper\",\"$trim\",\"$trunc\",\"$type\",\"$week\",\"$year\",\"$zip\",\"$count\",\"$dateAdd\",\"$dateDiff\",\"$dateSubtract\",\"$dateTrunc\",\"$getField\",\"$rand\",\"$sampleRate\",\"$setField\",\"$unsetField\",\"$comment\",\"$explain\",\"$hint\",\"$max\",\"$maxTimeMS\",\"$min\",\"$orderby\",\"$query\",\"$returnKey\",\"$showDiskLoc\",\"$natural\"],t=\"(?:\"+(e=e.map((function($){return $.replace(\"$\",\"\\\\$\")}))).join(\"|\")+\")\\\\b\";$.languages.mongodb=$.languages.extend(\"javascript\",{}),$.languages.insertBefore(\"mongodb\",\"string\",{property:{pattern:/(?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)(?=\\s*:)/,greedy:!0,inside:{keyword:RegExp(\"^(['\\\"])?\"+t+\"(?:\\\\1)?$\")}}}),$.languages.mongodb.string.inside={url:{pattern:/https?:\\/\\/[-\\w@:%.+~#=]{1,256}\\.[a-z0-9()]{1,6}\\b[-\\w()@:%+.~#?&/=]*/i,greedy:!0},entity:{pattern:/\\b(?:(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\b/,greedy:!0}},$.languages.insertBefore(\"mongodb\",\"constant\",{builtin:{pattern:RegExp(\"\\\\b(?:\"+[\"ObjectId\",\"Code\",\"BinData\",\"DBRef\",\"Timestamp\",\"NumberLong\",\"NumberDecimal\",\"MaxKey\",\"MinKey\",\"RegExp\",\"ISODate\",\"UUID\"].join(\"|\")+\")\\\\b\"),alias:\"keyword\"}})}(Prism);","Prism.languages.objectivec=Prism.languages.extend(\"c\",{string:{pattern:/@?\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,greedy:!0},keyword:/\\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,operator:/-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/}),delete Prism.languages.objectivec[\"class-name\"],Prism.languages.objc=Prism.languages.objectivec;","Prism.languages.python={comment:{pattern:/(^|[^\\\\])#.*/,lookbehind:!0,greedy:!0},\"string-interpolation\":{pattern:/(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,lookbehind:!0,inside:{\"format-spec\":{pattern:/(:)[^:(){}]+(?=\\}$)/,lookbehind:!0},\"conversion-option\":{pattern:/![sra](?=[:}]$)/,alias:\"punctuation\"},rest:null}},string:/[\\s\\S]+/}},\"triple-quoted-string\":{pattern:/(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,greedy:!0,alias:\"string\"},string:{pattern:/(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,greedy:!0},function:{pattern:/((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,lookbehind:!0},\"class-name\":{pattern:/(\\bclass\\s+)\\w+/i,lookbehind:!0},decorator:{pattern:/(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,lookbehind:!0,alias:[\"annotation\",\"punctuation\"],inside:{punctuation:/\\./}},keyword:/\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,builtin:/\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,boolean:/\\b(?:False|None|True)\\b/,number:/\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,operator:/[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\\];(),.:]/},Prism.languages.python[\"string-interpolation\"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;","!function(a){var e={pattern:/\\\\[\\\\(){}[\\]^$+*?|.]/,alias:\"escape\"},n=/\\\\(?:x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u\\{[\\da-fA-F]+\\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/,t=\"(?:[^\\\\\\\\-]|\"+n.source+\")\",s=RegExp(t+\"-\"+t),i={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:\"variable\"};a.languages.regex={\"char-class\":{pattern:/((?:^|[^\\\\])(?:\\\\\\\\)*)\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/,lookbehind:!0,inside:{\"char-class-negation\":{pattern:/(^\\[)\\^/,lookbehind:!0,alias:\"operator\"},\"char-class-punctuation\":{pattern:/^\\[|\\]$/,alias:\"punctuation\"},range:{pattern:s,inside:{escape:n,\"range-punctuation\":{pattern:/-/,alias:\"operator\"}}},\"special-escape\":e,\"char-set\":{pattern:/\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,alias:\"class-name\"},escape:n}},\"special-escape\":e,\"char-set\":{pattern:/\\.|\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,alias:\"class-name\"},backreference:[{pattern:/\\\\(?![123][0-7]{2})[1-9]/,alias:\"keyword\"},{pattern:/\\\\k<[^<>']+>/,alias:\"keyword\",inside:{\"group-name\":i}}],anchor:{pattern:/[$^]|\\\\[ABbGZz]/,alias:\"function\"},escape:n,group:[{pattern:/\\((?:\\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:\"punctuation\",inside:{\"group-name\":i}},{pattern:/\\)/,alias:\"punctuation\"}],quantifier:{pattern:/(?:[+*?]|\\{\\d+(?:,\\d*)?\\})[?+]?/,alias:\"number\"},alternation:{pattern:/\\|/,alias:\"keyword\"}}}(Prism);","Prism.languages.scala=Prism.languages.extend(\"java\",{\"triple-quoted-string\":{pattern:/\"\"\"[\\s\\S]*?\"\"\"/,greedy:!0,alias:\"string\"},string:{pattern:/(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},keyword:/<-|=>|\\b(?:abstract|case|catch|class|def|derives|do|else|enum|extends|extension|final|finally|for|forSome|given|if|implicit|import|infix|inline|lazy|match|new|null|object|opaque|open|override|package|private|protected|return|sealed|self|super|this|throw|trait|transparent|try|type|using|val|var|while|with|yield)\\b/,number:/\\b0x(?:[\\da-f]*\\.)?[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e\\d+)?[dfl]?/i,builtin:/\\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\\b/,symbol:/'[^\\d\\s\\\\]\\w*/}),Prism.languages.insertBefore(\"scala\",\"triple-quoted-string\",{\"string-interpolation\":{pattern:/\\b[a-z]\\w*(?:\"\"\"(?:[^$]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*?\"\"\"|\"(?:[^$\"\\r\\n]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*\")/i,greedy:!0,inside:{id:{pattern:/^\\w+/,greedy:!0,alias:\"function\"},escape:{pattern:/\\\\\\$\"|\\$[$\"]/,greedy:!0,alias:\"symbol\"},interpolation:{pattern:/\\$(?:\\w+|\\{(?:[^{}]|\\{[^{}]*\\})*\\})/,greedy:!0,inside:{punctuation:/^\\$\\{?|\\}$/,expression:{pattern:/[\\s\\S]+/,inside:Prism.languages.scala}}},string:/[\\s\\S]+/}}}),delete Prism.languages.scala[\"class-name\"],delete Prism.languages.scala.function,delete Prism.languages.scala.constant;","Prism.languages.scss=Prism.languages.extend(\"css\",{comment:{pattern:/(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,lookbehind:!0},atrule:{pattern:/@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,inside:{rule:/@[\\w-]+/}},url:/(?:[-a-z]+-)?url(?=\\()/i,selector:{pattern:/(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:\"important\"},placeholder:/%[-\\w]+/,variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}},property:{pattern:/(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,inside:{variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}}}),Prism.languages.insertBefore(\"scss\",\"atrule\",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore(\"scss\",\"important\",{variable:/\\$[-\\w]+|#\\{\\$[-\\w]+\\}/}),Prism.languages.insertBefore(\"scss\",\"function\",{\"module-modifier\":{pattern:/\\b(?:as|hide|show|with)\\b/i,alias:\"keyword\"},placeholder:{pattern:/%[-\\w]+/,alias:\"selector\"},statement:{pattern:/\\B!(?:default|optional)\\b/i,alias:\"keyword\"},boolean:/\\b(?:false|true)\\b/,null:{pattern:/\\bnull\\b/,alias:\"keyword\"},operator:{pattern:/(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|not|or)(?=\\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss;","!function(e){var a=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend(\"jsx\",a),delete e.languages.tsx.parameter,delete e.languages.tsx[\"literal-property\"];var t=e.languages.tsx.tag;t.pattern=RegExp(\"(^|[^\\\\w$]|(?=</))(?:\"+t.pattern.source+\")\",t.pattern.flags),t.lookbehind=!0}(Prism);","!function(e){e.languages.typescript=e.languages.extend(\"javascript\",{\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/}),e.languages.typescript.keyword.push(/\\b(?:abstract|declare|is|keyof|readonly|require)\\b/,/\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/,/\\btype\\b(?=\\s*(?:[\\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript[\"literal-property\"];var s=e.languages.extend(\"typescript\",{});delete s[\"class-name\"],e.languages.typescript[\"class-name\"].inside=s,e.languages.insertBefore(\"typescript\",\"function\",{decorator:{pattern:/@[$\\w\\xA0-\\uFFFF]+/,inside:{at:{pattern:/^@/,alias:\"operator\"},function:/^[\\s\\S]+/}},\"generic-function\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,greedy:!0,inside:{function:/^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,generic:{pattern:/<[\\s\\S]+/,alias:\"class-name\",inside:s}}}}),e.languages.ts=e.languages.typescript}(Prism);","!function(a){function e(e,n){a.languages[e]&&a.languages.insertBefore(e,\"comment\",{\"doc-comment\":n})}var n=a.languages.markup.tag,t={pattern:/\\/\\/\\/.*/,greedy:!0,alias:\"comment\",inside:{tag:n}},g={pattern:/'''.*/,greedy:!0,alias:\"comment\",inside:{tag:n}};e(\"csharp\",t),e(\"fsharp\",t),e(\"vbnet\",g)}(Prism);","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined' || !document.createRange) {\n\t\treturn;\n\t}\n\n\tPrism.plugins.KeepMarkup = true;\n\n\tPrism.hooks.add('before-highlight', function (env) {\n\t\tif (!env.element.children.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Prism.util.isActive(env.element, 'keep-markup', true)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar dropTokens = Prism.util.isActive(env.element, 'drop-tokens', false);\n\t\t/**\n\t\t * Returns whether the given element should be kept.\n\t\t *\n\t\t * @param {HTMLElement} element\n\t\t * @returns {boolean}\n\t\t */\n\t\tfunction shouldKeep(element) {\n\t\t\tif (dropTokens && element.nodeName.toLowerCase() === 'span' && element.classList.contains('token')) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tvar pos = 0;\n\t\tvar data = [];\n\t\tfunction processElement(element) {\n\t\t\tif (!shouldKeep(element)) {\n\t\t\t\t// don't keep this element and just process its children\n\t\t\t\tprocessChildren(element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar o = {\n\t\t\t\t// Store original element so we can restore it after highlighting\n\t\t\t\telement: element,\n\t\t\t\tposOpen: pos\n\t\t\t};\n\t\t\tdata.push(o);\n\n\t\t\tprocessChildren(element);\n\n\t\t\to.posClose = pos;\n\t\t}\n\t\tfunction processChildren(element) {\n\t\t\tfor (var i = 0, l = element.childNodes.length; i < l; i++) {\n\t\t\t\tvar child = element.childNodes[i];\n\t\t\t\tif (child.nodeType === 1) { // element\n\t\t\t\t\tprocessElement(child);\n\t\t\t\t} else if (child.nodeType === 3) { // text\n\t\t\t\t\tpos += child.data.length;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tprocessChildren(env.element);\n\n\t\tif (data.length) {\n\t\t\t// data is an array of all existing tags\n\t\t\tenv.keepMarkup = data;\n\t\t}\n\t});\n\n\tPrism.hooks.add('after-highlight', function (env) {\n\t\tif (env.keepMarkup && env.keepMarkup.length) {\n\n\t\t\tvar walk = function (elt, nodeState) {\n\t\t\t\tfor (var i = 0, l = elt.childNodes.length; i < l; i++) {\n\n\t\t\t\t\tvar child = elt.childNodes[i];\n\n\t\t\t\t\tif (child.nodeType === 1) { // element\n\t\t\t\t\t\tif (!walk(child, nodeState)) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (child.nodeType === 3) { // text\n\t\t\t\t\t\tif (!nodeState.nodeStart && nodeState.pos + child.data.length > nodeState.node.posOpen) {\n\t\t\t\t\t\t\t// We found the start position\n\t\t\t\t\t\t\tnodeState.nodeStart = child;\n\t\t\t\t\t\t\tnodeState.nodeStartPos = nodeState.node.posOpen - nodeState.pos;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (nodeState.nodeStart && nodeState.pos + child.data.length >= nodeState.node.posClose) {\n\t\t\t\t\t\t\t// We found the end position\n\t\t\t\t\t\t\tnodeState.nodeEnd = child;\n\t\t\t\t\t\t\tnodeState.nodeEndPos = nodeState.node.posClose - nodeState.pos;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnodeState.pos += child.data.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (nodeState.nodeStart && nodeState.nodeEnd) {\n\t\t\t\t\t\t// Select the range and wrap it with the element\n\t\t\t\t\t\tvar range = document.createRange();\n\t\t\t\t\t\trange.setStart(nodeState.nodeStart, nodeState.nodeStartPos);\n\t\t\t\t\t\trange.setEnd(nodeState.nodeEnd, nodeState.nodeEndPos);\n\t\t\t\t\t\tnodeState.node.element.innerHTML = '';\n\t\t\t\t\t\tnodeState.node.element.appendChild(range.extractContents());\n\t\t\t\t\t\trange.insertNode(nodeState.node.element);\n\t\t\t\t\t\trange.detach();\n\n\t\t\t\t\t\t// Process is over\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t};\n\n\t\t\t// For each tag, we walk the DOM to reinsert it\n\t\t\tenv.keepMarkup.forEach(function (node) {\n\t\t\t\twalk(env.element, {\n\t\t\t\t\tnode: node,\n\t\t\t\t\tpos: 0\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Store new highlightedCode for later hooks calls\n\t\t\tenv.highlightedCode = env.element.innerHTML;\n\t\t}\n\t});\n}());\n","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t/**\n\t * Plugin name which is used as a class name for <pre> which is activating the plugin\n\t *\n\t * @type {string}\n\t */\n\tvar PLUGIN_NAME = 'line-numbers';\n\n\t/**\n\t * Regular expression used for determining line breaks\n\t *\n\t * @type {RegExp}\n\t */\n\tvar NEW_LINE_EXP = /\\n(?!$)/g;\n\n\n\t/**\n\t * Global exports\n\t */\n\tvar config = Prism.plugins.lineNumbers = {\n\t\t/**\n\t\t * Get node for provided line number\n\t\t *\n\t\t * @param {Element} element pre element\n\t\t * @param {number} number line number\n\t\t * @returns {Element|undefined}\n\t\t */\n\t\tgetLine: function (element, number) {\n\t\t\tif (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar lineNumberRows = element.querySelector('.line-numbers-rows');\n\t\t\tif (!lineNumberRows) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1;\n\t\t\tvar lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);\n\n\t\t\tif (number < lineNumberStart) {\n\t\t\t\tnumber = lineNumberStart;\n\t\t\t}\n\t\t\tif (number > lineNumberEnd) {\n\t\t\t\tnumber = lineNumberEnd;\n\t\t\t}\n\n\t\t\tvar lineIndex = number - lineNumberStart;\n\n\t\t\treturn lineNumberRows.children[lineIndex];\n\t\t},\n\n\t\t/**\n\t\t * Resizes the line numbers of the given element.\n\t\t *\n\t\t * This function will not add line numbers. It will only resize existing ones.\n\t\t *\n\t\t * @param {HTMLElement} element A `<pre>` element with line numbers.\n\t\t * @returns {void}\n\t\t */\n\t\tresize: function (element) {\n\t\t\tresizeElements([element]);\n\t\t},\n\n\t\t/**\n\t\t * Whether the plugin can assume that the units font sizes and margins are not depended on the size of\n\t\t * the current viewport.\n\t\t *\n\t\t * Setting this to `true` will allow the plugin to do certain optimizations for better performance.\n\t\t *\n\t\t * Set this to `false` if you use any of the following CSS units: `vh`, `vw`, `vmin`, `vmax`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tassumeViewportIndependence: true\n\t};\n\n\t/**\n\t * Resizes the given elements.\n\t *\n\t * @param {HTMLElement[]} elements\n\t */\n\tfunction resizeElements(elements) {\n\t\telements = elements.filter(function (e) {\n\t\t\tvar codeStyles = getStyles(e);\n\t\t\tvar whiteSpace = codeStyles['white-space'];\n\t\t\treturn whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line';\n\t\t});\n\n\t\tif (elements.length == 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar infos = elements.map(function (element) {\n\t\t\tvar codeElement = element.querySelector('code');\n\t\t\tvar lineNumbersWrapper = element.querySelector('.line-numbers-rows');\n\t\t\tif (!codeElement || !lineNumbersWrapper) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t/** @type {HTMLElement} */\n\t\t\tvar lineNumberSizer = element.querySelector('.line-numbers-sizer');\n\t\t\tvar codeLines = codeElement.textContent.split(NEW_LINE_EXP);\n\n\t\t\tif (!lineNumberSizer) {\n\t\t\t\tlineNumberSizer = document.createElement('span');\n\t\t\t\tlineNumberSizer.className = 'line-numbers-sizer';\n\n\t\t\t\tcodeElement.appendChild(lineNumberSizer);\n\t\t\t}\n\n\t\t\tlineNumberSizer.innerHTML = '0';\n\t\t\tlineNumberSizer.style.display = 'block';\n\n\t\t\tvar oneLinerHeight = lineNumberSizer.getBoundingClientRect().height;\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\treturn {\n\t\t\t\telement: element,\n\t\t\t\tlines: codeLines,\n\t\t\t\tlineHeights: [],\n\t\t\t\toneLinerHeight: oneLinerHeight,\n\t\t\t\tsizer: lineNumberSizer,\n\t\t\t};\n\t\t}).filter(Boolean);\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lines = info.lines;\n\t\t\tvar lineHeights = info.lineHeights;\n\t\t\tvar oneLinerHeight = info.oneLinerHeight;\n\n\t\t\tlineHeights[lines.length - 1] = undefined;\n\t\t\tlines.forEach(function (line, index) {\n\t\t\t\tif (line && line.length > 1) {\n\t\t\t\t\tvar e = lineNumberSizer.appendChild(document.createElement('span'));\n\t\t\t\t\te.style.display = 'block';\n\t\t\t\t\te.textContent = line;\n\t\t\t\t} else {\n\t\t\t\t\tlineHeights[index] = oneLinerHeight;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lineHeights = info.lineHeights;\n\n\t\t\tvar childIndex = 0;\n\t\t\tfor (var i = 0; i < lineHeights.length; i++) {\n\t\t\t\tif (lineHeights[i] === undefined) {\n\t\t\t\t\tlineHeights[i] = lineNumberSizer.children[childIndex++].getBoundingClientRect().height;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar wrapper = info.element.querySelector('.line-numbers-rows');\n\n\t\t\tlineNumberSizer.style.display = 'none';\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\tinfo.lineHeights.forEach(function (height, lineNumber) {\n\t\t\t\twrapper.children[lineNumber].style.height = height + 'px';\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Returns style declarations for the element\n\t *\n\t * @param {Element} element\n\t */\n\tfunction getStyles(element) {\n\t\tif (!element) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn window.getComputedStyle ? getComputedStyle(element) : (element.currentStyle || null);\n\t}\n\n\tvar lastWidth = undefined;\n\twindow.addEventListener('resize', function () {\n\t\tif (config.assumeViewportIndependence && lastWidth === window.innerWidth) {\n\t\t\treturn;\n\t\t}\n\t\tlastWidth = window.innerWidth;\n\n\t\tresizeElements(Array.prototype.slice.call(document.querySelectorAll('pre.' + PLUGIN_NAME)));\n\t});\n\n\tPrism.hooks.add('complete', function (env) {\n\t\tif (!env.code) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar code = /** @type {Element} */ (env.element);\n\t\tvar pre = /** @type {HTMLElement} */ (code.parentNode);\n\n\t\t// works only for <code> wrapped inside <pre> (not inline)\n\t\tif (!pre || !/pre/i.test(pre.nodeName)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Abort if line numbers already exists\n\t\tif (code.querySelector('.line-numbers-rows')) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only add line numbers if <code> or one of its ancestors has the `line-numbers` class\n\t\tif (!Prism.util.isActive(code, PLUGIN_NAME)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove the class 'line-numbers' from the <code>\n\t\tcode.classList.remove(PLUGIN_NAME);\n\t\t// Add the class 'line-numbers' to the <pre>\n\t\tpre.classList.add(PLUGIN_NAME);\n\n\t\tvar match = env.code.match(NEW_LINE_EXP);\n\t\tvar linesNum = match ? match.length + 1 : 1;\n\t\tvar lineNumbersWrapper;\n\n\t\tvar lines = new Array(linesNum + 1).join('<span></span>');\n\n\t\tlineNumbersWrapper = document.createElement('span');\n\t\tlineNumbersWrapper.setAttribute('aria-hidden', 'true');\n\t\tlineNumbersWrapper.className = 'line-numbers-rows';\n\t\tlineNumbersWrapper.innerHTML = lines;\n\n\t\tif (pre.hasAttribute('data-start')) {\n\t\t\tpre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);\n\t\t}\n\n\t\tenv.element.appendChild(lineNumbersWrapper);\n\n\t\tresizeElements([pre]);\n\n\t\tPrism.hooks.run('line-numbers', env);\n\t});\n\n\tPrism.hooks.add('line-numbers', function (env) {\n\t\tenv.plugins = env.plugins || {};\n\t\tenv.plugins.lineNumbers = true;\n\t});\n\n}());\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t// at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t// at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading…';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '✖ Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQ3MV80MzEzKSI+IDxwYXRoIGQ9Ik02IDExLjI1QzguODk5NSAxMS4yNSAxMS4yNSA4Ljg5OTUgMTEuMjUgNkMxMS4yNSAzLjEwMDUxIDguODk5NSAwLjc1IDYgMC43NUMzLjEwMDUxIDAuNzUgMC43NSAzLjEwMDUxIDAuNzUgNkMwLjc1IDguODk5NSAzLjEwMDUxIDExLjI1IDYgMTEuMjVaIiBzdHJva2U9IiM5QkE3QjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPHBhdGggZD0iTTguMjUgNkgzLjc1IiBzdHJva2U9IiM5QkE3QjYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQ3MV80MzEzIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FsZW5kYXIiPiA8cGF0aCBkPSJNMjAsM2gtMXYyYzAsMS4xMDQtMC44OTYsMi0yLDJzLTItMC44OTYtMi0yVjNIOXYyYzAsMS4xMDQtMC44OTYsMi0yLDJTNSw2LjEwNCw1LDVWM0g0QzIuODk1LDMsMiwzLjg5NSwyLDV2MTR2MSBjMCwxLjEwNSwwLjg5NSwyLDIsMmgxNmMxLjEwNSwwLDItMC44OTUsMi0ydi0xVjVDMjIsMy44OTUsMjEuMTA1LDMsMjAsM3ogTTcsMTguNUM3LDE4Ljc3NSw2Ljc3NSwxOSw2LjUsMTloLTEgQzUuMjI1LDE5LDUsMTguNzc1LDUsMTguNXYtMUM1LDE3LjIyNSw1LjIyNSwxNyw1LjUsMTdoMUM2Ljc3NSwxNyw3LDE3LjIyNSw3LDE3LjVWMTguNXogTTcsMTQuNUM3LDE0Ljc3NSw2Ljc3NSwxNSw2LjUsMTVoLTEgQzUuMjI1LDE1LDUsMTQuNzc1LDUsMTQuNXYtMUM1LDEzLjIyNSw1LjIyNSwxMyw1LjUsMTNoMUM2Ljc3NSwxMyw3LDEzLjIyNSw3LDEzLjVWMTQuNXogTTcsMTAuNUM3LDEwLjc3NSw2Ljc3NSwxMSw2LjUsMTFoLTEgQzUuMjI1LDExLDUsMTAuNzc1LDUsMTAuNXYtMUM1LDkuMjI1LDUuMjI1LDksNS41LDloMUM2Ljc3NSw5LDcsOS4yMjUsNyw5LjVWMTAuNXogTTExLDE4LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTksOSwxOC43NzUsOSwxOC41di0xQzksMTcuMjI1LDkuMjI1LDE3LDkuNSwxN2gxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTguNXogTTExLDE0LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTUsOSwxNC43NzUsOSwxNC41di0xQzksMTMuMjI1LDkuMjI1LDEzLDkuNSwxM2gxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTQuNXogTTExLDEwLjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMSBDOS4yMjUsMTEsOSwxMC43NzUsOSwxMC41di0xQzksOS4yMjUsOS4yMjUsOSw5LjUsOWgxQzEwLjc3NSw5LDExLDkuMjI1LDExLDkuNVYxMC41eiBNMTUsMTguNWMwLDAuMjc1LTAuMjI1LDAuNS0wLjUsMC41aC0xIGMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNVYxOC41eiBNMTUsMTQuNWMwLDAuMjc1LTAuMjI1LDAuNS0wLjUsMC41IGgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNVYxNC41eiBNMTUsMTAuNSBjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMUMxMyw5LjIyNSwxMy4yMjUsOSwxMy41LDloMUMxNC43NzUsOSwxNSw5LjIyNSwxNSw5LjVWMTAuNXogTTE5LDE4LjUgYzAsMC4yNzUtMC4yMjUsMC41LTAuNSwwLjVoLTFjLTAuMjc1LDAtMC41LTAuMjI1LTAuNS0wLjV2LTFjMC0wLjI3NSwwLjIyNS0wLjUsMC41LTAuNWgxYzAuMjc1LDAsMC41LDAuMjI1LDAuNSwwLjVWMTguNXogTTE5LDE0LjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMWMwLTAuMjc1LDAuMjI1LTAuNSwwLjUtMC41aDFjMC4yNzUsMCwwLjUsMC4yMjUsMC41LDAuNSBWMTQuNXogTTE5LDEwLjVjMCwwLjI3NS0wLjIyNSwwLjUtMC41LDAuNWgtMWMtMC4yNzUsMC0wLjUtMC4yMjUtMC41LTAuNXYtMUMxNyw5LjIyNSwxNy4yMjUsOSwxNy41LDloMUMxOC43NzUsOSwxOSw5LjIyNSwxOSw5LjUgVjEwLjV6IE02LDVWMmMwLTAuNTUyLDAuNDQ4LTEsMS0xczEsMC40NDgsMSwxdjNjMCwwLjU1Mi0wLjQ0OCwxLTEsMVM2LDUuNTUyLDYsNXogTTE2LDVWMmMwLTAuNTUyLDAuNDQ3LTEsMS0xczEsMC40NDgsMSwxdjMgYzAsMC41NTItMC40NDcsMS0xLDFTMTYsNS41NTIsMTYsNXoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDI0IDI0OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+IDxnIGlkPSJjYW5jZWwiPiA8cGF0aCBkPSJNMTkuMDcxLDE3LjY1N0wxMy40MTQsMTJsNS42NTctNS42NTdjMC4zOS0wLjM5LDAuMzktMS4wMjQsMC0xLjQxNHMtMS4wMjQtMC4zOS0xLjQxNCwwTDEyLDEwLjU4Nkw2LjM0Myw0LjkyOSBjLTAuMzktMC4zOS0xLjAyNC0wLjM5LTEuNDE0LDBzLTAuMzksMS4wMjQsMCwxLjQxNEwxMC41ODYsMTJsLTUuNjU3LDUuNjU3Yy0wLjM5MSwwLjM5MS0wLjM5LDEuMDI0LDAsMS40MTRzMS4wMjMsMC4zOTEsMS40MTQsMCBMMTIsMTMuNDE0bDUuNjU3LDUuNjU3YzAuMzksMC4zOSwxLjAyNCwwLjM5LDEuNDE0LDBTMTkuNDYyLDE4LjA0NywxOS4wNzEsMTcuNjU3eiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic21zIj4gPHBhdGggZD0iTTE4LjQ4MSwxMGgtMS45NDdjLTIuMTg4LDAtNC4xNDIsMS42MDItNC40NzksMy44NDhDMTEuNjMsMTYuNjc4LDEzLjY5OCwxOSwxNi4zNDcsMTloMS4xSDE4IGMwLjI2NCwwLjQwOSwwLjQ3NCwxLjA0MiwwLjQ3NCwxLjU3MWMwLDAuMjY1LTAuMDM5LDAuNjExLTAuMTE0LDAuOTM5Yy0wLjA3NSwwLjMyOSwwLjI1MiwwLjYwNCwwLjUzNiwwLjQ0MSBjMS45NjgtMS4xMzIsNC4wNDctNC4zMTcsNC4xMDMtNy4yNTlDMjMuMDQ4LDEyLjExMiwyMC45NjUsMTAsMTguNDgxLDEweiIvPiA8cGF0aCBzdHlsZT0ib3BhY2l0eTowLjU7IiBkPSJNMTYuOTIxLDcuNDUxQzE2LjQzMSw0LjI2OSwxMy41ODgsMiwxMC40MDYsMkg3LjU3M0MzLjk2LDIsMC45Myw0Ljk5MiwxLjAwMSw4LjY0OCBjMC4wODIsNC4xNjgsMy4xMDUsOC42NzksNS45NjgsMTAuMjgzYzAuNDE0LDAuMjMyLDAuODg5LTAuMTU5LDAuNzgtMC42MjRjLTAuMTA5LTAuNDY2LTAuMTY2LTAuOTU1LTAuMTY2LTEuMzMxIGMwLTAuNzUsMC4wMzMtMS4zOTYsMC40MTctMS45NzZoMC44MDRoMS42YzAuMjA2LDAsMC40MS0wLjAxNSwwLjYxMi0wLjAzNWMtMC4wMjktMC40MTctMC4wMTUtMC44NDEsMC4wNDktMS4yNjYgQzExLjQ2NywxMS4wMiwxMy44MTgsOSwxNi41MzMsOWgwLjQzM0MxNy4wMTIsOC40OTYsMTcuMDAyLDcuOTc4LDE2LjkyMSw3LjQ1MXoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzY0KSI+IDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMS44MTA2NiA2LjAwMDA2TDMuOTA1MzMgMy45MDUzOEwyLjg0NDY3IDIuODQ0NzNMMC4yMTk2NyA1LjQ2OTczQy0wLjA3MzIyMzMgNS43NjI2MiAtMC4wNzMyMjMzIDYuMjM3NDkgMC4yMTk2NyA2LjUzMDM4TDIuODQ0NjcgOS4xNTU0TDMuOTA1MzMgOC4wOTQ3NUwxLjgxMDY2IDYuMDAwMDZaTTQuMTU5NTggOC40ODg0Mkw2LjQ1NDU4IDIuOTM4NEw3Ljg0MDcyIDMuNTExNkw1LjU0NTc0IDkuMDYxNTdMNC4xNTk1OCA4LjQ4ODQyWk0xMS43ODAzIDUuNDY5NzNMOS4xNTUzMiAyLjg0NDczTDguMDk0NjcgMy45MDUzOEwxMC4xODkzIDYuMDAwMDZMOC4wOTQ2NyA4LjA5NDc1TDkuMTU1MzIgOS4xNTU0TDExLjc4MDMgNi41MzAzOEMxMi4wNzMyIDYuMjM3NDkgMTIuMDczMiA1Ljc2MjYyIDExLjc4MDMgNS40Njk3M1oiIGZpbGw9IndoaXRlIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzY0Ij4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE4OV80Mjk4OSkiPiA8cGF0aCBkPSJNNy41IDQuNUgxLjVWMTAuNUg3LjVWNC41WiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNMy43NSA0LjVWMS41SDEwLjVWOC4yNUg3LjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPC9nPiA8ZGVmcz4gPGNsaXBQYXRoIGlkPSJjbGlwMF8xODlfNDI5ODkiPiA8cmVjdCB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9IndoaXRlIiAvPiA8L2NsaXBQYXRoPiA8L2RlZnM+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDIuMjVDMCAxLjgzNTc5IDAuMzM1Nzg2IDEuNSAwLjc1IDEuNUgxMS4yNUMxMS42NjQyIDEuNSAxMiAxLjgzNTc5IDEyIDIuMjVWNC41SDEwLjVWM0gxLjVWOC4yNUg0LjVWOS43NUgwLjc1QzAuMzM1Nzg2IDkuNzUgMCA5LjQxNDIzIDAgOVYyLjI1Wk05Ljc1IDcuNUgxMlY5SDkuNzVWMTEuMjVIOC4yNVY5SDZWNy41SDguMjVWNS4yNUg5Ljc1VjcuNVoiIGZpbGw9IndoaXRlIiAvPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTExLjcwNjcgMy4yNjY2N0wxMi4wMjY3IDQuMDEzMzNWMTIuOTczM0wxMS4wMTMzIDEzLjk4NjdIMkwwLjk4NjY2NyAxMi45NzMzVjAuOTczMzMzTDIgMC4wMTMzMzMzSDguMDI2NjdMOC43MiAwLjI4TDExLjcwNjcgMy4yNjY2N1pNMTEuMDEzMyAxMi45NzMzVjQuOTczMzNINy4wMTMzM1YwLjk3MzMzM0gyVjEyLjk3MzNIMTEuMDEzM1pNOC4wMjY2NyA0LjAxMzMzSDExLjAxMzNMOC4wMjY2NyAwLjk3MzMzM1Y0LjAxMzMzWiIgZmlsbD0iI0M1QzVDNSIvPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wLjc1IDMuODU2NjZMMS43MTMzNSAyLjg5MzMxTDYgNy4xNzk0M0wxMC4yODY3IDIuODkzMzFMMTEuMjUgMy44NTY2Nkw2IDkuMTA2NjZMMC43NSAzLjg1NjY2WiIgZmlsbD0iI0QxRDVEQiIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBVcGxvYWRlZCB0bzogU1ZHIFJlcG8sIHd3dy5zdmdyZXBvLmNvbSwgR2VuZXJhdG9yOiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4gPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZD0iTTEyIDEzLjc1QzEyLjk2NjUgMTMuNzUgMTMuNzUgMTIuOTY2NSAxMy43NSAxMkMxMy43NSAxMS4wMzM1IDEyLjk2NjUgMTAuMjUgMTIgMTAuMjVDMTEuMDMzNSAxMC4yNSAxMC4yNSAxMS4wMzM1IDEwLjI1IDEyQzEwLjI1IDEyLjk2NjUgMTEuMDMzNSAxMy43NSAxMiAxMy43NVoiIGZpbGw9IiMwMDAwMDAiLz4gPHBhdGggZD0iTTEyIDYuNzVDMTIuOTY2NSA2Ljc1IDEzLjc1IDUuOTY2NSAxMy43NSA1QzEzLjc1IDQuMDMzNSAxMi45NjY1IDMuMjUgMTIgMy4yNUMxMS4wMzM1IDMuMjUgMTAuMjUgNC4wMzM1IDEwLjI1IDVDMTAuMjUgNS45NjY1IDExLjAzMzUgNi43NSAxMiA2Ljc1WiIgZmlsbD0iIzAwMDAwMCIvPiA8cGF0aCBkPSJNMTIgMjAuNzVDMTIuOTY2NSAyMC43NSAxMy43NSAxOS45NjY1IDEzLjc1IDE5QzEzLjc1IDE4LjAzMzUgMTIuOTY2NSAxNy4yNSAxMiAxNy4yNUMxMS4wMzM1IDE3LjI1IDEwLjI1IDE4LjAzMzUgMTAuMjUgMTlDMTAuMjUgMTkuOTY2NSAxMS4wMzM1IDIwLjc1IDEyIDIwLjc1WiIgZmlsbD0iIzAwMDAwMCIvPiA8L3N2Zz4=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjQ0Nzk5IDAuMTA2NjkxQzEuMDc4ODYgLTAuMDc3OTk5OSAwLjYzNDE5MiAtMC4wMTY5MjYxIDAuMzI4NTI4IDAuMjYwNDQ0QzAuMDIyODY0NCAwLjUzNzgxMyAtMC4wODA5OCAwLjk3NDQ4MiAwLjA2NzEwMDEgMS4zNTk3NkwyLjYyMTIyIDguMDA1MDVMMC4wNjcyODQ3IDE0LjYzOTdDLTAuMDgwOTg2OSAxNS4wMjQ5IDAuMDIyNjE2OCAxNS40NjE2IDAuMzI4MTEgMTUuNzM5MUMwLjYzMzYwNCAxNi4wMTY2IDEuMDc4MjIgMTYuMDc4IDEuNDQ3NDQgMTUuODkzNUwxNS40NDY0IDguODk5OTFDMTUuNzg1MyA4LjczMDYzIDE1Ljk5OTQgOC4zODQ0MiAxNS45OTk1IDguMDA1NjRDMTUuOTk5NiA3LjYyNjg1IDE1Ljc4NTcgNy4yODA1MiAxNS40NDcgNy4xMTEwM0wxLjQ0Nzk5IDAuMTA2NjkxWk00LjM3OTYxIDcuMDA1MzNMMi44NTkwMyAzLjA0OTA3TDEwLjc2NjEgNy4wMDUzM0g0LjM3OTYxWk00LjM3OTIzIDkuMDA1MzNMMi44NTk5NCAxMi45NTIyTDEwLjc2MDIgOS4wMDUzM0g0LjM3OTIzWiIgZmlsbD0iIzA5NzJEMyIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iZXJyb3JfaW5saW5lIj4gPHBhdGggZD0iTTEyLDFDNS45MiwxLDEsNS45MiwxLDEyYzAsNi4wOCw0LjkyLDExLDExLDExczExLTQuOTIsMTEtMTFDMjMsNS45MiwxOC4wOCwxLDEyLDF6IE0xMiwxOGMtMC41NSwwLTEtMC40NS0xLTFzMC40NS0xLDEtMSBzMSwwLjQ1LDEsMVMxMi41NSwxOCwxMiwxOHogTTEzLDEzLjg3NkMxMywxNC40OTUsMTIuNTUsMTUsMTIsMTVzLTEtMC41MDUtMS0xLjEyNFY3LjEyNEMxMSw2LjUwNSwxMS40NSw2LDEyLDZzMSwwLjUwNSwxLDEuMTI0IFYxMy44NzZ6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYzKSI+IDxwYXRoIGQ9Ik03LjUgMS41SDEwLjVWNC41IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgLz4gPHBhdGggZD0iTTQuNSA3LjVMMTAuNSAxLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMTAuNSA2Ljc4NlYxMC41SDEuNVYxLjVINS4yNSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzYzIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icmVkZXllIj4gPHBhdGggc3R5bGU9Im9wYWNpdHk6MC41OyIgZD0iTTE1LDEyYy0xLjEwNSwwLTItMC44OTUtMi0yYzAtMC42NCwwLjMwNi0xLjIwMiwwLjc3My0xLjU2OUMxMy4yMzYsOC4xNjQsMTIuNjQsOCwxMiw4IGMtMi4yMDksMC00LDEuNzkxLTQsNGMwLDIuMjA5LDEuNzkxLDQsNCw0czQtMS43OTEsNC00YzAtMC4wOS0wLjAyMS0wLjE3NC0wLjAyNi0wLjI2M0MxNS42ODQsMTEuOSwxNS4zNTUsMTIsMTUsMTJ6Ii8+IDxwYXRoIGQ9Ik0yMi44NDIsMTEuNDZDMjIuNjUyLDExLjE2LDE4LjAwMSw0LDEyLDRTMS4zNDgsMTEuMTYsMS4xNTgsMTEuNDZjLTAuMjEsMC4zMy0wLjIxLDAuNzUsMCwxLjA4IEMxLjM0OCwxMi44NCw1Ljk5OSwyMCwxMiwyMHMxMC42NTItNy4xNiwxMC44NDItNy40NkMyMy4wNTMsMTIuMjEsMjMuMDUzLDExLjc5LDIyLjg0MiwxMS40NnogTTEyLDE3IGMtMi43NjIsMC01LjAwMS0yLjIzOS01LjAwMS01UzkuMjM4LDcsMTIsN3M1LjAwMSwyLjIzOSw1LjAwMSw1UzE0Ljc2MiwxNywxMiwxN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iaW5mb3JtYXRpb24iPiA8cGF0aCBkPSJNMTIsMUM1LjkyNSwxLDEsNS45MjUsMSwxMnM0LjkyNSwxMSwxMSwxMXMxMS00LjkyNSwxMS0xMVMxOC4wNzUsMSwxMiwxeiBNMTQsMTdjMCwxLjEwNS0wLjg5NSwyLTIsMnMtMi0wLjg5NS0yLTJ2LTUgYzAtMS4xMDUsMC44OTUtMiwyLTJzMiwwLjg5NSwyLDJWMTd6IE0xMiw4Yy0xLjEwNSwwLTItMC44OTUtMi0yYzAtMS4xMDUsMC44OTUtMiwyLTJzMiwwLjg5NSwyLDJDMTQsNy4xMDUsMTMuMTA1LDgsMTIsOHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FyZXRfbGVmdCI+IDxwYXRoIGQ9Ik0xNCwxOGMtMC4yNTYsMC0wLjUxMi0wLjA5OC0wLjcwNy0wLjI5M2wtNS01Yy0wLjM5MS0wLjM5MS0wLjM5MS0xLjAyMywwLTEuNDE0bDUtNWMwLjM5MS0wLjM5MSwxLjAyMy0wLjM5MSwxLjQxNCwwIHMwLjM5MSwxLjAyMywwLDEuNDE0TDEwLjQxNCwxMmw0LjI5Myw0LjI5M2MwLjM5MSwwLjM5MSwwLjM5MSwxLjAyMywwLDEuNDE0QzE0LjUxMiwxNy45MDIsMTQuMjU2LDE4LDE0LDE4eiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibGlnaHQiPiA8cGF0aCBkPSJNNy4xMDYsMTNoOS43ODlDMTguMTkyLDExLjcyOSwxOSw5Ljk2LDE5LDhjMC0zLjg2Ni0zLjEzNC03LTctN1M1LDQuMTM0LDUsOEM1LDkuOTYsNS44MDgsMTEuNzI5LDcuMTA2LDEzeiIvPiA8cGF0aCBzdHlsZT0ib3BhY2l0eTowLjU7IiBkPSJNMTQsMjFoMXYxYzAsMC41NTMtMC40NDcsMS0xLDFoLTRjLTAuNTUyLDAtMS0wLjQ0Ny0xLTF2LTFoMUgxNHogTTcsMTRjMCwwLDEsMS41LDEsM2MwLDEsMCwyLDEsM2g2IGMxLTEsMS0yLDEtM2MwLTEuNSwxLTMsMS0zSDd6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iaHlwZXJsaW5rIj4gPHBhdGggZD0iTTE2LjUsNWgtNGMtMi4xMywwLTMuOTgsMS4yMi00Ljg5LDNoMi40NWMwLjYzLTAuNjIsMS40OS0xLDIuNDQtMWg0YzEuOTMsMCwzLjUsMS41NywzLjUsMy41UzE4LjQzLDE0LDE2LjUsMTRoLTQgYy0xLjM5LDAtMi42LTAuODItMy4xNS0ySDcuMjFjMC42NSwyLjMsMi43OCw0LDUuMjksNGg0YzMuMDMsMCw1LjUtMi40Nyw1LjUtNS41QzIyLDcuNDcsMTkuNTMsNSwxNi41LDV6IE0xMS41LDE4aC00IEM1LjU3LDE4LDQsMTYuNDMsNCwxNC41UzUuNTcsMTEsNy41LDExaDRjMS4zOSwwLDIuNiwwLjgyLDMuMTUsMmgyLjE0Yy0wLjY1LTIuMy0yLjc4LTQtNS4yOS00aC00QzQuNDcsOSwyLDExLjQ3LDIsMTQuNSBDMiwxNy41Myw0LjQ3LDIwLDcuNSwyMGg0YzIuMTMsMCwzLjk4LTEuMjIsNC44OS0zaC0yLjQ1QzEzLjMxLDE3LjYyLDEyLjQ1LDE4LDExLjUsMTh6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iYW5ub3VuY2VyIj4gPHBhdGggZD0iTTIwLjg5OSwxOS4zOTRsLTYuNDktMTUuMDk1bC0xMS4xNCwxMS4xNGw4LjUzMSwzLjY1M2wtMS42NjksMS44MjFjLTAuMTA2LDAuMTE3LTAuMTUyLDAuMjc2LTAuMTIzLDAuNDMyIGMwLjAzLDAuMTU1LDAuMTMxLDAuMjg3LDAuMjcyLDAuMzU2bDIuNTcxLDEuMjVjMC4wNywwLjAzNCwwLjE0NSwwLjA1LDAuMjE5LDAuMDVjMC4xMzcsMCwwLjI3Mi0wLjA1NywwLjM2OS0wLjE2M2wyLTIuMTg3IGwyLjk0MiwxLjI2TDIwLjg5OSwxOS4zOTR6Ii8+IDxwYXRoIHN0eWxlPSJvcGFjaXR5OjAuNTsiIGQ9Ik05LjUsNkM5LjMzOSw2LDkuMTgsNS45MjIsOS4wODQsNS43NzdsLTItM2MtMC4xNTMtMC4yMy0wLjA5MS0wLjU0LDAuMTM5LTAuNjkzIHMwLjU0MS0wLjA5MiwwLjY5MywwLjEzOWwyLDNjMC4xNTMsMC4yMywwLjA5MSwwLjU0LTAuMTM5LDAuNjkzQzkuNjkyLDUuOTczLDkuNTk2LDYsOS41LDZ6IE00LjkxNiwxMC43NzcgYzAuMTUzLTAuMjMsMC4wOTEtMC41NC0wLjEzOS0wLjY5M2wtMy0yQzEuNTQ1LDcuOTMsMS4yMzYsNy45OTMsMS4wODQsOC4yMjNjLTAuMTUzLDAuMjMtMC4wOTEsMC41NCwwLjEzOSwwLjY5M2wzLDIgQzQuMzA4LDEwLjk3Myw0LjQwNCwxMSw0LjUsMTFDNC42NjEsMTEsNC44MiwxMC45MjIsNC45MTYsMTAuNzc3eiBNNi44NTQsNy44NTRjMC4xOTUtMC4xOTUsMC4xOTUtMC41MTIsMC0wLjcwN2wtNC00IGMtMC4xOTUtMC4xOTUtMC41MTItMC4xOTUtMC43MDcsMHMtMC4xOTUsMC41MTIsMCwwLjcwN2w0LDRDNi4yNDQsNy45NTEsNi4zNzIsOCw2LjUsOFM2Ljc1Niw3Ljk1MSw2Ljg1NCw3Ljg1NHogTTE4Ljg1NCwyMi44NTQgbDMtM2MwLjE5NS0wLjE5NSwwLjE5NS0wLjUxMiwwLTAuNzA3cy0wLjUxMi0wLjE5NS0wLjcwNywwbC0zLDNjLTAuMTk1LDAuMTk1LTAuMTk1LDAuNTEyLDAsMC43MDcgQzE4LjI0NCwyMi45NTEsMTguMzcyLDIzLDE4LjUsMjNTMTguNzU2LDIyLjk1MSwxOC44NTQsMjIuODU0eiBNMi44NTQsMTUuODU0bDEyLTEyYzAuMTk1LTAuMTk1LDAuMTk1LTAuNTEyLDAtMC43MDcgcy0wLjUxMi0wLjE5NS0wLjcwNywwbC0xMiwxMmMtMC4xOTUsMC4xOTUtMC4xOTUsMC41MTIsMCwwLjcwN0MyLjI0NCwxNS45NTEsMi4zNzIsMTYsMi41LDE2UzIuNzU2LDE1Ljk1MSwyLjg1NCwxNS44NTR6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibWVudSI+IDxwYXRoIGQ9Ik0yMSw4SDNDMi40NDgsOCwyLDcuNTUyLDIsN3MwLjQ0OC0xLDEtMWgxOGMwLjU1MywwLDEsMC40NDgsMSwxUzIxLjU1Myw4LDIxLDh6IE0yMiwxMmMwLTAuNTUyLTAuNDQ3LTEtMS0xSDMgYy0wLjU1MiwwLTEsMC40NDgtMSwxczAuNDQ4LDEsMSwxaDE4QzIxLjU1MywxMywyMiwxMi41NTIsMjIsMTJ6IE0yMiwxN2MwLTAuNTUzLTAuNDQ3LTEtMS0xSDNjLTAuNTUyLDAtMSwwLjQ0Ny0xLDFzMC40NDgsMSwxLDEgaDE4QzIxLjU1MywxOCwyMiwxNy41NTMsMjIsMTd6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icmVtb3ZlIj4gPHBhdGggZD0iTTIxLDEzSDNjLTAuNTUyLDAtMS0wLjQ0OC0xLTFzMC40NDgtMSwxLTFoMThjMC41NTIsMCwxLDAuNDQ4LDEsMVMyMS41NTIsMTMsMjEsMTN6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiBpZD0ic3ZnNDEiIHdpZHRoPSIyMi45NDU4MThtbSIgaGVpZ2h0PSIyNS45MjU4NDRtbSIgdmlld0JveD0iMCAwIDg2LjcyNDM1IDk3Ljk4NzQ0MyIgc29kaXBvZGk6ZG9jbmFtZT0iTXluYWhJY29uV2hpdGUuc3ZnIiBpbmtzY2FwZTp2ZXJzaW9uPSIxLjEgKGM0ZThmOWUsIDIwMjEtMDUtMjQpIiB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPiA8c29kaXBvZGk6bmFtZWR2aWV3IGlkPSJuYW1lZHZpZXc2IiBwYWdlY29sb3I9IiNmZmZmZmYiIGJvcmRlcmNvbG9yPSIjNjY2NjY2IiBib3JkZXJvcGFjaXR5PSIxLjAiIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiIHNob3dncmlkPSJmYWxzZSIgdW5pdHM9Im1tIiBmaXQtbWFyZ2luLXRvcD0iMCIgZml0LW1hcmdpbi1sZWZ0PSIwIiBmaXQtbWFyZ2luLXJpZ2h0PSIwIiBmaXQtbWFyZ2luLWJvdHRvbT0iMCIgaW5rc2NhcGU6em9vbT0iMi4yNTAwMDAxIiBpbmtzY2FwZTpjeD0iNTQuODg4ODg3IiBpbmtzY2FwZTpjeT0iODMuMzMzMzMxIiBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjEyOTYiIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDMiIGlua3NjYXBlOndpbmRvdy14PSIwIiBpbmtzY2FwZTp3aW5kb3cteT0iMjMiIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9Imc0NyIgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9Im1tIiAvPiA8ZGVmcyBpZD0iZGVmczQ1IiAvPiA8ZyBpZD0iZzQ3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTEwLjU3MjU3LC04OS4zNDQxMzUpIj4gPHBhdGggaWQ9InBhdGgxMTkiIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlLXdpZHRoOjAuNjY2NjY3IiBkPSJtIDEzMi4zMDczLDE3NS42OTcyOCBjIC0xMC45OTE5LC02LjM5MTk2IC0yMC41NDgzLC0xMS43MTUyNiAtMjEuMDE0NzMsLTEyLjM1MzE0IC0xLC0xIC0wLjY2NjY2LC03LjEyMzE5IC0wLjY2NjY2LC0yNS4wOTAyNSAwLC0yMy40NDI5MiAwLjAwNCwtMjMuNTA2MTkgMS41LC0yNS4xMzk0NSAyLjI2NjQxLC0yLjQ3Mzk5IDM5LjY3MSwtMjMuNzcwMzA1IDQxLjc0OTg2LC0yMy43NzAzMDUgMi4wMDU4LDAgNDAuMzc5NDQsMjEuOTA4MTk1IDQyLjI2ODgxLDI0LjEzMjAwNSAxLjAyNzg2LDEuMjA5ODEgMS4xNTU3OCwyLjcxNDY4IDEuMTUyMjgsOS45NzEwOCBsIC0wLjAwNCw4Ljg5NjkyIGMgLTIuNDU5NDIsMS40Mzk5NCAtNS42MzMwNCwyLjY5MjU5IC03Ljk2NjE3LDQuMDM4NjQgLTAuMzcxOCwtMC4xNTMyNyAtMC4wNjg3LC0xLjAzODYzIC0wLjA1NDQsLTguODI2NTQgMC4wMjA2LC0xMS4yMTIxIDAuMDIwNiwtOS4yMTIxIC0xLjUxODY4LC0xMC4zMTg3NiAtMS41MjExNCwtMS4wOTM2NSAtMzIuNTE5MzMsLTE4LjU2MDAwOCAtMzMuODQ0MTYsLTE4LjU2MDAwOCAtMS4yNTIzNSwwIC0zMS4wNDUyOSwxNi45Njg1NjggLTMzLjExNjU5LDE4Ljg2MTU0OCAtMS40OTAxOCwxLjM2MTg5IC0xLjUsMS40OTg2NiAtMS41LDIwLjg4NzQgdiAxOS41MTY1MyBsIDIuMTY2NjcsMS42MDIyOSBjIDEuMTkxNjcsMC44ODEyNyA4LjQ4MzAzLDUuMjQ2NTQgMTYuMjAzMDMsOS43MDA2IDEwLjI1NTM0LDUuOTE2ODQgMTQuNjMzNjgsOC4wOTgzIDE2LjI1MzgxLDguMDk4MyAxLjYxNjk0LDAgNi4yMTA5MywtMi4yODA3NCAxNi45NjM2NCwtOC40MjE4IDguMTEwNCwtNC42MzE5OCAxNS4xODIwNCwtOS40ODY3MyAxNi4xNzAwNSwtMTAuMTg5NDUgMi4xNjY2NiwtMS41NDEwMyAyLjI0MjgsLTAuNzIyNDkgMi4yNDI4LC02LjIxODg5IHYgLTguMTY5ODYgYyAzLjM5NTIxLC0xLjg4NTk2IDYuMzcxNzgsLTMuMjg2OCA4LC00IDAsMiA3LjFlLTQsNS41ODU5OCAtMC4xMjA3OSwxMS43MDYxNSAtMC4yMDg5OCwxMC41MjY1NSAtMC4yNDA1LDEwLjcyNzI5IC0xLjg3OTIxLDExLjk2NjA3IC00LjAzMzQ2LDMuMDQ5MDggLTQwLjEwNzk0LDIzLjMyNjU0IC00MS40Nzg3NywyMy4zMTUyMSAtMC44MzY2NywtMC4wMDcgLTEwLjUxNDYsLTUuMjQyMzQgLTIxLjUwNjUsLTExLjYzNDI5IHogbSA2Ljk4NTI3LC0xMy4yNDU3NCAtMTMsLTcuNTI2NCAtMC4xODE3LC0xMi4xMjM4MyBjIC0wLjEyOTU3LC04LjY0NDk4IDAuMDMzNSwtMTIuMTIzODQgMC41Njg0MSwtMTIuMTIzODQgMC40MTI1NywwIDIuMjE5MDMsMC44MjUgNC4wMTQzNiwxLjgzMzMzIGwgMy4yNjQyNSwxLjgzMzM0IDYuNmUtNCw3LjM5NjY3IGMgMy40ZS00LDQuMzMwODQgMC4xMzU4NSw3LjQ3NDA5IDAuMzM0MDIsOC42MDMzMyA0LDIgNC4wMTIxMiwxLjk3OTEzIDkuMDUzODUsNC45MDE3MiAxMS4xODMwNiw2LjQ4MjYgOS42NTg0MSw2LjQ4MyAyMC45MjkyNCwtMC4wMDUgbCA5LjY2MzA1LC01LjU2MzA2IDAuMDEwMywtMTEuNTE3MTIgMC4wMTAzLC0xMS41MTcxMiAtMS44MzMzMywwLjk1NzQzIGMgLTEuMDA4MzQsMC41MjY1OSAtNS4yODMzNCwyLjkzMjY5IC05LjUsNS4zNDY4OSAtNC4yMTY2NywyLjQxNDIgLTguMTMyNDUsNC4zOTEwNiAtOC43MDE3NCw0LjM5MzAyIC0xLjEyNjk5LDAuMDA0IC0yMi44ODM1MiwtMTIuMTQ0MjIgLTI0LjgyMjk0LC0xMy44NjAyOCAtMC42NTUyNSwtMC41Nzk3OCAtMC44MDg3MywtMS4xMzY0OCAtMSwtMi4wMDI3NyAwLjI3ODA4LC0xLjM3ODY4IDIxLjE5MTI3LC0xMi4xMzM3MSAyNS43ODkyNSwtMTQuODAwMDUgMS40MDIwMiwwLjY2NjM0IDEyLjA2ODc2LDYuNTQyNDggMTIuMDY4NzYsNi41NDI0OCAtMi4zNzA1NywxLjcyOTcgLTQuNjY4MjcsMy4zNjg0MiAtNi42NjY3NCw1LjEyMzg2IC00LC0yIC0zLjQ4NzYzLC0xLjY5OTg0IC01LjQ2MTM1LC0yLjY0MTA0IC0zLjE3MjI4LDEuOTQzMTcgLTQuNTM4NjUsMi42NDEwNCAtOS44NzE5MSw2LjA0Nzg0IDIuMzMzMjYsMS41OTMyIDcuMzMzMjYsNC41OTMyIDkuOTUwNTcsNS41OTM1MyAyLjM4MjY5LC0xLjAwMDMzIDIuMzgyNjksLTEuMDAwMzMgMTAuNzgzNTYsLTUuMDg5OTYgOS45NzI5MiwtNC44NTQ5MiA4Ljg3NjYsLTUuNTIyNTcgMTQuNTc3MDYsLTEuOTI0MDIgbCAyLjcxMjA0LDEuNzEyMDMgLTAuMTc4MjgsMTYuMzg1NDEgLTAuNTExNjksMTUuOTE2MjEgLTEyLjY2NjU5LDguMDMxOTcgYyAtNi45ODU4LDQuNDI5NzUgLTEzLjMzMzQxLDYuOTY4MDMgLTE0LjY2NjY3LDcuNTgyNDYgLTEuNjY2NzQsLTAuNjE0NDMgLTcuMzQyMTEsLTMuMjY2MTIgLTE0LjY2NjY3LC03LjUwNjcgeiIgLz4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYwKSI+IDxwYXRoIGQ9Ik02IDEuNjI1QzMuMzc1IDEuNjI1IDMuMzc1IDUuMTI1IDMuMzc1IDUuMTI1TDAuNzUgOC4yNUgxMS4yNUw4LjYyNSA1LjEyNUM4LjYyNSA1LjEyNSA4LjYyNSAxLjYyNSA2IDEuNjI1WiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNNC4yNSA4LjYyNVY5LjVDNC4yNSA5Ljk2NDEzIDQuNDM0MzcgMTAuNDA5MiA0Ljc2MjU2IDEwLjczNzRDNS4wOTA3NSAxMS4wNjU2IDUuNTM1ODcgMTEuMjUgNiAxMS4yNUM2LjQ2NDEzIDExLjI1IDYuOTA5MjQgMTEuMDY1NiA3LjIzNzQzIDEwLjczNzRDNy41NjU2MiAxMC40MDkyIDcuNzUgOS45NjQxMyA3Ljc1IDkuNVY4LjYyNSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPiA8cGF0aCBkPSJNNiAwLjc1VjEuNjI1IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4gPC9nPiA8ZGVmcz4gPGNsaXBQYXRoIGlkPSJjbGlwMF80MjZfMjM2MCI+IDxyZWN0IHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgZmlsbD0id2hpdGUiIC8+IDwvY2xpcFBhdGg+IDwvZGVmcz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibGlzdF9jaGVjayI+IDxwYXRoIGQ9Ik0xMiwyM0M1LjkzNSwyMywxLDE4LjA2NSwxLDEyUzUuOTM1LDEsMTIsMWMxLjgzNywwLDMuNjU3LDAuNDYzLDUuMjYzLDEuMzM5YzAuNDg0LDAuMjY1LDAuNjYzLDAuODcyLDAuMzk4LDEuMzU3IHMtMC44NzIsMC42NjQtMS4zNTcsMC4zOTlDMTQuOTkyLDMuMzc4LDEzLjUwNCwzLDEyLDNjLTQuOTYyLDAtOSw0LjAzOC05LDljMCw0Ljk2Myw0LjAzOCw5LDksOWM0Ljk2MywwLDktNC4wMzcsOS05IGMwLTAuNTMzLTAuMDUyLTEuMDcxLTAuMTU3LTEuNjQ0Yy0wLjEwMS0wLjU0MywwLjI1OS0xLjA2NSwwLjgwMi0xLjE2NWMwLjU1Mi0wLjA5OSwxLjA2NCwwLjI2LDEuMTY1LDAuODAyIEMyMi45MzgsMTAuNjg4LDIzLDExLjM0NCwyMywxMkMyMywxOC4wNjUsMTguMDY1LDIzLDEyLDIzeiBNMTEuNzA3LDE1LjcwN2w5LTljMC4zOTEtMC4zOTEsMC4zOTEtMS4wMjMsMC0xLjQxNCBzLTEuMDIzLTAuMzkxLTEuNDE0LDBMMTEsMTMuNTg2bC0zLjI5My0zLjI5M2MtMC4zOTEtMC4zOTEtMS4wMjMtMC4zOTEtMS40MTQsMHMtMC4zOTEsMS4wMjMsMCwxLjQxNGw0LDQgQzEwLjQ4OCwxNS45MDIsMTAuNzQ0LDE2LDExLDE2UzExLjUxMiwxNS45MDIsMTEuNzA3LDE1LjcwN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjY1ODMgNS41NzAyTDAuNzUgNi40Nzg1TDQuMjI3MzUgOS45NTU4NUwxMS4yNSAyLjkzMzJMMTAuMzQxNyAyLjAyNDlMNC4yMjczNSA4LjEzOTI1TDEuNjU4MyA1LjU3MDJaIiBmaWxsPSJ3aGl0ZSIgLz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icGF1c2UiPiA8cGF0aCBkPSJNOSwyMkg2Yy0wLjU1LDAtMS0wLjQ1LTEtMVYzYzAtMC41NSwwLjQ1LTEsMS0xaDNjMC41NSwwLDEsMC40NSwxLDF2MThDMTAsMjEuNTUsOS41NSwyMiw5LDIyeiBNMTksMjFWMyBjMC0wLjU1LTAuNDUtMS0xLTFoLTNjLTAuNTUsMC0xLDAuNDUtMSwxdjE4YzAsMC41NSwwLjQ1LDEsMSwxaDNDMTguNTUsMjIsMTksMjEuNTUsMTksMjF6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icGxheSI+IDxwYXRoIGQ9Ik0yMS41NDksMTEuMjA4TDcuMzI4LDIuMTNDNy4wNTIsMS45NTUsNi43MTUsMS45NTcsNi40NDEsMi4xMzZDNi4xNjgsMi4zMTUsNiwyLjY0NCw2LDN2MTggYzAsMC4zNTQsMC4xNjcsMC42ODMsMC40MzksMC44NjJDNi41NzgsMjEuOTU0LDYuNzMzLDIyLDYuODg5LDIyYzAuMTQ5LDAsMC4yOTgtMC4wNDIsMC40MzMtMC4xMjdsMTQuMjIzLTguOTIyIGMwLjI4LTAuMTc2LDAuNDU1LTAuNTA5LDAuNDU2LTAuODdDMjIuMDAxLDExLjcyLDIxLjgyOSwxMS4zODYsMjEuNTQ5LDExLjIwOHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iYWRkIj4gPHBhdGggZD0iTTIxLDExaC04VjNjMC0wLjU1Mi0wLjQ0OC0xLTEtMXMtMSwwLjQ0OC0xLDF2OEgzYy0wLjU1MiwwLTEsMC40NDgtMSwxczAuNDQ4LDEsMSwxaDh2OGMwLDAuNTUzLDAuNDQ4LDEsMSwxczEtMC40NDcsMS0xIHYtOGg4YzAuNTUyLDAsMS0wLjQ0OCwxLTFTMjEuNTUyLDExLDIxLDExeiIvPiA8L2c+IDxnIGlkPSJMYXllcl8xIj4gPC9nPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02IDEwLjUwMDJDOC40ODUyOCAxMC41MDAyIDEwLjUgOC40ODU0NyAxMC41IDYuMDAwMTlIMTJDMTIgOS4zMTM4OSA5LjMxMzcxIDEyLjAwMDIgNiAxMi4wMDAyQzIuNjg2MjkgMTIuMDAwMiAwIDkuMzEzODkgMCA2LjAwMDE5QzAgMi42ODY0OCAyLjY4NjI5IDAuMDAwMTg1NTIyIDUuOTkzNjYgMC4wMDAyMTIzMzZDNy43NDc3NCAtMC4wMTQ2MjA3IDkuMzg1MiAwLjc0ODUgMTAuNSAyLjAzMTc4VjAuMDAwMTg1NTIySDEyVjQuNTAwMTlINy41VjMuMDAwMTlIOS4zNTQwN0M4LjUyMjU5IDIuMDUyMjQgNy4zMDYxMiAxLjQ4OTE2IDYgMS41MDAxOUMzLjUxNDcyIDEuNTAwMTkgMS41IDMuNTE0OSAxLjUgNi4wMDAxOUMxLjUgOC40ODU0NyAzLjUxNDcyIDEwLjUwMDIgNiAxMC41MDAyWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQyNl8yMzYyKSI+IDxwYXRoIGQ9Ik02Ljc1IDEuNUgxMC41VjUuMjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNNS4yNSAxLjVIMS41VjUuMjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNNS4yNSAxMC41SDEuNVY2Ljc1IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgLz4gPHBhdGggZD0iTTYuNzUgMTAuNUgxMC41VjYuNzUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMS41IDEuNUwxMC41IDEwLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8cGF0aCBkPSJNMTAuNSAxLjVMMS41IDEwLjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiAvPiA8L2c+IDxkZWZzPiA8Y2xpcFBhdGggaWQ9ImNsaXAwXzQyNl8yMzYyIj4gPHJlY3Qgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJ3aGl0ZSIgLz4gPC9jbGlwUGF0aD4gPC9kZWZzPiA8L3N2Zz4g\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ibWluaW1pemVfeDQwX21pcnJvcmVkIj4gPHBhdGggZD0iTTQuMDI0LDE0LjM0N2MtMC4wNTcsMC4xNzktMC4wMSwwLjM3NCwwLjEyMywwLjUwNmwxLjc5MywxLjc5M2wtMy42NDgsMy42NDhjLTAuMzg5LDAuMzg5LTAuMzg5LDEuMDI1LDAsMS40MTQgYzAuMzg5LDAuMzg5LDEuMDI1LDAuMzg5LDEuNDE0LDBsMy42NDgtMy42NDhsMS43OTMsMS43OTNjMC4xMzIsMC4xMzIsMC4zMjgsMC4xOCwwLjUwNiwwLjEyM2MwLjE3OC0wLjA1NywwLjMxLTAuMjA5LDAuMzQtMC4zOTQgbDEtNmMwLjAyNS0wLjE1OC0wLjAyNS0wLjMyMS0wLjE0LTAuNDM2Yy0wLjExNC0wLjExNC0wLjI3Ny0wLjE2NS0wLjQzNi0wLjE0bC02LDFDNC4yMzMsMTQuMDM3LDQuMDgxLDE0LjE2OSw0LjAyNCwxNC4zNDd6IE0xNC4zNDcsNC4wMjRjMC4xNzktMC4wNTcsMC4zNzQtMC4wMSwwLjUwNiwwLjEyM2wxLjc5MywxLjc5M2wzLjY0OC0zLjY0OGMwLjM4OS0wLjM4OSwxLjAyNS0wLjM4OSwxLjQxNCwwIGMwLjM4OSwwLjM4OSwwLjM4OSwxLjAyNSwwLDEuNDE0TDE4LjA2LDcuMzU0bDEuNzkzLDEuNzkzYzAuMTMyLDAuMTMyLDAuMTgsMC4zMjgsMC4xMjMsMC41MDZjLTAuMDU3LDAuMTc4LTAuMjA5LDAuMzEtMC4zOTQsMC4zNCBsLTYsMWMtMC4xNTgsMC4wMjUtMC4zMjEtMC4wMjUtMC40MzYtMC4xNGMtMC4xMTQtMC4xMTQtMC4xNjUtMC4yNzctMC4xNC0wLjQzNmwxLTZDMTQuMDM3LDQuMjMzLDE0LjE2OSw0LjA4MSwxNC4zNDcsNC4wMjR6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjk2OTk0IDcuMDYwNUw1LjAzMDQ0IDZMNC4wNjA2OSA1LjAzMDI1SDcuMjE4OTRDOC42MjUxOSA1LjAzMDI1IDkuMDAwMTkgNi40NDQ3NSA5LjAwMDE5IDcuMjgwMjVDOS4wMDAxOSA3Ljg5NiA4LjgyNDY5IDguNDgzMjUgOC41MTcxOSA4Ljg5Mjc1QzguMjAwNjkgOS4zMTU3NSA3Ljc2MzQ0IDkuNTMwMjUgNy4yMTg5NCA5LjUzMDI1SDMuMDAwMTlWMTEuMDMwMkg3LjIxODk0QzguMjMyMTkgMTEuMDMwMiA5LjExODY5IDEwLjU5MDcgOS43MTcxOSA5Ljc5Mjc1QzEwLjIyMTkgOS4xMiAxMC41MDAyIDguMjI3NSAxMC41MDAyIDcuMjgwMjVDMTAuNTAwMiA1LjQxNjUgOS4zNzI5NCAzLjUzMDI1IDcuMjE4OTQgMy41MzAyNUg0LjA2MDY5TDUuMDMwNDQgMi41NjA1TDMuOTY5OTQgMS41TDEuNzE5OTQgMy43NUMxLjQyNjY5IDQuMDQzMjUgMS40MjY2OSA0LjUxNzI1IDEuNzE5OTQgNC44MTA1TDMuOTY5OTQgNy4wNjA1WiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMDgwIiBoZWlnaHQ9IjEwODAiIHZpZXdCb3g9IjAgMCAxMDgwIDEwODAiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZGVzYz5DcmVhdGVkIHdpdGggRmFicmljLmpzIDUuMi40PC9kZXNjPiA8ZGVmcz4gPC9kZWZzPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDU0MCA1NDApIiBpZD0iZGJkNzU1MWEtNWNhNy00YzVmLWFlOTgtNzE4OGI0YjNlZGViIiA+IDxyZWN0IHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMTsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1kYXNob2Zmc2V0OiAwOyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogNDsgZmlsbDogcmdiKDI1NSwyNTUsMjU1KTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IiB2ZWN0b3ItZWZmZWN0PSJub24tc2NhbGluZy1zdHJva2UiIHg9Ii01NDAiIHk9Ii01NDAiIHJ4PSIwIiByeT0iMCIgd2lkdGg9IjEwODAiIGhlaWdodD0iMTA4MCIgLz4gPC9nPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDU0MCA1NDApIiBpZD0iM2ZlNzcxZGYtYjJiYy00NzRhLWE1NDAtYThlYWM4NTI1NzFlIiA+IDwvZz4gPGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAtOTAgOTAgMCA1NDAgNTQwKSIgPiA8cGF0aCBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtZGFzaG9mZnNldDogMDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDQ7IGZpbGw6IHJnYigyMDksMjEzLDIxOSk7IGZpbGwtcnVsZTogZXZlbm9kZDsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIHRyYW5zbGF0ZSgtNiwgLTYpIiBkPSJNIDAuNzUgMy44NTY2NiBMIDEuNzEzMzUgMi44OTMzMSBMIDYgNy4xNzk0MyBMIDEwLjI4NjcgMi44OTMzMSBMIDExLjI1IDMuODU2NjYgTCA2IDkuMTA2NjYgTCAwLjc1IDMuODU2NjYgWiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPiA8L2c+IDwvc3ZnPg==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic2VhcmNoIj4gPHBhdGggZD0iTTIyLjcwNywyMS4yOTNsLTUuNjgyLTUuNjgyQzE4LjI1OCwxNC4wNzEsMTksMTIuMTIyLDE5LDEwYzAtNC45NjItNC4wMzctOS05LTljLTQuOTYyLDAtOSw0LjAzOC05LDljMCw0Ljk2Myw0LjAzOCw5LDksOSBjMi4xMjIsMCw0LjA3MS0wLjc0Miw1LjYxMS0xLjk3NWw1LjY4Miw1LjY4MkMyMS40ODgsMjIuOTAyLDIxLjc0NCwyMywyMiwyM3MwLjUxMi0wLjA5OCwwLjcwNy0wLjI5MyBDMjMuMDk4LDIyLjMxNiwyMy4wOTgsMjEuNjg0LDIyLjcwNywyMS4yOTN6IE0xMCwxN2MtMy44NiwwLTctMy4xNDEtNy03YzAtMy44NiwzLjE0LTcsNy03YzMuODU5LDAsNywzLjE0LDcsNyBDMTcsMTMuODU5LDEzLjg1OSwxNywxMCwxN3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic3Rhcl9vbiI+IDxwYXRoIGQ9Ik0yMi4xNDMsOC4yNjdsLTEuNTY5LTAuMjI4djBsLTQuODItMC43bC0yLjAxOC00LjA4NGMwLDAsMCwwLDAsMGwtMC44MzktMS42OTljLTAuMzY3LTAuNzQzLTEuNDI2LTAuNzQzLTEuNzkzLDAgbC0wLjgzOSwxLjY5OWMwLDAsMCwwLDAsMEw4LjI0Niw3LjM0TDIuNjc4LDguMTQ4YzAsMCwwLDAsMCwwTDEuODU3LDguMjY3Yy0wLjgyLDAuMTE5LTEuMTQ4LDEuMTI3LTAuNTU0LDEuNzA2bDAuNTk0LDAuNTc5bDAsMCBsNC4wMjgsMy45MjNsLTEuMDIyLDUuOTUyYzAsMCwwLDAsMCwwbC0wLjA2OSwwLjQwMmMtMC4xNCwwLjgxNywwLjcxNywxLjQ0LDEuNDUsMS4wNTRsMC42NDUtMC4zMzhsMCwwTDEyLDE4Ljg4Mmw0LjU5LDIuNDFsMCwwIGwxLjEyNSwwLjU5YzAuNzM0LDAuMzg1LDEuNTkxLTAuMjM4LDEuNDUtMS4wNTVsLTAuMjM0LTEuMzY0bDAsMGwtMC44NTctNC45OTFsMy44MjctMy43MjdsMCwwbDAuNzk2LTAuNzc1IEMyMy4yOTEsOS4zOTQsMjIuOTYzLDguMzg2LDIyLjE0Myw4LjI2N3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0ic2VsZWN0X3RleHQiPiA8cGF0aCBkPSJNMSw5aDJ2MkgxVjl6IE0xLDdoMlY1SDFWN3ogTTUsMjNoMnYtMkg1VjIzeiBNMSwzaDJWMUgxVjN6IE0xLDIzaDJ2LTJIMVYyM3ogTTExLDFIOXYyaDJWMXogTTE1LDFoLTJ2MmgyVjF6IE03LDFINXYyaDIgVjF6IE05LDIzaDJ2LTJIOVYyM3ogTTEsMTloMnYtMkgxVjE5eiBNMSwxNWgydi0ySDFWMTV6IE0yMSwxMWgyVjloLTJWMTF6IE0xMywyM2gydi0yaC0yVjIzeiBNMjEsMTVoMnYtMmgtMlYxNXogTTIxLDdoMlY1aC0yVjd6IE0yMSwxdjJoMlYxSDIxeiBNMjEsMTloMnYtMmgtMlYxOXogTTIxLDIzaDJ2LTJoLTJWMjN6IE0xNywyM2gydi0yaC0yVjIzeiBNMTcsM2gyVjFoLTJWM3ogTTE3Ljg5NSw3LjMwMyBDMTcuOTY1LDcuMjE5LDE4LDcuMDkzLDE4LDYuOTE4VjUuNTA0YzAtMC4xODktMC4wMzUtMC4zMjItMC4xMDUtMC4zOTJDMTcuODE4LDUuMDM1LDE3LjY4NSw1LDE3LjQ5Niw1SDE1LjVoLTAuNzc1aC01LjQ1SDguNSBINi41MDRDNi4zMjksNSw2LjE5Niw1LjAzNSw2LjExOSw1LjExMkM2LjAzNSw1LjE4Miw2LDUuMzE1LDYsNS41MDR2MS40MTRjMCwwLjE3NSwwLjAzNSwwLjMwMSwwLjExOSwwLjM4NSBjMC4wNzcsMC4wODQsMC4yMSwwLjExOSwwLjM4NSwwLjExOUg4LjVoMC43NzVoMS4yMTN2MTEuMDc0YzAsMC4xNzUsMC4wMzUsMC4zMDEsMC4xMTksMC4zODVDMTAuNjg0LDE4Ljk1OCwxMC44MTcsMTksMTAuOTkyLDE5IGgyLjAxNmMwLjE4OSwwLDAuMzIyLTAuMDQyLDAuMzk5LTAuMTE5YzAuMDctMC4wODQsMC4xMDUtMC4yMSwwLjEwNS0wLjM4NVY3LjQyMmgxLjIxM0gxNS41aDEuOTk2IEMxNy42ODUsNy40MjIsMTcuODE4LDcuMzg3LDE3Ljg5NSw3LjMwM3oiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjUgMC43NUMxLjA4NTc5IDAuNzUgMC43NSAxLjA4NTc5IDAuNzUgMS41VjYuNzVDMC43NSA3LjE2NDIxIDEuMDg1NzkgNy41IDEuNSA3LjVIMy4zMjU1Mkw1LjA3OTUxIDEwLjQyMTFMNS4wODA4NyAxMC40MjM0QzUuMzg4MjkgMTAuOTMxMyA1Ljk0NTcyIDExLjI1IDYuNTQ3NSAxMS4yNUM3LjQ5NDIxIDExLjI1IDguMjU3NSAxMC40ODY3IDguMjU3NSA5LjU0VjguMjg3NUg5LjMzNzVDMTAuODAyIDguMjg3NSAxMS44Njg5IDYuOTEzMzYgMTEuNTIwOCA1LjQ5ODMyTDExLjUyMDIgNS40OTYwM0wxMC43NjMxIDIuNDYwMDNMMTAuNzYyOCAyLjQ1ODk2QzEwLjUxNSAxLjQ1ODU2IDkuNjE1OTEgMC43NSA4LjU4IDAuNzVIMy43NUgxLjVaTTIuMjUgNlYyLjI1SDNWNkgyLjI1Wk00LjUgNi41NDIxM0w2LjM2NDEzIDkuNjQ2NjVMNi4zNjQ1NSA5LjY0NzM1QzYuNDAyMjUgOS43MDkwNiA2LjQ3NDU1IDkuNzUgNi41NDc1IDkuNzVDNi42NjU3OSA5Ljc1IDYuNzU3NSA5LjY1ODI5IDYuNzU3NSA5LjU0VjcuNTM3NUM2Ljc1NzUgNy4xMjMyOSA3LjA5MzI5IDYuNzg3NSA3LjUwNzUgNi43ODc1SDkuMzM3NUM5LjgyMjY4IDYuNzg3NSAxMC4xODA2IDYuMzMyMjcgMTAuMDY0NSA1Ljg1NzY1TDEwLjA2NDIgNS44NTY2OUw5LjMwNzI5IDIuODIxNDhMOS4zMDY5MiAyLjgxOTk4QzkuMjI0MzQgMi40ODU5NCA4LjkyMzcyIDIuMjUgOC41OCAyLjI1SDQuNVY2LjU0MjEzWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02LjM2NDU1IDIuMzUyNjRMNi4zNjQxMiAyLjM1MzM1TDQuNSA1LjQ1Nzg3VjkuNzVIOC41OEM4LjkyMzcyIDkuNzUgOS4yMjQzNCA5LjUxNDA2IDkuMzA2OTEgOS4xODAwMkwxMC4wNjQyIDYuMTQzMzJMMTAuMDY0NCA2LjE0MjQ4QzEwLjE4MDcgNS42Njc4MSA5LjgyMjcxIDUuMjEyNSA5LjMzNzUgNS4yMTI1SDcuNTA3NUM3LjA5MzI5IDUuMjEyNSA2Ljc1NzUgNC44NzY3MSA2Ljc1NzUgNC40NjI1VjIuNDZDNi43NTc1IDIuMzQxNzEgNi42NjU3OSAyLjI1IDYuNTQ3NSAyLjI1QzYuNDc0NTUgMi4yNSA2LjQwMjI2IDIuMjkwOTQgNi4zNjQ1NSAyLjM1MjY0Wk0zIDkuNzVWNkgyLjI1VjkuNzVIM1pNMy4zMjU1MiA0LjVMNS4wNzk1MSAxLjU3ODkxTDUuMDgwODcgMS41NzY2NEM1LjM4ODI5IDEuMDY4NzQgNS45NDU3MyAwLjc1IDYuNTQ3NSAwLjc1QzcuNDk0MjIgMC43NSA4LjI1NzUgMS41MTMyOSA4LjI1NzUgMi40NlYzLjcxMjVIOS4zMzc1QzEwLjgwMiAzLjcxMjUgMTEuODY4OSA1LjA4NjY2IDExLjUyMDggNi41MDE2OUwxMS41MjAyIDYuNTAzOTlMMTAuNzYzMSA5LjUzOTk3TDEwLjc2MjkgOS41NDA3NkMxMC41MTUyIDEwLjU0MTMgOS42MTYwMSAxMS4yNSA4LjU4IDExLjI1SDEuNUMxLjA4NTc5IDExLjI1IDAuNzUgMTAuOTE0MiAwLjc1IDEwLjVWNS4yNUMwLjc1IDQuODM1NzkgMS4wODU3OSA0LjUgMS41IDQuNUgzLjMyNTUyWiIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iY2FyZXRfdXAiPiA8cGF0aCBkPSJNMTcsMTVjLTAuMjU2LDAtMC41MTItMC4wOTgtMC43MDctMC4yOTNMMTIsMTAuNDE0bC00LjI5Myw0LjI5M2MtMC4zOTEsMC4zOTEtMS4wMjMsMC4zOTEtMS40MTQsMHMtMC4zOTEtMS4wMjMsMC0xLjQxNCBsNS01YzAuMzkxLTAuMzkxLDEuMDIzLTAuMzkxLDEuNDE0LDBsNSw1YzAuMzkxLDAuMzkxLDAuMzkxLDEuMDIzLDAsMS40MTRDMTcuNTEyLDE0LjkwMiwxNy4yNTYsMTUsMTcsMTV6Ii8+IDwvZz4gPGcgaWQ9IkxheWVyXzEiPiA8L2c+IDwvc3ZnPiA=\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0icHJvZmlsZSI+IDxwYXRoIGQ9Ik03LDZjMC0yLjc2MSwyLjIzOS01LDUtNXM1LDIuMjM5LDUsNXMtMi4yMzksNS01LDVTNyw4Ljc2MSw3LDZ6IE0yMS45NDgsMTguNjg0QzIwLjg2OCwxNS40NDMsMTcuMDE1LDEyLDEyLDEyIHMtOC44NjksMy40NDMtOS45NDksNi42ODRjLTAuMTIsMC4zNTktMC4wMjYsMC43NTYsMC4yNDIsMS4wMjNDNC40MTcsMjEuODMsNy44NjQsMjMsMTIsMjNjNC4xMzcsMCw3LjU4NC0xLjE3LDkuNzA3LTMuMjkzIEMyMS45NzUsMTkuNDM5LDIyLjA2OCwxOS4wNDMsMjEuOTQ4LDE4LjY4NHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","module.exports = \"data:image/svg+xml;base64,PCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgLS0+IDxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0id2FybmluZyI+IDxwYXRoIGQ9Ik0yMS44NTcsMTguNDgybC05LTE1LjAzYy0wLjM2MS0wLjYwNC0xLjM1NC0wLjYwNC0xLjcxNSwwbC05LDE1LjAzYy0wLjE4NiwwLjMwOS0wLjE5LDAuNjk1LTAuMDEzLDEuMDEgQzIuMzA3LDE5LjgwNiwyLjY0LDIwLDMsMjBoMThjMC4zNiwwLDAuNjkyLTAuMTk0LDAuODctMC41MDhDMjIuMDQ4LDE5LjE3NywyMi4wNDMsMTguNzkyLDIxLjg1NywxOC40ODJ6IE0xMiwxOCBjLTAuNTUyLDAtMS0wLjQ0OC0xLTFjMC0wLjU1MiwwLjQ0OC0xLDEtMXMxLDAuNDQ4LDEsMUMxMywxNy41NTIsMTIuNTUyLDE4LDEyLDE4eiBNMTMsMTRjMCwwLjU1My0wLjQ0OCwxLTEsMXMtMS0wLjQ0Ny0xLTFWOCBjMC0wLjU1MiwwLjQ0OC0xLDEtMXMxLDAuNDQ4LDEsMVYxNHoiLz4gPC9nPiA8ZyBpZD0iTGF5ZXJfMSI+IDwvZz4gPC9zdmc+IA==\"","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nexport interface ButtonProps {\n classNames?: string[];\n attributes?: Record<string, string>;\n icon?: HTMLElement | ExtendedHTMLElement | string;\n label?: HTMLElement | ExtendedHTMLElement | string;\n children?: Array<HTMLElement | ExtendedHTMLElement | string>;\n primary?: boolean;\n additionalEvents?: Record<string, (event?: any) => any>;\n onClick: (e: Event) => void;\n}\nexport class Button {\n render: ExtendedHTMLElement;\n constructor (props: ButtonProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'button',\n classNames: [\n 'mynah-button',\n ...(props.primary === false ? [ 'mynah-button-secondary' ] : []),\n ...(props.classNames !== undefined ? props.classNames : []),\n ],\n attributes: { ...props.attributes },\n events: {\n ...props.additionalEvents,\n click: props.onClick,\n },\n children: [\n ...(props.icon !== undefined ? [ props.icon ] : []),\n ...(props.label !== undefined ? [ { type: 'span', classNames: [ 'mynah-button-label' ], children: [ props.label ] } ] : []),\n ...(props.children ?? []),\n ],\n });\n }\n\n updateLabel = (label: HTMLElement | ExtendedHTMLElement | string): void => {\n (this.render.querySelector('.mynah-button-label') as ExtendedHTMLElement).replaceWith(\n DomBuilder.getInstance().build({ type: 'span', classNames: [ 'mynah-button-label' ], children: [ label ] })\n );\n };\n\n setEnabled = (enabled: boolean): void => {\n if (enabled) {\n this.render.removeAttribute('disabled');\n } else {\n this.render.setAttribute('disabled', 'disabled');\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n OnCopiedToClipboardFunction,\n OnInsertToCursorPositionFunction,\n ReferenceTrackerInformation,\n} from '../../static';\nimport { marked } from 'marked';\nimport unescapeHTML from 'unescape-html';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { SyntaxHighlighter } from '../syntax-highlighter';\nimport { generateUID } from '../../helper/guid';\n\nconst PREVIEW_DELAY = 500;\nexport const highlightersWithTooltip = {\n start: {\n markupStart: '<mark ',\n markupAttributes: (markerIndex: string) => `marker-index=${markerIndex}`,\n markupEnd: ' reference-tracker>'\n },\n end: {\n markup: '</mark>',\n },\n};\n\nexport interface CardBodyProps {\n body: string;\n children?: Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject>;\n highlightRangeWithTooltip?: ReferenceTrackerInformation[];\n onLinkClick?: (url: string, e: MouseEvent) => void;\n onCopiedToClipboard?: OnCopiedToClipboardFunction;\n onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n}\nexport class CardBody {\n render: ExtendedHTMLElement;\n props: CardBodyProps;\n private highlightRangeTooltip: Overlay | null;\n private highlightRangeTooltipTimeout: ReturnType<typeof setTimeout>;\n constructor (props: CardBodyProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-body' ],\n children: [\n ...this.getContentBodyChildren(this.props),\n ...(this.props.children ?? [])\n ],\n });\n\n Array.from(this.render.querySelectorAll('mark[reference-tracker]')).forEach((highlightRangeElement) => {\n highlightRangeElement.addEventListener('mouseenter', (e) => {\n const index = parseInt((e.target as HTMLElement).getAttribute('marker-index') ?? '0');\n if (props.highlightRangeWithTooltip?.[index] !== undefined) {\n this.showHighlightRangeTooltip(e as MouseEvent, props.highlightRangeWithTooltip[index].information);\n }\n });\n highlightRangeElement.addEventListener('mouseleave', this.hideHighlightRangeTooltip);\n });\n }\n\n private readonly processNode = (node: HTMLElement, contentString: string, matchingLanguage?: string): HTMLElement => {\n const elementFromNode: HTMLElement = node;\n if (elementFromNode.tagName?.toLowerCase() === 'a') {\n const url = elementFromNode.getAttribute('href') ?? '';\n return DomBuilder.getInstance().build(\n {\n type: 'a',\n events: {\n click: (e: MouseEvent) => {\n if (this.props.onLinkClick !== undefined) {\n this.props.onLinkClick(url, e);\n }\n },\n },\n attributes: { href: elementFromNode.getAttribute('href') ?? '', target: '_blank' },\n innerHTML: elementFromNode.innerHTML,\n });\n }\n if ((elementFromNode.tagName?.toLowerCase() === 'pre' && elementFromNode.querySelector('code') !== null) ||\n elementFromNode.tagName?.toLowerCase() === 'code'\n ) {\n const isBlockCode = elementFromNode.tagName?.toLowerCase() === 'pre' || elementFromNode.innerHTML.match(/\\r|\\n/) !== null;\n const codeElement = (elementFromNode.tagName?.toLowerCase() === 'pre' ? elementFromNode.querySelector('code') : elementFromNode);\n const snippetLanguage = Array.from(codeElement?.classList ?? []).find(className => className.match('language-'))?.replace('language-', '');\n const codeString = codeElement?.innerHTML ?? '';\n\n const highlighter = new SyntaxHighlighter({\n codeStringWithMarkup: unescapeHTML(codeString),\n language: snippetLanguage?.trim() !== '' ? snippetLanguage : matchingLanguage,\n keepHighlights: true,\n showCopyOptions: isBlockCode,\n block: isBlockCode,\n onCopiedToClipboard: (type, text) => {\n if (this.props.onCopiedToClipboard != null) {\n this.props.onCopiedToClipboard(type, text, this.getReferenceTrackerInformationFromElement(highlighter));\n }\n },\n onInsertToCursorPosition: (type, text) => {\n if (this.props.onInsertToCursorPosition != null) {\n this.props.onInsertToCursorPosition(type, text, this.getReferenceTrackerInformationFromElement(highlighter));\n }\n }\n }).render;\n return highlighter;\n }\n\n elementFromNode.childNodes.forEach((child) => {\n elementFromNode.replaceChild(this.processNode(child as HTMLElement, contentString), child);\n });\n return elementFromNode;\n };\n\n private readonly getReferenceTrackerInformationFromElement = (element: ExtendedHTMLElement | HTMLElement): ReferenceTrackerInformation[] => {\n // cloning the element\n // since we're gonna inject some unique items\n // to get the start indexes\n const codeElement = element.querySelector('code')?.cloneNode(true) as HTMLElement;\n\n if (codeElement !== undefined) {\n const markerElements = codeElement.querySelectorAll('mark[reference-tracker]');\n if (markerElements.length > 0) {\n return (Array.from(markerElements) as HTMLElement[]).map((mark: HTMLElement, index: number) => {\n // Generating a unique identifier element\n // to get the start index of it inside the code block\n const startIndexText = `__MARK${index}_${generateUID()}_START__`;\n const startIndexTextElement = DomBuilder.getInstance().build({\n type: 'span',\n innerHTML: startIndexText\n });\n // Injecting that unique identifier for the start index inside the current mark element\n mark.insertAdjacentElement('afterbegin', startIndexTextElement);\n // finding that text inside the code element's inner text\n // to get the startIndex\n const startIndex = codeElement.innerText.indexOf(startIndexText);\n\n // when we get the start index, we need to remove the element\n // to get the next one's start index properly\n // we don't need to calculate the end index because it will be available\n startIndexTextElement.remove();\n\n // find the original reference tracker information\n const originalRefTrackerInfo = this.props.highlightRangeWithTooltip?.[parseInt(mark.getAttribute('marker-index') ?? '0')];\n return {\n ...originalRefTrackerInfo,\n recommendationContentSpan: {\n start: startIndex,\n end: startIndex + (\n (originalRefTrackerInfo?.recommendationContentSpan.end ?? 0) -\n (originalRefTrackerInfo?.recommendationContentSpan.start ?? 0))\n }\n };\n }) as ReferenceTrackerInformation[];\n }\n }\n\n return [];\n };\n\n private readonly showHighlightRangeTooltip = (e: MouseEvent, tooltipText: string): void => {\n clearTimeout(this.highlightRangeTooltipTimeout);\n this.highlightRangeTooltipTimeout = setTimeout(() => {\n this.highlightRangeTooltip = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: (e.currentTarget ?? e.target) as HTMLElement,\n removeOtherOverlays: true,\n dimOutside: false,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-ui-syntax-highlighter-highlight-tooltip' ],\n children: [\n new CardBody({\n body: tooltipText,\n }).render\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n };\n\n private readonly hideHighlightRangeTooltip = (): void => {\n clearTimeout(this.highlightRangeTooltipTimeout);\n if (this.highlightRangeTooltip !== null) {\n this.highlightRangeTooltip?.close();\n this.highlightRangeTooltip = null;\n }\n };\n\n private readonly getContentBodyChildren = (props: CardBodyProps): Array<HTMLElement | ExtendedHTMLElement | DomBuilderObject> => {\n let incomingBody = props.body;\n if (props.body !== undefined && props.highlightRangeWithTooltip !== undefined && props.highlightRangeWithTooltip.length > 0) {\n props.highlightRangeWithTooltip.forEach((highlightRangeWithTooltip, index) => {\n if (incomingBody !== undefined) {\n const generatedStartMarkup = `${highlightersWithTooltip.start.markupStart}${highlightersWithTooltip.start.markupAttributes(index.toString())}${highlightersWithTooltip.start.markupEnd}`;\n let calculatedStartIndex = (highlightRangeWithTooltip.recommendationContentSpan.start + (index * (generatedStartMarkup.length + highlightersWithTooltip.end.markup.length)));\n let calculatedEndIndex = (calculatedStartIndex + generatedStartMarkup.length - highlightRangeWithTooltip.recommendationContentSpan.start) + highlightRangeWithTooltip.recommendationContentSpan.end;\n if (calculatedEndIndex > incomingBody.length) {\n calculatedStartIndex = incomingBody.length - 1;\n }\n if (calculatedEndIndex > incomingBody.length) {\n calculatedEndIndex = incomingBody.length - 1;\n }\n incomingBody = incomingBody.slice(0, calculatedStartIndex) + generatedStartMarkup + incomingBody.slice(calculatedStartIndex);\n incomingBody = incomingBody.slice(0, calculatedEndIndex) + highlightersWithTooltip.end.markup + incomingBody.slice(calculatedEndIndex);\n }\n });\n }\n\n return [\n ...(Array.from(\n DomBuilder.getInstance().build({\n type: 'div',\n innerHTML: `${marked((incomingBody), { breaks: true })}`,\n }).childNodes\n ).map(node => {\n const processedNode = this.processNode(node as HTMLElement, props.body);\n if (processedNode.querySelectorAll !== undefined) {\n Array.from(processedNode.querySelectorAll('*:empty')).forEach(emptyElement => { emptyElement.remove(); });\n }\n return processedNode;\n }))\n ];\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { EngagementType } from '../../static';\n\n/**\n * We'll not consider it as an engagement if the total spend time is lower than below constant and won't trigger the event\n */\nconst ENGAGEMENT_DURATION_LIMIT = 3000;\n\n/**\n * This 6(px) and 300(ms) are coming from a behavioral research and browser reaction to input devices to count the action as a mouse movement or a click event\n */\nconst ENGAGEMENT_MIN_SELECTION_DISTANCE = 6;\nconst ENGAGEMENT_MIN_CLICK_DURATION = 300;\nexport interface CardProps extends Partial<DomBuilderObject> {\n border?: boolean;\n background?: boolean;\n padding?: 'small' | 'medium' | 'large' | 'none';\n children?: Array<HTMLElement | ExtendedHTMLElement | string>;\n onCardEngaged?: (engagement: {\n engagementDurationTillTrigger: number;\n engagementType: EngagementType;\n totalMouseDistanceTraveled: {\n x: number;\n y: number;\n };\n selectionDistanceTraveled?: { x: number; y: number; selectedText?: string | undefined };\n }) => void;\n}\nexport class Card {\n private readonly props: CardProps;\n private engagementStartTime: number = -1;\n private totalMouseDistanceTraveled: { x: number; y: number } = { x: 0, y: 0 };\n private previousMousePosition!: { x: number; y: number };\n private mouseDownInfo!: { x: number; y: number; time: number };\n render: ExtendedHTMLElement;\n constructor (props: CardProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [\n 'mynah-card',\n `padding-${props.padding ?? 'large'}`,\n props.border !== false ? 'border' : '',\n props.background !== false ? 'background' : '',\n ...(props.classNames ?? [])\n ],\n persistent: props.persistent,\n innerHTML: props.innerHTML,\n children: [\n ...(props.children ?? []),\n ],\n events: {\n ...props.events,\n ...(props.onCardEngaged !== undefined\n ? {\n mouseenter: e => {\n if (this.engagementStartTime === -1) {\n this.engagementStartTime = new Date().getTime();\n this.previousMousePosition = { x: e.clientX, y: e.clientY };\n this.totalMouseDistanceTraveled = { x: 0, y: 0 };\n }\n },\n mousemove: e => {\n if (this.engagementStartTime === -1) {\n this.engagementStartTime = new Date().getTime();\n }\n this.totalMouseDistanceTraveled = {\n x:\n this.totalMouseDistanceTraveled.x +\n Math.abs(e.clientX - this.previousMousePosition.x),\n y:\n this.totalMouseDistanceTraveled.y +\n Math.abs(e.clientY - this.previousMousePosition.y),\n };\n this.previousMousePosition = { x: e.clientX, y: e.clientY };\n },\n mousedown: e => {\n this.mouseDownInfo = { x: e.clientX, y: e.clientY, time: new Date().getTime() };\n },\n mouseup: e => {\n const mouseUpInfo = { x: e.clientX, y: e.clientY, time: new Date().getTime() };\n if (\n this.mouseDownInfo !== undefined && // in case of down is prevented by default by some listener\n (Math.abs(this.mouseDownInfo.x - mouseUpInfo.x) > ENGAGEMENT_MIN_SELECTION_DISTANCE ||\n Math.abs(this.mouseDownInfo.y - mouseUpInfo.y) >\n ENGAGEMENT_MIN_SELECTION_DISTANCE) &&\n mouseUpInfo.time - this.mouseDownInfo.time > ENGAGEMENT_MIN_CLICK_DURATION\n ) {\n this.handleEngagement({\n x: Math.abs(this.mouseDownInfo.x - mouseUpInfo.x),\n y: Math.abs(this.mouseDownInfo.y - mouseUpInfo.y),\n selectedText: window?.getSelection()?.toString(),\n });\n }\n },\n mouseleave: () => {\n const engagementEndTime = new Date().getTime();\n if (this.engagementStartTime !== -1 && engagementEndTime - this.engagementStartTime > ENGAGEMENT_DURATION_LIMIT) {\n this.handleEngagement();\n } else {\n this.resetEngagement();\n }\n },\n }\n : {})\n },\n attributes: props.attributes\n });\n }\n\n private readonly resetEngagement = (): void => {\n this.engagementStartTime = -1;\n this.totalMouseDistanceTraveled = { x: 0, y: 0 };\n this.previousMousePosition = { x: 0, y: 0 };\n this.mouseDownInfo = { x: 0, y: 0, time: -1 };\n };\n\n private readonly handleEngagement = (interactionDistanceTraveled?: {\n x: number;\n y: number;\n selectedText?: string;\n }): void => {\n if (this.props.onCardEngaged !== undefined) {\n this.props.onCardEngaged({\n engagementDurationTillTrigger: new Date().getTime() - this.engagementStartTime,\n engagementType:\n interactionDistanceTraveled !== undefined ? EngagementType.INTERACTION : EngagementType.TIME,\n totalMouseDistanceTraveled: this.totalMouseDistanceTraveled,\n selectionDistanceTraveled:\n Boolean(interactionDistanceTraveled?.x ?? 0) && Boolean(interactionDistanceTraveled?.y)\n ? interactionDistanceTraveled\n : undefined,\n });\n }\n this.resetEngagement();\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport { ChatItem, ChatItemType, MynahEventNames } from '../../static';\nimport { Card } from '../card/card';\nimport { CardBody } from '../card/card-body';\nimport { Icon, MynahIcons } from '../icon';\nimport { ChatItemFollowUpContainer } from './chat-item-followup';\nimport { ChatItemSourceLinksContainer } from './chat-item-source-links';\nimport { ChatItemRelevanceVote } from './chat-item-relevance-vote';\nimport { ChatItemTreeViewWrapper } from './chat-item-tree-view-wrapper';\n\nconst MAX_HEIGHT_TRESHOLD = 100;\nexport interface ChatItemCardProps {\n tabId: string;\n chatItem: ChatItem;\n}\nexport class ChatItemCard {\n readonly props: ChatItemCardProps;\n render: ExtendedHTMLElement;\n contentBody: CardBody;\n chatAvatar: ExtendedHTMLElement;\n private updateTimer: ReturnType<typeof setTimeout>;\n constructor (props: ChatItemCardProps) {\n this.props = props;\n this.chatAvatar = this.getChatAvatar();\n MynahUITabsStore.getInstance()\n .getTabDataStore(this.props.tabId)\n .subscribe('showChatAvatars', (value: boolean) => {\n if (value) {\n this.chatAvatar = this.getChatAvatar();\n this.render.insertChild('afterbegin', this.chatAvatar);\n } else {\n this.chatAvatar.remove();\n }\n });\n this.render = this.generateCard();\n }\n\n private readonly generateCard = (): ExtendedHTMLElement => {\n const generatedCard = DomBuilder.getInstance().build({\n type: 'div',\n classNames: this.getCardClasses(),\n attributes: {\n messageId: this.props.chatItem.messageId ?? 'unknown',\n },\n children: [\n ...this.getCardContent(),\n DomBuilder.getInstance().build({\n type: 'span',\n persistent: true,\n classNames: [ 'mynah-chat-item-spacer' ],\n }),\n ...(this.props.chatItem.type === ChatItemType.ANSWER_STREAM\n ? [\n DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-chat-items-spinner' ],\n children: [ { type: 'span' }, { type: 'span' }, { type: 'span' } ],\n }),\n ]\n : []),\n ],\n });\n\n setTimeout(() => {\n generatedCard.addClass('reveal');\n }, 50);\n\n return generatedCard;\n };\n\n private readonly getCardClasses = (): string[] => {\n const emptyCheckDom = DomBuilder.getInstance().build({\n type: 'span',\n innerHTML: typeof this.props.chatItem.body === 'string' ? this.props.chatItem.body : '',\n });\n const isChatItemEmpty = emptyCheckDom.innerText.trim() === '';\n const isNoContent =\n isChatItemEmpty &&\n this.props.chatItem.followUp === undefined &&\n this.props.chatItem.relatedContent === undefined &&\n this.props.chatItem.type === ChatItemType.ANSWER;\n return [\n 'mynah-chat-item-card',\n `mynah-chat-item-${this.props.chatItem.type ?? ChatItemType.ANSWER}`,\n ...(isChatItemEmpty ? [ 'mynah-chat-item-empty' ] : []),\n ...(isNoContent ? [ 'mynah-chat-item-no-content' ] : []),\n ];\n };\n\n private readonly getCardContent = (): Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject> => {\n return [\n ...(MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('showChatAvatars') === true ? [ this.chatAvatar ] : []),\n ...(this.props.chatItem.body !== undefined || this.props.chatItem.fileList !== undefined\n ? [\n new Card({\n onCardEngaged: engagement => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_ITEM_ENGAGEMENT, {\n engagement,\n messageId: this.props.chatItem.messageId,\n });\n },\n children: [\n ((): ExtendedHTMLElement => {\n const commonBodyProps = {\n body: this.props.chatItem.body ?? '',\n onLinkClick: (url: string, e: MouseEvent) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.LINK_CLICK, {\n messageId: this.props.chatItem.messageId,\n link: url,\n event: e,\n });\n }\n };\n if (this.props.chatItem.type === ChatItemType.CODE_RESULT && this.props.chatItem.fileList !== undefined) {\n const { filePaths = [], deletedFiles = [] } = this.props.chatItem.fileList;\n const referenceSuggestionLabel = this.props.chatItem.body ?? '';\n this.contentBody = new CardBody({\n ...commonBodyProps,\n ...{\n body: '' // Reset the body, since the tree view has the fully rendered element\n },\n children: [\n new ChatItemTreeViewWrapper({\n tabId: this.props.tabId,\n messageId: this.props.chatItem.messageId ?? '',\n files: filePaths,\n deletedFiles,\n references: this.props.chatItem.codeReference ?? [],\n referenceSuggestionLabel\n }).render\n ],\n });\n } else {\n this.contentBody = new CardBody({\n ...commonBodyProps,\n highlightRangeWithTooltip: this.props.chatItem.codeReference,\n children:\n this.props.chatItem.relatedContent !== undefined\n ? [\n new ChatItemSourceLinksContainer({\n messageId: this.props.chatItem.messageId ?? 'unknown',\n tabId: this.props.tabId,\n relatedContent: this.props.chatItem.relatedContent?.content,\n title: this.props.chatItem.relatedContent?.title,\n }).render,\n ]\n : [],\n onCopiedToClipboard: (type, text, referenceTrackerInformation) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.COPY_CODE_TO_CLIPBOARD, {\n messageId: this.props.chatItem.messageId,\n type,\n text,\n referenceTrackerInformation,\n });\n },\n onInsertToCursorPosition: (type, text, referenceTrackerInformation) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.INSERT_CODE_TO_CURSOR_POSITION, {\n messageId: this.props.chatItem.messageId,\n type,\n text,\n referenceTrackerInformation,\n });\n },\n });\n }\n return this.contentBody.render;\n })(),\n ...(this.props.chatItem.canBeVoted === true && this.props.chatItem.messageId !== undefined\n ? [ new ChatItemRelevanceVote({ tabId: this.props.tabId, messageId: this.props.chatItem.messageId }).render ]\n : []),\n ],\n }).render,\n ]\n : ''),\n this.props.chatItem.followUp?.text !== undefined ? new ChatItemFollowUpContainer({ tabId: this.props.tabId, chatItem: this.props.chatItem }).render : '',\n ];\n };\n\n private readonly getChatAvatar = (): ExtendedHTMLElement =>\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-icon-wrapper' ],\n children: [ new Icon({ icon: this.props.chatItem.type === ChatItemType.PROMPT ? MynahIcons.USER : MynahIcons.MYNAH }).render ],\n });\n\n public readonly updateCard = (updateWith: Partial<ChatItem>): void => {\n this.props.chatItem = {\n ...this.props.chatItem,\n ...updateWith,\n };\n if (this.updateTimer !== undefined) {\n clearTimeout(this.updateTimer);\n }\n this.render.style.maxHeight = `${this.render.getBoundingClientRect().height + MAX_HEIGHT_TRESHOLD}px`;\n this.render.update({\n classNames: [ ...this.getCardClasses(), 'reveal' ],\n children: this.getCardContent(),\n });\n setTimeout(() => {\n this.render.style.maxHeight = `${\n (this.render.querySelector('.mynah-card-body') as HTMLElement).scrollHeight + MAX_HEIGHT_TRESHOLD\n }px`;\n this.updateTimer = setTimeout(() => {\n this.render.style.maxHeight = 'initial';\n }, 1000);\n }, 10);\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { marked } from 'marked';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { ChatItem, MynahEventNames } from '../../static';\nimport { Icon } from '../icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\n\nconst PREVIEW_DELAY = 250;\nconst MAX_LENGTH = 40;\nexport interface ChatItemFollowUpProps {tabId: string; chatItem: ChatItem}\nexport class ChatItemFollowUpContainer {\n private readonly props: ChatItemFollowUpProps;\n render: ExtendedHTMLElement;\n private followupTooltip: Overlay | null;\n private followupTooltipTimeout: ReturnType<typeof setTimeout>;\n constructor (props: ChatItemFollowUpProps) {\n this.props = props;\n this.props.chatItem = props.chatItem;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question', 'mynah-chat-item-temporary-element' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question-text' ],\n children: [ this.props.chatItem.followUp?.text ?? '' ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question-options-wrapper' ],\n children: this.props.chatItem.followUp?.options?.map(followUpOption => (\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-followup-question-option', `mynah-chat-item-followup-question-option-status-${followUpOption.status ?? 'default'}` ],\n children: [\n ...(followUpOption.icon !== undefined\n ? [\n new Icon({ icon: followUpOption.icon }).render\n ]\n : []),\n followUpOption.pillText.length > MAX_LENGTH ? `${followUpOption.pillText.substring(0, MAX_LENGTH - 3)}...` : followUpOption.pillText\n ],\n events: {\n click: (e) => {\n this.hideCroppedFollowupText();\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.FOLLOW_UP_CLICKED, { tabId: this.props.tabId, messageId: this.props.chatItem.messageId, followUpOption });\n if ((this.render.parentElement as ExtendedHTMLElement)?.hasClass('mynah-chat-item-empty')) {\n this.render.parentElement?.remove();\n };\n },\n ...(followUpOption.pillText.length > MAX_LENGTH\n ? {\n mouseover: (e) => {\n this.showCroppedFollowupText(e, followUpOption.pillText);\n },\n mouseleave: this.hideCroppedFollowupText\n }\n : {})\n }\n }\n )) as DomBuilderObject[]\n },\n ]\n });\n\n Array.from(this.render.getElementsByClassName('mynah-chat-item-followup-question-option')).forEach(option => {\n option.innerHTML = marked(option.innerHTML, { breaks: true }).replace('<p>', '').replace('</p>', '');\n });\n Array.from(this.render.getElementsByTagName('a')).forEach(a => {\n const url = a.href;\n\n a.onclick = (event?: MouseEvent) => {\n MynahUIGlobalEvents\n .getInstance()\n .dispatch(MynahEventNames.LINK_CLICK, {\n tabId: this.props.tabId,\n messageId: this.props.chatItem.messageId,\n link: url,\n event,\n });\n };\n });\n }\n\n private readonly showCroppedFollowupText = (e: MouseEvent, content: string): void => {\n if (content.trim() !== undefined) {\n clearTimeout(this.followupTooltipTimeout);\n this.followupTooltipTimeout = setTimeout(() => {\n const elm: HTMLElement = e.target as HTMLElement;\n this.followupTooltip = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-content' ],\n innerHTML: marked(content, { breaks: true }).replace('<p>', '').replace('</p>', '')\n }\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n }\n };\n\n private readonly hideCroppedFollowupText = (): void => {\n clearTimeout(this.followupTooltipTimeout);\n if (this.followupTooltip !== null) {\n this.followupTooltip?.close();\n this.followupTooltip = null;\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FeedbackPayload, MynahEventNames, RelevancyVoteType } from '../../static';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { Icon, MynahIcons } from '../icon';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { Button } from '../button';\nimport { Config } from '../../helper/config';\n\nconst THANKS_REMOVAL_DURATION = 3500;\nexport interface ChatItemRelevanceVoteProps {\n tabId: string;\n messageId: string;\n}\nexport class ChatItemRelevanceVote {\n private readonly votingId: string;\n private sendFeedbackListenerId: string | undefined;\n render: ExtendedHTMLElement;\n props: ChatItemRelevanceVoteProps;\n constructor (props: ChatItemRelevanceVoteProps) {\n this.props = props;\n this.votingId = `${this.props.tabId}-${this.props.messageId}`;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-card-votes-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-card-vote' ],\n children: [\n {\n type: 'input',\n events: {\n change: (e: Event) => {\n this.handleVoteChange(RelevancyVoteType.UP);\n },\n },\n attributes: {\n type: 'radio',\n id: `${this.votingId}-vote-up`,\n name: `${this.votingId}-vote`,\n value: 'up',\n },\n classNames: [ 'mynah-vote-radio', 'mynah-vote-up-radio' ],\n },\n {\n type: 'input',\n events: {\n change: (e: Event) => {\n this.handleVoteChange(RelevancyVoteType.DOWN);\n },\n },\n attributes: {\n type: 'radio',\n id: `${this.votingId}-vote-down`,\n name: `${this.votingId}-vote`,\n value: 'down',\n },\n classNames: [ 'mynah-vote-radio', 'mynah-vote-down-radio' ],\n },\n {\n type: 'label',\n attributes: { for: `${this.votingId}-vote-up` },\n classNames: [ 'mynah-vote-label', 'mynah-vote-up' ],\n children: [ new Icon({ icon: MynahIcons.THUMBS_UP }).render ],\n },\n {\n type: 'label',\n attributes: { for: `${this.votingId}-vote-down` },\n classNames: [ 'mynah-vote-label', 'mynah-vote-down' ],\n children: [ new Icon({ icon: MynahIcons.THUMBS_DOWN }).render ],\n },\n ],\n },\n ],\n });\n }\n\n private readonly handleVoteChange = (vote: RelevancyVoteType): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CARD_VOTE, { messageId: this.props.messageId, tabId: this.props.tabId, vote });\n const newChildren = [\n Config.getInstance().config.texts.feedbackThanks,\n ...(vote === RelevancyVoteType.DOWN\n ? [\n new Button({\n label: Config.getInstance().config.texts.feedbackReportButtonLabel,\n onClick: () => {\n if (this.sendFeedbackListenerId === undefined) {\n this.sendFeedbackListenerId = MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FEEDBACK_SET, (data: FeedbackPayload) => {\n if (data.messageId === this.props.messageId && data.tabId === this.props.tabId) {\n MynahUIGlobalEvents.getInstance().removeListener(MynahEventNames.FEEDBACK_SET, this.sendFeedbackListenerId as string);\n this.render.remove();\n }\n });\n }\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SHOW_FEEDBACK_FORM, { tabId: this.props.tabId, messageId: this.props.messageId });\n },\n primary: false\n }).render\n ]\n : [])\n ];\n this.render.replaceChildren(...newChildren);\n\n if (vote === RelevancyVoteType.UP) {\n setTimeout(() => {\n this.render.remove();\n }, THANKS_REMOVAL_DURATION);\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUIGlobalEvents } from '../../helper/events';\nimport { MynahEventNames, SourceLink } from '../../static';\nimport { Button } from '../button';\nimport { Card } from '../card/card';\nimport { Icon, MynahIcons } from '../icon';\nimport { SourceLinkHeader } from '../source-link/source-link-header';\n\nconst MAX_ITEMS = 1;\nexport interface ChatItemSourceLinksContainerProps {\n tabId: string;\n messageId: string;\n title?: string;\n relatedContent?: SourceLink[];\n}\nexport class ChatItemSourceLinksContainer {\n private readonly props: ChatItemSourceLinksContainerProps;\n private readonly showMoreButtonBlock: Button;\n render: ExtendedHTMLElement;\n chatAvatar: ExtendedHTMLElement;\n constructor (props: ChatItemSourceLinksContainerProps) {\n this.props = props;\n this.showMoreButtonBlock = new Button({\n classNames: [ 'mynah-chat-item-card-related-content-show-more' ],\n primary: false,\n icon: new Icon({ icon: MynahIcons.DOWN_OPEN }).render,\n onClick: () => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SHOW_MORE_WEB_RESULTS_CLICK, { messageId: this.props.messageId });\n this.showMoreButtonBlock.render.remove();\n (this.render).addClass('expanded');\n },\n label: 'Show more',\n });\n\n if (this.props.relatedContent !== undefined) {\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-related-content',\n this.props.relatedContent !== undefined && this.props.relatedContent.length <= MAX_ITEMS ? 'expanded' : '' ],\n children: [\n ...(this.props.title !== undefined\n ? [ {\n type: 'span',\n classNames: [ 'mynah-chat-item-card-related-content-title' ],\n children: [ this.props.title ],\n } ]\n : []),\n ...this.props.relatedContent.map(sourceLink => DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-card-related-content-item' ],\n children: [\n new Card({\n background: false,\n border: false,\n padding: 'none',\n children: [\n new SourceLinkHeader({\n sourceLink,\n showCardOnHover: true,\n onClick: (e) => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.SOURCE_LINK_CLICK, {\n messageId: this.props.messageId,\n link: sourceLink.url,\n event: e\n });\n }\n }).render\n ]\n }).render\n ]\n })),\n this.showMoreButtonBlock.render\n ]\n });\n }\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { ReferenceTrackerInformation } from '../../static';\nimport { CardBody } from '../card/card-body';\nimport { CollapsibleContent } from '../collapsible-content';\n\nexport interface ChatItemTreeViewLicenseProps {\n referenceSuggestionLabel: string;\n references: ReferenceTrackerInformation[];\n}\n\nexport class ChatItemTreeViewLicense {\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewLicenseProps) {\n // If no references are found then just return an empty div\n if (props.references.length === 0) {\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'empty' ]\n });\n return;\n }\n\n this.render = new CollapsibleContent({\n title: Config.getInstance().config.texts.codeSuggestionWithReferenceTitle,\n classNames: [ 'mynah-chat-item-tree-view-license' ],\n children: [ this.buildDropdownChildren(props.references) ]\n }).render;\n }\n\n private readonly buildDropdownChildren = (references: ReferenceTrackerInformation[]): ExtendedHTMLElement => DomBuilder.getInstance().build({\n type: 'ul',\n classNames: [ 'mynah-chat-item-tree-view-license-container' ],\n children: references.map(ref => ({\n type: 'li',\n children: [\n new CardBody({\n body: ref.information\n }).render\n ]\n })),\n });\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { fileListToTree } from '../../helper/file-tree';\nimport { ReferenceTrackerInformation } from '../../static';\nimport { ChatItemTreeView } from './chat-item-tree-view';\nimport { ChatItemTreeViewLicense } from './chat-item-tree-view-license';\n\nexport interface ChatItemTreeViewWrapperProps {\n tabId: string;\n messageId: string;\n files: string[];\n deletedFiles: string[];\n referenceSuggestionLabel: string;\n references: ReferenceTrackerInformation[];\n}\n\nexport class ChatItemTreeViewWrapper {\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewWrapperProps) {\n const license = new ChatItemTreeViewLicense({\n referenceSuggestionLabel: props.referenceSuggestionLabel,\n references: props.references\n }).render;\n\n const tree = new ChatItemTreeView({\n messageId: props.messageId,\n tabId: props.tabId,\n node: fileListToTree(props.files, props.deletedFiles),\n }).render;\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper-container' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-item-tree-view-wrapper-title' ],\n children: [\n {\n type: 'h4',\n children: [ `${Config.getInstance().config.texts.codeSuggestions}` ]\n },\n {\n type: 'span',\n children: [ `${props.files.length} ${Config.getInstance().config.texts.files}` ]\n },\n ]\n },\n license,\n tree,\n ]\n },\n {\n type: 'p',\n children: [ Config.getInstance().config.texts.clickFileToViewDiff ]\n }\n ]\n });\n }\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { cancelEvent, MynahUIGlobalEvents } from '../../helper/events';\nimport { FileNode, TreeNode } from '../../helper/file-tree';\nimport { MynahEventNames } from '../../static';\nimport { Button } from '../button';\nimport { Icon, MynahIcons } from '../icon';\n\nexport interface ChatItemTreeViewProps {\n node: TreeNode;\n depth?: number;\n tabId: string;\n messageId: string;\n}\n\nexport class ChatItemTreeView {\n private readonly node: TreeNode;\n private isOpen: boolean;\n private readonly depth: number;\n private readonly tabId: string;\n private readonly messageId: string;\n render: ExtendedHTMLElement;\n\n constructor (props: ChatItemTreeViewProps) {\n this.node = props.node;\n this.tabId = props.tabId;\n this.messageId = props.messageId;\n this.isOpen = true;\n this.depth = props.depth ?? 0;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: this.getClassNames(),\n children: [ ...(this.node.type === 'folder' ? this.buildFolderNode() : this.buildFileNode()) ],\n });\n }\n\n getClassNames (): string[] {\n return [\n 'mynah-chat-item-tree-view',\n this.node.type === 'file' ? 'mynah-chat-tree-view-file' : `mynah-chat-tree-view-folder-${this.isOpen ? 'open' : 'closed'}`,\n ];\n }\n\n updateTree (): void {\n this.render.update({\n classNames: this.getClassNames(),\n children: [ ...(this.node.type === 'folder' ? this.buildFolderNode() : this.buildFileNode()) ],\n });\n }\n\n buildFolderChildren (): ExtendedHTMLElement[] {\n if (this.node.type !== 'folder') return [];\n\n const folderChildren = this.isOpen\n ? this.node.children.map(childNode =>\n DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-item-pull-request-item' ],\n children: [ new ChatItemTreeView({ node: childNode, depth: this.depth + 1, tabId: this.tabId, messageId: this.messageId }).render ],\n })\n )\n : [];\n return folderChildren;\n }\n\n buildFolderNode (): ExtendedHTMLElement[] {\n if (this.node.type !== 'folder') return [];\n\n const folderItem = new Button({\n icon: new Icon({ icon: this.isOpen ? MynahIcons.DOWN_OPEN : MynahIcons.RIGHT_OPEN }).render,\n label: `${this.node.name} ${this.node.children.length} files`,\n primary: false,\n onClick: e => {\n cancelEvent(e);\n this.isOpen = !this.isOpen;\n this.updateTree();\n },\n }).render;\n folderItem.style.paddingLeft = `${15 * this.depth}px`;\n const childrenItems = this.buildFolderChildren();\n return [ folderItem, ...childrenItems ];\n }\n\n buildFileNode (): ExtendedHTMLElement[] {\n if (this.node.type !== 'file') return [];\n\n const fileItem = new Button({\n // Eye is temporary until file addition/file removal is finished\n icon: new Icon({ icon: MynahIcons.DOC }).render,\n label: this.node.name,\n primary: false,\n onClick: () => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.OPEN_DIFF, {\n tabId: this.tabId,\n messageId: this.messageId,\n filePath: (this.node as FileNode).filePath,\n deleted: (this.node as FileNode).deleted,\n });\n },\n }).render;\n fileItem.style.paddingLeft = `${15 * this.depth}px`;\n if (this.node.deleted) {\n fileItem.style.textDecoration = 'line-through';\n }\n return [ fileItem ];\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\n\nexport interface ChatPromptInputCommandProps {\n command: string;\n onRemoveClick: () => void;\n}\nexport class ChatPromptInputCommand {\n render: ExtendedHTMLElement;\n private readonly props: ChatPromptInputCommandProps;\n private readonly promptTextInputCommand: ExtendedHTMLElement;\n constructor (props: ChatPromptInputCommandProps) {\n this.props = props;\n this.promptTextInputCommand = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input-command-text' ],\n events: {\n click: this.props.onRemoveClick\n }\n });\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input-command-wrapper', this.props.command === '' ? 'hidden' : '' ],\n children: [\n this.promptTextInputCommand,\n ]\n });\n }\n\n setCommand = (command: string): void => {\n if (command.trim() === '') {\n this.render.addClass('hidden');\n } else {\n this.render.removeClass('hidden');\n }\n this.promptTextInputCommand.innerText = command;\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { marked } from 'marked';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\n\nexport interface ChatPromptInputInfoProps{\n tabId: string;\n}\nexport class ChatPromptInputInfo {\n render: ExtendedHTMLElement;\n constructor (props: ChatPromptInputInfoProps) {\n MynahUITabsStore.getInstance().addListenerToDataStore(props.tabId, 'promptInputInfo', (newInfo) => {\n this.render.update({\n innerHTML: marked.parse(newInfo, { breaks: true })\n });\n });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-chat-prompt-input-info' ],\n innerHTML: marked.parse(MynahUITabsStore.getInstance().getTabDataStore(props.tabId)?.getValue('promptInputInfo') ?? '', { breaks: true })\n });\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { KeyMap, MynahEventNames, QuickActionCommand, QuickActionCommandGroup, SourceLink } from '../../static';\nimport { MynahUIGlobalEvents, cancelEvent } from '../../helper/events';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport escapeHTML from 'escape-html';\nimport { ChatPromptInputCommand } from './chat-prompt-input-command';\nimport { CodeSnippet } from './prompt-input/code-snippet';\nimport { SendButton } from './prompt-input/send-button';\nimport { PromptTextInput } from './prompt-input/prompt-text-input';\n\nexport const MAX_USER_INPUT = 4000;\nexport const MAX_USER_INPUT_TRESHOLD = 96;\nexport interface ChatPromptInputProps {\n tabId: string;\n}\nexport class ChatPromptInput {\n render: ExtendedHTMLElement;\n private readonly props: ChatPromptInputProps;\n private readonly attachmentWrapper: ExtendedHTMLElement;\n private readonly promptTextInput: PromptTextInput;\n private readonly promptTextInputCommand: ChatPromptInputCommand;\n private readonly remainingCharsIndicator: ExtendedHTMLElement;\n private readonly sendButton: SendButton;\n private readonly codeSnippet: CodeSnippet;\n private quickActionCommands: QuickActionCommandGroup[];\n private commandSelector: Overlay;\n private commandSelectorOpen: boolean = false;\n private selectedCommand: string = '';\n private attachment?: SourceLink;\n private filteredCommandsList: QuickActionCommandGroup[];\n constructor (props: ChatPromptInputProps) {\n this.props = props;\n this.quickActionCommands = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('quickActionCommands') as QuickActionCommandGroup[];\n this.promptTextInputCommand = new ChatPromptInputCommand({\n command: '',\n onRemoveClick: () => {\n this.selectedCommand = '';\n this.promptTextInputCommand.setCommand('');\n }\n });\n this.promptTextInput = new PromptTextInput({\n tabId: this.props.tabId,\n onKeydown: this.handleInputKeydown,\n onInput: () => this.updateAvailableCharactersIndicator(),\n });\n this.remainingCharsIndicator = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-chars-indicator' ],\n innerHTML: `${MAX_USER_INPUT - this.promptTextInput.getTextInputValue().length}/${MAX_USER_INPUT}`\n });\n this.sendButton = new SendButton({\n tabId: this.props.tabId,\n onClick: () => {\n this.sendPrompt();\n },\n });\n\n this.codeSnippet = new CodeSnippet({\n tabId: this.props.tabId,\n });\n\n this.attachmentWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-attachment-wrapper' ],\n children: [\n this.codeSnippet.render\n ]\n });\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-wrapper' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-prompt' ],\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-prompt-input-wrapper' ],\n children: [\n this.promptTextInputCommand.render,\n this.promptTextInput.render,\n this.sendButton.render,\n ]\n },\n this.attachmentWrapper\n ]\n },\n this.remainingCharsIndicator,\n ],\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.ADD_CODE_SNIPPET, (selectedCodeSnippet: string | undefined) => {\n // Code snippet will have a limit of MAX_USER_INPUT - MAX_USER_INPUT_TRESHOLD - current prompt text length\n // If exceeding that, we will crop it\n const textInputLength = this.promptTextInput.getTextInputValue().trim().length;\n const currentSelectedCodeMaxLength = (MAX_USER_INPUT + MAX_USER_INPUT_TRESHOLD) - textInputLength;\n const croppedSelectedCodeSnippet = (selectedCodeSnippet ?? '')?.slice(0, currentSelectedCodeMaxLength);\n this.codeSnippet.updateSelectedCodeSnippet(croppedSelectedCodeSnippet);\n // Also update the limit on prompt text given the selected code\n this.promptTextInput.updateTextInputMaxLength(Math.min(MAX_USER_INPUT, (MAX_USER_INPUT + MAX_USER_INPUT_TRESHOLD) - croppedSelectedCodeSnippet.length));\n this.updateAvailableCharactersIndicator();\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.REMOVE_CODE_SNIPPET, () => {\n this.promptTextInput.updateTextInputMaxLength(MAX_USER_INPUT);\n this.codeSnippet.clear();\n // Update the limit on prompt text given the selected code\n this.updateAvailableCharactersIndicator();\n });\n\n setTimeout(() => {\n this.promptTextInput.focus();\n }, 500);\n }\n\n private readonly updateAvailableCharactersIndicator = (): void => {\n const totalCharsUsed =\n this.promptTextInput.getTextInputValue().trim().length + this.codeSnippet.lastCodeSnippet.length;\n this.remainingCharsIndicator.update({\n innerHTML: `${Math.max(0, (MAX_USER_INPUT - totalCharsUsed))}/${MAX_USER_INPUT}`\n });\n };\n\n private readonly handleInputKeydown = (e: KeyboardEvent): void => {\n if (!this.commandSelectorOpen) {\n this.quickActionCommands = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('quickActionCommands') as QuickActionCommandGroup[];\n if (e.key === KeyMap.BACKSPACE && this.selectedCommand !== '' && this.promptTextInput.getTextInputValue() === '') {\n cancelEvent(e);\n this.clearTextArea();\n } else if (e.key === KeyMap.ENTER && !e.shiftKey && !e.ctrlKey) {\n cancelEvent(e);\n this.sendPrompt();\n } else if (this.selectedCommand === '' && this.quickActionCommands.length > 0 && e.key === KeyMap.SLASH && this.promptTextInput.getTextInputValue() === '') {\n // Show available quick actions\n if (this.commandSelector !== undefined) {\n this.commandSelector.close();\n }\n this.filteredCommandsList = [ ...this.quickActionCommands ];\n this.commandSelector = new Overlay({\n closeOnOutsideClick: true,\n referenceElement: this.render.querySelector('.mynah-chat-prompt') as ExtendedHTMLElement,\n dimOutside: false,\n stretchWidth: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n onClose: () => {\n this.commandSelectorOpen = false;\n },\n children: [\n this.getQuickCommandActions(this.quickActionCommands)\n ],\n });\n\n this.commandSelectorOpen = true;\n }\n } else {\n const blockedKeys = [ KeyMap.ENTER, KeyMap.ESCAPE, KeyMap.SPACE, KeyMap.TAB, KeyMap.BACK_SLASH, KeyMap.SLASH ] as string[];\n const navigationalKeys = [ KeyMap.ARROW_UP, KeyMap.ARROW_DOWN ] as string[];\n if (blockedKeys.includes(e.key)) {\n e.preventDefault();\n if (e.key === KeyMap.ENTER || e.key === KeyMap.TAB || e.key === KeyMap.SPACE) {\n // let quickAction: QuickActionCommand;\n const targetElement = this.commandSelector.render.querySelector('.target-command') ?? this.commandSelector.render.querySelector('.mynah-chat-command-selector-command');\n this.handleCommandSelection({\n command: targetElement?.getAttribute('command') ?? '',\n placeholder: targetElement?.getAttribute('placeholder') ?? undefined,\n });\n }\n if (this.commandSelector !== undefined) {\n this.commandSelector.close();\n }\n } else if (navigationalKeys.includes(e.key)) {\n e.preventDefault();\n const commandElements = Array.from(this.commandSelector.render.querySelectorAll('.mynah-chat-command-selector-command'));\n let lastActiveElement = commandElements.findIndex(commandElement => commandElement.classList.contains('target-command'));\n lastActiveElement = lastActiveElement === -1 ? commandElements.length : lastActiveElement;\n let nextElement: number;\n if (e.key === KeyMap.ARROW_UP) {\n if (lastActiveElement > 0) {\n nextElement = lastActiveElement - 1;\n } else {\n nextElement = commandElements.length - 1;\n }\n } else {\n if (lastActiveElement < commandElements.length - 1) {\n nextElement = lastActiveElement + 1;\n } else {\n nextElement = 0;\n }\n }\n\n commandElements[lastActiveElement]?.classList.remove('target-command');\n commandElements[nextElement].classList.add('target-command');\n if (commandElements[nextElement].getAttribute('prompt') !== null) {\n this.promptTextInput.updateTextInputValue(commandElements[nextElement].getAttribute('prompt') as string);\n }\n } else {\n if (this.commandSelector !== undefined) {\n setTimeout(() => {\n if (this.promptTextInput.getTextInputValue() === '') {\n this.commandSelector.close();\n } else {\n this.filteredCommandsList = [];\n [ ...this.quickActionCommands ].forEach((quickActionGroup: QuickActionCommandGroup) => {\n const newQuickActionCommandGroup = { ...quickActionGroup };\n newQuickActionCommandGroup.commands = newQuickActionCommandGroup\n .commands.filter(command => command.command.match(new RegExp(`${this.promptTextInput.getTextInputValue().substring(1)}` ?? '', 'gi')));\n if (newQuickActionCommandGroup.commands.length > 0) {\n this.filteredCommandsList.push(newQuickActionCommandGroup);\n }\n });\n this.commandSelector.updateContent([ this.getQuickCommandActions(this.filteredCommandsList) ]);\n }\n }, 1);\n }\n }\n }\n };\n\n private readonly getQuickCommandActions = (quickCommandList: QuickActionCommandGroup[]): ExtendedHTMLElement => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector' ],\n children: quickCommandList.map((quickActionCommandGroup) => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-group' ],\n children: [\n ...(quickActionCommandGroup.groupName !== undefined\n ? [ DomBuilder.getInstance().build({\n type: 'h4',\n classNames: [ 'mynah-chat-command-selector-group-title' ],\n children: [ quickActionCommandGroup.groupName ]\n }) ]\n : []),\n ...(quickActionCommandGroup.commands.map(quickActionCommand => {\n return DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command' ],\n attributes: {\n ...quickActionCommand\n },\n events: {\n click: () => {\n this.handleCommandSelection(quickActionCommand);\n }\n },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command-name' ],\n children: [ quickActionCommand.command ]\n },\n ...(quickActionCommand.description !== undefined\n ? [ {\n type: 'div',\n classNames: [ 'mynah-chat-command-selector-command-description' ],\n children: [ quickActionCommand.description ]\n } ]\n : [])\n ]\n });\n }))\n ]\n });\n })\n });\n };\n\n private readonly handleCommandSelection = (quickActionCommand: QuickActionCommand): void => {\n this.selectedCommand = quickActionCommand.command;\n this.promptTextInput.updateTextInputValue('');\n if (quickActionCommand.placeholder !== undefined) {\n this.promptTextInputCommand.setCommand(this.selectedCommand);\n this.promptTextInput.updateTextInputPlaceholder(quickActionCommand.placeholder);\n } else {\n this.sendPrompt();\n }\n this.commandSelector.close();\n this.promptTextInput.focus();\n };\n\n public readonly clearTextArea = (): void => {\n this.selectedCommand = '';\n this.promptTextInput.clear();\n this.promptTextInput.updateTextInputMaxLength(MAX_USER_INPUT);\n this.promptTextInputCommand.setCommand('');\n this.attachmentWrapper.clear();\n this.codeSnippet.clear();\n this.attachment = undefined;\n this.updateAvailableCharactersIndicator();\n };\n\n public readonly addText = (textToAdd: string): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.ADD_CODE_SNIPPET, textToAdd);\n };\n\n private readonly sendPrompt = (): void => {\n const currentInputValue = this.promptTextInput.getTextInputValue();\n if (currentInputValue.trim() !== '' || this.selectedCommand.trim() !== '') {\n const selectedCodeSnippet: string | undefined = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('selectedCodeSnippet');\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.CHAT_PROMPT, {\n tabId: this.props.tabId,\n prompt: {\n prompt: currentInputValue + (selectedCodeSnippet ?? ''),\n escapedPrompt: escapeHTML(currentInputValue + (selectedCodeSnippet ?? '')),\n ...(this.selectedCommand !== '' ? { command: this.selectedCommand } : {}),\n attachment: this.attachment\n }\n });\n this.clearTextArea();\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\nimport { MynahUITabsStore } from '../../helper/tabs-store';\nimport { ChatItem, ChatItemType } from '../../static';\nimport { Button } from '../button';\nimport { Icon, MynahIcons } from '../icon';\nimport { ChatItemCard } from './chat-item-card';\nimport { ChatPromptInput } from './chat-prompt-input';\nimport { ChatPromptInputInfo } from './chat-prompt-input-info';\n\nexport interface ChatWrapperProps {\n onStopChatResponse?: (tabId: string) => void;\n tabId: string;\n}\nexport class ChatWrapper {\n private readonly props: ChatWrapperProps;\n private readonly chatItemsContainer: ExtendedHTMLElement;\n private readonly intermediateBlockContainer: ExtendedHTMLElement;\n private readonly promptInputElement: ExtendedHTMLElement;\n private readonly promptInput: ChatPromptInput;\n private readonly promptInfo: ExtendedHTMLElement;\n private lastChatItemCard: ChatItemCard | null;\n render: ExtendedHTMLElement;\n constructor (props: ChatWrapperProps) {\n this.props = props;\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('chatItems', (chatItems: ChatItem[]) => {\n const chatItemToInsert: ChatItem = chatItems[chatItems.length - 1];\n if (this.chatItemsContainer.children.length === chatItems.length) {\n const lastItem = this.chatItemsContainer.children.item(0);\n if (lastItem !== null) {\n lastItem.innerHTML = new ChatItemCard({ tabId: this.props.tabId, chatItem: chatItemToInsert }).render.innerHTML;\n }\n } else if (chatItems.length > 0) {\n if (this.chatItemsContainer.children.length === 0) {\n chatItems.forEach(chatItem => {\n this.insertChatItem(chatItem);\n });\n } else {\n this.insertChatItem(chatItemToInsert);\n }\n } else {\n this.chatItemsContainer.clear(true);\n }\n });\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('loadingChat', (loadingChat: boolean) => {\n if (loadingChat) {\n this.render.addClass('loading');\n } else {\n this.render.removeClass('loading');\n }\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).subscribe('cancelButtonWhenLoading', (showCancelButton: boolean) => {\n if (showCancelButton) {\n this.intermediateBlockContainer.removeClass('hidden');\n } else {\n this.intermediateBlockContainer.addClass('hidden');\n }\n });\n\n this.promptInput = new ChatPromptInput({ tabId: this.props.tabId });\n this.promptInputElement = this.promptInput.render;\n this.promptInfo = new ChatPromptInputInfo({ tabId: this.props.tabId }).render;\n this.chatItemsContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-items-container' ],\n persistent: true,\n children: [],\n });\n\n this.intermediateBlockContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-overflowing-intermediate-block',\n ...(MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('cancelButtonWhenLoading') === false ? [ 'hidden' ] : []) ],\n children: [\n ...(this.props?.onStopChatResponse !== undefined\n ? [ new Button({\n classNames: [ 'mynah-chat-stop-chat-response-button' ],\n label: Config.getInstance().config.texts.stopGenerating,\n icon: new Icon({ icon: MynahIcons.BLOCK }).render,\n onClick: () => {\n if ((this.props?.onStopChatResponse) !== undefined) {\n this.props?.onStopChatResponse(this.props.tabId);\n }\n },\n }).render ]\n : [])\n ]\n });\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-wrapper' ],\n attributes: {\n 'mynah-tab-id': this.props.tabId,\n },\n persistent: true,\n children: [\n {\n type: 'style',\n children: [ `\n .mynah-nav-tabs-wrapper[selected-tab=\"${this.props.tabId}\"] + .mynah-ui-tab-contents-wrapper > .mynah-chat-wrapper[mynah-tab-id=\"${this.props.tabId}\"]{\n display: flex;\n }\n .mynah-nav-tabs-wrapper[selected-tab=\"${this.props.tabId}\"] + .mynah-ui-tab-contents-wrapper > .mynah-chat-wrapper:not([mynah-tab-id=\"${this.props.tabId}\"]) * {\n pointer-events: none !important;\n }` ],\n },\n this.chatItemsContainer,\n this.intermediateBlockContainer,\n this.promptInputElement,\n this.promptInfo\n ]\n });\n\n const initChatItems = MynahUITabsStore.getInstance().getTabDataStore(this.props.tabId).getValue('chatItems');\n if (initChatItems.length > 0) {\n initChatItems.forEach((chatItem: ChatItem) => this.insertChatItem(chatItem));\n }\n }\n\n private readonly insertChatItem = (chatItem: ChatItem): void => {\n const chatItemCard = new ChatItemCard({\n tabId: this.props.tabId,\n chatItem\n });\n if (chatItem.type === ChatItemType.ANSWER_STREAM) {\n this.lastChatItemCard?.render.addClass('stream-ended');\n this.lastChatItemCard = chatItemCard;\n } else if (\n (chatItem.type === ChatItemType.ANSWER ||\n chatItem.type === ChatItemType.PROMPT ||\n chatItem.type === ChatItemType.AI_PROMPT ||\n chatItem.type === ChatItemType.SYSTEM_PROMPT) && chatItem.body !== undefined) {\n this.lastChatItemCard?.render.addClass('stream-ended');\n this.lastChatItemCard = null;\n }\n this.chatItemsContainer.insertChild('afterbegin', chatItemCard.render);\n if (chatItem.type === ChatItemType.PROMPT || chatItem.type === ChatItemType.SYSTEM_PROMPT) {\n // Make sure we scroll the chat window to the bottom\n // Only if it is a PROMPT\n this.chatItemsContainer.scrollTop = this.chatItemsContainer.scrollHeight + 500;\n }\n };\n\n public updateLastChatAnswer = (updateWith: Partial<ChatItem>): void => {\n if (this.lastChatItemCard !== null) {\n this.lastChatItemCard.updateCard(updateWith);\n }\n };\n\n public addToPrompt = (textToAdd: string): void => {\n this.promptInput.addText(textToAdd);\n };\n}\n","import { ExtendedHTMLElement } from '../../../helper/dom';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../../overlay';\nimport { Icon, MynahIcons } from '../../icon';\nimport { Button } from '../../button';\nimport { MynahUIGlobalEvents, cancelEvent } from '../../../helper/events';\nimport { MynahEventNames } from '../../../static';\nimport { Card } from '../../card/card';\nimport { CardBody } from '../../card/card-body';\n\nexport interface ICodeSnippetWidgetProps {\n tabId: string;\n markdownText: string;\n}\n\nexport class CodeSnippetWidget {\n private readonly props: ICodeSnippetWidgetProps;\n private previewOverlay: Overlay | undefined;\n render: ExtendedHTMLElement;\n constructor (props: ICodeSnippetWidgetProps) {\n this.props = props;\n this.render = this.renderCodeSnippetWidget(this.props.markdownText);\n }\n\n private readonly showPreviewOverLay = (markdownText: string): void => {\n this.previewOverlay = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: this.render,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n new Card({\n classNames: [ 'snippet-card-container-preview' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n ]\n }).render\n ],\n });\n };\n\n private readonly closePreviewOverLay = (): void => {\n if (this.previewOverlay !== undefined) {\n this.previewOverlay.close();\n this.previewOverlay = undefined;\n }\n };\n\n private readonly renderCodeSnippetWidget = (markdownText: string): ExtendedHTMLElement => {\n return new Card({\n padding: 'none',\n events: {\n mouseenter: () => {\n this.showPreviewOverLay(markdownText);\n },\n mouseleave: () => {\n this.closePreviewOverLay();\n },\n },\n classNames: [ 'snippet-card-container' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n new Button({\n classNames: [ 'code-snippet-close-button' ],\n onClick: e => {\n cancelEvent(e);\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.REMOVE_CODE_SNIPPET, this.props.tabId);\n this.closePreviewOverLay();\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render,\n primary: false,\n }).render,\n ],\n }).render;\n };\n\n public readonly clear = (): void => {\n this.closePreviewOverLay();\n };\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { CodeSnippetWidget } from './code-snippet-widget';\n\nexport interface ICodeSnippetProps {\n tabId: string;\n}\n\nexport interface ISelectCodeSnippetEvent {\n tabId: string;\n selectedCodeSnippet?: string;\n}\n\nexport class CodeSnippet {\n private readonly _props: ICodeSnippetProps;\n private readonly _render: ExtendedHTMLElement;\n private snippetWidget: CodeSnippetWidget | undefined;\n public lastCodeSnippet: string = '';\n constructor (props: ICodeSnippetProps) {\n this._props = props;\n\n this._render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'outer-container' ],\n persistent: true,\n });\n }\n\n public get render (): ExtendedHTMLElement {\n return this._render;\n }\n\n public readonly updateSelectedCodeSnippet = (selectedCodeSnippet: string | undefined): void => {\n if (this.snippetWidget !== undefined) {\n this.snippetWidget.clear();\n }\n this._render.clear();\n this.lastCodeSnippet = selectedCodeSnippet ?? '';\n if (selectedCodeSnippet !== undefined && selectedCodeSnippet !== '') {\n this.snippetWidget = new CodeSnippetWidget({\n tabId: this._props.tabId,\n markdownText: selectedCodeSnippet,\n });\n this._render.insertChild('afterbegin', this.snippetWidget.render);\n const isCodeOverflowVertically =\n (this._render.getBoundingClientRect()?.height ?? 0) < (this._render.getElementsByTagName('code')?.[0]?.getBoundingClientRect()?.height ?? 0);\n if (isCodeOverflowVertically) {\n this._render.children[0].classList.add('vertical-overflow');\n }\n }\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId)?.updateStore({\n selectedCodeSnippet,\n });\n };\n\n public readonly clear = (): void => {\n this.lastCodeSnippet = '';\n if (this.snippetWidget !== undefined) {\n this.snippetWidget.clear();\n }\n this.snippetWidget = undefined;\n this._render.clear();\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId)?.updateStore({\n selectedCodeSnippet: undefined,\n });\n };\n}\n","import { DomBuilder, ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { MAX_USER_INPUT } from '../chat-prompt-input';\n\nexport interface IPromptTextInputProps {\n tabId: string;\n onKeydown: (e: KeyboardEvent) => void;\n onInput?: (e: KeyboardEvent) => void;\n}\n\nexport class PromptTextInput {\n private readonly _props: IPromptTextInputProps;\n private readonly _render: ExtendedHTMLElement;\n private readonly _promptTextInputSizer: ExtendedHTMLElement;\n private readonly _promptTextInput: ExtendedHTMLElement;\n constructor (props: IPromptTextInputProps) {\n this._props = props;\n\n const initialDisabledState = MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputDisabledState') as boolean;\n\n this._promptTextInputSizer = DomBuilder.getInstance().build({\n type: 'span',\n classNames: [ 'mynah-chat-prompt-input', 'mynah-chat-prompt-input-sizer' ],\n });\n\n this._promptTextInput = DomBuilder.getInstance().build({\n type: 'textarea',\n classNames: [ 'mynah-chat-prompt-input' ],\n attributes: {\n ...(initialDisabledState ? { disabled: 'disabled' } : {}),\n tabindex: '1',\n rows: '1',\n maxlength: MAX_USER_INPUT.toString(),\n type: 'text',\n placeholder: MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputPlaceholder'),\n value: '',\n },\n events: {\n keydown: this._props.onKeydown,\n input: (e: KeyboardEvent) => {\n // Set the appropriate prompt input height\n this.updatePromptTextInputSizer();\n // Additional handler\n if (this._props.onInput !== undefined) {\n this._props.onInput(e);\n }\n },\n focus: () => {\n this.render.addClass('input-has-focus');\n },\n blur: () => {\n this.render.removeClass('input-has-focus');\n }\n },\n });\n\n this._render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-chat-prompt-input-inner-wrapper', 'no-text' ],\n children: [\n this._promptTextInputSizer,\n this._promptTextInput,\n ]\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).subscribe('promptInputDisabledState', (isDisabled: boolean) => {\n if (isDisabled) {\n this._promptTextInput.setAttribute('disabled', 'disabled');\n } else {\n // Enable the input field and focus on it\n this._promptTextInput.removeAttribute('disabled');\n this._promptTextInput.focus();\n }\n });\n\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).subscribe('promptInputPlaceholder', (placeholderText: string) => {\n if (placeholderText !== undefined) {\n this._promptTextInput.update({\n attributes: {\n placeholder: placeholderText\n }\n });\n }\n });\n }\n\n get render (): ExtendedHTMLElement {\n return this._render;\n }\n\n private readonly updatePromptTextInputSizer = (): void => {\n if (this._promptTextInput.value.trim() !== '') {\n this._render.removeClass('no-text');\n } else {\n this._render.addClass('no-text');\n }\n this._promptTextInputSizer.innerHTML = this._promptTextInput.value.replace(/\\n/g, '</br>&nbsp;');\n };\n\n public readonly clear = (): void => {\n this._promptTextInputSizer.innerHTML = '';\n this.updateTextInputValue('');\n const defaultPlaceholder = MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputPlaceholder');\n this.updateTextInputPlaceholder(defaultPlaceholder);\n this._render.addClass('no-text');\n };\n\n public readonly focus = (): void => {\n this._promptTextInput.focus();\n this.updateTextInputValue('');\n };\n\n public readonly getTextInputValue = (): string => {\n return this._promptTextInput.value;\n };\n\n public readonly updateTextInputValue = (value: string): void => {\n this._promptTextInput.value = value;\n };\n\n public readonly updateTextInputMaxLength = (maxLength: number): void => {\n this._promptTextInput.update({\n attributes: {\n maxlength: maxLength.toString(),\n }\n });\n };\n\n public readonly updateTextInputPlaceholder = (text: string): void => {\n this._promptTextInput.update({\n attributes: {\n placeholder: text,\n }\n });\n };\n}\n","import { ExtendedHTMLElement } from '../../../helper/dom';\nimport { MynahUITabsStore } from '../../../helper/tabs-store';\nimport { Button } from '../../button';\nimport { Icon, MynahIcons } from '../../icon';\n\nexport interface ISendButtonProps {\n tabId: string;\n onClick: () => void;\n}\n\nexport class SendButton {\n private readonly _props: ISendButtonProps;\n private readonly _render: ExtendedHTMLElement;\n constructor (props: ISendButtonProps) {\n this._props = props;\n\n const initialDisabledState = MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).getValue('promptInputDisabledState') as boolean;\n\n this._render = new Button({\n classNames: [ 'mynah-icon-button', 'mynah-chat-prompt-button' ],\n attributes: {\n ...(initialDisabledState ? { disabled: 'disabled' } : {}),\n tabindex: '5'\n },\n icon: new Icon({ icon: MynahIcons.ENVELOPE_SEND }).render,\n onClick: () => {\n this._props.onClick();\n },\n }).render;\n\n MynahUITabsStore.getInstance().getTabDataStore(this._props.tabId).subscribe('promptInputDisabledState', (isDisabled: boolean) => {\n if (isDisabled) {\n this.render.setAttribute('disabled', 'disabled');\n } else {\n this.render.removeAttribute('disabled');\n }\n });\n }\n\n get render (): ExtendedHTMLElement {\n return this._render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// eslint-disable @typescript-eslint/restrict-template-expressions\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../helper/dom';\nimport { generateUID } from '../helper/guid';\nimport { Icon, MynahIcons } from './icon';\n\ninterface CollapsibleContentProps {\n title: string | ExtendedHTMLElement | HTMLElement | DomBuilderObject;\n children: Array<string | ExtendedHTMLElement | HTMLElement | DomBuilderObject>;\n classNames?: string[];\n initialCollapsedState?: boolean;\n onCollapseStateChange?: (collapsed: boolean) => void;\n}\nexport class CollapsibleContent {\n render: ExtendedHTMLElement;\n private readonly props: Required<CollapsibleContentProps>;\n private readonly uid: string;\n private icon: ExtendedHTMLElement;\n constructor (props: CollapsibleContentProps) {\n this.uid = generateUID();\n this.props = {\n initialCollapsedState: true,\n onCollapseStateChange: () => {},\n classNames: [],\n ...props\n };\n this.icon = new Icon({ icon: this.props.initialCollapsedState ? MynahIcons.RIGHT_OPEN : MynahIcons.DOWN_OPEN }).render;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-collapsible-content-wrapper', ...this.props.classNames ],\n children: [\n {\n type: 'input',\n classNames: [ 'mynah-collapsible-content-checkbox' ],\n attributes: {\n type: 'checkbox',\n name: this.uid,\n id: this.uid,\n ...(this.props.initialCollapsedState ? { checked: 'checked' } : {})\n },\n events: {\n change: (e) => {\n const val = e.currentTarget.checked;\n const newIcon = new Icon({\n icon: val === true ? MynahIcons.RIGHT_OPEN : MynahIcons.DOWN_OPEN\n }).render;\n this.icon.replaceWith(newIcon);\n this.icon = newIcon;\n this.props.onCollapseStateChange(val);\n }\n },\n },\n {\n type: 'label',\n classNames: [ 'mynah-collapsible-content-label' ],\n attributes: {\n for: this.uid,\n },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-collapsible-content-label-title-wrapper' ],\n children: [\n this.icon,\n {\n type: 'span',\n classNames: [ 'mynah-collapsible-content-label-title-text' ],\n children: [ this.props.title ]\n }\n ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-collapsible-content-label-content-wrapper' ],\n children: this.props.children\n },\n ],\n },\n ],\n });\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../../helper/dom';\n\nexport interface FeedbackFormCommentProps {\n onChange?: (comment: string) => void;\n initComment?: string;\n}\nexport class FeedbackFormComment {\n render: ExtendedHTMLElement;\n\n constructor (props: FeedbackFormCommentProps) {\n this.render = DomBuilder.getInstance().build({\n type: 'textarea',\n events: {\n keyup: (e: InputEvent) => {\n if (props.onChange !== undefined) {\n props.onChange(this.render.value);\n }\n },\n },\n classNames: [ 'mynah-feedback-form-comment' ],\n attributes: {\n value: props.initComment ?? '',\n },\n });\n }\n\n getComment = (): string => this.render.value;\n clear = (): void => { this.render.value = ''; };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FeedbackPayload, MynahEventNames, MynahPortalNames } from '../../static';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { Button } from '../button';\nimport { FeedbackFormComment } from './feedback-form-comment';\nimport { cancelEvent, MynahUIGlobalEvents } from '../../helper/events';\nimport { Icon, MynahIcons } from '../icon';\nimport { Config } from '../../helper/config';\n\nexport interface FeedbackFormProps {\n initPayload?: FeedbackPayload;\n}\nexport class FeedbackForm {\n private feedbackFormWrapper: ExtendedHTMLElement;\n private readonly feedbackSelect: ExtendedHTMLElement;\n private readonly feedbackOptionsWrapper: ExtendedHTMLElement;\n private readonly feedbackComment: FeedbackFormComment;\n private readonly feedbackSubmitButton: Button;\n private feedbackPayload: FeedbackPayload = { messageId: '', selectedOption: '', tabId: '', comment: '' };\n public readonly feedbackFormContainer: ExtendedHTMLElement;\n\n constructor (props?: FeedbackFormProps) {\n this.feedbackPayload = {\n selectedOption: Config.getInstance().config.feedbackOptions[0].value,\n messageId: '',\n tabId: '',\n comment: '',\n ...props?.initPayload\n };\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SHOW_FEEDBACK_FORM, (data: {messageId: string; tabId: string}) => {\n if (this.feedbackFormWrapper === undefined) {\n this.feedbackFormWrapper = DomBuilder.getInstance().createPortal(\n MynahPortalNames.FEEDBACK_FORM,\n {\n type: 'div',\n attributes: {\n id: 'mynah-feedback-form-wrapper'\n },\n children: [\n this.feedbackFormContainer\n ]\n },\n 'afterbegin'\n );\n }\n this.feedbackPayload.messageId = data.messageId;\n this.feedbackPayload.tabId = data.tabId;\n setTimeout(() => {\n this.show();\n }, 5);\n });\n\n this.feedbackSelect = DomBuilder.getInstance().build({\n type: 'select',\n attributes: { value: Config.getInstance().config.feedbackOptions[0].value },\n classNames: [ 'mynah-feedback-form-select' ],\n events: {\n change: () => {\n this.feedbackPayload.selectedOption = this.feedbackSelect.value;\n }\n },\n children:\n Config.getInstance().config.feedbackOptions.map(option => ({\n type: 'option',\n attributes: { value: option.value },\n children: [ option.label ]\n })) as DomBuilderObject[]\n });\n this.feedbackOptionsWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-feedback-form-select-wrapper' ],\n children: [\n this.feedbackSelect,\n new Icon({ icon: MynahIcons.DOWN_OPEN, classNames: [ 'mynah-feedback-form-select-handle' ] }).render ]\n });\n\n this.feedbackComment = new FeedbackFormComment({\n onChange: (comment: string) => {\n this.feedbackPayload.comment = comment;\n },\n initComment: this.feedbackPayload?.comment,\n });\n\n this.feedbackSubmitButton = new Button({\n label: Config.getInstance().config.texts.submit,\n onClick: () => {\n this.onFeedbackSet(this.feedbackPayload);\n this.close();\n },\n });\n\n this.feedbackFormContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-feedback-form' ],\n events: { click: cancelEvent },\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-feedback-form-header' ],\n children: [\n {\n type: 'h4',\n children: [ Config.getInstance().config.texts.feedbackFormTitle ]\n },\n new Button({\n primary: false,\n onClick: () => {\n this.close();\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render\n }).render\n ]\n },\n {\n type: 'span',\n children: [ Config.getInstance().config.texts.feedbackFormOptionsLabel ],\n },\n this.feedbackOptionsWrapper,\n {\n type: 'span',\n children: [ Config.getInstance().config.texts.feedbackFormCommentLabel ],\n },\n this.feedbackComment.render,\n {\n type: 'div',\n classNames: [ 'mynah-feedback-form-buttons-container' ],\n children: [\n new Button({\n primary: false,\n label: Config.getInstance().config.texts.cancel,\n onClick: () => {\n this.close();\n }\n }).render,\n this.feedbackSubmitButton.render\n ]\n }\n ],\n });\n }\n\n private readonly onFeedbackSet = (feedbackData: FeedbackPayload): void => {\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.FEEDBACK_SET, feedbackData);\n };\n\n close = (): void => {\n this.feedbackComment.clear();\n this.feedbackSelect.value = Config.getInstance().config.feedbackOptions[0].value;\n this.feedbackPayload = {\n messageId: '',\n selectedOption: Config.getInstance().config.feedbackOptions[0].value,\n tabId: '',\n comment: ''\n };\n this.feedbackFormWrapper.removeClass('mynah-feedback-form-show');\n };\n\n show = (): void => {\n this.feedbackFormWrapper.addClass('mynah-feedback-form-show');\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { MynahUIIconImporter } from './icon/icon-importer';\n\nexport enum MynahIcons {\n MYNAH = 'mynah',\n MENU = 'menu',\n MINUS = 'minus',\n SEARCH = 'search',\n PLUS = 'plus',\n CHAT = 'chat',\n LINK = 'link',\n DOC = 'doc',\n EXTERNAL = 'external',\n CANCEL = 'cancel',\n CALENDAR = 'calendar',\n MEGAPHONE = 'megaphone',\n NOTIFICATION = 'notification',\n EYE = 'eye',\n ELLIPSIS = 'ellipsis',\n OK = 'ok',\n UP_OPEN = 'up-open',\n DOWN_OPEN = 'down-open',\n RIGHT_OPEN = 'right-open',\n LEFT_OPEN = 'left-open',\n RESIZE_FULL = 'resize-full',\n RESIZE_SMALL = 'resize-small',\n BLOCK = 'block',\n OK_CIRCLED = 'ok-circled',\n INFO = 'info',\n WARNING = 'warning',\n ERROR = 'error',\n THUMBS_UP = 'thumbs-up',\n THUMBS_DOWN = 'thumbs-down',\n STAR = 'star',\n LIGHT_BULB = 'light-bulb',\n ENVELOPE_SEND = 'envelope-send',\n REFRESH = 'refresh',\n USER = 'user',\n PLAY = 'play',\n PAUSE = 'pause',\n CODE_BLOCK = 'code-block',\n COPY = 'copy',\n CURSOR_INSERT = 'cursor-insert',\n TEXT_SELECT = 'text-select',\n REVERT = 'revert',\n}\n\nexport interface IconProps {\n icon: MynahIcons;\n classNames?: string[];\n}\nexport class Icon {\n render: ExtendedHTMLElement;\n constructor (props: IconProps) {\n MynahUIIconImporter.getInstance();\n this.render = DomBuilder.getInstance().build({\n type: 'i',\n classNames: [\n 'mynah-ui-icon',\n `mynah-ui-icon-${props.icon}`,\n ...(props.classNames !== undefined ? props.classNames : []),\n ],\n children: [ {\n type: 'span',\n attributes: {\n 'aria-hidden': 'true'\n },\n children: [ props.icon ]\n } ]\n });\n }\n}\n","/* eslint-disable @typescript-eslint/no-extraneous-class */\n/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder } from '../../helper/dom';\nimport { MynahIcons } from '../icon';\n// ICONS\nimport MYNAH from './icons/mynah.svg';\nimport MENU from './icons/menu.svg';\nimport MINUS from './icons/minus.svg';\nimport SEARCH from './icons/search.svg';\nimport PLUS from './icons/plus.svg';\nimport CHAT from './icons/chat.svg';\nimport LINK from './icons/link.svg';\nimport DOC from './icons/doc.svg';\nimport EXTERNAL from './icons/external.svg';\nimport CANCEL from './icons/cancel.svg';\nimport CALENDAR from './icons/calendar.svg';\nimport MEGAPHONE from './icons/megaphone.svg';\nimport NOTIFICATION from './icons/notification.svg';\nimport EYE from './icons/eye.svg';\nimport ELLIPSIS from './icons/ellipsis.svg';\nimport OK from './icons/ok.svg';\nimport UP_OPEN from './icons/up-open.svg';\nimport DOWN_OPEN from './icons/down-open.svg';\nimport RIGHT_OPEN from './icons/right-open.svg';\nimport LEFT_OPEN from './icons/left-open.svg';\nimport RESIZE_FULL from './icons/resize-full.svg';\nimport RESIZE_SMALL from './icons/resize-small.svg';\nimport BLOCK from './icons/block.svg';\nimport OK_CIRCLED from './icons/ok-circled.svg';\nimport INFO from './icons/info.svg';\nimport WARNING from './icons/warning.svg';\nimport ERROR from './icons/error.svg';\nimport THUMBS_UP from './icons/thumbs-up.svg';\nimport THUMBS_DOWN from './icons/thumbs-down.svg';\nimport STAR from './icons/star.svg';\nimport LIGHT_BULB from './icons/light-bulb.svg';\nimport ENVELOPE_SEND from './icons/envelope-send.svg';\nimport REFRESH from './icons/refresh.svg';\nimport USER from './icons/user.svg';\nimport PLAY from './icons/play.svg';\nimport PAUSE from './icons/pause.svg';\nimport CODE_BLOCK from './icons/code-block.svg';\nimport COPY from './icons/copy.svg';\nimport CURSOR_INSERT from './icons/cursor-insert.svg';\nimport TEXT_SELECT from './icons/text-select.svg';\nimport REVERT from './icons/revert.svg';\n\nexport class MynahUIIconImporter {\n private static instance: MynahUIIconImporter;\n private constructor () {\n const mynahIconMappings = {\n MYNAH,\n MENU,\n MINUS,\n SEARCH,\n PLUS,\n CHAT,\n LINK,\n DOC,\n EXTERNAL,\n CANCEL,\n CALENDAR,\n MEGAPHONE,\n NOTIFICATION,\n EYE,\n ELLIPSIS,\n OK,\n UP_OPEN,\n DOWN_OPEN,\n RIGHT_OPEN,\n LEFT_OPEN,\n RESIZE_FULL,\n RESIZE_SMALL,\n BLOCK,\n OK_CIRCLED,\n INFO,\n WARNING,\n ERROR,\n THUMBS_UP,\n THUMBS_DOWN,\n STAR,\n LIGHT_BULB,\n ENVELOPE_SEND,\n REFRESH,\n USER,\n PLAY,\n PAUSE,\n CODE_BLOCK,\n COPY,\n CURSOR_INSERT,\n TEXT_SELECT,\n REVERT\n };\n DomBuilder.getInstance().createPortal('mynah-ui-icons', {\n type: 'style',\n attributes: {\n type: 'text/css'\n },\n children: [ `\n ${Object.keys(MynahIcons).map(iconKey => {\n const iconName = MynahIcons[iconKey as keyof typeof MynahIcons];\n return `\n .mynah-ui-icon-${iconName} {\n --mynah-ui-icon-${iconName}: url(${mynahIconMappings[iconKey as keyof typeof mynahIconMappings]});\n -webkit-mask-image: var(--mynah-ui-icon-${iconName});\n mask-image: var(--mynah-ui-icon-${iconName});\n }`;\n }).join('')}\n ` ]\n }, 'beforebegin');\n }\n\n public static getInstance = (): MynahUIIconImporter => {\n if (MynahUIIconImporter.instance === undefined) {\n MynahUIIconImporter.instance = new MynahUIIconImporter();\n }\n\n return MynahUIIconImporter.instance;\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Config } from '../helper/config';\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { MynahUITabsStore } from '../helper/tabs-store';\nimport { MynahUITabStoreTab } from '../static';\nimport { Button } from './button';\nimport { Card } from './card/card';\nimport { CardBody } from './card/card-body';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from './overlay';\nimport { Toggle, ToggleOption } from './toggle';\n\nexport interface TabsProps {\n onChange?: (selectedTabId: string) => void;\n}\nexport class Tabs {\n render: ExtendedHTMLElement;\n private tabIdTitleSubscriptions: Record<string, string> = {};\n private tabIdChatItemsSubscriptions: Record<string, string> = {};\n private toggleGroup: Toggle;\n private previewOverlay: Overlay | undefined;\n private readonly props: TabsProps;\n\n constructor (props: TabsProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n persistent: true,\n classNames: [ 'mynah-nav-tabs-wrapper' ],\n events: {\n dblclick: (e) => {\n cancelEvent(e);\n if (MynahUITabsStore.getInstance().tabsLength() < Config.getInstance().config.maxTabs) {\n MynahUITabsStore.getInstance().addTab();\n }\n }\n },\n children: this.getTabsRender(MynahUITabsStore.getInstance().getSelectedTabId()),\n });\n\n MynahUITabsStore.getInstance().addListener('add', (tabId, tabData) => {\n this.assignListener(tabId);\n this.toggleGroup.addOption({\n value: tabId,\n label: tabData?.store?.tabTitle,\n selected: tabData?.isSelected\n });\n this.render.setAttribute('selected-tab', tabId);\n });\n MynahUITabsStore.getInstance().addListener('remove', (tabId, newSelectedTab?: MynahUITabStoreTab) => {\n this.removeListenerAssignments(tabId);\n this.toggleGroup.removeOption(tabId);\n if (newSelectedTab !== undefined) {\n this.toggleGroup.snapToOption(MynahUITabsStore.getInstance().getSelectedTabId());\n }\n this.render.setAttribute('selected-tab', MynahUITabsStore.getInstance().getSelectedTabId());\n });\n MynahUITabsStore.getInstance().addListener('selectedTabChange', (selectedTabId) => {\n this.render.setAttribute('selected-tab', selectedTabId);\n this.toggleGroup.setValue(selectedTabId);\n });\n }\n\n private readonly getTabOptionsFromTabStoreData = (): ToggleOption[] => {\n const tabs = MynahUITabsStore.getInstance().getAllTabs();\n return Object.keys(tabs).map((tabId: string) => {\n const tabOption = {\n value: tabId,\n label: tabs[tabId].store?.tabTitle,\n selected: tabs[tabId].isSelected\n };\n return tabOption;\n });\n };\n\n private readonly getTabsRender = (selectedTabId?: string): ExtendedHTMLElement[] => {\n const tabs = this.getTabOptionsFromTabStoreData();\n tabs.forEach(tab => {\n this.assignListener(tab.value);\n });\n this.toggleGroup = new Toggle({\n onChange: (selectedTabId: string) => {\n MynahUITabsStore.getInstance().selectTab(selectedTabId);\n if (this.props.onChange !== undefined) {\n this.props.onChange(selectedTabId);\n }\n },\n onRemove: (selectedTabId) => {\n MynahUITabsStore.getInstance().removeTab(selectedTabId);\n },\n name: 'mynah-main-tabs',\n options: tabs,\n value: selectedTabId\n });\n return [\n this.toggleGroup.render,\n new Button({\n classNames: [ 'mynah-toggle-close-button' ],\n additionalEvents: {\n mouseenter: (e) => {\n if (MynahUITabsStore.getInstance().tabsLength() === Config.getInstance().config.maxTabs) {\n this.showPreviewOverLay(e.currentTarget, Config.getInstance().config.texts.noMoreTabsTooltip);\n }\n },\n mouseleave: () => {\n this.closePreviewOverLay();\n },\n },\n onClick: (e) => {\n cancelEvent(e);\n if (MynahUITabsStore.getInstance().tabsLength() < Config.getInstance().config.maxTabs) {\n MynahUITabsStore.getInstance().addTab();\n }\n },\n icon: new Icon({ icon: MynahIcons.PLUS }).render,\n primary: false\n }).render\n ];\n };\n\n private readonly showPreviewOverLay = (elm: HTMLElement, markdownText: string): void => {\n this.previewOverlay = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n horizontalDirection: OverlayHorizontalDirection.CENTER,\n children: [\n new Card({\n classNames: [ 'snippet-card-container-preview' ],\n children: [\n new CardBody({\n body: markdownText,\n }).render,\n ]\n }).render\n ],\n });\n };\n\n private readonly closePreviewOverLay = (): void => {\n if (this.previewOverlay !== undefined) {\n this.previewOverlay.close();\n this.previewOverlay = undefined;\n }\n };\n\n private readonly assignListener = (tabId: string): void => {\n this.tabIdTitleSubscriptions[tabId] = MynahUITabsStore.getInstance().addListenerToDataStore(tabId, 'tabTitle', (title) => {\n this.toggleGroup.updateOptionTitle(tabId, title);\n }) ?? '';\n this.tabIdChatItemsSubscriptions[tabId] = MynahUITabsStore.getInstance().addListenerToDataStore(tabId, 'chatItems', () => {\n this.toggleGroup.updateOptionIndicator(tabId, true);\n }) ?? '';\n };\n\n private readonly removeListenerAssignments = (tabId: string): void => {\n MynahUITabsStore.getInstance().removeListenerFromDataStore(tabId, this.tabIdTitleSubscriptions[tabId], 'tabTitle');\n MynahUITabsStore.getInstance().removeListenerFromDataStore(tabId, this.tabIdChatItemsSubscriptions[tabId], 'chatItems');\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilderObject, DS, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { NotificationType } from '../static';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection, OVERLAY_MARGIN } from './overlay';\n\ntype NotificationContentType = string | ExtendedHTMLElement | HTMLElement | DomBuilderObject;\n\nexport interface NotificationProps {\n duration?: number;\n type?: NotificationType;\n title?: string;\n content: NotificationContentType | NotificationContentType[];\n onNotificationClick?: () => void;\n onNotificationHide?: () => void;\n}\n\nexport class Notification {\n private notificationOverlay!: Overlay;\n private readonly duration;\n private readonly type;\n private readonly props;\n\n constructor (props: NotificationProps) {\n this.duration = props.duration !== undefined ? props.duration : 5000;\n this.type = props.type ?? NotificationType.INFO;\n this.props = props;\n }\n\n public notify (): void {\n this.notificationOverlay = new Overlay({\n referencePoint: {\n left: Math.max(document.documentElement.clientWidth ?? 0, window.innerWidth ?? 0),\n top: this.getNextCalculatedTop(),\n },\n dimOutside: false,\n closeOnOutsideClick: false,\n horizontalDirection: OverlayHorizontalDirection.TO_LEFT,\n verticalDirection: OverlayVerticalDirection.TO_BOTTOM,\n onClose: this.props.onNotificationHide,\n children: [\n {\n type: 'div',\n classNames: [\n 'mynah-notification',\n this.props.onNotificationClick !== undefined ? 'mynah-notification-clickable' : '',\n ],\n events: {\n click: e => {\n cancelEvent(e);\n if (this.props.onNotificationClick !== undefined) {\n this.props.onNotificationClick();\n this.notificationOverlay?.close();\n }\n },\n },\n children: [\n new Icon({ icon: this.type.toString() as MynahIcons }).render,\n {\n type: 'div',\n classNames: [ 'mynah-notification-container' ],\n children: [\n {\n type: 'h3',\n classNames: [ 'mynah-notification-title' ],\n children: [ this.props.title ?? '' ],\n },\n {\n type: 'div',\n classNames: [ 'mynah-notification-content' ],\n children: this.getChildren(this.props.content),\n },\n ],\n },\n ],\n },\n ],\n });\n\n if (this.duration !== -1) {\n setTimeout(() => {\n this.notificationOverlay?.close();\n }, this.duration);\n }\n }\n\n /**\n * Calculates the top according to the previously shown and still visible notifications\n * @returns number\n */\n private readonly getNextCalculatedTop = (): number => {\n const prevNotifications = DS('.mynah-notification');\n if (prevNotifications.length > 0) {\n const prevNotificationRectangle = prevNotifications[prevNotifications.length - 1].getBoundingClientRect();\n return prevNotificationRectangle.top + prevNotificationRectangle.height + OVERLAY_MARGIN;\n }\n return 0;\n };\n\n private readonly getChildren = (content: NotificationContentType | NotificationContentType[]): NotificationContentType[] => {\n if (content instanceof Array) {\n return content;\n }\n return [ content ];\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/* eslint-disable @typescript-eslint/brace-style */\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../helper/dom';\nimport { generateUID } from '../helper/guid';\nimport { MynahPortalNames } from '../static';\n\nexport const OVERLAY_MARGIN = 8;\n/**\n * The horizontal creation direction of the overlay\n */\nexport enum OverlayHorizontalDirection {\n /**\n * starts from the left edge of the reference element and opens to left\n */\n TO_LEFT = 'horizontal-direction-to-left',\n /**\n * starts from the right edge of the reference element and opens to left\n */\n END_TO_LEFT = 'horizontal-direction-from-end-to-left',\n /**\n * starts from the right edge of the reference element and opens to right\n */\n TO_RIGHT = 'horizontal-direction-to-right',\n /**\n * starts from the left edge of the reference element and opens to right\n */\n START_TO_RIGHT = 'horizontal-direction-from-start-to-right',\n /**\n * starts and opens at the center of the reference element\n */\n CENTER = 'horizontal-direction-at-center',\n}\n\n/**\n * The vertical creation direction of the overlay\n */\nexport enum OverlayVerticalDirection {\n /**\n * starts from the bottom edge of the reference element and opens to bottom\n */\n TO_BOTTOM = 'vertical-direction-to-bottom',\n /**\n * starts from the top edge of the reference element and opens to bottom\n */\n START_TO_BOTTOM = 'vertical-direction-from-start-to-bottom',\n /**\n * starts from the top edge of the reference element and opens to top\n */\n TO_TOP = 'vertical-direction-to-top',\n /**\n * starts from the bottom edge of the reference element and opens to top\n */\n END_TO_TOP = 'vertical-direction-from-end-to-top',\n /**\n * starts and opens at the center of the reference element\n */\n CENTER = 'vertical-direction-at-center',\n}\n\nexport interface OverlayProps {\n referenceElement?: HTMLElement | ExtendedHTMLElement;\n referencePoint?: { top: number; left: number };\n children: Array<HTMLElement | ExtendedHTMLElement | DomBuilderObject>;\n horizontalDirection?: OverlayHorizontalDirection;\n verticalDirection?: OverlayVerticalDirection;\n stretchWidth?: boolean;\n dimOutside?: boolean;\n closeOnOutsideClick?: boolean;\n background?: boolean;\n onClose?: () => void;\n removeOtherOverlays?: boolean;\n}\nexport class Overlay {\n render: ExtendedHTMLElement;\n private readonly container: ExtendedHTMLElement;\n private readonly innerContainer: ExtendedHTMLElement;\n private readonly guid = generateUID();\n private readonly onClose;\n\n constructor (props: OverlayProps) {\n const horizontalDirection = props.horizontalDirection ?? OverlayHorizontalDirection.TO_RIGHT;\n const verticalDirection = props.verticalDirection ?? OverlayVerticalDirection.START_TO_BOTTOM;\n this.onClose = props.onClose;\n const dimOutside = props.dimOutside !== false;\n const closeOnOutsideClick = props.closeOnOutsideClick !== false;\n\n const calculatedTop = this.getCalculatedTop(verticalDirection, props.referenceElement, props.referencePoint);\n const calculatedLeft = this.getCalculatedLeft(horizontalDirection, props.referenceElement, props.referencePoint);\n const calculatedWidth = props.stretchWidth === true ? this.getCalculatedWidth(props.referenceElement) : 0;\n\n this.innerContainer = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-overlay-inner-container' ],\n children: props.children,\n });\n\n this.container = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-overlay-container', horizontalDirection, verticalDirection, props.background !== false ? 'background' : '' ],\n attributes: {\n style: `top: ${calculatedTop}px; left: ${calculatedLeft}px; ${calculatedWidth !== 0 ? `width: ${calculatedWidth}px;` : ''}`,\n },\n children: [ this.innerContainer ],\n });\n\n if (props.removeOtherOverlays === true) {\n DomBuilder.getInstance().removeAllPortals(MynahPortalNames.OVERLAY);\n }\n\n // this is a portal that goes over all the other items\n // to make it as an overlay item\n this.render = DomBuilder.getInstance().createPortal(\n `${MynahPortalNames.OVERLAY}-${this.guid}`,\n {\n type: 'div',\n attributes: { id: `mynah-overlay-${this.guid}` },\n classNames: [\n 'mynah-overlay',\n ...(dimOutside ? [ 'mynah-overlay-dim-outside' ] : []),\n ...(closeOnOutsideClick ? [ 'mynah-overlay-close-on-outside-click' ] : []),\n ],\n events: {\n click: closeOnOutsideClick ? this.close : () => {},\n },\n children: [ this.container ],\n },\n 'beforeend'\n );\n\n const containerRectangle = this.container.getBoundingClientRect();\n const winHeight = Math.max(document.documentElement.clientHeight ?? 0, window.innerHeight ?? 0);\n const winWidth = Math.max(document.documentElement.clientWidth ?? 0, window.innerWidth ?? 0);\n\n // if it will open at the center of the reference element or point\n // we only need the half of both measurements\n const comparingWidth =\n horizontalDirection === OverlayHorizontalDirection.CENTER\n ? containerRectangle.width / 2\n : containerRectangle.width;\n const comparingHeight =\n verticalDirection === OverlayVerticalDirection.CENTER\n ? containerRectangle.height / 2\n : containerRectangle.height;\n\n // if overlay will open to right or at center\n // we're checking if it exceeds from the right edge of the window\n if (\n horizontalDirection !== OverlayHorizontalDirection.TO_LEFT &&\n horizontalDirection !== OverlayHorizontalDirection.END_TO_LEFT &&\n comparingWidth + OVERLAY_MARGIN + calculatedLeft > winWidth\n ) {\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedLeft - (comparingWidth + OVERLAY_MARGIN + calculatedLeft - winWidth) + 'px';\n }\n // else if the direction is selected as a one that goes to the left,\n // we need to check if it is exceeding from the left edge of the window\n else if (calculatedLeft + comparingWidth - containerRectangle.width < OVERLAY_MARGIN) {\n this.container.style.left =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedLeft + (OVERLAY_MARGIN - calculatedLeft + (comparingWidth - containerRectangle.width)) + 'px';\n }\n\n // if overlay will open to bottom or at center\n // we're checking if it exceeds from the bottom edge of the window\n if (\n verticalDirection !== OverlayVerticalDirection.TO_TOP &&\n verticalDirection !== OverlayVerticalDirection.END_TO_TOP &&\n comparingHeight + OVERLAY_MARGIN + calculatedTop > winHeight\n ) {\n this.container.style.top =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedTop - (comparingHeight + OVERLAY_MARGIN + calculatedTop - winHeight) + 'px';\n }\n // else if the direction is selected as a one that goes to the top,\n // we need to check if it is exceeding from the top edge of the window\n else if (calculatedTop + comparingHeight - containerRectangle.height < OVERLAY_MARGIN) {\n this.container.style.top =\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n calculatedTop + (OVERLAY_MARGIN - calculatedTop + (comparingHeight - containerRectangle.height)) + 'px';\n }\n\n // we need to delay the class toggle\n // to avoid the skipping of the transition comes from css\n // for a known js-css relation problem\n setTimeout(() => {\n this.render.addClass('mynah-overlay-open');\n\n if (closeOnOutsideClick) {\n window.addEventListener('blur', this.windowBlurHandler.bind(this));\n window.addEventListener('resize', this.windowBlurHandler.bind(this));\n }\n }, 10);\n }\n\n close = (): void => {\n this.render.removeClass('mynah-overlay-open');\n // In this timeout, we're waiting the close animation to be ended\n setTimeout(() => {\n this.render.remove();\n }, 250);\n if (this.onClose !== undefined) {\n this.onClose();\n }\n };\n\n private readonly windowBlurHandler = (): void => {\n this.close();\n window.removeEventListener('blur', this.windowBlurHandler.bind(this));\n window.removeEventListener('resize', this.windowBlurHandler.bind(this));\n };\n\n private readonly getCalculatedLeft = (\n horizontalDirection: OverlayHorizontalDirection,\n referenceElement?: HTMLElement | ExtendedHTMLElement,\n referencePoint?: { top?: number; left: number }\n ): number => {\n const referenceRectangle =\n referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : referencePoint !== undefined\n ? { left: referencePoint.left, width: 0 }\n : { left: 0, width: 0 };\n\n switch (horizontalDirection.toString()) {\n case OverlayHorizontalDirection.TO_RIGHT:\n return referenceRectangle.left + referenceRectangle.width + OVERLAY_MARGIN;\n case OverlayHorizontalDirection.START_TO_RIGHT:\n return referenceRectangle.left;\n case OverlayHorizontalDirection.TO_LEFT:\n return referenceRectangle.left - OVERLAY_MARGIN;\n case OverlayHorizontalDirection.END_TO_LEFT:\n return referenceRectangle.left + referenceRectangle.width;\n case OverlayHorizontalDirection.CENTER:\n return referenceRectangle.left + referenceRectangle.width / 2;\n default:\n return 0;\n }\n };\n\n private readonly getCalculatedWidth = (\n referenceElement?: HTMLElement | ExtendedHTMLElement\n ): number => {\n return (referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : { width: 0 }).width;\n };\n\n private readonly getCalculatedTop = (\n verticalDirection: OverlayVerticalDirection,\n referenceElement?: HTMLElement | ExtendedHTMLElement,\n referencePoint?: { top: number; left?: number }\n ): number => {\n const referenceRectangle =\n referenceElement !== undefined\n ? referenceElement.getBoundingClientRect()\n : referencePoint !== undefined\n ? { top: referencePoint.top, height: 0 }\n : { top: 0, height: 0 };\n\n switch (verticalDirection.toString()) {\n case OverlayVerticalDirection.TO_BOTTOM:\n return referenceRectangle.top + referenceRectangle.height + OVERLAY_MARGIN;\n case OverlayVerticalDirection.START_TO_BOTTOM:\n return referenceRectangle.top;\n case OverlayVerticalDirection.TO_TOP:\n return referenceRectangle.top - OVERLAY_MARGIN;\n case OverlayVerticalDirection.END_TO_TOP:\n return referenceRectangle.top + referenceRectangle.height;\n case OverlayVerticalDirection.CENTER:\n return referenceRectangle.top + referenceRectangle.height / 2;\n default:\n return referenceRectangle.top;\n }\n };\n\n public updateContent = (children: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>): void => {\n this.innerContainer.update({ children });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport {\n ReferenceTrackerInformation,\n SourceLink,\n} from '../../static';\nimport { CardBody } from '../card/card-body';\n\nexport interface SourceLinkBodyProps {\n suggestion: Partial<SourceLink>;\n children?: Array<ExtendedHTMLElement | HTMLElement | string | DomBuilderObject>;\n highlightRangeWithTooltip?: ReferenceTrackerInformation[];\n}\nexport class SourceLinkBody {\n render: ExtendedHTMLElement;\n props: SourceLinkBodyProps;\n constructor (props: SourceLinkBodyProps) {\n this.props = props;\n this.render = new CardBody({\n highlightRangeWithTooltip: props.highlightRangeWithTooltip,\n body: this.props.suggestion.body ?? '',\n children: this.props.children,\n }).render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getTimeDiff } from '../../helper/date-time';\nimport { DomBuilder, DomBuilderObject, ExtendedHTMLElement } from '../../helper/dom';\nimport { getOrigin } from '../../helper/url';\nimport { SourceLink, SourceLinkMetaData } from '../../static';\nimport { Icon, MynahIcons } from '../icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from '../overlay';\nimport { SourceLinkCard } from './source-link';\n\nconst PREVIEW_DELAY = 500;\nexport interface SourceLinkHeaderProps {\n sourceLink: SourceLink;\n showCardOnHover?: boolean;\n onClick?: (e?: MouseEvent) => void;\n}\nexport class SourceLinkHeader {\n private sourceLinkPreview: Overlay | null;\n private sourceLinkPreviewTimeout: ReturnType<typeof setTimeout>;\n render: ExtendedHTMLElement;\n constructor (props: SourceLinkHeaderProps) {\n const splitUrl = props.sourceLink.url\n .replace(/^(http|https):\\/\\//, '')\n .split('/');\n if (splitUrl[splitUrl.length - 1].trim() === '') {\n splitUrl.pop();\n }\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-source-link-header' ],\n ...(props.showCardOnHover === true\n ? {\n events: {\n mouseenter: (e) => {\n this.showLinkPreview(e, props.sourceLink);\n },\n mouseleave: this.hideLinkPreview,\n }\n }\n : {}),\n attributes: {\n origin: getOrigin(props.sourceLink.url)\n },\n children: [\n {\n type: 'span',\n classNames: [ 'mynah-source-thumbnail' ]\n },\n {\n type: 'div',\n classNames: [ 'mynah-source-link-title-wrapper' ],\n children: [\n {\n type: 'a',\n classNames: [ 'mynah-source-link-title' ],\n events: {\n ...(props.onClick !== undefined && {\n click: props.onClick,\n }),\n },\n attributes: { href: props.sourceLink.url, target: '_blank' },\n children: [ props.sourceLink.title, {\n type: 'div',\n classNames: [ 'mynah-source-link-expand-icon' ],\n children: [ new Icon({ icon: MynahIcons.EXTERNAL }).render ],\n } ],\n },\n {\n type: 'a',\n classNames: [ 'mynah-source-link-url' ],\n events: {\n ...(props.onClick !== undefined && {\n click: props.onClick,\n }),\n },\n attributes: { href: props.sourceLink.url, target: '_blank' },\n innerHTML: splitUrl.map(urlPart => `<span>${urlPart}</span>`).join(''),\n },\n ...((props.sourceLink.metadata != null) ? [ this.getSourceMetaBlock(props.sourceLink.metadata) ] : []),\n ],\n },\n ],\n });\n }\n\n private readonly getSourceMetaBlock = (metadataUnion?: Record<string, SourceLinkMetaData>): DomBuilderObject => {\n const metaItems: any[] = [];\n if (metadataUnion !== null && metadataUnion !== undefined) {\n Object.keys(metadataUnion).forEach(metadataKey => {\n const metadata = metadataUnion[metadataKey];\n if (metadata.isAccepted === true) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item', 'approved-answer' ],\n children: [\n new Icon({ icon: MynahIcons.OK }).render,\n ]\n });\n }\n\n if (metadata.lastActivityDate !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.CALENDAR }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ getTimeDiff((new Date()).getTime() - metadata.lastActivityDate, 2) ]\n }\n ]\n });\n }\n\n if (metadata.answerCount !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.CHAT }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ metadata.answerCount.toString() ]\n }\n ]\n });\n }\n\n if (metadata.stars !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.STAR }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.stars.toString()} contributors` ]\n }\n ]\n });\n }\n\n if (metadata.forks !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.DOWN_OPEN }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.forks.toString()} forks` ]\n }\n ]\n });\n }\n\n if (metadata.score !== undefined) {\n metaItems.push({\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item' ],\n children: [\n new Icon({ icon: MynahIcons.THUMBS_UP }).render,\n {\n type: 'span',\n classNames: [ 'mynah-title-meta-block-item-text' ],\n children: [ `${metadata.score.toString()}` ]\n }\n ]\n });\n }\n });\n }\n\n return {\n type: 'span',\n classNames: [ 'mynah-title-meta-block' ],\n children: metaItems\n };\n };\n\n private readonly showLinkPreview = (e: MouseEvent, sourceLink: SourceLink): void => {\n if (sourceLink.body !== undefined) {\n clearTimeout(this.sourceLinkPreviewTimeout);\n this.sourceLinkPreviewTimeout = setTimeout(() => {\n const elm: HTMLElement = e.target as HTMLElement;\n this.sourceLinkPreview = new Overlay({\n background: false,\n closeOnOutsideClick: false,\n referenceElement: elm,\n dimOutside: false,\n removeOtherOverlays: true,\n verticalDirection: OverlayVerticalDirection.TO_TOP,\n horizontalDirection: OverlayHorizontalDirection.START_TO_RIGHT,\n children: [\n {\n type: 'div',\n classNames: [ 'mynah-chat-related-content-preview-wrapper' ],\n children: [\n new SourceLinkCard({ sourceLink }).render\n ]\n }\n ],\n });\n }, PREVIEW_DELAY);\n }\n };\n\n private readonly hideLinkPreview = (): void => {\n clearTimeout(this.sourceLinkPreviewTimeout);\n if (this.sourceLinkPreview !== null) {\n this.sourceLinkPreview?.close();\n this.sourceLinkPreview = null;\n }\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ExtendedHTMLElement } from '../../helper/dom';\nimport { SourceLink } from '../../static';\nimport { Card } from '../card/card';\nimport { SourceLinkBody } from './source-link-body';\nimport { SourceLinkHeader } from './source-link-header';\n\nexport interface SourceLinkCardProps {sourceLink: SourceLink; compact?: 'flat' | true}\nexport class SourceLinkCard {\n private readonly sourceLink: SourceLink;\n render: ExtendedHTMLElement;\n constructor (props: SourceLinkCardProps) {\n this.sourceLink = props.sourceLink;\n this.render = new Card({\n children: [\n new SourceLinkHeader({\n sourceLink: this.sourceLink\n }).render,\n ...(this.sourceLink.body !== undefined ? [ new SourceLinkBody({ suggestion: this.sourceLink }).render ] : []),\n ],\n }).render;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { highlightElement } from 'prismjs';\n\nimport 'prismjs/components/prism-markup.min';\nimport 'prismjs/components/prism-xml-doc.min';\nimport 'prismjs/components/prism-css.min';\nimport 'prismjs/components/prism-clike.min'; // default\nimport 'prismjs/components/prism-javascript.min';\nimport 'prismjs/components/prism-typescript.min';\nimport 'prismjs/components/prism-jsx.min';\nimport 'prismjs/components/prism-tsx.min';\nimport 'prismjs/components/prism-lua.min';\nimport 'prismjs/components/prism-java.min';\nimport 'prismjs/components/prism-json.min';\nimport 'prismjs/components/prism-markdown.min';\nimport 'prismjs/components/prism-mongodb.min';\nimport 'prismjs/components/prism-c.min';\nimport 'prismjs/components/prism-bash.min';\nimport 'prismjs/components/prism-csharp.min';\nimport 'prismjs/components/prism-objectivec.min';\nimport 'prismjs/components/prism-python.min';\nimport 'prismjs/components/prism-regex.min';\nimport 'prismjs/components/prism-scala.min';\nimport 'prismjs/components/prism-scss.min';\nimport 'prismjs/components/prism-less.min';\n\nimport 'prismjs/plugins/line-numbers/prism-line-numbers.js';\nimport 'prismjs/plugins/keep-markup/prism-keep-markup.js';\nimport {\n CodeSelectionType,\n OnCopiedToClipboardFunction,\n OnInsertToCursorPositionFunction,\n} from '../static';\nimport { Button } from './button';\nimport { Notification } from './notification';\nimport { Icon, MynahIcons } from './icon';\nimport { cancelEvent } from '../helper/events';\nimport { Config } from '../helper/config';\nimport { highlightersWithTooltip } from './card/card-body';\nimport escapeHTML from 'escape-html';\nimport unescapeHTML from 'unescape-html';\n\nconst IMPORTED_LANGS = [\n 'markup',\n 'xml',\n 'css',\n 'clike',\n 'javascript',\n 'typescript',\n 'jsx',\n 'tsx',\n 'lua',\n 'java',\n 'json',\n 'markdown',\n 'mongodb',\n 'c',\n 'bash',\n 'csharp',\n 'objectivec',\n 'python',\n 'regex',\n 'scala',\n 'scss',\n 'less',\n];\nconst DEFAULT_LANG = 'clike';\n\n// they'll be used to replaced within the code, so making them unique is a must\nexport const highlighters = {\n start: {\n markup: '<span class=\"amzn-mynah-search-result-highlight\">',\n textReplacement: '__mynahhighlighterstart__',\n },\n end: {\n markup: '</span>',\n textReplacement: '__mynahhighlighterend__',\n },\n};\nexport const ellipsis = {\n start: {\n markup: '<span class=\"amzn-mynah-search-result-ellipsis\">',\n textReplacement: '__mynahcodeellipsisstart__',\n },\n end: {\n markup: '</span>',\n textReplacement: '__mynahcodeellipsisend__',\n },\n};\n\nexport interface SyntaxHighlighterProps {\n codeStringWithMarkup: string;\n language?: string;\n keepHighlights?: boolean;\n showLineNumbers?: boolean;\n block?: boolean;\n startingLineNumber?: number;\n showCopyOptions?: boolean;\n onCopiedToClipboard?: OnCopiedToClipboardFunction;\n onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n}\n\nexport class SyntaxHighlighter {\n private readonly onCopiedToClipboard?: OnCopiedToClipboardFunction;\n private readonly onInsertToCursorPosition?: OnInsertToCursorPositionFunction;\n render: ExtendedHTMLElement;\n\n constructor (props: SyntaxHighlighterProps) {\n this.onCopiedToClipboard = props.onCopiedToClipboard;\n this.onInsertToCursorPosition = props.onInsertToCursorPosition;\n\n let codeMarkup = unescapeHTML(props.codeStringWithMarkup);\n // Replacing the incoming markups with keyword matching static texts\n if (props.keepHighlights === true) {\n codeMarkup = codeMarkup\n .replace(new RegExp(highlighters.start.markup, 'g'), highlighters.start.textReplacement)\n .replace(new RegExp(highlighters.end.markup, 'g'), highlighters.end.textReplacement)\n .replace(new RegExp(ellipsis.start.markup, 'g'), ellipsis.start.textReplacement)\n .replace(new RegExp(ellipsis.end.markup, 'g'), ellipsis.end.textReplacement);\n }\n\n let escapedCodeBlock = escapeHTML(codeMarkup);\n\n // Convert reference tracker escaped markups back to original incoming from the parent\n escapedCodeBlock = escapedCodeBlock\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.start.markupStart), 'g'), highlightersWithTooltip.start.markupStart)\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.start.markupEnd), 'g'), highlightersWithTooltip.start.markupEnd)\n .replace(new RegExp(escapeHTML(highlightersWithTooltip.end.markup), 'g'), highlightersWithTooltip.end.markup);\n\n const preElement = DomBuilder.getInstance().build({\n type: 'pre',\n classNames: [ 'keep-markup',\n `language-${props.language !== undefined && IMPORTED_LANGS.includes(props.language) ? props.language : DEFAULT_LANG}`,\n ...(props.showLineNumbers === true ? [ 'line-numbers' ] : []),\n ],\n children: [\n {\n type: 'code',\n innerHTML: escapedCodeBlock,\n }\n ],\n events: {\n copy: (e) => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCodeContextMenu();\n if (selectedCode.code.length > 0) { this.copyToClipboard(selectedCode.code, selectedCode.type); }\n }\n }\n });\n highlightElement(preElement);\n\n // replacing back the keyword matchings for incoming highlights to markup for highlighting code\n if (props.keepHighlights === true) {\n preElement.innerHTML = preElement.innerHTML\n .replace(new RegExp(highlighters.start.textReplacement, 'g'), highlighters.start.markup)\n .replace(new RegExp(highlighters.end.textReplacement, 'g'), highlighters.end.markup)\n .replace(new RegExp(ellipsis.start.textReplacement, 'g'), ellipsis.start.markup)\n .replace(new RegExp(ellipsis.end.textReplacement, 'g'), ellipsis.end.markup);\n }\n\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-syntax-highlighter',\n ...(props.block !== true ? [ 'mynah-inline-code' ] : []),\n ],\n children: [\n ...(props.showCopyOptions === true\n ? [\n {\n type: 'div',\n classNames: [ 'mynah-syntax-highlighter-copy-buttons' ],\n children: [\n ...(props.language !== undefined\n ? [ {\n type: 'span',\n classNames: [ 'mynah-syntax-highlighter-language' ],\n children: [ props.language ]\n } ]\n : []),\n new Button({\n icon: new Icon({ icon: MynahIcons.CURSOR_INSERT }).render,\n label: Config.getInstance().config.texts.insertAtCursorLabel,\n attributes: { title: Config.getInstance().config.texts.insertAtCursorLabel },\n primary: false,\n onClick: e => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCode();\n if (this.onInsertToCursorPosition !== undefined) {\n this.onInsertToCursorPosition(\n selectedCode.type,\n selectedCode.code,\n );\n }\n },\n additionalEvents: { mousedown: cancelEvent },\n }).render,\n new Button({\n icon: new Icon({ icon: MynahIcons.COPY }).render,\n label: Config.getInstance().config.texts.copy,\n attributes: { title: Config.getInstance().config.texts.copy },\n primary: false,\n onClick: e => {\n cancelEvent(e);\n const selectedCode = this.getSelectedCode();\n this.copyToClipboard(selectedCode.code, selectedCode.type);\n },\n additionalEvents: { mousedown: cancelEvent },\n }).render,\n ],\n },\n ]\n : []),\n preElement,\n ...(props.showLineNumbers === true\n ? [\n {\n type: 'span',\n classNames: [ 'line-numbers-rows' ],\n children: (preElement.innerHTML).split(/\\n/).slice(0, -1).map((n: string, i: number) => ({\n type: 'span',\n innerHTML: String(i + (props.startingLineNumber ?? 1)),\n })),\n }\n ]\n : [])\n ],\n });\n }\n\n private readonly getSelectedCodeContextMenu = (): {\n code: string;\n type: CodeSelectionType;\n } => ({\n code: document.getSelection()?.toString() ?? '',\n type: 'selection'\n });\n\n private readonly getSelectedCode = (): {\n code: string;\n type: CodeSelectionType;\n } => ({\n code: this.render.querySelector('pre')?.innerText ?? '',\n type: 'block'\n });\n\n private readonly copyToClipboard = (\n textToSendClipboard: string,\n type?: CodeSelectionType,\n notificationText?: string,\n ): void => {\n if (!document.hasFocus()) {\n window.focus();\n }\n navigator.clipboard\n .writeText(textToSendClipboard)\n .then(() => {\n if (this.onCopiedToClipboard !== undefined) {\n this.onCopiedToClipboard(\n type,\n textToSendClipboard,\n // this.highlightRangeWithTooltip\n );\n }\n if (notificationText !== undefined) {\n // eslint-disable no-new\n new Notification({\n content: notificationText,\n title: Config.getInstance().config.texts.copyToClipboard,\n duration: 2000,\n }).notify();\n }\n })\n .catch(e => {\n //\n });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// eslint-disable @typescript-eslint/restrict-template-expressions\nimport { DomBuilder, ExtendedHTMLElement } from '../helper/dom';\nimport { cancelEvent } from '../helper/events';\nimport { Button } from './button';\nimport { Icon, MynahIcons } from './icon';\nimport { Overlay, OverlayHorizontalDirection, OverlayVerticalDirection } from './overlay';\n\nexport interface ToggleOption {\n label?: ExtendedHTMLElement | string | HTMLElement;\n icon?: MynahIcons;\n disabled?: boolean;\n selected?: boolean;\n value: string;\n disabledTooltip?: string | ExtendedHTMLElement;\n}\ninterface ToggleOptionRenderProps extends ToggleOption {\n name: string;\n onChange?: (selectedValue: string) => void;\n onRemove?: (selectedValue: string) => void;\n}\nclass ToggleOptionItem {\n render: ExtendedHTMLElement;\n private readonly props: ToggleOptionRenderProps;\n private disabledTooltip?: Overlay;\n private disabledTooltipTimer: ReturnType<typeof setTimeout>;\n constructor (props: ToggleOptionRenderProps) {\n this.props = props;\n this.render = DomBuilder.getInstance().build({\n type: 'span',\n attributes: {\n key: `${this.props.name}-${this.props.value}`,\n title: this.props.label as string ?? '',\n },\n events: {\n ...(this.props.disabled === true && this.props.disabledTooltip !== undefined\n ? {\n mouseenter: () => {\n this.disabledTooltipTimer = setTimeout(() => {\n this.disabledTooltip = new Overlay({\n children: [ {\n type: 'span',\n classNames: [ 'mynah-toggle-disabled-tooltip-container' ],\n children: [ this.props.disabledTooltip ?? '' ]\n } ],\n closeOnOutsideClick: false,\n dimOutside: false,\n referenceElement: this.render,\n horizontalDirection: OverlayHorizontalDirection.CENTER,\n verticalDirection: OverlayVerticalDirection.TO_TOP\n });\n }, 500);\n },\n mouseleave: () => {\n clearTimeout(this.disabledTooltipTimer);\n if (this.disabledTooltip !== undefined) {\n this.disabledTooltip.close();\n setTimeout(() => {\n this.disabledTooltip = undefined;\n }, 50);\n }\n }\n }\n : {})\n },\n children: [\n {\n type: 'input',\n classNames: [ 'mynah-toggle-option' ],\n attributes: {\n type: 'radio',\n id: `${this.props.name}-${this.props.value}`,\n value: this.props.value,\n name: this.props.name,\n ...(this.props.selected === true ? { checked: 'checked' } : {}),\n ...(this.props.disabled === true ? { disabled: 'disabled' } : {}),\n },\n events: {\n change: () => {\n if (this.props.onChange != null) {\n this.props.onChange(this.props.value);\n }\n }\n },\n },\n {\n type: 'label',\n classNames: [ 'mynah-toggle-option-label' ],\n attributes: {\n for: `${this.props.name}-${this.props.value}`,\n },\n events: {\n dblclick: (e) => {\n cancelEvent(e);\n },\n auxclick: () => {\n if (this.props.onRemove !== undefined) {\n this.props.onRemove(this.props.value);\n }\n }\n },\n children: [\n this.props.icon !== undefined ? new Icon({ icon: props.icon as MynahIcons }).render : '',\n {\n type: 'span',\n classNames: [ 'mynah-toggle-option-label-text' ],\n children: [ this.props.label ?? '' ]\n },\n this.props.onRemove !== undefined\n ? new Button({\n classNames: [ 'mynah-toggle-close-button' ],\n onClick: () => {\n if (this.props.onRemove !== undefined) {\n this.props.onRemove(this.props.value);\n }\n },\n icon: new Icon({ icon: MynahIcons.CANCEL }).render,\n primary: false\n }).render\n : ''\n ],\n },\n ],\n });\n }\n}\nexport interface ToggleProps {\n options: ToggleOption[];\n direction?: 'horizontal' | 'vertical';\n value?: string | null;\n name: string;\n disabled?: boolean;\n onChange?: (selectedValue: string) => void;\n onRemove?: (selectedValue: string) => void;\n}\nexport class Toggle {\n render: ExtendedHTMLElement;\n private readonly props: ToggleProps;\n private currentValue?: string | null;\n\n constructor (props: ToggleProps) {\n this.props = { direction: 'horizontal', ...props };\n this.currentValue = this.props.value;\n this.render = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-toggle-container', 'mynah-toggle-type-tabs', `mynah-toggle-direction-${this.props.direction as string}` ],\n attributes: { disabled: props.disabled === true ? 'disabled' : '' },\n children: this.getChildren(props.value),\n events: {\n wheel: this.transformScroll\n }\n });\n }\n\n private readonly transformScroll = (e: WheelEvent): void => {\n if (e.deltaY === 0) {\n return;\n }\n this.render.scrollLeft += e.deltaY;\n cancelEvent(e);\n };\n\n private readonly getChildren = (value?: string | null): any[] => [\n ...this.props.options.map(option => {\n return new ToggleOptionItem({\n ...option,\n selected: value === option.value,\n name: this.props.name,\n onChange: this.updateSelectionRender,\n onRemove: this.props.onRemove\n }).render;\n })\n ];\n\n private readonly updateSelectionRender = (value: string): void => {\n if (this.props.onChange !== undefined) {\n this.props.onChange(value);\n }\n };\n\n setValue = (value: string): void => {\n if (value !== this.getValue()) {\n this.currentValue = value;\n const elmToCheck = this.render.querySelector(`#${this.props.name}-${value}`);\n if (elmToCheck !== undefined) {\n (elmToCheck as HTMLInputElement).click();\n (elmToCheck as HTMLInputElement).checked = true;\n ((elmToCheck as HTMLInputElement).nextSibling as HTMLLabelElement).classList.remove('indication');\n }\n }\n };\n\n addOption = (option: ToggleOption): void => {\n this.props.options.push(option);\n this.render.appendChild(new ToggleOptionItem({\n ...option,\n name: this.props.name,\n onChange: this.updateSelectionRender,\n onRemove: this.props.onRemove\n }).render);\n if (option.selected === true) {\n this.setValue(option.value);\n this.snapToOption(option.value);\n }\n };\n\n removeOption = (value: string): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck = this.render.querySelector(`span[key=\"${this.props.name}-${value}\"]`);\n if (elmToCheck !== undefined) {\n elmToCheck?.remove();\n }\n };\n\n updateOptionTitle = (value: string, title: string): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck = this.render.querySelector(`span[key=\"${this.props.name}-${value}\"] .mynah-toggle-option-label-text`);\n if (elmToCheck !== undefined) {\n (elmToCheck as HTMLSpanElement).innerHTML = title;\n }\n };\n\n updateOptionIndicator = (value: string, indication: boolean): void => {\n this.props.options = this.props.options.filter(option => option.value !== value);\n const elmToCheck: HTMLLabelElement | null = this.render.querySelector(`label[for=\"${this.props.name}-${value}\"]`);\n if (elmToCheck !== null) {\n if (indication && value !== this.getValue()) {\n elmToCheck.classList.add('indication');\n } else {\n elmToCheck.classList.remove('indication');\n }\n }\n };\n\n snapToOption = (value: string): void => {\n const elmToCheck = this.render.querySelector(`#${this.props.name}-${value}`);\n if (elmToCheck !== undefined) {\n this.render.scrollLeft = (elmToCheck?.parentNode as HTMLElement).offsetLeft;\n }\n };\n\n getValue = (): string | undefined | null => this.currentValue;\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ConfigModel } from '../static';\n\nconst configDefaults: ConfigModel = {\n maxTabs: 1000,\n feedbackOptions: [\n {\n value: 'inaccurate-response',\n label: 'Inaccurate response',\n },\n {\n value: 'harmful-content',\n label: 'Harmful content'\n },\n {\n value: 'overlap',\n label: 'Overlaps with existing content'\n },\n {\n value: 'incorrect-syntax',\n label: 'Incorrect syntax'\n },\n {\n value: 'buggy-code',\n label: 'Buggy code'\n },\n {\n value: 'low-quality',\n label: 'Low quality'\n },\n {\n value: 'other',\n label: 'Other'\n }\n ],\n texts: {\n mainTitle: 'AWS Q',\n copy: 'Copy',\n insertAtCursorLabel: 'Insert at cursor',\n feedbackFormTitle: 'Report an issue',\n feedbackFormOptionsLabel: 'What type of issue would you like to report?',\n feedbackFormCommentLabel: 'Description of issue (optional):',\n feedbackThanks: 'Thanks!',\n feedbackReportButtonLabel: 'Report an issue',\n codeSuggestions: 'Code Suggestions',\n files: 'file(s)',\n clickFileToViewDiff: 'Click on a file to view diff.',\n showMore: 'Show more',\n save: 'Save',\n cancel: 'Cancel',\n submit: 'Submit',\n stopGenerating: 'Stop generating',\n copyToClipboard: 'Copied to clipboard',\n noMoreTabsTooltip: 'You\\'ve reached maximum number of tabs you can simultaneously use.',\n codeSuggestionWithReferenceTitle: 'Some suggestions contain code with references.'\n }\n};\nexport class Config {\n private static instance: Config;\n public config: ConfigModel;\n private constructor (config?: Partial<ConfigModel>) {\n this.config = { ...configDefaults, ...config };\n }\n\n public static getInstance (config?: Partial<ConfigModel>): Config {\n if (Config.instance === undefined) {\n Config.instance = new Config(config);\n }\n\n return Config.instance;\n }\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const getTimeDiff = (differenceInMs: number, show?: {\n years?: boolean;\n months?: boolean;\n weeks?: boolean;\n days?: boolean;\n hours?: boolean;\n minutes?: boolean;\n} | 1 | 2 | 3 | 4 | 5 | 6, separator?: string): string => {\n // get total seconds for the difference\n let delta = Math.abs(differenceInMs) / 1000;\n\n // calculate (and subtract) whole years\n const years = Math.floor(delta / (86_400 * 30 * 12));\n delta -= years * (86_400 * 30 * 12);\n\n // calculate (and subtract) whole months\n const months = Math.floor(delta / (86_400 * 30));\n delta -= months * (86_400 * 30);\n\n // calculate (and subtract) whole weeks\n const weeks = Math.floor(delta / (86_400 * 7));\n delta -= weeks * (86_400 * 7);\n\n // calculate (and subtract) whole days\n const days = Math.floor(delta / 86_400);\n delta -= days * 86_400;\n\n // calculate (and subtract) whole hours\n const hours = Math.floor(delta / 3_600) % 24;\n delta -= hours * 3_600;\n\n // calculate (and subtract) whole minutes\n const minutes = Math.floor(delta / 60) % 60;\n delta -= minutes * 60;\n\n const combined = [];\n if (years !== 0 && (show === undefined || typeof show !== 'object' || show.years !== false)) {\n combined.push(`${years}yr`);\n }\n if (months !== 0 && (show === undefined || typeof show !== 'object' || show.months !== false)) {\n combined.push(`${months}mo`);\n }\n if (weeks !== 0 && (show === undefined || typeof show !== 'object' || show.weeks !== false)) {\n combined.push(`${weeks}we`);\n }\n if (days !== 0 && (show === undefined || typeof show !== 'object' || show.days !== false)) {\n combined.push(`${days}da`);\n }\n if (hours !== 0 && (show === undefined || typeof show !== 'object' || show.hours !== false)) {\n combined.push(`${hours}hr`);\n }\n if (minutes !== 0 && (show === undefined || typeof show !== 'object' || show.minutes !== false)) {\n combined.push(`${minutes}min`);\n }\n\n if (years + months + weeks + days + hours + minutes === 0) {\n return '1min';\n }\n\n if (show !== undefined && typeof show === 'number') {\n combined.splice(show, combined.length);\n }\n return combined.join(separator ?? ' ');\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MynahPortalNames } from '../static';\nimport { cancelEvent } from './events';\n\n/* eslint-disable @typescript-eslint/method-signature-style */\n/* eslint-disable @typescript-eslint/consistent-type-assertions */\n/* eslint-disable @typescript-eslint/prefer-optional-chain */\n/* eslint-disable @typescript-eslint/strict-boolean-expressions */\nexport const DS: typeof document.querySelectorAll = document.querySelectorAll.bind(document);\n\nexport interface DomBuilderObject {\n type: string;\n attributes?: Record<string, string> | undefined;\n classNames?: string[] | undefined;\n events?: Record<string, (event?: any) => any> | undefined;\n children?: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement> | undefined;\n innerHTML?: string | undefined;\n persistent?: boolean | undefined;\n}\n\nexport interface DomBuilderObjectFilled {\n attributes?: Record<string, string | undefined>;\n classNames?: string[];\n events?: Record<string, (event?: any) => any>;\n children?: Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>;\n innerHTML?: string | undefined;\n persistent?: boolean;\n}\n\nconst EmptyDomBuilderObject: DomBuilderObject = {\n type: 'div',\n attributes: {},\n classNames: [],\n events: {},\n children: [],\n innerHTML: undefined,\n persistent: false,\n};\n\nexport interface ExtendedHTMLElement extends HTMLInputElement {\n addClass(className: string): ExtendedHTMLElement;\n removeClass(className: string): ExtendedHTMLElement;\n toggleClass(className: string): ExtendedHTMLElement;\n hasClass(className: string): boolean;\n insertChild(\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend',\n child:\n | string\n | DomBuilderObject\n | HTMLElement\n | ExtendedHTMLElement\n | Array<string | DomBuilderObject | HTMLElement | ExtendedHTMLElement>\n ): ExtendedHTMLElement;\n clear(removePersistent?: boolean): ExtendedHTMLElement;\n builderObject: DomBuilderObject;\n update(builderObject: DomBuilderObjectFilled): ExtendedHTMLElement;\n}\n\nexport class DomBuilder {\n private static instance: DomBuilder;\n root: ExtendedHTMLElement;\n private portals: Record<string, ExtendedHTMLElement> = {};\n\n private constructor (rootSelector: string) {\n this.root = DS(rootSelector)[0] as ExtendedHTMLElement;\n this.extendDomFunctionality(this.root);\n }\n\n public static getInstance (rootSelector?: string): DomBuilder {\n if (!DomBuilder.instance) {\n DomBuilder.instance = new DomBuilder(rootSelector !== undefined ? rootSelector : 'body');\n }\n\n return DomBuilder.instance;\n }\n\n addClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n if (className !== '') {\n this.classList.add(className);\n // eslint-disable-next-line @typescript-eslint/prefer-includes\n if (this.builderObject.classNames?.indexOf(className) === -1) {\n this.builderObject.classNames = [ ...this.builderObject.classNames, className ];\n }\n }\n return this;\n };\n\n removeClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n this.classList.remove(className);\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (this.builderObject.classNames !== undefined && this.builderObject.classNames.includes(className)) {\n this.builderObject.classNames.splice(this.builderObject.classNames.indexOf(className), 1);\n }\n return this;\n };\n\n toggleClass = function (this: ExtendedHTMLElement, className: string): ExtendedHTMLElement {\n if (this.classList.contains(className)) {\n this.removeClass(className);\n } else {\n this.addClass(className);\n }\n return this;\n };\n\n hasClass = function (this: ExtendedHTMLElement, className: string): boolean {\n return this.classList.contains(className);\n };\n\n insertChild = function (\n this: ExtendedHTMLElement,\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend',\n child: string | HTMLElement | ExtendedHTMLElement | Array<string | HTMLElement | ExtendedHTMLElement>\n ): ExtendedHTMLElement {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (child) {\n if (child instanceof Array) {\n child.forEach(childItem => {\n if (childItem instanceof Element) {\n this.insertAdjacentElement(position, childItem);\n } else if (typeof childItem === 'string') {\n this.insertAdjacentText(position, childItem);\n }\n });\n } else {\n if (child instanceof Element) {\n this.insertAdjacentElement(position, child);\n } else if (typeof child === 'string') {\n this.insertAdjacentText(position, child);\n }\n }\n }\n return this;\n };\n\n clearChildren = function (this: ExtendedHTMLElement, removePersistent: boolean): ExtendedHTMLElement {\n Array.from(this.childNodes).forEach((child: ExtendedHTMLElement | ChildNode) => {\n if (\n removePersistent ||\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n !(child as ExtendedHTMLElement).builderObject ||\n (child as ExtendedHTMLElement).builderObject.persistent !== true\n ) {\n child.remove();\n }\n });\n return this;\n };\n\n extendDomFunctionality = function (this: DomBuilder, domElement: HTMLElement): ExtendedHTMLElement {\n const extendedElement: ExtendedHTMLElement = domElement as ExtendedHTMLElement;\n extendedElement.addClass = this.addClass.bind(extendedElement);\n extendedElement.removeClass = this.removeClass.bind(extendedElement);\n extendedElement.toggleClass = this.toggleClass.bind(extendedElement);\n extendedElement.hasClass = this.hasClass.bind(extendedElement);\n extendedElement.insertChild = this.insertChild.bind(extendedElement);\n extendedElement.clear = this.clearChildren.bind(extendedElement);\n return extendedElement;\n };\n\n build = (domBuilderObject: DomBuilderObject): ExtendedHTMLElement => {\n const readyToBuildObject: DomBuilderObject = { ...EmptyDomBuilderObject, ...domBuilderObject };\n const buildedDom = document.createElement(readyToBuildObject.type);\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n buildedDom.classList.add(...(readyToBuildObject.classNames?.filter(className => className !== '') || []));\n\n Object.keys(readyToBuildObject.events ?? {}).forEach((eventName: string) =>\n buildedDom.addEventListener(\n eventName,\n readyToBuildObject.events ? readyToBuildObject.events[eventName] : cancelEvent\n )\n );\n\n Object.keys(readyToBuildObject.attributes ?? {}).forEach(attributeName =>\n buildedDom.setAttribute(\n attributeName,\n readyToBuildObject.attributes !== undefined ? readyToBuildObject.attributes[attributeName] : ''\n )\n );\n\n if (typeof readyToBuildObject.innerHTML === 'string') {\n buildedDom.innerHTML = readyToBuildObject.innerHTML;\n } else if (readyToBuildObject.children !== undefined && readyToBuildObject.children?.length > 0) {\n this.insertChild.apply(buildedDom as ExtendedHTMLElement, [\n 'beforeend',\n [\n ...(readyToBuildObject.children).map(\n (child: string | ExtendedHTMLElement | HTMLElement | DomBuilderObject) => {\n if (typeof child === 'string' || child instanceof HTMLElement) {\n return child;\n }\n return this.build(child);\n }\n ),\n ],\n ]);\n };\n\n (buildedDom as ExtendedHTMLElement).builderObject = readyToBuildObject;\n (buildedDom as ExtendedHTMLElement).update = (builderObject: DomBuilderObjectFilled): ExtendedHTMLElement => {\n return this.update(buildedDom as ExtendedHTMLElement, builderObject);\n };\n this.extendDomFunctionality(buildedDom);\n return buildedDom as ExtendedHTMLElement;\n };\n\n update = function (\n domToUpdate: ExtendedHTMLElement,\n domBuilderObject: DomBuilderObjectFilled\n ): ExtendedHTMLElement {\n if (domToUpdate.builderObject) {\n if (domBuilderObject.classNames !== undefined) {\n domToUpdate.classList.remove(...(domToUpdate.builderObject.classNames as string[]));\n domToUpdate.classList.add(...domBuilderObject.classNames.filter(className => className !== ''));\n }\n\n Object.keys(domBuilderObject.events ?? {}).forEach(eventName => {\n if (domToUpdate.builderObject.events !== undefined && domToUpdate.builderObject.events[eventName]) {\n domToUpdate.removeEventListener(eventName, domToUpdate.builderObject.events[eventName]);\n }\n if (domBuilderObject.events !== undefined && domBuilderObject.events[eventName] !== undefined) {\n domToUpdate.addEventListener(eventName, domBuilderObject.events[eventName]);\n }\n });\n\n Object.keys(domBuilderObject.attributes ?? {}).forEach(attributeName => {\n if (\n domBuilderObject.attributes !== undefined &&\n domBuilderObject.attributes[attributeName] === undefined\n ) {\n domToUpdate.removeAttribute(attributeName);\n } else if (domBuilderObject.attributes !== undefined) {\n domToUpdate.setAttribute(attributeName, domBuilderObject.attributes[attributeName] as string);\n }\n });\n\n if (typeof domBuilderObject.innerHTML === 'string') {\n domToUpdate.innerHTML = domBuilderObject.innerHTML;\n } else if (domBuilderObject.children !== undefined && domBuilderObject.children.length > 0) {\n domToUpdate.clear();\n domToUpdate.insertChild('beforeend', domBuilderObject.children);\n }\n\n domToUpdate.builderObject = { ...EmptyDomBuilderObject, ...domBuilderObject } as DomBuilderObject;\n } else {\n console.warn('element was not created with dom builder');\n }\n return domToUpdate;\n };\n\n createPortal = (\n portalName: string,\n builderObject: DomBuilderObject,\n position: 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend'\n ): ExtendedHTMLElement => {\n const portalDom = this.build(builderObject);\n this.root.insertChild(position || 'beforeend', portalDom);\n this.portals[portalName] = portalDom;\n return portalDom;\n };\n\n getPortal = (portalName: string): ExtendedHTMLElement => this.portals[portalName];\n removePortal = (portalName: string): void => this.portals[portalName]?.remove();\n removeAllPortals = (portalsWithName: MynahPortalNames): void => {\n Object.keys(this.portals).forEach(portalName => {\n if (portalName.match(portalsWithName) !== null) {\n this.portals[portalName].remove();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.portals[portalName];\n }\n });\n };\n}\n\nexport const htmlDecode = (input: string): string => {\n const e = document.createElement('textarea');\n e.innerHTML = input;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue ?? input;\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahEventNames } from '../static';\nimport { generateUID } from './guid';\n\nexport const cancelEvent = (event: Event): boolean => {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n return false;\n};\n\nexport class MynahUIGlobalEvents {\n private static instance: MynahUIGlobalEvents;\n private readonly listeners: Record<MynahEventNames, Record<string, (value?: any) => void>>;\n\n private constructor () {\n this.listeners = { ...this.listeners };\n }\n\n public static getInstance = (): MynahUIGlobalEvents => {\n if (MynahUIGlobalEvents.instance === undefined) {\n MynahUIGlobalEvents.instance = new MynahUIGlobalEvents();\n }\n\n return MynahUIGlobalEvents.instance;\n };\n\n /**\n * Subscribe to value changes of a specific item in data store\n * @param eventKey One of the keys in MynahUIDataModel\n * @param handler function will be called with optional data field\n * @returns listenerId which will be necessary to removeListener\n */\n public addListener = (eventKey: MynahEventNames, handler: (data?: any) => void): string => {\n const listenerId: string = generateUID();\n if (this.listeners[eventKey] === undefined) {\n this.listeners[eventKey] = {};\n }\n this.listeners[eventKey][listenerId] = handler;\n return listenerId;\n };\n\n /**\n * Unsubscribe from changes of a specific item in data store\n * @param eventKey One of the keys in MynahUIDataModel\n * @param listenerId listenerId which is returned from addListener function\n */\n public removeListener = (eventKey: MynahEventNames, listenerId: string): void => {\n if (this.listeners[eventKey]?.[listenerId] !== undefined) {\n delete this.listeners[eventKey][listenerId];\n }\n };\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public dispatch = (eventKey: MynahEventNames, data?: any): void => {\n if (this.listeners[eventKey] !== undefined) {\n Object.keys(this.listeners[eventKey]).forEach((listenerId: string) => {\n this.listeners[eventKey][listenerId](data);\n });\n }\n };\n}\n","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type TreeNode = FolderNode | FileNode;\nexport interface FileNode {\n name: string;\n type: 'file';\n filePath: string;\n deleted: boolean;\n}\nexport interface FolderNode {\n name: string;\n type: 'folder';\n children: Array<FolderNode | FileNode>;\n}\n\n/*\n * Converts a list of file Paths into a tree\n *\n * @input: The list of path in string format\n * Example Input:\n * modifiedFilePaths: [\n * \"project/src/hello.js\",\n * ]\n * deletedFilePaths: [\n * \"project/src/goodbye.js\",\n * ]\n *\n * Example output:\n * {\n * name: 'Changes',\n * type: 'folder',\n * children: [{\n * name: 'project',\n * type: 'folder',\n * children: [{\n * name: 'src',\n * type: 'folder',\n * children: [\n * { name: 'hello.js', type: 'file', filePath: 'project/src/hello.js', deleted: false },\n * { name: 'goodbye.js', type: 'file', filePath: 'project/src/goodbye.js', deleted: true },\n * ]\n * }]\n * }]\n * }\n */\nexport const fileListToTree = (modifiedFilePaths: string[], deletedFilePaths: string[] = []): TreeNode => {\n return [ ...splitFilePaths(modifiedFilePaths, false), ...splitFilePaths(deletedFilePaths, true) ].reduce<TreeNode>(\n (acc, { filePath, deleted }) => {\n // pointer to keep track of the current tree node\n let currentNode = acc;\n for (let i = 0; i < filePath.length; i++) {\n const fileOrFolder = filePath[i];\n // we can assume the leaf of each branch is a file. the LLM doesn't generate\n // empty folder changes\n if (i === filePath.length - 1) {\n // the parent of a file is always a folder\n (currentNode as FolderNode).children.push({\n type: 'file',\n name: fileOrFolder,\n filePath: filePath.join('/'),\n deleted,\n });\n break;\n } else {\n const oldItem = (currentNode as FolderNode).children.find(({ name }) => name === fileOrFolder);\n if (oldItem != null) {\n currentNode = oldItem;\n } else {\n // if the current fileOrFolder is not in the list, add it as a folder and move the pointer\n const newItem: FolderNode = { name: fileOrFolder, type: 'folder', children: [] };\n (currentNode as FolderNode).children.push(newItem);\n currentNode = newItem;\n }\n }\n }\n return acc;\n },\n // Start off with a root folder called Changes\n { name: 'Changes', type: 'folder', children: [] }\n );\n};\n\nconst splitFilePaths = (paths: string[], deleted: boolean): Array<{ filePath: string[]; deleted: boolean }> =>\n paths\n // split file path by folder. ignore dot folders\n .map(filePath => ({ filePath: filePath.split('/').filter(item => item !== undefined && item !== '.'), deleted }));\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const generateUID = (): string => {\n const firstPart: number = (Math.random() * 46656) | 0;\n const secondPart: number = (Math.random() * 46656) | 0;\n return `000${firstPart.toString(36)}`.slice(-3) + `000${secondPart.toString(36)}`.slice(-3);\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahEventNames, MynahUIDataModel } from '../static';\nimport { Config } from './config';\nimport { MynahUIGlobalEvents } from './events';\nimport { generateUID } from './guid';\n\nconst PrimitiveObjectTypes = [ 'string', 'number', 'boolean' ];\nexport class EmptyMynahUIDataModel {\n data: Required<MynahUIDataModel>;\n constructor (defaults?: MynahUIDataModel | null) {\n this.data = {\n tabTitle: Config.getInstance().config.texts.mainTitle,\n loadingChat: false,\n cancelButtonWhenLoading: true,\n showChatAvatars: false,\n quickActionCommands: [],\n promptInputPlaceholder: '',\n promptInputInfo: '',\n promptInputDisabledState: false,\n chatItems: [],\n selectedCodeSnippet: '',\n ...defaults\n };\n }\n}\nexport class MynahUIDataStore {\n private readonly subscriptions: Record<keyof MynahUIDataModel, Record<string, (newValue?: any, oldValue?: any) => void>>;\n private readonly tabId: string;\n private store: Required<MynahUIDataModel> = (new EmptyMynahUIDataModel()).data;\n private defaults: MynahUIDataModel | null = null;\n\n constructor (tabId: string, initialData?: MynahUIDataModel) {\n this.tabId = tabId;\n this.store = Object.assign(this.store, initialData);\n this.subscriptions = Object.create({});\n (Object.keys(this.store) as Array<keyof MynahUIDataModel>).forEach((storeKey) => {\n Object.assign(this.subscriptions, { [storeKey]: {} });\n });\n }\n\n /**\n * Sets the defaults to use while clearing the store\n * @param defaults partial set of MynahUIDataModel for defaults\n */\n public setDefaults = (defaults: MynahUIDataModel | null): void => {\n this.defaults = defaults;\n };\n\n /**\n * Get the defaults to use while generating an empty store data\n */\n public getDefaults = (): MynahUIDataModel | null => this.defaults;\n\n /**\n * Subscribe to value changes of a specific item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @param handler function will be called when value of the given key is updated in store with new and old values\n * @returns subscriptionId which needed to unsubscribe\n */\n public subscribe = (storeKey: keyof MynahUIDataModel, handler: (newValue: any, oldValue?: any) => void): string => {\n const subscriptionId: string = generateUID();\n this.subscriptions[storeKey][subscriptionId] = handler;\n return subscriptionId;\n };\n\n /**\n * Unsubscribe from changes of a specific item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @param subscriptionId subscriptionId which is returned from subscribe function\n */\n public unsubscribe = (storeKey: keyof MynahUIDataModel, subscriptionId: string): void => {\n if (this.subscriptions[storeKey]?.[subscriptionId] !== undefined) {\n delete this.subscriptions[storeKey][subscriptionId];\n }\n };\n\n /**\n * Returns current value of an item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @returns value of the given key in data store\n */\n public getValue = (storeKey: keyof MynahUIDataModel): any => structuredClone(this.store[storeKey]);\n\n /**\n * Returns current value of an item in data store\n * @param storeKey One of the keys in MynahUIDataModel\n * @returns value of the given key in data store\n */\n public getDefaultValue = (storeKey: keyof MynahUIDataModel): any => (new EmptyMynahUIDataModel(this.defaults)).data[storeKey];\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public updateStore = (data: MynahUIDataModel, skipSubscribers?: boolean): void => {\n if (skipSubscribers !== true) {\n (Object.keys(data) as Array<keyof MynahUIDataModel>).forEach(storeKey => {\n Object.keys(this.subscriptions[storeKey]).forEach((subscriptionId: string) => {\n if (!PrimitiveObjectTypes.includes(typeof data[storeKey]) || data[storeKey] !== this.store[storeKey]) {\n this.subscriptions[storeKey][subscriptionId](data[storeKey], this.store[storeKey]);\n }\n });\n });\n }\n this.store = Object.assign(structuredClone(this.store), data);\n };\n\n /**\n * Clears store data and informs all the subscribers\n */\n public resetStore = (): void => {\n this.updateStore((new EmptyMynahUIDataModel(structuredClone(this.defaults))).data);\n MynahUIGlobalEvents.getInstance().dispatch(MynahEventNames.RESET_STORE, { tabId: this.tabId });\n };\n}\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { MynahUIDataModel, MynahUITabStoreModel, MynahUITabStoreTab } from '../static';\nimport { Config } from './config';\nimport { generateUID } from './guid';\nimport { MynahUIDataStore } from './store';\n\ninterface TabStoreSubscription {\n 'add': Record<string, (tabId: string, tabData?: MynahUITabStoreTab) => void>;\n 'remove': Record<string, (tabId: string, newSelectedTab?: MynahUITabStoreTab) => void>;\n 'update': Record<string, (tabId: string, tabData?: MynahUITabStoreTab) => void>;\n 'selectedTabChange': Record<string, (tabId: string, previousSelectedTab?: MynahUITabStoreTab) => void>;\n}\nexport class EmptyMynahUITabsStoreModel {\n data: Required<MynahUITabStoreModel>;\n constructor () {\n const guid = generateUID();\n this.data = {\n [guid]: {\n isSelected: true,\n store: {},\n }\n };\n }\n}\nexport class MynahUITabsStore {\n private static instance: MynahUITabsStore;\n private readonly subscriptions: TabStoreSubscription = {\n add: {},\n remove: {},\n update: {},\n selectedTabChange: {}\n };\n\n private readonly tabDefaults: MynahUITabStoreTab = {};\n private readonly tabsStore: Required<MynahUITabStoreModel> = {};\n private readonly tabsDataStore: Record<string, MynahUIDataStore> = {};\n\n private constructor (initialData?: MynahUITabStoreModel, defaults?: MynahUITabStoreTab) {\n this.tabsStore = Object.assign(this.tabsStore, initialData);\n if (defaults != null) {\n this.tabDefaults = defaults;\n }\n if ((initialData != null) && Object.keys(initialData).length > 0) {\n Object.keys(initialData).forEach((tabId: string) => {\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId, initialData[tabId].store ?? {});\n });\n }\n }\n\n private readonly deselectAllTabs = (): void => {\n Object.keys(this.tabsStore).forEach(tabId => {\n this.tabsStore[tabId].isSelected = false;\n });\n };\n\n public readonly addTab = (tabData?: MynahUITabStoreTab): string | undefined => {\n if (Object.keys(this.tabsStore).length < Config.getInstance().config.maxTabs) {\n const tabId = generateUID();\n this.deselectAllTabs();\n this.tabsStore[tabId] = { ...this.tabDefaults, ...tabData, isSelected: true };\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId, this.tabsStore[tabId].store ?? {});\n this.informSubscribers('add', tabId, this.tabsStore[tabId]);\n this.informSubscribers('selectedTabChange', tabId, this.tabsStore[tabId]);\n return tabId;\n }\n };\n\n public readonly removeTab = (tabId: string): string => {\n const wasSelected = this.tabsStore[tabId].isSelected ?? false;\n let newSelectedTab: MynahUITabStoreTab | undefined;\n delete this.tabsStore[tabId];\n this.tabsDataStore[tabId].resetStore();\n delete this.tabsDataStore[tabId];\n if (wasSelected) {\n const tabIds = Object.keys(this.tabsStore);\n if (tabIds.length > 0) {\n this.deselectAllTabs();\n this.selectTab(tabIds[tabIds.length - 1]);\n newSelectedTab = this.tabsStore[this.getSelectedTabId()];\n }\n }\n this.informSubscribers('remove', tabId, newSelectedTab);\n return tabId;\n };\n\n public readonly selectTab = (tabId: string): void => {\n this.deselectAllTabs();\n this.tabsStore[tabId].isSelected = true;\n this.informSubscribers('selectedTabChange', tabId, this.tabsStore[tabId]);\n };\n\n /**\n * Updates the store and informs the subscribers.\n * @param data A full or partial set of store data model with values.\n */\n public updateTab = (tabId: string, tabData?: Partial<MynahUITabStoreTab>, skipSubscribers?: boolean): void => {\n if (this.tabsStore[tabId] !== undefined) {\n if (tabData?.isSelected === true && this.getSelectedTabId() !== tabId) {\n this.deselectAllTabs();\n this.informSubscribers('selectedTabChange', tabId);\n }\n this.tabsStore[tabId] = { ...this.tabsStore[tabId], ...tabData };\n if (tabData?.store !== undefined) {\n if (this.tabsDataStore[tabId] === undefined) {\n this.tabsDataStore[tabId] = new MynahUIDataStore(tabId);\n }\n this.tabsDataStore[tabId].updateStore(tabData?.store);\n }\n if (skipSubscribers !== true) {\n this.informSubscribers('update', tabId, this.tabsStore[tabId]);\n }\n }\n };\n\n public static getInstance = (initialData?: MynahUITabStoreModel, defaults?: MynahUITabStoreTab): MynahUITabsStore => {\n if (MynahUITabsStore.instance === undefined) {\n MynahUITabsStore.instance = new MynahUITabsStore(initialData, defaults);\n }\n\n return MynahUITabsStore.instance;\n };\n\n /**\n * Subscribe to changes of the tabsStore\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public addListener = (eventName: keyof TabStoreSubscription, handler: (tabId: string, tabData?: MynahUITabStoreTab) => void): string => {\n const subscriptionId: string = generateUID();\n this.subscriptions[eventName][subscriptionId] = handler;\n return subscriptionId;\n };\n\n /**\n * Subscribe to changes of the tabs' data store\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public addListenerToDataStore = (tabId: string, storeKey: keyof MynahUIDataModel, handler: (newValue: any, oldValue?: any) => void): string | null => {\n if (this.tabsDataStore[tabId] !== undefined) {\n return this.tabsDataStore[tabId].subscribe(storeKey, handler);\n }\n return null;\n };\n\n /**\n * Unsubscribe from changes of the tabs' data store\n * @param handler function will be called when tabs changed\n * @returns subscriptionId which needed to unsubscribe\n */\n public removeListenerFromDataStore = (tabId: string, subscriptionId: string, storeKey: keyof MynahUIDataModel): void => {\n if (this.tabsDataStore[tabId] !== undefined) {\n this.tabsDataStore[tabId].unsubscribe(storeKey, subscriptionId);\n }\n };\n\n /**\n * Unsubscribe from changes of the tabs store\n * @param subscriptionId subscriptionId which is returned from subscribe function\n */\n public removeListener = (eventName: keyof TabStoreSubscription, subscriptionId: string): void => {\n if (this.subscriptions[eventName][subscriptionId] !== undefined) {\n delete this.subscriptions[eventName][subscriptionId];\n }\n };\n\n private readonly informSubscribers = (eventName: keyof TabStoreSubscription, tabId: string, tabData?: MynahUITabStoreTab): void => {\n const subscriberKeys = Object.keys(this.subscriptions[eventName]);\n subscriberKeys.forEach(subscriberKey => {\n this.subscriptions[eventName][subscriberKey](tabId, tabData);\n });\n };\n\n /**\n * Returns the tab\n * @param tabId Tab Id\n * @returns info of the tab\n */\n public getTab = (tabId: string): MynahUITabStoreTab | null => this.tabsStore[tabId] ?? null;\n\n /**\n * Returns the tab\n * @param tabId Tab Id\n * @returns info of the tab\n */\n public getAllTabs = (): MynahUITabStoreModel => structuredClone(this.tabsStore);\n\n /**\n * Returns the data store of the tab\n * @param tabId Tab Id\n * @returns data of the tab\n */\n public getTabDataStore = (tabId: string): MynahUIDataStore => this.tabsDataStore[tabId];\n\n /**\n * Returns the data of the tab\n * @param tabId Tab Id\n * @returns data of the tab\n */\n public getSelectedTabId = (): string => {\n const tabIds = Object.keys(this.tabsStore);\n return tabIds.find(tabId => this.tabsStore[tabId].isSelected === true) ?? '';\n };\n\n /**\n * Clears store data and informs all the subscribers\n */\n public removeAllTabs = (): void => {\n Object.keys(this.tabsStore).forEach(tabId => {\n this.removeTab(tabId);\n });\n };\n\n /**\n * Get all tabs length\n * @returns tabs length\n */\n public tabsLength = (): number => Object.keys(this.tabsStore).length;\n}\n","export const getOrigin = (site: string): string => {\n let result = '';\n try {\n result = new URL(site).origin;\n } catch (err) {\n result = 'unknown';\n }\n return result;\n};\n","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { MynahIcons } from './components/icon';\n\nexport interface QuickActionCommand {\n command: string;\n description?: string;\n placeholder?: string;\n}\nexport interface QuickActionCommandGroup {\n groupName?: string;\n commands: QuickActionCommand[];\n}\n/**\n * data store model to update the mynah ui partially or fully\n */\nexport interface MynahUIDataModel {\n /**\n * Tab title\n * */\n tabTitle?: string;\n /**\n * Chat screen loading animation state (mainly use during the stream or getting the initial answer)\n */\n loadingChat?: boolean;\n /**\n * Show chat avatars or not\n * */\n showChatAvatars?: boolean;\n /**\n * Show cancel button while loading the chat\n * */\n cancelButtonWhenLoading?: boolean;\n /**\n * Quick Action commands to show when user hits / to the input initially\n */\n quickActionCommands?: QuickActionCommandGroup[];\n /**\n * Placeholder to be shown on prompt input\n */\n promptInputPlaceholder?: string;\n /**\n * Info block to be shown under prompt input\n */\n promptInputInfo?: string;\n /**\n * Prompt input field disabled state, set to tru to disable it\n */\n promptInputDisabledState?: boolean;\n /**\n * List of chat item objects to be shown on the web suggestions search screen\n */\n chatItems?: ChatItem[];\n // TODO\n selectedCodeSnippet?: string;\n}\n\nexport interface MynahUITabStoreTab {\n /**\n * Is tab selected\n */\n isSelected?: boolean;\n /**\n * Tab items data store\n */\n store?: MynahUIDataModel;\n}\n/**\n * tabs store model to update the tabs partially or fully\n */\nexport interface MynahUITabStoreModel {\n [tabId: string]: MynahUITabStoreTab;\n}\n\nexport enum MynahEventNames {\n RESET_STORE = 'resetStore',\n FEEDBACK_SET = 'feedbackSet',\n CARD_VOTE = 'cardVote',\n SOURCE_LINK_CLICK = 'sourceLinkClick',\n LINK_CLICK = 'linkClick',\n CHAT_ITEM_ENGAGEMENT = 'chatItemEngagement',\n COPY_CODE_TO_CLIPBOARD = 'copyCodeToClipboard',\n INSERT_CODE_TO_CURSOR_POSITION = 'insertCodeToCursorPosition',\n CHAT_PROMPT = 'chatPrompt',\n FOLLOW_UP_CLICKED = 'followUpClicked',\n SHOW_MORE_WEB_RESULTS_CLICK = 'showMoreWebResultsClick',\n SHOW_FEEDBACK_FORM = 'showFeedbackForm',\n OPEN_DIFF = 'openDiff',\n ADD_CODE_SNIPPET = 'addCodeSnippet',\n REMOVE_CODE_SNIPPET = 'removeCodeSnippet',\n};\n\nexport enum MynahPortalNames {\n WRAPPER = 'wrapper',\n SIDE_NAV = 'sideNav',\n OVERLAY = 'overlay',\n FEEDBACK_FORM = 'feedbackForm',\n};\n\nexport interface SourceLinkMetaData {\n stars?: number; // repo stars\n forks?: number; // repo forks\n answerCount?: number; // total answers if it is a question\n isOfficialDoc?: boolean; // is suggestion comes from an official api doc\n isAccepted?: boolean; // is accepted or not if it is an answer\n score?: number; // relative score according to the up and down votes for a question or an answer\n lastActivityDate?: number; // creation or last update date for question or answer\n}\n\nexport interface SourceLink {\n title: string;\n id?: string;\n url: string;\n body?: string;\n type?: string;\n metadata?: Record<string, SourceLinkMetaData>;\n}\nexport enum ChatItemType {\n PROMPT = 'prompt',\n SYSTEM_PROMPT = 'system-prompt',\n AI_PROMPT = 'ai-prompt',\n ANSWER = 'answer',\n ANSWER_STREAM = 'answer-stream',\n ANSWER_PART = 'answer-part',\n CODE_RESULT = 'code-result',\n}\n\nexport interface ChatItem {\n body?: string;\n type: ChatItemType;\n messageId?: string;\n canBeVoted?: boolean;\n followUp?: {\n text?: string;\n options?: ChatItemFollowUp[];\n };\n relatedContent?: {\n title?: string;\n content: SourceLink[];\n };\n codeReference?: ReferenceTrackerInformation[];\n fileList?: {\n filePaths?: string[];\n deletedFiles?: string[];\n };\n}\n\nexport interface ChatPrompt {\n prompt?: string;\n escapedPrompt?: string;\n command?: string;\n attachment?: SourceLink;\n}\n\nexport interface ChatItemFollowUp extends ChatPrompt {\n type?: string;\n pillText: string;\n status?: 'info' | 'success' | 'warning' | 'error';\n icon?: MynahIcons;\n}\n\nexport enum KeyMap {\n ESCAPE = 'Escape',\n ENTER = 'Enter',\n BACKSPACE = 'Backspace',\n SPACE = ' ',\n DELETE = 'Delete',\n ARROW_UP = 'ArrowUp',\n ARROW_DOWN = 'ArrowDown',\n ARROW_LEFT = 'ArrowLeft',\n ARROW_RIGHT = 'ArrowRight',\n PAGE_UP = 'PageUp',\n PAGED_OWN = 'PageDown',\n HOME = 'Home',\n END = 'End',\n META = 'Meta',\n TAB = 'Tab',\n SHIFT = 'Shift',\n CONTROL = 'Control',\n ALT = 'Alt',\n SLASH = '/',\n BACK_SLASH = '\\\\'\n}\n\nexport interface ReferenceTrackerInformation {\n licenseName?: string;\n repository?: string;\n url?: string;\n recommendationContentSpan: {\n start: number;\n end: number;\n };\n information: string;\n}\n\nexport type CodeSelectionType = 'selection' | 'block';\nexport type OnCopiedToClipboardFunction = (type?: CodeSelectionType, text?: string, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\nexport type OnInsertToCursorPositionFunction = (type?: CodeSelectionType, text?: string, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n\nexport enum RelevancyVoteType {\n UP = 'upvote',\n DOWN = 'downvote',\n}\n\n/**\n * 'interaction' will be set if there was a potential text selection or a click input was triggered by the user.\n * If this is a selection selectionDistanceTraveled object will also be filled\n * 'timespend' will be set basically if there is no interaction except mouse movements in a time spent longer than the ENGAGEMENT_DURATION_LIMIT\n * Don't forget that in 'timespend' case, user should leave the suggestion card at some point to count it as an interaction.\n * (They need to go back to the code or move to another card instead)\n */\nexport enum EngagementType {\n INTERACTION = 'interaction',\n TIME = 'timespend',\n}\n\nexport interface Engagement {\n /**\n * Engagement type\n */\n engagementType: EngagementType;\n /**\n * Total duration in ms till the engagement triggered.\n */\n engagementDurationTillTrigger: number;\n /**\n * Total mouse movement in x and y directions till the engagement triggered.\n * To avoid confusion: this is not the distance between start and end points, this is the total traveled distance.\n */\n totalMouseDistanceTraveled: { x: number; y: number };\n /**\n * If the engagementType is \"interaction\" and this object has a value, you can assume it as a text selection.\n * If the engagementType is \"interaction\" but this object is not defined, you can assume it as a click\n */\n selectionDistanceTraveled?: { x: number; y: number; selectedText?: string };\n}\n\nexport interface FeedbackPayload {\n messageId: string;\n tabId: string;\n selectedOption: string;\n comment?: string;\n}\n\nexport enum NotificationType {\n INFO = MynahIcons.INFO,\n SUCCESS = MynahIcons.OK_CIRCLED,\n WARNING = MynahIcons.WARNING,\n ERROR = MynahIcons.ERROR,\n}\n\nexport interface ConfigModel {\n texts: {\n mainTitle: string;\n feedbackFormTitle: string;\n feedbackFormOptionsLabel: string;\n feedbackFormCommentLabel: string;\n feedbackThanks: string;\n feedbackReportButtonLabel: string;\n codeSuggestions: string;\n clickFileToViewDiff: string;\n files: string;\n insertAtCursorLabel: string;\n copy: string;\n showMore: string;\n save: string;\n cancel: string;\n submit: string;\n stopGenerating: string;\n copyToClipboard: string;\n noMoreTabsTooltip: string;\n codeSuggestionWithReferenceTitle: string;\n };\n feedbackOptions: Array<{\n label: string;\n value: string;\n }>;\n maxTabs: number;\n}\n","'use strict'\n\n/**\n * un-escape special characters in the given string of html.\n *\n * @param {String} html\n * @return {String}\n */\n\nmodule.exports = function (html) {\n return String(html)\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, '\\'')\n .replace(/&#x3A;/g, ':')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&')\n}\n","/**\n * marked v7.0.5 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n'use strict';\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: false,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: false,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\nexports.defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n }\n catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n }\n else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n }\n else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n }\n else {\n return base + href;\n }\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\nfunction checkDeprecations(opt, callback) {\n if (!opt || opt.silent) {\n return;\n }\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n // TODO: Fix this rules type\n rules;\n lexer;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c, tokens: [] };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n const align = item.align[i];\n if (align) {\n if (/^ *-+: *$/.test(align)) {\n item.align[i] = 'right';\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align[i] = 'center';\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align[i] = 'left';\n }\n else {\n item.align[i] = null;\n }\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => {\n return { text: c, tokens: [] };\n });\n }\n // parse child tokens inside headers and cells\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n const raw = [...src].slice(0, lLength + match.index + rLength + 1).join('');\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n }\n else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nblock.normal = { ...block };\n/**\n * GFM Block Grammar\n */\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nblock.pedantic = {\n ...block.normal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^((?![*_])[\\spunctuation])/\n};\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\ninline._punctuation = '\\\\p{P}$+<=>`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.anyPunctuation = edit(inline.anyPunctuation, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\ninline.normal = { ...inline };\n/**\n * Pedantic Inline Grammar\n */\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\ninline.breaks = {\n ...inline.gfm,\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n\n/**\n * smartypants text replacement\n */\nfunction smartypants(text) {\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n}\n/**\n * mangle email addresses\n */\nfunction mangle(text) {\n let out = '';\n for (let i = 0; i < text.length; i++) {\n const ch = Math.random() > 0.5\n ? 'x' + text.charCodeAt(i).toString(16)\n : text.charCodeAt(i).toString();\n out += '&#' + ch + ';';\n }\n return out;\n}\n/**\n * Block Lexer\n */\nclass _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n }\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass _Slugger {\n seen;\n constructor() {\n this.seen = {};\n }\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n /**\n * Convert string to unique id\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n options;\n renderer;\n textRenderer;\n slugger;\n constructor(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n }\n else {\n itemBody += checkbox;\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || exports.defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(genericToken[childTokens], callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop];\n const rendererKey = prop;\n const prevRenderer = renderer[rendererKey];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop];\n const tokenizerKey = prop;\n const prevTokenizer = tokenizer[tokenizerKey];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop];\n const hooksKey = prop;\n const prevHook = hooks[hooksKey];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n hooks[hooksKey] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n #parseMarkdown(lexer, parser) {\n return (src, optOrCallback, callback) => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n checkDeprecations(opt, callback);\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (callback) {\n const resultCallback = callback;\n const highlight = opt.highlight;\n let tokens;\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n }\n catch (e) {\n return throwError(e);\n }\n const done = (err) => {\n let out;\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n }\n catch (e) {\n err = e;\n }\n }\n opt.highlight = highlight;\n return err\n ? throwError(err)\n : resultCallback(null, out);\n };\n if (!highlight || highlight.length < 3) {\n return done();\n }\n delete opt.highlight;\n if (!tokens.length)\n return done();\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n if (pending === 0) {\n done();\n }\n return;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async, callback) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt, callback) {\n return markedInstance.parse(src, opt, callback);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = exports.defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexports.Hooks = _Hooks;\nexports.Lexer = _Lexer;\nexports.Marked = Marked;\nexports.Parser = _Parser;\nexports.Renderer = _Renderer;\nexports.Slugger = _Slugger;\nexports.TextRenderer = _TextRenderer;\nexports.Tokenizer = _Tokenizer;\nexports.getDefaults = _getDefaults;\nexports.lexer = lexer;\nexports.marked = marked;\nexports.options = options;\nexports.parse = parse;\nexports.parseInline = parseInline;\nexports.parser = parser;\nexports.setOptions = setOptions;\nexports.use = use;\nexports.walkTokens = walkTokens;\n//# sourceMappingURL=marked.cjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","/*!\n * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Notification } from './components/notification';\nimport { DomBuilder, ExtendedHTMLElement } from './helper/dom';\nimport {\n MynahPortalNames,\n RelevancyVoteType,\n FeedbackPayload,\n MynahUIDataModel,\n MynahEventNames,\n NotificationType,\n ChatItem,\n ChatItemFollowUp,\n ChatPrompt,\n MynahUITabStoreModel,\n MynahUITabStoreTab,\n ConfigModel,\n ReferenceTrackerInformation,\n CodeSelectionType,\n Engagement,\n} from './static';\nimport { MynahUIGlobalEvents } from './helper/events';\nimport { Tabs } from './components/navigation-tabs';\nimport { ChatWrapper } from './components/chat-item/chat-wrapper';\nimport { FeedbackForm } from './components/feedback-form/feedback-form';\nimport { MynahUITabsStore } from './helper/tabs-store';\nimport { Config } from './helper/config';\nimport './styles/styles.scss';\n\nexport {\n FeedbackPayload,\n RelevancyVoteType,\n EngagementType,\n Engagement,\n MynahUIDataModel,\n NotificationType,\n ChatItem,\n ChatItemFollowUp,\n ChatItemType,\n ChatPrompt,\n SourceLink\n} from './static';\nexport {\n ToggleOption\n} from './components/toggle';\nexport {\n MynahIcons\n} from './components/icon';\n\nexport interface MynahUIProps {\n rootSelector?: string;\n defaults?: MynahUITabStoreTab;\n tabs?: MynahUITabStoreModel;\n config?: Partial<ConfigModel>;\n onShowMoreWebResultsClick?: (tabId: string, messageId: string) => void;\n onReady?: () => void;\n onVote?: (tabId: string, messageId: string, vote: RelevancyVoteType) => void;\n onStopChatResponse?: (tabId: string) => void;\n onResetStore?: (tabId: string) => void;\n onChatPrompt?: (tabId: string, prompt: ChatPrompt) => void;\n onFollowUpClicked?: (tabId: string, messageId: string, followUp: ChatItemFollowUp) => void;\n onTabChange?: (tabId: string) => void;\n onTabAdd?: (tabId: string) => void;\n onTabRemove?: (tabId: string) => void;\n onChatItemEngagement?: (tabId: string, messageId: string, engagement: Engagement) => void;\n onCopyCodeToClipboard?: (tabId: string, messageId: string, code?: string, type?: CodeSelectionType, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n onCodeInsertToCursorPosition?: (tabId: string, messageId: string, code?: string, type?: CodeSelectionType, referenceTrackerInformation?: ReferenceTrackerInformation[]) => void;\n onSourceLinkClick?: (tabId: string, messageId: string, link: string, mouseEvent?: MouseEvent) => void;\n onLinkClick?: (tabId: string, messageId: string, link: string, mouseEvent?: MouseEvent) => void;\n onSendFeedback?: (tabId: string, feedbackPayload: FeedbackPayload) => void;\n onOpenDiff?: (tabId: string, filePath: string, deleted: boolean, messageId?: string) => void;\n}\n\nexport class MynahUI {\n private readonly props: MynahUIProps;\n private readonly wrapper: ExtendedHTMLElement;\n private readonly tabsWrapper: ExtendedHTMLElement;\n private readonly tabContentsWrapper: ExtendedHTMLElement;\n private readonly feedbackForm?: FeedbackForm;\n private readonly chatWrappers: Record<string, ChatWrapper> = {};\n\n constructor (props: MynahUIProps) {\n this.props = props;\n Config.getInstance(props.config);\n DomBuilder.getInstance(props.rootSelector);\n MynahUITabsStore.getInstance(this.props.tabs, this.props.defaults);\n MynahUIGlobalEvents.getInstance();\n\n const initTabs = MynahUITabsStore.getInstance().getAllTabs();\n this.tabContentsWrapper = DomBuilder.getInstance().build({\n type: 'div',\n classNames: [ 'mynah-ui-tab-contents-wrapper' ],\n children: Object.keys(initTabs).map((tabId: string) => {\n this.chatWrappers[tabId] = new ChatWrapper({\n tabId,\n onStopChatResponse: props.onStopChatResponse,\n });\n return this.chatWrappers[tabId].render;\n })\n });\n\n if (props.onSendFeedback !== undefined) {\n this.feedbackForm = new FeedbackForm();\n }\n\n this.tabsWrapper = new Tabs({\n onChange: (selectedTabId: string) => {\n if (this.props.onTabChange !== undefined) {\n this.props.onTabChange(selectedTabId);\n }\n }\n }).render;\n\n this.tabsWrapper.setAttribute('selected-tab', MynahUITabsStore.getInstance().getSelectedTabId());\n\n this.wrapper = DomBuilder.getInstance().createPortal(\n MynahPortalNames.WRAPPER,\n {\n type: 'div',\n attributes: {\n id: 'mynah-wrapper'\n },\n children: [\n this.tabsWrapper,\n this.tabContentsWrapper,\n ]\n },\n 'afterbegin'\n );\n\n MynahUITabsStore.getInstance().addListener('add', (tabId: string) => {\n this.chatWrappers[tabId] = new ChatWrapper({\n tabId,\n onStopChatResponse: props.onStopChatResponse,\n });\n this.tabContentsWrapper.appendChild(this.chatWrappers[tabId].render);\n if (this.props.onTabAdd !== undefined) {\n this.props.onTabAdd(tabId);\n }\n });\n MynahUITabsStore.getInstance().addListener('remove', (tabId: string) => {\n this.chatWrappers[tabId].render.remove();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.chatWrappers[tabId];\n if (this.props.onTabRemove !== undefined) {\n this.props.onTabRemove(tabId);\n }\n });\n\n this.addGlobalListeners();\n setTimeout(() => {\n if (this.props.onReady !== undefined) {\n this.props.onReady();\n }\n }, 100);\n }\n\n private readonly addGlobalListeners = (): void => {\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CHAT_PROMPT, (data: {tabId: string; prompt: ChatPrompt}) => {\n if (this.props.onChatPrompt !== undefined) {\n this.props.onChatPrompt(data.tabId, data.prompt);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FOLLOW_UP_CLICKED, (data: {\n tabId: string;\n messageId: string;\n followUpOption: ChatItemFollowUp;\n }) => {\n if (this.props.onFollowUpClicked !== undefined) {\n this.props.onFollowUpClicked(data.tabId, data.messageId, data.followUpOption);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SHOW_MORE_WEB_RESULTS_CLICK, (data: {messageId: string}) => {\n if (this.props.onShowMoreWebResultsClick !== undefined) {\n this.props.onShowMoreWebResultsClick(MynahUITabsStore.getInstance().getSelectedTabId(), data.messageId);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.FEEDBACK_SET, (feedbackData) => {\n if (this.props.onSendFeedback !== undefined) {\n this.props.onSendFeedback(MynahUITabsStore.getInstance().getSelectedTabId(), feedbackData);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CHAT_ITEM_ENGAGEMENT, (data: { engagement: Engagement; messageId: string }) => {\n if (this.props.onChatItemEngagement !== undefined) {\n this.props.onChatItemEngagement(MynahUITabsStore.getInstance().getSelectedTabId(), data.messageId, data.engagement);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.COPY_CODE_TO_CLIPBOARD, (data) => {\n if (this.props.onCopyCodeToClipboard !== undefined) {\n this.props.onCopyCodeToClipboard(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.text,\n data.type,\n data.referenceTrackerInformation\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.INSERT_CODE_TO_CURSOR_POSITION, (data) => {\n if (this.props.onCodeInsertToCursorPosition !== undefined) {\n this.props.onCodeInsertToCursorPosition(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.text,\n data.type,\n data.referenceTrackerInformation\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.SOURCE_LINK_CLICK, (data) => {\n if (this.props.onSourceLinkClick !== undefined) {\n this.props.onSourceLinkClick(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.link,\n data.event\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.LINK_CLICK, (data) => {\n if (this.props.onLinkClick !== undefined) {\n this.props.onLinkClick(\n MynahUITabsStore.getInstance().getSelectedTabId(),\n data.messageId,\n data.link,\n data.event\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.CARD_VOTE, (data) => {\n if (this.props.onVote !== undefined) {\n this.props.onVote(\n data.tabId,\n data.messageId,\n data.vote\n );\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.RESET_STORE, (data: {tabId: string}) => {\n if (this.props.onResetStore !== undefined) {\n this.props.onResetStore(data.tabId);\n }\n });\n\n MynahUIGlobalEvents.getInstance().addListener(MynahEventNames.OPEN_DIFF, (data) => {\n if (this.props.onOpenDiff !== undefined) {\n this.props.onOpenDiff(data.tabId, data.filePath, data.deleted, data.messageId);\n }\n });\n };\n\n public addToUserPrompt = (tabId: string, prompt: string): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n this.chatWrappers[tabId].addToPrompt(prompt);\n }\n };\n\n /**\n * Adds a new answer on the chat window\n * @param tabId Corresponding tab ID.\n * @param answer An ChatItem object.\n */\n public addChatItem = (tabId: string, chatItem: ChatItem): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n MynahUITabsStore.getInstance().getTabDataStore(tabId).updateStore({\n chatItems: [\n ...MynahUITabsStore.getInstance().getTabDataStore(tabId).getValue('chatItems'),\n chatItem\n ]\n });\n }\n };\n\n /**\n * Updates the body of the last ChatItemType.ANSWER_STREAM chat item\n * @param body new body stream as string.\n */\n public updateLastChatAnswer = (tabId: string, updateWith: Partial<ChatItem>): void => {\n if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n this.chatWrappers[tabId].updateLastChatAnswer(updateWith);\n }\n };\n\n /**\n * Updates only the UI with the given data for the given tab\n * Send tab id as an empty string to open a new tab!\n * If max tabs reached, will not return tabId\n * @param data A full or partial set of data with values.\n */\n public updateStore = (tabId: string | '', data: MynahUIDataModel): string | undefined => {\n if (tabId === '') {\n return MynahUITabsStore.getInstance().addTab({ store: { ...data } });\n } else if (MynahUITabsStore.getInstance().getTab(tabId) !== null) {\n MynahUITabsStore.getInstance().updateTab(tabId, { store: { ...data } });\n }\n return tabId;\n };\n\n /**\n * Simply creates and shows a notification\n * @param props NotificationProps\n */\n public notify = (props: {\n duration?: number;\n type?: NotificationType;\n title?: string;\n content: string;\n onNotificationClick?: () => void;\n onNotificationHide?: () => void;\n }): void => {\n new Notification({\n ...props,\n onNotificationClick: () => {},\n }).notify();\n };\n}\n"],"names":["root","factory","exports","module","define","amd","self","___CSS_LOADER_EXPORT___","push","id","cssWithMappingToString","list","toString","this","map","item","content","needLayer","concat","length","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","sourceURLs","sources","source","sourceRoot","matchHtmlRegExp","string","escape","str","match","exec","html","index","lastIndex","charCodeAt","substring","e","t","a","pattern","lookbehind","alias","inside","n","bash","environment","RegExp","variable","greedy","number","operator","punctuation","entity","languages","shebang","comment","parameter","function","keyword","builtin","boolean","s","o","sh","shell","Prism","c","extend","insertBefore","char","macro","directive","expression","constant","clike","replace","r","l","trim","d","p","u","g","b","h","f","m","y","w","v","x","$","_","B","csharp","range","namespace","generic","preprocessor","E","R","z","S","j","attribute","target","A","F","P","U","Z","q","interpolation","dotnet","cs","css","atrule","rule","url","selector","property","important","rest","markup","tag","addInlined","addAttribute","java","annotation","generics","import","static","javascript","regex","hashbang","js","json","null","webmanifest","util","clone","jsx","spread","script","type","tagName","pop","openedBraces","splice","Token","hooks","add","language","tokens","less","lua","markdown","yaml","blockquote","table","code","title","hr","bold","italic","strike","forEach","toLowerCase","classes","highlight","parseInt","slice","Number","plugins","autoloader","Date","valueOf","Math","floor","random","attributes","loadLanguages","document","getElementById","innerHTML","textContent","amp","lt","gt","quot","String","fromCodePoint","fromCharCode","md","prolog","doctype","name","cdata","Object","defineProperty","value","mathml","svg","xml","ssml","atom","rss","mongodb","objectivec","objc","python","decorator","py","backreference","anchor","group","quantifier","alternation","scala","symbol","scss","parent","placeholder","statement","typescript","tsx","flags","at","ts","createRange","KeepMarkup","env","element","children","isActive","dropTokens","pos","processChildren","keepMarkup","processElement","nodeName","classList","contains","shouldKeep","posOpen","posClose","childNodes","child","nodeType","walk","elt","nodeState","nodeStart","node","nodeStartPos","nodeEnd","nodeEndPos","setStart","setEnd","appendChild","extractContents","insertNode","detach","highlightedCode","PLUGIN_NAME","NEW_LINE_EXP","config","lineNumbers","getLine","lineNumberRows","querySelector","lineNumberStart","getAttribute","lineNumberEnd","lineIndex","resize","resizeElements","assumeViewportIndependence","lastWidth","window","addEventListener","innerWidth","Array","prototype","call","querySelectorAll","pre","test","remove","lineNumbersWrapper","linesNum","lines","createElement","setAttribute","className","hasAttribute","style","counterReset","run","elements","filter","whiteSpace","getComputedStyle","currentStyle","infos","codeElement","lineNumberSizer","codeLines","split","display","oneLinerHeight","getBoundingClientRect","height","lineHeights","sizer","Boolean","info","line","childIndex","wrapper","lineNumber","_self","lang","uniqueId","plainTextGrammar","manual","disableWorkerMessageHandler","encode","isArray","objId","obj","deepClone","visited","key","hasOwnProperty","getLanguage","parentElement","setLanguage","currentScript","Error","err","src","stack","scripts","getElementsByTagName","defaultActivation","no","plain","plaintext","text","txt","redef","before","insert","grammar","ret","token","newToken","old","DFS","callback","propertyType","highlightAll","async","highlightAllUnder","container","apply","highlightElement","insertHighlightedCode","Worker","worker","filename","onmessage","evt","postMessage","immediateClose","tokenize","tokenList","LinkedList","addAfter","head","matchGrammar","array","next","tail","toArray","all","callbacks","matchedStr","matchPattern","lookbehindLength","startNode","startPos","rematch","patterns","cause","patternObj","global","currentNode","reach","removeCount","from","to","matchStr","after","removeFrom","prev","removeRange","nestedRematch","newNode","count","aliases","message","parse","close","highlightAutomaticallyCallback","readyState","defer","requestAnimationFrame","setTimeout","WorkerGlobalScope","includedCdataInside","def","attrName","Element","matches","msMatchesSelector","webkitMatchesSelector","EXTENSIONS","STATUS_ATTR","STATUS_LOADING","STATUS_LOADED","SELECTOR","extension","success","error","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","start","comma","end","parseRange","max","min","statusText","send","loadFile","fileHighlight","logged","console","warn","arguments","options","styleTagTransform","setAttributes","domAPI","insertStyleElement","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","idCountMap","identifiers","base","indexByIdentifier","sourceMap","references","updater","addElementStyle","byIndex","api","update","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","memo","styleTarget","HTMLIFrameElement","contentDocument","getTarget","styleElement","nonce","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","constructor","props","updateLabel","label","render","replaceWith","DomBuilder","getInstance","build","classNames","setEnabled","enabled","removeAttribute","primary","events","additionalEvents","click","onClick","icon","highlightersWithTooltip","markupStart","markupAttributes","markerIndex","markupEnd","CardBody","processNode","contentString","matchingLanguage","elementFromNode","onLinkClick","href","isBlockCode","snippetLanguage","find","codeString","highlighter","SyntaxHighlighter","codeStringWithMarkup","keepHighlights","showCopyOptions","block","onCopiedToClipboard","getReferenceTrackerInformationFromElement","onInsertToCursorPosition","replaceChild","cloneNode","markerElements","mark","startIndexText","generateUID","startIndexTextElement","insertAdjacentElement","startIndex","innerText","indexOf","originalRefTrackerInfo","highlightRangeWithTooltip","recommendationContentSpan","showHighlightRangeTooltip","tooltipText","clearTimeout","highlightRangeTooltipTimeout","highlightRangeTooltip","Overlay","background","closeOnOutsideClick","referenceElement","currentTarget","removeOtherOverlays","dimOutside","verticalDirection","OverlayVerticalDirection","TO_TOP","horizontalDirection","OverlayHorizontalDirection","START_TO_RIGHT","body","hideHighlightRangeTooltip","getContentBodyChildren","incomingBody","generatedStartMarkup","calculatedStartIndex","calculatedEndIndex","marked","breaks","processedNode","emptyElement","highlightRangeElement","information","engagementStartTime","totalMouseDistanceTraveled","resetEngagement","previousMousePosition","mouseDownInfo","time","handleEngagement","interactionDistanceTraveled","onCardEngaged","engagementDurationTillTrigger","getTime","engagementType","EngagementType","INTERACTION","TIME","selectionDistanceTraveled","padding","border","persistent","mouseenter","clientX","clientY","mousemove","abs","mousedown","mouseup","mouseUpInfo","selectedText","getSelection","mouseleave","engagementEndTime","generateCard","generatedCard","getCardClasses","messageId","chatItem","getCardContent","ChatItemType","ANSWER_STREAM","addClass","isChatItemEmpty","isNoContent","followUp","relatedContent","ANSWER","MynahUITabsStore","getTabDataStore","tabId","getValue","chatAvatar","fileList","Card","engagement","MynahUIGlobalEvents","dispatch","MynahEventNames","CHAT_ITEM_ENGAGEMENT","commonBodyProps","LINK_CLICK","link","event","CODE_RESULT","filePaths","deletedFiles","referenceSuggestionLabel","contentBody","ChatItemTreeViewWrapper","files","codeReference","ChatItemSourceLinksContainer","referenceTrackerInformation","COPY_CODE_TO_CLIPBOARD","INSERT_CODE_TO_CURSOR_POSITION","canBeVoted","ChatItemRelevanceVote","ChatItemFollowUpContainer","getChatAvatar","Icon","PROMPT","MynahIcons","USER","MYNAH","updateCard","updateWith","updateTimer","maxHeight","scrollHeight","subscribe","insertChild","showCroppedFollowupText","followupTooltipTimeout","elm","followupTooltip","hideCroppedFollowupText","followUpOption","pillText","MAX_LENGTH","FOLLOW_UP_CLICKED","hasClass","mouseover","getElementsByClassName","option","onclick","handleVoteChange","vote","CARD_VOTE","newChildren","Config","texts","feedbackThanks","RelevancyVoteType","DOWN","Button","feedbackReportButtonLabel","sendFeedbackListenerId","addListener","FEEDBACK_SET","removeListener","SHOW_FEEDBACK_FORM","replaceChildren","UP","votingId","change","for","THUMBS_UP","THUMBS_DOWN","showMoreButtonBlock","DOWN_OPEN","SHOW_MORE_WEB_RESULTS_CLICK","sourceLink","SourceLinkHeader","showCardOnHover","SOURCE_LINK_CLICK","buildDropdownChildren","ref","CollapsibleContent","codeSuggestionWithReferenceTitle","license","ChatItemTreeViewLicense","tree","ChatItemTreeView","fileListToTree","codeSuggestions","clickFileToViewDiff","isOpen","depth","getClassNames","buildFolderNode","buildFileNode","updateTree","buildFolderChildren","childNode","folderItem","RIGHT_OPEN","cancelEvent","paddingLeft","fileItem","DOC","OPEN_DIFF","filePath","deleted","textDecoration","setCommand","command","removeClass","promptTextInputCommand","onRemoveClick","addListenerToDataStore","newInfo","MAX_USER_INPUT","MAX_USER_INPUT_TRESHOLD","commandSelectorOpen","selectedCommand","updateAvailableCharactersIndicator","totalCharsUsed","promptTextInput","getTextInputValue","codeSnippet","lastCodeSnippet","remainingCharsIndicator","handleInputKeydown","blockedKeys","KeyMap","ENTER","ESCAPE","SPACE","TAB","BACK_SLASH","SLASH","navigationalKeys","ARROW_UP","ARROW_DOWN","includes","preventDefault","targetElement","commandSelector","handleCommandSelection","commandElements","nextElement","lastActiveElement","findIndex","commandElement","updateTextInputValue","filteredCommandsList","quickActionCommands","quickActionGroup","newQuickActionCommandGroup","commands","updateContent","getQuickCommandActions","BACKSPACE","clearTextArea","shiftKey","ctrlKey","stretchWidth","onClose","sendPrompt","quickCommandList","quickActionCommandGroup","groupName","quickActionCommand","description","updateTextInputPlaceholder","focus","clear","updateTextInputMaxLength","attachmentWrapper","attachment","addText","textToAdd","ADD_CODE_SNIPPET","currentInputValue","selectedCodeSnippet","CHAT_PROMPT","prompt","escapedPrompt","ChatPromptInputCommand","PromptTextInput","onKeydown","onInput","sendButton","SendButton","CodeSnippet","textInputLength","currentSelectedCodeMaxLength","croppedSelectedCodeSnippet","updateSelectedCodeSnippet","REMOVE_CODE_SNIPPET","insertChatItem","chatItemCard","ChatItemCard","lastChatItemCard","AI_PROMPT","SYSTEM_PROMPT","chatItemsContainer","scrollTop","updateLastChatAnswer","addToPrompt","promptInput","chatItems","chatItemToInsert","lastItem","loadingChat","showCancelButton","intermediateBlockContainer","ChatPromptInput","promptInputElement","promptInfo","ChatPromptInputInfo","onStopChatResponse","stopGenerating","BLOCK","initChatItems","showPreviewOverLay","markdownText","previewOverlay","closePreviewOverLay","renderCodeSnippetWidget","CANCEL","snippetWidget","_render","CodeSnippetWidget","_props","updateStore","updatePromptTextInputSizer","_promptTextInput","_promptTextInputSizer","defaultPlaceholder","maxLength","maxlength","initialDisabledState","disabled","tabindex","rows","keydown","input","blur","isDisabled","placeholderText","ENVELOPE_SEND","uid","initialCollapsedState","onCollapseStateChange","checked","val","newIcon","getComment","keyup","onChange","initComment","feedbackPayload","selectedOption","onFeedbackSet","feedbackData","feedbackComment","feedbackSelect","feedbackOptions","feedbackFormWrapper","show","initPayload","createPortal","MynahPortalNames","FEEDBACK_FORM","feedbackFormContainer","feedbackOptionsWrapper","FeedbackFormComment","feedbackSubmitButton","submit","feedbackFormTitle","feedbackFormOptionsLabel","feedbackFormCommentLabel","cancel","MynahUIIconImporter","mynahIconMappings","MENU","MINUS","SEARCH","PLUS","CHAT","LINK","EXTERNAL","CALENDAR","MEGAPHONE","NOTIFICATION","EYE","ELLIPSIS","OK","UP_OPEN","LEFT_OPEN","RESIZE_FULL","RESIZE_SMALL","OK_CIRCLED","INFO","WARNING","ERROR","STAR","LIGHT_BULB","REFRESH","PLAY","PAUSE","CODE_BLOCK","COPY","CURSOR_INSERT","TEXT_SELECT","REVERT","keys","iconKey","iconName","instance","tabIdTitleSubscriptions","tabIdChatItemsSubscriptions","getTabOptionsFromTabStoreData","tabs","getAllTabs","store","tabTitle","selected","isSelected","getTabsRender","selectedTabId","tab","assignListener","toggleGroup","Toggle","selectTab","onRemove","removeTab","tabsLength","maxTabs","noMoreTabsTooltip","addTab","TO_BOTTOM","CENTER","updateOptionTitle","updateOptionIndicator","removeListenerAssignments","removeListenerFromDataStore","dblclick","getSelectedTabId","tabData","addOption","newSelectedTab","removeOption","snapToOption","setValue","getNextCalculatedTop","prevNotifications","DS","prevNotificationRectangle","top","OVERLAY_MARGIN","getChildren","duration","NotificationType","notify","notificationOverlay","referencePoint","left","documentElement","clientWidth","TO_LEFT","onNotificationHide","onNotificationClick","guid","windowBlurHandler","removeEventListener","bind","getCalculatedLeft","referenceRectangle","width","TO_RIGHT","END_TO_LEFT","getCalculatedWidth","getCalculatedTop","START_TO_BOTTOM","END_TO_TOP","innerContainer","calculatedTop","calculatedLeft","calculatedWidth","removeAllPortals","OVERLAY","containerRectangle","winHeight","clientHeight","innerHeight","winWidth","comparingWidth","comparingHeight","suggestion","getSourceMetaBlock","metadataUnion","metaItems","metadataKey","metadata","isAccepted","lastActivityDate","getTimeDiff","answerCount","stars","forks","score","showLinkPreview","sourceLinkPreviewTimeout","sourceLinkPreview","SourceLinkCard","hideLinkPreview","splitUrl","origin","getOrigin","urlPart","SourceLinkBody","IMPORTED_LANGS","highlighters","textReplacement","ellipsis","getSelectedCodeContextMenu","getSelectedCode","copyToClipboard","textToSendClipboard","notificationText","hasFocus","navigator","clipboard","writeText","then","Notification","catch","codeMarkup","escapedCodeBlock","preElement","showLineNumbers","copy","selectedCode","insertAtCursorLabel","startingLineNumber","ToggleOptionItem","disabledTooltip","disabledTooltipTimer","auxclick","transformScroll","deltaY","scrollLeft","updateSelectionRender","currentValue","elmToCheck","nextSibling","indication","offsetLeft","direction","wheel","configDefaults","mainTitle","showMore","save","differenceInMs","separator","delta","years","months","weeks","days","hours","minutes","combined","EmptyDomBuilderObject","rootSelector","portals","builderObject","toggleClass","position","childItem","insertAdjacentText","clearChildren","removePersistent","extendDomFunctionality","domElement","extendedElement","domBuilderObject","readyToBuildObject","buildedDom","eventName","attributeName","HTMLElement","domToUpdate","portalName","portalDom","getPortal","removePortal","portalsWithName","htmlDecode","nodeValue","stopPropagation","stopImmediatePropagation","eventKey","handler","listenerId","listeners","modifiedFilePaths","deletedFilePaths","splitFilePaths","reduce","acc","fileOrFolder","oldItem","newItem","paths","firstPart","secondPart","PrimitiveObjectTypes","EmptyMynahUIDataModel","defaults","cancelButtonWhenLoading","showChatAvatars","promptInputPlaceholder","promptInputInfo","promptInputDisabledState","initialData","setDefaults","getDefaults","storeKey","subscriptionId","subscriptions","unsubscribe","structuredClone","getDefaultValue","skipSubscribers","assign","resetStore","RESET_STORE","create","selectedTabChange","tabDefaults","tabsStore","tabsDataStore","deselectAllTabs","MynahUIDataStore","informSubscribers","wasSelected","tabIds","updateTab","subscriberKey","getTab","removeAllTabs","site","URL","_getDefaults","baseUrl","extensions","gfm","headerIds","headerPrefix","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartypants","tokenizer","walkTokens","xhtml","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","unescapeTest","charAt","caret","edit","opt","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","prot","decodeURIComponent","baseUrls","justDomain","rtrim","relativeBase","protocol","domain","resolveUrl","encodeURI","noopTest","splitCells","tableRow","cells","offset","escaped","curr","shift","invert","suffLen","currChar","outputLink","cap","raw","lexer","state","inLink","inlineTokens","_Tokenizer","rules","space","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","matchIndentInNode","indentInNode","indentCodeCompensation","inline","_escapes","heading","trimmed","blockTokens","bull","isordered","ordered","loose","items","itemRegex","itemContents","endsWithBlankLine","endEarly","repeat","nextLine","indent","trimLeft","search","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","ischecked","istask","task","trimRight","spacers","hasMultipleLineBreaks","some","paragraph","header","align","row","lheading","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","level","findClosingBracket","linkLen","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","out","_punctuation","blockSkip","anyPunctuation","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","_Lexer","inlineQueue","lex","lexInline","lastToken","cutSrc","lastParagraphClipped","leading","extTokenizer","startBlock","Infinity","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","lastIndexOf","startInline","_Renderer","infostring","quote","slugger","slug","listitem","checkbox","tablerow","tablecell","cleanHref","image","_TextRenderer","_Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","_Parser","textRenderer","parseInline","renderers","genericToken","parser","headingToken","codeToken","tableToken","cell","blockquoteToken","listToken","itemBody","unshift","htmlToken","paragraphToken","textToken","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","_Hooks","Set","preprocess","postprocess","Marked","setOptions","Parser","Renderer","TextRenderer","Lexer","Tokenizer","Slugger","Hooks","args","use","values","childTokens","pack","opts","ext","prevRenderer","extLevel","prop","rendererFunc","rendererKey","tokenizerFunc","tokenizerKey","prevTokenizer","hooksFunc","hooksKey","prevHook","passThroughHooks","has","arg","Promise","resolve","packWalktokens","optOrCallback","origOpt","throwError","checkDeprecations","resultCallback","done","pending","msg","reject","markedInstance","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","enumerable","get","globalThis","Function","Symbol","toStringTag","nc","chatWrappers","addGlobalListeners","onChatPrompt","onFollowUpClicked","onShowMoreWebResultsClick","onSendFeedback","onChatItemEngagement","onCopyCodeToClipboard","onCodeInsertToCursorPosition","onSourceLinkClick","onVote","onResetStore","onOpenDiff","addToUserPrompt","addChatItem","initTabs","tabContentsWrapper","ChatWrapper","feedbackForm","FeedbackForm","tabsWrapper","Tabs","onTabChange","WRAPPER","onTabAdd","onTabRemove","onReady"],"sourceRoot":""}