Commit 75f962bb authored by Richard's avatar Richard Committed by Richard

[erp5_notebook][erp5_officejs]: update iodide to run pyodide

parent 1a24c212
...@@ -2335,115 +2335,115 @@ ...@@ -2335,115 +2335,115 @@
overflow: visible; overflow: visible;
clip: auto; clip: auto;
} }
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: local('Open Sans Light'), src: local('Open Sans Light'),
local('OpenSans-Light'), local('OpenSans-Light'),
url(iodide.master.fonts/opensanslight.woff2) format('woff2'), url(iodide.master.fonts/opensanslight.woff2) format('woff2'),
url(iodide.master.fonts/opensanslight.woff) format('woff'), url(iodide.master.fonts/opensanslight.woff) format('woff'),
url(iodide.master.fonts/opensanslight.ttf) format('truetype'); url(iodide.master.fonts/opensanslight.ttf) format('truetype');
font-weight: 300; font-weight: 300;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: local('Open Sans Light Italic'), src: local('Open Sans Light Italic'),
local('OpenSansLight-Italic'), local('OpenSansLight-Italic'),
url(iodide.master.fonts/opensanslightitalic.woff2) format('woff2'), url(iodide.master.fonts/opensanslightitalic.woff2) format('woff2'),
url(iodide.master.fonts/opensanslightitalic.woff) format('woff'), url(iodide.master.fonts/opensanslightitalic.woff) format('woff'),
url(iodide.master.fonts/opensanslightitalic.ttf) format('truetype'); url(iodide.master.fonts/opensanslightitalic.ttf) format('truetype');
font-weight: 300; font-weight: 300;
font-style: italic; font-style: italic;
} }
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: local('Open Sans'), src: local('Open Sans'),
local('OpenSans'), local('OpenSans'),
url(iodide.master.fonts/opensans.woff2) format('woff2'), url(iodide.master.fonts/opensans.woff2) format('woff2'),
url(iodide.master.fonts/opensans.woff) format('woff'), url(iodide.master.fonts/opensans.woff) format('woff'),
url(iodide.master.fonts/opensans.ttf) format('truetype'); url(iodide.master.fonts/opensans.ttf) format('truetype');
font-weight: 400; font-weight: 400;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: local('Open Sans Italic'), src: local('Open Sans Italic'),
local('OpenSans-Italic'), local('OpenSans-Italic'),
url(iodide.master.fonts/opensansitalic.woff2) format('woff2'), url(iodide.master.fonts/opensansitalic.woff2) format('woff2'),
url(iodide.master.fonts/opensansitalic.woff) format('woff'), url(iodide.master.fonts/opensansitalic.woff) format('woff'),
url(iodide.master.fonts/opensansitalic.ttf) format('truetype'); url(iodide.master.fonts/opensansitalic.ttf) format('truetype');
font-weight: 400; font-weight: 400;
font-style: italic; font-style: italic;
} }
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: local('Open Sans Semibold'), src: local('Open Sans Semibold'),
local('OpenSans-Semibold'), local('OpenSans-Semibold'),
url(iodide.master.fonts/opensanssemibold.woff2) format('woff2'), url(iodide.master.fonts/opensanssemibold.woff2) format('woff2'),
url(iodide.master.fonts/opensanssemibold.woff) format('woff'), url(iodide.master.fonts/opensanssemibold.woff) format('woff'),
url(iodide.master.fonts/opensanssemibold.ttf) format('truetype'); url(iodide.master.fonts/opensanssemibold.ttf) format('truetype');
font-weight: 600; font-weight: 600;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: local('Open Sans Semibold Italic'), src: local('Open Sans Semibold Italic'),
local('OpenSans-SemiboldItalic'), local('OpenSans-SemiboldItalic'),
url(iodide.master.fonts/opensanssemibolditalic.woff2) format('woff2'), url(iodide.master.fonts/opensanssemibolditalic.woff2) format('woff2'),
url(iodide.master.fonts/opensanssemibolditalic.woff) format('woff'), url(iodide.master.fonts/opensanssemibolditalic.woff) format('woff'),
url(iodide.master.fonts/opensanssemibolditalic.ttf) format('truetype'); url(iodide.master.fonts/opensanssemibolditalic.ttf) format('truetype');
font-weight: 600; font-weight: 600;
font-style: italic; font-style: italic;
} }
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: local('Open Sans Bold'), src: local('Open Sans Bold'),
local('OpenSans-Bold'), local('OpenSans-Bold'),
url(iodide.master.fonts/opensansbold.woff2) format('woff2'), url(iodide.master.fonts/opensansbold.woff2) format('woff2'),
url(iodide.master.fonts/opensansbold.woff) format('woff'), url(iodide.master.fonts/opensansbold.woff) format('woff'),
url(iodide.master.fonts/opensansbold.ttf) format('truetype'); url(iodide.master.fonts/opensansbold.ttf) format('truetype');
font-weight: 700; font-weight: 700;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: local('Open Sans Bold Italic'), src: local('Open Sans Bold Italic'),
local('OpenSans-BoldItalic'), local('OpenSans-BoldItalic'),
url(iodide.master.fonts/opensansbolditalic.woff2) format('woff2'), url(iodide.master.fonts/opensansbolditalic.woff2) format('woff2'),
url(iodide.master.fonts/opensansbolditalic.woff) format('woff'), url(iodide.master.fonts/opensansbolditalic.woff) format('woff'),
url(iodide.master.fonts/opensansbolditalic.ttf) format('truetype'); url(iodide.master.fonts/opensansbolditalic.ttf) format('truetype');
font-weight: 700; font-weight: 700;
font-style: italic; font-style: italic;
} }
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: local('Open Sans Extrabold'), src: local('Open Sans Extrabold'),
local('OpenSans-Extrabold'), local('OpenSans-Extrabold'),
url(iodide.master.fonts/opensansextrabold.woff2) format('woff2'), url(iodide.master.fonts/opensansextrabold.woff2) format('woff2'),
url(iodide.master.fonts/opensansextrabold.woff) format('woff'), url(iodide.master.fonts/opensansextrabold.woff) format('woff'),
url(iodide.master.fonts/opensansextrabold.ttf) format('truetype'); url(iodide.master.fonts/opensansextrabold.ttf) format('truetype');
font-weight: 800; font-weight: 800;
font-style: normal; font-style: normal;
} }
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: local('Open Sans Extrabold Italic'), src: local('Open Sans Extrabold Italic'),
local('OpenSans-ExtraboldItalic'), local('OpenSans-ExtraboldItalic'),
url(iodide.master.fonts/opensansextrabolditalic.woff2) format('woff2'), url(iodide.master.fonts/opensansextrabolditalic.woff2) format('woff2'),
url(iodide.master.fonts/opensansextrabolditalic.woff) format('woff'), url(iodide.master.fonts/opensansextrabolditalic.woff) format('woff'),
url(iodide.master.fonts/opensansextrabolditalic.ttf) format('truetype'); url(iodide.master.fonts/opensansextrabolditalic.ttf) format('truetype');
font-weight: 800; font-weight: 800;
font-style: italic; font-style: italic;
} }
.cm-s-eclipse span.cm-meta { color: #FF1717; } .cm-s-eclipse span.cm-meta { color: #FF1717; }
.cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; }
.cm-s-eclipse span.cm-atom { color: #219; } .cm-s-eclipse span.cm-atom { color: #219; }
...@@ -2859,6 +2859,7 @@ li.CodeMirror-hint-active { ...@@ -2859,6 +2859,7 @@ li.CodeMirror-hint-active {
color: #333; color: #333;
background-color: #fff; background-color: #fff;
overflow: hidden; overflow: hidden;
position: relative;
} }
div#page { div#page {
...@@ -2897,13 +2898,17 @@ div#cells.presentation { ...@@ -2897,13 +2898,17 @@ div#cells.presentation {
height: inherit; height: inherit;
} }
div#cells.pane-open {
width: calc(100% - 575px);
}
/************************************************/ /************************************************/
/* cell output styles */ /* cell output styles */
.rep-container {
overflow-x: auto;
}
.array-rep {
overflow-x: auto;
}
.data-set-info { .data-set-info {
color: #888; color: #888;
font-style: italic; font-style: italic;
...@@ -2948,11 +2953,15 @@ div.promise-handler-value { ...@@ -2948,11 +2953,15 @@ div.promise-handler-value {
margin-top:6px; margin-top:6px;
} }
.undefined-rep, .null-rep {
display: inline-block;
}
/************************************************/ /************************************************/
/* header bar styles */ /* header bar styles */
.notebook-toolbar-container { .notebook-toolbar-container {
background-color: black; background-color: black;
height: 50px height: 50px
} }
...@@ -2966,11 +2975,11 @@ div.promise-handler-value { ...@@ -2966,11 +2975,11 @@ div.promise-handler-value {
} }
div.editor-mode-controls { div.editor-mode-controls {
width: 260px; width: 300px;
} }
div.view-controls { div.view-controls {
width: 300px; width: 375px;
display:flex; display:flex;
align-items:center; align-items:center;
} }
...@@ -2993,7 +3002,7 @@ div.title-field-contents { ...@@ -2993,7 +3002,7 @@ div.title-field-contents {
} }
@media (max-width:1100px) { @media (max-width:1100px) {
.last-saved-text { .last-saved-text {
display:none !important; display:none !important;
} }
...@@ -3099,7 +3108,7 @@ div.iodide-tooltip { ...@@ -3099,7 +3108,7 @@ div.iodide-tooltip {
} }
.dependency-src a { .dependency-src a {
color: black; color: black;
font-weight:normal font-weight:normal
} }
...@@ -3123,7 +3132,7 @@ code { ...@@ -3123,7 +3132,7 @@ code {
border-radius: 3px; border-radius: 3px;
} }
.side-pane { .side-pane {
width:575px !important; width:auto !important;
top: 50px !important; top: 50px !important;
border: none !important; border: none !important;
border-left: 2px solid lightgray !important; border-left: 2px solid lightgray !important;
...@@ -3134,6 +3143,7 @@ code { ...@@ -3134,6 +3143,7 @@ code {
top: 0; top: 0;
z-index: 10; z-index: 10;
background: #fff; background: #fff;
padding-top: 1px;
} }
.pane-title { .pane-title {
...@@ -3163,18 +3173,28 @@ div.history-cells { ...@@ -3163,18 +3173,28 @@ div.history-cells {
padding-right: 20px; padding-right: 20px;
} }
div.history-cell {
width: inherit
}
div.history-cells .CodeMirror { div.history-cells .CodeMirror {
height: auto; height: auto;
} }
div.history-cells div.cell-container {
padding-right:0px;
}
pre.history-item-code { pre.history-item-code {
overflow:scroll; overflow: scroll;
padding:3px; padding:3px;
} }
div.history-content {
outline: 1px solid lightgray;
div.history-content {
outline: 1px solid #f1f1f1;
width: calc(100% - 1px)
} }
div.history-date { div.history-date {
...@@ -3201,7 +3221,7 @@ div.side-pane { ...@@ -3201,7 +3221,7 @@ div.side-pane {
border: 2px solid gray; border: 2px solid gray;
border-right: none; border-right: none;
width: 75%; width: 75%;
overflow: scroll; overflow: auto;
height: 100%; height: 100%;
background-color: rgba(255, 255, 255); background-color: rgba(255, 255, 255);
} }
...@@ -3210,8 +3230,36 @@ i.close-side-pane:hover { ...@@ -3210,8 +3230,36 @@ i.close-side-pane:hover {
outline: 1px solid lightgray; outline: 1px solid lightgray;
} }
div.frozen-variables {
display: grid;
grid-template-columns: minmax(100px, min-content) 100px;
grid-column-gap: 0px;
}
div.frozen-variable-name {
border: 1px solid #f1f1f1;
background: #f9f9f9;
font-family: monospace;
padding-left:5px;
padding-right:20px;
overflow-wrap: break-word;
max-width: calc(100% - 25px);
}
div.frozen-variable-value {
border: 1px solid #f1f1f1;
background: #f9f9f9;
font-family: monospace;
color:gray;
justify-self: end;
white-space: pre;
padding-left:5px;
padding-right:5px;
width: 100%;
}
div.declared-variables-list { div.declared-variables-list {
padding: 15px padding: 15px;
} }
div.declared-variable { div.declared-variable {
...@@ -3220,7 +3268,7 @@ div.declared-variable { ...@@ -3220,7 +3268,7 @@ div.declared-variable {
div.declared-variable-name { div.declared-variable-name {
font-size: 14px; font-size: 14px;
font-family: "monospace"; font-family: monospace;
background: #f9f9f9; background: #f9f9f9;
border: 1px solid #f1f1f1; border: 1px solid #f1f1f1;
padding: 1px 10px; padding: 1px 10px;
...@@ -3236,11 +3284,17 @@ div.app-info-message { ...@@ -3236,11 +3284,17 @@ div.app-info-message {
padding-right: 10px; padding-right: 10px;
padding-top: 20px; padding-top: 20px;
} }
div.app-message-when {
font-style:italic;
color:gray;
font-size:12px;
}
.medium-menu { .medium-menu {
display: flex !important; display: flex !important;
justify-content: space-between; justify-content: space-between;
flex-flow: row wrap; flex-flow: row wrap;
max-height:32px !important; max-height:32px !important;
} }
.iodide-menu-item { .iodide-menu-item {
...@@ -3293,6 +3347,11 @@ div.app-info-message { ...@@ -3293,6 +3347,11 @@ div.app-info-message {
top: 10px; top: 10px;
z-index:100; z-index:100;
} }
.user-avatar {
height: 24px;
border-radius: 50%;
}
/* cell and cell container styles*/ /* cell and cell container styles*/
div.cell-container { div.cell-container {
...@@ -3343,15 +3402,16 @@ div#cells.presentation div.cell-row.input { ...@@ -3343,15 +3402,16 @@ div#cells.presentation div.cell-row.input {
} }
.cell-menu-container { .cell-menu-container {
width: 64px; width: 76px;
font-size:12px; font-size:12px;
flex-shrink: 0;
flex-grow: 0;
} }
.cell-type-label { .cell-type-label {
text-align: right; text-align: right;
color: hsl(275, 12%, 75%); color: hsl(275, 12%, 75%);
cursor: pointer; cursor: pointer;
padding: 0px 6px 0px 0px;
height: 18px; height: 18px;
border: 1px solid rgba(0,0,0,0); border: 1px solid rgba(0,0,0,0);
display: flex; display: flex;
...@@ -3391,7 +3451,9 @@ div#cells.presentation div.cell-row.input { ...@@ -3391,7 +3451,9 @@ div#cells.presentation div.cell-row.input {
div.cell-row-container { div.cell-row-container {
width: calc(100% - 64px); /* 100% minus cell-menu-contatiner width*/ width: calc(100% - 76px); /* 100% minus cell-menu-contatiner width*/
flex-shrink: 0;
flex-grow: 0;
} }
div.cell-row { div.cell-row {
...@@ -3407,7 +3469,8 @@ div.collapse-button { ...@@ -3407,7 +3469,8 @@ div.collapse-button {
margin-right: 5px; margin-right: 5px;
margin-left: 3px; margin-left: 3px;
width: 18px; width: 18px;
height: 100%; flex-shrink: 0;
flex-grow: 0;
} }
div.collapse-button:hover { div.collapse-button:hover {
...@@ -3422,15 +3485,18 @@ div.HIDDEN div.collapse-button-tooltip-wrapper { ...@@ -3422,15 +3485,18 @@ div.HIDDEN div.collapse-button-tooltip-wrapper {
} }
div.HIDDEN div.collapse-button { div.HIDDEN div.collapse-button {
width: calc(100%); width: calc(100% - 3px);
/* when collapsed, make the button visible*/ /* when collapsed, make the button visible*/
background: #fdfdfd; background: #fdfdfd;
outline: 1px solid #ddd; outline: 1px solid #ddd;
cursor: pointer; cursor: pointer;
height: 20px;
} }
div.main-component { div.main-component {
width: calc(100% - 24px); /* 100% minus .collapse-button width (including margins) */ width: calc(100% - 25px); /* 100% minus .collapse-button width (including margins) */
flex-shrink: 0;
flex-grow: 0;
} }
div.input div.main-component { div.input div.main-component {
...@@ -3487,10 +3553,11 @@ div.SCROLL div.main-component div.CodeMirror div.CodeMirror-scroll { ...@@ -3487,10 +3553,11 @@ div.SCROLL div.main-component div.CodeMirror div.CodeMirror-scroll {
div.SCROLL.output .main-component { div.SCROLL.output .main-component {
max-height: 300px; max-height: 300px;
outline: 1px solid #ddd; outline: 1px solid #ddd;
overflow-y: scroll; overflow-y: scroll;
} }
/* FIX ME i think this style is never used, double check it*/ /* FIX ME i think this style is never used, double check it*/
div.hidden-cell { div.hidden-cell {
display: none; display: none;
...@@ -3550,7 +3617,18 @@ div#cells.presentation div.cell-row-container { ...@@ -3550,7 +3617,18 @@ div#cells.presentation div.cell-row-container {
div#cells.presentation div.main-component { div#cells.presentation div.main-component {
width: 100%; width: 100%;
} }
/* which side-effects are shown in the report view*/
div#cells.presentation .side-effect-target {
max-width:800px;
margin: auto;
}
div#cells.presentation div.side-effect-target div.hide-side-effect {
display: none;
}
/* div#cells.presentation { /* div#cells.presentation {
padding-top:30px; padding-top:30px;
} */ } */
...@@ -3571,8 +3649,7 @@ div#cells.presentation div.main-component { ...@@ -3571,8 +3649,7 @@ div#cells.presentation div.main-component {
/* establish block-level elements to be a certain width. This /* establish block-level elements to be a certain width. This
lets us create full width divs using css if necessary, while still lets us create full width divs using css if necessary, while still
retaining the narrower colum view for readability and flow. retaining the narrower column view for readability and flow.
*/ */
.user-markdown p, .user-markdown p,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
{"dependencies": {"matplotlib": ["cycler", "kiwisolver", "numpy", "pyparsing", "python-dateutil", "pytz"], "numpy": [], "pyparsing": [], "kiwisolver": [], "python-dateutil": [], "xlrd": [], "pandas": ["numpy", "python-dateutil", "pytz"], "cycler": [], "pytz": []}}
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>packages.json</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/json</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
var Module = typeof Module !== 'undefined' ? Module : {};
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0;
Module.finishedDataFileDownloads = 0;
}
Module.expectedDataFileDownloads++;
(function() {
var loadPackage = function(metadata) {
var PACKAGE_PATH;
if (typeof window === 'object') {
PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
} else if (typeof location !== 'undefined') {
// worker
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
} else {
throw 'using preloaded data can only be done on a web page or in a web worker';
}
var PACKAGE_NAME = 'build/pyodide.asm.data';
var REMOTE_PACKAGE_BASE = 'pyodide.asm.data';
if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
Module['locateFile'] = Module['locateFilePackage'];
err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
}
var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE;
var REMOTE_PACKAGE_SIZE = metadata.remote_package_size;
var PACKAGE_UUID = metadata.package_uuid;
function fetchRemotePackage(packageName, packageSize, callback, errback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', packageName, true);
xhr.responseType = 'arraybuffer';
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
};
} else {
Module.dataFileDownloads[url].loaded = event.loaded;
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++;
}
total = Math.ceil(total * Module.expectedDataFileDownloads/num);
if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
} else if (!Module.dataFileDownloads) {
if (Module['setStatus']) Module['setStatus']('Downloading data...');
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName);
}
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
var packageData = xhr.response;
callback(packageData);
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL);
}
};
xhr.send(null);
};
function handleError(error) {
console.error('package error:', error);
};
var fetchedCallback = null;
var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
if (fetchedCallback) {
fetchedCallback(data);
fetchedCallback = null;
} else {
fetched = data;
}
}, handleError);
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + new Error().stack;
}
Module['FS_createPath']('/', 'lib', true, true);
Module['FS_createPath']('/lib', 'python3.6', true, true);
Module['FS_createPath']('/lib/python3.6', 'json', true, true);
Module['FS_createPath']('/lib/python3.6', 'pydoc_data', true, true);
Module['FS_createPath']('/lib/python3.6', 'logging', true, true);
Module['FS_createPath']('/lib/python3.6', 'xml', true, true);
Module['FS_createPath']('/lib/python3.6/xml', 'parsers', true, true);
Module['FS_createPath']('/lib/python3.6/xml', 'dom', true, true);
Module['FS_createPath']('/lib/python3.6/xml', 'etree', true, true);
Module['FS_createPath']('/lib/python3.6/xml', 'sax', true, true);
Module['FS_createPath']('/lib/python3.6', 'importlib', true, true);
Module['FS_createPath']('/lib/python3.6', 'unittest', true, true);
Module['FS_createPath']('/lib/python3.6/unittest', 'test', true, true);
Module['FS_createPath']('/lib/python3.6/unittest/test', 'testmock', true, true);
Module['FS_createPath']('/lib/python3.6', 'html', true, true);
Module['FS_createPath']('/lib/python3.6', 'site-packages', true, true);
Module['FS_createPath']('/lib/python3.6', 'concurrent', true, true);
Module['FS_createPath']('/lib/python3.6/concurrent', 'futures', true, true);
Module['FS_createPath']('/lib/python3.6', 'collections', true, true);
Module['FS_createPath']('/lib/python3.6', 'wsgiref', true, true);
Module['FS_createPath']('/lib/python3.6', 'asyncio', true, true);
Module['FS_createPath']('/lib/python3.6', 'xmlrpc', true, true);
Module['FS_createPath']('/lib/python3.6', 'http', true, true);
Module['FS_createPath']('/lib/python3.6', 'urllib', true, true);
Module['FS_createPath']('/lib/python3.6', 'encodings', true, true);
Module['FS_createPath']('/lib/python3.6', 'distutils', true, true);
Module['FS_createPath']('/lib/python3.6/distutils', 'command', true, true);
Module['FS_createPath']('/lib/python3.6/distutils', 'tests', true, true);
Module['FS_createPath']('/lib/python3.6', 'email', true, true);
Module['FS_createPath']('/lib/python3.6/email', 'mime', true, true);
function DataRequest(start, end, audio) {
this.start = start;
this.end = end;
this.audio = audio;
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module['addRunDependency']('fp ' + this.name);
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray);
},
finish: function(byteArray) {
var that = this;
Module['FS_createPreloadedFile'](this.name, null, byteArray, true, true, function() {
Module['removeRunDependency']('fp ' + that.name);
}, function() {
if (that.audio) {
Module['removeRunDependency']('fp ' + that.name); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
} else {
err('Preloading file ' + that.name + ' failed');
}
}, false, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
this.requests[this.name] = null;
}
};
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename);
}
function processPackageData(arrayBuffer) {
Module.finishedDataFileDownloads++;
assert(arrayBuffer, 'Loading data file failed.');
assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData');
var byteArray = new Uint8Array(arrayBuffer);
var curr;
// copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though
// (we may be allocating before malloc is ready, during startup).
if (Module['SPLIT_MEMORY']) err('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting');
var ptr = Module['getMemory'](byteArray.length);
Module['HEAPU8'].set(byteArray, ptr);
DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length);
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload();
}
Module['removeRunDependency']('datafile_build/pyodide.asm.data');
};
Module['addRunDependency']('datafile_build/pyodide.asm.data');
if (!Module.preloadResults) Module.preloadResults = {};
Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
if (fetched) {
processPackageData(fetched);
fetched = null;
} else {
fetchedCallback = processPackageData;
}
}
if (Module['calledRun']) {
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];
Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
}
}
loadPackage({"files": [{"start": 0, "audio": 0, "end": 2123, "filename": "/lib/python3.6/signal.py"}, {"start": 2123, "audio": 0, "end": 37378, "filename": "/lib/python3.6/ftplib.py"}, {"start": 37378, "audio": 0, "end": 44867, "filename": "/lib/python3.6/getopt.py"}, {"start": 44867, "audio": 0, "end": 50780, "filename": "/lib/python3.6/xdrlib.py"}, {"start": 50780, "audio": 0, "end": 138841, "filename": "/lib/python3.6/_pyio.py"}, {"start": 138841, "audio": 0, "end": 159307, "filename": "/lib/python3.6/weakref.py"}, {"start": 159307, "audio": 0, "end": 180303, "filename": "/lib/python3.6/mimetypes.py"}, {"start": 180303, "audio": 0, "end": 189219, "filename": "/lib/python3.6/pipes.py"}, {"start": 189219, "audio": 0, "end": 193283, "filename": "/lib/python3.6/colorsys.py"}, {"start": 193283, "audio": 0, "end": 196398, "filename": "/lib/python3.6/_sitebuiltins.py"}, {"start": 196398, "audio": 0, "end": 252089, "filename": "/lib/python3.6/pickle.py"}, {"start": 252089, "audio": 0, "end": 276836, "filename": "/lib/python3.6/_strptime.py"}, {"start": 276836, "audio": 0, "end": 299765, "filename": "/lib/python3.6/heapq.py"}, {"start": 299765, "audio": 0, "end": 305190, "filename": "/lib/python3.6/chunk.py"}, {"start": 305190, "audio": 0, "end": 320333, "filename": "/lib/python3.6/formatter.py"}, {"start": 320333, "audio": 0, "end": 333891, "filename": "/lib/python3.6/pyclbr.py"}, {"start": 333891, "audio": 0, "end": 376969, "filename": "/lib/python3.6/nntplib.py"}, {"start": 376969, "audio": 0, "end": 385073, "filename": "/lib/python3.6/mailcap.py"}, {"start": 385073, "audio": 0, "end": 422598, "filename": "/lib/python3.6/os.py"}, {"start": 422598, "audio": 0, "end": 502743, "filename": "/lib/python3.6/datetime.py"}, {"start": 502743, "audio": 0, "end": 521231, "filename": "/lib/python3.6/warnings.py"}, {"start": 521231, "audio": 0, "end": 529759, "filename": "/lib/python3.6/shelve.py"}, {"start": 529759, "audio": 0, "end": 621568, "filename": "/lib/python3.6/pickletools.py"}, {"start": 621568, "audio": 0, "end": 636428, "filename": "/lib/python3.6/cmd.py"}, {"start": 636428, "audio": 0, "end": 650382, "filename": "/lib/python3.6/binhex.py"}, {"start": 650382, "audio": 0, "end": 663544, "filename": "/lib/python3.6/contextlib.py"}, {"start": 663544, "audio": 0, "end": 664845, "filename": "/lib/python3.6/_bootlocale.py"}, {"start": 664845, "audio": 0, "end": 701381, "filename": "/lib/python3.6/sre_parse.py"}, {"start": 701381, "audio": 0, "end": 712244, "filename": "/lib/python3.6/operator.py"}, {"start": 712244, "audio": 0, "end": 732578, "filename": "/lib/python3.6/gzip.py"}, {"start": 732578, "audio": 0, "end": 741393, "filename": "/lib/python3.6/copy.py"}, {"start": 741393, "audio": 0, "end": 750142, "filename": "/lib/python3.6/_compat_pickle.py"}, {"start": 750142, "audio": 0, "end": 776445, "filename": "/lib/python3.6/_collections_abc.py"}, {"start": 776445, "audio": 0, "end": 782278, "filename": "/lib/python3.6/opcode.py"}, {"start": 782278, "audio": 0, "end": 842649, "filename": "/lib/python3.6/optparse.py"}, {"start": 842649, "audio": 0, "end": 871619, "filename": "/lib/python3.6/trace.py"}, {"start": 871619, "audio": 0, "end": 881862, "filename": "/lib/python3.6/numbers.py"}, {"start": 881862, "audio": 0, "end": 901699, "filename": "/lib/python3.6/_sysconfigdata__emscripten_.py"}, {"start": 901699, "audio": 0, "end": 904514, "filename": "/lib/python3.6/dummy_threading.py"}, {"start": 904514, "audio": 0, "end": 906958, "filename": "/lib/python3.6/nturl2path.py"}, {"start": 906958, "audio": 0, "end": 927631, "filename": "/lib/python3.6/statistics.py"}, {"start": 927631, "audio": 0, "end": 1011832, "filename": "/lib/python3.6/difflib.py"}, {"start": 1011832, "audio": 0, "end": 1038396, "filename": "/lib/python3.6/pstats.py"}, {"start": 1038396, "audio": 0, "end": 1038653, "filename": "/lib/python3.6/struct.py"}, {"start": 1038653, "audio": 0, "end": 1045810, "filename": "/lib/python3.6/zipapp.py"}, {"start": 1045810, "audio": 0, "end": 1047674, "filename": "/lib/python3.6/crypt.py"}, {"start": 1047674, "audio": 0, "end": 1056544, "filename": "/lib/python3.6/types.py"}, {"start": 1056544, "audio": 0, "end": 1072096, "filename": "/lib/python3.6/re.py"}, {"start": 1072096, "audio": 0, "end": 1079193, "filename": "/lib/python3.6/rlcompleter.py"}, {"start": 1079193, "audio": 0, "end": 1126995, "filename": "/lib/python3.6/pathlib.py"}, {"start": 1126995, "audio": 0, "end": 1151856, "filename": "/lib/python3.6/sysconfig.py"}, {"start": 1151856, "audio": 0, "end": 1157494, "filename": "/lib/python3.6/glob.py"}, {"start": 1157494, "audio": 0, "end": 1159605, "filename": "/lib/python3.6/symbol.py"}, {"start": 1159605, "audio": 0, "end": 1238229, "filename": "/lib/python3.6/mailbox.py"}, {"start": 1238229, "audio": 0, "end": 1240267, "filename": "/lib/python3.6/secrets.py"}, {"start": 1240267, "audio": 0, "end": 1253601, "filename": "/lib/python3.6/timeit.py"}, {"start": 1253601, "audio": 0, "end": 1254480, "filename": "/lib/python3.6/tty.py"}, {"start": 1254480, "audio": 0, "end": 1300623, "filename": "/lib/python3.6/platform.py"}, {"start": 1300623, "audio": 0, "end": 1305386, "filename": "/lib/python3.6/pty.py"}, {"start": 1305386, "audio": 0, "end": 1354422, "filename": "/lib/python3.6/threading.py"}, {"start": 1354422, "audio": 0, "end": 1458813, "filename": "/lib/python3.6/doctest.py"}, {"start": 1458813, "audio": 0, "end": 1486123, "filename": "/lib/python3.6/random.py"}, {"start": 1486123, "audio": 0, "end": 1505461, "filename": "/lib/python3.6/sre_compile.py"}, {"start": 1505461, "audio": 0, "end": 1532904, "filename": "/lib/python3.6/socket.py"}, {"start": 1532904, "audio": 0, "end": 1552342, "filename": "/lib/python3.6/selectors.py"}, {"start": 1552342, "audio": 0, "end": 1559349, "filename": "/lib/python3.6/copyreg.py"}, {"start": 1559349, "audio": 0, "end": 1562866, "filename": "/lib/python3.6/io.py"}, {"start": 1562866, "audio": 0, "end": 1569687, "filename": "/lib/python3.6/sre_constants.py"}, {"start": 1569687, "audio": 0, "end": 1581482, "filename": "/lib/python3.6/string.py"}, {"start": 1581482, "audio": 0, "end": 1581802, "filename": "/lib/python3.6/decimal.py"}, {"start": 1581802, "audio": 0, "end": 1657583, "filename": "/lib/python3.6/ipaddress.py"}, {"start": 1657583, "audio": 0, "end": 1670539, "filename": "/lib/python3.6/shlex.py"}, {"start": 1670539, "audio": 0, "end": 1681153, "filename": "/lib/python3.6/code.py"}, {"start": 1681153, "audio": 0, "end": 1703174, "filename": "/lib/python3.6/profile.py"}, {"start": 1703174, "audio": 0, "end": 1756748, "filename": "/lib/python3.6/configparser.py"}, {"start": 1756748, "audio": 0, "end": 1778063, "filename": "/lib/python3.6/pkgutil.py"}, {"start": 1778063, "audio": 0, "end": 1804698, "filename": "/lib/python3.6/tempfile.py"}, {"start": 1804698, "audio": 0, "end": 1826228, "filename": "/lib/python3.6/gettext.py"}, {"start": 1826228, "audio": 0, "end": 1831266, "filename": "/lib/python3.6/stat.py"}, {"start": 1831266, "audio": 0, "end": 1831742, "filename": "/lib/python3.6/antigravity.py"}, {"start": 1831742, "audio": 0, "end": 1837055, "filename": "/lib/python3.6/cProfile.py"}, {"start": 1837055, "audio": 0, "end": 1869035, "filename": "/lib/python3.6/plistlib.py"}, {"start": 1869035, "audio": 0, "end": 1874347, "filename": "/lib/python3.6/linecache.py"}, {"start": 1874347, "audio": 0, "end": 1897463, "filename": "/lib/python3.6/traceback.py"}, {"start": 1897463, "audio": 0, "end": 1908866, "filename": "/lib/python3.6/tabnanny.py"}, {"start": 1908866, "audio": 0, "end": 1917514, "filename": "/lib/python3.6/abc.py"}, {"start": 1917514, "audio": 0, "end": 1929473, "filename": "/lib/python3.6/runpy.py"}, {"start": 1929473, "audio": 0, "end": 1962945, "filename": "/lib/python3.6/enum.py"}, {"start": 1962945, "audio": 0, "end": 1968285, "filename": "/lib/python3.6/_compression.py"}, {"start": 1968285, "audio": 0, "end": 1974796, "filename": "/lib/python3.6/sched.py"}, {"start": 1974796, "audio": 0, "end": 2049520, "filename": "/lib/python3.6/locale.py"}, {"start": 2049520, "audio": 0, "end": 2052595, "filename": "/lib/python3.6/token.py"}, {"start": 2052595, "audio": 0, "end": 2056390, "filename": "/lib/python3.6/imghdr.py"}, {"start": 2056390, "audio": 0, "end": 2080029, "filename": "/lib/python3.6/fractions.py"}, {"start": 2080029, "audio": 0, "end": 2159871, "filename": "/lib/python3.6/typing.py"}, {"start": 2159871, "audio": 0, "end": 2162082, "filename": "/lib/python3.6/keyword.py"}, {"start": 2162082, "audio": 0, "end": 2167200, "filename": "/lib/python3.6/_dummy_thread.py"}, {"start": 2167200, "audio": 0, "end": 2172905, "filename": "/lib/python3.6/_weakrefset.py"}, {"start": 2172905, "audio": 0, "end": 2198761, "filename": "/lib/python3.6/socketserver.py"}, {"start": 2198761, "audio": 0, "end": 2203517, "filename": "/lib/python3.6/genericpath.py"}, {"start": 2203517, "audio": 0, "end": 2264829, "filename": "/lib/python3.6/pdb.py"}, {"start": 2264829, "audio": 0, "end": 2326628, "filename": "/lib/python3.6/subprocess.py"}, {"start": 2326628, "audio": 0, "end": 2343286, "filename": "/lib/python3.6/tracemalloc.py"}, {"start": 2343286, "audio": 0, "end": 2396316, "filename": "/lib/python3.6/imaplib.py"}, {"start": 2396316, "audio": 0, "end": 2417176, "filename": "/lib/python3.6/pprint.py"}, {"start": 2417176, "audio": 0, "end": 2420342, "filename": "/lib/python3.6/fnmatch.py"}, {"start": 2420342, "audio": 0, "end": 2440829, "filename": "/lib/python3.6/base64.py"}, {"start": 2440829, "audio": 0, "end": 2516463, "filename": "/lib/python3.6/zipfile.py"}, {"start": 2516463, "audio": 0, "end": 2545422, "filename": "/lib/python3.6/tokenize.py"}, {"start": 2545422, "audio": 0, "end": 2568635, "filename": "/lib/python3.6/calendar.py"}, {"start": 2568635, "audio": 0, "end": 2658903, "filename": "/lib/python3.6/argparse.py"}, {"start": 2658903, "audio": 0, "end": 2663744, "filename": "/lib/python3.6/__future__.py"}, {"start": 2663744, "audio": 0, "end": 2893972, "filename": "/lib/python3.6/_pydecimal.py"}, {"start": 2893972, "audio": 0, "end": 2906450, "filename": "/lib/python3.6/bz2.py"}, {"start": 2906450, "audio": 0, "end": 2921799, "filename": "/lib/python3.6/posixpath.py"}, {"start": 2921799, "audio": 0, "end": 2933127, "filename": "/lib/python3.6/asynchat.py"}, {"start": 2933127, "audio": 0, "end": 2938811, "filename": "/lib/python3.6/netrc.py"}, {"start": 2938811, "audio": 0, "end": 2956520, "filename": "/lib/python3.6/wave.py"}, {"start": 2956520, "audio": 0, "end": 3060303, "filename": "/lib/python3.6/pydoc.py"}, {"start": 3060303, "audio": 0, "end": 3061306, "filename": "/lib/python3.6/this.py"}, {"start": 3061306, "audio": 0, "end": 3177146, "filename": "/lib/python3.6/inspect.py"}, {"start": 3177146, "audio": 0, "end": 3189903, "filename": "/lib/python3.6/LICENSE.txt"}, {"start": 3189903, "audio": 0, "end": 3197313, "filename": "/lib/python3.6/_threading_local.py"}, {"start": 3197313, "audio": 0, "end": 3206093, "filename": "/lib/python3.6/queue.py"}, {"start": 3206093, "audio": 0, "end": 3208825, "filename": "/lib/python3.6/macurl2path.py"}, {"start": 3208825, "audio": 0, "end": 3231961, "filename": "/lib/python3.6/telnetlib.py"}, {"start": 3231961, "audio": 0, "end": 3244944, "filename": "/lib/python3.6/lzma.py"}, {"start": 3244944, "audio": 0, "end": 3263039, "filename": "/lib/python3.6/sunau.py"}, {"start": 3263039, "audio": 0, "end": 3286393, "filename": "/lib/python3.6/bdb.py"}, {"start": 3286393, "audio": 0, "end": 3300864, "filename": "/lib/python3.6/fileinput.py"}, {"start": 3300864, "audio": 0, "end": 3323891, "filename": "/lib/python3.6/modulefinder.py"}, {"start": 3323891, "audio": 0, "end": 3355033, "filename": "/lib/python3.6/functools.py"}, {"start": 3355033, "audio": 0, "end": 3389744, "filename": "/lib/python3.6/smtpd.py"}, {"start": 3389744, "audio": 0, "end": 3402661, "filename": "/lib/python3.6/stringprep.py"}, {"start": 3402661, "audio": 0, "end": 3435083, "filename": "/lib/python3.6/aifc.py"}, {"start": 3435083, "audio": 0, "end": 3458231, "filename": "/lib/python3.6/ntpath.py"}, {"start": 3458231, "audio": 0, "end": 3464986, "filename": "/lib/python3.6/uu.py"}, {"start": 3464986, "audio": 0, "end": 3509450, "filename": "/lib/python3.6/ssl.py"}, {"start": 3509450, "audio": 0, "end": 3524048, "filename": "/lib/python3.6/_markupbase.py"}, {"start": 3524048, "audio": 0, "end": 3540228, "filename": "/lib/python3.6/csv.py"}, {"start": 3540228, "audio": 0, "end": 3558360, "filename": "/lib/python3.6/dis.py"}, {"start": 3558360, "audio": 0, "end": 3570274, "filename": "/lib/python3.6/compileall.py"}, {"start": 3570274, "audio": 0, "end": 3614390, "filename": "/lib/python3.6/smtplib.py"}, {"start": 3614390, "audio": 0, "end": 3620384, "filename": "/lib/python3.6/getpass.py"}, {"start": 3620384, "audio": 0, "end": 3660611, "filename": "/lib/python3.6/shutil.py"}, {"start": 3660611, "audio": 0, "end": 3696887, "filename": "/lib/python3.6/codecs.py"}, {"start": 3696887, "audio": 0, "end": 3704164, "filename": "/lib/python3.6/symtable.py"}, {"start": 3704164, "audio": 0, "end": 3719126, "filename": "/lib/python3.6/poplib.py"}, {"start": 3719126, "audio": 0, "end": 3739285, "filename": "/lib/python3.6/asyncore.py"}, {"start": 3739285, "audio": 0, "end": 3751308, "filename": "/lib/python3.6/cgitb.py"}, {"start": 3751308, "audio": 0, "end": 3770866, "filename": "/lib/python3.6/textwrap.py"}, {"start": 3770866, "audio": 0, "end": 3776202, "filename": "/lib/python3.6/reprlib.py"}, {"start": 3776202, "audio": 0, "end": 3812246, "filename": "/lib/python3.6/cgi.py"}, {"start": 3812246, "audio": 0, "end": 3832679, "filename": "/lib/python3.6/site.py"}, {"start": 3832679, "audio": 0, "end": 3856313, "filename": "/lib/python3.6/uuid.py"}, {"start": 3856313, "audio": 0, "end": 3856377, "filename": "/lib/python3.6/__phello__.foo.py"}, {"start": 3856377, "audio": 0, "end": 3867046, "filename": "/lib/python3.6/imp.py"}, {"start": 3867046, "audio": 0, "end": 3876523, "filename": "/lib/python3.6/hashlib.py"}, {"start": 3876523, "audio": 0, "end": 3879118, "filename": "/lib/python3.6/bisect.py"}, {"start": 3879118, "audio": 0, "end": 3879484, "filename": "/lib/python3.6/webbrowser.py"}, {"start": 3879484, "audio": 0, "end": 3887138, "filename": "/lib/python3.6/pystone.py"}, {"start": 3887138, "audio": 0, "end": 3894319, "filename": "/lib/python3.6/py_compile.py"}, {"start": 3894319, "audio": 0, "end": 3894466, "filename": "/lib/python3.6/_testcapi.py"}, {"start": 3894466, "audio": 0, "end": 3900460, "filename": "/lib/python3.6/codeop.py"}, {"start": 3900460, "audio": 0, "end": 3905517, "filename": "/lib/python3.6/hmac.py"}, {"start": 3905517, "audio": 0, "end": 3911424, "filename": "/lib/python3.6/macpath.py"}, {"start": 3911424, "audio": 0, "end": 3921254, "filename": "/lib/python3.6/filecmp.py"}, {"start": 3921254, "audio": 0, "end": 4014440, "filename": "/lib/python3.6/tarfile.py"}, {"start": 4014440, "audio": 0, "end": 4021528, "filename": "/lib/python3.6/sndhdr.py"}, {"start": 4021528, "audio": 0, "end": 4028782, "filename": "/lib/python3.6/quopri.py"}, {"start": 4028782, "audio": 0, "end": 4040948, "filename": "/lib/python3.6/ast.py"}, {"start": 4040948, "audio": 0, "end": 4042593, "filename": "/lib/python3.6/json/tool.py"}, {"start": 4042593, "audio": 0, "end": 4055178, "filename": "/lib/python3.6/json/decoder.py"}, {"start": 4055178, "audio": 0, "end": 4069574, "filename": "/lib/python3.6/json/__init__.py"}, {"start": 4069574, "audio": 0, "end": 4085594, "filename": "/lib/python3.6/json/encoder.py"}, {"start": 4085594, "audio": 0, "end": 4088010, "filename": "/lib/python3.6/json/scanner.py"}, {"start": 4088010, "audio": 0, "end": 4088106, "filename": "/lib/python3.6/pydoc_data/_pydoc.css"}, {"start": 4088106, "audio": 0, "end": 4088106, "filename": "/lib/python3.6/pydoc_data/__init__.py"}, {"start": 4088106, "audio": 0, "end": 4725177, "filename": "/lib/python3.6/pydoc_data/topics.py"}, {"start": 4725177, "audio": 0, "end": 4796329, "filename": "/lib/python3.6/logging/__init__.py"}, {"start": 4796329, "audio": 0, "end": 4832273, "filename": "/lib/python3.6/logging/config.py"}, {"start": 4832273, "audio": 0, "end": 4890326, "filename": "/lib/python3.6/logging/handlers.py"}, {"start": 4890326, "audio": 0, "end": 4890883, "filename": "/lib/python3.6/xml/__init__.py"}, {"start": 4890883, "audio": 0, "end": 4891050, "filename": "/lib/python3.6/xml/parsers/__init__.py"}, {"start": 4891050, "audio": 0, "end": 4891298, "filename": "/lib/python3.6/xml/parsers/expat.py"}, {"start": 4891298, "audio": 0, "end": 4927054, "filename": "/lib/python3.6/xml/dom/expatbuilder.py"}, {"start": 4927054, "audio": 0, "end": 4930421, "filename": "/lib/python3.6/xml/dom/minicompat.py"}, {"start": 4930421, "audio": 0, "end": 4934440, "filename": "/lib/python3.6/xml/dom/__init__.py"}, {"start": 4934440, "audio": 0, "end": 4947436, "filename": "/lib/python3.6/xml/dom/xmlbuilder.py"}, {"start": 4947436, "audio": 0, "end": 4959197, "filename": "/lib/python3.6/xml/dom/pulldom.py"}, {"start": 4959197, "audio": 0, "end": 4962599, "filename": "/lib/python3.6/xml/dom/domreg.py"}, {"start": 4962599, "audio": 0, "end": 4963535, "filename": "/lib/python3.6/xml/dom/NodeFilter.py"}, {"start": 4963535, "audio": 0, "end": 5030354, "filename": "/lib/python3.6/xml/dom/minidom.py"}, {"start": 5030354, "audio": 0, "end": 5087382, "filename": "/lib/python3.6/xml/etree/ElementTree.py"}, {"start": 5087382, "audio": 0, "end": 5097317, "filename": "/lib/python3.6/xml/etree/ElementPath.py"}, {"start": 5097317, "audio": 0, "end": 5097399, "filename": "/lib/python3.6/xml/etree/cElementTree.py"}, {"start": 5097399, "audio": 0, "end": 5099003, "filename": "/lib/python3.6/xml/etree/__init__.py"}, {"start": 5099003, "audio": 0, "end": 5104154, "filename": "/lib/python3.6/xml/etree/ElementInclude.py"}, {"start": 5104154, "audio": 0, "end": 5118076, "filename": "/lib/python3.6/xml/sax/handler.py"}, {"start": 5118076, "audio": 0, "end": 5121669, "filename": "/lib/python3.6/xml/sax/__init__.py"}, {"start": 5121669, "audio": 0, "end": 5133874, "filename": "/lib/python3.6/xml/sax/saxutils.py"}, {"start": 5133874, "audio": 0, "end": 5149578, "filename": "/lib/python3.6/xml/sax/expatreader.py"}, {"start": 5149578, "audio": 0, "end": 5154363, "filename": "/lib/python3.6/xml/sax/_exceptions.py"}, {"start": 5154363, "audio": 0, "end": 5167047, "filename": "/lib/python3.6/xml/sax/xmlreader.py"}, {"start": 5167047, "audio": 0, "end": 5167891, "filename": "/lib/python3.6/importlib/machinery.py"}, {"start": 5167891, "audio": 0, "end": 5173761, "filename": "/lib/python3.6/importlib/__init__.py"}, {"start": 5173761, "audio": 0, "end": 5184543, "filename": "/lib/python3.6/importlib/abc.py"}, {"start": 5184543, "audio": 0, "end": 5223386, "filename": "/lib/python3.6/importlib/_bootstrap.py"}, {"start": 5223386, "audio": 0, "end": 5277873, "filename": "/lib/python3.6/importlib/_bootstrap_external.py"}, {"start": 5277873, "audio": 0, "end": 5288756, "filename": "/lib/python3.6/importlib/util.py"}, {"start": 5288756, "audio": 0, "end": 5291159, "filename": "/lib/python3.6/unittest/signals.py"}, {"start": 5291159, "audio": 0, "end": 5370659, "filename": "/lib/python3.6/unittest/mock.py"}, {"start": 5370659, "audio": 0, "end": 5381138, "filename": "/lib/python3.6/unittest/suite.py"}, {"start": 5381138, "audio": 0, "end": 5438099, "filename": "/lib/python3.6/unittest/case.py"}, {"start": 5438099, "audio": 0, "end": 5441242, "filename": "/lib/python3.6/unittest/__init__.py"}, {"start": 5441242, "audio": 0, "end": 5448993, "filename": "/lib/python3.6/unittest/runner.py"}, {"start": 5448993, "audio": 0, "end": 5456435, "filename": "/lib/python3.6/unittest/result.py"}, {"start": 5456435, "audio": 0, "end": 5461868, "filename": "/lib/python3.6/unittest/util.py"}, {"start": 5461868, "audio": 0, "end": 5484092, "filename": "/lib/python3.6/unittest/loader.py"}, {"start": 5484092, "audio": 0, "end": 5494644, "filename": "/lib/python3.6/unittest/main.py"}, {"start": 5494644, "audio": 0, "end": 5495129, "filename": "/lib/python3.6/unittest/__main__.py"}, {"start": 5495129, "audio": 0, "end": 5500669, "filename": "/lib/python3.6/unittest/test/test_functiontestcase.py"}, {"start": 5500669, "audio": 0, "end": 5573255, "filename": "/lib/python3.6/unittest/test/test_case.py"}, {"start": 5573255, "audio": 0, "end": 5573305, "filename": "/lib/python3.6/unittest/test/dummy.py"}, {"start": 5573305, "audio": 0, "end": 5575609, "filename": "/lib/python3.6/unittest/test/_test_warnings.py"}, {"start": 5575609, "audio": 0, "end": 5589330, "filename": "/lib/python3.6/unittest/test/test_program.py"}, {"start": 5589330, "audio": 0, "end": 5589914, "filename": "/lib/python3.6/unittest/test/__init__.py"}, {"start": 5589914, "audio": 0, "end": 5614411, "filename": "/lib/python3.6/unittest/test/test_result.py"}, {"start": 5614411, "audio": 0, "end": 5630914, "filename": "/lib/python3.6/unittest/test/test_setups.py"}, {"start": 5630914, "audio": 0, "end": 5647944, "filename": "/lib/python3.6/unittest/test/test_assertions.py"}, {"start": 5647944, "audio": 0, "end": 5681209, "filename": "/lib/python3.6/unittest/test/test_discovery.py"}, {"start": 5681209, "audio": 0, "end": 5684961, "filename": "/lib/python3.6/unittest/test/support.py"}, {"start": 5684961, "audio": 0, "end": 5745730, "filename": "/lib/python3.6/unittest/test/test_loader.py"}, {"start": 5745730, "audio": 0, "end": 5755046, "filename": "/lib/python3.6/unittest/test/test_skipping.py"}, {"start": 5755046, "audio": 0, "end": 5770230, "filename": "/lib/python3.6/unittest/test/test_suite.py"}, {"start": 5770230, "audio": 0, "end": 5780227, "filename": "/lib/python3.6/unittest/test/test_break.py"}, {"start": 5780227, "audio": 0, "end": 5792240, "filename": "/lib/python3.6/unittest/test/test_runner.py"}, {"start": 5792240, "audio": 0, "end": 5792836, "filename": "/lib/python3.6/unittest/test/__main__.py"}, {"start": 5792836, "audio": 0, "end": 5797119, "filename": "/lib/python3.6/unittest/test/testmock/testcallable.py"}, {"start": 5797119, "audio": 0, "end": 5852673, "filename": "/lib/python3.6/unittest/test/testmock/testpatch.py"}, {"start": 5852673, "audio": 0, "end": 5863088, "filename": "/lib/python3.6/unittest/test/testmock/testwith.py"}, {"start": 5863088, "audio": 0, "end": 5863553, "filename": "/lib/python3.6/unittest/test/testmock/__init__.py"}, {"start": 5863553, "audio": 0, "end": 5864377, "filename": "/lib/python3.6/unittest/test/testmock/testsentinel.py"}, {"start": 5864377, "audio": 0, "end": 5892193, "filename": "/lib/python3.6/unittest/test/testmock/testhelpers.py"}, {"start": 5892193, "audio": 0, "end": 5892580, "filename": "/lib/python3.6/unittest/test/testmock/support.py"}, {"start": 5892580, "audio": 0, "end": 5943064, "filename": "/lib/python3.6/unittest/test/testmock/testmock.py"}, {"start": 5943064, "audio": 0, "end": 5957475, "filename": "/lib/python3.6/unittest/test/testmock/testmagicmethods.py"}, {"start": 5957475, "audio": 0, "end": 5958098, "filename": "/lib/python3.6/unittest/test/testmock/__main__.py"}, {"start": 5958098, "audio": 0, "end": 6033413, "filename": "/lib/python3.6/html/entities.py"}, {"start": 6033413, "audio": 0, "end": 6051142, "filename": "/lib/python3.6/html/parser.py"}, {"start": 6051142, "audio": 0, "end": 6055898, "filename": "/lib/python3.6/html/__init__.py"}, {"start": 6055898, "audio": 0, "end": 6056017, "filename": "/lib/python3.6/site-packages/README.txt"}, {"start": 6056017, "audio": 0, "end": 6056919, "filename": "/lib/python3.6/site-packages/pyodide.py"}, {"start": 6056919, "audio": 0, "end": 6057167, "filename": "/lib/python3.6/site-packages/sitecustomize.py"}, {"start": 6057167, "audio": 0, "end": 6088055, "filename": "/lib/python3.6/site-packages/six.py"}, {"start": 6088055, "audio": 0, "end": 6088093, "filename": "/lib/python3.6/concurrent/__init__.py"}, {"start": 6088093, "audio": 0, "end": 6088893, "filename": "/lib/python3.6/concurrent/futures/__init__.py"}, {"start": 6088893, "audio": 0, "end": 6109385, "filename": "/lib/python3.6/concurrent/futures/process.py"}, {"start": 6109385, "audio": 0, "end": 6114896, "filename": "/lib/python3.6/concurrent/futures/thread.py"}, {"start": 6114896, "audio": 0, "end": 6136111, "filename": "/lib/python3.6/concurrent/futures/_base.py"}, {"start": 6136111, "audio": 0, "end": 6181923, "filename": "/lib/python3.6/collections/__init__.py"}, {"start": 6181923, "audio": 0, "end": 6181991, "filename": "/lib/python3.6/collections/abc.py"}, {"start": 6181991, "audio": 0, "end": 6187130, "filename": "/lib/python3.6/wsgiref/simple_server.py"}, {"start": 6187130, "audio": 0, "end": 6202293, "filename": "/lib/python3.6/wsgiref/validate.py"}, {"start": 6202293, "audio": 0, "end": 6202880, "filename": "/lib/python3.6/wsgiref/__init__.py"}, {"start": 6202880, "audio": 0, "end": 6208514, "filename": "/lib/python3.6/wsgiref/util.py"}, {"start": 6208514, "audio": 0, "end": 6229515, "filename": "/lib/python3.6/wsgiref/handlers.py"}, {"start": 6229515, "audio": 0, "end": 6236281, "filename": "/lib/python3.6/wsgiref/headers.py"}, {"start": 6236281, "audio": 0, "end": 6273115, "filename": "/lib/python3.6/asyncio/unix_events.py"}, {"start": 6273115, "audio": 0, "end": 6288117, "filename": "/lib/python3.6/asyncio/locks.py"}, {"start": 6288117, "audio": 0, "end": 6302800, "filename": "/lib/python3.6/asyncio/test_utils.py"}, {"start": 6302800, "audio": 0, "end": 6326295, "filename": "/lib/python3.6/asyncio/events.py"}, {"start": 6326295, "audio": 0, "end": 6346471, "filename": "/lib/python3.6/asyncio/proactor_events.py"}, {"start": 6346471, "audio": 0, "end": 6347014, "filename": "/lib/python3.6/asyncio/compat.py"}, {"start": 6347014, "audio": 0, "end": 6354971, "filename": "/lib/python3.6/asyncio/queues.py"}, {"start": 6354971, "audio": 0, "end": 6380863, "filename": "/lib/python3.6/asyncio/sslproto.py"}, {"start": 6380863, "audio": 0, "end": 6389959, "filename": "/lib/python3.6/asyncio/base_subprocess.py"}, {"start": 6389959, "audio": 0, "end": 6390330, "filename": "/lib/python3.6/asyncio/constants.py"}, {"start": 6390330, "audio": 0, "end": 6394842, "filename": "/lib/python3.6/asyncio/protocols.py"}, {"start": 6394842, "audio": 0, "end": 6396278, "filename": "/lib/python3.6/asyncio/__init__.py"}, {"start": 6396278, "audio": 0, "end": 6438274, "filename": "/lib/python3.6/asyncio/selector_events.py"}, {"start": 6438274, "audio": 0, "end": 6440460, "filename": "/lib/python3.6/asyncio/base_tasks.py"}, {"start": 6440460, "audio": 0, "end": 6497212, "filename": "/lib/python3.6/asyncio/base_events.py"}, {"start": 6497212, "audio": 0, "end": 6497336, "filename": "/lib/python3.6/asyncio/log.py"}, {"start": 6497336, "audio": 0, "end": 6504962, "filename": "/lib/python3.6/asyncio/subprocess.py"}, {"start": 6504962, "audio": 0, "end": 6511845, "filename": "/lib/python3.6/asyncio/windows_utils.py"}, {"start": 6511845, "audio": 0, "end": 6513919, "filename": "/lib/python3.6/asyncio/base_futures.py"}, {"start": 6513919, "audio": 0, "end": 6524752, "filename": "/lib/python3.6/asyncio/coroutines.py"}, {"start": 6524752, "audio": 0, "end": 6534818, "filename": "/lib/python3.6/asyncio/transports.py"}, {"start": 6534818, "audio": 0, "end": 6562649, "filename": "/lib/python3.6/asyncio/windows_events.py"}, {"start": 6562649, "audio": 0, "end": 6587293, "filename": "/lib/python3.6/asyncio/tasks.py"}, {"start": 6587293, "audio": 0, "end": 6611765, "filename": "/lib/python3.6/asyncio/streams.py"}, {"start": 6611765, "audio": 0, "end": 6627541, "filename": "/lib/python3.6/asyncio/futures.py"}, {"start": 6627541, "audio": 0, "end": 6676528, "filename": "/lib/python3.6/xmlrpc/client.py"}, {"start": 6676528, "audio": 0, "end": 6676566, "filename": "/lib/python3.6/xmlrpc/__init__.py"}, {"start": 6676566, "audio": 0, "end": 6713736, "filename": "/lib/python3.6/xmlrpc/server.py"}, {"start": 6713736, "audio": 0, "end": 6790120, "filename": "/lib/python3.6/http/cookiejar.py"}, {"start": 6790120, "audio": 0, "end": 6844509, "filename": "/lib/python3.6/http/client.py"}, {"start": 6844509, "audio": 0, "end": 6865766, "filename": "/lib/python3.6/http/cookies.py"}, {"start": 6865766, "audio": 0, "end": 6871719, "filename": "/lib/python3.6/http/__init__.py"}, {"start": 6871719, "audio": 0, "end": 6915511, "filename": "/lib/python3.6/http/server.py"}, {"start": 6915511, "audio": 0, "end": 6918152, "filename": "/lib/python3.6/urllib/error.py"}, {"start": 6918152, "audio": 0, "end": 6918152, "filename": "/lib/python3.6/urllib/__init__.py"}, {"start": 6918152, "audio": 0, "end": 6954755, "filename": "/lib/python3.6/urllib/parse.py"}, {"start": 6954755, "audio": 0, "end": 7054753, "filename": "/lib/python3.6/urllib/request.py"}, {"start": 7054753, "audio": 0, "end": 7063240, "filename": "/lib/python3.6/urllib/robotparser.py"}, {"start": 7063240, "audio": 0, "end": 7065539, "filename": "/lib/python3.6/urllib/response.py"}, {"start": 7065539, "audio": 0, "end": 7079671, "filename": "/lib/python3.6/encodings/cp273.py"}, {"start": 7079671, "audio": 0, "end": 7080882, "filename": "/lib/python3.6/encodings/mbcs.py"}, {"start": 7080882, "audio": 0, "end": 7081921, "filename": "/lib/python3.6/encodings/shift_jis.py"}, {"start": 7081921, "audio": 0, "end": 7097498, "filename": "/lib/python3.6/encodings/aliases.py"}, {"start": 7097498, "audio": 0, "end": 7110978, "filename": "/lib/python3.6/encodings/mac_roman.py"}, {"start": 7110978, "audio": 0, "end": 7124190, "filename": "/lib/python3.6/encodings/iso8859_15.py"}, {"start": 7124190, "audio": 0, "end": 7157853, "filename": "/lib/python3.6/encodings/cp864.py"}, {"start": 7157853, "audio": 0, "end": 7171328, "filename": "/lib/python3.6/encodings/hp_roman8.py"}, {"start": 7171328, "audio": 0, "end": 7172347, "filename": "/lib/python3.6/encodings/big5.py"}, {"start": 7172347, "audio": 0, "end": 7207028, "filename": "/lib/python3.6/encodings/cp860.py"}, {"start": 7207028, "audio": 0, "end": 7220541, "filename": "/lib/python3.6/encodings/mac_turkish.py"}, {"start": 7220541, "audio": 0, "end": 7234227, "filename": "/lib/python3.6/encodings/cp720.py"}, {"start": 7234227, "audio": 0, "end": 7235411, "filename": "/lib/python3.6/encodings/unicode_escape.py"}, {"start": 7235411, "audio": 0, "end": 7236944, "filename": "/lib/python3.6/encodings/base64_codec.py"}, {"start": 7236944, "audio": 0, "end": 7250533, "filename": "/lib/python3.6/encodings/iso8859_10.py"}, {"start": 7250533, "audio": 0, "end": 7251463, "filename": "/lib/python3.6/encodings/utf_32_be.py"}, {"start": 7251463, "audio": 0, "end": 7286027, "filename": "/lib/python3.6/encodings/cp437.py"}, {"start": 7286027, "audio": 0, "end": 7287050, "filename": "/lib/python3.6/encodings/cp949.py"}, {"start": 7287050, "audio": 0, "end": 7299864, "filename": "/lib/python3.6/encodings/cp1256.py"}, {"start": 7299864, "audio": 0, "end": 7301948, "filename": "/lib/python3.6/encodings/charmap.py"}, {"start": 7301948, "audio": 0, "end": 7336629, "filename": "/lib/python3.6/encodings/cp737.py"}, {"start": 7336629, "audio": 0, "end": 7337698, "filename": "/lib/python3.6/encodings/iso2022_jp_ext.py"}, {"start": 7337698, "audio": 0, "end": 7342827, "filename": "/lib/python3.6/encodings/utf_32.py"}, {"start": 7342827, "audio": 0, "end": 7356479, "filename": "/lib/python3.6/encodings/iso8859_14.py"}, {"start": 7356479, "audio": 0, "end": 7369855, "filename": "/lib/python3.6/encodings/iso8859_4.py"}, {"start": 7369855, "audio": 0, "end": 7382968, "filename": "/lib/python3.6/encodings/cp1026.py"}, {"start": 7382968, "audio": 0, "end": 7384476, "filename": "/lib/python3.6/encodings/hex_codec.py"}, {"start": 7384476, "audio": 0, "end": 7385481, "filename": "/lib/python3.6/encodings/utf_8.py"}, {"start": 7385481, "audio": 0, "end": 7391123, "filename": "/lib/python3.6/encodings/__init__.py"}, {"start": 7391123, "audio": 0, "end": 7392146, "filename": "/lib/python3.6/encodings/cp932.py"}, {"start": 7392146, "audio": 0, "end": 7396279, "filename": "/lib/python3.6/encodings/utf_8_sig.py"}, {"start": 7396279, "audio": 0, "end": 7409455, "filename": "/lib/python3.6/encodings/iso8859_1.py"}, {"start": 7409455, "audio": 0, "end": 7423141, "filename": "/lib/python3.6/encodings/cp1250.py"}, {"start": 7423141, "audio": 0, "end": 7457738, "filename": "/lib/python3.6/encodings/cp1125.py"}, {"start": 7457738, "audio": 0, "end": 7458791, "filename": "/lib/python3.6/encodings/iso2022_jp.py"}, {"start": 7458791, "audio": 0, "end": 7460090, "filename": "/lib/python3.6/encodings/undefined.py"}, {"start": 7460090, "audio": 0, "end": 7462811, "filename": "/lib/python3.6/encodings/uu_codec.py"}, {"start": 7462811, "audio": 0, "end": 7497429, "filename": "/lib/python3.6/encodings/cp865.py"}, {"start": 7497429, "audio": 0, "end": 7508465, "filename": "/lib/python3.6/encodings/iso8859_8.py"}, {"start": 7508465, "audio": 0, "end": 7521919, "filename": "/lib/python3.6/encodings/mac_cyrillic.py"}, {"start": 7521919, "audio": 0, "end": 7522946, "filename": "/lib/python3.6/encodings/euc_jp.py"}, {"start": 7522946, "audio": 0, "end": 7524007, "filename": "/lib/python3.6/encodings/iso2022_jp_2.py"}, {"start": 7524007, "audio": 0, "end": 7537769, "filename": "/lib/python3.6/encodings/koi8_u.py"}, {"start": 7537769, "audio": 0, "end": 7551271, "filename": "/lib/python3.6/encodings/cp1254.py"}, {"start": 7551271, "audio": 0, "end": 7565050, "filename": "/lib/python3.6/encodings/koi8_r.py"}, {"start": 7565050, "audio": 0, "end": 7578411, "filename": "/lib/python3.6/encodings/cp1251.py"}, {"start": 7578411, "audio": 0, "end": 7591532, "filename": "/lib/python3.6/encodings/cp500.py"}, {"start": 7591532, "audio": 0, "end": 7625547, "filename": "/lib/python3.6/encodings/cp858.py"}, {"start": 7625547, "audio": 0, "end": 7659652, "filename": "/lib/python3.6/encodings/cp850.py"}, {"start": 7659652, "audio": 0, "end": 7672773, "filename": "/lib/python3.6/encodings/cp037.py"}, {"start": 7672773, "audio": 0, "end": 7706143, "filename": "/lib/python3.6/encodings/cp862.py"}, {"start": 7706143, "audio": 0, "end": 7719654, "filename": "/lib/python3.6/encodings/cp1252.py"}, {"start": 7719654, "audio": 0, "end": 7720715, "filename": "/lib/python3.6/encodings/iso2022_jp_3.py"}, {"start": 7720715, "audio": 0, "end": 7734079, "filename": "/lib/python3.6/encodings/cp1258.py"}, {"start": 7734079, "audio": 0, "end": 7747483, "filename": "/lib/python3.6/encodings/iso8859_2.py"}, {"start": 7747483, "audio": 0, "end": 7748506, "filename": "/lib/python3.6/encodings/johab.py"}, {"start": 7748506, "audio": 0, "end": 7782902, "filename": "/lib/python3.6/encodings/cp866.py"}, {"start": 7782902, "audio": 0, "end": 7815867, "filename": "/lib/python3.6/encodings/cp869.py"}, {"start": 7815867, "audio": 0, "end": 7816928, "filename": "/lib/python3.6/encodings/iso2022_jp_1.py"}, {"start": 7816928, "audio": 0, "end": 7829351, "filename": "/lib/python3.6/encodings/cp856.py"}, {"start": 7829351, "audio": 0, "end": 7830390, "filename": "/lib/python3.6/encodings/big5hkscs.py"}, {"start": 7830390, "audio": 0, "end": 7831598, "filename": "/lib/python3.6/encodings/raw_unicode_escape.py"}, {"start": 7831598, "audio": 0, "end": 7844972, "filename": "/lib/python3.6/encodings/cp1257.py"}, {"start": 7844972, "audio": 0, "end": 7857567, "filename": "/lib/python3.6/encodings/cp874.py"}, {"start": 7857567, "audio": 0, "end": 7870421, "filename": "/lib/python3.6/encodings/cp875.py"}, {"start": 7870421, "audio": 0, "end": 7872849, "filename": "/lib/python3.6/encodings/rot_13.py"}, {"start": 7872849, "audio": 0, "end": 7886967, "filename": "/lib/python3.6/encodings/mac_latin2.py"}, {"start": 7886967, "audio": 0, "end": 7899811, "filename": "/lib/python3.6/encodings/iso8859_7.py"}, {"start": 7899811, "audio": 0, "end": 7900826, "filename": "/lib/python3.6/encodings/gbk.py"}, {"start": 7900826, "audio": 0, "end": 7901772, "filename": "/lib/python3.6/encodings/utf_7.py"}, {"start": 7901772, "audio": 0, "end": 7902809, "filename": "/lib/python3.6/encodings/utf_16_le.py"}, {"start": 7902809, "audio": 0, "end": 7937061, "filename": "/lib/python3.6/encodings/cp863.py"}, {"start": 7937061, "audio": 0, "end": 7938098, "filename": "/lib/python3.6/encodings/utf_16_be.py"}, {"start": 7938098, "audio": 0, "end": 7939129, "filename": "/lib/python3.6/encodings/gb18030.py"}, {"start": 7939129, "audio": 0, "end": 7953231, "filename": "/lib/python3.6/encodings/mac_centeuro.py"}, {"start": 7953231, "audio": 0, "end": 7966788, "filename": "/lib/python3.6/encodings/iso8859_16.py"}, {"start": 7966788, "audio": 0, "end": 7968992, "filename": "/lib/python3.6/encodings/zlib_codec.py"}, {"start": 7968992, "audio": 0, "end": 7970015, "filename": "/lib/python3.6/encodings/cp950.py"}, {"start": 7970015, "audio": 0, "end": 8003865, "filename": "/lib/python3.6/encodings/cp855.py"}, {"start": 8003865, "audio": 0, "end": 8017498, "filename": "/lib/python3.6/encodings/mac_croatian.py"}, {"start": 8017498, "audio": 0, "end": 8018551, "filename": "/lib/python3.6/encodings/iso2022_kr.py"}, {"start": 8018551, "audio": 0, "end": 8032070, "filename": "/lib/python3.6/encodings/palmos.py"}, {"start": 8032070, "audio": 0, "end": 8067072, "filename": "/lib/python3.6/encodings/cp852.py"}, {"start": 8067072, "audio": 0, "end": 8101705, "filename": "/lib/python3.6/encodings/cp861.py"}, {"start": 8101705, "audio": 0, "end": 8136181, "filename": "/lib/python3.6/encodings/cp775.py"}, {"start": 8136181, "audio": 0, "end": 8172648, "filename": "/lib/python3.6/encodings/mac_arabic.py"}, {"start": 8172648, "audio": 0, "end": 8186663, "filename": "/lib/python3.6/encodings/ptcp154.py"}, {"start": 8186663, "audio": 0, "end": 8199819, "filename": "/lib/python3.6/encodings/iso8859_9.py"}, {"start": 8199819, "audio": 0, "end": 8213540, "filename": "/lib/python3.6/encodings/mac_greek.py"}, {"start": 8213540, "audio": 0, "end": 8228710, "filename": "/lib/python3.6/encodings/mac_farsi.py"}, {"start": 8228710, "audio": 0, "end": 8240765, "filename": "/lib/python3.6/encodings/cp424.py"}, {"start": 8240765, "audio": 0, "end": 8242013, "filename": "/lib/python3.6/encodings/ascii.py"}, {"start": 8242013, "audio": 0, "end": 8247249, "filename": "/lib/python3.6/encodings/utf_16.py"}, {"start": 8247249, "audio": 0, "end": 8258082, "filename": "/lib/python3.6/encodings/iso8859_6.py"}, {"start": 8258082, "audio": 0, "end": 8259109, "filename": "/lib/python3.6/encodings/euc_kr.py"}, {"start": 8259109, "audio": 0, "end": 8271409, "filename": "/lib/python3.6/encodings/tis_620.py"}, {"start": 8271409, "audio": 0, "end": 8272339, "filename": "/lib/python3.6/encodings/utf_32_le.py"}, {"start": 8272339, "audio": 0, "end": 8273390, "filename": "/lib/python3.6/encodings/euc_jisx0213.py"}, {"start": 8273390, "audio": 0, "end": 8285725, "filename": "/lib/python3.6/encodings/iso8859_11.py"}, {"start": 8285725, "audio": 0, "end": 8286776, "filename": "/lib/python3.6/encodings/euc_jis_2004.py"}, {"start": 8286776, "audio": 0, "end": 8320684, "filename": "/lib/python3.6/encodings/cp857.py"}, {"start": 8320684, "audio": 0, "end": 8321711, "filename": "/lib/python3.6/encodings/gb2312.py"}, {"start": 8321711, "audio": 0, "end": 8322907, "filename": "/lib/python3.6/encodings/unicode_internal.py"}, {"start": 8322907, "audio": 0, "end": 8323918, "filename": "/lib/python3.6/encodings/hz.py"}, {"start": 8323918, "audio": 0, "end": 8324991, "filename": "/lib/python3.6/encodings/iso2022_jp_2004.py"}, {"start": 8324991, "audio": 0, "end": 8334161, "filename": "/lib/python3.6/encodings/idna.py"}, {"start": 8334161, "audio": 0, "end": 8347255, "filename": "/lib/python3.6/encodings/cp1253.py"}, {"start": 8347255, "audio": 0, "end": 8360978, "filename": "/lib/python3.6/encodings/kz1048.py"}, {"start": 8360978, "audio": 0, "end": 8362037, "filename": "/lib/python3.6/encodings/shift_jis_2004.py"}, {"start": 8362037, "audio": 0, "end": 8374503, "filename": "/lib/python3.6/encodings/cp1255.py"}, {"start": 8374503, "audio": 0, "end": 8387696, "filename": "/lib/python3.6/encodings/koi8_t.py"}, {"start": 8387696, "audio": 0, "end": 8388755, "filename": "/lib/python3.6/encodings/shift_jisx0213.py"}, {"start": 8388755, "audio": 0, "end": 8389774, "filename": "/lib/python3.6/encodings/oem.py"}, {"start": 8389774, "audio": 0, "end": 8403435, "filename": "/lib/python3.6/encodings/mac_romanian.py"}, {"start": 8403435, "audio": 0, "end": 8405684, "filename": "/lib/python3.6/encodings/bz2_codec.py"}, {"start": 8405684, "audio": 0, "end": 8406948, "filename": "/lib/python3.6/encodings/latin_1.py"}, {"start": 8406948, "audio": 0, "end": 8408473, "filename": "/lib/python3.6/encodings/quopri_codec.py"}, {"start": 8408473, "audio": 0, "end": 8421744, "filename": "/lib/python3.6/encodings/iso8859_13.py"}, {"start": 8421744, "audio": 0, "end": 8434833, "filename": "/lib/python3.6/encodings/iso8859_3.py"}, {"start": 8434833, "audio": 0, "end": 8447848, "filename": "/lib/python3.6/encodings/iso8859_5.py"}, {"start": 8447848, "audio": 0, "end": 8460953, "filename": "/lib/python3.6/encodings/cp1140.py"}, {"start": 8460953, "audio": 0, "end": 8474451, "filename": "/lib/python3.6/encodings/mac_iceland.py"}, {"start": 8474451, "audio": 0, "end": 8475557, "filename": "/lib/python3.6/encodings/cp65001.py"}, {"start": 8475557, "audio": 0, "end": 8482438, "filename": "/lib/python3.6/encodings/punycode.py"}, {"start": 8482438, "audio": 0, "end": 8496006, "filename": "/lib/python3.6/encodings/cp1006.py"}, {"start": 8496006, "audio": 0, "end": 8508838, "filename": "/lib/python3.6/distutils/filelist.py"}, {"start": 8508838, "audio": 0, "end": 8525313, "filename": "/lib/python3.6/distutils/cygwinccompiler.py"}, {"start": 8525313, "audio": 0, "end": 8539797, "filename": "/lib/python3.6/distutils/unixccompiler.py"}, {"start": 8539797, "audio": 0, "end": 8570409, "filename": "/lib/python3.6/distutils/msvc9compiler.py"}, {"start": 8570409, "audio": 0, "end": 8593985, "filename": "/lib/python3.6/distutils/msvccompiler.py"}, {"start": 8593985, "audio": 0, "end": 8594280, "filename": "/lib/python3.6/distutils/README"}, {"start": 8594280, "audio": 0, "end": 8613409, "filename": "/lib/python3.6/distutils/cmd.py"}, {"start": 8613409, "audio": 0, "end": 8613548, "filename": "/lib/python3.6/distutils/debug.py"}, {"start": 8613548, "audio": 0, "end": 8631332, "filename": "/lib/python3.6/distutils/fancy_getopt.py"}, {"start": 8631332, "audio": 0, "end": 8639480, "filename": "/lib/python3.6/distutils/file_util.py"}, {"start": 8639480, "audio": 0, "end": 8659541, "filename": "/lib/python3.6/distutils/sysconfig.py"}, {"start": 8659541, "audio": 0, "end": 8659777, "filename": "/lib/python3.6/distutils/__init__.py"}, {"start": 8659777, "audio": 0, "end": 8661685, "filename": "/lib/python3.6/distutils/log.py"}, {"start": 8661685, "audio": 0, "end": 8674030, "filename": "/lib/python3.6/distutils/version.py"}, {"start": 8674030, "audio": 0, "end": 8681441, "filename": "/lib/python3.6/distutils/spawn.py"}, {"start": 8681441, "audio": 0, "end": 8728856, "filename": "/lib/python3.6/distutils/ccompiler.py"}, {"start": 8728856, "audio": 0, "end": 8733989, "filename": "/lib/python3.6/distutils/versionpredicate.py"}, {"start": 8733989, "audio": 0, "end": 8737480, "filename": "/lib/python3.6/distutils/dep_util.py"}, {"start": 8737480, "audio": 0, "end": 8787170, "filename": "/lib/python3.6/distutils/dist.py"}, {"start": 8787170, "audio": 0, "end": 8795291, "filename": "/lib/python3.6/distutils/archive_util.py"}, {"start": 8795291, "audio": 0, "end": 8816080, "filename": "/lib/python3.6/distutils/util.py"}, {"start": 8816080, "audio": 0, "end": 8823858, "filename": "/lib/python3.6/distutils/dir_util.py"}, {"start": 8823858, "audio": 0, "end": 8828738, "filename": "/lib/python3.6/distutils/config.py"}, {"start": 8828738, "audio": 0, "end": 8839253, "filename": "/lib/python3.6/distutils/extension.py"}, {"start": 8839253, "audio": 0, "end": 8848129, "filename": "/lib/python3.6/distutils/core.py"}, {"start": 8848129, "audio": 0, "end": 8851706, "filename": "/lib/python3.6/distutils/errors.py"}, {"start": 8851706, "audio": 0, "end": 8873235, "filename": "/lib/python3.6/distutils/_msvccompiler.py"}, {"start": 8873235, "audio": 0, "end": 8888170, "filename": "/lib/python3.6/distutils/bcppcompiler.py"}, {"start": 8888170, "audio": 0, "end": 8900653, "filename": "/lib/python3.6/distutils/text_file.py"}, {"start": 8900653, "audio": 0, "end": 8903475, "filename": "/lib/python3.6/distutils/command/install_data.py"}, {"start": 8903475, "audio": 0, "end": 8964915, "filename": "/lib/python3.6/distutils/command/wininst-6.0.exe"}, {"start": 8964915, "audio": 0, "end": 8986585, "filename": "/lib/python3.6/distutils/command/bdist_rpm.py"}, {"start": 8986585, "audio": 0, "end": 9013322, "filename": "/lib/python3.6/distutils/command/install.py"}, {"start": 9013322, "audio": 0, "end": 9028758, "filename": "/lib/python3.6/distutils/command/bdist_wininst.py"}, {"start": 9028758, "audio": 0, "end": 9034320, "filename": "/lib/python3.6/distutils/command/bdist.py"}, {"start": 9034320, "audio": 0, "end": 9065805, "filename": "/lib/python3.6/distutils/command/build_ext.py"}, {"start": 9065805, "audio": 0, "end": 9288013, "filename": "/lib/python3.6/distutils/command/wininst-10.0-amd64.exe"}, {"start": 9288013, "audio": 0, "end": 9288812, "filename": "/lib/python3.6/distutils/command/__init__.py"}, {"start": 9288812, "audio": 0, "end": 9293724, "filename": "/lib/python3.6/distutils/command/bdist_dumb.py"}, {"start": 9293724, "audio": 0, "end": 9296327, "filename": "/lib/python3.6/distutils/command/install_egg_info.py"}, {"start": 9296327, "audio": 0, "end": 9302559, "filename": "/lib/python3.6/distutils/command/build_scripts.py"}, {"start": 9302559, "audio": 0, "end": 9309890, "filename": "/lib/python3.6/distutils/command/upload.py"}, {"start": 9309890, "audio": 0, "end": 9311188, "filename": "/lib/python3.6/distutils/command/install_headers.py"}, {"start": 9311188, "audio": 0, "end": 9502164, "filename": "/lib/python3.6/distutils/command/wininst-10.0.exe"}, {"start": 9502164, "audio": 0, "end": 9510186, "filename": "/lib/python3.6/distutils/command/build_clib.py"}, {"start": 9510186, "audio": 0, "end": 9518583, "filename": "/lib/python3.6/distutils/command/install_lib.py"}, {"start": 9518583, "audio": 0, "end": 9524079, "filename": "/lib/python3.6/distutils/command/check.py"}, {"start": 9524079, "audio": 0, "end": 9720175, "filename": "/lib/python3.6/distutils/command/wininst-9.0.exe"}, {"start": 9720175, "audio": 0, "end": 9725923, "filename": "/lib/python3.6/distutils/command/build.py"}, {"start": 9725923, "audio": 0, "end": 9726556, "filename": "/lib/python3.6/distutils/command/command_template"}, {"start": 9726556, "audio": 0, "end": 9729332, "filename": "/lib/python3.6/distutils/command/clean.py"}, {"start": 9729332, "audio": 0, "end": 9794868, "filename": "/lib/python3.6/distutils/command/wininst-7.1.exe"}, {"start": 9794868, "audio": 0, "end": 9830099, "filename": "/lib/python3.6/distutils/command/bdist_msi.py"}, {"start": 9830099, "audio": 0, "end": 9841811, "filename": "/lib/python3.6/distutils/command/register.py"}, {"start": 9841811, "audio": 0, "end": 9859637, "filename": "/lib/python3.6/distutils/command/sdist.py"}, {"start": 9859637, "audio": 0, "end": 9876801, "filename": "/lib/python3.6/distutils/command/build_py.py"}, {"start": 9876801, "audio": 0, "end": 9889887, "filename": "/lib/python3.6/distutils/command/config.py"}, {"start": 9889887, "audio": 0, "end": 9951327, "filename": "/lib/python3.6/distutils/command/wininst-8.0.exe"}, {"start": 9951327, "audio": 0, "end": 10409567, "filename": "/lib/python3.6/distutils/command/wininst-14.0.exe"}, {"start": 10409567, "audio": 0, "end": 10411584, "filename": "/lib/python3.6/distutils/command/install_scripts.py"}, {"start": 10411584, "audio": 0, "end": 10635840, "filename": "/lib/python3.6/distutils/command/wininst-9.0-amd64.exe"}, {"start": 10635840, "audio": 0, "end": 11223616, "filename": "/lib/python3.6/distutils/command/wininst-14.0-amd64.exe"}, {"start": 11223616, "audio": 0, "end": 11225476, "filename": "/lib/python3.6/distutils/tests/test_spawn.py"}, {"start": 11225476, "audio": 0, "end": 11229311, "filename": "/lib/python3.6/distutils/tests/test_cmd.py"}, {"start": 11229311, "audio": 0, "end": 11233154, "filename": "/lib/python3.6/distutils/tests/test_config.py"}, {"start": 11233154, "audio": 0, "end": 11234443, "filename": "/lib/python3.6/distutils/tests/test_log.py"}, {"start": 11234443, "audio": 0, "end": 11236408, "filename": "/lib/python3.6/distutils/tests/test_build.py"}, {"start": 11236408, "audio": 0, "end": 11241280, "filename": "/lib/python3.6/distutils/tests/test_msvccompiler.py"}, {"start": 11241280, "audio": 0, "end": 11243905, "filename": "/lib/python3.6/distutils/tests/test_install_scripts.py"}, {"start": 11243905, "audio": 0, "end": 11245143, "filename": "/lib/python3.6/distutils/tests/test_install_headers.py"}, {"start": 11245143, "audio": 0, "end": 11248042, "filename": "/lib/python3.6/distutils/tests/test_bdist_dumb.py"}, {"start": 11248042, "audio": 0, "end": 11250656, "filename": "/lib/python3.6/distutils/tests/test_version.py"}, {"start": 11250656, "audio": 0, "end": 11255331, "filename": "/lib/python3.6/distutils/tests/test_build_clib.py"}, {"start": 11255331, "audio": 0, "end": 11260967, "filename": "/lib/python3.6/distutils/tests/test_cygwinccompiler.py"}, {"start": 11260967, "audio": 0, "end": 11268933, "filename": "/lib/python3.6/distutils/tests/test_sysconfig.py"}, {"start": 11268933, "audio": 0, "end": 11274457, "filename": "/lib/python3.6/distutils/tests/test_upload.py"}, {"start": 11274457, "audio": 0, "end": 11285707, "filename": "/lib/python3.6/distutils/tests/test_util.py"}, {"start": 11285707, "audio": 0, "end": 11290963, "filename": "/lib/python3.6/distutils/tests/test_check.py"}, {"start": 11290963, "audio": 0, "end": 11294556, "filename": "/lib/python3.6/distutils/tests/test_build_scripts.py"}, {"start": 11294556, "audio": 0, "end": 11297376, "filename": "/lib/python3.6/distutils/tests/test_dep_util.py"}, {"start": 11297376, "audio": 0, "end": 11297656, "filename": "/lib/python3.6/distutils/tests/test_versionpredicate.py"}, {"start": 11297656, "audio": 0, "end": 11299905, "filename": "/lib/python3.6/distutils/tests/Setup.sample"}, {"start": 11299905, "audio": 0, "end": 11300965, "filename": "/lib/python3.6/distutils/tests/__init__.py"}, {"start": 11300965, "audio": 0, "end": 11305827, "filename": "/lib/python3.6/distutils/tests/test_unixccompiler.py"}, {"start": 11305827, "audio": 0, "end": 11308609, "filename": "/lib/python3.6/distutils/tests/test_config_cmd.py"}, {"start": 11308609, "audio": 0, "end": 11312686, "filename": "/lib/python3.6/distutils/tests/test_core.py"}, {"start": 11312686, "audio": 0, "end": 11316660, "filename": "/lib/python3.6/distutils/tests/test_install_lib.py"}, {"start": 11316660, "audio": 0, "end": 11319428, "filename": "/lib/python3.6/distutils/tests/test_extension.py"}, {"start": 11319428, "audio": 0, "end": 11324436, "filename": "/lib/python3.6/distutils/tests/test_bdist_rpm.py"}, {"start": 11324436, "audio": 0, "end": 11340486, "filename": "/lib/python3.6/distutils/tests/test_dist.py"}, {"start": 11340486, "audio": 0, "end": 11352854, "filename": "/lib/python3.6/distutils/tests/xxmodule.c"}, {"start": 11352854, "audio": 0, "end": 11354295, "filename": "/lib/python3.6/distutils/tests/test_clean.py"}, {"start": 11354295, "audio": 0, "end": 11357731, "filename": "/lib/python3.6/distutils/tests/test_text_file.py"}, {"start": 11357731, "audio": 0, "end": 11367496, "filename": "/lib/python3.6/distutils/tests/test_register.py"}, {"start": 11367496, "audio": 0, "end": 11386942, "filename": "/lib/python3.6/distutils/tests/test_build_ext.py"}, {"start": 11386942, "audio": 0, "end": 11398417, "filename": "/lib/python3.6/distutils/tests/test_filelist.py"}, {"start": 11398417, "audio": 0, "end": 11404950, "filename": "/lib/python3.6/distutils/tests/support.py"}, {"start": 11404950, "audio": 0, "end": 11410988, "filename": "/lib/python3.6/distutils/tests/test_msvc9compiler.py"}, {"start": 11410988, "audio": 0, "end": 11427475, "filename": "/lib/python3.6/distutils/tests/test_sdist.py"}, {"start": 11427475, "audio": 0, "end": 11436010, "filename": "/lib/python3.6/distutils/tests/test_install.py"}, {"start": 11436010, "audio": 0, "end": 11450341, "filename": "/lib/python3.6/distutils/tests/test_archive_util.py"}, {"start": 11450341, "audio": 0, "end": 11454995, "filename": "/lib/python3.6/distutils/tests/test_dir_util.py"}, {"start": 11454995, "audio": 0, "end": 11456035, "filename": "/lib/python3.6/distutils/tests/test_bdist_wininst.py"}, {"start": 11456035, "audio": 0, "end": 11458612, "filename": "/lib/python3.6/distutils/tests/test_install_data.py"}, {"start": 11458612, "audio": 0, "end": 11459340, "filename": "/lib/python3.6/distutils/tests/test_bdist_msi.py"}, {"start": 11459340, "audio": 0, "end": 11463443, "filename": "/lib/python3.6/distutils/tests/test_file_util.py"}, {"start": 11463443, "audio": 0, "end": 11464986, "filename": "/lib/python3.6/distutils/tests/test_bdist.py"}, {"start": 11464986, "audio": 0, "end": 11471321, "filename": "/lib/python3.6/distutils/tests/test_build_py.py"}, {"start": 11471321, "audio": 0, "end": 11476364, "filename": "/lib/python3.6/email/parser.py"}, {"start": 11476364, "audio": 0, "end": 11478150, "filename": "/lib/python3.6/email/encoders.py"}, {"start": 11478150, "audio": 0, "end": 11495349, "filename": "/lib/python3.6/email/_parseaddr.py"}, {"start": 11495349, "audio": 0, "end": 11518124, "filename": "/lib/python3.6/email/feedparser.py"}, {"start": 11518124, "audio": 0, "end": 11542226, "filename": "/lib/python3.6/email/header.py"}, {"start": 11542226, "audio": 0, "end": 11544361, "filename": "/lib/python3.6/email/iterators.py"}, {"start": 11544361, "audio": 0, "end": 11546127, "filename": "/lib/python3.6/email/__init__.py"}, {"start": 11546127, "audio": 0, "end": 11645644, "filename": "/lib/python3.6/email/_header_value_parser.py"}, {"start": 11645644, "audio": 0, "end": 11653558, "filename": "/lib/python3.6/email/_encoded_words.py"}, {"start": 11653558, "audio": 0, "end": 11664230, "filename": "/lib/python3.6/email/contentmanager.py"}, {"start": 11664230, "audio": 0, "end": 11678127, "filename": "/lib/python3.6/email/utils.py"}, {"start": 11678127, "audio": 0, "end": 11695278, "filename": "/lib/python3.6/email/charset.py"}, {"start": 11695278, "audio": 0, "end": 11741997, "filename": "/lib/python3.6/email/message.py"}, {"start": 11741997, "audio": 0, "end": 11757070, "filename": "/lib/python3.6/email/_policybase.py"}, {"start": 11757070, "audio": 0, "end": 11767443, "filename": "/lib/python3.6/email/policy.py"}, {"start": 11767443, "audio": 0, "end": 11770978, "filename": "/lib/python3.6/email/errors.py"}, {"start": 11770978, "audio": 0, "end": 11780539, "filename": "/lib/python3.6/email/architecture.rst"}, {"start": 11780539, "audio": 0, "end": 11800514, "filename": "/lib/python3.6/email/generator.py"}, {"start": 11800514, "audio": 0, "end": 11804072, "filename": "/lib/python3.6/email/base64mime.py"}, {"start": 11804072, "audio": 0, "end": 11824299, "filename": "/lib/python3.6/email/headerregistry.py"}, {"start": 11824299, "audio": 0, "end": 11834158, "filename": "/lib/python3.6/email/quoprimime.py"}, {"start": 11834158, "audio": 0, "end": 11835779, "filename": "/lib/python3.6/email/mime/multipart.py"}, {"start": 11835779, "audio": 0, "end": 11837608, "filename": "/lib/python3.6/email/mime/image.py"}, {"start": 11837608, "audio": 0, "end": 11838299, "filename": "/lib/python3.6/email/mime/nonmultipart.py"}, {"start": 11838299, "audio": 0, "end": 11838299, "filename": "/lib/python3.6/email/mime/__init__.py"}, {"start": 11838299, "audio": 0, "end": 11839616, "filename": "/lib/python3.6/email/mime/message.py"}, {"start": 11839616, "audio": 0, "end": 11841053, "filename": "/lib/python3.6/email/mime/text.py"}, {"start": 11841053, "audio": 0, "end": 11842374, "filename": "/lib/python3.6/email/mime/application.py"}, {"start": 11842374, "audio": 0, "end": 11843290, "filename": "/lib/python3.6/email/mime/base.py"}, {"start": 11843290, "audio": 0, "end": 11846029, "filename": "/lib/python3.6/email/mime/audio.py"}], "remote_package_size": 11846029, "package_uuid": "5e1db694-af4f-498c-854d-09e8e0c072a3"});
})();
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>pyodide.asm.data.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>pyodide.asm.html</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
</item> </item>
<item> <item>
<key> <string>content_type</string> </key> <key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value> <value> <string>application/wasm</string> </value>
</item> </item>
<item> <item>
<key> <string>precondition</string> </key> <key> <string>precondition</string> </key>
......
/**
* The main bootstrap script for loading pyodide.
*/
var languagePluginLoader = new Promise((resolve, reject) => { var languagePluginLoader = new Promise((resolve, reject) => {
let baseURL = ""; // This is filled in by the Makefile to be either a local file or the
let wasmURL = `${baseURL}pyodide.asm.wasm`; // deployed location. TODO: This should be done in a less hacky
let wasmXHR = new XMLHttpRequest(); // way.
wasmXHR.open('GET', wasmURL, true); const baseURL = '';
wasmXHR.responseType = 'arraybuffer';
wasmXHR.onload = function() { ////////////////////////////////////////////////////////////
let Module = {}; // Package loading
var packages = undefined;
if (wasmXHR.status === 200 || wasmXHR.status === 0) { let loadedPackages = new Set();
Module.wasmBinary = wasmXHR.response;
let loadPackage = (names) => {
// DFS to find all dependencies of the requested packages
let packages = window.pyodide.packages.dependencies;
let queue = new Array(names);
let toLoad = new Set();
while (queue.length) {
const package = queue.pop();
if (!loadedPackages.has(package)) {
toLoad.add(package);
if (packages.hasOwnProperty(package)) {
packages[package].forEach((subpackage) => {
if (!loadedPackages.has(subpackage) && !toLoad.has(subpackage)) {
queue.push(subpackage);
}
});
} else { } else {
console.warn( console.log(`Unknown package '${package}'`);
`Couldn't download the pyodide.asm.wasm binary. Response was ${wasmXHR.status}`);
reject();
} }
}
}
Module.baseURL = baseURL; let promise = new Promise((resolve, reject) => {
Module.postRun = () => { if (toLoad.size === 0) {
resolve(); resolve('No new packages to load');
}
pyodide.monitorRunDependencies = (n) => {
if (n === 0) {
toLoad.forEach((package) => loadedPackages.add(package));
delete pyodide.monitorRunDependencies;
const packageList = Array.from(toLoad.keys()).join(', ');
resolve(`Loaded ${packageList}`);
} }
};
toLoad.forEach((package) => {
let script = document.createElement('script'); let script = document.createElement('script');
script.src = `pyodide.asm.js`; script.src = `${baseURL}${package}.js`;
script.onload = () => { script.onerror = (e) => { reject(e); };
window.pyodide = pyodide(Module);
};
document.body.appendChild(script); document.body.appendChild(script);
});
// We have to invalidate Python's import caches, or it won't
// see the new files. This is done here so it happens in parallel
// with the fetching over the network.
window.pyodide.runPython('import importlib as _importlib\n' +
'_importlib.invalidate_caches()\n');
});
if (window.iodide !== undefined) {
window.iodide.evalQueue.await([ promise ]);
}
return promise;
};
function fixRecursionLimit(pyodide) {
// The Javascript/Wasm call stack may be too small to handle the default
// Python call stack limit of 1000 frames. This is generally the case on
// Chrom(ium), but not on Firefox. Here, we determine the Javascript call
// stack depth available, and then divide by 50 (determined heuristically)
// to set the maximum Python call stack depth.
let depth = 0;
function recurse() {
depth += 1;
recurse();
}
try {
recurse();
} catch (err) {
;
}
let recursionLimit = depth / 50;
if (recursionLimit > 1000) {
recursionLimit = 1000;
}
pyodide.runPython(
`import sys; sys.setrecursionlimit(int(${recursionLimit}))`);
};
////////////////////////////////////////////////////////////
// Loading Pyodide
let wasmURL = `${baseURL}pyodide.asm.wasm`;
let Module = {};
window.Module = Module;
Module.noImageDecoding = true;
Module.noAudioDecoding = true;
let isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
if (isFirefox) {
console.log("Skipping wasm decoding");
Module.noWasmDecoding = true;
}
let wasm_promise = WebAssembly.compileStreaming(fetch(wasmURL));
Module.instantiateWasm = (info, receiveInstance) => {
wasm_promise.then(module => WebAssembly.instantiate(module, info))
.then(instance => receiveInstance(instance));
return {};
};
Module.filePackagePrefixURL = baseURL;
var postRunPromise = new Promise((resolve, reject) => {
Module.postRun = () => {
delete window.Module;
fetch(`${baseURL}packages.json`)
.then((response) => response.json())
.then((json) => {
window.pyodide.packages = json;
fixRecursionLimit(pyodide);
resolve();
});
};
});
var dataLoadPromise = new Promise((resolve, reject) => {
Module.monitorRunDependencies =
(n) => {
if (n === 0) {
delete Module.monitorRunDependencies;
resolve();
}
}
});
Promise.all([ postRunPromise, dataLoadPromise ]).then(() => resolve());
let data_script = document.createElement('script');
data_script.src = `${baseURL}pyodide.asm.data.js`;
data_script.onload = (event) => {
let script = document.createElement('script');
script.src = `${baseURL}pyodide.asm.js`;
script.onload = () => {
window.pyodide = pyodide(Module);
window.pyodide.loadPackage = loadPackage;
}; };
wasmXHR.send(null); document.head.appendChild(script);
};
document.head.appendChild(data_script);
////////////////////////////////////////////////////////////
// Iodide-specific functionality, that doesn't make sense
// if not using with Iodide.
if (window.iodide !== undefined) {
// Load the custom CSS for Pyodide
let link = document.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = `${baseURL}renderedhtml.css`;
document.getElementsByTagName('head')[0].appendChild(link);
// Add a custom output handler for Python objects
window.iodide.addOutputHandler({
shouldHandle : (val) => {
return (typeof val === 'function' && pyodide.PyProxy.isPyProxy(val));
},
render : (val) => {
let div = document.createElement('div');
div.className = 'rendered_html';
var element;
if (val._repr_html_ !== undefined) {
let result = val._repr_html_();
if (typeof result === 'string') {
div.appendChild(new DOMParser()
.parseFromString(result, 'text/html')
.body.firstChild);
element = div;
} else {
element = result;
}
} else {
let pre = document.createElement('pre');
pre.textContent = val.toString();
div.appendChild(pre);
element = div;
}
return element;
}
});
}
}); });
languagePluginLoader languagePluginLoader
\ No newline at end of file
.rendered_html {
overflow: auto;
max-height: 30em;
color: black;
/* any extras will just be numbers: */
}
.rendered_html em {
font-style: italic;
}
.rendered_html strong {
font-weight: bold;
}
.rendered_html u {
text-decoration: underline;
}
.rendered_html :link {
text-decoration: underline;
}
.rendered_html :visited {
text-decoration: underline;
}
.rendered_html h1 {
font-size: 185.7%;
margin: 1.08em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h2 {
font-size: 157.1%;
margin: 1.27em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h3 {
font-size: 128.6%;
margin: 1.55em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h4 {
font-size: 100%;
margin: 2em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h5 {
font-size: 100%;
margin: 2em 0 0 0;
font-weight: bold;
line-height: 1.0;
font-style: italic;
}
.rendered_html h6 {
font-size: 100%;
margin: 2em 0 0 0;
font-weight: bold;
line-height: 1.0;
font-style: italic;
}
.rendered_html h1:first-child {
margin-top: 0.538em;
}
.rendered_html h2:first-child {
margin-top: 0.636em;
}
.rendered_html h3:first-child {
margin-top: 0.777em;
}
.rendered_html h4:first-child {
margin-top: 1em;
}
.rendered_html h5:first-child {
margin-top: 1em;
}
.rendered_html h6:first-child {
margin-top: 1em;
}
.rendered_html ul:not(.list-inline),
.rendered_html ol:not(.list-inline) {
padding-left: 2em;
}
.rendered_html ul {
list-style: disc;
}
.rendered_html ul ul {
list-style: square;
margin-top: 0;
}
.rendered_html ul ul ul {
list-style: circle;
}
.rendered_html ol {
list-style: decimal;
}
.rendered_html ol ol {
list-style: upper-alpha;
margin-top: 0;
}
.rendered_html ol ol ol {
list-style: lower-alpha;
}
.rendered_html ol ol ol ol {
list-style: lower-roman;
}
.rendered_html ol ol ol ol ol {
list-style: decimal;
}
.rendered_html * + ul {
margin-top: 1em;
}
.rendered_html * + ol {
margin-top: 1em;
}
.rendered_html hr {
color: black;
background-color: black;
}
.rendered_html pre {
margin: 1em 2em;
padding: 0px;
background-color: white;
}
.rendered_html code {
background-color: #eff0f1;
}
.rendered_html p code {
padding: 1px 5px;
}
.rendered_html pre code {
background-color: white;
}
.rendered_html pre,
.rendered_html code {
border: 0;
color: black;
font-size: 100%;
}
.rendered_html blockquote {
margin: 1em 2em;
}
.rendered_html table {
margin-left: auto;
margin-right: auto;
border: none;
border-collapse: collapse;
border-spacing: 0;
color: black;
font-size: 12px;
table-layout: fixed;
}
.rendered_html thead {
border-bottom: 1px solid black;
vertical-align: bottom;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
text-align: right;
vertical-align: middle;
padding: 0.5em 0.5em;
line-height: normal;
white-space: normal;
max-width: none;
border: none;
}
.rendered_html th {
font-weight: bold;
}
.rendered_html tbody tr:nth-child(odd) {
background: #f5f5f5;
}
.rendered_html tbody tr:hover {
background: rgba(66, 165, 245, 0.2);
}
.rendered_html * + table {
margin-top: 1em;
}
.rendered_html p {
text-align: left;
}
.rendered_html * + p {
margin-top: 1em;
}
.rendered_html img {
display: block;
margin-left: auto;
margin-right: auto;
}
.rendered_html * + img {
margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
max-width: 100%;
height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
max-width: none;
}
.rendered_html .alert {
margin-bottom: initial;
}
.rendered_html * + .alert {
margin-top: 1em;
}
[dir="rtl"] .rendered_html p {
text-align: right;
}
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>renderedhtml.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -6,6 +6,61 @@ ...@@ -6,6 +6,61 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item> <item>
<key> <string>categories</string> </key> <key> <string>categories</string> </key>
<value> <value>
...@@ -70,9 +125,12 @@ gadget_notebook.html\n ...@@ -70,9 +125,12 @@ gadget_notebook.html\n
iodide_master.js\n iodide_master.js\n
iodide_master.css\n iodide_master.css\n
pyodide.js\n pyodide.js\n
pyodide.asm.data.js\n
pyodide.asm.js\n pyodide.asm.js\n
pyodide.asm.wasm\n pyodide.asm.wasm\n
pyodide.asm.data\n pyodide.asm.data\n
packages.json\n
renderedhtml.css\n
\n \n
font-awesome/font-awesome.css\n font-awesome/font-awesome.css\n
font-awesome/font-awesome-webfont.eot\n font-awesome/font-awesome-webfont.eot\n
...@@ -315,7 +373,7 @@ NETWORK:\n ...@@ -315,7 +373,7 @@ NETWORK:\n
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>969.41850.61151.55500</string> </value> <value> <string>969.50674.1572.7867</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -333,7 +391,7 @@ NETWORK:\n ...@@ -333,7 +391,7 @@ NETWORK:\n
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1534492524.35</float> <float>1535021998.08</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment