8783 lines
514 KiB
HTML
8783 lines
514 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<html lang="en">
|
||
<head><meta charset="utf-8"/>
|
||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||
<title>01_data_exploration</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.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',
|
||
messageStyle: 'none',
|
||
CommonHTML: {
|
||
linebreaks: {
|
||
automatic: true
|
||
}
|
||
}
|
||
});
|
||
|
||
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
|
||
}
|
||
}
|
||
init_mathjax();
|
||
</script>
|
||
<!-- End of mathjax configuration --><script type="module">
|
||
document.addEventListener("DOMContentLoaded", async () => {
|
||
const diagrams = document.querySelectorAll(".jp-Mermaid > pre.mermaid");
|
||
// do not load mermaidjs if not needed
|
||
if (!diagrams.length) {
|
||
return;
|
||
}
|
||
const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.7.0/mermaid.esm.min.mjs")).default;
|
||
const parser = new DOMParser();
|
||
|
||
mermaid.initialize({
|
||
maxTextSize: 100000,
|
||
maxEdges: 100000,
|
||
startOnLoad: false,
|
||
fontFamily: window
|
||
.getComputedStyle(document.body)
|
||
.getPropertyValue("--jp-ui-font-family"),
|
||
theme: document.querySelector("body[data-jp-theme-light='true']")
|
||
? "default"
|
||
: "dark",
|
||
});
|
||
|
||
let _nextMermaidId = 0;
|
||
|
||
function makeMermaidImage(svg) {
|
||
const img = document.createElement("img");
|
||
const doc = parser.parseFromString(svg, "image/svg+xml");
|
||
const svgEl = doc.querySelector("svg");
|
||
const { maxWidth } = svgEl?.style || {};
|
||
const firstTitle = doc.querySelector("title");
|
||
const firstDesc = doc.querySelector("desc");
|
||
|
||
img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
|
||
if (maxWidth) {
|
||
img.width = parseInt(maxWidth);
|
||
}
|
||
if (firstTitle) {
|
||
img.setAttribute("alt", firstTitle.textContent);
|
||
}
|
||
if (firstDesc) {
|
||
const caption = document.createElement("figcaption");
|
||
caption.className = "sr-only";
|
||
caption.textContent = firstDesc.textContent;
|
||
return [img, caption];
|
||
}
|
||
return [img];
|
||
}
|
||
|
||
async function makeMermaidError(text) {
|
||
let errorMessage = "";
|
||
try {
|
||
await mermaid.parse(text);
|
||
} catch (err) {
|
||
errorMessage = `${err}`;
|
||
}
|
||
|
||
const result = document.createElement("details");
|
||
result.className = 'jp-RenderedMermaid-Details';
|
||
const summary = document.createElement("summary");
|
||
summary.className = 'jp-RenderedMermaid-Summary';
|
||
const pre = document.createElement("pre");
|
||
const code = document.createElement("code");
|
||
code.innerText = text;
|
||
pre.appendChild(code);
|
||
summary.appendChild(pre);
|
||
result.appendChild(summary);
|
||
|
||
const warning = document.createElement("pre");
|
||
warning.innerText = errorMessage;
|
||
result.appendChild(warning);
|
||
return [result];
|
||
}
|
||
|
||
async function renderOneMarmaid(src) {
|
||
const id = `jp-mermaid-${_nextMermaidId++}`;
|
||
const parent = src.parentNode;
|
||
let raw = src.textContent.trim();
|
||
const el = document.createElement("div");
|
||
el.style.visibility = "hidden";
|
||
document.body.appendChild(el);
|
||
let results = null;
|
||
let output = null;
|
||
try {
|
||
let { svg } = await mermaid.render(id, raw, el);
|
||
svg = cleanMermaidSvg(svg);
|
||
results = makeMermaidImage(svg);
|
||
output = document.createElement("figure");
|
||
results.map(output.appendChild, output);
|
||
} catch (err) {
|
||
parent.classList.add("jp-mod-warning");
|
||
results = await makeMermaidError(raw);
|
||
output = results[0];
|
||
} finally {
|
||
el.remove();
|
||
}
|
||
parent.classList.add("jp-RenderedMermaid");
|
||
parent.appendChild(output);
|
||
}
|
||
|
||
|
||
/**
|
||
* Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
|
||
*/
|
||
function cleanMermaidSvg(svg) {
|
||
return svg.replace(RE_VOID_ELEMENT, replaceVoidElement);
|
||
}
|
||
|
||
|
||
/**
|
||
* A regular expression for all void elements, which may include attributes and
|
||
* a slash.
|
||
*
|
||
* @see https://developer.mozilla.org/en-US/docs/Glossary/Void_element
|
||
*
|
||
* Of these, only `<br>` is generated by Mermaid in place of `\n`,
|
||
* but _any_ "malformed" tag will break the SVG rendering entirely.
|
||
*/
|
||
const RE_VOID_ELEMENT =
|
||
/<\s*(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\s*([^>]*?)\s*>/gi;
|
||
|
||
/**
|
||
* Ensure a void element is closed with a slash, preserving any attributes.
|
||
*/
|
||
function replaceVoidElement(match, tag, rest) {
|
||
rest = rest.trim();
|
||
if (!rest.endsWith('/')) {
|
||
rest = `${rest} /`;
|
||
}
|
||
return `<${tag} ${rest}>`;
|
||
}
|
||
|
||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||
});
|
||
</script>
|
||
<style>
|
||
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||
display: none;
|
||
}
|
||
|
||
.jp-RenderedMermaid {
|
||
overflow: auto;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-RenderedMermaid.jp-mod-warning {
|
||
width: auto;
|
||
padding: 0.5em;
|
||
margin-top: 0.5em;
|
||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||
border-radius: var(--jp-border-radius);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: pre-wrap;
|
||
word-wrap: break-word;
|
||
}
|
||
|
||
.jp-RenderedMermaid figure {
|
||
margin: 0;
|
||
overflow: auto;
|
||
max-width: 100%;
|
||
}
|
||
|
||
.jp-RenderedMermaid img {
|
||
max-width: 100%;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Details > pre {
|
||
margin-top: 1em;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Summary {
|
||
color: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||
display: none;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Summary > pre {
|
||
display: inline-block;
|
||
white-space: normal;
|
||
}
|
||
</style>
|
||
<!-- End of mermaid configuration --></head>
|
||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||
<main>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=dd72d1539056a64">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>Import Cell</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=12579bf734bb1a92">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [4]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">spacy</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">pandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pd</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">seaborn</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">sns</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">collections</span><span class="w"> </span><span class="kn">import</span> <span class="n">Counter</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">string</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">IPython.display</span><span class="w"> </span><span class="kn">import</span> <span class="n">display</span><span class="p">,</span> <span class="n">HTML</span>
|
||
|
||
<span class="n">nlp_lg</span> <span class="o">=</span> <span class="n">spacy</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="s2">"en_core_web_lg"</span><span class="p">)</span>
|
||
<span class="n">nlp_trf</span> <span class="o">=</span> <span class="n">spacy</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="s2">"en_core_web_trf"</span><span class="p">)</span>
|
||
|
||
<span class="n">nlp</span> <span class="o">=</span> <span class="n">nlp_lg</span>
|
||
|
||
<span class="c1"># Test sentences covering different similarity types</span>
|
||
<span class="n">test_sentences</span> <span class="o">=</span> <span class="p">[</span>
|
||
<span class="c1"># Direct copies and near-copies</span>
|
||
<span class="s2">"The cat sat on the mat."</span><span class="p">,</span>
|
||
<span class="s2">"The cat sat on the mat"</span><span class="p">,</span>
|
||
<span class="s2">"The cat sat on the mat."</span><span class="p">,</span>
|
||
|
||
<span class="c1"># Paraphrases</span>
|
||
<span class="s2">"On the mat, the cat was sitting."</span><span class="p">,</span>
|
||
<span class="s2">"The feline rested on the rug."</span><span class="p">,</span>
|
||
|
||
<span class="c1"># Structural changes</span>
|
||
<span class="s2">"The quick brown fox jumps over the lazy dog."</span><span class="p">,</span>
|
||
<span class="s2">"Over the lazy dog jumps the quick brown fox."</span><span class="p">,</span>
|
||
|
||
<span class="c1"># Different content</span>
|
||
<span class="s2">"The dog ran in the park."</span><span class="p">,</span>
|
||
<span class="s2">"I love programming."</span><span class="p">,</span>
|
||
<span class="s2">"She enjoys reading books."</span><span class="p">,</span>
|
||
|
||
<span class="c1"># Edge cases</span>
|
||
<span class="s2">"Short."</span><span class="p">,</span>
|
||
<span class="s2">"A B C D E F G"</span><span class="p">,</span>
|
||
<span class="s2">""</span>
|
||
<span class="p">]</span>
|
||
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Loaded </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">test_sentences</span><span class="p">)</span><span class="si">}</span><span class="s2"> test sentences"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>Loaded 13 test sentences
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=1c26616777253f10">
|
||
<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>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=e003ac06a58cfbb4">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [5]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">analyze_text_statistics</span><span class="p">(</span><span class="n">sentences</span><span class="p">):</span>
|
||
<span class="n">stats</span> <span class="o">=</span> <span class="p">[]</span>
|
||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">sent</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sentences</span><span class="p">):</span>
|
||
<span class="n">doc</span> <span class="o">=</span> <span class="n">nlp</span><span class="p">(</span><span class="n">sent</span><span class="p">)</span>
|
||
<span class="n">words</span> <span class="o">=</span> <span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">token</span><span class="o">.</span><span class="n">is_space</span><span class="p">]</span>
|
||
<span class="n">alpha_words</span> <span class="o">=</span> <span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">is_alpha</span><span class="p">]</span>
|
||
|
||
<span class="n">stats</span><span class="o">.</span><span class="n">append</span><span class="p">({</span>
|
||
<span class="s1">'sentence_id'</span><span class="p">:</span> <span class="n">i</span><span class="p">,</span>
|
||
<span class="s1">'sentence'</span><span class="p">:</span> <span class="n">sent</span><span class="p">,</span>
|
||
<span class="s1">'char_length'</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">sent</span><span class="p">),</span>
|
||
<span class="s1">'word_count'</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">words</span><span class="p">),</span>
|
||
<span class="s1">'alpha_word_count'</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">alpha_words</span><span class="p">),</span>
|
||
<span class="s1">'avg_word_length'</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="n">word</span><span class="p">)</span> <span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">alpha_words</span><span class="p">])</span> <span class="k">if</span> <span class="n">alpha_words</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span>
|
||
<span class="s1">'has_punctuation'</span><span class="p">:</span> <span class="nb">any</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">is_punct</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">),</span>
|
||
<span class="s1">'is_empty'</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">sent</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> <span class="o">==</span> <span class="mi">0</span>
|
||
<span class="p">})</span>
|
||
|
||
<span class="k">return</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">stats</span><span class="p">)</span>
|
||
|
||
<span class="n">stats_df</span> <span class="o">=</span> <span class="n">analyze_text_statistics</span><span class="p">(</span><span class="n">test_sentences</span><span class="p">)</span>
|
||
<span class="n">display</span><span class="p">(</span><span class="n">stats_df</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Visualize basic statistics</span>
|
||
<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">8</span><span class="p">))</span>
|
||
|
||
<span class="c1"># Character length distribution</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">bar</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">stats_df</span><span class="p">)),</span> <span class="n">stats_df</span><span class="p">[</span><span class="s1">'char_length'</span><span class="p">])</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Character Length by Sentence'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">'Sentence ID'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">'Characters'</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Word count distribution</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">bar</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">stats_df</span><span class="p">)),</span> <span class="n">stats_df</span><span class="p">[</span><span class="s1">'word_count'</span><span class="p">])</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Word Count by Sentence'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">'Sentence ID'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">'Words'</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Average word length</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">bar</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">stats_df</span><span class="p">)),</span> <span class="n">stats_df</span><span class="p">[</span><span class="s1">'avg_word_length'</span><span class="p">])</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Average Word Length'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">'Sentence ID'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">'Characters'</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Sentence type breakdown</span>
|
||
<span class="n">types</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'With Punctuation'</span> <span class="k">if</span> <span class="n">x</span> <span class="k">else</span> <span class="s1">'No Punctuation'</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">stats_df</span><span class="p">[</span><span class="s1">'has_punctuation'</span><span class="p">]]</span>
|
||
<span class="n">type_counts</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Series</span><span class="p">(</span><span class="n">types</span><span class="p">)</span><span class="o">.</span><span class="n">value_counts</span><span class="p">()</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">pie</span><span class="p">(</span><span class="n">type_counts</span><span class="o">.</span><span class="n">values</span><span class="p">,</span> <span class="n">labels</span><span class="o">=</span><span class="n">type_counts</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">autopct</span><span class="o">=</span><span class="s1">'</span><span class="si">%1.1f%%</span><span class="s1">'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Punctuation Distribution'</span><span class="p">)</span>
|
||
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output" data-mime-type="text/html" tabindex="0">
|
||
<div>
|
||
<style scoped="">
|
||
.dataframe tbody tr th:only-of-type {
|
||
vertical-align: middle;
|
||
}
|
||
|
||
.dataframe tbody tr th {
|
||
vertical-align: top;
|
||
}
|
||
|
||
.dataframe thead th {
|
||
text-align: right;
|
||
}
|
||
</style>
|
||
<table border="1" class="dataframe">
|
||
<thead>
|
||
<tr style="text-align: right;">
|
||
<th></th>
|
||
<th>sentence_id</th>
|
||
<th>sentence</th>
|
||
<th>char_length</th>
|
||
<th>word_count</th>
|
||
<th>alpha_word_count</th>
|
||
<th>avg_word_length</th>
|
||
<th>has_punctuation</th>
|
||
<th>is_empty</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<th>0</th>
|
||
<td>0</td>
|
||
<td>The cat sat on the mat.</td>
|
||
<td>23</td>
|
||
<td>7</td>
|
||
<td>6</td>
|
||
<td>2.833333</td>
|
||
<td>True</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>1</th>
|
||
<td>1</td>
|
||
<td>The cat sat on the mat</td>
|
||
<td>22</td>
|
||
<td>6</td>
|
||
<td>6</td>
|
||
<td>2.833333</td>
|
||
<td>False</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>2</th>
|
||
<td>2</td>
|
||
<td>The cat sat on the mat.</td>
|
||
<td>28</td>
|
||
<td>7</td>
|
||
<td>6</td>
|
||
<td>2.833333</td>
|
||
<td>True</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>3</th>
|
||
<td>3</td>
|
||
<td>On the mat, the cat was sitting.</td>
|
||
<td>32</td>
|
||
<td>9</td>
|
||
<td>7</td>
|
||
<td>3.428571</td>
|
||
<td>True</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>4</th>
|
||
<td>4</td>
|
||
<td>The feline rested on the rug.</td>
|
||
<td>29</td>
|
||
<td>7</td>
|
||
<td>6</td>
|
||
<td>3.833333</td>
|
||
<td>True</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>5</th>
|
||
<td>5</td>
|
||
<td>The quick brown fox jumps over the lazy dog.</td>
|
||
<td>44</td>
|
||
<td>10</td>
|
||
<td>9</td>
|
||
<td>3.888889</td>
|
||
<td>True</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>6</th>
|
||
<td>6</td>
|
||
<td>Over the lazy dog jumps the quick brown fox.</td>
|
||
<td>44</td>
|
||
<td>10</td>
|
||
<td>9</td>
|
||
<td>3.888889</td>
|
||
<td>True</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>7</th>
|
||
<td>7</td>
|
||
<td>The dog ran in the park.</td>
|
||
<td>24</td>
|
||
<td>7</td>
|
||
<td>6</td>
|
||
<td>3.000000</td>
|
||
<td>True</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>8</th>
|
||
<td>8</td>
|
||
<td>I love programming.</td>
|
||
<td>19</td>
|
||
<td>4</td>
|
||
<td>3</td>
|
||
<td>5.333333</td>
|
||
<td>True</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>9</th>
|
||
<td>9</td>
|
||
<td>She enjoys reading books.</td>
|
||
<td>25</td>
|
||
<td>5</td>
|
||
<td>4</td>
|
||
<td>5.250000</td>
|
||
<td>True</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>10</th>
|
||
<td>10</td>
|
||
<td>Short.</td>
|
||
<td>6</td>
|
||
<td>2</td>
|
||
<td>1</td>
|
||
<td>5.000000</td>
|
||
<td>True</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>11</th>
|
||
<td>11</td>
|
||
<td>A B C D E F G</td>
|
||
<td>13</td>
|
||
<td>7</td>
|
||
<td>7</td>
|
||
<td>1.000000</td>
|
||
<td>False</td>
|
||
<td>False</td>
|
||
</tr>
|
||
<tr>
|
||
<th>12</th>
|
||
<td>12</td>
|
||
<td></td>
|
||
<td>0</td>
|
||
<td>0</td>
|
||
<td>0</td>
|
||
<td>0.000000</td>
|
||
<td>False</td>
|
||
<td>True</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
|
||
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABKUAAAMWCAYAAAAgRDUeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAzKxJREFUeJzs3Wd4VFX39/HfpIeQhCQEEiAkIYD0YijSiyAiggiKKEpHbw1KURT0RroUpShSvRUsYKGKBRCR3qQIgkg1FCmhJoEACST7ecGT+TMkQBLCTBK+n+uaS2affc5ec2ZkFmv22cdijDECAAAAAAAA7MjJ0QEAAAAAAADg/kNRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKuEsWi0U9e/Z0dBi4xzp37qz8+fNnef+wsDA9/vjj2RgRAABwtJUrV8pisWjlypWODsUhDh06JIvFog8++MDRoQDIpShKAbdw8OBBvfTSSypRooQ8PDzk4+OjOnXq6MMPP9Tly5cdHd5dO378uAYPHqzt27fbbczUxG3u3Ll2GzMzLl26pMGDB+fqxPL06dPq1auXypQpI09PTxUqVEg1atTQW2+9pYsXL97Tsd977z0tXLjwno4BALj/fPfdd7JYLFqwYEGabZUrV5bFYtGKFSvSbCtevLhq165tjxAzLDfkl5MnT9bMmTMdHUYaO3fu1FNPPaXQ0FB5eHioaNGiatq0qSZOnHhPx3VEzgzcT1wcHQCQE/300096+umn5e7uro4dO6pChQpKSkrS2rVr1a9fP/3111+aPn26o8O8K8ePH9eQIUMUFhamKlWqODqcHOHSpUsaMmSIJKlhw4aODSYLzp07p2rVqik+Pl5du3ZVmTJldPbsWf3555+aMmWKXn755bua7XUn7733np566im1bt36no0BALj/1K1bV5K0du1aPfnkk9b2+Ph47dq1Sy4uLlq3bp0aNWpk3Xb06FEdPXpU7du3t3u8t5Jb8svJkyerYMGC6ty5s6NDsVq/fr0aNWqk4sWLq0ePHgoKCtLRo0e1ceNGffjhh3r11Vfv2djkzMC9RVEKuEl0dLTat2+v0NBQ/fbbbwoODrZui4qK0oEDB/TTTz/ZNaaEhAR5eXnZdcysyk2x5jWffvqpjhw5onXr1qX5ZTg+Pl5ubm4OigwAgKwrUqSIwsPDtXbtWpv2DRs2yBijp59+Os221OepBa2sMsboypUr8vT0vKvj5MT8MjcZMWKEfH19tXnzZhUoUMBm26lTpxwTFIBsweV7wE3GjBmjixcv6tNPP7VJGFKVLFlSvXr1StO+cOFCVahQQe7u7ipfvryWLFlis/3w4cN65ZVX9MADD8jT01MBAQF6+umndejQIZt+M2fOlMVi0apVq/TKK6+oUKFCKlasWKaOIUmxsbHq06ePwsLC5O7urmLFiqljx446c+aMVq5cqerVq0uSunTpIovFIovFYjNVe9OmTXr00Ufl6+urfPnyqUGDBlq3bp3NGIMHD5bFYtHu3bv13HPPyc/P766Tv9TYe/furZCQELm7u6tkyZIaPXq0UlJSrH1uXMNg+vTpioiIkLu7u6pXr67NmzenOeacOXNUrlw5eXh4qEKFClqwYIE6d+6ssLAw6/ECAwMlSUOGDLGek8GDB9sc59ixY2rdurXy58+vwMBAvfHGG0pOTs7wa/vll19UpUoVeXh4qFy5cpo/f7512z///COLxaLx48en2W/9+vWyWCz6+uuvb3nsgwcPytnZWQ899FCabT4+PvLw8LBpy8x7fODAAXXu3FkFChSQr6+vunTpokuXLln7WSwWJSQk6PPPP7eeuxt/YT127Ji6du2qwoULW/8f+eyzz2zGSr2887vvvtOIESNUrFgxeXh46OGHH9aBAwfSvKZNmzbpsccek5+fn7y8vFSpUiV9+OGHNn327Nmjp556Sv7+/vLw8FC1atW0aNGiW55DAEDOVLduXf3xxx82l7itW7dO5cuXV/PmzbVx40abPGHdunWyWCyqU6eOJOnatWsaNmyYNV8ICwvT22+/rcTERJtxUteAXLp0qapVqyZPT09NmzZNkvTvv/+qdevW8vLyUqFChdSnT580+99KZvPLjMabXq6S+jpu/B5OzS/XrVunvn37KjAwUF5eXnryySd1+vRpm/3++usvrVq1yvp9ntHZ4+PHj1doaKg8PT3VoEED7dq1y7ptxowZslgs+uOPP9Ls995778nZ2VnHjh275bEPHjyo8uXLpylISVKhQoXStH311VeKjIyUp6en/P391b59ex09etSmT8OGDVWhQgXt3r1bjRo1Ur58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J5/IxeV6Cnbt2jV1795dvXv31urVqx0cIQAAgH1lqSj1/PPPW/8cGRmpw4cPa8+ePSpevLgKFiyYbcEBAADkFVu2bLEpSEmSi4uL3nzzTVWrVs2BkQEAADhGpi/fu3r1qiIiIqxrIUhSvnz59OCDD1KQAgAAuAUfHx8dOXIkTfvRo0fl7e3tgIgAAAAcK9MzpVxdXXXlypV7EQuyWVj/nxwy7qFR3H0RAICbPfPMM+rWrZs++OAD1a5dW5K0bt069evXT88++6yDowMA5Fb8uw+5WZYu34uKitLo0aP1v//9z2YKOgAAAGxFR0crPDxcH3zwgSwWizp27Khr167JGCM3Nze9/PLLGjVqlKPDBAAAsLssVZQ2b96s5cuX65dfflHFihXl5eVls33+/PnZEhwAAEBuFxERodDQUDVq1EiNGjXSgQMHFBsba92WL18+xwYIAADgIFkqShUoUEBt27bN7lgAAADynN9++00rV67UypUr9fXXXyspKUklSpRQ48aN1bhxYzVs2FCFCxd2dJgAAAB2l6Wi1IwZM7I7DgAAgDypYcOGatiwoSTpypUrWr9+vbVI9fnnn+vq1asqU6aM/vrrL8cGCgAAYGcsCAUAAGAnHh4eaty4serWratGjRpp8eLFmjZtmvbs2ePo0AAAAOwuy0WpuXPn6rvvvtORI0eUlJRks23btm13HRgAAEBekZSUpI0bN2rFihVauXKlNm3apJCQENWvX18ff/yxGjRo4OgQAQAA7M4pKzt99NFH6tKliwoXLqw//vhDNWrUUEBAgP755x81b948u2MEAADItRo3biw/Pz+98sorOnXqlF566SUdPHhQe/fu1SeffKIXXnhBxYsXd3SYAAAAdpelotTkyZM1ffp0TZw4UW5ubnrzzTe1bNkyvfbaa4qLi8vuGAEAAHKtNWvWKCAgQI0bN9bDDz+spk2bKjg42NFhAQAAOFyWilJHjhxR7dq1JUmenp66cOGCJOmFF17Q119/neHjjBw5UtWrV5e3t7cKFSqk1q1ba+/evTZ9rly5oqioKAUEBCh//vxq27atYmJishI2AACA3cXGxmr69OnKly+fRo8erSJFiqhixYrq2bOn5s6dq9OnTzs6RAAAAIfIUlEqKChI586dkyQVL15cGzdulCRFR0fLGJPh46xatUpRUVHauHGjli1bpqtXr+qRRx5RQkKCtU+fPn30ww8/aM6cOVq1apWOHz+uNm3aZCVsAAAAu/Py8tKjjz6qUaNGadOmTTpz5ozGjBmjfPnyacyYMSpWrJgqVKjg6DABAADsLksLnTdu3FiLFi1S1apV1aVLF/Xp00dz587Vli1bMlUwWrJkic3zmTNnqlChQtq6davq16+vuLg4ffrpp5o9e7YaN24sSZoxY4bKli2rjRs36qGHHspK+AAAAA7j5eUlf39/+fv7y8/PTy4uLvr7778dHRYAAIDdZakoNX36dKWkpEiS9dK69evXq1WrVnrppZeyHEzqelT+/v6SpK1bt+rq1atq0qSJtU+ZMmVUvHhxbdiwId2iVGJiohITE63P4+PjsxwPAADA3UpJSdGWLVu0cuVKrVixQuvWrVNCQoKKFi2qRo0aadKkSWrUqJGjwwQAALC7LBWlnJyc5OT0f1f+tW/fXu3bt7+rQFJSUtS7d2/VqVPHOoX95MmTcnNzU4ECBWz6Fi5cWCdPnkz3OCNHjtSQIUPuKhYAAIDsUqBAASUkJCgoKEiNGjXS+PHj1bBhQ0VERDg6NAAAAIfKUlFKur5o5++//65Tp05ZZ02l6tixY6aPFxUVpV27dmnt2rVZDUmSNGDAAPXt29f6PD4+XiEhIXd1TAAAgKx6//331ahRI5UuXdrRoQAAAOQoWSpK/fDDD+rQoYMuXrwoHx8fWSwW6zaLxZLpolTPnj31448/avXq1SpWrJi1PSgoSElJSYqNjbWZLRUTE6OgoKB0j+Xu7i53d/fMvSAAAIB75G6WNgAAAMjLsnT3vddff11du3bVxYsXFRsbq/Pnz1sfqXflywhjjHr27KkFCxbot99+U3h4uM32yMhIubq6avny5da2vXv36siRI6pVq1ZWQgcAAAAAAEAOkKWZUseOHdNrr72mfPny3dXgUVFRmj17tr7//nt5e3tb14ny9fWVp6enfH191a1bN/Xt21f+/v7y8fHRq6++qlq1anHnPQAAAAAAgFwsS0WpZs2aacuWLSpRosRdDT5lyhRJUsOGDW3aZ8yYoc6dO0uSxo8fLycnJ7Vt21aJiYlq1qyZJk+efFfjAgAAAAAAwLEyXJRatGiR9c8tWrRQv379tHv3blWsWFGurq42fVu1apWhYxpj7tjHw8NDkyZN0qRJkzIaKgAAAAAAAHK4DBelWrdunaZt6NChadosFouSk5PvKigAwL0T1v8nh419aFQLh40NAAAAIGfJcFEqJSXlXsYBAAAAAACA+0im7r7322+/qVy5coqPj0+zLS4uTuXLl9eaNWuyLTgAAAAAAADkTZkqSk2YMEE9evSQj49Pmm2+vr566aWXNG7cuGwLDgAAAAAAAHlTpopSO3bs0KOPPnrL7Y888oi2bt1610EBAAAAAAAgb8tUUSomJibNnfZu5OLiotOnT991UAAAAMg+o0aNksViUe/evR0dCgAAgFWmilJFixbVrl27brn9zz//VHBw8F0HBQAAgOyxefNmTZs2TZUqVXJ0KAAAADYyVZR67LHHNHDgQF25ciXNtsuXL2vQoEF6/PHHsy04AAAAZN3FixfVoUMHffLJJ/Lz83N0OAAAADZcMtP5v//9r+bPn6/SpUurZ8+eeuCBByRJe/bs0aRJk5ScnKx33nnnngQKAACAzImKilKLFi3UpEkTDR8+/Jb9EhMTlZiYaH2e3p2WAQAAslumilKFCxfW+vXr9fLLL2vAgAEyxkiSLBaLmjVrpkmTJqlw4cL3JFAAAABk3DfffKNt27Zp8+bNd+w7cuRIDRkyxA5RAUDuFdb/J4eMe2hUC4eMC9hDpopSkhQaGqqff/5Z58+f14EDB2SMUalSpZgSDgAAkEMcPXpUvXr10rJly+Th4XHH/gMGDFDfvn2tz+Pj4xUSEnIvQwQAAMh8USqVn5+fqlevnp2xAAAAIBts3bpVp06d0oMPPmhtS05O1urVq/Xxxx8rMTFRzs7O1m3u7u5yd3d3RKgAAOA+luWiFAAAAHKmhx9+WDt37rRp69Kli8qUKaO33nrLpiAFAADgKBSlAAAA8hhvb29VqFDBps3Ly0sBAQFp2gEAABzFydEBAAAAAAAA4P7DTCkAAID7wMqVKx0dAgAAgA1mSgEAAAAAAMDuKEoBAAAAAADA7ihKAQAAAAAAwO4oSgEAAAAAAMDuKEoBAAAAAADA7ihKAQAAAAAAwO4oSgEAAAAAAMDuKEoBAAAAAADA7ihKAQAAAAAAwO4oSgEAAAAAAMDuKEoBAAAAAADA7ihKAQAAAAAAwO4oSgEAAAAAAMDuKEoBAAAAAADA7ihKAQAAAAAAwO4oSgEAAAAAAMDuKEoBAAAAAADA7ihKAQAAAAAAwO4oSgEAAAAAAMDuKEoBAAAAAADA7ihKAQAAAAAAwO4oSgEAAAAAAMDuKEoBAAAAAADA7ihKAQAAAAAAwO5cHB0AAADIvLD+Pzlk3EOjWjhkXAAAAOQ9zJQCAAAAAACA3VGUAgAAAAAAgN1RlAIAAAAAAIDdUZQCAAAAAACA3VGUAgAAAAAAgN1RlAIAAAAAAIDdUZQCAAAAAACA3VGUAgAAAAAAgN1RlAIAAAAAAIDdUZQCAAAAAACA3VGUAgAAAAAAgN1RlAIAAAAAAIDdUZQCAAAAAACA3VGUAgAAAAAAgN1RlAIAAAAAAIDdObQotXr1arVs2VJFihSRxWLRwoULbbYbY/Tuu+8qODhYnp6eatKkifbv3++YYAEAAAAAAJBtHFqUSkhIUOXKlTVp0qR0t48ZM0YfffSRpk6dqk2bNsnLy0vNmjXTlStX7BwpAAAAAAAAspOLIwdv3ry5mjdvnu42Y4wmTJig//73v3riiSckSV988YUKFy6shQsXqn379vYMFQAAAAAAANkox64pFR0drZMnT6pJkybWNl9fX9WsWVMbNmxwYGQAAAAAAAC4Ww6dKXU7J0+elCQVLlzYpr1w4cLWbelJTExUYmKi9Xl8fPy9CRAAAAAAAABZlmNnSmXVyJEj5evra32EhIQ4OiQAAAAAAADcJMcWpYKCgiRJMTExNu0xMTHWbekZMGCA4uLirI+jR4/e0zgBAAAAAACQeTm2KBUeHq6goCAtX77c2hYfH69NmzapVq1at9zP3d1dPj4+Ng8AAAAAAADkLA4tSl28eFHbt2/X9u3bJV1f3Hz79u06cuSILBaLevfureHDh2vRokXauXOnOnbsqCJFiqh169aODBsAACBHGzlypKpXry5vb28VKlRIrVu31t69ex0dFgAAgA2HLnS+ZcsWNWrUyPq8b9++kqROnTpp5syZevPNN5WQkKAXX3xRsbGxqlu3rpYsWSIPDw9HhQwAAJDjrVq1SlFRUapevbquXbumt99+W4888oh2794tLy8vR4cHAAAgycFFqYYNG8oYc8vtFotFQ4cO1dChQ+0YFQAAQO62ZMkSm+czZ85UoUKFtHXrVtWvX99BUQEAANjKsWtKAQAAIHvExcVJkvz9/R0cCQAAwP9x6EwpAAAA3FspKSnq3bu36tSpowoVKqTbJzExUYmJidbn8fHx9goPAADcxyhKAQAA5GFRUVHatWuX1q5de8s+I0eO1JAhQ+wYFQAgLwvr/5PDxj40qoXDxkbmcfkeAABAHtWzZ0/9+OOPWrFihYoVK3bLfgMGDFBcXJz1cfToUTtGCQAA7lfMlAIAAMhjjDF69dVXtWDBAq1cuVLh4eG37e/u7i53d3c7RQcAAHAdRSkAAIA8JioqSrNnz9b3338vb29vnTx5UpLk6+srT09PB0cHAABwHZfvAQAA5DFTpkxRXFycGjZsqODgYOvj22+/dXRoAAAAVsyUAgAAyGOMMY4OAQAA4I6YKQUAAAAAAAC7oygFAAAAAAAAu6MoBQAAAAAAALujKAUAAAAAAAC7oygFAAAAAAAAu6MoBQAAAAAAALujKAUAAAAAAAC7oygFAAAAAAAAu6MoBQAAAAAAALujKAUAAAAAAAC7oygFAAAAAAAAu6MoBQAAAAAAALujKAUAAAAAAAC7c3F0AAAA5GRh/X9yyLiHRrVwyLgAAACAvTBTCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2R1EKAAAAAAAAdkdRCgAAAAAAAHZHUQoAAAAAAAB2lyuKUpMmTVJYWJg8PDxUs2ZN/f77744OCQAAIMcjhwIAADlZji9Kffvtt+rbt68GDRqkbdu2qXLlymrWrJlOnTrl6NAAAAByLHIoAACQ0+X4otS4cePUo0cPdenSReXKldPUqVOVL18+ffbZZ44ODQAAIMcihwIAADmdi6MDuJ2kpCRt3bpVAwYMsLY5OTmpSZMm2rBhQ7r7JCYmKjEx0fo8Li5OkhQfH3/P4kxJvHTPjn07d3pNOTEuR8Uk5cy4eA8zJyfGxXuYOTkxrtz4Hko5N668KPU1G2McHEnGZTaHckT+JOXMz3FOjEkirpvxHmZcbowrJ8YkEdfNcuJ7KOXMuMifbsPkYMeOHTOSzPr1623a+/XrZ2rUqJHuPoMGDTKSePDgwYMHDx48svVx9OhRe6Q/2SKzORT5Ew8ePHjw4MHjXjzulD/l6JlSWTFgwAD17dvX+jwlJUXnzp1TQECALBaLAyNLKz4+XiEhITp69Kh8fHwcHU6OxrnKHM5XxnGuMofzlXGcq4zL6efKGKMLFy6oSJEijg7lnslN+ZOU8z8zOQnnKuM4V5nD+co4zlXGca4yJyefr4zmTzm6KFWwYEE5OzsrJibGpj0mJkZBQUHp7uPu7i53d3ebtgIFCtyrELOFj49PjvsA5VScq8zhfGUc5ypzOF8Zx7nKuJx8rnx9fR0dQqZkNofKjfmTlLM/MzkN5yrjOFeZw/nKOM5VxnGuMiennq+M5E85eqFzNzc3RUZGavny5da2lJQULV++XLVq1XJgZAAAADkXORQAAMgNcvRMKUnq27evOnXqpGrVqqlGjRqaMGGCEhIS1KVLF0eHBgAAkGORQwEAgJwuxxelnnnmGZ0+fVrvvvuuTp48qSpVqmjJkiUqXLiwo0O7a+7u7ho0aFCa6fJIi3OVOZyvjONcZQ7nK+M4VxnHubo3yKEgca4yg3OVOZyvjONcZRznKnPywvmyGJOL7m8MAAAAAACAPCFHrykFAAAAAACAvImiFAAAAAAAAOyOohQAAAAAAADsjqIUAAAAAAAA7I6ilANNmjRJYWFh8vDwUM2aNfX77787OqQcZ+TIkapevbq8vb1VqFAhtW7dWnv37nV0WLnCqFGjZLFY1Lt3b0eHkmMdO3ZMzz//vAICAuTp6amKFStqy5Ytjg4rx0lOTtbAgQMVHh4uT09PRUREaNiwYeI+GdetXr1aLVu2VJEiRWSxWLRw4UKb7cYYvfvuuwoODpanp6eaNGmi/fv3OyZYB7vdubp69areeustVaxYUV5eXipSpIg6duyo48ePOy5g5EjkTxlDDpV15FC3R/6UceRQt0b+lDl5OYeiKOUg3377rfr27atBgwZp27Ztqly5spo1a6ZTp045OrQcZdWqVYqKitLGjRu1bNkyXb16VY888ogSEhIcHVqOtnnzZk2bNk2VKlVydCg51vnz51WnTh25urpq8eLF2r17t8aOHSs/Pz9Hh5bjjB49WlOmTNHHH3+sv//+W6NHj9aYMWM0ceJER4eWIyQkJKhy5cqaNGlSutvHjBmjjz76SFOnTtWmTZvk5eWlZs2a6cqVK3aO1PFud64uXbqkbdu2aeDAgdq2bZvmz5+vvXv3qlWrVg6IFDkV+VPGkUNlDTnU7ZE/ZQ451K2RP2VOns6hDByiRo0aJioqyvo8OTnZFClSxIwcOdKBUeV8p06dMpLMqlWrHB1KjnXhwgVTqlQps2zZMtOgQQPTq1cvR4eUI7311lumbt26jg4jV2jRooXp2rWrTVubNm1Mhw4dHBRRziXJLFiwwPo8JSXFBAUFmffff9/aFhsba9zd3c3XX3/tgAhzjpvPVXp+//13I8kcPnzYPkEhxyN/yjpyqDsjh7oz8qfMIYfKGPKnzMlrORQzpRwgKSlJW7duVZMmTaxtTk5OatKkiTZs2ODAyHK+uLg4SZK/v7+DI8m5oqKi1KJFC5vPF9JatGiRqlWrpqefflqFChVS1apV9cknnzg6rBypdu3aWr58ufbt2ydJ2rFjh9auXavmzZs7OLKcLzo6WidPnrT5/9HX11c1a9bk7/sMiIuLk8ViUYECBRwdCnIA8qe7Qw51Z+RQd0b+lDnkUFlD/nT3clMO5eLoAO5HZ86cUXJysgoXLmzTXrhwYe3Zs8dBUeV8KSkp6t27t+rUqaMKFSo4Opwc6ZtvvtG2bdu0efNmR4eS4/3zzz+aMmWK+vbtq7ffflubN2/Wa6+9Jjc3N3Xq1MnR4eUo/fv3V3x8vMqUKSNnZ2clJydrxIgR6tChg6NDy/FOnjwpSen+fZ+6Dem7cuWK3nrrLT377LPy8fFxdDjIAcifso4c6s7IoTKG/ClzyKGyhvzp7uS2HIqiFHKNqKgo7dq1S2vXrnV0KDnS0aNH1atXLy1btkweHh6ODifHS0lJUbVq1fTee+9JkqpWrapdu3Zp6tSpJFU3+e677zRr1izNnj1b5cuX1/bt29W7d28VKVKEc4V74urVq2rXrp2MMZoyZYqjwwFyPXKo2yOHyjjyp8whh4K95cYcisv3HKBgwYJydnZWTEyMTXtMTIyCgoIcFFXO1rNnT/34449asWKFihUr5uhwcqStW7fq1KlTevDBB+Xi4iIXFxetWrVKH330kVxcXJScnOzoEHOU4OBglStXzqatbNmyOnLkiIMiyrn69eun/v37q3379qpYsaJeeOEF9enTRyNHjnR0aDle6t/p/H2fcanJ1OHDh7Vs2bJc8Qsf7IP8KWvIoe6MHCrjyJ8yhxwqa8ifsia35lAUpRzAzc1NkZGRWr58ubUtJSVFy5cvV61atRwYWc5jjFHPnj21YMEC/fbbbwoPD3d0SDnWww8/rJ07d2r79u3WR7Vq1dShQwdt375dzs7Ojg4xR6lTp06aW2Pv27dPoaGhDooo57p06ZKcnGy/LpydnZWSkuKgiHKP8PBwBQUF2fx9Hx8fr02bNvH3fTpSk6n9+/fr119/VUBAgKNDQg5C/pQ55FAZRw6VceRPmUMOlTXkT5mXm3MoLt9zkL59+6pTp06qVq2aatSooQkTJighIUFdunRxdGg5SlRUlGbPnq3vv/9e3t7e1muIfX195enp6eDochZvb+8060R4eXkpICCA9SPS0adPH9WuXVvvvfee2rVrp99//13Tp0/X9OnTHR1ajtOyZUuNGDFCxYsXV/ny5fXHH39o3Lhx6tq1q6NDyxEuXryoAwcOWJ9HR0dr+/bt8vf3V/HixdW7d28NHz5cpUqVUnh4uAYOHKgiRYqodevWjgvaQW53roKDg/XUU09p27Zt+vHHH5WcnGz9O9/f319ubm6OChs5CPlTxpFDZRw5VMaRP2UOOdStkT9lTp7OoRx787/728SJE03x4sWNm5ubqVGjhtm4caOjQ8pxJKX7mDFjhqNDyxW4nfHt/fDDD6ZChQrG3d3dlClTxkyfPt3RIeVI8fHxplevXqZ48eLGw8PDlChRwrzzzjsmMTHR0aHlCCtWrEj376lOnToZY67f1njgwIGmcOHCxt3d3Tz88MNm7969jg3aQW53rqKjo2/5d/6KFSscHTpyEPKnjCGHujvkULdG/pRx5FC3Rv6UOXk5h7IYY8y9KXcBAAAAAAAA6WNNKQAAAAAAANgdRSkAAAAAAADYHUUpAAAAAAAA2B1FKQAAAAAAANgdRSkAAAAAAADYHUUpAAAAAAAA2B1FKQAAAAAAANgdRSkAAAAAAADYHUUpAPfU6dOn9fLLL6t48eJyd3dXUFCQmjVrpnXr1mXrOA0bNlTv3r2z9Zj3ysyZM1WgQAGb5xaLRRaLRc7OzvLz81PNmjU1dOhQxcXFOS5QAADgMORQaZFDAXmPi6MDAJC3tW3bVklJSfr8889VokQJxcTEaPny5Tp79qyjQ8tRfHx8tHfvXhljFBsbq/Xr12vkyJGaMWOG1q1bpyJFijg6RAAAYEfkUBlDDgXkbsyUAnDPxMbGas2aNRo9erQaNWqk0NBQ1ahRQwMGDFCrVq1s+nXv3l2BgYHy8fFR48aNtWPHDuv2wYMHq0qVKvryyy8VFhYmX19ftW/fXhcuXJAkde7cWatWrdKHH35o/bXs0KFDkqRdu3apefPmyp8/vwoXLqwXXnhBZ86csR67YcOGeu211/Tmm2/K399fQUFBGjx4cJrX8dJLL6lw4cLy8PBQhQoV9OOPP1q3r127VvXq1ZOnp6dCQkL02muvKSEhIVPnymKxKCgoSMHBwSpbtqy6deum9evX6+LFi3rzzTczdSwAAJC7kUNlHDkUkLtRlAJwz+TPn1/58+fXwoULlZiYeMt+Tz/9tE6dOqXFixdr69atevDBB/Xwww/r3Llz1j4HDx7UwoUL9eOPP+rHH3/UqlWrNGrUKEnShx9+qFq1aqlHjx46ceKETpw4oZCQEMXGxqpx48aqWrWqtmzZoiVLligmJkbt2rWzGf/zzz+Xl5eXNm3apDFjxmjo0KFatmyZJCklJUXNmzfXunXr9NVXX2n37t0aNWqUnJ2drXE9+uijatu2rf788099++23Wrt2rXr27HnX569QoULq0KGDFi1apOTk5Ls+HgAAyB3Ioe4OORSQixgAuIfmzp1r/Pz8jIeHh6ldu7YZMGCA2bFjh3X7mjVrjI+Pj7ly5YrNfhEREWbatGnGGGMGDRpk8uXLZ+Lj463b+/XrZ2rWrGl93qBBA9OrVy+bYwwbNsw88sgjNm1Hjx41kszevXut+9WtW9emT/Xq1c1bb71ljDFm6dKlxsnJydr/Zt26dTMvvviiTduaNWuMk5OTuXz5crr7zJgxw/j6+t7y+Y2mTJliJJmYmJh0twMAgLyJHCotcigg72GmFIB7qm3btjp+/LgWLVqkRx99VCtXrtSDDz6omTNnSpJ27NihixcvKiAgwPqrYP78+RUdHa2DBw9ajxMWFiZvb2/r8+DgYJ06deq2Y+/YsUMrVqywOW6ZMmUkyebYlSpVstnvxmNv375dxYoVU+nSpW85xsyZM23GaNasmVJSUhQdHZ3xE3ULxhhJ16emAwCA+wc51N0hhwJyBxY6B3DPeXh4qGnTpmratKkGDhyo7t27a9CgQercubMuXryo4OBgrVy5Ms1+N95dxdXV1WabxWJRSkrKbce9ePGiWrZsqdGjR6fZFhwcnKFje3p63nGMl156Sa+99lqabcWLF7/tvhnx999/y8fHRwEBAXd9LAAAkLuQQ2UdORSQO1CUAmB35cqV08KFCyVJDz74oE6ePCkXFxeFhYVl+Zhubm5p1gx48MEHNW/ePIWFhcnFJWt/3VWqVEn//vuv9u3bl+4vfQ8++KB2796tkiVLZun4t3Pq1CnNnj1brVu3lpMTE1sBALjfkUNlDDkUkHvwfyiAe+bs2bNq3LixvvrqK/3555+Kjo7WnDlzNGbMGD3xxBOSpCZNmqhWrVpq3bq1fvnlFx06dEjr16/XO++8oy1btmR4rLCwMG3atEmHDh3SmTNnlJKSoqioKJ07d07PPvusNm/erIMHD2rp0qXq0qVLhhe9bNCggerXr6+2bdtq2bJlio6O1uLFi7VkyRJJ0ltvvaX169erZ8+e2r59u/bv36/vv/8+04t0GmN08uRJnThxQn///bc+++wz1a5dW76+vtbFSAEAwP2BHCrjyKGA3I2ZUgDumfz586tmzZoaP368Dh48qKtXryokJEQ9evTQ22+/Len6NO+ff/5Z77zzjrp06aLTp08rKChI9evXV+HChTM81htvvKFOnTqpXLlyunz5sqKjoxUWFqZ169bprbfe0iOPPKLExESFhobq0UcfzdSvZvPmzdMbb7yhZ599VgkJCSpZsqQ1yalUqZJWrVqld955R/Xq1ZMxRhEREXrmmWcyda7i4+MVHBwsi8UiHx8fPfDAA+rUqZN69eolHx+fTB0LAADkbuRQGUcOBeRuFpO6AhwAAAAAAABgJ1y+BwAAAAAAALujKAUAAAAAAAC7oygFAAAAAAAAu6MoBQAAAAAAALujKAUAAAAAAAC7oygFAAAAAAAAu6MoBQAAAAAAALujKAUAAAAAAAC7oygFAAAAAAAAu6MoBQAAAAAAALujKAUAAAAAAAC7oygFAAAAAAAAu6MoBQAAAAAAALujKAUAAAAAAAC7oygFAAAAAAAAu6MoBQAAAAAAALujKAUAAAAAAAC7oygFAPdYw4YN1bBhQ0eHcc+sXLlSFotFc+fOdXQoAABAuSv3mDlzpiwWiw4dOnTPx+rcubPCwsKszw8dOiSLxaIPPvjgno8tSYMHD5bFYrHLWEBuQVEKyGUmT54si8WimjVrOjqUHKVcuXKqXLlymvYFCxbIYrGoQYMGabZ99tlnslgs+uWXX+wR4h2FhYXp8ccfd3QYtzR79mxNmDDB0WEAAO5jqQWM1IeHh4dKly6tnj17KiYmxtHhaf369Ro8eLBiY2Pv+Vi7d+/W4MGD7VLMyajUH6pSH+7u7ipcuLAaNmyo9957T6dPn86WcS5duqTBgwdr5cqV2XK87JSTYwNyIopSQC4za9YshYWF6ffff9eBAwccHU6OUbduXe3atUtxcXE27evWrZOLi4s2b96sq1evptnm7OysWrVq2TPUXIuiFAAgpxg6dKi+/PJLffzxx6pdu7amTJmiWrVq6dKlSw6Na/369RoyZIjdilJDhgxJtyj1yy+/OPRHt9dee01ffvmlpk+frn79+snf31+DBg1S2bJl9dtvv9n0feGFF3T58mWFhoZm+PiXLl3SkCFDMl34+eSTT7R3795M7ZNZt4vtv//9ry5fvnxPxwdyG4pSQC4SHR2t9evXa9y4cQoMDNSsWbPsHkNKSoquXLli93HvpG7dukpJSdH69ett2tetW6d27drp8uXL2rp1q822tWvXqlKlSvL29r6rsRMSEu5qfwAAkDnNmzfX888/r+7du2vmzJnq3bu3oqOj9f333zs6tBzBzc1Nbm5uDhu/Xr16ev7559WpUye98cYbmj9/vrZs2SJnZ2e1bdtWJ06csPZ1dnaWh4fHPb2sLTVXc3V1lbu7+z0b505cXFzk4eHhsPGBnIiiFJCLzJo1S35+fmrRooWeeuopm6LU1atX5e/vry5duqTZLz4+Xh4eHnrjjTesbYmJiRo0aJBKliwpd3d3hYSE6M0331RiYqLNvhaLRT179tSsWbNUvnx5ubu7a8mSJZKkDz74QLVr11ZAQIA8PT0VGRmZ7rpCly9f1muvvaaCBQvK29tbrVq10rFjx2SxWDR48GCbvseOHVPXrl1VuHBhubu7q3z58vrss8/ueG7q1q0r6XoRKtWVK1e0bds2tWnTRiVKlLDZdvr0ae3bt8+6nyT98ccfat68uXx8fJQ/f349/PDD2rhxo804qZcNrFq1Sq+88ooKFSqkYsWKWbdPnz5dERER8vT0VI0aNbRmzZo7xp5ZX331lSIjI+Xp6Sl/f3+1b99eR48etenTsGFDVahQQbt371ajRo2UL18+FS1aVGPGjElzvMOHD6tVq1by8vJSoUKF1KdPHy1dulQWi8X6K1/Dhg31008/6fDhw9Yp+TeuySBdL1iOGDFCxYoVk4eHhx5++GFm8wEA7KJx48aSrv+AJ916TaXbrSmU+h3u7u6u6tWra/PmzWn237Nnj9q1a6fAwEB5enrqgQce0DvvvCPp+npB/fr1kySFh4dbvy8PHTpkHWfmzJlpjnlzPnT48GG98soreuCBB+Tp6amAgAA9/fTTNjOiZs6cqaefflqS1KhRI+tYN35v3/z6T506pW7duqlw4cLy8PBQ5cqV9fnnn9v0yez5yIzKlStrwoQJio2N1ccff2zzWm5eU2rLli1q1qyZChYsKE9PT4WHh6tr167WGAMDAyVJQ4YMsb721HPYuXNn5c+fXwcPHtRjjz0mb29vdejQwbrt5vwl1fjx4xUaGipPT081aNBAu3btstmekc/UnWJLb02pa9euadiwYdZzHRYWprfffjtNTp66zMPatWtVo0YNeXh4qESJEvriiy/SP+FALuHi6AAAZNysWbPUpk0bubm56dlnn9WUKVO0efNmVa9eXa6urnryySc1f/58TZs2zebXsYULFyoxMVHt27eXdL140KpVK61du1YvvviiypYtq507d2r8+PHat2+fFi5caDPub7/9pu+++049e/ZUwYIFrV+8H374oVq1aqUOHTooKSlJ33zzjZ5++mn9+OOPatGihXX/zp0767vvvtMLL7yghx56SKtWrbLZniomJkYPPfSQtRAWGBioxYsXq1u3boqPj1fv3r1veW5KlCihIkWKaO3atda2zZs3KykpSbVr11bt2rW1bt06vf7665JknVGVWpT666+/VK9ePfn4+OjNN9+Uq6urpk2bpoYNG2rVqlVp1vB65ZVXFBgYqHfffdf669unn36ql156SbVr11bv3r31zz//qFWrVvL391dISMjt3toMGzFihAYOHKh27dqpe/fuOn36tCZOnKj69evrjz/+UIECBax9z58/r0cffVRt2rRRu3btNHfuXL311luqWLGimjdvLun6L4eNGzfWiRMn1KtXLwUFBWn27NlasWKFzbjvvPOO4uLi9O+//2r8+PGSpPz589v0GTVqlJycnPTGG28oLi5OY8aMUYcOHbRp06Zsee0AANzKwYMHJUkBAQFZ2n/27Nm6cOGCXnrpJVksFo0ZM0Zt2rTRP//8I1dXV0nSn3/+qXr16snV1VUvvviiwsLCdPDgQf3www8aMWKE2rRpo3379unrr7/W+PHjVbBgQUlSYGBgptZS2rx5s9avX6/27durWLFiOnTokKZMmaKGDRtq9+7dypcvn+rXr6/XXntNH330kd5++22VLVtWkqz/vdnly5fVsGFDHThwQD179lR4eLjmzJmjzp07KzY2Vr169cr0+ciKp556St26ddMvv/yiESNGpNvn1KlTeuSRRxQYGKj+/furQIECOnTokObPny/p+vmcMmWKXn75ZT355JNq06aNJKlSpUrWY1y7dk3NmjVT3bp19cEHHyhfvny3jeuLL77QhQsXFBUVpStXrujDDz9U48aNtXPnThUuXDjDry8jsd2se/fu+vzzz/XUU0/p9ddf16ZNmzRy5Ej9/fffWrBggU3fAwcOWM9hp06d9Nlnn6lz586KjIxU+fLlMxwnkKMYALnCli1bjCSzbNkyY4wxKSkpplixYqZXr17WPkuXLjWSzA8//GCz72OPPWZKlChhff7ll18aJycns2bNGpt+U6dONZLMunXrrG2SjJOTk/nrr7/SxHTp0iWb50lJSaZChQqmcePG1ratW7caSaZ37942fTt37mwkmUGDBlnbunXrZoKDg82ZM2ds+rZv3974+vqmGe9mTz/9tPH09DRJSUnGGGNGjhxpwsPDjTHGTJ482RQqVMja94033jCSzLFjx4wxxrRu3dq4ubmZgwcPWvscP37ceHt7m/r161vbZsyYYSSZunXrmmvXrtm89kKFCpkqVaqYxMREa/v06dONJNOgQYPbxm6MMaGhoaZFixa33H7o0CHj7OxsRowYYdO+c+dO4+LiYtPeoEEDI8l88cUX1rbExEQTFBRk2rZta20bO3askWQWLlxobbt8+bIpU6aMkWRWrFhhbW/RooUJDQ1NE9eKFSuMJFO2bFmb1/7hhx8aSWbnzp13fO0AAGRE6vfwr7/+ak6fPm2OHj1qvvnmGxMQEGA8PT3Nv//+a4y5/j2Y3ndvp06dbL7LoqOjjSQTEBBgzp07Z23//vvv0+RU9evXN97e3ubw4cM2x0xJSbH++f333zeSTHR0tE2f1HFmzJiRJqab86H08p0NGzak+V6fM2dOmu/qVDe//gkTJhhJ5quvvrK2JSUlmVq1apn8+fOb+Pj4TJ+P9KTmBHPmzLlln8qVKxs/Pz/r89T3NPWcLViwwEgymzdvvuUxTp8+nea8perUqZORZPr375/utvTe/xs/O8YYs2nTJiPJ9OnTx9qW0c/U7WIbNGiQufGf4Nu3bzeSTPfu3W36peapv/32m7UtNDTUSDKrV6+2tp06dcq4u7ub119/Pc1YQG7B5XtALjFr1iwVLlxYjRo1knR9qvczzzyjb775RsnJyZKuT10vWLCgvv32W+t+58+f17Jly/TMM89Y2+bMmaOyZcuqTJkyOnPmjPWROvX95lkyDRo0ULly5dLE5OnpaTNOXFyc6tWrp23btlnbUy/1e+WVV2z2ffXVV22eG2M0b948tWzZUsYYm7iaNWumuLg4m+Omp27dujZrR61bt061a9eWJNWpU0enTp3S/v37rdvCw8NVpEgRJScn65dfflHr1q1VokQJ6/GCg4P13HPPae3atYqPj7cZq0ePHnJ2drY+37Jli06dOqX//Oc/NrPUOnfuLF9f39vGnVHz589XSkqK2rVrZ3N+goKCVKpUqTTvW/78+fX8889bn7u5ualGjRr6559/rG1LlixR0aJF1apVK2ubh4eHevToken4unTpYvPa69WrJ0k24wEAkB2aNGmiwMBAhYSEqH379sqfP78WLFigokWLZul4zzzzjPz8/KzPb/4OO336tFavXq2uXbuqePHiNvtm91pIN+ZXV69e1dmzZ1WyZEkVKFDgjrnQrfz8888KCgrSs88+a21zdXXVa6+9posXL2rVqlU2/e90Pu5G/vz5deHChVtuT531/eOPP6a5SU1mvPzyyxnu27p1a5vPTo0aNVSzZk39/PPPWR4/I1KP37dvX5v21Jn9P/30k017uXLlrO+FdH1m1gMPPECuhVyNohSQCyQnJ+ubb75Ro0aNFB0drQMHDujAgQOqWbOmYmJitHz5cknXF09s27atvv/+e+t16PPnz9fVq1dtilL79+/XX3/9pcDAQJtH6dKlJV2fNn2j8PDwdOP68ccf9dBDD8nDw0P+/v7WKcs33gHv8OHDcnJySnOMkiVL2jw/ffq0YmNjNX369DRxpa6TdXNcN7txXSljjNavX686depIkipUqCAfHx+tW7dOV65c0datW639T58+rUuXLumBBx5I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3377rfr27avq1asrf/78atmyZabGAwDAHrp27apx48apWbNm6tatm06dOqWpU6eqfPnyaW5eklEfffSR6tatqwcffFAvvviiwsPDdejQIf3000/avn27pOvflZL0zjvvqH379nJ1dVXLli3l5eWl7t27a9SoUerevbuqVaum1atXW/OhGz3++OP68ssv5evrq3LlymnDhg369ddfFRAQYNOvSpUqcnZ21ujRoxUXFyd3d3c1btxYhQoVSnPMF198UdOmTVPnzp21detWhYWFae7cuVq3bp0mTJhw2zWesmLNmjW6cuWKkpOTdfbsWa1bt06LFi2Sr6+vFixYoKCgoFvu+/nnn2vy5Ml68sknFRERoQsXLuiTTz6Rj4+PtYjj6empcuXK6dtvv1Xp0qXl7++vChUqZHnNr5IlS6pu3bp6+eWXlZiYqAkTJiggIEBvvvmmtU9GP1OZia1y5crq1KmTpk+frtjYWDVo0EC///67Pv/8c7Vu3dp6gyMgT7P37f4AZE7Lli2Nh4eHSUhIuGWfzp07G1dXV3PmzBljzPVbE4eEhBhJZvjw4enuk5SUZEaPHm3Kly9v3N3djZ+fn4mMjDRDhgwxcXFx1n6STFRUVLrH+PTTT02pUqWMu7u7KVOmjJkxY0aaW90aY0xCQoKJiooy/v7+Jn/+/KZ169Zm7969RpIZNWqUTd+YmBgTFRVlQkJCjKurqwkKCjIPP/ywmT59eobOV0JCgnFxcTGSzC+//JJme6VKlYwkM3r06DTbtm3bZpo1a2by589v8uXLZxo1amTWr19v0yf1tsW3uk3x5MmTTXh4uHF3dzfVqlUzq1evvuUthG+Weqvf9B7dunWz9ps3b56pW7eu8fLyMl5eXqZMmTImKirK7N2719qnQYMGpnz58mnGuPm2xcYY888//5gWLVoYT09PExgYaF5//XUzb948I8ls3LjR2u/ixYvmueeeMwUKFDCSrMe51e2fb3f7awAAsuJO38M3+uqrr0yJEiWMm5ubqVKlilm6dGma78HU76r3338/zf6SzKBBg2zadu3aZZ588klToEAB4+HhYR544AEzcOBAmz7Dhg0zRYsWNU5OTkaSiY6ONsYYc+nSJdOtWzfj6+trvL29Tbt27cypU6fSjHP+/HnTpUsXU7BgQZM/f37TrFkzs2fPHhMaGmo6depkM9Ynn3xi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tX///kue+/eaNGmiH3/8sUQBtmbNGoWGhqpmzZqXfH9X69NNRzWBQgoVyKq9p/SnN9YpPbdse88BFRWlFAAAADxGz5499cMPPygpKckxU0qSunfvrtdee02FhYUXLaUSEhKUnZ2txMREnT59Wrm5uU7Lev311+urr77SV199pd27d+v+++9Xenp6mc5xxx13KCYmRgMHDtSaNWt04MABffrpp/rxxx8lnXs/ycnJSkpK0unTp1VQUKDAwEBdc801mj59unbt2qWVK1fq73//e4nzNmjQQBs3btQ333yjvXv36oknntCGDRtKvCYhIUHbtm3Tnj17dPr06fPO8hozZoyOHDmiBx54QLt379YXX3yhKVOmaOLEiY4ZW87yn/WH9ddPtspKIYUKJulIuu56c72y8kt/TQGehlIKAAAAHqNnz57Ky8tT/fr1FR0d7TjevXt3ZWVlqVGjRoqNjb3g53fp0kX33XefhgwZosjISD3//PNOy3r33XdrxIgRGj58uLp37666detetDA7Hz8/P3377beKiopSv3791KJFC02fPl3e3t6SpEGDBqlv377q2bOnIiMj9Z///EeS9NZbb6m4uFjt2rXThAkTSt0N795779Uf/vAHDRkyRJ06ddKZM2ccm63/avTo0WrUqJHat2+vyMhIrVmzplS+GjVq6Ouvv9b69evVqlUr3Xffffrzn/9cqgQrbwvWHtTfPt8u+ihUVNuPZejP8zcqv6j8Zm4C7shi//1Cdg+TmZmp8PBwZWRkKCwszHQcADAu4bGvjI19cHr/Cz5nKtfFMknumwuuw/9LABXLmz8k6x+Ld5qOAZSLHo0i9cbw9mx+Do/Fn2wAAAAAHuHTTUf1zFcUUvAcK/ac0oQPkliGCo9FKQUAAACgwlu+O1WTPt0mz14Hgsroq+0pmvzZtlJ36wQ8AaUUAAAAgApt06E0jXlvM3fZg8f6aONR/WPxLtMxgHJHKQUAAACgwko+naO/LNigPDaEhod7a02yZn6313QMoFxRSgEAAACokNJyCjXq7fVKyy0yHQVwiZnf7dOXW4+bjgGUG0opAAAAABVOQbFVo/+9UQfP5JqOArjUo59s08/HM0zHAMoFpRQAAACACuevH2/TxkNppmMALpdXZNU9/96kszmFpqMAV41SCgAAAECF8vaaZC1iCRMqsWPpeRrz3iYVW22m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WrZsmSTJZrPppptu0po1a/Tuu+9q586dmj59ury9vR25+vbtq0GDBmnbtm368MMP9cMPP2jcuHFXff2ioqI0bNgwLVq0SFar9arPBwAAAADuhOV7AJzGx8dH8+fP1+jRozVv3jy1bdtW3bt319ChQ9WyZUtJ52YZrV+/XqmpqfL395ck/fOf/9TChQv1ySef6J577pF0rhyaP3++QkNDJUl33XWXEhMT9eyzzyo8PFx+fn4KCgpSTEyMY/zZs2erTZs2eu655xzH3nrrLcXHx2vv3r1q2LChJKlly5aaMmWKJKlBgwaaPXu2EhMT1bt3b3333Xdav369du3a5Xh93bp1HeebNm2ahg0b5tjPqkGDBpo1a5a6d++uuXPnKiAg4KquYePGjZWVlaUzZ84oKirqqs4FAAAAAO6EmVIAnGrQoEE6fvy4Fi1apL59+2rFihVq27at5s+fL0naunWrsrOzVa1aNcfMqpCQECUnJ2v//v2O8yQkJDgKKUmKjY1VamrqRcfeunWrli9fXuK8jRs3lqQS5/61IDvfuZOSklSzZk1HIXW+MebPn19ijD59+shmsyk5OfnyL9QF2O12SeeW9wEAAACAJ2GmFACnCwgIUO/evdW7d2898cQT+stf/qIpU6Zo5MiRys7OVmxsrFasWFHq8357hzpfX98Sz1ksFtlstouOm52drVtuuUUzZswo9VxsbOxlnTswMPCSY9x7770aP358qedq1ap10c+9HLt27VJYWJiqVat21ecCAAAAAHdCKQXA5Zo2baqFCxdKktq2basTJ07Ix8dHCQkJV3xOPz+/UvsutW3bVp9++qkSEhLk43Nl3+5atmypo0ePllju9/sxdu7cqfr161/R+S8mNTVV77//vgYOHCgvLya2AgAAAPAs/JQDwGnOnDmj66+/Xu+++662bdum5ORkffzxx3r++ec1YMAASVKvXr3UuXNnDRw4UN9++60OHjyotWvX6vHHH9fGjRsve6yEhAStW7dOBw8e1OnTp2Wz2TR27FidPXtWd9xxhzZs2KD9+/frm2++0ahRoy574/Du3burW7duGjRokJYtW6bk5GQtWbJES5culSRNmjRJa9eu1bhx45SUlKR9+/bpiy++KPNG53a7XSdOnFBKSop27dqlt956S126dFF4eLhjQ3cAAAAA8CTMlALgNCEhIerUqZP+9a9/af/+/SoqKlJ8fLxGjx6tv/3tb5LOLZX7+uuv9fjjj2vUqFE6deqUYmJi1K1bN0VHR1/2WI888ohGjBihpk2bKi8vT8nJyUpISNCaNWs0adIk3XjjjSooKFDt2rXVt2/fMs08+vTTT/XII4/ojjvuUE5OjurXr+8oilq2bKmVK1fq8ccf13XXXSe73a569eppyJAhZbpWmZmZio2NlcViUVhYmBo1aqQRI0bowQcfVFhYWJnOBQAAAAAVgcX+6y66AAAAAAAAgIuwfA8AAAAAAAAuRykFAAAAAAAAl6OUAgAAAAAAgMtRSgEAAAAAAMDlKKUAAAAAAADgcpRSAAAAAAAAcDlKKQAAAAAAALgcpRQAAAAAAABcjlIKAAAAAAAALkcpBQAAAAAAAJejlAIAAAAAAIDLUUoBAAAAAADA5f4fXPOjT6YRgRQAAAAASUVORK5CYII="/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=5e488a878a5cfccb">
|
||
<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 [15]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">TextPreprocessor</span><span class="p">:</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">nlp</span> <span class="o">=</span> <span class="n">spacy</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="s2">"en_core_web_lg"</span><span class="p">)</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">extract_linguistic_features</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
||
<span class="w"> </span><span class="sd">""" Extract linguistic features """</span>
|
||
<span class="n">doc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">nlp</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
||
|
||
<span class="n">features</span> <span class="o">=</span> <span class="p">{</span>
|
||
<span class="s1">'tokens'</span><span class="p">:</span> <span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">],</span>
|
||
<span class="s1">'lemmas'</span><span class="p">:</span> <span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">lemma_</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">is_alpha</span><span class="p">],</span>
|
||
<span class="s1">'pos_tags'</span><span class="p">:</span> <span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">pos_</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">],</span>
|
||
<span class="s1">'dep_tags'</span><span class="p">:</span> <span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">dep_</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">],</span>
|
||
<span class="s1">'is_stop'</span><span class="p">:</span> <span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">is_stop</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">],</span>
|
||
<span class="s1">'is_alpha'</span><span class="p">:</span> <span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">is_alpha</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">],</span>
|
||
<span class="s1">'is_punct'</span><span class="p">:</span> <span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">is_punct</span> <span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">]</span>
|
||
<span class="p">}</span>
|
||
|
||
<span class="k">return</span> <span class="n">features</span><span class="p">,</span> <span class="n">doc</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">direct_preprocessing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
||
<span class="w"> </span><span class="sd">""" For direct copy detection """</span>
|
||
<span class="k">return</span> <span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">semantic_preprocessing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
||
<span class="w"> </span><span class="sd">""" For semantic similarity """</span>
|
||
<span class="c1"># Remove noise like stop words</span>
|
||
<span class="n">doc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">nlp</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
||
<span class="n">processed_tokens</span> <span class="o">=</span> <span class="p">[]</span>
|
||
<span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">:</span>
|
||
<span class="k">if</span> <span class="ow">not</span> <span class="n">token</span><span class="o">.</span><span class="n">is_punct</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">token</span><span class="o">.</span><span class="n">is_space</span> <span class="ow">and</span> <span class="n">token</span><span class="o">.</span><span class="n">is_alpha</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">token</span><span class="o">.</span><span class="n">is_stop</span><span class="p">:</span>
|
||
<span class="n">processed_tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">lemma_</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||
<span class="k">return</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">processed_tokens</span><span class="p">)</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">syntactic_preprocessing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
||
<span class="w"> </span><span class="sd">""" For syntactic similarity """</span>
|
||
<span class="c1"># Normalize</span>
|
||
<span class="n">doc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">nlp</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
||
<span class="n">processed_tokens</span> <span class="o">=</span> <span class="p">[]</span>
|
||
<span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">:</span>
|
||
<span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">is_space</span><span class="p">:</span>
|
||
<span class="k">continue</span>
|
||
<span class="k">elif</span> <span class="n">token</span><span class="o">.</span><span class="n">is_punct</span><span class="p">:</span>
|
||
<span class="n">processed_tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
|
||
<span class="k">elif</span> <span class="n">token</span><span class="o">.</span><span class="n">is_stop</span><span class="p">:</span>
|
||
<span class="n">processed_tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">lemma_</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||
<span class="k">else</span><span class="p">:</span>
|
||
<span class="n">processed_tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">lemma_</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||
<span class="k">return</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">processed_tokens</span><span class="p">)</span>
|
||
|
||
|
||
<span class="c1"># Initialize preprocessor</span>
|
||
<span class="n">preprocessor</span> <span class="o">=</span> <span class="n">TextPreprocessor</span><span class="p">()</span>
|
||
|
||
<span class="c1"># Analyze all sentences</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Linguistic Analysis"</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"="</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span>
|
||
|
||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">sentence</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">test_sentences</span><span class="p">):</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="si">{</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="si">:</span><span class="s2">2d</span><span class="si">}</span><span class="s2">. </span><span class="si">{</span><span class="s1">'ORIGINAL: '</span><span class="si">:</span><span class="s2"><20</span><span class="si">}</span><span class="s2">'</span><span class="si">{</span><span class="n">sentence</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||
<span class="n">features</span><span class="p">,</span> <span class="n">doc</span> <span class="o">=</span> <span class="n">preprocessor</span><span class="o">.</span><span class="n">extract_linguistic_features</span><span class="p">(</span><span class="n">sentence</span><span class="p">)</span>
|
||
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="s1">'Direct: '</span><span class="si">:</span><span class="s2"><20</span><span class="si">}</span><span class="s2">'</span><span class="si">{</span><span class="n">preprocessor</span><span class="o">.</span><span class="n">direct_preprocessing</span><span class="p">(</span><span class="n">sentence</span><span class="p">)</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="s1">'Semantic: '</span><span class="si">:</span><span class="s2"><20</span><span class="si">}</span><span class="s2">'</span><span class="si">{</span><span class="n">preprocessor</span><span class="o">.</span><span class="n">semantic_preprocessing</span><span class="p">(</span><span class="n">sentence</span><span class="p">)</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="s1">'Syntactic: '</span><span class="si">:</span><span class="s2"><20</span><span class="si">}</span><span class="s2">'</span><span class="si">{</span><span class="n">preprocessor</span><span class="o">.</span><span class="n">syntactic_preprocessing</span><span class="p">(</span><span class="n">sentence</span><span class="p">)</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Basic counts</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="s1">'Tokens: '</span><span class="si">:</span><span class="s2"><20</span><span class="si">}{</span><span class="nb">len</span><span class="p">(</span><span class="n">features</span><span class="p">[</span><span class="s1">'tokens'</span><span class="p">])</span><span class="si">:</span><span class="s2">2d</span><span class="si">}</span><span class="s2"> | "</span>
|
||
<span class="sa">f</span><span class="s2">"Alpha: </span><span class="si">{</span><span class="nb">sum</span><span class="p">(</span><span class="n">features</span><span class="p">[</span><span class="s1">'is_alpha'</span><span class="p">])</span><span class="si">:</span><span class="s2">2d</span><span class="si">}</span><span class="s2"> | "</span>
|
||
<span class="sa">f</span><span class="s2">"Stopwords: </span><span class="si">{</span><span class="nb">sum</span><span class="p">(</span><span class="n">features</span><span class="p">[</span><span class="s1">'is_stop'</span><span class="p">])</span><span class="si">:</span><span class="s2">2d</span><span class="si">}</span><span class="s2"> | "</span>
|
||
<span class="sa">f</span><span class="s2">"Punctuation: </span><span class="si">{</span><span class="nb">sum</span><span class="p">(</span><span class="n">features</span><span class="p">[</span><span class="s1">'is_punct'</span><span class="p">])</span><span class="si">:</span><span class="s2">2d</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||
|
||
<span class="c1"># POS distribution</span>
|
||
<span class="n">pos_counts</span> <span class="o">=</span> <span class="n">Counter</span><span class="p">(</span><span class="n">features</span><span class="p">[</span><span class="s1">'pos_tags'</span><span class="p">])</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="s1">'POS:'</span><span class="si">:</span><span class="s2"><20</span><span class="si">}{</span><span class="nb">dict</span><span class="p">(</span><span class="n">pos_counts</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>Linguistic Analysis
|
||
============================================================
|
||
|
||
1. ORIGINAL: 'The cat sat on the mat.'
|
||
Direct: 'the cat sat on the mat.'
|
||
Semantic: 'cat sit mat'
|
||
Syntactic: 'the cat sit on the mat .'
|
||
Tokens: 7 | Alpha: 6 | Stopwords: 3 | Punctuation: 1
|
||
POS: {'DET': 2, 'NOUN': 2, 'VERB': 1, 'ADP': 1, 'PUNCT': 1}
|
||
|
||
2. ORIGINAL: 'The cat sat on the mat'
|
||
Direct: 'the cat sat on the mat'
|
||
Semantic: 'cat sit mat'
|
||
Syntactic: 'the cat sit on the mat'
|
||
Tokens: 6 | Alpha: 6 | Stopwords: 3 | Punctuation: 0
|
||
POS: {'DET': 2, 'NOUN': 2, 'VERB': 1, 'ADP': 1}
|
||
|
||
3. ORIGINAL: 'The cat sat on the mat.'
|
||
Direct: 'the cat sat on the mat.'
|
||
Semantic: 'cat sit mat'
|
||
Syntactic: 'the cat sit on the mat .'
|
||
Tokens: 12 | Alpha: 6 | Stopwords: 3 | Punctuation: 1
|
||
POS: {'DET': 2, 'SPACE': 5, 'NOUN': 2, 'VERB': 1, 'ADP': 1, 'PUNCT': 1}
|
||
|
||
4. ORIGINAL: 'On the mat, the cat was sitting.'
|
||
Direct: 'on the mat, the cat was sitting.'
|
||
Semantic: 'mat cat sit'
|
||
Syntactic: 'on the mat , the cat be sit .'
|
||
Tokens: 9 | Alpha: 7 | Stopwords: 4 | Punctuation: 2
|
||
POS: {'ADP': 1, 'DET': 2, 'NOUN': 2, 'PUNCT': 2, 'AUX': 1, 'VERB': 1}
|
||
|
||
5. ORIGINAL: 'The feline rested on the rug.'
|
||
Direct: 'the feline rested on the rug.'
|
||
Semantic: 'feline rest rug'
|
||
Syntactic: 'the feline rest on the rug .'
|
||
Tokens: 7 | Alpha: 6 | Stopwords: 3 | Punctuation: 1
|
||
POS: {'DET': 2, 'NOUN': 2, 'VERB': 1, 'ADP': 1, 'PUNCT': 1}
|
||
|
||
6. ORIGINAL: 'The quick brown fox jumps over the lazy dog.'
|
||
Direct: 'the quick brown fox jumps over the lazy dog.'
|
||
Semantic: 'quick brown fox jump lazy dog'
|
||
Syntactic: 'the quick brown fox jump over the lazy dog .'
|
||
Tokens: 10 | Alpha: 9 | Stopwords: 3 | Punctuation: 1
|
||
POS: {'DET': 2, 'ADJ': 3, 'PROPN': 1, 'VERB': 1, 'ADP': 1, 'NOUN': 1, 'PUNCT': 1}
|
||
|
||
7. ORIGINAL: 'Over the lazy dog jumps the quick brown fox.'
|
||
Direct: 'over the lazy dog jumps the quick brown fox.'
|
||
Semantic: 'lazy dog jump quick brown fox'
|
||
Syntactic: 'over the lazy dog jump the quick brown fox .'
|
||
Tokens: 10 | Alpha: 9 | Stopwords: 3 | Punctuation: 1
|
||
POS: {'ADP': 1, 'DET': 2, 'ADJ': 3, 'NOUN': 1, 'VERB': 1, 'PROPN': 1, 'PUNCT': 1}
|
||
|
||
8. ORIGINAL: 'The dog ran in the park.'
|
||
Direct: 'the dog ran in the park.'
|
||
Semantic: 'dog run park'
|
||
Syntactic: 'the dog run in the park .'
|
||
Tokens: 7 | Alpha: 6 | Stopwords: 3 | Punctuation: 1
|
||
POS: {'DET': 2, 'NOUN': 2, 'VERB': 1, 'ADP': 1, 'PUNCT': 1}
|
||
|
||
9. ORIGINAL: 'I love programming.'
|
||
Direct: 'i love programming.'
|
||
Semantic: 'love programming'
|
||
Syntactic: 'i love programming .'
|
||
Tokens: 4 | Alpha: 3 | Stopwords: 1 | Punctuation: 1
|
||
POS: {'PRON': 1, 'VERB': 1, 'NOUN': 1, 'PUNCT': 1}
|
||
|
||
10. ORIGINAL: 'She enjoys reading books.'
|
||
Direct: 'she enjoys reading books.'
|
||
Semantic: 'enjoy read book'
|
||
Syntactic: 'she enjoy read book .'
|
||
Tokens: 5 | Alpha: 4 | Stopwords: 1 | Punctuation: 1
|
||
POS: {'PRON': 1, 'VERB': 2, 'NOUN': 1, 'PUNCT': 1}
|
||
|
||
11. ORIGINAL: 'Short.'
|
||
Direct: 'short.'
|
||
Semantic: 'short'
|
||
Syntactic: 'short .'
|
||
Tokens: 2 | Alpha: 1 | Stopwords: 0 | Punctuation: 1
|
||
POS: {'ADJ': 1, 'PUNCT': 1}
|
||
|
||
12. ORIGINAL: 'A B C D E F G'
|
||
Direct: 'a b c d e f g'
|
||
Semantic: 'b c d e f g'
|
||
Syntactic: 'a b c d e f g'
|
||
Tokens: 7 | Alpha: 7 | Stopwords: 1 | Punctuation: 0
|
||
POS: {'DET': 1, 'NOUN': 2, 'PROPN': 4}
|
||
|
||
13. ORIGINAL: ''
|
||
Direct: ''
|
||
Semantic: ''
|
||
Syntactic: ''
|
||
Tokens: 0 | Alpha: 0 | Stopwords: 0 | Punctuation: 0
|
||
POS: {}
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=83fc18c9de2e354">
|
||
<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 [16]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">analyze_dependency_structure</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">sentence_id</span><span class="p">):</span>
|
||
<span class="w"> </span><span class="sd">"""Analyze and display dependency parse information"""</span>
|
||
<span class="k">if</span> <span class="ow">not</span> <span class="n">text</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Sentence </span><span class="si">{</span><span class="n">sentence_id</span><span class="si">}</span><span class="s2">: [EMPTY]"</span><span class="p">)</span>
|
||
<span class="k">return</span> <span class="kc">None</span>
|
||
|
||
<span class="n">doc</span> <span class="o">=</span> <span class="n">nlp</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
||
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Sentence </span><span class="si">{</span><span class="n">sentence_id</span><span class="si">}</span><span class="s2">: '</span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Dependency Parse:"</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"-"</span> <span class="o">*</span> <span class="mi">50</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Extract dependency relationships</span>
|
||
<span class="n">dependencies</span> <span class="o">=</span> <span class="p">[]</span>
|
||
<span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">:</span>
|
||
<span class="n">dependencies</span><span class="o">.</span><span class="n">append</span><span class="p">({</span>
|
||
<span class="s1">'token'</span><span class="p">:</span> <span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span>
|
||
<span class="s1">'lemma'</span><span class="p">:</span> <span class="n">token</span><span class="o">.</span><span class="n">lemma_</span><span class="p">,</span>
|
||
<span class="s1">'pos'</span><span class="p">:</span> <span class="n">token</span><span class="o">.</span><span class="n">pos_</span><span class="p">,</span>
|
||
<span class="s1">'dep'</span><span class="p">:</span> <span class="n">token</span><span class="o">.</span><span class="n">dep_</span><span class="p">,</span>
|
||
<span class="s1">'head'</span><span class="p">:</span> <span class="n">token</span><span class="o">.</span><span class="n">head</span><span class="o">.</span><span class="n">text</span><span class="p">,</span>
|
||
<span class="s1">'children'</span><span class="p">:</span> <span class="p">[</span><span class="n">child</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">token</span><span class="o">.</span><span class="n">children</span><span class="p">]</span>
|
||
<span class="p">})</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="si">:</span><span class="s2"><12</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">dep_</span><span class="si">:</span><span class="s2"><12</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">head</span><span class="o">.</span><span class="n">text</span><span class="si">:</span><span class="s2"><12</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="p">[</span><span class="n">child</span><span class="o">.</span><span class="n">text</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">child</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">token</span><span class="o">.</span><span class="n">children</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||
|
||
<span class="k">return</span> <span class="n">dependencies</span>
|
||
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">visualize_dependency_tree</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">sentence_id</span><span class="p">):</span>
|
||
<span class="w"> </span><span class="sd">"""Create dependency tree visualization"""</span>
|
||
<span class="k">if</span> <span class="ow">not</span> <span class="n">text</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span>
|
||
<span class="k">return</span>
|
||
|
||
<span class="n">doc</span> <span class="o">=</span> <span class="n">nlp</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Use displacy for visualization</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">spacy</span><span class="w"> </span><span class="kn">import</span> <span class="n">displacy</span>
|
||
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Dependency Tree Visualization - Sentence </span><span class="si">{</span><span class="n">sentence_id</span><span class="si">}</span><span class="s2">:"</span><span class="p">)</span>
|
||
<span class="n">html</span> <span class="o">=</span> <span class="n">displacy</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">style</span><span class="o">=</span><span class="s2">"dep"</span><span class="p">,</span> <span class="n">jupyter</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="p">{</span><span class="s1">'distance'</span><span class="p">:</span> <span class="mi">120</span><span class="p">})</span>
|
||
|
||
<span class="k">return</span> <span class="n">html</span>
|
||
|
||
<span class="c1"># Analyze dependency structures for key sentence pairs</span>
|
||
<span class="n">key_pairs</span> <span class="o">=</span> <span class="p">[</span>
|
||
<span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">"The cat sat on the mat."</span><span class="p">),</span>
|
||
<span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s2">"On the mat, the cat was sitting."</span><span class="p">),</span>
|
||
<span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="s2">"The feline rested on the rug."</span><span class="p">),</span>
|
||
<span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="s2">"The quick brown fox jumps over the lazy dog."</span><span class="p">)</span>
|
||
<span class="p">]</span>
|
||
|
||
<span class="k">for</span> <span class="n">sentence_id</span><span class="p">,</span> <span class="n">sentence</span> <span class="ow">in</span> <span class="n">key_pairs</span><span class="p">:</span>
|
||
<span class="n">deps</span> <span class="o">=</span> <span class="n">analyze_dependency_structure</span><span class="p">(</span><span class="n">sentence</span><span class="p">,</span> <span class="n">sentence_id</span><span class="p">)</span>
|
||
<span class="n">visualize_dependency_tree</span><span class="p">(</span><span class="n">sentence</span><span class="p">,</span> <span class="n">sentence_id</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">"="</span><span class="o">*</span><span class="mi">70</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>
|
||
Sentence 0: 'The cat sat on the mat.'
|
||
Dependency Parse:
|
||
--------------------------------------------------
|
||
The det cat []
|
||
cat nsubj sat ['The']
|
||
sat ROOT sat ['cat', 'on', '.']
|
||
on prep sat ['mat']
|
||
the det mat []
|
||
mat pobj on ['the']
|
||
. punct sat []
|
||
|
||
Dependency Tree Visualization - Sentence 0:
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output" data-mime-type="text/html" tabindex="0">
|
||
<span class="tex2jax_ignore"><svg class="displacy" direction="ltr" height="257.0" id="31566b7b81444fdc9677ac9414b9a6d5-0" style="max-width: none; height: 257.0px; color: #000000; background: #ffffff; font-family: Arial; direction: ltr" width="770" xml:lang="en" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="50">The</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="50">DET</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="170">cat</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="170">NOUN</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="290">sat</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="290">VERB</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="410">on</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="410">ADP</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="530">the</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="530">DET</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="650">mat.</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="650">NOUN</tspan>
|
||
</text>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M70,122.0 C70,62.0 165.0,62.0 165.0,122.0" fill="none" id="arrow-31566b7b81444fdc9677ac9414b9a6d5-0-0" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-31566b7b81444fdc9677ac9414b9a6d5-0-0">det</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M70,124.0 L62,112.0 78,112.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M190,122.0 C190,62.0 285.0,62.0 285.0,122.0" fill="none" id="arrow-31566b7b81444fdc9677ac9414b9a6d5-0-1" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-31566b7b81444fdc9677ac9414b9a6d5-0-1">nsubj</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M190,124.0 L182,112.0 198,112.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M310,122.0 C310,62.0 405.0,62.0 405.0,122.0" fill="none" id="arrow-31566b7b81444fdc9677ac9414b9a6d5-0-2" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-31566b7b81444fdc9677ac9414b9a6d5-0-2">prep</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M405.0,124.0 L413.0,112.0 397.0,112.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M550,122.0 C550,62.0 645.0,62.0 645.0,122.0" fill="none" id="arrow-31566b7b81444fdc9677ac9414b9a6d5-0-3" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-31566b7b81444fdc9677ac9414b9a6d5-0-3">det</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M550,124.0 L542,112.0 558,112.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M430,122.0 C430,2.0 650.0,2.0 650.0,122.0" fill="none" id="arrow-31566b7b81444fdc9677ac9414b9a6d5-0-4" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-31566b7b81444fdc9677ac9414b9a6d5-0-4">pobj</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M650.0,124.0 L658.0,112.0 642.0,112.0" fill="currentColor"></path>
|
||
</g>
|
||
</svg></span>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>
|
||
======================================================================
|
||
|
||
|
||
Sentence 3: 'On the mat, the cat was sitting.'
|
||
Dependency Parse:
|
||
--------------------------------------------------
|
||
On prep sitting ['mat']
|
||
the det mat []
|
||
mat pobj On ['the']
|
||
, punct sitting []
|
||
the det cat []
|
||
cat nsubj sitting ['the']
|
||
was aux sitting []
|
||
sitting ROOT sitting ['On', ',', 'cat', 'was', '.']
|
||
. punct sitting []
|
||
|
||
Dependency Tree Visualization - Sentence 3:
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output" data-mime-type="text/html" tabindex="0">
|
||
<span class="tex2jax_ignore"><svg class="displacy" direction="ltr" height="317.0" id="a1bb7d7b7b9a4d0f851e850779d0d79e-0" style="max-width: none; height: 317.0px; color: #000000; background: #ffffff; font-family: Arial; direction: ltr" width="890" xml:lang="en" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="50">On</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="50">ADP</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="170">the</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="170">DET</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="290">mat,</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="290">NOUN</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="410">the</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="410">DET</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="530">cat</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="530">NOUN</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="650">was</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="650">AUX</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="770">sitting.</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="770">VERB</tspan>
|
||
</text>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M70,182.0 C70,2.0 770.0,2.0 770.0,182.0" fill="none" id="arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-0" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-0">prep</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M70,184.0 L62,172.0 78,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M190,182.0 C190,122.0 280.0,122.0 280.0,182.0" fill="none" id="arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-1" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-1">det</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M190,184.0 L182,172.0 198,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M70,182.0 C70,62.0 285.0,62.0 285.0,182.0" fill="none" id="arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-2" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-2">pobj</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M285.0,184.0 L293.0,172.0 277.0,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M430,182.0 C430,122.0 520.0,122.0 520.0,182.0" fill="none" id="arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-3" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-3">det</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M430,184.0 L422,172.0 438,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M550,182.0 C550,62.0 765.0,62.0 765.0,182.0" fill="none" id="arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-4" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-4">nsubj</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M550,184.0 L542,172.0 558,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M670,182.0 C670,122.0 760.0,122.0 760.0,182.0" fill="none" id="arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-5" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-a1bb7d7b7b9a4d0f851e850779d0d79e-0-5">aux</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M670,184.0 L662,172.0 678,172.0" fill="currentColor"></path>
|
||
</g>
|
||
</svg></span>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>
|
||
======================================================================
|
||
|
||
|
||
Sentence 4: 'The feline rested on the rug.'
|
||
Dependency Parse:
|
||
--------------------------------------------------
|
||
The det feline []
|
||
feline nsubj rested ['The']
|
||
rested ROOT rested ['feline', 'on', '.']
|
||
on prep rested ['rug']
|
||
the det rug []
|
||
rug pobj on ['the']
|
||
. punct rested []
|
||
|
||
Dependency Tree Visualization - Sentence 4:
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output" data-mime-type="text/html" tabindex="0">
|
||
<span class="tex2jax_ignore"><svg class="displacy" direction="ltr" height="257.0" id="9408412530c948cfb4610fe3e9526353-0" style="max-width: none; height: 257.0px; color: #000000; background: #ffffff; font-family: Arial; direction: ltr" width="770" xml:lang="en" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="50">The</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="50">DET</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="170">feline</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="170">NOUN</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="290">rested</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="290">VERB</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="410">on</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="410">ADP</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="530">the</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="530">DET</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="167.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="650">rug.</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="650">NOUN</tspan>
|
||
</text>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M70,122.0 C70,62.0 165.0,62.0 165.0,122.0" fill="none" id="arrow-9408412530c948cfb4610fe3e9526353-0-0" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-9408412530c948cfb4610fe3e9526353-0-0">det</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M70,124.0 L62,112.0 78,112.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M190,122.0 C190,62.0 285.0,62.0 285.0,122.0" fill="none" id="arrow-9408412530c948cfb4610fe3e9526353-0-1" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-9408412530c948cfb4610fe3e9526353-0-1">nsubj</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M190,124.0 L182,112.0 198,112.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M310,122.0 C310,62.0 405.0,62.0 405.0,122.0" fill="none" id="arrow-9408412530c948cfb4610fe3e9526353-0-2" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-9408412530c948cfb4610fe3e9526353-0-2">prep</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M405.0,124.0 L413.0,112.0 397.0,112.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M550,122.0 C550,62.0 645.0,62.0 645.0,122.0" fill="none" id="arrow-9408412530c948cfb4610fe3e9526353-0-3" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-9408412530c948cfb4610fe3e9526353-0-3">det</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M550,124.0 L542,112.0 558,112.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M430,122.0 C430,2.0 650.0,2.0 650.0,122.0" fill="none" id="arrow-9408412530c948cfb4610fe3e9526353-0-4" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-9408412530c948cfb4610fe3e9526353-0-4">pobj</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M650.0,124.0 L658.0,112.0 642.0,112.0" fill="currentColor"></path>
|
||
</g>
|
||
</svg></span>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>
|
||
======================================================================
|
||
|
||
|
||
Sentence 5: 'The quick brown fox jumps over the lazy dog.'
|
||
Dependency Parse:
|
||
--------------------------------------------------
|
||
The det fox []
|
||
quick amod fox []
|
||
brown amod fox []
|
||
fox nsubj jumps ['The', 'quick', 'brown']
|
||
jumps ROOT jumps ['fox', 'over', '.']
|
||
over prep jumps ['dog']
|
||
the det dog []
|
||
lazy amod dog []
|
||
dog pobj over ['the', 'lazy']
|
||
. punct jumps []
|
||
|
||
Dependency Tree Visualization - Sentence 5:
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedHTMLCommon jp-RenderedHTML jp-OutputArea-output" data-mime-type="text/html" tabindex="0">
|
||
<span class="tex2jax_ignore"><svg class="displacy" direction="ltr" height="317.0" id="12329dfbfcb74e6586d002c19849a58e-0" style="max-width: none; height: 317.0px; color: #000000; background: #ffffff; font-family: Arial; direction: ltr" width="1130" xml:lang="en" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="50">The</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="50">DET</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="170">quick</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="170">ADJ</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="290">brown</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="290">ADJ</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="410">fox</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="410">PROPN</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="530">jumps</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="530">VERB</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="650">over</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="650">ADP</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="770">the</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="770">DET</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="890">lazy</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="890">ADJ</tspan>
|
||
</text>
|
||
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="227.0">
|
||
<tspan class="displacy-word" fill="currentColor" x="1010">dog.</tspan>
|
||
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="1010">NOUN</tspan>
|
||
</text>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M70,182.0 C70,2.0 410.0,2.0 410.0,182.0" fill="none" id="arrow-12329dfbfcb74e6586d002c19849a58e-0-0" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-12329dfbfcb74e6586d002c19849a58e-0-0">det</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M70,184.0 L62,172.0 78,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M190,182.0 C190,62.0 405.0,62.0 405.0,182.0" fill="none" id="arrow-12329dfbfcb74e6586d002c19849a58e-0-1" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-12329dfbfcb74e6586d002c19849a58e-0-1">amod</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M190,184.0 L182,172.0 198,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M310,182.0 C310,122.0 400.0,122.0 400.0,182.0" fill="none" id="arrow-12329dfbfcb74e6586d002c19849a58e-0-2" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-12329dfbfcb74e6586d002c19849a58e-0-2">amod</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M310,184.0 L302,172.0 318,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M430,182.0 C430,122.0 520.0,122.0 520.0,182.0" fill="none" id="arrow-12329dfbfcb74e6586d002c19849a58e-0-3" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-12329dfbfcb74e6586d002c19849a58e-0-3">nsubj</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M430,184.0 L422,172.0 438,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M550,182.0 C550,122.0 640.0,122.0 640.0,182.0" fill="none" id="arrow-12329dfbfcb74e6586d002c19849a58e-0-4" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-12329dfbfcb74e6586d002c19849a58e-0-4">prep</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M640.0,184.0 L648.0,172.0 632.0,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M790,182.0 C790,62.0 1005.0,62.0 1005.0,182.0" fill="none" id="arrow-12329dfbfcb74e6586d002c19849a58e-0-5" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-12329dfbfcb74e6586d002c19849a58e-0-5">det</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M790,184.0 L782,172.0 798,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M910,182.0 C910,122.0 1000.0,122.0 1000.0,182.0" fill="none" id="arrow-12329dfbfcb74e6586d002c19849a58e-0-6" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-12329dfbfcb74e6586d002c19849a58e-0-6">amod</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M910,184.0 L902,172.0 918,172.0" fill="currentColor"></path>
|
||
</g>
|
||
<g class="displacy-arrow">
|
||
<path class="displacy-arc" d="M670,182.0 C670,2.0 1010.0,2.0 1010.0,182.0" fill="none" id="arrow-12329dfbfcb74e6586d002c19849a58e-0-7" stroke="currentColor" stroke-width="2px"></path>
|
||
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
||
<textpath class="displacy-label" fill="currentColor" side="left" startoffset="50%" text-anchor="middle" xlink:href="#arrow-12329dfbfcb74e6586d002c19849a58e-0-7">pobj</textpath>
|
||
</text>
|
||
<path class="displacy-arrowhead" d="M1010.0,184.0 L1018.0,172.0 1002.0,172.0" fill="currentColor"></path>
|
||
</g>
|
||
</svg></span>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>
|
||
======================================================================
|
||
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=e413238c1af12f62">
|
||
<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 [17]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">analyze_vocabulary_distribution</span><span class="p">(</span><span class="n">sentences</span><span class="p">):</span>
|
||
<span class="w"> </span><span class="sd">"""Analyze word frequencies and vocabulary across sentences"""</span>
|
||
<span class="n">all_words</span> <span class="o">=</span> <span class="p">[]</span>
|
||
<span class="n">all_lemmas</span> <span class="o">=</span> <span class="p">[]</span>
|
||
<span class="n">content_words</span> <span class="o">=</span> <span class="p">[]</span>
|
||
|
||
<span class="k">for</span> <span class="n">sent</span> <span class="ow">in</span> <span class="n">sentences</span><span class="p">:</span>
|
||
<span class="n">doc</span> <span class="o">=</span> <span class="n">nlp</span><span class="p">(</span><span class="n">sent</span><span class="p">)</span>
|
||
<span class="k">for</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">:</span>
|
||
<span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">is_alpha</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">token</span><span class="o">.</span><span class="n">is_space</span><span class="p">:</span>
|
||
<span class="n">all_words</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||
<span class="n">all_lemmas</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">lemma_</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||
<span class="k">if</span> <span class="ow">not</span> <span class="n">token</span><span class="o">.</span><span class="n">is_stop</span> <span class="ow">and</span> <span class="n">token</span><span class="o">.</span><span class="n">pos_</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'NOUN'</span><span class="p">,</span> <span class="s1">'VERB'</span><span class="p">,</span> <span class="s1">'ADJ'</span><span class="p">,</span> <span class="s1">'ADV'</span><span class="p">]:</span>
|
||
<span class="n">content_words</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">lemma_</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||
|
||
<span class="c1"># Calculate frequencies</span>
|
||
<span class="n">word_freq</span> <span class="o">=</span> <span class="n">Counter</span><span class="p">(</span><span class="n">all_words</span><span class="p">)</span>
|
||
<span class="n">lemma_freq</span> <span class="o">=</span> <span class="n">Counter</span><span class="p">(</span><span class="n">all_lemmas</span><span class="p">)</span>
|
||
<span class="n">content_freq</span> <span class="o">=</span> <span class="n">Counter</span><span class="p">(</span><span class="n">content_words</span><span class="p">)</span>
|
||
|
||
<span class="k">return</span> <span class="n">word_freq</span><span class="p">,</span> <span class="n">lemma_freq</span><span class="p">,</span> <span class="n">content_freq</span>
|
||
|
||
<span class="n">word_freq</span><span class="p">,</span> <span class="n">lemma_freq</span><span class="p">,</span> <span class="n">content_freq</span> <span class="o">=</span> <span class="n">analyze_vocabulary_distribution</span><span class="p">(</span><span class="n">test_sentences</span><span class="p">)</span>
|
||
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"VOCABULARY ANALYSIS"</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"="</span> <span class="o">*</span> <span class="mi">50</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Total unique words: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">word_freq</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Total unique lemmas: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">lemma_freq</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Total content words: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">content_freq</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Plot most common words</span>
|
||
<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
|
||
|
||
<span class="c1"># Original words</span>
|
||
<span class="n">common_words</span> <span class="o">=</span> <span class="n">word_freq</span><span class="o">.</span><span class="n">most_common</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">bar</span><span class="p">([</span><span class="n">w</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">w</span> <span class="ow">in</span> <span class="n">common_words</span><span class="p">],</span> <span class="p">[</span><span class="n">w</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">w</span> <span class="ow">in</span> <span class="n">common_words</span><span class="p">])</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Top 10 Most Common Words'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="s1">'x'</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">45</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Lemmas</span>
|
||
<span class="n">common_lemmas</span> <span class="o">=</span> <span class="n">lemma_freq</span><span class="o">.</span><span class="n">most_common</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">bar</span><span class="p">([</span><span class="n">w</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">w</span> <span class="ow">in</span> <span class="n">common_lemmas</span><span class="p">],</span> <span class="p">[</span><span class="n">w</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">w</span> <span class="ow">in</span> <span class="n">common_lemmas</span><span class="p">])</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Top 10 Most Common Lemmas'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="s1">'x'</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">45</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Content words</span>
|
||
<span class="n">common_content</span> <span class="o">=</span> <span class="n">content_freq</span><span class="o">.</span><span class="n">most_common</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">bar</span><span class="p">([</span><span class="n">w</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">w</span> <span class="ow">in</span> <span class="n">common_content</span><span class="p">],</span> <span class="p">[</span><span class="n">w</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">w</span> <span class="ow">in</span> <span class="n">common_content</span><span class="p">])</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Top 10 Content Words'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">tick_params</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="s1">'x'</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">45</span><span class="p">)</span>
|
||
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>VOCABULARY ANALYSIS
|
||
==================================================
|
||
Total unique words: 35
|
||
Total unique lemmas: 34
|
||
Total content words: 21
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
|
||
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,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AlKgQAEZMmRImvfaxx9/LGFhYVKoUCHx8PCQkJCQdA9DFBsbK/Xq1RMvLy/JmzevVKhQgV3mAdjVw7ROkR35/P7774u/v7+4u7tLkyZN5MCBA8a48PBwWbFihRw9etRYl0h9TqzExEQZPny4lC1bVtzc3KR48eIyZMiQu2Z5yndINzc3qVKliqxevdoYM2LECBk8eLCIiAQEBBjLSy/XRURKlCghxYsXT/d7cd26dSUsLCzdeVWqVDG2dj9z5oy88MIL4uPjI+7u7lK9enX54osvrG5z5MgRsVgs8vHHH8v48eOlTJky4ubmJn/88YeI3G7O16xZU9zd3aVMmTIyffr0dOslL5FlFLChPn36aOqXVXJysjZu3FgtFov26NFDJ02apC1btlQR0QEDBljdVkQ0MDBQCxcurO+8846OHj1aS5YsqR4eHrpz584M1ZEnTx7t0qVLuvPKli2rkZGRaabPnDlTRUR///130/tu2LChVqlSRfft26ciouvWrTPmtW7dWiMiInT9+vUqIrpgwQJj3q5duzRPnjxatGhRfffdd3XUqFEaEBCgbm5uumXLFmPcG2+8oRaLRXv27KmffvqpjhkzRtu3b6+jRo1SVdXNmzdrs2bNVET0q6++Mi53s3btWhURfeedd0z/rxSnTp1SHx8fzZcvn7755ps6duxYrV69urq4uOjixYuNcSn/Y1BQkIaGhuonn3yi/fr1U4vFou3atdMOHTpoZGSkTp48WTt16qQioiNHjrRalohotWrVtHjx4jpq1CgdNWqU5s+fX0uUKKGTJk3SypUr65gxY/Stt95SV1dXbdSokdXtZ82apSKiNWvW1HHjxunQoUPVw8NDS5UqpefPnzfGdenSRd3d3bVKlSravXt3nTp1qj7zzDMqIjplypR7PiahoaFasmRJ4/qxY8dURHTz5s361ltvaXBwsDFvx44dKiI6evToTD2elStX1qCgIB07dqzGxMTolStXdM2aNeri4qKBgYE6duxYffPNNzV//vxapUoVq7pSnusmTZro5MmTdfLkydq3b19t27btPf9HAA8vsplsfhizOeU5N/Pll1+qxWLRxx9/XCdOnKijR4/WUqVKqZeXlx4+fDhNLZUrV9aXXnpJJ0+erGFhYSoiOmvWLPXz89PBgwfrxIkTtUqVKpojRw49dOhQmv85KChIH3/8cavH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vviifPnll1ZngwfwaCObbyObbS+7s9lMyu7sRYoUkaZNm6a5hIeHZ1st97Jo0SJxd3eXNWvWSPfu3SUyMlKaNm2a7lgXFxdp0qSJjB07Vv744w95//335Ycffkj3UDUAkNUetnUKR8jnu61PlClTRs6dOydNmjRJN9fS2zI+s8syU69ePTl37px89913cubMGWOLdJHb34sPHjwoK1eulGvXrqX5Xrx///40z8v9Plbe3t7i4eFx39+LyUtkFRrpyFJPPPGEJCUlyaRJk6ymjxs3TiwWi0RGRlpNj4uLszoW5PHjx2XZsmXSvHlzm2211KZNGzl9+rQsXrzYmPbPP//IggULpGXLlukeT+1e9zd8+HCZMmWK1fHOUsuRI4c0b95cli1bJkeOHDGmnz59WubMmSP16tUzdiP7999/rW6bN29eKVu2rNXuaXny5BERkQsXLtyzvty5c8vrr78ue/bskddffz3dX6C//vpr2bp1q4jcfs62bt0qcXFxxvwrV67IjBkzpFSpUmmOy20vNWrUkCJFisi0adOsHptVq1bJnj17JCoqyqbLq1evniQlJcnHH38s5cqVs1rRCwsLk8uXL8uUKVPExcXFqsn+oI9n0aJFJSgoSL744gur3btjY2PTHHPvzteOi4uLVKtWTUQk3d0bATyayObbyGbby+5sNhMRESGenp7ywQcfyM2bN9PMt9UhBGwhR44cYrFYrJo2R44ckaVLl1qNO3fuXJrbBgUFiQg5D8A+HrZ1CkfI5zx58qQ55JqIyLPPPisnTpyQTz/9NM28a9euyZUrVzK1LJH7W3dJkdIcHz16tOTOndvIIRGRWrVqSc6cOeXDDz+0Gity+7E6deqUzJs3z5h269YtmThxouTNm1caNmxoutwcOXJIRESELF26VI4dO2ZM37Nnj6xZs8ZqLHmJrJTT3gXg4dayZUtp1KiRvPnmm3LkyBGpXr26rF27VpYtWyYDBgywOvmFyO1jbkVEREi/fv3Ezc1NpkyZIiIiI0eOvOeyvv/+e/ntt99EROTmzZvy+++/y3vvvSciIk8++aTRUGzTpo3UqVNHunXrJn/88YcULlxYpkyZIklJSfe1nDvlz5/faou0u3nvvfckNjZW6tWrJ71795acOXPK9OnTJTEx0QgaEZHKlStLeHi4hISESMGCBSU+Pl4WLlwoffv2Ncak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6/PvfjjqekYKZ8tvVTLcVpwlv1O/9n7//XetVq2axsfH68GDB/X333/X8uXLa82aNfX06dNpxsNxkTlZg8yxPTLHtvWoOtdneUREhD7++OMOU096UmpbunSp1q9fX4sVK6YtW7bUoUOH2rXuvXv3aqdOnbRixYrq5uam33zzjaqqQ69zqKqyRfp9slgs8t1338kzzzwjtWvXlv79+0uePHkkIiJC9u3bZ+/yREQkPj5enn/+eWnRooVERETIli1bpGbNmnLmzBl7l2ZQVcmRI4dUqVJFrl69KsWKFZO1a9fKv//+Kzlz5nTI4yL17t1bateuLbGxsVK3bl159tlnRcT+vzbmyJFDRETy588vs2fPFjc3N3nuuefkt99+E1VNswuuvetNqeett96SESNGSGhoqEycOFE6dOggb7/9tnz00UfGOHWArQyqVKkiPj4+8sEHH8iPP/4oIrdry5cvn9UWyfZ+XO9ksVhk8eLFEhERIePHj5fBgwdLu3bt5MCBA+Li4pIt9d75/BUqVEguXrwoly5dMl63zuLq1aty8uRJyZ8/v/z4448SHR0t7du3l9GjR8ugQYPk+++/t3eJuAfy2zYcNb9//fVXWbJkieTJk8eoM0+ePBIWFiaHDh2SyZMny61bt8TFxcUh1zFEHHc9I4Wz5bcIGZ5ZzprfKa/Rzz77TN58802pWrWqBAcHS+nSpaVq1aqydetWOXXqlLz22mtW4+G4yJysQ+bYHplju3pEHPez/M7HI+UwTr1795Zz587J9u3b0x3nCCwWi6xevVrat28vrVu3lrVr10rp0qVlzJgx8t1339mtrvLly0vLli1l7969UqxYMeM9nSNHDod8HA326d87n8uXL+sTTzyhH330kaqqnjhxQkuWLKm9evWyc2W37dixQ9etW6cffPCBMW3//v0aGBioISEhevbsWTtWl9bZs2d19+7dunDhQg0LC9MnnnhC//nnH1X979enxMREe5aoqqo3btzQpKQkHT58uHbr1k0bNGigL7zwgp45c0ZV7fNLWepfDFP/fenSJS1XrpwGBwfrjh07jHlLlizJ7hLv6tSpU1qjRg2dPXu2Me348eM6fPhw9fDw0E8++cSY7gi/6K5atUojIyO1efPm+vPPP+u6dev0sccec8itkFMer3///Vd79uypX3zxhV6/fl2XLVumkZGRWrVqVd23b5+qZs8WBlu2bNHZs2frkSNHdPv27Vq3bl398ccfTWu3t7s9Ls2bN9ciRYqou7u79u/fX1esWKFJSUlapUoV/fDDD7O5SmQU+W1bjpjf58+fV1XV+Ph4PXz4sKqqXr9+XTt06KChoaE6ceJEqy0Yr1y5kq31mXHE9Yz0OFt+q5LhmeWM+a16e4+xl19+WX19fbVBgwbG9GvXrqmq6qxZs7R8+fL6999/O1TdMEfm2BaZk3XIHNtwhs/yNWvWWD0u58+f1/Lly+srr7xil3ruJTk5Wa9du6bPP/+8Dh8+XFVvP/fFihWzW80pz92NGzd069at+vXXX2vPnj01NDRUZ8yYYYxz1L17aKTfp3PnzmmpUqV0y5YteubMGS1WrJjVl/Avv/xSDx48aJfazp8/r0WLFlWLxaKDBg2ympfyZbx27drGLjD2kPJGOXfunF65ckUvXryoqrd3zfvqq680LCxMW7Roof/++6+qqk6cOFG//vprhwnGFB999JGGhYVp9+7djRUOVdWDBw9my26GKY/Hjz/+qDExMfrSSy/ptm3bjBW6lGZ6jRo1dP78+frGG29ojhw59MiRI1le2/04e/asFi5cWD/++GOr6ceOHdM6deqoxWLRCRMm2Km62+78sF61apVGRERoy5Yt9ZVXXtGgoCAdNmyYxsTE6IcffqgffvihDhkyRDdv3myniv+zdetWrVu3rjZp0kT3799vTN+wYYM+/vjjWrVqVWN6VoVScnKynj9/XkNCQrR48eJasmRJLVCggFosFo2MjNQPPvhAN23apH/88YeePHkyS2rIjNSPx5o1a3TVqlW6fPlyY9ry5cs1Li7O6jYNGza0WpGHYyK/H4wj53fqL/xnzpzRunXratOmTXXbtm1GzR06dNC6devqJ598oklJSfrWW29pixYtHKZZcCd7r2fcjTPktyoZ/iCcLb/Tewz27t2rr732mrq6uqb5oXvu3Llavnx5u36e4t7InOxF5jwYMufBOcNneer378aNG7VkyZJaqlQpnTx5su7YsUNVVRctWqSVKlVK833RkTz++OM6b948PX78eJrvQ8uWLdP/+7//y5Y6Uj6vV65cqT169DDWKf7880/t0qWLhoaG6syZM61qO3r0aLbUdr9opN+nW7duaYcOHXTUqFFaokQJffHFF4031OnTp7VTp046Z84cuzV+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"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=6aff51eb71eb2238">
|
||
<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 [19]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">create_similarity_matrix</span><span class="p">(</span><span class="n">sentences</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s1">'direct'</span><span class="p">):</span>
|
||
<span class="w"> </span><span class="sd">"""Create similarity matrix between all sentences"""</span>
|
||
<span class="n">n</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sentences</span><span class="p">)</span>
|
||
<span class="n">similarity_matrix</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">n</span><span class="p">,</span> <span class="n">n</span><span class="p">))</span>
|
||
|
||
<span class="n">preprocessor</span> <span class="o">=</span> <span class="n">TextPreprocessor</span><span class="p">()</span>
|
||
|
||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||
<span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="n">j</span><span class="p">:</span>
|
||
<span class="n">similarity_matrix</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span>
|
||
<span class="k">else</span><span class="p">:</span>
|
||
<span class="k">if</span> <span class="n">method</span> <span class="o">==</span> <span class="s1">'direct'</span><span class="p">:</span>
|
||
<span class="n">sent1</span> <span class="o">=</span> <span class="n">preprocessor</span><span class="o">.</span><span class="n">direct_preprocessing</span><span class="p">(</span><span class="n">sentences</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
|
||
<span class="n">sent2</span> <span class="o">=</span> <span class="n">preprocessor</span><span class="o">.</span><span class="n">direct_preprocessing</span><span class="p">(</span><span class="n">sentences</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
|
||
<span class="c1"># Simple character-based similarity</span>
|
||
<span class="k">if</span> <span class="ow">not</span> <span class="n">sent1</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">sent2</span><span class="p">:</span>
|
||
<span class="n">similarity</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||
<span class="k">else</span><span class="p">:</span>
|
||
<span class="n">min_len</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">sent1</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">sent2</span><span class="p">))</span>
|
||
<span class="n">max_len</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">sent1</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">sent2</span><span class="p">))</span>
|
||
<span class="n">similarity</span> <span class="o">=</span> <span class="n">min_len</span> <span class="o">/</span> <span class="n">max_len</span> <span class="k">if</span> <span class="n">max_len</span> <span class="o">></span> <span class="mi">0</span> <span class="k">else</span> <span class="mf">0.0</span>
|
||
|
||
<span class="k">elif</span> <span class="n">method</span> <span class="o">==</span> <span class="s1">'semantic'</span><span class="p">:</span>
|
||
<span class="n">sent1</span> <span class="o">=</span> <span class="n">preprocessor</span><span class="o">.</span><span class="n">semantic_preprocessing</span><span class="p">(</span><span class="n">sentences</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
|
||
<span class="n">sent2</span> <span class="o">=</span> <span class="n">preprocessor</span><span class="o">.</span><span class="n">semantic_preprocessing</span><span class="p">(</span><span class="n">sentences</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
|
||
<span class="c1"># Jaccard similarity on semantic tokens</span>
|
||
<span class="n">words1</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">sent1</span><span class="o">.</span><span class="n">split</span><span class="p">())</span>
|
||
<span class="n">words2</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">sent2</span><span class="o">.</span><span class="n">split</span><span class="p">())</span>
|
||
<span class="k">if</span> <span class="ow">not</span> <span class="n">words1</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">words2</span><span class="p">:</span>
|
||
<span class="n">similarity</span> <span class="o">=</span> <span class="mf">1.0</span>
|
||
<span class="k">elif</span> <span class="ow">not</span> <span class="n">words1</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">words2</span><span class="p">:</span>
|
||
<span class="n">similarity</span> <span class="o">=</span> <span class="mf">0.0</span>
|
||
<span class="k">else</span><span class="p">:</span>
|
||
<span class="n">intersection</span> <span class="o">=</span> <span class="n">words1</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">words2</span><span class="p">)</span>
|
||
<span class="n">union</span> <span class="o">=</span> <span class="n">words1</span><span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="n">words2</span><span class="p">)</span>
|
||
<span class="n">similarity</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">intersection</span><span class="p">)</span> <span class="o">/</span> <span class="nb">len</span><span class="p">(</span><span class="n">union</span><span class="p">)</span>
|
||
|
||
<span class="n">similarity_matrix</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">similarity</span>
|
||
|
||
<span class="k">return</span> <span class="n">similarity_matrix</span>
|
||
|
||
<span class="c1"># Create and visualize similarity matrices</span>
|
||
<span class="n">direct_matrix</span> <span class="o">=</span> <span class="n">create_similarity_matrix</span><span class="p">(</span><span class="n">test_sentences</span><span class="p">,</span> <span class="s1">'direct'</span><span class="p">)</span>
|
||
<span class="n">semantic_matrix</span> <span class="o">=</span> <span class="n">create_similarity_matrix</span><span class="p">(</span><span class="n">test_sentences</span><span class="p">,</span> <span class="s1">'semantic'</span><span class="p">)</span>
|
||
|
||
<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
|
||
|
||
<span class="c1"># Direct similarity heatmap</span>
|
||
<span class="n">im1</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">direct_matrix</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'viridis'</span><span class="p">,</span> <span class="n">aspect</span><span class="o">=</span><span class="s1">'auto'</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Direct Preprocessing Similarity Matrix'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">'Sentence ID'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">'Sentence ID'</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">im1</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||
|
||
<span class="c1"># Semantic similarity heatmap</span>
|
||
<span class="n">im2</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">semantic_matrix</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'viridis'</span><span class="p">,</span> <span class="n">aspect</span><span class="o">=</span><span class="s1">'auto'</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Semantic Preprocessing Similarity Matrix'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">'Sentence ID'</span><span class="p">)</span>
|
||
<span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">'Sentence ID'</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">im2</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
||
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
|
||
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaMAAAJOCAYAAACqfhu3AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcbVJREFUeJzt3Xm4VWXZP/DvYTogk6IyKQo5hDMqyuuUVhSZaVaOWSKWTZAib6ZUimmKWvnTyjTtdegty6ws09QIh17ngXDI2VBJY3AEMQbPWb8/Tmw6AXoO7H32GT6f61rX5V577Wfde8E5+8vjvZ9VUxRFEQAAAAAAqKBO1S4AAAAAAID2z2Q0AAAAAAAVZzIaAAAAAICKMxkNAAAAAEDFmYwGAAAAAKDiTEYDAAAAAFBxJqMBAAAAAKg4k9EAAAAAAFScyWgAAAAAACrOZDQd2qmnnpqamppql0ErctRRR2Xo0KHVLuNt3Xrrrampqcmtt95atjEvv/zy1NTU5Nlnny3t22effbLPPvuU7RxJ8uyzz6ampiaXX355WcdtS2pqanLqqadWuwwA6HAqkaGoPPn82dI++bwy5HNoWSajaTeWf1gv37p3757BgwdnzJgx+d73vpeFCxdWu8SSN998M6eeemqTw8rycLN869q1a971rnflyCOPzN/+9rfKFkuLqa+vz09+8pOMGjUq/fr1S+/evbPlllvmyCOPzN13313t8irmD3/4Q0XC39ChQ1NTU5PRo0ev8vlLLrmk9DN1//33N3v8O++8M6eeempee+21tawUAFrOww8/nIMOOiibbrppunfvno022igf+MAH8v3vf7/apZXND3/4w4pPrMnnHYN8Xl7yOZAkNUVRFNUuAsrh8ssvz7hx43Laaadl2LBhWbZsWebMmZNbb70106ZNyyabbJJrr70222+/fek1b731Vt5666107969RWt96aWXsuGGG2bKlClN+pC/9dZb8973vjfHHntsdtlllyxbtiwzZszIxRdfnF69euXhhx/O4MGDK194B7Bs2bLU19entra2xc89YcKEXHDBBfnoRz+a973vfenSpUueeOKJ3HDDDfnkJz9Z+rtSX1+fpUuXplu3bunUqTz/T7Guri7Lli1LbW1t6dsCy7suytnhURRFlixZkq5du6Zz585JVrzvcn8cDR06NHPnzs3SpUvzwgsvZODAgY2e32effXLPPfdk8eLFue+++zJy5Mhmjf+d73wnJ5xwQmbNmtWsbp3FixenS5cu6dKlS7POBwBr684778x73/vebLLJJhk7dmwGDhyY2bNn5+67784zzzyTp59+utollsW2226bDTbYYKUMU84MJZ+3HPlcPm8q+RzaBj9ptDv77rtvow+tyZMn5+abb85HPvKRHHDAAXnsscfSo0ePJGnSB87yYNHSE9arstdee+Wggw5KkowbNy5bbrlljj322FxxxRWZPHnyKl+zaNGi9OzZs0XqW7x4cVkDWDV07dq1KuedO3dufvjDH+aYY47JxRdf3Oi58847L/Pnzy897tSpU9n/Pnbu3LkUPivhrbfeSn19fbp169aiP0t77LFH7rvvvlx11VU57rjjSvv//ve/5//+7//ysY99LL/+9a8rXse//x5pDb9LAOiYzjjjjPTt2zf33Xdf1l133UbPzZs3rzpFtaBKZCj5vPLk88qQz+VzqJa2+4kEzfC+970vJ598cp577rn89Kc/Le1f1ZrRNTU1mTBhQn72s59lm222SW1tbW688cYkyQsvvJCjjz46AwYMSG1tbbbZZptceumlK51v8eLFOfXUU7Plllume/fuGTRoUD7+8Y/nmWeeybPPPpsNN9wwSfLNb36z9DWkNfka1Pve974kyaxZsxq9n0cffTSf/OQns95662XPPfcsHf/Tn/40O++8c3r06JF+/frlsMMOy+zZsxuNuc8++2TbbbfNAw88kN133z09evTIsGHDctFFFzU6bvlXE3/xi1/kG9/4RjbaaKOss846WbBgQZLk6quvLp1rgw02yKc+9am88MILK72Hxx9/PIccckg23HDD9OjRI+9+97vz9a9/vdExTb3u3//+97PNNttknXXWyXrrrZeRI0fmyiuvLD2/cOHCTJw4MUOHDk1tbW369++fD3zgA5kxY0bpmP9ck275Gmrf+c53cvHFF2ezzTZLbW1tdtlll9x3330r1XD11Vdn6623Tvfu3bPtttvmmmuuadI6d7NmzUpRFNljjz1Weq6mpib9+/cvPV7VmnTL/9weeuih7L333llnnXWy+eab51e/+lWS5LbbbsuoUaNK1/hPf/pTo3Osak26/7R06dKccsop2XnnndO3b9/07Nkze+21V2655ZZGx/37NTvvvPNK1+zRRx9daU26o446KhdccEHpfS7fiqLI0KFD89GPfnSlOhYvXpy+ffvm85///Nte0yTp3r17Pv7xjzf6e5AkP//5z7PeeutlzJgxK73moYceylFHHZV3vetd6d69ewYOHJijjz46L7/8cumYU089NSeccEKSZNiwYaW6l1+/t/s98u8/7//85z8zfPjwDB8+PP/85z9L47/yyisZNGhQdt9999TV1b3j+wSApnjmmWeyzTbbrDQRnaRR1liuOdlxTTPIc889ly996Ut597vfnR49emT99dfPwQcfvFImWZ5V7rjjjkyaNCkbbrhhevbsmY997GONJgWHDh2av/71r7nttttKn8//3k26qnV977nnnnz4wx/Oeuutl549e2b77bfP+eef38Sr2ph83ph8Lp//J/kc0BlNh/HpT386X/va1/LHP/4xxxxzzNsee/PNN+eXv/xlJkyYkA022KD0daL/+q//Kn2Ibbjhhrnhhhvymc98JgsWLMjEiROTNHyd6iMf+UimT5+eww47LMcdd1wWLlyYadOm5ZFHHsno0aNz4YUX5otf/GI+9rGP5eMf/3iSNFo+pKmeeeaZJMn666/faP/BBx+cLbbYImeeeWbpq1VnnHFGTj755BxyyCH57Gc/m/nz5+f73/9+3vOe9+Qvf/lLo3+UvPrqq/nwhz+cQw45JIcffnh++ctf5otf/GK6deuWo48+utG5Tj/99HTr1i1f+cpXsmTJknTr1q20ZMouu+ySqVOnZu7cuTn//PNzxx13NDrXQw89lL322itdu3bN5z73uQwdOjTPPPNMfv/73+eMM85IkiZf90suuSTHHntsDjrooBx33HFZvHhxHnroodxzzz355Cc/mST5whe+kF/96leZMGFCtt5667z88su5/fbb89hjj2WnnXZ622t95ZVXZuHChfn85z+fmpqanHPOOfn4xz+ev/3tb6Vujeuvvz6HHnpotttuu0ydOjWvvvpqPvOZz2SjjTZ6xz/LTTfdNElDWD744IOzzjrrvONr/tOrr76aj3zkIznssMNy8MEH58ILL8xhhx2Wn/3sZ5k4cWK+8IUv5JOf/GS+/e1v56CDDsrs2bPTu3fvJo+/YMGC/PjHP87hhx+eY445JgsXLsz//M//ZMyYMbn33nszYsSIRsdfdtllWbx4cT73uc+ltrY2/fr1S319faNjPv/5z+fFF1/MtGnT8r//+7+l/TU1NfnUpz6Vc845J6+88kr69etXeu73v/99FixYkE996lNNqvuTn/xkPvjBD+aZZ57JZpttlqThz/Oggw5aZafNtGnT8re//S3jxo3LwIED89e//jUXX3xx/vrXv+buu+9OTU1NPv7xj+fJJ5/Mz3/+8/y///f/ssEGGyRJ6X80Jav+PfKfevTokSuuuCJ77LFHvv71r+fcc89NkowfPz6vv/56Lr/88op2xADQsWy66aa566678sgjj2Tbbbd922Obmx3XNIPcd999ufPOO3PYYYdl4403zrPPPpsLL7ww++yzTx599NGVMtGXv/zlrLfeepkyZUqeffbZnHfeeZkwYUKuuuqqJA0dq1/+8pfTq1ev0gTqgAEDVvs+p02blo985CMZNGhQjjvuuAwcODCPPfZYrrvuukZdm00ln8vn/04+XzX5HDq4AtqJyy67rEhS3Hfffas9pm/fvsWOO+5YejxlypTiP38MkhSdOnUq/vrXvzba/5nPfKYYNGhQ8dJLLzXaf9hhhxV9+/Yt3nzzzaIoiuLSSy8tkhTnnnvuSuevr68viqIo5s+fXyQppkyZ0qT3dssttxRJiksvvbSYP39+8eKLLxbXX399MXTo0KKmpqb0npe/n8MPP7zR65999tmic+fOxRlnnNFo/8MPP1x06dKl0f699967SFJ897vfLe1bsmRJMWLEiKJ///7F0qVLG9X0rne9q/Tei6Ioli5dWvTv37/Ydttti3/+85+l/dddd12RpDjllFNK+97znvcUvXv3Lp577rlVXqeiaPp1/+hHP1pss802b3sd+/btW4wfP/5tjxk7dmyx6aablh7PmjWrSFKsv/76xSuvvFLa/7vf/a5IUvz+978v7dtuu+2KjTfeuFi4cGFp36233lokaTTm6hx55JFFkmK99dYrPvaxjxXf+c53iscee2yl45Zf+1tuuaW0b/mf25VXXlna9/jjj5f+Pt99992l/TfddFORpLjssstK+5b//MyaNavRmHvvvXfp8VtvvVUsWbKkUS2vvvpqMWDAgOLoo48u7Vt+zfr06VPMmzev0fHLn/v3c48fP36ln8OiKIonnniiSFJceOGFjfYfcMABxdChQxv9PVmVTTfdtNhvv/2Kt956qxg4cGBx+umnF0VRFI8++miRpLjttttW+Xvj3/8+L/fzn/+8SFL8+c9/Lu379re/vdI1W251v0eWP/efP/uTJ08uOnXqVPz5z38urr766iJJcd55573t+wOA5vrjH/9YdO7cuejcuXOx2267FV/96leLm266qZTvlluT7LimGWRVn7t33XVXkaT4yU9+Utq3/DN79OjRjTLA8ccfX3Tu3Ll47bXXSvu22WabRhlmuf/MUG+99VYxbNiwYtNNNy1effXVRse+U86Qz+Xzfyefy+dA01mmgw6lV69eWbhw4Tset/fee2frrbcuPS6KIr/+9a+z//77pyiKvPTSS6VtzJgxef3110tfJfv1r3+dDTbYIF/+8pdXGvc/lwRprqOPPjobbrhhBg8enP322y+LFi3KFVdcsdKNHb7whS80evyb3/wm9fX1OeSQQxrVPnDgwGyxxRYrfY2rS5cujb5i1a1bt3z+85/PvHnz8sADDzQ6duzYsaU1uJPk/vvvz7x58/KlL32p0dpb++23X4YPH57rr78+STJ//vz8+c9/ztFHH51NNtmk0ZjLr1Nzrvu6666bv//976v8at5y6667bu655568+OKLqz1mdQ499NCst956pcd77bVXkpTulv7iiy/m4YcfzpFHHplevXqVjtt7772z3XbbNekcl112WX7wgx9k2LBhueaaa/KVr3wlW221Vd7//vev8iuU/6lXr1457LDDSo/f/e53Z911181WW22VUaNGlfYv/+/m3um9c+fO6datW5KGNdZeeeWVvPXWWxk5cmSjr1Iu94lPfKJRJ0Jzbbnllhk1alR+9rOflfa98sorueGGG3LEEUc0+eepc+fOOeSQQ/Lzn/88SfKzn/0sQ4YMKf0Z/qd///u8ePHivPTSS/mv//qvJFnl+1yd//w98nZOPfXUbLPNNhk7dmy+9KUvZe+9986xxx7b5HMBQFN84AMfyF133ZUDDjggDz74YM4555yMGTMmG220Ua699trScc3NjmuTQf79c3fZsmV5+eWXs/nmm2fddddd5efu5z73uUYZYK+99kpdXV2ee+65Zl+Pv/zlL5k1a1YmTpy40tIlTc0Z8rl8/nbk89XXLZ9Dx2Uymg7ljTfeaNLXnoYNG9bo8fz58/Paa6/l4osvzoYbbthoGzduXJIVN3155pln8u53v7sid+I95ZRTMm3atNx888156KGH8uKLL+bTn/70O9b/1FNPpSiKbLHFFivV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tttuu1br1b2dzTbbLN/61rcyefLkPPvssznwwAPTu3fvzJo1K9dcc00+97nP5Stf+Urp+MGDB+fss8/Os88+my233DJXXXVVZs6cmYsvvni13d7Lde3aNWeffXbGjRuXvffeO4cffnjmzp2b888/P0OHDm30Af69730ve+65Z3baaad87nOfy7Bhw/Lss8/m+uuvz8yZM5M0/bp/8IMfzMCBA7PHHntkwIABeeyxx/KDH/wg++23X3r37p3XXnstG2+8cQ466KDssMMO6dWrV/70pz/lvvvue9vw0xxnnnlmPvrRj2aPPfbIuHHj8uqrr+YHP/hBtt1220YBeFX+/ve/Z9ddd8373ve+vP/978/AgQMzb968/PznP8+DDz6YiRMnZoMNNihLnWvqIx/5SH7zm9/kYx/7WPbbb7/MmjUrF110Ubbeeut3fH9vZ/k/oI499tiMGTNmpUC73377Zf3118/VV1+dfffdN/3791+j82y66aY59dRT3/aYPn365D3veU/OOeecLFu2LBtttFH++Mc/ZtasWaut++tf/3oOO+ywdO3aNfvvv/9K6zm+k29961uZOXNmpk+fnt69e2f77bfPKaeckm984xs56KCD8uEPf7hZ4wHA6nz5y1/Om2++mY997GMZPnx4li5dmjvvvDNXXXVVhg4dWlrzt7nZcW185CMfyf/+7/+mb9++2XrrrXPXXXflT3/6U9Zff/01HnPnnXfOhRdemG9961vZfPPN079//5U6gpOG9YAvvPDC7L///hkxYkTGjRuXQYMG5fHHH89f//rX0lf0K0E+l8/LQT5fdd3yObRyBbQTl112WZGktHXr1q0YOHBg8YEPfKA4//zziwULFqz0milTphT/+WOQpBg/fvwqzzF37txi/PjxxZAhQ4quXbsWAwcOLN7//vcXF198caPj3nzzzeLrX/96MWzYsNJxBx10UPHMM8+UjrnzzjuLnXfeuejWrVuRpJgyZcpq39stt9xSJCmuvvrqt70Gy9/P/PnzV/n8r3/962LPPfcsevbsWfTs2bMYPnx4MX78+OKJJ54oHbP33nsX22yzTXH//fcXu+22W9G9e/di0003LX7wgx80q6arrrqq2HHHHYva2tqiX79+xRFHHFH8/e9/X+m4Rx55pPjYxz5WrLvuukX37t2Ld7/73cXJJ5/c6JimXPcf/ehHxXve855i/fXXL2pra4vNNtusOOGEE4rXX3+9KIqiWLJkSXHCCScUO+ywQ9G7d++iZ8+exQ477FD88Ic/bHSusWPHFptuumnp8axZs4okxbe//e2Val/Vn9svfvGLYvjw4UVtbW2x7bbbFtdee23xiU98ohg+fPgqr9NyCxYsKM4///xizJgxxcYbb1x07dq16N27d7HbbrsVl1xySVFfX186dvm1v+WWW0r7lv+5/adNN9202G+//VZZ+7//PV/+8zNr1qxGY+69996lx/X19cWZZ55ZbLrppkVtbW2x4447Ftddd12zrtny5y677LLSvrfeeqv48pe/XGy44YZFTU3NSj+TRVEUX/rSl4okxZVXXrnSc6uzuvf+75a/7/vuu6+07+9//3vp72Tfvn2Lgw8+uHjxxRdX+ed9+umnFxtttFHRqVOnRtfv7X6P/Ps4DzzwQNGlS5fiy1/+cqNj3nrrrWKXXXYpBg8eXLz66qtNfs8A8HZuuOGG4uijjy6GDx9e9OrVq+jWrVux+eabF1/+8peLuXPnrnR8c7Ljf2pqBnn11VeLcePGFRtssEHRq1evYsyYMcXjjz9ebLrppsXYsWNLx63qM7soVp2L5syZU+y3335F7969iySlPLOqY4uiKG6//fbiAx/4QCkjbr/99sX3v//9t7uU8rl8Lp/L58AaqimKKt3pAWiV9tlnn7z00ktvu1YczTNixIhsuOGGmTZtWrVLabOOP/74/M///E/mzJlTWuYGAKAjkM/LTz5fe/I5sKasGQ1QJsuWLctbb73VaN+tt96aBx98MPvss091imoHFi9enJ/+9Kf5xCc+IegCANBk8nllyOfA2rBmNECZvPDCCxk9enQ+9alPZfDgwXn88cdz0UUXZeDAgfnCF75Q7fLanHnz5uVPf/pTfvWrX+Xll1/OcccdV+2SAABoQ+Tz8pLPgXIwGQ1QJuutt1523nnn/PjHP878+fPTs2fP7LfffjnrrLPW6iY8HdWjjz6aI444Iv3798/3vve9jBgxotolAQDQhsjn5SWfA+VgzWgAAFqlP//5z/n2t7+dBx54IP/4xz9yzTXX5MADD3zb19x6662ZNGlS/vrXv2bIkCH5xje+kaOOOqpF6gUAgLaiWlnbmtEAALRKixYtyg477JALLrigScfPmjUr++23X9773vdm5syZmThxYj77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Sm+77baMHz8+d999d6ZNm5Zly5blgx/8YBYtWlTt0gAAoE2TtQEAaGmtes3oG2+8sdHjyy+/PP37988DDzyQ97znPVWqCgCg/aorOqWuQp0VlRqXNSNrAwC0HDm7QauejP5Pr7/+epKkX79+qz1myZIlWbJkSenxggULKl4XAAC0de+UteVsAADWVpuZNq+vr8/EiROzxx57ZNttt13tcVOnTk3fvn1L25AhQ1qwSgCAtq1ITeortBVrePfwCy64IEOHDk337t0zatSo3HvvvW97/HnnnZd3v/vd6dGjR4YMGZLjjz8+ixcvXqNzdxRNydpyNgDAmpOzG7SZyejx48fnkUceyS9+8Yu3PW7y5Ml5/fXXS9vs2bNbqEIAAMrtqquuyqRJkzJlypTMmDEjO+ywQ8aMGZN58+at8vgrr7wyJ510UqZMmZLHHnss//M//5OrrroqX/va11q48ralKVlbzgYAaD+qlbPbxDIdEyZMyHXXXZc///nP2Xjjjd/22Nra2tTW1rZQZQAA7UtrW8vu3HPPzTHHHJNx48YlSS666KJcf/31ufTSS3PSSSetdPydd96ZPfbYI5/85CeTJEOHDs3hhx+ee+65Z+2Kb8eamrXlbACANSdnN2jVndFFUWTChAm55pprcvPNN2fYsGHVLgkAgLW0YMGCRtu/r0P875YuXZoHHnggo0ePLu3r1KlTRo8enbvuumuVr9l9993zwAMPlL5i+Le//S1/+MMf8uEPf7j8b6SNk7UBANqXtpCzW3Vn9Pjx43PllVfmd7/7XXr37p05c+YkSfr27ZsePXpUuToAgPanvqhJfbFma841ZewkK601PGXKlJx66qkrHf/SSy+lrq4uAwYMaLR/wIABefzxx1d5jk9+8pN56aWXsueee6Yoirz11lv5whe+YJmOVZC1AQBajpzdoFVPRl944YVJkn322afR/ssuuyxHHXVUyxcEAMBamz17dvr06VN6XM6lH2699daceeaZ+eEPf5hRo0bl6aefznHHHZfTTz89J598ctnO0x7I2gAA7UtbyNmtejK6KIpqlwAA0KHUpVPqKrSS2/Jx+/Tp0ygkr84GG2yQzp07Z+7cuY32z507NwMHDlzla04++eR8+tOfzmc/+9kkyXbbbZdFixblc5/7XL7+9a+nU6dWvUpdi5K1AQBajpzdQBoHAKBV6tat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zGc+85mss8462WabbfL8888nSb785S/nrLPOKnuBAADQEcjZAAC0d82ejJ48eXIefPDB3HrrrenevXtp/+jRo3PVVVeVtTgAAFpYUeGN1ZKzAQDaMTk7yRrcwPC3v/1trrrqqvzXf/1XampWLI69zTbb5JlnnilrcQAA0FHI2QAAtHfNnoyeP39++vfvv9L+RYsWNQrNAAC0Qe7yXTVyNgBAOyZnJ1mDZTpGjhyZ66+/vvR4eTD+8Y9/nN122618lQEAQAciZwMA0N41uzP6zDPPzL777ptHH300b731Vs4///w8+uijufPOO3PbbbdVokYAAFpKJdeca0Nr2VWDnA0A0I7J2UnWoDN6zz33zMyZM/PWW29lu+22yx//+Mf0798/d911V3beeedK1AgAAO2enA0AQHvX7M7oJNlss81yySWXlLsWAACqTcdGVcnZAADtlJydZA06o//whz/kpptuWmn/TTfdlBtuuKEsRQEAQEcjZwMA0N41ezL6pJNOSl1d3Ur7i6LISSedVJaiAACokqLCG6slZwMAtGNydpI1mIx+6qmnsvXWW6+0f/jw4Xn66afLUhQAAHQ0cjYAAO1dsyej+/btm7/97W8r7X/66afTs2fPshQFAECVFDWV3VgtORsAoB2Ts5OswWT0Rz/60UycODHPPPNMad/TTz+d//7v/84BBxxQ1uIAAKCjkLMBAGjvmj0Zfc4556Rnz54ZPnx4hg0blmHDhmWrrbbK+uuvn+985zuVqBEAgBZSU1R2Y/XkbACA9kvObtCluS/o27dv7rzzzkybNi0PPvhgevToke233z7vec97KlEfAAB0CHI2AADtXbMno5OkpqYmH/zgB/PBD36w3PUAAFBNlbwbdxvq2KgWORsAoJ2Ss5Os4WT09OnTM3369MybNy/19fWNnrv00kvLUthyL7zwQk488cTccMMNefPNN7P55pvnsssuy8iRI8t6HgAAqLaWzNmJrA0AQMtq9mT0N7/5zZx22mkZOXJkBg0alJqayt2t8dVXX80ee+yR9773vbnhhhuy4YYb5qmnnsp6661XsXMCAEA1tGTOTmRtAABaXrMnoy+66KJcfvnl+fSnP12Jeho5++yzM2TIkFx22WWlfcOGDav4eQEAoKW1ZM5OZG0AAFpep+a+YOnSpdl9990rUctKrr322owcOTIHH3xw+vfv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pk3LHXfckQcffDBvvPFGdtppp4wePboS9QEA0ILc5bt65GwAgPZLzm7Q7Mno5fbYY4/sscce5awFAAA6PDkbAID2qsnLdNx111257rrrGu37yU9+kmHDhqV///753Oc+lyVLlpS9QAAAWlgHX8eupcnZAAAdhJzd9Mno0047LX/9619Ljx9++OF85jOfyejRo3PSSSfl97//faZOnVqRIgEAoL2SswEA6CiaPBk9c+bMvP/97y89/sUvfpFRo0blkksuyaRJk/K9730vv/zlLytSJAAALcRdvlucnA0A0AHI2UmaMRn96quvZsCAAaXHt912W/bdd9/S41122SWzZ88ub3UAANDOydkAAHQUTZ6MHjBgQGbNmpUkWbp0aWbMmJH/+q//Kj2/cOHCdO3atfwVAgDQYpbf5btSGyuTswEA2j85u0GTJ6M//OEP56STTsr//d//ZfLkyVlnnXWy1157lZ5/6KGHstlmm1WkSAAAaK/kbAAAOoouTT3w9NNPz8c//vHsvffe6dWrV6644op069at9Pyll16aD37wgxUpEgCAFlLJNefaUMdGS5KzAQA6ADk7STMmozfYYIP8+c9/zuuvv55evXqlc+fOjZ6/+uqr06tXr7IXCAAA7ZmcDQBAR9Hkyejl+vbtu8r9/fr1W+tiAACorkquOdeW1rKrBjkbAKD9krMbNHnNaAAAAAAAWFMmowEAWKGo8LYGLrjgggwdOjTdu3fPqFGjcu+99zbpdb/4xS9SU1OTAw88cM1ODAAA5SJnJzEZDQBAK3bVVVdl0qRJmTJlSmbMmJEddtghY8aMybx58972dc8++2y+8pWvZK+99mqhSgEAoO2oVs42GQ0AwAqtrGPj3HPPzTHHHJNx48Zl6623zkUXXZR11lknl1566WpfU1dXlyOOOCLf/OY38653vav5JwUAgHKTs5OYjAYAoJVaunRpHnjggYwePbq0r1OnThk9enTuuuuu1b7utNNOS//+/fOZz3ymJcoEAIA2pZo5u8savxIAgHanJe7yvWDBgkb7a2trU1tbu9LxL730Uurq6jJgwIBG+wcMGJDHH398lee4/fbb8z//8z+ZOXNmWWoGAIBykLMb6IwGAKBFDRkyJH379i1tU6dOLcu4CxcuzKc//elccskl2WCDDcoyJgAAtBVtIWfrjAYAYIW1uBt3k8ZOMnv2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xx+vUlXtR319fSZOnJg99tgj2267bbXLadN+8YtfZMaMGbnvvvuqXUq78be//S0XXnhhJk2alK997Wu57777cuyxx6Zbt24ZO3Zstctrk0466aQsWLAgw4cPT+fOnVNXV5czzjgjRxxxRLVLaxfmzJmTJKv8zFr+HGtv8eLFOfHEE3P44YenT58+1S4H2iw5u7Lk7PKRs8tPzi4/ObvyZO3Kk7PbL5PRtBrjx4/PI488kttvv73apbRps2fPznHHHZdp06ale/fu1S6n3aivr8/IkSNz5plnJkl23HHHPPLII7nooouE5DX0y1/+Mj/72c9y5ZVXZptttsnMmTMzceLEDB482DWlTVi2bFkOOeSQFEWRCy+8sNrlAKyWnF0ecnZlyNnlJ2fT1snZ7ZtlOpphgw02SOfOnTN37txG++fOnZuBAwdWqar2YcKECbnuuutyyy23ZOONN652OW3aAw88kHnz5mWnnXZKly5d0qVLl9x222353ve+ly5duqSurq7aJbZJgwYNytZbb91o31ZbbZXnn3++ShW1fSeccEJOOumkHHbYYdluu+3y6U9/Oscff3ymTp1a7dLaheWfSz6zKmN5QH7uuecybdo03RqwluTsypGzy0fOrgw5u/zk7MqTtStHzm7/TEY3Q7du3bLzzjtn+vTppX319fWZPn16dttttypW1nYVRZEJEybkmmuuyc0335xhw4ZVu6Q27/3vf38efvjhzJw5s7SNHDkyRxxxRGbOnJnOnTtXu8Q2aY899sgTTzzRaN+TTz6ZTTfdtEoVtX1vvvlmOnVq/DHUuXPn1NfXV6mi9mXYsGEZOHBgo8+sBQsW5J577vGZtZaWB+Snnnoqf/rTn7L++utXuyRo8+Ts8pOzy0/Orgw5u/zk7MqTtStDzu4YLNPRTJMmTcrYsWMzcuTI7LrrrjnvvPOyaNGijBs3rtqltUnjx4/PlVdemd/97nfp3bt3aW2lvn37pkePHlWurm3q3bv3SmsB9uzZM+uvv741AtfC8ccfn9133z1nnnlmDjnkkNx77725+OKLc/HFF1e7tDZr//33zxlnnJFNNtkk22yzTf7yl7/k3HPPzdFHH13t0tqMN954I08//XTp8axZszJz5sz069cvm2yySSZOnJhvfetb2WKLLTJs2LCcfPLJGTx4cA488MDqFd0GvN11HTRoUA466KDMmDEj1113Xerq6kqfXf369Uu3bt2qVTa0eXJ2ecnZ5SdnV4acXX5ydnnI2uUnZ5MkKWi273//+8Umm2xSdOvWrdh1112Lu+++u9oltVlJVrlddtll1S6tXdl7772L4447rtpltHm///3vi2233baora0thg8fXlx88cXVLqlNW7BgQXHccccVm2yySdG9e/fiXe96V/H1r3+9WLJkSbVLazNuueWWVf4OHTt2bFEURVFfX1+cfPLJxYABA4ra2tri/e9/f/HEE09Ut+g24O2u66xZs1b72XXLLbdUu3Ro8+Ts8pGzW4acXR5ydnnJ2eUha5efnE1RFEVNURRFZaa5AQAAAACggTWjAQAAAACoOJPRAAAAAABUnMloAAAAAAAqzmQ0AAAAAAAVZzIaAAAAAICKMxkNAAAAAEDFmYwGAAAAAKDiTEYDAAAAAFBxJqMBAAAAAKg4k9FAqzJ//vx88YtfzCabbJLa2toMHDgwY8aMyR133FHW8+yzzz6ZOHFiWceslMsvvzzrrrtuo8c1NTWpqalJ586ds95662XUqFE57bTT8vrrr1evUAAAWi05e2VyNkDL61LtAgD+3Sc+8YksXbo0V1xxRd71rndl7ty5mT59el5++eVql9aq9OnTJ0888USKoshrr72WO++8M1OnTs1ll12WO+64I4MHD652iQAAtCJydtPI2QCVpTMaaDVee+21/N///V/OPvvsvPe9782mm26aXXfdNZMnT84BBxzQ6LjPfvaz2XDDDdOnT5+8733vy4MPPlh6/tRTT82IESPyv//7vxk6dGj69u2bww47LAsXLkySHHXUUbntttty/vnnlzofnn322STJI488kn333Te9evXKgAED8ulPfzovvfRSaex99tknxx57bL761a+mX79+GThwYE499dSV3sfnP//5DBgwIN27d8+2226b6667rvT87bffnr322is9evTIkCFDcuyxx2bRokXNulY1NTUZOHBgBg0alK222iqf+cxncuedd+aNN97IV7/61WaNBQBA+yZnN52cDVBZJqOBVqNXr17p1atXfvvb32bJkiWrPe7ggw/OvHnzcsMNN+SBBx7ITjvtlPe///155ZVXSsc888wz+e1vf5vrrrsu1113XW677bacddZZSZLzzz8/u+22W4455pj84x//yD/+8Y8MGTIkr732Wt73vvdlxx13zP33358bb7wxc+fOzSGHHNLo/FdccUV69uyZe+65J+ecc05OO+20TJs2LUlSX1+ffffdN3fccUd++tOf5tFHH81ZZ52Vzp07l+r60Ic+lE984hN56KGHctVVV+X222/PhAkT1vr69e/fP0cccUSuvfba1NXVrfV4AAC0D3L22pGzAcqoAGhFfvWrXxXrrbde0b1792L33XcvJk+eXDz44IOl5//v//6v6NOnT7F48eJGr9tss82KH/3oR0VRFMWUKVOKddZZp1iwYEHp+RNOOKEYNWpU6fHee+9dHHfccY3GOP3004sPfvCDjfbNnj27SFI88cQTpdftueeejY7ZZZddihNPPLEoiqK46aabik6dOpWO/0+f+cxnis997nON9v3f//1f0alTp+Kf//znKl9z2WWXFX379l3t43934YUXFkmKuXPnrvJ5AAA6Jjl7ZXI2QMvTGQ20Kp/4xCfy4osv5tprr82HPvSh3Hrrrdlpp51y+eWXJ0kefPDBvPHGG1l//fVLHR69evXKrFmz8swzz5TGGTp0aHr37l16PGjQoMybN+9tz/3ggw/mlltuaTTu8OHDk6TR2Ntvv32j1/372DNnzszGG2+cLbfccrXnuPzyyxudY8yYMamvr8+sWbOafqFWoyiKJA1fLwQAgOXk7LUjZwOUhxsYAq1O9+7d84EPfCAf+MAHcvLJJ+ezn/1spkyZkqOOOipvvPFGBg0alFtvvXWl1/37nbC7du3a6LmamprU19e/7XnfeOON7L///jn77LNXem7QoEFNGrtHjx7veI7Pf/7zOfbYY1d6bpNNNnnb1zbFY489lj59+mT99ddf67EAAGhf5Ow1J2cDlIfJaKDV23rrrfPb3/42SbLTTjtlzpw56dKlS4YOHbrGY3br1m2l9d522mmn/PrXv87QoUPTpcua/Xrcfvvt8/e//z1PPvnkKrs2dtpppzz66KPZfPPN12j8tzNv3rxceeWVOfDAA9Opky++AADw9uTsppGzAcrHb1Gg1Xj55Zfzvve9Lz/96U/z0EMPZdasWbn66qtzzjnn5KMf/WiSZPTo0dltt91y4IEH5o9//GOeffbZ3Hnnnfn617+e+++/v8nnGjp0aO655548++yzeemll1JfX5/x48fnlVdeyeGHH5777rsvzzzzTG666aaMGzeuyTcq2XvvvfOe97wnn/jEJzJt2rTMmjUrN9xwQ2688cYkyYknnpg777wzEyZMyMyZM/PUU0/ld7/7XbNvrFIURebMmZN//OMfeeyxx3LppZdm9913T9++fUs3kAEAgETObg45G6CydEYDrUavXr0yatSo/L//9//yzDPPZNmyZRkyZEiOOeaYfO1rX0vS8FW9P/zhD/n617+ecePGZf78+Rk4cGDe8573ZMCAAU0+11e+8pWMHTs2W2+9df75z39m1qxZGTp0aO64446ceOKJ+eAHP5glS5Zk0003zYc+9KFmdUD8+te/zle+8pUcfvjhWbRoUTbffPNScN1+++1z22235etf/3r22muvFEWRzTbbLIceemizrtWCBQsyaNCg1NTUpE+fPnn3u9+dsWPH5rjjjkufPn2aNRYAAO2bnN10cjZAZdUUy1fhBwAAAACACrFMBwAAAAAAFWcyGgAAAACAijMZDQAAAABAxZmMBgAAAACg4kxGAwAAAABQcSajAQAAAACoOJPRAAAAAABUnMloAAAAAAAqzmQ0AAAAAAAVZzIaAAAAAICKMxkNAAAAAEDFmYwGAAAAAKDi/j9BzpszByubqgAAAABJRU5ErkJggg=="/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=f0fc7b35">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<p>Key observations:</p>
|
||
<ul>
|
||
<li>Direct similarity catches exact copies but misses paraphrases</li>
|
||
<li>Semantic similarity identifies meaning-based relationships</li>
|
||
<li>Notice how sentences 0-2 (direct copies) are highly similar in both matrices</li>
|
||
<li>Sentences 3-4 (paraphrases) show higher semantic similarity</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=98f16f7d">
|
||
<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-ipython3"><pre><span></span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>DATA EXPLORATION SUMMARY
|
||
==================================================
|
||
|
||
1. TEXT CHARACTERISTICS:
|
||
- Sentence length varies from 0 to 44 characters
|
||
- Word count ranges from 0 to 10 words
|
||
- 10/13 sentences contain punctuation
|
||
|
||
2. LINGUISTIC FEATURES:
|
||
- Direct preprocessing preserves exact character matching
|
||
- Semantic preprocessing extracts content words (nouns, verbs, adjectives)
|
||
- Syntactic preprocessing normalizes structure while preserving grammar
|
||
|
||
3. DEPENDENCY PARSING INSIGHTS:
|
||
- Different sentence structures can express the same meaning
|
||
- Dependency trees reveal grammatical relationships
|
||
- Root verbs often indicate the main action of the sentence
|
||
|
||
4. SIMILARITY PATTERNS:
|
||
- Direct copies show high similarity in both preprocessing methods
|
||
- Paraphrases show low direct similarity but higher semantic similarity
|
||
- Different sentences show low similarity in both methods
|
||
|
||
5. IMPLICATIONS FOR PLAGIARISM DETECTION:
|
||
- Need multiple similarity measures for comprehensive detection
|
||
- Semantic analysis crucial for identifying paraphrased content
|
||
- Syntactic analysis may help with structural plagiarism
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
</body>
|
||
</html>
|