mirror of
https://github.com/fverdugo/XM_40017.git
synced 2025-11-09 18:54:23 +01:00
8186 lines
521 KiB
HTML
8186 lines
521 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<html lang="en">
|
||
<head><meta charset="utf-8"/>
|
||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||
<title>julia_jacobi</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
|
||
<script src='../assets/iframeResizer.contentWindow.min.js'></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',
|
||
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.2.3/mermaid.esm.min.mjs")).default;
|
||
|
||
mermaid.initialize({
|
||
maxTextSize: 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 maxWidth = svg.match(/max-width: (\d+)/);
|
||
if (maxWidth && maxWidth[1]) {
|
||
const width = parseInt(maxWidth[1]);
|
||
if (width && !Number.isNaN(width) && Number.isFinite(width)) {
|
||
img.width = width;
|
||
}
|
||
}
|
||
img.setAttribute('src', `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||
return img;
|
||
}
|
||
|
||
async function makeMermaidError(text) {
|
||
let errorMessage = '';
|
||
try {
|
||
await mermaid.parse(text);
|
||
} catch (err) {
|
||
errorMessage = `${err}`;
|
||
}
|
||
|
||
const result = document.createElement('details');
|
||
const summary = document.createElement('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 result = null;
|
||
try {
|
||
const { svg } = await mermaid.render(id, raw, el);
|
||
result = makeMermaidImage(svg);
|
||
} catch (err) {
|
||
parent.classList.add("jp-mod-warning");
|
||
result = await makeMermaidError(raw);
|
||
} finally {
|
||
el.remove();
|
||
}
|
||
parent.classList.add("jp-RenderedMermaid");
|
||
parent.appendChild(result);
|
||
}
|
||
|
||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||
});
|
||
</script>
|
||
<style>
|
||
.jp-RenderedMarkdown .jp-Mermaid:not(.jp-RenderedMermaid) {
|
||
display: none;
|
||
}
|
||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning {
|
||
width: auto;
|
||
padding: 10px;
|
||
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-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning details > pre {
|
||
margin-top: 1em;
|
||
}
|
||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary {
|
||
color: var(--jp-warn-color2);
|
||
}
|
||
.jp-RenderedMarkdown .jp-RenderedMermaid.jp-mod-warning summary > pre {
|
||
display: inline-block;
|
||
}
|
||
.jp-RenderedMermaid > .mermaid {
|
||
display: none;
|
||
}
|
||
</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=2133c064">
|
||
<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">
|
||
<img alt="No description has been provided for this image" src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/39/VU_logo.png/800px-VU_logo.png?20161029201021" width="350"/>
|
||
<h3 id="Programming-large-scale-parallel-systems">Programming large-scale parallel systems<a class="anchor-link" href="#Programming-large-scale-parallel-systems">¶</a></h3><h3 id="Lectures-on-Julia-for-HPC">Lectures on Julia for HPC<a class="anchor-link" href="#Lectures-on-Julia-for-HPC">¶</a></h3><h1 id="Distributed-Jacobi-(SOR)-method">Distributed Jacobi (SOR) method<a class="anchor-link" href="#Distributed-Jacobi-(SOR)-method">¶</a></h1><p>by Francesc Verdugo (VU Amsterdam)</p>
|
||
<p>Version fall 2022</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=a7b64d5a">
|
||
<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="Contents">Contents<a class="anchor-link" href="#Contents">¶</a></h2><ul>
|
||
<li>How to parallelize the Jacobi method in Julia</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=8bfa86d6">
|
||
<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="Mathematical-background">Mathematical background<a class="anchor-link" href="#Mathematical-background">¶</a></h2><h3 id="1D-Laplace-equation">1D Laplace equation<a class="anchor-link" href="#1D-Laplace-equation">¶</a></h3><p>Find a function $u(x)$ such that</p>
|
||
<p>$u''(x) = 0 $ for $x\in(0,L)$</p>
|
||
<p>$u(0) = -1$</p>
|
||
<p>$u(L) = 1$</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=de45f04c">
|
||
<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">
|
||
<h3 id="Analytical-solution">Analytical solution<a class="anchor-link" href="#Analytical-solution">¶</a></h3><p>$u(x) = (x-L)/L$</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=bba2fb43">
|
||
<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">
|
||
<div>
|
||
<img align="left" alt="No description has been provided for this image" src="data:image/png;base64,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" width="250">
|
||
</img></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=392dd6e1">
|
||
<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">
|
||
<h3 id="A-3D-Laplace-equation-in-a-complex-domain">A 3D Laplace equation in a complex domain<a class="anchor-link" href="#A-3D-Laplace-equation-in-a-complex-domain">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=e7d815e0">
|
||
<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">
|
||
<div>
|
||
<img align="left" alt="No description has been provided for this image" src="data:image/png;base64,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" width="500"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=f1450f45">
|
||
<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">
|
||
<h3 id="The-jacobi-method">The jacobi method<a class="anchor-link" href="#The-jacobi-method">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=e794b036">
|
||
<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">
|
||
<div>
|
||
<img align="left" alt="No description has been provided for this image" src="data:image/png;base64,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" width="300"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=bb20b40a">
|
||
<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-julia"><pre><span></span><span class="k">function</span><span class="w"> </span><span class="n">jacobi</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">nsteps</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">zeros</span><span class="p">(</span><span class="n">n</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u_new</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">zeros</span><span class="p">(</span><span class="n">n</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="k">end</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">istep</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">nsteps</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">2</span><span class="o">:</span><span class="p">(</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">u</span>
|
||
<span class="k">end</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 jp-OutputArea-executeResult">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt">Out[1]:</div>
|
||
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain" tabindex="0">
|
||
<pre>jacobi (generic function with 1 method)</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=9d251dba">
|
||
<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-julia"><pre><span></span><span class="n">jacobi</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">1000</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 jp-OutputArea-executeResult">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt">Out[2]:</div>
|
||
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain" tabindex="0">
|
||
<pre>7-element Vector{Float64}:
|
||
-1.0
|
||
-0.6666666666666666
|
||
-0.3333333333333333
|
||
0.0
|
||
0.3333333333333333
|
||
0.6666666666666666
|
||
1.0</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=dda71761">
|
||
<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="Parallelization-strategy">Parallelization strategy<a class="anchor-link" href="#Parallelization-strategy">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=7c5a0d60">
|
||
<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">
|
||
<h3 id="Data-partition-and-dependencies">Data partition and dependencies<a class="anchor-link" href="#Data-partition-and-dependencies">¶</a></h3><p><code>u_new[i] = 0.5*(u[i-1]+u[i+1])</code></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=52626d50">
|
||
<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">
|
||
<div>
|
||
<img align="left" alt="No description has been provided for this image" src="data:image/png;base64,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" width="450"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=d5e089f4">
|
||
<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">
|
||
<h3 id="%22Ghost%22-entries">"Ghost" entries<a class="anchor-link" href="#%22Ghost%22-entries">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=1dc26426">
|
||
<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">
|
||
<div>
|
||
<img align="left" alt="No description has been provided for this image" src="data:image/png;base64,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" width="450"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=acbbd646">
|
||
<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">
|
||
<h3 id="Remote-channels">Remote channels<a class="anchor-link" href="#Remote-channels">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=08dab820">
|
||
<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">
|
||
<div>
|
||
<img align="left" alt="No description has been provided for this image" src="data:image/png;base64,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" width="450"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=034fa536">
|
||
<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="Implementation">Implementation<a class="anchor-link" href="#Implementation">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=a98e7ef1">
|
||
<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">
|
||
<h3 id="Disclaimer">Disclaimer<a class="anchor-link" href="#Disclaimer">¶</a></h3><p>The most natural way of implementing a distributed Jacobi method is to use a library that provides distributed arrays:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/JuliaParallel/DistributedArrays.jl">DistributedArrays.jl</a></li>
|
||
<li><a href="https://github.com/fverdugo/PartitionedArrays.jl">PartitionedArrays.jl</a></li>
|
||
</ul>
|
||
<p>We will use low-level Julia functions as an academic exercise.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=5a2437ae">
|
||
<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">
|
||
<h3 id="Adding-some-procs">Adding some procs<a class="anchor-link" href="#Adding-some-procs">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=d95ff334">
|
||
<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 [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="k">using</span><span class="w"> </span><span class="n">Distributed</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=2d64e580">
|
||
<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 [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">addprocs</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=9cd52702">
|
||
<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">
|
||
<h3 id="Helper-functions">Helper functions<a class="anchor-link" href="#Helper-functions">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=4aad98a4">
|
||
<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 [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="nd">@everywhere</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="n">initialize_vectors</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="nd">@assert</span><span class="w"> </span><span class="n">mod</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">nworkers</span><span class="p">())</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span>
|
||
<span class="w"> </span><span class="n">local_n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">div</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">nworkers</span><span class="p">())</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">zeros</span><span class="p">(</span><span class="n">local_n</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u_new</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">zeros</span><span class="p">(</span><span class="n">local_n</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="mf">1.0</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="k">end</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.0</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">,</span><span class="n">u_new</span>
|
||
<span class="k">end</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=3fceebbd">
|
||
<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 [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="nd">@everywhere</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="n">compute_error</span><span class="p">(</span><span class="n">u</span><span class="p">,</span><span class="n">n</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">local_n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">length</span><span class="p">(</span><span class="n">u</span><span class="p">)</span><span class="o">-</span><span class="mi">2</span>
|
||
<span class="w"> </span><span class="n">u_exact</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">copy</span><span class="p">(</span><span class="n">u</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">local_i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">0</span><span class="o">:</span><span class="p">(</span><span class="n">local_n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">global_i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">local_i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="n">p</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">local_n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="n">Δ</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="o">/</span><span class="p">(</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u_exact</span><span class="p">[</span><span class="n">local_i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="o">*</span><span class="p">(</span><span class="n">Δ</span><span class="o">*</span><span class="n">global_i</span><span class="o">-</span><span class="n">Δ</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">maximum</span><span class="p">(</span><span class="n">abs</span><span class="o">.</span><span class="p">(</span><span class="n">u</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.-</span><span class="n">u_exact</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
|
||
<span class="k">end</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=fd06d27f">
|
||
<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">
|
||
<h3 id="Distributed-Jacobi">Distributed Jacobi<a class="anchor-link" href="#Distributed-Jacobi">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=56d3bd49">
|
||
<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 [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="k">function</span><span class="w"> </span><span class="n">jacobi_dist</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">nsteps</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">nw</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nworkers</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">ftrs_prev_snd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kt">Vector</span><span class="p">{</span><span class="kt">Future</span><span class="p">}(</span><span class="nb">undef</span><span class="p">,</span><span class="n">nw</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">ftrs_next_snd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kt">Vector</span><span class="p">{</span><span class="kt">Future</span><span class="p">}(</span><span class="nb">undef</span><span class="p">,</span><span class="n">nw</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">fun</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">()</span><span class="o">-></span><span class="kt">Channel</span><span class="p">{</span><span class="kt">Float64</span><span class="p">}(</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">w</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">workers</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">w</span><span class="o">-</span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="n">ftrs_prev_snd</span><span class="p">[</span><span class="n">p</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nd">@spawnat</span><span class="w"> </span><span class="n">w</span><span class="w"> </span><span class="n">RemoteChannel</span><span class="p">(</span><span class="n">fun</span><span class="p">,</span><span class="n">myid</span><span class="p">())</span>
|
||
<span class="w"> </span><span class="n">ftrs_next_snd</span><span class="p">[</span><span class="n">p</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nd">@spawnat</span><span class="w"> </span><span class="n">w</span><span class="w"> </span><span class="n">RemoteChannel</span><span class="p">(</span><span class="n">fun</span><span class="p">,</span><span class="n">myid</span><span class="p">())</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">ftrs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kt">Vector</span><span class="p">{</span><span class="kt">Future</span><span class="p">}(</span><span class="nb">undef</span><span class="p">,</span><span class="n">nw</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="nd">@sync</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">w</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">workers</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">ftrs</span><span class="p">[</span><span class="n">w</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nd">@spawnat</span><span class="w"> </span><span class="n">w</span><span class="w"> </span><span class="n">jacobi_worker</span><span class="p">(</span>
|
||
<span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="n">nsteps</span><span class="p">,</span><span class="n">ftrs_prev_snd</span><span class="p">,</span><span class="n">ftrs_next_snd</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">reduce</span><span class="p">(</span><span class="n">max</span><span class="p">,</span><span class="n">fetch</span><span class="o">.</span><span class="p">(</span><span class="n">ftrs</span><span class="p">))</span>
|
||
<span class="k">end</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=ab2c25f3">
|
||
<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">
|
||
<h3 id="Exercise:-complete-the-cell-below">Exercise: complete the cell below<a class="anchor-link" href="#Exercise:-complete-the-cell-below">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=739ccfa5">
|
||
<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 [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="nd">@everywhere</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="n">jacobi_worker</span><span class="p">(</span>
|
||
<span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="n">nsteps</span><span class="p">,</span><span class="n">ftrs_prev_snd</span><span class="p">,</span><span class="n">ftrs_next_snd</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">,</span><span class="w"> </span><span class="n">u_new</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">initialize_vectors</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">w</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">myid</span><span class="p">();</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">w</span><span class="o">-</span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="c"># TODO: Setup channels</span>
|
||
<span class="w"> </span><span class="c">#chn_prev_snd</span>
|
||
<span class="w"> </span><span class="c">#chn_prev_rcv</span>
|
||
<span class="w"> </span><span class="c">#chn_next_snd</span>
|
||
<span class="w"> </span><span class="c">#chn_next_rcv</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">step</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">nsteps</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="c"># TODO: Communicate</span>
|
||
<span class="w"> </span><span class="c"># Local computations</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">2</span><span class="o">:</span><span class="p">(</span><span class="n">length</span><span class="p">(</span><span class="n">u</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="nd">@show</span><span class="w"> </span><span class="n">u</span>
|
||
<span class="w"> </span><span class="n">err</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">compute_error</span><span class="p">(</span><span class="n">u</span><span class="p">,</span><span class="n">n</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=edbb2318">
|
||
<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">
|
||
<h3 id="Test-driven-development">Test-driven development<a class="anchor-link" href="#Test-driven-development">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=b2301383">
|
||
<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 [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="n">err</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jacobi_dist</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">1000</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=63ec8554">
|
||
<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">
|
||
<h3 id="Remember:-remote-channels">Remember: remote channels<a class="anchor-link" href="#Remember:-remote-channels">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=d4f59c15">
|
||
<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">
|
||
<div>
|
||
<img align="left" alt="No description has been provided for this image" src="data:image/png;base64,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" width="450"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=b2d8bdbc">
|
||
<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="Possible-enhancements">Possible enhancements<a class="anchor-link" href="#Possible-enhancements">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0af07603">
|
||
<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">
|
||
<h3 id="Is-it-possible-to-overlap-computation-and-communication?">Is it possible to overlap computation and communication?<a class="anchor-link" href="#Is-it-possible-to-overlap-computation-and-communication?">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=d401c647">
|
||
<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">
|
||
<div>
|
||
<img align="left" alt="No description has been provided for this image" src="data:image/png;base64,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" width="450"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=80e67eb9">
|
||
<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">
|
||
<h3 id="2nd-exercise:">2nd exercise:<a class="anchor-link" href="#2nd-exercise:">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=f9aaa50c">
|
||
<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 [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="nd">@everywhere</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="n">jacobi_worker</span><span class="p">(</span>
|
||
<span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="n">nsteps</span><span class="p">,</span><span class="n">ftrs_prev_snd</span><span class="p">,</span><span class="n">ftrs_next_snd</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">,</span><span class="w"> </span><span class="n">u_new</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">initialize_vectors</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="n">chn_prev_snd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_prev_snd</span><span class="p">[</span><span class="n">p</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="n">chn_next_snd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_next_snd</span><span class="p">[</span><span class="n">p</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="o">!=</span><span class="mi">2</span>
|
||
<span class="w"> </span><span class="n">chn_prev_rcv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_next_snd</span><span class="p">[</span><span class="n">p</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">nprocs</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">chn_next_rcv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_prev_snd</span><span class="p">[</span><span class="n">p</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">step</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">nsteps</span>
|
||
<span class="w"> </span><span class="c"># TODO overlap communication and computation</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">2</span>
|
||
<span class="w"> </span><span class="n">put!</span><span class="p">(</span><span class="n">chn_prev_snd</span><span class="p">,</span><span class="n">u</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">take!</span><span class="p">(</span><span class="n">chn_prev_rcv</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">nprocs</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">put!</span><span class="p">(</span><span class="n">chn_next_snd</span><span class="p">,</span><span class="n">u</span><span class="p">[</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="k">end</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">take!</span><span class="p">(</span><span class="n">chn_next_rcv</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">2</span><span class="o">:</span><span class="p">(</span><span class="n">length</span><span class="p">(</span><span class="n">u</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="nd">@show</span><span class="w"> </span><span class="n">u</span>
|
||
<span class="w"> </span><span class="n">err</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">compute_error</span><span class="p">(</span><span class="n">u</span><span class="p">,</span><span class="n">n</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=d9f12348">
|
||
<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="Solution-of-the-exercises">Solution of the exercises<a class="anchor-link" href="#Solution-of-the-exercises">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=d7d067f8">
|
||
<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">
|
||
<h3 id="1st-exercise">1st exercise<a class="anchor-link" href="#1st-exercise">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=0e2514b0">
|
||
<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 [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="nd">@everywhere</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="n">jacobi_worker</span><span class="p">(</span>
|
||
<span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="n">nsteps</span><span class="p">,</span><span class="n">ftrs_prev_snd</span><span class="p">,</span><span class="n">ftrs_next_snd</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">,</span><span class="w"> </span><span class="n">u_new</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">initialize_vectors</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="n">chn_prev_snd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_prev_snd</span><span class="p">[</span><span class="n">p</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="n">chn_next_snd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_next_snd</span><span class="p">[</span><span class="n">p</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="o">!=</span><span class="mi">2</span>
|
||
<span class="w"> </span><span class="n">chn_prev_rcv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_next_snd</span><span class="p">[</span><span class="n">p</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">nprocs</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">chn_next_rcv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_prev_snd</span><span class="p">[</span><span class="n">p</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">step</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">nsteps</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">2</span>
|
||
<span class="w"> </span><span class="n">put!</span><span class="p">(</span><span class="n">chn_prev_snd</span><span class="p">,</span><span class="n">u</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">take!</span><span class="p">(</span><span class="n">chn_prev_rcv</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">nprocs</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">put!</span><span class="p">(</span><span class="n">chn_next_snd</span><span class="p">,</span><span class="n">u</span><span class="p">[</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="k">end</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">take!</span><span class="p">(</span><span class="n">chn_next_rcv</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="c"># Local computations</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">2</span><span class="o">:</span><span class="p">(</span><span class="n">length</span><span class="p">(</span><span class="n">u</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="nd">@show</span><span class="w"> </span><span class="n">u</span>
|
||
<span class="w"> </span><span class="n">err</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">compute_error</span><span class="p">(</span><span class="n">u</span><span class="p">,</span><span class="n">n</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=157e705d">
|
||
<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">
|
||
<h3 id="2nd-exercise">2nd exercise<a class="anchor-link" href="#2nd-exercise">¶</a></h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=b6f5a89f">
|
||
<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 [ ]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-julia"><pre><span></span><span class="nd">@everywhere</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="n">jacobi_worker</span><span class="p">(</span>
|
||
<span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="n">nsteps</span><span class="p">,</span><span class="n">ftrs_prev_snd</span><span class="p">,</span><span class="n">ftrs_next_snd</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">,</span><span class="w"> </span><span class="n">u_new</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">initialize_vectors</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span>
|
||
<span class="w"> </span><span class="n">chn_prev_snd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_prev_snd</span><span class="p">[</span><span class="n">p</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="n">chn_next_snd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_next_snd</span><span class="p">[</span><span class="n">p</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="o">!=</span><span class="mi">2</span>
|
||
<span class="w"> </span><span class="n">chn_prev_rcv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_next_snd</span><span class="p">[</span><span class="n">p</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">nprocs</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">chn_next_rcv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fetch</span><span class="p">(</span><span class="n">ftrs_prev_snd</span><span class="p">[</span><span class="n">p</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">step</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">:</span><span class="n">nsteps</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">2</span>
|
||
<span class="w"> </span><span class="n">put!</span><span class="p">(</span><span class="n">chn_prev_snd</span><span class="p">,</span><span class="n">u</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="n">t1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nd">@async</span><span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">take!</span><span class="p">(</span><span class="n">chn_prev_rcv</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">nprocs</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">put!</span><span class="p">(</span><span class="n">chn_next_snd</span><span class="p">,</span><span class="n">u</span><span class="p">[</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="n">t2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nd">@async</span><span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="k">end</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">take!</span><span class="p">(</span><span class="n">chn_next_rcv</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="c"># Local computations (interior)</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">3</span><span class="o">:</span><span class="p">(</span><span class="n">length</span><span class="p">(</span><span class="n">u</span><span class="p">)</span><span class="o">-</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="c"># Wait for ghost values</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">2</span>
|
||
<span class="w"> </span><span class="n">wait</span><span class="p">(</span><span class="n">t1</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">myid</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">nprocs</span><span class="p">()</span>
|
||
<span class="w"> </span><span class="n">wait</span><span class="p">(</span><span class="n">t2</span><span class="p">)</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="c"># Update near boundary values</span>
|
||
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="p">[</span><span class="mi">2</span><span class="p">,</span><span class="n">length</span><span class="p">(</span><span class="n">u</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="n">u</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">u_new</span><span class="p">[</span><span class="mi">2</span><span class="o">:</span><span class="k">end</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||
<span class="w"> </span><span class="k">end</span>
|
||
<span class="w"> </span><span class="nd">@show</span><span class="w"> </span><span class="n">u</span>
|
||
<span class="w"> </span><span class="n">err</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">compute_error</span><span class="p">(</span><span class="n">u</span><span class="p">,</span><span class="n">n</span><span class="p">)</span>
|
||
<span class="k">end</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
</body>
|
||
</html>
|