forked from streamlit/streamlit
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add the ability to use nonemoji icons (from material outlined font) in alert elements, toast, and as a favicon.
- Loading branch information
Showing
106 changed files
with
546 additions
and
51 deletions.
There are no files selected for viewing
Binary file added
BIN
+3.46 KB
...ts__/linux/st_alert_test/st_alert-error_non_emoji_icon[dark_theme-chromium].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+4.99 KB
...ots__/linux/st_alert_test/st_alert-error_non_emoji_icon[dark_theme-firefox].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.2 KB
...hots__/linux/st_alert_test/st_alert-error_non_emoji_icon[dark_theme-webkit].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.32 KB
...s__/linux/st_alert_test/st_alert-error_non_emoji_icon[light_theme-chromium].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+4.94 KB
...ts__/linux/st_alert_test/st_alert-error_non_emoji_icon[light_theme-firefox].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.09 KB
...ots__/linux/st_alert_test/st_alert-error_non_emoji_icon[light_theme-webkit].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.97 KB
...ots__/linux/st_alert_test/st_alert-info_non_emoji_icon[dark_theme-chromium].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+6.06 KB
...hots__/linux/st_alert_test/st_alert-info_non_emoji_icon[dark_theme-firefox].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.69 KB
...shots__/linux/st_alert_test/st_alert-info_non_emoji_icon[dark_theme-webkit].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.89 KB
...ts__/linux/st_alert_test/st_alert-info_non_emoji_icon[light_theme-chromium].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+6.07 KB
...ots__/linux/st_alert_test/st_alert-info_non_emoji_icon[light_theme-firefox].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.61 KB
...hots__/linux/st_alert_test/st_alert-info_non_emoji_icon[light_theme-webkit].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.82 KB
...__/linux/st_alert_test/st_alert-success_non_emoji_icon[dark_theme-chromium].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+6.1 KB
...s__/linux/st_alert_test/st_alert-success_non_emoji_icon[dark_theme-firefox].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.56 KB
...ts__/linux/st_alert_test/st_alert-success_non_emoji_icon[dark_theme-webkit].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.87 KB
..._/linux/st_alert_test/st_alert-success_non_emoji_icon[light_theme-chromium].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+6.08 KB
...__/linux/st_alert_test/st_alert-success_non_emoji_icon[light_theme-firefox].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.55 KB
...s__/linux/st_alert_test/st_alert-success_non_emoji_icon[light_theme-webkit].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.52 KB
...__/linux/st_alert_test/st_alert-warning_non_emoji_icon[dark_theme-chromium].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+5.22 KB
...s__/linux/st_alert_test/st_alert-warning_non_emoji_icon[dark_theme-firefox].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.23 KB
...ts__/linux/st_alert_test/st_alert-warning_non_emoji_icon[dark_theme-webkit].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.4 KB
..._/linux/st_alert_test/st_alert-warning_non_emoji_icon[light_theme-chromium].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+5.18 KB
...__/linux/st_alert_test/st_alert-warning_non_emoji_icon[light_theme-firefox].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.14 KB
...s__/linux/st_alert_test/st_alert-warning_non_emoji_icon[light_theme-webkit].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-156 Bytes
(96%)
...pshots__/linux/st_chat_message_test/st_chat_message-10[dark_theme-chromium].png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-407 Bytes
(93%)
...apshots__/linux/st_chat_message_test/st_chat_message-10[dark_theme-firefox].png
Oops, something went wrong.
Binary file modified
BIN
+9 Bytes
(100%)
...napshots__/linux/st_chat_message_test/st_chat_message-10[dark_theme-webkit].png
Oops, something went wrong.
Binary file modified
BIN
+2 Bytes
(100%)
...shots__/linux/st_chat_message_test/st_chat_message-10[light_theme-chromium].png
Oops, something went wrong.
Binary file modified
BIN
-191 Bytes
(97%)
...pshots__/linux/st_chat_message_test/st_chat_message-10[light_theme-firefox].png
Oops, something went wrong.
Binary file modified
BIN
+139 Bytes
(100%)
...apshots__/linux/st_chat_message_test/st_chat_message-10[light_theme-webkit].png
Oops, something went wrong.
Binary file modified
BIN
-1.64 KB
(65%)
...pshots__/linux/st_chat_message_test/st_chat_message-11[dark_theme-chromium].png
Oops, something went wrong.
Binary file modified
BIN
-1.45 KB
(76%)
...apshots__/linux/st_chat_message_test/st_chat_message-11[dark_theme-firefox].png
Oops, something went wrong.
Binary file modified
BIN
-1.33 KB
(68%)
...napshots__/linux/st_chat_message_test/st_chat_message-11[dark_theme-webkit].png
Oops, something went wrong.
Binary file modified
BIN
-1.4 KB
(68%)
...shots__/linux/st_chat_message_test/st_chat_message-11[light_theme-chromium].png
Oops, something went wrong.
Binary file modified
BIN
-1.37 KB
(77%)
...pshots__/linux/st_chat_message_test/st_chat_message-11[light_theme-firefox].png
Oops, something went wrong.
Binary file modified
BIN
-1.18 KB
(71%)
...apshots__/linux/st_chat_message_test/st_chat_message-11[light_theme-webkit].png
Oops, something went wrong.
Binary file modified
BIN
-1 Byte
(100%)
...pshots__/linux/st_chat_message_test/st_chat_message-12[dark_theme-chromium].png
Oops, something went wrong.
Binary file modified
BIN
+31 Bytes
(100%)
...shots__/linux/st_chat_message_test/st_chat_message-12[light_theme-chromium].png
Oops, something went wrong.
Binary file added
BIN
+4.09 KB
...pshots__/linux/st_chat_message_test/st_chat_message-14[dark_theme-chromium].png
Oops, something went wrong.
Binary file added
BIN
+5.95 KB
...apshots__/linux/st_chat_message_test/st_chat_message-14[dark_theme-firefox].png
Oops, something went wrong.
Binary file added
BIN
+3.71 KB
...napshots__/linux/st_chat_message_test/st_chat_message-14[dark_theme-webkit].png
Oops, something went wrong.
Binary file added
BIN
+3.84 KB
...shots__/linux/st_chat_message_test/st_chat_message-14[light_theme-chromium].png
Oops, something went wrong.
Binary file added
BIN
+5.76 KB
...pshots__/linux/st_chat_message_test/st_chat_message-14[light_theme-firefox].png
Oops, something went wrong.
Binary file added
BIN
+3.54 KB
...apshots__/linux/st_chat_message_test/st_chat_message-14[light_theme-webkit].png
Oops, something went wrong.
Binary file added
BIN
+4.63 KB
...pshots__/linux/st_chat_message_test/st_chat_message-15[dark_theme-chromium].png
Oops, something went wrong.
Binary file added
BIN
+6.15 KB
...apshots__/linux/st_chat_message_test/st_chat_message-15[dark_theme-firefox].png
Oops, something went wrong.
Binary file added
BIN
+4.2 KB
...napshots__/linux/st_chat_message_test/st_chat_message-15[dark_theme-webkit].png
Oops, something went wrong.
Binary file added
BIN
+4.43 KB
...shots__/linux/st_chat_message_test/st_chat_message-15[light_theme-chromium].png
Oops, something went wrong.
Binary file added
BIN
+6.07 KB
...pshots__/linux/st_chat_message_test/st_chat_message-15[light_theme-firefox].png
Oops, something went wrong.
Binary file added
BIN
+4.07 KB
...apshots__/linux/st_chat_message_test/st_chat_message-15[light_theme-webkit].png
Oops, something went wrong.
Binary file modified
BIN
-637 Bytes
(92%)
...ight/__snapshots__/linux/st_toast_test/toast-collapsed[dark_theme-chromium].png
Oops, something went wrong.
Binary file modified
BIN
-299 Bytes
(97%)
...right/__snapshots__/linux/st_toast_test/toast-collapsed[dark_theme-firefox].png
Oops, something went wrong.
Binary file modified
BIN
+43 Bytes
(100%)
...wright/__snapshots__/linux/st_toast_test/toast-collapsed[dark_theme-webkit].png
Oops, something went wrong.
Binary file modified
BIN
-503 Bytes
(94%)
...ght/__snapshots__/linux/st_toast_test/toast-collapsed[light_theme-chromium].png
Oops, something went wrong.
Binary file modified
BIN
-366 Bytes
(97%)
...ight/__snapshots__/linux/st_toast_test/toast-collapsed[light_theme-firefox].png
Oops, something went wrong.
Binary file modified
BIN
-8 Bytes
(100%)
...right/__snapshots__/linux/st_toast_test/toast-collapsed[light_theme-webkit].png
Oops, something went wrong.
Binary file modified
BIN
-65 Bytes
(98%)
...wright/__snapshots__/linux/st_toast_test/toast-default[dark_theme-chromium].png
Oops, something went wrong.
Binary file modified
BIN
-149 Bytes
(97%)
...ywright/__snapshots__/linux/st_toast_test/toast-default[dark_theme-firefox].png
Oops, something went wrong.
Binary file modified
BIN
-40 Bytes
(99%)
...aywright/__snapshots__/linux/st_toast_test/toast-default[dark_theme-webkit].png
Oops, something went wrong.
Binary file modified
BIN
-79 Bytes
(98%)
...right/__snapshots__/linux/st_toast_test/toast-default[light_theme-chromium].png
Oops, something went wrong.
Binary file modified
BIN
-148 Bytes
(97%)
...wright/__snapshots__/linux/st_toast_test/toast-default[light_theme-firefox].png
Oops, something went wrong.
Binary file modified
BIN
-49 Bytes
(99%)
...ywright/__snapshots__/linux/st_toast_test/toast-default[light_theme-webkit].png
Oops, something went wrong.
Binary file modified
BIN
-49 Bytes
(99%)
...right/__snapshots__/linux/st_toast_test/toast-expanded[dark_theme-chromium].png
Oops, something went wrong.
Binary file modified
BIN
+8 Bytes
(100%)
...wright/__snapshots__/linux/st_toast_test/toast-expanded[dark_theme-firefox].png
Oops, something went wrong.
Binary file modified
BIN
+50 Bytes
(100%)
...ywright/__snapshots__/linux/st_toast_test/toast-expanded[dark_theme-webkit].png
Oops, something went wrong.
Binary file modified
BIN
+56 Bytes
(100%)
...ight/__snapshots__/linux/st_toast_test/toast-expanded[light_theme-chromium].png
Oops, something went wrong.
Binary file modified
BIN
-28 Bytes
(100%)
...right/__snapshots__/linux/st_toast_test/toast-expanded[light_theme-firefox].png
Oops, something went wrong.
Binary file modified
BIN
-3 Bytes
(100%)
...wright/__snapshots__/linux/st_toast_test/toast-expanded[light_theme-webkit].png
Oops, something went wrong.
Binary file added
BIN
+3.41 KB
.../__snapshots__/linux/st_toast_test/toast-material-icon[dark_theme-chromium].png
Oops, something went wrong.
Binary file added
BIN
+4.22 KB
...t/__snapshots__/linux/st_toast_test/toast-material-icon[dark_theme-firefox].png
Oops, something went wrong.
Binary file added
BIN
+3.13 KB
...ht/__snapshots__/linux/st_toast_test/toast-material-icon[dark_theme-webkit].png
Oops, something went wrong.
Binary file added
BIN
+3.34 KB
...__snapshots__/linux/st_toast_test/toast-material-icon[light_theme-chromium].png
Oops, something went wrong.
Binary file added
BIN
+4.12 KB
.../__snapshots__/linux/st_toast_test/toast-material-icon[light_theme-firefox].png
Oops, something went wrong.
Binary file added
BIN
+3.05 KB
...t/__snapshots__/linux/st_toast_test/toast-material-icon[light_theme-webkit].png
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/** | ||
* Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2024) | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
@font-face { | ||
font-family: "Material Symbols Outlined"; | ||
font-style: normal; | ||
font-weight: 400; | ||
font-display: block; | ||
/* IMPORTANT: Always use a relative path! */ | ||
src: url("../fonts/MaterialSymbols/MaterialSymbols-Outlined.woff2") | ||
format("woff2"); | ||
} | ||
|
||
.material-symbols-outlined { | ||
font-family: "Material Symbols Outlined"; | ||
font-weight: normal; | ||
font-style: normal; | ||
font-size: 24px; | ||
line-height: 1; | ||
letter-spacing: normal; | ||
text-transform: none; | ||
display: inline-block; | ||
white-space: nowrap; | ||
word-wrap: normal; | ||
direction: ltr; | ||
font-feature-settings: "liga"; | ||
-webkit-font-feature-settings: "liga"; | ||
-webkit-font-smoothing: antialiased; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,3 +17,4 @@ | |
@import "variables"; | ||
@import "fonts"; | ||
@import "reboot"; | ||
@import "icon-fonts"; |
Binary file added
BIN
+242 KB
frontend/app/src/assets/fonts/MaterialSymbols/MaterialSymbols-Outlined.woff2
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,6 +33,15 @@ const SATELLITE_TWEMOJI_URL = | |
const CRESCENT_MOON_TWEMOJI_URL = | ||
"https://cdn.jsdelivr.net/gh/twitter/[email protected]/assets/72x72/1f319.png" | ||
|
||
const FLAG_MATERIAL_ICON_URL = | ||
"https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/flag/default/24px.svg" | ||
|
||
const SMART_DISPLAY_MATERIAL_ICON_URL = | ||
"https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/smart_display/default/24px.svg" | ||
|
||
const ACCESSIBILITY_NEW_MATERIAL_ICON_URL = | ||
"https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/accessibility_new/default/24px.svg" | ||
|
||
test("is set up with the default favicon", () => { | ||
expect(getFaviconHref()).toBe("http://localhost/default.png") | ||
}) | ||
|
@@ -59,6 +68,17 @@ describe("Favicon element", () => { | |
expect(getFaviconHref()).toBe(SATELLITE_TWEMOJI_URL) | ||
}) | ||
|
||
it("handles material icon correctly", () => { | ||
handleFavicon(":material/flag:", jest.fn(), endpoints) | ||
expect(getFaviconHref()).toBe(FLAG_MATERIAL_ICON_URL) | ||
|
||
handleFavicon(":material/smart_display:", jest.fn(), endpoints) | ||
expect(getFaviconHref()).toBe(SMART_DISPLAY_MATERIAL_ICON_URL) | ||
|
||
handleFavicon(":material/accessibility_new:", jest.fn(), endpoints) | ||
expect(getFaviconHref()).toBe(ACCESSIBILITY_NEW_MATERIAL_ICON_URL) | ||
}) | ||
|
||
it("handles emoji shortcodes containing a dash correctly", () => { | ||
handleFavicon(":crescent-moon:", jest.fn(), endpoints) | ||
expect(getFaviconHref()).toBe(CRESCENT_MOON_TWEMOJI_URL) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,6 +19,18 @@ import { grabTheRightIcon } from "@streamlit/lib/src/vendor/twemoji" | |
import { IGuestToHostMessage } from "@streamlit/lib/src/hostComm/types" | ||
import { StreamlitEndpoints } from "@streamlit/lib/src/StreamlitEndpoints" | ||
|
||
function iconToUrl(icon: string): string { | ||
const iconRegexp = /^:(.+)\/(.+):$/ | ||
const matchResult = icon.match(iconRegexp) | ||
if (matchResult === null) { | ||
// If the icon is invalid, return just an empty string | ||
return "" | ||
} | ||
|
||
const iconUrl = `https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/${matchResult[2]}/default/24px.svg` | ||
return iconUrl | ||
} | ||
|
||
/** | ||
* Set the provided url/emoji as the page favicon. | ||
* | ||
|
@@ -34,12 +46,14 @@ export function handleFavicon( | |
const emoji = extractEmoji(favicon) | ||
let imageUrl | ||
|
||
if (emoji) { | ||
if (emoji && !favicon.startsWith(":material")) { | ||
// Find the corresponding Twitter emoji on the CDN. | ||
const codepoint = grabTheRightIcon(emoji) | ||
const emojiUrl = `https://cdn.jsdelivr.net/gh/twitter/[email protected]/assets/72x72/${codepoint}.png` | ||
|
||
imageUrl = emojiUrl | ||
} else if (favicon.startsWith(":material")) { | ||
imageUrl = iconToUrl(favicon) | ||
} else { | ||
imageUrl = endpoints.buildMediaURL(favicon) | ||
} | ||
|
Oops, something went wrong.