8023 lines
444 KiB
HTML
8023 lines
444 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<html lang="en">
|
||
<head><meta charset="utf-8"/>
|
||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||
<title>tutorial</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script><script>
|
||
(function() {
|
||
function addWidgetsRenderer() {
|
||
var mimeElement = document.querySelector('script[type="application/vnd.jupyter.widget-view+json"]');
|
||
var scriptElement = document.createElement('script');
|
||
|
||
var widgetRendererSrc = 'https://unpkg.com/@jupyter-widgets/html-manager@*/dist/embed-amd.js';
|
||
|
||
var widgetState;
|
||
|
||
// Fallback for older version:
|
||
try {
|
||
widgetState = mimeElement && JSON.parse(mimeElement.innerHTML);
|
||
|
||
if (widgetState && (widgetState.version_major < 2 || !widgetState.version_major)) {
|
||
|
||
var widgetRendererSrc = 'https://unpkg.com/@jupyter-js-widgets@*/dist/embed.js';
|
||
|
||
}
|
||
} catch(e) {}
|
||
|
||
scriptElement.src = widgetRendererSrc;
|
||
document.body.appendChild(scriptElement);
|
||
}
|
||
|
||
document.addEventListener('DOMContentLoaded', addWidgetsRenderer);
|
||
}());
|
||
</script>
|
||
<style type="text/css">
|
||
pre { line-height: 125%; }
|
||
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||
.highlight .hll { background-color: var(--jp-cell-editor-active-background) }
|
||
.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
|
||
.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
|
||
.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */
|
||
.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
|
||
.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
|
||
.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
|
||
.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
|
||
.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
|
||
.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
|
||
.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
|
||
.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
|
||
.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
|
||
.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
|
||
.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
|
||
.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
|
||
.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
|
||
.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
|
||
.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
|
||
.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
|
||
.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
|
||
.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
|
||
.highlight .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
|
||
.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
|
||
.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
|
||
.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
|
||
.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
|
||
.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
|
||
.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
|
||
.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
|
||
.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
|
||
.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
|
||
.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
|
||
.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
|
||
.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
|
||
.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
|
||
.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
|
||
.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
|
||
.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
|
||
.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
|
||
.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
|
||
.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
|
||
.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
|
||
</style>
|
||
<style type="text/css">
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
* Mozilla scrollbar styling
|
||
*/
|
||
|
||
/* use standard opaque scrollbars for most nodes */
|
||
[data-jp-theme-scrollbars='true'] {
|
||
scrollbar-color: rgb(var(--jp-scrollbar-thumb-color))
|
||
var(--jp-scrollbar-background-color);
|
||
}
|
||
|
||
/* for code nodes, use a transparent style of scrollbar. These selectors
|
||
* will match lower in the tree, and so will override the above */
|
||
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar,
|
||
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar {
|
||
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
|
||
}
|
||
|
||
/* tiny scrollbar */
|
||
|
||
.jp-scrollbar-tiny {
|
||
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
|
||
scrollbar-width: thin;
|
||
}
|
||
|
||
/* tiny scrollbar */
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar,
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-corner {
|
||
background-color: transparent;
|
||
height: 4px;
|
||
width: 4px;
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-thumb {
|
||
background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal {
|
||
border-left: 0 solid transparent;
|
||
border-right: 0 solid transparent;
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical {
|
||
border-top: 0 solid transparent;
|
||
border-bottom: 0 solid transparent;
|
||
}
|
||
|
||
/*
|
||
* Lumino
|
||
*/
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] {
|
||
min-height: 16px;
|
||
max-height: 16px;
|
||
min-width: 45px;
|
||
border-top: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] {
|
||
min-width: 16px;
|
||
max-width: 16px;
|
||
min-height: 45px;
|
||
border-left: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar-button {
|
||
background-color: #f0f0f0;
|
||
background-position: center center;
|
||
min-height: 15px;
|
||
max-height: 15px;
|
||
min-width: 15px;
|
||
max-width: 15px;
|
||
}
|
||
|
||
.lm-ScrollBar-button:hover {
|
||
background-color: #dadada;
|
||
}
|
||
|
||
.lm-ScrollBar-button.lm-mod-active {
|
||
background-color: #cdcdcd;
|
||
}
|
||
|
||
.lm-ScrollBar-track {
|
||
background: #f0f0f0;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb {
|
||
background: #cdcdcd;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb:hover {
|
||
background: #bababa;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb.lm-mod-active {
|
||
background: #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb {
|
||
height: 100%;
|
||
min-width: 15px;
|
||
border-left: 1px solid #a0a0a0;
|
||
border-right: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb {
|
||
width: 100%;
|
||
min-height: 15px;
|
||
border-top: 1px solid #a0a0a0;
|
||
border-bottom: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal']
|
||
.lm-ScrollBar-button[data-action='decrement'] {
|
||
background-image: var(--jp-icon-caret-left);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal']
|
||
.lm-ScrollBar-button[data-action='increment'] {
|
||
background-image: var(--jp-icon-caret-right);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical']
|
||
.lm-ScrollBar-button[data-action='decrement'] {
|
||
background-image: var(--jp-icon-caret-up);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical']
|
||
.lm-ScrollBar-button[data-action='increment'] {
|
||
background-image: var(--jp-icon-caret-down);
|
||
background-size: 17px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-Widget {
|
||
box-sizing: border-box;
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-Widget.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
|
||
/* Title is rotated for horizontal accordion panel using CSS */
|
||
display: block;
|
||
transform-origin: top left;
|
||
transform: rotate(-90deg) translate(-100%);
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette {
|
||
display: flex;
|
||
flex-direction: column;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-CommandPalette-search {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-content {
|
||
flex: 1 1 auto;
|
||
margin: 0;
|
||
padding: 0;
|
||
min-height: 0;
|
||
overflow: auto;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-CommandPalette-header {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.lm-CommandPalette-item {
|
||
display: flex;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-CommandPalette-itemIcon {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemContent {
|
||
flex: 1 1 auto;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-CommandPalette-itemShortcut {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemLabel {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.lm-close-icon {
|
||
border: 1px solid transparent;
|
||
background-color: transparent;
|
||
position: absolute;
|
||
z-index: 1;
|
||
right: 3%;
|
||
top: 0;
|
||
bottom: 0;
|
||
margin: auto;
|
||
padding: 7px 0;
|
||
display: none;
|
||
vertical-align: middle;
|
||
outline: 0;
|
||
cursor: pointer;
|
||
}
|
||
.lm-close-icon:after {
|
||
content: 'X';
|
||
display: block;
|
||
width: 15px;
|
||
height: 15px;
|
||
text-align: center;
|
||
color: #000;
|
||
font-weight: normal;
|
||
font-size: 12px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-DockPanel {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-DockPanel-widget {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-DockPanel-handle {
|
||
z-index: 2;
|
||
}
|
||
|
||
.lm-DockPanel-handle.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-DockPanel-handle:after {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
content: '';
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='horizontal'] {
|
||
cursor: ew-resize;
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='vertical'] {
|
||
cursor: ns-resize;
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='horizontal']:after {
|
||
left: 50%;
|
||
min-width: 8px;
|
||
transform: translateX(-50%);
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='vertical']:after {
|
||
top: 50%;
|
||
min-height: 8px;
|
||
transform: translateY(-50%);
|
||
}
|
||
|
||
.lm-DockPanel-overlay {
|
||
z-index: 3;
|
||
box-sizing: border-box;
|
||
pointer-events: none;
|
||
}
|
||
|
||
.lm-DockPanel-overlay.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-Menu {
|
||
z-index: 10000;
|
||
position: absolute;
|
||
white-space: nowrap;
|
||
overflow-x: hidden;
|
||
overflow-y: auto;
|
||
outline: none;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-Menu-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: table;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-Menu-item {
|
||
display: table-row;
|
||
}
|
||
|
||
.lm-Menu-item.lm-mod-hidden,
|
||
.lm-Menu-item.lm-mod-collapsed {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-Menu-itemIcon,
|
||
.lm-Menu-itemSubmenuIcon {
|
||
display: table-cell;
|
||
text-align: center;
|
||
}
|
||
|
||
.lm-Menu-itemLabel {
|
||
display: table-cell;
|
||
text-align: left;
|
||
}
|
||
|
||
.lm-Menu-itemShortcut {
|
||
display: table-cell;
|
||
text-align: right;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-MenuBar {
|
||
outline: none;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-MenuBar-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: flex;
|
||
flex-direction: row;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-MenuBar-item {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.lm-MenuBar-itemIcon,
|
||
.lm-MenuBar-itemLabel {
|
||
display: inline-block;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-ScrollBar {
|
||
display: flex;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] {
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] {
|
||
flex-direction: column;
|
||
}
|
||
|
||
.lm-ScrollBar-button {
|
||
box-sizing: border-box;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-ScrollBar-track {
|
||
box-sizing: border-box;
|
||
position: relative;
|
||
overflow: hidden;
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb {
|
||
box-sizing: border-box;
|
||
position: absolute;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-SplitPanel-child {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-SplitPanel-handle {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-SplitPanel-handle.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-SplitPanel-handle:after {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
content: '';
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle {
|
||
cursor: ew-resize;
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle {
|
||
cursor: ns-resize;
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after {
|
||
left: 50%;
|
||
min-width: 8px;
|
||
transform: translateX(-50%);
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after {
|
||
top: 50%;
|
||
min-height: 8px;
|
||
transform: translateY(-50%);
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabBar {
|
||
display: flex;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='horizontal'] {
|
||
flex-direction: row;
|
||
align-items: flex-end;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='vertical'] {
|
||
flex-direction: column;
|
||
align-items: flex-end;
|
||
}
|
||
|
||
.lm-TabBar-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: flex;
|
||
flex: 1 1 auto;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content {
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content {
|
||
flex-direction: column;
|
||
}
|
||
|
||
.lm-TabBar-tab {
|
||
display: flex;
|
||
flex-direction: row;
|
||
box-sizing: border-box;
|
||
overflow: hidden;
|
||
touch-action: none; /* Disable native Drag/Drop */
|
||
}
|
||
|
||
.lm-TabBar-tabIcon,
|
||
.lm-TabBar-tabCloseIcon {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-TabBar-tabLabel {
|
||
flex: 1 1 auto;
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.lm-TabBar-tabInput {
|
||
user-select: all;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.lm-TabBar-tab.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-TabBar-addButton.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab {
|
||
position: relative;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab {
|
||
left: 0;
|
||
transition: left 150ms ease;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab {
|
||
top: 0;
|
||
transition: top 150ms ease;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging {
|
||
transition: none;
|
||
}
|
||
|
||
.lm-TabBar-tabLabel .lm-TabBar-tabInput {
|
||
user-select: all;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
background: inherit;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabPanel-tabBar {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-TabPanel-stackedPanel {
|
||
z-index: 0;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Collapse {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: stretch;
|
||
}
|
||
|
||
.jp-Collapse-header {
|
||
padding: 1px 12px;
|
||
background-color: var(--jp-layout-color1);
|
||
border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
cursor: pointer;
|
||
display: flex;
|
||
align-items: center;
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
text-transform: uppercase;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-Collapser-icon {
|
||
height: 16px;
|
||
}
|
||
|
||
.jp-Collapse-header-collapsed .jp-Collapser-icon {
|
||
transform: rotate(-90deg);
|
||
margin: auto 0;
|
||
}
|
||
|
||
.jp-Collapser-title {
|
||
line-height: 25px;
|
||
}
|
||
|
||
.jp-Collapse-contents {
|
||
padding: 0 12px;
|
||
background-color: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
overflow: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */
|
||
|
||
/**
|
||
* (DEPRECATED) Support for consuming icons as CSS background images
|
||
*/
|
||
|
||
/* Icons urls */
|
||
|
||
:root {
|
||
--jp-icon-add-above: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5MikiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik00Ljc1IDQuOTMwNjZINi42MjVWNi44MDU2NkM2LjYyNSA3LjAxMTkxIDYuNzkzNzUgNy4xODA2NiA3IDcuMTgwNjZDNy4yMDYyNSA3LjE4MDY2IDcuMzc1IDcuMDExOTEgNy4zNzUgNi44MDU2NlY0LjkzMDY2SDkuMjVDOS40NTYyNSA0LjkzMDY2IDkuNjI1IDQuNzYxOTEgOS42MjUgNC41NTU2NkM5LjYyNSA0LjM0OTQxIDkuNDU2MjUgNC4xODA2NiA5LjI1IDQuMTgwNjZINy4zNzVWMi4zMDU2NkM3LjM3NSAyLjA5OTQxIDcuMjA2MjUgMS45MzA2NiA3IDEuOTMwNjZDNi43OTM3NSAxLjkzMDY2IDYuNjI1IDIuMDk5NDEgNi42MjUgMi4zMDU2NlY0LjE4MDY2SDQuNzVDNC41NDM3NSA0LjE4MDY2IDQuMzc1IDQuMzQ5NDEgNC4zNzUgNC41NTU2NkM0LjM3NSA0Ljc2MTkxIDQuNTQzNzUgNC45MzA2NiA0Ljc1IDQuOTMwNjZaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC43Ii8+CjwvZz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgOS41VjExLjVMMi41IDExLjVWOS41TDExLjUgOS41Wk0xMiA4QzEyLjU1MjMgOCAxMyA4LjQ0NzcyIDEzIDlWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzTDIgMTNDMS40NDc3MiAxMyAxIDEyLjU1MjMgMSAxMlY5QzEgOC40NDc3MiAxLjQ0NzcxIDggMiA4TDEyIDhaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5MiI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIDEwIDEuNTU1NjYpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==);
|
||
--jp-icon-add-below: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5OCkiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik05LjI1IDEwLjA2OTNMNy4zNzUgMTAuMDY5M0w3LjM3NSA4LjE5NDM0QzcuMzc1IDcuOTg4MDkgNy4yMDYyNSA3LjgxOTM0IDcgNy44MTkzNEM2Ljc5Mzc1IDcuODE5MzQgNi42MjUgNy45ODgwOSA2LjYyNSA4LjE5NDM0TDYuNjI1IDEwLjA2OTNMNC43NSAxMC4wNjkzQzQuNTQzNzUgMTAuMDY5MyA0LjM3NSAxMC4yMzgxIDQuMzc1IDEwLjQ0NDNDNC4zNzUgMTAuNjUwNiA0LjU0Mzc1IDEwLjgxOTMgNC43NSAxMC44MTkzTDYuNjI1IDEwLjgxOTNMNi42MjUgMTIuNjk0M0M2LjYyNSAxMi45MDA2IDYuNzkzNzUgMTMuMDY5MyA3IDEzLjA2OTNDNy4yMDYyNSAxMy4wNjkzIDcuMzc1IDEyLjkwMDYgNy4zNzUgMTIuNjk0M0w3LjM3NSAxMC44MTkzTDkuMjUgMTAuODE5M0M5LjQ1NjI1IDEwLjgxOTMgOS42MjUgMTAuNjUwNiA5LjYyNSAxMC40NDQzQzkuNjI1IDEwLjIzODEgOS40NTYyNSAxMC4wNjkzIDkuMjUgMTAuMDY5M1oiIGZpbGw9IiM2MTYxNjEiIHN0cm9rZT0iIzYxNjE2MSIgc3Ryb2tlLXdpZHRoPSIwLjciLz4KPC9nPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDUuNUwyLjUgMy41TDExLjUgMy41TDExLjUgNS41TDIuNSA1LjVaTTIgN0MxLjQ0NzcyIDcgMSA2LjU1MjI4IDEgNkwxIDNDMSAyLjQ0NzcyIDEuNDQ3NzIgMiAyIDJMMTIgMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzTDEzIDZDMTMgNi41NTIyOSAxMi41NTIzIDcgMTIgN0wyIDdaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5OCI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMS43NDg0NmUtMDcgMS43NDg0NmUtMDcgLTEgNCAxMy40NDQzKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=);
|
||
--jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-bell: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgogICA8cGF0aCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzMzMzMzIgogICAgICBkPSJtOCAwLjI5Yy0xLjQgMC0yLjcgMC43My0zLjYgMS44LTEuMiAxLjUtMS40IDMuNC0xLjUgNS4yLTAuMTggMi4yLTAuNDQgNC0yLjMgNS4zbDAuMjggMS4zaDVjMC4wMjYgMC42NiAwLjMyIDEuMSAwLjcxIDEuNSAwLjg0IDAuNjEgMiAwLjYxIDIuOCAwIDAuNTItMC40IDAuNi0xIDAuNzEtMS41aDVsMC4yOC0xLjNjLTEuOS0wLjk3LTIuMi0zLjMtMi4zLTUuMy0wLjEzLTEuOC0wLjI2LTMuNy0xLjUtNS4yLTAuODUtMS0yLjItMS44LTMuNi0xLjh6bTAgMS40YzAuODggMCAxLjkgMC41NSAyLjUgMS4zIDAuODggMS4xIDEuMSAyLjcgMS4yIDQuNCAwLjEzIDEuNyAwLjIzIDMuNiAxLjMgNS4yaC0xMGMxLjEtMS42IDEuMi0zLjQgMS4zLTUuMiAwLjEzLTEuNyAwLjMtMy4zIDEuMi00LjQgMC41OS0wLjcyIDEuNi0xLjMgMi41LTEuM3ptLTAuNzQgMTJoMS41Yy0wLjAwMTUgMC4yOCAwLjAxNSAwLjc5LTAuNzQgMC43OS0wLjczIDAuMDAxNi0wLjcyLTAuNTMtMC43NC0wLjc5eiIgLz4KPC9zdmc+Cg==);
|
||
--jp-icon-bug-dot: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMTkgOEgyMFYxMEgxNy45MUMxNy45NiAxMC4zMyAxOCAxMC42NiAxOCAxMVYxMkgyMFYxNEgxOC41SDE4VjE0LjAyNzVDMTUuNzUgMTQuMjc2MiAxNCAxNi4xODM3IDE0IDE4LjVDMTQgMTkuMjA4IDE0LjE2MzUgMTkuODc3OSAxNC40NTQ5IDIwLjQ3MzlDMTMuNzA2MyAyMC44MTE3IDEyLjg3NTcgMjEgMTIgMjFDOS43OCAyMSA3Ljg1IDE5Ljc5IDYuODEgMThINFYxNkg2LjA5QzYuMDQgMTUuNjcgNiAxNS4zNCA2IDE1VjE0SDRWMTJINlYxMUM2IDEwLjY2IDYuMDQgMTAuMzMgNi4wOSAxMEg0VjhINi44MUM3LjI2IDcuMjIgNy44OCA2LjU1IDguNjIgNi4wNEw3IDQuNDFMOC40MSAzTDEwLjU5IDUuMTdDMTEuMDQgNS4wNiAxMS41MSA1IDEyIDVDMTIuNDkgNSAxMi45NiA1LjA2IDEzLjQyIDUuMTdMMTUuNTkgM0wxNyA0LjQxTDE1LjM3IDYuMDRDMTYuMTIgNi41NSAxNi43NCA3LjIyIDE3LjE5IDhaTTEwIDE2SDE0VjE0SDEwVjE2Wk0xMCAxMkgxNFYxMEgxMFYxMloiIGZpbGw9IiM2MTYxNjEiLz4KICAgICAgICA8cGF0aCBkPSJNMjIgMTguNUMyMiAyMC40MzMgMjAuNDMzIDIyIDE4LjUgMjJDMTYuNTY3IDIyIDE1IDIwLjQzMyAxNSAxOC41QzE1IDE2LjU2NyAxNi41NjcgMTUgMTguNSAxNUMyMC40MzMgMTUgMjIgMTYuNTY3IDIyIDE4LjVaIiBmaWxsPSIjNjE2MTYxIi8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yMCA4aC0yLjgxYy0uNDUtLjc4LTEuMDctMS40NS0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-code-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICA8cGF0aCBkPSJNNi41OSwzLjQxTDIsOEw2LjU5LDEyLjZMOCwxMS4xOEw0LjgyLDhMOCw0LjgyTDYuNTksMy40MU0xMi40MSwzLjQxTDExLDQuODJMMTQuMTgsOEwxMSwxMS4xOEwxMi40MSwxMi42TDE3LDhMMTIuNDEsMy40MU0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNMMjEuNTksMTEuNTlaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-collapse-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNNiAxM3YyaDh2LTJ6IiAvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1jb25zb2xlLWljb24tYmFja2dyb3VuZC1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtY29uc29sZS1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIj4KICAgIDxwYXRoIGQ9Ik0xMDUgMTI3LjNoNDB2MTIuOGgtNDB6TTUxLjEgNzdMNzQgOTkuOWwtMjMuMyAyMy4zIDEwLjUgMTAuNSAyMy4zLTIzLjNMOTUgOTkuOSA4NC41IDg5LjQgNjEuNiA2Ni41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-copyright: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+CiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0xMS44OCw5LjE0YzEuMjgsMC4wNiwxLjYxLDEuMTUsMS42MywxLjY2aDEuNzljLTAuMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQsNy42MSw4LDksOCwxMi4xNCBjMCwxLjk0LDAuOTMsNC4yNCwzLjg0LDQuMjRjMi4yMiwwLDMuNDEtMS42NSwzLjQ0LTIuOTVoLTEuNzljLTAuMDMsMC41OS0wLjQ1LDEuMzgtMS42MywxLjQ0QzEwLjU1LDE0LjgzLDEwLDEzLjgxLDEwLDEyLjE0IEMxMCw5LjI1LDExLjI4LDkuMTYsMTEuODgsOS4xNHogTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMiwyMGMtNC40MSwwLTgtMy41OS04LTggczMuNTktOCw4LThzOCwzLjU5LDgsOFMxNi40MSwyMCwxMiwyMHoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-delete: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIiAvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjI2MjYyIiBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIgLz4KPC9zdmc+Cg==);
|
||
--jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-duplicate: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIuNzk5OTggMC44NzVIOC44OTU4MkM5LjIwMDYxIDAuODc1IDkuNDQ5OTggMS4xMzkxNCA5LjQ0OTk4IDEuNDYxOThDOS40NDk5OCAxLjc4NDgyIDkuMjAwNjEgMi4wNDg5NiA4Ljg5NTgyIDIuMDQ4OTZIMy4zNTQxNUMzLjA0OTM2IDIuMDQ4OTYgMi43OTk5OCAyLjMxMzEgMi43OTk5OCAyLjYzNTk0VjkuNjc5NjlDMi43OTk5OCAxMC4wMDI1IDIuNTUwNjEgMTAuMjY2NyAyLjI0NTgyIDEwLjI2NjdDMS45NDEwMyAxMC4yNjY3IDEuNjkxNjUgMTAuMDAyNSAxLjY5MTY1IDkuNjc5NjlWMi4wNDg5NkMxLjY5MTY1IDEuNDAzMjggMi4xOTA0IDAuODc1IDIuNzk5OTggMC44NzVaTTUuMzY2NjUgMTEuOVY0LjU1SDExLjA4MzNWMTEuOUg1LjM2NjY1Wk00LjE0MTY1IDQuMTQxNjdDNC4xNDE2NSAzLjY5MDYzIDQuNTA3MjggMy4zMjUgNC45NTgzMiAzLjMyNUgxMS40OTE3QzExLjk0MjcgMy4zMjUgMTIuMzA4MyAzLjY5MDYzIDEyLjMwODMgNC4xNDE2N1YxMi4zMDgzQzEyLjMwODMgMTIuNzU5NCAxMS45NDI3IDEzLjEyNSAxMS40OTE3IDEzLjEyNUg0Ljk1ODMyQzQuNTA3MjggMTMuMTI1IDQuMTQxNjUgMTIuNzU5NCA0LjE0MTY1IDEyLjMwODNWNC4xNDE2N1oiIGZpbGw9IiM2MTYxNjEiLz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNOS40MzU3NCA4LjI2NTA3SDguMzY0MzFWOS4zMzY1QzguMzY0MzEgOS40NTQzNSA4LjI2Nzg4IDkuNTUwNzggOC4xNTAwMiA5LjU1MDc4QzguMDMyMTcgOS41NTA3OCA3LjkzNTc0IDkuNDU0MzUgNy45MzU3NCA5LjMzNjVWOC4yNjUwN0g2Ljg2NDMxQzYuNzQ2NDUgOC4yNjUwNyA2LjY1MDAyIDguMTY4NjQgNi42NTAwMiA4LjA1MDc4QzYuNjUwMDIgNy45MzI5MiA2Ljc0NjQ1IDcuODM2NSA2Ljg2NDMxIDcuODM2NUg3LjkzNTc0VjYuNzY1MDdDNy45MzU3NCA2LjY0NzIxIDguMDMyMTcgNi41NTA3OCA4LjE1MDAyIDYuNTUwNzhDOC4yNjc4OCA2LjU1MDc4IDguMzY0MzEgNi42NDcyMSA4LjM2NDMxIDYuNzY1MDdWNy44MzY1SDkuNDM1NzRDOS41NTM2IDcuODM2NSA5LjY1MDAyIDcuOTMyOTIgOS42NTAwMiA4LjA1MDc4QzkuNjUwMDIgOC4xNjg2NCA5LjU1MzYgOC4yNjUwNyA5LjQzNTc0IDguMjY1MDdaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC41Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-error: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIyIi8+PHBhdGggZD0iTTEwIDNoNHYxMmgtNHoiLz48L2c+CjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-expand-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNMTEgMTBIOXYzSDZ2MmgzdjNoMnYtM2gzdi0yaC0zeiIgLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-filter-dot: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWRvdCIgZmlsbD0iI0ZGRiI+CiAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3IiByPSIzIj48L2NpcmNsZT4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-filter: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-folder-favorite: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggY2xhc3M9ImpwLWljb24zIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxNjE2MSIgZD0iTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yLjA2IDExTDE1IDE1LjI4IDEyLjA2IDE3bC43OC0zLjMzLTIuNTktMi4yNCAzLjQxLS4yOUwxNSA4bDEuMzQgMy4xNCAzLjQxLjI5LTIuNTkgMi4yNC43OCAzLjMzeiIvPgo8L3N2Zz4K);
|
||
--jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-home: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-info: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUwLjk3OCA1MC45NzgiPgoJPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KCQk8cGF0aCBkPSJNNDMuNTIsNy40NThDMzguNzExLDIuNjQ4LDMyLjMwNywwLDI1LjQ4OSwwQzE4LjY3LDAsMTIuMjY2LDIuNjQ4LDcuNDU4LDcuNDU4CgkJCWMtOS45NDMsOS45NDEtOS45NDMsMjYuMTE5LDAsMzYuMDYyYzQuODA5LDQuODA5LDExLjIxMiw3LjQ1NiwxOC4wMzEsNy40NThjMCwwLDAuMDAxLDAsMC4wMDIsMAoJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoKCQkJIE00Mi4xMDYsNDIuMTA1Yy00LjQzMiw0LjQzMS0xMC4zMzIsNi44NzItMTYuNjE1LDYuODcyaC0wLjAwMmMtNi4yODUtMC4wMDEtMTIuMTg3LTIuNDQxLTE2LjYxNy02Ljg3MgoJCQljLTkuMTYyLTkuMTYzLTkuMTYyLTI0LjA3MSwwLTMzLjIzM0MxMy4zMDMsNC40NCwxOS4yMDQsMiwyNS40ODksMmM2LjI4NCwwLDEyLjE4NiwyLjQ0LDE2LjYxNyw2Ljg3MgoJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4KCQk8cGF0aCBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1MwoJCQljMC40NjgtMC41MzYsMC45MjMtMS4wNjIsMS4zNjctMS41NzVjMC42MjYtMC43NTMsMS4xMDQtMS40NzgsMS40MzYtMi4xNzVjMC4zMzEtMC43MDcsMC40OTUtMS41NDEsMC40OTUtMi41CgkJCWMwLTEuMDk2LTAuMjYtMi4wODgtMC43NzktMi45NzljLTAuNTY1LTAuODc5LTEuNTAxLTEuMzM2LTIuODA2LTEuMzY5Yy0xLjgwMiwwLjA1Ny0yLjk4NSwwLjY2Ny0zLjU1LDEuODMyCgkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkKCQkJYzEuMDYyLTEuNjQsMi44NTUtMi40ODEsNS4zNzgtMi41MjdjMi4xNiwwLjAyMywzLjg3NCwwLjYwOCw1LjE0MSwxLjc1OGMxLjI3OCwxLjE2LDEuOTI5LDIuNzY0LDEuOTUsNC44MTEKCQkJYzAsMS4xNDItMC4xMzcsMi4xMTEtMC40MSwyLjkxMWMtMC4zMDksMC44NDUtMC43MzEsMS41OTMtMS4yNjgsMi4yNDNjLTAuNDkyLDAuNjUtMS4wNjgsMS4zMTgtMS43MywyLjAwMgoJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5CgkJCUMyNi41ODksMzIuMjE4LDIzLjU3OCwzMi4yMTgsMjMuNTc4LDMyLjIxOHogTTIzLjU3OCwzOC4yMnYtMy40ODRoMy4wNzZ2My40ODRIMjMuNTc4eiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaW5zcGVjdG9yLWljb24tY29sb3IganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K);
|
||
--jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtanNvbi1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0Y5QTgyNSI+CiAgICA8cGF0aCBkPSJNMjAuMiAxMS44Yy0xLjYgMC0xLjcuNS0xLjcgMSAwIC40LjEuOS4xIDEuMy4xLjUuMS45LjEgMS4zIDAgMS43LTEuNCAyLjMtMy41IDIuM2gtLjl2LTEuOWguNWMxLjEgMCAxLjQgMCAxLjQtLjggMC0uMyAwLS42LS4xLTEgMC0uNC0uMS0uOC0uMS0xLjIgMC0xLjMgMC0xLjggMS4zLTItMS4zLS4yLTEuMy0uNy0xLjMtMiAwLS40LjEtLjguMS0xLjIuMS0uNC4xLS43LjEtMSAwLS44LS40LS43LTEuNC0uOGgtLjVWNC4xaC45YzIuMiAwIDMuNS43IDMuNSAyLjMgMCAuNC0uMS45LS4xIDEuMy0uMS41LS4xLjktLjEgMS4zIDAgLjUuMiAxIDEuNyAxdjEuOHpNMS44IDEwLjFjMS42IDAgMS43LS41IDEuNy0xIDAtLjQtLjEtLjktLjEtMS4zLS4xLS41LS4xLS45LS4xLTEuMyAwLTEuNiAxLjQtMi4zIDMuNS0yLjNoLjl2MS45aC0uNWMtMSAwLTEuNCAwLTEuNC44IDAgLjMgMCAuNi4xIDEgMCAuMi4xLjYuMSAxIDAgMS4zIDAgMS44LTEuMyAyQzYgMTEuMiA2IDExLjcgNiAxM2MwIC40LS4xLjgtLjEgMS4yLS4xLjMtLjEuNy0uMSAxIDAgLjguMy44IDEuNC44aC41djEuOWgtLjljLTIuMSAwLTMuNS0uNi0zLjUtMi4zIDAtLjQuMS0uOS4xLTEuMy4xLS41LjEtLjkuMS0xLjMgMC0uNS0uMi0xLTEuNy0xdi0xLjl6Ii8+CiAgICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjEzLjgiIHI9IjIuMSIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSI4LjIiIHI9IjIuMSIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-julia: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDMyNSAzMDAiPgogIDxnIGNsYXNzPSJqcC1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjY2IzYzMzIj4KICAgIDxwYXRoIGQ9Ik0gMTUwLjg5ODQzOCAyMjUgQyAxNTAuODk4NDM4IDI2Ni40MjE4NzUgMTE3LjMyMDMxMiAzMDAgNzUuODk4NDM4IDMwMCBDIDM0LjQ3NjU2MiAzMDAgMC44OTg0MzggMjY2LjQyMTg3NSAwLjg5ODQzOCAyMjUgQyAwLjg5ODQzOCAxODMuNTc4MTI1IDM0LjQ3NjU2MiAxNTAgNzUuODk4NDM4IDE1MCBDIDExNy4zMjAzMTIgMTUwIDE1MC44OTg0MzggMTgzLjU3ODEyNSAxNTAuODk4NDM4IDIyNSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzM4OTgyNiI+CiAgICA8cGF0aCBkPSJNIDIzNy41IDc1IEMgMjM3LjUgMTE2LjQyMTg3NSAyMDMuOTIxODc1IDE1MCAxNjIuNSAxNTAgQyAxMjEuMDc4MTI1IDE1MCA4Ny41IDExNi40MjE4NzUgODcuNSA3NSBDIDg3LjUgMzMuNTc4MTI1IDEyMS4wNzgxMjUgMCAxNjIuNSAwIEMgMjAzLjkyMTg3NSAwIDIzNy41IDMzLjU3ODEyNSAyMzcuNSA3NSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzk1NThiMiI+CiAgICA8cGF0aCBkPSJNIDMyNC4xMDE1NjIgMjI1IEMgMzI0LjEwMTU2MiAyNjYuNDIxODc1IDI5MC41MjM0MzggMzAwIDI0OS4xMDE1NjIgMzAwIEMgMjA3LjY3OTY4OCAzMDAgMTc0LjEwMTU2MiAyNjYuNDIxODc1IDE3NC4xMDE1NjIgMjI1IEMgMTc0LjEwMTU2MiAxODMuNTc4MTI1IDIwNy42Nzk2ODggMTUwIDI0OS4xMDE1NjIgMTUwIEMgMjkwLjUyMzQzOCAxNTAgMzI0LjEwMTU2MiAxODMuNTc4MTI1IDMyNC4xMDE1NjIgMjI1Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgPGcgY2xhc3M9ImpwLWp1cHl0ZXItaWNvbi1jb2xvciIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgIDxnIGNsYXNzPSJqcC1qdXB5dGVyLWljb24tY29sb3IiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=);
|
||
--jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K);
|
||
--jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-launch: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHdpZHRoPSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yNiwyOEg2YTIuMDAyNywyLjAwMjcsMCwwLDEtMi0yVjZBMi4wMDI3LDIuMDAyNywwLDAsMSw2LDRIMTZWNkg2VjI2SDI2VjE2aDJWMjZBMi4wMDI3LDIuMDAyNywwLDAsMSwyNiwyOFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMjAgMiAyMCA0IDI2LjU4NiA0IDE4IDEyLjU4NiAxOS40MTQgMTQgMjggNS40MTQgMjggMTIgMzAgMTIgMzAgMiAyMCAyIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4K);
|
||
--jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-move-down: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMTIuNDcxIDcuNTI4OTlDMTIuNzYzMiA3LjIzNjg0IDEyLjc2MzIgNi43NjMxNiAxMi40NzEgNi40NzEwMVY2LjQ3MTAxQzEyLjE3OSA2LjE3OTA1IDExLjcwNTcgNi4xNzg4NCAxMS40MTM1IDYuNDcwNTRMNy43NSAxMC4xMjc1VjEuNzVDNy43NSAxLjMzNTc5IDcuNDE0MjEgMSA3IDFWMUM2LjU4NTc5IDEgNi4yNSAxLjMzNTc5IDYuMjUgMS43NVYxMC4xMjc1TDIuNTk3MjYgNi40NjgyMkMyLjMwMzM4IDYuMTczODEgMS44MjY0MSA2LjE3MzU5IDEuNTMyMjYgNi40Njc3NFY2LjQ2Nzc0QzEuMjM4MyA2Ljc2MTcgMS4yMzgzIDcuMjM4MyAxLjUzMjI2IDcuNTMyMjZMNi4yOTI4OSAxMi4yOTI5QzYuNjgzNDIgMTIuNjgzNCA3LjMxNjU4IDEyLjY4MzQgNy43MDcxMSAxMi4yOTI5TDEyLjQ3MSA3LjUyODk5WiIgZmlsbD0iIzYxNjE2MSIvPgo8L3N2Zz4K);
|
||
--jp-icon-move-up: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMS41Mjg5OSA2LjQ3MTAxQzEuMjM2ODQgNi43NjMxNiAxLjIzNjg0IDcuMjM2ODQgMS41Mjg5OSA3LjUyODk5VjcuNTI4OTlDMS44MjA5NSA3LjgyMDk1IDIuMjk0MjYgNy44MjExNiAyLjU4NjQ5IDcuNTI5NDZMNi4yNSAzLjg3MjVWMTIuMjVDNi4yNSAxMi42NjQyIDYuNTg1NzkgMTMgNyAxM1YxM0M3LjQxNDIxIDEzIDcuNzUgMTIuNjY0MiA3Ljc1IDEyLjI1VjMuODcyNUwxMS40MDI3IDcuNTMxNzhDMTEuNjk2NiA3LjgyNjE5IDEyLjE3MzYgNy44MjY0MSAxMi40Njc3IDcuNTMyMjZWNy41MzIyNkMxMi43NjE3IDcuMjM4MyAxMi43NjE3IDYuNzYxNyAxMi40Njc3IDYuNDY3NzRMNy43MDcxMSAxLjcwNzExQzcuMzE2NTggMS4zMTY1OCA2LjY4MzQyIDEuMzE2NTggNi4yOTI4OSAxLjcwNzExTDEuNTI4OTkgNi40NzEwMVoiIGZpbGw9IiM2MTYxNjEiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtbm90ZWJvb2staWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K);
|
||
--jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iLTEwIC0xMCAxMzEuMTYxMzYxNjk0MzM1OTQgMTMyLjM4ODk5OTkzODk2NDg0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzA2OTk4IiBkPSJNIDU0LjkxODc4NSw5LjE5Mjc0MjFlLTQgQyA1MC4zMzUxMzIsMC4wMjIyMTcyNyA0NS45NTc4NDYsMC40MTMxMzY5NyA0Mi4xMDYyODUsMS4wOTQ2NjkzIDMwLjc2MDA2OSwzLjA5OTE3MzEgMjguNzAwMDM2LDcuMjk0NzcxNCAyOC43MDAwMzUsMTUuMDMyMTY5IHYgMTAuMjE4NzUgaCAyNi44MTI1IHYgMy40MDYyNSBoIC0yNi44MTI1IC0xMC4wNjI1IGMgLTcuNzkyNDU5LDAgLTE0LjYxNTc1ODgsNC42ODM3MTcgLTE2Ljc0OTk5OTgsMTMuNTkzNzUgLTIuNDYxODE5OTgsMTAuMjEyOTY2IC0yLjU3MTAxNTA4LDE2LjU4NjAyMyAwLDI3LjI1IDEuOTA1OTI4Myw3LjkzNzg1MiA2LjQ1NzU0MzIsMTMuNTkzNzQ4IDE0LjI0OTk5OTgsMTMuNTkzNzUgaCA5LjIxODc1IHYgLTEyLjI1IGMgMCwtOC44NDk5MDIgNy42NTcxNDQsLTE2LjY1NjI0OCAxNi43NSwtMTYuNjU2MjUgaCAyNi43ODEyNSBjIDcuNDU0OTUxLDAgMTMuNDA2MjUzLC02LjEzODE2NCAxMy40MDYyNSwtMTMuNjI1IHYgLTI1LjUzMTI1IGMgMCwtNy4yNjYzMzg2IC02LjEyOTk4LC0xMi43MjQ3NzcxIC0xMy40MDYyNSwtMTMuOTM3NDk5NyBDIDY0LjI4MTU0OCwwLjMyNzk0Mzk3IDU5LjUwMjQzOCwtMC4wMjAzNzkwMyA1NC45MTg3ODUsOS4xOTI3NDIxZS00IFogbSAtMTQuNSw4LjIxODc1MDEyNTc5IGMgMi43Njk1NDcsMCA1LjAzMTI1LDIuMjk4NjQ1NiA1LjAzMTI1LDUuMTI0OTk5NiAtMmUtNiwyLjgxNjMzNiAtMi4yNjE3MDMsNS4wOTM3NSAtNS4wMzEyNSw1LjA5Mzc1IC0yLjc3OTQ3NiwtMWUtNiAtNS4wMzEyNSwtMi4yNzc0MTUgLTUuMDMxMjUsLTUuMDkzNzUgLTEwZS03LC0yLjgyNjM1MyAyLjI1MTc3NCwtNS4xMjQ5OTk2IDUuMDMxMjUsLTUuMTI0OTk5NiB6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2ZmZDQzYiIgZD0ibSA4NS42Mzc1MzUsMjguNjU3MTY5IHYgMTEuOTA2MjUgYyAwLDkuMjMwNzU1IC03LjgyNTg5NSwxNi45OTk5OTkgLTE2Ljc1LDE3IGggLTI2Ljc4MTI1IGMgLTcuMzM1ODMzLDAgLTEzLjQwNjI0OSw2LjI3ODQ4MyAtMTMuNDA2MjUsMTMuNjI1IHYgMjUuNTMxMjQ3IGMgMCw3LjI2NjM0NCA2LjMxODU4OCwxMS41NDAzMjQgMTMuNDA2MjUsMTMuNjI1MDA0IDguNDg3MzMxLDIuNDk1NjEgMTYuNjI2MjM3LDIuOTQ2NjMgMjYuNzgxMjUsMCA2Ljc1MDE1NSwtMS45NTQzOSAxMy40MDYyNTMsLTUuODg3NjEgMTMuNDA2MjUsLTEzLjYyNTAwNCBWIDg2LjUwMDkxOSBoIC0yNi43ODEyNSB2IC0zLjQwNjI1IGggMjYuNzgxMjUgMTMuNDA2MjU0IGMgNy43OTI0NjEsMCAxMC42OTYyNTEsLTUuNDM1NDA4IDEzLjQwNjI0MSwtMTMuNTkzNzUgMi43OTkzMywtOC4zOTg4ODYgMi42ODAyMiwtMTYuNDc1Nzc2IDAsLTI3LjI1IC0xLjkyNTc4LC03Ljc1NzQ0MSAtNS42MDM4NywtMTMuNTkzNzUgLTEzLjQwNjI0MSwtMTMuNTkzNzUgeiBtIC0xNS4wNjI1LDY0LjY1NjI1IGMgMi43Nzk0NzgsM2UtNiA1LjAzMTI1LDIuMjc3NDE3IDUuMDMxMjUsNS4wOTM3NDcgLTJlLTYsMi44MjYzNTQgLTIuMjUxNzc1LDUuMTI1MDA0IC01LjAzMTI1LDUuMTI1MDA0IC0yLjc2OTU1LDAgLTUuMDMxMjUsLTIuMjk4NjUgLTUuMDMxMjUsLTUuMTI1MDA0IDJlLTYsLTIuODE2MzMgMi4yNjE2OTcsLTUuMDkzNzQ3IDUuMDMxMjUsLTUuMDkzNzQ3IHoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-share: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTSAxOCAyIEMgMTYuMzU0OTkgMiAxNSAzLjM1NDk5MDQgMTUgNSBDIDE1IDUuMTkwOTUyOSAxNS4wMjE3OTEgNS4zNzcxMjI0IDE1LjA1NjY0MSA1LjU1ODU5MzggTCA3LjkyMTg3NSA5LjcyMDcwMzEgQyA3LjM5ODUzOTkgOS4yNzc4NTM5IDYuNzMyMDc3MSA5IDYgOSBDIDQuMzU0OTkwNCA5IDMgMTAuMzU0OTkgMyAxMiBDIDMgMTMuNjQ1MDEgNC4zNTQ5OTA0IDE1IDYgMTUgQyA2LjczMjA3NzEgMTUgNy4zOTg1Mzk5IDE0LjcyMjE0NiA3LjkyMTg3NSAxNC4yNzkyOTcgTCAxNS4wNTY2NDEgMTguNDM5NDUzIEMgMTUuMDIxNTU1IDE4LjYyMTUxNCAxNSAxOC44MDgzODYgMTUgMTkgQyAxNSAyMC42NDUwMSAxNi4zNTQ5OSAyMiAxOCAyMiBDIDE5LjY0NTAxIDIyIDIxIDIwLjY0NTAxIDIxIDE5IEMgMjEgMTcuMzU0OTkgMTkuNjQ1MDEgMTYgMTggMTYgQyAxNy4yNjc0OCAxNiAxNi42MDE1OTMgMTYuMjc5MzI4IDE2LjA3ODEyNSAxNi43MjI2NTYgTCA4Ljk0MzM1OTQgMTIuNTU4NTk0IEMgOC45NzgyMDk1IDEyLjM3NzEyMiA5IDEyLjE5MDk1MyA5IDEyIEMgOSAxMS44MDkwNDcgOC45NzgyMDk1IDExLjYyMjg3OCA4Ljk0MzM1OTQgMTEuNDQxNDA2IEwgMTYuMDc4MTI1IDcuMjc5Mjk2OSBDIDE2LjYwMTQ2IDcuNzIyMTQ2MSAxNy4yNjc5MjMgOCAxOCA4IEMgMTkuNjQ1MDEgOCAyMSA2LjY0NTAwOTYgMjEgNSBDIDIxIDMuMzU0OTkwNCAxOS42NDUwMSAyIDE4IDIgeiBNIDE4IDQgQyAxOC41NjQxMjkgNCAxOSA0LjQzNTg3MDYgMTkgNSBDIDE5IDUuNTY0MTI5NCAxOC41NjQxMjkgNiAxOCA2IEMgMTcuNDM1ODcxIDYgMTcgNS41NjQxMjk0IDE3IDUgQyAxNyA0LjQzNTg3MDYgMTcuNDM1ODcxIDQgMTggNCB6IE0gNiAxMSBDIDYuNTY0MTI5NCAxMSA3IDExLjQzNTg3MSA3IDEyIEMgNyAxMi41NjQxMjkgNi41NjQxMjk0IDEzIDYgMTMgQyA1LjQzNTg3MDYgMTMgNSAxMi41NjQxMjkgNSAxMiBDIDUgMTEuNDM1ODcxIDUuNDM1ODcwNiAxMSA2IDExIHogTSAxOCAxOCBDIDE4LjU2NDEyOSAxOCAxOSAxOC40MzU4NzEgMTkgMTkgQyAxOSAxOS41NjQxMjkgMTguNTY0MTI5IDIwIDE4IDIwIEMgMTcuNDM1ODcxIDIwIDE3IDE5LjU2NDEyOSAxNyAxOSBDIDE3IDE4LjQzNTg3MSAxNy40MzU4NzEgMTggMTggMTggeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1iYWNrZ3JvdW5kLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDIpIiBmaWxsPSIjMzMzMzMzIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUtaW52ZXJzZSIgZD0iTTUuMDU2NjQgOC43NjE3MkM1LjA1NjY0IDguNTk3NjYgNS4wMzEyNSA4LjQ1MzEyIDQuOTgwNDcgOC4zMjgxMkM0LjkzMzU5IDguMTk5MjIgNC44NTU0NyA4LjA4MjAzIDQuNzQ2MDkgNy45NzY1NkM0LjY0MDYyIDcuODcxMDkgNC41IDcuNzc1MzkgNC4zMjQyMiA3LjY4OTQ1QzQuMTUyMzQgNy41OTk2MSAzLjk0MzM2IDcuNTExNzIgMy42OTcyNyA3LjQyNTc4QzMuMzAyNzMgNy4yODUxNiAyLjk0MzM2IDcuMTM2NzIgMi42MTkxNCA2Ljk4MDQ3QzIuMjk0OTIgNi44MjQyMiAyLjAxNzU4IDYuNjQyNTggMS43ODcxMSA2LjQzNTU1QzEuNTYwNTUgNi4yMjg1MiAxLjM4NDc3IDUuOTg4MjggMS4yNTk3NyA1LjcxNDg0QzEuMTM0NzcgNS40Mzc1IDEuMDcyMjcgNS4xMDkzOCAxLjA3MjI3IDQuNzMwNDdDMS4wNzIyNyA0LjM5ODQ0IDEuMTI4OTEgNC4wOTU3IDEuMjQyMTkgMy44MjIyN0MxLjM1NTQ3IDMuNTQ0OTIgMS41MTU2MiAzLjMwNDY5IDEuNzIyNjYgMy4xMDE1NkMxLjkyOTY5IDIuODk4NDQgMi4xNzk2OSAyLjczNDM3IDIuNDcyNjYgMi42MDkzOEMyLjc2NTYyIDIuNDg0MzggMy4wOTE4IDIuNDA0MyAzLjQ1MTE3IDIuMzY5MTRWMS4xMDkzOEg0LjM4ODY3VjIuMzgwODZDNC43NDAyMyAyLjQyNzczIDUuMDU2NjQgMi41MjM0NCA1LjMzNzg5IDIuNjY3OTdDNS42MTkxNCAyLjgxMjUgNS44NTc0MiAzLjAwMTk1IDYuMDUyNzMgMy4yMzYzM0M2LjI1MTk1IDMuNDY2OCA2LjQwNDMgMy43NDAyMyA2LjUwOTc3IDQuMDU2NjRDNi42MTkxNCA0LjM2OTE0IDYuNjczODMgNC43MjA3IDYuNjczODMgNS4xMTEzM0g1LjA0NDkyQzUuMDQ0OTIgNC42Mzg2NyA0LjkzNzUgNC4yODEyNSA0LjcyMjY2IDQuMDM5MDZDNC41MDc4MSAzLjc5Mjk3IDQuMjE2OCAzLjY2OTkyIDMuODQ5NjEgMy42Njk5MkMzLjY1MDM5IDMuNjY5OTIgMy40NzY1NiAzLjY5NzI3IDMuMzI4MTIgMy43NTE5NUMzLjE4MzU5IDMuODAyNzMgMy4wNjQ0NSAzLjg3Njk1IDIuOTcwNyAzLjk3NDYxQzIuODc2OTUgNC4wNjgzNiAyLjgwNjY0IDQuMTc5NjkgMi43NTk3NyA0LjMwODU5QzIuNzE2OCA0LjQzNzUgMi42OTUzMSA0LjU3ODEyIDIuNjk1MzEgNC43MzA0N0MyLjY5NTMxIDQuODgyODEgMi43MTY4IDUuMDE5NTMgMi43NTk3NyA1LjE0MDYyQzIuODA2NjQgNS4yNTc4MSAyLjg4MjgxIDUuMzY3MTkgMi45ODgyOCA1LjQ2ODc1QzMuMDk3NjYgNS41NzAzMSAzLjI0MDIzIDUuNjY3OTcgMy40MTYwMiA1Ljc2MTcyQzMuNTkxOCA1Ljg1MTU2IDMuODEwNTUgNS45NDMzNiA0LjA3MjI3IDYuMDM3MTFDNC40NjY4IDYuMTg1NTUgNC44MjQyMiA2LjMzOTg0IDUuMTQ0NTMgNi41QzUuNDY0ODQgNi42NTYyNSA1LjczODI4IDYuODM5ODQgNS45NjQ4NCA3LjA1MDc4QzYuMTk1MzEgNy4yNTc4MSA2LjM3MTA5IDcuNSA2LjQ5MjE5IDcuNzc3MzRDNi42MTcxOSA4LjA1MDc4IDYuNjc5NjkgOC4zNzUgNi42Nzk2OSA4Ljc1QzYuNjc5NjkgOS4wOTM3NSA2LjYyMzA1IDkuNDA0MyA2LjUwOTc3IDkuNjgxNjRDNi4zOTY0OCA5Ljk1NTA4IDYuMjM0MzggMTAuMTkxNCA2LjAyMzQ0IDEwLjM5MDZDNS44MTI1IDEwLjU4OTggNS41NTg1OSAxMC43NSA1LjI2MTcyIDEwLjg3MTFDNC45NjQ4NCAxMC45ODgzIDQuNjMyODEgMTEuMDY0NSA0LjI2NTYyIDExLjA5OTZWMTIuMjQ4SDMuMzMzOThWMTEuMDk5NkMzLjAwMTk1IDExLjA2ODQgMi42Nzk2OSAxMC45OTYxIDIuMzY3MTkgMTAuODgyOEMyLjA1NDY5IDEwLjc2NTYgMS43NzczNCAxMC41OTc3IDEuNTM1MTYgMTAuMzc4OUMxLjI5Njg4IDEwLjE2MDIgMS4xMDU0NyA5Ljg4NDc3IDAuOTYwOTM4IDkuNTUyNzNDMC44MTY0MDYgOS4yMTY4IDAuNzQ0MTQxIDguODE0NDUgMC43NDQxNDEgOC4zNDU3SDIuMzc4OTFDMi4zNzg5MSA4LjYyNjk1IDIuNDE5OTIgOC44NjMyOCAyLjUwMTk1IDkuMDU0NjlDMi41ODM5OCA5LjI0MjE5IDIuNjg5NDUgOS4zOTI1OCAyLjgxODM2IDkuNTA1ODZDMi45NTExNyA5LjYxNTIzIDMuMTAxNTYgOS42OTMzNiAzLjI2OTUzIDkuNzQwMjNDMy40Mzc1IDkuNzg3MTEgMy42MDkzOCA5LjgxMDU1IDMuNzg1MTYgOS44MTA1NUM0LjIwMzEyIDkuODEwNTUgNC41MTk1MyA5LjcxMjg5IDQuNzM0MzggOS41MTc1OEM0Ljk0OTIyIDkuMzIyMjcgNS4wNTY2NCA5LjA3MDMxIDUuMDU2NjQgOC43NjE3MlpNMTMuNDE4IDEyLjI3MTVIOC4wNzQyMlYxMUgxMy40MThWMTIuMjcxNVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuOTUyNjQgNikiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);
|
||
--jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtdGV4dC1lZGl0b3ItaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3oiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik03LDVIMjFWN0g3VjVNNywxM1YxMUgyMVYxM0g3TTQsNC41QTEuNSwxLjUgMCAwLDEgNS41LDZBMS41LDEuNSAwIDAsMSA0LDcuNUExLjUsMS41IDAgMCwxIDIuNSw2QTEuNSwxLjUgMCAwLDEgNCw0LjVNNCwxMC41QTEuNSwxLjUgMCAwLDEgNS41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMy41QTEuNSwxLjUgMCAwLDEgMi41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMC41TTcsMTlWMTdIMjFWMTlIN000LDE2LjVBMS41LDEuNSAwIDAsMSA1LjUsMThBMS41LDEuNSAwIDAsMSA0LDE5LjVBMS41LDEuNSAwIDAsMSAyLjUsMThBMS41LDEuNSAwIDAsMSA0LDE2LjVaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K);
|
||
--jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-user: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-users: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPGcgY2xhc3M9ImpwLWljb24zIiB0cmFuc2Zvcm09Im1hdHJpeCgxLjczMjcgMCAwIDEuNzMyNyAtMy42MjgyIC4wOTk1NzcpIiBmaWxsPSIjNjE2MTYxIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgxLjUsMCwwLDEuNSwwLC02KSIgZD0ibTEyLjE4NiA3LjUwOThjLTEuMDUzNSAwLTEuOTc1NyAwLjU2NjUtMi40Nzg1IDEuNDEwMiAwLjc1MDYxIDAuMzEyNzcgMS4zOTc0IDAuODI2NDggMS44NzMgMS40NzI3aDMuNDg2M2MwLTEuNTkyLTEuMjg4OS0yLjg4MjgtMi44ODA5LTIuODgyOHoiLz4KICA8cGF0aCBkPSJtMjAuNDY1IDIuMzg5NWEyLjE4ODUgMi4xODg1IDAgMCAxLTIuMTg4NCAyLjE4ODUgMi4xODg1IDIuMTg4NSAwIDAgMS0yLjE4ODUtMi4xODg1IDIuMTg4NSAyLjE4ODUgMCAwIDEgMi4xODg1LTIuMTg4NSAyLjE4ODUgMi4xODg1IDAgMCAxIDIuMTg4NCAyLjE4ODV6Ii8+CiAgPHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMS41LDAsMCwxLjUsMCwtNikiIGQ9Im0zLjU4OTggOC40MjE5Yy0xLjExMjYgMC0yLjAxMzcgMC45MDExMS0yLjAxMzcgMi4wMTM3aDIuODE0NWMwLjI2Nzk3LTAuMzczMDkgMC41OTA3LTAuNzA0MzUgMC45NTg5OC0wLjk3ODUyLTAuMzQ0MzMtMC42MTY4OC0xLjAwMzEtMS4wMzUyLTEuNzU5OC0xLjAzNTJ6Ii8+CiAgPHBhdGggZD0ibTYuOTE1NCA0LjYyM2ExLjUyOTQgMS41Mjk0IDAgMCAxLTEuNTI5NCAxLjUyOTQgMS41Mjk0IDEuNTI5NCAwIDAgMS0xLjUyOTQtMS41Mjk0IDEuNTI5NCAxLjUyOTQgMCAwIDEgMS41Mjk0LTEuNTI5NCAxLjUyOTQgMS41Mjk0IDAgMCAxIDEuNTI5NCAxLjUyOTR6Ii8+CiAgPHBhdGggZD0ibTYuMTM1IDEzLjUzNWMwLTMuMjM5MiAyLjYyNTktNS44NjUgNS44NjUtNS44NjUgMy4yMzkyIDAgNS44NjUgMi42MjU5IDUuODY1IDUuODY1eiIvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMy43Njg1IiByPSIyLjk2ODUiLz4KIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-word: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KIDxnIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzQxNDE0MSI+CiAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiA8L2c+CiA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSguNDMgLjA0MDEpIiBmaWxsPSIjZmZmIj4KICA8cGF0aCBkPSJtNC4xNCA4Ljc2cTAuMDY4Mi0xLjg5IDIuNDItMS44OSAxLjE2IDAgMS42OCAwLjQyIDAuNTY3IDAuNDEgMC41NjcgMS4xNnYzLjQ3cTAgMC40NjIgMC41MTQgMC40NjIgMC4xMDMgMCAwLjItMC4wMjMxdjAuNzE0cS0wLjM5OSAwLjEwMy0wLjY1MSAwLjEwMy0wLjQ1MiAwLTAuNjkzLTAuMjItMC4yMzEtMC4yLTAuMjg0LTAuNjYyLTAuOTU2IDAuODcyLTIgMC44NzItMC45MDMgMC0xLjQ3LTAuNDcyLTAuNTI1LTAuNDcyLTAuNTI1LTEuMjYgMC0wLjI2MiAwLjA0NTItMC40NzIgMC4wNTY3LTAuMjIgMC4xMTYtMC4zNzggMC4wNjgyLTAuMTY4IDAuMjMxLTAuMzA0IDAuMTU4LTAuMTQ3IDAuMjYyLTAuMjQyIDAuMTE2LTAuMDkxNCAwLjM2OC0wLjE2OCAwLjI2Mi0wLjA5MTQgMC4zOTktMC4xMjYgMC4xMzYtMC4wNDUyIDAuNDcyLTAuMTAzIDAuMzM2LTAuMDU3OCAwLjUwNC0wLjA3OTggMC4xNTgtMC4wMjMxIDAuNTY3LTAuMDc5OCAwLjU1Ni0wLjA2ODIgMC43NzctMC4yMjEgMC4yMi0wLjE1MiAwLjIyLTAuNDQxdi0wLjI1MnEwLTAuNDMtMC4zNTctMC42NjItMC4zMzYtMC4yMzEtMC45NzYtMC4yMzEtMC42NjIgMC0wLjk5OCAwLjI2Mi0wLjMzNiAwLjI1Mi0wLjM5OSAwLjc5OHptMS44OSAzLjY4cTAuNzg4IDAgMS4yNi0wLjQxIDAuNTA0LTAuNDIgMC41MDQtMC45MDN2LTEuMDVxLTAuMjg0IDAuMTM2LTAuODYxIDAuMjMxLTAuNTY3IDAuMDkxNC0wLjk4NyAwLjE1OC0wLjQyIDAuMDY4Mi0wLjc2NiAwLjMyNi0wLjMzNiAwLjI1Mi0wLjMzNiAwLjcwNHQwLjMwNCAwLjcwNCAwLjg2MSAwLjI1MnoiIHN0cm9rZS13aWR0aD0iMS4wNSIvPgogIDxwYXRoIGQ9Im0xMCA0LjU2aDAuOTQ1djMuMTVxMC42NTEtMC45NzYgMS44OS0wLjk3NiAxLjE2IDAgMS44OSAwLjg0IDAuNjgyIDAuODQgMC42ODIgMi4zMSAwIDEuNDctMC43MDQgMi40Mi0wLjcwNCAwLjg4Mi0xLjg5IDAuODgyLTEuMjYgMC0xLjg5LTEuMDJ2MC43NjZoLTAuODV6bTIuNjIgMy4wNHEtMC43NDYgMC0xLjE2IDAuNjQtMC40NTIgMC42My0wLjQ1MiAxLjY4IDAgMS4wNSAwLjQ1MiAxLjY4dDEuMTYgMC42M3EwLjc3NyAwIDEuMjYtMC42MyAwLjQ5NC0wLjY0IDAuNDk0LTEuNjggMC0xLjA1LTAuNDcyLTEuNjgtMC40NjItMC42NC0xLjI2LTAuNjR6IiBzdHJva2Utd2lkdGg9IjEuMDUiLz4KICA8cGF0aCBkPSJtMi43MyAxNS44IDEzLjYgMC4wMDgxYzAuMDA2OSAwIDAtMi42IDAtMi42IDAtMC4wMDc4LTEuMTUgMC0xLjE1IDAtMC4wMDY5IDAtMC4wMDgzIDEuNS0wLjAwODMgMS41LTJlLTMgLTAuMDAxNC0xMS4zLTAuMDAxNC0xMS4zLTAuMDAxNGwtMC4wMDU5Mi0xLjVjMC0wLjAwNzgtMS4xNyAwLjAwMTMtMS4xNyAwLjAwMTN6IiBzdHJva2Utd2lkdGg9Ii45NzUiLz4KIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
}
|
||
|
||
/* Icon CSS class declarations */
|
||
|
||
.jp-AddAboveIcon {
|
||
background-image: var(--jp-icon-add-above);
|
||
}
|
||
|
||
.jp-AddBelowIcon {
|
||
background-image: var(--jp-icon-add-below);
|
||
}
|
||
|
||
.jp-AddIcon {
|
||
background-image: var(--jp-icon-add);
|
||
}
|
||
|
||
.jp-BellIcon {
|
||
background-image: var(--jp-icon-bell);
|
||
}
|
||
|
||
.jp-BugDotIcon {
|
||
background-image: var(--jp-icon-bug-dot);
|
||
}
|
||
|
||
.jp-BugIcon {
|
||
background-image: var(--jp-icon-bug);
|
||
}
|
||
|
||
.jp-BuildIcon {
|
||
background-image: var(--jp-icon-build);
|
||
}
|
||
|
||
.jp-CaretDownEmptyIcon {
|
||
background-image: var(--jp-icon-caret-down-empty);
|
||
}
|
||
|
||
.jp-CaretDownEmptyThinIcon {
|
||
background-image: var(--jp-icon-caret-down-empty-thin);
|
||
}
|
||
|
||
.jp-CaretDownIcon {
|
||
background-image: var(--jp-icon-caret-down);
|
||
}
|
||
|
||
.jp-CaretLeftIcon {
|
||
background-image: var(--jp-icon-caret-left);
|
||
}
|
||
|
||
.jp-CaretRightIcon {
|
||
background-image: var(--jp-icon-caret-right);
|
||
}
|
||
|
||
.jp-CaretUpEmptyThinIcon {
|
||
background-image: var(--jp-icon-caret-up-empty-thin);
|
||
}
|
||
|
||
.jp-CaretUpIcon {
|
||
background-image: var(--jp-icon-caret-up);
|
||
}
|
||
|
||
.jp-CaseSensitiveIcon {
|
||
background-image: var(--jp-icon-case-sensitive);
|
||
}
|
||
|
||
.jp-CheckIcon {
|
||
background-image: var(--jp-icon-check);
|
||
}
|
||
|
||
.jp-CircleEmptyIcon {
|
||
background-image: var(--jp-icon-circle-empty);
|
||
}
|
||
|
||
.jp-CircleIcon {
|
||
background-image: var(--jp-icon-circle);
|
||
}
|
||
|
||
.jp-ClearIcon {
|
||
background-image: var(--jp-icon-clear);
|
||
}
|
||
|
||
.jp-CloseIcon {
|
||
background-image: var(--jp-icon-close);
|
||
}
|
||
|
||
.jp-CodeCheckIcon {
|
||
background-image: var(--jp-icon-code-check);
|
||
}
|
||
|
||
.jp-CodeIcon {
|
||
background-image: var(--jp-icon-code);
|
||
}
|
||
|
||
.jp-CollapseAllIcon {
|
||
background-image: var(--jp-icon-collapse-all);
|
||
}
|
||
|
||
.jp-ConsoleIcon {
|
||
background-image: var(--jp-icon-console);
|
||
}
|
||
|
||
.jp-CopyIcon {
|
||
background-image: var(--jp-icon-copy);
|
||
}
|
||
|
||
.jp-CopyrightIcon {
|
||
background-image: var(--jp-icon-copyright);
|
||
}
|
||
|
||
.jp-CutIcon {
|
||
background-image: var(--jp-icon-cut);
|
||
}
|
||
|
||
.jp-DeleteIcon {
|
||
background-image: var(--jp-icon-delete);
|
||
}
|
||
|
||
.jp-DownloadIcon {
|
||
background-image: var(--jp-icon-download);
|
||
}
|
||
|
||
.jp-DuplicateIcon {
|
||
background-image: var(--jp-icon-duplicate);
|
||
}
|
||
|
||
.jp-EditIcon {
|
||
background-image: var(--jp-icon-edit);
|
||
}
|
||
|
||
.jp-EllipsesIcon {
|
||
background-image: var(--jp-icon-ellipses);
|
||
}
|
||
|
||
.jp-ErrorIcon {
|
||
background-image: var(--jp-icon-error);
|
||
}
|
||
|
||
.jp-ExpandAllIcon {
|
||
background-image: var(--jp-icon-expand-all);
|
||
}
|
||
|
||
.jp-ExtensionIcon {
|
||
background-image: var(--jp-icon-extension);
|
||
}
|
||
|
||
.jp-FastForwardIcon {
|
||
background-image: var(--jp-icon-fast-forward);
|
||
}
|
||
|
||
.jp-FileIcon {
|
||
background-image: var(--jp-icon-file);
|
||
}
|
||
|
||
.jp-FileUploadIcon {
|
||
background-image: var(--jp-icon-file-upload);
|
||
}
|
||
|
||
.jp-FilterDotIcon {
|
||
background-image: var(--jp-icon-filter-dot);
|
||
}
|
||
|
||
.jp-FilterIcon {
|
||
background-image: var(--jp-icon-filter);
|
||
}
|
||
|
||
.jp-FilterListIcon {
|
||
background-image: var(--jp-icon-filter-list);
|
||
}
|
||
|
||
.jp-FolderFavoriteIcon {
|
||
background-image: var(--jp-icon-folder-favorite);
|
||
}
|
||
|
||
.jp-FolderIcon {
|
||
background-image: var(--jp-icon-folder);
|
||
}
|
||
|
||
.jp-HomeIcon {
|
||
background-image: var(--jp-icon-home);
|
||
}
|
||
|
||
.jp-Html5Icon {
|
||
background-image: var(--jp-icon-html5);
|
||
}
|
||
|
||
.jp-ImageIcon {
|
||
background-image: var(--jp-icon-image);
|
||
}
|
||
|
||
.jp-InfoIcon {
|
||
background-image: var(--jp-icon-info);
|
||
}
|
||
|
||
.jp-InspectorIcon {
|
||
background-image: var(--jp-icon-inspector);
|
||
}
|
||
|
||
.jp-JsonIcon {
|
||
background-image: var(--jp-icon-json);
|
||
}
|
||
|
||
.jp-JuliaIcon {
|
||
background-image: var(--jp-icon-julia);
|
||
}
|
||
|
||
.jp-JupyterFaviconIcon {
|
||
background-image: var(--jp-icon-jupyter-favicon);
|
||
}
|
||
|
||
.jp-JupyterIcon {
|
||
background-image: var(--jp-icon-jupyter);
|
||
}
|
||
|
||
.jp-JupyterlabWordmarkIcon {
|
||
background-image: var(--jp-icon-jupyterlab-wordmark);
|
||
}
|
||
|
||
.jp-KernelIcon {
|
||
background-image: var(--jp-icon-kernel);
|
||
}
|
||
|
||
.jp-KeyboardIcon {
|
||
background-image: var(--jp-icon-keyboard);
|
||
}
|
||
|
||
.jp-LaunchIcon {
|
||
background-image: var(--jp-icon-launch);
|
||
}
|
||
|
||
.jp-LauncherIcon {
|
||
background-image: var(--jp-icon-launcher);
|
||
}
|
||
|
||
.jp-LineFormIcon {
|
||
background-image: var(--jp-icon-line-form);
|
||
}
|
||
|
||
.jp-LinkIcon {
|
||
background-image: var(--jp-icon-link);
|
||
}
|
||
|
||
.jp-ListIcon {
|
||
background-image: var(--jp-icon-list);
|
||
}
|
||
|
||
.jp-MarkdownIcon {
|
||
background-image: var(--jp-icon-markdown);
|
||
}
|
||
|
||
.jp-MoveDownIcon {
|
||
background-image: var(--jp-icon-move-down);
|
||
}
|
||
|
||
.jp-MoveUpIcon {
|
||
background-image: var(--jp-icon-move-up);
|
||
}
|
||
|
||
.jp-NewFolderIcon {
|
||
background-image: var(--jp-icon-new-folder);
|
||
}
|
||
|
||
.jp-NotTrustedIcon {
|
||
background-image: var(--jp-icon-not-trusted);
|
||
}
|
||
|
||
.jp-NotebookIcon {
|
||
background-image: var(--jp-icon-notebook);
|
||
}
|
||
|
||
.jp-NumberingIcon {
|
||
background-image: var(--jp-icon-numbering);
|
||
}
|
||
|
||
.jp-OfflineBoltIcon {
|
||
background-image: var(--jp-icon-offline-bolt);
|
||
}
|
||
|
||
.jp-PaletteIcon {
|
||
background-image: var(--jp-icon-palette);
|
||
}
|
||
|
||
.jp-PasteIcon {
|
||
background-image: var(--jp-icon-paste);
|
||
}
|
||
|
||
.jp-PdfIcon {
|
||
background-image: var(--jp-icon-pdf);
|
||
}
|
||
|
||
.jp-PythonIcon {
|
||
background-image: var(--jp-icon-python);
|
||
}
|
||
|
||
.jp-RKernelIcon {
|
||
background-image: var(--jp-icon-r-kernel);
|
||
}
|
||
|
||
.jp-ReactIcon {
|
||
background-image: var(--jp-icon-react);
|
||
}
|
||
|
||
.jp-RedoIcon {
|
||
background-image: var(--jp-icon-redo);
|
||
}
|
||
|
||
.jp-RefreshIcon {
|
||
background-image: var(--jp-icon-refresh);
|
||
}
|
||
|
||
.jp-RegexIcon {
|
||
background-image: var(--jp-icon-regex);
|
||
}
|
||
|
||
.jp-RunIcon {
|
||
background-image: var(--jp-icon-run);
|
||
}
|
||
|
||
.jp-RunningIcon {
|
||
background-image: var(--jp-icon-running);
|
||
}
|
||
|
||
.jp-SaveIcon {
|
||
background-image: var(--jp-icon-save);
|
||
}
|
||
|
||
.jp-SearchIcon {
|
||
background-image: var(--jp-icon-search);
|
||
}
|
||
|
||
.jp-SettingsIcon {
|
||
background-image: var(--jp-icon-settings);
|
||
}
|
||
|
||
.jp-ShareIcon {
|
||
background-image: var(--jp-icon-share);
|
||
}
|
||
|
||
.jp-SpreadsheetIcon {
|
||
background-image: var(--jp-icon-spreadsheet);
|
||
}
|
||
|
||
.jp-StopIcon {
|
||
background-image: var(--jp-icon-stop);
|
||
}
|
||
|
||
.jp-TabIcon {
|
||
background-image: var(--jp-icon-tab);
|
||
}
|
||
|
||
.jp-TableRowsIcon {
|
||
background-image: var(--jp-icon-table-rows);
|
||
}
|
||
|
||
.jp-TagIcon {
|
||
background-image: var(--jp-icon-tag);
|
||
}
|
||
|
||
.jp-TerminalIcon {
|
||
background-image: var(--jp-icon-terminal);
|
||
}
|
||
|
||
.jp-TextEditorIcon {
|
||
background-image: var(--jp-icon-text-editor);
|
||
}
|
||
|
||
.jp-TocIcon {
|
||
background-image: var(--jp-icon-toc);
|
||
}
|
||
|
||
.jp-TreeViewIcon {
|
||
background-image: var(--jp-icon-tree-view);
|
||
}
|
||
|
||
.jp-TrustedIcon {
|
||
background-image: var(--jp-icon-trusted);
|
||
}
|
||
|
||
.jp-UndoIcon {
|
||
background-image: var(--jp-icon-undo);
|
||
}
|
||
|
||
.jp-UserIcon {
|
||
background-image: var(--jp-icon-user);
|
||
}
|
||
|
||
.jp-UsersIcon {
|
||
background-image: var(--jp-icon-users);
|
||
}
|
||
|
||
.jp-VegaIcon {
|
||
background-image: var(--jp-icon-vega);
|
||
}
|
||
|
||
.jp-WordIcon {
|
||
background-image: var(--jp-icon-word);
|
||
}
|
||
|
||
.jp-YamlIcon {
|
||
background-image: var(--jp-icon-yaml);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* (DEPRECATED) Support for consuming icons as CSS background images
|
||
*/
|
||
|
||
.jp-Icon,
|
||
.jp-MaterialIcon {
|
||
background-position: center;
|
||
background-repeat: no-repeat;
|
||
background-size: 16px;
|
||
min-width: 16px;
|
||
min-height: 16px;
|
||
}
|
||
|
||
.jp-Icon-cover {
|
||
background-position: center;
|
||
background-repeat: no-repeat;
|
||
background-size: cover;
|
||
}
|
||
|
||
/**
|
||
* (DEPRECATED) Support for specific CSS icon sizes
|
||
*/
|
||
|
||
.jp-Icon-16 {
|
||
background-size: 16px;
|
||
min-width: 16px;
|
||
min-height: 16px;
|
||
}
|
||
|
||
.jp-Icon-18 {
|
||
background-size: 18px;
|
||
min-width: 18px;
|
||
min-height: 18px;
|
||
}
|
||
|
||
.jp-Icon-20 {
|
||
background-size: 20px;
|
||
min-width: 20px;
|
||
min-height: 20px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabBar .lm-TabBar-addButton {
|
||
align-items: center;
|
||
display: flex;
|
||
padding: 4px;
|
||
padding-bottom: 5px;
|
||
margin-right: 1px;
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-TabBar .lm-TabBar-addButton:hover {
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.lm-DockPanel-tabBar .lm-TabBar-tab {
|
||
width: var(--jp-private-horizontal-tab-width);
|
||
}
|
||
|
||
.lm-DockPanel-tabBar .lm-TabBar-content {
|
||
flex: unset;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar[data-orientation='horizontal'] {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* Support for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/* recolor the primary elements of an icon */
|
||
.jp-icon0[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon1[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon2[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon3[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon4[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon0[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon1[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon2[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon3[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon4[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/* recolor the accent elements of an icon */
|
||
.jp-icon-accent0[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-accent1[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-accent2[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-accent3[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-accent4[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-accent0[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-accent1[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-accent2[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-accent3[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-accent4[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* set the color of an icon to transparent */
|
||
.jp-icon-none[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.jp-icon-none[stroke] {
|
||
stroke: none;
|
||
}
|
||
|
||
/* brand icon colors. Same for light and dark */
|
||
.jp-icon-brand0[fill] {
|
||
fill: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-icon-brand1[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-icon-brand2[fill] {
|
||
fill: var(--jp-brand-color2);
|
||
}
|
||
|
||
.jp-icon-brand3[fill] {
|
||
fill: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-icon-brand4[fill] {
|
||
fill: var(--jp-brand-color4);
|
||
}
|
||
|
||
.jp-icon-brand0[stroke] {
|
||
stroke: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-icon-brand1[stroke] {
|
||
stroke: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-icon-brand2[stroke] {
|
||
stroke: var(--jp-brand-color2);
|
||
}
|
||
|
||
.jp-icon-brand3[stroke] {
|
||
stroke: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-icon-brand4[stroke] {
|
||
stroke: var(--jp-brand-color4);
|
||
}
|
||
|
||
/* warn icon colors. Same for light and dark */
|
||
.jp-icon-warn0[fill] {
|
||
fill: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-icon-warn1[fill] {
|
||
fill: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-icon-warn2[fill] {
|
||
fill: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-icon-warn3[fill] {
|
||
fill: var(--jp-warn-color3);
|
||
}
|
||
|
||
.jp-icon-warn0[stroke] {
|
||
stroke: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-icon-warn1[stroke] {
|
||
stroke: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-icon-warn2[stroke] {
|
||
stroke: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-icon-warn3[stroke] {
|
||
stroke: var(--jp-warn-color3);
|
||
}
|
||
|
||
/* icon colors that contrast well with each other and most backgrounds */
|
||
.jp-icon-contrast0[fill] {
|
||
fill: var(--jp-icon-contrast-color0);
|
||
}
|
||
|
||
.jp-icon-contrast1[fill] {
|
||
fill: var(--jp-icon-contrast-color1);
|
||
}
|
||
|
||
.jp-icon-contrast2[fill] {
|
||
fill: var(--jp-icon-contrast-color2);
|
||
}
|
||
|
||
.jp-icon-contrast3[fill] {
|
||
fill: var(--jp-icon-contrast-color3);
|
||
}
|
||
|
||
.jp-icon-contrast0[stroke] {
|
||
stroke: var(--jp-icon-contrast-color0);
|
||
}
|
||
|
||
.jp-icon-contrast1[stroke] {
|
||
stroke: var(--jp-icon-contrast-color1);
|
||
}
|
||
|
||
.jp-icon-contrast2[stroke] {
|
||
stroke: var(--jp-icon-contrast-color2);
|
||
}
|
||
|
||
.jp-icon-contrast3[stroke] {
|
||
stroke: var(--jp-icon-contrast-color3);
|
||
}
|
||
|
||
.jp-icon-dot[fill] {
|
||
fill: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-jupyter-icon-color[fill] {
|
||
fill: var(--jp-jupyter-icon-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-notebook-icon-color[fill] {
|
||
fill: var(--jp-notebook-icon-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-json-icon-color[fill] {
|
||
fill: var(--jp-json-icon-color, var(--jp-warn-color1));
|
||
}
|
||
|
||
.jp-console-icon-color[fill] {
|
||
fill: var(--jp-console-icon-color, white);
|
||
}
|
||
|
||
.jp-console-icon-background-color[fill] {
|
||
fill: var(--jp-console-icon-background-color, var(--jp-brand-color1));
|
||
}
|
||
|
||
.jp-terminal-icon-color[fill] {
|
||
fill: var(--jp-terminal-icon-color, var(--jp-layout-color2));
|
||
}
|
||
|
||
.jp-terminal-icon-background-color[fill] {
|
||
fill: var(
|
||
--jp-terminal-icon-background-color,
|
||
var(--jp-inverse-layout-color2)
|
||
);
|
||
}
|
||
|
||
.jp-text-editor-icon-color[fill] {
|
||
fill: var(--jp-text-editor-icon-color, var(--jp-inverse-layout-color3));
|
||
}
|
||
|
||
.jp-inspector-icon-color[fill] {
|
||
fill: var(--jp-inspector-icon-color, var(--jp-inverse-layout-color3));
|
||
}
|
||
|
||
/* CSS for icons in selected filebrowser listing items */
|
||
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] {
|
||
fill: #fff;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* stylelint-disable selector-max-class, selector-max-compound-selectors */
|
||
|
||
/**
|
||
* TODO: come up with non css-hack solution for showing the busy icon on top
|
||
* of the close icon
|
||
* CSS for complex behavior of close icon of tabs in the main area tabbar
|
||
*/
|
||
.lm-DockPanel-tabBar
|
||
.lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
|
||
> .lm-TabBar-tabCloseIcon
|
||
> :not(:hover)
|
||
> .jp-icon3[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar
|
||
.lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
|
||
> .lm-TabBar-tabCloseIcon
|
||
> :not(:hover)
|
||
> .jp-icon-busy[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
/* stylelint-enable selector-max-class, selector-max-compound-selectors */
|
||
|
||
/* CSS for icons in status bar */
|
||
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] {
|
||
fill: #fff;
|
||
}
|
||
|
||
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* special handling for splash icon CSS. While the theme CSS reloads during
|
||
splash, the splash icon can loose theming. To prevent that, we set a
|
||
default for its color variable */
|
||
:root {
|
||
--jp-warn-color0: var(--md-orange-700);
|
||
}
|
||
|
||
/* not sure what to do with this one, used in filebrowser listing */
|
||
.jp-DragIcon {
|
||
margin-right: 4px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* Support for alt colors for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/* alt recolor the primary elements of an icon */
|
||
.jp-icon-alt .jp-icon0[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon1[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon2[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon3[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon4[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon0[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon1[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon2[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon3[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon4[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* alt recolor the accent elements of an icon */
|
||
.jp-icon-alt .jp-icon-accent0[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent1[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent2[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent3[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent4[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent0[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent1[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent2[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent3[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent4[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-icon-hoverShow:not(:hover) .jp-icon-hoverShow-content {
|
||
display: none !important;
|
||
}
|
||
|
||
/**
|
||
* Support for hover colors for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/**
|
||
* regular colors
|
||
*/
|
||
|
||
/* recolor the primary elements of an icon */
|
||
.jp-icon-hover :hover .jp-icon0-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon1-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon2-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon3-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon4-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon0-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon1-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon2-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon3-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon4-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/* recolor the accent elements of an icon */
|
||
.jp-icon-hover :hover .jp-icon-accent0-hover[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent1-hover[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent2-hover[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent3-hover[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent4-hover[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* set the color of an icon to transparent */
|
||
.jp-icon-hover :hover .jp-icon-none-hover[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-none-hover[stroke] {
|
||
stroke: none;
|
||
}
|
||
|
||
/**
|
||
* inverse colors
|
||
*/
|
||
|
||
/* inverse recolor the primary elements of an icon */
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* inverse recolor the accent elements of an icon */
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-IFrame {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-IFrame > iframe {
|
||
border: none;
|
||
}
|
||
|
||
/*
|
||
When drag events occur, `lm-mod-override-cursor` is added to the body.
|
||
Because iframes steal all cursor events, the following two rules are necessary
|
||
to suppress pointer events while resize drags are occurring. There may be a
|
||
better solution to this problem.
|
||
*/
|
||
body.lm-mod-override-cursor .jp-IFrame {
|
||
position: relative;
|
||
}
|
||
|
||
body.lm-mod-override-cursor .jp-IFrame::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-HoverBox {
|
||
position: fixed;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FormGroup-content fieldset {
|
||
border: none;
|
||
padding: 0;
|
||
min-width: 0;
|
||
width: 100%;
|
||
}
|
||
|
||
/* stylelint-disable selector-max-type */
|
||
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper input,
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper select,
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper textarea {
|
||
font-size: var(--jp-content-font-size2);
|
||
border-color: var(--jp-input-border-color);
|
||
border-style: solid;
|
||
border-radius: var(--jp-border-radius);
|
||
border-width: 1px;
|
||
padding: 6px 8px;
|
||
background: none;
|
||
color: var(--jp-ui-font-color0);
|
||
height: inherit;
|
||
}
|
||
|
||
.jp-FormGroup-content fieldset input[type='checkbox'] {
|
||
position: relative;
|
||
top: 2px;
|
||
margin-left: 0;
|
||
}
|
||
|
||
.jp-FormGroup-content button.jp-mod-styled {
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-FormGroup-content .checkbox label {
|
||
cursor: pointer;
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-root > fieldset > legend {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-root > fieldset > p {
|
||
display: none;
|
||
}
|
||
|
||
/** copy of `input.jp-mod-styled:focus` style */
|
||
.jp-FormGroup-content fieldset input:focus,
|
||
.jp-FormGroup-content fieldset select:focus {
|
||
-moz-outline-radius: unset;
|
||
outline: var(--jp-border-width) solid var(--md-blue-500);
|
||
outline-offset: -1px;
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-FormGroup-content fieldset input:hover:not(:focus),
|
||
.jp-FormGroup-content fieldset select:hover:not(:focus) {
|
||
background-color: var(--jp-border-color2);
|
||
}
|
||
|
||
/* stylelint-enable selector-max-type */
|
||
|
||
.jp-FormGroup-content .checkbox .field-description {
|
||
/* Disable default description field for checkbox:
|
||
because other widgets do not have description fields,
|
||
we add descriptions to each widget on the field level.
|
||
*/
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content #root__description {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-modifiedIndicator {
|
||
width: 5px;
|
||
background-color: var(--jp-brand-color2);
|
||
margin-top: 0;
|
||
margin-left: calc(var(--jp-private-settingeditor-modifier-indent) * -1);
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-modifiedIndicator.jp-errorIndicator {
|
||
background-color: var(--jp-error-color0);
|
||
margin-right: 0.5em;
|
||
}
|
||
|
||
/* RJSF ARRAY style */
|
||
|
||
.jp-arrayFieldWrapper legend {
|
||
font-size: var(--jp-content-font-size2);
|
||
color: var(--jp-ui-font-color0);
|
||
flex-basis: 100%;
|
||
padding: 4px 0;
|
||
font-weight: var(--jp-content-heading-font-weight);
|
||
border-bottom: 1px solid var(--jp-border-color2);
|
||
}
|
||
|
||
.jp-arrayFieldWrapper .field-description {
|
||
padding: 4px 0;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
.jp-arrayFieldWrapper .array-item {
|
||
width: 100%;
|
||
border: 1px solid var(--jp-border-color2);
|
||
border-radius: 4px;
|
||
margin: 4px;
|
||
}
|
||
|
||
.jp-ArrayOperations {
|
||
display: flex;
|
||
margin-left: 8px;
|
||
}
|
||
|
||
.jp-ArrayOperationsButton {
|
||
margin: 2px;
|
||
}
|
||
|
||
.jp-ArrayOperationsButton .jp-icon3[fill] {
|
||
fill: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
button.jp-ArrayOperationsButton.jp-mod-styled:disabled {
|
||
cursor: not-allowed;
|
||
opacity: 0.5;
|
||
}
|
||
|
||
/* RJSF form validation error */
|
||
|
||
.jp-FormGroup-content .validationErrors {
|
||
color: var(--jp-error-color0);
|
||
}
|
||
|
||
/* Hide panel level error as duplicated the field level error */
|
||
.jp-FormGroup-content .panel.errors {
|
||
display: none;
|
||
}
|
||
|
||
/* RJSF normal content (settings-editor) */
|
||
|
||
.jp-FormGroup-contentNormal {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-contentItem {
|
||
margin-left: 7px;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-description {
|
||
flex-basis: 100%;
|
||
padding: 4px 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-default {
|
||
flex-basis: 100%;
|
||
padding: 4px 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-fieldLabel {
|
||
font-size: var(--jp-content-font-size1);
|
||
font-weight: normal;
|
||
min-width: 120px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal fieldset:not(:first-child) {
|
||
margin-left: 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .field-array-of-string .array-item {
|
||
/* Display `jp-ArrayOperations` buttons side-by-side with content except
|
||
for small screens where flex-wrap will place them one below the other.
|
||
*/
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-objectFieldWrapper .form-group {
|
||
padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
|
||
margin-top: 2px;
|
||
}
|
||
|
||
/* RJSF compact content (metadata-form) */
|
||
|
||
.jp-FormGroup-content.jp-FormGroup-contentCompact {
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .form-group {
|
||
display: flex;
|
||
padding: 0.5em 0.2em 0.5em 0;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact
|
||
.jp-FormGroup-compactTitle
|
||
.jp-FormGroup-description {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-FormGroup-fieldLabel {
|
||
padding-bottom: 0.3em;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-inputFieldWrapper .form-control {
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-arrayFieldWrapper .jp-FormGroup-compactTitle {
|
||
padding-bottom: 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact
|
||
.jp-objectFieldWrapper
|
||
.jp-objectFieldWrapper
|
||
.form-group {
|
||
padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
|
||
margin-top: 2px;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact ul.error-detail {
|
||
margin-block-start: 0.5em;
|
||
margin-block-end: 0.5em;
|
||
padding-inline-start: 1em;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-SidePanel {
|
||
display: flex;
|
||
flex-direction: column;
|
||
min-width: var(--jp-sidebar-min-width);
|
||
overflow-y: auto;
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
.jp-SidePanel-header {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
letter-spacing: 1px;
|
||
margin: 0;
|
||
padding: 2px;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.jp-SidePanel-toolbar {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-SidePanel-content {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-SidePanel-toolbar,
|
||
.jp-AccordionPanel-toolbar {
|
||
height: var(--jp-private-toolbar-height);
|
||
}
|
||
|
||
.jp-SidePanel-toolbar.jp-Toolbar-micro {
|
||
display: none;
|
||
}
|
||
|
||
.lm-AccordionPanel .jp-AccordionPanel-title {
|
||
box-sizing: border-box;
|
||
line-height: 25px;
|
||
margin: 0;
|
||
display: flex;
|
||
align-items: center;
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
font-size: var(--jp-ui-font-size0);
|
||
}
|
||
|
||
.jp-AccordionPanel-title {
|
||
cursor: pointer;
|
||
user-select: none;
|
||
-moz-user-select: none;
|
||
-webkit-user-select: none;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.lm-AccordionPanel[data-orientation='horizontal'] > .jp-AccordionPanel-title {
|
||
/* Title is rotated for horizontal accordion panel using CSS */
|
||
display: block;
|
||
transform-origin: top left;
|
||
transform: rotate(-90deg) translate(-100%);
|
||
}
|
||
|
||
.jp-AccordionPanel-title .lm-AccordionPanel-titleLabel {
|
||
user-select: none;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-AccordionPanel-title .lm-AccordionPanel-titleCollapser {
|
||
transform: rotate(-90deg);
|
||
margin: auto 0;
|
||
height: 16px;
|
||
}
|
||
|
||
.jp-AccordionPanel-title.lm-mod-expanded .lm-AccordionPanel-titleCollapser {
|
||
transform: rotate(0deg);
|
||
}
|
||
|
||
.lm-AccordionPanel .jp-AccordionPanel-toolbar {
|
||
background: none;
|
||
box-shadow: none;
|
||
border: none;
|
||
margin-left: auto;
|
||
}
|
||
|
||
.lm-AccordionPanel .lm-SplitPanel-handle:hover {
|
||
background: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-text-truncated {
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Spinner {
|
||
position: absolute;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
z-index: 10;
|
||
left: 0;
|
||
top: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background: var(--jp-layout-color0);
|
||
outline: none;
|
||
}
|
||
|
||
.jp-SpinnerContent {
|
||
font-size: 10px;
|
||
margin: 50px auto;
|
||
text-indent: -9999em;
|
||
width: 3em;
|
||
height: 3em;
|
||
border-radius: 50%;
|
||
background: var(--jp-brand-color3);
|
||
background: linear-gradient(
|
||
to right,
|
||
#f37626 10%,
|
||
rgba(255, 255, 255, 0) 42%
|
||
);
|
||
position: relative;
|
||
animation: load3 1s infinite linear, fadeIn 1s;
|
||
}
|
||
|
||
.jp-SpinnerContent::before {
|
||
width: 50%;
|
||
height: 50%;
|
||
background: #f37626;
|
||
border-radius: 100% 0 0;
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
content: '';
|
||
}
|
||
|
||
.jp-SpinnerContent::after {
|
||
background: var(--jp-layout-color0);
|
||
width: 75%;
|
||
height: 75%;
|
||
border-radius: 50%;
|
||
content: '';
|
||
margin: auto;
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
bottom: 0;
|
||
right: 0;
|
||
}
|
||
|
||
@keyframes fadeIn {
|
||
0% {
|
||
opacity: 0;
|
||
}
|
||
|
||
100% {
|
||
opacity: 1;
|
||
}
|
||
}
|
||
|
||
@keyframes load3 {
|
||
0% {
|
||
transform: rotate(0deg);
|
||
}
|
||
|
||
100% {
|
||
transform: rotate(360deg);
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
button.jp-mod-styled {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
border: none;
|
||
box-sizing: border-box;
|
||
text-align: center;
|
||
line-height: 32px;
|
||
height: 32px;
|
||
padding: 0 12px;
|
||
letter-spacing: 0.8px;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
input.jp-mod-styled {
|
||
background: var(--jp-input-background);
|
||
height: 28px;
|
||
box-sizing: border-box;
|
||
border: var(--jp-border-width) solid var(--jp-border-color1);
|
||
padding-left: 7px;
|
||
padding-right: 7px;
|
||
font-size: var(--jp-ui-font-size2);
|
||
color: var(--jp-ui-font-color0);
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
input[type='checkbox'].jp-mod-styled {
|
||
appearance: checkbox;
|
||
-webkit-appearance: checkbox;
|
||
-moz-appearance: checkbox;
|
||
height: auto;
|
||
}
|
||
|
||
input.jp-mod-styled:focus {
|
||
border: var(--jp-border-width) solid var(--md-blue-500);
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-select-wrapper {
|
||
display: flex;
|
||
position: relative;
|
||
flex-direction: column;
|
||
padding: 1px;
|
||
background-color: var(--jp-layout-color1);
|
||
box-sizing: border-box;
|
||
margin-bottom: 12px;
|
||
}
|
||
|
||
.jp-select-wrapper:not(.multiple) {
|
||
height: 28px;
|
||
}
|
||
|
||
.jp-select-wrapper.jp-mod-focused select.jp-mod-styled {
|
||
border: var(--jp-border-width) solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
background-color: var(--jp-input-active-background);
|
||
}
|
||
|
||
select.jp-mod-styled:hover {
|
||
cursor: pointer;
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: var(--jp-input-hover-background);
|
||
box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
|
||
}
|
||
|
||
select.jp-mod-styled {
|
||
flex: 1 1 auto;
|
||
width: 100%;
|
||
font-size: var(--jp-ui-font-size2);
|
||
background: var(--jp-input-background);
|
||
color: var(--jp-ui-font-color0);
|
||
padding: 0 25px 0 8px;
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
border-radius: 0;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
select.jp-mod-styled:not([multiple]) {
|
||
height: 32px;
|
||
}
|
||
|
||
select.jp-mod-styled[multiple] {
|
||
max-height: 200px;
|
||
overflow-y: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-switch {
|
||
display: flex;
|
||
align-items: center;
|
||
padding-left: 4px;
|
||
padding-right: 4px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
background-color: transparent;
|
||
color: var(--jp-ui-font-color1);
|
||
border: none;
|
||
height: 20px;
|
||
}
|
||
|
||
.jp-switch:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-switch-label {
|
||
margin-right: 5px;
|
||
font-family: var(--jp-ui-font-family);
|
||
}
|
||
|
||
.jp-switch-track {
|
||
cursor: pointer;
|
||
background-color: var(--jp-switch-color, var(--jp-border-color1));
|
||
-webkit-transition: 0.4s;
|
||
transition: 0.4s;
|
||
border-radius: 34px;
|
||
height: 16px;
|
||
width: 35px;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-switch-track::before {
|
||
content: '';
|
||
position: absolute;
|
||
height: 10px;
|
||
width: 10px;
|
||
margin: 3px;
|
||
left: 0;
|
||
background-color: var(--jp-ui-inverse-font-color1);
|
||
-webkit-transition: 0.4s;
|
||
transition: 0.4s;
|
||
border-radius: 50%;
|
||
}
|
||
|
||
.jp-switch[aria-checked='true'] .jp-switch-track {
|
||
background-color: var(--jp-switch-true-position-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-switch[aria-checked='true'] .jp-switch-track::before {
|
||
/* track width (35) - margins (3 + 3) - thumb width (10) */
|
||
left: 19px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-toolbar-height: calc(
|
||
28px + var(--jp-border-width)
|
||
); /* leave 28px for content */
|
||
}
|
||
|
||
.jp-Toolbar {
|
||
color: var(--jp-ui-font-color1);
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
flex-direction: row;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
background: var(--jp-toolbar-background);
|
||
min-height: var(--jp-toolbar-micro-height);
|
||
padding: 2px;
|
||
z-index: 8;
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
/* Toolbar items */
|
||
|
||
.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer {
|
||
flex-grow: 1;
|
||
flex-shrink: 1;
|
||
}
|
||
|
||
.jp-Toolbar-item.jp-Toolbar-kernelStatus {
|
||
display: inline-block;
|
||
width: 32px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
background-size: 16px;
|
||
}
|
||
|
||
.jp-Toolbar > .jp-Toolbar-item {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
padding-left: 1px;
|
||
padding-right: 1px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: var(--jp-private-toolbar-height);
|
||
height: 100%;
|
||
}
|
||
|
||
/* Toolbar buttons */
|
||
|
||
/* This is the div we use to wrap the react component into a Widget */
|
||
div.jp-ToolbarButton {
|
||
color: transparent;
|
||
border: none;
|
||
box-sizing: border-box;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent {
|
||
background: var(--jp-layout-color1);
|
||
border: none;
|
||
box-sizing: border-box;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
padding: 0 6px;
|
||
margin: 0;
|
||
height: 24px;
|
||
border-radius: var(--jp-border-radius);
|
||
display: flex;
|
||
align-items: center;
|
||
text-align: center;
|
||
font-size: 14px;
|
||
min-width: unset;
|
||
min-height: unset;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent:disabled {
|
||
opacity: 0.4;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent > span {
|
||
padding: 0;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label {
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 100%;
|
||
padding-left: 2px;
|
||
color: var(--jp-ui-font-color1);
|
||
font-family: var(--jp-ui-font-family);
|
||
}
|
||
|
||
#jp-main-dock-panel[data-mode='single-document']
|
||
.jp-MainAreaWidget
|
||
> .jp-Toolbar.jp-Toolbar-micro {
|
||
padding: 0;
|
||
min-height: 0;
|
||
}
|
||
|
||
#jp-main-dock-panel[data-mode='single-document']
|
||
.jp-MainAreaWidget
|
||
> .jp-Toolbar {
|
||
border: none;
|
||
box-shadow: none;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-WindowedPanel-outer {
|
||
position: relative;
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-WindowedPanel-inner {
|
||
position: relative;
|
||
}
|
||
|
||
.jp-WindowedPanel-window {
|
||
position: absolute;
|
||
left: 0;
|
||
right: 0;
|
||
overflow: visible;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Sibling imports */
|
||
|
||
body {
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/* Disable native link decoration styles everywhere outside of dialog boxes */
|
||
a {
|
||
text-decoration: unset;
|
||
color: unset;
|
||
}
|
||
|
||
a:hover {
|
||
text-decoration: unset;
|
||
color: unset;
|
||
}
|
||
|
||
/* Accessibility for links inside dialog box text */
|
||
.jp-Dialog-content a {
|
||
text-decoration: revert;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-Dialog-content a:hover {
|
||
text-decoration: revert;
|
||
}
|
||
|
||
/* Styles for ui-components */
|
||
.jp-Button {
|
||
color: var(--jp-ui-font-color2);
|
||
border-radius: var(--jp-border-radius);
|
||
padding: 0 12px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
|
||
/* Copy from blueprint 3 */
|
||
display: inline-flex;
|
||
flex-direction: row;
|
||
border: none;
|
||
cursor: pointer;
|
||
align-items: center;
|
||
justify-content: center;
|
||
text-align: left;
|
||
vertical-align: middle;
|
||
min-height: 30px;
|
||
min-width: 30px;
|
||
}
|
||
|
||
.jp-Button:disabled {
|
||
cursor: not-allowed;
|
||
}
|
||
|
||
.jp-Button:empty {
|
||
padding: 0 !important;
|
||
}
|
||
|
||
.jp-Button.jp-mod-small {
|
||
min-height: 24px;
|
||
min-width: 24px;
|
||
font-size: 12px;
|
||
padding: 0 7px;
|
||
}
|
||
|
||
/* Use our own theme for hover styles */
|
||
.jp-Button.jp-mod-minimal:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-Button.jp-mod-minimal {
|
||
background: none;
|
||
}
|
||
|
||
.jp-InputGroup {
|
||
display: block;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-InputGroup input {
|
||
box-sizing: border-box;
|
||
border: none;
|
||
border-radius: 0;
|
||
background-color: transparent;
|
||
color: var(--jp-ui-font-color0);
|
||
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
|
||
padding-bottom: 0;
|
||
padding-top: 0;
|
||
padding-left: 10px;
|
||
padding-right: 28px;
|
||
position: relative;
|
||
width: 100%;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
appearance: none;
|
||
font-size: 14px;
|
||
font-weight: 400;
|
||
height: 30px;
|
||
line-height: 30px;
|
||
outline: none;
|
||
vertical-align: middle;
|
||
}
|
||
|
||
.jp-InputGroup input:focus {
|
||
box-shadow: inset 0 0 0 var(--jp-border-width)
|
||
var(--jp-input-active-box-shadow-color),
|
||
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
|
||
}
|
||
|
||
.jp-InputGroup input:disabled {
|
||
cursor: not-allowed;
|
||
resize: block;
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroup input:disabled ~ span {
|
||
cursor: not-allowed;
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroup input::placeholder,
|
||
input::placeholder {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroupAction {
|
||
position: absolute;
|
||
bottom: 1px;
|
||
right: 0;
|
||
padding: 6px;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select {
|
||
background-color: initial;
|
||
border: none;
|
||
border-radius: 0;
|
||
box-shadow: none;
|
||
color: var(--jp-ui-font-color0);
|
||
display: block;
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
height: 24px;
|
||
line-height: 14px;
|
||
padding: 0 25px 0 10px;
|
||
text-align: left;
|
||
-moz-appearance: none;
|
||
-webkit-appearance: none;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select:disabled {
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color2);
|
||
cursor: not-allowed;
|
||
resize: block;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select:disabled ~ span {
|
||
cursor: not-allowed;
|
||
}
|
||
|
||
/* Use our own theme for hover and option styles */
|
||
/* stylelint-disable-next-line selector-max-type */
|
||
.jp-HTMLSelect.jp-DefaultStyle select:hover,
|
||
.jp-HTMLSelect.jp-DefaultStyle select > option {
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
select {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-StatusBar-Widget {
|
||
display: flex;
|
||
align-items: center;
|
||
background: var(--jp-layout-color2);
|
||
min-height: var(--jp-statusbar-height);
|
||
justify-content: space-between;
|
||
padding: 0 10px;
|
||
}
|
||
|
||
.jp-StatusBar-Left {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.jp-StatusBar-Middle {
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.jp-StatusBar-Right {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row-reverse;
|
||
}
|
||
|
||
.jp-StatusBar-Item {
|
||
max-height: var(--jp-statusbar-height);
|
||
margin: 0 2px;
|
||
height: var(--jp-statusbar-height);
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
color: var(--jp-ui-font-color1);
|
||
padding: 0 6px;
|
||
}
|
||
|
||
.jp-mod-highlighted:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-mod-clicked {
|
||
background-color: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-mod-clicked:hover {
|
||
background-color: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-mod-clicked .jp-StatusBar-TextItem {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
}
|
||
|
||
.jp-StatusBar-HoverItem {
|
||
box-shadow: '0px 4px 4px rgba(0, 0, 0, 0.25)';
|
||
}
|
||
|
||
.jp-StatusBar-TextItem {
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
line-height: 24px;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.jp-StatusBar-GroupItem {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressCircle svg {
|
||
display: block;
|
||
margin: 0 auto;
|
||
width: 16px;
|
||
height: 24px;
|
||
align-self: normal;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressCircle path {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar {
|
||
height: 10px;
|
||
width: 100px;
|
||
border: solid 0.25px var(--jp-brand-color2);
|
||
border-radius: 3px;
|
||
overflow: hidden;
|
||
align-self: center;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar > div {
|
||
background-color: var(--jp-brand-color2);
|
||
background-image: linear-gradient(
|
||
-45deg,
|
||
rgba(255, 255, 255, 0.2) 25%,
|
||
transparent 25%,
|
||
transparent 50%,
|
||
rgba(255, 255, 255, 0.2) 50%,
|
||
rgba(255, 255, 255, 0.2) 75%,
|
||
transparent 75%,
|
||
transparent
|
||
);
|
||
background-size: 40px 40px;
|
||
float: left;
|
||
width: 0%;
|
||
height: 100%;
|
||
font-size: 12px;
|
||
line-height: 14px;
|
||
color: #fff;
|
||
text-align: center;
|
||
animation: jp-Statusbar-ExecutionTime-progress-bar 2s linear infinite;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar p {
|
||
color: var(--jp-ui-font-color1);
|
||
font-family: var(--jp-ui-font-family);
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 10px;
|
||
width: 100px;
|
||
}
|
||
|
||
@keyframes jp-Statusbar-ExecutionTime-progress-bar {
|
||
0% {
|
||
background-position: 0 0;
|
||
}
|
||
|
||
100% {
|
||
background-position: 40px 40px;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-commandpalette-search-height: 28px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Overall styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette {
|
||
padding-bottom: 0;
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Modal variant
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-ModalCommandPalette {
|
||
position: absolute;
|
||
z-index: 10000;
|
||
top: 38px;
|
||
left: 30%;
|
||
margin: 0;
|
||
padding: 4px;
|
||
width: 40%;
|
||
box-shadow: var(--jp-elevation-z4);
|
||
border-radius: 4px;
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette {
|
||
max-height: 40vh;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after {
|
||
display: none;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header {
|
||
display: none;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item {
|
||
margin-left: 4px;
|
||
margin-right: 4px;
|
||
}
|
||
|
||
.jp-ModalCommandPalette
|
||
.lm-CommandPalette
|
||
.lm-CommandPalette-item.lm-mod-disabled {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Search
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette-search {
|
||
padding: 4px;
|
||
background-color: var(--jp-layout-color1);
|
||
z-index: 2;
|
||
}
|
||
|
||
.lm-CommandPalette-wrapper {
|
||
overflow: overlay;
|
||
padding: 0 9px;
|
||
background-color: var(--jp-input-active-background);
|
||
height: 30px;
|
||
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
|
||
}
|
||
|
||
.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper {
|
||
box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color),
|
||
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
|
||
}
|
||
|
||
.jp-SearchIconGroup {
|
||
color: white;
|
||
background-color: var(--jp-brand-color1);
|
||
position: absolute;
|
||
top: 4px;
|
||
right: 4px;
|
||
padding: 5px 5px 1px;
|
||
}
|
||
|
||
.jp-SearchIconGroup svg {
|
||
height: 20px;
|
||
width: 20px;
|
||
}
|
||
|
||
.jp-SearchIconGroup .jp-icon3[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-input {
|
||
background: transparent;
|
||
width: calc(100% - 18px);
|
||
float: left;
|
||
border: none;
|
||
outline: none;
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
line-height: var(--jp-private-commandpalette-search-height);
|
||
}
|
||
|
||
.lm-CommandPalette-input::-webkit-input-placeholder,
|
||
.lm-CommandPalette-input::-moz-placeholder,
|
||
.lm-CommandPalette-input:-ms-input-placeholder {
|
||
color: var(--jp-ui-font-color2);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Results
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette-header:first-child {
|
||
margin-top: 0;
|
||
}
|
||
|
||
.lm-CommandPalette-header {
|
||
border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
cursor: pointer;
|
||
display: flex;
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
letter-spacing: 1px;
|
||
margin-top: 8px;
|
||
padding: 8px 0 8px 12px;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.lm-CommandPalette-header.lm-mod-active {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-header > mark {
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item {
|
||
padding: 4px 12px 4px 4px;
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-weight: 400;
|
||
display: flex;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active .lm-CommandPalette-itemLabel > mark {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active .jp-icon-selectable[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-itemContent {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-CommandPalette-itemLabel > mark {
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled mark {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-item .lm-CommandPalette-itemIcon {
|
||
margin: 0 4px 0 0;
|
||
position: relative;
|
||
width: 16px;
|
||
top: 2px;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon {
|
||
opacity: 0.6;
|
||
}
|
||
|
||
.lm-CommandPalette-item .lm-CommandPalette-itemShortcut {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemCaption {
|
||
display: none;
|
||
}
|
||
|
||
.lm-CommandPalette-content {
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-content:empty::after {
|
||
content: 'No results';
|
||
margin: auto;
|
||
margin-top: 20px;
|
||
width: 100px;
|
||
display: block;
|
||
font-size: var(--jp-ui-font-size2);
|
||
font-family: var(--jp-ui-font-family);
|
||
font-weight: lighter;
|
||
}
|
||
|
||
.lm-CommandPalette-emptyMessage {
|
||
text-align: center;
|
||
margin-top: 24px;
|
||
line-height: 1.32;
|
||
padding: 0 8px;
|
||
color: var(--jp-content-font-color3);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Dialog {
|
||
position: absolute;
|
||
z-index: 10000;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
top: 0;
|
||
left: 0;
|
||
margin: 0;
|
||
padding: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background: var(--jp-dialog-background);
|
||
}
|
||
|
||
.jp-Dialog-content {
|
||
display: flex;
|
||
flex-direction: column;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
background: var(--jp-layout-color1);
|
||
padding: 24px 24px 12px;
|
||
min-width: 300px;
|
||
min-height: 150px;
|
||
max-width: 1000px;
|
||
max-height: 500px;
|
||
box-sizing: border-box;
|
||
box-shadow: var(--jp-elevation-z20);
|
||
word-wrap: break-word;
|
||
border-radius: var(--jp-border-radius);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color1);
|
||
resize: both;
|
||
}
|
||
|
||
.jp-Dialog-content.jp-Dialog-content-small {
|
||
max-width: 500px;
|
||
}
|
||
|
||
.jp-Dialog-button {
|
||
overflow: visible;
|
||
}
|
||
|
||
button.jp-Dialog-button:focus {
|
||
outline: 1px solid var(--jp-brand-color1);
|
||
outline-offset: 4px;
|
||
-moz-outline-radius: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button:focus::-moz-focus-inner {
|
||
border: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus,
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus,
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
|
||
outline-offset: 4px;
|
||
-moz-outline-radius: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus {
|
||
outline: 1px solid var(--jp-accept-color-normal, var(--jp-brand-color1));
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus {
|
||
outline: 1px solid var(--jp-warn-color-normal, var(--jp-error-color1));
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
|
||
outline: 1px solid var(--jp-reject-color-normal, var(--md-grey-600));
|
||
}
|
||
|
||
button.jp-Dialog-close-button {
|
||
padding: 0;
|
||
height: 100%;
|
||
min-width: unset;
|
||
min-height: unset;
|
||
}
|
||
|
||
.jp-Dialog-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
flex: 0 0 auto;
|
||
padding-bottom: 12px;
|
||
font-size: var(--jp-ui-font-size3);
|
||
font-weight: 400;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.jp-Dialog-body {
|
||
display: flex;
|
||
flex-direction: column;
|
||
flex: 1 1 auto;
|
||
font-size: var(--jp-ui-font-size1);
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
overflow: auto;
|
||
}
|
||
|
||
.jp-Dialog-footer {
|
||
display: flex;
|
||
flex-direction: row;
|
||
justify-content: flex-end;
|
||
align-items: center;
|
||
flex: 0 0 auto;
|
||
margin-left: -12px;
|
||
margin-right: -12px;
|
||
padding: 12px;
|
||
}
|
||
|
||
.jp-Dialog-checkbox {
|
||
padding-right: 5px;
|
||
}
|
||
|
||
.jp-Dialog-checkbox > input:focus-visible {
|
||
outline: 1px solid var(--jp-input-active-border-color);
|
||
outline-offset: 1px;
|
||
}
|
||
|
||
.jp-Dialog-spacer {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-Dialog-title {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.jp-Dialog-body > .jp-select-wrapper {
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Dialog-body > button {
|
||
padding: 0 16px;
|
||
}
|
||
|
||
.jp-Dialog-body > label {
|
||
line-height: 1.4;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-Dialog-button.jp-mod-styled:not(:last-child) {
|
||
margin-right: 12px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-Input-Boolean-Dialog {
|
||
flex-direction: row-reverse;
|
||
align-items: end;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Input-Boolean-Dialog > label {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MainAreaWidget > :focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-MainAreaWidget .jp-MainAreaWidget-error {
|
||
padding: 6px;
|
||
}
|
||
|
||
.jp-MainAreaWidget .jp-MainAreaWidget-error > pre {
|
||
width: auto;
|
||
padding: 10px;
|
||
background: var(--jp-error-color3);
|
||
border: var(--jp-border-width) solid var(--jp-error-color1);
|
||
border-radius: var(--jp-border-radius);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: pre-wrap;
|
||
word-wrap: break-word;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/**
|
||
* google-material-color v1.2.6
|
||
* https://github.com/danlevan/google-material-color
|
||
*/
|
||
:root {
|
||
--md-red-50: #ffebee;
|
||
--md-red-100: #ffcdd2;
|
||
--md-red-200: #ef9a9a;
|
||
--md-red-300: #e57373;
|
||
--md-red-400: #ef5350;
|
||
--md-red-500: #f44336;
|
||
--md-red-600: #e53935;
|
||
--md-red-700: #d32f2f;
|
||
--md-red-800: #c62828;
|
||
--md-red-900: #b71c1c;
|
||
--md-red-A100: #ff8a80;
|
||
--md-red-A200: #ff5252;
|
||
--md-red-A400: #ff1744;
|
||
--md-red-A700: #d50000;
|
||
--md-pink-50: #fce4ec;
|
||
--md-pink-100: #f8bbd0;
|
||
--md-pink-200: #f48fb1;
|
||
--md-pink-300: #f06292;
|
||
--md-pink-400: #ec407a;
|
||
--md-pink-500: #e91e63;
|
||
--md-pink-600: #d81b60;
|
||
--md-pink-700: #c2185b;
|
||
--md-pink-800: #ad1457;
|
||
--md-pink-900: #880e4f;
|
||
--md-pink-A100: #ff80ab;
|
||
--md-pink-A200: #ff4081;
|
||
--md-pink-A400: #f50057;
|
||
--md-pink-A700: #c51162;
|
||
--md-purple-50: #f3e5f5;
|
||
--md-purple-100: #e1bee7;
|
||
--md-purple-200: #ce93d8;
|
||
--md-purple-300: #ba68c8;
|
||
--md-purple-400: #ab47bc;
|
||
--md-purple-500: #9c27b0;
|
||
--md-purple-600: #8e24aa;
|
||
--md-purple-700: #7b1fa2;
|
||
--md-purple-800: #6a1b9a;
|
||
--md-purple-900: #4a148c;
|
||
--md-purple-A100: #ea80fc;
|
||
--md-purple-A200: #e040fb;
|
||
--md-purple-A400: #d500f9;
|
||
--md-purple-A700: #a0f;
|
||
--md-deep-purple-50: #ede7f6;
|
||
--md-deep-purple-100: #d1c4e9;
|
||
--md-deep-purple-200: #b39ddb;
|
||
--md-deep-purple-300: #9575cd;
|
||
--md-deep-purple-400: #7e57c2;
|
||
--md-deep-purple-500: #673ab7;
|
||
--md-deep-purple-600: #5e35b1;
|
||
--md-deep-purple-700: #512da8;
|
||
--md-deep-purple-800: #4527a0;
|
||
--md-deep-purple-900: #311b92;
|
||
--md-deep-purple-A100: #b388ff;
|
||
--md-deep-purple-A200: #7c4dff;
|
||
--md-deep-purple-A400: #651fff;
|
||
--md-deep-purple-A700: #6200ea;
|
||
--md-indigo-50: #e8eaf6;
|
||
--md-indigo-100: #c5cae9;
|
||
--md-indigo-200: #9fa8da;
|
||
--md-indigo-300: #7986cb;
|
||
--md-indigo-400: #5c6bc0;
|
||
--md-indigo-500: #3f51b5;
|
||
--md-indigo-600: #3949ab;
|
||
--md-indigo-700: #303f9f;
|
||
--md-indigo-800: #283593;
|
||
--md-indigo-900: #1a237e;
|
||
--md-indigo-A100: #8c9eff;
|
||
--md-indigo-A200: #536dfe;
|
||
--md-indigo-A400: #3d5afe;
|
||
--md-indigo-A700: #304ffe;
|
||
--md-blue-50: #e3f2fd;
|
||
--md-blue-100: #bbdefb;
|
||
--md-blue-200: #90caf9;
|
||
--md-blue-300: #64b5f6;
|
||
--md-blue-400: #42a5f5;
|
||
--md-blue-500: #2196f3;
|
||
--md-blue-600: #1e88e5;
|
||
--md-blue-700: #1976d2;
|
||
--md-blue-800: #1565c0;
|
||
--md-blue-900: #0d47a1;
|
||
--md-blue-A100: #82b1ff;
|
||
--md-blue-A200: #448aff;
|
||
--md-blue-A400: #2979ff;
|
||
--md-blue-A700: #2962ff;
|
||
--md-light-blue-50: #e1f5fe;
|
||
--md-light-blue-100: #b3e5fc;
|
||
--md-light-blue-200: #81d4fa;
|
||
--md-light-blue-300: #4fc3f7;
|
||
--md-light-blue-400: #29b6f6;
|
||
--md-light-blue-500: #03a9f4;
|
||
--md-light-blue-600: #039be5;
|
||
--md-light-blue-700: #0288d1;
|
||
--md-light-blue-800: #0277bd;
|
||
--md-light-blue-900: #01579b;
|
||
--md-light-blue-A100: #80d8ff;
|
||
--md-light-blue-A200: #40c4ff;
|
||
--md-light-blue-A400: #00b0ff;
|
||
--md-light-blue-A700: #0091ea;
|
||
--md-cyan-50: #e0f7fa;
|
||
--md-cyan-100: #b2ebf2;
|
||
--md-cyan-200: #80deea;
|
||
--md-cyan-300: #4dd0e1;
|
||
--md-cyan-400: #26c6da;
|
||
--md-cyan-500: #00bcd4;
|
||
--md-cyan-600: #00acc1;
|
||
--md-cyan-700: #0097a7;
|
||
--md-cyan-800: #00838f;
|
||
--md-cyan-900: #006064;
|
||
--md-cyan-A100: #84ffff;
|
||
--md-cyan-A200: #18ffff;
|
||
--md-cyan-A400: #00e5ff;
|
||
--md-cyan-A700: #00b8d4;
|
||
--md-teal-50: #e0f2f1;
|
||
--md-teal-100: #b2dfdb;
|
||
--md-teal-200: #80cbc4;
|
||
--md-teal-300: #4db6ac;
|
||
--md-teal-400: #26a69a;
|
||
--md-teal-500: #009688;
|
||
--md-teal-600: #00897b;
|
||
--md-teal-700: #00796b;
|
||
--md-teal-800: #00695c;
|
||
--md-teal-900: #004d40;
|
||
--md-teal-A100: #a7ffeb;
|
||
--md-teal-A200: #64ffda;
|
||
--md-teal-A400: #1de9b6;
|
||
--md-teal-A700: #00bfa5;
|
||
--md-green-50: #e8f5e9;
|
||
--md-green-100: #c8e6c9;
|
||
--md-green-200: #a5d6a7;
|
||
--md-green-300: #81c784;
|
||
--md-green-400: #66bb6a;
|
||
--md-green-500: #4caf50;
|
||
--md-green-600: #43a047;
|
||
--md-green-700: #388e3c;
|
||
--md-green-800: #2e7d32;
|
||
--md-green-900: #1b5e20;
|
||
--md-green-A100: #b9f6ca;
|
||
--md-green-A200: #69f0ae;
|
||
--md-green-A400: #00e676;
|
||
--md-green-A700: #00c853;
|
||
--md-light-green-50: #f1f8e9;
|
||
--md-light-green-100: #dcedc8;
|
||
--md-light-green-200: #c5e1a5;
|
||
--md-light-green-300: #aed581;
|
||
--md-light-green-400: #9ccc65;
|
||
--md-light-green-500: #8bc34a;
|
||
--md-light-green-600: #7cb342;
|
||
--md-light-green-700: #689f38;
|
||
--md-light-green-800: #558b2f;
|
||
--md-light-green-900: #33691e;
|
||
--md-light-green-A100: #ccff90;
|
||
--md-light-green-A200: #b2ff59;
|
||
--md-light-green-A400: #76ff03;
|
||
--md-light-green-A700: #64dd17;
|
||
--md-lime-50: #f9fbe7;
|
||
--md-lime-100: #f0f4c3;
|
||
--md-lime-200: #e6ee9c;
|
||
--md-lime-300: #dce775;
|
||
--md-lime-400: #d4e157;
|
||
--md-lime-500: #cddc39;
|
||
--md-lime-600: #c0ca33;
|
||
--md-lime-700: #afb42b;
|
||
--md-lime-800: #9e9d24;
|
||
--md-lime-900: #827717;
|
||
--md-lime-A100: #f4ff81;
|
||
--md-lime-A200: #eeff41;
|
||
--md-lime-A400: #c6ff00;
|
||
--md-lime-A700: #aeea00;
|
||
--md-yellow-50: #fffde7;
|
||
--md-yellow-100: #fff9c4;
|
||
--md-yellow-200: #fff59d;
|
||
--md-yellow-300: #fff176;
|
||
--md-yellow-400: #ffee58;
|
||
--md-yellow-500: #ffeb3b;
|
||
--md-yellow-600: #fdd835;
|
||
--md-yellow-700: #fbc02d;
|
||
--md-yellow-800: #f9a825;
|
||
--md-yellow-900: #f57f17;
|
||
--md-yellow-A100: #ffff8d;
|
||
--md-yellow-A200: #ff0;
|
||
--md-yellow-A400: #ffea00;
|
||
--md-yellow-A700: #ffd600;
|
||
--md-amber-50: #fff8e1;
|
||
--md-amber-100: #ffecb3;
|
||
--md-amber-200: #ffe082;
|
||
--md-amber-300: #ffd54f;
|
||
--md-amber-400: #ffca28;
|
||
--md-amber-500: #ffc107;
|
||
--md-amber-600: #ffb300;
|
||
--md-amber-700: #ffa000;
|
||
--md-amber-800: #ff8f00;
|
||
--md-amber-900: #ff6f00;
|
||
--md-amber-A100: #ffe57f;
|
||
--md-amber-A200: #ffd740;
|
||
--md-amber-A400: #ffc400;
|
||
--md-amber-A700: #ffab00;
|
||
--md-orange-50: #fff3e0;
|
||
--md-orange-100: #ffe0b2;
|
||
--md-orange-200: #ffcc80;
|
||
--md-orange-300: #ffb74d;
|
||
--md-orange-400: #ffa726;
|
||
--md-orange-500: #ff9800;
|
||
--md-orange-600: #fb8c00;
|
||
--md-orange-700: #f57c00;
|
||
--md-orange-800: #ef6c00;
|
||
--md-orange-900: #e65100;
|
||
--md-orange-A100: #ffd180;
|
||
--md-orange-A200: #ffab40;
|
||
--md-orange-A400: #ff9100;
|
||
--md-orange-A700: #ff6d00;
|
||
--md-deep-orange-50: #fbe9e7;
|
||
--md-deep-orange-100: #ffccbc;
|
||
--md-deep-orange-200: #ffab91;
|
||
--md-deep-orange-300: #ff8a65;
|
||
--md-deep-orange-400: #ff7043;
|
||
--md-deep-orange-500: #ff5722;
|
||
--md-deep-orange-600: #f4511e;
|
||
--md-deep-orange-700: #e64a19;
|
||
--md-deep-orange-800: #d84315;
|
||
--md-deep-orange-900: #bf360c;
|
||
--md-deep-orange-A100: #ff9e80;
|
||
--md-deep-orange-A200: #ff6e40;
|
||
--md-deep-orange-A400: #ff3d00;
|
||
--md-deep-orange-A700: #dd2c00;
|
||
--md-brown-50: #efebe9;
|
||
--md-brown-100: #d7ccc8;
|
||
--md-brown-200: #bcaaa4;
|
||
--md-brown-300: #a1887f;
|
||
--md-brown-400: #8d6e63;
|
||
--md-brown-500: #795548;
|
||
--md-brown-600: #6d4c41;
|
||
--md-brown-700: #5d4037;
|
||
--md-brown-800: #4e342e;
|
||
--md-brown-900: #3e2723;
|
||
--md-grey-50: #fafafa;
|
||
--md-grey-100: #f5f5f5;
|
||
--md-grey-200: #eee;
|
||
--md-grey-300: #e0e0e0;
|
||
--md-grey-400: #bdbdbd;
|
||
--md-grey-500: #9e9e9e;
|
||
--md-grey-600: #757575;
|
||
--md-grey-700: #616161;
|
||
--md-grey-800: #424242;
|
||
--md-grey-900: #212121;
|
||
--md-blue-grey-50: #eceff1;
|
||
--md-blue-grey-100: #cfd8dc;
|
||
--md-blue-grey-200: #b0bec5;
|
||
--md-blue-grey-300: #90a4ae;
|
||
--md-blue-grey-400: #78909c;
|
||
--md-blue-grey-500: #607d8b;
|
||
--md-blue-grey-600: #546e7a;
|
||
--md-blue-grey-700: #455a64;
|
||
--md-blue-grey-800: #37474f;
|
||
--md-blue-grey-900: #263238;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedText
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
/* This is the padding value to fill the gaps between lines containing spans with background color. */
|
||
--jp-private-code-span-padding: calc(
|
||
(var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2
|
||
);
|
||
}
|
||
|
||
.jp-RenderedText {
|
||
text-align: left;
|
||
padding-left: var(--jp-code-padding);
|
||
line-height: var(--jp-code-line-height);
|
||
font-family: var(--jp-code-font-family);
|
||
}
|
||
|
||
.jp-RenderedText pre,
|
||
.jp-RenderedJavaScript pre,
|
||
.jp-RenderedHTMLCommon pre {
|
||
color: var(--jp-content-font-color1);
|
||
font-size: var(--jp-code-font-size);
|
||
border: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
}
|
||
|
||
.jp-RenderedText pre a:link {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedText pre a:hover {
|
||
text-decoration: underline;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedText pre a:visited {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
/* console foregrounds and backgrounds */
|
||
.jp-RenderedText pre .ansi-black-fg {
|
||
color: #3e424d;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-fg {
|
||
color: #e75c58;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-fg {
|
||
color: #00a250;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-fg {
|
||
color: #ddb62b;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-fg {
|
||
color: #208ffb;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-fg {
|
||
color: #d160c4;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-fg {
|
||
color: #60c6c8;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-fg {
|
||
color: #c5c1b4;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-bg {
|
||
background-color: #3e424d;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-bg {
|
||
background-color: #e75c58;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-bg {
|
||
background-color: #00a250;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-bg {
|
||
background-color: #ddb62b;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-bg {
|
||
background-color: #208ffb;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-bg {
|
||
background-color: #d160c4;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-bg {
|
||
background-color: #60c6c8;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-bg {
|
||
background-color: #c5c1b4;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-intense-fg {
|
||
color: #282c36;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-intense-fg {
|
||
color: #b22b31;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-intense-fg {
|
||
color: #007427;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-intense-fg {
|
||
color: #b27d12;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-intense-fg {
|
||
color: #0065ca;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-intense-fg {
|
||
color: #a03196;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-intense-fg {
|
||
color: #258f8f;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-intense-fg {
|
||
color: #a1a6b2;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-intense-bg {
|
||
background-color: #282c36;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-intense-bg {
|
||
background-color: #b22b31;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-intense-bg {
|
||
background-color: #007427;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-intense-bg {
|
||
background-color: #b27d12;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-intense-bg {
|
||
background-color: #0065ca;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-intense-bg {
|
||
background-color: #a03196;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-intense-bg {
|
||
background-color: #258f8f;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-intense-bg {
|
||
background-color: #a1a6b2;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-default-inverse-fg {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-default-inverse-bg {
|
||
background-color: var(--jp-inverse-layout-color0);
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-bold {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-underline {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] {
|
||
background: var(--jp-rendermime-error-background);
|
||
padding-top: var(--jp-code-padding);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedLatex
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-RenderedLatex {
|
||
color: var(--jp-content-font-color1);
|
||
font-size: var(--jp-content-font-size1);
|
||
line-height: var(--jp-content-line-height);
|
||
}
|
||
|
||
/* Left-justify outputs.*/
|
||
.jp-OutputArea-output.jp-RenderedLatex {
|
||
padding: var(--jp-code-padding);
|
||
text-align: left;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedHTML
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-RenderedHTMLCommon {
|
||
color: var(--jp-content-font-color1);
|
||
font-family: var(--jp-content-font-family);
|
||
font-size: var(--jp-content-font-size1);
|
||
line-height: var(--jp-content-line-height);
|
||
|
||
/* Give a bit more R padding on Markdown text to keep line lengths reasonable */
|
||
padding-right: 20px;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon em {
|
||
font-style: italic;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon strong {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon u {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:link {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:hover {
|
||
text-decoration: underline;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:visited {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
/* Headings */
|
||
|
||
.jp-RenderedHTMLCommon h1,
|
||
.jp-RenderedHTMLCommon h2,
|
||
.jp-RenderedHTMLCommon h3,
|
||
.jp-RenderedHTMLCommon h4,
|
||
.jp-RenderedHTMLCommon h5,
|
||
.jp-RenderedHTMLCommon h6 {
|
||
line-height: var(--jp-content-heading-line-height);
|
||
font-weight: var(--jp-content-heading-font-weight);
|
||
font-style: normal;
|
||
margin: var(--jp-content-heading-margin-top) 0
|
||
var(--jp-content-heading-margin-bottom) 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1:first-child,
|
||
.jp-RenderedHTMLCommon h2:first-child,
|
||
.jp-RenderedHTMLCommon h3:first-child,
|
||
.jp-RenderedHTMLCommon h4:first-child,
|
||
.jp-RenderedHTMLCommon h5:first-child,
|
||
.jp-RenderedHTMLCommon h6:first-child {
|
||
margin-top: calc(0.5 * var(--jp-content-heading-margin-top));
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1:last-child,
|
||
.jp-RenderedHTMLCommon h2:last-child,
|
||
.jp-RenderedHTMLCommon h3:last-child,
|
||
.jp-RenderedHTMLCommon h4:last-child,
|
||
.jp-RenderedHTMLCommon h5:last-child,
|
||
.jp-RenderedHTMLCommon h6:last-child {
|
||
margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom));
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1 {
|
||
font-size: var(--jp-content-font-size5);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h2 {
|
||
font-size: var(--jp-content-font-size4);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h3 {
|
||
font-size: var(--jp-content-font-size3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h4 {
|
||
font-size: var(--jp-content-font-size2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h5 {
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h6 {
|
||
font-size: var(--jp-content-font-size0);
|
||
}
|
||
|
||
/* Lists */
|
||
|
||
/* stylelint-disable selector-max-type, selector-max-compound-selectors */
|
||
|
||
.jp-RenderedHTMLCommon ul:not(.list-inline),
|
||
.jp-RenderedHTMLCommon ol:not(.list-inline) {
|
||
padding-left: 2em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul {
|
||
list-style: disc;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul {
|
||
list-style: square;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul ul {
|
||
list-style: circle;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol {
|
||
list-style: decimal;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol {
|
||
list-style: upper-alpha;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol {
|
||
list-style: lower-alpha;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol ol {
|
||
list-style: lower-roman;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol ol ol {
|
||
list-style: decimal;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol,
|
||
.jp-RenderedHTMLCommon ul {
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul,
|
||
.jp-RenderedHTMLCommon ul ol,
|
||
.jp-RenderedHTMLCommon ol ul,
|
||
.jp-RenderedHTMLCommon ol ol {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
/* stylelint-enable selector-max-type, selector-max-compound-selectors */
|
||
|
||
.jp-RenderedHTMLCommon hr {
|
||
color: var(--jp-border-color2);
|
||
background-color: var(--jp-border-color1);
|
||
margin-top: 1em;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon > pre {
|
||
margin: 1.5em 2em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon pre,
|
||
.jp-RenderedHTMLCommon code {
|
||
border: 0;
|
||
background-color: var(--jp-layout-color0);
|
||
color: var(--jp-content-font-color1);
|
||
font-family: var(--jp-code-font-family);
|
||
font-size: inherit;
|
||
line-height: var(--jp-code-line-height);
|
||
padding: 0;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon :not(pre) > code {
|
||
background-color: var(--jp-layout-color2);
|
||
padding: 1px 5px;
|
||
}
|
||
|
||
/* Tables */
|
||
|
||
.jp-RenderedHTMLCommon table {
|
||
border-collapse: collapse;
|
||
border-spacing: 0;
|
||
border: none;
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
table-layout: fixed;
|
||
margin-left: auto;
|
||
margin-bottom: 1em;
|
||
margin-right: auto;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon thead {
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
|
||
vertical-align: bottom;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon td,
|
||
.jp-RenderedHTMLCommon th,
|
||
.jp-RenderedHTMLCommon tr {
|
||
vertical-align: middle;
|
||
padding: 0.5em;
|
||
line-height: normal;
|
||
white-space: normal;
|
||
max-width: none;
|
||
border: none;
|
||
}
|
||
|
||
.jp-RenderedMarkdown.jp-RenderedHTMLCommon td,
|
||
.jp-RenderedMarkdown.jp-RenderedHTMLCommon th {
|
||
max-width: none;
|
||
}
|
||
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td,
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th,
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr {
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon th {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:nth-child(odd) {
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:nth-child(even) {
|
||
background: var(--jp-rendermime-table-row-background);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:hover {
|
||
background: var(--jp-rendermime-table-row-hover-background);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon p {
|
||
text-align: left;
|
||
margin: 0;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img {
|
||
-moz-force-broken-image-icon: 1;
|
||
}
|
||
|
||
/* Restrict to direct children as other images could be nested in other content. */
|
||
.jp-RenderedHTMLCommon > img {
|
||
display: block;
|
||
margin-left: 0;
|
||
margin-right: 0;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
/* Change color behind transparent images if they need it... */
|
||
[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background {
|
||
background-color: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background {
|
||
background-color: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img,
|
||
.jp-RenderedImage img,
|
||
.jp-RenderedHTMLCommon svg,
|
||
.jp-RenderedSVG svg {
|
||
max-width: 100%;
|
||
height: auto;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img.jp-mod-unconfined,
|
||
.jp-RenderedImage img.jp-mod-unconfined,
|
||
.jp-RenderedHTMLCommon svg.jp-mod-unconfined,
|
||
.jp-RenderedSVG svg.jp-mod-unconfined {
|
||
max-width: none;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert {
|
||
padding: var(--jp-notebook-padding);
|
||
border: var(--jp-border-width) solid transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info {
|
||
color: var(--jp-info-color0);
|
||
background-color: var(--jp-info-color3);
|
||
border-color: var(--jp-info-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info hr {
|
||
border-color: var(--jp-info-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-info > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning {
|
||
color: var(--jp-warn-color0);
|
||
background-color: var(--jp-warn-color3);
|
||
border-color: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning hr {
|
||
border-color: var(--jp-warn-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-warning > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success {
|
||
color: var(--jp-success-color0);
|
||
background-color: var(--jp-success-color3);
|
||
border-color: var(--jp-success-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success hr {
|
||
border-color: var(--jp-success-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-success > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger {
|
||
color: var(--jp-error-color0);
|
||
background-color: var(--jp-error-color3);
|
||
border-color: var(--jp-error-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger hr {
|
||
border-color: var(--jp-error-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-danger > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon blockquote {
|
||
margin: 1em 2em;
|
||
padding: 0 1em;
|
||
border-left: 5px solid var(--jp-border-color2);
|
||
}
|
||
|
||
a.jp-InternalAnchorLink {
|
||
visibility: hidden;
|
||
margin-left: 8px;
|
||
color: var(--md-blue-800);
|
||
}
|
||
|
||
h1:hover .jp-InternalAnchorLink,
|
||
h2:hover .jp-InternalAnchorLink,
|
||
h3:hover .jp-InternalAnchorLink,
|
||
h4:hover .jp-InternalAnchorLink,
|
||
h5:hover .jp-InternalAnchorLink,
|
||
h6:hover .jp-InternalAnchorLink {
|
||
visibility: visible;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon kbd {
|
||
background-color: var(--jp-rendermime-table-row-background);
|
||
border: 1px solid var(--jp-border-color0);
|
||
border-bottom-color: var(--jp-border-color2);
|
||
border-radius: 3px;
|
||
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||
display: inline-block;
|
||
font-size: var(--jp-ui-font-size0);
|
||
line-height: 1em;
|
||
padding: 0.2em 0.5em;
|
||
}
|
||
|
||
/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0.
|
||
* At the bottom of cells this is a bit too much as there is also spacing
|
||
* between cells. Going all the way to 0 gets too tight between markdown and
|
||
* code cells.
|
||
*/
|
||
.jp-RenderedHTMLCommon > *:last-child {
|
||
margin-bottom: 0.5em;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-cursor-backdrop {
|
||
position: fixed;
|
||
width: 200px;
|
||
height: 200px;
|
||
margin-top: -100px;
|
||
margin-left: -100px;
|
||
will-change: transform;
|
||
z-index: 100;
|
||
}
|
||
|
||
.lm-mod-drag-image {
|
||
will-change: transform;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-lineFormSearch {
|
||
padding: 4px 12px;
|
||
background-color: var(--jp-layout-color2);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
z-index: 2;
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
.jp-lineFormCaption {
|
||
font-size: var(--jp-ui-font-size0);
|
||
line-height: var(--jp-ui-font-size1);
|
||
margin-top: 4px;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-baseLineForm {
|
||
border: none;
|
||
border-radius: 0;
|
||
position: absolute;
|
||
background-size: 16px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
outline: none;
|
||
}
|
||
|
||
.jp-lineFormButtonContainer {
|
||
top: 4px;
|
||
right: 8px;
|
||
height: 24px;
|
||
padding: 0 12px;
|
||
width: 12px;
|
||
}
|
||
|
||
.jp-lineFormButtonIcon {
|
||
top: 0;
|
||
right: 0;
|
||
background-color: var(--jp-brand-color1);
|
||
height: 100%;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
padding: 4px 6px;
|
||
}
|
||
|
||
.jp-lineFormButton {
|
||
top: 0;
|
||
right: 0;
|
||
background-color: transparent;
|
||
height: 100%;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-lineFormWrapper {
|
||
overflow: hidden;
|
||
padding: 0 8px;
|
||
border: 1px solid var(--jp-border-color0);
|
||
background-color: var(--jp-input-active-background);
|
||
height: 22px;
|
||
}
|
||
|
||
.jp-lineFormWrapperFocusWithin {
|
||
border: var(--jp-border-width) solid var(--md-blue-500);
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-lineFormInput {
|
||
background: transparent;
|
||
width: 200px;
|
||
height: 100%;
|
||
border: none;
|
||
outline: none;
|
||
color: var(--jp-ui-font-color0);
|
||
line-height: 28px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-JSONEditor {
|
||
display: flex;
|
||
flex-direction: column;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-JSONEditor-host {
|
||
flex: 1 1 auto;
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
border-radius: 0;
|
||
background: var(--jp-layout-color0);
|
||
min-height: 50px;
|
||
padding: 1px;
|
||
}
|
||
|
||
.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host {
|
||
border-color: red;
|
||
outline-color: red;
|
||
}
|
||
|
||
.jp-JSONEditor-header {
|
||
display: flex;
|
||
flex: 1 0 auto;
|
||
padding: 0 0 0 12px;
|
||
}
|
||
|
||
.jp-JSONEditor-header label {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-JSONEditor-commitButton {
|
||
height: 16px;
|
||
width: 16px;
|
||
background-size: 18px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
}
|
||
|
||
.jp-JSONEditor-host.jp-mod-focused {
|
||
background-color: var(--jp-input-active-background);
|
||
border: 1px solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
}
|
||
|
||
.jp-Editor.jp-mod-dropTarget {
|
||
border: var(--jp-border-width) solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
.jp-DocumentSearch-input {
|
||
border: none;
|
||
outline: none;
|
||
color: var(--jp-ui-font-color0);
|
||
font-size: var(--jp-ui-font-size1);
|
||
background-color: var(--jp-layout-color0);
|
||
font-family: var(--jp-ui-font-family);
|
||
padding: 2px 1px;
|
||
resize: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay {
|
||
position: absolute;
|
||
background-color: var(--jp-toolbar-background);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
border-left: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
top: 0;
|
||
right: 0;
|
||
z-index: 7;
|
||
min-width: 405px;
|
||
padding: 2px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
|
||
--jp-private-document-search-button-height: 20px;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button {
|
||
background-color: var(--jp-toolbar-background);
|
||
outline: 0;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button:active {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay-row {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-bottom: 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-content {
|
||
display: inline-block;
|
||
cursor: pointer;
|
||
box-sizing: border-box;
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-content svg {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-wrapper {
|
||
border: var(--jp-border-width) solid var(--jp-border-color0);
|
||
display: flex;
|
||
background-color: var(--jp-layout-color0);
|
||
margin: 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-wrapper:focus-within {
|
||
border-color: var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper,
|
||
.jp-DocumentSearch-button-wrapper {
|
||
all: initial;
|
||
overflow: hidden;
|
||
display: inline-block;
|
||
border: none;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper {
|
||
width: 14px;
|
||
height: 14px;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-wrapper {
|
||
width: var(--jp-private-document-search-button-height);
|
||
height: var(--jp-private-document-search-button-height);
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper:focus,
|
||
.jp-DocumentSearch-button-wrapper:focus {
|
||
outline: var(--jp-border-width) solid
|
||
var(--jp-cell-editor-active-border-color);
|
||
outline-offset: -1px;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper,
|
||
.jp-DocumentSearch-button-wrapper,
|
||
.jp-DocumentSearch-button-content:focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-placeholder {
|
||
width: 5px;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button::before {
|
||
display: block;
|
||
padding-top: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-off {
|
||
opacity: var(--jp-search-toggle-off-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-off:hover {
|
||
opacity: var(--jp-search-toggle-hover-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-on {
|
||
opacity: var(--jp-search-toggle-on-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-index-counter {
|
||
padding-left: 10px;
|
||
padding-right: 10px;
|
||
user-select: none;
|
||
min-width: 35px;
|
||
display: inline-block;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-wrapper {
|
||
display: inline-block;
|
||
padding-right: 2px;
|
||
margin-left: auto;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.jp-DocumentSearch-spacer {
|
||
margin-left: auto;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-wrapper button {
|
||
outline: 0;
|
||
border: none;
|
||
width: var(--jp-private-document-search-button-height);
|
||
height: var(--jp-private-document-search-button-height);
|
||
vertical-align: middle;
|
||
margin: 1px 5px 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-button:active {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button {
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button-enabled {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button-enabled:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-search-options {
|
||
padding: 0 8px;
|
||
margin-left: 3px;
|
||
width: 100%;
|
||
display: grid;
|
||
justify-content: start;
|
||
grid-template-columns: 1fr 1fr;
|
||
align-items: center;
|
||
justify-items: stretch;
|
||
}
|
||
|
||
.jp-DocumentSearch-search-filter-disabled {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-search-filter {
|
||
display: flex;
|
||
align-items: center;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-regex-error {
|
||
color: var(--jp-error-color0);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button-wrapper {
|
||
overflow: hidden;
|
||
display: inline-block;
|
||
box-sizing: border-box;
|
||
border: var(--jp-border-width) solid var(--jp-border-color0);
|
||
margin: auto 2px;
|
||
padding: 1px 4px;
|
||
height: calc(var(--jp-private-document-search-button-height) + 2px);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button-wrapper:focus {
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button {
|
||
display: inline-block;
|
||
text-align: center;
|
||
cursor: pointer;
|
||
box-sizing: border-box;
|
||
color: var(--jp-ui-font-color1);
|
||
|
||
/* height - 2 * (padding of wrapper) */
|
||
line-height: calc(var(--jp-private-document-search-button-height) - 2px);
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button:focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-wrapper-class {
|
||
margin-left: 14px;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-toggle {
|
||
border: none;
|
||
background-color: var(--jp-toolbar-background);
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-toggle:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.cm-editor {
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
font-family: var(--jp-code-font-family);
|
||
border: 0;
|
||
border-radius: 0;
|
||
height: auto;
|
||
|
||
/* Changed to auto to autogrow */
|
||
}
|
||
|
||
.cm-editor pre {
|
||
padding: 0 var(--jp-code-padding);
|
||
}
|
||
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-dialog {
|
||
background-color: var(--jp-layout-color0);
|
||
color: var(--jp-content-font-color1);
|
||
}
|
||
|
||
.jp-CodeMirrorEditor {
|
||
cursor: text;
|
||
}
|
||
|
||
/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */
|
||
@media screen and (min-width: 2138px) and (max-width: 4319px) {
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
|
||
border-left: var(--jp-code-cursor-width1) solid
|
||
var(--jp-editor-cursor-color);
|
||
}
|
||
}
|
||
|
||
/* When zoomed out less than 33% */
|
||
@media screen and (min-width: 4320px) {
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
|
||
border-left: var(--jp-code-cursor-width2) solid
|
||
var(--jp-editor-cursor-color);
|
||
}
|
||
}
|
||
|
||
.cm-editor.jp-mod-readOnly .cm-cursor {
|
||
display: none;
|
||
}
|
||
|
||
.jp-CollaboratorCursor {
|
||
border-left: 5px solid transparent;
|
||
border-right: 5px solid transparent;
|
||
border-top: none;
|
||
border-bottom: 3px solid;
|
||
background-clip: content-box;
|
||
margin-left: -5px;
|
||
margin-right: -5px;
|
||
}
|
||
|
||
.cm-searching,
|
||
.cm-searching span {
|
||
/* `.cm-searching span`: we need to override syntax highlighting */
|
||
background-color: var(--jp-search-unselected-match-background-color);
|
||
color: var(--jp-search-unselected-match-color);
|
||
}
|
||
|
||
.cm-searching::selection,
|
||
.cm-searching span::selection {
|
||
background-color: var(--jp-search-unselected-match-background-color);
|
||
color: var(--jp-search-unselected-match-color);
|
||
}
|
||
|
||
.jp-current-match > .cm-searching,
|
||
.jp-current-match > .cm-searching span,
|
||
.cm-searching > .jp-current-match,
|
||
.cm-searching > .jp-current-match span {
|
||
background-color: var(--jp-search-selected-match-background-color);
|
||
color: var(--jp-search-selected-match-color);
|
||
}
|
||
|
||
.jp-current-match > .cm-searching::selection,
|
||
.cm-searching > .jp-current-match::selection,
|
||
.jp-current-match > .cm-searching span::selection {
|
||
background-color: var(--jp-search-selected-match-background-color);
|
||
color: var(--jp-search-selected-match-color);
|
||
}
|
||
|
||
.cm-trailingspace {
|
||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAsElEQVQIHQGlAFr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+r3zKmT0/+pk9P/7+r3zAAAAAAAAAAABAAAAAAAAAAA6OPzM+/q9wAAAAAA6OPzMwAAAAAAAAAAAgAAAAAAAAAAGR8NiRQaCgAZIA0AGR8NiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQyoYJ/SY80UAAAAASUVORK5CYII=);
|
||
background-position: center left;
|
||
background-repeat: repeat-x;
|
||
}
|
||
|
||
.jp-CollaboratorCursor-hover {
|
||
position: absolute;
|
||
z-index: 1;
|
||
transform: translateX(-50%);
|
||
color: white;
|
||
border-radius: 3px;
|
||
padding-left: 4px;
|
||
padding-right: 4px;
|
||
padding-top: 1px;
|
||
padding-bottom: 1px;
|
||
text-align: center;
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.jp-CodeMirror-ruler {
|
||
border-left: 1px dashed var(--jp-border-color2);
|
||
}
|
||
|
||
/* Styles for shared cursors (remote cursor locations and selected ranges) */
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret {
|
||
position: relative;
|
||
border-left: 1px solid black;
|
||
margin-left: -1px;
|
||
margin-right: -1px;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret > .cm-ySelectionInfo {
|
||
white-space: nowrap;
|
||
position: absolute;
|
||
top: -1.15em;
|
||
padding-bottom: 0.05em;
|
||
left: -1px;
|
||
font-size: 0.95em;
|
||
font-family: var(--jp-ui-font-family);
|
||
font-weight: bold;
|
||
line-height: normal;
|
||
user-select: none;
|
||
color: white;
|
||
padding-left: 2px;
|
||
padding-right: 2px;
|
||
z-index: 101;
|
||
transition: opacity 0.3s ease-in-out;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionInfo {
|
||
transition-delay: 0.7s;
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret:hover > .cm-ySelectionInfo {
|
||
opacity: 1;
|
||
transition-delay: 0s;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MimeDocument {
|
||
outline: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-filebrowser-button-height: 28px;
|
||
--jp-private-filebrowser-button-width: 48px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileBrowser .jp-SidePanel-content {
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.jp-FileBrowser-toolbar.jp-Toolbar {
|
||
flex-wrap: wrap;
|
||
row-gap: 12px;
|
||
border-bottom: none;
|
||
height: auto;
|
||
margin: 8px 12px 0;
|
||
box-shadow: none;
|
||
padding: 0;
|
||
justify-content: flex-start;
|
||
}
|
||
|
||
.jp-FileBrowser-Panel {
|
||
flex: 1 1 auto;
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.jp-BreadCrumbs {
|
||
flex: 0 0 auto;
|
||
margin: 8px 12px;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item {
|
||
margin: 0 2px;
|
||
padding: 0 2px;
|
||
border-radius: var(--jp-border-radius);
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-BreadCrumbs-item:first-child {
|
||
margin-left: 0;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item.jp-mod-dropTarget {
|
||
background-color: var(--jp-brand-color2);
|
||
opacity: 0.7;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Buttons
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileBrowser-toolbar > .jp-Toolbar-item {
|
||
flex: 0 0 auto;
|
||
padding-left: 0;
|
||
padding-right: 2px;
|
||
align-items: center;
|
||
height: unset;
|
||
}
|
||
|
||
.jp-FileBrowser-toolbar > .jp-Toolbar-item .jp-ToolbarButtonComponent {
|
||
width: 40px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Other styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileDialog.jp-mod-conflict input {
|
||
color: var(--jp-error-color1);
|
||
}
|
||
|
||
.jp-FileDialog .jp-new-name-title {
|
||
margin-top: 12px;
|
||
}
|
||
|
||
.jp-LastModified-hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FileSize-hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FileBrowser .lm-AccordionPanel > h3:first-child {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| DirListing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-DirListing {
|
||
flex: 1 1 auto;
|
||
display: flex;
|
||
flex-direction: column;
|
||
outline: 0;
|
||
}
|
||
|
||
.jp-DirListing-header {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
overflow: hidden;
|
||
border-top: var(--jp-border-width) solid var(--jp-border-color2);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
z-index: 2;
|
||
}
|
||
|
||
.jp-DirListing-headerItem {
|
||
padding: 4px 12px 2px;
|
||
font-weight: 500;
|
||
}
|
||
|
||
.jp-DirListing-headerItem:hover {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-name {
|
||
flex: 1 0 84px;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-modified {
|
||
flex: 0 0 112px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-filesize {
|
||
flex: 0 0 75px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-id-narrow {
|
||
display: none;
|
||
flex: 0 0 5px;
|
||
padding: 4px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
color: var(--jp-border-color2);
|
||
}
|
||
|
||
.jp-DirListing-narrow .jp-id-narrow {
|
||
display: block;
|
||
}
|
||
|
||
.jp-DirListing-narrow .jp-id-modified,
|
||
.jp-DirListing-narrow .jp-DirListing-itemModified {
|
||
display: none;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-mod-selected {
|
||
font-weight: 600;
|
||
}
|
||
|
||
/* increase specificity to override bundled default */
|
||
.jp-DirListing-content {
|
||
flex: 1 1 auto;
|
||
margin: 0;
|
||
padding: 0;
|
||
list-style-type: none;
|
||
overflow: auto;
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-content mark {
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-DirListing-content .jp-DirListing-item.jp-mod-selected mark {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
/* Style the directory listing content when a user drops a file to upload */
|
||
.jp-DirListing.jp-mod-native-drop .jp-DirListing-content {
|
||
outline: 5px dashed rgba(128, 128, 128, 0.5);
|
||
outline-offset: -10px;
|
||
cursor: copy;
|
||
}
|
||
|
||
.jp-DirListing-item {
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
padding: 4px 12px;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DirListing-checkboxWrapper {
|
||
/* Increases hit area of checkbox. */
|
||
padding: 4px;
|
||
}
|
||
|
||
.jp-DirListing-header
|
||
.jp-DirListing-checkboxWrapper
|
||
+ .jp-DirListing-headerItem {
|
||
padding-left: 4px;
|
||
}
|
||
|
||
.jp-DirListing-content .jp-DirListing-checkboxWrapper {
|
||
position: relative;
|
||
left: -4px;
|
||
margin: -4px 0 -4px -8px;
|
||
}
|
||
|
||
.jp-DirListing-checkboxWrapper.jp-mod-visible {
|
||
visibility: visible;
|
||
}
|
||
|
||
/* For devices that support hovering, hide checkboxes until hovered, selected...
|
||
*/
|
||
@media (hover: hover) {
|
||
.jp-DirListing-checkboxWrapper {
|
||
visibility: hidden;
|
||
}
|
||
|
||
.jp-DirListing-item:hover .jp-DirListing-checkboxWrapper,
|
||
.jp-DirListing-item.jp-mod-selected .jp-DirListing-checkboxWrapper {
|
||
visibility: visible;
|
||
}
|
||
}
|
||
|
||
.jp-DirListing-item[data-is-dot] {
|
||
opacity: 75%;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-dropTarget {
|
||
background: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-DirListing-item:hover:not(.jp-mod-selected) {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DirListing-itemIcon {
|
||
flex: 0 0 20px;
|
||
margin-right: 4px;
|
||
}
|
||
|
||
.jp-DirListing-itemText {
|
||
flex: 1 0 64px;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DirListing-itemText:focus {
|
||
outline-width: 2px;
|
||
outline-color: var(--jp-inverse-layout-color1);
|
||
outline-style: solid;
|
||
outline-offset: 1px;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected .jp-DirListing-itemText:focus {
|
||
outline-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-itemModified {
|
||
flex: 0 0 125px;
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-itemFileSize {
|
||
flex: 0 0 90px;
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-editor {
|
||
flex: 1 0 64px;
|
||
outline: none;
|
||
border: none;
|
||
color: var(--jp-ui-font-color1);
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon::before {
|
||
color: var(--jp-success-color1);
|
||
content: '\25CF';
|
||
font-size: 8px;
|
||
position: absolute;
|
||
left: -8px;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-running.jp-mod-selected
|
||
.jp-DirListing-itemIcon::before {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.lm-mod-drag-image,
|
||
.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image {
|
||
font-size: var(--jp-ui-font-size1);
|
||
padding-left: 4px;
|
||
margin-left: 4px;
|
||
width: 160px;
|
||
background-color: var(--jp-ui-inverse-font-color2);
|
||
box-shadow: var(--jp-elevation-z2);
|
||
border-radius: 0;
|
||
color: var(--jp-ui-font-color1);
|
||
transform: translateX(-40%) translateY(-58%);
|
||
}
|
||
|
||
.jp-Document {
|
||
min-width: 120px;
|
||
min-height: 120px;
|
||
outline: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Main OutputArea
|
||
| OutputArea has a list of Outputs
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-OutputArea {
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-OutputArea-child {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-OutputPrompt {
|
||
width: var(--jp-cell-prompt-width);
|
||
color: var(--jp-cell-outprompt-font-color);
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
padding: var(--jp-code-padding);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
opacity: var(--jp-cell-prompt-opacity);
|
||
|
||
/* Right align prompt text, don't wrap to handle large prompt numbers */
|
||
text-align: right;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
|
||
/* Disable text selection */
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-OutputArea-prompt {
|
||
display: table-cell;
|
||
vertical-align: top;
|
||
}
|
||
|
||
.jp-OutputArea-output {
|
||
display: table-cell;
|
||
width: 100%;
|
||
height: auto;
|
||
overflow: auto;
|
||
user-select: text;
|
||
-moz-user-select: text;
|
||
-webkit-user-select: text;
|
||
-ms-user-select: text;
|
||
}
|
||
|
||
.jp-OutputArea .jp-RenderedText {
|
||
padding-left: 1ch;
|
||
}
|
||
|
||
/**
|
||
* Prompt overlay.
|
||
*/
|
||
|
||
.jp-OutputArea-promptOverlay {
|
||
position: absolute;
|
||
top: 0;
|
||
width: var(--jp-cell-prompt-width);
|
||
height: 100%;
|
||
opacity: 0.5;
|
||
}
|
||
|
||
.jp-OutputArea-promptOverlay:hover {
|
||
background: var(--jp-layout-color2);
|
||
box-shadow: inset 0 0 1px var(--jp-inverse-layout-color0);
|
||
cursor: zoom-out;
|
||
}
|
||
|
||
.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay:hover {
|
||
cursor: zoom-in;
|
||
}
|
||
|
||
/**
|
||
* Isolated output.
|
||
*/
|
||
.jp-OutputArea-output.jp-mod-isolated {
|
||
width: 100%;
|
||
display: block;
|
||
}
|
||
|
||
/*
|
||
When drag events occur, `lm-mod-override-cursor` is added to the body.
|
||
Because iframes steal all cursor events, the following two rules are necessary
|
||
to suppress pointer events while resize drags are occurring. There may be a
|
||
better solution to this problem.
|
||
*/
|
||
body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated {
|
||
position: relative;
|
||
}
|
||
|
||
body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
background: transparent;
|
||
}
|
||
|
||
/* pre */
|
||
|
||
.jp-OutputArea-output pre {
|
||
border: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
overflow-x: auto;
|
||
overflow-y: auto;
|
||
word-break: break-all;
|
||
word-wrap: break-word;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
/* tables */
|
||
|
||
.jp-OutputArea-output.jp-RenderedHTMLCommon table {
|
||
margin-left: 0;
|
||
margin-right: 0;
|
||
}
|
||
|
||
/* description lists */
|
||
|
||
.jp-OutputArea-output dl,
|
||
.jp-OutputArea-output dt,
|
||
.jp-OutputArea-output dd {
|
||
display: block;
|
||
}
|
||
|
||
.jp-OutputArea-output dl {
|
||
width: 100%;
|
||
overflow: hidden;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-OutputArea-output dt {
|
||
font-weight: bold;
|
||
float: left;
|
||
width: 20%;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-OutputArea-output dd {
|
||
float: left;
|
||
width: 80%;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-TrimmedOutputs pre {
|
||
background: var(--jp-layout-color3);
|
||
font-size: calc(var(--jp-code-font-size) * 1.4);
|
||
text-align: center;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
/* Hide the gutter in case of
|
||
* - nested output areas (e.g. in the case of output widgets)
|
||
* - mirrored output areas
|
||
*/
|
||
.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt {
|
||
display: none;
|
||
}
|
||
|
||
/* Hide empty lines in the output area, for instance due to cleared widgets */
|
||
.jp-OutputArea-prompt:empty {
|
||
padding: 0;
|
||
border: 0;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| executeResult is added to any Output-result for the display of the object
|
||
| returned by a cell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-OutputArea-output.jp-OutputArea-executeResult {
|
||
margin-left: 0;
|
||
width: 100%;
|
||
}
|
||
|
||
/* Text output with the Out[] prompt needs a top padding to match the
|
||
* alignment of the Out[] prompt itself.
|
||
*/
|
||
.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output {
|
||
padding-top: var(--jp-code-padding);
|
||
border-top: var(--jp-border-width) solid transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| The Stdin output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Stdin-prompt {
|
||
color: var(--jp-content-font-color0);
|
||
padding-right: var(--jp-code-padding);
|
||
vertical-align: baseline;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-Stdin-input {
|
||
font-family: var(--jp-code-font-family);
|
||
font-size: inherit;
|
||
color: inherit;
|
||
background-color: inherit;
|
||
width: 42%;
|
||
min-width: 200px;
|
||
|
||
/* make sure input baseline aligns with prompt */
|
||
vertical-align: baseline;
|
||
|
||
/* padding + margin = 0.5em between prompt and cursor */
|
||
padding: 0 0.25em;
|
||
margin: 0 0.25em;
|
||
flex: 0 0 70%;
|
||
}
|
||
|
||
.jp-Stdin-input::placeholder {
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-Stdin-input:focus {
|
||
box-shadow: none;
|
||
}
|
||
|
||
.jp-Stdin-input:focus::placeholder {
|
||
opacity: 1;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Output Area View
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-LinkedOutputView .jp-OutputArea {
|
||
height: 100%;
|
||
display: block;
|
||
}
|
||
|
||
.jp-LinkedOutputView .jp-OutputArea-output:only-child {
|
||
height: 100%;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
@media print {
|
||
.jp-OutputArea-child {
|
||
break-inside: avoid-page;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Mobile
|
||
|----------------------------------------------------------------------------*/
|
||
@media only screen and (max-width: 760px) {
|
||
.jp-OutputPrompt {
|
||
display: table-row;
|
||
text-align: left;
|
||
}
|
||
|
||
.jp-OutputArea-child .jp-OutputArea-output {
|
||
display: table-row;
|
||
margin-left: var(--jp-notebook-padding);
|
||
}
|
||
}
|
||
|
||
/* Trimmed outputs warning */
|
||
.jp-TrimmedOutputs > a {
|
||
margin: 10px;
|
||
text-decoration: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-TrimmedOutputs > a:hover {
|
||
text-decoration: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Table of Contents
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-toc-active-width: 4px;
|
||
}
|
||
|
||
.jp-TableOfContents {
|
||
display: flex;
|
||
flex-direction: column;
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholder {
|
||
text-align: center;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholderContent {
|
||
color: var(--jp-content-font-color2);
|
||
padding: 8px;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholderContent > h3 {
|
||
margin-bottom: var(--jp-content-heading-margin-bottom);
|
||
}
|
||
|
||
.jp-TableOfContents .jp-SidePanel-content {
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-TableOfContents-tree {
|
||
margin: 4px;
|
||
}
|
||
|
||
.jp-TableOfContents ol {
|
||
list-style-type: none;
|
||
}
|
||
|
||
/* stylelint-disable-next-line selector-max-type */
|
||
.jp-TableOfContents li > ol {
|
||
/* Align left border with triangle icon center */
|
||
padding-left: 11px;
|
||
}
|
||
|
||
.jp-TableOfContents-content {
|
||
/* left margin for the active heading indicator */
|
||
margin: 0 0 0 var(--jp-private-toc-active-width);
|
||
padding: 0;
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-tocItem {
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-tocItem-heading {
|
||
display: flex;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-tocItem-heading:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-tocItem-content {
|
||
display: block;
|
||
padding: 4px 0;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
.jp-tocItem-collapser {
|
||
height: 20px;
|
||
margin: 2px 2px 0;
|
||
padding: 0;
|
||
background: none;
|
||
border: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-tocItem-collapser:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
/* Active heading indicator */
|
||
|
||
.jp-tocItem-heading::before {
|
||
content: ' ';
|
||
background: transparent;
|
||
width: var(--jp-private-toc-active-width);
|
||
height: 24px;
|
||
position: absolute;
|
||
left: 0;
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-tocItem-heading.jp-tocItem-active::before {
|
||
background-color: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-tocItem-heading:hover.jp-tocItem-active::before {
|
||
background: var(--jp-brand-color0);
|
||
opacity: 1;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Collapser {
|
||
flex: 0 0 var(--jp-cell-collapser-width);
|
||
padding: 0;
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
opacity: 1;
|
||
}
|
||
|
||
.jp-Collapser-child {
|
||
display: block;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
|
||
/* height: 100% doesn't work because the height of its parent is computed from content */
|
||
position: absolute;
|
||
top: 0;
|
||
bottom: 0;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
Hiding collapsers in print mode.
|
||
|
||
Note: input and output wrappers have "display: block" propery in print mode.
|
||
*/
|
||
|
||
@media print {
|
||
.jp-Collapser {
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Header/Footer
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Hidden by zero height by default */
|
||
.jp-CellHeader,
|
||
.jp-CellFooter {
|
||
height: 0;
|
||
width: 100%;
|
||
padding: 0;
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Input
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* All input areas */
|
||
.jp-InputArea {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-InputArea-editor {
|
||
display: table-cell;
|
||
overflow: hidden;
|
||
vertical-align: top;
|
||
|
||
/* This is the non-active, default styling */
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
border-radius: 0;
|
||
background: var(--jp-cell-editor-background);
|
||
}
|
||
|
||
.jp-InputPrompt {
|
||
display: table-cell;
|
||
vertical-align: top;
|
||
width: var(--jp-cell-prompt-width);
|
||
color: var(--jp-cell-inprompt-font-color);
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
padding: var(--jp-code-padding);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
opacity: var(--jp-cell-prompt-opacity);
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
|
||
/* Right align prompt text, don't wrap to handle large prompt numbers */
|
||
text-align: right;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
|
||
/* Disable text selection */
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Mobile
|
||
|----------------------------------------------------------------------------*/
|
||
@media only screen and (max-width: 760px) {
|
||
.jp-InputArea-editor {
|
||
display: table-row;
|
||
margin-left: var(--jp-notebook-padding);
|
||
}
|
||
|
||
.jp-InputPrompt {
|
||
display: table-row;
|
||
text-align: left;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Placeholder
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Placeholder {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Placeholder-prompt {
|
||
display: table-cell;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-Placeholder-content {
|
||
display: table-cell;
|
||
padding: 4px 6px;
|
||
border: 1px solid transparent;
|
||
border-radius: 0;
|
||
background: none;
|
||
box-sizing: border-box;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-Placeholder-contentContainer {
|
||
display: flex;
|
||
}
|
||
|
||
.jp-Placeholder-content:hover,
|
||
.jp-InputPlaceholder > .jp-Placeholder-content:hover {
|
||
border-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-Placeholder-content .jp-MoreHorizIcon {
|
||
width: 32px;
|
||
height: 16px;
|
||
border: 1px solid transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-Placeholder-content .jp-MoreHorizIcon:hover {
|
||
border: 1px solid var(--jp-border-color1);
|
||
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);
|
||
background-color: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-PlaceholderText {
|
||
white-space: nowrap;
|
||
overflow-x: hidden;
|
||
color: var(--jp-inverse-layout-color3);
|
||
font-family: var(--jp-code-font-family);
|
||
}
|
||
|
||
.jp-InputPlaceholder > .jp-Placeholder-content {
|
||
border-color: var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Private CSS variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-cell-scrolling-output-offset: 5px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Cell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell {
|
||
padding: var(--jp-cell-padding);
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Common input/output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell-inputWrapper,
|
||
.jp-Cell-outputWrapper {
|
||
display: flex;
|
||
flex-direction: row;
|
||
padding: 0;
|
||
margin: 0;
|
||
|
||
/* Added to reveal the box-shadow on the input and output collapsers. */
|
||
overflow: visible;
|
||
}
|
||
|
||
/* Only input/output areas inside cells */
|
||
.jp-Cell-inputArea,
|
||
.jp-Cell-outputArea {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Collapser
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Make the output collapser disappear when there is not output, but do so
|
||
* in a manner that leaves it in the layout and preserves its width.
|
||
*/
|
||
.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser {
|
||
border: none !important;
|
||
background: transparent !important;
|
||
}
|
||
|
||
.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser {
|
||
min-height: var(--jp-cell-collapser-min-height);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Put a space between input and output when there IS output */
|
||
.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper {
|
||
margin-top: 5px;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea {
|
||
overflow-y: auto;
|
||
max-height: 24em;
|
||
margin-left: var(--jp-private-cell-scrolling-output-offset);
|
||
resize: vertical;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea[style*='height'] {
|
||
max-height: unset;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea::after {
|
||
content: ' ';
|
||
box-shadow: inset 0 0 6px 2px rgb(0 0 0 / 30%);
|
||
width: 100%;
|
||
height: 100%;
|
||
position: sticky;
|
||
bottom: 0;
|
||
top: 0;
|
||
margin-top: -50%;
|
||
float: left;
|
||
display: block;
|
||
pointer-events: none;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-child {
|
||
padding-top: 6px;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt {
|
||
width: calc(
|
||
var(--jp-cell-prompt-width) - var(--jp-private-cell-scrolling-output-offset)
|
||
);
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay {
|
||
left: calc(-1 * var(--jp-private-cell-scrolling-output-offset));
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| CodeCell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| MarkdownCell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MarkdownOutput {
|
||
display: table-cell;
|
||
width: 100%;
|
||
margin-top: 0;
|
||
margin-bottom: 0;
|
||
padding-left: var(--jp-code-padding);
|
||
}
|
||
|
||
.jp-MarkdownOutput.jp-RenderedHTMLCommon {
|
||
overflow: auto;
|
||
}
|
||
|
||
/* collapseHeadingButton (show always if hiddenCellsButton is _not_ shown) */
|
||
.jp-collapseHeadingButton {
|
||
display: flex;
|
||
min-height: var(--jp-cell-collapser-min-height);
|
||
font-size: var(--jp-code-font-size);
|
||
position: absolute;
|
||
background-color: transparent;
|
||
background-size: 25px;
|
||
background-repeat: no-repeat;
|
||
background-position-x: center;
|
||
background-position-y: top;
|
||
background-image: var(--jp-icon-caret-down);
|
||
right: 0;
|
||
top: 0;
|
||
bottom: 0;
|
||
}
|
||
|
||
.jp-collapseHeadingButton.jp-mod-collapsed {
|
||
background-image: var(--jp-icon-caret-right);
|
||
}
|
||
|
||
/*
|
||
set the container font size to match that of content
|
||
so that the nested collapse buttons have the right size
|
||
*/
|
||
.jp-MarkdownCell .jp-InputPrompt {
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
/*
|
||
Align collapseHeadingButton with cell top header
|
||
The font sizes are identical to the ones in packages/rendermime/style/base.css
|
||
*/
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='1'] {
|
||
font-size: var(--jp-content-font-size5);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size5));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='2'] {
|
||
font-size: var(--jp-content-font-size4);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size4));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='3'] {
|
||
font-size: var(--jp-content-font-size3);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size3));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='4'] {
|
||
font-size: var(--jp-content-font-size2);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size2));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='5'] {
|
||
font-size: var(--jp-content-font-size1);
|
||
background-position-y: top;
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='6'] {
|
||
font-size: var(--jp-content-font-size0);
|
||
background-position-y: top;
|
||
}
|
||
|
||
/* collapseHeadingButton (show only on (hover,active) if hiddenCellsButton is shown) */
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-collapseHeadingButton {
|
||
display: none;
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton
|
||
:is(.jp-MarkdownCell:hover, .jp-mod-active)
|
||
.jp-collapseHeadingButton {
|
||
display: flex;
|
||
}
|
||
|
||
/* showHiddenCellsButton (only show if jp-mod-showHiddenCellsButton is set, which
|
||
is a consequence of the showHiddenCellsButton option in Notebook Settings)*/
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton {
|
||
margin-left: calc(var(--jp-cell-prompt-width) + 2 * var(--jp-code-padding));
|
||
margin-top: var(--jp-code-padding);
|
||
border: 1px solid var(--jp-border-color2);
|
||
background-color: var(--jp-border-color3) !important;
|
||
color: var(--jp-content-font-color0) !important;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton:hover {
|
||
background-color: var(--jp-border-color2) !important;
|
||
}
|
||
|
||
.jp-showHiddenCellsButton {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
Using block instead of flex to allow the use of the break-inside CSS property for
|
||
cell outputs.
|
||
*/
|
||
|
||
@media print {
|
||
.jp-Cell-inputWrapper,
|
||
.jp-Cell-outputWrapper {
|
||
display: block;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-notebook-toolbar-padding: 2px 5px 2px 2px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-NotebookPanel-toolbar {
|
||
padding: var(--jp-notebook-toolbar-padding);
|
||
|
||
/* disable paint containment from lumino 2.0 default strict CSS containment */
|
||
contain: style size !important;
|
||
}
|
||
|
||
.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused {
|
||
border: none;
|
||
box-shadow: none;
|
||
}
|
||
|
||
.jp-Notebook-toolbarCellTypeDropdown select {
|
||
height: 24px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 14px;
|
||
border-radius: 0;
|
||
display: block;
|
||
}
|
||
|
||
.jp-Notebook-toolbarCellTypeDropdown span {
|
||
top: 5px !important;
|
||
}
|
||
|
||
.jp-Toolbar-responsive-popup {
|
||
position: absolute;
|
||
height: fit-content;
|
||
display: flex;
|
||
flex-direction: row;
|
||
flex-wrap: wrap;
|
||
justify-content: flex-end;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
background: var(--jp-toolbar-background);
|
||
min-height: var(--jp-toolbar-micro-height);
|
||
padding: var(--jp-notebook-toolbar-padding);
|
||
z-index: 1;
|
||
right: 0;
|
||
top: 0;
|
||
}
|
||
|
||
.jp-Toolbar > .jp-Toolbar-responsive-opener {
|
||
margin-left: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Notebook-ExecutionIndicator {
|
||
position: relative;
|
||
display: inline-block;
|
||
height: 100%;
|
||
z-index: 9997;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip {
|
||
visibility: hidden;
|
||
height: auto;
|
||
width: max-content;
|
||
width: -moz-max-content;
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
text-align: justify;
|
||
border-radius: 6px;
|
||
padding: 0 5px;
|
||
position: fixed;
|
||
display: table;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.up {
|
||
transform: translateX(-50%) translateY(-100%) translateY(-32px);
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.down {
|
||
transform: translateX(calc(-100% + 16px)) translateY(5px);
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator:hover .jp-Notebook-ExecutionIndicator-tooltip {
|
||
visibility: visible;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator span {
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
color: var(--jp-ui-font-color1);
|
||
line-height: 24px;
|
||
display: block;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-progress-bar {
|
||
display: flex;
|
||
justify-content: center;
|
||
height: 100%;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*
|
||
* Execution indicator
|
||
*/
|
||
.jp-tocItem-content::after {
|
||
content: '';
|
||
|
||
/* Must be identical to form a circle */
|
||
width: 12px;
|
||
height: 12px;
|
||
background: none;
|
||
border: none;
|
||
position: absolute;
|
||
right: 0;
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='0']::after {
|
||
border-radius: 50%;
|
||
border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
|
||
background: none;
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='1']::after {
|
||
border-radius: 50%;
|
||
border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
|
||
background-color: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='0'],
|
||
.jp-tocItem-content[data-running='1'] {
|
||
margin-right: 12px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-Notebook-footer {
|
||
height: 27px;
|
||
margin-left: calc(
|
||
var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
|
||
var(--jp-cell-padding)
|
||
);
|
||
width: calc(
|
||
100% -
|
||
(
|
||
var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
|
||
var(--jp-cell-padding) + var(--jp-cell-padding)
|
||
)
|
||
);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
color: var(--jp-ui-font-color3);
|
||
margin-top: 6px;
|
||
background: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-Notebook-footer:focus {
|
||
border-color: var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
/* For devices that support hovering, hide footer until hover */
|
||
@media (hover: hover) {
|
||
.jp-Notebook-footer {
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-Notebook-footer:focus,
|
||
.jp-Notebook-footer:hover {
|
||
opacity: 1;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Imports
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| CSS variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-side-by-side-output-size: 1fr;
|
||
--jp-side-by-side-resized-cell: var(--jp-side-by-side-output-size);
|
||
--jp-private-notebook-dragImage-width: 304px;
|
||
--jp-private-notebook-dragImage-height: 36px;
|
||
--jp-private-notebook-selected-color: var(--md-blue-400);
|
||
--jp-private-notebook-active-color: var(--md-green-400);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* stylelint-disable selector-max-class */
|
||
|
||
.jp-NotebookPanel {
|
||
display: block;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-NotebookPanel.jp-Document {
|
||
min-width: 240px;
|
||
min-height: 120px;
|
||
}
|
||
|
||
.jp-Notebook {
|
||
padding: var(--jp-notebook-padding);
|
||
outline: none;
|
||
overflow: auto;
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-scrollPastEnd::after {
|
||
display: block;
|
||
content: '';
|
||
min-height: var(--jp-notebook-scroll-padding);
|
||
}
|
||
|
||
.jp-MainAreaWidget-ContainStrict .jp-Notebook * {
|
||
contain: strict;
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell {
|
||
overflow: visible;
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell .jp-InputPrompt {
|
||
cursor: move;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook state related styling
|
||
|
|
||
| The notebook and cells each have states, here are the possibilities:
|
||
|
|
||
| - Notebook
|
||
| - Command
|
||
| - Edit
|
||
| - Cell
|
||
| - None
|
||
| - Active (only one can be active)
|
||
| - Selected (the cells actions are applied to)
|
||
| - Multiselected (when multiple selected, the cursor)
|
||
| - No outputs
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Command or edit modes */
|
||
|
||
.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt {
|
||
opacity: var(--jp-cell-prompt-not-active-opacity);
|
||
color: var(--jp-cell-prompt-not-active-font-color);
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt {
|
||
opacity: var(--jp-cell-prompt-not-active-opacity);
|
||
color: var(--jp-cell-prompt-not-active-font-color);
|
||
}
|
||
|
||
/* cell is active */
|
||
.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser {
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* cell is dirty */
|
||
.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt {
|
||
color: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt::before {
|
||
color: var(--jp-warn-color1);
|
||
content: '•';
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell.jp-mod-active.jp-mod-dirty .jp-Collapser {
|
||
background: var(--jp-warn-color1);
|
||
}
|
||
|
||
/* collapser is hovered */
|
||
.jp-Notebook .jp-Cell .jp-Collapser:hover {
|
||
box-shadow: var(--jp-elevation-z2);
|
||
background: var(--jp-brand-color1);
|
||
opacity: var(--jp-cell-collapser-not-active-hover-opacity);
|
||
}
|
||
|
||
/* cell is active and collapser is hovered */
|
||
.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover {
|
||
background: var(--jp-brand-color0);
|
||
opacity: 1;
|
||
}
|
||
|
||
/* Command mode */
|
||
|
||
.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected {
|
||
background: var(--jp-notebook-multiselected-color);
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-commandMode
|
||
.jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) {
|
||
background: transparent;
|
||
}
|
||
|
||
/* Edit mode */
|
||
|
||
.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor {
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
background-color: var(--jp-cell-editor-active-background);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook drag and drop
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Notebook-cell.jp-mod-dropSource {
|
||
opacity: 0.5;
|
||
}
|
||
|
||
.jp-Notebook-cell.jp-mod-dropTarget,
|
||
.jp-Notebook.jp-mod-commandMode
|
||
.jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget {
|
||
border-top-color: var(--jp-private-notebook-selected-color);
|
||
border-top-style: solid;
|
||
border-top-width: 2px;
|
||
}
|
||
|
||
.jp-dragImage {
|
||
display: block;
|
||
flex-direction: row;
|
||
width: var(--jp-private-notebook-dragImage-width);
|
||
height: var(--jp-private-notebook-dragImage-height);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background);
|
||
overflow: visible;
|
||
}
|
||
|
||
.jp-dragImage-singlePrompt {
|
||
box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
|
||
}
|
||
|
||
.jp-dragImage .jp-dragImage-content {
|
||
flex: 1 1 auto;
|
||
z-index: 2;
|
||
font-size: var(--jp-code-font-size);
|
||
font-family: var(--jp-code-font-family);
|
||
line-height: var(--jp-code-line-height);
|
||
padding: var(--jp-code-padding);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background-color);
|
||
color: var(--jp-content-font-color3);
|
||
text-align: left;
|
||
margin: 4px 4px 4px 0;
|
||
}
|
||
|
||
.jp-dragImage .jp-dragImage-prompt {
|
||
flex: 0 0 auto;
|
||
min-width: 36px;
|
||
color: var(--jp-cell-inprompt-font-color);
|
||
padding: var(--jp-code-padding);
|
||
padding-left: 12px;
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
line-height: 1.9;
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
}
|
||
|
||
.jp-dragImage-multipleBack {
|
||
z-index: -1;
|
||
position: absolute;
|
||
height: 32px;
|
||
width: 300px;
|
||
top: 8px;
|
||
left: 8px;
|
||
background: var(--jp-layout-color2);
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Cell toolbar
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-NotebookTools {
|
||
display: block;
|
||
min-width: var(--jp-sidebar-min-width);
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
overflow: auto;
|
||
}
|
||
|
||
.jp-ActiveCellTool {
|
||
padding: 12px 0;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-ActiveCellTool-Content {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-ActiveCellTool .jp-ActiveCellTool-CellContent {
|
||
background: var(--jp-cell-editor-background);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
border-radius: 0;
|
||
min-height: 29px;
|
||
}
|
||
|
||
.jp-ActiveCellTool .jp-InputPrompt {
|
||
min-width: calc(var(--jp-cell-prompt-width) * 0.75);
|
||
}
|
||
|
||
.jp-ActiveCellTool-CellContent > pre {
|
||
padding: 5px 4px;
|
||
margin: 0;
|
||
white-space: normal;
|
||
}
|
||
|
||
.jp-MetadataEditorTool {
|
||
flex-direction: column;
|
||
padding: 12px 0;
|
||
}
|
||
|
||
.jp-RankedPanel > :not(:first-child) {
|
||
margin-top: 12px;
|
||
}
|
||
|
||
.jp-KeySelector select.jp-mod-styled {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
border: var(--jp-border-width) solid var(--jp-border-color1);
|
||
}
|
||
|
||
.jp-KeySelector label,
|
||
.jp-MetadataEditorTool label,
|
||
.jp-NumberSetter label {
|
||
line-height: 1.4;
|
||
}
|
||
|
||
.jp-NotebookTools .jp-select-wrapper {
|
||
margin-top: 4px;
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-NumberSetter input {
|
||
width: 100%;
|
||
margin-top: 4px;
|
||
}
|
||
|
||
.jp-NotebookTools .jp-Collapse {
|
||
margin-top: 16px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Presentation Mode (.jp-mod-presentationMode)
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-mod-presentationMode .jp-Notebook {
|
||
--jp-content-font-size1: var(--jp-content-presentation-font-size1);
|
||
--jp-code-font-size: var(--jp-code-presentation-font-size);
|
||
}
|
||
|
||
.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt,
|
||
.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt {
|
||
flex: 0 0 110px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Side-by-side Mode (.jp-mod-sideBySide)
|
||
|----------------------------------------------------------------------------*/
|
||
.jp-mod-sideBySide.jp-Notebook .jp-Notebook-cell {
|
||
margin-top: 3em;
|
||
margin-bottom: 3em;
|
||
margin-left: 5%;
|
||
margin-right: 5%;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) min-content minmax(
|
||
0,
|
||
var(--jp-side-by-side-output-size)
|
||
);
|
||
grid-template-rows: auto minmax(0, 1fr) auto;
|
||
grid-template-areas:
|
||
'header header header'
|
||
'input handle output'
|
||
'footer footer footer';
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell.jp-mod-resizedCell {
|
||
grid-template-columns: minmax(0, 1fr) min-content minmax(
|
||
0,
|
||
var(--jp-side-by-side-resized-cell)
|
||
);
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellHeader {
|
||
grid-area: header;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-inputWrapper {
|
||
grid-area: input;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-outputWrapper {
|
||
/* overwrite the default margin (no vertical separation needed in side by side move */
|
||
margin-top: 0;
|
||
grid-area: output;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellFooter {
|
||
grid-area: footer;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle {
|
||
grid-area: handle;
|
||
user-select: none;
|
||
display: block;
|
||
height: 100%;
|
||
cursor: ew-resize;
|
||
padding: 0 var(--jp-cell-padding);
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle::after {
|
||
content: '';
|
||
display: block;
|
||
background: var(--jp-border-color2);
|
||
height: 100%;
|
||
width: 5px;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook
|
||
.jp-CodeCell.jp-mod-resizedCell
|
||
.jp-CellResizeHandle::after {
|
||
background: var(--jp-border-color0);
|
||
}
|
||
|
||
.jp-CellResizeHandle {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Placeholder
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell-Placeholder {
|
||
padding-left: 55px;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper {
|
||
background: #fff;
|
||
border: 1px solid;
|
||
border-color: #e5e6e9 #dfe0e4 #d0d1d5;
|
||
border-radius: 4px;
|
||
-webkit-border-radius: 4px;
|
||
margin: 10px 15px;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-inner {
|
||
padding: 15px;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-body {
|
||
background-repeat: repeat;
|
||
background-size: 50% auto;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-body div {
|
||
background: #f6f7f8;
|
||
background-image: -webkit-linear-gradient(
|
||
left,
|
||
#f6f7f8 0%,
|
||
#edeef1 20%,
|
||
#f6f7f8 40%,
|
||
#f6f7f8 100%
|
||
);
|
||
background-repeat: no-repeat;
|
||
background-size: 800px 104px;
|
||
height: 104px;
|
||
position: absolute;
|
||
right: 15px;
|
||
left: 15px;
|
||
top: 15px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-h1 {
|
||
top: 20px;
|
||
height: 20px;
|
||
left: 15px;
|
||
width: 150px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-h2 {
|
||
left: 15px;
|
||
top: 50px;
|
||
height: 10px;
|
||
width: 100px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-1,
|
||
div.jp-Cell-Placeholder-content-2,
|
||
div.jp-Cell-Placeholder-content-3 {
|
||
left: 15px;
|
||
right: 15px;
|
||
height: 10px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-1 {
|
||
top: 100px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-2 {
|
||
top: 120px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-3 {
|
||
top: 140px;
|
||
}
|
||
|
||
</style>
|
||
<style type="text/css">
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
The following CSS variables define the main, public API for styling JupyterLab.
|
||
These variables should be used by all plugins wherever possible. In other
|
||
words, plugins should not define custom colors, sizes, etc unless absolutely
|
||
necessary. This enables users to change the visual theme of JupyterLab
|
||
by changing these variables.
|
||
|
||
Many variables appear in an ordered sequence (0,1,2,3). These sequences
|
||
are designed to work well together, so for example, `--jp-border-color1` should
|
||
be used with `--jp-layout-color1`. The numbers have the following meanings:
|
||
|
||
* 0: super-primary, reserved for special emphasis
|
||
* 1: primary, most important under normal situations
|
||
* 2: secondary, next most important under normal situations
|
||
* 3: tertiary, next most important under normal situations
|
||
|
||
Throughout JupyterLab, we are mostly following principles from Google's
|
||
Material Design when selecting colors. We are not, however, following
|
||
all of MD as it is not optimized for dense, information rich UIs.
|
||
*/
|
||
|
||
:root {
|
||
/* Elevation
|
||
*
|
||
* We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:
|
||
*
|
||
* https://github.com/material-components/material-components-web
|
||
* https://material-components-web.appspot.com/elevation.html
|
||
*/
|
||
|
||
--jp-shadow-base-lightness: 0;
|
||
--jp-shadow-umbra-color: rgba(
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
0.2
|
||
);
|
||
--jp-shadow-penumbra-color: rgba(
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
0.14
|
||
);
|
||
--jp-shadow-ambient-color: rgba(
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
0.12
|
||
);
|
||
--jp-elevation-z0: none;
|
||
--jp-elevation-z1: 0 2px 1px -1px var(--jp-shadow-umbra-color),
|
||
0 1px 1px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 3px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z2: 0 3px 1px -2px var(--jp-shadow-umbra-color),
|
||
0 2px 2px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 5px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z4: 0 2px 4px -1px var(--jp-shadow-umbra-color),
|
||
0 4px 5px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 10px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z6: 0 3px 5px -1px var(--jp-shadow-umbra-color),
|
||
0 6px 10px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 18px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z8: 0 5px 5px -3px var(--jp-shadow-umbra-color),
|
||
0 8px 10px 1px var(--jp-shadow-penumbra-color),
|
||
0 3px 14px 2px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z12: 0 7px 8px -4px var(--jp-shadow-umbra-color),
|
||
0 12px 17px 2px var(--jp-shadow-penumbra-color),
|
||
0 5px 22px 4px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z16: 0 8px 10px -5px var(--jp-shadow-umbra-color),
|
||
0 16px 24px 2px var(--jp-shadow-penumbra-color),
|
||
0 6px 30px 5px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z20: 0 10px 13px -6px var(--jp-shadow-umbra-color),
|
||
0 20px 31px 3px var(--jp-shadow-penumbra-color),
|
||
0 8px 38px 7px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z24: 0 11px 15px -7px var(--jp-shadow-umbra-color),
|
||
0 24px 38px 3px var(--jp-shadow-penumbra-color),
|
||
0 9px 46px 8px var(--jp-shadow-ambient-color);
|
||
|
||
/* Borders
|
||
*
|
||
* The following variables, specify the visual styling of borders in JupyterLab.
|
||
*/
|
||
|
||
--jp-border-width: 1px;
|
||
--jp-border-color0: var(--md-grey-400);
|
||
--jp-border-color1: var(--md-grey-400);
|
||
--jp-border-color2: var(--md-grey-300);
|
||
--jp-border-color3: var(--md-grey-200);
|
||
--jp-inverse-border-color: var(--md-grey-600);
|
||
--jp-border-radius: 2px;
|
||
|
||
/* UI Fonts
|
||
*
|
||
* The UI font CSS variables are used for the typography all of the JupyterLab
|
||
* user interface elements that are not directly user generated content.
|
||
*
|
||
* The font sizing here is done assuming that the body font size of --jp-ui-font-size1
|
||
* is applied to a parent element. When children elements, such as headings, are sized
|
||
* in em all things will be computed relative to that body size.
|
||
*/
|
||
|
||
--jp-ui-font-scale-factor: 1.2;
|
||
--jp-ui-font-size0: 0.83333em;
|
||
--jp-ui-font-size1: 13px; /* Base font size */
|
||
--jp-ui-font-size2: 1.2em;
|
||
--jp-ui-font-size3: 1.44em;
|
||
--jp-ui-font-family: system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI',
|
||
helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
|
||
'Segoe UI Symbol';
|
||
|
||
/*
|
||
* Use these font colors against the corresponding main layout colors.
|
||
* In a light theme, these go from dark to light.
|
||
*/
|
||
|
||
/* Defaults use Material Design specification */
|
||
--jp-ui-font-color0: rgba(0, 0, 0, 1);
|
||
--jp-ui-font-color1: rgba(0, 0, 0, 0.87);
|
||
--jp-ui-font-color2: rgba(0, 0, 0, 0.54);
|
||
--jp-ui-font-color3: rgba(0, 0, 0, 0.38);
|
||
|
||
/*
|
||
* Use these against the brand/accent/warn/error colors.
|
||
* These will typically go from light to darker, in both a dark and light theme.
|
||
*/
|
||
|
||
--jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);
|
||
--jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);
|
||
--jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);
|
||
--jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);
|
||
|
||
/* Content Fonts
|
||
*
|
||
* Content font variables are used for typography of user generated content.
|
||
*
|
||
* The font sizing here is done assuming that the body font size of --jp-content-font-size1
|
||
* is applied to a parent element. When children elements, such as headings, are sized
|
||
* in em all things will be computed relative to that body size.
|
||
*/
|
||
|
||
--jp-content-line-height: 1.6;
|
||
--jp-content-font-scale-factor: 1.2;
|
||
--jp-content-font-size0: 0.83333em;
|
||
--jp-content-font-size1: 14px; /* Base font size */
|
||
--jp-content-font-size2: 1.2em;
|
||
--jp-content-font-size3: 1.44em;
|
||
--jp-content-font-size4: 1.728em;
|
||
--jp-content-font-size5: 2.0736em;
|
||
|
||
/* This gives a magnification of about 125% in presentation mode over normal. */
|
||
--jp-content-presentation-font-size1: 17px;
|
||
--jp-content-heading-line-height: 1;
|
||
--jp-content-heading-margin-top: 1.2em;
|
||
--jp-content-heading-margin-bottom: 0.8em;
|
||
--jp-content-heading-font-weight: 500;
|
||
|
||
/* Defaults use Material Design specification */
|
||
--jp-content-font-color0: rgba(0, 0, 0, 1);
|
||
--jp-content-font-color1: rgba(0, 0, 0, 0.87);
|
||
--jp-content-font-color2: rgba(0, 0, 0, 0.54);
|
||
--jp-content-font-color3: rgba(0, 0, 0, 0.38);
|
||
--jp-content-link-color: var(--md-blue-900);
|
||
--jp-content-font-family: system-ui, -apple-system, blinkmacsystemfont,
|
||
'Segoe UI', helvetica, arial, sans-serif, 'Apple Color Emoji',
|
||
'Segoe UI Emoji', 'Segoe UI Symbol';
|
||
|
||
/*
|
||
* Code Fonts
|
||
*
|
||
* Code font variables are used for typography of code and other monospaces content.
|
||
*/
|
||
|
||
--jp-code-font-size: 13px;
|
||
--jp-code-line-height: 1.3077; /* 17px for 13px base */
|
||
--jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */
|
||
--jp-code-font-family-default: menlo, consolas, 'DejaVu Sans Mono', monospace;
|
||
--jp-code-font-family: var(--jp-code-font-family-default);
|
||
|
||
/* This gives a magnification of about 125% in presentation mode over normal. */
|
||
--jp-code-presentation-font-size: 16px;
|
||
|
||
/* may need to tweak cursor width if you change font size */
|
||
--jp-code-cursor-width0: 1.4px;
|
||
--jp-code-cursor-width1: 2px;
|
||
--jp-code-cursor-width2: 4px;
|
||
|
||
/* Layout
|
||
*
|
||
* The following are the main layout colors use in JupyterLab. In a light
|
||
* theme these would go from light to dark.
|
||
*/
|
||
|
||
--jp-layout-color0: white;
|
||
--jp-layout-color1: white;
|
||
--jp-layout-color2: var(--md-grey-200);
|
||
--jp-layout-color3: var(--md-grey-400);
|
||
--jp-layout-color4: var(--md-grey-600);
|
||
|
||
/* Inverse Layout
|
||
*
|
||
* The following are the inverse layout colors use in JupyterLab. In a light
|
||
* theme these would go from dark to light.
|
||
*/
|
||
|
||
--jp-inverse-layout-color0: #111;
|
||
--jp-inverse-layout-color1: var(--md-grey-900);
|
||
--jp-inverse-layout-color2: var(--md-grey-800);
|
||
--jp-inverse-layout-color3: var(--md-grey-700);
|
||
--jp-inverse-layout-color4: var(--md-grey-600);
|
||
|
||
/* Brand/accent */
|
||
|
||
--jp-brand-color0: var(--md-blue-900);
|
||
--jp-brand-color1: var(--md-blue-700);
|
||
--jp-brand-color2: var(--md-blue-300);
|
||
--jp-brand-color3: var(--md-blue-100);
|
||
--jp-brand-color4: var(--md-blue-50);
|
||
--jp-accent-color0: var(--md-green-900);
|
||
--jp-accent-color1: var(--md-green-700);
|
||
--jp-accent-color2: var(--md-green-300);
|
||
--jp-accent-color3: var(--md-green-100);
|
||
|
||
/* State colors (warn, error, success, info) */
|
||
|
||
--jp-warn-color0: var(--md-orange-900);
|
||
--jp-warn-color1: var(--md-orange-700);
|
||
--jp-warn-color2: var(--md-orange-300);
|
||
--jp-warn-color3: var(--md-orange-100);
|
||
--jp-error-color0: var(--md-red-900);
|
||
--jp-error-color1: var(--md-red-700);
|
||
--jp-error-color2: var(--md-red-300);
|
||
--jp-error-color3: var(--md-red-100);
|
||
--jp-success-color0: var(--md-green-900);
|
||
--jp-success-color1: var(--md-green-700);
|
||
--jp-success-color2: var(--md-green-300);
|
||
--jp-success-color3: var(--md-green-100);
|
||
--jp-info-color0: var(--md-cyan-900);
|
||
--jp-info-color1: var(--md-cyan-700);
|
||
--jp-info-color2: var(--md-cyan-300);
|
||
--jp-info-color3: var(--md-cyan-100);
|
||
|
||
/* Cell specific styles */
|
||
|
||
--jp-cell-padding: 5px;
|
||
--jp-cell-collapser-width: 8px;
|
||
--jp-cell-collapser-min-height: 20px;
|
||
--jp-cell-collapser-not-active-hover-opacity: 0.6;
|
||
--jp-cell-editor-background: var(--md-grey-100);
|
||
--jp-cell-editor-border-color: var(--md-grey-300);
|
||
--jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);
|
||
--jp-cell-editor-active-background: var(--jp-layout-color0);
|
||
--jp-cell-editor-active-border-color: var(--jp-brand-color1);
|
||
--jp-cell-prompt-width: 64px;
|
||
--jp-cell-prompt-font-family: var(--jp-code-font-family-default);
|
||
--jp-cell-prompt-letter-spacing: 0;
|
||
--jp-cell-prompt-opacity: 1;
|
||
--jp-cell-prompt-not-active-opacity: 0.5;
|
||
--jp-cell-prompt-not-active-font-color: var(--md-grey-700);
|
||
|
||
/* A custom blend of MD grey and blue 600
|
||
* See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */
|
||
--jp-cell-inprompt-font-color: #307fc1;
|
||
|
||
/* A custom blend of MD grey and orange 600
|
||
* https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */
|
||
--jp-cell-outprompt-font-color: #bf5b3d;
|
||
|
||
/* Notebook specific styles */
|
||
|
||
--jp-notebook-padding: 10px;
|
||
--jp-notebook-select-background: var(--jp-layout-color1);
|
||
--jp-notebook-multiselected-color: var(--md-blue-50);
|
||
|
||
/* The scroll padding is calculated to fill enough space at the bottom of the
|
||
notebook to show one single-line cell (with appropriate padding) at the top
|
||
when the notebook is scrolled all the way to the bottom. We also subtract one
|
||
pixel so that no scrollbar appears if we have just one single-line cell in the
|
||
notebook. This padding is to enable a 'scroll past end' feature in a notebook.
|
||
*/
|
||
--jp-notebook-scroll-padding: calc(
|
||
100% - var(--jp-code-font-size) * var(--jp-code-line-height) -
|
||
var(--jp-code-padding) - var(--jp-cell-padding) - 1px
|
||
);
|
||
|
||
/* Rendermime styles */
|
||
|
||
--jp-rendermime-error-background: #fdd;
|
||
--jp-rendermime-table-row-background: var(--md-grey-100);
|
||
--jp-rendermime-table-row-hover-background: var(--md-light-blue-50);
|
||
|
||
/* Dialog specific styles */
|
||
|
||
--jp-dialog-background: rgba(0, 0, 0, 0.25);
|
||
|
||
/* Console specific styles */
|
||
|
||
--jp-console-padding: 10px;
|
||
|
||
/* Toolbar specific styles */
|
||
|
||
--jp-toolbar-border-color: var(--jp-border-color1);
|
||
--jp-toolbar-micro-height: 8px;
|
||
--jp-toolbar-background: var(--jp-layout-color1);
|
||
--jp-toolbar-box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.24);
|
||
--jp-toolbar-header-margin: 4px 4px 0 4px;
|
||
--jp-toolbar-active-background: var(--md-grey-300);
|
||
|
||
/* Statusbar specific styles */
|
||
|
||
--jp-statusbar-height: 24px;
|
||
|
||
/* Input field styles */
|
||
|
||
--jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);
|
||
--jp-input-active-background: var(--jp-layout-color1);
|
||
--jp-input-hover-background: var(--jp-layout-color1);
|
||
--jp-input-background: var(--md-grey-100);
|
||
--jp-input-border-color: var(--jp-inverse-border-color);
|
||
--jp-input-active-border-color: var(--jp-brand-color1);
|
||
--jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);
|
||
|
||
/* General editor styles */
|
||
|
||
--jp-editor-selected-background: #d9d9d9;
|
||
--jp-editor-selected-focused-background: #d7d4f0;
|
||
--jp-editor-cursor-color: var(--jp-ui-font-color0);
|
||
|
||
/* Code mirror specific styles */
|
||
|
||
--jp-mirror-editor-keyword-color: #008000;
|
||
--jp-mirror-editor-atom-color: #88f;
|
||
--jp-mirror-editor-number-color: #080;
|
||
--jp-mirror-editor-def-color: #00f;
|
||
--jp-mirror-editor-variable-color: var(--md-grey-900);
|
||
--jp-mirror-editor-variable-2-color: rgb(0, 54, 109);
|
||
--jp-mirror-editor-variable-3-color: #085;
|
||
--jp-mirror-editor-punctuation-color: #05a;
|
||
--jp-mirror-editor-property-color: #05a;
|
||
--jp-mirror-editor-operator-color: #a2f;
|
||
--jp-mirror-editor-comment-color: #408080;
|
||
--jp-mirror-editor-string-color: #ba2121;
|
||
--jp-mirror-editor-string-2-color: #708;
|
||
--jp-mirror-editor-meta-color: #a2f;
|
||
--jp-mirror-editor-qualifier-color: #555;
|
||
--jp-mirror-editor-builtin-color: #008000;
|
||
--jp-mirror-editor-bracket-color: #997;
|
||
--jp-mirror-editor-tag-color: #170;
|
||
--jp-mirror-editor-attribute-color: #00c;
|
||
--jp-mirror-editor-header-color: blue;
|
||
--jp-mirror-editor-quote-color: #090;
|
||
--jp-mirror-editor-link-color: #00c;
|
||
--jp-mirror-editor-error-color: #f00;
|
||
--jp-mirror-editor-hr-color: #999;
|
||
|
||
/*
|
||
RTC user specific colors.
|
||
These colors are used for the cursor, username in the editor,
|
||
and the icon of the user.
|
||
*/
|
||
|
||
--jp-collaborator-color1: #ffad8e;
|
||
--jp-collaborator-color2: #dac83d;
|
||
--jp-collaborator-color3: #72dd76;
|
||
--jp-collaborator-color4: #00e4d0;
|
||
--jp-collaborator-color5: #45d4ff;
|
||
--jp-collaborator-color6: #e2b1ff;
|
||
--jp-collaborator-color7: #ff9de6;
|
||
|
||
/* Vega extension styles */
|
||
|
||
--jp-vega-background: white;
|
||
|
||
/* Sidebar-related styles */
|
||
|
||
--jp-sidebar-min-width: 250px;
|
||
|
||
/* Search-related styles */
|
||
|
||
--jp-search-toggle-off-opacity: 0.5;
|
||
--jp-search-toggle-hover-opacity: 0.8;
|
||
--jp-search-toggle-on-opacity: 1;
|
||
--jp-search-selected-match-background-color: rgb(245, 200, 0);
|
||
--jp-search-selected-match-color: black;
|
||
--jp-search-unselected-match-background-color: var(
|
||
--jp-inverse-layout-color0
|
||
);
|
||
--jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);
|
||
|
||
/* Icon colors that work well with light or dark backgrounds */
|
||
--jp-icon-contrast-color0: var(--md-purple-600);
|
||
--jp-icon-contrast-color1: var(--md-green-600);
|
||
--jp-icon-contrast-color2: var(--md-pink-600);
|
||
--jp-icon-contrast-color3: var(--md-blue-600);
|
||
|
||
/* Button colors */
|
||
--jp-accept-color-normal: var(--md-blue-700);
|
||
--jp-accept-color-hover: var(--md-blue-800);
|
||
--jp-accept-color-active: var(--md-blue-900);
|
||
--jp-warn-color-normal: var(--md-red-700);
|
||
--jp-warn-color-hover: var(--md-red-800);
|
||
--jp-warn-color-active: var(--md-red-900);
|
||
--jp-reject-color-normal: var(--md-grey-600);
|
||
--jp-reject-color-hover: var(--md-grey-700);
|
||
--jp-reject-color-active: var(--md-grey-800);
|
||
|
||
/* File or activity icons and switch semantic variables */
|
||
--jp-jupyter-icon-color: #f37626;
|
||
--jp-notebook-icon-color: #f37626;
|
||
--jp-json-icon-color: var(--md-orange-700);
|
||
--jp-console-icon-background-color: var(--md-blue-700);
|
||
--jp-console-icon-color: white;
|
||
--jp-terminal-icon-background-color: var(--md-grey-800);
|
||
--jp-terminal-icon-color: var(--md-grey-200);
|
||
--jp-text-editor-icon-color: var(--md-grey-700);
|
||
--jp-inspector-icon-color: var(--md-grey-700);
|
||
--jp-switch-color: var(--md-grey-400);
|
||
--jp-switch-true-position-color: var(--md-orange-900);
|
||
}
|
||
</style>
|
||
<style type="text/css">
|
||
/* Force rendering true colors when outputing to pdf */
|
||
* {
|
||
-webkit-print-color-adjust: exact;
|
||
}
|
||
|
||
/* Misc */
|
||
a.anchor-link {
|
||
display: none;
|
||
}
|
||
|
||
/* Input area styling */
|
||
.jp-InputArea {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-InputArea-editor {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.cm-editor.cm-s-jupyter .highlight pre {
|
||
/* weird, but --jp-code-padding defined to be 5px but 4px horizontal padding is hardcoded for pre.cm-line */
|
||
padding: var(--jp-code-padding) 4px;
|
||
margin: 0;
|
||
|
||
font-family: inherit;
|
||
font-size: inherit;
|
||
line-height: inherit;
|
||
color: inherit;
|
||
|
||
}
|
||
|
||
.jp-OutputArea-output pre {
|
||
line-height: inherit;
|
||
font-family: inherit;
|
||
}
|
||
|
||
.jp-RenderedText pre {
|
||
color: var(--jp-content-font-color1);
|
||
font-size: var(--jp-code-font-size);
|
||
}
|
||
|
||
/* Hiding the collapser by default */
|
||
.jp-Collapser {
|
||
display: none;
|
||
}
|
||
|
||
@page {
|
||
margin: 0.5in; /* Margin for each printed piece of paper */
|
||
}
|
||
|
||
@media print {
|
||
.jp-Cell-inputWrapper,
|
||
.jp-Cell-outputWrapper {
|
||
display: block;
|
||
}
|
||
}
|
||
</style>
|
||
<!-- Load mathjax -->
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS_CHTML-full,Safe"> </script>
|
||
<!-- MathJax configuration -->
|
||
<script type="text/x-mathjax-config">
|
||
init_mathjax = function() {
|
||
if (window.MathJax) {
|
||
// MathJax loaded
|
||
MathJax.Hub.Config({
|
||
TeX: {
|
||
equationNumbers: {
|
||
autoNumber: "AMS",
|
||
useLabelIds: true
|
||
}
|
||
},
|
||
tex2jax: {
|
||
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
|
||
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
|
||
processEscapes: true,
|
||
processEnvironments: true
|
||
},
|
||
displayAlign: 'center',
|
||
messageStyle: 'none',
|
||
CommonHTML: {
|
||
linebreaks: {
|
||
automatic: true
|
||
}
|
||
}
|
||
});
|
||
|
||
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
|
||
}
|
||
}
|
||
init_mathjax();
|
||
</script>
|
||
<!-- End of mathjax configuration --><script type="module">
|
||
document.addEventListener("DOMContentLoaded", async () => {
|
||
const diagrams = document.querySelectorAll(".jp-Mermaid > pre.mermaid");
|
||
// do not load mermaidjs if not needed
|
||
if (!diagrams.length) {
|
||
return;
|
||
}
|
||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.7.0/mermaid.esm.min.mjs")).default;
|
||
const parser = new DOMParser();
|
||
|
||
mermaid.initialize({
|
||
maxTextSize: 100000,
|
||
maxEdges: 100000,
|
||
startOnLoad: false,
|
||
fontFamily: window
|
||
.getComputedStyle(document.body)
|
||
.getPropertyValue("--jp-ui-font-family"),
|
||
theme: document.querySelector("body[data-jp-theme-light='true']")
|
||
? "default"
|
||
: "dark",
|
||
});
|
||
|
||
let _nextMermaidId = 0;
|
||
|
||
function makeMermaidImage(svg) {
|
||
const img = document.createElement("img");
|
||
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||
const svgEl = doc.querySelector("svg");
|
||
const { maxWidth } = svgEl?.style || {};
|
||
const firstTitle = doc.querySelector("title");
|
||
const firstDesc = doc.querySelector("desc");
|
||
|
||
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||
if (maxWidth) {
|
||
img.width = parseInt(maxWidth);
|
||
}
|
||
if (firstTitle) {
|
||
img.setAttribute("alt", firstTitle.textContent);
|
||
}
|
||
if (firstDesc) {
|
||
const caption = document.createElement("figcaption");
|
||
caption.className = "sr-only";
|
||
caption.textContent = firstDesc.textContent;
|
||
return [img, caption];
|
||
}
|
||
return [img];
|
||
}
|
||
|
||
async function makeMermaidError(text) {
|
||
let errorMessage = "";
|
||
try {
|
||
await mermaid.parse(text);
|
||
} catch (err) {
|
||
errorMessage = `${err}`;
|
||
}
|
||
|
||
const result = document.createElement("details");
|
||
result.className = 'jp-RenderedMermaid-Details';
|
||
const summary = document.createElement("summary");
|
||
summary.className = 'jp-RenderedMermaid-Summary';
|
||
const pre = document.createElement("pre");
|
||
const code = document.createElement("code");
|
||
code.innerText = text;
|
||
pre.appendChild(code);
|
||
summary.appendChild(pre);
|
||
result.appendChild(summary);
|
||
|
||
const warning = document.createElement("pre");
|
||
warning.innerText = errorMessage;
|
||
result.appendChild(warning);
|
||
return [result];
|
||
}
|
||
|
||
async function renderOneMarmaid(src) {
|
||
const id = `jp-mermaid-${_nextMermaidId++}`;
|
||
const parent = src.parentNode;
|
||
let raw = src.textContent.trim();
|
||
const el = document.createElement("div");
|
||
el.style.visibility = "hidden";
|
||
document.body.appendChild(el);
|
||
let results = null;
|
||
let output = null;
|
||
try {
|
||
let { svg } = await mermaid.render(id, raw, el);
|
||
svg = cleanMermaidSvg(svg);
|
||
results = makeMermaidImage(svg);
|
||
output = document.createElement("figure");
|
||
results.map(output.appendChild, output);
|
||
} catch (err) {
|
||
parent.classList.add("jp-mod-warning");
|
||
results = await makeMermaidError(raw);
|
||
output = results[0];
|
||
} finally {
|
||
el.remove();
|
||
}
|
||
parent.classList.add("jp-RenderedMermaid");
|
||
parent.appendChild(output);
|
||
}
|
||
|
||
|
||
/**
|
||
* Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
|
||
*/
|
||
function cleanMermaidSvg(svg) {
|
||
return svg.replace(RE_VOID_ELEMENT, replaceVoidElement);
|
||
}
|
||
|
||
|
||
/**
|
||
* A regular expression for all void elements, which may include attributes and
|
||
* a slash.
|
||
*
|
||
* @see https://developer.mozilla.org/en-US/docs/Glossary/Void_element
|
||
*
|
||
* Of these, only `<br>` is generated by Mermaid in place of `\n`,
|
||
* but _any_ "malformed" tag will break the SVG rendering entirely.
|
||
*/
|
||
const RE_VOID_ELEMENT =
|
||
/<\s*(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\s*([^>]*?)\s*>/gi;
|
||
|
||
/**
|
||
* Ensure a void element is closed with a slash, preserving any attributes.
|
||
*/
|
||
function replaceVoidElement(match, tag, rest) {
|
||
rest = rest.trim();
|
||
if (!rest.endsWith('/')) {
|
||
rest = `${rest} /`;
|
||
}
|
||
return `<${tag} ${rest}>`;
|
||
}
|
||
|
||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||
});
|
||
</script>
|
||
<style>
|
||
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||
display: none;
|
||
}
|
||
|
||
.jp-RenderedMermaid {
|
||
overflow: auto;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-RenderedMermaid.jp-mod-warning {
|
||
width: auto;
|
||
padding: 0.5em;
|
||
margin-top: 0.5em;
|
||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||
border-radius: var(--jp-border-radius);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: pre-wrap;
|
||
word-wrap: break-word;
|
||
}
|
||
|
||
.jp-RenderedMermaid figure {
|
||
margin: 0;
|
||
overflow: auto;
|
||
max-width: 100%;
|
||
}
|
||
|
||
.jp-RenderedMermaid img {
|
||
max-width: 100%;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Details > pre {
|
||
margin-top: 1em;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Summary {
|
||
color: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||
display: none;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Summary > pre {
|
||
display: inline-block;
|
||
white-space: normal;
|
||
}
|
||
</style>
|
||
<!-- End of mermaid configuration --></head>
|
||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||
<main>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=6f71ca5c">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h1 id="Tutorial:-Introductory-Tutorial:-Neural-Operator-Learning-with-PINA">Tutorial: Introductory Tutorial: Neural Operator Learning with PINA<a class="anchor-link" href="#Tutorial:-Introductory-Tutorial:-Neural-Operator-Learning-with-PINA">¶</a></h1><p><a href="https://colab.research.google.com/github/mathLab/PINA/blob/master/tutorials/tutorial21/tutorial.ipynb"><img alt="Open In Colab" src="https://colab.research.google.com/assets/colab-badge.svg"/></a></p>
|
||
<blockquote>
|
||
<h5 id="%E2%9A%A0%EF%B8%8F-Before-starting:">⚠️ <em><strong>Before starting:</strong></em><a class="anchor-link" href="#%E2%9A%A0%EF%B8%8F-Before-starting:">¶</a></h5><p>We assume you are already familiar with the concepts covered in the <a href="https://mathlab.github.io/PINA/_tutorial.html#getting-started-with-pina">Getting started with PINA</a> tutorials. If not, we strongly recommend reviewing them before exploring this advanced topic.</p>
|
||
</blockquote>
|
||
<p>In this tutorial, we will demonstrate a typical use case of <strong>PINA</strong> for Neural Operator learning. We will cover the basics of training a Neural Operator with PINA, if you want to go further into the topic look at our dedicated <a href="https://mathlab.github.io/PINA/_tutorial.html#neural-operator-learning">tutorials</a> on the topic.</p>
|
||
<p>Let's start by importing the useful modules:</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=0981f1e9">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [1]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="c1">## routine needed to run the notebook on Google Colab</span>
|
||
<span class="k">try</span><span class="p">:</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">google.colab</span>
|
||
|
||
<span class="n">IN_COLAB</span> <span class="o">=</span> <span class="kc">True</span>
|
||
<span class="k">except</span><span class="p">:</span>
|
||
<span class="n">IN_COLAB</span> <span class="o">=</span> <span class="kc">False</span>
|
||
<span class="k">if</span> <span class="n">IN_COLAB</span><span class="p">:</span>
|
||
<span class="o">!</span>pip<span class="w"> </span>install<span class="w"> </span><span class="s2">"pina-mathlab[tutorial]"</span>
|
||
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">warnings</span>
|
||
|
||
<span class="n">warnings</span><span class="o">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s2">"ignore"</span><span class="p">)</span>
|
||
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">pina</span><span class="w"> </span><span class="kn">import</span> <span class="n">Trainer</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.solver</span><span class="w"> </span><span class="kn">import</span> <span class="n">SupervisedSolver</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.model</span><span class="w"> </span><span class="kn">import</span> <span class="n">KernelNeuralOperator</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.model.block</span><span class="w"> </span><span class="kn">import</span> <span class="n">FourierBlock1D</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.problem.zoo</span><span class="w"> </span><span class="kn">import</span> <span class="n">SupervisedProblem</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=f0c937e6">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="Learning-Differential-Operators-via-Neural-Operator">Learning Differential Operators via Neural Operator<a class="anchor-link" href="#Learning-Differential-Operators-via-Neural-Operator">¶</a></h2><p>In this tutorial, we explore how <strong>Neural Operators</strong> can be used to learn and approximate <strong>differential operators</strong>, which are fundamental in modeling physical and engineering systems governed by differential equations.</p>
|
||
<h3 id="What-Are-Neural-Operators?">What Are Neural Operators?<a class="anchor-link" href="#What-Are-Neural-Operators?">¶</a></h3><p><strong>Neural Operators (NOs)</strong> are a class of machine learning models designed to learn mappings <em>between function spaces</em>, unlike traditional neural networks which learn mappings between finite-dimensional vectors. In the context of differential equations, this means a Neural Operator can learn the <strong>solution operator</strong>:
|
||
$$
|
||
\mathcal{G}(a) = u,
|
||
$$
|
||
where $a$ is an input function (e.g., a PDE coefficient) and $u$ is the solution function.</p>
|
||
<h3 id="Why-Are-Neural-Operators-Useful?">Why Are Neural Operators Useful?<a class="anchor-link" href="#Why-Are-Neural-Operators-Useful?">¶</a></h3><ul>
|
||
<li><strong>Mesh-free learning</strong>: Neural Operators work directly with functions, allowing them to generalize across different spatial resolutions or grids.</li>
|
||
<li><strong>Fast inference</strong>: Once trained, they can predict the solution of a PDE for new input data almost instantaneously.</li>
|
||
<li><strong>Physics-aware extensions</strong>: Some variants can incorporate physical laws and constraints into the training process, improving accuracy and generalization.</li>
|
||
</ul>
|
||
<h2 id="Learning-the-1D-Advection-Equation-with-a-Neural-Operator">Learning the 1D Advection Equation with a Neural Operator<a class="anchor-link" href="#Learning-the-1D-Advection-Equation-with-a-Neural-Operator">¶</a></h2><p>To make things concrete, we'll a Neural Operator to learn the 1D advection equation. We generate synthetic data based on the analytical solution:</p>
|
||
<p>$$
|
||
\frac{\partial u}{\partial t} + c \frac{\partial u}{\partial x} = 0
|
||
$$</p>
|
||
<p>For a given initial condition $u(x, 0)$, the exact solution at time $t$ is:</p>
|
||
<p>$$
|
||
u(x, t) = u(x - ct)
|
||
$$</p>
|
||
<p>We use this property to generate training data without solving the PDE numerically.</p>
|
||
<h3 id="Problem-Setup">Problem Setup<a class="anchor-link" href="#Problem-Setup">¶</a></h3><ol>
|
||
<li><p><strong>Define the spatial domain</strong>: We work on a 1D grid $x \in [0, 1]$ with periodic boundary conditions.</p>
|
||
</li>
|
||
<li><p><strong>Generate initial conditions</strong>: Each initial condition $u(x, 0)$ is created as a sum of sine waves with random amplitudes and phases:
|
||
$$
|
||
u(x, 0) = \sum_{k=1}^K A_k \sin(2\pi k x + \phi_k)
|
||
$$
|
||
where $A_k \in [0, 0.5]$ and $\phi_k \in [0, 2\pi]$ are sampled randomly for each sample.</p>
|
||
</li>
|
||
<li><p><strong>Compute the solution at time $t$</strong>:<br/>
|
||
Using the analytical solution, we shift each initial condition by $t=0.5$ ($c=1$), applying periodic wrap-around:
|
||
$$
|
||
u(x, t=0.5) = u(x - 0.5)
|
||
$$</p>
|
||
</li>
|
||
<li><p><strong>Create input-output pairs</strong>: The input to the model is the function $u(x, 0)$, and the target output is $u(x, 0.5)$. These pairs can be used to train a Neural Operator to learn the underlying differential operator.</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=d331c971">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [2]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">generate_data</span><span class="p">(</span><span class="n">n_samples</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">t</span><span class="o">=</span><span class="mf">0.5</span><span class="p">):</span>
|
||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">T</span><span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="n">n_samples</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||
<span class="n">u0</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||
<span class="n">ut</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||
<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">):</span>
|
||
<span class="n">amplitude</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="n">n_samples</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="mf">0.5</span>
|
||
<span class="n">phase</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="n">n_samples</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span>
|
||
<span class="n">u0</span> <span class="o">+=</span> <span class="n">amplitude</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">k</span> <span class="o">*</span> <span class="n">x</span> <span class="o">+</span> <span class="n">phase</span><span class="p">)</span>
|
||
<span class="n">shifted_x</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="n">c</span> <span class="o">*</span> <span class="n">t</span><span class="p">)</span> <span class="o">%</span> <span class="mf">1.0</span> <span class="c1"># periodic shift</span>
|
||
<span class="n">ut</span> <span class="o">+=</span> <span class="n">amplitude</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">k</span> <span class="o">*</span> <span class="n">shifted_x</span> <span class="o">+</span> <span class="n">phase</span><span class="p">)</span>
|
||
<span class="k">return</span> <span class="n">u0</span><span class="p">,</span> <span class="n">ut</span>
|
||
|
||
|
||
<span class="c1"># define discretization train</span>
|
||
<span class="n">x_train</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||
|
||
<span class="c1"># define input and target</span>
|
||
<span class="nb">input</span><span class="p">,</span> <span class="n">target</span> <span class="o">=</span> <span class="n">generate_data</span><span class="p">(</span><span class="mi">10000</span><span class="p">,</span> <span class="n">x_train</span><span class="p">)</span>
|
||
|
||
<span class="c1"># visualize the data</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_train</span><span class="p">,</span> <span class="nb">input</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s2">"Input u(x, t=0)"</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_train</span><span class="p">,</span> <span class="n">target</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s2">"Target u(x, t=0.5)"</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">"Generated 1D Advection Data"</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">"x"</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
|
||
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,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RZZsTwVgRnwXq+xh1Bq3DAln26lzfLf3LA9N6I6jVpQ1Ce1I+h55J2etC/SdoXQ0jYu9Fv56DorOwqEV0HeWdd9fpWrz9I1Stm3bxuzZs7nuuusAOeEwFsFeSo8ePRrUqPzz7wMGDCApKemSIxQODg7o9fpLvpdxeikrKwsfH7k56T+nbOLi4gA4duyY6RjkH+yzZ8/m6aefJisri1mzZrF///4W/aB3dHRsEGNLpo0cHR0ZOHAg69evN41WGQwG1q9fX29q7mIkSaKsWk9NjZ4jR44wderUeh8/cuQI/fv3b/a/p7Vs8yewDTqSUcSu5POokbhtaJjS4VzUhNhAAj2dyCmuYs3RbK7up8DctyBYinHUpff1lt85urU0WhhyN6x9Gna8D31uUjoiu9GtWzd++uknrrrqKlQqFc8880yzeobcf//9jB49mvfff59p06axadMm/vjjj3pTMs8++yxXXnklYWFhTJs2DbVazcGDBzly5AgvvvgiIK84Wr9+PSNGjMDJycmUnFwoOjqa0NBQnnvuOV566SVOnDjBG2+8Ue8cf39/BgwYwNatW+slL3fffTehoaH897//paqqiv79+/Poo4/y/vvNL/COiIhg8+bNzJw5EycnJ/z8/Fo8bTR//nxuv/124uPjGTx4MIsWLaKsrIw5c+aYzrntttsICQnhlVdeAeD5559n6NChBIWGczwlm68+fofU1FT+9a9/1bv2li1bmDRpUrNjaS3xa3kzZRRW0MnNkbhOEsFezR9itDYHjZqZg+Tk6uudqQpHIwhmVHEejtYujx4459LnKm3AbeDkCfknUJ36q+nzBUBewuvj48Pw4cO56qqrmDx5MgMGDGjydSNGjOCDDz7ggw8+oH///qxZs4aHH3643nTQ5MmTWbVqFWvXrmXQoEEMHTqUt956i/DwcNM5b7zxBuvWrSM0NPSiowcODg58++23JCYm0rdvX1599VVT8nOhf/3rXyxbtsz096+++orVq1ezdOlStFotbm5ufP3113z66aemvijGZdiXGm16/vnnSUlJISoqyjQK1FIzZszg9ddf59lnnyUuLo6EhATWrFlTr4g3LS3NtJoJ4Pz588ydO5dBcX359+3TKS8tYevWrfWmqzIyMti+fXu9JMhSVJLUvnpZFxcX4+XlRVFREZ6enma9dml5JT///iczr52Kg4OD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9evXpQ+uIPv377/v79u62k6cOFHEx8ffs0xERITQarUiMDBQfPrpp1bPqRKCx8+IiIhIOXjNCxERESkKmxciIiJSFDYvREREpChsXoiIiEhR2LwQERGRorB5ISIiIkVh80JERESKwuaFiIiIFIXNCxERESkKmxciIiJSFDYvRNTmff/99/Dx8cGCBQvqpx06dAharfaeEW2JyPZxbCMiUoT09HSMGjUKhw4dQkhICCIiIjBy5Ei8//77ckcjIomxeSEixUhMTERGRgaio6NRUFCAI0eOQKfTyR2LiCTG5oWIFOPWrVvo0aMHLly4gNzcXISHh8sdiYhkwGteiEgxSkpKcOnSJZhMJpw9e1buOEQkEx55ISJFqK6uRq9evRAREYGQkBCkpqaioKAAXl5eckcjIomxeSEiRZg9ezY2bdqE48ePo127doiPj4erqyu2b98udzQikhhPGxFRm5eZmYnU1FSsXbsWLi4uUKvVWLt2Lb766issX75c7nhEJDEeeSEiIiJF4ZEXIiIiUhQ2L0RERKQobF6IiIhIUdi8EBERkaKweSEiIiJFYfNCREREisLmhYiIiBSFzQsREREpCpsXIiIiUhQ2L0RERKQobF6IiIhIUdi8EBERkaL8P9q20TDMpDicAAAAAElFTkSuQmCC"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=1dda7888">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="Solving-the-Neural-Operator-Problem">Solving the Neural Operator Problem<a class="anchor-link" href="#Solving-the-Neural-Operator-Problem">¶</a></h2><p>At their core, <strong>Neural Operators</strong> transform an input function $a$ into an output function $u$. The general structure of a Neural Operator consists of three key components:</p>
|
||
<p align="center">
|
||
<img alt="Neural Operators" src="http://raw.githubusercontent.com/mathLab/PINA/master/tutorials/static/neural_operator.png" width="800">
|
||
</img></p>
|
||
<ol>
|
||
<li><p><strong>Encoder</strong>: The encoder maps the input into a specific embedding space.</p>
|
||
</li>
|
||
<li><p><strong>Processor</strong>: The processor consists of multiple layers performing <strong>function convolutions</strong>, which is the core computational unit in a Neural Operator.</p>
|
||
</li>
|
||
<li><p><strong>Decoder</strong>: The decoder maps the processor's output back into the desired output space.</p>
|
||
</li>
|
||
</ol>
|
||
<p>By varying the design and implementation of these three components — encoder, processor, and decoder — different Neural Operators are created, each tailored for specific applications or types of data.</p>
|
||
<h3 id="Types-of-Neural-Operators">Types of Neural Operators<a class="anchor-link" href="#Types-of-Neural-Operators">¶</a></h3><p>Different variants of Neural Operators are designed to solve specific tasks. Some prominent examples include:</p>
|
||
<ul>
|
||
<li><p><strong>Fourier Neural Operator (FNO)</strong>:<br/>
|
||
The <strong>Fourier Neural Operator</strong> utilizes the <strong>Fourier transform</strong> in the processor to perform global convolutions. This enables the operator to capture long-range dependencies efficiently. FNOs are particularly useful for problems with periodic data or problems where global patterns and interactions are important.<br/>
|
||
➤ <a href="https://mathlab.github.io/PINA/_rst/model/fourier_neural_operator.html">Learn more about FNO</a>.</p>
|
||
</li>
|
||
<li><p><strong>Graph Neural Operator (GNO)</strong>:<br/>
|
||
The <strong>Graph Neural Operator</strong> leverages <strong>Graph Neural Networks (GNNs)</strong> to exchange information between nodes, enabling the operator to perform convolutions on unstructured domains, such as graphs or meshes. GNOs are especially useful for problems that naturally involve irregular data, such as graph-based datasets or data on non-Euclidean spaces.<br/>
|
||
➤ <a href="https://mathlab.github.io/PINA/_rst/model/graph_neural_operator.html">Learn more about GNO</a>.</p>
|
||
</li>
|
||
<li><p><strong>Deep Operator Network (DeepONet)</strong>:<br/>
|
||
<strong>DeepONet</strong> is a variant of Neural Operators designed to solve operator equations by learning mappings between input and output functions. Unlike other Neural Operators, <strong>DeepONet</strong> does not use the typical encoder-processor-decoder structure. Instead, it uses two distinct neural networks:</p>
|
||
<ol>
|
||
<li><strong>Branch Network</strong>: Takes the <strong>function inputs</strong> (e.g., $u(x)$) and learns a feature map of the input function.</li>
|
||
<li><strong>Trunk Network</strong>: Takes the <strong>spatial locations</strong> (e.g., $x$) and maps them to the output space.</li>
|
||
</ol>
|
||
<p>The output of <strong>DeepONet</strong> is the combination of these two networks' outputs, which together provide the mapping from the input function to the output function.
|
||
➤ <a href="https://mathlab.github.io/PINA/_rst/model/deeponet.html">Learn more about DeepONet</a>.</p>
|
||
</li>
|
||
</ul>
|
||
<p>In this tutorial we will focus on Neural Operator which follow the Encoder - Processor - Decoder structure, which we call <em>Kernel</em> Neural Operator. Implementing kernel neural Operators in PINA is very simple, you just need to use the <code>KernelNeuralOperator</code> API.</p>
|
||
<h3 id="KernelNeuralOperator-API">KernelNeuralOperator API<a class="anchor-link" href="#KernelNeuralOperator-API">¶</a></h3><p>The <code>KernelNeuralOperator</code> API requires three parameters:</p>
|
||
<ol>
|
||
<li><p><code>lifting_operator</code>: a <code>torch.nn.Module</code> apping the input to its hidden dimension (Encoder).</p>
|
||
</li>
|
||
<li><p><code>integral_kernels</code>: a <code>torch.nn.Module</code> representing the integral kernels mapping each hidden representation to the next one.</p>
|
||
</li>
|
||
<li><p><code>projection_operator</code>: a <code>torch.nn.Module</code> representing the hidden representation to the output function.</p>
|
||
</li>
|
||
</ol>
|
||
<p>To construct the kernel, you can use the Neural Operator Blocks available in PINA (see <a href="https://mathlab.github.io/PINA/_rst/_code.html#blocks">here</a>) or implement you own one! Let's build a simple FNO using the <code>FourierBlock1D</code>. In particular we will:</p>
|
||
<ol>
|
||
<li>Define the encoder, a simple linear layer mapping the input dimension to the hidden dimension</li>
|
||
<li>Define the decoder, two linear layers mapping the hidden dimension to 128 and back to the input dimension</li>
|
||
<li>Define the processor, a two layer Fourier block with a specific hidden dimension.</li>
|
||
<li>Combine the encoder-processor-decoder using the <code>KernelNeuralOperator</code> API to create the <code>model</code>.</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=ee9b1b1a">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [3]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># 1. Define the encoder (simple linear layer 1->64)</span>
|
||
<span class="k">class</span><span class="w"> </span><span class="nc">Encoder</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">hidden_dim</span><span class="o">=</span><span class="mi">64</span><span class="p">):</span>
|
||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">enc</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">hidden_dim</span><span class="p">)</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||
<span class="c1"># [B, Nx] -> [B, Nx, 1]</span>
|
||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="c1"># [B, Nx, 1] -> [B, Nx, 64]</span>
|
||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">enc</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||
<span class="c1"># [B, Nx, 1] -> [B, 64, Nx]</span>
|
||
<span class="k">return</span> <span class="n">x</span><span class="o">.</span><span class="n">permute</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||
|
||
|
||
<span class="c1"># 2. Define the decoder (two linear layer 64->128->1)</span>
|
||
<span class="k">class</span><span class="w"> </span><span class="nc">Decoder</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">hidden_dim</span><span class="o">=</span><span class="mi">64</span><span class="p">):</span>
|
||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">dec</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
|
||
<span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">hidden_dim</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span>
|
||
<span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(),</span>
|
||
<span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||
<span class="c1"># [B, 64, Nx] -> [B, Nx, 64]</span>
|
||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">permute</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||
<span class="c1"># [B, Nx, 64] -> [B, Nx, 1]</span>
|
||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dec</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||
<span class="c1"># [B, Nx, 1] -> [B, Nx]</span>
|
||
<span class="k">return</span> <span class="n">x</span><span class="o">.</span><span class="n">squeeze</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||
|
||
|
||
<span class="c1"># 3. Define the processor (two FNO blocks of size 64)</span>
|
||
<span class="k">class</span><span class="w"> </span><span class="nc">Processor</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">hidden_dim</span><span class="o">=</span><span class="mi">64</span><span class="p">):</span>
|
||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">proc</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
|
||
<span class="n">FourierBlock1D</span><span class="p">(</span><span class="mi">64</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">),</span>
|
||
<span class="n">FourierBlock1D</span><span class="p">(</span><span class="mi">64</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">proc</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||
|
||
|
||
<span class="c1"># 4. Define the model with KernelNeuralOperator</span>
|
||
<span class="n">model</span> <span class="o">=</span> <span class="n">KernelNeuralOperator</span><span class="p">(</span>
|
||
<span class="n">lifting_operator</span><span class="o">=</span><span class="n">Encoder</span><span class="p">(),</span>
|
||
<span class="n">integral_kernels</span><span class="o">=</span><span class="n">Processor</span><span class="p">(),</span>
|
||
<span class="n">projection_operator</span><span class="o">=</span><span class="n">Decoder</span><span class="p">(),</span>
|
||
<span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=4aa44dd1">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>Done! Let's now solve the Neural Operator problem. The problem we will define is a basic <code>SupervisedProblem</code>, and we will use the <code>SupervisedSolver</code> to train the Neural Operator.</p>
|
||
<blockquote>
|
||
<p><strong>👉 We have a dedicated <a href="https://mathlab.github.io/PINA/tutorial16/tutorial.html">tutorial</a> to teach how to build a Problem from scratch — have a look if you're interested!</strong></p>
|
||
</blockquote>
|
||
<blockquote>
|
||
<p><strong>👉 We have a dedicated <a href="http://mathlab.github.io/PINA/_rst/tutorials/tutorial18/tutorial.html">tutorial</a> for an overview of Solvers in PINA — have a look if you're interested!</strong></p>
|
||
</blockquote>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=304094a0">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [4]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># making the problem</span>
|
||
<span class="n">problem</span> <span class="o">=</span> <span class="n">SupervisedProblem</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span>
|
||
|
||
<span class="c1"># making the solver</span>
|
||
<span class="n">solver</span> <span class="o">=</span> <span class="n">SupervisedSolver</span><span class="p">(</span><span class="n">problem</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">use_lt</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||
|
||
<span class="c1"># simple training</span>
|
||
<span class="n">trainer</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
|
||
<span class="n">solver</span><span class="p">,</span>
|
||
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span>
|
||
<span class="n">train_size</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span>
|
||
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span>
|
||
<span class="n">batch_size</span><span class="o">=</span><span class="mi">256</span><span class="p">,</span>
|
||
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span>
|
||
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||
<span class="p">)</span>
|
||
<span class="n">trainer</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
|
||
<span class="n">_</span> <span class="o">=</span> <span class="n">trainer</span><span class="o">.</span><span class="n">test</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>💡 Tip: For seamless cloud uploads and versioning, try installing [litmodels](https://pypi.org/project/litmodels/) to enable LitModelCheckpoint, which syncs automatically with the Lightning model registry.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>GPU available: False, used: False
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>TPU available: False, using: 0 TPU cores
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>HPU available: False, using: 0 HPUs
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>/opt/hostedtoolcache/Python/3.9.23/x64/lib/python3.9/site-packages/lightning/pytorch/trainer/configuration_validator.py: PossibleUserWarning: You defined a `validation_step` but have no `val_dataloader`. Skipping val loop.
|
||
/opt/hostedtoolcache/Python/3.9.23/x64/lib/python3.9/site-packages/lightning/pytorch/loops/fit_loop.py: PossibleUserWarning: The number of training batches (32) is smaller than the logging interval Trainer(log_every_n_steps=50). Set a lower value for log_every_n_steps if you want to see logs for the training epoch.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="8409a1f4-8eb6-4095-a81a-99283f67aecb" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('8409a1f4-8eb6-4095-a81a-99283f67aecb');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "db4c566cd5c64aea8c2011479bcd177c"}
|
||
</script>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
|
||
<pre>`Trainer.fit` stopped: `max_epochs=3` reached.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="22f07aba-bf8c-4a39-8a46-8e4c3d3e313d" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('22f07aba-bf8c-4a39-8a46-8e4c3d3e313d');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "852a810091444fea81a92bbb74b8acde"}
|
||
</script>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
Test metric DataLoader 0
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
test_loss_epoch 0.0004070365976076573
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=8c2d2fcf">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="Visualizing-the-Predictions">Visualizing the Predictions<a class="anchor-link" href="#Visualizing-the-Predictions">¶</a></h2><p>As we can see, we have achieved a very low MSE, even after training for only one epoch. Now, we will visualize the results in the same way as we did previously:</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=1a725f92">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [5]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># generate new data</span>
|
||
<span class="nb">input</span><span class="p">,</span> <span class="n">target</span> <span class="o">=</span> <span class="n">generate_data</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="n">x_train</span><span class="p">)</span>
|
||
|
||
<span class="c1"># compute the predicted solution</span>
|
||
<span class="n">prediction</span> <span class="o">=</span> <span class="n">solver</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span>
|
||
|
||
<span class="c1"># plot</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_train</span><span class="p">,</span> <span class="nb">input</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s2">"Input u(x, t=0)"</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_train</span><span class="p">,</span> <span class="n">target</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s2">"Target u(x, t=0.5)"</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_train</span><span class="p">,</span> <span class="n">prediction</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s2">"--r"</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s2">"NO prediction u(x, t=0.5)"</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">"Generated 1D Advection Data"</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">"x"</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
|
||
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjgAAAHHCAYAAACyWSKnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAADCsklEQVR4nOzdd3xT9frA8U9G9y7dmw2FssoWEGUKKKgIuBBU9Kq4cF0cIOK9XscPXCiKggv3REH2FMree7dA6aJ0rzQ5vz9OU6wUKND0pMnzfr3yOsnJycmTb9Lk6XfqFEVREEIIIYRwIHqtAxBCCCGEqG2S4AghhBDC4UiCI4QQQgiHIwmOEEIIIRyOJDhCCCGEcDiS4AghhBDC4UiCI4QQQgiHIwmOEEIIIRyOJDhCCCGEcDiS4AghLltcXBxjxozROgybWLlyJTqdjpUrV2odygU5cvkLUVskwRFO5dixY4wfP55mzZrh6emJp6cn8fHxPPLII+zcuVPr8GrVggULePnllzWN4bvvvuOuu+6iadOm6HQ6evfuXe1xn332GTqdrvLi7u5OREQEAwYM4N133yU/P/+yn3vBggXodDoiIiKwWCxX+Urq3rp163j55ZfJycnROpRKtnifrOzx9Yr6TRIc4TT++OMPWrduzZdffknfvn2ZPn0677zzDjfccAMLFiygXbt2JCcnax1mrVmwYAFTpkzRNIYPP/yQ3377jejoaAICAi55/CuvvMKXX37Jhx9+yKOPPgrAE088QUJCwmUnoHPnziUuLo7Tp0+zfPnyK4pfS+vWrWPKlCnV/uAfOHCAWbNm1X1QFWrzfbK62OsV4koYtQ5AiLpw5MgRRo0aRWxsLMuWLSM8PLzK/a+//joffPABer395vyFhYV4eXlpHcZl+fLLL4mMjESv19O6detLHn/DDTfQsWPHytsTJ05k+fLlDBkyhJtuuol9+/bh4eFxyfMUFhby22+/8dprrzFnzhzmzp1L3759r+q12BM3NzdNn7+23ichbMl+v82FqEVvvPEGhYWFzJkz57zkBsBoNPLYY48RHR1dZf/+/fsZPnw4gYGBuLu707FjR+bNm1flGGu1/dq1a5kwYQLBwcF4eXlx8803k5mZed5z/fnnn/Ts2RMvLy98fHwYPHgwe/bsqXLMmDFj8Pb25siRIwwaNAgfHx/uvPNOANasWcNtt91GTEwMbm5uREdH8+STT1JcXFzl8TNmzACo0qRgZbFYePvtt2nVqhXu7u6Ehoby4IMPcvbs2SpxKIrCq6++SlRUFJ6enlx33XXnxXox0dHRV500Xn/99bz00kskJyfz1Vdf1egxv/zyC8XFxdx2222MGjWKn3/+mZKSkvOOO3nyJMOGDcPLy4uQkBCefPJJSktLqxwzfvx4vL29KSoqOu/xt99+O2FhYZjN5sp9NXl/Qf1sjRgxguDgYDw8PGjevDkvvPACAC+//DLPPPMMAA0bNqx8/44fPw5U3wfn6NGj3HbbbQQGBuLp6UnXrl2ZP39+lWOs/Yu+//57/vOf/xAVFYW7uzt9+vTh8OHDly7Yi7jQ+7Rz507GjBlDo0aNcHd3JywsjHvvvZczZ85UHnOp1ztnzhyuv/56QkJCcHNzIz4+ng8//PCq4hVOQBHCCURERChNmjS5rMfs3r1b8fPzU+Lj45XXX39def/995VevXopOp1O+fnnnyuPmzNnjgIo7du3V66//nrlvffeU5566inFYDAoI0aMqHLOL774QtHpdMrAgQOV9957T3n99deVuLg4xd/fXzl27Fjlcffcc4/i5uamNG7cWLnnnnuUmTNnKl988YWiKIry6KOPKoMGDVL++9//Kh999JFy3333KQaDQRk+fHjl49etW6f069dPAZQvv/yy8mJ1//33K0ajURk3bpwyc+ZM5bnnnlO8vLyUTp06KWVlZZXHvfjiiwqgDBo0SHn//feVe++9V4mIiFCCgoKUe+6557LKs1WrVsq1115b7X3WMty0aVO19584cUIBqrzGixk4cKDSp08fRVEUJTk5WdHpdMr3339f5ZiioiKlWbNmiru7u/Lss88qb7/9tpKYmKi0adNGAZQVK1YoiqIoq1evVoDzHl9YWKh4eXkpjzzySOW+mr6/O3bsUHx9fZUGDRooEydOVD766CPl2WefVRISEirvv/322xVAmT59euX7V1BQoCiKosTGxlYp/7S0NCU0NFTx8fFRXnjhBWXatGlK27ZtFb1eX+WzumLFisrPamJiojJ9+nTl5ZdfVjw9PZXOnTtfslyv5H166623lJ49eyqvvPKK8vHHHyuPP/644uHhoXTu3FmxWCw1er2dOnVSxowZo0yfPl157733lP79+yuA8v77718yZuG8JMERDi83N1cBlGHD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4u7du8q22NhYVCoVFy5cAMBsNrN27Vo6d+6slIm7eJYmVcqx/rvVpBisc+J8++23uLm5ceLEiTy13TPPPMPFixcZPny40uP1KGbOnMmgQYMYMGAANWrUYP78+bi7u7N48WKbcrfujb3xddeiUauV/6uyZcsq/2al0Wjo1KkTq1evfqS4JMmh9N5Qu4f1vtsfUK4c3L6NatMm58aFTHBKhp9/to5wL+8L1TXW5e4Dazs7qqJDCDCkOOeWD70SycnJdOrUie3btxMTE0OHDh3o3Lkz//zzj025GTNmULduXWJiYhg7dix79+7lzTffZMiQIfz++++0a9eOTz75xGafX3/9lVdffZX//Oc/nDhxgq+++oqlS5cq5X777TcAlixZQlxcnPL4Ufzxxx8kJCTQqFEjZVvNGtX5aNJkJn80ij9PneXy5csMGTKEadOmKSuiP8y6desoX748EydOVHq8AP755x88PDweeJs8eTJg7fE6cuQIbdu2VepVq9W0bduW/fv3K9vSjWYS062Xhvt7WHufkpOTqVixIjVr1qRr164cz2H8Qnh4OL/++qudLSZJBST839Z/T2+C8WNg3TpEly7OjQm5VEPJ0L077NsGX79o7b15yvmLEhYpxlSYXM45x/7gKmhLPVYVdevWpW7dusrjSZMmsX79en788UeGDRumbG/dujUjR45UHn/44Yd06NCBt956Cy8vL6pVq8a+ffvYlOWX2YQJExgzZgz9+lnHc4WGhjJp0iRGjx5NZGQkZcqUAcDHx4fAwMDHeh0XL15Eo9EQEBBgs/2dt4bx09YtDB08AB8Pdxo3bsxbb72V53r9/PzQaDR4enraxFiuXDliY2Mfui/ArVu3MJvN2XpfypYty19//aU8zhx746V3ReeqISwsjMWLF1OrVi3i4uKYN28ezZs35/jx45QvX94mlkuXLmGxWFCr5e9SqZAJqmNdrPniXqiUAK3fAqPR2VHJBKfEuL0VglVQ8WkIbuzsaKQClJyczPjx49m8eTNxcXGYTCbS0tKy9eBk7RkBOHXqFF27drXZFh4ebpPgHD16lL1799r07JjNZtLT00lNTcXd3T3fXkdaWho6nS7bKSR3rYZps+YR0aI+Go2GE8ePP/JppqxcXFyoXLnyY9eTyWS2KKuG+3taLw1v1qwZzZo1w2KxEBoaStu2balZsyZfffUV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"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=c152bfd1">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>Nice! We can see that the network is correctly learning the solution operator and it was very simple!</p>
|
||
<h2 id="What's-Next?">What's Next?<a class="anchor-link" href="#What's-Next?">¶</a></h2><p>Congratulations on completing the introductory tutorial on Neural Operators! Now that you have a solid foundation, here are a few directions you can explore:</p>
|
||
<ol>
|
||
<li><p><strong>Experiment with Training Duration & Network Architecture</strong> — Try different training durations and tweak the network architecture to optimize performance. Choose different integral kernels and see how the results vary.</p>
|
||
</li>
|
||
<li><p><strong>Explore Other Models in <code>pina.model</code></strong> — Check out other models available in <code>pina.model</code> or design your own custom PyTorch module to suit your needs. What about trying a <code>DeepONet</code>?</p>
|
||
</li>
|
||
<li><p><strong>...and many more!</strong> — The possibilities are vast! Continue experimenting with advanced configurations, solvers, and features in PINA. For example, consider incorporating physics-informed terms during training to enhance model generalization.</p>
|
||
</li>
|
||
</ol>
|
||
<p>For more resources and tutorials, check out the <a href="https://mathlab.github.io/PINA/">PINA Documentation</a>.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
</body>
|
||
<script type="application/vnd.jupyter.widget-state+json">
|
||
{"state": {"3d68b2e5ba744c88b0bccacb491c0f2f": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "c97b351d8fa347c8a2d954672cdf3fcf": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "764d1c05dd7840ed8b3ebca4155ef909": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_3d68b2e5ba744c88b0bccacb491c0f2f", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_c97b351d8fa347c8a2d954672cdf3fcf", "tabbable": null, "tooltip": null, "value": 1.0}}, "afc77a8ae1404331ac5b65396f9f4045": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "17d1ef795c1747c6bd10658a0705728a": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "bed97592a81b4168a5b67bd449ae4b8d": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_afc77a8ae1404331ac5b65396f9f4045", "placeholder": "\u200b", "style": "IPY_MODEL_17d1ef795c1747c6bd10658a0705728a", "tabbable": null, "tooltip": null, "value": "Epoch\u20072:\u2007100%"}}, "5e48732b44844be58b390603470d3996": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "a7337f5b65ea4f259132e8f9970e0041": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "3be86a234c50430194ed33fa46a9c51e": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_5e48732b44844be58b390603470d3996", "placeholder": "\u200b", "style": "IPY_MODEL_a7337f5b65ea4f259132e8f9970e0041", "tabbable": null, "tooltip": null, "value": "\u200732\/32\u2007[00:02<00:00,\u200713.87it\/s,\u2007v_num=0,\u2007data_loss_step=0.000372,\u2007train_loss_step=0.000372,\u2007data_loss_epoch=0.000473,\u2007train_loss_epoch=0.000473]"}}, "751530f83bef4a18bd0f52e74ed6bde4": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "db4c566cd5c64aea8c2011479bcd177c": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_bed97592a81b4168a5b67bd449ae4b8d", "IPY_MODEL_764d1c05dd7840ed8b3ebca4155ef909", "IPY_MODEL_3be86a234c50430194ed33fa46a9c51e"], "layout": "IPY_MODEL_751530f83bef4a18bd0f52e74ed6bde4", "tabbable": null, "tooltip": null}}, "3d6ddc95d8da44e3a93f1a0f782dbd74": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "6a5d8a150c164e55810cc7d82fffd223": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "d78e845bc5474c4785ef8d1e09f39fc1": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_3d6ddc95d8da44e3a93f1a0f782dbd74", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_6a5d8a150c164e55810cc7d82fffd223", "tabbable": null, "tooltip": null, "value": 1.0}}, "907bbd56fe214b6cb4c481470a04f2fb": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "b3bd7bbdf0334a239eefe9b6e216d7d4": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "ebdd82a1e9cd48eb9da2f5468ff0b000": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_907bbd56fe214b6cb4c481470a04f2fb", "placeholder": "\u200b", "style": "IPY_MODEL_b3bd7bbdf0334a239eefe9b6e216d7d4", "tabbable": null, "tooltip": null, "value": "Testing\u2007DataLoader\u20070:\u2007100%"}}, "0b54c14921224e338bc57de2f005f7a8": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "1853696c58974751b5e8505747007bf7": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "1c9e6b95a0e443a199f54a31f3fbb125": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_0b54c14921224e338bc57de2f005f7a8", "placeholder": "\u200b", "style": "IPY_MODEL_1853696c58974751b5e8505747007bf7", "tabbable": null, "tooltip": null, "value": "\u20078\/8\u2007[00:00<00:00,\u200742.34it\/s]"}}, "c102a0961fc44ee6872a92356752db3f": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "852a810091444fea81a92bbb74b8acde": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_ebdd82a1e9cd48eb9da2f5468ff0b000", "IPY_MODEL_d78e845bc5474c4785ef8d1e09f39fc1", "IPY_MODEL_1c9e6b95a0e443a199f54a31f3fbb125"], "layout": "IPY_MODEL_c102a0961fc44ee6872a92356752db3f", "tabbable": null, "tooltip": null}}}, "version_major": 2, "version_minor": 0}
|
||
</script>
|
||
</html>
|