From 246cd65d4d054cf89d5bf5a6b97ee41ac2fff13e Mon Sep 17 00:00:00 2001 From: Anton Berezin Date: Tue, 12 Nov 2024 20:43:48 +0100 Subject: [PATCH] feat: implemented filters with dropdown (#3738) * feat: implement dropdown menu with checkboxes * fix: fixed dropdown on mobile and reorganized assets * fix: fixed dropdown on tablet * feat: sync platform tags with platform tag dropdown * feat: sync platform tags with platform tag dropdown * feat: implemented checkbox * feat: sync platform tags and dropdown options * fix: prevent blinking when loading tags * fix: show filters button instead of dropdown when no tags are displayed * fix: sync localstorage with filters om mobile * feat: added focus trap to dropdown * fix: fixed focus style in navbar * fix: fixed navigation keys in dropdown * fix: fixed versions dropdown * fix: reuse dropdown for versions * feat: search adjustments (#3819) * ktl-1608 feat: search adjustments * fix: fixed focus style for search button --------- Co-authored-by: Yuri Teplyakov * fix: fix icons blinking * ktl-1608 feat: search style fixes (#3840) * feat: implemented new button states * ktl-1608 feat: style fixes * ktl-1608 feat: fix clear button * fixes after rebase --------- Co-authored-by: berezinant * ktl-1608 feat: test review fixes (#3879) * ktl-1332 fix: fix styles overlap and add max and min values (#3909) * ktl-1711 feat: style bundle optimization (#3905) * feat: reworked ToC according to new design (#3841) * feat: implemented new button states * feat: reworked ToC appearance * fix: moved images to assets * fix: fix toc interactivity * fix: fixed problem with hover on touch screens * fix: open toc no mobile * fix scripts loading in safari * fix: fixed overlap of dropdown with toc on desktop * fix: fixed closing toc on mobile * fix: versions dropdown position * fix: version selector position --------- Co-authored-by: Yuri Teplyakov --- .../plugin-base-frontend/create-component.mjs | 9 +- .../plugin-base-frontend/package-lock.json | 94 +- .../plugin-base-frontend/package.json | 2 +- .../src/main/components/search/search.scss | 118 +- .../src/main/components/search/search.tsx | 1 + .../components/search/searchResultRow.tsx | 2 +- .../src/main/ui-kit/_assets/arrow-down.svg} | 2 +- .../src/main/ui-kit/_assets/burger.svg | 5 + .../src/main/ui-kit/_assets/checkbox-off.svg | 3 + .../src/main/ui-kit/_assets/checkbox-on.svg | 3 + .../src/main/ui-kit/_assets/cross.svg | 3 + .../src/main/ui-kit/_assets/filter.svg | 8 + .../assets => _assets}/homepage.svg | 0 .../nav-icons/abstract-class-kotlin.svg | 0 .../_assets}/nav-icons/abstract-class.svg | 0 .../_assets}/nav-icons/annotation-kotlin.svg | 0 .../ui-kit/_assets}/nav-icons/annotation.svg | 0 .../_assets}/nav-icons/class-kotlin.svg | 0 .../main/ui-kit/_assets}/nav-icons/class.svg | 0 .../ui-kit/_assets}/nav-icons/enum-kotlin.svg | 0 .../main/ui-kit/_assets}/nav-icons/enum.svg | 0 .../_assets}/nav-icons/exception-class.svg | 0 .../ui-kit/_assets}/nav-icons/field-value.svg | 0 .../_assets}/nav-icons/field-variable.svg | 0 .../ui-kit/_assets}/nav-icons/function.svg | 0 .../_assets}/nav-icons/interface-kotlin.svg | 0 .../ui-kit/_assets}/nav-icons/interface.svg | 0 .../main/ui-kit/_assets}/nav-icons/object.svg | 0 .../_assets}/nav-icons/typealias-kotlin.svg | 0 .../src/main/ui-kit/_assets/placeholder.svg | 3 + .../assets => _assets}/theme-toggle.svg | 0 .../{tokens => _tokens}/breakpoints.scss | 0 .../ui-kit/{tokens => _tokens}/colors.scss | 4 +- .../ui-kit/{tokens => _tokens}/index.scss | 0 .../ui-kit/{tokens => _tokens}/sizes.scss | 0 .../{tokens => _tokens}/transitions.scss | 0 .../{tokens => _tokens}/typography.scss | 0 .../src/main/ui-kit/button/index.ts | 8 - .../src/main/ui-kit/button/styles.scss | 17 +- .../src/main/ui-kit/checkbox/index.ts | 4 + .../src/main/ui-kit/checkbox/styles.scss | 42 + .../main/ui-kit/dropdown/dropdown.stories.ftl | 25 + .../src/main/ui-kit/dropdown/focus-trap.ts | 62 + .../src/main/ui-kit/dropdown/index.ts | 68 + .../src/main/ui-kit/dropdown/styles.scss | 205 +++ .../src/main/ui-kit/filter-section/index.ts | 172 ++- .../main/ui-kit/filter-section/styles.scss | 49 +- .../src/main/ui-kit/global.scss | 3 +- .../src/main/ui-kit/helpers.scss | 2 +- .../src/main/ui-kit/icon/index.ts | 1 - .../src/main/ui-kit/icon/styles.scss | 16 +- .../src/main/ui-kit/index.ts | 6 + .../src/main/ui-kit/library-name/index.ts | 1 - .../src/main/ui-kit/library-name/styles.scss | 19 +- .../src/main/ui-kit/library-version/index.ts | 1 - .../main/ui-kit/library-version/styles.scss | 11 +- .../ui-kit/navbar-button/assets/burger.svg | 5 - .../ui-kit/navbar-button/assets/filter.svg | 8 - .../src/main/ui-kit/navbar-button/index.ts | 31 +- .../src/main/ui-kit/navbar-button/styles.scss | 35 +- .../src/main/ui-kit/navbar/index.ts | 1 - .../src/main/ui-kit/navbar/styles.scss | 16 +- .../src/main/ui-kit/platform-tag/index.ts | 1 - .../src/main/ui-kit/platform-tag/styles.scss | 29 +- .../src/main/ui-kit/platform-tags/index.ts | 1 - .../src/main/ui-kit/platform-tags/styles.scss | 1 + .../src/main/ui-kit/tabs/styles.scss | 2 +- .../src/main/ui-kit/toc-tree/index.ts | 4 + .../src/main/ui-kit/toc-tree/styles.scss | 290 ++++ .../src/main/ui-kit/utils.ts | 34 + .../webpack.config-ui-kit.js | 41 +- .../base/renderers/html/NavigationPage.kt | 32 +- .../base/renderers/html/htmlPreprocessors.kt | 50 +- .../DefaultTemplateModelFactory.kt | 2 +- .../resources/dokka/images/arrow_down.svg | 3 - .../main/resources/dokka/images/burger.svg | 5 - .../resources/dokka/images/theme-toggle.svg | 3 - .../dokka/scripts/navigation-loader.js | 32 +- .../dokka/scripts/platform-content-handler.js | 25 +- .../dokka/styles/font-jb-sans-auto.css | 4 + .../src/main/resources/dokka/styles/style.css | 229 +-- .../main/resources/dokka/templates/base.ftl | 18 +- .../dokka/templates/includes/header.ftl | 18 +- .../includes/source_set_selector.ftl | 33 +- .../ui-kit/assets/abstract-class-kotlin.svg | 26 + .../dokka/ui-kit/assets/abstract-class.svg | 22 + .../dokka/ui-kit/assets/annotation-kotlin.svg | 13 + .../dokka/ui-kit/assets/annotation.svg | 9 + .../dokka/ui-kit/assets/checkbox-off.svg | 3 + .../dokka/ui-kit/assets/checkbox-on.svg | 3 + .../dokka/ui-kit/assets/class-kotlin.svg | 13 + .../resources/dokka/ui-kit/assets/class.svg | 9 + .../resources/dokka/ui-kit/assets/cross.svg | 3 + .../dokka/ui-kit/assets/enum-kotlin.svg | 13 + .../resources/dokka/ui-kit/assets/enum.svg | 9 + .../dokka/ui-kit/assets/exception-class.svg | 9 + .../dokka/ui-kit/assets/field-value.svg | 10 + .../dokka/ui-kit/assets/field-variable.svg | 10 + .../dokka/ui-kit/assets/function.svg | 9 + .../dokka/ui-kit/assets/interface-kotlin.svg | 13 + .../dokka/ui-kit/assets/interface.svg | 9 + .../resources/dokka/ui-kit/assets/object.svg | 13 + .../dokka/ui-kit/assets/typealias-kotlin.svg | 13 + .../main/resources/dokka/ui-kit/ui-kit.css | 1287 +++++++++++++++-- .../resources/dokka/ui-kit/ui-kit.min.css | 27 +- .../main/resources/dokka/ui-kit/ui-kit.min.js | 2 +- .../versioning/VersionsNavigationCreator.kt | 75 +- .../resources/dokka/styles/multimodule.css | 64 +- 108 files changed, 2883 insertions(+), 703 deletions(-) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images/homepage.svg => plugin-base-frontend/src/main/ui-kit/_assets/arrow-down.svg} (59%) create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/burger.svg create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/checkbox-off.svg create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/checkbox-on.svg create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/cross.svg create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/filter.svg rename dokka-subprojects/plugin-base-frontend/src/main/ui-kit/{navbar-button/assets => _assets}/homepage.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/abstract-class-kotlin.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/abstract-class.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/annotation-kotlin.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/annotation.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/class-kotlin.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/class.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/enum-kotlin.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/enum.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/exception-class.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/field-value.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/field-variable.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/function.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/interface-kotlin.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/interface.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/object.svg (100%) rename dokka-subprojects/{plugin-base/src/main/resources/dokka/images => plugin-base-frontend/src/main/ui-kit/_assets}/nav-icons/typealias-kotlin.svg (100%) create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/placeholder.svg rename dokka-subprojects/plugin-base-frontend/src/main/ui-kit/{navbar-button/assets => _assets}/theme-toggle.svg (100%) rename dokka-subprojects/plugin-base-frontend/src/main/ui-kit/{tokens => _tokens}/breakpoints.scss (100%) rename dokka-subprojects/plugin-base-frontend/src/main/ui-kit/{tokens => _tokens}/colors.scss (95%) rename dokka-subprojects/plugin-base-frontend/src/main/ui-kit/{tokens => _tokens}/index.scss (100%) rename dokka-subprojects/plugin-base-frontend/src/main/ui-kit/{tokens => _tokens}/sizes.scss (100%) rename dokka-subprojects/plugin-base-frontend/src/main/ui-kit/{tokens => _tokens}/transitions.scss (100%) rename dokka-subprojects/plugin-base-frontend/src/main/ui-kit/{tokens => _tokens}/typography.scss (100%) create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/checkbox/index.ts create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/checkbox/styles.scss create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/dropdown.stories.ftl create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/focus-trap.ts create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/index.ts create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/styles.scss create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/toc-tree/index.ts create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/toc-tree/styles.scss create mode 100644 dokka-subprojects/plugin-base-frontend/src/main/ui-kit/utils.ts delete mode 100755 dokka-subprojects/plugin-base/src/main/resources/dokka/images/arrow_down.svg delete mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/images/burger.svg delete mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/images/theme-toggle.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/abstract-class-kotlin.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/abstract-class.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/annotation-kotlin.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/annotation.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/checkbox-off.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/checkbox-on.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/class-kotlin.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/class.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/cross.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/enum-kotlin.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/enum.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/exception-class.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/field-value.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/field-variable.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/function.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/interface-kotlin.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/interface.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/object.svg create mode 100644 dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/typealias-kotlin.svg diff --git a/dokka-subprojects/plugin-base-frontend/create-component.mjs b/dokka-subprojects/plugin-base-frontend/create-component.mjs index c63c57f54a..10fbed72f4 100644 --- a/dokka-subprojects/plugin-base-frontend/create-component.mjs +++ b/dokka-subprojects/plugin-base-frontend/create-component.mjs @@ -11,7 +11,6 @@ const lowerCaseComponentName = firstLetterToLoweCase(componentName); const lowerCaseComponentNameCamelCase = firstLetterToLoweCase(kebabToCamelCase(componentName)); const uiKitIndexTsFile = `${uiKitPath}/index.ts`; -const uiKitIndexScssFile = `${uiKitPath}/index.scss`; const componentIndexTsFile = `${componentPath}/index.ts`; const componentScssFile = `${componentPath}/styles.scss`; @@ -20,14 +19,13 @@ const currentYear = new Date().getFullYear(); const componentIndexTsFileContent = `/* * Copyright 2014-${currentYear} JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - import './styles.scss'; `; const componentScssFileContent = `/*! * Copyright 2014-${currentYear} JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@import '../tokens/index'; +@import '../_tokens/index'; .${lowerCaseComponentName} { } @@ -36,10 +34,6 @@ const componentScssFileContent = `/*! const uiKitIndexTsFileContent = `import * as ${lowerCaseComponentNameCamelCase} from './${componentName}/index'; `; -const uiKitIndexScssFileContent = `@import './${componentName}/styles'; -`; - - fs.mkdir(componentPath, error => { if (error) { throw error; @@ -49,7 +43,6 @@ fs.mkdir(componentPath, error => { [componentIndexTsFile]: componentIndexTsFileContent, [componentScssFile]: componentScssFileContent, [uiKitIndexTsFile]: uiKitIndexTsFileContent, - [uiKitIndexScssFile]: uiKitIndexScssFileContent, }; Object.keys(pathToContentMap).forEach((path) => { diff --git a/dokka-subprojects/plugin-base-frontend/package-lock.json b/dokka-subprojects/plugin-base-frontend/package-lock.json index 683c3c5f7d..011ea6cc75 100644 --- a/dokka-subprojects/plugin-base-frontend/package-lock.json +++ b/dokka-subprojects/plugin-base-frontend/package-lock.json @@ -6659,9 +6659,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", - "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "funding": [ { "type": "opencollective", @@ -6676,12 +6676,11 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001640", - "electron-to-chromium": "^1.4.820", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -6806,9 +6805,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001645", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001645.tgz", - "integrity": "sha512-GFtY2+qt91kzyMk6j48dJcwJVq5uTkk71XxE3RtScx7XWRLsO7bU44LOFkOZYR8w9YMS0UhPSYpN/6rAMImmLw==", + "version": "1.0.30001677", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz", + "integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==", "funding": [ { "type": "opencollective", @@ -6822,8 +6821,7 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/capital-case": { "version": "1.0.4", @@ -7448,7 +7446,6 @@ "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.0.tgz", "integrity": "sha512-niy66jxsQHqO+EYbhPuIhqRQ1mNcNVUHrMnkzzir9kFOERJUaQDDRhh7dKDz33kBpkWMF9M8Vx0QlDbc5AHOsw==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "cssnano": "^7.0.1", @@ -8362,10 +8359,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz", - "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==", - "license": "ISC" + "version": "1.5.51", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.51.tgz", + "integrity": "sha512-kKeWV57KSS8jH4alKt/jKnvHPmJgBxXzGUSbMd4eQF+iOsVPl7bz2KUmu6eo80eMP8wVioTfTyTzdMgM15WXNg==" }, "node_modules/element-resize-detector": { "version": "1.2.4", @@ -8684,10 +8680,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "license": "MIT", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "engines": { "node": ">=6" } @@ -13952,10 +13947,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "license": "ISC" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -14638,16 +14632,15 @@ } }, "node_modules/postcss-merge-rules": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.2.tgz", - "integrity": "sha512-VAR47UNvRsdrTHLe7TV1CeEtF9SJYR5ukIB9U4GZyZOptgtsS20xSxy+k5wMrI3udST6O1XuIn7cjQkg7sDAAw==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz", + "integrity": "sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==", "dev": true, - "license": "MIT", "dependencies": { - "browserslist": "^4.23.1", + "browserslist": "^4.23.3", "caniuse-api": "^3.0.0", "cssnano-utils": "^5.0.0", - "postcss-selector-parser": "^6.1.0" + "postcss-selector-parser": "^6.1.2" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -15256,10 +15249,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", - "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", - "license": "MIT", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -15268,16 +15260,6 @@ "node": ">=4" } }, - "node_modules/postcss-sorting": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz", - "integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "postcss": "^8.4.20" - } - }, "node_modules/postcss-svgo": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.1.tgz", @@ -17677,6 +17659,15 @@ "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1" } }, + "node_modules/stylelint-order/node_modules/postcss-sorting": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz", + "integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==", + "dev": true, + "peerDependencies": { + "postcss": "^8.4.20" + } + }, "node_modules/stylelint/node_modules/@csstools/selector-specificity": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", @@ -18825,9 +18816,9 @@ "license": "MIT" }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "funding": [ { "type": "opencollective", @@ -18842,10 +18833,9 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" diff --git a/dokka-subprojects/plugin-base-frontend/package.json b/dokka-subprojects/plugin-base-frontend/package.json index ec44ca0a27..ae6de54077 100644 --- a/dokka-subprojects/plugin-base-frontend/package.json +++ b/dokka-subprojects/plugin-base-frontend/package.json @@ -10,7 +10,7 @@ "create-component": "node --experimental-modules create-component.mjs", "start:ui-kit": "webpack serve --config ./webpack.config-ui-kit.js --env minify=true", "build:ui-kit:watch": "webpack --config ./webpack.config-ui-kit.js --env watch=true --env minify=true", - "build:ui-kit": "npm run build:ui-kit:minified && npm run build:ui-kit:unminified", + "build:ui-kit": "npm run build:ui-kit:unminified && npm run build:ui-kit:minified", "build:ui-kit:minified": "webpack --config ./webpack.config-ui-kit.js --env minify=true", "build:ui-kit:unminified": "webpack --config ./webpack.config-ui-kit.js --env minify=false", "build": "webpack --mode=production --devtool source-map", diff --git a/dokka-subprojects/plugin-base-frontend/src/main/components/search/search.scss b/dokka-subprojects/plugin-base-frontend/src/main/components/search/search.scss index d2c17c5fb9..ddd1e79a2a 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/components/search/search.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/components/search/search.scss @@ -2,20 +2,35 @@ * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@import '../../ui-kit/tokens/index'; +@import '../../ui-kit/_tokens/index'; -$font-color: hsla(0deg, 0%, 100%, 0.8); -$secondary-font-color: hsla(0deg, 0%, 100%, 0.6); +$font-color: rgba(255, 255, 255, 0.96); +$secondary-font-color: rgba(255, 255, 255, 0.7); #pages-search { + width: 40px; + height: 40px; padding: 0; cursor: pointer; border: none; + border-radius: var(--size-s1); + background: transparent; font-size: 0; + + &:focus-visible { + outline: var(--focus-outline); + } +} + +@media (width < 900px) { + #pages-search { + width: 52px; + height: 52px; + } } .search { @@ -30,6 +45,7 @@ $secondary-font-color: hsla(0deg, 0%, 100%, 0.6); font-size: 0; line-height: 0; + tab-index: 1; } } @@ -40,7 +56,7 @@ $secondary-font-color: hsla(0deg, 0%, 100%, 0.6); } .popup-wrapper { - min-width: calc(100% - 322px) !important; + min-width: 636px !important; color: $font-color; @@ -50,10 +66,15 @@ $secondary-font-color: hsla(0deg, 0%, 100%, 0.6); [class^='filterWrapper'] { border-bottom: 1px solid hsla(0deg, 0%, 100%, 0.2); + margin-bottom: 4px; } input { - color: $font-color !important; + height: 40px; + + color: #fff; + + font-size: 16px; font-weight: normal !important; } @@ -64,6 +85,16 @@ $secondary-font-color: hsla(0deg, 0%, 100%, 0.6); button[data-test='ring-input-clear'] { color: #fff !important; + top: 10px; + right: 6px; + + span { + display: none; + } + + &::after { + content: 'Clear'; + } } } @@ -71,28 +102,58 @@ $secondary-font-color: hsla(0deg, 0%, 100%, 0.6); .popup-wrapper { min-width: 100% !important; } + .search-hotkey-popup { + display: none; + } } .template-wrapper { - display: grid; + display: flex; + overflow: hidden; + flex-direction: column; - height: 32px; + height: auto; + padding: 4px 24px; grid-template-columns: auto auto; strong { color: $font-color; + background: rgba(48, 127, 255, 0.3); } +} - span { - color: $font-color; +.template-title { + display: -webkit-box; + overflow: hidden; - line-height: 32px; + white-space: normal; + word-break: break-all; - &.template-description { - color: $secondary-font-color; - justify-self: end; - } - } + color: #fff; + + font-size: 16px; + font-weight: 600; + line-height: 24px; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.template-description { + display: block; + display: -webkit-box; + overflow: hidden; + + white-space: normal; + word-break: break-all; + + color: $secondary-font-color; + + font-size: 14px; + font-weight: normal; + line-height: 20px; + justify-self: end; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; } @media screen and (width <= 759px) { @@ -106,6 +167,16 @@ $secondary-font-color: hsla(0deg, 0%, 100%, 0.6); line-height: unset; } } + + .template-title { + font-size: 14px; + line-height: 20px; + } + + .template-description { + font-size: 14px; + line-height: 20px; + } } .template-name { @@ -120,3 +191,20 @@ $secondary-font-color: hsla(0deg, 0%, 100%, 0.6); [class*='hover'] { background-color: hsla(0deg, 0%, 100%, 0.1) !important; } + +div[data-test='ring-select-popup-filter'] { + padding-left: 40px; +} + +span[data-test-custom='ring-select-popup-filter-icon'] { + top: 11px; + left: 14px; + svg { + width: 18px !important; + height: 18px !important; + } +} + +div[data-test='ring-popup'] { + border-radius: 0; +} diff --git a/dokka-subprojects/plugin-base-frontend/src/main/components/search/search.tsx b/dokka-subprojects/plugin-base-frontend/src/main/components/search/search.tsx index b0672048db..1e5ff03b00 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/components/search/search.tsx +++ b/dokka-subprojects/plugin-base-frontend/src/main/components/search/search.tsx @@ -42,6 +42,7 @@ const WithFuzzySearchFilterComponent: React.FC = ({ data }: Props) => { data={data} popupClassName={'popup-wrapper'} onSelect={onChangeSelected} + maxHeight={510} customAnchor={({ wrapperProps, buttonProps, popup }: CustomAnchorProps) => ( )} diff --git a/dokka-subprojects/plugin-base-frontend/src/main/components/search/searchResultRow.tsx b/dokka-subprojects/plugin-base-frontend/src/main/components/search/searchResultRow.tsx index d77dac45e1..dfb82280ae 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/components/search/searchResultRow.tsx +++ b/dokka-subprojects/plugin-base-frontend/src/main/components/search/searchResultRow.tsx @@ -29,7 +29,7 @@ export const SearchResultRow: React.FC = ({ searchResult }: SearchP return (
- {out} +
{out}
{searchResult.description}
); diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/homepage.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/arrow-down.svg similarity index 59% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/homepage.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/arrow-down.svg index e3c83b1ce3..ca54658d3c 100644 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/homepage.svg +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/arrow-down.svg @@ -1,3 +1,3 @@ - + diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/burger.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/burger.svg new file mode 100644 index 0000000000..a26f194dc4 --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/burger.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/checkbox-off.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/checkbox-off.svg new file mode 100644 index 0000000000..a5117e8d9a --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/checkbox-off.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/checkbox-on.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/checkbox-on.svg new file mode 100644 index 0000000000..71891d57dd --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/checkbox-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/cross.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/cross.svg new file mode 100644 index 0000000000..232069f85e --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/cross.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/filter.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/filter.svg new file mode 100644 index 0000000000..be62ea5bf3 --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/filter.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/homepage.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/homepage.svg similarity index 100% rename from dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/homepage.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/homepage.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/abstract-class-kotlin.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/abstract-class-kotlin.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/abstract-class-kotlin.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/abstract-class-kotlin.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/abstract-class.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/abstract-class.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/abstract-class.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/abstract-class.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/annotation-kotlin.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/annotation-kotlin.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/annotation-kotlin.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/annotation-kotlin.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/annotation.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/annotation.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/annotation.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/annotation.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/class-kotlin.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/class-kotlin.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/class-kotlin.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/class-kotlin.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/class.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/class.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/class.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/class.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/enum-kotlin.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/enum-kotlin.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/enum-kotlin.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/enum-kotlin.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/enum.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/enum.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/enum.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/enum.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/exception-class.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/exception-class.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/exception-class.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/exception-class.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/field-value.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/field-value.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/field-value.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/field-value.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/field-variable.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/field-variable.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/field-variable.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/field-variable.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/function.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/function.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/function.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/function.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/interface-kotlin.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/interface-kotlin.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/interface-kotlin.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/interface-kotlin.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/interface.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/interface.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/interface.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/interface.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/object.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/object.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/object.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/object.svg diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/typealias-kotlin.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/typealias-kotlin.svg similarity index 100% rename from dokka-subprojects/plugin-base/src/main/resources/dokka/images/nav-icons/typealias-kotlin.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/nav-icons/typealias-kotlin.svg diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/placeholder.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/placeholder.svg new file mode 100644 index 0000000000..e8129621d2 --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/placeholder.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/theme-toggle.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/theme-toggle.svg similarity index 100% rename from dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/theme-toggle.svg rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_assets/theme-toggle.svg diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/breakpoints.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/breakpoints.scss similarity index 100% rename from dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/breakpoints.scss rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/breakpoints.scss diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/colors.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/colors.scss similarity index 95% rename from dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/colors.scss rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/colors.scss index 97e51c0a09..9528eca734 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/colors.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/colors.scss @@ -1,10 +1,11 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ + :root { // Interface --color-key-blue: rgb(48, 127, 255); //#307FFF; - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -20,6 +21,7 @@ // Generic monochrome --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/index.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/index.scss similarity index 100% rename from dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/index.scss rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/index.scss diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/sizes.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/sizes.scss similarity index 100% rename from dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/sizes.scss rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/sizes.scss diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/transitions.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/transitions.scss similarity index 100% rename from dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/transitions.scss rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/transitions.scss diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/typography.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/typography.scss similarity index 100% rename from dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tokens/typography.scss rename to dokka-subprojects/plugin-base-frontend/src/main/ui-kit/_tokens/typography.scss diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/button/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/button/index.ts index f86bc1f3bc..ba170bf3d6 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/button/index.ts +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/button/index.ts @@ -1,12 +1,4 @@ /* * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - import './styles.scss'; - -function onToggleDropdown(event: PointerEvent): void { - (event.target as HTMLButtonElement).classList.toggle('button_dropdown_active'); -} - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -(window as any).onToggleDropdown = onToggleDropdown; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/button/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/button/styles.scss index 6ac35df513..f62a05de47 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/button/styles.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/button/styles.scss @@ -1,11 +1,12 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@import '../tokens/index'; +@import '../_tokens/index'; .button { display: flex; align-items: center; + justify-content: center; height: 40px; @@ -28,8 +29,10 @@ padding: var(--size-s2); } - &:hover { - background-color: var(--color-b08); + @media (hover: hover) { + &:hover { + background-color: var(--color-b08); + } } &:active { @@ -43,7 +46,7 @@ } &:focus-visible { - outline: 4px solid var(--color-key-blue-05); + outline: var(--focus-outline); } .theme-dark & { @@ -69,6 +72,8 @@ &_dropdown { padding: var(--size-s2); + font: var(--font-text-s); + &::after { display: block; @@ -78,7 +83,7 @@ content: ''; transform: rotate(0); - background-image: url('./assets/arrow-down.svg'); + background-image: url('../_assets/arrow-down.svg'); background-repeat: no-repeat; will-change: transform; @@ -96,7 +101,7 @@ &:hover, .theme-dark &:hover { - background-color: lighten(rgb(48, 127, 255), 10%); + background-color: lighten(rgb(48, 127, 255), 10%); // color-key-blue } &::after { diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/checkbox/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/checkbox/index.ts new file mode 100644 index 0000000000..ba170bf3d6 --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/checkbox/index.ts @@ -0,0 +1,4 @@ +/* + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ +import './styles.scss'; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/checkbox/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/checkbox/styles.scss new file mode 100644 index 0000000000..4943b0fb2b --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/checkbox/styles.scss @@ -0,0 +1,42 @@ +/*! + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ +@import '../_tokens/index'; + +.checkbox { + position: relative; + + display: inline-block; + + cursor: pointer; + + &--input { + position: absolute; + appearance: none; + + visibility: hidden; + } + + &--icon { + position: absolute; + + width: var(--size-m1); + height: var(--size-m1); + + margin-left: calc(-1 * var(--size-m2)); + + background-image: url('../_assets/checkbox-off.svg'); + } + + &--input:checked + &--icon { + background-image: url('../_assets/checkbox-on.svg'); + } + + &--input:disabled + &--icon { + opacity: 0.2; + } + + &--input:focus-visible { + outline: var(--focus-outline); + } +} diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/dropdown.stories.ftl b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/dropdown.stories.ftl new file mode 100644 index 0000000000..b855bba931 --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/dropdown.stories.ftl @@ -0,0 +1,25 @@ +<#macro display> + + diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/focus-trap.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/focus-trap.ts new file mode 100644 index 0000000000..ed72411dfc --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/focus-trap.ts @@ -0,0 +1,62 @@ +/* + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +export class FocusTrap { + private trapElement: HTMLElement; + + constructor(trapElement: HTMLElement) { + this.trapElement = trapElement; + this.handleKeyDown = this.handleKeyDown.bind(this); + this.trapElement.addEventListener('keydown', this.handleKeyDown); + } + + private handleKeyDown(event: KeyboardEvent) { + const navigationKeys = ['Tab', 'ArrowDown', 'ArrowUp']; + const focusableElements = Array.from(this.trapElement.querySelectorAll('[role="option"]')).filter( + (element) => element.style.display !== 'none' && element.tabIndex !== -1 + ); + if (!navigationKeys.includes(event.key) || focusableElements.length === 0) { + return; + } + + const firstElement = focusableElements[0]; + const lastElement = focusableElements[focusableElements.length - 1]; + + if (event.key === 'ArrowUp') { + if (document.activeElement === firstElement) { + lastElement.focus(); + } else { + const currentIndex = focusableElements.indexOf(document.activeElement as HTMLElement); + focusableElements[currentIndex - 1].focus(); + } + } + + if (event.key === 'ArrowDown') { + if (document.activeElement === lastElement) { + firstElement.focus(); + } else { + const currentIndex = focusableElements.indexOf(document.activeElement as HTMLElement); + focusableElements[currentIndex + 1].focus(); + } + } + + if (event.key === 'Tab') { + if (event.shiftKey) { + if (document.activeElement === firstElement) { + lastElement.focus(); + event.preventDefault(); + } + } else { + if (document.activeElement === lastElement) { + firstElement.focus(); + event.preventDefault(); + } + } + } + } + + public destroy() { + this.trapElement.removeEventListener('keydown', this.handleKeyDown); + } +} diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/index.ts new file mode 100644 index 0000000000..920c389f8d --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/index.ts @@ -0,0 +1,68 @@ +/* + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ +import './styles.scss'; +import { hasAncestorWithClass } from '../utils'; +import { FocusTrap } from './focus-trap'; + +// page objects selectors +const DROPDOWN = '[data-role="dropdown"]'; +const DROPDOWN_TOGGLE = '[data-role="dropdown-toggle"]'; +const DROPDOWN_LIST = '[data-role="dropdown-listbox"]'; + +function initDropdowns(): void { + const dropdowns = document.querySelectorAll(DROPDOWN); + dropdowns.forEach((dropdown: Element) => { + dropdown.querySelectorAll(DROPDOWN_TOGGLE)?.forEach((button: Element) => { + button.addEventListener('click', () => onToggleDropdown(dropdown)); + }); + addKeyboardNavigation(dropdown as HTMLElement); + }); +} + +export function onToggleDropdown(dropdown: Element): void { + const buttons = dropdown.querySelectorAll(DROPDOWN_TOGGLE); + buttons?.forEach(toggleDropdownButton); + const list = dropdown.querySelector(DROPDOWN_LIST); + toggleDropdownList(list); +} + +function toggleDropdownButton(button: Element): void { + if (button.classList.contains('button_dropdown')) { + button.classList.toggle('button_dropdown_active'); + } +} + +function toggleDropdownList(list: Element | null): void { + list?.classList.toggle('dropdown--list_expanded'); +} + +function handleOutsideClick(event: MouseEvent): void { + const target = event.target as HTMLElement; + if (!hasAncestorWithClass(target, 'dropdown') || target.className === 'dropdown--overlay') { + const dropdowns = document.querySelectorAll(DROPDOWN); + dropdowns.forEach((dropdown) => { + dropdown.querySelectorAll(DROPDOWN_TOGGLE)?.forEach((button: Element) => { + button.classList.remove('button_dropdown_active'); + }); + dropdown.querySelectorAll(DROPDOWN_LIST)?.forEach((list: Element) => { + list.classList.remove('dropdown--list_expanded'); + }); + }); + } +} + +function addKeyboardNavigation(dropdown: HTMLElement): void { + new FocusTrap(dropdown); + dropdown.addEventListener('keydown', function (event) { + if (event.key === 'Escape') { + onToggleDropdown(dropdown); + (dropdown.querySelector(DROPDOWN_TOGGLE) as HTMLElement)?.focus(); + } + }); +} + +document.addEventListener('DOMContentLoaded', () => { + initDropdowns(); + document.addEventListener('click', handleOutsideClick); +}); diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/styles.scss new file mode 100644 index 0000000000..eee110b55e --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/dropdown/styles.scss @@ -0,0 +1,205 @@ +/*! + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ +@import '../_tokens/index'; + +.dropdown { + position: relative; + + @media (width < $breakpoint-desktop-min) { + position: static; + } + + &--list { + position: absolute; + z-index: 10; + top: 44px; + + right: 0; + + display: none; + + overflow-y: auto; + + width: fit-content; + + min-width: 272px; + max-width: 360px; + max-height: 400px; + padding: 12px 0; + + border: 1px solid lighten(rgb(50, 50, 55), 15%); // color-background-nav-dt + background-color: var(--color-background-nav-dt); + + box-shadow: 0 2px 8px 0 #00000040; + + @media (width < $breakpoint-desktop-min) { + top: 0; + right: 0; + + height: 100vh; + max-height: unset; + + padding: 0; + + border: none; + } + + @media (width < $breakpoint-tablet-min) { + width: 100vw; + max-width: unset; + } + + &_positioned_right { + right: 0; + } + + &_positioned_left { + left: 0; + + @media (width < $breakpoint-desktop-min) { + left: unset; + } + } + + &_expanded { + display: block; + } + + &_toc-list { + @media (width >= $breakpoint-desktop-min) { + position: relative; + + top: 0; + + display: block; + + min-width: unset; + max-width: unset; + + max-height: unset; + + padding: 0; + + border: none; + + background-color: transparent; + + box-shadow: none; + } + + @media (width >= $breakpoint-tablet-min) and (width < $breakpoint-desktop-min) { + width: 408px; + } + } + } + + &--option { + position: relative; + + display: block; + + padding: var(--size-s2) var(--size-s3); + + list-style-type: none; + + cursor: pointer; + letter-spacing: -0.03em; + + text-transform: capitalize; + + color: var(--color-text-nav-dt); + + border: none; + background-color: var(--color-background-nav-dt); + + font: var(--font-text-m); + + &:hover { + background-color: lighten(rgb(50, 50, 55), 10%); // color-background-nav-dt + } + + &:focus-visible { + z-index: 1; + + outline: var(--focus-outline); + } + + &:visited { + color: var(--color-text-nav-dt); + } + + &_active { + background-color: var(--color-key-blue); + + &:hover { + background-color: lighten(rgb(48, 127, 255), 10%); // color-key-blue + } + } + + &_link { + text-decoration: none; + + color: var(--color-text-nav-dt); + + &:focus-visible { + outline: var(--focus-outline); + } + } + + & .checkbox { + pointer-events: none; + } + } + + &--overlay { + position: absolute; + z-index: 4; + + top: 0; + right: 0; + bottom: 0; + left: 0; + + display: none; + + width: 100vw; + height: 100vh; + + content: ''; + + background-color: rgba(137, 137, 137, 0.5); + + .dropdown--list_expanded + & { + display: block; + + @media (width >= $breakpoint-desktop-min) { + display: none; + } + } + } + + &--header { + position: sticky; + z-index: 2; + top: 0; + + display: flex; + align-items: center; + justify-content: space-between; + + height: 52px; + + padding-left: var(--size-s3); + + color: var(--color-w70); + + border-bottom: 1px solid lighten(rgb(50, 50, 55), 15%); // color-background-nav-dt + + background-color: var(--color-background-nav-dt); + + @media (width >= $breakpoint-desktop-min) { + display: none; + } + } +} diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/filter-section/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/filter-section/index.ts index fdaa339ab4..f8c1302d0e 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/filter-section/index.ts +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/filter-section/index.ts @@ -1,5 +1,175 @@ /* * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - import './styles.scss'; +import { DESKTOP_MIN_WIDTH, getScreenType } from '../utils'; + +const TAGS_MARGIN = 4; +const DROPDOWN_BUTTON_WIDTH_WITH_MARGIN = 44; +const THRESHOLD_GAP = 10; + +/** + * Filter section items are tags with platform names, they should fit in one line. + * If there is not enough space, extra tags should be hidden and dropdown options should be shown instead. + * */ +type FilterSectionItem = { + tag: Element; + option: Element; +}; + +function displayItemAsTag(item: FilterSectionItem): void { + item.tag.removeAttribute('style'); + item.option.setAttribute('style', 'display: none'); +} + +function displayItemAsOption(item: FilterSectionItem): void { + item.tag.setAttribute('style', 'display: none'); + item.option.removeAttribute('style'); +} + +function getTagsWidths(items: FilterSectionItem[]): number[] { + return items.map(({ tag }) => tag.getBoundingClientRect().width); +} + +function initFilterSection(): void { + const navigation = document.getElementById('navigation-wrapper'); + const libraryVersion = document.getElementById('library-version'); + const filterSection = document.getElementById('filter-section'); + const firstButtonAfterFilterSection = document.querySelector('#filter-section + .navigation-controls--btn'); + const dropdownButton = document.getElementById('filter-section-dropdown'); + + if (!navigation || !libraryVersion || !filterSection || !firstButtonAfterFilterSection || !dropdownButton) { + console.warn('Dokka: filter section is not found'); + return; + } + + const options = filterSection?.querySelectorAll('.dropdown--option'); + const tags = filterSection?.querySelectorAll('.platform-selector'); + + if (!tags || !options) { + console.warn('Dokka: filter section items are not found'); + return; + } + if (tags.length !== options.length) { + console.warn('Dokka: filter section items are not equal'); + return; + } + + const items: FilterSectionItem[] = Array.from({ length: tags.length }).map((_, index) => ({ + tag: tags[index], + option: options[index], + })); + + /** + * Saved widths of each tag while they were visible. + * */ + let tagsWidths: number[] = items.map(({ tag }) => tag.getBoundingClientRect().width); + + /** + * According to the design, filter section tags should fit between library version and navigation buttons. + */ + function getAvailableWidthForFilterSection(): number { + if (!libraryVersion || !firstButtonAfterFilterSection) { + return 0; + } + return firstButtonAfterFilterSection.getBoundingClientRect().left - libraryVersion.getBoundingClientRect().right; + } + + /** + * If there is not enough space for all tags, the last tag should be hidden and displayed as a dropdown option. + * But on narrow screens, all tags should be displayed as dropdown options. + */ + function displayFilterSectionItems(): void { + if (!navigation || !dropdownButton) { + return; + } + const navigationWidth = navigation.getBoundingClientRect().width; + if (navigationWidth < DESKTOP_MIN_WIDTH) { + items.forEach(displayItemAsOption); + dropdownButton.removeAttribute('style'); + return; + } + const availableWidth = getAvailableWidthForFilterSection() - DROPDOWN_BUTTON_WIDTH_WITH_MARGIN - THRESHOLD_GAP; + let accumulatedWidth = 0; + dropdownButton.removeAttribute('style'); + let areTagsDisplayed = false; + items.forEach((item, index) => { + accumulatedWidth += tagsWidths[index] + TAGS_MARGIN; + if (accumulatedWidth < availableWidth) { + displayItemAsTag(item); + areTagsDisplayed = true; + } else { + displayItemAsOption(item); + dropdownButton.setAttribute('style', 'display: block'); + } + }); + if (areTagsDisplayed) { + dropdownButton.firstElementChild?.classList.remove('filter-section--dropdown-toggle_as-filters'); + } else { + dropdownButton.firstElementChild?.classList.add('filter-section--dropdown-toggle_as-filters'); + } + filterSection?.classList.remove('filter-section_loading'); + } + + let prevScreenType = getScreenType(); + + const resizeObserver = new ResizeObserver(() => { + const nextScreenType = getScreenType(); + if (prevScreenType !== nextScreenType) { + items.forEach(displayItemAsTag); + tagsWidths = getTagsWidths(items); + } + prevScreenType = nextScreenType; + displayFilterSectionItems(); + resizeObserver.unobserve(navigation); + }); + + const initResizeObserver = (): void => { + resizeObserver.observe(navigation); + }; + + function addOptionEventListener(): void { + options.forEach((option) => { + option.addEventListener('click', (event) => { + toggleFilterForOption(event.target as Element); + }); + option.addEventListener('keydown', (event) => { + const key = (event as KeyboardEvent).key; + if (key === 'Enter' || key === ' ') { + toggleFilterForOption(event.target as Element); + } + }); + }); + } + + displayFilterSectionItems(); + initResizeObserver(); + addOptionEventListener(); + window.addEventListener('resize', initResizeObserver); +} + +document.addEventListener('DOMContentLoaded', initFilterSection); + +declare global { + const filteringContext: { + activeFilters: (string | null | undefined)[]; + }; + + function refreshFiltering(): void; + function refreshSourcesetsCache(): void; +} + +/** + * This syncs platform tags and dropdown options filtering behavior. + */ +function toggleFilterForOption(option: Element): void { + const dataFilter = option.querySelector('.checkbox--input')?.getAttribute('data-filter'); + const index = filteringContext.activeFilters.findIndex((item) => item === dataFilter); + if (index === -1) { + filteringContext.activeFilters.push(dataFilter); + } else { + filteringContext.activeFilters.splice(index, 1); + } + refreshFiltering(); + refreshSourcesetsCache(); +} diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/filter-section/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/filter-section/styles.scss index 573a254861..c5d408cdb3 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/filter-section/styles.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/filter-section/styles.scss @@ -1,20 +1,61 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@import '../tokens/index'; +@import '../_tokens/index'; .filter-section { - z-index: 0; + z-index: 1; display: flex; + align-items: center; flex-wrap: wrap; + justify-content: flex-end; + + max-height: 40px; margin-right: 12px; gap: 2px; - @media (width <= $breakpoint-desktop-min) { - display: none; + &_loading { + overflow: hidden; + } + + &--dropdown { + @media (width >= $breakpoint-desktop-min) { + display: none; + } + } + + &--dropdown-toggle_as-filters { + min-width: 40px; + + background-image: url('../_assets/filter.svg'); + background-repeat: no-repeat; + background-position: 50% 50%; + + &::after { + display: none; + } + } + + @media (width < $breakpoint-desktop-min) { + max-height: unset; + margin-right: 0; + + & > :not(.dropdown) { + display: none; + } + + &--dropdown-toggle { + background-image: url('../_assets/filter.svg'); + background-repeat: no-repeat; + background-position: 50% 50%; + + &::after { + display: none; + } + } } } diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/global.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/global.scss index 7bd55a665e..e1bda2f9a6 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/global.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/global.scss @@ -1,10 +1,11 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@import 'tokens/index'; +@import '_tokens/index'; :root { --color-background: var(--color-background-page); + --focus-outline: 4px solid var(--color-key-blue-50); } .theme-dark { diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/helpers.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/helpers.scss index 04bb403f47..487dd2e53c 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/helpers.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/helpers.scss @@ -1,7 +1,7 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@import 'tokens/index'; +@import '_tokens/index'; .ui-kit_desktop-only { @media (width < $breakpoint-desktop-min) { diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/icon/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/icon/index.ts index fdaa339ab4..ba170bf3d6 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/icon/index.ts +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/icon/index.ts @@ -1,5 +1,4 @@ /* * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - import './styles.scss'; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/icon/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/icon/styles.scss index 209871f621..d9ff9034ad 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/icon/styles.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/icon/styles.scss @@ -1,7 +1,7 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@import '../tokens/index'; +@import '../_tokens/index'; .ui-kit-icon { width: var(--size-m1); @@ -21,12 +21,22 @@ .theme-dark & { filter: none; } + + @media (width < $breakpoint-desktop-min) { + .theme-dark_mobile & { + filter: none; + } + } } .ui-kit-icon_arrow-down { - background-image: url('./assets/arrow-down.svg'); + background-image: url('../_assets/arrow-down.svg'); } .ui-kit-icon_placeholder { - background-image: url('./assets/placeholder.svg'); + background-image: url('../_assets/placeholder.svg'); +} + +.ui-kit-icon_cross { + background-image: url('../_assets/cross.svg'); } diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/index.ts index 1d910e15eb..964e369955 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/index.ts +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/index.ts @@ -2,6 +2,8 @@ * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ import * as button from './button/index'; +import * as checkbox from './checkbox/index'; +import * as dropdown from './dropdown/index'; import * as filterSection from './filter-section/index'; import * as icon from './icon/index'; import * as libraryName from './library-name/index'; @@ -11,11 +13,14 @@ import * as navbarButton from './navbar-button/index'; import * as platformTag from './platform-tag/index'; import * as platformTags from './platform-tags/index'; import * as tabs from './tabs/index'; +import * as tocTree from './toc-tree/index'; import './helpers.scss'; import './global.scss'; export { button, + checkbox, + dropdown, filterSection, icon, libraryName, @@ -25,4 +30,5 @@ export { platformTag, platformTags, tabs, + tocTree, }; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-name/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-name/index.ts index fdaa339ab4..ba170bf3d6 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-name/index.ts +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-name/index.ts @@ -1,5 +1,4 @@ /* * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - import './styles.scss'; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-name/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-name/styles.scss index ed15b0dc52..ff166b5d64 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-name/styles.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-name/styles.scss @@ -1,12 +1,7 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@import '../tokens/index'; - -:root { - --dokka-logo-height: 28px; - --dokka-logo-width: 28px; -} +@import '../_tokens/index'; .library-name--link { display: flex; @@ -20,7 +15,11 @@ font: var(--font-h4); - @media (width <= $breakpoint-desktop-min) { + &:focus-visible { + outline: var(--focus-outline); + } + + @media (width < $breakpoint-desktop-min) { height: 52px; margin-left: 12px; @@ -28,8 +27,10 @@ } .library-name--link::before { - width: var(--dokka-logo-height); - height: var(--dokka-logo-width); + width: var(--dokka-logo-width); + height: var(--dokka-logo-height); + max-width: 120px; + max-height: 36px; margin-right: var(--size-s2); content: ''; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-version/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-version/index.ts index fdaa339ab4..ba170bf3d6 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-version/index.ts +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-version/index.ts @@ -1,5 +1,4 @@ /* * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - import './styles.scss'; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-version/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-version/styles.scss index 99362a57de..f33fe7c954 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-version/styles.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/library-version/styles.scss @@ -1,20 +1,25 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - -@import '../tokens/index'; +@import '../_tokens/index'; .library-version { + box-sizing: border-box; + + padding-top: 1px; + color: var(--color-text-dt); font: var(--font-text-s); - @media (width <= $breakpoint-desktop-min) { + @media (width < $breakpoint-desktop-min) { display: flex; align-items: center; height: 52px; + padding-left: 12px; + background-color: var(--color-text); } } diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/burger.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/burger.svg index a26f194dc4..e69de29bb2 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/burger.svg +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/burger.svg @@ -1,5 +0,0 @@ - - - - - diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/filter.svg b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/filter.svg index be62ea5bf3..e69de29bb2 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/filter.svg +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/assets/filter.svg @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/index.ts index fdaa339ab4..cb0426b7c4 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/index.ts +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/index.ts @@ -1,5 +1,34 @@ /* * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - import './styles.scss'; +import { onToggleDropdown } from '../dropdown'; + +function initTocToggle() { + const tocToggle = document.getElementById('toc-toggle'); + const tocDropdown = document.getElementById('toc-dropdown'); + if (!tocToggle || !tocDropdown) { + console.warn('Dokka: toc toggle or dropdown is not found'); + return; + } + tocToggle.addEventListener('click', (event) => { + event.stopPropagation(); + onToggleDropdown(tocDropdown); + }); +} + +export function toggleTocDropdown(): void { + const tocDropdown = document.getElementById('toc-dropdown'); + if (!tocDropdown) { + console.warn('Dokka: toc dropdown is not found'); + return; + } + onToggleDropdown(tocDropdown); +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +(window as any).toggleTocDropdown = toggleTocDropdown; + +document.addEventListener('DOMContentLoaded', () => { + initTocToggle(); +}); diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/styles.scss index 187a86db9a..78a43d94ce 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/styles.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar-button/styles.scss @@ -1,8 +1,7 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - -@import '../tokens/index'; +@import '../_tokens/index'; .navigation-controls { display: flex; @@ -11,7 +10,7 @@ margin-left: auto; - @media (width <= $breakpoint-desktop-min) { + @media (width < $breakpoint-desktop-min) { flex-grow: 1; justify-content: flex-end; @@ -25,8 +24,12 @@ } .navigation-controls--btn { + z-index: 0; + display: inline-flex; align-items: center; + + flex-shrink: 0; justify-content: center; width: 40px; @@ -47,11 +50,21 @@ line-height: 0; will-change: background-color; - &:hover { + @media (hover: hover) { + &:hover { + background-color: var(--color-b08); + } + } + + &:active { background-color: var(--color-w10); } - @media (width <= $breakpoint-desktop-min) { + &:focus-visible { + outline: var(--focus-outline); + } + + @media (width < $breakpoint-desktop-min) { width: 52px; height: 52px; } @@ -62,19 +75,15 @@ } .navigation-controls--btn_theme { - background-image: url('./assets/theme-toggle.svg'); + background-image: url('../_assets/theme-toggle.svg'); } .navigation-controls--btn_homepage { - background-image: url('./assets/homepage.svg'); + background-image: url('../_assets/homepage.svg'); } -.navigation-controls--btn_menu { +.navigation-controls--btn_toc { margin-left: auto; - background-image: url('./assets/burger.svg'); -} - -.navigation-controls--btn_filter { - background-image: url('./assets/filter.svg'); + background-image: url('../_assets/burger.svg'); } diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar/index.ts index fdaa339ab4..ba170bf3d6 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar/index.ts +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar/index.ts @@ -1,5 +1,4 @@ /* * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - import './styles.scss'; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar/styles.scss index 216622e550..d2077123b2 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar/styles.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/navbar/styles.scss @@ -1,24 +1,25 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@import '../tokens/index'; +@import '../_tokens/index'; .navigation { z-index: 4; display: flex; align-items: center; - flex-wrap: wrap; + flex-wrap: nowrap; justify-content: flex-start; box-sizing: border-box; - height: var(--size-l1); padding: 12px var(--size-m1); color: var(--color-text-dt); background-color: var(--color-background-nav); - @media (width <= $breakpoint-desktop-min) { + @media (width < $breakpoint-desktop-min) { + flex-wrap: wrap; + height: auto; padding: 0; } @@ -26,4 +27,11 @@ .theme-dark & { background-color: var(--color-background-nav-dt); } + + & .button { + @media (width < $breakpoint-desktop-min) { + min-width: 52px; + height: 52px; + } + } } diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tag/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tag/index.ts index fdaa339ab4..ba170bf3d6 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tag/index.ts +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tag/index.ts @@ -1,5 +1,4 @@ /* * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - import './styles.scss'; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tag/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tag/styles.scss index ae11e5d530..a4e9b1fb0e 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tag/styles.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tag/styles.scss @@ -1,7 +1,7 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@import '../tokens/index'; +@import '../_tokens/index'; .platform-tag { --platform-tag-color: #bababb; @@ -9,7 +9,6 @@ padding: 10px 12px; cursor: pointer; - letter-spacing: -0.03em; text-transform: capitalize; @@ -20,9 +19,24 @@ font: var(--font-text-s); } +button.platform-tag { + cursor: pointer; + + &:focus-visible { + outline: var(--focus-outline); + } +} + +.platform-selector-option { + padding-left: 44px; +} + .platform-tag.js-like, +.platform-selector-option.js-like, .platform-tag.jvm-like, -.platform-tag.wasm-like { +.platform-selector-option.jvm-like, +.platform-tag.wasm-like, +.platform-selector-option.wasm-like { text-transform: uppercase; } @@ -56,7 +70,14 @@ --platform-tag-color: #9585f9; } -.filter-section .platform-tag[data-active]:hover { +@media (hover: hover) { + .filter-section .platform-tag[data-active]:hover { + color: #fff; + background-color: rgba(186, 186, 187, 0.7); + } +} + +.filter-section .platform-tag[data-active]:active { color: #fff; background-color: rgba(186, 186, 187, 0.7); } diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tags/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tags/index.ts index fdaa339ab4..ba170bf3d6 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tags/index.ts +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tags/index.ts @@ -1,5 +1,4 @@ /* * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ - import './styles.scss'; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tags/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tags/styles.scss index 8547e23472..6f0cc58791 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tags/styles.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/platform-tags/styles.scss @@ -1,6 +1,7 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ +@import '../_tokens/index'; .platform-tags { display: flex; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tabs/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tabs/styles.scss index e56828839c..20e21a9413 100644 --- a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tabs/styles.scss +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/tabs/styles.scss @@ -1,7 +1,7 @@ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -@import '../tokens/index'; +@import '../_tokens/index'; .tabs-section, .platform-hinted > .platform-bookmarks-row { diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/toc-tree/index.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/toc-tree/index.ts new file mode 100644 index 0000000000..ba170bf3d6 --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/toc-tree/index.ts @@ -0,0 +1,4 @@ +/* + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ +import './styles.scss'; diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/toc-tree/styles.scss b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/toc-tree/styles.scss new file mode 100644 index 0000000000..01e9c8122d --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/toc-tree/styles.scss @@ -0,0 +1,290 @@ +/*! + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ +@import '../_tokens/index'; + +:root { + --toc-hover-color: var(--color-b08); + --toc-font: 400 13px/24px var(--font-family-default); + --toc-color: var(--color-text); +} + +.theme-dark { + --toc-hover-color: var(--color-w08); + --toc-color: var(--color-text-dt); +} + +@media (width < $breakpoint-desktop-min) { + .theme-dark_mobile { + --toc-color: var(--color-text-dt); + --toc-hover-color: var(--color-w08); + } +} + +.toc { + &--part { + box-sizing: border-box; + + color: var(--toc-color); + + font: var(--toc-font); + } + + &--row { + position: relative; + + display: flex; + align-items: center; + + box-sizing: border-box; + min-height: 40px; + + user-select: none; /* there's a weird bug with text selection */ + } + + &--button { + position: absolute; + + display: inline-flex; + align-items: center; + flex-shrink: 0; + justify-content: flex-end; + + min-width: 40px; + height: 100%; + + padding: 0 8px 0 0; + + cursor: pointer; + transition: var(--hover-transition); + + border: none; + background-color: inherit; + will-change: background-color; + + &::after { + width: 24px; + height: 24px; + + content: ' '; + + transform: rotate(0deg); + + background-image: url('../_assets/arrow-down.svg'); + + background-repeat: no-repeat; + background-size: 24px 24px; + + font-size: 0; + line-height: 0; + filter: invert(1); + + .toc--part_hidden & { + transform: rotate(-90deg); + } + + .theme-dark & { + filter: invert(0); + } + + @media (width < $breakpoint-desktop-min) { + .theme-dark_mobile & { + filter: invert(0); + } + } + } + + @media (hover: hover) { + &:hover { + background-color: var(--toc-hover-color); + } + } + + &:active { + background-color: var(--toc-hover-color); + } + + &:focus-visible { + outline: var(--focus-outline); + outline-offset: -4px; + } + } + + &--link { + box-sizing: border-box; + + width: 100%; + height: calc(100% - 16px); + min-height: 40px; + + padding: 8px 0; + + color: inherit; + + &:hover { + background-color: var(--toc-hover-color); + } + + &:focus-visible { + outline: var(--focus-outline); + outline-offset: -4px; + } + } + + @for $i from 0 through 10 { + &--part[data-nesting-level='#{$i}'] { + $indent-width: calc(var(--size-m1) * $i); + + .toc--row > .toc--link:first-child { + padding-left: calc(40px + #{$indent-width}); + } + + .toc--button + .toc--link { + margin-left: calc(40px + #{$indent-width}); + } + + .toc--button { + width: calc(40px + #{$indent-width}); + } + } + } + + .filtered > a, + .filtered > &--button { + display: none; + } + + #nav-submenu { + padding-left: 24px; + } + + &--part_hidden > &--part { + display: none; + } + + &--row &--link-grid { + display: grid; + grid-template-columns: 16px auto; /* first is the icon, then name */ + grid-gap: 6px; + + align-items: center; + } + + &--icon { + width: 16px; + height: 16px; + } + + &--icon.class::before { + content: url('../_assets/nav-icons/class.svg'); + } + + &--icon.class-kt::before { + content: url('../_assets/nav-icons/class-kotlin.svg'); + } + + &--icon.function::before { + content: url('../_assets/nav-icons/function.svg'); + } + + &--icon.enum-class::before { + content: url('../_assets/nav-icons/enum.svg'); + } + + &--icon.enum-class-kt::before { + content: url('../_assets/nav-icons/enum-kotlin.svg'); + } + + &--icon.annotation-class::before { + content: url('../_assets/nav-icons/annotation.svg'); + } + + &--icon.annotation-class-kt::before { + content: url('../_assets/nav-icons/annotation-kotlin.svg'); + } + + &--icon.abstract-class::before { + content: url('../_assets/nav-icons/abstract-class.svg'); + } + + &--icon.abstract-class-kt::before { + content: url('../_assets/nav-icons/abstract-class-kotlin.svg'); + } + + &--icon.exception-class::before { + content: url('../_assets/nav-icons/exception-class.svg'); + } + + &--icon.interface::before { + content: url('../_assets/nav-icons/interface.svg'); + } + + &--icon.interface-kt::before { + content: url('../_assets/nav-icons/interface-kotlin.svg'); + } + + &--icon.object::before { + content: url('../_assets/nav-icons/object.svg'); + } + + &--icon.typealias-kt::before { + content: url('../_assets/nav-icons/typealias-kotlin.svg'); + } + + &--icon.val::before { + content: url('../_assets/nav-icons/field-value.svg'); + } + + &--icon.var::before { + content: url('../_assets/nav-icons/field-variable.svg'); + } +} + +.toc--part[data-active] > .toc--row { + & .toc--link, + & .toc--button { + color: var(--color-text-dt); + background-color: var(--color-key-blue); + + &:hover { + background-color: #578af7; + } + + &::after { + filter: invert(0); + } + } +} + +.sidebar { + overflow: auto; + + box-sizing: border-box; + width: var(--sidebar-width); + + border-right: 1px solid rgba(39, 40, 44, 0.2); + + @media (width < $breakpoint-desktop-min) { + width: 0; + + border: none; + } + + @media (width >= $breakpoint-desktop-min) { + position: relative; + z-index: 1; + } +} + +.theme-dark .sidebar { + border-right-color: lighten(rgb(50, 50, 55), 15%); // color-background-nav-dt +} + +.no-js .sidebar { + display: none; +} + +.sidebar--inner { + padding-top: 12px; + padding-bottom: 12px; +} diff --git a/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/utils.ts b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/utils.ts new file mode 100644 index 0000000000..14521f2771 --- /dev/null +++ b/dokka-subprojects/plugin-base-frontend/src/main/ui-kit/utils.ts @@ -0,0 +1,34 @@ +/* + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +export function hasAncestorWithClass(element: HTMLElement, className: string): boolean { + if (element && element.classList.contains(className)) { + return true; + } + if (element.parentElement) { + return hasAncestorWithClass(element.parentElement as HTMLElement, className); + } + return false; +} + +export const DESKTOP_MIN_WIDTH = 900; +export const TABLET_MIN_WIDTH = 440; + +export type ScreenType = 'mobile' | 'tablet' | 'desktop'; + +export function isDesktop(): boolean { + return window.innerWidth >= DESKTOP_MIN_WIDTH; +} + +export function isTablet(): boolean { + return window.innerWidth >= TABLET_MIN_WIDTH && window.innerWidth < DESKTOP_MIN_WIDTH; +} + +export function isMobile(): boolean { + return window.innerWidth < TABLET_MIN_WIDTH; +} + +export function getScreenType(): ScreenType { + return isMobile() ? 'mobile' : isTablet() ? 'tablet' : 'desktop'; +} diff --git a/dokka-subprojects/plugin-base-frontend/webpack.config-ui-kit.js b/dokka-subprojects/plugin-base-frontend/webpack.config-ui-kit.js index 44d2693324..d54cfe57ae 100644 --- a/dokka-subprojects/plugin-base-frontend/webpack.config-ui-kit.js +++ b/dokka-subprojects/plugin-base-frontend/webpack.config-ui-kit.js @@ -4,6 +4,7 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const path = require('path'); const WebpackShellPluginNext = require('webpack-shell-plugin-next'); +const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); module.exports = (env, args) => { const isMinify = env.minify === 'true'; @@ -55,9 +56,6 @@ module.exports = (env, args) => { plugins: [ [ 'cssnano', - { - preset: ['default', { discardComments: { removeAll: true } }], - }, ], ], }, @@ -73,6 +71,21 @@ module.exports = (env, args) => { }, }, }, + { + loader: 'postcss-loader', + options: { + postcssOptions: { + plugins: [ + [ + 'cssnano', + { + preset: ['default', { discardComments: { removeAll: true } }], + }, + ], + ], + }, + }, + }, 'sass-loader', ], }, @@ -94,6 +107,28 @@ module.exports = (env, args) => { }, ], }, + optimization: { + minimize: isMinify, + minimizer: [ + '...', // Extends existing minimizers + new CssMinimizerPlugin({ + minimizerOptions: { + preset: [ + 'default', + { + discardComments: { removeAll: true }, + normalizeWhitespace: isMinify, + plugins: [ + [ + 'cssnano', + ], + ] + }, + ], + }, + }), + ], + }, plugins: [ new MiniCssExtractPlugin({ filename: isMinify ? 'ui-kit.min.css' : 'ui-kit.css', diff --git a/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/NavigationPage.kt b/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/NavigationPage.kt index 0c0ebba316..0c8e5ef92e 100644 --- a/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/NavigationPage.kt +++ b/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/NavigationPage.kt @@ -6,8 +6,6 @@ package org.jetbrains.dokka.base.renderers.html import kotlinx.html.* import kotlinx.html.stream.createHTML -import org.jetbrains.dokka.base.renderers.html.NavigationNodeIcon.CLASS -import org.jetbrains.dokka.base.renderers.html.NavigationNodeIcon.CLASS_KT import org.jetbrains.dokka.base.renderers.pageId import org.jetbrains.dokka.base.templating.AddToNavigationCommand import org.jetbrains.dokka.links.DRI @@ -42,27 +40,33 @@ public class NavigationPage( } } - private fun TagConsumer.visit(node: NavigationNode, navId: String, renderer: HtmlRenderer): R = + private fun TagConsumer.visit( + node: NavigationNode, + navId: String, + renderer: HtmlRenderer, + level: Int = 0 + ): R = with(renderer) { - div("sideMenuPart") { + div("toc--part") { id = navId attributes["pageId"] = "${moduleName}::${node.pageId}" - div("overview") { + attributes["data-nesting-level"] = level.toString() + div("toc--row") { if (node.children.isNotEmpty()) { - span("navButton") { - onClick = """document.getElementById("$navId").classList.toggle("hidden");""" - span("navButtonContent") + button(classes = "toc--button") { + onClick = """document.getElementById("$navId").classList.toggle("toc--part_hidden");""" } } buildLink(node.dri, node.sourceSets.toList()) { + this@buildLink.attributes["class"] = "toc--link" val withIcon = node.icon != null if (withIcon) { - // in case link text is so long that it needs to have word breaks, + // in case a link text is so long that it needs to have word breaks, // and it stretches to two or more lines, make sure the icon // is always on the left in the grid and is not wrapped with text - span("nav-link-grid") { - span("nav-link-child ${node.icon?.style()}") - span("nav-link-child") { + span("toc--link-grid") { + span(node.icon?.style()) + span { nodeText(node) } } @@ -71,7 +75,7 @@ public class NavigationPage( } } } - node.children.withIndex().forEach { (n, p) -> visit(p, "$navId-$n", renderer) } + node.children.withIndex().forEach { (n, p) -> visit(p, "$navId-$n", renderer, level + 1) } } } @@ -119,7 +123,7 @@ public enum class NavigationNodeIcon( VAL("val"), VAR("var"); - internal fun style(): String = "nav-icon $cssClass" + internal fun style(): String = "toc--icon $cssClass" } public fun NavigationPage.transform(block: (NavigationNode) -> NavigationNode): NavigationPage = diff --git a/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/htmlPreprocessors.kt b/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/htmlPreprocessors.kt index fa6a4a6a45..80807de60a 100644 --- a/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/htmlPreprocessors.kt +++ b/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/htmlPreprocessors.kt @@ -105,41 +105,39 @@ public class StylesInstaller(private val dokkaContext: DokkaContext) : PageTrans public object AssetsInstaller : PageTransformer { private val imagesPages = listOf( // ui-kit assets + "ui-kit/assets/abstract-class-kotlin.svg", + "ui-kit/assets/abstract-class.svg", + "ui-kit/assets/annotation-kotlin.svg", + "ui-kit/assets/annotation.svg", "ui-kit/assets/arrow-down.svg", "ui-kit/assets/burger.svg", + "ui-kit/assets/checkbox-off.svg", + "ui-kit/assets/checkbox-on.svg", + "ui-kit/assets/class-kotlin.svg", + "ui-kit/assets/class.svg", + "ui-kit/assets/cross.svg", + "ui-kit/assets/enum-kotlin.svg", + "ui-kit/assets/enum.svg", + "ui-kit/assets/exception-class.svg", + "ui-kit/assets/field-value.svg", + "ui-kit/assets/field-variable.svg", + "ui-kit/assets/filter.svg", + "ui-kit/assets/function.svg", "ui-kit/assets/homepage.svg", - "ui-kit/assets/theme-toggle.svg", + "ui-kit/assets/interface-kotlin.svg", + "ui-kit/assets/interface.svg", + "ui-kit/assets/object.svg", "ui-kit/assets/placeholder.svg", + "ui-kit/assets/theme-toggle.svg", + "ui-kit/assets/typealias-kotlin.svg", // images - "images/arrow_down.svg", - "images/logo-icon.svg", - "images/go-to-top-icon.svg", - "images/footer-go-to-link.svg", "images/anchor-copy-button.svg", "images/copy-icon.svg", "images/copy-successful-icon.svg", - "images/theme-toggle.svg", - "images/burger.svg", - "images/homepage.svg", - - // navigation icons - "images/nav-icons/abstract-class.svg", - "images/nav-icons/abstract-class-kotlin.svg", - "images/nav-icons/annotation.svg", - "images/nav-icons/annotation-kotlin.svg", - "images/nav-icons/class.svg", - "images/nav-icons/class-kotlin.svg", - "images/nav-icons/enum.svg", - "images/nav-icons/enum-kotlin.svg", - "images/nav-icons/exception-class.svg", - "images/nav-icons/field-value.svg", - "images/nav-icons/field-variable.svg", - "images/nav-icons/function.svg", - "images/nav-icons/interface.svg", - "images/nav-icons/interface-kotlin.svg", - "images/nav-icons/object.svg", - "images/nav-icons/typealias-kotlin.svg", + "images/footer-go-to-link.svg", + "images/go-to-top-icon.svg", + "images/logo-icon.svg", ) override fun invoke(input: RootPageNode): RootPageNode = input.modified( diff --git a/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/innerTemplating/DefaultTemplateModelFactory.kt b/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/innerTemplating/DefaultTemplateModelFactory.kt index f0b8de7d8f..f2cb71d76c 100644 --- a/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/innerTemplating/DefaultTemplateModelFactory.kt +++ b/dokka-subprojects/plugin-base/src/main/kotlin/org/jetbrains/dokka/base/renderers/html/innerTemplating/DefaultTemplateModelFactory.kt @@ -119,7 +119,7 @@ public class DefaultTemplateModelFactory( type = ScriptType.textJavaScript, src = if (resource.isAbsolute) resource else "$pathToRoot$resource" ) { - if (resource == "scripts/main.js" || resource.endsWith("_deferred.js")) + if (resource == "scripts/main.js" || resource == "ui-kit/ui-kit.min.js" || resource.endsWith("_deferred.js")) defer = true else async = true diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/arrow_down.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/images/arrow_down.svg deleted file mode 100755 index 2478845270..0000000000 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/arrow_down.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/burger.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/images/burger.svg deleted file mode 100644 index 40f73c5369..0000000000 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/burger.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/theme-toggle.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/images/theme-toggle.svg deleted file mode 100644 index fcc900f389..0000000000 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/images/theme-toggle.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/scripts/navigation-loader.js b/dokka-subprojects/plugin-base/src/main/resources/dokka/scripts/navigation-loader.js index 57adc1e222..99c7d6926a 100644 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/scripts/navigation-loader.js +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/scripts/navigation-loader.js @@ -8,13 +8,13 @@ displayNavigationFromPage = () => { navigationPageText.then(data => { document.getElementById("sideMenu").innerHTML = data; }).then(() => { - document.querySelectorAll(".overview > a").forEach(link => { + document.querySelectorAll(".toc--row > a").forEach(link => { link.setAttribute("href", pathToRoot + link.getAttribute("href")); }) }).then(() => { - document.querySelectorAll(".sideMenuPart").forEach(nav => { - if (!nav.classList.contains("hidden")) - nav.classList.add("hidden") + document.querySelectorAll(".toc--part").forEach(nav => { + if (!nav.classList.contains("toc--part_hidden")) + nav.classList.add("toc--part_hidden") }) }).then(() => { revealNavigationForCurrentPage() @@ -33,14 +33,14 @@ displayNavigationFromPage = () => { revealNavigationForCurrentPage = () => { let pageId = document.getElementById("content").attributes["pageIds"].value.toString(); - let parts = document.querySelectorAll(".sideMenuPart"); + let parts = document.querySelectorAll(".toc--part"); let found = 0; do { parts.forEach(part => { if (part.attributes['pageId'].value.indexOf(pageId) !== -1 && found === 0) { found = 1; - if (part.classList.contains("hidden")) { - part.classList.remove("hidden"); + if (part.classList.contains("toc--part_hidden")) { + part.classList.remove("toc--part_hidden"); part.setAttribute('data-active', ""); } revealParents(part) @@ -50,25 +50,25 @@ revealNavigationForCurrentPage = () => { } while (pageId.indexOf("/") !== -1 && found === 0) }; revealParents = (part) => { - if (part.classList.contains("sideMenuPart")) { - if (part.classList.contains("hidden")) - part.classList.remove("hidden"); + if (part.classList.contains("toc--part")) { + if (part.classList.contains("toc--part_hidden")) + part.classList.remove("toc--part_hidden"); revealParents(part.parentNode) } }; scrollNavigationToSelectedElement = () => { - let selectedElement = document.querySelector('div.sideMenuPart[data-active]') + let selectedElement = document.querySelector('div.toc--part[data-active]') if (selectedElement == null) { // nothing selected, probably just the main page opened return } - let hasIcon = selectedElement.querySelectorAll(":scope > div.overview span.nav-icon").length > 0 + let hasIcon = selectedElement.querySelectorAll(":scope > div.toc--row span.toc--icon").length > 0 - // for instance enums also have children and are expandable, but are not package/module elements + // for an instance enums also have children and are expandable but are not package/module elements let isPackageElement = selectedElement.children.length > 1 && !hasIcon if (isPackageElement) { - // if package is selected or linked, it makes sense to align it to top + // if a package is selected or linked, it makes sense to align it to top // so that you can see all the members it contains selectedElement.scrollIntoView(true) } else { @@ -84,9 +84,9 @@ scrollNavigationToSelectedElement = () => { /* This is a work-around for safari being IE of our times. - It doesn't fire a DOMContentLoaded, presumabely because eventListener is added after it wants to do it + It doesn't fire a DOMContentLoaded, presumably because eventListener is added after it wants to do it */ -if (document.readyState == 'loading') { +if (document.readyState === 'loading') { window.addEventListener('DOMContentLoaded', () => { displayNavigationFromPage() }) diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/scripts/platform-content-handler.js b/dokka-subprojects/plugin-base/src/main/resources/dokka/scripts/platform-content-handler.js index 6ecfc120a6..0ed0d38938 100644 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/scripts/platform-content-handler.js +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/scripts/platform-content-handler.js @@ -54,7 +54,6 @@ window.addEventListener('load', () => { } initTabs() // initTabs comes from ui-kit/tabs handleAnchor() - initHidingLeftNavigation() topNavbarOffset = document.getElementById('navigation-wrapper') darkModeSwitch() }) @@ -115,21 +114,6 @@ const samplesAreEnabled = () => { } } - -const initHidingLeftNavigation = () => { - document.getElementById("menu-toggle").onclick = function (event) { - //Events need to be prevented from bubbling since they will trigger next handler - event.preventDefault(); - event.stopPropagation(); - event.stopImmediatePropagation(); - document.getElementById("leftColumn").classList.toggle("open"); - } - - document.getElementById("main").onclick = () => { - document.getElementById("leftColumn").classList.remove("open"); - } -} - // Hash change is needed in order to allow for linking inside the same page with anchors // If this is not present user is forced to refresh the site in order to use an anchor window.onhashchange = handleAnchor @@ -274,6 +258,11 @@ function removeSourcesetFilterFromCache(sourceset) { } } +function refreshSourcesetsCache() { + safeLocalStorage.setItem('inactive-filters', JSON.stringify(filteringContext.restrictedDependencies.filter(p => -1 === filteringContext.activeFilters.indexOf(p)))) +} + + function togglePlatformDependent(e, container) { let target = e.target if (target.tagName !== 'BUTTON') return; @@ -369,4 +358,8 @@ function refreshFilterButtons() { f.removeAttribute("data-active") } }) + document.querySelectorAll("#filter-section .checkbox--input") + .forEach(f => { + f.checked = filteringContext.activeFilters.indexOf(f.getAttribute("data-filter")) !== -1; + }) } diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/styles/font-jb-sans-auto.css b/dokka-subprojects/plugin-base/src/main/resources/dokka/styles/font-jb-sans-auto.css index 2398f70f52..18d25d3b85 100644 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/styles/font-jb-sans-auto.css +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/styles/font-jb-sans-auto.css @@ -8,6 +8,7 @@ src: url('https://resources.jetbrains.com/storage/jetbrains-sans/JetBrainsSans-Light.woff2') format('woff2'), url('https://resources.jetbrains.com/storage/jetbrains-sans/JetBrainsSans-Light.woff') format('woff'); font-weight: 300; font-style: normal; + font-display: swap; } /* Regular weight */ @font-face { @@ -15,6 +16,7 @@ src: url('https://resources.jetbrains.com/storage/jetbrains-sans/JetBrainsSans-Regular.woff2') format('woff2'), url('https://resources.jetbrains.com/storage/jetbrains-sans/JetBrainsSans-Regular.woff') format('woff'); font-weight: 400; font-style: normal; + font-display: swap; } /* SemiBold weight */ @font-face { @@ -22,6 +24,7 @@ src: url('https://resources.jetbrains.com/storage/jetbrains-sans/JetBrainsSans-SemiBold.woff2') format('woff2'), url('https://resources.jetbrains.com/storage/jetbrains-sans/JetBrainsSans-SemiBold.woff') format('woff'); font-weight: 600; font-style: normal; + font-display: swap; } @supports (font-variation-settings: normal) { @@ -32,5 +35,6 @@ url('https://resources.jetbrains.com/storage/jetbrains-sans/JetBrainsSans.woff') format('woff-variations'); font-weight: 100 900; font-style: normal; + font-display: swap; } } diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/styles/style.css b/dokka-subprojects/plugin-base/src/main/resources/dokka/styles/style.css index 8732c3fe7f..c64fa37161 100644 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/styles/style.css +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/styles/style.css @@ -257,7 +257,7 @@ td:first-child { min-height: 0; /* full height exclude header */ } -#container > .sidebar, #container > #main { +#container > #main { overflow: auto; } @@ -267,55 +267,6 @@ td:first-child { flex: 1 1 0; /* full width, but no affects for sidebar */ } -.sidebar { - display: flex; - flex-direction: column; - box-sizing: border-box; - border-right: 1px solid var(--border-color); - width: var(--sidebar-width); -} - -.no-js .sidebar { - display: none; -} - -@media (max-width: 759px) { - #container { - position: relative; - } - - .sidebar { - position: absolute; - top: 0; - bottom: 0; - box-sizing: border-box; - background: var(--background-color); - margin-left: calc(-1 * var(--sidebar-width)); - transition: margin .2s ease-out; - z-index: 4; - } - - .sidebar.open { - margin-left: 0; - } - - .sidebar.open ~ #main .navigation-controls--search { - display: none; - } - - .sidebar.open ~ #main .menu-toggle { - margin-left: var(--sidebar-width); - } -} - -.sidebar--inner { - font-size: 12px; - font-weight: 400; - line-height: 16px; - padding-top: 22px; - padding-bottom: 16px; -} - /* /--- Layout styles --- */ /* --- Main Content styles --- */ @@ -444,16 +395,6 @@ code.paragraph { display: block; } -.overview > .navButton { - position: absolute; - align-items: center; - display: flex; - justify-content: flex-end; - padding: 2px 2px 2px 0; - margin-right: 5px; - cursor: pointer; -} - .strikethrough { text-decoration: line-through; } @@ -597,166 +538,6 @@ code:not(.block) { word-break: break-word; } -.sideMenuPart > .overview { - display: flex; - align-items: center; - position: relative; - user-select: none; /* there's a weird bug with text selection */ - padding: 8px 0; -} - -.sideMenuPart a { - display: block; - align-items: center; - color: var(--default-font-color); - overflow: hidden; - padding-left: 23px; -} - -.sideMenuPart a:hover { - text-decoration: none; - color: var(--default-font-color); -} - -.sideMenuPart > .overview:before { - box-sizing: border-box; - content: ''; - top: 0; - width: var(--sidebar-width); - right: 0; - bottom: 0; - position: absolute; - z-index: -1; -} - -.overview:hover:before { - background-color: var(--navigation-highlight-color); -} - -#nav-submenu { - padding-left: 24px; -} - -.sideMenuPart { - padding-left: 12px; - box-sizing: border-box; -} - -.sideMenuPart.hidden > .overview .navButtonContent::before { - transform: rotate(0deg); -} - -.sideMenuPart > .overview .navButtonContent::before { - content: ''; - - -webkit-mask: url("../images/arrow_down.svg") no-repeat 50% 50%; - mask: url("../images/arrow_down.svg") no-repeat 50% 50%; - -webkit-mask-size: cover; - mask-size: cover; - background-color: var(--default-font-color); - - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - transform: rotate(90deg); - width: 16px; - height: 16px; -} - -.sideMenuPart[data-active] > .overview .navButtonContent::before { - background-color: var(--default-white); -} - -.sideMenuPart.hidden > .navButton .navButtonContent::after { - content: '\02192'; -} - -.sideMenuPart.hidden > .sideMenuPart { - display: none; -} - -.overview .nav-link-grid { - display: grid; - grid-template-columns: 16px auto; /* first is the icon, then name */ - grid-gap: 6px; - align-items: center; -} - -.nav-icon { - width: 16px; - height: 16px; -} - -.nav-icon.class::before { - content: url("../images/nav-icons/class.svg"); -} - -.nav-icon.class-kt::before { - content: url("../images/nav-icons/class-kotlin.svg"); -} - -.nav-icon.function::before { - content: url("../images/nav-icons/function.svg"); -} - -.nav-icon.enum-class::before { - content: url("../images/nav-icons/enum.svg"); -} - -.nav-icon.enum-class-kt::before { - content: url("../images/nav-icons/enum-kotlin.svg"); -} - -.nav-icon.annotation-class::before { - content: url("../images/nav-icons/annotation.svg"); -} - -.nav-icon.annotation-class-kt::before { - content: url("../images/nav-icons/annotation-kotlin.svg"); -} - -.nav-icon.abstract-class::before { - content: url("../images/nav-icons/abstract-class.svg"); -} - -.nav-icon.abstract-class-kt::before { - content: url("../images/nav-icons/abstract-class-kotlin.svg"); -} - -.nav-icon.exception-class::before { - content: url("../images/nav-icons/exception-class.svg"); -} - -.nav-icon.interface::before { - content: url("../images/nav-icons/interface.svg"); -} - -.nav-icon.interface-kt::before { - content: url("../images/nav-icons/interface-kotlin.svg"); -} - -.nav-icon.object::before { - content: url("../images/nav-icons/object.svg"); -} - -.nav-icon.typealias-kt::before { - content: url("../images/nav-icons/typealias-kotlin.svg"); -} - -.nav-icon.val::before { - content: url("../images/nav-icons/field-value.svg"); -} - -.nav-icon.var::before { - content: url("../images/nav-icons/field-variable.svg"); -} - -.filtered > a, .filtered > .navButton { - display: none; -} - - .brief { white-space: pre-wrap; overflow: hidden; @@ -988,14 +769,6 @@ Just in case of possible performance degradation it excluding tabs with briefs o padding: 8px; } -.sideMenuPart[data-active] > .overview:before { - background: var(--sidemenu-section-active-color); -} - -.sideMenuPart[data-active] > .overview > a { - color: var(--default-white); -} - .table { display: flex; flex-direction: column; diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/base.ftl b/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/base.ftl index 0311f9f891..96cde79a3c 100644 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/base.ftl +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/base.ftl @@ -32,7 +32,23 @@ <@header.display/>
<@content/> diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/includes/header.ftl b/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/includes/header.ftl index a95bce704d..5a96fb8e46 100644 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/includes/header.ftl +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/includes/header.ftl @@ -8,20 +8,26 @@ - + -
+
<#-- This can be handled by the versioning plugin --> <@version/>
diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/includes/source_set_selector.ftl b/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/includes/source_set_selector.ftl index 1175b1a86f..644983ba56 100644 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/includes/source_set_selector.ftl +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/templates/includes/source_set_selector.ftl @@ -1,10 +1,37 @@ <#macro display> <#if sourceSets?has_content> -
+
<#list sourceSets as ss> - + - +
diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/abstract-class-kotlin.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/abstract-class-kotlin.svg new file mode 100644 index 0000000000..97b7723a02 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/abstract-class-kotlin.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/abstract-class.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/abstract-class.svg new file mode 100644 index 0000000000..ead94b8bba --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/abstract-class.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/annotation-kotlin.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/annotation-kotlin.svg new file mode 100644 index 0000000000..b74824201f --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/annotation-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/annotation.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/annotation.svg new file mode 100644 index 0000000000..76c2f4bb90 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/annotation.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/checkbox-off.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/checkbox-off.svg new file mode 100644 index 0000000000..a5117e8d9a --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/checkbox-off.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/checkbox-on.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/checkbox-on.svg new file mode 100644 index 0000000000..71891d57dd --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/checkbox-on.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/class-kotlin.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/class-kotlin.svg new file mode 100644 index 0000000000..dc23120aa2 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/class-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/class.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/class.svg new file mode 100644 index 0000000000..2447cf78e1 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/class.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/cross.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/cross.svg new file mode 100644 index 0000000000..232069f85e --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/cross.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/enum-kotlin.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/enum-kotlin.svg new file mode 100644 index 0000000000..207a0ef3b4 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/enum-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/enum.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/enum.svg new file mode 100644 index 0000000000..2deba5f114 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/enum.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/exception-class.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/exception-class.svg new file mode 100644 index 0000000000..1bb4f88e91 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/exception-class.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/field-value.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/field-value.svg new file mode 100644 index 0000000000..3aa75be3ed --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/field-value.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/field-variable.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/field-variable.svg new file mode 100644 index 0000000000..7a8af50945 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/field-variable.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/function.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/function.svg new file mode 100644 index 0000000000..e56a417532 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/function.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/interface-kotlin.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/interface-kotlin.svg new file mode 100644 index 0000000000..e5273f0506 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/interface-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/interface.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/interface.svg new file mode 100644 index 0000000000..0637028747 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/interface.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/object.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/object.svg new file mode 100644 index 0000000000..5f960b7425 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/object.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/typealias-kotlin.svg b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/typealias-kotlin.svg new file mode 100644 index 0000000000..73a08851e0 --- /dev/null +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/assets/typealias-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.css b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.css index 90444ef8d1..a784320264 100644 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.css +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.css @@ -16,7 +16,7 @@ */ :root { --color-key-blue: rgb(48, 127, 255); - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -28,6 +28,7 @@ --color-text-light: rgba(0, 0, 0, 0.7); --color-text-light-dt: rgba(255, 255, 255, 0.7); --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); @@ -89,18 +90,10 @@ --rotate-transition: transform 200ms ease-in-out; } -#storybook { - padding: 10px; - background-color: #ccc; -} - -.theme-dark #storybook { - background-color: #333; -} - .button { display: flex; align-items: center; + justify-content: center; height: 40px; padding: var(--size-s2) 12px; cursor: pointer; @@ -116,10 +109,11 @@ padding: var(--size-s2); } -.button:hover { - background-color: var(--color-b08); +@media (hover: hover) { + .button:hover { + background-color: var(--color-b08); + } } - .button:active { background-color: var(--color-key-blue); } @@ -130,7 +124,7 @@ } .button:focus-visible { - outline: 4px solid var(--color-key-blue-05); + outline: var(--focus-outline); } .theme-dark .button { @@ -155,6 +149,7 @@ .button_dropdown { padding: var(--size-s2); + font: var(--font-text-s); } .button_dropdown::after { @@ -187,7 +182,7 @@ filter: invert(0); } /*! - * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ /*! @@ -204,7 +199,7 @@ */ :root { --color-key-blue: rgb(48, 127, 255); - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -216,6 +211,7 @@ --color-text-light: rgba(0, 0, 0, 0.7); --color-text-light-dt: rgba(255, 255, 255, 0.7); --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); @@ -277,22 +273,36 @@ --rotate-transition: transform 200ms ease-in-out; } -.filter-section { - z-index: 0; - display: flex; - align-items: center; - flex-wrap: wrap; - margin-right: 12px; - gap: 2px; +.checkbox { + position: relative; + display: inline-block; + cursor: pointer; } -@media (width <= 900px) { - .filter-section { - display: none; - } +.checkbox--input { + position: absolute; + appearance: none; + visibility: hidden; } -.no-js .filter-section { - display: none; + +.checkbox--icon { + position: absolute; + width: var(--size-m1); + height: var(--size-m1); + margin-left: calc(-1 * var(--size-m2)); + background-image: url(assets/checkbox-off.svg); +} + +.checkbox--input:checked + .checkbox--icon { + background-image: url(assets/checkbox-on.svg); +} + +.checkbox--input:disabled + .checkbox--icon { + opacity: 0.2; +} + +.checkbox--input:focus-visible { + outline: var(--focus-outline); } /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. @@ -312,7 +322,7 @@ */ :root { --color-key-blue: rgb(48, 127, 255); - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -324,6 +334,7 @@ --color-text-light: rgba(0, 0, 0, 0.7); --color-text-light-dt: rgba(255, 255, 255, 0.7); --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); @@ -385,29 +396,173 @@ --rotate-transition: transform 200ms ease-in-out; } -.ui-kit-icon { - width: var(--size-m1); - height: var(--size-m1); - background-color: rgba(0, 0, 0, 0); - background-repeat: no-repeat; - background-position: 50% 50%; - background-size: 24px 24px; - font-size: 0; - line-height: 0; - will-change: background-color; - filter: invert(1); +.dropdown { + position: relative; } -.theme-dark .ui-kit-icon { - filter: none; +@media (width < 900px) { + .dropdown { + position: static; + } +} +.dropdown--list { + position: absolute; + z-index: 10; + top: 44px; + right: 0; + display: none; + overflow-y: auto; + width: fit-content; + min-width: 272px; + max-width: 360px; + max-height: 400px; + padding: 12px 0; + border: 1px solid #56565f; + background-color: var(--color-background-nav-dt); + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2509803922); } -.ui-kit-icon_arrow-down { - background-image: url(assets/arrow-down.svg); +@media (width < 900px) { + .dropdown--list { + top: 0; + right: 0; + height: 100vh; + max-height: unset; + padding: 0; + border: none; + } +} +@media (width < 440px) { + .dropdown--list { + width: 100vw; + max-width: unset; + } +} +.dropdown--list_positioned_right { + right: 0; } -.ui-kit-icon_placeholder { - background-image: url(assets/placeholder.svg); +.dropdown--list_positioned_left { + left: 0; +} + +@media (width < 900px) { + .dropdown--list_positioned_left { + left: unset; + } +} +.dropdown--list_expanded { + display: block; +} + +@media (width >= 900px) { + .dropdown--list_toc-list { + position: relative; + top: 0; + display: block; + min-width: unset; + max-width: unset; + max-height: unset; + padding: 0; + border: none; + background-color: rgba(0, 0, 0, 0); + box-shadow: none; + } +} +@media (width >= 440px) and (width < 900px) { + .dropdown--list_toc-list { + width: 408px; + } +} +.dropdown--option { + position: relative; + display: block; + padding: var(--size-s2) var(--size-s3); + list-style-type: none; + cursor: pointer; + letter-spacing: -0.03em; + text-transform: capitalize; + color: var(--color-text-nav-dt); + border: none; + background-color: var(--color-background-nav-dt); + font: var(--font-text-m); +} + +.dropdown--option:hover { + background-color: #4a4a52; +} + +.dropdown--option:focus-visible { + z-index: 1; + outline: var(--focus-outline); +} + +.dropdown--option:visited { + color: var(--color-text-nav-dt); +} + +.dropdown--option_active { + background-color: var(--color-key-blue); +} + +.dropdown--option_active:hover { + background-color: #639fff; +} + +.dropdown--option_link { + text-decoration: none; + color: var(--color-text-nav-dt); +} + +.dropdown--option_link:focus-visible { + outline: var(--focus-outline); +} + +.dropdown--option .checkbox { + pointer-events: none; +} + +.dropdown--overlay { + position: absolute; + z-index: 4; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: none; + width: 100vw; + height: 100vh; + content: ""; + background-color: rgba(137, 137, 137, 0.5); +} + +.dropdown--list_expanded + .dropdown--overlay { + display: block; +} + +@media (width >= 900px) { + .dropdown--list_expanded + .dropdown--overlay { + display: none; + } +} +.dropdown--header { + position: sticky; + z-index: 2; + top: 0; + display: flex; + align-items: center; + justify-content: space-between; + height: 52px; + padding-left: var(--size-s3); + color: var(--color-w70); + border-bottom: 1px solid #56565f; + background-color: var(--color-background-nav-dt); +} + +@media (width >= 900px) { + .dropdown--header { + display: none; + } } /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. @@ -427,7 +582,7 @@ */ :root { --color-key-blue: rgb(48, 127, 255); - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -439,6 +594,7 @@ --color-text-light: rgba(0, 0, 0, 0.7); --color-text-light-dt: rgba(255, 255, 255, 0.7); --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); @@ -500,36 +656,59 @@ --rotate-transition: transform 200ms ease-in-out; } -:root { - --dokka-logo-height: 28px; - --dokka-logo-width: 28px; -} - -.library-name--link { +.filter-section { + z-index: 1; display: flex; align-items: center; - margin-right: var(--size-s2); - white-space: nowrap; - color: var(--color-text-dt); - font: var(--font-h4); + flex-wrap: wrap; + justify-content: flex-end; + max-height: 40px; + margin-right: 12px; + gap: 2px; } -@media (width <= 900px) { - .library-name--link { - height: 52px; - margin-left: 12px; +.filter-section_loading { + overflow: hidden; +} + +@media (width >= 900px) { + .filter-section--dropdown { + display: none; } } -.library-name--link::before { - width: var(--dokka-logo-height); - height: var(--dokka-logo-width); - margin-right: var(--size-s2); - content: ""; - background: var(--dokka-logo-image-url) center no-repeat; - background-size: var(--dokka-logo-height) var(--dokka-logo-width); +.filter-section--dropdown-toggle_as-filters { + min-width: 40px; + background-image: url(assets/filter.svg); + background-repeat: no-repeat; + background-position: 50% 50%; +} + +.filter-section--dropdown-toggle_as-filters::after { + display: none; +} + +@media (width < 900px) { + .filter-section { + max-height: unset; + margin-right: 0; + } + .filter-section > :not(.dropdown) { + display: none; + } + .filter-section--dropdown-toggle { + background-image: url(assets/filter.svg); + background-repeat: no-repeat; + background-position: 50% 50%; + } + .filter-section--dropdown-toggle::after { + display: none; + } +} +.no-js .filter-section { + display: none; } /*! - * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ /*! @@ -546,7 +725,7 @@ */ :root { --color-key-blue: rgb(48, 127, 255); - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -558,6 +737,7 @@ --color-text-light: rgba(0, 0, 0, 0.7); --color-text-light-dt: rgba(255, 255, 255, 0.7); --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); @@ -619,19 +799,39 @@ --rotate-transition: transform 200ms ease-in-out; } -.library-version { - color: var(--color-text-dt); - font: var(--font-text-s); +.ui-kit-icon { + width: var(--size-m1); + height: var(--size-m1); + background-color: rgba(0, 0, 0, 0); + background-repeat: no-repeat; + background-position: 50% 50%; + background-size: 24px 24px; + font-size: 0; + line-height: 0; + will-change: background-color; + filter: invert(1); } -@media (width <= 900px) { - .library-version { - display: flex; - align-items: center; - height: 52px; - background-color: var(--color-text); +.theme-dark .ui-kit-icon { + filter: none; +} + +@media (width < 900px) { + .theme-dark_mobile .ui-kit-icon { + filter: none; } } +.ui-kit-icon_arrow-down { + background-image: url(assets/arrow-down.svg); +} + +.ui-kit-icon_placeholder { + background-image: url(assets/placeholder.svg); +} + +.ui-kit-icon_cross { + background-image: url(assets/cross.svg); +} /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ /*! @@ -650,7 +850,7 @@ */ :root { --color-key-blue: rgb(48, 127, 255); - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -662,6 +862,7 @@ --color-text-light: rgba(0, 0, 0, 0.7); --color-text-light-dt: rgba(255, 255, 255, 0.7); --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); @@ -723,27 +924,37 @@ --rotate-transition: transform 200ms ease-in-out; } -.navigation { - z-index: 4; +:root { + --dokka-logo-height: 28px; + --dokka-logo-width: 28px; +} + +.library-name--link { display: flex; align-items: center; - flex-wrap: wrap; - justify-content: flex-start; - box-sizing: border-box; - height: var(--size-l1); - padding: 12px var(--size-m1); + margin-right: var(--size-s2); + white-space: nowrap; color: var(--color-text-dt); - background-color: var(--color-background-nav); + font: var(--font-h4); } -@media (width <= 900px) { - .navigation { - height: auto; - padding: 0; +.library-name--link:focus-visible { + outline: var(--focus-outline); +} + +@media (width < 900px) { + .library-name--link { + height: 52px; + margin-left: 12px; } } -.theme-dark .navigation { - background-color: var(--color-background-nav-dt); +.library-name--link::before { + width: var(--dokka-logo-height); + height: var(--dokka-logo-width); + margin-right: var(--size-s2); + content: ""; + background: var(--dokka-logo-image-url) center no-repeat; + background-size: var(--dokka-logo-height) var(--dokka-logo-width); } /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. @@ -763,7 +974,7 @@ */ :root { --color-key-blue: rgb(48, 127, 255); - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -775,6 +986,7 @@ --color-text-light: rgba(0, 0, 0, 0.7); --color-text-light-dt: rgba(255, 255, 255, 0.7); --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); @@ -836,28 +1048,259 @@ --rotate-transition: transform 200ms ease-in-out; } -.navigation-controls { - display: flex; - align-items: center; - gap: var(--size-s1); - margin-left: auto; +.library-version { + box-sizing: border-box; + padding-top: 1px; + color: var(--color-text-dt); + font: var(--font-text-s); } -@media (width <= 900px) { - .navigation-controls { - flex-grow: 1; - justify-content: flex-end; +@media (width < 900px) { + .library-version { + display: flex; + align-items: center; + height: 52px; + padding-left: 12px; background-color: var(--color-text); - gap: 0; } } -.no-js .navigation-controls { +/*! + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --breakpoint-desktop-min: 900px; + --breakpoint-tablet-max: 899px; + --breakpoint-tablet-min: 440px; + --breakpoint-mobile-max: 439px; + --breakpoint-mobile-min: 360px; +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --color-key-blue: rgb(48, 127, 255); + --color-key-blue-50: rgb(48, 127, 255, 0.5); + --color-background-nav: rgb(39, 40, 44); + --color-background-nav-dt: rgb(50, 50, 55); + --color-background-page: rgb(255, 255, 255); + --color-background-page-dt: rgb(38, 38, 40); + --color-background-footer: rgb(235, 235, 235); + --color-background-footer-dt: rgb(50, 50, 55); + --color-text: rgb(0, 0, 0); + --color-text-dt: rgba(255, 255, 255, 0.96); + --color-text-light: rgba(0, 0, 0, 0.7); + --color-text-light-dt: rgba(255, 255, 255, 0.7); + --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); + --color-w10: rgba(255, 255, 255, 0.1); + --color-w16: rgba(255, 255, 255, 0.16); + --color-w50: rgba(255, 255, 255, 0.5); + --color-w70: rgba(255, 255, 255, 0.7); + --color-w80: rgba(255, 255, 255, 0.8); + --color-w100: rgba(255, 255, 255, 1); + --color-b05: rgba(0, 0, 0, 0.05); + --color-b08: rgba(0, 0, 0, 0.08); + --color-b20: rgba(0, 0, 0, 0.2); + --color-b50: rgba(0, 0, 0, 0.5); + --color-b70: rgba(0, 0, 0, 0.7); + --color-cd-punctuation: rgb(153, 153, 153); + --color-cd-keyword: rgb(0, 51, 179); + --color-cd-keyword-alternative: rgba(204, 120, 50); + --color-cd-builtin: rgb(6, 125, 23); + --color-cd-builtin-alternative: rgb(231, 191, 106); + --color-cd-function: rgb(0, 98, 122); + --color-cd-function-alternative: rgb(255, 198, 109); + --color-cd-operator: rgb(154, 110, 58); + --color-cd-operator-alternative: rgb(169, 183, 198); + --color-cd-body: rgb(0, 0, 0); + --color-cd-body-alternative: rgb(169, 183, 198); + --color-generic: rgb(83, 157, 243); + --color-jvm: rgb(77, 187, 95); + --color-js: rgb(255, 199, 0); + --color-wasm: rgb(255, 255, 255); +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --size-s1: 4px; + --size-s2: 8px; + --size-s3: 16px; + --size-m1: 24px; + --size-m2: 32px; + --size-m3: 48px; + --size-l1: 64px; + --size-l2: 72px; + --size-ta1: 40px; + --size-ta2: 52px; +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --font-family-default: JetBrains Sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Droid Sans, Helvetica Neue, Arial, sans-serif; + --font-family-mono: JetBrains Mono, SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace; + --font-h1: 600 44px/44px var(--font-family-default); + --font-h2: 600 32px/32px var(--font-family-default); + --font-h3: 600 24px/24px var(--font-family-default); + --font-h4: 600 16px/24px var(--font-family-default); + --font-text-m: 400 16px/24px var(--font-family-default); + --font-text-s: 400 14px/20px var(--font-family-default); + --font-code: 400 16px/24px var(--font-family-mono); +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --hover-transition: background-color 200ms ease-in-out; + --rotate-transition: transform 200ms ease-in-out; +} + +.navigation { + z-index: 4; + display: flex; + align-items: center; + flex-wrap: nowrap; + justify-content: flex-start; + box-sizing: border-box; + padding: 12px var(--size-m1); + color: var(--color-text-dt); + background-color: var(--color-background-nav); +} + +@media (width < 900px) { + .navigation { + flex-wrap: wrap; + height: auto; + padding: 0; + } +} +.theme-dark .navigation { + background-color: var(--color-background-nav-dt); +} + +@media (width < 900px) { + .navigation .button { + min-width: 52px; + height: 52px; + } +} +/*! + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --breakpoint-desktop-min: 900px; + --breakpoint-tablet-max: 899px; + --breakpoint-tablet-min: 440px; + --breakpoint-mobile-max: 439px; + --breakpoint-mobile-min: 360px; +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --color-key-blue: rgb(48, 127, 255); + --color-key-blue-50: rgb(48, 127, 255, 0.5); + --color-background-nav: rgb(39, 40, 44); + --color-background-nav-dt: rgb(50, 50, 55); + --color-background-page: rgb(255, 255, 255); + --color-background-page-dt: rgb(38, 38, 40); + --color-background-footer: rgb(235, 235, 235); + --color-background-footer-dt: rgb(50, 50, 55); + --color-text: rgb(0, 0, 0); + --color-text-dt: rgba(255, 255, 255, 0.96); + --color-text-light: rgba(0, 0, 0, 0.7); + --color-text-light-dt: rgba(255, 255, 255, 0.7); + --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); + --color-w10: rgba(255, 255, 255, 0.1); + --color-w16: rgba(255, 255, 255, 0.16); + --color-w50: rgba(255, 255, 255, 0.5); + --color-w70: rgba(255, 255, 255, 0.7); + --color-w80: rgba(255, 255, 255, 0.8); + --color-w100: rgba(255, 255, 255, 1); + --color-b05: rgba(0, 0, 0, 0.05); + --color-b08: rgba(0, 0, 0, 0.08); + --color-b20: rgba(0, 0, 0, 0.2); + --color-b50: rgba(0, 0, 0, 0.5); + --color-b70: rgba(0, 0, 0, 0.7); + --color-cd-punctuation: rgb(153, 153, 153); + --color-cd-keyword: rgb(0, 51, 179); + --color-cd-keyword-alternative: rgba(204, 120, 50); + --color-cd-builtin: rgb(6, 125, 23); + --color-cd-builtin-alternative: rgb(231, 191, 106); + --color-cd-function: rgb(0, 98, 122); + --color-cd-function-alternative: rgb(255, 198, 109); + --color-cd-operator: rgb(154, 110, 58); + --color-cd-operator-alternative: rgb(169, 183, 198); + --color-cd-body: rgb(0, 0, 0); + --color-cd-body-alternative: rgb(169, 183, 198); + --color-generic: rgb(83, 157, 243); + --color-jvm: rgb(77, 187, 95); + --color-js: rgb(255, 199, 0); + --color-wasm: rgb(255, 255, 255); +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --size-s1: 4px; + --size-s2: 8px; + --size-s3: 16px; + --size-m1: 24px; + --size-m2: 32px; + --size-m3: 48px; + --size-l1: 64px; + --size-l2: 72px; + --size-ta1: 40px; + --size-ta2: 52px; +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --font-family-default: JetBrains Sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Droid Sans, Helvetica Neue, Arial, sans-serif; + --font-family-mono: JetBrains Mono, SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace; + --font-h1: 600 44px/44px var(--font-family-default); + --font-h2: 600 32px/32px var(--font-family-default); + --font-h3: 600 24px/24px var(--font-family-default); + --font-h4: 600 16px/24px var(--font-family-default); + --font-text-m: 400 16px/24px var(--font-family-default); + --font-text-s: 400 14px/20px var(--font-family-default); + --font-code: 400 16px/24px var(--font-family-mono); +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --hover-transition: background-color 200ms ease-in-out; + --rotate-transition: transform 200ms ease-in-out; +} + +.navigation-controls { + display: flex; + align-items: center; + gap: var(--size-s1); + margin-left: auto; +} + +@media (width < 900px) { + .navigation-controls { + flex-grow: 1; + justify-content: flex-end; + background-color: var(--color-text); + gap: 0; + } +} +.no-js .navigation-controls { display: none; } .navigation-controls--btn { + z-index: 0; display: inline-flex; align-items: center; + flex-shrink: 0; justify-content: center; width: 40px; height: 40px; @@ -875,11 +1318,20 @@ will-change: background-color; } -.navigation-controls--btn:hover { +@media (hover: hover) { + .navigation-controls--btn:hover { + background-color: var(--color-b08); + } +} +.navigation-controls--btn:active { background-color: var(--color-w10); } -@media (width <= 900px) { +.navigation-controls--btn:focus-visible { + outline: var(--focus-outline); +} + +@media (width < 900px) { .navigation-controls--btn { width: 52px; height: 52px; @@ -897,14 +1349,10 @@ background-image: url(assets/homepage.svg); } -.navigation-controls--btn_menu { +.navigation-controls--btn_toc { margin-left: auto; background-image: url(assets/burger.svg); } - -.navigation-controls--btn_filter { - background-image: url(assets/filter.svg); -} /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ /*! @@ -923,7 +1371,7 @@ */ :root { --color-key-blue: rgb(48, 127, 255); - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -935,6 +1383,7 @@ --color-text-light: rgba(0, 0, 0, 0.7); --color-text-light-dt: rgba(255, 255, 255, 0.7); --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); @@ -1000,14 +1449,25 @@ --platform-tag-color: #bababb; padding: 10px 12px; cursor: pointer; - letter-spacing: -0.03em; text-transform: capitalize; border: 0 none; border-radius: var(--size-s1); font: var(--font-text-s); } -.platform-tag.js-like, .platform-tag.jvm-like, .platform-tag.wasm-like { +button.platform-tag { + cursor: pointer; +} + +button.platform-tag:focus-visible { + outline: var(--focus-outline); +} + +.platform-selector-option { + padding-left: 44px; +} + +.platform-tag.js-like, .platform-selector-option.js-like, .platform-tag.jvm-like, .platform-selector-option.jvm-like, .platform-tag.wasm-like, .platform-selector-option.wasm-like { text-transform: uppercase; } @@ -1037,7 +1497,13 @@ --platform-tag-color: #9585f9; } -.filter-section .platform-tag[data-active]:hover { +@media (hover: hover) { + .filter-section .platform-tag[data-active]:hover { + color: #fff; + background-color: rgba(186, 186, 187, 0.7); + } +} +.filter-section .platform-tag[data-active]:active { color: #fff; background-color: rgba(186, 186, 187, 0.7); } @@ -1059,15 +1525,6 @@ font-size: 13px; line-height: 1.6; } -/*! - * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */ -.platform-tags { - display: flex; - flex-wrap: wrap; - margin-bottom: -8px; - margin-left: -4px; -} /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ /*! @@ -1086,7 +1543,7 @@ */ :root { --color-key-blue: rgb(48, 127, 255); - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -1098,6 +1555,7 @@ --color-text-light: rgba(0, 0, 0, 0.7); --color-text-light-dt: rgba(255, 255, 255, 0.7); --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); @@ -1159,9 +1617,107 @@ --rotate-transition: transform 200ms ease-in-out; } -.tabs-section, .platform-hinted > .platform-bookmarks-row { - margin-right: -8px; - margin-left: -8px; +.platform-tags { + display: flex; + flex-wrap: wrap; + margin-bottom: -8px; + margin-left: -4px; +} +/*! + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --breakpoint-desktop-min: 900px; + --breakpoint-tablet-max: 899px; + --breakpoint-tablet-min: 440px; + --breakpoint-mobile-max: 439px; + --breakpoint-mobile-min: 360px; +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --color-key-blue: rgb(48, 127, 255); + --color-key-blue-50: rgb(48, 127, 255, 0.5); + --color-background-nav: rgb(39, 40, 44); + --color-background-nav-dt: rgb(50, 50, 55); + --color-background-page: rgb(255, 255, 255); + --color-background-page-dt: rgb(38, 38, 40); + --color-background-footer: rgb(235, 235, 235); + --color-background-footer-dt: rgb(50, 50, 55); + --color-text: rgb(0, 0, 0); + --color-text-dt: rgba(255, 255, 255, 0.96); + --color-text-light: rgba(0, 0, 0, 0.7); + --color-text-light-dt: rgba(255, 255, 255, 0.7); + --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); + --color-w10: rgba(255, 255, 255, 0.1); + --color-w16: rgba(255, 255, 255, 0.16); + --color-w50: rgba(255, 255, 255, 0.5); + --color-w70: rgba(255, 255, 255, 0.7); + --color-w80: rgba(255, 255, 255, 0.8); + --color-w100: rgba(255, 255, 255, 1); + --color-b05: rgba(0, 0, 0, 0.05); + --color-b08: rgba(0, 0, 0, 0.08); + --color-b20: rgba(0, 0, 0, 0.2); + --color-b50: rgba(0, 0, 0, 0.5); + --color-b70: rgba(0, 0, 0, 0.7); + --color-cd-punctuation: rgb(153, 153, 153); + --color-cd-keyword: rgb(0, 51, 179); + --color-cd-keyword-alternative: rgba(204, 120, 50); + --color-cd-builtin: rgb(6, 125, 23); + --color-cd-builtin-alternative: rgb(231, 191, 106); + --color-cd-function: rgb(0, 98, 122); + --color-cd-function-alternative: rgb(255, 198, 109); + --color-cd-operator: rgb(154, 110, 58); + --color-cd-operator-alternative: rgb(169, 183, 198); + --color-cd-body: rgb(0, 0, 0); + --color-cd-body-alternative: rgb(169, 183, 198); + --color-generic: rgb(83, 157, 243); + --color-jvm: rgb(77, 187, 95); + --color-js: rgb(255, 199, 0); + --color-wasm: rgb(255, 255, 255); +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --size-s1: 4px; + --size-s2: 8px; + --size-s3: 16px; + --size-m1: 24px; + --size-m2: 32px; + --size-m3: 48px; + --size-l1: 64px; + --size-l2: 72px; + --size-ta1: 40px; + --size-ta2: 52px; +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --font-family-default: JetBrains Sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Droid Sans, Helvetica Neue, Arial, sans-serif; + --font-family-mono: JetBrains Mono, SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace; + --font-h1: 600 44px/44px var(--font-family-default); + --font-h2: 600 32px/32px var(--font-family-default); + --font-h3: 600 24px/24px var(--font-family-default); + --font-h4: 600 16px/24px var(--font-family-default); + --font-text-m: 400 16px/24px var(--font-family-default); + --font-text-s: 400 14px/20px var(--font-family-default); + --font-code: 400 16px/24px var(--font-family-mono); +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --hover-transition: background-color 200ms ease-in-out; + --rotate-transition: transform 200ms ease-in-out; +} + +.tabs-section, .platform-hinted > .platform-bookmarks-row { + margin-right: -8px; + margin-left: -8px; } .section-tab, .platform-hinted > .platform-bookmarks-row > .platform-bookmark { @@ -1241,6 +1797,468 @@ .main-content[data-page-type=package] .tabs-section-body h2 { display: none; } +/*! + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --breakpoint-desktop-min: 900px; + --breakpoint-tablet-max: 899px; + --breakpoint-tablet-min: 440px; + --breakpoint-mobile-max: 439px; + --breakpoint-mobile-min: 360px; +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --color-key-blue: rgb(48, 127, 255); + --color-key-blue-50: rgb(48, 127, 255, 0.5); + --color-background-nav: rgb(39, 40, 44); + --color-background-nav-dt: rgb(50, 50, 55); + --color-background-page: rgb(255, 255, 255); + --color-background-page-dt: rgb(38, 38, 40); + --color-background-footer: rgb(235, 235, 235); + --color-background-footer-dt: rgb(50, 50, 55); + --color-text: rgb(0, 0, 0); + --color-text-dt: rgba(255, 255, 255, 0.96); + --color-text-light: rgba(0, 0, 0, 0.7); + --color-text-light-dt: rgba(255, 255, 255, 0.7); + --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); + --color-w10: rgba(255, 255, 255, 0.1); + --color-w16: rgba(255, 255, 255, 0.16); + --color-w50: rgba(255, 255, 255, 0.5); + --color-w70: rgba(255, 255, 255, 0.7); + --color-w80: rgba(255, 255, 255, 0.8); + --color-w100: rgba(255, 255, 255, 1); + --color-b05: rgba(0, 0, 0, 0.05); + --color-b08: rgba(0, 0, 0, 0.08); + --color-b20: rgba(0, 0, 0, 0.2); + --color-b50: rgba(0, 0, 0, 0.5); + --color-b70: rgba(0, 0, 0, 0.7); + --color-cd-punctuation: rgb(153, 153, 153); + --color-cd-keyword: rgb(0, 51, 179); + --color-cd-keyword-alternative: rgba(204, 120, 50); + --color-cd-builtin: rgb(6, 125, 23); + --color-cd-builtin-alternative: rgb(231, 191, 106); + --color-cd-function: rgb(0, 98, 122); + --color-cd-function-alternative: rgb(255, 198, 109); + --color-cd-operator: rgb(154, 110, 58); + --color-cd-operator-alternative: rgb(169, 183, 198); + --color-cd-body: rgb(0, 0, 0); + --color-cd-body-alternative: rgb(169, 183, 198); + --color-generic: rgb(83, 157, 243); + --color-jvm: rgb(77, 187, 95); + --color-js: rgb(255, 199, 0); + --color-wasm: rgb(255, 255, 255); +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --size-s1: 4px; + --size-s2: 8px; + --size-s3: 16px; + --size-m1: 24px; + --size-m2: 32px; + --size-m3: 48px; + --size-l1: 64px; + --size-l2: 72px; + --size-ta1: 40px; + --size-ta2: 52px; +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --font-family-default: JetBrains Sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Droid Sans, Helvetica Neue, Arial, sans-serif; + --font-family-mono: JetBrains Mono, SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace; + --font-h1: 600 44px/44px var(--font-family-default); + --font-h2: 600 32px/32px var(--font-family-default); + --font-h3: 600 24px/24px var(--font-family-default); + --font-h4: 600 16px/24px var(--font-family-default); + --font-text-m: 400 16px/24px var(--font-family-default); + --font-text-s: 400 14px/20px var(--font-family-default); + --font-code: 400 16px/24px var(--font-family-mono); +} /*! +* Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +*/ +:root { + --hover-transition: background-color 200ms ease-in-out; + --rotate-transition: transform 200ms ease-in-out; +} + +:root { + --toc-hover-color: var(--color-b08); + --toc-font: 400 13px/24px var(--font-family-default); + --toc-color: var(--color-text); +} + +.theme-dark { + --toc-hover-color: var(--color-w08); + --toc-color: var(--color-text-dt); +} + +@media (width < 900px) { + .theme-dark_mobile { + --toc-color: var(--color-text-dt); + --toc-hover-color: var(--color-w08); + } +} +.toc--part { + box-sizing: border-box; + color: var(--toc-color); + font: var(--toc-font); +} + +.toc--row { + position: relative; + display: flex; + align-items: center; + box-sizing: border-box; + min-height: 40px; + user-select: none; +} + +.toc--button { + position: absolute; + display: inline-flex; + align-items: center; + flex-shrink: 0; + justify-content: flex-end; + min-width: 40px; + height: 100%; + padding: 0 8px 0 0; + cursor: pointer; + transition: var(--hover-transition); + border: none; + background-color: inherit; + will-change: background-color; +} + +.toc--button::after { + width: 24px; + height: 24px; + content: " "; + transform: rotate(0deg); + background-image: url(assets/arrow-down.svg); + background-repeat: no-repeat; + background-size: 24px 24px; + font-size: 0; + line-height: 0; + filter: invert(1); +} + +.toc--part_hidden .toc--button::after { + transform: rotate(-90deg); +} + +.theme-dark .toc--button::after { + filter: invert(0); +} + +@media (width < 900px) { + .theme-dark_mobile .toc--button::after { + filter: invert(0); + } +} +@media (hover: hover) { + .toc--button:hover { + background-color: var(--toc-hover-color); + } +} +.toc--button:active { + background-color: var(--toc-hover-color); +} + +.toc--button:focus-visible { + outline: var(--focus-outline); + outline-offset: -4px; +} + +.toc--link { + box-sizing: border-box; + width: 100%; + height: calc(100% - 16px); + min-height: 40px; + padding: 8px 0; + color: inherit; +} + +.toc--link:hover { + background-color: var(--toc-hover-color); +} + +.toc--link:focus-visible { + outline: var(--focus-outline); + outline-offset: -4px; +} + +.toc--part[data-nesting-level="0"] .toc--row > .toc--link:first-child { + padding-left: calc(40px + var(--size-m1) * 0); +} + +.toc--part[data-nesting-level="0"] .toc--button + .toc--link { + margin-left: calc(40px + var(--size-m1) * 0); +} + +.toc--part[data-nesting-level="0"] .toc--button { + width: calc(40px + var(--size-m1) * 0); +} + +.toc--part[data-nesting-level="1"] .toc--row > .toc--link:first-child { + padding-left: calc(40px + var(--size-m1) * 1); +} + +.toc--part[data-nesting-level="1"] .toc--button + .toc--link { + margin-left: calc(40px + var(--size-m1) * 1); +} + +.toc--part[data-nesting-level="1"] .toc--button { + width: calc(40px + var(--size-m1) * 1); +} + +.toc--part[data-nesting-level="2"] .toc--row > .toc--link:first-child { + padding-left: calc(40px + var(--size-m1) * 2); +} + +.toc--part[data-nesting-level="2"] .toc--button + .toc--link { + margin-left: calc(40px + var(--size-m1) * 2); +} + +.toc--part[data-nesting-level="2"] .toc--button { + width: calc(40px + var(--size-m1) * 2); +} + +.toc--part[data-nesting-level="3"] .toc--row > .toc--link:first-child { + padding-left: calc(40px + var(--size-m1) * 3); +} + +.toc--part[data-nesting-level="3"] .toc--button + .toc--link { + margin-left: calc(40px + var(--size-m1) * 3); +} + +.toc--part[data-nesting-level="3"] .toc--button { + width: calc(40px + var(--size-m1) * 3); +} + +.toc--part[data-nesting-level="4"] .toc--row > .toc--link:first-child { + padding-left: calc(40px + var(--size-m1) * 4); +} + +.toc--part[data-nesting-level="4"] .toc--button + .toc--link { + margin-left: calc(40px + var(--size-m1) * 4); +} + +.toc--part[data-nesting-level="4"] .toc--button { + width: calc(40px + var(--size-m1) * 4); +} + +.toc--part[data-nesting-level="5"] .toc--row > .toc--link:first-child { + padding-left: calc(40px + var(--size-m1) * 5); +} + +.toc--part[data-nesting-level="5"] .toc--button + .toc--link { + margin-left: calc(40px + var(--size-m1) * 5); +} + +.toc--part[data-nesting-level="5"] .toc--button { + width: calc(40px + var(--size-m1) * 5); +} + +.toc--part[data-nesting-level="6"] .toc--row > .toc--link:first-child { + padding-left: calc(40px + var(--size-m1) * 6); +} + +.toc--part[data-nesting-level="6"] .toc--button + .toc--link { + margin-left: calc(40px + var(--size-m1) * 6); +} + +.toc--part[data-nesting-level="6"] .toc--button { + width: calc(40px + var(--size-m1) * 6); +} + +.toc--part[data-nesting-level="7"] .toc--row > .toc--link:first-child { + padding-left: calc(40px + var(--size-m1) * 7); +} + +.toc--part[data-nesting-level="7"] .toc--button + .toc--link { + margin-left: calc(40px + var(--size-m1) * 7); +} + +.toc--part[data-nesting-level="7"] .toc--button { + width: calc(40px + var(--size-m1) * 7); +} + +.toc--part[data-nesting-level="8"] .toc--row > .toc--link:first-child { + padding-left: calc(40px + var(--size-m1) * 8); +} + +.toc--part[data-nesting-level="8"] .toc--button + .toc--link { + margin-left: calc(40px + var(--size-m1) * 8); +} + +.toc--part[data-nesting-level="8"] .toc--button { + width: calc(40px + var(--size-m1) * 8); +} + +.toc--part[data-nesting-level="9"] .toc--row > .toc--link:first-child { + padding-left: calc(40px + var(--size-m1) * 9); +} + +.toc--part[data-nesting-level="9"] .toc--button + .toc--link { + margin-left: calc(40px + var(--size-m1) * 9); +} + +.toc--part[data-nesting-level="9"] .toc--button { + width: calc(40px + var(--size-m1) * 9); +} + +.toc--part[data-nesting-level="10"] .toc--row > .toc--link:first-child { + padding-left: calc(40px + var(--size-m1) * 10); +} + +.toc--part[data-nesting-level="10"] .toc--button + .toc--link { + margin-left: calc(40px + var(--size-m1) * 10); +} + +.toc--part[data-nesting-level="10"] .toc--button { + width: calc(40px + var(--size-m1) * 10); +} + +.toc .filtered > a, .filtered > .toc--button { + display: none; +} + +.toc #nav-submenu { + padding-left: 24px; +} + +.toc--part_hidden > .toc--part { + display: none; +} + +.toc--row .toc--link-grid { + display: grid; + grid-template-columns: 16px auto; + grid-gap: 6px; + align-items: center; +} + +.toc--icon { + width: 16px; + height: 16px; +} + +.toc--icon.class::before { + content: url(assets/class.svg); +} + +.toc--icon.class-kt::before { + content: url(assets/class-kotlin.svg); +} + +.toc--icon.function::before { + content: url(assets/function.svg); +} + +.toc--icon.enum-class::before { + content: url(assets/enum.svg); +} + +.toc--icon.enum-class-kt::before { + content: url(assets/enum-kotlin.svg); +} + +.toc--icon.annotation-class::before { + content: url(assets/annotation.svg); +} + +.toc--icon.annotation-class-kt::before { + content: url(assets/annotation-kotlin.svg); +} + +.toc--icon.abstract-class::before { + content: url(assets/abstract-class.svg); +} + +.toc--icon.abstract-class-kt::before { + content: url(assets/abstract-class-kotlin.svg); +} + +.toc--icon.exception-class::before { + content: url(assets/exception-class.svg); +} + +.toc--icon.interface::before { + content: url(assets/interface.svg); +} + +.toc--icon.interface-kt::before { + content: url(assets/interface-kotlin.svg); +} + +.toc--icon.object::before { + content: url(assets/object.svg); +} + +.toc--icon.typealias-kt::before { + content: url(assets/typealias-kotlin.svg); +} + +.toc--icon.val::before { + content: url(assets/field-value.svg); +} + +.toc--icon.var::before { + content: url(assets/field-variable.svg); +} + +.toc--part[data-active] > .toc--row .toc--link, .toc--part[data-active] > .toc--row .toc--button { + color: var(--color-text-dt); + background-color: var(--color-key-blue); +} + +.toc--part[data-active] > .toc--row .toc--link:hover, .toc--part[data-active] > .toc--row .toc--button:hover { + background-color: #578af7; +} + +.toc--part[data-active] > .toc--row .toc--link::after, .toc--part[data-active] > .toc--row .toc--button::after { + filter: invert(0); +} + +.sidebar { + overflow: auto; + box-sizing: border-box; + width: var(--sidebar-width); + border-right: 1px solid rgba(39, 40, 44, 0.2); +} + +@media (width < 900px) { + .sidebar { + width: 0; + border: none; + } +} +@media (width >= 900px) { + .sidebar { + position: relative; + z-index: 1; + } +} +.theme-dark .sidebar { + border-right-color: #56565f; +} + +.no-js .sidebar { + display: none; +} + +.sidebar--inner { + padding-top: 12px; + padding-bottom: 12px; +} /*! * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ /*! @@ -1259,7 +2277,7 @@ */ :root { --color-key-blue: rgb(48, 127, 255); - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -1271,6 +2289,7 @@ --color-text-light: rgba(0, 0, 0, 0.7); --color-text-light-dt: rgba(255, 255, 255, 0.7); --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); @@ -1360,7 +2379,7 @@ */ :root { --color-key-blue: rgb(48, 127, 255); - --color-key-blue-05: rgb(48, 127, 255, 0.5); + --color-key-blue-50: rgb(48, 127, 255, 0.5); --color-background-nav: rgb(39, 40, 44); --color-background-nav-dt: rgb(50, 50, 55); --color-background-page: rgb(255, 255, 255); @@ -1372,6 +2391,7 @@ --color-text-light: rgba(0, 0, 0, 0.7); --color-text-light-dt: rgba(255, 255, 255, 0.7); --color-w05: rgba(255, 255, 255, 0.05); + --color-w08: rgba(255, 255, 255, 0.08); --color-w10: rgba(255, 255, 255, 0.1); --color-w16: rgba(255, 255, 255, 0.16); --color-w50: rgba(255, 255, 255, 0.5); @@ -1435,6 +2455,7 @@ :root { --color-background: var(--color-background-page); + --focus-outline: 4px solid var(--color-key-blue-50); } .theme-dark { diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.min.css b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.min.css index 487f3c013a..1afa4696d9 100644 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.min.css +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.min.css @@ -1,12 +1,15 @@ -:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-05:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.button{align-items:center;background-color:transparent;border:none;border-radius:4px;border-radius:var(--size-s1);color:#000;color:var(--color-text);cursor:pointer;display:flex;height:40px;letter-spacing:.045em;padding:8px 12px;padding:var(--size-s2) 12px}.button[\:has\(\:first-child\)]{gap:8px;gap:var(--size-s2);padding:8px;padding:var(--size-s2)}.button:has(:first-child){gap:8px;gap:var(--size-s2);padding:8px;padding:var(--size-s2)}.button:hover{background-color:rgba(0,0,0,.08);background-color:var(--color-b08)}.button:active{background-color:#307fff;background-color:var(--color-key-blue)}.button:disabled{cursor:not-allowed;opacity:.5}.button.focus-visible{outline:4px solid rgba(48,127,255,.5);outline:4px solid var(--color-key-blue-05)}.button:focus-visible{outline:4px solid rgba(48,127,255,.5);outline:4px solid var(--color-key-blue-05)}.theme-dark .button{color:hsla(0,0%,100%,.96);color:var(--color-text-dt)}.theme-dark .button:hover{background-color:hsla(0,0%,100%,.1);background-color:var(--color-w10)}.button_background{background-color:#fff;background-color:var(--color-w100)}.theme-dark .button_background{background-color:hsla(0,0%,100%,.1);background-color:var(--color-w10)}.theme-dark .button_background:hover{background-color:hsla(0,0%,100%,.05);background-color:var(--color-w05)}.button_dropdown{padding:8px;padding:var(--size-s2)}.button_dropdown:after{background-image:url(assets/arrow-down.svg);background-repeat:no-repeat;content:"";display:block;filter:invert(1);height:24px;height:var(--size-m1);transform:rotate(0);width:24px;width:var(--size-m1);will-change:transform}.theme-dark .button_dropdown:after{filter:none}.button_dropdown_active{background-color:#307fff;background-color:var(--color-key-blue);color:hsla(0,0%,100%,.96);color:var(--color-text-dt)}.button_dropdown_active:hover,.theme-dark .button_dropdown_active:hover{background-color:#639fff}.button_dropdown_active:after{filter:invert(0);transform:rotate(-180deg)} -:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-05:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.filter-section{align-items:center;display:flex;flex-wrap:wrap;gap:2px;margin-right:12px;z-index:0}@media(max-width:900px){.filter-section{display:none}}.no-js .filter-section{display:none} -:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-05:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.ui-kit-icon{background-color:transparent;background-position:50% 50%;background-repeat:no-repeat;background-size:24px 24px;filter:invert(1);font-size:0;height:24px;height:var(--size-m1);line-height:0;width:24px;width:var(--size-m1);will-change:background-color}.theme-dark .ui-kit-icon{filter:none}.ui-kit-icon_arrow-down{background-image:url(assets/arrow-down.svg)}.ui-kit-icon_placeholder{background-image:url(assets/placeholder.svg)} -:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-05:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out;--dokka-logo-height:28px;--dokka-logo-width:28px}.library-name--link{align-items:center;color:hsla(0,0%,100%,.96);color:var(--color-text-dt);display:flex;font:600 16px/24px JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Oxygen,Droid Sans,Helvetica Neue,Arial;font:var(--font-h4);margin-right:8px;margin-right:var(--size-s2);white-space:nowrap}@media(max-width:900px){.library-name--link{height:52px;margin-left:12px}}.library-name--link:before{background:var(--dokka-logo-image-url) center no-repeat;background-size:28px 28px;background-size:var(--dokka-logo-height) var(--dokka-logo-width);content:"";height:28px;height:var(--dokka-logo-width);margin-right:8px;margin-right:var(--size-s2);width:28px;width:var(--dokka-logo-height)} -:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-05:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.library-version{color:hsla(0,0%,100%,.96);color:var(--color-text-dt);font:400 14px/20px JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Oxygen,Droid Sans,Helvetica Neue,Arial;font:var(--font-text-s)}@media(max-width:900px){.library-version{align-items:center;background-color:#000;background-color:var(--color-text);display:flex;height:52px}} -:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-05:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.navigation{align-items:center;background-color:#27282c;background-color:var(--color-background-nav);box-sizing:border-box;color:hsla(0,0%,100%,.96);color:var(--color-text-dt);display:flex;flex-wrap:wrap;height:64px;height:var(--size-l1);justify-content:flex-start;padding:12px 24px;padding:12px var(--size-m1);z-index:4}@media(max-width:900px){.navigation{height:auto;padding:0}}.theme-dark .navigation{background-color:#323237;background-color:var(--color-background-nav-dt)} -:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-05:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.navigation-controls{align-items:center;display:flex;gap:4px;gap:var(--size-s1);margin-left:auto}@media(max-width:900px){.navigation-controls{background-color:#000;background-color:var(--color-text);flex-grow:1;gap:0;justify-content:flex-end}}.no-js .navigation-controls{display:none}.navigation-controls--btn{align-items:center;background-color:inherit;background-position:50% 50%;background-repeat:no-repeat;background-size:24px 24px;border:none;border-radius:4px;border-radius:var(--size-s1);cursor:pointer;display:inline-flex;font-size:0;height:40px;justify-content:center;line-height:0;padding:0;transition:background-color .2s ease-in-out;transition:var(--hover-transition);width:40px;will-change:background-color}.navigation-controls--btn:hover{background-color:hsla(0,0%,100%,.1);background-color:var(--color-w10)}@media(max-width:900px){.navigation-controls--btn{height:52px;width:52px}}.navigation-controls--break{flex-basis:100%}.navigation-controls--btn_theme{background-image:url(assets/theme-toggle.svg)}.navigation-controls--btn_homepage{background-image:url(assets/homepage.svg)}.navigation-controls--btn_menu{background-image:url(assets/burger.svg);margin-left:auto}.navigation-controls--btn_filter{background-image:url(assets/filter.svg)} -:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-05:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.platform-tag{--platform-tag-color:#bababb;border:0;border-radius:4px;border-radius:var(--size-s1);cursor:pointer;font:400 14px/20px JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Oxygen,Droid Sans,Helvetica Neue,Arial;font:var(--font-text-s);letter-spacing:-.03em;padding:10px 12px;text-transform:capitalize}.platform-tag.js-like,.platform-tag.jvm-like,.platform-tag.wasm-like{text-transform:uppercase}.platform-tags .platform-tag{align-items:center;display:flex}.filter-section .platform-tag[data-active]{background-color:var(--platform-tag-color);color:#19191c}.filter-section .platform-tag.jvm-like[data-active],.platform-tags .platform-tag.jvm-like{--platform-tag-color:#4dbb5f}.filter-section .platform-tag.js-like[data-active],.platform-tags .platform-tag.js-like{--platform-tag-color:#ffc700}.filter-section .platform-tag.native-like[data-active],.platform-tags .platform-tag.native-like{--platform-tag-color:#e082f3}.filter-section .platform-tag.wasm-like[data-active],.platform-tags .platform-tag.wasm-like{--platform-tag-color:#9585f9}.filter-section .platform-tag[data-active]:hover{background-color:hsla(240,1%,73%,.7);color:#fff}.filter-section .platform-tag:not([data-active]){background-color:hsla(0,0%,100%,.1);background-color:var(--color-w10);color:hsla(0,0%,100%,.5);color:var(--color-w50);text-decoration:line-through}.platform-tags .platform-tag:before{background:var(--platform-tag-color);border-radius:50%;content:"";display:inline-block;font-size:13px;height:8px;line-height:1.6;margin:0 4px 0 8px;width:8px} -.platform-tags{display:flex;flex-wrap:wrap;margin-bottom:-8px;margin-left:-4px} -:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-05:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.platform-hinted>.platform-bookmarks-row,.tabs-section{margin-left:-8px;margin-right:-8px}.platform-hinted>.platform-bookmarks-row>.platform-bookmark,.section-tab{background-color:transparent;border:0;border-bottom:1px solid var(--inactive-tab-border-color);color:var(--inactive-section-color);cursor:pointer;font-size:var(--default-font-size);margin:0 8px;outline:none;padding:11px 3px}.platform-hinted>.platform-bookmarks-row{margin-bottom:16px;margin-bottom:var(--size-s3)}.no-js .platform-bookmarks-row+.sourceset-dependent-content{margin-top:8px;margin-top:var(--size-s2)}.no-js .platform-bookmarks-row+.sourceset-dependent-content:last-of-type{margin-top:0}.section-tab:hover{border-bottom:2px solid var(--default-font-color);color:var(--default-font-color)}.section-tab[data-active=""]{border-bottom:2px solid var(--active-tab-border-color);color:var(--active-section-color)}.tabs-section-body>div{margin-top:12px}.tabs-section-body .with-platform-tabs{padding-bottom:12px;padding-top:12px}.platform-hinted{display:block;flex:auto}.platform-hinted>.platform-bookmarks-row>.platform-bookmark{align-self:flex-start;background:inherit;flex:none;min-width:64px;min-width:var(--size-l1);order:5}.platform-hinted>.platform-bookmarks-row>.platform-bookmark:hover{border-bottom:2px solid var(--default-font-color);color:var(--default-font-color)}.platform-hinted>.platform-bookmarks-row>.platform-bookmark[data-active=""]{border-bottom:2px solid var(--active-tab-border-color);color:var(--active-section-color)}.js .platform-hinted>.content:not([data-active]),.js .tabs-section-body [data-togglable]:not([data-active]),.main-content[data-page-type=package] .tabs-section-body h2,.no-js .platform-bookmarks-row,.no-js .tabs-section{display:none} -:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-05:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}@media(max-width:899px){.ui-kit_desktop-only{display:none}}@media(min-width:900px){.ui-kit_mobile-only{display:none}} -:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-05:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out;--color-background:var(--color-background-page)}.theme-dark{--color-background:var(--color-background-page-dt)}body,table{background-color:#fff;background-color:var(--color-background)} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.button{align-items:center;background-color:transparent;border:none;border-radius:4px;border-radius:var(--size-s1);color:#000;color:var(--color-text);cursor:pointer;display:flex;height:40px;justify-content:center;letter-spacing:.045em;padding:8px 12px;padding:var(--size-s2) 12px}.button[\:has\(\:first-child\)]{gap:8px;gap:var(--size-s2);padding:8px;padding:var(--size-s2)}.button:has(:first-child){gap:8px;gap:var(--size-s2);padding:8px;padding:var(--size-s2)}@media(hover:hover){.button:hover{background-color:rgba(0,0,0,.08);background-color:var(--color-b08)}}.button:active{background-color:#307fff;background-color:var(--color-key-blue)}.button:disabled{cursor:not-allowed;opacity:.5}.button.focus-visible{outline:var(--focus-outline)}.button:focus-visible{outline:var(--focus-outline)}.theme-dark .button{color:hsla(0,0%,100%,.96);color:var(--color-text-dt)}.theme-dark .button:hover{background-color:hsla(0,0%,100%,.1);background-color:var(--color-w10)}.button_background{background-color:#fff;background-color:var(--color-w100)}.theme-dark .button_background{background-color:hsla(0,0%,100%,.1);background-color:var(--color-w10)}.theme-dark .button_background:hover{background-color:hsla(0,0%,100%,.05);background-color:var(--color-w05)}.button_dropdown{font:400 14px/20px JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Oxygen,Droid Sans,Helvetica Neue,Arial;font:var(--font-text-s);padding:8px;padding:var(--size-s2)}.button_dropdown:after{background-image:url(assets/arrow-down.svg);background-repeat:no-repeat;content:"";display:block;filter:invert(1);height:24px;height:var(--size-m1);transform:rotate(0);width:24px;width:var(--size-m1);will-change:transform}.theme-dark .button_dropdown:after{filter:none}.button_dropdown_active{background-color:#307fff;background-color:var(--color-key-blue);color:hsla(0,0%,100%,.96);color:var(--color-text-dt)}.button_dropdown_active:hover,.theme-dark .button_dropdown_active:hover{background-color:#639fff}.button_dropdown_active:after{filter:invert(0);transform:rotate(-180deg)} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.checkbox{cursor:pointer;display:inline-block;position:relative}.checkbox--input{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:absolute;visibility:hidden}.checkbox--icon{background-image:url(assets/checkbox-off.svg);height:24px;height:var(--size-m1);margin-left:-32px;margin-left:calc(var(--size-m2)*-1);position:absolute;width:24px;width:var(--size-m1)}.checkbox--input:checked+.checkbox--icon{background-image:url(assets/checkbox-on.svg)}.checkbox--input:disabled+.checkbox--icon{opacity:.2}.checkbox--input.focus-visible{outline:var(--focus-outline)}.checkbox--input:focus-visible{outline:var(--focus-outline)} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.dropdown{position:relative}@media(max-width:899px){.dropdown{position:static}}.dropdown--list{background-color:#323237;background-color:var(--color-background-nav-dt);border:1px solid #56565f;box-shadow:0 2px 8px 0 rgba(0,0,0,.251);display:none;max-height:400px;max-width:360px;min-width:272px;overflow-y:auto;padding:12px 0;position:absolute;right:0;top:44px;width:-moz-fit-content;width:fit-content;z-index:10}@media(max-width:899px){.dropdown--list{border:none;height:100vh;max-height:none;padding:0;right:0;top:0}}@media(max-width:439px){.dropdown--list{max-width:none;width:100vw}}.dropdown--list_positioned_right{right:0}.dropdown--list_positioned_left{left:0}@media(max-width:899px){.dropdown--list_positioned_left{left:auto}}.dropdown--list_expanded{display:block}@media(min-width:900px){.dropdown--list_toc-list{background-color:transparent;border:none;box-shadow:none;display:block;max-height:none;max-width:none;min-width:0;min-width:auto;padding:0;position:relative;top:0}}@media(min-width:440px)and (max-width:899px){.dropdown--list_toc-list{width:408px}}.dropdown--option{background-color:#323237;background-color:var(--color-background-nav-dt);border:none;color:var(--color-text-nav-dt);cursor:pointer;display:block;font:400 16px/24px JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Oxygen,Droid Sans,Helvetica Neue,Arial;font:var(--font-text-m);letter-spacing:-.03em;list-style-type:none;padding:8px 16px;padding:var(--size-s2) var(--size-s3);position:relative;text-transform:capitalize}.dropdown--option:hover{background-color:#4a4a52}.dropdown--option.focus-visible{outline:var(--focus-outline);z-index:1}.dropdown--option:focus-visible{outline:var(--focus-outline);z-index:1}.dropdown--option:visited{color:var(--color-text-nav-dt)}.dropdown--option_active{background-color:#307fff;background-color:var(--color-key-blue)}.dropdown--option_active:hover{background-color:#639fff}.dropdown--option_link{color:var(--color-text-nav-dt);text-decoration:none}.dropdown--option_link.focus-visible{outline:var(--focus-outline)}.dropdown--option_link:focus-visible{outline:var(--focus-outline)}.dropdown--option .checkbox{pointer-events:none}.dropdown--overlay{background-color:hsla(0,0%,54%,.5);bottom:0;content:"";display:none;height:100vh;left:0;position:absolute;right:0;top:0;width:100vw;z-index:4}.dropdown--list_expanded+.dropdown--overlay{display:block}@media(min-width:900px){.dropdown--list_expanded+.dropdown--overlay{display:none}}.dropdown--header{align-items:center;background-color:#323237;background-color:var(--color-background-nav-dt);border-bottom:1px solid #56565f;color:hsla(0,0%,100%,.7);color:var(--color-w70);display:flex;height:52px;justify-content:space-between;padding-left:16px;padding-left:var(--size-s3);position:sticky;top:0;z-index:2}@media(min-width:900px){.dropdown--header{display:none}} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.filter-section{align-items:center;display:flex;flex-wrap:wrap;gap:2px;justify-content:flex-end;margin-right:12px;max-height:40px;z-index:1}.filter-section_loading{overflow:hidden}@media(min-width:900px){.filter-section--dropdown{display:none}}.filter-section--dropdown-toggle_as-filters{background-image:url(assets/filter.svg);background-position:50% 50%;background-repeat:no-repeat;min-width:40px}.filter-section--dropdown-toggle_as-filters:after{display:none}@media(max-width:899px){.filter-section{margin-right:0;max-height:none}.filter-section>:not(.dropdown){display:none}.filter-section--dropdown-toggle{background-image:url(assets/filter.svg);background-position:50% 50%;background-repeat:no-repeat}.filter-section--dropdown-toggle:after{display:none}}.no-js .filter-section{display:none} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.ui-kit-icon{background-color:transparent;background-position:50% 50%;background-repeat:no-repeat;background-size:24px 24px;filter:invert(1);font-size:0;height:24px;height:var(--size-m1);line-height:0;width:24px;width:var(--size-m1);will-change:background-color}.theme-dark .ui-kit-icon{filter:none}@media(max-width:899px){.theme-dark_mobile .ui-kit-icon{filter:none}}.ui-kit-icon_arrow-down{background-image:url(assets/arrow-down.svg)}.ui-kit-icon_placeholder{background-image:url(assets/placeholder.svg)}.ui-kit-icon_cross{background-image:url(assets/cross.svg)} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out;--dokka-logo-height:28px;--dokka-logo-width:28px}.library-name--link{align-items:center;color:hsla(0,0%,100%,.96);color:var(--color-text-dt);display:flex;font:600 16px/24px JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Oxygen,Droid Sans,Helvetica Neue,Arial;font:var(--font-h4);margin-right:8px;margin-right:var(--size-s2);white-space:nowrap}.library-name--link.focus-visible{outline:var(--focus-outline)}.library-name--link:focus-visible{outline:var(--focus-outline)}@media(max-width:899px){.library-name--link{height:52px;margin-left:12px}}.library-name--link:before{background:var(--dokka-logo-image-url) center no-repeat;background-size:28px 28px;background-size:var(--dokka-logo-height) var(--dokka-logo-width);content:"";height:28px;height:var(--dokka-logo-width);margin-right:8px;margin-right:var(--size-s2);width:28px;width:var(--dokka-logo-height)} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.library-version{box-sizing:border-box;color:hsla(0,0%,100%,.96);color:var(--color-text-dt);font:400 14px/20px JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Oxygen,Droid Sans,Helvetica Neue,Arial;font:var(--font-text-s);padding-top:1px}@media(max-width:899px){.library-version{align-items:center;background-color:#000;background-color:var(--color-text);display:flex;height:52px;padding-left:12px}} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.navigation{align-items:center;background-color:#27282c;background-color:var(--color-background-nav);box-sizing:border-box;color:hsla(0,0%,100%,.96);color:var(--color-text-dt);display:flex;flex-wrap:nowrap;justify-content:flex-start;padding:12px 24px;padding:12px var(--size-m1);z-index:4}@media(max-width:899px){.navigation{flex-wrap:wrap;height:auto;padding:0}}.theme-dark .navigation{background-color:#323237;background-color:var(--color-background-nav-dt)}@media(max-width:899px){.navigation .button{height:52px;min-width:52px}} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.navigation-controls{align-items:center;display:flex;gap:4px;gap:var(--size-s1);margin-left:auto}@media(max-width:899px){.navigation-controls{background-color:#000;background-color:var(--color-text);flex-grow:1;gap:0;justify-content:flex-end}}.no-js .navigation-controls{display:none}.navigation-controls--btn{align-items:center;background-color:inherit;background-position:50% 50%;background-repeat:no-repeat;background-size:24px 24px;border:none;border-radius:4px;border-radius:var(--size-s1);cursor:pointer;display:inline-flex;flex-shrink:0;font-size:0;height:40px;justify-content:center;line-height:0;padding:0;transition:background-color .2s ease-in-out;transition:var(--hover-transition);width:40px;will-change:background-color;z-index:0}@media(hover:hover){.navigation-controls--btn:hover{background-color:rgba(0,0,0,.08);background-color:var(--color-b08)}}.navigation-controls--btn:active{background-color:hsla(0,0%,100%,.1);background-color:var(--color-w10)}.navigation-controls--btn.focus-visible{outline:var(--focus-outline)}.navigation-controls--btn:focus-visible{outline:var(--focus-outline)}@media(max-width:899px){.navigation-controls--btn{height:52px;width:52px}}.navigation-controls--break{flex-basis:100%}.navigation-controls--btn_theme{background-image:url(assets/theme-toggle.svg)}.navigation-controls--btn_homepage{background-image:url(assets/homepage.svg)}.navigation-controls--btn_toc{background-image:url(assets/burger.svg);margin-left:auto} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.platform-tag{--platform-tag-color:#bababb;border:0;border-radius:4px;border-radius:var(--size-s1);font:400 14px/20px JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Oxygen,Droid Sans,Helvetica Neue,Arial;font:var(--font-text-s);padding:10px 12px;text-transform:capitalize}.platform-tag,button.platform-tag{cursor:pointer}button.platform-tag.focus-visible{outline:var(--focus-outline)}button.platform-tag:focus-visible{outline:var(--focus-outline)}.platform-selector-option{padding-left:44px}.platform-selector-option.js-like,.platform-selector-option.jvm-like,.platform-selector-option.wasm-like,.platform-tag.js-like,.platform-tag.jvm-like,.platform-tag.wasm-like{text-transform:uppercase}.platform-tags .platform-tag{align-items:center;display:flex}.filter-section .platform-tag[data-active]{background-color:var(--platform-tag-color);color:#19191c}.filter-section .platform-tag.jvm-like[data-active],.platform-tags .platform-tag.jvm-like{--platform-tag-color:#4dbb5f}.filter-section .platform-tag.js-like[data-active],.platform-tags .platform-tag.js-like{--platform-tag-color:#ffc700}.filter-section .platform-tag.native-like[data-active],.platform-tags .platform-tag.native-like{--platform-tag-color:#e082f3}.filter-section .platform-tag.wasm-like[data-active],.platform-tags .platform-tag.wasm-like{--platform-tag-color:#9585f9}@media(hover:hover){.filter-section .platform-tag[data-active]:hover{background-color:hsla(240,1%,73%,.7);color:#fff}}.filter-section .platform-tag[data-active]:active{background-color:hsla(240,1%,73%,.7);color:#fff}.filter-section .platform-tag:not([data-active]){background-color:hsla(0,0%,100%,.1);background-color:var(--color-w10);color:hsla(0,0%,100%,.5);color:var(--color-w50);text-decoration:line-through}.platform-tags .platform-tag:before{background:var(--platform-tag-color);border-radius:50%;content:"";display:inline-block;font-size:13px;height:8px;line-height:1.6;margin:0 4px 0 8px;width:8px} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.platform-tags{display:flex;flex-wrap:wrap;margin-bottom:-8px;margin-left:-4px} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}.platform-hinted>.platform-bookmarks-row,.tabs-section{margin-left:-8px;margin-right:-8px}.platform-hinted>.platform-bookmarks-row>.platform-bookmark,.section-tab{background-color:transparent;border:0;border-bottom:1px solid var(--inactive-tab-border-color);color:var(--inactive-section-color);cursor:pointer;font-size:var(--default-font-size);margin:0 8px;outline:none;padding:11px 3px}.platform-hinted>.platform-bookmarks-row{margin-bottom:16px;margin-bottom:var(--size-s3)}.no-js .platform-bookmarks-row+.sourceset-dependent-content{margin-top:8px;margin-top:var(--size-s2)}.no-js .platform-bookmarks-row+.sourceset-dependent-content:last-of-type{margin-top:0}.section-tab:hover{border-bottom:2px solid var(--default-font-color);color:var(--default-font-color)}.section-tab[data-active=""]{border-bottom:2px solid var(--active-tab-border-color);color:var(--active-section-color)}.tabs-section-body>div{margin-top:12px}.tabs-section-body .with-platform-tabs{padding-bottom:12px;padding-top:12px}.platform-hinted{display:block;flex:auto}.platform-hinted>.platform-bookmarks-row>.platform-bookmark{align-self:flex-start;background:inherit;flex:none;min-width:64px;min-width:var(--size-l1);order:5}.platform-hinted>.platform-bookmarks-row>.platform-bookmark:hover{border-bottom:2px solid var(--default-font-color);color:var(--default-font-color)}.platform-hinted>.platform-bookmarks-row>.platform-bookmark[data-active=""]{border-bottom:2px solid var(--active-tab-border-color);color:var(--active-section-color)}.js .platform-hinted>.content:not([data-active]),.js .tabs-section-body [data-togglable]:not([data-active]),.main-content[data-page-type=package] .tabs-section-body h2,.no-js .platform-bookmarks-row,.no-js .tabs-section{display:none} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out;--toc-hover-color:var(--color-b08);--toc-font:400 13px/24px var(--font-family-default);--toc-color:var(--color-text)}.theme-dark{--toc-hover-color:var(--color-w08);--toc-color:var(--color-text-dt)}@media(max-width:899px){.theme-dark_mobile{--toc-color:var(--color-text-dt);--toc-hover-color:var(--color-w08)}}.toc--part{color:#000;color:var(--toc-color);font:400 13px/24px JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Oxygen,Droid Sans,Helvetica Neue,Arial;font:var(--toc-font)}.toc--part,.toc--row{box-sizing:border-box}.toc--row{align-items:center;display:flex;min-height:40px;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.toc--button{align-items:center;background-color:inherit;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;height:100%;justify-content:flex-end;min-width:40px;padding:0 8px 0 0;position:absolute;transition:background-color .2s ease-in-out;transition:var(--hover-transition);will-change:background-color}.toc--button:after{background-image:url(assets/arrow-down.svg);background-repeat:no-repeat;background-size:24px 24px;content:" ";filter:invert(1);font-size:0;height:24px;line-height:0;transform:rotate(0deg);width:24px}.toc--part_hidden .toc--button:after{transform:rotate(-90deg)}.theme-dark .toc--button:after{filter:invert(0)}@media(max-width:899px){.theme-dark_mobile .toc--button:after{filter:invert(0)}}@media(hover:hover){.toc--button:hover{background-color:rgba(0,0,0,.08);background-color:var(--toc-hover-color)}}.toc--button:active{background-color:rgba(0,0,0,.08);background-color:var(--toc-hover-color)}.toc--button.focus-visible{outline:var(--focus-outline);outline-offset:-4px}.toc--button:focus-visible{outline:var(--focus-outline);outline-offset:-4px}.toc--link{box-sizing:border-box;color:inherit;height:calc(100% - 16px);min-height:40px;padding:8px 0;width:100%}.toc--link:hover{background-color:rgba(0,0,0,.08);background-color:var(--toc-hover-color)}.toc--link.focus-visible{outline:var(--focus-outline);outline-offset:-4px}.toc--link:focus-visible{outline:var(--focus-outline);outline-offset:-4px}.toc--part[data-nesting-level="0"] .toc--row>.toc--link:first-child{padding-left:40px;padding-left:calc(40px + var(--size-m1)*0)}.toc--part[data-nesting-level="0"] .toc--button+.toc--link{margin-left:40px;margin-left:calc(40px + var(--size-m1)*0)}.toc--part[data-nesting-level="0"] .toc--button{width:40px;width:calc(40px + var(--size-m1)*0)}.toc--part[data-nesting-level="1"] .toc--row>.toc--link:first-child{padding-left:64px;padding-left:calc(40px + var(--size-m1)*1)}.toc--part[data-nesting-level="1"] .toc--button+.toc--link{margin-left:64px;margin-left:calc(40px + var(--size-m1)*1)}.toc--part[data-nesting-level="1"] .toc--button{width:64px;width:calc(40px + var(--size-m1)*1)}.toc--part[data-nesting-level="2"] .toc--row>.toc--link:first-child{padding-left:88px;padding-left:calc(40px + var(--size-m1)*2)}.toc--part[data-nesting-level="2"] .toc--button+.toc--link{margin-left:88px;margin-left:calc(40px + var(--size-m1)*2)}.toc--part[data-nesting-level="2"] .toc--button{width:88px;width:calc(40px + var(--size-m1)*2)}.toc--part[data-nesting-level="3"] .toc--row>.toc--link:first-child{padding-left:112px;padding-left:calc(40px + var(--size-m1)*3)}.toc--part[data-nesting-level="3"] .toc--button+.toc--link{margin-left:112px;margin-left:calc(40px + var(--size-m1)*3)}.toc--part[data-nesting-level="3"] .toc--button{width:112px;width:calc(40px + var(--size-m1)*3)}.toc--part[data-nesting-level="4"] .toc--row>.toc--link:first-child{padding-left:136px;padding-left:calc(40px + var(--size-m1)*4)}.toc--part[data-nesting-level="4"] .toc--button+.toc--link{margin-left:136px;margin-left:calc(40px + var(--size-m1)*4)}.toc--part[data-nesting-level="4"] .toc--button{width:136px;width:calc(40px + var(--size-m1)*4)}.toc--part[data-nesting-level="5"] .toc--row>.toc--link:first-child{padding-left:160px;padding-left:calc(40px + var(--size-m1)*5)}.toc--part[data-nesting-level="5"] .toc--button+.toc--link{margin-left:160px;margin-left:calc(40px + var(--size-m1)*5)}.toc--part[data-nesting-level="5"] .toc--button{width:160px;width:calc(40px + var(--size-m1)*5)}.toc--part[data-nesting-level="6"] .toc--row>.toc--link:first-child{padding-left:184px;padding-left:calc(40px + var(--size-m1)*6)}.toc--part[data-nesting-level="6"] .toc--button+.toc--link{margin-left:184px;margin-left:calc(40px + var(--size-m1)*6)}.toc--part[data-nesting-level="6"] .toc--button{width:184px;width:calc(40px + var(--size-m1)*6)}.toc--part[data-nesting-level="7"] .toc--row>.toc--link:first-child{padding-left:208px;padding-left:calc(40px + var(--size-m1)*7)}.toc--part[data-nesting-level="7"] .toc--button+.toc--link{margin-left:208px;margin-left:calc(40px + var(--size-m1)*7)}.toc--part[data-nesting-level="7"] .toc--button{width:208px;width:calc(40px + var(--size-m1)*7)}.toc--part[data-nesting-level="8"] .toc--row>.toc--link:first-child{padding-left:232px;padding-left:calc(40px + var(--size-m1)*8)}.toc--part[data-nesting-level="8"] .toc--button+.toc--link{margin-left:232px;margin-left:calc(40px + var(--size-m1)*8)}.toc--part[data-nesting-level="8"] .toc--button{width:232px;width:calc(40px + var(--size-m1)*8)}.toc--part[data-nesting-level="9"] .toc--row>.toc--link:first-child{padding-left:256px;padding-left:calc(40px + var(--size-m1)*9)}.toc--part[data-nesting-level="9"] .toc--button+.toc--link{margin-left:256px;margin-left:calc(40px + var(--size-m1)*9)}.toc--part[data-nesting-level="9"] .toc--button{width:256px;width:calc(40px + var(--size-m1)*9)}.toc--part[data-nesting-level="10"] .toc--row>.toc--link:first-child{padding-left:280px;padding-left:calc(40px + var(--size-m1)*10)}.toc--part[data-nesting-level="10"] .toc--button+.toc--link{margin-left:280px;margin-left:calc(40px + var(--size-m1)*10)}.toc--part[data-nesting-level="10"] .toc--button{width:280px;width:calc(40px + var(--size-m1)*10)}.filtered>.toc--button,.toc .filtered>a{display:none}.toc #nav-submenu{padding-left:24px}.toc--part_hidden>.toc--part{display:none}.toc--row .toc--link-grid{display:grid;grid-template-columns:16px auto;grid-gap:6px;align-items:center}.toc--icon{height:16px;width:16px}.toc--icon.class:before{content:url(assets/class.svg)}.toc--icon.class-kt:before{content:url(assets/class-kotlin.svg)}.toc--icon.function:before{content:url(assets/function.svg)}.toc--icon.enum-class:before{content:url(assets/enum.svg)}.toc--icon.enum-class-kt:before{content:url(assets/enum-kotlin.svg)}.toc--icon.annotation-class:before{content:url(assets/annotation.svg)}.toc--icon.annotation-class-kt:before{content:url(assets/annotation-kotlin.svg)}.toc--icon.abstract-class:before{content:url(assets/abstract-class.svg)}.toc--icon.abstract-class-kt:before{content:url(assets/abstract-class-kotlin.svg)}.toc--icon.exception-class:before{content:url(assets/exception-class.svg)}.toc--icon.interface:before{content:url(assets/interface.svg)}.toc--icon.interface-kt:before{content:url(assets/interface-kotlin.svg)}.toc--icon.object:before{content:url(assets/object.svg)}.toc--icon.typealias-kt:before{content:url(assets/typealias-kotlin.svg)}.toc--icon.val:before{content:url(assets/field-value.svg)}.toc--icon.var:before{content:url(assets/field-variable.svg)}.toc--part[data-active]>.toc--row .toc--button,.toc--part[data-active]>.toc--row .toc--link{background-color:#307fff;background-color:var(--color-key-blue);color:hsla(0,0%,100%,.96);color:var(--color-text-dt)}.toc--part[data-active]>.toc--row .toc--button:hover,.toc--part[data-active]>.toc--row .toc--link:hover{background-color:#578af7}.toc--part[data-active]>.toc--row .toc--button:after,.toc--part[data-active]>.toc--row .toc--link:after{filter:invert(0)}.sidebar{border-right:1px solid rgba(39,40,44,.2);box-sizing:border-box;overflow:auto;width:var(--sidebar-width)}@media(max-width:899px){.sidebar{border:none;width:0}}@media(min-width:900px){.sidebar{position:relative;z-index:1}}.theme-dark .sidebar{border-right-color:#56565f}.no-js .sidebar{display:none}.sidebar--inner{padding-bottom:12px;padding-top:12px} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out}@media(max-width:899px){.ui-kit_desktop-only{display:none}}@media(min-width:900px){.ui-kit_mobile-only{display:none}} +:root{--breakpoint-desktop-min:900px;--breakpoint-tablet-max:899px;--breakpoint-tablet-min:440px;--breakpoint-mobile-max:439px;--breakpoint-mobile-min:360px;--color-key-blue:#307fff;--color-key-blue-50:rgba(48,127,255,.5);--color-background-nav:#27282c;--color-background-nav-dt:#323237;--color-background-page:#fff;--color-background-page-dt:#262628;--color-background-footer:#ebebeb;--color-background-footer-dt:#323237;--color-text:#000;--color-text-dt:hsla(0,0%,100%,.96);--color-text-light:rgba(0,0,0,.7);--color-text-light-dt:hsla(0,0%,100%,.7);--color-w05:hsla(0,0%,100%,.05);--color-w08:hsla(0,0%,100%,.08);--color-w10:hsla(0,0%,100%,.1);--color-w16:hsla(0,0%,100%,.16);--color-w50:hsla(0,0%,100%,.5);--color-w70:hsla(0,0%,100%,.7);--color-w80:hsla(0,0%,100%,.8);--color-w100:#fff;--color-b05:rgba(0,0,0,.05);--color-b08:rgba(0,0,0,.08);--color-b20:rgba(0,0,0,.2);--color-b50:rgba(0,0,0,.5);--color-b70:rgba(0,0,0,.7);--color-cd-punctuation:#999;--color-cd-keyword:#0033b3;--color-cd-keyword-alternative:#cc7832;--color-cd-builtin:#067d17;--color-cd-builtin-alternative:#e7bf6a;--color-cd-function:#00627a;--color-cd-function-alternative:#ffc66d;--color-cd-operator:#9a6e3a;--color-cd-operator-alternative:#a9b7c6;--color-cd-body:#000;--color-cd-body-alternative:#a9b7c6;--color-generic:#539df3;--color-jvm:#4dbb5f;--color-js:#ffc700;--color-wasm:#fff;--size-s1:4px;--size-s2:8px;--size-s3:16px;--size-m1:24px;--size-m2:32px;--size-m3:48px;--size-l1:64px;--size-l2:72px;--size-ta1:40px;--size-ta2:52px;--font-family-default:JetBrains Sans,Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Droid Sans,Helvetica Neue,Arial,sans-serif;--font-family-mono:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;--font-h1:600 44px/44px var(--font-family-default);--font-h2:600 32px/32px var(--font-family-default);--font-h3:600 24px/24px var(--font-family-default);--font-h4:600 16px/24px var(--font-family-default);--font-text-m:400 16px/24px var(--font-family-default);--font-text-s:400 14px/20px var(--font-family-default);--font-code:400 16px/24px var(--font-family-mono);--hover-transition:background-color 200ms ease-in-out;--rotate-transition:transform 200ms ease-in-out;--color-background:var(--color-background-page);--focus-outline:4px solid var(--color-key-blue-50)}.theme-dark{--color-background:var(--color-background-page-dt)}body,table{background-color:#fff;background-color:var(--color-background)} diff --git a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.min.js b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.min.js index ab6abffbab..a3224fd0e6 100644 --- a/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.min.js +++ b/dokka-subprojects/plugin-base/src/main/resources/dokka/ui-kit/ui-kit.min.js @@ -1,2 +1,2 @@ /*! For license information please see ui-kit.min.js.LICENSE.txt */ -(()=>{var e,r,t={352:e=>{"use strict";e.exports=i;var r=/(?:(?:\u001b\[)|\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\u001b[A-M]/,t={reset:["fff","000"],black:"000",red:"ff0000",green:"209805",yellow:"e8bf03",blue:"0000ff",magenta:"ff00ff",cyan:"00ffee",lightgrey:"f0f0f0",darkgrey:"888"},o={30:"black",31:"red",32:"green",33:"yellow",34:"blue",35:"magenta",36:"cyan",37:"lightgrey"},n={1:"font-weight:bold",2:"opacity:0.5",3:"",4:"",8:"display:none",9:""},a={23:"",24:"",29:""};function i(e){if(!r.test(e))return e;var t=[],o=e.replace(/\033\[(\d+)m/g,(function(e,r){var o=n[r];if(o)return~t.indexOf(r)?(t.pop(),""):(t.push(r),"<"===o[0]?o:'');var i=a[r];return i?(t.pop(),i):""})),i=t.length;return i>0&&(o+=Array(i+1).join("")),o}function c(e){for(var r in n[0]="font-weight:normal;opacity:1;color:#"+e.reset[0]+";background:#"+e.reset[1],n[7]="color:#"+e.reset[1]+";background:#"+e.reset[0],n[90]="color:#"+e.darkgrey,o){var t=e[o[r]]||"000";n[r]="color:#"+t,r=parseInt(r),n[(r+10).toString()]="background:#"+t}}[0,21,22,27,28,39,49].forEach((function(e){a[e]=""})),i.setColors=function(e){if("object"!=typeof e)throw new Error("`colors` parameter must be an Object.");var r={};for(var o in t){var n=e.hasOwnProperty(o)?e[o]:null;if(n){if("reset"===o){if("string"==typeof n&&(n=[n]),!Array.isArray(n)||0===n.length||n.some((function(e){return"string"!=typeof e})))throw new Error("The value of `"+o+"` property must be an Array and each item could only be a hex string, e.g.: FF0000");var a=t[o];n[0]||(n[0]=a[0]),1!==n.length&&n[1]||(n=[n[0]]).push(a[1]),n=n.slice(0,2)}else if("string"!=typeof n)throw new Error("The value of `"+o+"` property must be a hex string, e.g.: FF0000");r[o]=n}else r[o]=t[o]}c(r)},i.reset=function(){c(t)},i.tags={},Object.defineProperty?(Object.defineProperty(i.tags,"open",{get:function(){return n}}),Object.defineProperty(i.tags,"close",{get:function(){return a}})):(i.tags.open=n,i.tags.close=a),i.reset()},7:e=>{"use strict";var r,t="object"==typeof Reflect?Reflect:null,o=t&&"function"==typeof t.apply?t.apply:function(e,r,t){return Function.prototype.apply.call(e,r,t)};r=t&&"function"==typeof t.ownKeys?t.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var n=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}e.exports=a,e.exports.once=function(e,r){return new Promise((function(t,o){function n(t){e.removeListener(r,a),o(t)}function a(){"function"==typeof e.removeListener&&e.removeListener("error",n),t([].slice.call(arguments))}m(e,r,a,{once:!0}),"error"!==r&&function(e,r){"function"==typeof e.on&&m(e,"error",r,{once:!0})}(e,n)}))},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var i=10;function c(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function s(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function l(e,r,t,o){var n,a,i,l;if(c(t),void 0===(a=e._events)?(a=e._events=Object.create(null),e._eventsCount=0):(void 0!==a.newListener&&(e.emit("newListener",r,t.listener?t.listener:t),a=e._events),i=a[r]),void 0===i)i=a[r]=t,++e._eventsCount;else if("function"==typeof i?i=a[r]=o?[t,i]:[i,t]:o?i.unshift(t):i.push(t),(n=s(e))>0&&i.length>n&&!i.warned){i.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(r)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=r,u.count=i.length,l=u,console&&console.warn&&console.warn(l)}return e}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(e,r,t){var o={fired:!1,wrapFn:void 0,target:e,type:r,listener:t},n=u.bind(o);return n.listener=t,o.wrapFn=n,n}function d(e,r,t){var o=e._events;if(void 0===o)return[];var n=o[r];return void 0===n?[]:"function"==typeof n?t?[n.listener||n]:[n]:t?function(e){for(var r=new Array(e.length),t=0;t0&&(i=r[0]),i instanceof Error)throw i;var c=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw c.context=i,c}var s=a[e];if(void 0===s)return!1;if("function"==typeof s)o(s,this,r);else{var l=s.length,u=g(s,l);for(t=0;t=0;a--)if(t[a]===r||t[a].listener===r){i=t[a].listener,n=a;break}if(n<0)return this;0===n?t.shift():function(e,r){for(;r+1=0;o--)this.removeListener(e,r[o]);return this},a.prototype.listeners=function(e){return d(this,e,!0)},a.prototype.rawListeners=function(e){return d(this,e,!1)},a.listenerCount=function(e,r){return"function"==typeof e.listenerCount?e.listenerCount(r):f.call(e,r)},a.prototype.listenerCount=f,a.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},376:function(e,r,t){"use strict";var o=this&&this.__assign||function(){return o=Object.assign||function(e){for(var r,t=1,o=arguments.length;t'"&]/g,nonAscii:/[<>'"&\u0080-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,nonAsciiPrintable:/[<>'"&\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,nonAsciiPrintableOnly:/[\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,extensive:/[\x01-\x0c\x0e-\x1f\x21-\x2c\x2e-\x2f\x3a-\x40\x5b-\x60\x7b-\x7d\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g},u={mode:"specialChars",level:"all",numeric:"decimal"};r.encode=function(e,r){var t=void 0===r?u:r,o=t.mode,n=void 0===o?"specialChars":o,a=t.numeric,p=void 0===a?"decimal":a,d=t.level;if(!e)return"";var f=l[n],g=c[void 0===d?"all":d].characters,m="hexadecimal"===p;return s(e,f,(function(e){var r=g[e];if(!r){var t=e.length>1?i.getCodePoint(e,0):e.charCodeAt(0);r=(m?"&#x"+t.toString(16):"&#"+t)+";"}return r}))};var p={scope:"body",level:"all"},d=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g,f=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g,g={xml:{strict:d,attribute:f,body:n.bodyRegExps.xml},html4:{strict:d,attribute:f,body:n.bodyRegExps.html4},html5:{strict:d,attribute:f,body:n.bodyRegExps.html5}},m=o(o({},g),{all:g.html5}),h=String.fromCharCode,v=h(65533),b={level:"all"};function y(e,r,t,o){var n=e,c=e[e.length-1];if(t&&"="===c)n=e;else if(o&&";"!==c)n=e;else{var s=r[e];if(s)n=s;else if("&"===e[0]&&"#"===e[1]){var l=e[2],u="x"==l||"X"==l?parseInt(e.substr(3),16):parseInt(e.substr(2));n=u>=1114111?v:u>65535?i.fromCodePoint(u):h(a.numericUnicodeMap[u]||u)}}return n}r.decodeEntity=function(e,r){var t=(void 0===r?b:r).level;return e?y(e,c[void 0===t?"all":t].entities,!1,!1):""},r.decode=function(e,r){var t=void 0===r?p:r,o=t.level,n=void 0===o?"all":o,a=t.scope,i=void 0===a?"xml"===n?"strict":"body":a;if(!e)return"";var l=m[n][i],u=c[n].entities,d="attribute"===i,f="strict"===i;return s(e,l,(function(e){return y(e,u,d,f)}))}},340:(e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.bodyRegExps={xml:/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/∉|&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/·|℗|⋇|⪧|⩺|⋗|⦕|⩼|⪆|⥸|⋗|⋛|⪌|≷|≳|⪦|⩹|⋖|⋋|⋉|⥶|⩻|⦖|◃|⊴|◂|∉|⋹̸|⋵̸|∉|⋷|⋶|∌|∌|⋾|⋽|∥|⊠|⨱|⨰|&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g},r.namedReferences={xml:{entities:{"<":"<",">":">",""":'"',"'":"'","&":"&"},characters:{"<":"<",">":">",'"':""","'":"'","&":"&"}},html4:{entities:{"'":"'"," ":" "," ":" ","¡":"¡","¡":"¡","¢":"¢","¢":"¢","£":"£","£":"£","¤":"¤","¤":"¤","¥":"¥","¥":"¥","¦":"¦","¦":"¦","§":"§","§":"§","¨":"¨","¨":"¨","©":"©","©":"©","ª":"ª","ª":"ª","«":"«","«":"«","¬":"¬","¬":"¬","­":"­","­":"­","®":"®","®":"®","¯":"¯","¯":"¯","°":"°","°":"°","±":"±","±":"±","²":"²","²":"²","³":"³","³":"³","´":"´","´":"´","µ":"µ","µ":"µ","¶":"¶","¶":"¶","·":"·","·":"·","¸":"¸","¸":"¸","¹":"¹","¹":"¹","º":"º","º":"º","»":"»","»":"»","¼":"¼","¼":"¼","½":"½","½":"½","¾":"¾","¾":"¾","¿":"¿","¿":"¿","À":"À","À":"À","Á":"Á","Á":"Á","Â":"Â","Â":"Â","Ã":"Ã","Ã":"Ã","Ä":"Ä","Ä":"Ä","Å":"Å","Å":"Å","Æ":"Æ","Æ":"Æ","Ç":"Ç","Ç":"Ç","È":"È","È":"È","É":"É","É":"É","Ê":"Ê","Ê":"Ê","Ë":"Ë","Ë":"Ë","Ì":"Ì","Ì":"Ì","Í":"Í","Í":"Í","Î":"Î","Î":"Î","Ï":"Ï","Ï":"Ï","Ð":"Ð","Ð":"Ð","Ñ":"Ñ","Ñ":"Ñ","Ò":"Ò","Ò":"Ò","Ó":"Ó","Ó":"Ó","Ô":"Ô","Ô":"Ô","Õ":"Õ","Õ":"Õ","Ö":"Ö","Ö":"Ö","×":"×","×":"×","Ø":"Ø","Ø":"Ø","Ù":"Ù","Ù":"Ù","Ú":"Ú","Ú":"Ú","Û":"Û","Û":"Û","Ü":"Ü","Ü":"Ü","Ý":"Ý","Ý":"Ý","Þ":"Þ","Þ":"Þ","ß":"ß","ß":"ß","à":"à","à":"à","á":"á","á":"á","â":"â","â":"â","ã":"ã","ã":"ã","ä":"ä","ä":"ä","å":"å","å":"å","æ":"æ","æ":"æ","ç":"ç","ç":"ç","è":"è","è":"è","é":"é","é":"é","ê":"ê","ê":"ê","ë":"ë","ë":"ë","ì":"ì","ì":"ì","í":"í","í":"í","î":"î","î":"î","ï":"ï","ï":"ï","ð":"ð","ð":"ð","ñ":"ñ","ñ":"ñ","ò":"ò","ò":"ò","ó":"ó","ó":"ó","ô":"ô","ô":"ô","õ":"õ","õ":"õ","ö":"ö","ö":"ö","÷":"÷","÷":"÷","ø":"ø","ø":"ø","ù":"ù","ù":"ù","ú":"ú","ú":"ú","û":"û","û":"û","ü":"ü","ü":"ü","ý":"ý","ý":"ý","þ":"þ","þ":"þ","ÿ":"ÿ","ÿ":"ÿ",""":'"',""":'"',"&":"&","&":"&","<":"<","<":"<",">":">",">":">","Œ":"Œ","œ":"œ","Š":"Š","š":"š","Ÿ":"Ÿ","ˆ":"ˆ","˜":"˜"," ":" "," ":" "," ":" ","‌":"‌","‍":"‍","‎":"‎","‏":"‏","–":"–","—":"—","‘":"‘","’":"’","‚":"‚","“":"“","”":"”","„":"„","†":"†","‡":"‡","‰":"‰","‹":"‹","›":"›","€":"€","ƒ":"ƒ","Α":"Α","Β":"Β","Γ":"Γ","Δ":"Δ","Ε":"Ε","Ζ":"Ζ","Η":"Η","Θ":"Θ","Ι":"Ι","Κ":"Κ","Λ":"Λ","Μ":"Μ","Ν":"Ν","Ξ":"Ξ","Ο":"Ο","Π":"Π","Ρ":"Ρ","Σ":"Σ","Τ":"Τ","Υ":"Υ","Φ":"Φ","Χ":"Χ","Ψ":"Ψ","Ω":"Ω","α":"α","β":"β","γ":"γ","δ":"δ","ε":"ε","ζ":"ζ","η":"η","θ":"θ","ι":"ι","κ":"κ","λ":"λ","μ":"μ","ν":"ν","ξ":"ξ","ο":"ο","π":"π","ρ":"ρ","ς":"ς","σ":"σ","τ":"τ","υ":"υ","φ":"φ","χ":"χ","ψ":"ψ","ω":"ω","ϑ":"ϑ","ϒ":"ϒ","ϖ":"ϖ","•":"•","…":"…","′":"′","″":"″","‾":"‾","⁄":"⁄","℘":"℘","ℑ":"ℑ","ℜ":"ℜ","™":"™","ℵ":"ℵ","←":"←","↑":"↑","→":"→","↓":"↓","↔":"↔","↵":"↵","⇐":"⇐","⇑":"⇑","⇒":"⇒","⇓":"⇓","⇔":"⇔","∀":"∀","∂":"∂","∃":"∃","∅":"∅","∇":"∇","∈":"∈","∉":"∉","∋":"∋","∏":"∏","∑":"∑","−":"−","∗":"∗","√":"√","∝":"∝","∞":"∞","∠":"∠","∧":"∧","∨":"∨","∩":"∩","∪":"∪","∫":"∫","∴":"∴","∼":"∼","≅":"≅","≈":"≈","≠":"≠","≡":"≡","≤":"≤","≥":"≥","⊂":"⊂","⊃":"⊃","⊄":"⊄","⊆":"⊆","⊇":"⊇","⊕":"⊕","⊗":"⊗","⊥":"⊥","⋅":"⋅","⌈":"⌈","⌉":"⌉","⌊":"⌊","⌋":"⌋","⟨":"〈","⟩":"〉","◊":"◊","♠":"♠","♣":"♣","♥":"♥","♦":"♦"},characters:{"'":"'"," ":" ","¡":"¡","¢":"¢","£":"£","¤":"¤","¥":"¥","¦":"¦","§":"§","¨":"¨","©":"©",ª:"ª","«":"«","¬":"¬","­":"­","®":"®","¯":"¯","°":"°","±":"±","²":"²","³":"³","´":"´",µ:"µ","¶":"¶","·":"·","¸":"¸","¹":"¹",º:"º","»":"»","¼":"¼","½":"½","¾":"¾","¿":"¿",À:"À",Á:"Á",Â:"Â",Ã:"Ã",Ä:"Ä",Å:"Å",Æ:"Æ",Ç:"Ç",È:"È",É:"É",Ê:"Ê",Ë:"Ë",Ì:"Ì",Í:"Í",Î:"Î",Ï:"Ï",Ð:"Ð",Ñ:"Ñ",Ò:"Ò",Ó:"Ó",Ô:"Ô",Õ:"Õ",Ö:"Ö","×":"×",Ø:"Ø",Ù:"Ù",Ú:"Ú",Û:"Û",Ü:"Ü",Ý:"Ý",Þ:"Þ",ß:"ß",à:"à",á:"á",â:"â",ã:"ã",ä:"ä",å:"å",æ:"æ",ç:"ç",è:"è",é:"é",ê:"ê",ë:"ë",ì:"ì",í:"í",î:"î",ï:"ï",ð:"ð",ñ:"ñ",ò:"ò",ó:"ó",ô:"ô",õ:"õ",ö:"ö","÷":"÷",ø:"ø",ù:"ù",ú:"ú",û:"û",ü:"ü",ý:"ý",þ:"þ",ÿ:"ÿ",'"':""","&":"&","<":"<",">":">",Œ:"Œ",œ:"œ",Š:"Š",š:"š",Ÿ:"Ÿ",ˆ:"ˆ","˜":"˜"," ":" "," ":" "," ":" ","‌":"‌","‍":"‍","‎":"‎","‏":"‏","–":"–","—":"—","‘":"‘","’":"’","‚":"‚","“":"“","”":"”","„":"„","†":"†","‡":"‡","‰":"‰","‹":"‹","›":"›","€":"€",ƒ:"ƒ",Α:"Α",Β:"Β",Γ:"Γ",Δ:"Δ",Ε:"Ε",Ζ:"Ζ",Η:"Η",Θ:"Θ",Ι:"Ι",Κ:"Κ",Λ:"Λ",Μ:"Μ",Ν:"Ν",Ξ:"Ξ",Ο:"Ο",Π:"Π",Ρ:"Ρ",Σ:"Σ",Τ:"Τ",Υ:"Υ",Φ:"Φ",Χ:"Χ",Ψ:"Ψ",Ω:"Ω",α:"α",β:"β",γ:"γ",δ:"δ",ε:"ε",ζ:"ζ",η:"η",θ:"θ",ι:"ι",κ:"κ",λ:"λ",μ:"μ",ν:"ν",ξ:"ξ",ο:"ο",π:"π",ρ:"ρ",ς:"ς",σ:"σ",τ:"τ",υ:"υ",φ:"φ",χ:"χ",ψ:"ψ",ω:"ω",ϑ:"ϑ",ϒ:"ϒ",ϖ:"ϖ","•":"•","…":"…","′":"′","″":"″","‾":"‾","⁄":"⁄",℘:"℘",ℑ:"ℑ",ℜ:"ℜ","™":"™",ℵ:"ℵ","←":"←","↑":"↑","→":"→","↓":"↓","↔":"↔","↵":"↵","⇐":"⇐","⇑":"⇑","⇒":"⇒","⇓":"⇓","⇔":"⇔","∀":"∀","∂":"∂","∃":"∃","∅":"∅","∇":"∇","∈":"∈","∉":"∉","∋":"∋","∏":"∏","∑":"∑","−":"−","∗":"∗","√":"√","∝":"∝","∞":"∞","∠":"∠","∧":"∧","∨":"∨","∩":"∩","∪":"∪","∫":"∫","∴":"∴","∼":"∼","≅":"≅","≈":"≈","≠":"≠","≡":"≡","≤":"≤","≥":"≥","⊂":"⊂","⊃":"⊃","⊄":"⊄","⊆":"⊆","⊇":"⊇","⊕":"⊕","⊗":"⊗","⊥":"⊥","⋅":"⋅","⌈":"⌈","⌉":"⌉","⌊":"⌊","⌋":"⌋","〈":"⟨","〉":"⟩","◊":"◊","♠":"♠","♣":"♣","♥":"♥","♦":"♦"}},html5:{entities:{"Æ":"Æ","Æ":"Æ","&":"&","&":"&","Á":"Á","Á":"Á","Ă":"Ă","Â":"Â","Â":"Â","А":"А","𝔄":"𝔄","À":"À","À":"À","Α":"Α","Ā":"Ā","⩓":"⩓","Ą":"Ą","𝔸":"𝔸","⁡":"⁡","Å":"Å","Å":"Å","𝒜":"𝒜","≔":"≔","Ã":"Ã","Ã":"Ã","Ä":"Ä","Ä":"Ä","∖":"∖","⫧":"⫧","⌆":"⌆","Б":"Б","∵":"∵","ℬ":"ℬ","Β":"Β","𝔅":"𝔅","𝔹":"𝔹","˘":"˘","ℬ":"ℬ","≎":"≎","Ч":"Ч","©":"©","©":"©","Ć":"Ć","⋒":"⋒","ⅅ":"ⅅ","ℭ":"ℭ","Č":"Č","Ç":"Ç","Ç":"Ç","Ĉ":"Ĉ","∰":"∰","Ċ":"Ċ","¸":"¸","·":"·","ℭ":"ℭ","Χ":"Χ","⊙":"⊙","⊖":"⊖","⊕":"⊕","⊗":"⊗","∲":"∲","”":"”","’":"’","∷":"∷","⩴":"⩴","≡":"≡","∯":"∯","∮":"∮","ℂ":"ℂ","∐":"∐","∳":"∳","⨯":"⨯","𝒞":"𝒞","⋓":"⋓","≍":"≍","ⅅ":"ⅅ","⤑":"⤑","Ђ":"Ђ","Ѕ":"Ѕ","Џ":"Џ","‡":"‡","↡":"↡","⫤":"⫤","Ď":"Ď","Д":"Д","∇":"∇","Δ":"Δ","𝔇":"𝔇","´":"´","˙":"˙","˝":"˝","`":"`","˜":"˜","⋄":"⋄","ⅆ":"ⅆ","𝔻":"𝔻","¨":"¨","⃜":"⃜","≐":"≐","∯":"∯","¨":"¨","⇓":"⇓","⇐":"⇐","⇔":"⇔","⫤":"⫤","⟸":"⟸","⟺":"⟺","⟹":"⟹","⇒":"⇒","⊨":"⊨","⇑":"⇑","⇕":"⇕","∥":"∥","↓":"↓","⤓":"⤓","⇵":"⇵","̑":"̑","⥐":"⥐","⥞":"⥞","↽":"↽","⥖":"⥖","⥟":"⥟","⇁":"⇁","⥗":"⥗","⊤":"⊤","↧":"↧","⇓":"⇓","𝒟":"𝒟","Đ":"Đ","Ŋ":"Ŋ","Ð":"Ð","Ð":"Ð","É":"É","É":"É","Ě":"Ě","Ê":"Ê","Ê":"Ê","Э":"Э","Ė":"Ė","𝔈":"𝔈","È":"È","È":"È","∈":"∈","Ē":"Ē","◻":"◻","▫":"▫","Ę":"Ę","𝔼":"𝔼","Ε":"Ε","⩵":"⩵","≂":"≂","⇌":"⇌","ℰ":"ℰ","⩳":"⩳","Η":"Η","Ë":"Ë","Ë":"Ë","∃":"∃","ⅇ":"ⅇ","Ф":"Ф","𝔉":"𝔉","◼":"◼","▪":"▪","𝔽":"𝔽","∀":"∀","ℱ":"ℱ","ℱ":"ℱ","Ѓ":"Ѓ",">":">",">":">","Γ":"Γ","Ϝ":"Ϝ","Ğ":"Ğ","Ģ":"Ģ","Ĝ":"Ĝ","Г":"Г","Ġ":"Ġ","𝔊":"𝔊","⋙":"⋙","𝔾":"𝔾","≥":"≥","⋛":"⋛","≧":"≧","⪢":"⪢","≷":"≷","⩾":"⩾","≳":"≳","𝒢":"𝒢","≫":"≫","Ъ":"Ъ","ˇ":"ˇ","^":"^","Ĥ":"Ĥ","ℌ":"ℌ","ℋ":"ℋ","ℍ":"ℍ","─":"─","ℋ":"ℋ","Ħ":"Ħ","≎":"≎","≏":"≏","Е":"Е","IJ":"IJ","Ё":"Ё","Í":"Í","Í":"Í","Î":"Î","Î":"Î","И":"И","İ":"İ","ℑ":"ℑ","Ì":"Ì","Ì":"Ì","ℑ":"ℑ","Ī":"Ī","ⅈ":"ⅈ","⇒":"⇒","∬":"∬","∫":"∫","⋂":"⋂","⁣":"⁣","⁢":"⁢","Į":"Į","𝕀":"𝕀","Ι":"Ι","ℐ":"ℐ","Ĩ":"Ĩ","І":"І","Ï":"Ï","Ï":"Ï","Ĵ":"Ĵ","Й":"Й","𝔍":"𝔍","𝕁":"𝕁","𝒥":"𝒥","Ј":"Ј","Є":"Є","Х":"Х","Ќ":"Ќ","Κ":"Κ","Ķ":"Ķ","К":"К","𝔎":"𝔎","𝕂":"𝕂","𝒦":"𝒦","Љ":"Љ","<":"<","<":"<","Ĺ":"Ĺ","Λ":"Λ","⟪":"⟪","ℒ":"ℒ","↞":"↞","Ľ":"Ľ","Ļ":"Ļ","Л":"Л","⟨":"⟨","←":"←","⇤":"⇤","⇆":"⇆","⌈":"⌈","⟦":"⟦","⥡":"⥡","⇃":"⇃","⥙":"⥙","⌊":"⌊","↔":"↔","⥎":"⥎","⊣":"⊣","↤":"↤","⥚":"⥚","⊲":"⊲","⧏":"⧏","⊴":"⊴","⥑":"⥑","⥠":"⥠","↿":"↿","⥘":"⥘","↼":"↼","⥒":"⥒","⇐":"⇐","⇔":"⇔","⋚":"⋚","≦":"≦","≶":"≶","⪡":"⪡","⩽":"⩽","≲":"≲","𝔏":"𝔏","⋘":"⋘","⇚":"⇚","Ŀ":"Ŀ","⟵":"⟵","⟷":"⟷","⟶":"⟶","⟸":"⟸","⟺":"⟺","⟹":"⟹","𝕃":"𝕃","↙":"↙","↘":"↘","ℒ":"ℒ","↰":"↰","Ł":"Ł","≪":"≪","⤅":"⤅","М":"М"," ":" ","ℳ":"ℳ","𝔐":"𝔐","∓":"∓","𝕄":"𝕄","ℳ":"ℳ","Μ":"Μ","Њ":"Њ","Ń":"Ń","Ň":"Ň","Ņ":"Ņ","Н":"Н","​":"​","​":"​","​":"​","​":"​","≫":"≫","≪":"≪"," ":"\n","𝔑":"𝔑","⁠":"⁠"," ":" ","ℕ":"ℕ","⫬":"⫬","≢":"≢","≭":"≭","∦":"∦","∉":"∉","≠":"≠","≂̸":"≂̸","∄":"∄","≯":"≯","≱":"≱","≧̸":"≧̸","≫̸":"≫̸","≹":"≹","⩾̸":"⩾̸","≵":"≵","≎̸":"≎̸","≏̸":"≏̸","⋪":"⋪","⧏̸":"⧏̸","⋬":"⋬","≮":"≮","≰":"≰","≸":"≸","≪̸":"≪̸","⩽̸":"⩽̸","≴":"≴","⪢̸":"⪢̸","⪡̸":"⪡̸","⊀":"⊀","⪯̸":"⪯̸","⋠":"⋠","∌":"∌","⋫":"⋫","⧐̸":"⧐̸","⋭":"⋭","⊏̸":"⊏̸","⋢":"⋢","⊐̸":"⊐̸","⋣":"⋣","⊂⃒":"⊂⃒","⊈":"⊈","⊁":"⊁","⪰̸":"⪰̸","⋡":"⋡","≿̸":"≿̸","⊃⃒":"⊃⃒","⊉":"⊉","≁":"≁","≄":"≄","≇":"≇","≉":"≉","∤":"∤","𝒩":"𝒩","Ñ":"Ñ","Ñ":"Ñ","Ν":"Ν","Œ":"Œ","Ó":"Ó","Ó":"Ó","Ô":"Ô","Ô":"Ô","О":"О","Ő":"Ő","𝔒":"𝔒","Ò":"Ò","Ò":"Ò","Ō":"Ō","Ω":"Ω","Ο":"Ο","𝕆":"𝕆","“":"“","‘":"‘","⩔":"⩔","𝒪":"𝒪","Ø":"Ø","Ø":"Ø","Õ":"Õ","Õ":"Õ","⨷":"⨷","Ö":"Ö","Ö":"Ö","‾":"‾","⏞":"⏞","⎴":"⎴","⏜":"⏜","∂":"∂","П":"П","𝔓":"𝔓","Φ":"Φ","Π":"Π","±":"±","ℌ":"ℌ","ℙ":"ℙ","⪻":"⪻","≺":"≺","⪯":"⪯","≼":"≼","≾":"≾","″":"″","∏":"∏","∷":"∷","∝":"∝","𝒫":"𝒫","Ψ":"Ψ",""":'"',""":'"',"𝔔":"𝔔","ℚ":"ℚ","𝒬":"𝒬","⤐":"⤐","®":"®","®":"®","Ŕ":"Ŕ","⟫":"⟫","↠":"↠","⤖":"⤖","Ř":"Ř","Ŗ":"Ŗ","Р":"Р","ℜ":"ℜ","∋":"∋","⇋":"⇋","⥯":"⥯","ℜ":"ℜ","Ρ":"Ρ","⟩":"⟩","→":"→","⇥":"⇥","⇄":"⇄","⌉":"⌉","⟧":"⟧","⥝":"⥝","⇂":"⇂","⥕":"⥕","⌋":"⌋","⊢":"⊢","↦":"↦","⥛":"⥛","⊳":"⊳","⧐":"⧐","⊵":"⊵","⥏":"⥏","⥜":"⥜","↾":"↾","⥔":"⥔","⇀":"⇀","⥓":"⥓","⇒":"⇒","ℝ":"ℝ","⥰":"⥰","⇛":"⇛","ℛ":"ℛ","↱":"↱","⧴":"⧴","Щ":"Щ","Ш":"Ш","Ь":"Ь","Ś":"Ś","⪼":"⪼","Š":"Š","Ş":"Ş","Ŝ":"Ŝ","С":"С","𝔖":"𝔖","↓":"↓","←":"←","→":"→","↑":"↑","Σ":"Σ","∘":"∘","𝕊":"𝕊","√":"√","□":"□","⊓":"⊓","⊏":"⊏","⊑":"⊑","⊐":"⊐","⊒":"⊒","⊔":"⊔","𝒮":"𝒮","⋆":"⋆","⋐":"⋐","⋐":"⋐","⊆":"⊆","≻":"≻","⪰":"⪰","≽":"≽","≿":"≿","∋":"∋","∑":"∑","⋑":"⋑","⊃":"⊃","⊇":"⊇","⋑":"⋑","Þ":"Þ","Þ":"Þ","™":"™","Ћ":"Ћ","Ц":"Ц"," ":"\t","Τ":"Τ","Ť":"Ť","Ţ":"Ţ","Т":"Т","𝔗":"𝔗","∴":"∴","Θ":"Θ","  ":"  "," ":" ","∼":"∼","≃":"≃","≅":"≅","≈":"≈","𝕋":"𝕋","⃛":"⃛","𝒯":"𝒯","Ŧ":"Ŧ","Ú":"Ú","Ú":"Ú","↟":"↟","⥉":"⥉","Ў":"Ў","Ŭ":"Ŭ","Û":"Û","Û":"Û","У":"У","Ű":"Ű","𝔘":"𝔘","Ù":"Ù","Ù":"Ù","Ū":"Ū","_":"_","⏟":"⏟","⎵":"⎵","⏝":"⏝","⋃":"⋃","⊎":"⊎","Ų":"Ų","𝕌":"𝕌","↑":"↑","⤒":"⤒","⇅":"⇅","↕":"↕","⥮":"⥮","⊥":"⊥","↥":"↥","⇑":"⇑","⇕":"⇕","↖":"↖","↗":"↗","ϒ":"ϒ","Υ":"Υ","Ů":"Ů","𝒰":"𝒰","Ũ":"Ũ","Ü":"Ü","Ü":"Ü","⊫":"⊫","⫫":"⫫","В":"В","⊩":"⊩","⫦":"⫦","⋁":"⋁","‖":"‖","‖":"‖","∣":"∣","|":"|","❘":"❘","≀":"≀"," ":" ","𝔙":"𝔙","𝕍":"𝕍","𝒱":"𝒱","⊪":"⊪","Ŵ":"Ŵ","⋀":"⋀","𝔚":"𝔚","𝕎":"𝕎","𝒲":"𝒲","𝔛":"𝔛","Ξ":"Ξ","𝕏":"𝕏","𝒳":"𝒳","Я":"Я","Ї":"Ї","Ю":"Ю","Ý":"Ý","Ý":"Ý","Ŷ":"Ŷ","Ы":"Ы","𝔜":"𝔜","𝕐":"𝕐","𝒴":"𝒴","Ÿ":"Ÿ","Ж":"Ж","Ź":"Ź","Ž":"Ž","З":"З","Ż":"Ż","​":"​","Ζ":"Ζ","ℨ":"ℨ","ℤ":"ℤ","𝒵":"𝒵","á":"á","á":"á","ă":"ă","∾":"∾","∾̳":"∾̳","∿":"∿","â":"â","â":"â","´":"´","´":"´","а":"а","æ":"æ","æ":"æ","⁡":"⁡","𝔞":"𝔞","à":"à","à":"à","ℵ":"ℵ","ℵ":"ℵ","α":"α","ā":"ā","⨿":"⨿","&":"&","&":"&","∧":"∧","⩕":"⩕","⩜":"⩜","⩘":"⩘","⩚":"⩚","∠":"∠","⦤":"⦤","∠":"∠","∡":"∡","⦨":"⦨","⦩":"⦩","⦪":"⦪","⦫":"⦫","⦬":"⦬","⦭":"⦭","⦮":"⦮","⦯":"⦯","∟":"∟","⊾":"⊾","⦝":"⦝","∢":"∢","Å":"Å","⍼":"⍼","ą":"ą","𝕒":"𝕒","≈":"≈","⩰":"⩰","⩯":"⩯","≊":"≊","≋":"≋","'":"'","≈":"≈","≊":"≊","å":"å","å":"å","𝒶":"𝒶","*":"*","≈":"≈","≍":"≍","ã":"ã","ã":"ã","ä":"ä","ä":"ä","∳":"∳","⨑":"⨑","⫭":"⫭","≌":"≌","϶":"϶","‵":"‵","∽":"∽","⋍":"⋍","⊽":"⊽","⌅":"⌅","⌅":"⌅","⎵":"⎵","⎶":"⎶","≌":"≌","б":"б","„":"„","∵":"∵","∵":"∵","⦰":"⦰","϶":"϶","ℬ":"ℬ","β":"β","ℶ":"ℶ","≬":"≬","𝔟":"𝔟","⋂":"⋂","◯":"◯","⋃":"⋃","⨀":"⨀","⨁":"⨁","⨂":"⨂","⨆":"⨆","★":"★","▽":"▽","△":"△","⨄":"⨄","⋁":"⋁","⋀":"⋀","⤍":"⤍","⧫":"⧫","▪":"▪","▴":"▴","▾":"▾","◂":"◂","▸":"▸","␣":"␣","▒":"▒","░":"░","▓":"▓","█":"█","=⃥":"=⃥","≡⃥":"≡⃥","⌐":"⌐","𝕓":"𝕓","⊥":"⊥","⊥":"⊥","⋈":"⋈","╗":"╗","╔":"╔","╖":"╖","╓":"╓","═":"═","╦":"╦","╩":"╩","╤":"╤","╧":"╧","╝":"╝","╚":"╚","╜":"╜","╙":"╙","║":"║","╬":"╬","╣":"╣","╠":"╠","╫":"╫","╢":"╢","╟":"╟","⧉":"⧉","╕":"╕","╒":"╒","┐":"┐","┌":"┌","─":"─","╥":"╥","╨":"╨","┬":"┬","┴":"┴","⊟":"⊟","⊞":"⊞","⊠":"⊠","╛":"╛","╘":"╘","┘":"┘","└":"└","│":"│","╪":"╪","╡":"╡","╞":"╞","┼":"┼","┤":"┤","├":"├","‵":"‵","˘":"˘","¦":"¦","¦":"¦","𝒷":"𝒷","⁏":"⁏","∽":"∽","⋍":"⋍","\":"\\","⧅":"⧅","⟈":"⟈","•":"•","•":"•","≎":"≎","⪮":"⪮","≏":"≏","≏":"≏","ć":"ć","∩":"∩","⩄":"⩄","⩉":"⩉","⩋":"⩋","⩇":"⩇","⩀":"⩀","∩︀":"∩︀","⁁":"⁁","ˇ":"ˇ","⩍":"⩍","č":"č","ç":"ç","ç":"ç","ĉ":"ĉ","⩌":"⩌","⩐":"⩐","ċ":"ċ","¸":"¸","¸":"¸","⦲":"⦲","¢":"¢","¢":"¢","·":"·","𝔠":"𝔠","ч":"ч","✓":"✓","✓":"✓","χ":"χ","○":"○","⧃":"⧃","ˆ":"ˆ","≗":"≗","↺":"↺","↻":"↻","®":"®","Ⓢ":"Ⓢ","⊛":"⊛","⊚":"⊚","⊝":"⊝","≗":"≗","⨐":"⨐","⫯":"⫯","⧂":"⧂","♣":"♣","♣":"♣",":":":","≔":"≔","≔":"≔",",":",","@":"@","∁":"∁","∘":"∘","∁":"∁","ℂ":"ℂ","≅":"≅","⩭":"⩭","∮":"∮","𝕔":"𝕔","∐":"∐","©":"©","©":"©","℗":"℗","↵":"↵","✗":"✗","𝒸":"𝒸","⫏":"⫏","⫑":"⫑","⫐":"⫐","⫒":"⫒","⋯":"⋯","⤸":"⤸","⤵":"⤵","⋞":"⋞","⋟":"⋟","↶":"↶","⤽":"⤽","∪":"∪","⩈":"⩈","⩆":"⩆","⩊":"⩊","⊍":"⊍","⩅":"⩅","∪︀":"∪︀","↷":"↷","⤼":"⤼","⋞":"⋞","⋟":"⋟","⋎":"⋎","⋏":"⋏","¤":"¤","¤":"¤","↶":"↶","↷":"↷","⋎":"⋎","⋏":"⋏","∲":"∲","∱":"∱","⌭":"⌭","⇓":"⇓","⥥":"⥥","†":"†","ℸ":"ℸ","↓":"↓","‐":"‐","⊣":"⊣","⤏":"⤏","˝":"˝","ď":"ď","д":"д","ⅆ":"ⅆ","‡":"‡","⇊":"⇊","⩷":"⩷","°":"°","°":"°","δ":"δ","⦱":"⦱","⥿":"⥿","𝔡":"𝔡","⇃":"⇃","⇂":"⇂","⋄":"⋄","⋄":"⋄","♦":"♦","♦":"♦","¨":"¨","ϝ":"ϝ","⋲":"⋲","÷":"÷","÷":"÷","÷":"÷","⋇":"⋇","⋇":"⋇","ђ":"ђ","⌞":"⌞","⌍":"⌍","$":"$","𝕕":"𝕕","˙":"˙","≐":"≐","≑":"≑","∸":"∸","∔":"∔","⊡":"⊡","⌆":"⌆","↓":"↓","⇊":"⇊","⇃":"⇃","⇂":"⇂","⤐":"⤐","⌟":"⌟","⌌":"⌌","𝒹":"𝒹","ѕ":"ѕ","⧶":"⧶","đ":"đ","⋱":"⋱","▿":"▿","▾":"▾","⇵":"⇵","⥯":"⥯","⦦":"⦦","џ":"џ","⟿":"⟿","⩷":"⩷","≑":"≑","é":"é","é":"é","⩮":"⩮","ě":"ě","≖":"≖","ê":"ê","ê":"ê","≕":"≕","э":"э","ė":"ė","ⅇ":"ⅇ","≒":"≒","𝔢":"𝔢","⪚":"⪚","è":"è","è":"è","⪖":"⪖","⪘":"⪘","⪙":"⪙","⏧":"⏧","ℓ":"ℓ","⪕":"⪕","⪗":"⪗","ē":"ē","∅":"∅","∅":"∅","∅":"∅"," ":" "," ":" "," ":" ","ŋ":"ŋ"," ":" ","ę":"ę","𝕖":"𝕖","⋕":"⋕","⧣":"⧣","⩱":"⩱","ε":"ε","ε":"ε","ϵ":"ϵ","≖":"≖","≕":"≕","≂":"≂","⪖":"⪖","⪕":"⪕","=":"=","≟":"≟","≡":"≡","⩸":"⩸","⧥":"⧥","≓":"≓","⥱":"⥱","ℯ":"ℯ","≐":"≐","≂":"≂","η":"η","ð":"ð","ð":"ð","ë":"ë","ë":"ë","€":"€","!":"!","∃":"∃","ℰ":"ℰ","ⅇ":"ⅇ","≒":"≒","ф":"ф","♀":"♀","ffi":"ffi","ff":"ff","ffl":"ffl","𝔣":"𝔣","fi":"fi","fj":"fj","♭":"♭","fl":"fl","▱":"▱","ƒ":"ƒ","𝕗":"𝕗","∀":"∀","⋔":"⋔","⫙":"⫙","⨍":"⨍","½":"½","½":"½","⅓":"⅓","¼":"¼","¼":"¼","⅕":"⅕","⅙":"⅙","⅛":"⅛","⅔":"⅔","⅖":"⅖","¾":"¾","¾":"¾","⅗":"⅗","⅜":"⅜","⅘":"⅘","⅚":"⅚","⅝":"⅝","⅞":"⅞","⁄":"⁄","⌢":"⌢","𝒻":"𝒻","≧":"≧","⪌":"⪌","ǵ":"ǵ","γ":"γ","ϝ":"ϝ","⪆":"⪆","ğ":"ğ","ĝ":"ĝ","г":"г","ġ":"ġ","≥":"≥","⋛":"⋛","≥":"≥","≧":"≧","⩾":"⩾","⩾":"⩾","⪩":"⪩","⪀":"⪀","⪂":"⪂","⪄":"⪄","⋛︀":"⋛︀","⪔":"⪔","𝔤":"𝔤","≫":"≫","⋙":"⋙","ℷ":"ℷ","ѓ":"ѓ","≷":"≷","⪒":"⪒","⪥":"⪥","⪤":"⪤","≩":"≩","⪊":"⪊","⪊":"⪊","⪈":"⪈","⪈":"⪈","≩":"≩","⋧":"⋧","𝕘":"𝕘","`":"`","ℊ":"ℊ","≳":"≳","⪎":"⪎","⪐":"⪐",">":">",">":">","⪧":"⪧","⩺":"⩺","⋗":"⋗","⦕":"⦕","⩼":"⩼","⪆":"⪆","⥸":"⥸","⋗":"⋗","⋛":"⋛","⪌":"⪌","≷":"≷","≳":"≳","≩︀":"≩︀","≩︀":"≩︀","⇔":"⇔"," ":" ","½":"½","ℋ":"ℋ","ъ":"ъ","↔":"↔","⥈":"⥈","↭":"↭","ℏ":"ℏ","ĥ":"ĥ","♥":"♥","♥":"♥","…":"…","⊹":"⊹","𝔥":"𝔥","⤥":"⤥","⤦":"⤦","⇿":"⇿","∻":"∻","↩":"↩","↪":"↪","𝕙":"𝕙","―":"―","𝒽":"𝒽","ℏ":"ℏ","ħ":"ħ","⁃":"⁃","‐":"‐","í":"í","í":"í","⁣":"⁣","î":"î","î":"î","и":"и","е":"е","¡":"¡","¡":"¡","⇔":"⇔","𝔦":"𝔦","ì":"ì","ì":"ì","ⅈ":"ⅈ","⨌":"⨌","∭":"∭","⧜":"⧜","℩":"℩","ij":"ij","ī":"ī","ℑ":"ℑ","ℐ":"ℐ","ℑ":"ℑ","ı":"ı","⊷":"⊷","Ƶ":"Ƶ","∈":"∈","℅":"℅","∞":"∞","⧝":"⧝","ı":"ı","∫":"∫","⊺":"⊺","ℤ":"ℤ","⊺":"⊺","⨗":"⨗","⨼":"⨼","ё":"ё","į":"į","𝕚":"𝕚","ι":"ι","⨼":"⨼","¿":"¿","¿":"¿","𝒾":"𝒾","∈":"∈","⋹":"⋹","⋵":"⋵","⋴":"⋴","⋳":"⋳","∈":"∈","⁢":"⁢","ĩ":"ĩ","і":"і","ï":"ï","ï":"ï","ĵ":"ĵ","й":"й","𝔧":"𝔧","ȷ":"ȷ","𝕛":"𝕛","𝒿":"𝒿","ј":"ј","є":"є","κ":"κ","ϰ":"ϰ","ķ":"ķ","к":"к","𝔨":"𝔨","ĸ":"ĸ","х":"х","ќ":"ќ","𝕜":"𝕜","𝓀":"𝓀","⇚":"⇚","⇐":"⇐","⤛":"⤛","⤎":"⤎","≦":"≦","⪋":"⪋","⥢":"⥢","ĺ":"ĺ","⦴":"⦴","ℒ":"ℒ","λ":"λ","⟨":"⟨","⦑":"⦑","⟨":"⟨","⪅":"⪅","«":"«","«":"«","←":"←","⇤":"⇤","⤟":"⤟","⤝":"⤝","↩":"↩","↫":"↫","⤹":"⤹","⥳":"⥳","↢":"↢","⪫":"⪫","⤙":"⤙","⪭":"⪭","⪭︀":"⪭︀","⤌":"⤌","❲":"❲","{":"{","[":"[","⦋":"⦋","⦏":"⦏","⦍":"⦍","ľ":"ľ","ļ":"ļ","⌈":"⌈","{":"{","л":"л","⤶":"⤶","“":"“","„":"„","⥧":"⥧","⥋":"⥋","↲":"↲","≤":"≤","←":"←","↢":"↢","↽":"↽","↼":"↼","⇇":"⇇","↔":"↔","⇆":"⇆","⇋":"⇋","↭":"↭","⋋":"⋋","⋚":"⋚","≤":"≤","≦":"≦","⩽":"⩽","⩽":"⩽","⪨":"⪨","⩿":"⩿","⪁":"⪁","⪃":"⪃","⋚︀":"⋚︀","⪓":"⪓","⪅":"⪅","⋖":"⋖","⋚":"⋚","⪋":"⪋","≶":"≶","≲":"≲","⥼":"⥼","⌊":"⌊","𝔩":"𝔩","≶":"≶","⪑":"⪑","↽":"↽","↼":"↼","⥪":"⥪","▄":"▄","љ":"љ","≪":"≪","⇇":"⇇","⌞":"⌞","⥫":"⥫","◺":"◺","ŀ":"ŀ","⎰":"⎰","⎰":"⎰","≨":"≨","⪉":"⪉","⪉":"⪉","⪇":"⪇","⪇":"⪇","≨":"≨","⋦":"⋦","⟬":"⟬","⇽":"⇽","⟦":"⟦","⟵":"⟵","⟷":"⟷","⟼":"⟼","⟶":"⟶","↫":"↫","↬":"↬","⦅":"⦅","𝕝":"𝕝","⨭":"⨭","⨴":"⨴","∗":"∗","_":"_","◊":"◊","◊":"◊","⧫":"⧫","(":"(","⦓":"⦓","⇆":"⇆","⌟":"⌟","⇋":"⇋","⥭":"⥭","‎":"‎","⊿":"⊿","‹":"‹","𝓁":"𝓁","↰":"↰","≲":"≲","⪍":"⪍","⪏":"⪏","[":"[","‘":"‘","‚":"‚","ł":"ł","<":"<","<":"<","⪦":"⪦","⩹":"⩹","⋖":"⋖","⋋":"⋋","⋉":"⋉","⥶":"⥶","⩻":"⩻","⦖":"⦖","◃":"◃","⊴":"⊴","◂":"◂","⥊":"⥊","⥦":"⥦","≨︀":"≨︀","≨︀":"≨︀","∺":"∺","¯":"¯","¯":"¯","♂":"♂","✠":"✠","✠":"✠","↦":"↦","↦":"↦","↧":"↧","↤":"↤","↥":"↥","▮":"▮","⨩":"⨩","м":"м","—":"—","∡":"∡","𝔪":"𝔪","℧":"℧","µ":"µ","µ":"µ","∣":"∣","*":"*","⫰":"⫰","·":"·","·":"·","−":"−","⊟":"⊟","∸":"∸","⨪":"⨪","⫛":"⫛","…":"…","∓":"∓","⊧":"⊧","𝕞":"𝕞","∓":"∓","𝓂":"𝓂","∾":"∾","μ":"μ","⊸":"⊸","⊸":"⊸","⋙̸":"⋙̸","≫⃒":"≫⃒","≫̸":"≫̸","⇍":"⇍","⇎":"⇎","⋘̸":"⋘̸","≪⃒":"≪⃒","≪̸":"≪̸","⇏":"⇏","⊯":"⊯","⊮":"⊮","∇":"∇","ń":"ń","∠⃒":"∠⃒","≉":"≉","⩰̸":"⩰̸","≋̸":"≋̸","ʼn":"ʼn","≉":"≉","♮":"♮","♮":"♮","ℕ":"ℕ"," ":" "," ":" ","≎̸":"≎̸","≏̸":"≏̸","⩃":"⩃","ň":"ň","ņ":"ņ","≇":"≇","⩭̸":"⩭̸","⩂":"⩂","н":"н","–":"–","≠":"≠","⇗":"⇗","⤤":"⤤","↗":"↗","↗":"↗","≐̸":"≐̸","≢":"≢","⤨":"⤨","≂̸":"≂̸","∄":"∄","∄":"∄","𝔫":"𝔫","≧̸":"≧̸","≱":"≱","≱":"≱","≧̸":"≧̸","⩾̸":"⩾̸","⩾̸":"⩾̸","≵":"≵","≯":"≯","≯":"≯","⇎":"⇎","↮":"↮","⫲":"⫲","∋":"∋","⋼":"⋼","⋺":"⋺","∋":"∋","њ":"њ","⇍":"⇍","≦̸":"≦̸","↚":"↚","‥":"‥","≰":"≰","↚":"↚","↮":"↮","≰":"≰","≦̸":"≦̸","⩽̸":"⩽̸","⩽̸":"⩽̸","≮":"≮","≴":"≴","≮":"≮","⋪":"⋪","⋬":"⋬","∤":"∤","𝕟":"𝕟","¬":"¬","¬":"¬","∉":"∉","⋹̸":"⋹̸","⋵̸":"⋵̸","∉":"∉","⋷":"⋷","⋶":"⋶","∌":"∌","∌":"∌","⋾":"⋾","⋽":"⋽","∦":"∦","∦":"∦","⫽⃥":"⫽⃥","∂̸":"∂̸","⨔":"⨔","⊀":"⊀","⋠":"⋠","⪯̸":"⪯̸","⊀":"⊀","⪯̸":"⪯̸","⇏":"⇏","↛":"↛","⤳̸":"⤳̸","↝̸":"↝̸","↛":"↛","⋫":"⋫","⋭":"⋭","⊁":"⊁","⋡":"⋡","⪰̸":"⪰̸","𝓃":"𝓃","∤":"∤","∦":"∦","≁":"≁","≄":"≄","≄":"≄","∤":"∤","∦":"∦","⋢":"⋢","⋣":"⋣","⊄":"⊄","⫅̸":"⫅̸","⊈":"⊈","⊂⃒":"⊂⃒","⊈":"⊈","⫅̸":"⫅̸","⊁":"⊁","⪰̸":"⪰̸","⊅":"⊅","⫆̸":"⫆̸","⊉":"⊉","⊃⃒":"⊃⃒","⊉":"⊉","⫆̸":"⫆̸","≹":"≹","ñ":"ñ","ñ":"ñ","≸":"≸","⋪":"⋪","⋬":"⋬","⋫":"⋫","⋭":"⋭","ν":"ν","#":"#","№":"№"," ":" ","⊭":"⊭","⤄":"⤄","≍⃒":"≍⃒","⊬":"⊬","≥⃒":"≥⃒",">⃒":">⃒","⧞":"⧞","⤂":"⤂","≤⃒":"≤⃒","<⃒":"<⃒","⊴⃒":"⊴⃒","⤃":"⤃","⊵⃒":"⊵⃒","∼⃒":"∼⃒","⇖":"⇖","⤣":"⤣","↖":"↖","↖":"↖","⤧":"⤧","Ⓢ":"Ⓢ","ó":"ó","ó":"ó","⊛":"⊛","⊚":"⊚","ô":"ô","ô":"ô","о":"о","⊝":"⊝","ő":"ő","⨸":"⨸","⊙":"⊙","⦼":"⦼","œ":"œ","⦿":"⦿","𝔬":"𝔬","˛":"˛","ò":"ò","ò":"ò","⧁":"⧁","⦵":"⦵","Ω":"Ω","∮":"∮","↺":"↺","⦾":"⦾","⦻":"⦻","‾":"‾","⧀":"⧀","ō":"ō","ω":"ω","ο":"ο","⦶":"⦶","⊖":"⊖","𝕠":"𝕠","⦷":"⦷","⦹":"⦹","⊕":"⊕","∨":"∨","↻":"↻","⩝":"⩝","ℴ":"ℴ","ℴ":"ℴ","ª":"ª","ª":"ª","º":"º","º":"º","⊶":"⊶","⩖":"⩖","⩗":"⩗","⩛":"⩛","ℴ":"ℴ","ø":"ø","ø":"ø","⊘":"⊘","õ":"õ","õ":"õ","⊗":"⊗","⨶":"⨶","ö":"ö","ö":"ö","⌽":"⌽","∥":"∥","¶":"¶","¶":"¶","∥":"∥","⫳":"⫳","⫽":"⫽","∂":"∂","п":"п","%":"%",".":".","‰":"‰","⊥":"⊥","‱":"‱","𝔭":"𝔭","φ":"φ","ϕ":"ϕ","ℳ":"ℳ","☎":"☎","π":"π","⋔":"⋔","ϖ":"ϖ","ℏ":"ℏ","ℎ":"ℎ","ℏ":"ℏ","+":"+","⨣":"⨣","⊞":"⊞","⨢":"⨢","∔":"∔","⨥":"⨥","⩲":"⩲","±":"±","±":"±","⨦":"⨦","⨧":"⨧","±":"±","⨕":"⨕","𝕡":"𝕡","£":"£","£":"£","≺":"≺","⪳":"⪳","⪷":"⪷","≼":"≼","⪯":"⪯","≺":"≺","⪷":"⪷","≼":"≼","⪯":"⪯","⪹":"⪹","⪵":"⪵","⋨":"⋨","≾":"≾","′":"′","ℙ":"ℙ","⪵":"⪵","⪹":"⪹","⋨":"⋨","∏":"∏","⌮":"⌮","⌒":"⌒","⌓":"⌓","∝":"∝","∝":"∝","≾":"≾","⊰":"⊰","𝓅":"𝓅","ψ":"ψ"," ":" ","𝔮":"𝔮","⨌":"⨌","𝕢":"𝕢","⁗":"⁗","𝓆":"𝓆","ℍ":"ℍ","⨖":"⨖","?":"?","≟":"≟",""":'"',""":'"',"⇛":"⇛","⇒":"⇒","⤜":"⤜","⤏":"⤏","⥤":"⥤","∽̱":"∽̱","ŕ":"ŕ","√":"√","⦳":"⦳","⟩":"⟩","⦒":"⦒","⦥":"⦥","⟩":"⟩","»":"»","»":"»","→":"→","⥵":"⥵","⇥":"⇥","⤠":"⤠","⤳":"⤳","⤞":"⤞","↪":"↪","↬":"↬","⥅":"⥅","⥴":"⥴","↣":"↣","↝":"↝","⤚":"⤚","∶":"∶","ℚ":"ℚ","⤍":"⤍","❳":"❳","}":"}","]":"]","⦌":"⦌","⦎":"⦎","⦐":"⦐","ř":"ř","ŗ":"ŗ","⌉":"⌉","}":"}","р":"р","⤷":"⤷","⥩":"⥩","”":"”","”":"”","↳":"↳","ℜ":"ℜ","ℛ":"ℛ","ℜ":"ℜ","ℝ":"ℝ","▭":"▭","®":"®","®":"®","⥽":"⥽","⌋":"⌋","𝔯":"𝔯","⇁":"⇁","⇀":"⇀","⥬":"⥬","ρ":"ρ","ϱ":"ϱ","→":"→","↣":"↣","⇁":"⇁","⇀":"⇀","⇄":"⇄","⇌":"⇌","⇉":"⇉","↝":"↝","⋌":"⋌","˚":"˚","≓":"≓","⇄":"⇄","⇌":"⇌","‏":"‏","⎱":"⎱","⎱":"⎱","⫮":"⫮","⟭":"⟭","⇾":"⇾","⟧":"⟧","⦆":"⦆","𝕣":"𝕣","⨮":"⨮","⨵":"⨵",")":")","⦔":"⦔","⨒":"⨒","⇉":"⇉","›":"›","𝓇":"𝓇","↱":"↱","]":"]","’":"’","’":"’","⋌":"⋌","⋊":"⋊","▹":"▹","⊵":"⊵","▸":"▸","⧎":"⧎","⥨":"⥨","℞":"℞","ś":"ś","‚":"‚","≻":"≻","⪴":"⪴","⪸":"⪸","š":"š","≽":"≽","⪰":"⪰","ş":"ş","ŝ":"ŝ","⪶":"⪶","⪺":"⪺","⋩":"⋩","⨓":"⨓","≿":"≿","с":"с","⋅":"⋅","⊡":"⊡","⩦":"⩦","⇘":"⇘","⤥":"⤥","↘":"↘","↘":"↘","§":"§","§":"§",";":";","⤩":"⤩","∖":"∖","∖":"∖","✶":"✶","𝔰":"𝔰","⌢":"⌢","♯":"♯","щ":"щ","ш":"ш","∣":"∣","∥":"∥","­":"­","­":"­","σ":"σ","ς":"ς","ς":"ς","∼":"∼","⩪":"⩪","≃":"≃","≃":"≃","⪞":"⪞","⪠":"⪠","⪝":"⪝","⪟":"⪟","≆":"≆","⨤":"⨤","⥲":"⥲","←":"←","∖":"∖","⨳":"⨳","⧤":"⧤","∣":"∣","⌣":"⌣","⪪":"⪪","⪬":"⪬","⪬︀":"⪬︀","ь":"ь","/":"/","⧄":"⧄","⌿":"⌿","𝕤":"𝕤","♠":"♠","♠":"♠","∥":"∥","⊓":"⊓","⊓︀":"⊓︀","⊔":"⊔","⊔︀":"⊔︀","⊏":"⊏","⊑":"⊑","⊏":"⊏","⊑":"⊑","⊐":"⊐","⊒":"⊒","⊐":"⊐","⊒":"⊒","□":"□","□":"□","▪":"▪","▪":"▪","→":"→","𝓈":"𝓈","∖":"∖","⌣":"⌣","⋆":"⋆","☆":"☆","★":"★","ϵ":"ϵ","ϕ":"ϕ","¯":"¯","⊂":"⊂","⫅":"⫅","⪽":"⪽","⊆":"⊆","⫃":"⫃","⫁":"⫁","⫋":"⫋","⊊":"⊊","⪿":"⪿","⥹":"⥹","⊂":"⊂","⊆":"⊆","⫅":"⫅","⊊":"⊊","⫋":"⫋","⫇":"⫇","⫕":"⫕","⫓":"⫓","≻":"≻","⪸":"⪸","≽":"≽","⪰":"⪰","⪺":"⪺","⪶":"⪶","⋩":"⋩","≿":"≿","∑":"∑","♪":"♪","¹":"¹","¹":"¹","²":"²","²":"²","³":"³","³":"³","⊃":"⊃","⫆":"⫆","⪾":"⪾","⫘":"⫘","⊇":"⊇","⫄":"⫄","⟉":"⟉","⫗":"⫗","⥻":"⥻","⫂":"⫂","⫌":"⫌","⊋":"⊋","⫀":"⫀","⊃":"⊃","⊇":"⊇","⫆":"⫆","⊋":"⊋","⫌":"⫌","⫈":"⫈","⫔":"⫔","⫖":"⫖","⇙":"⇙","⤦":"⤦","↙":"↙","↙":"↙","⤪":"⤪","ß":"ß","ß":"ß","⌖":"⌖","τ":"τ","⎴":"⎴","ť":"ť","ţ":"ţ","т":"т","⃛":"⃛","⌕":"⌕","𝔱":"𝔱","∴":"∴","∴":"∴","θ":"θ","ϑ":"ϑ","ϑ":"ϑ","≈":"≈","∼":"∼"," ":" ","≈":"≈","∼":"∼","þ":"þ","þ":"þ","˜":"˜","×":"×","×":"×","⊠":"⊠","⨱":"⨱","⨰":"⨰","∭":"∭","⤨":"⤨","⊤":"⊤","⌶":"⌶","⫱":"⫱","𝕥":"𝕥","⫚":"⫚","⤩":"⤩","‴":"‴","™":"™","▵":"▵","▿":"▿","◃":"◃","⊴":"⊴","≜":"≜","▹":"▹","⊵":"⊵","◬":"◬","≜":"≜","⨺":"⨺","⨹":"⨹","⧍":"⧍","⨻":"⨻","⏢":"⏢","𝓉":"𝓉","ц":"ц","ћ":"ћ","ŧ":"ŧ","≬":"≬","↞":"↞","↠":"↠","⇑":"⇑","⥣":"⥣","ú":"ú","ú":"ú","↑":"↑","ў":"ў","ŭ":"ŭ","û":"û","û":"û","у":"у","⇅":"⇅","ű":"ű","⥮":"⥮","⥾":"⥾","𝔲":"𝔲","ù":"ù","ù":"ù","↿":"↿","↾":"↾","▀":"▀","⌜":"⌜","⌜":"⌜","⌏":"⌏","◸":"◸","ū":"ū","¨":"¨","¨":"¨","ų":"ų","𝕦":"𝕦","↑":"↑","↕":"↕","↿":"↿","↾":"↾","⊎":"⊎","υ":"υ","ϒ":"ϒ","υ":"υ","⇈":"⇈","⌝":"⌝","⌝":"⌝","⌎":"⌎","ů":"ů","◹":"◹","𝓊":"𝓊","⋰":"⋰","ũ":"ũ","▵":"▵","▴":"▴","⇈":"⇈","ü":"ü","ü":"ü","⦧":"⦧","⇕":"⇕","⫨":"⫨","⫩":"⫩","⊨":"⊨","⦜":"⦜","ϵ":"ϵ","ϰ":"ϰ","∅":"∅","ϕ":"ϕ","ϖ":"ϖ","∝":"∝","↕":"↕","ϱ":"ϱ","ς":"ς","⊊︀":"⊊︀","⫋︀":"⫋︀","⊋︀":"⊋︀","⫌︀":"⫌︀","ϑ":"ϑ","⊲":"⊲","⊳":"⊳","в":"в","⊢":"⊢","∨":"∨","⊻":"⊻","≚":"≚","⋮":"⋮","|":"|","|":"|","𝔳":"𝔳","⊲":"⊲","⊂⃒":"⊂⃒","⊃⃒":"⊃⃒","𝕧":"𝕧","∝":"∝","⊳":"⊳","𝓋":"𝓋","⫋︀":"⫋︀","⊊︀":"⊊︀","⫌︀":"⫌︀","⊋︀":"⊋︀","⦚":"⦚","ŵ":"ŵ","⩟":"⩟","∧":"∧","≙":"≙","℘":"℘","𝔴":"𝔴","𝕨":"𝕨","℘":"℘","≀":"≀","≀":"≀","𝓌":"𝓌","⋂":"⋂","◯":"◯","⋃":"⋃","▽":"▽","𝔵":"𝔵","⟺":"⟺","⟷":"⟷","ξ":"ξ","⟸":"⟸","⟵":"⟵","⟼":"⟼","⋻":"⋻","⨀":"⨀","𝕩":"𝕩","⨁":"⨁","⨂":"⨂","⟹":"⟹","⟶":"⟶","𝓍":"𝓍","⨆":"⨆","⨄":"⨄","△":"△","⋁":"⋁","⋀":"⋀","ý":"ý","ý":"ý","я":"я","ŷ":"ŷ","ы":"ы","¥":"¥","¥":"¥","𝔶":"𝔶","ї":"ї","𝕪":"𝕪","𝓎":"𝓎","ю":"ю","ÿ":"ÿ","ÿ":"ÿ","ź":"ź","ž":"ž","з":"з","ż":"ż","ℨ":"ℨ","ζ":"ζ","𝔷":"𝔷","ж":"ж","⇝":"⇝","𝕫":"𝕫","𝓏":"𝓏","‍":"‍","‌":"‌"},characters:{Æ:"Æ","&":"&",Á:"Á",Ă:"Ă",Â:"Â",А:"А",𝔄:"𝔄",À:"À",Α:"Α",Ā:"Ā","⩓":"⩓",Ą:"Ą",𝔸:"𝔸","⁡":"⁡",Å:"Å",𝒜:"𝒜","≔":"≔",Ã:"Ã",Ä:"Ä","∖":"∖","⫧":"⫧","⌆":"⌆",Б:"Б","∵":"∵",ℬ:"ℬ",Β:"Β",𝔅:"𝔅",𝔹:"𝔹","˘":"˘","≎":"≎",Ч:"Ч","©":"©",Ć:"Ć","⋒":"⋒",ⅅ:"ⅅ",ℭ:"ℭ",Č:"Č",Ç:"Ç",Ĉ:"Ĉ","∰":"∰",Ċ:"Ċ","¸":"¸","·":"·",Χ:"Χ","⊙":"⊙","⊖":"⊖","⊕":"⊕","⊗":"⊗","∲":"∲","”":"”","’":"’","∷":"∷","⩴":"⩴","≡":"≡","∯":"∯","∮":"∮",ℂ:"ℂ","∐":"∐","∳":"∳","⨯":"⨯",𝒞:"𝒞","⋓":"⋓","≍":"≍","⤑":"⤑",Ђ:"Ђ",Ѕ:"Ѕ",Џ:"Џ","‡":"‡","↡":"↡","⫤":"⫤",Ď:"Ď",Д:"Д","∇":"∇",Δ:"Δ",𝔇:"𝔇","´":"´","˙":"˙","˝":"˝","`":"`","˜":"˜","⋄":"⋄",ⅆ:"ⅆ",𝔻:"𝔻","¨":"¨","⃜":"⃜","≐":"≐","⇓":"⇓","⇐":"⇐","⇔":"⇔","⟸":"⟸","⟺":"⟺","⟹":"⟹","⇒":"⇒","⊨":"⊨","⇑":"⇑","⇕":"⇕","∥":"∥","↓":"↓","⤓":"⤓","⇵":"⇵","̑":"̑","⥐":"⥐","⥞":"⥞","↽":"↽","⥖":"⥖","⥟":"⥟","⇁":"⇁","⥗":"⥗","⊤":"⊤","↧":"↧",𝒟:"𝒟",Đ:"Đ",Ŋ:"Ŋ",Ð:"Ð",É:"É",Ě:"Ě",Ê:"Ê",Э:"Э",Ė:"Ė",𝔈:"𝔈",È:"È","∈":"∈",Ē:"Ē","◻":"◻","▫":"▫",Ę:"Ę",𝔼:"𝔼",Ε:"Ε","⩵":"⩵","≂":"≂","⇌":"⇌",ℰ:"ℰ","⩳":"⩳",Η:"Η",Ë:"Ë","∃":"∃",ⅇ:"ⅇ",Ф:"Ф",𝔉:"𝔉","◼":"◼","▪":"▪",𝔽:"𝔽","∀":"∀",ℱ:"ℱ",Ѓ:"Ѓ",">":">",Γ:"Γ",Ϝ:"Ϝ",Ğ:"Ğ",Ģ:"Ģ",Ĝ:"Ĝ",Г:"Г",Ġ:"Ġ",𝔊:"𝔊","⋙":"⋙",𝔾:"𝔾","≥":"≥","⋛":"⋛","≧":"≧","⪢":"⪢","≷":"≷","⩾":"⩾","≳":"≳",𝒢:"𝒢","≫":"≫",Ъ:"Ъ",ˇ:"ˇ","^":"^",Ĥ:"Ĥ",ℌ:"ℌ",ℋ:"ℋ",ℍ:"ℍ","─":"─",Ħ:"Ħ","≏":"≏",Е:"Е",IJ:"IJ",Ё:"Ё",Í:"Í",Î:"Î",И:"И",İ:"İ",ℑ:"ℑ",Ì:"Ì",Ī:"Ī",ⅈ:"ⅈ","∬":"∬","∫":"∫","⋂":"⋂","⁣":"⁣","⁢":"⁢",Į:"Į",𝕀:"𝕀",Ι:"Ι",ℐ:"ℐ",Ĩ:"Ĩ",І:"І",Ï:"Ï",Ĵ:"Ĵ",Й:"Й",𝔍:"𝔍",𝕁:"𝕁",𝒥:"𝒥",Ј:"Ј",Є:"Є",Х:"Х",Ќ:"Ќ",Κ:"Κ",Ķ:"Ķ",К:"К",𝔎:"𝔎",𝕂:"𝕂",𝒦:"𝒦",Љ:"Љ","<":"<",Ĺ:"Ĺ",Λ:"Λ","⟪":"⟪",ℒ:"ℒ","↞":"↞",Ľ:"Ľ",Ļ:"Ļ",Л:"Л","⟨":"⟨","←":"←","⇤":"⇤","⇆":"⇆","⌈":"⌈","⟦":"⟦","⥡":"⥡","⇃":"⇃","⥙":"⥙","⌊":"⌊","↔":"↔","⥎":"⥎","⊣":"⊣","↤":"↤","⥚":"⥚","⊲":"⊲","⧏":"⧏","⊴":"⊴","⥑":"⥑","⥠":"⥠","↿":"↿","⥘":"⥘","↼":"↼","⥒":"⥒","⋚":"⋚","≦":"≦","≶":"≶","⪡":"⪡","⩽":"⩽","≲":"≲",𝔏:"𝔏","⋘":"⋘","⇚":"⇚",Ŀ:"Ŀ","⟵":"⟵","⟷":"⟷","⟶":"⟶",𝕃:"𝕃","↙":"↙","↘":"↘","↰":"↰",Ł:"Ł","≪":"≪","⤅":"⤅",М:"М"," ":" ",ℳ:"ℳ",𝔐:"𝔐","∓":"∓",𝕄:"𝕄",Μ:"Μ",Њ:"Њ",Ń:"Ń",Ň:"Ň",Ņ:"Ņ",Н:"Н","​":"​","\n":" ",𝔑:"𝔑","⁠":"⁠"," ":" ",ℕ:"ℕ","⫬":"⫬","≢":"≢","≭":"≭","∦":"∦","∉":"∉","≠":"≠","≂̸":"≂̸","∄":"∄","≯":"≯","≱":"≱","≧̸":"≧̸","≫̸":"≫̸","≹":"≹","⩾̸":"⩾̸","≵":"≵","≎̸":"≎̸","≏̸":"≏̸","⋪":"⋪","⧏̸":"⧏̸","⋬":"⋬","≮":"≮","≰":"≰","≸":"≸","≪̸":"≪̸","⩽̸":"⩽̸","≴":"≴","⪢̸":"⪢̸","⪡̸":"⪡̸","⊀":"⊀","⪯̸":"⪯̸","⋠":"⋠","∌":"∌","⋫":"⋫","⧐̸":"⧐̸","⋭":"⋭","⊏̸":"⊏̸","⋢":"⋢","⊐̸":"⊐̸","⋣":"⋣","⊂⃒":"⊂⃒","⊈":"⊈","⊁":"⊁","⪰̸":"⪰̸","⋡":"⋡","≿̸":"≿̸","⊃⃒":"⊃⃒","⊉":"⊉","≁":"≁","≄":"≄","≇":"≇","≉":"≉","∤":"∤",𝒩:"𝒩",Ñ:"Ñ",Ν:"Ν",Œ:"Œ",Ó:"Ó",Ô:"Ô",О:"О",Ő:"Ő",𝔒:"𝔒",Ò:"Ò",Ō:"Ō",Ω:"Ω",Ο:"Ο",𝕆:"𝕆","“":"“","‘":"‘","⩔":"⩔",𝒪:"𝒪",Ø:"Ø",Õ:"Õ","⨷":"⨷",Ö:"Ö","‾":"‾","⏞":"⏞","⎴":"⎴","⏜":"⏜","∂":"∂",П:"П",𝔓:"𝔓",Φ:"Φ",Π:"Π","±":"±",ℙ:"ℙ","⪻":"⪻","≺":"≺","⪯":"⪯","≼":"≼","≾":"≾","″":"″","∏":"∏","∝":"∝",𝒫:"𝒫",Ψ:"Ψ",'"':""",𝔔:"𝔔",ℚ:"ℚ",𝒬:"𝒬","⤐":"⤐","®":"®",Ŕ:"Ŕ","⟫":"⟫","↠":"↠","⤖":"⤖",Ř:"Ř",Ŗ:"Ŗ",Р:"Р",ℜ:"ℜ","∋":"∋","⇋":"⇋","⥯":"⥯",Ρ:"Ρ","⟩":"⟩","→":"→","⇥":"⇥","⇄":"⇄","⌉":"⌉","⟧":"⟧","⥝":"⥝","⇂":"⇂","⥕":"⥕","⌋":"⌋","⊢":"⊢","↦":"↦","⥛":"⥛","⊳":"⊳","⧐":"⧐","⊵":"⊵","⥏":"⥏","⥜":"⥜","↾":"↾","⥔":"⥔","⇀":"⇀","⥓":"⥓",ℝ:"ℝ","⥰":"⥰","⇛":"⇛",ℛ:"ℛ","↱":"↱","⧴":"⧴",Щ:"Щ",Ш:"Ш",Ь:"Ь",Ś:"Ś","⪼":"⪼",Š:"Š",Ş:"Ş",Ŝ:"Ŝ",С:"С",𝔖:"𝔖","↑":"↑",Σ:"Σ","∘":"∘",𝕊:"𝕊","√":"√","□":"□","⊓":"⊓","⊏":"⊏","⊑":"⊑","⊐":"⊐","⊒":"⊒","⊔":"⊔",𝒮:"𝒮","⋆":"⋆","⋐":"⋐","⊆":"⊆","≻":"≻","⪰":"⪰","≽":"≽","≿":"≿","∑":"∑","⋑":"⋑","⊃":"⊃","⊇":"⊇",Þ:"Þ","™":"™",Ћ:"Ћ",Ц:"Ц","\t":" ",Τ:"Τ",Ť:"Ť",Ţ:"Ţ",Т:"Т",𝔗:"𝔗","∴":"∴",Θ:"Θ","  ":"  "," ":" ","∼":"∼","≃":"≃","≅":"≅","≈":"≈",𝕋:"𝕋","⃛":"⃛",𝒯:"𝒯",Ŧ:"Ŧ",Ú:"Ú","↟":"↟","⥉":"⥉",Ў:"Ў",Ŭ:"Ŭ",Û:"Û",У:"У",Ű:"Ű",𝔘:"𝔘",Ù:"Ù",Ū:"Ū",_:"_","⏟":"⏟","⎵":"⎵","⏝":"⏝","⋃":"⋃","⊎":"⊎",Ų:"Ų",𝕌:"𝕌","⤒":"⤒","⇅":"⇅","↕":"↕","⥮":"⥮","⊥":"⊥","↥":"↥","↖":"↖","↗":"↗",ϒ:"ϒ",Υ:"Υ",Ů:"Ů",𝒰:"𝒰",Ũ:"Ũ",Ü:"Ü","⊫":"⊫","⫫":"⫫",В:"В","⊩":"⊩","⫦":"⫦","⋁":"⋁","‖":"‖","∣":"∣","|":"|","❘":"❘","≀":"≀"," ":" ",𝔙:"𝔙",𝕍:"𝕍",𝒱:"𝒱","⊪":"⊪",Ŵ:"Ŵ","⋀":"⋀",𝔚:"𝔚",𝕎:"𝕎",𝒲:"𝒲",𝔛:"𝔛",Ξ:"Ξ",𝕏:"𝕏",𝒳:"𝒳",Я:"Я",Ї:"Ї",Ю:"Ю",Ý:"Ý",Ŷ:"Ŷ",Ы:"Ы",𝔜:"𝔜",𝕐:"𝕐",𝒴:"𝒴",Ÿ:"Ÿ",Ж:"Ж",Ź:"Ź",Ž:"Ž",З:"З",Ż:"Ż",Ζ:"Ζ",ℨ:"ℨ",ℤ:"ℤ",𝒵:"𝒵",á:"á",ă:"ă","∾":"∾","∾̳":"∾̳","∿":"∿",â:"â",а:"а",æ:"æ",𝔞:"𝔞",à:"à",ℵ:"ℵ",α:"α",ā:"ā","⨿":"⨿","∧":"∧","⩕":"⩕","⩜":"⩜","⩘":"⩘","⩚":"⩚","∠":"∠","⦤":"⦤","∡":"∡","⦨":"⦨","⦩":"⦩","⦪":"⦪","⦫":"⦫","⦬":"⦬","⦭":"⦭","⦮":"⦮","⦯":"⦯","∟":"∟","⊾":"⊾","⦝":"⦝","∢":"∢","⍼":"⍼",ą:"ą",𝕒:"𝕒","⩰":"⩰","⩯":"⩯","≊":"≊","≋":"≋","'":"'",å:"å",𝒶:"𝒶","*":"*",ã:"ã",ä:"ä","⨑":"⨑","⫭":"⫭","≌":"≌","϶":"϶","‵":"‵","∽":"∽","⋍":"⋍","⊽":"⊽","⌅":"⌅","⎶":"⎶",б:"б","„":"„","⦰":"⦰",β:"β",ℶ:"ℶ","≬":"≬",𝔟:"𝔟","◯":"◯","⨀":"⨀","⨁":"⨁","⨂":"⨂","⨆":"⨆","★":"★","▽":"▽","△":"△","⨄":"⨄","⤍":"⤍","⧫":"⧫","▴":"▴","▾":"▾","◂":"◂","▸":"▸","␣":"␣","▒":"▒","░":"░","▓":"▓","█":"█","=⃥":"=⃥","≡⃥":"≡⃥","⌐":"⌐",𝕓:"𝕓","⋈":"⋈","╗":"╗","╔":"╔","╖":"╖","╓":"╓","═":"═","╦":"╦","╩":"╩","╤":"╤","╧":"╧","╝":"╝","╚":"╚","╜":"╜","╙":"╙","║":"║","╬":"╬","╣":"╣","╠":"╠","╫":"╫","╢":"╢","╟":"╟","⧉":"⧉","╕":"╕","╒":"╒","┐":"┐","┌":"┌","╥":"╥","╨":"╨","┬":"┬","┴":"┴","⊟":"⊟","⊞":"⊞","⊠":"⊠","╛":"╛","╘":"╘","┘":"┘","└":"└","│":"│","╪":"╪","╡":"╡","╞":"╞","┼":"┼","┤":"┤","├":"├","¦":"¦",𝒷:"𝒷","⁏":"⁏","\\":"\","⧅":"⧅","⟈":"⟈","•":"•","⪮":"⪮",ć:"ć","∩":"∩","⩄":"⩄","⩉":"⩉","⩋":"⩋","⩇":"⩇","⩀":"⩀","∩︀":"∩︀","⁁":"⁁","⩍":"⩍",č:"č",ç:"ç",ĉ:"ĉ","⩌":"⩌","⩐":"⩐",ċ:"ċ","⦲":"⦲","¢":"¢",𝔠:"𝔠",ч:"ч","✓":"✓",χ:"χ","○":"○","⧃":"⧃",ˆ:"ˆ","≗":"≗","↺":"↺","↻":"↻","Ⓢ":"Ⓢ","⊛":"⊛","⊚":"⊚","⊝":"⊝","⨐":"⨐","⫯":"⫯","⧂":"⧂","♣":"♣",":":":",",":",","@":"@","∁":"∁","⩭":"⩭",𝕔:"𝕔","℗":"℗","↵":"↵","✗":"✗",𝒸:"𝒸","⫏":"⫏","⫑":"⫑","⫐":"⫐","⫒":"⫒","⋯":"⋯","⤸":"⤸","⤵":"⤵","⋞":"⋞","⋟":"⋟","↶":"↶","⤽":"⤽","∪":"∪","⩈":"⩈","⩆":"⩆","⩊":"⩊","⊍":"⊍","⩅":"⩅","∪︀":"∪︀","↷":"↷","⤼":"⤼","⋎":"⋎","⋏":"⋏","¤":"¤","∱":"∱","⌭":"⌭","⥥":"⥥","†":"†",ℸ:"ℸ","‐":"‐","⤏":"⤏",ď:"ď",д:"д","⇊":"⇊","⩷":"⩷","°":"°",δ:"δ","⦱":"⦱","⥿":"⥿",𝔡:"𝔡","♦":"♦",ϝ:"ϝ","⋲":"⋲","÷":"÷","⋇":"⋇",ђ:"ђ","⌞":"⌞","⌍":"⌍",$:"$",𝕕:"𝕕","≑":"≑","∸":"∸","∔":"∔","⊡":"⊡","⌟":"⌟","⌌":"⌌",𝒹:"𝒹",ѕ:"ѕ","⧶":"⧶",đ:"đ","⋱":"⋱","▿":"▿","⦦":"⦦",џ:"џ","⟿":"⟿",é:"é","⩮":"⩮",ě:"ě","≖":"≖",ê:"ê","≕":"≕",э:"э",ė:"ė","≒":"≒",𝔢:"𝔢","⪚":"⪚",è:"è","⪖":"⪖","⪘":"⪘","⪙":"⪙","⏧":"⏧",ℓ:"ℓ","⪕":"⪕","⪗":"⪗",ē:"ē","∅":"∅"," ":" "," ":" "," ":" ",ŋ:"ŋ"," ":" ",ę:"ę",𝕖:"𝕖","⋕":"⋕","⧣":"⧣","⩱":"⩱",ε:"ε",ϵ:"ϵ","=":"=","≟":"≟","⩸":"⩸","⧥":"⧥","≓":"≓","⥱":"⥱",ℯ:"ℯ",η:"η",ð:"ð",ë:"ë","€":"€","!":"!",ф:"ф","♀":"♀",ffi:"ffi",ff:"ff",ffl:"ffl",𝔣:"𝔣",fi:"fi",fj:"fj","♭":"♭",fl:"fl","▱":"▱",ƒ:"ƒ",𝕗:"𝕗","⋔":"⋔","⫙":"⫙","⨍":"⨍","½":"½","⅓":"⅓","¼":"¼","⅕":"⅕","⅙":"⅙","⅛":"⅛","⅔":"⅔","⅖":"⅖","¾":"¾","⅗":"⅗","⅜":"⅜","⅘":"⅘","⅚":"⅚","⅝":"⅝","⅞":"⅞","⁄":"⁄","⌢":"⌢",𝒻:"𝒻","⪌":"⪌",ǵ:"ǵ",γ:"γ","⪆":"⪆",ğ:"ğ",ĝ:"ĝ",г:"г",ġ:"ġ","⪩":"⪩","⪀":"⪀","⪂":"⪂","⪄":"⪄","⋛︀":"⋛︀","⪔":"⪔",𝔤:"𝔤",ℷ:"ℷ",ѓ:"ѓ","⪒":"⪒","⪥":"⪥","⪤":"⪤","≩":"≩","⪊":"⪊","⪈":"⪈","⋧":"⋧",𝕘:"𝕘",ℊ:"ℊ","⪎":"⪎","⪐":"⪐","⪧":"⪧","⩺":"⩺","⋗":"⋗","⦕":"⦕","⩼":"⩼","⥸":"⥸","≩︀":"≩︀",ъ:"ъ","⥈":"⥈","↭":"↭",ℏ:"ℏ",ĥ:"ĥ","♥":"♥","…":"…","⊹":"⊹",𝔥:"𝔥","⤥":"⤥","⤦":"⤦","⇿":"⇿","∻":"∻","↩":"↩","↪":"↪",𝕙:"𝕙","―":"―",𝒽:"𝒽",ħ:"ħ","⁃":"⁃",í:"í",î:"î",и:"и",е:"е","¡":"¡",𝔦:"𝔦",ì:"ì","⨌":"⨌","∭":"∭","⧜":"⧜","℩":"℩",ij:"ij",ī:"ī",ı:"ı","⊷":"⊷",Ƶ:"Ƶ","℅":"℅","∞":"∞","⧝":"⧝","⊺":"⊺","⨗":"⨗","⨼":"⨼",ё:"ё",į:"į",𝕚:"𝕚",ι:"ι","¿":"¿",𝒾:"𝒾","⋹":"⋹","⋵":"⋵","⋴":"⋴","⋳":"⋳",ĩ:"ĩ",і:"і",ï:"ï",ĵ:"ĵ",й:"й",𝔧:"𝔧",ȷ:"ȷ",𝕛:"𝕛",𝒿:"𝒿",ј:"ј",є:"є",κ:"κ",ϰ:"ϰ",ķ:"ķ",к:"к",𝔨:"𝔨",ĸ:"ĸ",х:"х",ќ:"ќ",𝕜:"𝕜",𝓀:"𝓀","⤛":"⤛","⤎":"⤎","⪋":"⪋","⥢":"⥢",ĺ:"ĺ","⦴":"⦴",λ:"λ","⦑":"⦑","⪅":"⪅","«":"«","⤟":"⤟","⤝":"⤝","↫":"↫","⤹":"⤹","⥳":"⥳","↢":"↢","⪫":"⪫","⤙":"⤙","⪭":"⪭","⪭︀":"⪭︀","⤌":"⤌","❲":"❲","{":"{","[":"[","⦋":"⦋","⦏":"⦏","⦍":"⦍",ľ:"ľ",ļ:"ļ",л:"л","⤶":"⤶","⥧":"⥧","⥋":"⥋","↲":"↲","≤":"≤","⇇":"⇇","⋋":"⋋","⪨":"⪨","⩿":"⩿","⪁":"⪁","⪃":"⪃","⋚︀":"⋚︀","⪓":"⪓","⋖":"⋖","⥼":"⥼",𝔩:"𝔩","⪑":"⪑","⥪":"⥪","▄":"▄",љ:"љ","⥫":"⥫","◺":"◺",ŀ:"ŀ","⎰":"⎰","≨":"≨","⪉":"⪉","⪇":"⪇","⋦":"⋦","⟬":"⟬","⇽":"⇽","⟼":"⟼","↬":"↬","⦅":"⦅",𝕝:"𝕝","⨭":"⨭","⨴":"⨴","∗":"∗","◊":"◊","(":"(","⦓":"⦓","⥭":"⥭","‎":"‎","⊿":"⊿","‹":"‹",𝓁:"𝓁","⪍":"⪍","⪏":"⪏","‚":"‚",ł:"ł","⪦":"⪦","⩹":"⩹","⋉":"⋉","⥶":"⥶","⩻":"⩻","⦖":"⦖","◃":"◃","⥊":"⥊","⥦":"⥦","≨︀":"≨︀","∺":"∺","¯":"¯","♂":"♂","✠":"✠","▮":"▮","⨩":"⨩",м:"м","—":"—",𝔪:"𝔪","℧":"℧",µ:"µ","⫰":"⫰","−":"−","⨪":"⨪","⫛":"⫛","⊧":"⊧",𝕞:"𝕞",𝓂:"𝓂",μ:"μ","⊸":"⊸","⋙̸":"⋙̸","≫⃒":"≫⃒","⇍":"⇍","⇎":"⇎","⋘̸":"⋘̸","≪⃒":"≪⃒","⇏":"⇏","⊯":"⊯","⊮":"⊮",ń:"ń","∠⃒":"∠⃒","⩰̸":"⩰̸","≋̸":"≋̸",ʼn:"ʼn","♮":"♮","⩃":"⩃",ň:"ň",ņ:"ņ","⩭̸":"⩭̸","⩂":"⩂",н:"н","–":"–","⇗":"⇗","⤤":"⤤","≐̸":"≐̸","⤨":"⤨",𝔫:"𝔫","↮":"↮","⫲":"⫲","⋼":"⋼","⋺":"⋺",њ:"њ","≦̸":"≦̸","↚":"↚","‥":"‥",𝕟:"𝕟","¬":"¬","⋹̸":"⋹̸","⋵̸":"⋵̸","⋷":"⋷","⋶":"⋶","⋾":"⋾","⋽":"⋽","⫽⃥":"⫽⃥","∂̸":"∂̸","⨔":"⨔","↛":"↛","⤳̸":"⤳̸","↝̸":"↝̸",𝓃:"𝓃","⊄":"⊄","⫅̸":"⫅̸","⊅":"⊅","⫆̸":"⫆̸",ñ:"ñ",ν:"ν","#":"#","№":"№"," ":" ","⊭":"⊭","⤄":"⤄","≍⃒":"≍⃒","⊬":"⊬","≥⃒":"≥⃒",">⃒":">⃒","⧞":"⧞","⤂":"⤂","≤⃒":"≤⃒","<⃒":"<⃒","⊴⃒":"⊴⃒","⤃":"⤃","⊵⃒":"⊵⃒","∼⃒":"∼⃒","⇖":"⇖","⤣":"⤣","⤧":"⤧",ó:"ó",ô:"ô",о:"о",ő:"ő","⨸":"⨸","⦼":"⦼",œ:"œ","⦿":"⦿",𝔬:"𝔬","˛":"˛",ò:"ò","⧁":"⧁","⦵":"⦵","⦾":"⦾","⦻":"⦻","⧀":"⧀",ō:"ō",ω:"ω",ο:"ο","⦶":"⦶",𝕠:"𝕠","⦷":"⦷","⦹":"⦹","∨":"∨","⩝":"⩝",ℴ:"ℴ",ª:"ª",º:"º","⊶":"⊶","⩖":"⩖","⩗":"⩗","⩛":"⩛",ø:"ø","⊘":"⊘",õ:"õ","⨶":"⨶",ö:"ö","⌽":"⌽","¶":"¶","⫳":"⫳","⫽":"⫽",п:"п","%":"%",".":".","‰":"‰","‱":"‱",𝔭:"𝔭",φ:"φ",ϕ:"ϕ","☎":"☎",π:"π",ϖ:"ϖ",ℎ:"ℎ","+":"+","⨣":"⨣","⨢":"⨢","⨥":"⨥","⩲":"⩲","⨦":"⨦","⨧":"⨧","⨕":"⨕",𝕡:"𝕡","£":"£","⪳":"⪳","⪷":"⪷","⪹":"⪹","⪵":"⪵","⋨":"⋨","′":"′","⌮":"⌮","⌒":"⌒","⌓":"⌓","⊰":"⊰",𝓅:"𝓅",ψ:"ψ"," ":" ",𝔮:"𝔮",𝕢:"𝕢","⁗":"⁗",𝓆:"𝓆","⨖":"⨖","?":"?","⤜":"⤜","⥤":"⥤","∽̱":"∽̱",ŕ:"ŕ","⦳":"⦳","⦒":"⦒","⦥":"⦥","»":"»","⥵":"⥵","⤠":"⤠","⤳":"⤳","⤞":"⤞","⥅":"⥅","⥴":"⥴","↣":"↣","↝":"↝","⤚":"⤚","∶":"∶","❳":"❳","}":"}","]":"]","⦌":"⦌","⦎":"⦎","⦐":"⦐",ř:"ř",ŗ:"ŗ",р:"р","⤷":"⤷","⥩":"⥩","↳":"↳","▭":"▭","⥽":"⥽",𝔯:"𝔯","⥬":"⥬",ρ:"ρ",ϱ:"ϱ","⇉":"⇉","⋌":"⋌","˚":"˚","‏":"‏","⎱":"⎱","⫮":"⫮","⟭":"⟭","⇾":"⇾","⦆":"⦆",𝕣:"𝕣","⨮":"⨮","⨵":"⨵",")":")","⦔":"⦔","⨒":"⨒","›":"›",𝓇:"𝓇","⋊":"⋊","▹":"▹","⧎":"⧎","⥨":"⥨","℞":"℞",ś:"ś","⪴":"⪴","⪸":"⪸",š:"š",ş:"ş",ŝ:"ŝ","⪶":"⪶","⪺":"⪺","⋩":"⋩","⨓":"⨓",с:"с","⋅":"⋅","⩦":"⩦","⇘":"⇘","§":"§",";":";","⤩":"⤩","✶":"✶",𝔰:"𝔰","♯":"♯",щ:"щ",ш:"ш","­":"­",σ:"σ",ς:"ς","⩪":"⩪","⪞":"⪞","⪠":"⪠","⪝":"⪝","⪟":"⪟","≆":"≆","⨤":"⨤","⥲":"⥲","⨳":"⨳","⧤":"⧤","⌣":"⌣","⪪":"⪪","⪬":"⪬","⪬︀":"⪬︀",ь:"ь","/":"/","⧄":"⧄","⌿":"⌿",𝕤:"𝕤","♠":"♠","⊓︀":"⊓︀","⊔︀":"⊔︀",𝓈:"𝓈","☆":"☆","⊂":"⊂","⫅":"⫅","⪽":"⪽","⫃":"⫃","⫁":"⫁","⫋":"⫋","⊊":"⊊","⪿":"⪿","⥹":"⥹","⫇":"⫇","⫕":"⫕","⫓":"⫓","♪":"♪","¹":"¹","²":"²","³":"³","⫆":"⫆","⪾":"⪾","⫘":"⫘","⫄":"⫄","⟉":"⟉","⫗":"⫗","⥻":"⥻","⫂":"⫂","⫌":"⫌","⊋":"⊋","⫀":"⫀","⫈":"⫈","⫔":"⫔","⫖":"⫖","⇙":"⇙","⤪":"⤪",ß:"ß","⌖":"⌖",τ:"τ",ť:"ť",ţ:"ţ",т:"т","⌕":"⌕",𝔱:"𝔱",θ:"θ",ϑ:"ϑ",þ:"þ","×":"×","⨱":"⨱","⨰":"⨰","⌶":"⌶","⫱":"⫱",𝕥:"𝕥","⫚":"⫚","‴":"‴","▵":"▵","≜":"≜","◬":"◬","⨺":"⨺","⨹":"⨹","⧍":"⧍","⨻":"⨻","⏢":"⏢",𝓉:"𝓉",ц:"ц",ћ:"ћ",ŧ:"ŧ","⥣":"⥣",ú:"ú",ў:"ў",ŭ:"ŭ",û:"û",у:"у",ű:"ű","⥾":"⥾",𝔲:"𝔲",ù:"ù","▀":"▀","⌜":"⌜","⌏":"⌏","◸":"◸",ū:"ū",ų:"ų",𝕦:"𝕦",υ:"υ","⇈":"⇈","⌝":"⌝","⌎":"⌎",ů:"ů","◹":"◹",𝓊:"𝓊","⋰":"⋰",ũ:"ũ",ü:"ü","⦧":"⦧","⫨":"⫨","⫩":"⫩","⦜":"⦜","⊊︀":"⊊︀","⫋︀":"⫋︀","⊋︀":"⊋︀","⫌︀":"⫌︀",в:"в","⊻":"⊻","≚":"≚","⋮":"⋮",𝔳:"𝔳",𝕧:"𝕧",𝓋:"𝓋","⦚":"⦚",ŵ:"ŵ","⩟":"⩟","≙":"≙",℘:"℘",𝔴:"𝔴",𝕨:"𝕨",𝓌:"𝓌",𝔵:"𝔵",ξ:"ξ","⋻":"⋻",𝕩:"𝕩",𝓍:"𝓍",ý:"ý",я:"я",ŷ:"ŷ",ы:"ы","¥":"¥",𝔶:"𝔶",ї:"ї",𝕪:"𝕪",𝓎:"𝓎",ю:"ю",ÿ:"ÿ",ź:"ź",ž:"ž",з:"з",ż:"ż",ζ:"ζ",𝔷:"𝔷",ж:"ж","⇝":"⇝",𝕫:"𝕫",𝓏:"𝓏","‍":"‍","‌":"‌"}}}},762:(e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.numericUnicodeMap={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}},826:(e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.fromCodePoint=String.fromCodePoint||function(e){return String.fromCharCode(Math.floor((e-65536)/1024)+55296,(e-65536)%1024+56320)},r.getCodePoint=String.prototype.codePointAt?function(e,r){return e.codePointAt(r)}:function(e,r){return 1024*(e.charCodeAt(r)-55296)+e.charCodeAt(r+1)-56320+65536},r.highSurrogateFrom=55296,r.highSurrogateTo=56319},140:(e,r,t)=>{"use strict";var o=t(918),n=Object.create(null),a="undefined"==typeof document,i=Array.prototype.forEach;function c(){}function s(e,r){if(!r){if(!e.href)return;r=e.href.split("?")[0]}if(u(r)&&!1!==e.isLoaded&&r&&r.indexOf(".css")>-1){e.visited=!0;var t=e.cloneNode();t.isLoaded=!1,t.addEventListener("load",(function(){t.isLoaded||(t.isLoaded=!0,e.parentNode.removeChild(e))})),t.addEventListener("error",(function(){t.isLoaded||(t.isLoaded=!0,e.parentNode.removeChild(e))})),t.href="".concat(r,"?").concat(Date.now()),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t)}}function l(){var e=document.querySelectorAll("link");i.call(e,(function(e){!0!==e.visited&&s(e)}))}function u(e){return!!/^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(e)}e.exports=function(e,r){if(a)return console.log("no window.document found, will not HMR CSS"),c;var t,p,d=function(e){var r=n[e];if(!r){if(document.currentScript)r=document.currentScript.src;else{var t=document.getElementsByTagName("script"),a=t[t.length-1];a&&(r=a.src)}n[e]=r}return function(e){if(!r)return null;var t=r.split(/([^\\/]+)\.js$/),n=t&&t[1];return n&&e?e.split(",").map((function(e){var t=new RegExp("".concat(n,"\\.js$"),"g");return o(r.replace(t,"".concat(e.replace(/{fileName}/g,n),".css")))})):[r.replace(".js",".css")]}}(e);return t=function(){var e=d(r.filename),t=function(e){if(!e)return!1;var r=document.querySelectorAll("link"),t=!1;return i.call(r,(function(r){if(r.href){var n=function(e,r){var t;return e=o(e),r.some((function(o){e.indexOf(r)>-1&&(t=o)})),t}(r.href,e);u(n)&&!0!==r.visited&&n&&(s(r,n),t=!0)}})),t}(e);if(r.locals)return console.log("[HMR] Detected local css modules. Reload all css"),void l();t?console.log("[HMR] css reload %s",e.join(" ")):(console.log("[HMR] Reload all css"),l())},p=0,function(){var e=this,r=arguments;clearTimeout(p),p=setTimeout((function(){return t.apply(e,r)}),50)}}},918:e=>{"use strict";e.exports=function(e){if(e=e.trim(),/^data:/i.test(e))return e;var r=-1!==e.indexOf("//")?e.split("//")[0]+"//":"",t=e.replace(new RegExp(r,"i"),"").split("/"),o=t[0].toLowerCase().replace(/\.$/,"");return t[0]="",r+o+t.reduce((function(e,r){switch(r){case"..":e.pop();break;case".":break;default:e.push(r)}return e}),[]).join("/")}},33:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},265:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},277:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},787:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},574:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},878:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},495:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},134:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},843:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},483:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},676:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},313:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},132:(e,r,t)=>{"use strict";t(33),window.onToggleDropdown=function(e){var r;null===(r=e.target)||void 0===r||r.classList.toggle("button_dropdown_active")},t(265),t(574),t(878),t(495),t(843),t(134),t(483),t(676),t(313);var o=function(e){var r="function"==typeof Symbol&&Symbol.iterator,t=r&&e[r],o=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")},n=function(){var e=!1;try{var r="__testLocalStorageKey__";localStorage.setItem(r,r),localStorage.removeItem(r),e=!0}catch(e){console.error("Local storage is not available",e)}return{getItem:function(r){return e?localStorage.getItem(r):null},setItem:function(r,t){e&&localStorage.setItem(r,t)}}}();function a(e){var r,t=null===(r=e.getAttribute("data-togglable"))||void 0===r?void 0:r.split(",");!function(){var r,t,n,a;try{for(var i=o(document.getElementsByClassName("tabs-section")),c=i.next();!c.done;c=i.next()){var s=c.value;try{for(var l=(n=void 0,o(s.children)),u=l.next();!u.done;u=l.next()){var p=u.value;p.getAttribute("data-togglable")===e.getAttribute("data-togglable")?p.setAttribute("data-active",""):p.removeAttribute("data-active")}}catch(e){n={error:e}}finally{try{u&&!u.done&&(a=l.return)&&a.call(l)}finally{if(n)throw n.error}}}}catch(e){r={error:e}}finally{try{c&&!c.done&&(t=i.return)&&t.call(i)}finally{if(r)throw r.error}}}(),document.querySelectorAll(".tabs-section-body *[data-togglable]").forEach((function(e){var r=e.getAttribute("data-togglable");t&&r&&t.includes(r)?e.setAttribute("data-active",""):e.classList.contains("sourceset-dependent-content")||e.removeAttribute("data-active")}))}window.initTabs=function(){var e=document.querySelector(".main-content"),r="active-tab-"+(e?e.getAttribute("data-page-type"):null);document.querySelectorAll("div[tabs-section]").forEach((function(e){!function(e){var r=e.querySelector("button[data-active]");r&&a(r)}(e),e.addEventListener("click",(function(e){var t=e.target,o=t?t.getAttribute("data-togglable"):null;o&&(n.setItem(r,JSON.stringify(o)),a(t))}))}));var t=n.getItem(r);if(t){var o=document.querySelector('div[tabs-section] > button[data-togglable="'+JSON.parse(t)+'"]');o&&a(o)}},window.toggleSections=a,t(787),t(277)},927:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>i});var o=t(984);function n(e,r){for(var t=0;t{"use strict";var o=t(922),n=t.n(o),a=new RegExp(["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|"),"g");const i=function(e){if("string"!=typeof e)throw new TypeError("Expected a `string`, got `".concat(typeof e,"`"));return e.replace(a,"")};var c=t(927),s=t(984),l=t(927),u=void 0!==l?void 0!==l.default?l.default:l:c.default,p=0,d=10,f=null,g=function(e,r,t){(f=new u(e)).onOpen((function(){p=0,void 0!==t&&(d=t)})),f.onClose((function(){if(0===p&&r.close(),f=null,p=0)){var i=self.location.search.toLowerCase(),c=-1===i.indexOf("webpack-dev-server-hot=false"),l=-1===i.indexOf("webpack-dev-server-live-reload=false");if(t&&c)s.Rm.info("App hot update..."),I().emit("webpackHotUpdate",r.currentHash),"undefined"!=typeof self&&self.window&&self.postMessage("webpackHotUpdate".concat(r.currentHash),"*");else if(o&&l)var u=self,p=self.setInterval((function(){("about:"!==u.location.protocol||(u=u.parent).parent===u)&&function(e,r){clearInterval(r),s.Rm.info("App updated. Reloading..."),e.location.reload()}(u,p)}))}}};function U(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}var H=function(e){"object"==typeof e&&["warnings","errors","runtimeErrors"].forEach((function(r){if("string"==typeof e[r]){var t=decodeURIComponent(e[r]),o=new Function("message","var callback = ".concat(t,"\n return callback(message)"));e[r]=o}}))},F={isUnloading:!1,currentHash:t.h()},_={hot:!1,liveReload:!1,progress:!1,overlay:!1},B=function(e){var r={};if("string"==typeof e&&""!==e)for(var t=e.slice(1).split("&"),o=0;o0)return r[r.length-1].getAttribute("src");throw new Error("[webpack-dev-server] Failed to get current script source.")}();try{a=new URL(i,self.location.href)}catch(e){}a&&((r=a).fromCurrentScript=!0)}return r}("?protocol=ws%3A&hostname=0.0.0.0&port=8001&pathname=%2Fws&logging=info&overlay=true&reconnect=10&hot=true&live-reload=true"),M={"Hot Module Replacement":!1,"Live Reloading":!1,Progress:!1,Overlay:!1};if("true"===B.hot&&(_.hot=!0,M["Hot Module Replacement"]=!0),"true"===B["live-reload"]&&(_.liveReload=!0,M["Live Reloading"]=!0),"true"===B.progress&&(_.progress=!0,M.Progress=!0),B.overlay){try{_.overlay=JSON.parse(B.overlay)}catch(e){s.Rm.error("Error parsing overlay options from resource query:",e)}"object"==typeof _.overlay&&(_.overlay=function(e){for(var r=1;r{!function(){"use strict";var e={"./client-src/modules/logger/tapable.js":function(e,r,t){function o(){return{call:function(){}}}t.r(r),t.d(r,{SyncBailHook:function(){return o}})},"./node_modules/webpack/lib/logging/Logger.js":function(e,r){function t(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if(void 0!==("undefined"!=typeof Symbol?Symbol:function(e){return e})&&null!=e[("undefined"!=typeof Symbol?Symbol:function(e){return e}).iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return o(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,r):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,o=new Array(r);t1?r-1:0),o=1;o1e9?(t[0]+=o[0]+1,t[1]=t[1]-1e9+o[1]):(t[0]+=o[0],t[1]+=o[1])),this[l].set(e,t)}},{key:"timeAggregateEnd",value:function(e){if(void 0!==this[l]){var r=this[l].get(e);void 0!==r&&(this[l].delete(e),this[c](i.time,[e].concat(t(r))))}}}],r&&n(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r}();r.Logger=u},"./node_modules/webpack/lib/logging/createConsoleLogger.js":function(e,r,t){function o(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if(void 0!==("undefined"!=typeof Symbol?Symbol:function(e){return e})&&null!=e[("undefined"!=typeof Symbol?Symbol:function(e){return e}).iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return n(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,r):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,o=new Array(r);t0&&"string"==typeof t[0]?["[".concat(e,"] ").concat(t[0])].concat(o(t.slice(1))):["[".concat(e,"]")].concat(o(t)):[]},i=u.some((function(r){return r(e)}));switch(r){case a.debug:if(!i)return;"function"==typeof l.debug?l.debug.apply(l,o(n())):l.log.apply(l,o(n()));break;case a.log:if(!i&&p>c.log)return;l.log.apply(l,o(n()));break;case a.info:if(!i&&p>c.info)return;l.info.apply(l,o(n()));break;case a.warn:if(!i&&p>c.warn)return;l.warn.apply(l,o(n()));break;case a.error:if(!i&&p>c.error)return;l.error.apply(l,o(n()));break;case a.trace:if(!i)return;l.trace();break;case a.groupCollapsed:if(!i&&p>c.log)return;if(!i&&p>c.verbose){"function"==typeof l.groupCollapsed?l.groupCollapsed.apply(l,o(n())):l.log.apply(l,o(n()));break}case a.group:if(!i&&p>c.log)return;"function"==typeof l.group?l.group.apply(l,o(n())):l.log.apply(l,o(n()));break;case a.groupEnd:if(!i&&p>c.log)return;"function"==typeof l.groupEnd&&l.groupEnd();break;case a.time:if(!i&&p>c.log)return;var s=1e3*t[1]+t[2]/1e6,d="[".concat(e,"] ").concat(t[0],": ").concat(s," ms");"function"==typeof l.logTime?l.logTime(d):l.log(d);break;case a.profile:"function"==typeof l.profile&&l.profile.apply(l,o(n()));break;case a.profileEnd:"function"==typeof l.profileEnd&&l.profileEnd.apply(l,o(n()));break;case a.clear:if(!i&&p>c.log)return;"function"==typeof l.clear&&l.clear();break;case a.status:if(!i&&p>c.info)return;"function"==typeof l.status?0===t.length?l.status():l.status.apply(l,o(n())):0!==t.length&&l.info.apply(l,o(n()));break;default:throw new Error("Unexpected LogType ".concat(r))}}}},"./node_modules/webpack/lib/logging/runtime.js":function(e,r,t){function o(){return o=Object.assign?Object.assign.bind():function(e){for(var r=1;r{"use strict";t.d(r,{Bk:()=>c,He:()=>a,Rm:()=>i});var o=t(491),n=t.n(o);function a(e){n().configureDefaultLogger({level:e})}a("info");var i=n().getLogger("webpack-dev-server"),c=function(e){var r=Object.keys(e);if(e&&0!==r.length){for(var t="Server started:",o=0;o{var o,n=function(){return o.indexOf(t.h())>=0},a=t(922),i=function r(){e.hot.check(!0).then((function(e){if(!e)return a("warning","[HMR] Cannot find update. "+("undefined"!=typeof window?"Need to do a full reload!":"Please reload manually!")),a("warning","[HMR] (Probably because of restarting the webpack-dev-server)"),void("undefined"!=typeof window&&window.location.reload());n()||r(),t(617)(e,e),n()&&a("info","[HMR] App is up to date.")})).catch((function(r){var t=e.hot.status();["abort","fail"].indexOf(t)>=0?(a("warning","[HMR] Cannot apply update. "+("undefined"!=typeof window?"Need to do a full reload!":"Please reload manually!")),a("warning","[HMR] "+a.formatError(r)),"undefined"!=typeof window&&window.location.reload()):a("warning","[HMR] Update failed: "+a.formatError(r))}))};t(982).on("webpackHotUpdate",(function(r){o=r,n()||"idle"!==e.hot.status()||(a("info","[HMR] Checking for updates on the server..."),i())})),a("info","[HMR] Waiting for update signal from WDS...")},982:(e,r,t)=>{var o=t(7);e.exports=new o},617:(e,r,t)=>{e.exports=function(e,r){var o=e.filter((function(e){return r&&r.indexOf(e)<0})),n=t(922);o.length>0&&(n("warning","[HMR] The following modules couldn't be hot updated: (They would need a full reload!)"),o.forEach((function(e){n("warning","[HMR] - "+e)}))),r&&0!==r.length?(n("info","[HMR] Updated modules:"),r.forEach((function(e){if("string"==typeof e&&-1!==e.indexOf("!")){var r=e.split("!");n.groupCollapsed("info","[HMR] - "+r.pop()),n("info","[HMR] - "+e),n.groupEnd("info")}else n("info","[HMR] - "+e)})),r.every((function(e){return"number"==typeof e}))&&n("info",'[HMR] Consider using the optimization.moduleIds: "named" for module names.')):n("info","[HMR] Nothing hot updated.")}},922:e=>{var r="info";function t(){}function o(e){return"info"===r&&"info"===e||["info","warning"].indexOf(r)>=0&&"warning"===e||["info","warning","error"].indexOf(r)>=0&&"error"===e}function n(e){return function(r,t){o(r)&&e(t)}}e.exports=function(e,r){o(e)&&("info"===e?console.log(r):"warning"===e?console.warn(r):"error"===e&&console.error(r))};var a=console.group||t,i=console.groupCollapsed||t,c=console.groupEnd||t;e.exports.group=n(a),e.exports.groupCollapsed=n(i),e.exports.groupEnd=n(c),e.exports.setLogLevel=function(e){r=e},e.exports.formatError=function(e){var r=e.message,t=e.stack;return t?t.indexOf(r)<0?r+"\n"+t:t:r}}},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var a=o[e]={id:e,exports:{}},i={id:e,module:a,factory:t[e],require:n};return n.i.forEach((function(e){e(i)})),a=i.module,i.factory.call(a.exports,a,a.exports,i.require),a.exports}n.m=t,n.c=o,n.i=[],n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.hu=e=>e+"."+n.h()+".hot-update.js",n.miniCssF=e=>{},n.hmrF=()=>"entry."+n.h()+".hot-update.json",n.h=()=>"0d2d1a6d0632d9fcdea7",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="search:",n.l=(t,o,a,i)=>{if(e[t])e[t].push(o);else{var c,s;if(void 0!==a)for(var l=document.getElementsByTagName("script"),u=0;u{c.onerror=c.onload=null,clearTimeout(f);var n=e[t];if(delete e[t],c.parentNode&&c.parentNode.removeChild(c),n&&n.forEach((e=>e(o))),r)return r(o)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=d.bind(null,c.onerror),c.onload=d.bind(null,c.onload),s&&document.head.appendChild(c)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e,r,t,o={},a=n.c,i=[],c=[],s="idle",l=0,u=[];function p(e){s=e;for(var r=[],t=0;t0)return p("abort").then((function(){throw n[0]}));var a=p("dispose");o.forEach((function(e){e.dispose&&e.dispose()}));var i,c=p("apply"),s=function(e){i||(i=e)},l=[];return o.forEach((function(e){if(e.apply){var r=e.apply(s);if(r)for(var t=0;t=0&&b._disposeHandlers.splice(r,1)},invalidate:function(){switch(this._selfInvalidated=!0,s){case"idle":r=[],Object.keys(n.hmrI).forEach((function(e){n.hmrI[e](m,r)})),p("ready");break;case"ready":Object.keys(n.hmrI).forEach((function(e){n.hmrI[e](m,r)}));break;case"prepare":case"check":case"dispose":case"apply":(t=t||[]).push(m)}},check:f,apply:g,status:function(e){if(!e)return s;c.push(e)},addStatusHandler:function(e){c.push(e)},removeStatusHandler:function(e){var r=c.indexOf(e);r>=0&&c.splice(r,1)},data:o[m]},e=void 0,b),y.parents=i,y.children=[],i=[],u.require=w})),n.hmrC={},n.hmrI={}})(),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var r=n.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{if("undefined"!=typeof document){var e=[],r=[],t=t=>({dispose:()=>{for(var r=0;r{for(var e=0;e{s.push(t),o.forEach((t=>{var o=n.miniCssF(t),a=n.p+o,i=((e,r)=>{for(var t=document.getElementsByTagName("link"),o=0;o{var s=((e,r,t,o,a)=>{var i=document.createElement("link");return i.rel="stylesheet",i.type="text/css",n.nc&&(i.nonce=n.nc),i.onerror=i.onload=t=>{if(i.onerror=i.onload=null,"load"===t.type)o();else{var n=t&&t.type,c=t&&t.target&&t.target.href||r,s=new Error("Loading CSS chunk "+e+" failed.\n("+n+": "+c+")");s.name="ChunkLoadError",s.code="CSS_CHUNK_LOAD_FAILED",s.type=n,s.request=c,i.parentNode&&i.parentNode.removeChild(i),a(s)}},i.href=r,t?t.parentNode.insertBefore(i,t.nextSibling):document.head.appendChild(i),i})(t,a,i,(()=>{s.as="style",s.rel="preload",o()}),c);e.push(i),r.push(s)})))}))}}})(),(()=>{var e,r,t,o,a,i=n.hmrS_jsonp=n.hmrS_jsonp||{201:0},c={};function s(r,t){return e=t,new Promise(((e,t)=>{c[r]=e;var o=n.p+n.hu(r),a=new Error;n.l(o,(e=>{if(c[r]){c[r]=void 0;var o=e&&("load"===e.type?"missing":e.type),n=e&&e.target&&e.target.src;a.message="Loading hot update chunk "+r+" failed.\n("+o+": "+n+")",a.name="ChunkLoadError",a.type=o,a.request=n,t(a)}}))}))}function l(e){function c(e){for(var r=[e],t={},o=r.map((function(e){return{chain:[e],id:e}}));o.length>0;){var a=o.pop(),i=a.id,c=a.chain,l=n.c[i];if(l&&(!l.hot._selfAccepted||l.hot._selfInvalidated)){if(l.hot._selfDeclined)return{type:"self-declined",chain:c,moduleId:i};if(l.hot._main)return{type:"unaccepted",chain:c,moduleId:i};for(var u=0;u ")),g.type){case"self-declined":e.onDeclined&&e.onDeclined(g),e.ignoreDeclined||(h=new Error("Aborted because of self decline: "+g.moduleId+y));break;case"declined":e.onDeclined&&e.onDeclined(g),e.ignoreDeclined||(h=new Error("Aborted because of declined dependency: "+g.moduleId+" in "+g.parentId+y));break;case"unaccepted":e.onUnaccepted&&e.onUnaccepted(g),e.ignoreUnaccepted||(h=new Error("Aborted because "+f+" is not accepted"+y));break;case"accepted":e.onAccepted&&e.onAccepted(g),v=!0;break;case"disposed":e.onDisposed&&e.onDisposed(g),b=!0;break;default:throw new Error("Unexception type "+g.type)}if(h)return{error:h};if(v)for(f in p[f]=m,s(u,g.outdatedModules),g.outdatedDependencies)n.o(g.outdatedDependencies,f)&&(l[f]||(l[f]=[]),s(l[f],g.outdatedDependencies[f]));b&&(s(u,[g.moduleId]),p[f]=d)}t=void 0;for(var w,q=[],E=0;E0;){var a=t.pop(),c=n.c[a];if(c){var s={},p=c.hot._disposeHandlers;for(E=0;E=0&&d.parents.splice(e,1)}}}for(var f in l)if(n.o(l,f)&&(c=n.c[f]))for(w=l[f],E=0;E=0&&c.children.splice(e,1)},apply:function(r){for(var t in p)n.o(p,t)&&(n.m[t]=p[t]);for(var o=0;o{for(var s in o)n.o(o,s)&&(t[s]=o[s],e&&e.push(s));i&&a.push(i),c[r]&&(c[r](),c[r]=void 0)},n.hmrI.jsonp=function(e,r){t||(t={},a=[],o=[],r.push(l)),n.o(t,e)||(t[e]=n.m[e])},n.hmrC.jsonp=function(e,c,u,p,d,f){d.push(l),r={},o=c,t=u.reduce((function(e,r){return e[r]=!1,e}),{}),a=[],e.forEach((function(e){n.o(i,e)&&void 0!==i[e]?(p.push(s(e,f)),r[e]=!0):r[e]=!1})),n.f&&(n.f.jsonpHmr=function(e,t){r&&n.o(r,e)&&!r[e]&&(t.push(s(e)),r[e]=!0)})},n.hmrM=()=>{if("undefined"==typeof fetch)throw new Error("No browser support: need fetch API");return fetch(n.p+n.hmrF()).then((e=>{if(404!==e.status){if(!e.ok)throw new Error("Failed to fetch update manifest "+e.statusText);return e.json()}}))}})(),n(877),n(943),n(132)})(); \ No newline at end of file +(()=>{var e,r,t={352:e=>{"use strict";e.exports=i;var r=/(?:(?:\u001b\[)|\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\u001b[A-M]/,t={reset:["fff","000"],black:"000",red:"ff0000",green:"209805",yellow:"e8bf03",blue:"0000ff",magenta:"ff00ff",cyan:"00ffee",lightgrey:"f0f0f0",darkgrey:"888"},o={30:"black",31:"red",32:"green",33:"yellow",34:"blue",35:"magenta",36:"cyan",37:"lightgrey"},n={1:"font-weight:bold",2:"opacity:0.5",3:"",4:"",8:"display:none",9:""},a={23:"",24:"",29:""};function i(e){if(!r.test(e))return e;var t=[],o=e.replace(/\033\[(\d+)m/g,(function(e,r){var o=n[r];if(o)return~t.indexOf(r)?(t.pop(),""):(t.push(r),"<"===o[0]?o:'');var i=a[r];return i?(t.pop(),i):""})),i=t.length;return i>0&&(o+=Array(i+1).join("")),o}function c(e){for(var r in n[0]="font-weight:normal;opacity:1;color:#"+e.reset[0]+";background:#"+e.reset[1],n[7]="color:#"+e.reset[1]+";background:#"+e.reset[0],n[90]="color:#"+e.darkgrey,o){var t=e[o[r]]||"000";n[r]="color:#"+t,r=parseInt(r),n[(r+10).toString()]="background:#"+t}}[0,21,22,27,28,39,49].forEach((function(e){a[e]=""})),i.setColors=function(e){if("object"!=typeof e)throw new Error("`colors` parameter must be an Object.");var r={};for(var o in t){var n=e.hasOwnProperty(o)?e[o]:null;if(n){if("reset"===o){if("string"==typeof n&&(n=[n]),!Array.isArray(n)||0===n.length||n.some((function(e){return"string"!=typeof e})))throw new Error("The value of `"+o+"` property must be an Array and each item could only be a hex string, e.g.: FF0000");var a=t[o];n[0]||(n[0]=a[0]),1!==n.length&&n[1]||(n=[n[0]]).push(a[1]),n=n.slice(0,2)}else if("string"!=typeof n)throw new Error("The value of `"+o+"` property must be a hex string, e.g.: FF0000");r[o]=n}else r[o]=t[o]}c(r)},i.reset=function(){c(t)},i.tags={},Object.defineProperty?(Object.defineProperty(i.tags,"open",{get:function(){return n}}),Object.defineProperty(i.tags,"close",{get:function(){return a}})):(i.tags.open=n,i.tags.close=a),i.reset()},7:e=>{"use strict";var r,t="object"==typeof Reflect?Reflect:null,o=t&&"function"==typeof t.apply?t.apply:function(e,r,t){return Function.prototype.apply.call(e,r,t)};r=t&&"function"==typeof t.ownKeys?t.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var n=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}e.exports=a,e.exports.once=function(e,r){return new Promise((function(t,o){function n(t){e.removeListener(r,a),o(t)}function a(){"function"==typeof e.removeListener&&e.removeListener("error",n),t([].slice.call(arguments))}m(e,r,a,{once:!0}),"error"!==r&&function(e,r){"function"==typeof e.on&&m(e,"error",r,{once:!0})}(e,n)}))},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var i=10;function c(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function s(e,r,t,o){var n,a,i,s;if(c(t),void 0===(a=e._events)?(a=e._events=Object.create(null),e._eventsCount=0):(void 0!==a.newListener&&(e.emit("newListener",r,t.listener?t.listener:t),a=e._events),i=a[r]),void 0===i)i=a[r]=t,++e._eventsCount;else if("function"==typeof i?i=a[r]=o?[t,i]:[i,t]:o?i.unshift(t):i.push(t),(n=l(e))>0&&i.length>n&&!i.warned){i.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(r)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=r,u.count=i.length,s=u,console&&console.warn&&console.warn(s)}return e}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,r,t){var o={fired:!1,wrapFn:void 0,target:e,type:r,listener:t},n=u.bind(o);return n.listener=t,o.wrapFn=n,n}function p(e,r,t){var o=e._events;if(void 0===o)return[];var n=o[r];return void 0===n?[]:"function"==typeof n?t?[n.listener||n]:[n]:t?function(e){for(var r=new Array(e.length),t=0;t0&&(i=r[0]),i instanceof Error)throw i;var c=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw c.context=i,c}var l=a[e];if(void 0===l)return!1;if("function"==typeof l)o(l,this,r);else{var s=l.length,u=g(l,s);for(t=0;t=0;a--)if(t[a]===r||t[a].listener===r){i=t[a].listener,n=a;break}if(n<0)return this;0===n?t.shift():function(e,r){for(;r+1=0;o--)this.removeListener(e,r[o]);return this},a.prototype.listeners=function(e){return p(this,e,!0)},a.prototype.rawListeners=function(e){return p(this,e,!1)},a.listenerCount=function(e,r){return"function"==typeof e.listenerCount?e.listenerCount(r):f.call(e,r)},a.prototype.listenerCount=f,a.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},376:function(e,r,t){"use strict";var o=this&&this.__assign||function(){return o=Object.assign||function(e){for(var r,t=1,o=arguments.length;t'"&]/g,nonAscii:/[<>'"&\u0080-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,nonAsciiPrintable:/[<>'"&\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,nonAsciiPrintableOnly:/[\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g,extensive:/[\x01-\x0c\x0e-\x1f\x21-\x2c\x2e-\x2f\x3a-\x40\x5b-\x60\x7b-\x7d\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/g},u={mode:"specialChars",level:"all",numeric:"decimal"};r.encode=function(e,r){var t=void 0===r?u:r,o=t.mode,n=void 0===o?"specialChars":o,a=t.numeric,d=void 0===a?"decimal":a,p=t.level;if(!e)return"";var f=s[n],g=c[void 0===p?"all":p].characters,m="hexadecimal"===d;return l(e,f,(function(e){var r=g[e];if(!r){var t=e.length>1?i.getCodePoint(e,0):e.charCodeAt(0);r=(m?"&#x"+t.toString(16):"&#"+t)+";"}return r}))};var d={scope:"body",level:"all"},p=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g,f=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g,g={xml:{strict:p,attribute:f,body:n.bodyRegExps.xml},html4:{strict:p,attribute:f,body:n.bodyRegExps.html4},html5:{strict:p,attribute:f,body:n.bodyRegExps.html5}},m=o(o({},g),{all:g.html5}),h=String.fromCharCode,v=h(65533),b={level:"all"};function y(e,r,t,o){var n=e,c=e[e.length-1];if(t&&"="===c)n=e;else if(o&&";"!==c)n=e;else{var l=r[e];if(l)n=l;else if("&"===e[0]&&"#"===e[1]){var s=e[2],u="x"==s||"X"==s?parseInt(e.substr(3),16):parseInt(e.substr(2));n=u>=1114111?v:u>65535?i.fromCodePoint(u):h(a.numericUnicodeMap[u]||u)}}return n}r.decodeEntity=function(e,r){var t=(void 0===r?b:r).level;return e?y(e,c[void 0===t?"all":t].entities,!1,!1):""},r.decode=function(e,r){var t=void 0===r?d:r,o=t.level,n=void 0===o?"all":o,a=t.scope,i=void 0===a?"xml"===n?"strict":"body":a;if(!e)return"";var s=m[n][i],u=c[n].entities,p="attribute"===i,f="strict"===i;return l(e,s,(function(e){return y(e,u,p,f)}))}},340:(e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.bodyRegExps={xml:/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/∉|&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/·|℗|⋇|⪧|⩺|⋗|⦕|⩼|⪆|⥸|⋗|⋛|⪌|≷|≳|⪦|⩹|⋖|⋋|⋉|⥶|⩻|⦖|◃|⊴|◂|∉|⋹̸|⋵̸|∉|⋷|⋶|∌|∌|⋾|⋽|∥|⊠|⨱|⨰|&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g},r.namedReferences={xml:{entities:{"<":"<",">":">",""":'"',"'":"'","&":"&"},characters:{"<":"<",">":">",'"':""","'":"'","&":"&"}},html4:{entities:{"'":"'"," ":" "," ":" ","¡":"¡","¡":"¡","¢":"¢","¢":"¢","£":"£","£":"£","¤":"¤","¤":"¤","¥":"¥","¥":"¥","¦":"¦","¦":"¦","§":"§","§":"§","¨":"¨","¨":"¨","©":"©","©":"©","ª":"ª","ª":"ª","«":"«","«":"«","¬":"¬","¬":"¬","­":"­","­":"­","®":"®","®":"®","¯":"¯","¯":"¯","°":"°","°":"°","±":"±","±":"±","²":"²","²":"²","³":"³","³":"³","´":"´","´":"´","µ":"µ","µ":"µ","¶":"¶","¶":"¶","·":"·","·":"·","¸":"¸","¸":"¸","¹":"¹","¹":"¹","º":"º","º":"º","»":"»","»":"»","¼":"¼","¼":"¼","½":"½","½":"½","¾":"¾","¾":"¾","¿":"¿","¿":"¿","À":"À","À":"À","Á":"Á","Á":"Á","Â":"Â","Â":"Â","Ã":"Ã","Ã":"Ã","Ä":"Ä","Ä":"Ä","Å":"Å","Å":"Å","Æ":"Æ","Æ":"Æ","Ç":"Ç","Ç":"Ç","È":"È","È":"È","É":"É","É":"É","Ê":"Ê","Ê":"Ê","Ë":"Ë","Ë":"Ë","Ì":"Ì","Ì":"Ì","Í":"Í","Í":"Í","Î":"Î","Î":"Î","Ï":"Ï","Ï":"Ï","Ð":"Ð","Ð":"Ð","Ñ":"Ñ","Ñ":"Ñ","Ò":"Ò","Ò":"Ò","Ó":"Ó","Ó":"Ó","Ô":"Ô","Ô":"Ô","Õ":"Õ","Õ":"Õ","Ö":"Ö","Ö":"Ö","×":"×","×":"×","Ø":"Ø","Ø":"Ø","Ù":"Ù","Ù":"Ù","Ú":"Ú","Ú":"Ú","Û":"Û","Û":"Û","Ü":"Ü","Ü":"Ü","Ý":"Ý","Ý":"Ý","Þ":"Þ","Þ":"Þ","ß":"ß","ß":"ß","à":"à","à":"à","á":"á","á":"á","â":"â","â":"â","ã":"ã","ã":"ã","ä":"ä","ä":"ä","å":"å","å":"å","æ":"æ","æ":"æ","ç":"ç","ç":"ç","è":"è","è":"è","é":"é","é":"é","ê":"ê","ê":"ê","ë":"ë","ë":"ë","ì":"ì","ì":"ì","í":"í","í":"í","î":"î","î":"î","ï":"ï","ï":"ï","ð":"ð","ð":"ð","ñ":"ñ","ñ":"ñ","ò":"ò","ò":"ò","ó":"ó","ó":"ó","ô":"ô","ô":"ô","õ":"õ","õ":"õ","ö":"ö","ö":"ö","÷":"÷","÷":"÷","ø":"ø","ø":"ø","ù":"ù","ù":"ù","ú":"ú","ú":"ú","û":"û","û":"û","ü":"ü","ü":"ü","ý":"ý","ý":"ý","þ":"þ","þ":"þ","ÿ":"ÿ","ÿ":"ÿ",""":'"',""":'"',"&":"&","&":"&","<":"<","<":"<",">":">",">":">","Œ":"Œ","œ":"œ","Š":"Š","š":"š","Ÿ":"Ÿ","ˆ":"ˆ","˜":"˜"," ":" "," ":" "," ":" ","‌":"‌","‍":"‍","‎":"‎","‏":"‏","–":"–","—":"—","‘":"‘","’":"’","‚":"‚","“":"“","”":"”","„":"„","†":"†","‡":"‡","‰":"‰","‹":"‹","›":"›","€":"€","ƒ":"ƒ","Α":"Α","Β":"Β","Γ":"Γ","Δ":"Δ","Ε":"Ε","Ζ":"Ζ","Η":"Η","Θ":"Θ","Ι":"Ι","Κ":"Κ","Λ":"Λ","Μ":"Μ","Ν":"Ν","Ξ":"Ξ","Ο":"Ο","Π":"Π","Ρ":"Ρ","Σ":"Σ","Τ":"Τ","Υ":"Υ","Φ":"Φ","Χ":"Χ","Ψ":"Ψ","Ω":"Ω","α":"α","β":"β","γ":"γ","δ":"δ","ε":"ε","ζ":"ζ","η":"η","θ":"θ","ι":"ι","κ":"κ","λ":"λ","μ":"μ","ν":"ν","ξ":"ξ","ο":"ο","π":"π","ρ":"ρ","ς":"ς","σ":"σ","τ":"τ","υ":"υ","φ":"φ","χ":"χ","ψ":"ψ","ω":"ω","ϑ":"ϑ","ϒ":"ϒ","ϖ":"ϖ","•":"•","…":"…","′":"′","″":"″","‾":"‾","⁄":"⁄","℘":"℘","ℑ":"ℑ","ℜ":"ℜ","™":"™","ℵ":"ℵ","←":"←","↑":"↑","→":"→","↓":"↓","↔":"↔","↵":"↵","⇐":"⇐","⇑":"⇑","⇒":"⇒","⇓":"⇓","⇔":"⇔","∀":"∀","∂":"∂","∃":"∃","∅":"∅","∇":"∇","∈":"∈","∉":"∉","∋":"∋","∏":"∏","∑":"∑","−":"−","∗":"∗","√":"√","∝":"∝","∞":"∞","∠":"∠","∧":"∧","∨":"∨","∩":"∩","∪":"∪","∫":"∫","∴":"∴","∼":"∼","≅":"≅","≈":"≈","≠":"≠","≡":"≡","≤":"≤","≥":"≥","⊂":"⊂","⊃":"⊃","⊄":"⊄","⊆":"⊆","⊇":"⊇","⊕":"⊕","⊗":"⊗","⊥":"⊥","⋅":"⋅","⌈":"⌈","⌉":"⌉","⌊":"⌊","⌋":"⌋","⟨":"〈","⟩":"〉","◊":"◊","♠":"♠","♣":"♣","♥":"♥","♦":"♦"},characters:{"'":"'"," ":" ","¡":"¡","¢":"¢","£":"£","¤":"¤","¥":"¥","¦":"¦","§":"§","¨":"¨","©":"©",ª:"ª","«":"«","¬":"¬","­":"­","®":"®","¯":"¯","°":"°","±":"±","²":"²","³":"³","´":"´",µ:"µ","¶":"¶","·":"·","¸":"¸","¹":"¹",º:"º","»":"»","¼":"¼","½":"½","¾":"¾","¿":"¿",À:"À",Á:"Á",Â:"Â",Ã:"Ã",Ä:"Ä",Å:"Å",Æ:"Æ",Ç:"Ç",È:"È",É:"É",Ê:"Ê",Ë:"Ë",Ì:"Ì",Í:"Í",Î:"Î",Ï:"Ï",Ð:"Ð",Ñ:"Ñ",Ò:"Ò",Ó:"Ó",Ô:"Ô",Õ:"Õ",Ö:"Ö","×":"×",Ø:"Ø",Ù:"Ù",Ú:"Ú",Û:"Û",Ü:"Ü",Ý:"Ý",Þ:"Þ",ß:"ß",à:"à",á:"á",â:"â",ã:"ã",ä:"ä",å:"å",æ:"æ",ç:"ç",è:"è",é:"é",ê:"ê",ë:"ë",ì:"ì",í:"í",î:"î",ï:"ï",ð:"ð",ñ:"ñ",ò:"ò",ó:"ó",ô:"ô",õ:"õ",ö:"ö","÷":"÷",ø:"ø",ù:"ù",ú:"ú",û:"û",ü:"ü",ý:"ý",þ:"þ",ÿ:"ÿ",'"':""","&":"&","<":"<",">":">",Œ:"Œ",œ:"œ",Š:"Š",š:"š",Ÿ:"Ÿ",ˆ:"ˆ","˜":"˜"," ":" "," ":" "," ":" ","‌":"‌","‍":"‍","‎":"‎","‏":"‏","–":"–","—":"—","‘":"‘","’":"’","‚":"‚","“":"“","”":"”","„":"„","†":"†","‡":"‡","‰":"‰","‹":"‹","›":"›","€":"€",ƒ:"ƒ",Α:"Α",Β:"Β",Γ:"Γ",Δ:"Δ",Ε:"Ε",Ζ:"Ζ",Η:"Η",Θ:"Θ",Ι:"Ι",Κ:"Κ",Λ:"Λ",Μ:"Μ",Ν:"Ν",Ξ:"Ξ",Ο:"Ο",Π:"Π",Ρ:"Ρ",Σ:"Σ",Τ:"Τ",Υ:"Υ",Φ:"Φ",Χ:"Χ",Ψ:"Ψ",Ω:"Ω",α:"α",β:"β",γ:"γ",δ:"δ",ε:"ε",ζ:"ζ",η:"η",θ:"θ",ι:"ι",κ:"κ",λ:"λ",μ:"μ",ν:"ν",ξ:"ξ",ο:"ο",π:"π",ρ:"ρ",ς:"ς",σ:"σ",τ:"τ",υ:"υ",φ:"φ",χ:"χ",ψ:"ψ",ω:"ω",ϑ:"ϑ",ϒ:"ϒ",ϖ:"ϖ","•":"•","…":"…","′":"′","″":"″","‾":"‾","⁄":"⁄",℘:"℘",ℑ:"ℑ",ℜ:"ℜ","™":"™",ℵ:"ℵ","←":"←","↑":"↑","→":"→","↓":"↓","↔":"↔","↵":"↵","⇐":"⇐","⇑":"⇑","⇒":"⇒","⇓":"⇓","⇔":"⇔","∀":"∀","∂":"∂","∃":"∃","∅":"∅","∇":"∇","∈":"∈","∉":"∉","∋":"∋","∏":"∏","∑":"∑","−":"−","∗":"∗","√":"√","∝":"∝","∞":"∞","∠":"∠","∧":"∧","∨":"∨","∩":"∩","∪":"∪","∫":"∫","∴":"∴","∼":"∼","≅":"≅","≈":"≈","≠":"≠","≡":"≡","≤":"≤","≥":"≥","⊂":"⊂","⊃":"⊃","⊄":"⊄","⊆":"⊆","⊇":"⊇","⊕":"⊕","⊗":"⊗","⊥":"⊥","⋅":"⋅","⌈":"⌈","⌉":"⌉","⌊":"⌊","⌋":"⌋","〈":"⟨","〉":"⟩","◊":"◊","♠":"♠","♣":"♣","♥":"♥","♦":"♦"}},html5:{entities:{"Æ":"Æ","Æ":"Æ","&":"&","&":"&","Á":"Á","Á":"Á","Ă":"Ă","Â":"Â","Â":"Â","А":"А","𝔄":"𝔄","À":"À","À":"À","Α":"Α","Ā":"Ā","⩓":"⩓","Ą":"Ą","𝔸":"𝔸","⁡":"⁡","Å":"Å","Å":"Å","𝒜":"𝒜","≔":"≔","Ã":"Ã","Ã":"Ã","Ä":"Ä","Ä":"Ä","∖":"∖","⫧":"⫧","⌆":"⌆","Б":"Б","∵":"∵","ℬ":"ℬ","Β":"Β","𝔅":"𝔅","𝔹":"𝔹","˘":"˘","ℬ":"ℬ","≎":"≎","Ч":"Ч","©":"©","©":"©","Ć":"Ć","⋒":"⋒","ⅅ":"ⅅ","ℭ":"ℭ","Č":"Č","Ç":"Ç","Ç":"Ç","Ĉ":"Ĉ","∰":"∰","Ċ":"Ċ","¸":"¸","·":"·","ℭ":"ℭ","Χ":"Χ","⊙":"⊙","⊖":"⊖","⊕":"⊕","⊗":"⊗","∲":"∲","”":"”","’":"’","∷":"∷","⩴":"⩴","≡":"≡","∯":"∯","∮":"∮","ℂ":"ℂ","∐":"∐","∳":"∳","⨯":"⨯","𝒞":"𝒞","⋓":"⋓","≍":"≍","ⅅ":"ⅅ","⤑":"⤑","Ђ":"Ђ","Ѕ":"Ѕ","Џ":"Џ","‡":"‡","↡":"↡","⫤":"⫤","Ď":"Ď","Д":"Д","∇":"∇","Δ":"Δ","𝔇":"𝔇","´":"´","˙":"˙","˝":"˝","`":"`","˜":"˜","⋄":"⋄","ⅆ":"ⅆ","𝔻":"𝔻","¨":"¨","⃜":"⃜","≐":"≐","∯":"∯","¨":"¨","⇓":"⇓","⇐":"⇐","⇔":"⇔","⫤":"⫤","⟸":"⟸","⟺":"⟺","⟹":"⟹","⇒":"⇒","⊨":"⊨","⇑":"⇑","⇕":"⇕","∥":"∥","↓":"↓","⤓":"⤓","⇵":"⇵","̑":"̑","⥐":"⥐","⥞":"⥞","↽":"↽","⥖":"⥖","⥟":"⥟","⇁":"⇁","⥗":"⥗","⊤":"⊤","↧":"↧","⇓":"⇓","𝒟":"𝒟","Đ":"Đ","Ŋ":"Ŋ","Ð":"Ð","Ð":"Ð","É":"É","É":"É","Ě":"Ě","Ê":"Ê","Ê":"Ê","Э":"Э","Ė":"Ė","𝔈":"𝔈","È":"È","È":"È","∈":"∈","Ē":"Ē","◻":"◻","▫":"▫","Ę":"Ę","𝔼":"𝔼","Ε":"Ε","⩵":"⩵","≂":"≂","⇌":"⇌","ℰ":"ℰ","⩳":"⩳","Η":"Η","Ë":"Ë","Ë":"Ë","∃":"∃","ⅇ":"ⅇ","Ф":"Ф","𝔉":"𝔉","◼":"◼","▪":"▪","𝔽":"𝔽","∀":"∀","ℱ":"ℱ","ℱ":"ℱ","Ѓ":"Ѓ",">":">",">":">","Γ":"Γ","Ϝ":"Ϝ","Ğ":"Ğ","Ģ":"Ģ","Ĝ":"Ĝ","Г":"Г","Ġ":"Ġ","𝔊":"𝔊","⋙":"⋙","𝔾":"𝔾","≥":"≥","⋛":"⋛","≧":"≧","⪢":"⪢","≷":"≷","⩾":"⩾","≳":"≳","𝒢":"𝒢","≫":"≫","Ъ":"Ъ","ˇ":"ˇ","^":"^","Ĥ":"Ĥ","ℌ":"ℌ","ℋ":"ℋ","ℍ":"ℍ","─":"─","ℋ":"ℋ","Ħ":"Ħ","≎":"≎","≏":"≏","Е":"Е","IJ":"IJ","Ё":"Ё","Í":"Í","Í":"Í","Î":"Î","Î":"Î","И":"И","İ":"İ","ℑ":"ℑ","Ì":"Ì","Ì":"Ì","ℑ":"ℑ","Ī":"Ī","ⅈ":"ⅈ","⇒":"⇒","∬":"∬","∫":"∫","⋂":"⋂","⁣":"⁣","⁢":"⁢","Į":"Į","𝕀":"𝕀","Ι":"Ι","ℐ":"ℐ","Ĩ":"Ĩ","І":"І","Ï":"Ï","Ï":"Ï","Ĵ":"Ĵ","Й":"Й","𝔍":"𝔍","𝕁":"𝕁","𝒥":"𝒥","Ј":"Ј","Є":"Є","Х":"Х","Ќ":"Ќ","Κ":"Κ","Ķ":"Ķ","К":"К","𝔎":"𝔎","𝕂":"𝕂","𝒦":"𝒦","Љ":"Љ","<":"<","<":"<","Ĺ":"Ĺ","Λ":"Λ","⟪":"⟪","ℒ":"ℒ","↞":"↞","Ľ":"Ľ","Ļ":"Ļ","Л":"Л","⟨":"⟨","←":"←","⇤":"⇤","⇆":"⇆","⌈":"⌈","⟦":"⟦","⥡":"⥡","⇃":"⇃","⥙":"⥙","⌊":"⌊","↔":"↔","⥎":"⥎","⊣":"⊣","↤":"↤","⥚":"⥚","⊲":"⊲","⧏":"⧏","⊴":"⊴","⥑":"⥑","⥠":"⥠","↿":"↿","⥘":"⥘","↼":"↼","⥒":"⥒","⇐":"⇐","⇔":"⇔","⋚":"⋚","≦":"≦","≶":"≶","⪡":"⪡","⩽":"⩽","≲":"≲","𝔏":"𝔏","⋘":"⋘","⇚":"⇚","Ŀ":"Ŀ","⟵":"⟵","⟷":"⟷","⟶":"⟶","⟸":"⟸","⟺":"⟺","⟹":"⟹","𝕃":"𝕃","↙":"↙","↘":"↘","ℒ":"ℒ","↰":"↰","Ł":"Ł","≪":"≪","⤅":"⤅","М":"М"," ":" ","ℳ":"ℳ","𝔐":"𝔐","∓":"∓","𝕄":"𝕄","ℳ":"ℳ","Μ":"Μ","Њ":"Њ","Ń":"Ń","Ň":"Ň","Ņ":"Ņ","Н":"Н","​":"​","​":"​","​":"​","​":"​","≫":"≫","≪":"≪"," ":"\n","𝔑":"𝔑","⁠":"⁠"," ":" ","ℕ":"ℕ","⫬":"⫬","≢":"≢","≭":"≭","∦":"∦","∉":"∉","≠":"≠","≂̸":"≂̸","∄":"∄","≯":"≯","≱":"≱","≧̸":"≧̸","≫̸":"≫̸","≹":"≹","⩾̸":"⩾̸","≵":"≵","≎̸":"≎̸","≏̸":"≏̸","⋪":"⋪","⧏̸":"⧏̸","⋬":"⋬","≮":"≮","≰":"≰","≸":"≸","≪̸":"≪̸","⩽̸":"⩽̸","≴":"≴","⪢̸":"⪢̸","⪡̸":"⪡̸","⊀":"⊀","⪯̸":"⪯̸","⋠":"⋠","∌":"∌","⋫":"⋫","⧐̸":"⧐̸","⋭":"⋭","⊏̸":"⊏̸","⋢":"⋢","⊐̸":"⊐̸","⋣":"⋣","⊂⃒":"⊂⃒","⊈":"⊈","⊁":"⊁","⪰̸":"⪰̸","⋡":"⋡","≿̸":"≿̸","⊃⃒":"⊃⃒","⊉":"⊉","≁":"≁","≄":"≄","≇":"≇","≉":"≉","∤":"∤","𝒩":"𝒩","Ñ":"Ñ","Ñ":"Ñ","Ν":"Ν","Œ":"Œ","Ó":"Ó","Ó":"Ó","Ô":"Ô","Ô":"Ô","О":"О","Ő":"Ő","𝔒":"𝔒","Ò":"Ò","Ò":"Ò","Ō":"Ō","Ω":"Ω","Ο":"Ο","𝕆":"𝕆","“":"“","‘":"‘","⩔":"⩔","𝒪":"𝒪","Ø":"Ø","Ø":"Ø","Õ":"Õ","Õ":"Õ","⨷":"⨷","Ö":"Ö","Ö":"Ö","‾":"‾","⏞":"⏞","⎴":"⎴","⏜":"⏜","∂":"∂","П":"П","𝔓":"𝔓","Φ":"Φ","Π":"Π","±":"±","ℌ":"ℌ","ℙ":"ℙ","⪻":"⪻","≺":"≺","⪯":"⪯","≼":"≼","≾":"≾","″":"″","∏":"∏","∷":"∷","∝":"∝","𝒫":"𝒫","Ψ":"Ψ",""":'"',""":'"',"𝔔":"𝔔","ℚ":"ℚ","𝒬":"𝒬","⤐":"⤐","®":"®","®":"®","Ŕ":"Ŕ","⟫":"⟫","↠":"↠","⤖":"⤖","Ř":"Ř","Ŗ":"Ŗ","Р":"Р","ℜ":"ℜ","∋":"∋","⇋":"⇋","⥯":"⥯","ℜ":"ℜ","Ρ":"Ρ","⟩":"⟩","→":"→","⇥":"⇥","⇄":"⇄","⌉":"⌉","⟧":"⟧","⥝":"⥝","⇂":"⇂","⥕":"⥕","⌋":"⌋","⊢":"⊢","↦":"↦","⥛":"⥛","⊳":"⊳","⧐":"⧐","⊵":"⊵","⥏":"⥏","⥜":"⥜","↾":"↾","⥔":"⥔","⇀":"⇀","⥓":"⥓","⇒":"⇒","ℝ":"ℝ","⥰":"⥰","⇛":"⇛","ℛ":"ℛ","↱":"↱","⧴":"⧴","Щ":"Щ","Ш":"Ш","Ь":"Ь","Ś":"Ś","⪼":"⪼","Š":"Š","Ş":"Ş","Ŝ":"Ŝ","С":"С","𝔖":"𝔖","↓":"↓","←":"←","→":"→","↑":"↑","Σ":"Σ","∘":"∘","𝕊":"𝕊","√":"√","□":"□","⊓":"⊓","⊏":"⊏","⊑":"⊑","⊐":"⊐","⊒":"⊒","⊔":"⊔","𝒮":"𝒮","⋆":"⋆","⋐":"⋐","⋐":"⋐","⊆":"⊆","≻":"≻","⪰":"⪰","≽":"≽","≿":"≿","∋":"∋","∑":"∑","⋑":"⋑","⊃":"⊃","⊇":"⊇","⋑":"⋑","Þ":"Þ","Þ":"Þ","™":"™","Ћ":"Ћ","Ц":"Ц"," ":"\t","Τ":"Τ","Ť":"Ť","Ţ":"Ţ","Т":"Т","𝔗":"𝔗","∴":"∴","Θ":"Θ","  ":"  "," ":" ","∼":"∼","≃":"≃","≅":"≅","≈":"≈","𝕋":"𝕋","⃛":"⃛","𝒯":"𝒯","Ŧ":"Ŧ","Ú":"Ú","Ú":"Ú","↟":"↟","⥉":"⥉","Ў":"Ў","Ŭ":"Ŭ","Û":"Û","Û":"Û","У":"У","Ű":"Ű","𝔘":"𝔘","Ù":"Ù","Ù":"Ù","Ū":"Ū","_":"_","⏟":"⏟","⎵":"⎵","⏝":"⏝","⋃":"⋃","⊎":"⊎","Ų":"Ų","𝕌":"𝕌","↑":"↑","⤒":"⤒","⇅":"⇅","↕":"↕","⥮":"⥮","⊥":"⊥","↥":"↥","⇑":"⇑","⇕":"⇕","↖":"↖","↗":"↗","ϒ":"ϒ","Υ":"Υ","Ů":"Ů","𝒰":"𝒰","Ũ":"Ũ","Ü":"Ü","Ü":"Ü","⊫":"⊫","⫫":"⫫","В":"В","⊩":"⊩","⫦":"⫦","⋁":"⋁","‖":"‖","‖":"‖","∣":"∣","|":"|","❘":"❘","≀":"≀"," ":" ","𝔙":"𝔙","𝕍":"𝕍","𝒱":"𝒱","⊪":"⊪","Ŵ":"Ŵ","⋀":"⋀","𝔚":"𝔚","𝕎":"𝕎","𝒲":"𝒲","𝔛":"𝔛","Ξ":"Ξ","𝕏":"𝕏","𝒳":"𝒳","Я":"Я","Ї":"Ї","Ю":"Ю","Ý":"Ý","Ý":"Ý","Ŷ":"Ŷ","Ы":"Ы","𝔜":"𝔜","𝕐":"𝕐","𝒴":"𝒴","Ÿ":"Ÿ","Ж":"Ж","Ź":"Ź","Ž":"Ž","З":"З","Ż":"Ż","​":"​","Ζ":"Ζ","ℨ":"ℨ","ℤ":"ℤ","𝒵":"𝒵","á":"á","á":"á","ă":"ă","∾":"∾","∾̳":"∾̳","∿":"∿","â":"â","â":"â","´":"´","´":"´","а":"а","æ":"æ","æ":"æ","⁡":"⁡","𝔞":"𝔞","à":"à","à":"à","ℵ":"ℵ","ℵ":"ℵ","α":"α","ā":"ā","⨿":"⨿","&":"&","&":"&","∧":"∧","⩕":"⩕","⩜":"⩜","⩘":"⩘","⩚":"⩚","∠":"∠","⦤":"⦤","∠":"∠","∡":"∡","⦨":"⦨","⦩":"⦩","⦪":"⦪","⦫":"⦫","⦬":"⦬","⦭":"⦭","⦮":"⦮","⦯":"⦯","∟":"∟","⊾":"⊾","⦝":"⦝","∢":"∢","Å":"Å","⍼":"⍼","ą":"ą","𝕒":"𝕒","≈":"≈","⩰":"⩰","⩯":"⩯","≊":"≊","≋":"≋","'":"'","≈":"≈","≊":"≊","å":"å","å":"å","𝒶":"𝒶","*":"*","≈":"≈","≍":"≍","ã":"ã","ã":"ã","ä":"ä","ä":"ä","∳":"∳","⨑":"⨑","⫭":"⫭","≌":"≌","϶":"϶","‵":"‵","∽":"∽","⋍":"⋍","⊽":"⊽","⌅":"⌅","⌅":"⌅","⎵":"⎵","⎶":"⎶","≌":"≌","б":"б","„":"„","∵":"∵","∵":"∵","⦰":"⦰","϶":"϶","ℬ":"ℬ","β":"β","ℶ":"ℶ","≬":"≬","𝔟":"𝔟","⋂":"⋂","◯":"◯","⋃":"⋃","⨀":"⨀","⨁":"⨁","⨂":"⨂","⨆":"⨆","★":"★","▽":"▽","△":"△","⨄":"⨄","⋁":"⋁","⋀":"⋀","⤍":"⤍","⧫":"⧫","▪":"▪","▴":"▴","▾":"▾","◂":"◂","▸":"▸","␣":"␣","▒":"▒","░":"░","▓":"▓","█":"█","=⃥":"=⃥","≡⃥":"≡⃥","⌐":"⌐","𝕓":"𝕓","⊥":"⊥","⊥":"⊥","⋈":"⋈","╗":"╗","╔":"╔","╖":"╖","╓":"╓","═":"═","╦":"╦","╩":"╩","╤":"╤","╧":"╧","╝":"╝","╚":"╚","╜":"╜","╙":"╙","║":"║","╬":"╬","╣":"╣","╠":"╠","╫":"╫","╢":"╢","╟":"╟","⧉":"⧉","╕":"╕","╒":"╒","┐":"┐","┌":"┌","─":"─","╥":"╥","╨":"╨","┬":"┬","┴":"┴","⊟":"⊟","⊞":"⊞","⊠":"⊠","╛":"╛","╘":"╘","┘":"┘","└":"└","│":"│","╪":"╪","╡":"╡","╞":"╞","┼":"┼","┤":"┤","├":"├","‵":"‵","˘":"˘","¦":"¦","¦":"¦","𝒷":"𝒷","⁏":"⁏","∽":"∽","⋍":"⋍","\":"\\","⧅":"⧅","⟈":"⟈","•":"•","•":"•","≎":"≎","⪮":"⪮","≏":"≏","≏":"≏","ć":"ć","∩":"∩","⩄":"⩄","⩉":"⩉","⩋":"⩋","⩇":"⩇","⩀":"⩀","∩︀":"∩︀","⁁":"⁁","ˇ":"ˇ","⩍":"⩍","č":"č","ç":"ç","ç":"ç","ĉ":"ĉ","⩌":"⩌","⩐":"⩐","ċ":"ċ","¸":"¸","¸":"¸","⦲":"⦲","¢":"¢","¢":"¢","·":"·","𝔠":"𝔠","ч":"ч","✓":"✓","✓":"✓","χ":"χ","○":"○","⧃":"⧃","ˆ":"ˆ","≗":"≗","↺":"↺","↻":"↻","®":"®","Ⓢ":"Ⓢ","⊛":"⊛","⊚":"⊚","⊝":"⊝","≗":"≗","⨐":"⨐","⫯":"⫯","⧂":"⧂","♣":"♣","♣":"♣",":":":","≔":"≔","≔":"≔",",":",","@":"@","∁":"∁","∘":"∘","∁":"∁","ℂ":"ℂ","≅":"≅","⩭":"⩭","∮":"∮","𝕔":"𝕔","∐":"∐","©":"©","©":"©","℗":"℗","↵":"↵","✗":"✗","𝒸":"𝒸","⫏":"⫏","⫑":"⫑","⫐":"⫐","⫒":"⫒","⋯":"⋯","⤸":"⤸","⤵":"⤵","⋞":"⋞","⋟":"⋟","↶":"↶","⤽":"⤽","∪":"∪","⩈":"⩈","⩆":"⩆","⩊":"⩊","⊍":"⊍","⩅":"⩅","∪︀":"∪︀","↷":"↷","⤼":"⤼","⋞":"⋞","⋟":"⋟","⋎":"⋎","⋏":"⋏","¤":"¤","¤":"¤","↶":"↶","↷":"↷","⋎":"⋎","⋏":"⋏","∲":"∲","∱":"∱","⌭":"⌭","⇓":"⇓","⥥":"⥥","†":"†","ℸ":"ℸ","↓":"↓","‐":"‐","⊣":"⊣","⤏":"⤏","˝":"˝","ď":"ď","д":"д","ⅆ":"ⅆ","‡":"‡","⇊":"⇊","⩷":"⩷","°":"°","°":"°","δ":"δ","⦱":"⦱","⥿":"⥿","𝔡":"𝔡","⇃":"⇃","⇂":"⇂","⋄":"⋄","⋄":"⋄","♦":"♦","♦":"♦","¨":"¨","ϝ":"ϝ","⋲":"⋲","÷":"÷","÷":"÷","÷":"÷","⋇":"⋇","⋇":"⋇","ђ":"ђ","⌞":"⌞","⌍":"⌍","$":"$","𝕕":"𝕕","˙":"˙","≐":"≐","≑":"≑","∸":"∸","∔":"∔","⊡":"⊡","⌆":"⌆","↓":"↓","⇊":"⇊","⇃":"⇃","⇂":"⇂","⤐":"⤐","⌟":"⌟","⌌":"⌌","𝒹":"𝒹","ѕ":"ѕ","⧶":"⧶","đ":"đ","⋱":"⋱","▿":"▿","▾":"▾","⇵":"⇵","⥯":"⥯","⦦":"⦦","џ":"џ","⟿":"⟿","⩷":"⩷","≑":"≑","é":"é","é":"é","⩮":"⩮","ě":"ě","≖":"≖","ê":"ê","ê":"ê","≕":"≕","э":"э","ė":"ė","ⅇ":"ⅇ","≒":"≒","𝔢":"𝔢","⪚":"⪚","è":"è","è":"è","⪖":"⪖","⪘":"⪘","⪙":"⪙","⏧":"⏧","ℓ":"ℓ","⪕":"⪕","⪗":"⪗","ē":"ē","∅":"∅","∅":"∅","∅":"∅"," ":" "," ":" "," ":" ","ŋ":"ŋ"," ":" ","ę":"ę","𝕖":"𝕖","⋕":"⋕","⧣":"⧣","⩱":"⩱","ε":"ε","ε":"ε","ϵ":"ϵ","≖":"≖","≕":"≕","≂":"≂","⪖":"⪖","⪕":"⪕","=":"=","≟":"≟","≡":"≡","⩸":"⩸","⧥":"⧥","≓":"≓","⥱":"⥱","ℯ":"ℯ","≐":"≐","≂":"≂","η":"η","ð":"ð","ð":"ð","ë":"ë","ë":"ë","€":"€","!":"!","∃":"∃","ℰ":"ℰ","ⅇ":"ⅇ","≒":"≒","ф":"ф","♀":"♀","ffi":"ffi","ff":"ff","ffl":"ffl","𝔣":"𝔣","fi":"fi","fj":"fj","♭":"♭","fl":"fl","▱":"▱","ƒ":"ƒ","𝕗":"𝕗","∀":"∀","⋔":"⋔","⫙":"⫙","⨍":"⨍","½":"½","½":"½","⅓":"⅓","¼":"¼","¼":"¼","⅕":"⅕","⅙":"⅙","⅛":"⅛","⅔":"⅔","⅖":"⅖","¾":"¾","¾":"¾","⅗":"⅗","⅜":"⅜","⅘":"⅘","⅚":"⅚","⅝":"⅝","⅞":"⅞","⁄":"⁄","⌢":"⌢","𝒻":"𝒻","≧":"≧","⪌":"⪌","ǵ":"ǵ","γ":"γ","ϝ":"ϝ","⪆":"⪆","ğ":"ğ","ĝ":"ĝ","г":"г","ġ":"ġ","≥":"≥","⋛":"⋛","≥":"≥","≧":"≧","⩾":"⩾","⩾":"⩾","⪩":"⪩","⪀":"⪀","⪂":"⪂","⪄":"⪄","⋛︀":"⋛︀","⪔":"⪔","𝔤":"𝔤","≫":"≫","⋙":"⋙","ℷ":"ℷ","ѓ":"ѓ","≷":"≷","⪒":"⪒","⪥":"⪥","⪤":"⪤","≩":"≩","⪊":"⪊","⪊":"⪊","⪈":"⪈","⪈":"⪈","≩":"≩","⋧":"⋧","𝕘":"𝕘","`":"`","ℊ":"ℊ","≳":"≳","⪎":"⪎","⪐":"⪐",">":">",">":">","⪧":"⪧","⩺":"⩺","⋗":"⋗","⦕":"⦕","⩼":"⩼","⪆":"⪆","⥸":"⥸","⋗":"⋗","⋛":"⋛","⪌":"⪌","≷":"≷","≳":"≳","≩︀":"≩︀","≩︀":"≩︀","⇔":"⇔"," ":" ","½":"½","ℋ":"ℋ","ъ":"ъ","↔":"↔","⥈":"⥈","↭":"↭","ℏ":"ℏ","ĥ":"ĥ","♥":"♥","♥":"♥","…":"…","⊹":"⊹","𝔥":"𝔥","⤥":"⤥","⤦":"⤦","⇿":"⇿","∻":"∻","↩":"↩","↪":"↪","𝕙":"𝕙","―":"―","𝒽":"𝒽","ℏ":"ℏ","ħ":"ħ","⁃":"⁃","‐":"‐","í":"í","í":"í","⁣":"⁣","î":"î","î":"î","и":"и","е":"е","¡":"¡","¡":"¡","⇔":"⇔","𝔦":"𝔦","ì":"ì","ì":"ì","ⅈ":"ⅈ","⨌":"⨌","∭":"∭","⧜":"⧜","℩":"℩","ij":"ij","ī":"ī","ℑ":"ℑ","ℐ":"ℐ","ℑ":"ℑ","ı":"ı","⊷":"⊷","Ƶ":"Ƶ","∈":"∈","℅":"℅","∞":"∞","⧝":"⧝","ı":"ı","∫":"∫","⊺":"⊺","ℤ":"ℤ","⊺":"⊺","⨗":"⨗","⨼":"⨼","ё":"ё","į":"į","𝕚":"𝕚","ι":"ι","⨼":"⨼","¿":"¿","¿":"¿","𝒾":"𝒾","∈":"∈","⋹":"⋹","⋵":"⋵","⋴":"⋴","⋳":"⋳","∈":"∈","⁢":"⁢","ĩ":"ĩ","і":"і","ï":"ï","ï":"ï","ĵ":"ĵ","й":"й","𝔧":"𝔧","ȷ":"ȷ","𝕛":"𝕛","𝒿":"𝒿","ј":"ј","є":"є","κ":"κ","ϰ":"ϰ","ķ":"ķ","к":"к","𝔨":"𝔨","ĸ":"ĸ","х":"х","ќ":"ќ","𝕜":"𝕜","𝓀":"𝓀","⇚":"⇚","⇐":"⇐","⤛":"⤛","⤎":"⤎","≦":"≦","⪋":"⪋","⥢":"⥢","ĺ":"ĺ","⦴":"⦴","ℒ":"ℒ","λ":"λ","⟨":"⟨","⦑":"⦑","⟨":"⟨","⪅":"⪅","«":"«","«":"«","←":"←","⇤":"⇤","⤟":"⤟","⤝":"⤝","↩":"↩","↫":"↫","⤹":"⤹","⥳":"⥳","↢":"↢","⪫":"⪫","⤙":"⤙","⪭":"⪭","⪭︀":"⪭︀","⤌":"⤌","❲":"❲","{":"{","[":"[","⦋":"⦋","⦏":"⦏","⦍":"⦍","ľ":"ľ","ļ":"ļ","⌈":"⌈","{":"{","л":"л","⤶":"⤶","“":"“","„":"„","⥧":"⥧","⥋":"⥋","↲":"↲","≤":"≤","←":"←","↢":"↢","↽":"↽","↼":"↼","⇇":"⇇","↔":"↔","⇆":"⇆","⇋":"⇋","↭":"↭","⋋":"⋋","⋚":"⋚","≤":"≤","≦":"≦","⩽":"⩽","⩽":"⩽","⪨":"⪨","⩿":"⩿","⪁":"⪁","⪃":"⪃","⋚︀":"⋚︀","⪓":"⪓","⪅":"⪅","⋖":"⋖","⋚":"⋚","⪋":"⪋","≶":"≶","≲":"≲","⥼":"⥼","⌊":"⌊","𝔩":"𝔩","≶":"≶","⪑":"⪑","↽":"↽","↼":"↼","⥪":"⥪","▄":"▄","љ":"љ","≪":"≪","⇇":"⇇","⌞":"⌞","⥫":"⥫","◺":"◺","ŀ":"ŀ","⎰":"⎰","⎰":"⎰","≨":"≨","⪉":"⪉","⪉":"⪉","⪇":"⪇","⪇":"⪇","≨":"≨","⋦":"⋦","⟬":"⟬","⇽":"⇽","⟦":"⟦","⟵":"⟵","⟷":"⟷","⟼":"⟼","⟶":"⟶","↫":"↫","↬":"↬","⦅":"⦅","𝕝":"𝕝","⨭":"⨭","⨴":"⨴","∗":"∗","_":"_","◊":"◊","◊":"◊","⧫":"⧫","(":"(","⦓":"⦓","⇆":"⇆","⌟":"⌟","⇋":"⇋","⥭":"⥭","‎":"‎","⊿":"⊿","‹":"‹","𝓁":"𝓁","↰":"↰","≲":"≲","⪍":"⪍","⪏":"⪏","[":"[","‘":"‘","‚":"‚","ł":"ł","<":"<","<":"<","⪦":"⪦","⩹":"⩹","⋖":"⋖","⋋":"⋋","⋉":"⋉","⥶":"⥶","⩻":"⩻","⦖":"⦖","◃":"◃","⊴":"⊴","◂":"◂","⥊":"⥊","⥦":"⥦","≨︀":"≨︀","≨︀":"≨︀","∺":"∺","¯":"¯","¯":"¯","♂":"♂","✠":"✠","✠":"✠","↦":"↦","↦":"↦","↧":"↧","↤":"↤","↥":"↥","▮":"▮","⨩":"⨩","м":"м","—":"—","∡":"∡","𝔪":"𝔪","℧":"℧","µ":"µ","µ":"µ","∣":"∣","*":"*","⫰":"⫰","·":"·","·":"·","−":"−","⊟":"⊟","∸":"∸","⨪":"⨪","⫛":"⫛","…":"…","∓":"∓","⊧":"⊧","𝕞":"𝕞","∓":"∓","𝓂":"𝓂","∾":"∾","μ":"μ","⊸":"⊸","⊸":"⊸","⋙̸":"⋙̸","≫⃒":"≫⃒","≫̸":"≫̸","⇍":"⇍","⇎":"⇎","⋘̸":"⋘̸","≪⃒":"≪⃒","≪̸":"≪̸","⇏":"⇏","⊯":"⊯","⊮":"⊮","∇":"∇","ń":"ń","∠⃒":"∠⃒","≉":"≉","⩰̸":"⩰̸","≋̸":"≋̸","ʼn":"ʼn","≉":"≉","♮":"♮","♮":"♮","ℕ":"ℕ"," ":" "," ":" ","≎̸":"≎̸","≏̸":"≏̸","⩃":"⩃","ň":"ň","ņ":"ņ","≇":"≇","⩭̸":"⩭̸","⩂":"⩂","н":"н","–":"–","≠":"≠","⇗":"⇗","⤤":"⤤","↗":"↗","↗":"↗","≐̸":"≐̸","≢":"≢","⤨":"⤨","≂̸":"≂̸","∄":"∄","∄":"∄","𝔫":"𝔫","≧̸":"≧̸","≱":"≱","≱":"≱","≧̸":"≧̸","⩾̸":"⩾̸","⩾̸":"⩾̸","≵":"≵","≯":"≯","≯":"≯","⇎":"⇎","↮":"↮","⫲":"⫲","∋":"∋","⋼":"⋼","⋺":"⋺","∋":"∋","њ":"њ","⇍":"⇍","≦̸":"≦̸","↚":"↚","‥":"‥","≰":"≰","↚":"↚","↮":"↮","≰":"≰","≦̸":"≦̸","⩽̸":"⩽̸","⩽̸":"⩽̸","≮":"≮","≴":"≴","≮":"≮","⋪":"⋪","⋬":"⋬","∤":"∤","𝕟":"𝕟","¬":"¬","¬":"¬","∉":"∉","⋹̸":"⋹̸","⋵̸":"⋵̸","∉":"∉","⋷":"⋷","⋶":"⋶","∌":"∌","∌":"∌","⋾":"⋾","⋽":"⋽","∦":"∦","∦":"∦","⫽⃥":"⫽⃥","∂̸":"∂̸","⨔":"⨔","⊀":"⊀","⋠":"⋠","⪯̸":"⪯̸","⊀":"⊀","⪯̸":"⪯̸","⇏":"⇏","↛":"↛","⤳̸":"⤳̸","↝̸":"↝̸","↛":"↛","⋫":"⋫","⋭":"⋭","⊁":"⊁","⋡":"⋡","⪰̸":"⪰̸","𝓃":"𝓃","∤":"∤","∦":"∦","≁":"≁","≄":"≄","≄":"≄","∤":"∤","∦":"∦","⋢":"⋢","⋣":"⋣","⊄":"⊄","⫅̸":"⫅̸","⊈":"⊈","⊂⃒":"⊂⃒","⊈":"⊈","⫅̸":"⫅̸","⊁":"⊁","⪰̸":"⪰̸","⊅":"⊅","⫆̸":"⫆̸","⊉":"⊉","⊃⃒":"⊃⃒","⊉":"⊉","⫆̸":"⫆̸","≹":"≹","ñ":"ñ","ñ":"ñ","≸":"≸","⋪":"⋪","⋬":"⋬","⋫":"⋫","⋭":"⋭","ν":"ν","#":"#","№":"№"," ":" ","⊭":"⊭","⤄":"⤄","≍⃒":"≍⃒","⊬":"⊬","≥⃒":"≥⃒",">⃒":">⃒","⧞":"⧞","⤂":"⤂","≤⃒":"≤⃒","<⃒":"<⃒","⊴⃒":"⊴⃒","⤃":"⤃","⊵⃒":"⊵⃒","∼⃒":"∼⃒","⇖":"⇖","⤣":"⤣","↖":"↖","↖":"↖","⤧":"⤧","Ⓢ":"Ⓢ","ó":"ó","ó":"ó","⊛":"⊛","⊚":"⊚","ô":"ô","ô":"ô","о":"о","⊝":"⊝","ő":"ő","⨸":"⨸","⊙":"⊙","⦼":"⦼","œ":"œ","⦿":"⦿","𝔬":"𝔬","˛":"˛","ò":"ò","ò":"ò","⧁":"⧁","⦵":"⦵","Ω":"Ω","∮":"∮","↺":"↺","⦾":"⦾","⦻":"⦻","‾":"‾","⧀":"⧀","ō":"ō","ω":"ω","ο":"ο","⦶":"⦶","⊖":"⊖","𝕠":"𝕠","⦷":"⦷","⦹":"⦹","⊕":"⊕","∨":"∨","↻":"↻","⩝":"⩝","ℴ":"ℴ","ℴ":"ℴ","ª":"ª","ª":"ª","º":"º","º":"º","⊶":"⊶","⩖":"⩖","⩗":"⩗","⩛":"⩛","ℴ":"ℴ","ø":"ø","ø":"ø","⊘":"⊘","õ":"õ","õ":"õ","⊗":"⊗","⨶":"⨶","ö":"ö","ö":"ö","⌽":"⌽","∥":"∥","¶":"¶","¶":"¶","∥":"∥","⫳":"⫳","⫽":"⫽","∂":"∂","п":"п","%":"%",".":".","‰":"‰","⊥":"⊥","‱":"‱","𝔭":"𝔭","φ":"φ","ϕ":"ϕ","ℳ":"ℳ","☎":"☎","π":"π","⋔":"⋔","ϖ":"ϖ","ℏ":"ℏ","ℎ":"ℎ","ℏ":"ℏ","+":"+","⨣":"⨣","⊞":"⊞","⨢":"⨢","∔":"∔","⨥":"⨥","⩲":"⩲","±":"±","±":"±","⨦":"⨦","⨧":"⨧","±":"±","⨕":"⨕","𝕡":"𝕡","£":"£","£":"£","≺":"≺","⪳":"⪳","⪷":"⪷","≼":"≼","⪯":"⪯","≺":"≺","⪷":"⪷","≼":"≼","⪯":"⪯","⪹":"⪹","⪵":"⪵","⋨":"⋨","≾":"≾","′":"′","ℙ":"ℙ","⪵":"⪵","⪹":"⪹","⋨":"⋨","∏":"∏","⌮":"⌮","⌒":"⌒","⌓":"⌓","∝":"∝","∝":"∝","≾":"≾","⊰":"⊰","𝓅":"𝓅","ψ":"ψ"," ":" ","𝔮":"𝔮","⨌":"⨌","𝕢":"𝕢","⁗":"⁗","𝓆":"𝓆","ℍ":"ℍ","⨖":"⨖","?":"?","≟":"≟",""":'"',""":'"',"⇛":"⇛","⇒":"⇒","⤜":"⤜","⤏":"⤏","⥤":"⥤","∽̱":"∽̱","ŕ":"ŕ","√":"√","⦳":"⦳","⟩":"⟩","⦒":"⦒","⦥":"⦥","⟩":"⟩","»":"»","»":"»","→":"→","⥵":"⥵","⇥":"⇥","⤠":"⤠","⤳":"⤳","⤞":"⤞","↪":"↪","↬":"↬","⥅":"⥅","⥴":"⥴","↣":"↣","↝":"↝","⤚":"⤚","∶":"∶","ℚ":"ℚ","⤍":"⤍","❳":"❳","}":"}","]":"]","⦌":"⦌","⦎":"⦎","⦐":"⦐","ř":"ř","ŗ":"ŗ","⌉":"⌉","}":"}","р":"р","⤷":"⤷","⥩":"⥩","”":"”","”":"”","↳":"↳","ℜ":"ℜ","ℛ":"ℛ","ℜ":"ℜ","ℝ":"ℝ","▭":"▭","®":"®","®":"®","⥽":"⥽","⌋":"⌋","𝔯":"𝔯","⇁":"⇁","⇀":"⇀","⥬":"⥬","ρ":"ρ","ϱ":"ϱ","→":"→","↣":"↣","⇁":"⇁","⇀":"⇀","⇄":"⇄","⇌":"⇌","⇉":"⇉","↝":"↝","⋌":"⋌","˚":"˚","≓":"≓","⇄":"⇄","⇌":"⇌","‏":"‏","⎱":"⎱","⎱":"⎱","⫮":"⫮","⟭":"⟭","⇾":"⇾","⟧":"⟧","⦆":"⦆","𝕣":"𝕣","⨮":"⨮","⨵":"⨵",")":")","⦔":"⦔","⨒":"⨒","⇉":"⇉","›":"›","𝓇":"𝓇","↱":"↱","]":"]","’":"’","’":"’","⋌":"⋌","⋊":"⋊","▹":"▹","⊵":"⊵","▸":"▸","⧎":"⧎","⥨":"⥨","℞":"℞","ś":"ś","‚":"‚","≻":"≻","⪴":"⪴","⪸":"⪸","š":"š","≽":"≽","⪰":"⪰","ş":"ş","ŝ":"ŝ","⪶":"⪶","⪺":"⪺","⋩":"⋩","⨓":"⨓","≿":"≿","с":"с","⋅":"⋅","⊡":"⊡","⩦":"⩦","⇘":"⇘","⤥":"⤥","↘":"↘","↘":"↘","§":"§","§":"§",";":";","⤩":"⤩","∖":"∖","∖":"∖","✶":"✶","𝔰":"𝔰","⌢":"⌢","♯":"♯","щ":"щ","ш":"ш","∣":"∣","∥":"∥","­":"­","­":"­","σ":"σ","ς":"ς","ς":"ς","∼":"∼","⩪":"⩪","≃":"≃","≃":"≃","⪞":"⪞","⪠":"⪠","⪝":"⪝","⪟":"⪟","≆":"≆","⨤":"⨤","⥲":"⥲","←":"←","∖":"∖","⨳":"⨳","⧤":"⧤","∣":"∣","⌣":"⌣","⪪":"⪪","⪬":"⪬","⪬︀":"⪬︀","ь":"ь","/":"/","⧄":"⧄","⌿":"⌿","𝕤":"𝕤","♠":"♠","♠":"♠","∥":"∥","⊓":"⊓","⊓︀":"⊓︀","⊔":"⊔","⊔︀":"⊔︀","⊏":"⊏","⊑":"⊑","⊏":"⊏","⊑":"⊑","⊐":"⊐","⊒":"⊒","⊐":"⊐","⊒":"⊒","□":"□","□":"□","▪":"▪","▪":"▪","→":"→","𝓈":"𝓈","∖":"∖","⌣":"⌣","⋆":"⋆","☆":"☆","★":"★","ϵ":"ϵ","ϕ":"ϕ","¯":"¯","⊂":"⊂","⫅":"⫅","⪽":"⪽","⊆":"⊆","⫃":"⫃","⫁":"⫁","⫋":"⫋","⊊":"⊊","⪿":"⪿","⥹":"⥹","⊂":"⊂","⊆":"⊆","⫅":"⫅","⊊":"⊊","⫋":"⫋","⫇":"⫇","⫕":"⫕","⫓":"⫓","≻":"≻","⪸":"⪸","≽":"≽","⪰":"⪰","⪺":"⪺","⪶":"⪶","⋩":"⋩","≿":"≿","∑":"∑","♪":"♪","¹":"¹","¹":"¹","²":"²","²":"²","³":"³","³":"³","⊃":"⊃","⫆":"⫆","⪾":"⪾","⫘":"⫘","⊇":"⊇","⫄":"⫄","⟉":"⟉","⫗":"⫗","⥻":"⥻","⫂":"⫂","⫌":"⫌","⊋":"⊋","⫀":"⫀","⊃":"⊃","⊇":"⊇","⫆":"⫆","⊋":"⊋","⫌":"⫌","⫈":"⫈","⫔":"⫔","⫖":"⫖","⇙":"⇙","⤦":"⤦","↙":"↙","↙":"↙","⤪":"⤪","ß":"ß","ß":"ß","⌖":"⌖","τ":"τ","⎴":"⎴","ť":"ť","ţ":"ţ","т":"т","⃛":"⃛","⌕":"⌕","𝔱":"𝔱","∴":"∴","∴":"∴","θ":"θ","ϑ":"ϑ","ϑ":"ϑ","≈":"≈","∼":"∼"," ":" ","≈":"≈","∼":"∼","þ":"þ","þ":"þ","˜":"˜","×":"×","×":"×","⊠":"⊠","⨱":"⨱","⨰":"⨰","∭":"∭","⤨":"⤨","⊤":"⊤","⌶":"⌶","⫱":"⫱","𝕥":"𝕥","⫚":"⫚","⤩":"⤩","‴":"‴","™":"™","▵":"▵","▿":"▿","◃":"◃","⊴":"⊴","≜":"≜","▹":"▹","⊵":"⊵","◬":"◬","≜":"≜","⨺":"⨺","⨹":"⨹","⧍":"⧍","⨻":"⨻","⏢":"⏢","𝓉":"𝓉","ц":"ц","ћ":"ћ","ŧ":"ŧ","≬":"≬","↞":"↞","↠":"↠","⇑":"⇑","⥣":"⥣","ú":"ú","ú":"ú","↑":"↑","ў":"ў","ŭ":"ŭ","û":"û","û":"û","у":"у","⇅":"⇅","ű":"ű","⥮":"⥮","⥾":"⥾","𝔲":"𝔲","ù":"ù","ù":"ù","↿":"↿","↾":"↾","▀":"▀","⌜":"⌜","⌜":"⌜","⌏":"⌏","◸":"◸","ū":"ū","¨":"¨","¨":"¨","ų":"ų","𝕦":"𝕦","↑":"↑","↕":"↕","↿":"↿","↾":"↾","⊎":"⊎","υ":"υ","ϒ":"ϒ","υ":"υ","⇈":"⇈","⌝":"⌝","⌝":"⌝","⌎":"⌎","ů":"ů","◹":"◹","𝓊":"𝓊","⋰":"⋰","ũ":"ũ","▵":"▵","▴":"▴","⇈":"⇈","ü":"ü","ü":"ü","⦧":"⦧","⇕":"⇕","⫨":"⫨","⫩":"⫩","⊨":"⊨","⦜":"⦜","ϵ":"ϵ","ϰ":"ϰ","∅":"∅","ϕ":"ϕ","ϖ":"ϖ","∝":"∝","↕":"↕","ϱ":"ϱ","ς":"ς","⊊︀":"⊊︀","⫋︀":"⫋︀","⊋︀":"⊋︀","⫌︀":"⫌︀","ϑ":"ϑ","⊲":"⊲","⊳":"⊳","в":"в","⊢":"⊢","∨":"∨","⊻":"⊻","≚":"≚","⋮":"⋮","|":"|","|":"|","𝔳":"𝔳","⊲":"⊲","⊂⃒":"⊂⃒","⊃⃒":"⊃⃒","𝕧":"𝕧","∝":"∝","⊳":"⊳","𝓋":"𝓋","⫋︀":"⫋︀","⊊︀":"⊊︀","⫌︀":"⫌︀","⊋︀":"⊋︀","⦚":"⦚","ŵ":"ŵ","⩟":"⩟","∧":"∧","≙":"≙","℘":"℘","𝔴":"𝔴","𝕨":"𝕨","℘":"℘","≀":"≀","≀":"≀","𝓌":"𝓌","⋂":"⋂","◯":"◯","⋃":"⋃","▽":"▽","𝔵":"𝔵","⟺":"⟺","⟷":"⟷","ξ":"ξ","⟸":"⟸","⟵":"⟵","⟼":"⟼","⋻":"⋻","⨀":"⨀","𝕩":"𝕩","⨁":"⨁","⨂":"⨂","⟹":"⟹","⟶":"⟶","𝓍":"𝓍","⨆":"⨆","⨄":"⨄","△":"△","⋁":"⋁","⋀":"⋀","ý":"ý","ý":"ý","я":"я","ŷ":"ŷ","ы":"ы","¥":"¥","¥":"¥","𝔶":"𝔶","ї":"ї","𝕪":"𝕪","𝓎":"𝓎","ю":"ю","ÿ":"ÿ","ÿ":"ÿ","ź":"ź","ž":"ž","з":"з","ż":"ż","ℨ":"ℨ","ζ":"ζ","𝔷":"𝔷","ж":"ж","⇝":"⇝","𝕫":"𝕫","𝓏":"𝓏","‍":"‍","‌":"‌"},characters:{Æ:"Æ","&":"&",Á:"Á",Ă:"Ă",Â:"Â",А:"А",𝔄:"𝔄",À:"À",Α:"Α",Ā:"Ā","⩓":"⩓",Ą:"Ą",𝔸:"𝔸","⁡":"⁡",Å:"Å",𝒜:"𝒜","≔":"≔",Ã:"Ã",Ä:"Ä","∖":"∖","⫧":"⫧","⌆":"⌆",Б:"Б","∵":"∵",ℬ:"ℬ",Β:"Β",𝔅:"𝔅",𝔹:"𝔹","˘":"˘","≎":"≎",Ч:"Ч","©":"©",Ć:"Ć","⋒":"⋒",ⅅ:"ⅅ",ℭ:"ℭ",Č:"Č",Ç:"Ç",Ĉ:"Ĉ","∰":"∰",Ċ:"Ċ","¸":"¸","·":"·",Χ:"Χ","⊙":"⊙","⊖":"⊖","⊕":"⊕","⊗":"⊗","∲":"∲","”":"”","’":"’","∷":"∷","⩴":"⩴","≡":"≡","∯":"∯","∮":"∮",ℂ:"ℂ","∐":"∐","∳":"∳","⨯":"⨯",𝒞:"𝒞","⋓":"⋓","≍":"≍","⤑":"⤑",Ђ:"Ђ",Ѕ:"Ѕ",Џ:"Џ","‡":"‡","↡":"↡","⫤":"⫤",Ď:"Ď",Д:"Д","∇":"∇",Δ:"Δ",𝔇:"𝔇","´":"´","˙":"˙","˝":"˝","`":"`","˜":"˜","⋄":"⋄",ⅆ:"ⅆ",𝔻:"𝔻","¨":"¨","⃜":"⃜","≐":"≐","⇓":"⇓","⇐":"⇐","⇔":"⇔","⟸":"⟸","⟺":"⟺","⟹":"⟹","⇒":"⇒","⊨":"⊨","⇑":"⇑","⇕":"⇕","∥":"∥","↓":"↓","⤓":"⤓","⇵":"⇵","̑":"̑","⥐":"⥐","⥞":"⥞","↽":"↽","⥖":"⥖","⥟":"⥟","⇁":"⇁","⥗":"⥗","⊤":"⊤","↧":"↧",𝒟:"𝒟",Đ:"Đ",Ŋ:"Ŋ",Ð:"Ð",É:"É",Ě:"Ě",Ê:"Ê",Э:"Э",Ė:"Ė",𝔈:"𝔈",È:"È","∈":"∈",Ē:"Ē","◻":"◻","▫":"▫",Ę:"Ę",𝔼:"𝔼",Ε:"Ε","⩵":"⩵","≂":"≂","⇌":"⇌",ℰ:"ℰ","⩳":"⩳",Η:"Η",Ë:"Ë","∃":"∃",ⅇ:"ⅇ",Ф:"Ф",𝔉:"𝔉","◼":"◼","▪":"▪",𝔽:"𝔽","∀":"∀",ℱ:"ℱ",Ѓ:"Ѓ",">":">",Γ:"Γ",Ϝ:"Ϝ",Ğ:"Ğ",Ģ:"Ģ",Ĝ:"Ĝ",Г:"Г",Ġ:"Ġ",𝔊:"𝔊","⋙":"⋙",𝔾:"𝔾","≥":"≥","⋛":"⋛","≧":"≧","⪢":"⪢","≷":"≷","⩾":"⩾","≳":"≳",𝒢:"𝒢","≫":"≫",Ъ:"Ъ",ˇ:"ˇ","^":"^",Ĥ:"Ĥ",ℌ:"ℌ",ℋ:"ℋ",ℍ:"ℍ","─":"─",Ħ:"Ħ","≏":"≏",Е:"Е",IJ:"IJ",Ё:"Ё",Í:"Í",Î:"Î",И:"И",İ:"İ",ℑ:"ℑ",Ì:"Ì",Ī:"Ī",ⅈ:"ⅈ","∬":"∬","∫":"∫","⋂":"⋂","⁣":"⁣","⁢":"⁢",Į:"Į",𝕀:"𝕀",Ι:"Ι",ℐ:"ℐ",Ĩ:"Ĩ",І:"І",Ï:"Ï",Ĵ:"Ĵ",Й:"Й",𝔍:"𝔍",𝕁:"𝕁",𝒥:"𝒥",Ј:"Ј",Є:"Є",Х:"Х",Ќ:"Ќ",Κ:"Κ",Ķ:"Ķ",К:"К",𝔎:"𝔎",𝕂:"𝕂",𝒦:"𝒦",Љ:"Љ","<":"<",Ĺ:"Ĺ",Λ:"Λ","⟪":"⟪",ℒ:"ℒ","↞":"↞",Ľ:"Ľ",Ļ:"Ļ",Л:"Л","⟨":"⟨","←":"←","⇤":"⇤","⇆":"⇆","⌈":"⌈","⟦":"⟦","⥡":"⥡","⇃":"⇃","⥙":"⥙","⌊":"⌊","↔":"↔","⥎":"⥎","⊣":"⊣","↤":"↤","⥚":"⥚","⊲":"⊲","⧏":"⧏","⊴":"⊴","⥑":"⥑","⥠":"⥠","↿":"↿","⥘":"⥘","↼":"↼","⥒":"⥒","⋚":"⋚","≦":"≦","≶":"≶","⪡":"⪡","⩽":"⩽","≲":"≲",𝔏:"𝔏","⋘":"⋘","⇚":"⇚",Ŀ:"Ŀ","⟵":"⟵","⟷":"⟷","⟶":"⟶",𝕃:"𝕃","↙":"↙","↘":"↘","↰":"↰",Ł:"Ł","≪":"≪","⤅":"⤅",М:"М"," ":" ",ℳ:"ℳ",𝔐:"𝔐","∓":"∓",𝕄:"𝕄",Μ:"Μ",Њ:"Њ",Ń:"Ń",Ň:"Ň",Ņ:"Ņ",Н:"Н","​":"​","\n":" ",𝔑:"𝔑","⁠":"⁠"," ":" ",ℕ:"ℕ","⫬":"⫬","≢":"≢","≭":"≭","∦":"∦","∉":"∉","≠":"≠","≂̸":"≂̸","∄":"∄","≯":"≯","≱":"≱","≧̸":"≧̸","≫̸":"≫̸","≹":"≹","⩾̸":"⩾̸","≵":"≵","≎̸":"≎̸","≏̸":"≏̸","⋪":"⋪","⧏̸":"⧏̸","⋬":"⋬","≮":"≮","≰":"≰","≸":"≸","≪̸":"≪̸","⩽̸":"⩽̸","≴":"≴","⪢̸":"⪢̸","⪡̸":"⪡̸","⊀":"⊀","⪯̸":"⪯̸","⋠":"⋠","∌":"∌","⋫":"⋫","⧐̸":"⧐̸","⋭":"⋭","⊏̸":"⊏̸","⋢":"⋢","⊐̸":"⊐̸","⋣":"⋣","⊂⃒":"⊂⃒","⊈":"⊈","⊁":"⊁","⪰̸":"⪰̸","⋡":"⋡","≿̸":"≿̸","⊃⃒":"⊃⃒","⊉":"⊉","≁":"≁","≄":"≄","≇":"≇","≉":"≉","∤":"∤",𝒩:"𝒩",Ñ:"Ñ",Ν:"Ν",Œ:"Œ",Ó:"Ó",Ô:"Ô",О:"О",Ő:"Ő",𝔒:"𝔒",Ò:"Ò",Ō:"Ō",Ω:"Ω",Ο:"Ο",𝕆:"𝕆","“":"“","‘":"‘","⩔":"⩔",𝒪:"𝒪",Ø:"Ø",Õ:"Õ","⨷":"⨷",Ö:"Ö","‾":"‾","⏞":"⏞","⎴":"⎴","⏜":"⏜","∂":"∂",П:"П",𝔓:"𝔓",Φ:"Φ",Π:"Π","±":"±",ℙ:"ℙ","⪻":"⪻","≺":"≺","⪯":"⪯","≼":"≼","≾":"≾","″":"″","∏":"∏","∝":"∝",𝒫:"𝒫",Ψ:"Ψ",'"':""",𝔔:"𝔔",ℚ:"ℚ",𝒬:"𝒬","⤐":"⤐","®":"®",Ŕ:"Ŕ","⟫":"⟫","↠":"↠","⤖":"⤖",Ř:"Ř",Ŗ:"Ŗ",Р:"Р",ℜ:"ℜ","∋":"∋","⇋":"⇋","⥯":"⥯",Ρ:"Ρ","⟩":"⟩","→":"→","⇥":"⇥","⇄":"⇄","⌉":"⌉","⟧":"⟧","⥝":"⥝","⇂":"⇂","⥕":"⥕","⌋":"⌋","⊢":"⊢","↦":"↦","⥛":"⥛","⊳":"⊳","⧐":"⧐","⊵":"⊵","⥏":"⥏","⥜":"⥜","↾":"↾","⥔":"⥔","⇀":"⇀","⥓":"⥓",ℝ:"ℝ","⥰":"⥰","⇛":"⇛",ℛ:"ℛ","↱":"↱","⧴":"⧴",Щ:"Щ",Ш:"Ш",Ь:"Ь",Ś:"Ś","⪼":"⪼",Š:"Š",Ş:"Ş",Ŝ:"Ŝ",С:"С",𝔖:"𝔖","↑":"↑",Σ:"Σ","∘":"∘",𝕊:"𝕊","√":"√","□":"□","⊓":"⊓","⊏":"⊏","⊑":"⊑","⊐":"⊐","⊒":"⊒","⊔":"⊔",𝒮:"𝒮","⋆":"⋆","⋐":"⋐","⊆":"⊆","≻":"≻","⪰":"⪰","≽":"≽","≿":"≿","∑":"∑","⋑":"⋑","⊃":"⊃","⊇":"⊇",Þ:"Þ","™":"™",Ћ:"Ћ",Ц:"Ц","\t":" ",Τ:"Τ",Ť:"Ť",Ţ:"Ţ",Т:"Т",𝔗:"𝔗","∴":"∴",Θ:"Θ","  ":"  "," ":" ","∼":"∼","≃":"≃","≅":"≅","≈":"≈",𝕋:"𝕋","⃛":"⃛",𝒯:"𝒯",Ŧ:"Ŧ",Ú:"Ú","↟":"↟","⥉":"⥉",Ў:"Ў",Ŭ:"Ŭ",Û:"Û",У:"У",Ű:"Ű",𝔘:"𝔘",Ù:"Ù",Ū:"Ū",_:"_","⏟":"⏟","⎵":"⎵","⏝":"⏝","⋃":"⋃","⊎":"⊎",Ų:"Ų",𝕌:"𝕌","⤒":"⤒","⇅":"⇅","↕":"↕","⥮":"⥮","⊥":"⊥","↥":"↥","↖":"↖","↗":"↗",ϒ:"ϒ",Υ:"Υ",Ů:"Ů",𝒰:"𝒰",Ũ:"Ũ",Ü:"Ü","⊫":"⊫","⫫":"⫫",В:"В","⊩":"⊩","⫦":"⫦","⋁":"⋁","‖":"‖","∣":"∣","|":"|","❘":"❘","≀":"≀"," ":" ",𝔙:"𝔙",𝕍:"𝕍",𝒱:"𝒱","⊪":"⊪",Ŵ:"Ŵ","⋀":"⋀",𝔚:"𝔚",𝕎:"𝕎",𝒲:"𝒲",𝔛:"𝔛",Ξ:"Ξ",𝕏:"𝕏",𝒳:"𝒳",Я:"Я",Ї:"Ї",Ю:"Ю",Ý:"Ý",Ŷ:"Ŷ",Ы:"Ы",𝔜:"𝔜",𝕐:"𝕐",𝒴:"𝒴",Ÿ:"Ÿ",Ж:"Ж",Ź:"Ź",Ž:"Ž",З:"З",Ż:"Ż",Ζ:"Ζ",ℨ:"ℨ",ℤ:"ℤ",𝒵:"𝒵",á:"á",ă:"ă","∾":"∾","∾̳":"∾̳","∿":"∿",â:"â",а:"а",æ:"æ",𝔞:"𝔞",à:"à",ℵ:"ℵ",α:"α",ā:"ā","⨿":"⨿","∧":"∧","⩕":"⩕","⩜":"⩜","⩘":"⩘","⩚":"⩚","∠":"∠","⦤":"⦤","∡":"∡","⦨":"⦨","⦩":"⦩","⦪":"⦪","⦫":"⦫","⦬":"⦬","⦭":"⦭","⦮":"⦮","⦯":"⦯","∟":"∟","⊾":"⊾","⦝":"⦝","∢":"∢","⍼":"⍼",ą:"ą",𝕒:"𝕒","⩰":"⩰","⩯":"⩯","≊":"≊","≋":"≋","'":"'",å:"å",𝒶:"𝒶","*":"*",ã:"ã",ä:"ä","⨑":"⨑","⫭":"⫭","≌":"≌","϶":"϶","‵":"‵","∽":"∽","⋍":"⋍","⊽":"⊽","⌅":"⌅","⎶":"⎶",б:"б","„":"„","⦰":"⦰",β:"β",ℶ:"ℶ","≬":"≬",𝔟:"𝔟","◯":"◯","⨀":"⨀","⨁":"⨁","⨂":"⨂","⨆":"⨆","★":"★","▽":"▽","△":"△","⨄":"⨄","⤍":"⤍","⧫":"⧫","▴":"▴","▾":"▾","◂":"◂","▸":"▸","␣":"␣","▒":"▒","░":"░","▓":"▓","█":"█","=⃥":"=⃥","≡⃥":"≡⃥","⌐":"⌐",𝕓:"𝕓","⋈":"⋈","╗":"╗","╔":"╔","╖":"╖","╓":"╓","═":"═","╦":"╦","╩":"╩","╤":"╤","╧":"╧","╝":"╝","╚":"╚","╜":"╜","╙":"╙","║":"║","╬":"╬","╣":"╣","╠":"╠","╫":"╫","╢":"╢","╟":"╟","⧉":"⧉","╕":"╕","╒":"╒","┐":"┐","┌":"┌","╥":"╥","╨":"╨","┬":"┬","┴":"┴","⊟":"⊟","⊞":"⊞","⊠":"⊠","╛":"╛","╘":"╘","┘":"┘","└":"└","│":"│","╪":"╪","╡":"╡","╞":"╞","┼":"┼","┤":"┤","├":"├","¦":"¦",𝒷:"𝒷","⁏":"⁏","\\":"\","⧅":"⧅","⟈":"⟈","•":"•","⪮":"⪮",ć:"ć","∩":"∩","⩄":"⩄","⩉":"⩉","⩋":"⩋","⩇":"⩇","⩀":"⩀","∩︀":"∩︀","⁁":"⁁","⩍":"⩍",č:"č",ç:"ç",ĉ:"ĉ","⩌":"⩌","⩐":"⩐",ċ:"ċ","⦲":"⦲","¢":"¢",𝔠:"𝔠",ч:"ч","✓":"✓",χ:"χ","○":"○","⧃":"⧃",ˆ:"ˆ","≗":"≗","↺":"↺","↻":"↻","Ⓢ":"Ⓢ","⊛":"⊛","⊚":"⊚","⊝":"⊝","⨐":"⨐","⫯":"⫯","⧂":"⧂","♣":"♣",":":":",",":",","@":"@","∁":"∁","⩭":"⩭",𝕔:"𝕔","℗":"℗","↵":"↵","✗":"✗",𝒸:"𝒸","⫏":"⫏","⫑":"⫑","⫐":"⫐","⫒":"⫒","⋯":"⋯","⤸":"⤸","⤵":"⤵","⋞":"⋞","⋟":"⋟","↶":"↶","⤽":"⤽","∪":"∪","⩈":"⩈","⩆":"⩆","⩊":"⩊","⊍":"⊍","⩅":"⩅","∪︀":"∪︀","↷":"↷","⤼":"⤼","⋎":"⋎","⋏":"⋏","¤":"¤","∱":"∱","⌭":"⌭","⥥":"⥥","†":"†",ℸ:"ℸ","‐":"‐","⤏":"⤏",ď:"ď",д:"д","⇊":"⇊","⩷":"⩷","°":"°",δ:"δ","⦱":"⦱","⥿":"⥿",𝔡:"𝔡","♦":"♦",ϝ:"ϝ","⋲":"⋲","÷":"÷","⋇":"⋇",ђ:"ђ","⌞":"⌞","⌍":"⌍",$:"$",𝕕:"𝕕","≑":"≑","∸":"∸","∔":"∔","⊡":"⊡","⌟":"⌟","⌌":"⌌",𝒹:"𝒹",ѕ:"ѕ","⧶":"⧶",đ:"đ","⋱":"⋱","▿":"▿","⦦":"⦦",џ:"џ","⟿":"⟿",é:"é","⩮":"⩮",ě:"ě","≖":"≖",ê:"ê","≕":"≕",э:"э",ė:"ė","≒":"≒",𝔢:"𝔢","⪚":"⪚",è:"è","⪖":"⪖","⪘":"⪘","⪙":"⪙","⏧":"⏧",ℓ:"ℓ","⪕":"⪕","⪗":"⪗",ē:"ē","∅":"∅"," ":" "," ":" "," ":" ",ŋ:"ŋ"," ":" ",ę:"ę",𝕖:"𝕖","⋕":"⋕","⧣":"⧣","⩱":"⩱",ε:"ε",ϵ:"ϵ","=":"=","≟":"≟","⩸":"⩸","⧥":"⧥","≓":"≓","⥱":"⥱",ℯ:"ℯ",η:"η",ð:"ð",ë:"ë","€":"€","!":"!",ф:"ф","♀":"♀",ffi:"ffi",ff:"ff",ffl:"ffl",𝔣:"𝔣",fi:"fi",fj:"fj","♭":"♭",fl:"fl","▱":"▱",ƒ:"ƒ",𝕗:"𝕗","⋔":"⋔","⫙":"⫙","⨍":"⨍","½":"½","⅓":"⅓","¼":"¼","⅕":"⅕","⅙":"⅙","⅛":"⅛","⅔":"⅔","⅖":"⅖","¾":"¾","⅗":"⅗","⅜":"⅜","⅘":"⅘","⅚":"⅚","⅝":"⅝","⅞":"⅞","⁄":"⁄","⌢":"⌢",𝒻:"𝒻","⪌":"⪌",ǵ:"ǵ",γ:"γ","⪆":"⪆",ğ:"ğ",ĝ:"ĝ",г:"г",ġ:"ġ","⪩":"⪩","⪀":"⪀","⪂":"⪂","⪄":"⪄","⋛︀":"⋛︀","⪔":"⪔",𝔤:"𝔤",ℷ:"ℷ",ѓ:"ѓ","⪒":"⪒","⪥":"⪥","⪤":"⪤","≩":"≩","⪊":"⪊","⪈":"⪈","⋧":"⋧",𝕘:"𝕘",ℊ:"ℊ","⪎":"⪎","⪐":"⪐","⪧":"⪧","⩺":"⩺","⋗":"⋗","⦕":"⦕","⩼":"⩼","⥸":"⥸","≩︀":"≩︀",ъ:"ъ","⥈":"⥈","↭":"↭",ℏ:"ℏ",ĥ:"ĥ","♥":"♥","…":"…","⊹":"⊹",𝔥:"𝔥","⤥":"⤥","⤦":"⤦","⇿":"⇿","∻":"∻","↩":"↩","↪":"↪",𝕙:"𝕙","―":"―",𝒽:"𝒽",ħ:"ħ","⁃":"⁃",í:"í",î:"î",и:"и",е:"е","¡":"¡",𝔦:"𝔦",ì:"ì","⨌":"⨌","∭":"∭","⧜":"⧜","℩":"℩",ij:"ij",ī:"ī",ı:"ı","⊷":"⊷",Ƶ:"Ƶ","℅":"℅","∞":"∞","⧝":"⧝","⊺":"⊺","⨗":"⨗","⨼":"⨼",ё:"ё",į:"į",𝕚:"𝕚",ι:"ι","¿":"¿",𝒾:"𝒾","⋹":"⋹","⋵":"⋵","⋴":"⋴","⋳":"⋳",ĩ:"ĩ",і:"і",ï:"ï",ĵ:"ĵ",й:"й",𝔧:"𝔧",ȷ:"ȷ",𝕛:"𝕛",𝒿:"𝒿",ј:"ј",є:"є",κ:"κ",ϰ:"ϰ",ķ:"ķ",к:"к",𝔨:"𝔨",ĸ:"ĸ",х:"х",ќ:"ќ",𝕜:"𝕜",𝓀:"𝓀","⤛":"⤛","⤎":"⤎","⪋":"⪋","⥢":"⥢",ĺ:"ĺ","⦴":"⦴",λ:"λ","⦑":"⦑","⪅":"⪅","«":"«","⤟":"⤟","⤝":"⤝","↫":"↫","⤹":"⤹","⥳":"⥳","↢":"↢","⪫":"⪫","⤙":"⤙","⪭":"⪭","⪭︀":"⪭︀","⤌":"⤌","❲":"❲","{":"{","[":"[","⦋":"⦋","⦏":"⦏","⦍":"⦍",ľ:"ľ",ļ:"ļ",л:"л","⤶":"⤶","⥧":"⥧","⥋":"⥋","↲":"↲","≤":"≤","⇇":"⇇","⋋":"⋋","⪨":"⪨","⩿":"⩿","⪁":"⪁","⪃":"⪃","⋚︀":"⋚︀","⪓":"⪓","⋖":"⋖","⥼":"⥼",𝔩:"𝔩","⪑":"⪑","⥪":"⥪","▄":"▄",љ:"љ","⥫":"⥫","◺":"◺",ŀ:"ŀ","⎰":"⎰","≨":"≨","⪉":"⪉","⪇":"⪇","⋦":"⋦","⟬":"⟬","⇽":"⇽","⟼":"⟼","↬":"↬","⦅":"⦅",𝕝:"𝕝","⨭":"⨭","⨴":"⨴","∗":"∗","◊":"◊","(":"(","⦓":"⦓","⥭":"⥭","‎":"‎","⊿":"⊿","‹":"‹",𝓁:"𝓁","⪍":"⪍","⪏":"⪏","‚":"‚",ł:"ł","⪦":"⪦","⩹":"⩹","⋉":"⋉","⥶":"⥶","⩻":"⩻","⦖":"⦖","◃":"◃","⥊":"⥊","⥦":"⥦","≨︀":"≨︀","∺":"∺","¯":"¯","♂":"♂","✠":"✠","▮":"▮","⨩":"⨩",м:"м","—":"—",𝔪:"𝔪","℧":"℧",µ:"µ","⫰":"⫰","−":"−","⨪":"⨪","⫛":"⫛","⊧":"⊧",𝕞:"𝕞",𝓂:"𝓂",μ:"μ","⊸":"⊸","⋙̸":"⋙̸","≫⃒":"≫⃒","⇍":"⇍","⇎":"⇎","⋘̸":"⋘̸","≪⃒":"≪⃒","⇏":"⇏","⊯":"⊯","⊮":"⊮",ń:"ń","∠⃒":"∠⃒","⩰̸":"⩰̸","≋̸":"≋̸",ʼn:"ʼn","♮":"♮","⩃":"⩃",ň:"ň",ņ:"ņ","⩭̸":"⩭̸","⩂":"⩂",н:"н","–":"–","⇗":"⇗","⤤":"⤤","≐̸":"≐̸","⤨":"⤨",𝔫:"𝔫","↮":"↮","⫲":"⫲","⋼":"⋼","⋺":"⋺",њ:"њ","≦̸":"≦̸","↚":"↚","‥":"‥",𝕟:"𝕟","¬":"¬","⋹̸":"⋹̸","⋵̸":"⋵̸","⋷":"⋷","⋶":"⋶","⋾":"⋾","⋽":"⋽","⫽⃥":"⫽⃥","∂̸":"∂̸","⨔":"⨔","↛":"↛","⤳̸":"⤳̸","↝̸":"↝̸",𝓃:"𝓃","⊄":"⊄","⫅̸":"⫅̸","⊅":"⊅","⫆̸":"⫆̸",ñ:"ñ",ν:"ν","#":"#","№":"№"," ":" ","⊭":"⊭","⤄":"⤄","≍⃒":"≍⃒","⊬":"⊬","≥⃒":"≥⃒",">⃒":">⃒","⧞":"⧞","⤂":"⤂","≤⃒":"≤⃒","<⃒":"<⃒","⊴⃒":"⊴⃒","⤃":"⤃","⊵⃒":"⊵⃒","∼⃒":"∼⃒","⇖":"⇖","⤣":"⤣","⤧":"⤧",ó:"ó",ô:"ô",о:"о",ő:"ő","⨸":"⨸","⦼":"⦼",œ:"œ","⦿":"⦿",𝔬:"𝔬","˛":"˛",ò:"ò","⧁":"⧁","⦵":"⦵","⦾":"⦾","⦻":"⦻","⧀":"⧀",ō:"ō",ω:"ω",ο:"ο","⦶":"⦶",𝕠:"𝕠","⦷":"⦷","⦹":"⦹","∨":"∨","⩝":"⩝",ℴ:"ℴ",ª:"ª",º:"º","⊶":"⊶","⩖":"⩖","⩗":"⩗","⩛":"⩛",ø:"ø","⊘":"⊘",õ:"õ","⨶":"⨶",ö:"ö","⌽":"⌽","¶":"¶","⫳":"⫳","⫽":"⫽",п:"п","%":"%",".":".","‰":"‰","‱":"‱",𝔭:"𝔭",φ:"φ",ϕ:"ϕ","☎":"☎",π:"π",ϖ:"ϖ",ℎ:"ℎ","+":"+","⨣":"⨣","⨢":"⨢","⨥":"⨥","⩲":"⩲","⨦":"⨦","⨧":"⨧","⨕":"⨕",𝕡:"𝕡","£":"£","⪳":"⪳","⪷":"⪷","⪹":"⪹","⪵":"⪵","⋨":"⋨","′":"′","⌮":"⌮","⌒":"⌒","⌓":"⌓","⊰":"⊰",𝓅:"𝓅",ψ:"ψ"," ":" ",𝔮:"𝔮",𝕢:"𝕢","⁗":"⁗",𝓆:"𝓆","⨖":"⨖","?":"?","⤜":"⤜","⥤":"⥤","∽̱":"∽̱",ŕ:"ŕ","⦳":"⦳","⦒":"⦒","⦥":"⦥","»":"»","⥵":"⥵","⤠":"⤠","⤳":"⤳","⤞":"⤞","⥅":"⥅","⥴":"⥴","↣":"↣","↝":"↝","⤚":"⤚","∶":"∶","❳":"❳","}":"}","]":"]","⦌":"⦌","⦎":"⦎","⦐":"⦐",ř:"ř",ŗ:"ŗ",р:"р","⤷":"⤷","⥩":"⥩","↳":"↳","▭":"▭","⥽":"⥽",𝔯:"𝔯","⥬":"⥬",ρ:"ρ",ϱ:"ϱ","⇉":"⇉","⋌":"⋌","˚":"˚","‏":"‏","⎱":"⎱","⫮":"⫮","⟭":"⟭","⇾":"⇾","⦆":"⦆",𝕣:"𝕣","⨮":"⨮","⨵":"⨵",")":")","⦔":"⦔","⨒":"⨒","›":"›",𝓇:"𝓇","⋊":"⋊","▹":"▹","⧎":"⧎","⥨":"⥨","℞":"℞",ś:"ś","⪴":"⪴","⪸":"⪸",š:"š",ş:"ş",ŝ:"ŝ","⪶":"⪶","⪺":"⪺","⋩":"⋩","⨓":"⨓",с:"с","⋅":"⋅","⩦":"⩦","⇘":"⇘","§":"§",";":";","⤩":"⤩","✶":"✶",𝔰:"𝔰","♯":"♯",щ:"щ",ш:"ш","­":"­",σ:"σ",ς:"ς","⩪":"⩪","⪞":"⪞","⪠":"⪠","⪝":"⪝","⪟":"⪟","≆":"≆","⨤":"⨤","⥲":"⥲","⨳":"⨳","⧤":"⧤","⌣":"⌣","⪪":"⪪","⪬":"⪬","⪬︀":"⪬︀",ь:"ь","/":"/","⧄":"⧄","⌿":"⌿",𝕤:"𝕤","♠":"♠","⊓︀":"⊓︀","⊔︀":"⊔︀",𝓈:"𝓈","☆":"☆","⊂":"⊂","⫅":"⫅","⪽":"⪽","⫃":"⫃","⫁":"⫁","⫋":"⫋","⊊":"⊊","⪿":"⪿","⥹":"⥹","⫇":"⫇","⫕":"⫕","⫓":"⫓","♪":"♪","¹":"¹","²":"²","³":"³","⫆":"⫆","⪾":"⪾","⫘":"⫘","⫄":"⫄","⟉":"⟉","⫗":"⫗","⥻":"⥻","⫂":"⫂","⫌":"⫌","⊋":"⊋","⫀":"⫀","⫈":"⫈","⫔":"⫔","⫖":"⫖","⇙":"⇙","⤪":"⤪",ß:"ß","⌖":"⌖",τ:"τ",ť:"ť",ţ:"ţ",т:"т","⌕":"⌕",𝔱:"𝔱",θ:"θ",ϑ:"ϑ",þ:"þ","×":"×","⨱":"⨱","⨰":"⨰","⌶":"⌶","⫱":"⫱",𝕥:"𝕥","⫚":"⫚","‴":"‴","▵":"▵","≜":"≜","◬":"◬","⨺":"⨺","⨹":"⨹","⧍":"⧍","⨻":"⨻","⏢":"⏢",𝓉:"𝓉",ц:"ц",ћ:"ћ",ŧ:"ŧ","⥣":"⥣",ú:"ú",ў:"ў",ŭ:"ŭ",û:"û",у:"у",ű:"ű","⥾":"⥾",𝔲:"𝔲",ù:"ù","▀":"▀","⌜":"⌜","⌏":"⌏","◸":"◸",ū:"ū",ų:"ų",𝕦:"𝕦",υ:"υ","⇈":"⇈","⌝":"⌝","⌎":"⌎",ů:"ů","◹":"◹",𝓊:"𝓊","⋰":"⋰",ũ:"ũ",ü:"ü","⦧":"⦧","⫨":"⫨","⫩":"⫩","⦜":"⦜","⊊︀":"⊊︀","⫋︀":"⫋︀","⊋︀":"⊋︀","⫌︀":"⫌︀",в:"в","⊻":"⊻","≚":"≚","⋮":"⋮",𝔳:"𝔳",𝕧:"𝕧",𝓋:"𝓋","⦚":"⦚",ŵ:"ŵ","⩟":"⩟","≙":"≙",℘:"℘",𝔴:"𝔴",𝕨:"𝕨",𝓌:"𝓌",𝔵:"𝔵",ξ:"ξ","⋻":"⋻",𝕩:"𝕩",𝓍:"𝓍",ý:"ý",я:"я",ŷ:"ŷ",ы:"ы","¥":"¥",𝔶:"𝔶",ї:"ї",𝕪:"𝕪",𝓎:"𝓎",ю:"ю",ÿ:"ÿ",ź:"ź",ž:"ž",з:"з",ż:"ż",ζ:"ζ",𝔷:"𝔷",ж:"ж","⇝":"⇝",𝕫:"𝕫",𝓏:"𝓏","‍":"‍","‌":"‌"}}}},762:(e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.numericUnicodeMap={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}},826:(e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.fromCodePoint=String.fromCodePoint||function(e){return String.fromCharCode(Math.floor((e-65536)/1024)+55296,(e-65536)%1024+56320)},r.getCodePoint=String.prototype.codePointAt?function(e,r){return e.codePointAt(r)}:function(e,r){return 1024*(e.charCodeAt(r)-55296)+e.charCodeAt(r+1)-56320+65536},r.highSurrogateFrom=55296,r.highSurrogateTo=56319},140:(e,r,t)=>{"use strict";var o=t(918),n=Object.create(null),a="undefined"==typeof document,i=Array.prototype.forEach;function c(){}function l(e,r){if(!r){if(!e.href)return;r=e.href.split("?")[0]}if(u(r)&&!1!==e.isLoaded&&r&&r.indexOf(".css")>-1){e.visited=!0;var t=e.cloneNode();t.isLoaded=!1,t.addEventListener("load",(function(){t.isLoaded||(t.isLoaded=!0,e.parentNode.removeChild(e))})),t.addEventListener("error",(function(){t.isLoaded||(t.isLoaded=!0,e.parentNode.removeChild(e))})),t.href="".concat(r,"?").concat(Date.now()),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t)}}function s(){var e=document.querySelectorAll("link");i.call(e,(function(e){!0!==e.visited&&l(e)}))}function u(e){return!!/^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(e)}e.exports=function(e,r){if(a)return console.log("no window.document found, will not HMR CSS"),c;var t,d,p=function(e){var r=n[e];if(!r){if(document.currentScript)r=document.currentScript.src;else{var t=document.getElementsByTagName("script"),a=t[t.length-1];a&&(r=a.src)}n[e]=r}return function(e){if(!r)return null;var t=r.split(/([^\\/]+)\.js$/),n=t&&t[1];return n&&e?e.split(",").map((function(e){var t=new RegExp("".concat(n,"\\.js$"),"g");return o(r.replace(t,"".concat(e.replace(/{fileName}/g,n),".css")))})):[r.replace(".js",".css")]}}(e);return t=function(){var e=p(r.filename),t=function(e){if(!e)return!1;var r=document.querySelectorAll("link"),t=!1;return i.call(r,(function(r){if(r.href){var n=function(e,r){var t;return e=o(e),r.some((function(o){e.indexOf(r)>-1&&(t=o)})),t}(r.href,e);u(n)&&!0!==r.visited&&n&&(l(r,n),t=!0)}})),t}(e);if(r.locals)return console.log("[HMR] Detected local css modules. Reload all css"),void s();t?console.log("[HMR] css reload %s",e.join(" ")):(console.log("[HMR] Reload all css"),s())},d=0,function(){var e=this,r=arguments;clearTimeout(d),d=setTimeout((function(){return t.apply(e,r)}),50)}}},918:e=>{"use strict";e.exports=function(e){if(e=e.trim(),/^data:/i.test(e))return e;var r=-1!==e.indexOf("//")?e.split("//")[0]+"//":"",t=e.replace(new RegExp(r,"i"),"").split("/"),o=t[0].toLowerCase().replace(/\.$/,"");return t[0]="",r+o+t.reduce((function(e,r){switch(r){case"..":e.pop();break;case".":break;default:e.push(r)}return e}),[]).join("/")}},33:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},894:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},338:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},265:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},277:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},787:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},574:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},878:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},495:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},134:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},843:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},483:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},676:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},313:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},710:(e,r,t)=>{"use strict";var o,n;o=void 0,n=t(140)(e.id,{}),e.hot.data&&e.hot.data.value&&e.hot.data.value!==o?e.hot.invalidate():e.hot.accept(),e.hot.dispose((function(e){e.value=o,n()}))},777:(e,r,t)=>{"use strict";function o(e,r){return!(!e||!e.classList.contains(r))||!!e.parentElement&&o(e.parentElement,r)}t(33),t(894),t(338);function n(){return window.innerWidth<440?"mobile":window.innerWidth>=440&&window.innerWidth<900?"tablet":"desktop"}var a=function(){function e(e){this.trapElement=e,this.handleKeyDown=this.handleKeyDown.bind(this),this.trapElement.addEventListener("keydown",this.handleKeyDown)}return e.prototype.handleKeyDown=function(e){var r=Array.from(this.trapElement.querySelectorAll('[role="option"]')).filter((function(e){return"none"!==e.style.display&&-1!==e.tabIndex}));if(["Tab","ArrowDown","ArrowUp"].includes(e.key)&&0!==r.length){var t=r[0],o=r[r.length-1];if("ArrowUp"===e.key)if(document.activeElement===t)o.focus();else{var n=r.indexOf(document.activeElement);r[n-1].focus()}"ArrowDown"===e.key&&(document.activeElement===o?t.focus():(n=r.indexOf(document.activeElement),r[n+1].focus())),"Tab"===e.key&&(e.shiftKey?document.activeElement===t&&(o.focus(),e.preventDefault()):document.activeElement===o&&(t.focus(),e.preventDefault()))}},e.prototype.destroy=function(){this.trapElement.removeEventListener("keydown",this.handleKeyDown)},e}(),i='[data-role="dropdown"]',c='[data-role="dropdown-toggle"]',l='[data-role="dropdown-listbox"]';function s(e){var r,t=e.querySelectorAll(c);null==t||t.forEach(u),null==(r=e.querySelector(l))||r.classList.toggle("dropdown--list_expanded")}function u(e){e.classList.contains("button_dropdown")&&e.classList.toggle("button_dropdown_active")}function d(e){var r=e.target;o(r,"dropdown")&&"dropdown--overlay"!==r.className||document.querySelectorAll(i).forEach((function(e){var r,t;null===(r=e.querySelectorAll(c))||void 0===r||r.forEach((function(e){e.classList.remove("button_dropdown_active")})),null===(t=e.querySelectorAll(l))||void 0===t||t.forEach((function(e){e.classList.remove("dropdown--list_expanded")}))}))}function p(e){e.tag.removeAttribute("style"),e.option.setAttribute("style","display: none")}function f(e){e.tag.setAttribute("style","display: none"),e.option.removeAttribute("style")}function g(e){var r,t=null===(r=e.querySelector(".checkbox--input"))||void 0===r?void 0:r.getAttribute("data-filter"),o=filteringContext.activeFilters.findIndex((function(e){return e===t}));-1===o?filteringContext.activeFilters.push(t):filteringContext.activeFilters.splice(o,1),refreshFiltering(),refreshSourcesetsCache()}document.addEventListener("DOMContentLoaded",(function(){document.querySelectorAll(i).forEach((function(e){var r;null===(r=e.querySelectorAll(c))||void 0===r||r.forEach((function(r){r.addEventListener("click",(function(){return s(e)}))})),function(e){new a(e),e.addEventListener("keydown",(function(r){var t;"Escape"===r.key&&(s(e),null===(t=e.querySelector(c))||void 0===t||t.focus())}))}(e)})),document.addEventListener("click",d)})),t(265),document.addEventListener("DOMContentLoaded",(function(){var e=document.getElementById("navigation-wrapper"),r=document.getElementById("library-version"),t=document.getElementById("filter-section"),o=document.querySelector("#filter-section + .navigation-controls--btn"),a=document.getElementById("filter-section-dropdown");if(e&&r&&t&&o&&a){var i=null==t?void 0:t.querySelectorAll(".dropdown--option"),c=null==t?void 0:t.querySelectorAll(".platform-selector");if(c&&i)if(c.length===i.length){var l=Array.from({length:c.length}).map((function(e,r){return{tag:c[r],option:i[r]}})),s=l.map((function(e){return e.tag.getBoundingClientRect().width})),u=n(),d=new ResizeObserver((function(){var r=n();u!==r&&(l.forEach(p),s=function(e){return e.map((function(e){return e.tag.getBoundingClientRect().width}))}(l)),u=r,h(),d.unobserve(e)})),m=function(){d.observe(e)};h(),m(),i.forEach((function(e){e.addEventListener("click",(function(e){g(e.target)})),e.addEventListener("keydown",(function(e){var r=e.key;"Enter"!==r&&" "!==r||g(e.target)}))})),window.addEventListener("resize",m)}else console.warn("Dokka: filter section items are not equal");else console.warn("Dokka: filter section items are not found")}else console.warn("Dokka: filter section is not found");function h(){var n,i;if(e&&a){if(e.getBoundingClientRect().width<900)return l.forEach(f),void a.removeAttribute("style");var c=(r&&o?o.getBoundingClientRect().left-r.getBoundingClientRect().right:0)-44-10,u=0;a.removeAttribute("style");var d=!1;l.forEach((function(e,r){(u+=s[r]+4)=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")},h=function(){var e=!1;try{var r="__testLocalStorageKey__";localStorage.setItem(r,r),localStorage.removeItem(r),e=!0}catch(e){console.error("Local storage is not available",e)}return{getItem:function(r){return e?localStorage.getItem(r):null},setItem:function(r,t){e&&localStorage.setItem(r,t)}}}();function v(e){var r,t=null===(r=e.getAttribute("data-togglable"))||void 0===r?void 0:r.split(",");!function(){var r,t,o,n;try{for(var a=m(document.getElementsByClassName("tabs-section")),i=a.next();!i.done;i=a.next()){var c=i.value;try{for(var l=(o=void 0,m(c.children)),s=l.next();!s.done;s=l.next()){var u=s.value;u.getAttribute("data-togglable")===e.getAttribute("data-togglable")?u.setAttribute("data-active",""):u.removeAttribute("data-active")}}catch(e){o={error:e}}finally{try{s&&!s.done&&(n=l.return)&&n.call(l)}finally{if(o)throw o.error}}}}catch(e){r={error:e}}finally{try{i&&!i.done&&(t=a.return)&&t.call(a)}finally{if(r)throw r.error}}}(),document.querySelectorAll(".tabs-section-body *[data-togglable]").forEach((function(e){var r=e.getAttribute("data-togglable");t&&r&&t.includes(r)?e.setAttribute("data-active",""):e.classList.contains("sourceset-dependent-content")||e.removeAttribute("data-active")}))}window.initTabs=function(){var e=document.querySelector(".main-content"),r="active-tab-"+(e?e.getAttribute("data-page-type"):null);document.querySelectorAll("div[tabs-section]").forEach((function(e){!function(e){var r=e.querySelector("button[data-active]");r&&v(r)}(e),e.addEventListener("click",(function(e){var t=e.target,o=t?t.getAttribute("data-togglable"):null;o&&(h.setItem(r,JSON.stringify(o)),v(t))}))}));var t=h.getItem(r);if(t){var o=document.querySelector('div[tabs-section] > button[data-togglable="'+JSON.parse(t)+'"]');o&&v(o)}},window.toggleSections=v,t(710),t(787),t(277)},927:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>i});var o=t(984);function n(e,r){for(var t=0;t{"use strict";var o=t(922),n=t.n(o),a=new RegExp(["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|"),"g");const i=function(e){if("string"!=typeof e)throw new TypeError("Expected a `string`, got `".concat(typeof e,"`"));return e.replace(a,"")};var c=t(927),l=t(984),s=t(927),u=void 0!==s?void 0!==s.default?s.default:s:c.default,d=0,p=10,f=null,g=function(e,r,t){(f=new u(e)).onOpen((function(){d=0,void 0!==t&&(p=t)})),f.onClose((function(){if(0===d&&r.close(),f=null,d=0)){var i=self.location.search.toLowerCase(),c=-1===i.indexOf("webpack-dev-server-hot=false"),s=-1===i.indexOf("webpack-dev-server-live-reload=false");if(t&&c)l.Rm.info("App hot update..."),N().emit("webpackHotUpdate",r.currentHash),"undefined"!=typeof self&&self.window&&self.postMessage("webpackHotUpdate".concat(r.currentHash),"*");else if(o&&s)var u=self,d=self.setInterval((function(){("about:"!==u.location.protocol||(u=u.parent).parent===u)&&function(e,r){clearInterval(r),l.Rm.info("App updated. Reloading..."),e.location.reload()}(u,d)}))}}};function P(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}var F=function(e){"object"==typeof e&&["warnings","errors","runtimeErrors"].forEach((function(r){if("string"==typeof e[r]){var t=decodeURIComponent(e[r]),o=new Function("message","var callback = ".concat(t,"\n return callback(message)"));e[r]=o}}))},H={isUnloading:!1,currentHash:t.h()},B={hot:!1,liveReload:!1,progress:!1,overlay:!1},_=function(e){var r={};if("string"==typeof e&&""!==e)for(var t=e.slice(1).split("&"),o=0;o0)return r[r.length-1].getAttribute("src");throw new Error("[webpack-dev-server] Failed to get current script source.")}();try{a=new URL(i,self.location.href)}catch(e){}a&&((r=a).fromCurrentScript=!0)}return r}("?protocol=ws%3A&hostname=0.0.0.0&port=8001&pathname=%2Fws&logging=info&overlay=true&reconnect=10&hot=true&live-reload=true"),M={"Hot Module Replacement":!1,"Live Reloading":!1,Progress:!1,Overlay:!1};if("true"===_.hot&&(B.hot=!0,M["Hot Module Replacement"]=!0),"true"===_["live-reload"]&&(B.liveReload=!0,M["Live Reloading"]=!0),"true"===_.progress&&(B.progress=!0,M.Progress=!0),_.overlay){try{B.overlay=JSON.parse(_.overlay)}catch(e){l.Rm.error("Error parsing overlay options from resource query:",e)}"object"==typeof B.overlay&&(B.overlay=function(e){for(var r=1;r{!function(){"use strict";var e={"./client-src/modules/logger/tapable.js":function(e,r,t){function o(){return{call:function(){}}}t.r(r),t.d(r,{SyncBailHook:function(){return o}})},"./node_modules/webpack/lib/logging/Logger.js":function(e,r){function t(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if(void 0!==("undefined"!=typeof Symbol?Symbol:function(e){return e})&&null!=e[("undefined"!=typeof Symbol?Symbol:function(e){return e}).iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return o(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,r):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,o=new Array(r);t1?r-1:0),o=1;o1e9?(t[0]+=o[0]+1,t[1]=t[1]-1e9+o[1]):(t[0]+=o[0],t[1]+=o[1])),this[s].set(e,t)}},{key:"timeAggregateEnd",value:function(e){if(void 0!==this[s]){var r=this[s].get(e);void 0!==r&&(this[s].delete(e),this[c](i.time,[e].concat(t(r))))}}}],r&&n(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,r}();r.Logger=u},"./node_modules/webpack/lib/logging/createConsoleLogger.js":function(e,r,t){function o(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if(void 0!==("undefined"!=typeof Symbol?Symbol:function(e){return e})&&null!=e[("undefined"!=typeof Symbol?Symbol:function(e){return e}).iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return n(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(e,r):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,o=new Array(r);t0&&"string"==typeof t[0]?["[".concat(e,"] ").concat(t[0])].concat(o(t.slice(1))):["[".concat(e,"]")].concat(o(t)):[]},i=u.some((function(r){return r(e)}));switch(r){case a.debug:if(!i)return;"function"==typeof s.debug?s.debug.apply(s,o(n())):s.log.apply(s,o(n()));break;case a.log:if(!i&&d>c.log)return;s.log.apply(s,o(n()));break;case a.info:if(!i&&d>c.info)return;s.info.apply(s,o(n()));break;case a.warn:if(!i&&d>c.warn)return;s.warn.apply(s,o(n()));break;case a.error:if(!i&&d>c.error)return;s.error.apply(s,o(n()));break;case a.trace:if(!i)return;s.trace();break;case a.groupCollapsed:if(!i&&d>c.log)return;if(!i&&d>c.verbose){"function"==typeof s.groupCollapsed?s.groupCollapsed.apply(s,o(n())):s.log.apply(s,o(n()));break}case a.group:if(!i&&d>c.log)return;"function"==typeof s.group?s.group.apply(s,o(n())):s.log.apply(s,o(n()));break;case a.groupEnd:if(!i&&d>c.log)return;"function"==typeof s.groupEnd&&s.groupEnd();break;case a.time:if(!i&&d>c.log)return;var l=1e3*t[1]+t[2]/1e6,p="[".concat(e,"] ").concat(t[0],": ").concat(l," ms");"function"==typeof s.logTime?s.logTime(p):s.log(p);break;case a.profile:"function"==typeof s.profile&&s.profile.apply(s,o(n()));break;case a.profileEnd:"function"==typeof s.profileEnd&&s.profileEnd.apply(s,o(n()));break;case a.clear:if(!i&&d>c.log)return;"function"==typeof s.clear&&s.clear();break;case a.status:if(!i&&d>c.info)return;"function"==typeof s.status?0===t.length?s.status():s.status.apply(s,o(n())):0!==t.length&&s.info.apply(s,o(n()));break;default:throw new Error("Unexpected LogType ".concat(r))}}}},"./node_modules/webpack/lib/logging/runtime.js":function(e,r,t){function o(){return o=Object.assign?Object.assign.bind():function(e){for(var r=1;r{"use strict";t.d(r,{Bk:()=>c,He:()=>a,Rm:()=>i});var o=t(491),n=t.n(o);function a(e){n().configureDefaultLogger({level:e})}a("info");var i=n().getLogger("webpack-dev-server"),c=function(e){var r=Object.keys(e);if(e&&0!==r.length){for(var t="Server started:",o=0;o{var o,n=function(){return o.indexOf(t.h())>=0},a=t(922),i=function r(){e.hot.check(!0).then((function(e){if(!e)return a("warning","[HMR] Cannot find update. "+("undefined"!=typeof window?"Need to do a full reload!":"Please reload manually!")),a("warning","[HMR] (Probably because of restarting the webpack-dev-server)"),void("undefined"!=typeof window&&window.location.reload());n()||r(),t(617)(e,e),n()&&a("info","[HMR] App is up to date.")})).catch((function(r){var t=e.hot.status();["abort","fail"].indexOf(t)>=0?(a("warning","[HMR] Cannot apply update. "+("undefined"!=typeof window?"Need to do a full reload!":"Please reload manually!")),a("warning","[HMR] "+a.formatError(r)),"undefined"!=typeof window&&window.location.reload()):a("warning","[HMR] Update failed: "+a.formatError(r))}))};t(982).on("webpackHotUpdate",(function(r){o=r,n()||"idle"!==e.hot.status()||(a("info","[HMR] Checking for updates on the server..."),i())})),a("info","[HMR] Waiting for update signal from WDS...")},982:(e,r,t)=>{var o=t(7);e.exports=new o},617:(e,r,t)=>{e.exports=function(e,r){var o=e.filter((function(e){return r&&r.indexOf(e)<0})),n=t(922);o.length>0&&(n("warning","[HMR] The following modules couldn't be hot updated: (They would need a full reload!)"),o.forEach((function(e){n("warning","[HMR] - "+e)}))),r&&0!==r.length?(n("info","[HMR] Updated modules:"),r.forEach((function(e){if("string"==typeof e&&-1!==e.indexOf("!")){var r=e.split("!");n.groupCollapsed("info","[HMR] - "+r.pop()),n("info","[HMR] - "+e),n.groupEnd("info")}else n("info","[HMR] - "+e)})),r.every((function(e){return"number"==typeof e}))&&n("info",'[HMR] Consider using the optimization.moduleIds: "named" for module names.')):n("info","[HMR] Nothing hot updated.")}},922:e=>{var r="info";function t(){}function o(e){return"info"===r&&"info"===e||["info","warning"].indexOf(r)>=0&&"warning"===e||["info","warning","error"].indexOf(r)>=0&&"error"===e}function n(e){return function(r,t){o(r)&&e(t)}}e.exports=function(e,r){o(e)&&("info"===e?console.log(r):"warning"===e?console.warn(r):"error"===e&&console.error(r))};var a=console.group||t,i=console.groupCollapsed||t,c=console.groupEnd||t;e.exports.group=n(a),e.exports.groupCollapsed=n(i),e.exports.groupEnd=n(c),e.exports.setLogLevel=function(e){r=e},e.exports.formatError=function(e){var r=e.message,t=e.stack;return t?t.indexOf(r)<0?r+"\n"+t:t:r}}},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var a=o[e]={id:e,exports:{}},i={id:e,module:a,factory:t[e],require:n};return n.i.forEach((function(e){e(i)})),a=i.module,i.factory.call(a.exports,a,a.exports,i.require),a.exports}n.m=t,n.c=o,n.i=[],n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.hu=e=>e+"."+n.h()+".hot-update.js",n.miniCssF=e=>{},n.hmrF=()=>"entry."+n.h()+".hot-update.json",n.h=()=>"a002cb0c8023b615b0b1",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="search:",n.l=(t,o,a,i)=>{if(e[t])e[t].push(o);else{var c,l;if(void 0!==a)for(var s=document.getElementsByTagName("script"),u=0;u{c.onerror=c.onload=null,clearTimeout(f);var n=e[t];if(delete e[t],c.parentNode&&c.parentNode.removeChild(c),n&&n.forEach((e=>e(o))),r)return r(o)},f=setTimeout(p.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=p.bind(null,c.onerror),c.onload=p.bind(null,c.onload),l&&document.head.appendChild(c)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e,r,t,o={},a=n.c,i=[],c=[],l="idle",s=0,u=[];function d(e){l=e;for(var r=[],t=0;t0)return d("abort").then((function(){throw n[0]}));var a=d("dispose");o.forEach((function(e){e.dispose&&e.dispose()}));var i,c=d("apply"),l=function(e){i||(i=e)},s=[];return o.forEach((function(e){if(e.apply){var r=e.apply(l);if(r)for(var t=0;t=0&&b._disposeHandlers.splice(r,1)},invalidate:function(){switch(this._selfInvalidated=!0,l){case"idle":r=[],Object.keys(n.hmrI).forEach((function(e){n.hmrI[e](m,r)})),d("ready");break;case"ready":Object.keys(n.hmrI).forEach((function(e){n.hmrI[e](m,r)}));break;case"prepare":case"check":case"dispose":case"apply":(t=t||[]).push(m)}},check:f,apply:g,status:function(e){if(!e)return l;c.push(e)},addStatusHandler:function(e){c.push(e)},removeStatusHandler:function(e){var r=c.indexOf(e);r>=0&&c.splice(r,1)},data:o[m]},e=void 0,b),y.parents=i,y.children=[],i=[],u.require=w})),n.hmrC={},n.hmrI={}})(),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var r=n.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{if("undefined"!=typeof document){var e=[],r=[],t=t=>({dispose:()=>{for(var r=0;r{for(var e=0;e{l.push(t),o.forEach((t=>{var o=n.miniCssF(t),a=n.p+o,i=((e,r)=>{for(var t=document.getElementsByTagName("link"),o=0;o{var l=((e,r,t,o,a)=>{var i=document.createElement("link");return i.rel="stylesheet",i.type="text/css",n.nc&&(i.nonce=n.nc),i.onerror=i.onload=t=>{if(i.onerror=i.onload=null,"load"===t.type)o();else{var n=t&&t.type,c=t&&t.target&&t.target.href||r,l=new Error("Loading CSS chunk "+e+" failed.\n("+n+": "+c+")");l.name="ChunkLoadError",l.code="CSS_CHUNK_LOAD_FAILED",l.type=n,l.request=c,i.parentNode&&i.parentNode.removeChild(i),a(l)}},i.href=r,t?t.parentNode.insertBefore(i,t.nextSibling):document.head.appendChild(i),i})(t,a,i,(()=>{l.as="style",l.rel="preload",o()}),c);e.push(i),r.push(l)})))}))}}})(),(()=>{var e,r,t,o,a,i=n.hmrS_jsonp=n.hmrS_jsonp||{201:0},c={};function l(r,t){return e=t,new Promise(((e,t)=>{c[r]=e;var o=n.p+n.hu(r),a=new Error;n.l(o,(e=>{if(c[r]){c[r]=void 0;var o=e&&("load"===e.type?"missing":e.type),n=e&&e.target&&e.target.src;a.message="Loading hot update chunk "+r+" failed.\n("+o+": "+n+")",a.name="ChunkLoadError",a.type=o,a.request=n,t(a)}}))}))}function s(e){function c(e){for(var r=[e],t={},o=r.map((function(e){return{chain:[e],id:e}}));o.length>0;){var a=o.pop(),i=a.id,c=a.chain,s=n.c[i];if(s&&(!s.hot._selfAccepted||s.hot._selfInvalidated)){if(s.hot._selfDeclined)return{type:"self-declined",chain:c,moduleId:i};if(s.hot._main)return{type:"unaccepted",chain:c,moduleId:i};for(var u=0;u ")),g.type){case"self-declined":e.onDeclined&&e.onDeclined(g),e.ignoreDeclined||(h=new Error("Aborted because of self decline: "+g.moduleId+y));break;case"declined":e.onDeclined&&e.onDeclined(g),e.ignoreDeclined||(h=new Error("Aborted because of declined dependency: "+g.moduleId+" in "+g.parentId+y));break;case"unaccepted":e.onUnaccepted&&e.onUnaccepted(g),e.ignoreUnaccepted||(h=new Error("Aborted because "+f+" is not accepted"+y));break;case"accepted":e.onAccepted&&e.onAccepted(g),v=!0;break;case"disposed":e.onDisposed&&e.onDisposed(g),b=!0;break;default:throw new Error("Unexception type "+g.type)}if(h)return{error:h};if(v)for(f in d[f]=m,l(u,g.outdatedModules),g.outdatedDependencies)n.o(g.outdatedDependencies,f)&&(s[f]||(s[f]=[]),l(s[f],g.outdatedDependencies[f]));b&&(l(u,[g.moduleId]),d[f]=p)}t=void 0;for(var w,E=[],q=0;q0;){var a=t.pop(),c=n.c[a];if(c){var l={},d=c.hot._disposeHandlers;for(q=0;q=0&&p.parents.splice(e,1)}}}for(var f in s)if(n.o(s,f)&&(c=n.c[f]))for(w=s[f],q=0;q=0&&c.children.splice(e,1)},apply:function(r){for(var t in d)n.o(d,t)&&(n.m[t]=d[t]);for(var o=0;o{for(var l in o)n.o(o,l)&&(t[l]=o[l],e&&e.push(l));i&&a.push(i),c[r]&&(c[r](),c[r]=void 0)},n.hmrI.jsonp=function(e,r){t||(t={},a=[],o=[],r.push(s)),n.o(t,e)||(t[e]=n.m[e])},n.hmrC.jsonp=function(e,c,u,d,p,f){p.push(s),r={},o=c,t=u.reduce((function(e,r){return e[r]=!1,e}),{}),a=[],e.forEach((function(e){n.o(i,e)&&void 0!==i[e]?(d.push(l(e,f)),r[e]=!0):r[e]=!1})),n.f&&(n.f.jsonpHmr=function(e,t){r&&n.o(r,e)&&!r[e]&&(t.push(l(e)),r[e]=!0)})},n.hmrM=()=>{if("undefined"==typeof fetch)throw new Error("No browser support: need fetch API");return fetch(n.p+n.hmrF()).then((e=>{if(404!==e.status){if(!e.ok)throw new Error("Failed to fetch update manifest "+e.statusText);return e.json()}}))}})(),n(877),n(943),n(777)})(); \ No newline at end of file diff --git a/dokka-subprojects/plugin-versioning/src/main/kotlin/org/jetbrains/dokka/versioning/VersionsNavigationCreator.kt b/dokka-subprojects/plugin-versioning/src/main/kotlin/org/jetbrains/dokka/versioning/VersionsNavigationCreator.kt index b6ead56eba..9e223899d0 100644 --- a/dokka-subprojects/plugin-versioning/src/main/kotlin/org/jetbrains/dokka/versioning/VersionsNavigationCreator.kt +++ b/dokka-subprojects/plugin-versioning/src/main/kotlin/org/jetbrains/dokka/versioning/VersionsNavigationCreator.kt @@ -5,8 +5,13 @@ package org.jetbrains.dokka.versioning import kotlinx.html.a +import kotlinx.html.button import kotlinx.html.div +import kotlinx.html.i +import kotlinx.html.li +import kotlinx.html.span import kotlinx.html.stream.appendHTML +import kotlinx.html.ul import org.jetbrains.dokka.plugability.DokkaContext import org.jetbrains.dokka.plugability.configuration import org.jetbrains.dokka.plugability.plugin @@ -49,37 +54,67 @@ public class HtmlVersionsNavigationCreator( .let { versions -> versionsOrdering.order(versions.keys.toList()).map { it to versions[it] } } .takeIf { it.isNotEmpty() } ?.let { orderedVersions -> - StringBuilder().appendHTML().div(classes = "versions-dropdown") { + StringBuilder().appendHTML().div(classes = "dropdown versions-dropdown") { + attributes["data-role"] = "dropdown" val activeVersion = getActiveVersion(position) - val relativePosition: String = activeVersion?.value?.let { output.toRelativeString(it) } ?: "index.html" - div(classes = "versions-dropdown-button") { + val relativePosition: String = + activeVersion?.value?.let { output.toRelativeString(it) } ?: "index.html" + button(classes = "button button_dropdown") { + attributes["role"] = "combobox" + attributes["data-role"] = "dropdown-toggle" + attributes["aria-controls"] = "versions-listbox" + attributes["aria-haspopup"] = "listbox" + attributes["aria-expanded"] = "false" + attributes["aria-label"] = "Select version" activeVersion?.key?.let { text(it) } } - div(classes = "versions-dropdown-data") { + ul(classes = "dropdown--list dropdown--list_positioned_left") { + attributes["role"] = "listbox" + attributes["data-role"] = "dropdown-listbox" + attributes["aria-label"] = "Versions" + attributes["id"] = "versions-listbox" + div(classes = "dropdown--header") { + span { text("Select version") } + button(classes = "button") { + attributes["data-role"] = "dropdown-toggle" + attributes["aria-label"] = "Close versions selection" + i(classes = "ui-kit-icon ui-kit-icon_cross") {} + } + } orderedVersions.forEach { (version, path) -> - if (version == activeVersion?.key) { - a(href = output.name) { text(version) } - } else { - val isExistsFile = - if (version == versioningStorage.currentVersion.name) - path?.resolve(relativePosition)?.exists() == true - else - versioningStorage.previousVersions[version]?.src?.resolve(relativePosition) - ?.exists() == true + li { + if (version == activeVersion?.key) { + a(classes = "dropdown--option dropdown--option-link", href = output.name) { + attributes["role"] = "option" + text(version) + } + } else { + val isExistsFile = + if (version == versioningStorage.currentVersion.name) + path?.resolve(relativePosition)?.exists() == true + else + versioningStorage.previousVersions[version]?.src?.resolve(relativePosition) + ?.exists() == true - val absolutePath = - if (isExistsFile) - path?.resolve(relativePosition) - else - versioningStorage.currentVersion.dir.resolve("not-found-version.html") + val absolutePath = + if (isExistsFile) + path?.resolve(relativePosition) + else + versioningStorage.currentVersion.dir.resolve("not-found-version.html") - a(href = absolutePath?.toRelativeString(position) + - if (!isExistsFile) "?v=" + version.urlEncoded() else "") { + a( + classes = "dropdown--option dropdown--option-link", + href = absolutePath?.toRelativeString(position) + + if (!isExistsFile) "?v=" + version.urlEncoded() else "" + ) { + attributes["role"] = "option" text(version) + } } } } } + div(classes = "dropdown--overlay") {} }.toString() }.orEmpty() } diff --git a/dokka-subprojects/plugin-versioning/src/main/resources/dokka/styles/multimodule.css b/dokka-subprojects/plugin-versioning/src/main/resources/dokka/styles/multimodule.css index f2a9383ec3..6f96df6a90 100644 --- a/dokka-subprojects/plugin-versioning/src/main/resources/dokka/styles/multimodule.css +++ b/dokka-subprojects/plugin-versioning/src/main/resources/dokka/styles/multimodule.css @@ -3,69 +3,23 @@ */ .versions-dropdown { - display: flex; - align-items: center; - position: relative; - height: 40px; - border-radius: 4px; - padding-left: var(--size-s2); - cursor: pointer; + white-space: nowrap; } -.versions-dropdown:active { - background-color: var(--color-key-blue); -} - -@media (max-width: 900px) { +@media (width < 900px) { .versions-dropdown { height: 52px; + margin-left: -8px; } } -.versions-dropdown-button { - display: flex; - border: none; - cursor: pointer; - padding: 5px; -} - -.versions-dropdown-button::after { - content: ''; - -webkit-mask: url("../images/arrow_down.svg") no-repeat 50% 50%; - mask: url("../images/arrow_down.svg") no-repeat 50% 50%; - mask-size: auto; - -webkit-mask-size: cover; - mask-size: cover; - background-color: #fff; - display: inline-block; - transform: rotate(90deg); - width: 24px; - height: 16px; -} - -.versions-dropdown-data { - display: none; - position: absolute; - background-color: #27282c; - border: 1px solid hsla(0, 0%, 100%, .6); - box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2); - z-index: 1; - overflow-y: auto; - max-height: 200px; - min-width: 50px; -} - -.versions-dropdown-data > a { - display: block; - padding: 5px; - color: #fff; - text-decoration: none; -} - -.versions-dropdown-data > a:hover { - background-color: hsla(0,0%,100%,.1) +@media (width >= 900px) { + .versions-dropdown .dropdown--list { + min-width: 60px; + top: 44px; + } } -.versions-dropdown:hover .versions-dropdown-data { +.no-js .versions-dropdown:hover .dropdown--list { display: block; }